Skip to content

Commit b29a4b1

Browse files
committed
feat: update folder card styling (#61)
1 parent 5ff52cd commit b29a4b1

9 files changed

Lines changed: 71 additions & 20 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,23 @@ All notable changes to this project will be documented in this file.
55
The Ideon project follows the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format
66
and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.7.4] - 2026-03-20
9+
10+
### Added
11+
12+
- Improved folder block styling [#61](https://github.com/3xpyth0n/ideon/issues/61).
13+
814
## [0.7.3] - 2026-03-19
915

1016
### Added
1117

12-
- Updated sync indicator to accurately reflect WebSocket connection issues. (#59)
18+
- Updated sync indicator to accurately reflect WebSocket connection issues [#59](https://github.com/3xpyth0n/ideon/issues/59).
1319

1420
## [0.7.2] - 2026-03-18
1521

1622
### Added
1723

18-
- Create blocks and folders by dragging an arrow onto the canvas (#57)
24+
- Create blocks and folders by dragging an arrow onto the canvas [#57](https://github.com/3xpyth0n/ideon/issues/57).
1925

2026
## [0.7.1] - 2026-03-16
2127

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://json.schemastore.org/package.json",
33
"name": "ideon",
44
"private": true,
5-
"version": "0.7.3",
5+
"version": "0.7.4",
66
"description": "The Visual Hub for Everything Your Project Needs",
77
"license": "AGPL-3.0-or-later",
88
"repository": {

src/app/(main)/management/ManagementClient.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -501,7 +501,13 @@ export function ManagementClient() {
501501
<div className="provider-status">
502502
<span
503503
className={`status-dot ${
504-
config.enabled ? "active" : ""
504+
p.key === "vercel"
505+
? config.oauthEnabled
506+
? "active"
507+
: ""
508+
: config.enabled
509+
? "active"
510+
: ""
505511
}`}
506512
/>
507513
{p.key === "vercel"

src/app/api/auth/settings/route.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ export async function GET() {
4242
[key, value]: [string, unknown],
4343
) => {
4444
const provider = value as AuthProvider;
45-
if (provider.enabled) {
45+
const isVercel = key === "vercel";
46+
const isEnabled = isVercel ? !!provider.oauthEnabled : provider.enabled;
47+
48+
if (isEnabled) {
4649
acc[key] = {
4750
enabled: true,
4851
clientId: provider.clientId,

src/app/components/dashboard/ProjectList.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -785,13 +785,9 @@ export function ProjectList({ view, folderId }: ProjectListProps) {
785785
onDrop={(e) => !isTrash && handleDrop(e, folder.id)}
786786
data-folder-id={folder.id}
787787
{...touchHandlers}
788-
className={`project-card group relative flex flex-col justify-between cursor-pointer transition-colors ${
788+
className={`project-card folder-card-style group relative flex flex-col justify-between cursor-pointer transition-colors ${
789789
isTrash ? "cursor-default opacity-75" : ""
790-
} ${
791-
dragOverFolderId === folder.id
792-
? "border-blue-500! bg-blue-800! dark:bg-blue-500/20!"
793-
: "border-blue-500/20! hover:border-blue-500/50! bg-blue-950! hover:bg-blue-900! dark:bg-blue-500/5! dark:hover:bg-blue-500/10!"
794-
}`}
790+
} ${dragOverFolderId === folder.id ? "drag-over" : ""}`}
795791
>
796792
<div>
797793
<div className="flex items-start justify-between mb-2">
@@ -882,8 +878,8 @@ export function ProjectList({ view, folderId }: ProjectListProps) {
882878
<span
883879
className={`text-[8px] font-black uppercase tracking-[0.2em] px-2 py-0.5 border ${
884880
folder.ownerId === currentUser?.id
885-
? "border-white/10 bg-white/5 text-white/60"
886-
: "border-accent/20 bg-accent/5 text-accent/60"
881+
? "badge-owner"
882+
: "badge-collaborator"
887883
}`}
888884
>
889885
{folder.ownerId === currentUser?.id ? "MINE" : "SHARED"}
@@ -1100,8 +1096,8 @@ export function ProjectList({ view, folderId }: ProjectListProps) {
11001096
<span
11011097
className={`text-[8px] font-black uppercase tracking-[0.2em] px-2 py-0.5 border ${
11021098
project.ownerId === currentUser?.id
1103-
? "border-white/10 bg-white/5 text-white/60"
1104-
: "border-accent/20 bg-accent/5 text-accent/60"
1099+
? "badge-owner"
1100+
: "badge-collaborator"
11051101
}`}
11061102
>
11071103
{project.ownerId === currentUser?.id

src/app/lib/utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ export function getSecurityHeaders(nonce: string) {
7979

8080
const cspHeader = [
8181
"default-src 'self';",
82-
`script-src 'self' 'nonce-${nonce}';`,
82+
`script-src 'self' 'nonce-${nonce}' ${
83+
process.env.NODE_ENV === "development" ? "'unsafe-eval'" : ""
84+
};`,
8385
"style-src 'self' 'unsafe-inline' fonts.googleapis.com;",
8486
"img-src 'self' data: blob: https:;",
8587
"font-src 'self' https://fonts.gstatic.com https://fonts.googleapis.com https://esm.sh;",

src/app/styles/components.css

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,44 @@
789789
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.05);
790790
}
791791

792+
.project-card.folder-card-style {
793+
background: #dbeafe;
794+
border: 1px solid #93c5fd;
795+
}
796+
797+
.project-card.folder-card-style:hover {
798+
background: #c3daff;
799+
border-color: #60a5fa;
800+
transform: translateY(-4px);
801+
}
802+
803+
.badge-owner {
804+
border: 1px solid color-mix(in srgb, var(--text-main) 10%, transparent);
805+
background-color: color-mix(in srgb, var(--text-main) 5%, transparent);
806+
color: color-mix(in srgb, var(--text-main) 60%, transparent);
807+
}
808+
809+
.badge-collaborator {
810+
border: 1px solid color-mix(in srgb, var(--accent) 20%, transparent);
811+
background-color: color-mix(in srgb, var(--accent) 5%, transparent);
812+
color: color-mix(in srgb, var(--accent) 60%, transparent);
813+
}
814+
815+
.folder-card-style.drag-over {
816+
background-color: #dbeafe;
817+
border-color: #3b82f6;
818+
}
819+
820+
[data-theme="dark"] .folder-card-style {
821+
background-color: #060d19;
822+
border-color: #12274a;
823+
}
824+
825+
[data-theme="dark"] .folder-card-style:hover {
826+
background-color: #0c1a32;
827+
border-color: #1e3a8a;
828+
}
829+
792830
.project-card-desc {
793831
font-size: 14px;
794832
color: var(--text-muted);

src/app/styles/editor.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,8 @@ body.sketch-modal-open
320320

321321
.preview-action-btn {
322322
padding: 4px;
323-
transition-property:
324-
color, background-color, border-color, text-decoration-color, fill, stroke;
323+
transition-property: color, background-color, border-color,
324+
text-decoration-color, fill, stroke;
325325
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
326326
transition-duration: 150ms;
327327
display: flex;

0 commit comments

Comments
 (0)