@yuva-devlab/tokens 1.0.0 → 1.1.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/README.md +7 -34
- package/dist/index.cjs +23 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +16 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/{src → dist}/preset.css +107 -12
- package/dist/root.css +91 -0
- package/dist/styles.css +12 -0
- package/{src/themes/theme-finai.css → dist/themes/finai.css} +5 -1
- package/dist/themes/orchestrai.css +197 -0
- package/package.json +35 -10
- package/styles/preset.css +254 -0
- package/styles/root.css +91 -0
- package/styles/styles.css +12 -0
- package/styles/themes/finai.css +114 -0
- package/styles/themes/orchestrai.css +197 -0
- package/src/styles.css +0 -2
- package/src/themes/theme-orchestrai.css +0 -45
package/README.md
CHANGED
|
@@ -1,48 +1,21 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @yuva-devlab/tokens
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](LICENSE)
|
|
5
|
-
|
|
6
|
-
> Tailwind CSS 4 preset and design token theme bridge for the Yuva DevLab Design System.
|
|
7
|
-
|
|
8
|
-
## Features
|
|
9
|
-
|
|
10
|
-
- 🎨 **Tailwind CSS 4 Preset** - Native `@theme inline` mappings bridging tokens to Tailwind utilities
|
|
11
|
-
- 🌓 **Modern OKLCH Color Tokens** - Clean, perceptual contrast in light and dark modes
|
|
12
|
-
- 🚀 **Zero-Config Theming** - Drop-in theme presets for applications (FinAI, OrchestrAI)
|
|
13
|
-
- 🎯 **Pure CSS** - Zero runtime overhead and zero JS dependencies
|
|
3
|
+
Design tokens, color themes, and Tailwind CSS 4 preset bridge for the Yuva DevLab ecosystem.
|
|
14
4
|
|
|
15
5
|
## Installation
|
|
16
6
|
|
|
17
7
|
```bash
|
|
18
|
-
# npm
|
|
19
|
-
npm install @yuva-devlab/tokens
|
|
20
|
-
|
|
21
|
-
# yarn
|
|
22
|
-
yarn add @yuva-devlab/tokens
|
|
23
|
-
|
|
24
|
-
# pnpm
|
|
25
8
|
pnpm add @yuva-devlab/tokens
|
|
26
9
|
```
|
|
27
10
|
|
|
28
|
-
## Usage
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Tailwind CSS 4 Preset
|
|
29
14
|
|
|
30
|
-
In your
|
|
15
|
+
In your root stylesheet:
|
|
31
16
|
|
|
32
17
|
```css
|
|
33
18
|
@import "tailwindcss";
|
|
34
19
|
@import "@yuva-devlab/tokens/preset.css";
|
|
35
|
-
|
|
36
|
-
/* Include your target app theme */
|
|
37
|
-
@import "@yuva-devlab/tokens/themes/finai.css";
|
|
38
|
-
/* or @import "@yuva-devlab/tokens/themes/orchestrai.css"; */
|
|
20
|
+
@import "@yuva-devlab/tokens/themes/orchestrai.css";
|
|
39
21
|
```
|
|
40
|
-
|
|
41
|
-
## Available Themes
|
|
42
|
-
|
|
43
|
-
- `@yuva-devlab/tokens/themes/finai.css`: Emerald & forest-green palette optimized for financial clarity and trust.
|
|
44
|
-
- `@yuva-devlab/tokens/themes/orchestrai.css`: Modern high-contrast tech palette for orchestration dashboards.
|
|
45
|
-
|
|
46
|
-
## License
|
|
47
|
-
|
|
48
|
-
MIT © Yuva Devlab
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/index.ts
|
|
4
|
+
var THEMES = ["orchestrai", "finai"];
|
|
5
|
+
var BRAND_MODES = ["light", "dark"];
|
|
6
|
+
var THEME_CONFIGS = {
|
|
7
|
+
orchestrai: {
|
|
8
|
+
name: "orchestrai",
|
|
9
|
+
defaultMode: "dark",
|
|
10
|
+
label: "OrchestrAI"
|
|
11
|
+
},
|
|
12
|
+
finai: {
|
|
13
|
+
name: "finai",
|
|
14
|
+
defaultMode: "dark",
|
|
15
|
+
label: "FinAI"
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.BRAND_MODES = BRAND_MODES;
|
|
20
|
+
exports.THEMES = THEMES;
|
|
21
|
+
exports.THEME_CONFIGS = THEME_CONFIGS;
|
|
22
|
+
//# sourceMappingURL=index.cjs.map
|
|
23
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,MAAA,GAAS,CAAC,YAAA,EAAc,OAAO;AAGrC,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;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 = [\"orchestrai\", \"finai\"] 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} as const;\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/index.ts
|
|
3
|
+
* @description Yuva DevLab Design System — Design Tokens & Theme Definitions.
|
|
4
|
+
*/
|
|
5
|
+
declare const THEMES: readonly ["orchestrai", "finai"];
|
|
6
|
+
type ThemeName = (typeof THEMES)[number];
|
|
7
|
+
declare const BRAND_MODES: readonly ["light", "dark"];
|
|
8
|
+
type BrandMode = (typeof BRAND_MODES)[number];
|
|
9
|
+
interface ThemeConfig {
|
|
10
|
+
readonly name: ThemeName;
|
|
11
|
+
readonly defaultMode: BrandMode;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
}
|
|
14
|
+
declare const THEME_CONFIGS: Record<ThemeName, ThemeConfig>;
|
|
15
|
+
|
|
16
|
+
export { BRAND_MODES, type BrandMode, THEMES, THEME_CONFIGS, type ThemeConfig, type ThemeName };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/index.ts
|
|
3
|
+
* @description Yuva DevLab Design System — Design Tokens & Theme Definitions.
|
|
4
|
+
*/
|
|
5
|
+
declare const THEMES: readonly ["orchestrai", "finai"];
|
|
6
|
+
type ThemeName = (typeof THEMES)[number];
|
|
7
|
+
declare const BRAND_MODES: readonly ["light", "dark"];
|
|
8
|
+
type BrandMode = (typeof BRAND_MODES)[number];
|
|
9
|
+
interface ThemeConfig {
|
|
10
|
+
readonly name: ThemeName;
|
|
11
|
+
readonly defaultMode: BrandMode;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
}
|
|
14
|
+
declare const THEME_CONFIGS: Record<ThemeName, ThemeConfig>;
|
|
15
|
+
|
|
16
|
+
export { BRAND_MODES, type BrandMode, THEMES, THEME_CONFIGS, type ThemeConfig, type ThemeName };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
var THEMES = ["orchestrai", "finai"];
|
|
3
|
+
var BRAND_MODES = ["light", "dark"];
|
|
4
|
+
var THEME_CONFIGS = {
|
|
5
|
+
orchestrai: {
|
|
6
|
+
name: "orchestrai",
|
|
7
|
+
defaultMode: "dark",
|
|
8
|
+
label: "OrchestrAI"
|
|
9
|
+
},
|
|
10
|
+
finai: {
|
|
11
|
+
name: "finai",
|
|
12
|
+
defaultMode: "dark",
|
|
13
|
+
label: "FinAI"
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { BRAND_MODES, THEMES, THEME_CONFIGS };
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAKO,IAAM,MAAA,GAAS,CAAC,YAAA,EAAc,OAAO;AAGrC,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;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 = [\"orchestrai\", \"finai\"] 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} as const;\n"]}
|
package/{src → dist}/preset.css
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Yuva DevLab Design System — Tailwind CSS 4 Preset Bridge
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Maps standard design tokens and CSS custom properties to Tailwind utility classes.
|
|
5
|
-
* Can be consumed by
|
|
6
|
-
* `@import "@yuva-devlab/
|
|
5
|
+
* Can be consumed by downstream applications via:
|
|
6
|
+
* `@import "@yuva-devlab/ui/preset.css";`
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
@theme inline {
|
|
10
|
-
/* ── Radii Mappings
|
|
10
|
+
/* ── Radii Mappings ─────────────────────────────────────────────── */
|
|
11
11
|
--radius-sm: calc(var(--radius, 0.5rem) - 4px);
|
|
12
12
|
--radius-md: calc(var(--radius, 0.5rem) - 2px);
|
|
13
13
|
--radius-lg: var(--radius, 0.5rem);
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
--radius-3xl: calc(var(--radius, 0.5rem) + 12px);
|
|
17
17
|
--radius-4xl: calc(var(--radius, 0.5rem) + 16px);
|
|
18
18
|
|
|
19
|
-
/* ── Semantic Color Tokens
|
|
19
|
+
/* ── Semantic Color Tokens ─────────────────────────────────────── */
|
|
20
20
|
--color-background: var(--background);
|
|
21
21
|
--color-foreground: var(--foreground);
|
|
22
22
|
--color-card: var(--card);
|
|
@@ -37,12 +37,20 @@
|
|
|
37
37
|
--color-input: var(--input);
|
|
38
38
|
--color-ring: var(--ring);
|
|
39
39
|
|
|
40
|
-
/* ── Contextual System Colors
|
|
40
|
+
/* ── Contextual System Colors ──────────────────────────────────── */
|
|
41
|
+
--color-success: var(--success);
|
|
42
|
+
--color-success-foreground: var(--success-foreground);
|
|
41
43
|
--color-warning: var(--warning);
|
|
42
44
|
--color-warning-foreground: var(--warning-foreground);
|
|
45
|
+
--color-info: var(--info);
|
|
46
|
+
--color-info-foreground: var(--info-foreground);
|
|
43
47
|
--color-overlay: var(--overlay);
|
|
44
48
|
|
|
45
|
-
/* ──
|
|
49
|
+
/* ── Glass / Surface Tokens ───────────────────────────────────── */
|
|
50
|
+
--color-surface: var(--surface);
|
|
51
|
+
--color-surface-2: var(--surface-2);
|
|
52
|
+
|
|
53
|
+
/* ── Navigation & Sidebar ──────────────────────────────────────── */
|
|
46
54
|
--color-sidebar: var(--sidebar);
|
|
47
55
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
48
56
|
--color-sidebar-primary: var(--sidebar-primary);
|
|
@@ -52,21 +60,21 @@
|
|
|
52
60
|
--color-sidebar-border: var(--sidebar-border);
|
|
53
61
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
54
62
|
|
|
55
|
-
/* ── Visual Data Telemetry (Charts)
|
|
63
|
+
/* ── Visual Data Telemetry (Charts) ──────────────────────────────── */
|
|
56
64
|
--color-chart-1: var(--chart-1);
|
|
57
65
|
--color-chart-2: var(--chart-2);
|
|
58
66
|
--color-chart-3: var(--chart-3);
|
|
59
67
|
--color-chart-4: var(--chart-4);
|
|
60
68
|
--color-chart-5: var(--chart-5);
|
|
61
69
|
|
|
62
|
-
/* ── Component Control Dimensions
|
|
70
|
+
/* ── Component Control Dimensions ─────────────────────────────────── */
|
|
63
71
|
--height-control-xs: var(--control-height-xs, 1.75rem);
|
|
64
72
|
--height-control-sm: var(--control-height-sm, 2rem);
|
|
65
73
|
--height-control-md: var(--control-height-md, 2.25rem);
|
|
66
74
|
--height-control-lg: var(--control-height-lg, 2.5rem);
|
|
67
75
|
--height-control-xl: var(--control-height-xl, 3rem);
|
|
68
76
|
|
|
69
|
-
/* ── Icon Sizing Tokens
|
|
77
|
+
/* ── Icon Sizing Tokens ───────────────────────────────────────────── */
|
|
70
78
|
--size-icon-xs: var(--icon-xs, 0.875rem);
|
|
71
79
|
--size-icon-sm: var(--icon-sm, 1rem);
|
|
72
80
|
--size-icon-md: var(--icon-md, 1.25rem);
|
|
@@ -74,7 +82,7 @@
|
|
|
74
82
|
--size-icon-xl: var(--icon-xl, 2rem);
|
|
75
83
|
}
|
|
76
84
|
|
|
77
|
-
/* ── Cybernetic Grid & Graph Topologies
|
|
85
|
+
/* ── Cybernetic Grid & Graph Topologies ──────────────────────────────────── */
|
|
78
86
|
@utility execution-grid {
|
|
79
87
|
background-image:
|
|
80
88
|
linear-gradient(var(--border) 1px, transparent 1px),
|
|
@@ -99,7 +107,41 @@
|
|
|
99
107
|
);
|
|
100
108
|
}
|
|
101
109
|
|
|
102
|
-
/* ──
|
|
110
|
+
/* ── Glass Morphism Utility ────────────────────────────────────────────── */
|
|
111
|
+
@utility glass {
|
|
112
|
+
background-color: var(--surface);
|
|
113
|
+
backdrop-filter: blur(16px) saturate(140%);
|
|
114
|
+
-webkit-backdrop-filter: blur(16px) saturate(140%);
|
|
115
|
+
border: 1px solid var(--border);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ── Mesh Background Gradient ─────────────────────────────────────────── */
|
|
119
|
+
@utility mesh-bg {
|
|
120
|
+
background-image:
|
|
121
|
+
radial-gradient(
|
|
122
|
+
60rem 30rem at 12% -10%,
|
|
123
|
+
color-mix(in oklch, var(--primary) 16%, transparent),
|
|
124
|
+
transparent 70%
|
|
125
|
+
),
|
|
126
|
+
radial-gradient(
|
|
127
|
+
50rem 26rem at 95% 0%,
|
|
128
|
+
color-mix(in oklch, var(--info) 14%, transparent),
|
|
129
|
+
transparent 70%
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* ── Text Gradient Utility ─────────────────────────────────────────────── */
|
|
134
|
+
@utility text-gradient {
|
|
135
|
+
background-image: linear-gradient(
|
|
136
|
+
100deg,
|
|
137
|
+
var(--foreground) 10%,
|
|
138
|
+
color-mix(in oklch, var(--primary) 85%, var(--foreground)) 60%
|
|
139
|
+
);
|
|
140
|
+
background-clip: text;
|
|
141
|
+
color: transparent;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* ── Live Agent Telemetry Animations ─────────────────────────────────────── */
|
|
103
145
|
@utility animate-agent-pulse {
|
|
104
146
|
animation: agent-pulse 1.8s ease-in-out infinite;
|
|
105
147
|
}
|
|
@@ -116,6 +158,20 @@
|
|
|
116
158
|
animation: runner-enter 260ms ease-out both;
|
|
117
159
|
}
|
|
118
160
|
|
|
161
|
+
/* ── Pulse Ring Animation (status indicator) ───────────────────────────── */
|
|
162
|
+
@utility pulse-dot {
|
|
163
|
+
animation: pulse-ring 1.8s ease-out infinite;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@keyframes pulse-ring {
|
|
167
|
+
0% {
|
|
168
|
+
box-shadow: 0 0 0 0 color-mix(in oklch, var(--primary) 45%, transparent);
|
|
169
|
+
}
|
|
170
|
+
100% {
|
|
171
|
+
box-shadow: 0 0 0 8px transparent;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
119
175
|
@keyframes agent-pulse {
|
|
120
176
|
0%,
|
|
121
177
|
100% {
|
|
@@ -157,3 +213,42 @@
|
|
|
157
213
|
transform: translateY(0);
|
|
158
214
|
}
|
|
159
215
|
}
|
|
216
|
+
|
|
217
|
+
/* ── Sonner Toast Semantic Feedback Styles ────────────────────────────────── */
|
|
218
|
+
[data-sonner-toaster] [data-sonner-toast] {
|
|
219
|
+
border-radius: var(--radius-md, 0.375rem);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="success"] {
|
|
223
|
+
border-color: color-mix(in oklch, var(--success) 35%, transparent);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="success"] [data-icon] {
|
|
227
|
+
color: var(--success);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="error"],
|
|
231
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="destructive"] {
|
|
232
|
+
border-color: color-mix(in oklch, var(--destructive) 35%, transparent);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="error"] [data-icon],
|
|
236
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="destructive"] [data-icon] {
|
|
237
|
+
color: var(--destructive);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="warning"] {
|
|
241
|
+
border-color: color-mix(in oklch, var(--warning) 35%, transparent);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="warning"] [data-icon] {
|
|
245
|
+
color: var(--warning);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="info"] {
|
|
249
|
+
border-color: color-mix(in oklch, var(--info) 35%, transparent);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
[data-sonner-toaster] [data-sonner-toast][data-type="info"] [data-icon] {
|
|
253
|
+
color: var(--info);
|
|
254
|
+
}
|
package/dist/root.css
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/styles/root.css
|
|
3
|
+
* @description Baseline normalizations, CSS variables, and interactive element resets.
|
|
4
|
+
* Pure CSS — zero Tailwind dependency.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@layer dl-base {
|
|
8
|
+
/* ── Interactive Cursors ───────────────────────────────────────────── */
|
|
9
|
+
button,
|
|
10
|
+
a,
|
|
11
|
+
select,
|
|
12
|
+
summary,
|
|
13
|
+
[role="button"],
|
|
14
|
+
[role="tab"],
|
|
15
|
+
[type="button"],
|
|
16
|
+
[type="submit"],
|
|
17
|
+
[type="reset"] {
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
button:disabled,
|
|
22
|
+
a[aria-disabled="true"],
|
|
23
|
+
[aria-disabled="true"],
|
|
24
|
+
[type="button"]:disabled,
|
|
25
|
+
[type="submit"]:disabled {
|
|
26
|
+
cursor: not-allowed;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* ── Interactive Focus Normalization ───────────────────────────────── */
|
|
30
|
+
:focus:not(:focus-visible) {
|
|
31
|
+
outline: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* ── Text Selection ────────────────────────────────────────────────── */
|
|
35
|
+
::selection {
|
|
36
|
+
background: color-mix(in oklab, var(--primary) 28%, transparent);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* ── Scrollbars ────────────────────────────────────────────────────── */
|
|
40
|
+
* {
|
|
41
|
+
scrollbar-width: thin;
|
|
42
|
+
scrollbar-color: var(--border) transparent;
|
|
43
|
+
}
|
|
44
|
+
::-webkit-scrollbar {
|
|
45
|
+
width: 6px;
|
|
46
|
+
height: 6px;
|
|
47
|
+
}
|
|
48
|
+
::-webkit-scrollbar-track {
|
|
49
|
+
background: transparent;
|
|
50
|
+
}
|
|
51
|
+
::-webkit-scrollbar-thumb {
|
|
52
|
+
background: var(--border);
|
|
53
|
+
border-radius: 9999px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* ── Form Typography Inheritance ───────────────────────────────────── */
|
|
57
|
+
button,
|
|
58
|
+
input,
|
|
59
|
+
select,
|
|
60
|
+
textarea {
|
|
61
|
+
letter-spacing: 0;
|
|
62
|
+
font-family: inherit;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* Radix Select — Item relative positioning anchor.
|
|
67
|
+
* Ensures stacking context for the indicator (absolute right-2).
|
|
68
|
+
*/
|
|
69
|
+
[role="option"] {
|
|
70
|
+
position: relative;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/*
|
|
74
|
+
* Breadcrumb Separator SVG Sizing
|
|
75
|
+
*/
|
|
76
|
+
[data-slot="breadcrumb-separator"] svg {
|
|
77
|
+
width: 0.875rem;
|
|
78
|
+
height: 0.875rem;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ── Reduced Motion ────────────────────────────────────────────────── */
|
|
82
|
+
@media (prefers-reduced-motion: reduce) {
|
|
83
|
+
*,
|
|
84
|
+
*::before,
|
|
85
|
+
*::after {
|
|
86
|
+
animation-duration: 0.01ms !important;
|
|
87
|
+
animation-iteration-count: 1 !important;
|
|
88
|
+
scroll-behavior: auto !important;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/styles/styles.css
|
|
3
|
+
* @description Master stylesheet for @yuva-devlab/tokens.
|
|
4
|
+
* Contains base CSS custom properties, theme definitions, and design tokens.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── Base Normalization & Design Tokens ──────────────────────────────────── */
|
|
8
|
+
@import "./root.css";
|
|
9
|
+
|
|
10
|
+
/* ── Brand Scoped Themes ─────────────────────────────────────────────────── */
|
|
11
|
+
@import "./themes/finai.css";
|
|
12
|
+
@import "./themes/orchestrai.css";
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
:root,
|
|
7
|
+
[data-brand="finai"],
|
|
7
8
|
[data-theme="finai"] {
|
|
8
9
|
--radius: 0.75rem;
|
|
9
10
|
--background: oklch(0.985 0.001 247);
|
|
@@ -72,7 +73,10 @@
|
|
|
72
73
|
}
|
|
73
74
|
|
|
74
75
|
.dark,
|
|
75
|
-
[data-theme="
|
|
76
|
+
[data-theme="dark"],
|
|
77
|
+
[data-theme="finai-dark"],
|
|
78
|
+
[data-brand="finai"].dark,
|
|
79
|
+
[data-brand="finai"][data-theme="dark"] {
|
|
76
80
|
--background: oklch(0.16 0.015 260);
|
|
77
81
|
--foreground: oklch(0.97 0.003 260);
|
|
78
82
|
--card: oklch(0.2 0.015 260);
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OrchestrAI Theme — Lovable UI Blue/Teal Palette
|
|
3
|
+
*
|
|
4
|
+
* Derived from orchestrai-src/src/styles.css (the official Lovable-sourced design).
|
|
5
|
+
* Uses OKLCH color space with both light and dark mode support.
|
|
6
|
+
* Hue axis: ~195–250 (blue-teal spectrum), primary at hue 205 (light) / 195 (dark).
|
|
7
|
+
* Fonts are intentionally NOT set here; they are managed by the consuming app
|
|
8
|
+
* (Manrope / Sora / JetBrains Mono for the robotic-technical feel).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/* ── Light Mode ────────────────────────────────────────────────────────── */
|
|
12
|
+
:root,
|
|
13
|
+
[data-brand="orchestrai"],
|
|
14
|
+
[data-theme="orchestrai"] {
|
|
15
|
+
--radius: 0.75rem;
|
|
16
|
+
|
|
17
|
+
/* Surfaces */
|
|
18
|
+
--background: oklch(0.985 0.004 210);
|
|
19
|
+
--foreground: oklch(0.21 0.02 245);
|
|
20
|
+
--card: oklch(1 0 0);
|
|
21
|
+
--card-foreground: oklch(0.21 0.02 245);
|
|
22
|
+
--popover: oklch(1 0 0);
|
|
23
|
+
--popover-foreground: oklch(0.21 0.02 245);
|
|
24
|
+
|
|
25
|
+
/* Brand */
|
|
26
|
+
--primary: oklch(0.58 0.126 205);
|
|
27
|
+
--primary-foreground: oklch(0.99 0.005 200);
|
|
28
|
+
--secondary: oklch(0.955 0.008 220);
|
|
29
|
+
--secondary-foreground: oklch(0.28 0.02 245);
|
|
30
|
+
|
|
31
|
+
/* Muted / Accent */
|
|
32
|
+
--muted: oklch(0.955 0.008 220);
|
|
33
|
+
--muted-foreground: oklch(0.52 0.02 245);
|
|
34
|
+
--accent: oklch(0.93 0.035 200);
|
|
35
|
+
--accent-foreground: oklch(0.28 0.04 220);
|
|
36
|
+
|
|
37
|
+
/* Status (Feedback tokens: success #47c58c, destructive #f3625d, warning #f0b648, info #6fa7ee) */
|
|
38
|
+
--destructive: oklch(68% 0.18 25);
|
|
39
|
+
--destructive-foreground: oklch(0.99 0.005 200);
|
|
40
|
+
--success: oklch(74% 0.14 160);
|
|
41
|
+
--success-foreground: oklch(0.18 0.02 240);
|
|
42
|
+
--warning: oklch(81% 0.14 80);
|
|
43
|
+
--warning-foreground: oklch(0.2 0.03 80);
|
|
44
|
+
--info: oklch(72% 0.12 255);
|
|
45
|
+
--info-foreground: oklch(0.18 0.02 240);
|
|
46
|
+
|
|
47
|
+
/* Form / Ring */
|
|
48
|
+
--border: oklch(0.9 0.01 230);
|
|
49
|
+
--input: oklch(0.9 0.01 230);
|
|
50
|
+
--ring: oklch(0.58 0.126 205);
|
|
51
|
+
|
|
52
|
+
/* Glass surfaces */
|
|
53
|
+
--surface: oklch(1 0 0 / 70%);
|
|
54
|
+
--surface-2: oklch(0.975 0.006 220);
|
|
55
|
+
--overlay: oklch(0.985 0.004 210 / 80%);
|
|
56
|
+
|
|
57
|
+
/* Charts */
|
|
58
|
+
--chart-1: oklch(0.58 0.126 205);
|
|
59
|
+
--chart-2: oklch(0.62 0.13 158);
|
|
60
|
+
--chart-3: oklch(0.6 0.12 250);
|
|
61
|
+
--chart-4: oklch(0.75 0.14 75);
|
|
62
|
+
--chart-5: oklch(0.6 0.16 15);
|
|
63
|
+
|
|
64
|
+
/* Sidebar */
|
|
65
|
+
--sidebar: oklch(0.99 0.004 220);
|
|
66
|
+
--sidebar-foreground: oklch(0.21 0.02 245);
|
|
67
|
+
--sidebar-primary: oklch(0.58 0.126 205);
|
|
68
|
+
--sidebar-primary-foreground: oklch(0.99 0.005 200);
|
|
69
|
+
--sidebar-accent: oklch(0.95 0.012 220);
|
|
70
|
+
--sidebar-accent-foreground: oklch(0.24 0.02 245);
|
|
71
|
+
--sidebar-border: oklch(0.9 0.01 230);
|
|
72
|
+
--sidebar-ring: oklch(0.58 0.126 205);
|
|
73
|
+
|
|
74
|
+
/* ── Sizing, Spacing & Layout Tokens ────────────────────────────── */
|
|
75
|
+
--control-height-xs: 1.75rem;
|
|
76
|
+
--control-height-sm: 2rem;
|
|
77
|
+
--control-height-md: 2.25rem;
|
|
78
|
+
--control-height-lg: 2.5rem;
|
|
79
|
+
--control-height-xl: 3rem;
|
|
80
|
+
|
|
81
|
+
--icon-xs: 0.875rem;
|
|
82
|
+
--icon-sm: 1rem;
|
|
83
|
+
--icon-md: 1.25rem;
|
|
84
|
+
--icon-lg: 1.5rem;
|
|
85
|
+
--icon-xl: 2rem;
|
|
86
|
+
|
|
87
|
+
--space-1: 0.25rem;
|
|
88
|
+
--space-2: 0.5rem;
|
|
89
|
+
--space-3: 0.75rem;
|
|
90
|
+
--space-4: 1rem;
|
|
91
|
+
--space-5: 1.25rem;
|
|
92
|
+
--space-6: 1.5rem;
|
|
93
|
+
--space-8: 2rem;
|
|
94
|
+
--space-10: 2.5rem;
|
|
95
|
+
|
|
96
|
+
--card-padding: var(--space-4);
|
|
97
|
+
--dialog-padding: var(--space-5);
|
|
98
|
+
--form-field-gap: var(--space-3);
|
|
99
|
+
--section-gap: var(--space-5);
|
|
100
|
+
--table-row-padding-x: var(--space-4);
|
|
101
|
+
--table-row-padding-y: var(--space-3);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* ── Dark Mode ────────────────────────────────────────────────────────── */
|
|
105
|
+
.dark,
|
|
106
|
+
[data-theme="dark"],
|
|
107
|
+
[data-brand="orchestrai"].dark,
|
|
108
|
+
[data-brand="orchestrai"][data-theme="dark"],
|
|
109
|
+
[data-theme="orchestrai-dark"] {
|
|
110
|
+
--radius: 0.75rem;
|
|
111
|
+
|
|
112
|
+
/* Surfaces */
|
|
113
|
+
--background: oklch(0.175 0.015 250);
|
|
114
|
+
--foreground: oklch(0.955 0.006 230);
|
|
115
|
+
--card: oklch(0.215 0.017 250);
|
|
116
|
+
--card-foreground: oklch(0.955 0.006 230);
|
|
117
|
+
--popover: oklch(0.22 0.018 250);
|
|
118
|
+
--popover-foreground: oklch(0.955 0.006 230);
|
|
119
|
+
|
|
120
|
+
/* Brand */
|
|
121
|
+
--primary: oklch(0.76 0.115 195);
|
|
122
|
+
--primary-foreground: oklch(0.19 0.02 240);
|
|
123
|
+
--secondary: oklch(0.27 0.02 250);
|
|
124
|
+
--secondary-foreground: oklch(0.945 0.006 230);
|
|
125
|
+
|
|
126
|
+
/* Muted / Accent */
|
|
127
|
+
--muted: oklch(0.27 0.02 250);
|
|
128
|
+
--muted-foreground: oklch(0.71 0.02 240);
|
|
129
|
+
--accent: oklch(0.31 0.035 210);
|
|
130
|
+
--accent-foreground: oklch(0.95 0.01 210);
|
|
131
|
+
|
|
132
|
+
/* Status (Feedback tokens: success #47c58c, destructive #f3625d, warning #f0b648, info #6fa7ee) */
|
|
133
|
+
--destructive: oklch(68% 0.18 25);
|
|
134
|
+
--destructive-foreground: oklch(0.18 0.02 240);
|
|
135
|
+
--success: oklch(74% 0.14 160);
|
|
136
|
+
--success-foreground: oklch(0.18 0.02 240);
|
|
137
|
+
--warning: oklch(81% 0.14 80);
|
|
138
|
+
--warning-foreground: oklch(0.2 0.03 80);
|
|
139
|
+
--info: oklch(72% 0.12 255);
|
|
140
|
+
--info-foreground: oklch(0.18 0.02 240);
|
|
141
|
+
|
|
142
|
+
/* Form / Ring */
|
|
143
|
+
--border: oklch(1 0 0 / 11%);
|
|
144
|
+
--input: oklch(1 0 0 / 16%);
|
|
145
|
+
--ring: oklch(0.76 0.115 195);
|
|
146
|
+
|
|
147
|
+
/* Glass surfaces */
|
|
148
|
+
--surface: oklch(0.24 0.018 250 / 70%);
|
|
149
|
+
--surface-2: oklch(0.235 0.018 250);
|
|
150
|
+
--overlay: oklch(0.11 0.008 250 / 80%);
|
|
151
|
+
|
|
152
|
+
/* Charts */
|
|
153
|
+
--chart-1: oklch(0.76 0.115 195);
|
|
154
|
+
--chart-2: oklch(0.74 0.14 160);
|
|
155
|
+
--chart-3: oklch(0.72 0.12 255);
|
|
156
|
+
--chart-4: oklch(0.81 0.14 80);
|
|
157
|
+
--chart-5: oklch(0.7 0.16 15);
|
|
158
|
+
|
|
159
|
+
/* Sidebar */
|
|
160
|
+
--sidebar: oklch(0.195 0.016 250);
|
|
161
|
+
--sidebar-foreground: oklch(0.955 0.006 230);
|
|
162
|
+
--sidebar-primary: oklch(0.76 0.115 195);
|
|
163
|
+
--sidebar-primary-foreground: oklch(0.19 0.02 240);
|
|
164
|
+
--sidebar-accent: oklch(0.28 0.022 250);
|
|
165
|
+
--sidebar-accent-foreground: oklch(0.95 0.006 230);
|
|
166
|
+
--sidebar-border: oklch(1 0 0 / 11%);
|
|
167
|
+
--sidebar-ring: oklch(0.76 0.115 195);
|
|
168
|
+
|
|
169
|
+
/* ── Sizing, Spacing & Layout Tokens ────────────────────────────── */
|
|
170
|
+
--control-height-xs: 1.75rem;
|
|
171
|
+
--control-height-sm: 2rem;
|
|
172
|
+
--control-height-md: 2.25rem;
|
|
173
|
+
--control-height-lg: 2.5rem;
|
|
174
|
+
--control-height-xl: 3rem;
|
|
175
|
+
|
|
176
|
+
--icon-xs: 0.875rem;
|
|
177
|
+
--icon-sm: 1rem;
|
|
178
|
+
--icon-md: 1.25rem;
|
|
179
|
+
--icon-lg: 1.5rem;
|
|
180
|
+
--icon-xl: 2rem;
|
|
181
|
+
|
|
182
|
+
--space-1: 0.25rem;
|
|
183
|
+
--space-2: 0.5rem;
|
|
184
|
+
--space-3: 0.75rem;
|
|
185
|
+
--space-4: 1rem;
|
|
186
|
+
--space-5: 1.25rem;
|
|
187
|
+
--space-6: 1.5rem;
|
|
188
|
+
--space-8: 2rem;
|
|
189
|
+
--space-10: 2.5rem;
|
|
190
|
+
|
|
191
|
+
--card-padding: var(--space-4);
|
|
192
|
+
--dialog-padding: var(--space-5);
|
|
193
|
+
--form-field-gap: var(--space-3);
|
|
194
|
+
--section-gap: var(--space-5);
|
|
195
|
+
--table-row-padding-x: var(--space-4);
|
|
196
|
+
--table-row-padding-y: var(--space-3);
|
|
197
|
+
}
|