diff --git a/app/assets/app.css b/app/assets/app.css index 8fef365..042b65d 100644 --- a/app/assets/app.css +++ b/app/assets/app.css @@ -56,6 +56,57 @@ --noise: 0; } +@plugin "daisyui/theme" { + name: "mytheme-dark"; + default: false; + prefersdark: true; + color-scheme: dark; + + /* Surfaces — dark blue-gray */ + --color-base-100: oklch(22% 0.015 260); + --color-base-200: oklch(18% 0.012 260); + --color-base-300: oklch(28% 0.018 260); + --color-base-content: oklch(92% 0.005 260); + + /* Primary — Malio blue, brighter for dark */ + --color-primary: oklch(55% 0.18 262); + --color-primary-content: oklch(98% 0.005 262); + + /* Secondary — refined lavender */ + --color-secondary: oklch(72% 0.06 275); + --color-secondary-content: oklch(22% 0.03 275); + + /* Accent — warm amber-orange */ + --color-accent: oklch(72% 0.17 55); + --color-accent-content: oklch(20% 0.04 55); + + /* Neutral — lighter slate for dark mode */ + --color-neutral: oklch(75% 0.02 260); + --color-neutral-content: oklch(18% 0.01 260); + + /* Semantic */ + --color-info: oklch(62% 0.14 255); + --color-info-content: oklch(98% 0.005 255); + --color-success: oklch(65% 0.19 150); + --color-success-content: oklch(98% 0.005 150); + --color-warning: oklch(78% 0.15 70); + --color-warning-content: oklch(22% 0.05 70); + --color-error: oklch(62% 0.22 25); + --color-error-content: oklch(98% 0.005 25); + + /* Geometry — same as light */ + --radius-selector: 0.75rem; + --radius-field: 0.375rem; + --radius-box: 0.625rem; + + --size-selector: 0.25rem; + --size-field: 0.25rem; + + --border: 1px; + --depth: 1; + --noise: 0; +} + /* ─── Typography ─── */ :root { --font-heading: 'Outfit', system-ui, sans-serif; @@ -139,6 +190,18 @@ h1, h2, h3, h4, h5, h6, transition: box-shadow 0.2s ease, transform 0.2s ease; } +.site-card { + background-color: oklch(100% 0 0); +} + +[data-theme="mytheme-dark"] .site-card { + background-color: oklch(24% 0.015 260); +} + +[data-theme="mytheme-dark"] .card { + border-color: oklch(30% 0.02 260 / 0.6); +} + .card:hover { box-shadow: 0 4px 6px -1px oklch(22% 0.025 260 / 0.06), @@ -153,6 +216,11 @@ h1, h2, h3, h4, h5, h6, border-bottom: 1px solid oklch(91% 0.015 260 / 0.5); } +[data-theme="mytheme-dark"] .navbar-glass { + background: oklch(22% 0.015 260 / 0.85); + border-bottom-color: oklch(30% 0.02 260 / 0.5); +} + /* ─── Buttons ─── */ .btn { font-family: var(--font-heading); diff --git a/app/components/ComponentHierarchy.vue b/app/components/ComponentHierarchy.vue index f5df12c..b3ab1bd 100644 --- a/app/components/ComponentHierarchy.vue +++ b/app/components/ComponentHierarchy.vue @@ -5,11 +5,13 @@ @@ -27,6 +29,10 @@ defineProps({ type: Boolean, default: false }, + showDelete: { + type: Boolean, + default: false + }, collapseAll: { type: Boolean, default: true @@ -37,5 +43,5 @@ defineProps({ } }) -defineEmits(['update', 'edit-piece', 'custom-field-update']) +defineEmits(['update', 'edit-piece', 'custom-field-update', 'delete']) diff --git a/app/components/ComponentItem.vue b/app/components/ComponentItem.vue index 622de16..01da2fe 100644 --- a/app/components/ComponentItem.vue +++ b/app/components/ComponentItem.vue @@ -1,5 +1,5 @@