@bl33dz/fa814698dcde12f86a37ac31dd3aedf9 1.0.0 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # perisai/ui
2
+
3
+ A modern, scalable, and theme-driven Vue 3 component library built on **Tailwind CSS**, **CSS variables**, and **headless, accessible primitives**.
4
+
5
+ `perisai/ui` provides:
6
+
7
+ - A fully token-based design system
8
+ - Tailwind-powered utilities
9
+ - Light & dark mode support
10
+ - Reusable Vue components
11
+ - Class merging (`cn`)
12
+ - No compiled CSS — everything generated via Tailwind
13
+
14
+ Perfect for enterprise dashboards, design systems, and product UIs.
15
+
16
+ ## Installation
17
+
18
+ ```bash
19
+ npm install perisai-ui
20
+ ```
21
+
22
+ ## Setup
23
+
24
+ ### 1. Import the CSS
25
+
26
+ ```ts
27
+ import "perisai-ui/index.css";
28
+ ```
29
+
30
+ ### 2. Add the Tailwind preset
31
+
32
+ ```js
33
+ import perisaiUI from "perisai-ui/tailwind-preset";
34
+
35
+ export default {
36
+ content: [
37
+ "./src/**/*.{vue,js,ts}",
38
+ "./node_modules/perisai-ui/**/*.{vue,js,ts}",
39
+ ],
40
+ presets: [perisaiUI],
41
+ };
42
+ ```
43
+
44
+ ## Theme Tokens
45
+
46
+ Perisai UI exposes tokens like:
47
+
48
+ - --background
49
+ - --foreground
50
+ - --primary
51
+ - --success
52
+ - --warning
53
+ - --error
54
+ - --text-h1
55
+ - --elevation-1
56
+ - --radius
57
+
58
+ ## Usage
59
+
60
+ ```ts
61
+ import { Button, Card } from "perisai-ui";
62
+ ```
63
+
64
+ ```vue
65
+ <Button variant="primary">Save</Button>
66
+
67
+ <Card>Content here</Card>
68
+ ```
69
+
70
+ ## Dark Mode
71
+
72
+ ```html
73
+ <html class="dark">
74
+ ```
75
+
76
+ ## Helper: cn()
77
+
78
+ ```ts
79
+ import { cn } from "perisai-ui";
80
+
81
+ cn("px-4", isActive && "bg-primary");
82
+ ```
83
+
84
+ ## Development
85
+
86
+ ```bash
87
+ npm run dev
88
+ ```
89
+
90
+ ## Publish
91
+
92
+ ```bash
93
+ npm run build
94
+ npm publish --access public
95
+ ```
@@ -0,0 +1 @@
1
+ @custom-variant dark (&:is(.dark *));:root{--font-size: 16px;--font-family-primary: "Iosevka", "SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Consolas", "Menlo", monospace;--font-family-mono: "IBM Plex Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--text-h1: 2rem;--text-h2: 1.5rem;--text-h3: 1.25rem;--text-h4: 1.125rem;--text-h5: 1rem;--text-body-lg: 1.125rem;--text-body: 1rem;--text-body-sm: .875rem;--text-body-xs: .75rem;--font-weight-medium: 500;--font-weight-normal: 400;--radius: .5rem;--neutral-50: #fafbfc;--neutral-100: #f1f3f5;--neutral-200: #e8eaed;--neutral-300: #d1d5db;--neutral-400: #9ca3af;--neutral-500: #6b7280;--neutral-600: #4b5563;--neutral-700: #2d3748;--neutral-800: #161c27;--neutral-900: #11151e;--primary-100: #e0f7f7;--primary-200: #b3eaea;--primary-300: #80dddd;--primary-400: #4dd0d0;--primary-500: #25a6a6;--primary-600: #1b8d8d;--primary-700: #147676;--primary-800: #0d5c5c;--primary-900: #083f3f;--success-100: #dcfce7;--success-200: #bbf7d0;--success-300: #86efac;--success-400: #4ade80;--success-500: #22c55e;--success-600: #16a34a;--success-700: #15803d;--success-800: #166534;--success-900: #14532d;--error-100: #fef2f2;--error-200: #fecaca;--error-300: #fca5a5;--error-400: #f87171;--error-500: #ef4444;--error-600: #dc2626;--error-700: #b91c1c;--error-800: #991b1b;--error-900: #7f1d1d;--warning-100: #fef3c7;--warning-200: #fde68a;--warning-300: #fcd34d;--warning-400: #fbbf24;--warning-500: #f59e0b;--warning-600: #d97706;--warning-700: #b45309;--warning-800: #92400e;--warning-900: #78350f;--info-100: #dbeafe;--info-200: #bfdbfe;--info-300: #93c5fd;--info-400: #60a5fa;--info-500: #3b82f6;--info-600: #2563eb;--info-700: #1d4ed8;--info-800: #1e40af;--info-900: #1e3a8a;--background: #fafbfc;--foreground: #374151;--card: #ffffff;--card-foreground: #374151;--popover: #ffffff;--popover-foreground: #374151;--primary: #25a6a6;--primary-foreground: #fafbfc;--secondary: #f1f3f5;--secondary-foreground: #374151;--muted: #e8eaed;--muted-foreground: #6b7280;--accent: #f1f3f5;--accent-foreground: #374151;--destructive: #ef4444;--destructive-foreground: #fafbfc;--border: #e8eaed;--input: #ffffff;--input-background: #f1f3f5;--switch-background: #d1d5db;--switch-thumb: #ffffff;--slider-track: #e8eaed;--slider-range: #25a6a6;--slider-thumb: #25a6a6;--ring: #25a6a6;--chart-1: #25a6a6;--chart-2: #22c55e;--chart-3: #3b82f6;--chart-4: #f59e0b;--chart-5: #ef4444;--sidebar: #ffffff;--sidebar-foreground: #374151;--sidebar-primary: #25a6a6;--sidebar-primary-foreground: #fafbfc;--sidebar-accent: #f1f3f5;--sidebar-accent-foreground: #374151;--sidebar-border: #e8eaed;--sidebar-ring: #25a6a6;--elevation-0: none;--elevation-1: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--elevation-2: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--elevation-3: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--elevation-4: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--elevation-5: 0 25px 50px -12px rgba(0, 0, 0, .25)}.dark{--background: #11151e;--foreground: #f1f3f5;--card: #161c27;--card-foreground: #f1f3f5;--popover: #161c27;--popover-foreground: #f1f3f5;--primary: #4dd0d0;--primary-foreground: #11151e;--secondary: #2d3748;--secondary-foreground: #f1f3f5;--muted: #2d3748;--muted-foreground: #9ca3af;--accent: #2d3748;--accent-foreground: #f1f3f5;--destructive: #f87171;--destructive-foreground: #11151e;--border: #2d3748;--input: #161c27;--input-background: #2d3748;--switch-background: #4b5563;--switch-thumb: #f1f3f5;--slider-track: #4b5563;--slider-range: #4dd0d0;--slider-thumb: #4dd0d0;--ring: #4dd0d0;--chart-1: #4dd0d0;--chart-2: #4ade80;--chart-3: #60a5fa;--chart-4: #fbbf24;--chart-5: #f87171;--sidebar: #161c27;--sidebar-foreground: #f1f3f5;--sidebar-primary: #4dd0d0;--sidebar-primary-foreground: #11151e;--sidebar-accent: #161c27;--sidebar-accent-foreground: #f1f3f5;--sidebar-border: #2d3748;--sidebar-ring: #4dd0d0;--elevation-0: none;--elevation-1: 0 1px 3px 0 rgba(0, 0, 0, .4), 0 1px 2px 0 rgba(255, 255, 255, .03);--elevation-2: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -1px rgba(255, 255, 255, .05);--elevation-3: 0 10px 15px -3px rgba(0, 0, 0, .6), 0 4px 6px -2px rgba(255, 255, 255, .08);--elevation-4: 0 20px 25px -5px rgba(0, 0, 0, .7), 0 10px 10px -5px rgba(255, 255, 255, .1);--elevation-5: 0 25px 50px -12px rgba(0, 0, 0, .8), 0 0 0 1px rgba(255, 255, 255, .05)}@theme inline{ --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-popover: var(--popover); --color-popover-foreground: var(--popover-foreground); --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-input-background: var(--input-background); --color-switch-background: var(--switch-background); --color-switch-thumb: var(--switch-thumb); --color-slider-track: var(--slider-track); --color-slider-range: var(--slider-range); --color-slider-thumb: var(--slider-thumb); --color-ring: var(--ring); --color-chart-1: var(--chart-1); --color-chart-2: var(--chart-2); --color-chart-3: var(--chart-3); --color-chart-4: var(--chart-4); --color-chart-5: var(--chart-5); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-primary-foreground: var( --sidebar-primary-foreground ); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var( --sidebar-accent-foreground ); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); --radius-sm: calc(var(--radius) - 2px); --radius-md: calc(var(--radius) - 1px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 2px); --color-neutral-50: var(--neutral-50); --color-neutral-100: var(--neutral-100); --color-neutral-200: var(--neutral-200); --color-neutral-300: var(--neutral-300); --color-neutral-400: var(--neutral-400); --color-neutral-500: var(--neutral-500); --color-neutral-600: var(--neutral-600); --color-neutral-700: var(--neutral-700); --color-neutral-800: var(--neutral-800); --color-neutral-900: var(--neutral-900); --color-primary-100: var(--primary-100); --color-primary-200: var(--primary-200); --color-primary-300: var(--primary-300); --color-primary-400: var(--primary-400); --color-primary-500: var(--primary-500); --color-primary-600: var(--primary-600); --color-primary-700: var(--primary-700); --color-primary-800: var(--primary-800); --color-primary-900: var(--primary-900); --color-success-100: var(--success-100); --color-success-200: var(--success-200); --color-success-300: var(--success-300); --color-success-400: var(--success-400); --color-success-500: var(--success-500); --color-success-600: var(--success-600); --color-success-700: var(--success-700); --color-success-800: var(--success-800); --color-success-900: var(--success-900); --color-error-100: var(--error-100); --color-error-200: var(--error-200); --color-error-300: var(--error-300); --color-error-400: var(--error-400); --color-error-500: var(--error-500); --color-error-600: var(--error-600); --color-error-700: var(--error-700); --color-error-800: var(--error-800); --color-error-900: var(--error-900); --color-warning-100: var(--warning-100); --color-warning-200: var(--warning-200); --color-warning-300: var(--warning-300); --color-warning-400: var(--warning-400); --color-warning-500: var(--warning-500); --color-warning-600: var(--warning-600); --color-warning-700: var(--warning-700); --color-warning-800: var(--warning-800); --color-warning-900: var(--warning-900); --color-info-100: var(--info-100); --color-info-200: var(--info-200); --color-info-300: var(--info-300); --color-info-400: var(--info-400); --color-info-500: var(--info-500); --color-info-600: var(--info-600); --color-info-700: var(--info-700); --color-info-800: var(--info-800); --color-info-900: var(--info-900); --shadow-elevation-0: var(--elevation-0); --shadow-elevation-1: var(--elevation-1); --shadow-elevation-2: var(--elevation-2); --shadow-elevation-3: var(--elevation-3); --shadow-elevation-4: var(--elevation-4); --shadow-elevation-5: var(--elevation-5); }@layer base{*{@apply border-border outline-ring/50;}body{@apply bg-background text-foreground;font-family:var(--font-family-primary)}}@layer base{h1{font-family:var(--font-family-primary);font-size:var(--text-h1);font-weight:var(--font-weight-medium);line-height:1.3;color:var(--foreground);letter-spacing:-.02em}h2{font-family:var(--font-family-primary);font-size:var(--text-h2);font-weight:var(--font-weight-medium);line-height:1.3;color:var(--foreground);letter-spacing:-.015em}h3{font-family:var(--font-family-primary);font-size:var(--text-h3);font-weight:var(--font-weight-medium);line-height:1.4;color:var(--foreground);letter-spacing:-.01em}h4{font-family:var(--font-family-primary);font-size:var(--text-h4);font-weight:var(--font-weight-medium);line-height:1.4;color:var(--foreground);letter-spacing:-.005em}h5{font-family:var(--font-family-primary);font-size:var(--text-h5);font-weight:var(--font-weight-medium);line-height:1.4;color:var(--foreground);letter-spacing:0}p{font-family:var(--font-family-primary);font-size:var(--text-body);font-weight:var(--font-weight-normal);line-height:1.6;color:var(--foreground);letter-spacing:0}label{font-family:var(--font-family-primary);font-size:var(--text-body);font-weight:var(--font-weight-medium);line-height:1.4;color:var(--foreground);letter-spacing:0}button{font-family:var(--font-family-primary);font-size:var(--text-body);font-weight:var(--font-weight-medium);line-height:1.4;letter-spacing:0}input,textarea{font-family:var(--font-family-primary);font-size:var(--text-body);font-weight:var(--font-weight-normal);line-height:1.5;color:var(--foreground);background-color:var(--input-background);letter-spacing:0}}html{font-size:var(--font-size)}@layer utilities{.text-h1{font-size:var(--text-h1)}.text-h2{font-size:var(--text-h2)}.text-h3{font-size:var(--text-h3)}.text-h4{font-size:var(--text-h4)}.text-h5{font-size:var(--text-h5)}.text-body-lg{font-size:var(--text-body-lg)}.text-body{font-size:var(--text-body)}.text-body-sm{font-size:var(--text-body-sm)}.text-body-xs{font-size:var(--text-body-xs)}}@layer utilities{.elevation-0{box-shadow:var(--elevation-0)}.elevation-1{box-shadow:var(--elevation-1)}.elevation-2{box-shadow:var(--elevation-2)}.elevation-3{box-shadow:var(--elevation-3)}.elevation-4{box-shadow:var(--elevation-4)}.elevation-5{box-shadow:var(--elevation-5)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}}.toast-success{background-color:var(--success-100)!important;color:var(--success-800)!important;border-color:var(--success-200)!important}.toast-error{background-color:var(--error-100)!important;color:var(--error-800)!important;border-color:var(--error-200)!important}.toast-warning{background-color:var(--warning-100)!important;color:var(--warning-800)!important;border-color:var(--warning-200)!important}.toast-info{background-color:var(--info-100)!important;color:var(--info-800)!important;border-color:var(--info-200)!important}.dark .toast-success{background-color:var(--success-900)!important;color:var(--success-300)!important;border-color:var(--success-700)!important}.dark .toast-error{background-color:var(--error-900)!important;color:var(--error-300)!important;border-color:var(--error-700)!important}.dark .toast-warning{background-color:var(--warning-900)!important;color:var(--warning-300)!important;border-color:var(--warning-700)!important}.dark .toast-info{background-color:var(--info-900)!important;color:var(--info-300)!important;border-color:var(--info-700)!important}.slider-track{background-color:var(--slider-track)!important}.slider-range{background-color:var(--slider-range)!important}.slider-thumb{background-color:var(--slider-thumb)!important;border-color:var(--slider-thumb)!important}.switch-thumb{background-color:var(--switch-thumb)!important}.scrollbar-hide[data-v-bcb1bf4a]::-webkit-scrollbar{display:none}.scrollbar-hide[data-v-bcb1bf4a]{-ms-overflow-style:none;scrollbar-width:none}.fade-enter-active[data-v-510f8ccc],.fade-leave-active[data-v-510f8ccc]{transition:opacity .2s}.fade-enter-from[data-v-510f8ccc],.fade-leave-to[data-v-510f8ccc]{opacity:0}.slide-enter-active[data-v-510f8ccc],.slide-leave-active[data-v-510f8ccc]{transition:all .3s cubic-bezier(.4,0,.2,1)}.slide-enter-from[data-v-510f8ccc],.slide-leave-to[data-v-510f8ccc]{transform:translate(100%)}.sonner-fade-enter-active[data-v-13be68d6],.sonner-fade-leave-active[data-v-13be68d6]{transition:opacity .3s}.sonner-fade-enter-from[data-v-13be68d6],.sonner-fade-leave-to[data-v-13be68d6]{opacity:0}
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@bl33dz/fa814698dcde12f86a37ac31dd3aedf9",
3
- "version": "1.0.0",
4
- "private": false,
5
3
  "publishConfig": {
6
4
  "access": "public"
7
5
  },
6
+ "version": "1.0.4",
8
7
  "main": "dist/perisai-ui.umd.js",
9
8
  "module": "dist/perisai-ui.es.js",
10
9
  "scripts": {
package/src/global.css ADDED
@@ -0,0 +1,575 @@
1
+ @custom-variant dark (&:is(.dark *));
2
+
3
+ :root {
4
+ --font-size: 16px;
5
+
6
+ /* Font Family - Iosevka with fallbacks */
7
+ --font-family-primary:
8
+ "Iosevka", "SF Mono", "Monaco", "Inconsolata",
9
+ "Roboto Mono", "Consolas", "Menlo", monospace;
10
+ --font-family-mono:
11
+ "IBM Plex Mono", "SF Mono", Monaco, "Cascadia Code",
12
+ "Roboto Mono", Consolas, "Courier New", monospace;
13
+
14
+ /* Typography Scale - Reset to browser defaults */
15
+ --text-h1: 2rem; /* 32px */
16
+ --text-h2: 1.5rem; /* 24px */
17
+ --text-h3: 1.25rem; /* 20px */
18
+ --text-h4: 1.125rem; /* 18px */
19
+ --text-h5: 1rem; /* 16px */
20
+ --text-body-lg: 1.125rem; /* 18px */
21
+ --text-body: 1rem; /* 16px - Default body text */
22
+ --text-body-sm: 0.875rem; /* 14px */
23
+ --text-body-xs: 0.75rem; /* 12px */
24
+
25
+ /* Font Weights */
26
+ --font-weight-medium: 500;
27
+ --font-weight-normal: 400;
28
+ --radius: 0.5rem;
29
+
30
+ /* New Neutral Color Scale - Optimized for #11151E background and #161C27 cards */
31
+ --neutral-50: #fafbfc;
32
+ --neutral-100: #f1f3f5;
33
+ --neutral-200: #e8eaed;
34
+ --neutral-300: #d1d5db;
35
+ --neutral-400: #9ca3af;
36
+ --neutral-500: #6b7280;
37
+ --neutral-600: #4b5563;
38
+ --neutral-700: #2d3748;
39
+ --neutral-800: #161c27;
40
+ --neutral-900: #11151e;
41
+
42
+ /* Primary Color Scale */
43
+ --primary-100: #e0f7f7;
44
+ --primary-200: #b3eaea;
45
+ --primary-300: #80dddd;
46
+ --primary-400: #4dd0d0;
47
+ --primary-500: #25a6a6;
48
+ --primary-600: #1b8d8d;
49
+ --primary-700: #147676;
50
+ --primary-800: #0d5c5c;
51
+ --primary-900: #083f3f;
52
+
53
+ /* Semantic Color Scales */
54
+ --success-100: #dcfce7;
55
+ --success-200: #bbf7d0;
56
+ --success-300: #86efac;
57
+ --success-400: #4ade80;
58
+ --success-500: #22c55e;
59
+ --success-600: #16a34a;
60
+ --success-700: #15803d;
61
+ --success-800: #166534;
62
+ --success-900: #14532d;
63
+
64
+ --error-100: #fef2f2;
65
+ --error-200: #fecaca;
66
+ --error-300: #fca5a5;
67
+ --error-400: #f87171;
68
+ --error-500: #ef4444;
69
+ --error-600: #dc2626;
70
+ --error-700: #b91c1c;
71
+ --error-800: #991b1b;
72
+ --error-900: #7f1d1d;
73
+
74
+ --warning-100: #fef3c7;
75
+ --warning-200: #fde68a;
76
+ --warning-300: #fcd34d;
77
+ --warning-400: #fbbf24;
78
+ --warning-500: #f59e0b;
79
+ --warning-600: #d97706;
80
+ --warning-700: #b45309;
81
+ --warning-800: #92400e;
82
+ --warning-900: #78350f;
83
+
84
+ --info-100: #dbeafe;
85
+ --info-200: #bfdbfe;
86
+ --info-300: #93c5fd;
87
+ --info-400: #60a5fa;
88
+ --info-500: #3b82f6;
89
+ --info-600: #2563eb;
90
+ --info-700: #1d4ed8;
91
+ --info-800: #1e40af;
92
+ --info-900: #1e3a8a;
93
+
94
+ /* Light Mode Colors */
95
+ --background: #fafbfc;
96
+ --foreground: #374151;
97
+ --card: #ffffff;
98
+ --card-foreground: #374151;
99
+ --popover: #ffffff;
100
+ --popover-foreground: #374151;
101
+ --primary: #25a6a6;
102
+ --primary-foreground: #fafbfc;
103
+ --secondary: #f1f3f5;
104
+ --secondary-foreground: #374151;
105
+ --muted: #e8eaed;
106
+ --muted-foreground: #6b7280;
107
+ --accent: #f1f3f5;
108
+ --accent-foreground: #374151;
109
+ --destructive: #ef4444;
110
+ --destructive-foreground: #fafbfc;
111
+ --border: #e8eaed;
112
+ --input: #ffffff;
113
+ --input-background: #f1f3f5;
114
+ --switch-background: #d1d5db;
115
+ --switch-thumb: #ffffff;
116
+ --slider-track: #e8eaed;
117
+ --slider-range: #25a6a6;
118
+ --slider-thumb: #25a6a6;
119
+ --ring: #25a6a6;
120
+
121
+ /* Chart Colors */
122
+ --chart-1: #25a6a6;
123
+ --chart-2: #22c55e;
124
+ --chart-3: #3b82f6;
125
+ --chart-4: #f59e0b;
126
+ --chart-5: #ef4444;
127
+
128
+ /* Sidebar Colors */
129
+ --sidebar: #ffffff;
130
+ --sidebar-foreground: #374151;
131
+ --sidebar-primary: #25a6a6;
132
+ --sidebar-primary-foreground: #fafbfc;
133
+ --sidebar-accent: #f1f3f5;
134
+ --sidebar-accent-foreground: #374151;
135
+ --sidebar-border: #e8eaed;
136
+ --sidebar-ring: #25a6a6;
137
+
138
+ /* Light Mode Elevation Shadows */
139
+ --elevation-0: none;
140
+ --elevation-1:
141
+ 0 1px 3px 0 rgba(0, 0, 0, 0.1),
142
+ 0 1px 2px 0 rgba(0, 0, 0, 0.06);
143
+ --elevation-2:
144
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
145
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
146
+ --elevation-3:
147
+ 0 10px 15px -3px rgba(0, 0, 0, 0.1),
148
+ 0 4px 6px -2px rgba(0, 0, 0, 0.05);
149
+ --elevation-4:
150
+ 0 20px 25px -5px rgba(0, 0, 0, 0.1),
151
+ 0 10px 10px -5px rgba(0, 0, 0, 0.04);
152
+ --elevation-5: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
153
+ }
154
+
155
+ .dark {
156
+ /* Dark Mode Colors - Optimized for #11151E background and #161C27 cards */
157
+ --background: #11151e;
158
+ --foreground: #f1f3f5;
159
+ --card: #161c27;
160
+ --card-foreground: #f1f3f5;
161
+ --popover: #161c27;
162
+ --popover-foreground: #f1f3f5;
163
+ --primary: #4dd0d0;
164
+ --primary-foreground: #11151e;
165
+ --secondary: #2d3748;
166
+ --secondary-foreground: #f1f3f5;
167
+ --muted: #2d3748;
168
+ --muted-foreground: #9ca3af;
169
+ --accent: #2d3748;
170
+ --accent-foreground: #f1f3f5;
171
+ --destructive: #f87171;
172
+ --destructive-foreground: #11151e;
173
+ --border: #2d3748;
174
+ --input: #161c27;
175
+ --input-background: #2d3748;
176
+ --switch-background: #4b5563;
177
+ --switch-thumb: #f1f3f5;
178
+ --slider-track: #4b5563;
179
+ --slider-range: #4dd0d0;
180
+ --slider-thumb: #4dd0d0;
181
+ --ring: #4dd0d0;
182
+
183
+ /* Chart Colors - Dark Mode Optimized */
184
+ --chart-1: #4dd0d0;
185
+ --chart-2: #4ade80;
186
+ --chart-3: #60a5fa;
187
+ --chart-4: #fbbf24;
188
+ --chart-5: #f87171;
189
+
190
+ /* Sidebar Colors - Dark Mode */
191
+ --sidebar: #161c27;
192
+ --sidebar-foreground: #f1f3f5;
193
+ --sidebar-primary: #4dd0d0;
194
+ --sidebar-primary-foreground: #11151e;
195
+ --sidebar-accent: #161c27;
196
+ --sidebar-accent-foreground: #f1f3f5;
197
+ --sidebar-border: #2d3748;
198
+ --sidebar-ring: #4dd0d0;
199
+
200
+ /* Elevation Shadows for Dark Mode - Enhanced for darker cards */
201
+ --elevation-0: none;
202
+ --elevation-1:
203
+ 0 1px 3px 0 rgba(0, 0, 0, 0.4),
204
+ 0 1px 2px 0 rgba(255, 255, 255, 0.03);
205
+ --elevation-2:
206
+ 0 4px 6px -1px rgba(0, 0, 0, 0.5),
207
+ 0 2px 4px -1px rgba(255, 255, 255, 0.05);
208
+ --elevation-3:
209
+ 0 10px 15px -3px rgba(0, 0, 0, 0.6),
210
+ 0 4px 6px -2px rgba(255, 255, 255, 0.08);
211
+ --elevation-4:
212
+ 0 20px 25px -5px rgba(0, 0, 0, 0.7),
213
+ 0 10px 10px -5px rgba(255, 255, 255, 0.1);
214
+ --elevation-5:
215
+ 0 25px 50px -12px rgba(0, 0, 0, 0.8),
216
+ 0 0 0 1px rgba(255, 255, 255, 0.05);
217
+ }
218
+
219
+ @theme inline {
220
+ /* Base Theme Colors */
221
+ --color-background: var(--background);
222
+ --color-foreground: var(--foreground);
223
+ --color-card: var(--card);
224
+ --color-card-foreground: var(--card-foreground);
225
+ --color-popover: var(--popover);
226
+ --color-popover-foreground: var(--popover-foreground);
227
+ --color-primary: var(--primary);
228
+ --color-primary-foreground: var(--primary-foreground);
229
+ --color-secondary: var(--secondary);
230
+ --color-secondary-foreground: var(--secondary-foreground);
231
+ --color-muted: var(--muted);
232
+ --color-muted-foreground: var(--muted-foreground);
233
+ --color-accent: var(--accent);
234
+ --color-accent-foreground: var(--accent-foreground);
235
+ --color-destructive: var(--destructive);
236
+ --color-destructive-foreground: var(--destructive-foreground);
237
+ --color-border: var(--border);
238
+ --color-input: var(--input);
239
+ --color-input-background: var(--input-background);
240
+ --color-switch-background: var(--switch-background);
241
+ --color-switch-thumb: var(--switch-thumb);
242
+ --color-slider-track: var(--slider-track);
243
+ --color-slider-range: var(--slider-range);
244
+ --color-slider-thumb: var(--slider-thumb);
245
+ --color-ring: var(--ring);
246
+
247
+ /* Chart Colors */
248
+ --color-chart-1: var(--chart-1);
249
+ --color-chart-2: var(--chart-2);
250
+ --color-chart-3: var(--chart-3);
251
+ --color-chart-4: var(--chart-4);
252
+ --color-chart-5: var(--chart-5);
253
+
254
+ /* Sidebar Colors */
255
+ --color-sidebar: var(--sidebar);
256
+ --color-sidebar-foreground: var(--sidebar-foreground);
257
+ --color-sidebar-primary: var(--sidebar-primary);
258
+ --color-sidebar-primary-foreground: var(
259
+ --sidebar-primary-foreground
260
+ );
261
+ --color-sidebar-accent: var(--sidebar-accent);
262
+ --color-sidebar-accent-foreground: var(
263
+ --sidebar-accent-foreground
264
+ );
265
+ --color-sidebar-border: var(--sidebar-border);
266
+ --color-sidebar-ring: var(--sidebar-ring);
267
+
268
+ /* Radius */
269
+ --radius-sm: calc(var(--radius) - 2px);
270
+ --radius-md: calc(var(--radius) - 1px);
271
+ --radius-lg: var(--radius);
272
+ --radius-xl: calc(var(--radius) + 2px);
273
+
274
+ /* Neutral Scale */
275
+ --color-neutral-50: var(--neutral-50);
276
+ --color-neutral-100: var(--neutral-100);
277
+ --color-neutral-200: var(--neutral-200);
278
+ --color-neutral-300: var(--neutral-300);
279
+ --color-neutral-400: var(--neutral-400);
280
+ --color-neutral-500: var(--neutral-500);
281
+ --color-neutral-600: var(--neutral-600);
282
+ --color-neutral-700: var(--neutral-700);
283
+ --color-neutral-800: var(--neutral-800);
284
+ --color-neutral-900: var(--neutral-900);
285
+
286
+ /* Primary Scale */
287
+ --color-primary-100: var(--primary-100);
288
+ --color-primary-200: var(--primary-200);
289
+ --color-primary-300: var(--primary-300);
290
+ --color-primary-400: var(--primary-400);
291
+ --color-primary-500: var(--primary-500);
292
+ --color-primary-600: var(--primary-600);
293
+ --color-primary-700: var(--primary-700);
294
+ --color-primary-800: var(--primary-800);
295
+ --color-primary-900: var(--primary-900);
296
+
297
+ /* Semantic Scales */
298
+ --color-success-100: var(--success-100);
299
+ --color-success-200: var(--success-200);
300
+ --color-success-300: var(--success-300);
301
+ --color-success-400: var(--success-400);
302
+ --color-success-500: var(--success-500);
303
+ --color-success-600: var(--success-600);
304
+ --color-success-700: var(--success-700);
305
+ --color-success-800: var(--success-800);
306
+ --color-success-900: var(--success-900);
307
+
308
+ --color-error-100: var(--error-100);
309
+ --color-error-200: var(--error-200);
310
+ --color-error-300: var(--error-300);
311
+ --color-error-400: var(--error-400);
312
+ --color-error-500: var(--error-500);
313
+ --color-error-600: var(--error-600);
314
+ --color-error-700: var(--error-700);
315
+ --color-error-800: var(--error-800);
316
+ --color-error-900: var(--error-900);
317
+
318
+ --color-warning-100: var(--warning-100);
319
+ --color-warning-200: var(--warning-200);
320
+ --color-warning-300: var(--warning-300);
321
+ --color-warning-400: var(--warning-400);
322
+ --color-warning-500: var(--warning-500);
323
+ --color-warning-600: var(--warning-600);
324
+ --color-warning-700: var(--warning-700);
325
+ --color-warning-800: var(--warning-800);
326
+ --color-warning-900: var(--warning-900);
327
+
328
+ --color-info-100: var(--info-100);
329
+ --color-info-200: var(--info-200);
330
+ --color-info-300: var(--info-300);
331
+ --color-info-400: var(--info-400);
332
+ --color-info-500: var(--info-500);
333
+ --color-info-600: var(--info-600);
334
+ --color-info-700: var(--info-700);
335
+ --color-info-800: var(--info-800);
336
+ --color-info-900: var(--info-900);
337
+
338
+ /* Elevation */
339
+ --shadow-elevation-0: var(--elevation-0);
340
+ --shadow-elevation-1: var(--elevation-1);
341
+ --shadow-elevation-2: var(--elevation-2);
342
+ --shadow-elevation-3: var(--elevation-3);
343
+ --shadow-elevation-4: var(--elevation-4);
344
+ --shadow-elevation-5: var(--elevation-5);
345
+ }
346
+
347
+ @layer base {
348
+ * {
349
+ @apply border-border outline-ring/50;
350
+ }
351
+
352
+ body {
353
+ @apply bg-background text-foreground;
354
+ font-family: var(--font-family-primary);
355
+ }
356
+ }
357
+
358
+ @layer base {
359
+ h1 {
360
+ font-family: var(--font-family-primary);
361
+ font-size: var(--text-h1);
362
+ font-weight: var(--font-weight-medium);
363
+ line-height: 1.3;
364
+ color: var(--foreground);
365
+ letter-spacing: -0.02em;
366
+ }
367
+
368
+ h2 {
369
+ font-family: var(--font-family-primary);
370
+ font-size: var(--text-h2);
371
+ font-weight: var(--font-weight-medium);
372
+ line-height: 1.3;
373
+ color: var(--foreground);
374
+ letter-spacing: -0.015em;
375
+ }
376
+
377
+ h3 {
378
+ font-family: var(--font-family-primary);
379
+ font-size: var(--text-h3);
380
+ font-weight: var(--font-weight-medium);
381
+ line-height: 1.4;
382
+ color: var(--foreground);
383
+ letter-spacing: -0.01em;
384
+ }
385
+
386
+ h4 {
387
+ font-family: var(--font-family-primary);
388
+ font-size: var(--text-h4);
389
+ font-weight: var(--font-weight-medium);
390
+ line-height: 1.4;
391
+ color: var(--foreground);
392
+ letter-spacing: -0.005em;
393
+ }
394
+
395
+ h5 {
396
+ font-family: var(--font-family-primary);
397
+ font-size: var(--text-h5);
398
+ font-weight: var(--font-weight-medium);
399
+ line-height: 1.4;
400
+ color: var(--foreground);
401
+ letter-spacing: 0;
402
+ }
403
+
404
+ p {
405
+ font-family: var(--font-family-primary);
406
+ font-size: var(--text-body);
407
+ font-weight: var(--font-weight-normal);
408
+ line-height: 1.6;
409
+ color: var(--foreground);
410
+ letter-spacing: 0;
411
+ }
412
+
413
+ label {
414
+ font-family: var(--font-family-primary);
415
+ font-size: var(--text-body);
416
+ font-weight: var(--font-weight-medium);
417
+ line-height: 1.4;
418
+ color: var(--foreground);
419
+ letter-spacing: 0;
420
+ }
421
+
422
+ button {
423
+ font-family: var(--font-family-primary);
424
+ font-size: var(--text-body);
425
+ font-weight: var(--font-weight-medium);
426
+ line-height: 1.4;
427
+ letter-spacing: 0;
428
+ }
429
+
430
+ input,
431
+ textarea {
432
+ font-family: var(--font-family-primary);
433
+ font-size: var(--text-body);
434
+ font-weight: var(--font-weight-normal);
435
+ line-height: 1.5;
436
+ color: var(--foreground);
437
+ background-color: var(--input-background);
438
+ letter-spacing: 0;
439
+ }
440
+ }
441
+
442
+ html {
443
+ font-size: var(--font-size);
444
+ }
445
+
446
+ @layer utilities {
447
+ /* Typography utilities */
448
+ .text-h1 {
449
+ font-size: var(--text-h1);
450
+ }
451
+ .text-h2 {
452
+ font-size: var(--text-h2);
453
+ }
454
+ .text-h3 {
455
+ font-size: var(--text-h3);
456
+ }
457
+ .text-h4 {
458
+ font-size: var(--text-h4);
459
+ }
460
+ .text-h5 {
461
+ font-size: var(--text-h5);
462
+ }
463
+ .text-body-lg {
464
+ font-size: var(--text-body-lg);
465
+ }
466
+ .text-body {
467
+ font-size: var(--text-body);
468
+ }
469
+ .text-body-sm {
470
+ font-size: var(--text-body-sm);
471
+ }
472
+ .text-body-xs {
473
+ font-size: var(--text-body-xs);
474
+ }
475
+ }
476
+
477
+ @layer utilities {
478
+ /* Elevation utilities */
479
+ .elevation-0 {
480
+ box-shadow: var(--elevation-0);
481
+ }
482
+ .elevation-1 {
483
+ box-shadow: var(--elevation-1);
484
+ }
485
+ .elevation-2 {
486
+ box-shadow: var(--elevation-2);
487
+ }
488
+ .elevation-3 {
489
+ box-shadow: var(--elevation-3);
490
+ }
491
+ .elevation-4 {
492
+ box-shadow: var(--elevation-4);
493
+ }
494
+ .elevation-5 {
495
+ box-shadow: var(--elevation-5);
496
+ }
497
+ /* Scrollbar utilities */
498
+ .scrollbar-hide {
499
+ -ms-overflow-style: none; /* Internet Explorer 10+ */
500
+ scrollbar-width: none; /* Firefox */
501
+ }
502
+ .scrollbar-hide::-webkit-scrollbar {
503
+ display: none; /* Safari and Chrome */
504
+ }
505
+ }
506
+
507
+ /* Toast semantic color classes */
508
+ .toast-success {
509
+ background-color: var(--success-100) !important;
510
+ color: var(--success-800) !important;
511
+ border-color: var(--success-200) !important;
512
+ }
513
+
514
+ .toast-error {
515
+ background-color: var(--error-100) !important;
516
+ color: var(--error-800) !important;
517
+ border-color: var(--error-200) !important;
518
+ }
519
+
520
+ .toast-warning {
521
+ background-color: var(--warning-100) !important;
522
+ color: var(--warning-800) !important;
523
+ border-color: var(--warning-200) !important;
524
+ }
525
+
526
+ .toast-info {
527
+ background-color: var(--info-100) !important;
528
+ color: var(--info-800) !important;
529
+ border-color: var(--info-200) !important;
530
+ }
531
+
532
+ /* Dark mode toast colors */
533
+ .dark .toast-success {
534
+ background-color: var(--success-900) !important;
535
+ color: var(--success-300) !important;
536
+ border-color: var(--success-700) !important;
537
+ }
538
+
539
+ .dark .toast-error {
540
+ background-color: var(--error-900) !important;
541
+ color: var(--error-300) !important;
542
+ border-color: var(--error-700) !important;
543
+ }
544
+
545
+ .dark .toast-warning {
546
+ background-color: var(--warning-900) !important;
547
+ color: var(--warning-300) !important;
548
+ border-color: var(--warning-700) !important;
549
+ }
550
+
551
+ .dark .toast-info {
552
+ background-color: var(--info-900) !important;
553
+ color: var(--info-300) !important;
554
+ border-color: var(--info-700) !important;
555
+ }
556
+
557
+ /* Slider styling utilities */
558
+ .slider-track {
559
+ background-color: var(--slider-track) !important;
560
+ }
561
+
562
+ .slider-range {
563
+ background-color: var(--slider-range) !important;
564
+ }
565
+
566
+ .slider-thumb {
567
+ background-color: var(--slider-thumb) !important;
568
+ border-color: var(--slider-thumb) !important;
569
+ }
570
+
571
+ .switch-thumb {
572
+ background-color: var(--switch-thumb) !important;
573
+ }
574
+
575
+