initial ux ui improvements and revised dashboard

This commit is contained in:
Richard Osborne
2025-12-31 09:34:27 +01:00
parent ae7d3b8a8b
commit 73b5a42122
109 changed files with 13583 additions and 1111 deletions

View File

@@ -1,20 +1,54 @@
/* =============================================================================
NOODL DESIGN SYSTEM - COLORS
Modern refresh: Rose + Violet palette
============================================================================= */
/* =============================================================================
BASE COLORS
These are the raw palette values. DO NOT use directly in components.
Use the THEME COLOR TOKENS below instead.
Minimal palette: Red + Black + White
============================================================================= */
:root {
/* ---------------------------------------------------------------------------
SEMANTIC COLORS
BASE COLORS
A deliberately minimal palette - one accent, pure neutrals
--------------------------------------------------------------------------- */
/* Success - Modern Emerald */
/* Primary - Noodl Red */
--base-color-red-100: #fef2f3;
--base-color-red-200: #fde3e5;
--base-color-red-300: #fbc5c9;
--base-color-red-400: #f7969e;
--base-color-red-500: #ef5662;
--base-color-red-600: #d21f3c;
--base-color-red-700: #b91830;
--base-color-red-800: #9a1729;
--base-color-red-900: #801827;
--base-color-red-950: #460a11;
/* Neutrals - Pure black to white, no color tint */
--base-color-neutral-0: #000000;
--base-color-neutral-50: #0a0a0a;
--base-color-neutral-100: #121212;
--base-color-neutral-200: #1a1a1a;
--base-color-neutral-300: #262626;
--base-color-neutral-400: #333333;
--base-color-neutral-500: #525252;
--base-color-neutral-600: #737373;
--base-color-neutral-700: #a3a3a3;
--base-color-neutral-800: #d4d4d4;
--base-color-neutral-900: #e5e5e5;
--base-color-neutral-950: #f5f5f5;
--base-color-neutral-1000: #ffffff;
/* Transparent variants */
--base-color-black-transparent-90: rgba(0, 0, 0, 0.9);
--base-color-black-transparent-80: rgba(0, 0, 0, 0.8);
--base-color-black-transparent-50: rgba(0, 0, 0, 0.5);
--base-color-white-transparent-10: rgba(255, 255, 255, 0.1);
--base-color-white-transparent-15: rgba(255, 255, 255, 0.15);
--base-color-white-transparent-50: rgba(255, 255, 255, 0.5);
/* ---------------------------------------------------------------------------
SEMANTIC COLORS (Status indicators)
--------------------------------------------------------------------------- */
/* Success - Keeping a green for semantic meaning */
--base-color-success-100: #ecfdf5;
--base-color-success-200: #a7f3d0;
--base-color-success-300: #6ee7b7;
@@ -26,261 +60,190 @@
--base-color-success-900: #064e3b;
--base-color-success-1000: #022c22;
/* Error - Red (distinct from primary rose) */
--base-color-error-100: #fef2f2;
--base-color-error-200: #fecaca;
--base-color-error-300: #fca5a5;
--base-color-error-400: #f87171;
--base-color-error-500: #ef4444;
--base-color-error-600: #dc2626;
--base-color-error-700: #b91c1c;
--base-color-error-800: #991b1b;
--base-color-error-900: #7f1d1d;
--base-color-error-1000: #450a0a;
/* Error - Uses the brand red */
--base-color-error-100: var(--base-color-red-100);
--base-color-error-200: var(--base-color-red-200);
--base-color-error-300: var(--base-color-red-300);
--base-color-error-400: var(--base-color-red-400);
--base-color-error-500: var(--base-color-red-500);
--base-color-error-600: var(--base-color-red-600);
--base-color-error-700: var(--base-color-red-700);
--base-color-error-800: var(--base-color-red-800);
--base-color-error-900: var(--base-color-red-900);
--base-color-error-1000: var(--base-color-red-950);
/* ---------------------------------------------------------------------------
NODE TYPE COLORS
These give visual distinction to different node categories on the canvas
Subtle variations to distinguish node types on canvas
Using desaturated colors so they don't compete with the red accent
--------------------------------------------------------------------------- */
/* Node-Pink - For Custom/User nodes */
--base-color-node-pink-100: #fdf2f8;
--base-color-node-pink-200: #fbcfe8;
--base-color-node-pink-300: #f9a8d4;
--base-color-node-pink-400: #f472b6;
--base-color-node-pink-500: #ec4899;
--base-color-node-pink-600: #db2777;
--base-color-node-pink-700: #be185d;
--base-color-node-pink-800: #9d174d;
--base-color-node-pink-900: #831843;
--base-color-node-pink-1000: #500724;
--base-color-node-pink-200: #f5d0e5;
--base-color-node-pink-300: #e8a8ca;
--base-color-node-pink-400: #d87caa;
--base-color-node-pink-500: #c2578a;
--base-color-node-pink-600: #a63d6f;
--base-color-node-pink-700: #862d56;
--base-color-node-pink-800: #6b2445;
--base-color-node-pink-900: #521c35;
--base-color-node-pink-1000: #2d0e1c;
/* Node-Purple - For Component nodes */
--base-color-node-purple-100: #faf5ff;
--base-color-node-purple-200: #e9d5ff;
--base-color-node-purple-300: #d8b4fe;
--base-color-node-purple-400: #c084fc;
--base-color-node-purple-500: #a855f7;
--base-color-node-purple-600: #9333ea;
--base-color-node-purple-700: #7c3aed;
--base-color-node-purple-800: #6d28d9;
--base-color-node-purple-900: #5b21b6;
--base-color-node-purple-1000: #2e1065;
--base-color-node-purple-100: #f8f5fa;
--base-color-node-purple-200: #e8dff0;
--base-color-node-purple-300: #d4c4e3;
--base-color-node-purple-400: #b8a0cf;
--base-color-node-purple-500: #9a7bb8;
--base-color-node-purple-600: #7d5a9e;
--base-color-node-purple-700: #624382;
--base-color-node-purple-800: #4b3366;
--base-color-node-purple-900: #37264b;
--base-color-node-purple-1000: #1e1429;
/* Node-Green - For Data nodes */
--base-color-node-green-100: #f0fdf4;
--base-color-node-green-200: #bbf7d0;
--base-color-node-green-300: #86efac;
--base-color-node-green-400: #4ade80;
--base-color-node-green-500: #22c55e;
--base-color-node-green-600: #16a34a;
--base-color-node-green-700: #15803d;
--base-color-node-green-800: #166534;
--base-color-node-green-900: #14532d;
--base-color-node-green-1000: #052e16;
--base-color-node-green-100: #f4f7f4;
--base-color-node-green-200: #d8e5d8;
--base-color-node-green-300: #b5cfb5;
--base-color-node-green-400: #8eb58e;
--base-color-node-green-500: #6a996a;
--base-color-node-green-600: #4d7d4d;
--base-color-node-green-700: #3a613a;
--base-color-node-green-800: #2c4a2c;
--base-color-node-green-900: #203520;
--base-color-node-green-1000: #111c11;
/* Node-Gray - For Logic nodes */
--base-color-node-grey-100: #f4f4f5;
--base-color-node-grey-200: #e4e4e7;
--base-color-node-grey-300: #d4d4d8;
--base-color-node-grey-400: #a1a1aa;
--base-color-node-grey-500: #71717a;
--base-color-node-grey-600: #52525b;
--base-color-node-grey-700: #3f3f46;
--base-color-node-grey-800: #27272a;
--base-color-node-grey-900: #18181b;
--base-color-node-grey-1000: #09090b;
--base-color-node-grey-100: #f5f5f5;
--base-color-node-grey-200: #e0e0e0;
--base-color-node-grey-300: #c2c2c2;
--base-color-node-grey-400: #9e9e9e;
--base-color-node-grey-500: #757575;
--base-color-node-grey-600: #5c5c5c;
--base-color-node-grey-700: #454545;
--base-color-node-grey-800: #333333;
--base-color-node-grey-900: #212121;
--base-color-node-grey-1000: #0d0d0d;
/* Node-Blue - For Visual nodes */
--base-color-node-blue-100: #eff6ff;
--base-color-node-blue-200: #dbeafe;
--base-color-node-blue-300: #bfdbfe;
--base-color-node-blue-400: #93c5fd;
--base-color-node-blue-500: #60a5fa;
--base-color-node-blue-600: #3b82f6;
--base-color-node-blue-700: #2563eb;
--base-color-node-blue-800: #1d4ed8;
--base-color-node-blue-900: #1e40af;
--base-color-node-blue-1000: #172554;
--base-color-node-blue-100: #f4f6f8;
--base-color-node-blue-200: #dce3eb;
--base-color-node-blue-300: #bccad9;
--base-color-node-blue-400: #96adc2;
--base-color-node-blue-500: #7090a9;
--base-color-node-blue-600: #53758f;
--base-color-node-blue-700: #3e5a72;
--base-color-node-blue-800: #2f4557;
--base-color-node-blue-900: #22323f;
--base-color-node-blue-1000: #121b22;
/* ---------------------------------------------------------------------------
BRAND COLORS
LEGACY ALIASES - For backwards compatibility
--------------------------------------------------------------------------- */
/* Primary - Rose (Modern pink-red) */
--base-color-rose-100: #fff1f2;
--base-color-rose-200: #fecdd3;
--base-color-rose-300: #fda4af;
--base-color-rose-400: #fb7185;
--base-color-rose-500: #f43f5e;
--base-color-rose-600: #e11d48;
--base-color-rose-700: #be123c;
--base-color-rose-800: #9f1239;
--base-color-rose-900: #881337;
--base-color-rose-1000: #4c0519;
/* Grey -> Neutral */
--base-color-grey-100: var(--base-color-neutral-950);
--base-color-grey-100-transparent: var(--base-color-white-transparent-10);
--base-color-grey-200: var(--base-color-neutral-800);
--base-color-grey-300: var(--base-color-neutral-700);
--base-color-grey-400: var(--base-color-neutral-600);
--base-color-grey-500: var(--base-color-neutral-500);
--base-color-grey-600: var(--base-color-neutral-400);
--base-color-grey-700: var(--base-color-neutral-300);
--base-color-grey-800: var(--base-color-neutral-200);
--base-color-grey-900: var(--base-color-neutral-100);
--base-color-grey-1000: var(--base-color-neutral-50);
--base-color-grey-1000-transparent: var(--base-color-black-transparent-80);
--base-color-grey-1000-transparent-2: var(--base-color-black-transparent-50);
/* Secondary - Violet */
--base-color-violet-100: #f5f3ff;
--base-color-violet-200: #ede9fe;
--base-color-violet-300: #ddd6fe;
--base-color-violet-400: #c4b5fd;
--base-color-violet-500: #a78bfa;
--base-color-violet-600: #8b5cf6;
--base-color-violet-700: #7c3aed;
--base-color-violet-800: #6d28d9;
--base-color-violet-900: #5b21b6;
--base-color-violet-1000: #2e1065;
/* Teal -> Neutral (secondary is now white/gray) */
--base-color-teal-100: var(--base-color-neutral-1000);
--base-color-teal-200: var(--base-color-neutral-900);
--base-color-teal-300: var(--base-color-neutral-800);
--base-color-teal-400: var(--base-color-neutral-700);
--base-color-teal-500: var(--base-color-neutral-600);
--base-color-teal-600: var(--base-color-neutral-500);
--base-color-teal-700: var(--base-color-neutral-400);
--base-color-teal-800: var(--base-color-neutral-300);
--base-color-teal-900: var(--base-color-neutral-200);
--base-color-teal-1000: var(--base-color-neutral-100);
/* Amber - For warnings/notices (keeping this for semantic use) */
--base-color-amber-100: #fffbeb;
--base-color-amber-200: #fef3c7;
--base-color-amber-300: #fcd34d;
--base-color-amber-400: #fbbf24;
--base-color-amber-500: #f59e0b;
--base-color-amber-600: #d97706;
--base-color-amber-700: #b45309;
--base-color-amber-800: #92400e;
--base-color-amber-900: #78350f;
--base-color-amber-1000: #451a03;
/* ---------------------------------------------------------------------------
UI NEUTRALS - Clean Zinc palette (no warm/brown tints)
--------------------------------------------------------------------------- */
--base-color-zinc-50: #fafafa;
--base-color-zinc-100: #f4f4f5;
--base-color-zinc-200: #e4e4e7;
--base-color-zinc-300: #d4d4d8;
--base-color-zinc-400: #a1a1aa;
--base-color-zinc-500: #71717a;
--base-color-zinc-600: #52525b;
--base-color-zinc-700: #3f3f46;
--base-color-zinc-800: #27272a;
--base-color-zinc-900: #18181b;
--base-color-zinc-950: #09090b;
/* Transparent variants for overlays */
--base-color-zinc-950-transparent: rgba(9, 9, 11, 0.85);
--base-color-zinc-950-transparent-light: rgba(9, 9, 11, 0.5);
--base-color-white-transparent: rgba(255, 255, 255, 0.08);
/* ---------------------------------------------------------------------------
LEGACY ALIASES
Keeping for backwards compatibility with existing components
--------------------------------------------------------------------------- */
/* Grey -> Zinc */
--base-color-grey-100: var(--base-color-zinc-100);
--base-color-grey-100-transparent: rgba(244, 244, 245, 0.13);
--base-color-grey-200: var(--base-color-zinc-200);
--base-color-grey-300: var(--base-color-zinc-300);
--base-color-grey-400: var(--base-color-zinc-400);
--base-color-grey-500: var(--base-color-zinc-500);
--base-color-grey-600: var(--base-color-zinc-600);
--base-color-grey-700: var(--base-color-zinc-700);
--base-color-grey-800: var(--base-color-zinc-800);
--base-color-grey-900: var(--base-color-zinc-900);
--base-color-grey-1000: var(--base-color-zinc-950);
--base-color-grey-1000-transparent: var(--base-color-zinc-950-transparent);
--base-color-grey-1000-transparent-2: var(--base-color-zinc-950-transparent-light);
/* Teal -> Violet (secondary) */
--base-color-teal-100: var(--base-color-violet-100);
--base-color-teal-200: var(--base-color-violet-200);
--base-color-teal-300: var(--base-color-violet-300);
--base-color-teal-400: var(--base-color-violet-400);
--base-color-teal-500: var(--base-color-violet-500);
--base-color-teal-600: var(--base-color-violet-600);
--base-color-teal-700: var(--base-color-violet-700);
--base-color-teal-800: var(--base-color-violet-800);
--base-color-teal-900: var(--base-color-violet-900);
--base-color-teal-1000: var(--base-color-violet-1000);
/* Yellow -> Rose (primary) */
--base-color-yellow-100: var(--base-color-rose-100);
--base-color-yellow-200: var(--base-color-rose-200);
--base-color-yellow-300: var(--base-color-rose-300);
--base-color-yellow-400: var(--base-color-rose-400);
--base-color-yellow-500: var(--base-color-rose-500);
--base-color-yellow-600: var(--base-color-rose-600);
--base-color-yellow-700: var(--base-color-rose-700);
--base-color-yellow-800: var(--base-color-rose-800);
--base-color-yellow-900: var(--base-color-rose-900);
--base-color-yellow-1000: var(--base-color-rose-1000);
/* Yellow -> Red (primary is now red) */
--base-color-yellow-100: var(--base-color-red-100);
--base-color-yellow-200: var(--base-color-red-200);
--base-color-yellow-300: var(--base-color-red-400);
--base-color-yellow-400: var(--base-color-red-500);
--base-color-yellow-500: var(--base-color-red-600);
--base-color-yellow-600: var(--base-color-red-700);
--base-color-yellow-700: var(--base-color-red-800);
--base-color-yellow-800: var(--base-color-red-900);
--base-color-yellow-900: var(--base-color-red-950);
--base-color-yellow-1000: var(--base-color-red-950);
}
/* =============================================================================
THEME COLOR TOKENS
Use THESE in components. They provide semantic meaning and enable theming.
THEME COLOR TOKENS - USE THESE IN COMPONENTS
============================================================================= */
:root {
/* ---------------------------------------------------------------------------
BACKGROUNDS
Layered from darkest (bg-0) to lightest (bg-4)
bg-0: Absolute black, used sparingly
bg-1: Main app background
bg-2: Cards, panels, elevated surfaces
bg-3: Interactive elements, inputs
bg-4: Hover states, highlights
Pure blacks with subtle elevation through lightness
--------------------------------------------------------------------------- */
--theme-color-bg-0: #000000;
--theme-color-bg-1: var(--base-color-zinc-950);
--theme-color-bg-1-transparent: var(--base-color-zinc-950-transparent);
--theme-color-bg-1-transparent-2: var(--base-color-zinc-950-transparent-light);
--theme-color-bg-2: var(--base-color-zinc-900);
--theme-color-bg-3: var(--base-color-zinc-800);
--theme-color-bg-4: var(--base-color-zinc-700);
--theme-color-bg-5: var(--base-color-zinc-600);
/* Subtle background for hover/focus states */
--theme-color-bg-hover: var(--base-color-white-transparent);
--theme-color-bg-1: var(--base-color-neutral-50);
--theme-color-bg-1-transparent: var(--base-color-black-transparent-80);
--theme-color-bg-1-transparent-2: var(--base-color-black-transparent-50);
--theme-color-bg-2: var(--base-color-neutral-100);
--theme-color-bg-3: var(--base-color-neutral-200);
--theme-color-bg-4: var(--base-color-neutral-300);
--theme-color-bg-5: var(--base-color-neutral-400);
--theme-color-bg-hover: var(--base-color-white-transparent-10);
/* ---------------------------------------------------------------------------
FOREGROUNDS (Text colors)
Layered from brightest to most muted
FOREGROUNDS
Pure whites with subtle hierarchy
--------------------------------------------------------------------------- */
--theme-color-fg-highlight: #ffffff;
--theme-color-fg-default-contrast: var(--base-color-zinc-100);
--theme-color-fg-default: var(--base-color-zinc-300);
--theme-color-fg-default-shy: var(--base-color-zinc-400);
--theme-color-fg-muted: var(--base-color-zinc-500);
--theme-color-fg-transparent: var(--base-color-grey-100-transparent);
--theme-color-fg-default-contrast: var(--base-color-neutral-900);
--theme-color-fg-default: var(--base-color-neutral-800);
--theme-color-fg-default-shy: var(--base-color-neutral-700);
--theme-color-fg-muted: var(--base-color-neutral-600);
--theme-color-fg-transparent: var(--base-color-white-transparent-15);
/* ---------------------------------------------------------------------------
PRIMARY - Rose
Used for primary actions, CTAs, important highlights
Beautiful modern pink-red that's bold but not aggressive
PRIMARY - Noodl Red
The one accent color - used sparingly for maximum impact
--------------------------------------------------------------------------- */
--theme-color-primary: var(--base-color-rose-500);
--theme-color-primary-highlight: var(--base-color-rose-400);
--theme-color-primary-dim: var(--base-color-rose-700);
--theme-color-primary: #d21f3c;
--theme-color-primary-highlight: var(--base-color-red-500);
--theme-color-primary-dim: var(--base-color-red-800);
--theme-color-on-primary: #ffffff;
/* ---------------------------------------------------------------------------
SECONDARY - Violet
Used for secondary actions, links, informational elements
Complements rose beautifully - creates a modern warm/cool palette
SECONDARY - White/Light
For secondary actions, using white as the complement to red
--------------------------------------------------------------------------- */
--theme-color-secondary: var(--base-color-violet-500);
--theme-color-secondary-dim: var(--base-color-violet-700);
--theme-color-secondary-highlight: var(--base-color-violet-400);
--theme-color-secondary-bright: var(--base-color-violet-300);
--theme-color-secondary-as-fg: var(--base-color-violet-400);
--theme-color-on-secondary: #ffffff;
--theme-color-secondary: #ffffff;
--theme-color-secondary-dim: var(--base-color-neutral-700);
--theme-color-secondary-highlight: #ffffff;
--theme-color-secondary-bright: #ffffff;
--theme-color-secondary-as-fg: var(--base-color-neutral-800);
--theme-color-on-secondary: var(--base-color-neutral-100);
/* ---------------------------------------------------------------------------
NODE COLORS
Used on the node canvas to distinguish node types
Muted, desaturated to not compete with the red accent
--------------------------------------------------------------------------- */
/* Data nodes - Green */
/* Data nodes - Muted Green */
--theme-color-node-data-1: var(--base-color-node-green-700);
--theme-color-node-data-2: var(--base-color-node-green-600);
--theme-color-node-data-3: var(--base-color-node-green-500);
--theme-color-node-data-dim: var(--base-color-node-green-900);
/* Visual nodes - Blue */
/* Visual nodes - Muted Blue */
--theme-color-node-visual-1: var(--base-color-node-blue-700);
--theme-color-node-visual-2: var(--base-color-node-blue-600);
--theme-color-node-visual-2-highlight: var(--base-color-node-blue-500);
@@ -289,7 +252,7 @@
--theme-color-node-visual-shy: var(--base-color-node-blue-400);
--theme-color-node-visual-dim: var(--base-color-node-blue-900);
/* Custom nodes - Pink */
/* Custom nodes - Muted Pink */
--theme-color-node-custom-1: var(--base-color-node-pink-700);
--theme-color-node-custom-2: var(--base-color-node-pink-600);
--theme-color-node-custom-dim: var(--base-color-node-pink-900);
@@ -299,91 +262,80 @@
--theme-color-node-logic-2: var(--base-color-node-grey-600);
--theme-color-node-logic-dim: var(--base-color-node-grey-900);
/* Component nodes - Purple */
/* Component nodes - Muted Purple */
--theme-color-node-component-1: var(--base-color-node-purple-700);
--theme-color-node-component-2: var(--base-color-node-purple-600);
--theme-color-node-component-dim: var(--base-color-node-purple-900);
/* ---------------------------------------------------------------------------
STATUS COLORS
For feedback, alerts, and state indication
Success stays green, everything else maps to the palette
--------------------------------------------------------------------------- */
--theme-color-success: var(--base-color-success-400);
--theme-color-success-dim: var(--base-color-success-600);
--theme-color-success-bg: var(--base-color-success-900);
--theme-color-notice: var(--base-color-amber-400);
--theme-color-notice-dim: var(--base-color-amber-600);
--theme-color-notice-bg: var(--base-color-amber-900);
--theme-color-notice: var(--base-color-red-400);
--theme-color-notice-dim: var(--base-color-red-600);
--theme-color-notice-bg: var(--base-color-red-950);
--theme-color-danger: var(--base-color-error-400);
--theme-color-danger-light: var(--base-color-error-300);
--theme-color-danger-dim: var(--base-color-error-600);
--theme-color-danger-bg: var(--base-color-error-900);
--theme-color-danger: var(--base-color-red-500);
--theme-color-danger-light: var(--base-color-red-400);
--theme-color-danger-dim: var(--base-color-red-700);
--theme-color-danger-bg: var(--base-color-red-950);
/* ---------------------------------------------------------------------------
CONNECTION COLORS
For node connections on the canvas
--------------------------------------------------------------------------- */
--theme-color-signal: var(--base-color-rose-400);
--theme-color-data: var(--base-color-violet-500);
--theme-color-signal: var(--base-color-red-500);
--theme-color-data: var(--base-color-neutral-700);
/* ---------------------------------------------------------------------------
BORDER COLORS
Subtle borders for cards, inputs, dividers
BORDERS
Subtle white borders for dark backgrounds
--------------------------------------------------------------------------- */
--theme-color-border-default: var(--base-color-zinc-700);
--theme-color-border-subtle: var(--base-color-zinc-800);
--theme-color-border-strong: var(--base-color-zinc-600);
--theme-color-border-default: var(--base-color-neutral-300);
--theme-color-border-subtle: var(--base-color-neutral-200);
--theme-color-border-strong: var(--base-color-neutral-400);
/* ---------------------------------------------------------------------------
FOCUS RING
For accessibility - visible focus states
FOCUS
Red focus ring for accessibility
--------------------------------------------------------------------------- */
--theme-color-focus-ring: var(--base-color-rose-500);
--theme-color-focus-ring-offset: var(--base-color-zinc-950);
--theme-color-focus-ring: #d21f3c;
--theme-color-focus-ring-offset: var(--base-color-neutral-50);
}
/* =============================================================================
FUTURE: LIGHT THEME
Uncomment and apply .theme-light class to body for light mode
=============================================================================
.theme-light {
--theme-color-bg-0: #ffffff;
--theme-color-bg-1: var(--base-color-zinc-50);
--theme-color-bg-1-transparent: rgba(250, 250, 250, 0.9);
--theme-color-bg-1-transparent-2: rgba(250, 250, 250, 0.5);
--theme-color-bg-1: var(--base-color-neutral-950);
--theme-color-bg-1-transparent: rgba(255, 255, 255, 0.9);
--theme-color-bg-1-transparent-2: rgba(255, 255, 255, 0.5);
--theme-color-bg-2: #ffffff;
--theme-color-bg-3: var(--base-color-zinc-100);
--theme-color-bg-4: var(--base-color-zinc-200);
--theme-color-bg-5: var(--base-color-zinc-300);
--theme-color-bg-3: var(--base-color-neutral-900);
--theme-color-bg-4: var(--base-color-neutral-800);
--theme-color-bg-5: var(--base-color-neutral-700);
--theme-color-bg-hover: rgba(0, 0, 0, 0.04);
--theme-color-fg-highlight: var(--base-color-zinc-950);
--theme-color-fg-default-contrast: var(--base-color-zinc-800);
--theme-color-fg-default: var(--base-color-zinc-600);
--theme-color-fg-default-shy: var(--base-color-zinc-500);
--theme-color-fg-muted: var(--base-color-zinc-400);
--theme-color-fg-highlight: #000000;
--theme-color-fg-default-contrast: var(--base-color-neutral-100);
--theme-color-fg-default: var(--base-color-neutral-200);
--theme-color-fg-default-shy: var(--base-color-neutral-400);
--theme-color-fg-muted: var(--base-color-neutral-500);
--theme-color-primary: var(--base-color-rose-500);
--theme-color-primary-highlight: var(--base-color-rose-400);
--theme-color-primary-dim: var(--base-color-rose-700);
--theme-color-primary: #d21f3c;
--theme-color-on-primary: #ffffff;
--theme-color-secondary: var(--base-color-violet-600);
--theme-color-secondary-dim: var(--base-color-violet-800);
--theme-color-secondary-highlight: var(--base-color-violet-500);
--theme-color-secondary-as-fg: var(--base-color-violet-600);
--theme-color-secondary: var(--base-color-neutral-100);
--theme-color-on-secondary: #ffffff;
--theme-color-border-default: var(--base-color-zinc-200);
--theme-color-border-subtle: var(--base-color-zinc-100);
--theme-color-border-strong: var(--base-color-zinc-300);
--theme-color-focus-ring: var(--base-color-rose-500);
--theme-color-focus-ring-offset: #ffffff;
--theme-color-border-default: var(--base-color-neutral-800);
--theme-color-border-subtle: var(--base-color-neutral-900);
--theme-color-border-strong: var(--base-color-neutral-700);
}
*/

View File

@@ -1,10 +1,77 @@
:root {
--font-family: 'Inter';
--font-family-code: Menlo, Monaco, 'Courier New', monospace;
--font-weight-light: 200;
--font-weight-regular: 400;
--font-weight-semibold: 600;
--font-weight-bold: 700;
}
/* =============================================================================
NOODL DESIGN SYSTEM - TYPOGRAPHY
============================================================================= */
:root {
/* ---------------------------------------------------------------------------
FONT FAMILIES
--------------------------------------------------------------------------- */
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-family-code: 'JetBrains Mono', 'Fira Code', Menlo, Monaco, 'Courier New', monospace;
/* ---------------------------------------------------------------------------
FONT WEIGHTS
--------------------------------------------------------------------------- */
--font-weight-light: 300;
--font-weight-regular: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
/* ---------------------------------------------------------------------------
FONT SIZES
Fluid scale from 10px to 24px
--------------------------------------------------------------------------- */
--font-size-xs: 10px; /* Small labels, hints */
--font-size-sm: 11px; /* Secondary text, captions */
--font-size-base: 12px; /* Default body text */
--font-size-md: 13px; /* Emphasized body text */
--font-size-lg: 14px; /* Section titles, important */
--font-size-xl: 16px; /* Panel titles */
--font-size-2xl: 18px; /* Dialog titles */
--font-size-3xl: 24px; /* Page titles, hero text */
/* ---------------------------------------------------------------------------
LINE HEIGHTS
--------------------------------------------------------------------------- */
--line-height-none: 1;
--line-height-tight: 1.2;
--line-height-snug: 1.375;
--line-height-normal: 1.5;
--line-height-relaxed: 1.625;
--line-height-loose: 2;
/* ---------------------------------------------------------------------------
LETTER SPACING
--------------------------------------------------------------------------- */
--letter-spacing-tighter: -0.05em;
--letter-spacing-tight: -0.025em;
--letter-spacing-normal: 0;
--letter-spacing-wide: 0.025em;
--letter-spacing-wider: 0.05em;
--letter-spacing-widest: 0.1em;
/* ---------------------------------------------------------------------------
SEMANTIC TEXT STYLES
Pre-composed styles for common use cases
--------------------------------------------------------------------------- */
/* Body text */
--text-body-size: var(--font-size-base);
--text-body-weight: var(--font-weight-regular);
--text-body-line-height: var(--line-height-normal);
/* Small text */
--text-small-size: var(--font-size-sm);
--text-small-weight: var(--font-weight-regular);
--text-small-line-height: var(--line-height-normal);
/* Labels */
--text-label-size: var(--font-size-xs);
--text-label-weight: var(--font-weight-medium);
--text-label-letter-spacing: var(--letter-spacing-wide);
/* Code */
--text-code-size: var(--font-size-sm);
--text-code-family: var(--font-family-code);
}

View File

@@ -0,0 +1,113 @@
/* =============================================================================
NOODL DESIGN SYSTEM - SPACING
============================================================================= */
:root {
/* ---------------------------------------------------------------------------
SPACING SCALE
4px base unit system
--------------------------------------------------------------------------- */
--spacing-0: 0;
--spacing-px: 1px;
--spacing-0-5: 2px;
--spacing-1: 4px;
--spacing-1-5: 6px;
--spacing-2: 8px;
--spacing-2-5: 10px;
--spacing-3: 12px;
--spacing-3-5: 14px;
--spacing-4: 16px;
--spacing-5: 20px;
--spacing-6: 24px;
--spacing-7: 28px;
--spacing-8: 32px;
--spacing-9: 36px;
--spacing-10: 40px;
--spacing-11: 44px;
--spacing-12: 48px;
--spacing-14: 56px;
--spacing-16: 64px;
--spacing-20: 80px;
--spacing-24: 96px;
/* ---------------------------------------------------------------------------
SEMANTIC SPACING
Component-specific spacing aliases
--------------------------------------------------------------------------- */
/* Panel spacing */
--spacing-panel-padding: var(--spacing-4);
--spacing-panel-gap: var(--spacing-3);
/* Card spacing */
--spacing-card-padding: var(--spacing-3);
--spacing-card-gap: var(--spacing-2);
/* Section spacing */
--spacing-section-gap: var(--spacing-6);
--spacing-section-padding: var(--spacing-4);
/* Input spacing */
--spacing-input-padding-x: var(--spacing-2);
--spacing-input-padding-y: var(--spacing-1-5);
--spacing-input-gap: var(--spacing-2);
/* Button spacing */
--spacing-button-padding-x: var(--spacing-3);
--spacing-button-padding-y: var(--spacing-2);
--spacing-button-gap: var(--spacing-2);
/* Icon spacing */
--spacing-icon-gap: var(--spacing-2);
/* ---------------------------------------------------------------------------
BORDER RADIUS
--------------------------------------------------------------------------- */
--radius-none: 0;
--radius-sm: 2px;
--radius-default: 4px;
--radius-md: 6px;
--radius-lg: 8px;
--radius-xl: 12px;
--radius-2xl: 16px;
--radius-3xl: 24px;
--radius-full: 9999px;
/* ---------------------------------------------------------------------------
SHADOWS
--------------------------------------------------------------------------- */
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
--shadow-default: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.05);
/* Dialog/popup shadow */
--shadow-popup: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 10px 15px -3px rgba(0, 0, 0, 0.2),
0 20px 25px -5px rgba(0, 0, 0, 0.15);
/* ---------------------------------------------------------------------------
TRANSITIONS
--------------------------------------------------------------------------- */
--transition-fast: 100ms;
--transition-default: 150ms;
--transition-slow: 300ms;
--transition-ease: cubic-bezier(0.4, 0, 0.2, 1);
--transition-ease-in: cubic-bezier(0.4, 0, 1, 1);
--transition-ease-out: cubic-bezier(0, 0, 0.2, 1);
--transition-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
/* ---------------------------------------------------------------------------
Z-INDEX SCALE
--------------------------------------------------------------------------- */
--z-base: 0;
--z-dropdown: 100;
--z-sticky: 200;
--z-fixed: 300;
--z-modal-backdrop: 400;
--z-modal: 500;
--z-popover: 600;
--z-tooltip: 700;
}