@yuva-devlab/tokens 1.2.0 → 1.3.1

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 CHANGED
@@ -1,21 +1,114 @@
1
- # @yuva-devlab/tokens
1
+ # 🎨 @yuva-devlab/tokens
2
2
 
3
- Design tokens, color themes, and Tailwind CSS 4 preset bridge for the Yuva DevLab ecosystem.
3
+ [![npm version](https://img.shields.io/npm/v/@yuva-devlab/tokens.svg)](https://www.npmjs.com/package/@yuva-devlab/tokens)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
+ [![Tailwind CSS 4](https://img.shields.io/badge/Tailwind%20CSS-v4.x-38bdf8.svg)](https://tailwindcss.com)
6
+
7
+ > Core design token engine, OKLCH color palettes, typography scales, responsive density profiles, and Tailwind CSS 4 preset bridge for the DevLab ecosystem.
8
+
9
+ ---
10
+
11
+ ## Features
12
+
13
+ - 🌈 **Modern OKLCH Color Space** - Perceptually uniform, wide-gamut color scales optimized for high-dynamic displays.
14
+ - ⚡ **Zero-Runtime CSS Variables** - Pure CSS custom properties with zero JavaScript runtime overhead.
15
+ - 🏷️ **Multi-Brand Theme Architecture** - Scoped brand theming for OrchestrAI, VitalAI, FinAI, Logs, and Portal.
16
+ - 📐 **Density & Geometry Controls** - Brand-aware control heights, padding tokens, border radii, and typography scaling.
17
+ - 🌉 **Tailwind CSS 4 Bridge** - Native `@theme` declarations providing seamless utility class integration.
18
+ - 📦 **Typed Metadata Exports** - Full TypeScript contracts for programmatic brand discovery and switching.
19
+
20
+ ---
4
21
 
5
22
  ## Installation
6
23
 
7
24
  ```bash
25
+ # pnpm (recommended)
8
26
  pnpm add @yuva-devlab/tokens
27
+
28
+ # npm
29
+ npm install @yuva-devlab/tokens
30
+
31
+ # yarn
32
+ yarn add @yuva-devlab/tokens
9
33
  ```
10
34
 
35
+ ---
36
+
11
37
  ## Usage
12
38
 
13
- ### Tailwind CSS 4 Preset
39
+ ### 1. Tailwind CSS 4 Integration
14
40
 
15
- In your root stylesheet:
41
+ Import the preset and your chosen brand theme in your root CSS file (e.g. `globals.css` or `app.css`):
16
42
 
17
43
  ```css
18
44
  @import "tailwindcss";
19
45
  @import "@yuva-devlab/tokens/preset.css";
20
46
  @import "@yuva-devlab/tokens/themes/orchestrai.css";
21
47
  ```
48
+
49
+ ### 2. Available Brand Themes
50
+
51
+ Import any brand theme stylesheet from `@yuva-devlab/tokens/themes/*`:
52
+
53
+ | Brand Theme | Import Path | Signature Aesthetic |
54
+ | :---------------- | :------------------------------------------ | :------------------------------------------------ |
55
+ | **OrchestrAI** | `@yuva-devlab/tokens/themes/orchestrai.css` | Midnight Neon Violet (`oklch(0.65 0.24 285)`) |
56
+ | **VitalAI** | `@yuva-devlab/tokens/themes/vitalai.css` | Athletic Volt Kinetic (`oklch(0.93 0.23 125)`) |
57
+ | **FinAI** | `@yuva-devlab/tokens/themes/finai.css` | High-Finance Emerald (`oklch(0.68 0.2 155)`) |
58
+ | **DevLab Logs** | `@yuva-devlab/tokens/themes/logs.css` | High-Density Matrix Amber (`oklch(0.78 0.18 75)`) |
59
+ | **DevLab Portal** | `@yuva-devlab/tokens/themes/portal.css` | Enterprise Modern Indigo (`oklch(0.62 0.22 260)`) |
60
+
61
+ ---
62
+
63
+ ## Dynamic Brand Switching
64
+
65
+ Themes are scoped using `data-brand` and `data-theme` HTML attributes:
66
+
67
+ ```html
68
+ <!-- VitalAI in Dark Mode -->
69
+ <html data-brand="vitalai" class="dark">
70
+ <body>
71
+ ...
72
+ </body>
73
+ </html>
74
+ ```
75
+
76
+ ---
77
+
78
+ ## TypeScript Brand Metadata
79
+
80
+ For programmatic brand switching, `@yuva-devlab/tokens` exports brand constants and density metadata:
81
+
82
+ ```typescript
83
+ import { BRAND_THEMES, BRAND_PROFILES } from "@yuva-devlab/tokens";
84
+
85
+ console.log(BRAND_THEMES);
86
+ // ["orchestrai", "vitalai", "finai", "logs", "portal"]
87
+
88
+ console.log(BRAND_PROFILES.vitalai);
89
+ // {
90
+ // name: "VitalAI",
91
+ // primary: "oklch(0.93 0.23 125)",
92
+ // fontFamily: "Barlow Condensed, Inter, sans-serif",
93
+ // density: "athletic"
94
+ // }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Token Specifications
100
+
101
+ Every theme defines a comprehensive set of semantic CSS custom properties:
102
+
103
+ - **Surfaces**: `--background`, `--foreground`, `--card`, `--popover`, `--surface`, `--surface-2`
104
+ - **Actions**: `--primary`, `--primary-foreground`, `--secondary`, `--accent`, `--muted`
105
+ - **Feedback**: `--destructive`, `--warning`, `--success`, `--info`
106
+ - **Geometry**: `--radius`, `--control-height-xs` to `--control-height-xl`
107
+ - **Spacing**: `--space-1` to `--space-10`
108
+ - **Glassmorphism**: `--glass`, `--glass-border`, `--shadow-glass`, `--glow`
109
+
110
+ ---
111
+
112
+ ## License
113
+
114
+ MIT © [Yuva DevLab](https://github.com/yuvadevlab)
package/dist/index.cjs CHANGED
@@ -1,28 +1,64 @@
1
1
  'use strict';
2
2
 
3
3
  // src/index.ts
4
- var THEMES = ["orchestrai", "finai", "portal", "logs"];
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: {
8
14
  name: "orchestrai",
9
15
  defaultMode: "dark",
10
- label: "OrchestrAI"
16
+ label: "OrchestrAI",
17
+ fontSans: '"Manrope", sans-serif',
18
+ fontDisplay: '"Sora", sans-serif',
19
+ fontMono: '"JetBrains Mono", monospace',
20
+ radius: "0.75rem",
21
+ density: "standard"
11
22
  },
12
23
  finai: {
13
24
  name: "finai",
14
25
  defaultMode: "dark",
15
- label: "FinAI"
26
+ label: "FinAI",
27
+ fontSans: '"Inter", sans-serif',
28
+ fontDisplay: '"Inter", sans-serif',
29
+ fontMono: '"JetBrains Mono", monospace',
30
+ radius: "0.75rem",
31
+ density: "spacious"
16
32
  },
17
33
  portal: {
18
34
  name: "portal",
19
35
  defaultMode: "dark",
20
- label: "DevLab Portal"
36
+ label: "DevLab Portal",
37
+ fontSans: '"Inter", sans-serif',
38
+ fontDisplay: '"Inter", sans-serif',
39
+ fontMono: '"JetBrains Mono", monospace',
40
+ radius: "0.5rem",
41
+ density: "standard"
21
42
  },
22
43
  logs: {
23
44
  name: "logs",
24
45
  defaultMode: "dark",
25
- label: "DevLab Logs"
46
+ label: "DevLab Logs",
47
+ fontSans: '"Space Grotesk", sans-serif',
48
+ fontDisplay: '"Space Grotesk", sans-serif',
49
+ fontMono: '"JetBrains Mono", monospace',
50
+ radius: "0.375rem",
51
+ density: "high"
52
+ },
53
+ vitalai: {
54
+ name: "vitalai",
55
+ defaultMode: "dark",
56
+ label: "VitalAI",
57
+ fontSans: '"Inter", sans-serif',
58
+ fontDisplay: '"Barlow Condensed", "Inter", sans-serif',
59
+ fontMono: '"JetBrains Mono", monospace',
60
+ radius: "1rem",
61
+ density: "spacious"
26
62
  }
27
63
  };
28
64
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AAKO,IAAM,MAAA,GAAS,CAAC,YAAA,EAAc,OAAA,EAAS,UAAU,MAAM;AAGvD,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;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\", \"portal\", \"logs\"] 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} as const;\n"]}
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;AAyBpC,IAAM,aAAA,GAAgD;AAAA,EAC3D,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,YAAA;AAAA,IACP,QAAA,EAAU,uBAAA;AAAA,IACV,WAAA,EAAa,oBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,OAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,qBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,eAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,qBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,aAAA;AAAA,IACP,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,6BAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,UAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,yCAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS;AAAA;AAEb","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\n/**\n * Brand Theme Configuration Object Interface.\n */\nexport interface ThemeConfig {\n /** Identifier of the theme */\n readonly name: ThemeName;\n /** Default mode (light/dark) */\n readonly defaultMode: BrandMode;\n /** Human-readable brand label */\n readonly label: string;\n /** Primary body font stack */\n readonly fontSans: string;\n /** Display/Heading font stack */\n readonly fontDisplay: string;\n /** Monospace code/terminal font stack */\n readonly fontMono: string;\n /** Corner radius token */\n readonly radius: string;\n /** Density profile of the brand */\n readonly density: \"high\" | \"standard\" | \"spacious\";\n}\n\nexport const THEME_CONFIGS: Record<ThemeName, ThemeConfig> = {\n orchestrai: {\n name: \"orchestrai\",\n defaultMode: \"dark\",\n label: \"OrchestrAI\",\n fontSans: '\"Manrope\", sans-serif',\n fontDisplay: '\"Sora\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.75rem\",\n density: \"standard\",\n },\n finai: {\n name: \"finai\",\n defaultMode: \"dark\",\n label: \"FinAI\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.75rem\",\n density: \"spacious\",\n },\n portal: {\n name: \"portal\",\n defaultMode: \"dark\",\n label: \"DevLab Portal\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.5rem\",\n density: \"standard\",\n },\n logs: {\n name: \"logs\",\n defaultMode: \"dark\",\n label: \"DevLab Logs\",\n fontSans: '\"Space Grotesk\", sans-serif',\n fontDisplay: '\"Space Grotesk\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.375rem\",\n density: \"high\",\n },\n vitalai: {\n name: \"vitalai\",\n defaultMode: \"dark\",\n label: \"VitalAI\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Barlow Condensed\", \"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"1rem\",\n density: \"spacious\",\n },\n} as const;\n"]}
package/dist/index.d.cts CHANGED
@@ -2,14 +2,30 @@
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", "portal", "logs"];
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];
9
+ /**
10
+ * Brand Theme Configuration Object Interface.
11
+ */
9
12
  interface ThemeConfig {
13
+ /** Identifier of the theme */
10
14
  readonly name: ThemeName;
15
+ /** Default mode (light/dark) */
11
16
  readonly defaultMode: BrandMode;
17
+ /** Human-readable brand label */
12
18
  readonly label: string;
19
+ /** Primary body font stack */
20
+ readonly fontSans: string;
21
+ /** Display/Heading font stack */
22
+ readonly fontDisplay: string;
23
+ /** Monospace code/terminal font stack */
24
+ readonly fontMono: string;
25
+ /** Corner radius token */
26
+ readonly radius: string;
27
+ /** Density profile of the brand */
28
+ readonly density: "high" | "standard" | "spacious";
13
29
  }
14
30
  declare const THEME_CONFIGS: Record<ThemeName, ThemeConfig>;
15
31
 
package/dist/index.d.ts CHANGED
@@ -2,14 +2,30 @@
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", "portal", "logs"];
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];
9
+ /**
10
+ * Brand Theme Configuration Object Interface.
11
+ */
9
12
  interface ThemeConfig {
13
+ /** Identifier of the theme */
10
14
  readonly name: ThemeName;
15
+ /** Default mode (light/dark) */
11
16
  readonly defaultMode: BrandMode;
17
+ /** Human-readable brand label */
12
18
  readonly label: string;
19
+ /** Primary body font stack */
20
+ readonly fontSans: string;
21
+ /** Display/Heading font stack */
22
+ readonly fontDisplay: string;
23
+ /** Monospace code/terminal font stack */
24
+ readonly fontMono: string;
25
+ /** Corner radius token */
26
+ readonly radius: string;
27
+ /** Density profile of the brand */
28
+ readonly density: "high" | "standard" | "spacious";
13
29
  }
14
30
  declare const THEME_CONFIGS: Record<ThemeName, ThemeConfig>;
15
31
 
package/dist/index.js CHANGED
@@ -1,26 +1,62 @@
1
1
  // src/index.ts
2
- var THEMES = ["orchestrai", "finai", "portal", "logs"];
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: {
6
12
  name: "orchestrai",
7
13
  defaultMode: "dark",
8
- label: "OrchestrAI"
14
+ label: "OrchestrAI",
15
+ fontSans: '"Manrope", sans-serif',
16
+ fontDisplay: '"Sora", sans-serif',
17
+ fontMono: '"JetBrains Mono", monospace',
18
+ radius: "0.75rem",
19
+ density: "standard"
9
20
  },
10
21
  finai: {
11
22
  name: "finai",
12
23
  defaultMode: "dark",
13
- label: "FinAI"
24
+ label: "FinAI",
25
+ fontSans: '"Inter", sans-serif',
26
+ fontDisplay: '"Inter", sans-serif',
27
+ fontMono: '"JetBrains Mono", monospace',
28
+ radius: "0.75rem",
29
+ density: "spacious"
14
30
  },
15
31
  portal: {
16
32
  name: "portal",
17
33
  defaultMode: "dark",
18
- label: "DevLab Portal"
34
+ label: "DevLab Portal",
35
+ fontSans: '"Inter", sans-serif',
36
+ fontDisplay: '"Inter", sans-serif',
37
+ fontMono: '"JetBrains Mono", monospace',
38
+ radius: "0.5rem",
39
+ density: "standard"
19
40
  },
20
41
  logs: {
21
42
  name: "logs",
22
43
  defaultMode: "dark",
23
- label: "DevLab Logs"
44
+ label: "DevLab Logs",
45
+ fontSans: '"Space Grotesk", sans-serif',
46
+ fontDisplay: '"Space Grotesk", sans-serif',
47
+ fontMono: '"JetBrains Mono", monospace',
48
+ radius: "0.375rem",
49
+ density: "high"
50
+ },
51
+ vitalai: {
52
+ name: "vitalai",
53
+ defaultMode: "dark",
54
+ label: "VitalAI",
55
+ fontSans: '"Inter", sans-serif',
56
+ fontDisplay: '"Barlow Condensed", "Inter", sans-serif',
57
+ fontMono: '"JetBrains Mono", monospace',
58
+ radius: "1rem",
59
+ density: "spacious"
24
60
  }
25
61
  };
26
62
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";AAKO,IAAM,MAAA,GAAS,CAAC,YAAA,EAAc,OAAA,EAAS,UAAU,MAAM;AAGvD,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;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\", \"portal\", \"logs\"] 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} as const;\n"]}
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;AAyBpC,IAAM,aAAA,GAAgD;AAAA,EAC3D,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,YAAA;AAAA,IACP,QAAA,EAAU,uBAAA;AAAA,IACV,WAAA,EAAa,oBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,OAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,qBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,eAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,qBAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,QAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,aAAA;AAAA,IACP,QAAA,EAAU,6BAAA;AAAA,IACV,WAAA,EAAa,6BAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,UAAA;AAAA,IACR,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,MAAA;AAAA,IACb,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,qBAAA;AAAA,IACV,WAAA,EAAa,yCAAA;AAAA,IACb,QAAA,EAAU,6BAAA;AAAA,IACV,MAAA,EAAQ,MAAA;AAAA,IACR,OAAA,EAAS;AAAA;AAEb","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\n/**\n * Brand Theme Configuration Object Interface.\n */\nexport interface ThemeConfig {\n /** Identifier of the theme */\n readonly name: ThemeName;\n /** Default mode (light/dark) */\n readonly defaultMode: BrandMode;\n /** Human-readable brand label */\n readonly label: string;\n /** Primary body font stack */\n readonly fontSans: string;\n /** Display/Heading font stack */\n readonly fontDisplay: string;\n /** Monospace code/terminal font stack */\n readonly fontMono: string;\n /** Corner radius token */\n readonly radius: string;\n /** Density profile of the brand */\n readonly density: \"high\" | \"standard\" | \"spacious\";\n}\n\nexport const THEME_CONFIGS: Record<ThemeName, ThemeConfig> = {\n orchestrai: {\n name: \"orchestrai\",\n defaultMode: \"dark\",\n label: \"OrchestrAI\",\n fontSans: '\"Manrope\", sans-serif',\n fontDisplay: '\"Sora\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.75rem\",\n density: \"standard\",\n },\n finai: {\n name: \"finai\",\n defaultMode: \"dark\",\n label: \"FinAI\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.75rem\",\n density: \"spacious\",\n },\n portal: {\n name: \"portal\",\n defaultMode: \"dark\",\n label: \"DevLab Portal\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.5rem\",\n density: \"standard\",\n },\n logs: {\n name: \"logs\",\n defaultMode: \"dark\",\n label: \"DevLab Logs\",\n fontSans: '\"Space Grotesk\", sans-serif',\n fontDisplay: '\"Space Grotesk\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"0.375rem\",\n density: \"high\",\n },\n vitalai: {\n name: \"vitalai\",\n defaultMode: \"dark\",\n label: \"VitalAI\",\n fontSans: '\"Inter\", sans-serif',\n fontDisplay: '\"Barlow Condensed\", \"Inter\", sans-serif',\n fontMono: '\"JetBrains Mono\", monospace',\n radius: \"1rem\",\n density: \"spacious\",\n },\n} as const;\n"]}
package/dist/preset.css CHANGED
@@ -96,6 +96,19 @@
96
96
  --section-gap: var(--space-5);
97
97
  --table-row-padding-x: var(--space-4);
98
98
  --table-row-padding-y: var(--space-3);
99
+
100
+ /* ── Typography Fallback Baseline ───────────────────────────────────── */
101
+ --theme-font-sans:
102
+ system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
103
+ --theme-font-display: var(--theme-font-sans);
104
+ --theme-font-mono:
105
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
106
+ --font-sans: var(--theme-font-sans);
107
+ --font-display: var(--theme-font-display);
108
+ --font-mono: var(--theme-font-mono);
109
+
110
+ --theme-font-size-root: 16px;
111
+ --theme-spacing: 0.25rem;
99
112
  }
100
113
 
101
114
  .dark,
@@ -158,9 +171,28 @@
158
171
  --chart-3: oklch(0.75 0.12 70);
159
172
  --chart-4: oklch(0.8 0.14 80);
160
173
  --chart-5: oklch(0.65 0.18 25);
174
+
175
+ /* ── Typography Fallback Baseline ───────────────────────────────────── */
176
+ --theme-font-sans:
177
+ system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
178
+ --theme-font-display: var(--theme-font-sans);
179
+ --theme-font-mono:
180
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
181
+ --font-sans: var(--theme-font-sans);
182
+ --font-display: var(--theme-font-display);
183
+ --font-mono: var(--theme-font-mono);
184
+
185
+ --theme-font-size-root: 16px;
186
+ --theme-spacing: 0.25rem;
161
187
  }
162
188
 
163
189
  @theme inline {
190
+ /* ── Typography & Spacing Tokens ────────────────────────────────── */
191
+ --font-sans: var(--font-sans);
192
+ --font-display: var(--font-display);
193
+ --font-mono: var(--font-mono);
194
+ --spacing: var(--theme-spacing, 0.25rem);
195
+
164
196
  /* ── Radii Mappings ─────────────────────────────────────────────── */
165
197
  --radius-sm: calc(var(--radius, 0.5rem) - 4px);
166
198
  --radius-md: calc(var(--radius, 0.5rem) - 2px);
@@ -221,6 +253,14 @@
221
253
  --color-chart-4: var(--chart-4);
222
254
  --color-chart-5: var(--chart-5);
223
255
 
256
+ /* ── VitalAI High-Performance Athletic & Kinetic Tokens ────────── */
257
+ --color-volt: var(--volt);
258
+ --color-cyan: var(--cyan);
259
+ --color-ember: var(--ember);
260
+ --color-slate-muscle: var(--slate-muscle);
261
+ --color-glass: var(--glass);
262
+ --color-glass-border: var(--glass-border);
263
+
224
264
  /* ── Component Control Dimensions ─────────────────────────────────── */
225
265
  --height-control-xs: var(--control-height-xs, 1.75rem);
226
266
  --height-control-sm: var(--control-height-sm, 2rem);
package/dist/styles.css CHANGED
@@ -12,3 +12,4 @@
12
12
  @import "./themes/orchestrai.css";
13
13
  @import "./themes/portal.css";
14
14
  @import "./themes/logs.css";
15
+ @import "./themes/vitalai.css";
@@ -106,6 +106,20 @@
106
106
  --section-gap: var(--space-6);
107
107
  --table-row-padding-x: var(--space-6);
108
108
  --table-row-padding-y: var(--space-4);
109
+
110
+ /* ── FinAI Typography Tokens ─────────────────────────────────────────── */
111
+ --theme-font-sans:
112
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
113
+ --theme-font-display:
114
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
115
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
116
+ --font-sans: var(--theme-font-sans);
117
+ --font-display: var(--theme-font-display);
118
+ --font-mono: var(--theme-font-mono);
119
+
120
+ /* ── Financial Wellness Scaling ──────────────────────────────────────── */
121
+ --theme-font-size-root: 16px;
122
+ --theme-spacing: 0.265rem;
109
123
  }
110
124
 
111
125
  /* ── FinAI Theme — Dark Mode ──────────────────────────────────────────── */
@@ -189,4 +203,47 @@
189
203
  --expense-foreground: var(--destructive-foreground);
190
204
  --investment: oklch(0.68 0.19 260);
191
205
  --investment-foreground: oklch(0.97 0.003 260);
206
+
207
+ /* ── Sizing, Spacing & Layout Tokens ───────────────────────────────────── */
208
+ --control-height-xs: 1.75rem;
209
+ --control-height-sm: 2rem;
210
+ --control-height-md: 2.375rem;
211
+ --control-height-lg: 2.75rem;
212
+ --control-height-xl: 3.25rem;
213
+
214
+ --icon-xs: 0.75rem;
215
+ --icon-sm: 0.875rem;
216
+ --icon-md: 1rem;
217
+ --icon-lg: 1.25rem;
218
+ --icon-xl: 1.5rem;
219
+
220
+ --space-1: 0.25rem;
221
+ --space-2: 0.5rem;
222
+ --space-3: 0.75rem;
223
+ --space-4: 1rem;
224
+ --space-5: 1.25rem;
225
+ --space-6: 1.5rem;
226
+ --space-8: 2rem;
227
+ --space-10: 2.5rem;
228
+
229
+ --card-padding: var(--space-5);
230
+ --dialog-padding: var(--space-6);
231
+ --form-field-gap: var(--space-4);
232
+ --section-gap: var(--space-6);
233
+ --table-row-padding-x: var(--space-6);
234
+ --table-row-padding-y: var(--space-4);
235
+
236
+ /* ── FinAI Typography Tokens ─────────────────────────────────────────── */
237
+ --theme-font-sans:
238
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
239
+ --theme-font-display:
240
+ "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
241
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
242
+ --font-sans: var(--theme-font-sans);
243
+ --font-display: var(--theme-font-display);
244
+ --font-mono: var(--theme-font-mono);
245
+
246
+ /* ── Financial Wellness Scaling ──────────────────────────────────────── */
247
+ --theme-font-size-root: 16px;
248
+ --theme-spacing: 0.265rem;
192
249
  }
@@ -64,6 +64,48 @@
64
64
  oklch(0 0 0 / 5%) 1px,
65
65
  transparent 0
66
66
  );
67
+
68
+ /* ── DevLab Logs Typography Tokens ───────────────────────────────────── */
69
+ --theme-font-sans: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
70
+ --theme-font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
71
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
72
+ --font-sans: var(--theme-font-sans);
73
+ --font-display: var(--theme-font-display);
74
+ --font-mono: var(--theme-font-mono);
75
+
76
+ /* ── High-Density Observability Scaling ──────────────────────────────── */
77
+ --theme-font-size-root: 14.5px;
78
+ --theme-spacing: 0.2rem;
79
+ --radius: 0.375rem;
80
+
81
+ /* ── Sizing, Spacing & Layout Tokens ─────────────────────────────────── */
82
+ --control-height-xs: 1.5rem;
83
+ --control-height-sm: 1.75rem;
84
+ --control-height-md: 2rem;
85
+ --control-height-lg: 2.25rem;
86
+ --control-height-xl: 2.5rem;
87
+
88
+ --icon-xs: 0.75rem;
89
+ --icon-sm: 0.875rem;
90
+ --icon-md: 1rem;
91
+ --icon-lg: 1.125rem;
92
+ --icon-xl: 1.25rem;
93
+
94
+ --space-1: 0.125rem;
95
+ --space-2: 0.25rem;
96
+ --space-3: 0.5rem;
97
+ --space-4: 0.75rem;
98
+ --space-5: 1rem;
99
+ --space-6: 1.25rem;
100
+ --space-8: 1.5rem;
101
+ --space-10: 2rem;
102
+
103
+ --card-padding: var(--space-3);
104
+ --dialog-padding: var(--space-4);
105
+ --form-field-gap: var(--space-2);
106
+ --section-gap: var(--space-4);
107
+ --table-row-padding-x: var(--space-3);
108
+ --table-row-padding-y: var(--space-2);
67
109
  }
68
110
 
69
111
  /* ── DevLab Logs Theme — Dark Mode ─────────────────────────────────────────── */
@@ -134,4 +176,46 @@
134
176
  oklch(1 0 0 / 4%) 1px,
135
177
  transparent 0
136
178
  );
179
+
180
+ /* ── DevLab Logs Typography Tokens ───────────────────────────────────── */
181
+ --theme-font-sans: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
182
+ --theme-font-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;
183
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
184
+ --font-sans: var(--theme-font-sans);
185
+ --font-display: var(--theme-font-display);
186
+ --font-mono: var(--theme-font-mono);
187
+
188
+ /* ── High-Density Observability Scaling ──────────────────────────────── */
189
+ --theme-font-size-root: 14.5px;
190
+ --theme-spacing: 0.2rem;
191
+ --radius: 0.375rem;
192
+
193
+ /* ── Sizing, Spacing & Layout Tokens ─────────────────────────────────── */
194
+ --control-height-xs: 1.5rem;
195
+ --control-height-sm: 1.75rem;
196
+ --control-height-md: 2rem;
197
+ --control-height-lg: 2.25rem;
198
+ --control-height-xl: 2.5rem;
199
+
200
+ --icon-xs: 0.75rem;
201
+ --icon-sm: 0.875rem;
202
+ --icon-md: 1rem;
203
+ --icon-lg: 1.125rem;
204
+ --icon-xl: 1.25rem;
205
+
206
+ --space-1: 0.125rem;
207
+ --space-2: 0.25rem;
208
+ --space-3: 0.5rem;
209
+ --space-4: 0.75rem;
210
+ --space-5: 1rem;
211
+ --space-6: 1.25rem;
212
+ --space-8: 1.5rem;
213
+ --space-10: 2rem;
214
+
215
+ --card-padding: var(--space-3);
216
+ --dialog-padding: var(--space-4);
217
+ --form-field-gap: var(--space-2);
218
+ --section-gap: var(--space-4);
219
+ --table-row-padding-x: var(--space-3);
220
+ --table-row-padding-y: var(--space-2);
137
221
  }
@@ -98,6 +98,19 @@
98
98
  --section-gap: var(--space-5);
99
99
  --table-row-padding-x: var(--space-4);
100
100
  --table-row-padding-y: var(--space-3);
101
+
102
+ /* ── OrchestrAI Typography Tokens ─────────────────────────────────────── */
103
+ --theme-font-sans:
104
+ "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
105
+ --theme-font-display: "Sora", ui-sans-serif, system-ui, sans-serif;
106
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
107
+ --font-sans: var(--theme-font-sans);
108
+ --font-display: var(--theme-font-display);
109
+ --font-mono: var(--theme-font-mono);
110
+
111
+ /* ── Balanced Cybernetic Scaling ─────────────────────────────────────── */
112
+ --theme-font-size-root: 16px;
113
+ --theme-spacing: 0.25rem;
101
114
  }
102
115
 
103
116
  /* ── OrchestrAI Theme — Dark Mode ──────────────────────────────────────── */
@@ -202,4 +215,17 @@
202
215
  --section-gap: var(--space-5);
203
216
  --table-row-padding-x: var(--space-4);
204
217
  --table-row-padding-y: var(--space-3);
218
+
219
+ /* ── OrchestrAI Typography Tokens ─────────────────────────────────────── */
220
+ --theme-font-sans:
221
+ "Manrope", ui-sans-serif, system-ui, -apple-system, sans-serif;
222
+ --theme-font-display: "Sora", ui-sans-serif, system-ui, sans-serif;
223
+ --theme-font-mono: "JetBrains Mono", ui-monospace, monospace;
224
+ --font-sans: var(--theme-font-sans);
225
+ --font-display: var(--theme-font-display);
226
+ --font-mono: var(--theme-font-mono);
227
+
228
+ /* ── Balanced Cybernetic Scaling ─────────────────────────────────────── */
229
+ --theme-font-size-root: 16px;
230
+ --theme-spacing: 0.25rem;
205
231
  }