@yuva-devlab/tokens 1.1.1 → 1.3.0
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/dist/index.cjs +22 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/preset.css +11 -0
- package/dist/styles.css +3 -0
- package/dist/themes/logs.css +137 -0
- package/dist/themes/portal.css +192 -0
- package/dist/themes/vitalai.css +178 -0
- package/package.json +9 -3
- package/styles/preset.css +11 -0
- package/styles/styles.css +3 -0
- package/styles/themes/logs.css +137 -0
- package/styles/themes/portal.css +192 -0
- package/styles/themes/vitalai.css +178 -0
package/dist/index.cjs
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// src/index.ts
|
|
4
|
-
var THEMES = [
|
|
4
|
+
var THEMES = [
|
|
5
|
+
"orchestrai",
|
|
6
|
+
"finai",
|
|
7
|
+
"portal",
|
|
8
|
+
"logs",
|
|
9
|
+
"vitalai"
|
|
10
|
+
];
|
|
5
11
|
var BRAND_MODES = ["light", "dark"];
|
|
6
12
|
var THEME_CONFIGS = {
|
|
7
13
|
orchestrai: {
|
|
@@ -13,6 +19,21 @@ var THEME_CONFIGS = {
|
|
|
13
19
|
name: "finai",
|
|
14
20
|
defaultMode: "dark",
|
|
15
21
|
label: "FinAI"
|
|
22
|
+
},
|
|
23
|
+
portal: {
|
|
24
|
+
name: "portal",
|
|
25
|
+
defaultMode: "dark",
|
|
26
|
+
label: "DevLab Portal"
|
|
27
|
+
},
|
|
28
|
+
logs: {
|
|
29
|
+
name: "logs",
|
|
30
|
+
defaultMode: "dark",
|
|
31
|
+
label: "DevLab Logs"
|
|
32
|
+
},
|
|
33
|
+
vitalai: {
|
|
34
|
+
name: "vitalai",
|
|
35
|
+
defaultMode: "dark",
|
|
36
|
+
label: "VitalAI"
|
|
16
37
|
}
|
|
17
38
|
};
|
|
18
39
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,MAAA,GAAS,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,MAAA,GAAS;AAAA,EACpB,YAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAGO,IAAM,WAAA,GAAc,CAAC,OAAA,EAAS,MAAM;AASpC,IAAM,aAAA,GAAgD;AAAA,EAC3D,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA;AAEX","file":"index.cjs","sourcesContent":["/**\n * @file src/index.ts\n * @description Yuva DevLab Design System — Design Tokens & Theme Definitions.\n */\n\nexport const THEMES = [\n \"orchestrai\",\n \"finai\",\n \"portal\",\n \"logs\",\n \"vitalai\",\n] as const;\nexport type ThemeName = (typeof THEMES)[number];\n\nexport const BRAND_MODES = [\"light\", \"dark\"] as const;\nexport type BrandMode = (typeof BRAND_MODES)[number];\n\nexport interface ThemeConfig {\n readonly name: ThemeName;\n readonly defaultMode: BrandMode;\n readonly label: string;\n}\n\nexport const THEME_CONFIGS: Record<ThemeName, ThemeConfig> = {\n orchestrai: {\n name: \"orchestrai\",\n defaultMode: \"dark\",\n label: \"OrchestrAI\",\n },\n finai: {\n name: \"finai\",\n defaultMode: \"dark\",\n label: \"FinAI\",\n },\n portal: {\n name: \"portal\",\n defaultMode: \"dark\",\n label: \"DevLab Portal\",\n },\n logs: {\n name: \"logs\",\n defaultMode: \"dark\",\n label: \"DevLab Logs\",\n },\n vitalai: {\n name: \"vitalai\",\n defaultMode: \"dark\",\n label: \"VitalAI\",\n },\n} as const;\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @file src/index.ts
|
|
3
3
|
* @description Yuva DevLab Design System — Design Tokens & Theme Definitions.
|
|
4
4
|
*/
|
|
5
|
-
declare const THEMES: readonly ["orchestrai", "finai"];
|
|
5
|
+
declare const THEMES: readonly ["orchestrai", "finai", "portal", "logs", "vitalai"];
|
|
6
6
|
type ThemeName = (typeof THEMES)[number];
|
|
7
7
|
declare const BRAND_MODES: readonly ["light", "dark"];
|
|
8
8
|
type BrandMode = (typeof BRAND_MODES)[number];
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @file src/index.ts
|
|
3
3
|
* @description Yuva DevLab Design System — Design Tokens & Theme Definitions.
|
|
4
4
|
*/
|
|
5
|
-
declare const THEMES: readonly ["orchestrai", "finai"];
|
|
5
|
+
declare const THEMES: readonly ["orchestrai", "finai", "portal", "logs", "vitalai"];
|
|
6
6
|
type ThemeName = (typeof THEMES)[number];
|
|
7
7
|
declare const BRAND_MODES: readonly ["light", "dark"];
|
|
8
8
|
type BrandMode = (typeof BRAND_MODES)[number];
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
var THEMES = [
|
|
2
|
+
var THEMES = [
|
|
3
|
+
"orchestrai",
|
|
4
|
+
"finai",
|
|
5
|
+
"portal",
|
|
6
|
+
"logs",
|
|
7
|
+
"vitalai"
|
|
8
|
+
];
|
|
3
9
|
var BRAND_MODES = ["light", "dark"];
|
|
4
10
|
var THEME_CONFIGS = {
|
|
5
11
|
orchestrai: {
|
|
@@ -11,6 +17,21 @@ var THEME_CONFIGS = {
|
|
|
11
17
|
name: "finai",
|
|
12
18
|
defaultMode: "dark",
|
|
13
19
|
label: "FinAI"
|
|
20
|
+
},
|
|
21
|
+
portal: {
|
|
22
|
+
name: "portal",
|
|
23
|
+
defaultMode: "dark",
|
|
24
|
+
label: "DevLab Portal"
|
|
25
|
+
},
|
|
26
|
+
logs: {
|
|
27
|
+
name: "logs",
|
|
28
|
+
defaultMode: "dark",
|
|
29
|
+
label: "DevLab Logs"
|
|
30
|
+
},
|
|
31
|
+
vitalai: {
|
|
32
|
+
name: "vitalai",
|
|
33
|
+
defaultMode: "dark",
|
|
34
|
+
label: "VitalAI"
|
|
14
35
|
}
|
|
15
36
|
};
|
|
16
37
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAKO,IAAM,MAAA,GAAS,
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAKO,IAAM,MAAA,GAAS;AAAA,EACpB,YAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAGO,IAAM,WAAA,GAAc,CAAC,OAAA,EAAS,MAAM;AASpC,IAAM,aAAA,GAAgD;AAAA,EAC3D,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA,GACT;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO;AAAA;AAEX","file":"index.js","sourcesContent":["/**\n * @file src/index.ts\n * @description Yuva DevLab Design System — Design Tokens & Theme Definitions.\n */\n\nexport const THEMES = [\n \"orchestrai\",\n \"finai\",\n \"portal\",\n \"logs\",\n \"vitalai\",\n] as const;\nexport type ThemeName = (typeof THEMES)[number];\n\nexport const BRAND_MODES = [\"light\", \"dark\"] as const;\nexport type BrandMode = (typeof BRAND_MODES)[number];\n\nexport interface ThemeConfig {\n readonly name: ThemeName;\n readonly defaultMode: BrandMode;\n readonly label: string;\n}\n\nexport const THEME_CONFIGS: Record<ThemeName, ThemeConfig> = {\n orchestrai: {\n name: \"orchestrai\",\n defaultMode: \"dark\",\n label: \"OrchestrAI\",\n },\n finai: {\n name: \"finai\",\n defaultMode: \"dark\",\n label: \"FinAI\",\n },\n portal: {\n name: \"portal\",\n defaultMode: \"dark\",\n label: \"DevLab Portal\",\n },\n logs: {\n name: \"logs\",\n defaultMode: \"dark\",\n label: \"DevLab Logs\",\n },\n vitalai: {\n name: \"vitalai\",\n defaultMode: \"dark\",\n label: \"VitalAI\",\n },\n} as const;\n"]}
|
package/dist/preset.css
CHANGED
|
@@ -221,6 +221,17 @@
|
|
|
221
221
|
--color-chart-4: var(--chart-4);
|
|
222
222
|
--color-chart-5: var(--chart-5);
|
|
223
223
|
|
|
224
|
+
/* ── VitalAI Clinical & Performance Telemetry Tokens ───────────── */
|
|
225
|
+
--color-vital: var(--vital);
|
|
226
|
+
--color-vital-foreground: var(--vital-foreground);
|
|
227
|
+
--color-calories: var(--calories);
|
|
228
|
+
--color-protein: var(--protein);
|
|
229
|
+
--color-carbs: var(--carbs);
|
|
230
|
+
--color-fats: var(--fats);
|
|
231
|
+
--color-water: var(--water);
|
|
232
|
+
--color-glass: var(--glass);
|
|
233
|
+
--color-glass-border: var(--glass-border);
|
|
234
|
+
|
|
224
235
|
/* ── Component Control Dimensions ─────────────────────────────────── */
|
|
225
236
|
--height-control-xs: var(--control-height-xs, 1.75rem);
|
|
226
237
|
--height-control-sm: var(--control-height-sm, 2rem);
|
package/dist/styles.css
CHANGED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevLab Logs Theme — High-Density Observability & Telemetry Console Palette
|
|
3
|
+
* Modern OKLCH color spaces optimized for real-time distributed log streaming,
|
|
4
|
+
* trace inspection, DuckDB SQL analytics, and Log-RAG root-cause analysis.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── DevLab Logs Theme — Light Mode ────────────────────────────────────────── */
|
|
8
|
+
[data-brand="logs"],
|
|
9
|
+
[data-theme="logs"],
|
|
10
|
+
[data-theme="logs-light"],
|
|
11
|
+
:root[data-brand="logs"],
|
|
12
|
+
:root[data-theme="logs"],
|
|
13
|
+
:root[data-theme="logs-light"] {
|
|
14
|
+
--radius: 0.5rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(0.975 0.005 240);
|
|
18
|
+
--foreground: oklch(0.2 0.02 250);
|
|
19
|
+
--surface: oklch(0.95 0.008 240);
|
|
20
|
+
--surface-2: oklch(0.92 0.01 240);
|
|
21
|
+
--card: oklch(0.98 0.004 240);
|
|
22
|
+
--card-foreground: oklch(0.2 0.02 250);
|
|
23
|
+
--popover: oklch(0.97 0.006 240);
|
|
24
|
+
--popover-foreground: oklch(0.2 0.02 250);
|
|
25
|
+
|
|
26
|
+
/* Brand / Neon Green Accent */
|
|
27
|
+
--primary: oklch(0.62 0.18 150);
|
|
28
|
+
--primary-foreground: oklch(0.99 0.005 150);
|
|
29
|
+
--secondary: oklch(0.92 0.012 245);
|
|
30
|
+
--secondary-foreground: oklch(0.25 0.02 250);
|
|
31
|
+
|
|
32
|
+
/* Muted / Accent */
|
|
33
|
+
--muted: oklch(0.92 0.01 240);
|
|
34
|
+
--muted-foreground: oklch(0.5 0.02 245);
|
|
35
|
+
--accent: oklch(0.9 0.015 240);
|
|
36
|
+
--accent-foreground: oklch(0.2 0.02 250);
|
|
37
|
+
|
|
38
|
+
/* Severity & Status */
|
|
39
|
+
--destructive: oklch(0.6 0.22 25);
|
|
40
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
41
|
+
--fatal: oklch(0.58 0.24 350);
|
|
42
|
+
--error: oklch(0.6 0.22 25);
|
|
43
|
+
--warn: oklch(0.7 0.16 80);
|
|
44
|
+
--info: oklch(0.62 0.14 230);
|
|
45
|
+
--debug: oklch(0.52 0.04 250);
|
|
46
|
+
--ai: oklch(0.65 0.15 195);
|
|
47
|
+
|
|
48
|
+
/* Syntax Highlighting */
|
|
49
|
+
--syn-key: oklch(0.55 0.14 235);
|
|
50
|
+
--syn-str: oklch(0.55 0.16 145);
|
|
51
|
+
--syn-num: oklch(0.62 0.16 75);
|
|
52
|
+
|
|
53
|
+
/* Form & Interactive */
|
|
54
|
+
--border: oklch(0.85 0.01 240);
|
|
55
|
+
--input: oklch(0.85 0.01 240);
|
|
56
|
+
--ring: oklch(0.62 0.18 150 / 60%);
|
|
57
|
+
|
|
58
|
+
/* Visual Glow & Matrix Background */
|
|
59
|
+
--glow-primary:
|
|
60
|
+
0 0 0 1px color-mix(in oklab, var(--primary) 30%, transparent),
|
|
61
|
+
0 0 18px -4px color-mix(in oklab, var(--primary) 40%, transparent);
|
|
62
|
+
--grid-bg: radial-gradient(
|
|
63
|
+
circle at 1px 1px,
|
|
64
|
+
oklch(0 0 0 / 5%) 1px,
|
|
65
|
+
transparent 0
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* ── DevLab Logs Theme — Dark Mode ─────────────────────────────────────────── */
|
|
70
|
+
[data-theme="logs-dark"],
|
|
71
|
+
[data-brand="logs"][data-theme="dark"],
|
|
72
|
+
[data-brand="logs"][data-theme="logs-dark"],
|
|
73
|
+
[data-brand="logs"].dark,
|
|
74
|
+
[data-brand="logs"] .dark,
|
|
75
|
+
[data-theme="logs"] .dark,
|
|
76
|
+
.dark [data-brand="logs"],
|
|
77
|
+
.dark [data-theme="logs"],
|
|
78
|
+
:root[data-theme="logs-dark"],
|
|
79
|
+
:root[data-brand="logs"].dark,
|
|
80
|
+
:root[data-brand="logs"][data-theme="dark"],
|
|
81
|
+
:root[data-brand="logs"][data-theme="logs-dark"],
|
|
82
|
+
:root.dark[data-brand="logs"],
|
|
83
|
+
:root.dark[data-theme="logs"] {
|
|
84
|
+
--radius: 0.5rem;
|
|
85
|
+
|
|
86
|
+
/* Surfaces */
|
|
87
|
+
--background: oklch(0.155 0.012 250);
|
|
88
|
+
--foreground: oklch(0.93 0.01 240);
|
|
89
|
+
--surface: oklch(0.19 0.014 250);
|
|
90
|
+
--surface-2: oklch(0.225 0.016 250);
|
|
91
|
+
--card: oklch(0.19 0.014 250);
|
|
92
|
+
--card-foreground: oklch(0.93 0.01 240);
|
|
93
|
+
--popover: oklch(0.21 0.016 250);
|
|
94
|
+
--popover-foreground: oklch(0.93 0.01 240);
|
|
95
|
+
|
|
96
|
+
/* Brand / Neon Green Accent */
|
|
97
|
+
--primary: oklch(0.86 0.17 150);
|
|
98
|
+
--primary-foreground: oklch(0.17 0.03 150);
|
|
99
|
+
--secondary: oklch(0.25 0.016 250);
|
|
100
|
+
--secondary-foreground: oklch(0.93 0.01 240);
|
|
101
|
+
|
|
102
|
+
/* Muted / Accent */
|
|
103
|
+
--muted: oklch(0.24 0.014 250);
|
|
104
|
+
--muted-foreground: oklch(0.64 0.02 245);
|
|
105
|
+
--accent: oklch(0.27 0.02 250);
|
|
106
|
+
--accent-foreground: oklch(0.96 0.01 240);
|
|
107
|
+
|
|
108
|
+
/* Severity & Status */
|
|
109
|
+
--destructive: oklch(0.66 0.21 25);
|
|
110
|
+
--destructive-foreground: oklch(0.98 0 0);
|
|
111
|
+
--fatal: oklch(0.68 0.24 350);
|
|
112
|
+
--error: oklch(0.68 0.21 25);
|
|
113
|
+
--warn: oklch(0.82 0.16 80);
|
|
114
|
+
--info: oklch(0.76 0.12 230);
|
|
115
|
+
--debug: oklch(0.6 0.03 250);
|
|
116
|
+
--ai: oklch(0.78 0.14 195);
|
|
117
|
+
|
|
118
|
+
/* Syntax Highlighting */
|
|
119
|
+
--syn-key: oklch(0.78 0.12 230);
|
|
120
|
+
--syn-str: oklch(0.84 0.14 140);
|
|
121
|
+
--syn-num: oklch(0.82 0.15 70);
|
|
122
|
+
|
|
123
|
+
/* Form & Interactive */
|
|
124
|
+
--border: oklch(0.28 0.016 250);
|
|
125
|
+
--input: oklch(0.3 0.016 250);
|
|
126
|
+
--ring: oklch(0.86 0.17 150 / 60%);
|
|
127
|
+
|
|
128
|
+
/* Visual Glow & Matrix Background */
|
|
129
|
+
--glow-primary:
|
|
130
|
+
0 0 0 1px color-mix(in oklab, var(--primary) 40%, transparent),
|
|
131
|
+
0 0 24px -4px color-mix(in oklab, var(--primary) 50%, transparent);
|
|
132
|
+
--grid-bg: radial-gradient(
|
|
133
|
+
circle at 1px 1px,
|
|
134
|
+
oklch(1 0 0 / 4%) 1px,
|
|
135
|
+
transparent 0
|
|
136
|
+
);
|
|
137
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevLab Portal Theme — Mint / Obsidian Palette
|
|
3
|
+
* Scoped OKLCH color tokens optimized for identity, IAM, security audit ledger, and control plane workflows.
|
|
4
|
+
* High-specificity scoped tokens for DevLab Portal applications.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── DevLab Portal Theme — Light Mode ──────────────────────────────────── */
|
|
8
|
+
[data-brand="portal"],
|
|
9
|
+
[data-theme="portal"],
|
|
10
|
+
[data-theme="portal-light"],
|
|
11
|
+
:root[data-brand="portal"],
|
|
12
|
+
:root[data-theme="portal"],
|
|
13
|
+
:root[data-theme="portal-light"] {
|
|
14
|
+
--radius: 0.5rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(97.5% 0.003 170);
|
|
18
|
+
--foreground: oklch(22% 0.01 170);
|
|
19
|
+
--card: oklch(100% 0 0);
|
|
20
|
+
--card-foreground: oklch(22% 0.01 170);
|
|
21
|
+
--popover: oklch(100% 0 0);
|
|
22
|
+
--popover-foreground: oklch(22% 0.01 170);
|
|
23
|
+
|
|
24
|
+
/* Brand */
|
|
25
|
+
--primary: oklch(46% 0.115 170);
|
|
26
|
+
--primary-foreground: oklch(99% 0.005 170);
|
|
27
|
+
--secondary: oklch(94.5% 0.006 170);
|
|
28
|
+
--secondary-foreground: oklch(24% 0.01 170);
|
|
29
|
+
|
|
30
|
+
/* Muted / Accent */
|
|
31
|
+
--muted: oklch(94.5% 0.006 170);
|
|
32
|
+
--muted-foreground: oklch(51% 0.01 170);
|
|
33
|
+
--accent: oklch(92% 0.012 170);
|
|
34
|
+
--accent-foreground: oklch(22% 0.01 170);
|
|
35
|
+
|
|
36
|
+
/* Status */
|
|
37
|
+
--destructive: oklch(58% 0.19 25);
|
|
38
|
+
--destructive-foreground: oklch(99% 0 0);
|
|
39
|
+
--success: oklch(47% 0.13 166);
|
|
40
|
+
--success-foreground: oklch(99% 0 0);
|
|
41
|
+
--warning: oklch(63% 0.13 75);
|
|
42
|
+
--warning-foreground: oklch(20% 0.03 75);
|
|
43
|
+
--info: oklch(72% 0.13 260);
|
|
44
|
+
--info-foreground: oklch(99% 0 0);
|
|
45
|
+
|
|
46
|
+
/* Form / Ring */
|
|
47
|
+
--border: oklch(88% 0.007 170);
|
|
48
|
+
--input: oklch(88% 0.007 170);
|
|
49
|
+
--ring: oklch(46% 0.115 170);
|
|
50
|
+
|
|
51
|
+
/* Palette Accents */
|
|
52
|
+
--mint: oklch(72% 0.15 163);
|
|
53
|
+
--blue: oklch(72% 0.13 260);
|
|
54
|
+
--amber: oklch(78% 0.14 75);
|
|
55
|
+
--rose: oklch(73% 0.15 15);
|
|
56
|
+
--teal: oklch(74% 0.11 190);
|
|
57
|
+
|
|
58
|
+
/* Glass / Surface Tokens */
|
|
59
|
+
--surface: oklch(100% 0 0 / 80%);
|
|
60
|
+
--surface-2: oklch(96% 0.004 170);
|
|
61
|
+
--overlay: oklch(10% 0 0 / 75%);
|
|
62
|
+
--shadow-panel: 0 8px 28px oklch(10% 0 0 / 0.12);
|
|
63
|
+
|
|
64
|
+
/* Navigation & Sidebar */
|
|
65
|
+
--sidebar: oklch(98% 0.003 170);
|
|
66
|
+
--sidebar-foreground: oklch(22% 0.01 170);
|
|
67
|
+
--sidebar-primary: oklch(46% 0.115 170);
|
|
68
|
+
--sidebar-primary-foreground: oklch(99% 0.005 170);
|
|
69
|
+
--sidebar-accent: oklch(94% 0.006 170);
|
|
70
|
+
--sidebar-accent-foreground: oklch(22% 0.01 170);
|
|
71
|
+
--sidebar-border: oklch(88% 0.007 170);
|
|
72
|
+
--sidebar-ring: oklch(46% 0.115 170);
|
|
73
|
+
|
|
74
|
+
/* Visual Data Telemetry (Charts) */
|
|
75
|
+
--chart-1: oklch(46% 0.115 170);
|
|
76
|
+
--chart-2: oklch(72% 0.13 260);
|
|
77
|
+
--chart-3: oklch(78% 0.14 75);
|
|
78
|
+
--chart-4: oklch(73% 0.15 15);
|
|
79
|
+
--chart-5: oklch(74% 0.11 190);
|
|
80
|
+
|
|
81
|
+
/* Sizing, Spacing & Layout Tokens */
|
|
82
|
+
--control-height-xs: 1.75rem;
|
|
83
|
+
--control-height-sm: 2rem;
|
|
84
|
+
--control-height-md: 2.25rem;
|
|
85
|
+
--control-height-lg: 2.5rem;
|
|
86
|
+
--control-height-xl: 3rem;
|
|
87
|
+
|
|
88
|
+
--icon-xs: 0.875rem;
|
|
89
|
+
--icon-sm: 1rem;
|
|
90
|
+
--icon-md: 1.25rem;
|
|
91
|
+
--icon-lg: 1.5rem;
|
|
92
|
+
--icon-xl: 2rem;
|
|
93
|
+
|
|
94
|
+
--space-1: 0.25rem;
|
|
95
|
+
--space-2: 0.5rem;
|
|
96
|
+
--space-3: 0.75rem;
|
|
97
|
+
--space-4: 1rem;
|
|
98
|
+
--space-5: 1.25rem;
|
|
99
|
+
--space-6: 1.5rem;
|
|
100
|
+
--space-8: 2rem;
|
|
101
|
+
--space-10: 2.5rem;
|
|
102
|
+
|
|
103
|
+
--card-padding: var(--space-4);
|
|
104
|
+
--dialog-padding: var(--space-5);
|
|
105
|
+
--form-field-gap: var(--space-3);
|
|
106
|
+
--section-gap: var(--space-5);
|
|
107
|
+
--table-row-padding-x: var(--space-4);
|
|
108
|
+
--table-row-padding-y: var(--space-3);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ── DevLab Portal Theme — Dark Mode ─────────────────────────────────── */
|
|
112
|
+
[data-theme="portal-dark"],
|
|
113
|
+
[data-brand="portal"][data-theme="dark"],
|
|
114
|
+
[data-brand="portal"][data-theme="portal-dark"],
|
|
115
|
+
[data-brand="portal"].dark,
|
|
116
|
+
[data-brand="portal"] .dark,
|
|
117
|
+
[data-theme="portal"] .dark,
|
|
118
|
+
.dark [data-brand="portal"],
|
|
119
|
+
.dark [data-theme="portal"],
|
|
120
|
+
:root[data-theme="portal-dark"],
|
|
121
|
+
:root[data-brand="portal"].dark,
|
|
122
|
+
:root[data-brand="portal"][data-theme="dark"],
|
|
123
|
+
:root[data-brand="portal"][data-theme="portal-dark"],
|
|
124
|
+
:root.dark[data-brand="portal"],
|
|
125
|
+
:root.dark[data-theme="portal"] {
|
|
126
|
+
--radius: 0.5rem;
|
|
127
|
+
|
|
128
|
+
/* Surfaces */
|
|
129
|
+
--background: oklch(16% 0.005 170);
|
|
130
|
+
--foreground: oklch(94% 0.003 170);
|
|
131
|
+
--card: oklch(19.7% 0.005 170);
|
|
132
|
+
--card-foreground: oklch(94% 0.003 170);
|
|
133
|
+
--popover: oklch(19.7% 0.005 170);
|
|
134
|
+
--popover-foreground: oklch(94% 0.003 170);
|
|
135
|
+
|
|
136
|
+
/* Brand */
|
|
137
|
+
--primary: oklch(80% 0.13 165);
|
|
138
|
+
--primary-foreground: oklch(18% 0.035 165);
|
|
139
|
+
--secondary: oklch(23% 0.005 170);
|
|
140
|
+
--secondary-foreground: oklch(92% 0.005 170);
|
|
141
|
+
|
|
142
|
+
/* Muted / Accent */
|
|
143
|
+
--muted: oklch(23% 0.005 170);
|
|
144
|
+
--muted-foreground: oklch(62% 0.008 170);
|
|
145
|
+
--accent: oklch(26.5% 0.005 170);
|
|
146
|
+
--accent-foreground: oklch(94% 0.003 170);
|
|
147
|
+
|
|
148
|
+
/* Status */
|
|
149
|
+
--destructive: oklch(72% 0.16 25);
|
|
150
|
+
--destructive-foreground: oklch(17% 0.02 25);
|
|
151
|
+
--success: oklch(77% 0.14 165);
|
|
152
|
+
--success-foreground: oklch(18% 0.03 165);
|
|
153
|
+
--warning: oklch(80% 0.13 80);
|
|
154
|
+
--warning-foreground: oklch(20% 0.03 80);
|
|
155
|
+
--info: oklch(72% 0.13 260);
|
|
156
|
+
--info-foreground: oklch(18% 0.03 260);
|
|
157
|
+
|
|
158
|
+
/* Form / Ring */
|
|
159
|
+
--border: oklch(29% 0.005 170);
|
|
160
|
+
--input: oklch(29% 0.005 170);
|
|
161
|
+
--ring: oklch(80% 0.13 165);
|
|
162
|
+
|
|
163
|
+
/* Palette Accents */
|
|
164
|
+
--mint: oklch(72% 0.15 163);
|
|
165
|
+
--blue: oklch(72% 0.13 260);
|
|
166
|
+
--amber: oklch(78% 0.14 75);
|
|
167
|
+
--rose: oklch(73% 0.15 15);
|
|
168
|
+
--teal: oklch(74% 0.11 190);
|
|
169
|
+
|
|
170
|
+
/* Glass / Surface Tokens */
|
|
171
|
+
--surface: oklch(19.7% 0.005 170 / 80%);
|
|
172
|
+
--surface-2: oklch(23% 0.005 170);
|
|
173
|
+
--overlay: oklch(10% 0 0 / 75%);
|
|
174
|
+
--shadow-panel: 0 8px 28px oklch(10% 0 0 / 0.35);
|
|
175
|
+
|
|
176
|
+
/* Navigation & Sidebar */
|
|
177
|
+
--sidebar: oklch(17.5% 0.005 170);
|
|
178
|
+
--sidebar-foreground: oklch(94% 0.003 170);
|
|
179
|
+
--sidebar-primary: oklch(80% 0.13 165);
|
|
180
|
+
--sidebar-primary-foreground: oklch(18% 0.035 165);
|
|
181
|
+
--sidebar-accent: oklch(24% 0.005 170);
|
|
182
|
+
--sidebar-accent-foreground: oklch(94% 0.003 170);
|
|
183
|
+
--sidebar-border: oklch(29% 0.005 170);
|
|
184
|
+
--sidebar-ring: oklch(80% 0.13 165);
|
|
185
|
+
|
|
186
|
+
/* Visual Data Telemetry (Charts) */
|
|
187
|
+
--chart-1: oklch(80% 0.13 165);
|
|
188
|
+
--chart-2: oklch(72% 0.13 260);
|
|
189
|
+
--chart-3: oklch(78% 0.14 75);
|
|
190
|
+
--chart-4: oklch(73% 0.15 15);
|
|
191
|
+
--chart-5: oklch(74% 0.11 190);
|
|
192
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VitalAI Theme Preset — Clinical Porcelain & Bioluminescent Teal Palette
|
|
3
|
+
* Modern OKLCH color spaces optimized for high performance, clinical nutrition, and fitness intelligence.
|
|
4
|
+
* High-specificity scoped tokens for VitalAI applications.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── VitalAI Theme — Light Mode ─────────────────────────────────────────── */
|
|
8
|
+
[data-brand="vitalai"],
|
|
9
|
+
[data-theme="vitalai"],
|
|
10
|
+
[data-theme="vitalai-light"],
|
|
11
|
+
:root[data-brand="vitalai"],
|
|
12
|
+
:root[data-theme="vitalai"],
|
|
13
|
+
:root[data-theme="vitalai-light"] {
|
|
14
|
+
--radius: 1rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(0.975 0.006 190);
|
|
18
|
+
--foreground: oklch(0.2 0.03 220);
|
|
19
|
+
--card: oklch(1 0 0 / 72%);
|
|
20
|
+
--card-foreground: oklch(0.2 0.03 220);
|
|
21
|
+
--popover: oklch(0.995 0.003 190);
|
|
22
|
+
--popover-foreground: oklch(0.2 0.03 220);
|
|
23
|
+
|
|
24
|
+
/* Brand Action */
|
|
25
|
+
--primary: oklch(0.52 0.11 185);
|
|
26
|
+
--primary-foreground: oklch(0.99 0.01 185);
|
|
27
|
+
--secondary: oklch(0.94 0.015 190);
|
|
28
|
+
--secondary-foreground: oklch(0.25 0.04 210);
|
|
29
|
+
|
|
30
|
+
/* Muted / Accent */
|
|
31
|
+
--muted: oklch(0.945 0.01 200);
|
|
32
|
+
--muted-foreground: oklch(0.5 0.025 220);
|
|
33
|
+
--accent: oklch(0.93 0.035 180);
|
|
34
|
+
--accent-foreground: oklch(0.3 0.07 185);
|
|
35
|
+
|
|
36
|
+
/* Status & Clinical Feedback */
|
|
37
|
+
--destructive: oklch(0.58 0.2 25);
|
|
38
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
39
|
+
--warning: oklch(0.72 0.16 70);
|
|
40
|
+
--warning-foreground: oklch(0.2 0.02 70);
|
|
41
|
+
--success: oklch(0.62 0.15 155);
|
|
42
|
+
--success-foreground: oklch(0.99 0 0);
|
|
43
|
+
--info: oklch(0.62 0.13 235);
|
|
44
|
+
--info-foreground: oklch(0.99 0 0);
|
|
45
|
+
|
|
46
|
+
/* Form & Interactive */
|
|
47
|
+
--border: oklch(0.2 0.03 220 / 9%);
|
|
48
|
+
--input: oklch(0.2 0.03 220 / 12%);
|
|
49
|
+
--ring: oklch(0.52 0.11 185);
|
|
50
|
+
|
|
51
|
+
/* Glassmorphism & Ambient Glow */
|
|
52
|
+
--glass: oklch(1 0 0 / 62%);
|
|
53
|
+
--glass-border: oklch(1 0 0 / 80%);
|
|
54
|
+
--glow: oklch(0.7 0.14 180 / 25%);
|
|
55
|
+
--glow-2: oklch(0.75 0.12 150 / 18%);
|
|
56
|
+
--shadow-glass:
|
|
57
|
+
0 1px 0 0 oklch(1 0 0 / 70%) inset,
|
|
58
|
+
0 10px 40px -12px oklch(0.3 0.05 210 / 18%);
|
|
59
|
+
--surface: oklch(1 0 0 / 70%);
|
|
60
|
+
--surface-2: oklch(0.975 0.005 190);
|
|
61
|
+
--overlay: oklch(0.975 0.006 190 / 80%);
|
|
62
|
+
|
|
63
|
+
/* Navigation & Sidebar */
|
|
64
|
+
--sidebar: oklch(0.99 0.004 190 / 70%);
|
|
65
|
+
--sidebar-foreground: oklch(0.25 0.03 220);
|
|
66
|
+
--sidebar-primary: oklch(0.52 0.11 185);
|
|
67
|
+
--sidebar-primary-foreground: oklch(0.99 0 0);
|
|
68
|
+
--sidebar-accent: oklch(0.93 0.035 180);
|
|
69
|
+
--sidebar-accent-foreground: oklch(0.3 0.07 185);
|
|
70
|
+
--sidebar-border: oklch(0.2 0.03 220 / 8%);
|
|
71
|
+
--sidebar-ring: oklch(0.52 0.11 185);
|
|
72
|
+
|
|
73
|
+
/* ── VitalAI Clinical Telemetry & Macro Tokens ───────────────────────── */
|
|
74
|
+
--vital: oklch(0.62 0.15 160);
|
|
75
|
+
--vital-foreground: oklch(0.99 0 0);
|
|
76
|
+
--calories: oklch(0.66 0.17 45);
|
|
77
|
+
--protein: oklch(0.55 0.13 185);
|
|
78
|
+
--carbs: oklch(0.7 0.15 85);
|
|
79
|
+
--fats: oklch(0.6 0.16 350);
|
|
80
|
+
--water: oklch(0.62 0.13 235);
|
|
81
|
+
|
|
82
|
+
/* Visual Data Charts */
|
|
83
|
+
--chart-1: var(--protein);
|
|
84
|
+
--chart-2: var(--carbs);
|
|
85
|
+
--chart-3: var(--fats);
|
|
86
|
+
--chart-4: var(--calories);
|
|
87
|
+
--chart-5: var(--water);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ── VitalAI Theme — Dark Mode ────────────────────────────────────────── */
|
|
91
|
+
[data-theme="vitalai-dark"],
|
|
92
|
+
[data-brand="vitalai"][data-theme="dark"],
|
|
93
|
+
[data-brand="vitalai"][data-theme="vitalai-dark"],
|
|
94
|
+
[data-brand="vitalai"].dark,
|
|
95
|
+
[data-brand="vitalai"] .dark,
|
|
96
|
+
[data-theme="vitalai"] .dark,
|
|
97
|
+
.dark [data-brand="vitalai"],
|
|
98
|
+
.dark [data-theme="vitalai"],
|
|
99
|
+
:root[data-theme="vitalai-dark"],
|
|
100
|
+
:root[data-brand="vitalai"].dark,
|
|
101
|
+
:root[data-brand="vitalai"][data-theme="dark"],
|
|
102
|
+
:root[data-brand="vitalai"][data-theme="vitalai-dark"],
|
|
103
|
+
:root.dark[data-brand="vitalai"],
|
|
104
|
+
:root.dark[data-theme="vitalai"] {
|
|
105
|
+
--radius: 1rem;
|
|
106
|
+
|
|
107
|
+
/* Surfaces */
|
|
108
|
+
--background: oklch(0.155 0.018 230);
|
|
109
|
+
--foreground: oklch(0.95 0.01 200);
|
|
110
|
+
--card: oklch(0.22 0.02 225 / 60%);
|
|
111
|
+
--card-foreground: oklch(0.95 0.01 200);
|
|
112
|
+
--popover: oklch(0.2 0.02 225);
|
|
113
|
+
--popover-foreground: oklch(0.95 0.01 200);
|
|
114
|
+
|
|
115
|
+
/* Brand Action */
|
|
116
|
+
--primary: oklch(0.8 0.13 180);
|
|
117
|
+
--primary-foreground: oklch(0.18 0.03 210);
|
|
118
|
+
--secondary: oklch(0.26 0.02 225);
|
|
119
|
+
--secondary-foreground: oklch(0.92 0.01 200);
|
|
120
|
+
|
|
121
|
+
/* Muted / Accent */
|
|
122
|
+
--muted: oklch(0.25 0.018 225);
|
|
123
|
+
--muted-foreground: oklch(0.68 0.02 210);
|
|
124
|
+
--accent: oklch(0.3 0.05 190);
|
|
125
|
+
--accent-foreground: oklch(0.88 0.1 180);
|
|
126
|
+
|
|
127
|
+
/* Status & Clinical Feedback */
|
|
128
|
+
--destructive: oklch(0.68 0.19 22);
|
|
129
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
130
|
+
--warning: oklch(0.8 0.15 75);
|
|
131
|
+
--warning-foreground: oklch(0.15 0.02 75);
|
|
132
|
+
--success: oklch(0.78 0.16 155);
|
|
133
|
+
--success-foreground: oklch(0.15 0.02 230);
|
|
134
|
+
--info: oklch(0.74 0.13 235);
|
|
135
|
+
--info-foreground: oklch(0.15 0.02 230);
|
|
136
|
+
|
|
137
|
+
/* Form & Interactive */
|
|
138
|
+
--border: oklch(1 0 0 / 8%);
|
|
139
|
+
--input: oklch(1 0 0 / 12%);
|
|
140
|
+
--ring: oklch(0.8 0.13 180);
|
|
141
|
+
|
|
142
|
+
/* Glassmorphism & Ambient Glow */
|
|
143
|
+
--glass: oklch(0.24 0.02 225 / 55%);
|
|
144
|
+
--glass-border: oklch(1 0 0 / 9%);
|
|
145
|
+
--glow: oklch(0.7 0.14 180 / 22%);
|
|
146
|
+
--glow-2: oklch(0.6 0.14 260 / 16%);
|
|
147
|
+
--shadow-glass:
|
|
148
|
+
0 1px 0 0 oklch(1 0 0 / 5%) inset, 0 20px 50px -20px oklch(0 0 0 / 60%);
|
|
149
|
+
--surface: oklch(0.22 0.02 225 / 70%);
|
|
150
|
+
--surface-2: oklch(0.25 0.02 225);
|
|
151
|
+
--overlay: oklch(0.12 0.018 230 / 80%);
|
|
152
|
+
|
|
153
|
+
/* Navigation & Sidebar */
|
|
154
|
+
--sidebar: oklch(0.18 0.02 228 / 70%);
|
|
155
|
+
--sidebar-foreground: oklch(0.9 0.01 200);
|
|
156
|
+
--sidebar-primary: oklch(0.8 0.13 180);
|
|
157
|
+
--sidebar-primary-foreground: oklch(0.18 0.03 210);
|
|
158
|
+
--sidebar-accent: oklch(0.28 0.04 195);
|
|
159
|
+
--sidebar-accent-foreground: oklch(0.9 0.1 180);
|
|
160
|
+
--sidebar-border: oklch(1 0 0 / 6%);
|
|
161
|
+
--sidebar-ring: oklch(0.8 0.13 180);
|
|
162
|
+
|
|
163
|
+
/* ── VitalAI Clinical Telemetry & Macro Tokens ───────────────────────── */
|
|
164
|
+
--vital: oklch(0.82 0.16 160);
|
|
165
|
+
--vital-foreground: oklch(0.18 0.03 210);
|
|
166
|
+
--calories: oklch(0.76 0.16 50);
|
|
167
|
+
--protein: oklch(0.8 0.13 180);
|
|
168
|
+
--carbs: oklch(0.85 0.14 90);
|
|
169
|
+
--fats: oklch(0.74 0.16 350);
|
|
170
|
+
--water: oklch(0.74 0.13 235);
|
|
171
|
+
|
|
172
|
+
/* Visual Data Charts */
|
|
173
|
+
--chart-1: var(--protein);
|
|
174
|
+
--chart-2: var(--carbs);
|
|
175
|
+
--chart-3: var(--fats);
|
|
176
|
+
--chart-4: var(--calories);
|
|
177
|
+
--chart-5: var(--water);
|
|
178
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuva-devlab/tokens",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Design tokens, brand themes, and Tailwind CSS 4 preset bridge for Yuva DevLab",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
"./root.css": "./styles/root.css",
|
|
25
25
|
"./themes/finai.css": "./styles/themes/finai.css",
|
|
26
26
|
"./themes/orchestrai.css": "./styles/themes/orchestrai.css",
|
|
27
|
+
"./themes/portal.css": "./styles/themes/portal.css",
|
|
28
|
+
"./themes/logs.css": "./styles/themes/logs.css",
|
|
29
|
+
"./themes/vitalai.css": "./styles/themes/vitalai.css",
|
|
27
30
|
"./package.json": "./package.json"
|
|
28
31
|
},
|
|
29
32
|
"files": [
|
|
@@ -37,9 +40,12 @@
|
|
|
37
40
|
"prettier": "^3.9.8",
|
|
38
41
|
"tsup": "^8.5.1",
|
|
39
42
|
"typescript": "^6.0.3",
|
|
43
|
+
"@yuva-devlab/eslint-config": "0.1.1",
|
|
40
44
|
"@yuva-devlab/prettier-config": "0.1.1",
|
|
41
|
-
"@yuva-devlab/typescript-config": "0.1.1"
|
|
42
|
-
|
|
45
|
+
"@yuva-devlab/typescript-config": "0.1.1"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
43
49
|
},
|
|
44
50
|
"scripts": {
|
|
45
51
|
"build": "tsup",
|
package/styles/preset.css
CHANGED
|
@@ -221,6 +221,17 @@
|
|
|
221
221
|
--color-chart-4: var(--chart-4);
|
|
222
222
|
--color-chart-5: var(--chart-5);
|
|
223
223
|
|
|
224
|
+
/* ── VitalAI Clinical & Performance Telemetry Tokens ───────────── */
|
|
225
|
+
--color-vital: var(--vital);
|
|
226
|
+
--color-vital-foreground: var(--vital-foreground);
|
|
227
|
+
--color-calories: var(--calories);
|
|
228
|
+
--color-protein: var(--protein);
|
|
229
|
+
--color-carbs: var(--carbs);
|
|
230
|
+
--color-fats: var(--fats);
|
|
231
|
+
--color-water: var(--water);
|
|
232
|
+
--color-glass: var(--glass);
|
|
233
|
+
--color-glass-border: var(--glass-border);
|
|
234
|
+
|
|
224
235
|
/* ── Component Control Dimensions ─────────────────────────────────── */
|
|
225
236
|
--height-control-xs: var(--control-height-xs, 1.75rem);
|
|
226
237
|
--height-control-sm: var(--control-height-sm, 2rem);
|
package/styles/styles.css
CHANGED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevLab Logs Theme — High-Density Observability & Telemetry Console Palette
|
|
3
|
+
* Modern OKLCH color spaces optimized for real-time distributed log streaming,
|
|
4
|
+
* trace inspection, DuckDB SQL analytics, and Log-RAG root-cause analysis.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── DevLab Logs Theme — Light Mode ────────────────────────────────────────── */
|
|
8
|
+
[data-brand="logs"],
|
|
9
|
+
[data-theme="logs"],
|
|
10
|
+
[data-theme="logs-light"],
|
|
11
|
+
:root[data-brand="logs"],
|
|
12
|
+
:root[data-theme="logs"],
|
|
13
|
+
:root[data-theme="logs-light"] {
|
|
14
|
+
--radius: 0.5rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(0.975 0.005 240);
|
|
18
|
+
--foreground: oklch(0.2 0.02 250);
|
|
19
|
+
--surface: oklch(0.95 0.008 240);
|
|
20
|
+
--surface-2: oklch(0.92 0.01 240);
|
|
21
|
+
--card: oklch(0.98 0.004 240);
|
|
22
|
+
--card-foreground: oklch(0.2 0.02 250);
|
|
23
|
+
--popover: oklch(0.97 0.006 240);
|
|
24
|
+
--popover-foreground: oklch(0.2 0.02 250);
|
|
25
|
+
|
|
26
|
+
/* Brand / Neon Green Accent */
|
|
27
|
+
--primary: oklch(0.62 0.18 150);
|
|
28
|
+
--primary-foreground: oklch(0.99 0.005 150);
|
|
29
|
+
--secondary: oklch(0.92 0.012 245);
|
|
30
|
+
--secondary-foreground: oklch(0.25 0.02 250);
|
|
31
|
+
|
|
32
|
+
/* Muted / Accent */
|
|
33
|
+
--muted: oklch(0.92 0.01 240);
|
|
34
|
+
--muted-foreground: oklch(0.5 0.02 245);
|
|
35
|
+
--accent: oklch(0.9 0.015 240);
|
|
36
|
+
--accent-foreground: oklch(0.2 0.02 250);
|
|
37
|
+
|
|
38
|
+
/* Severity & Status */
|
|
39
|
+
--destructive: oklch(0.6 0.22 25);
|
|
40
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
41
|
+
--fatal: oklch(0.58 0.24 350);
|
|
42
|
+
--error: oklch(0.6 0.22 25);
|
|
43
|
+
--warn: oklch(0.7 0.16 80);
|
|
44
|
+
--info: oklch(0.62 0.14 230);
|
|
45
|
+
--debug: oklch(0.52 0.04 250);
|
|
46
|
+
--ai: oklch(0.65 0.15 195);
|
|
47
|
+
|
|
48
|
+
/* Syntax Highlighting */
|
|
49
|
+
--syn-key: oklch(0.55 0.14 235);
|
|
50
|
+
--syn-str: oklch(0.55 0.16 145);
|
|
51
|
+
--syn-num: oklch(0.62 0.16 75);
|
|
52
|
+
|
|
53
|
+
/* Form & Interactive */
|
|
54
|
+
--border: oklch(0.85 0.01 240);
|
|
55
|
+
--input: oklch(0.85 0.01 240);
|
|
56
|
+
--ring: oklch(0.62 0.18 150 / 60%);
|
|
57
|
+
|
|
58
|
+
/* Visual Glow & Matrix Background */
|
|
59
|
+
--glow-primary:
|
|
60
|
+
0 0 0 1px color-mix(in oklab, var(--primary) 30%, transparent),
|
|
61
|
+
0 0 18px -4px color-mix(in oklab, var(--primary) 40%, transparent);
|
|
62
|
+
--grid-bg: radial-gradient(
|
|
63
|
+
circle at 1px 1px,
|
|
64
|
+
oklch(0 0 0 / 5%) 1px,
|
|
65
|
+
transparent 0
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* ── DevLab Logs Theme — Dark Mode ─────────────────────────────────────────── */
|
|
70
|
+
[data-theme="logs-dark"],
|
|
71
|
+
[data-brand="logs"][data-theme="dark"],
|
|
72
|
+
[data-brand="logs"][data-theme="logs-dark"],
|
|
73
|
+
[data-brand="logs"].dark,
|
|
74
|
+
[data-brand="logs"] .dark,
|
|
75
|
+
[data-theme="logs"] .dark,
|
|
76
|
+
.dark [data-brand="logs"],
|
|
77
|
+
.dark [data-theme="logs"],
|
|
78
|
+
:root[data-theme="logs-dark"],
|
|
79
|
+
:root[data-brand="logs"].dark,
|
|
80
|
+
:root[data-brand="logs"][data-theme="dark"],
|
|
81
|
+
:root[data-brand="logs"][data-theme="logs-dark"],
|
|
82
|
+
:root.dark[data-brand="logs"],
|
|
83
|
+
:root.dark[data-theme="logs"] {
|
|
84
|
+
--radius: 0.5rem;
|
|
85
|
+
|
|
86
|
+
/* Surfaces */
|
|
87
|
+
--background: oklch(0.155 0.012 250);
|
|
88
|
+
--foreground: oklch(0.93 0.01 240);
|
|
89
|
+
--surface: oklch(0.19 0.014 250);
|
|
90
|
+
--surface-2: oklch(0.225 0.016 250);
|
|
91
|
+
--card: oklch(0.19 0.014 250);
|
|
92
|
+
--card-foreground: oklch(0.93 0.01 240);
|
|
93
|
+
--popover: oklch(0.21 0.016 250);
|
|
94
|
+
--popover-foreground: oklch(0.93 0.01 240);
|
|
95
|
+
|
|
96
|
+
/* Brand / Neon Green Accent */
|
|
97
|
+
--primary: oklch(0.86 0.17 150);
|
|
98
|
+
--primary-foreground: oklch(0.17 0.03 150);
|
|
99
|
+
--secondary: oklch(0.25 0.016 250);
|
|
100
|
+
--secondary-foreground: oklch(0.93 0.01 240);
|
|
101
|
+
|
|
102
|
+
/* Muted / Accent */
|
|
103
|
+
--muted: oklch(0.24 0.014 250);
|
|
104
|
+
--muted-foreground: oklch(0.64 0.02 245);
|
|
105
|
+
--accent: oklch(0.27 0.02 250);
|
|
106
|
+
--accent-foreground: oklch(0.96 0.01 240);
|
|
107
|
+
|
|
108
|
+
/* Severity & Status */
|
|
109
|
+
--destructive: oklch(0.66 0.21 25);
|
|
110
|
+
--destructive-foreground: oklch(0.98 0 0);
|
|
111
|
+
--fatal: oklch(0.68 0.24 350);
|
|
112
|
+
--error: oklch(0.68 0.21 25);
|
|
113
|
+
--warn: oklch(0.82 0.16 80);
|
|
114
|
+
--info: oklch(0.76 0.12 230);
|
|
115
|
+
--debug: oklch(0.6 0.03 250);
|
|
116
|
+
--ai: oklch(0.78 0.14 195);
|
|
117
|
+
|
|
118
|
+
/* Syntax Highlighting */
|
|
119
|
+
--syn-key: oklch(0.78 0.12 230);
|
|
120
|
+
--syn-str: oklch(0.84 0.14 140);
|
|
121
|
+
--syn-num: oklch(0.82 0.15 70);
|
|
122
|
+
|
|
123
|
+
/* Form & Interactive */
|
|
124
|
+
--border: oklch(0.28 0.016 250);
|
|
125
|
+
--input: oklch(0.3 0.016 250);
|
|
126
|
+
--ring: oklch(0.86 0.17 150 / 60%);
|
|
127
|
+
|
|
128
|
+
/* Visual Glow & Matrix Background */
|
|
129
|
+
--glow-primary:
|
|
130
|
+
0 0 0 1px color-mix(in oklab, var(--primary) 40%, transparent),
|
|
131
|
+
0 0 24px -4px color-mix(in oklab, var(--primary) 50%, transparent);
|
|
132
|
+
--grid-bg: radial-gradient(
|
|
133
|
+
circle at 1px 1px,
|
|
134
|
+
oklch(1 0 0 / 4%) 1px,
|
|
135
|
+
transparent 0
|
|
136
|
+
);
|
|
137
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DevLab Portal Theme — Mint / Obsidian Palette
|
|
3
|
+
* Scoped OKLCH color tokens optimized for identity, IAM, security audit ledger, and control plane workflows.
|
|
4
|
+
* High-specificity scoped tokens for DevLab Portal applications.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── DevLab Portal Theme — Light Mode ──────────────────────────────────── */
|
|
8
|
+
[data-brand="portal"],
|
|
9
|
+
[data-theme="portal"],
|
|
10
|
+
[data-theme="portal-light"],
|
|
11
|
+
:root[data-brand="portal"],
|
|
12
|
+
:root[data-theme="portal"],
|
|
13
|
+
:root[data-theme="portal-light"] {
|
|
14
|
+
--radius: 0.5rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(97.5% 0.003 170);
|
|
18
|
+
--foreground: oklch(22% 0.01 170);
|
|
19
|
+
--card: oklch(100% 0 0);
|
|
20
|
+
--card-foreground: oklch(22% 0.01 170);
|
|
21
|
+
--popover: oklch(100% 0 0);
|
|
22
|
+
--popover-foreground: oklch(22% 0.01 170);
|
|
23
|
+
|
|
24
|
+
/* Brand */
|
|
25
|
+
--primary: oklch(46% 0.115 170);
|
|
26
|
+
--primary-foreground: oklch(99% 0.005 170);
|
|
27
|
+
--secondary: oklch(94.5% 0.006 170);
|
|
28
|
+
--secondary-foreground: oklch(24% 0.01 170);
|
|
29
|
+
|
|
30
|
+
/* Muted / Accent */
|
|
31
|
+
--muted: oklch(94.5% 0.006 170);
|
|
32
|
+
--muted-foreground: oklch(51% 0.01 170);
|
|
33
|
+
--accent: oklch(92% 0.012 170);
|
|
34
|
+
--accent-foreground: oklch(22% 0.01 170);
|
|
35
|
+
|
|
36
|
+
/* Status */
|
|
37
|
+
--destructive: oklch(58% 0.19 25);
|
|
38
|
+
--destructive-foreground: oklch(99% 0 0);
|
|
39
|
+
--success: oklch(47% 0.13 166);
|
|
40
|
+
--success-foreground: oklch(99% 0 0);
|
|
41
|
+
--warning: oklch(63% 0.13 75);
|
|
42
|
+
--warning-foreground: oklch(20% 0.03 75);
|
|
43
|
+
--info: oklch(72% 0.13 260);
|
|
44
|
+
--info-foreground: oklch(99% 0 0);
|
|
45
|
+
|
|
46
|
+
/* Form / Ring */
|
|
47
|
+
--border: oklch(88% 0.007 170);
|
|
48
|
+
--input: oklch(88% 0.007 170);
|
|
49
|
+
--ring: oklch(46% 0.115 170);
|
|
50
|
+
|
|
51
|
+
/* Palette Accents */
|
|
52
|
+
--mint: oklch(72% 0.15 163);
|
|
53
|
+
--blue: oklch(72% 0.13 260);
|
|
54
|
+
--amber: oklch(78% 0.14 75);
|
|
55
|
+
--rose: oklch(73% 0.15 15);
|
|
56
|
+
--teal: oklch(74% 0.11 190);
|
|
57
|
+
|
|
58
|
+
/* Glass / Surface Tokens */
|
|
59
|
+
--surface: oklch(100% 0 0 / 80%);
|
|
60
|
+
--surface-2: oklch(96% 0.004 170);
|
|
61
|
+
--overlay: oklch(10% 0 0 / 75%);
|
|
62
|
+
--shadow-panel: 0 8px 28px oklch(10% 0 0 / 0.12);
|
|
63
|
+
|
|
64
|
+
/* Navigation & Sidebar */
|
|
65
|
+
--sidebar: oklch(98% 0.003 170);
|
|
66
|
+
--sidebar-foreground: oklch(22% 0.01 170);
|
|
67
|
+
--sidebar-primary: oklch(46% 0.115 170);
|
|
68
|
+
--sidebar-primary-foreground: oklch(99% 0.005 170);
|
|
69
|
+
--sidebar-accent: oklch(94% 0.006 170);
|
|
70
|
+
--sidebar-accent-foreground: oklch(22% 0.01 170);
|
|
71
|
+
--sidebar-border: oklch(88% 0.007 170);
|
|
72
|
+
--sidebar-ring: oklch(46% 0.115 170);
|
|
73
|
+
|
|
74
|
+
/* Visual Data Telemetry (Charts) */
|
|
75
|
+
--chart-1: oklch(46% 0.115 170);
|
|
76
|
+
--chart-2: oklch(72% 0.13 260);
|
|
77
|
+
--chart-3: oklch(78% 0.14 75);
|
|
78
|
+
--chart-4: oklch(73% 0.15 15);
|
|
79
|
+
--chart-5: oklch(74% 0.11 190);
|
|
80
|
+
|
|
81
|
+
/* Sizing, Spacing & Layout Tokens */
|
|
82
|
+
--control-height-xs: 1.75rem;
|
|
83
|
+
--control-height-sm: 2rem;
|
|
84
|
+
--control-height-md: 2.25rem;
|
|
85
|
+
--control-height-lg: 2.5rem;
|
|
86
|
+
--control-height-xl: 3rem;
|
|
87
|
+
|
|
88
|
+
--icon-xs: 0.875rem;
|
|
89
|
+
--icon-sm: 1rem;
|
|
90
|
+
--icon-md: 1.25rem;
|
|
91
|
+
--icon-lg: 1.5rem;
|
|
92
|
+
--icon-xl: 2rem;
|
|
93
|
+
|
|
94
|
+
--space-1: 0.25rem;
|
|
95
|
+
--space-2: 0.5rem;
|
|
96
|
+
--space-3: 0.75rem;
|
|
97
|
+
--space-4: 1rem;
|
|
98
|
+
--space-5: 1.25rem;
|
|
99
|
+
--space-6: 1.5rem;
|
|
100
|
+
--space-8: 2rem;
|
|
101
|
+
--space-10: 2.5rem;
|
|
102
|
+
|
|
103
|
+
--card-padding: var(--space-4);
|
|
104
|
+
--dialog-padding: var(--space-5);
|
|
105
|
+
--form-field-gap: var(--space-3);
|
|
106
|
+
--section-gap: var(--space-5);
|
|
107
|
+
--table-row-padding-x: var(--space-4);
|
|
108
|
+
--table-row-padding-y: var(--space-3);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ── DevLab Portal Theme — Dark Mode ─────────────────────────────────── */
|
|
112
|
+
[data-theme="portal-dark"],
|
|
113
|
+
[data-brand="portal"][data-theme="dark"],
|
|
114
|
+
[data-brand="portal"][data-theme="portal-dark"],
|
|
115
|
+
[data-brand="portal"].dark,
|
|
116
|
+
[data-brand="portal"] .dark,
|
|
117
|
+
[data-theme="portal"] .dark,
|
|
118
|
+
.dark [data-brand="portal"],
|
|
119
|
+
.dark [data-theme="portal"],
|
|
120
|
+
:root[data-theme="portal-dark"],
|
|
121
|
+
:root[data-brand="portal"].dark,
|
|
122
|
+
:root[data-brand="portal"][data-theme="dark"],
|
|
123
|
+
:root[data-brand="portal"][data-theme="portal-dark"],
|
|
124
|
+
:root.dark[data-brand="portal"],
|
|
125
|
+
:root.dark[data-theme="portal"] {
|
|
126
|
+
--radius: 0.5rem;
|
|
127
|
+
|
|
128
|
+
/* Surfaces */
|
|
129
|
+
--background: oklch(16% 0.005 170);
|
|
130
|
+
--foreground: oklch(94% 0.003 170);
|
|
131
|
+
--card: oklch(19.7% 0.005 170);
|
|
132
|
+
--card-foreground: oklch(94% 0.003 170);
|
|
133
|
+
--popover: oklch(19.7% 0.005 170);
|
|
134
|
+
--popover-foreground: oklch(94% 0.003 170);
|
|
135
|
+
|
|
136
|
+
/* Brand */
|
|
137
|
+
--primary: oklch(80% 0.13 165);
|
|
138
|
+
--primary-foreground: oklch(18% 0.035 165);
|
|
139
|
+
--secondary: oklch(23% 0.005 170);
|
|
140
|
+
--secondary-foreground: oklch(92% 0.005 170);
|
|
141
|
+
|
|
142
|
+
/* Muted / Accent */
|
|
143
|
+
--muted: oklch(23% 0.005 170);
|
|
144
|
+
--muted-foreground: oklch(62% 0.008 170);
|
|
145
|
+
--accent: oklch(26.5% 0.005 170);
|
|
146
|
+
--accent-foreground: oklch(94% 0.003 170);
|
|
147
|
+
|
|
148
|
+
/* Status */
|
|
149
|
+
--destructive: oklch(72% 0.16 25);
|
|
150
|
+
--destructive-foreground: oklch(17% 0.02 25);
|
|
151
|
+
--success: oklch(77% 0.14 165);
|
|
152
|
+
--success-foreground: oklch(18% 0.03 165);
|
|
153
|
+
--warning: oklch(80% 0.13 80);
|
|
154
|
+
--warning-foreground: oklch(20% 0.03 80);
|
|
155
|
+
--info: oklch(72% 0.13 260);
|
|
156
|
+
--info-foreground: oklch(18% 0.03 260);
|
|
157
|
+
|
|
158
|
+
/* Form / Ring */
|
|
159
|
+
--border: oklch(29% 0.005 170);
|
|
160
|
+
--input: oklch(29% 0.005 170);
|
|
161
|
+
--ring: oklch(80% 0.13 165);
|
|
162
|
+
|
|
163
|
+
/* Palette Accents */
|
|
164
|
+
--mint: oklch(72% 0.15 163);
|
|
165
|
+
--blue: oklch(72% 0.13 260);
|
|
166
|
+
--amber: oklch(78% 0.14 75);
|
|
167
|
+
--rose: oklch(73% 0.15 15);
|
|
168
|
+
--teal: oklch(74% 0.11 190);
|
|
169
|
+
|
|
170
|
+
/* Glass / Surface Tokens */
|
|
171
|
+
--surface: oklch(19.7% 0.005 170 / 80%);
|
|
172
|
+
--surface-2: oklch(23% 0.005 170);
|
|
173
|
+
--overlay: oklch(10% 0 0 / 75%);
|
|
174
|
+
--shadow-panel: 0 8px 28px oklch(10% 0 0 / 0.35);
|
|
175
|
+
|
|
176
|
+
/* Navigation & Sidebar */
|
|
177
|
+
--sidebar: oklch(17.5% 0.005 170);
|
|
178
|
+
--sidebar-foreground: oklch(94% 0.003 170);
|
|
179
|
+
--sidebar-primary: oklch(80% 0.13 165);
|
|
180
|
+
--sidebar-primary-foreground: oklch(18% 0.035 165);
|
|
181
|
+
--sidebar-accent: oklch(24% 0.005 170);
|
|
182
|
+
--sidebar-accent-foreground: oklch(94% 0.003 170);
|
|
183
|
+
--sidebar-border: oklch(29% 0.005 170);
|
|
184
|
+
--sidebar-ring: oklch(80% 0.13 165);
|
|
185
|
+
|
|
186
|
+
/* Visual Data Telemetry (Charts) */
|
|
187
|
+
--chart-1: oklch(80% 0.13 165);
|
|
188
|
+
--chart-2: oklch(72% 0.13 260);
|
|
189
|
+
--chart-3: oklch(78% 0.14 75);
|
|
190
|
+
--chart-4: oklch(73% 0.15 15);
|
|
191
|
+
--chart-5: oklch(74% 0.11 190);
|
|
192
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VitalAI Theme Preset — Clinical Porcelain & Bioluminescent Teal Palette
|
|
3
|
+
* Modern OKLCH color spaces optimized for high performance, clinical nutrition, and fitness intelligence.
|
|
4
|
+
* High-specificity scoped tokens for VitalAI applications.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── VitalAI Theme — Light Mode ─────────────────────────────────────────── */
|
|
8
|
+
[data-brand="vitalai"],
|
|
9
|
+
[data-theme="vitalai"],
|
|
10
|
+
[data-theme="vitalai-light"],
|
|
11
|
+
:root[data-brand="vitalai"],
|
|
12
|
+
:root[data-theme="vitalai"],
|
|
13
|
+
:root[data-theme="vitalai-light"] {
|
|
14
|
+
--radius: 1rem;
|
|
15
|
+
|
|
16
|
+
/* Surfaces */
|
|
17
|
+
--background: oklch(0.975 0.006 190);
|
|
18
|
+
--foreground: oklch(0.2 0.03 220);
|
|
19
|
+
--card: oklch(1 0 0 / 72%);
|
|
20
|
+
--card-foreground: oklch(0.2 0.03 220);
|
|
21
|
+
--popover: oklch(0.995 0.003 190);
|
|
22
|
+
--popover-foreground: oklch(0.2 0.03 220);
|
|
23
|
+
|
|
24
|
+
/* Brand Action */
|
|
25
|
+
--primary: oklch(0.52 0.11 185);
|
|
26
|
+
--primary-foreground: oklch(0.99 0.01 185);
|
|
27
|
+
--secondary: oklch(0.94 0.015 190);
|
|
28
|
+
--secondary-foreground: oklch(0.25 0.04 210);
|
|
29
|
+
|
|
30
|
+
/* Muted / Accent */
|
|
31
|
+
--muted: oklch(0.945 0.01 200);
|
|
32
|
+
--muted-foreground: oklch(0.5 0.025 220);
|
|
33
|
+
--accent: oklch(0.93 0.035 180);
|
|
34
|
+
--accent-foreground: oklch(0.3 0.07 185);
|
|
35
|
+
|
|
36
|
+
/* Status & Clinical Feedback */
|
|
37
|
+
--destructive: oklch(0.58 0.2 25);
|
|
38
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
39
|
+
--warning: oklch(0.72 0.16 70);
|
|
40
|
+
--warning-foreground: oklch(0.2 0.02 70);
|
|
41
|
+
--success: oklch(0.62 0.15 155);
|
|
42
|
+
--success-foreground: oklch(0.99 0 0);
|
|
43
|
+
--info: oklch(0.62 0.13 235);
|
|
44
|
+
--info-foreground: oklch(0.99 0 0);
|
|
45
|
+
|
|
46
|
+
/* Form & Interactive */
|
|
47
|
+
--border: oklch(0.2 0.03 220 / 9%);
|
|
48
|
+
--input: oklch(0.2 0.03 220 / 12%);
|
|
49
|
+
--ring: oklch(0.52 0.11 185);
|
|
50
|
+
|
|
51
|
+
/* Glassmorphism & Ambient Glow */
|
|
52
|
+
--glass: oklch(1 0 0 / 62%);
|
|
53
|
+
--glass-border: oklch(1 0 0 / 80%);
|
|
54
|
+
--glow: oklch(0.7 0.14 180 / 25%);
|
|
55
|
+
--glow-2: oklch(0.75 0.12 150 / 18%);
|
|
56
|
+
--shadow-glass:
|
|
57
|
+
0 1px 0 0 oklch(1 0 0 / 70%) inset,
|
|
58
|
+
0 10px 40px -12px oklch(0.3 0.05 210 / 18%);
|
|
59
|
+
--surface: oklch(1 0 0 / 70%);
|
|
60
|
+
--surface-2: oklch(0.975 0.005 190);
|
|
61
|
+
--overlay: oklch(0.975 0.006 190 / 80%);
|
|
62
|
+
|
|
63
|
+
/* Navigation & Sidebar */
|
|
64
|
+
--sidebar: oklch(0.99 0.004 190 / 70%);
|
|
65
|
+
--sidebar-foreground: oklch(0.25 0.03 220);
|
|
66
|
+
--sidebar-primary: oklch(0.52 0.11 185);
|
|
67
|
+
--sidebar-primary-foreground: oklch(0.99 0 0);
|
|
68
|
+
--sidebar-accent: oklch(0.93 0.035 180);
|
|
69
|
+
--sidebar-accent-foreground: oklch(0.3 0.07 185);
|
|
70
|
+
--sidebar-border: oklch(0.2 0.03 220 / 8%);
|
|
71
|
+
--sidebar-ring: oklch(0.52 0.11 185);
|
|
72
|
+
|
|
73
|
+
/* ── VitalAI Clinical Telemetry & Macro Tokens ───────────────────────── */
|
|
74
|
+
--vital: oklch(0.62 0.15 160);
|
|
75
|
+
--vital-foreground: oklch(0.99 0 0);
|
|
76
|
+
--calories: oklch(0.66 0.17 45);
|
|
77
|
+
--protein: oklch(0.55 0.13 185);
|
|
78
|
+
--carbs: oklch(0.7 0.15 85);
|
|
79
|
+
--fats: oklch(0.6 0.16 350);
|
|
80
|
+
--water: oklch(0.62 0.13 235);
|
|
81
|
+
|
|
82
|
+
/* Visual Data Charts */
|
|
83
|
+
--chart-1: var(--protein);
|
|
84
|
+
--chart-2: var(--carbs);
|
|
85
|
+
--chart-3: var(--fats);
|
|
86
|
+
--chart-4: var(--calories);
|
|
87
|
+
--chart-5: var(--water);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ── VitalAI Theme — Dark Mode ────────────────────────────────────────── */
|
|
91
|
+
[data-theme="vitalai-dark"],
|
|
92
|
+
[data-brand="vitalai"][data-theme="dark"],
|
|
93
|
+
[data-brand="vitalai"][data-theme="vitalai-dark"],
|
|
94
|
+
[data-brand="vitalai"].dark,
|
|
95
|
+
[data-brand="vitalai"] .dark,
|
|
96
|
+
[data-theme="vitalai"] .dark,
|
|
97
|
+
.dark [data-brand="vitalai"],
|
|
98
|
+
.dark [data-theme="vitalai"],
|
|
99
|
+
:root[data-theme="vitalai-dark"],
|
|
100
|
+
:root[data-brand="vitalai"].dark,
|
|
101
|
+
:root[data-brand="vitalai"][data-theme="dark"],
|
|
102
|
+
:root[data-brand="vitalai"][data-theme="vitalai-dark"],
|
|
103
|
+
:root.dark[data-brand="vitalai"],
|
|
104
|
+
:root.dark[data-theme="vitalai"] {
|
|
105
|
+
--radius: 1rem;
|
|
106
|
+
|
|
107
|
+
/* Surfaces */
|
|
108
|
+
--background: oklch(0.155 0.018 230);
|
|
109
|
+
--foreground: oklch(0.95 0.01 200);
|
|
110
|
+
--card: oklch(0.22 0.02 225 / 60%);
|
|
111
|
+
--card-foreground: oklch(0.95 0.01 200);
|
|
112
|
+
--popover: oklch(0.2 0.02 225);
|
|
113
|
+
--popover-foreground: oklch(0.95 0.01 200);
|
|
114
|
+
|
|
115
|
+
/* Brand Action */
|
|
116
|
+
--primary: oklch(0.8 0.13 180);
|
|
117
|
+
--primary-foreground: oklch(0.18 0.03 210);
|
|
118
|
+
--secondary: oklch(0.26 0.02 225);
|
|
119
|
+
--secondary-foreground: oklch(0.92 0.01 200);
|
|
120
|
+
|
|
121
|
+
/* Muted / Accent */
|
|
122
|
+
--muted: oklch(0.25 0.018 225);
|
|
123
|
+
--muted-foreground: oklch(0.68 0.02 210);
|
|
124
|
+
--accent: oklch(0.3 0.05 190);
|
|
125
|
+
--accent-foreground: oklch(0.88 0.1 180);
|
|
126
|
+
|
|
127
|
+
/* Status & Clinical Feedback */
|
|
128
|
+
--destructive: oklch(0.68 0.19 22);
|
|
129
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
130
|
+
--warning: oklch(0.8 0.15 75);
|
|
131
|
+
--warning-foreground: oklch(0.15 0.02 75);
|
|
132
|
+
--success: oklch(0.78 0.16 155);
|
|
133
|
+
--success-foreground: oklch(0.15 0.02 230);
|
|
134
|
+
--info: oklch(0.74 0.13 235);
|
|
135
|
+
--info-foreground: oklch(0.15 0.02 230);
|
|
136
|
+
|
|
137
|
+
/* Form & Interactive */
|
|
138
|
+
--border: oklch(1 0 0 / 8%);
|
|
139
|
+
--input: oklch(1 0 0 / 12%);
|
|
140
|
+
--ring: oklch(0.8 0.13 180);
|
|
141
|
+
|
|
142
|
+
/* Glassmorphism & Ambient Glow */
|
|
143
|
+
--glass: oklch(0.24 0.02 225 / 55%);
|
|
144
|
+
--glass-border: oklch(1 0 0 / 9%);
|
|
145
|
+
--glow: oklch(0.7 0.14 180 / 22%);
|
|
146
|
+
--glow-2: oklch(0.6 0.14 260 / 16%);
|
|
147
|
+
--shadow-glass:
|
|
148
|
+
0 1px 0 0 oklch(1 0 0 / 5%) inset, 0 20px 50px -20px oklch(0 0 0 / 60%);
|
|
149
|
+
--surface: oklch(0.22 0.02 225 / 70%);
|
|
150
|
+
--surface-2: oklch(0.25 0.02 225);
|
|
151
|
+
--overlay: oklch(0.12 0.018 230 / 80%);
|
|
152
|
+
|
|
153
|
+
/* Navigation & Sidebar */
|
|
154
|
+
--sidebar: oklch(0.18 0.02 228 / 70%);
|
|
155
|
+
--sidebar-foreground: oklch(0.9 0.01 200);
|
|
156
|
+
--sidebar-primary: oklch(0.8 0.13 180);
|
|
157
|
+
--sidebar-primary-foreground: oklch(0.18 0.03 210);
|
|
158
|
+
--sidebar-accent: oklch(0.28 0.04 195);
|
|
159
|
+
--sidebar-accent-foreground: oklch(0.9 0.1 180);
|
|
160
|
+
--sidebar-border: oklch(1 0 0 / 6%);
|
|
161
|
+
--sidebar-ring: oklch(0.8 0.13 180);
|
|
162
|
+
|
|
163
|
+
/* ── VitalAI Clinical Telemetry & Macro Tokens ───────────────────────── */
|
|
164
|
+
--vital: oklch(0.82 0.16 160);
|
|
165
|
+
--vital-foreground: oklch(0.18 0.03 210);
|
|
166
|
+
--calories: oklch(0.76 0.16 50);
|
|
167
|
+
--protein: oklch(0.8 0.13 180);
|
|
168
|
+
--carbs: oklch(0.85 0.14 90);
|
|
169
|
+
--fats: oklch(0.74 0.16 350);
|
|
170
|
+
--water: oklch(0.74 0.13 235);
|
|
171
|
+
|
|
172
|
+
/* Visual Data Charts */
|
|
173
|
+
--chart-1: var(--protein);
|
|
174
|
+
--chart-2: var(--carbs);
|
|
175
|
+
--chart-3: var(--fats);
|
|
176
|
+
--chart-4: var(--calories);
|
|
177
|
+
--chart-5: var(--water);
|
|
178
|
+
}
|