@nebutra/theme 0.1.1 → 0.2.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/.turbo/turbo-build.log +9 -176
- package/.turbo/turbo-typecheck.log +1 -1
- package/AGENTS.md +18 -31
- package/DESIGN.md +73 -152
- package/LICENSE +21 -676
- package/README.md +73 -27
- package/keyframes.css +147 -0
- package/package.json +20 -9
- package/scripts/sync-languages.mjs +189 -0
- package/scripts/sync-skins.mjs +83 -0
- package/scripts/sync-themes.mjs +40 -0
- package/skins.css +1844 -0
- package/src/__tests__/apply-language.test.ts +70 -0
- package/src/__tests__/languages.test.ts +100 -0
- package/src/__tests__/theme-registry.test.ts +18 -40
- package/src/apply-language.ts +87 -0
- package/src/brand-package-surface.ts +30 -0
- package/src/built-in-packages.generated.ts +39 -0
- package/src/built-in-packages.ts +14 -0
- package/src/client.ts +35 -0
- package/src/index.ts +51 -18
- package/src/languages.json +188 -0
- package/src/languages.meta.json +62 -0
- package/src/languages.ts +70 -0
- package/src/registry.json +4 -196
- package/themes.css +3 -384
- package/turbo.json +25 -0
- package/.turbo/turbo-test.log +0 -14
- package/src/registry.ts +0 -56
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://nebutra.com/schemas/design-language-registry.json",
|
|
3
|
+
"version": "2026.07",
|
|
4
|
+
"defaultLanguage": "factory",
|
|
5
|
+
"description": "Design-language catalog for global product chrome swap (Create Center / SaaS theme). Not color moods — full Brand Packages (roles + recipe + elev + zones).",
|
|
6
|
+
"languages": [
|
|
7
|
+
{
|
|
8
|
+
"id": "factory",
|
|
9
|
+
"name": "Nebutra Factory",
|
|
10
|
+
"kind": "design-language",
|
|
11
|
+
"description": "Default product chrome from @nebutra/tokens (no skin). Clear data-brand to restore.",
|
|
12
|
+
"proves": ["factory HSL SSOT", "recipe defaults", "action≡brand-mark until skin"],
|
|
13
|
+
"darkDefault": true,
|
|
14
|
+
"brandPath": null,
|
|
15
|
+
"skinPath": null,
|
|
16
|
+
"install": {
|
|
17
|
+
"command": "nebutra theme use factory",
|
|
18
|
+
"cssImport": null
|
|
19
|
+
},
|
|
20
|
+
"compatibility": {
|
|
21
|
+
"tailwind": "4",
|
|
22
|
+
"cssVariables": true,
|
|
23
|
+
"brandPackage": true,
|
|
24
|
+
"dataBrand": true
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "gsap",
|
|
29
|
+
"name": "GSAP",
|
|
30
|
+
"kind": "design-language",
|
|
31
|
+
"description": "Dark cream-on-void; shockingly-green is accent — CTA is gradient-stroke/outline, not solid green fill.",
|
|
32
|
+
"proves": [
|
|
33
|
+
"outline / gradient-stroke recipe",
|
|
34
|
+
"category extensions",
|
|
35
|
+
"marketing display zone"
|
|
36
|
+
],
|
|
37
|
+
"darkDefault": true,
|
|
38
|
+
"brandPath": "brands/gsap/brand.json",
|
|
39
|
+
"skinPath": "skins/gsap.css",
|
|
40
|
+
"install": {
|
|
41
|
+
"command": "nebutra theme use gsap",
|
|
42
|
+
"cssImport": "@nebutra/tokens/skins/gsap.css"
|
|
43
|
+
},
|
|
44
|
+
"compatibility": {
|
|
45
|
+
"tailwind": "4",
|
|
46
|
+
"cssVariables": true,
|
|
47
|
+
"brandPackage": true,
|
|
48
|
+
"dataBrand": true
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "linear",
|
|
53
|
+
"name": "Linear",
|
|
54
|
+
"kind": "design-language",
|
|
55
|
+
"description": "Dual-mode: dark void default + light paper; solid acid-lime CTA, compact density.",
|
|
56
|
+
"proves": ["chromatic solid action", "dark product chrome", "dual-mode light/dark palettes"],
|
|
57
|
+
"darkDefault": true,
|
|
58
|
+
"brandPath": "brands/linear/brand.json",
|
|
59
|
+
"skinPath": "skins/linear.css",
|
|
60
|
+
"install": {
|
|
61
|
+
"command": "nebutra theme use linear",
|
|
62
|
+
"cssImport": "@nebutra/tokens/skins/linear.css"
|
|
63
|
+
},
|
|
64
|
+
"compatibility": {
|
|
65
|
+
"tailwind": "4",
|
|
66
|
+
"cssVariables": true,
|
|
67
|
+
"brandPackage": true,
|
|
68
|
+
"dataBrand": true
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "notion",
|
|
73
|
+
"name": "Notion",
|
|
74
|
+
"kind": "design-language",
|
|
75
|
+
"description": "Warm paper notebook; Notion Blue sole filled CTA ≠ Ink brand-mark; 8px buttons / 12px cards; elev=none + hairline; accent hues decorative only.",
|
|
76
|
+
"proves": [
|
|
77
|
+
"action ≠ brand-mark (blue vs ink)",
|
|
78
|
+
"canvas≠card (paper-warmth vs pure-white)",
|
|
79
|
+
"elevation=none content cards + raised nav shadow slot",
|
|
80
|
+
"table radius priority (8/12 over tertiary 4px)",
|
|
81
|
+
"decorative accents never product CTA"
|
|
82
|
+
],
|
|
83
|
+
"darkDefault": false,
|
|
84
|
+
"brandPath": "brands/notion/brand.json",
|
|
85
|
+
"skinPath": "skins/notion.css",
|
|
86
|
+
"install": {
|
|
87
|
+
"command": "nebutra theme use notion",
|
|
88
|
+
"cssImport": "@nebutra/tokens/skins/notion.css"
|
|
89
|
+
},
|
|
90
|
+
"compatibility": {
|
|
91
|
+
"tailwind": "4",
|
|
92
|
+
"cssVariables": true,
|
|
93
|
+
"brandPackage": true,
|
|
94
|
+
"dataBrand": true
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "raycast",
|
|
99
|
+
"name": "Raycast",
|
|
100
|
+
"kind": "design-language",
|
|
101
|
+
"description": "Neutral Mist/Iron filled CTA; Coral is brand-mark only. Key elevation stack.",
|
|
102
|
+
"proves": ["action ≠ brand-mark", "elevation=key free CSS"],
|
|
103
|
+
"darkDefault": true,
|
|
104
|
+
"brandPath": "brands/raycast/brand.json",
|
|
105
|
+
"skinPath": "skins/raycast.css",
|
|
106
|
+
"install": {
|
|
107
|
+
"command": "nebutra theme use raycast",
|
|
108
|
+
"cssImport": "@nebutra/tokens/skins/raycast.css"
|
|
109
|
+
},
|
|
110
|
+
"compatibility": {
|
|
111
|
+
"tailwind": "4",
|
|
112
|
+
"cssVariables": true,
|
|
113
|
+
"brandPackage": true,
|
|
114
|
+
"dataBrand": true
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"id": "stripe",
|
|
119
|
+
"name": "Stripe",
|
|
120
|
+
"kind": "design-language",
|
|
121
|
+
"description": "Indigo-ink ledger on frost glass; Indigo action ≠ Midnight brand-mark; 4px controls; elevation=none (tint + frost rules).",
|
|
122
|
+
"proves": [
|
|
123
|
+
"action ≠ brand-mark (chromatic indigo vs midnight)",
|
|
124
|
+
"elevation=none tint-ladder depth",
|
|
125
|
+
"4px squared controls (not pill)",
|
|
126
|
+
"whisper heading weight 300"
|
|
127
|
+
],
|
|
128
|
+
"darkDefault": false,
|
|
129
|
+
"brandPath": "brands/stripe/brand.json",
|
|
130
|
+
"skinPath": "skins/stripe.css",
|
|
131
|
+
"install": {
|
|
132
|
+
"command": "nebutra theme use stripe",
|
|
133
|
+
"cssImport": "@nebutra/tokens/skins/stripe.css"
|
|
134
|
+
},
|
|
135
|
+
"compatibility": {
|
|
136
|
+
"tailwind": "4",
|
|
137
|
+
"cssVariables": true,
|
|
138
|
+
"brandPackage": true,
|
|
139
|
+
"dataBrand": true
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"id": "vanta",
|
|
144
|
+
"name": "Vanta",
|
|
145
|
+
"kind": "design-language",
|
|
146
|
+
"description": "Editorial violet on parchment; Vivid Violet action ≠ Indigo Ink brand-mark; full pills; elevation=none (carbon hairlines).",
|
|
147
|
+
"proves": [
|
|
148
|
+
"action ≠ brand-mark (chromatic)",
|
|
149
|
+
"elevation=none border-only",
|
|
150
|
+
"999px pill controls",
|
|
151
|
+
"serif display + sans UI zones"
|
|
152
|
+
],
|
|
153
|
+
"darkDefault": false,
|
|
154
|
+
"brandPath": "brands/vanta/brand.json",
|
|
155
|
+
"skinPath": "skins/vanta.css",
|
|
156
|
+
"install": {
|
|
157
|
+
"command": "nebutra theme use vanta",
|
|
158
|
+
"cssImport": "@nebutra/tokens/skins/vanta.css"
|
|
159
|
+
},
|
|
160
|
+
"compatibility": {
|
|
161
|
+
"tailwind": "4",
|
|
162
|
+
"cssVariables": true,
|
|
163
|
+
"brandPackage": true,
|
|
164
|
+
"dataBrand": true
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "vercel",
|
|
169
|
+
"name": "Vercel",
|
|
170
|
+
"kind": "design-language",
|
|
171
|
+
"description": "Monochrome dual-mode: light paper + Obsidian CTA; dark carbon + white CTA; hairline elevation (no chromatic CTA).",
|
|
172
|
+
"proves": ["light monochrome action", "elevation=hairline", "dual-mode light/dark palettes"],
|
|
173
|
+
"darkDefault": false,
|
|
174
|
+
"brandPath": "brands/vercel/brand.json",
|
|
175
|
+
"skinPath": "skins/vercel.css",
|
|
176
|
+
"install": {
|
|
177
|
+
"command": "nebutra theme use vercel",
|
|
178
|
+
"cssImport": "@nebutra/tokens/skins/vercel.css"
|
|
179
|
+
},
|
|
180
|
+
"compatibility": {
|
|
181
|
+
"tailwind": "4",
|
|
182
|
+
"cssVariables": true,
|
|
183
|
+
"brandPackage": true,
|
|
184
|
+
"dataBrand": true
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Human catalog metadata for design languages. Merged with brands/*/brand.json by scripts/sync-languages.mjs → languages.json (AUTO-GENERATED).",
|
|
3
|
+
"version": "2026.07",
|
|
4
|
+
"defaultLanguage": "factory",
|
|
5
|
+
"description": "Design-language catalog for global product chrome swap (Create Center / SaaS theme). Not color moods — full Brand Packages (roles + recipe + elev + zones).",
|
|
6
|
+
"factory": {
|
|
7
|
+
"name": "Nebutra Factory",
|
|
8
|
+
"description": "Default product chrome from @nebutra/tokens (no skin). Clear data-brand to restore.",
|
|
9
|
+
"proves": ["factory HSL SSOT", "recipe defaults", "action≡brand-mark until skin"],
|
|
10
|
+
"darkDefault": true
|
|
11
|
+
},
|
|
12
|
+
"languages": {
|
|
13
|
+
"linear": {
|
|
14
|
+
"description": "Dual-mode: dark void default + light paper; solid acid-lime CTA, compact density.",
|
|
15
|
+
"proves": ["chromatic solid action", "dark product chrome", "dual-mode light/dark palettes"]
|
|
16
|
+
},
|
|
17
|
+
"gsap": {
|
|
18
|
+
"description": "Dark cream-on-void; shockingly-green is accent — CTA is gradient-stroke/outline, not solid green fill.",
|
|
19
|
+
"proves": [
|
|
20
|
+
"outline / gradient-stroke recipe",
|
|
21
|
+
"category extensions",
|
|
22
|
+
"marketing display zone"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"raycast": {
|
|
26
|
+
"description": "Neutral Mist/Iron filled CTA; Coral is brand-mark only. Key elevation stack.",
|
|
27
|
+
"proves": ["action ≠ brand-mark", "elevation=key free CSS"]
|
|
28
|
+
},
|
|
29
|
+
"vercel": {
|
|
30
|
+
"description": "Monochrome dual-mode: light paper + Obsidian CTA; dark carbon + white CTA; hairline elevation (no chromatic CTA).",
|
|
31
|
+
"proves": ["light monochrome action", "elevation=hairline", "dual-mode light/dark palettes"]
|
|
32
|
+
},
|
|
33
|
+
"vanta": {
|
|
34
|
+
"description": "Editorial violet on parchment; Vivid Violet action ≠ Indigo Ink brand-mark; full pills; elevation=none (carbon hairlines).",
|
|
35
|
+
"proves": [
|
|
36
|
+
"action ≠ brand-mark (chromatic)",
|
|
37
|
+
"elevation=none border-only",
|
|
38
|
+
"999px pill controls",
|
|
39
|
+
"serif display + sans UI zones"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"stripe": {
|
|
43
|
+
"description": "Indigo-ink ledger on frost glass; Indigo action ≠ Midnight brand-mark; 4px controls; elevation=none (tint + frost rules).",
|
|
44
|
+
"proves": [
|
|
45
|
+
"action ≠ brand-mark (chromatic indigo vs midnight)",
|
|
46
|
+
"elevation=none tint-ladder depth",
|
|
47
|
+
"4px squared controls (not pill)",
|
|
48
|
+
"whisper heading weight 300"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"notion": {
|
|
52
|
+
"description": "Warm paper notebook; Notion Blue sole filled CTA ≠ Ink brand-mark; 8px buttons / 12px cards; elev=none + hairline; accent hues decorative only.",
|
|
53
|
+
"proves": [
|
|
54
|
+
"action ≠ brand-mark (blue vs ink)",
|
|
55
|
+
"canvas≠card (paper-warmth vs pure-white)",
|
|
56
|
+
"elevation=none content cards + raised nav shadow slot",
|
|
57
|
+
"table radius priority (8/12 over tertiary 4px)",
|
|
58
|
+
"decorative accents never product CTA"
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
package/src/languages.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design-language catalog — the real product surface of @nebutra/theme.
|
|
3
|
+
*
|
|
4
|
+
* A "language" is a full Brand Package (roles + recipe + elev + zones), proven by
|
|
5
|
+
* external DS stress tests (Linear / GSAP / Raycast / Vercel / Vanta / Stripe / Notion).
|
|
6
|
+
* Swapping `html[data-brand]` (or applyLanguage) recolors product chrome without
|
|
7
|
+
* call-site edits.
|
|
8
|
+
*
|
|
9
|
+
* Multi-mood oklch catalog was removed. Use LANGUAGE_REGISTRY / isLanguageId only.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** Generated by scripts/sync-languages.mjs from brands + languages.meta.json */
|
|
13
|
+
import languagesJson from "./languages.json" with { type: "json" };
|
|
14
|
+
|
|
15
|
+
export interface DesignLanguageInstall {
|
|
16
|
+
command: string;
|
|
17
|
+
/** Single-skin import for demos; null for factory */
|
|
18
|
+
cssImport: string | null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface DesignLanguageCompatibility {
|
|
22
|
+
tailwind: "4";
|
|
23
|
+
cssVariables: boolean;
|
|
24
|
+
brandPackage: boolean;
|
|
25
|
+
dataBrand: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface DesignLanguageEntry {
|
|
29
|
+
id: string;
|
|
30
|
+
name: string;
|
|
31
|
+
kind: "design-language";
|
|
32
|
+
description: string;
|
|
33
|
+
/** Contract proofs this fixture exercises */
|
|
34
|
+
proves: string[];
|
|
35
|
+
darkDefault: boolean;
|
|
36
|
+
/** Relative to @nebutra/tokens package root; null = factory (no override) */
|
|
37
|
+
brandPath: string | null;
|
|
38
|
+
skinPath: string | null;
|
|
39
|
+
install: DesignLanguageInstall;
|
|
40
|
+
compatibility: DesignLanguageCompatibility;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface DesignLanguageRegistry {
|
|
44
|
+
$schema: string;
|
|
45
|
+
version: string;
|
|
46
|
+
defaultLanguage: string;
|
|
47
|
+
description: string;
|
|
48
|
+
languages: DesignLanguageEntry[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const LANGUAGE_REGISTRY = languagesJson as DesignLanguageRegistry;
|
|
52
|
+
export const LANGUAGE_IDS = LANGUAGE_REGISTRY.languages.map((l) => l.id);
|
|
53
|
+
export const DEFAULT_LANGUAGE = LANGUAGE_REGISTRY.defaultLanguage;
|
|
54
|
+
/** Alias — “theme” in product speak = design language */
|
|
55
|
+
export const BUILT_IN_LANGUAGE_IDS = LANGUAGE_IDS;
|
|
56
|
+
|
|
57
|
+
export type LanguageId = string;
|
|
58
|
+
|
|
59
|
+
export function isLanguageId(id: string): boolean {
|
|
60
|
+
return LANGUAGE_IDS.includes(id);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function getLanguageById(id: string): DesignLanguageEntry | undefined {
|
|
64
|
+
return LANGUAGE_REGISTRY.languages.find((l) => l.id === id);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** Fixture languages that ship a Brand Package (excludes factory). */
|
|
68
|
+
export function listSkinLanguages(): DesignLanguageEntry[] {
|
|
69
|
+
return LANGUAGE_REGISTRY.languages.filter((l) => l.brandPath != null);
|
|
70
|
+
}
|
package/src/registry.json
CHANGED
|
@@ -1,199 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://nebutra.com/schemas/theme-registry.json",
|
|
3
|
-
"version": "2026.
|
|
4
|
-
"defaultTheme": "
|
|
5
|
-
"themes": [
|
|
6
|
-
|
|
7
|
-
"id": "neon",
|
|
8
|
-
"name": "Neon",
|
|
9
|
-
"category": "ai-native",
|
|
10
|
-
"mood": "AI SaaS default - dark, electric, high contrast",
|
|
11
|
-
"tokenPath": "tokens/themes/neon.json",
|
|
12
|
-
"install": {
|
|
13
|
-
"command": "nebutra theme add neon",
|
|
14
|
-
"registryUrl": "https://ui.nebutra.com/themes/neon.json"
|
|
15
|
-
},
|
|
16
|
-
"compatibility": {
|
|
17
|
-
"tailwind": "4",
|
|
18
|
-
"cssVariables": true,
|
|
19
|
-
"figmaVariables": true,
|
|
20
|
-
"shadcnRegistry": true
|
|
21
|
-
},
|
|
22
|
-
"governance": {
|
|
23
|
-
"wcag": "AA",
|
|
24
|
-
"requiredTokens": [
|
|
25
|
-
"color.primary",
|
|
26
|
-
"color.primary-foreground",
|
|
27
|
-
"color.background",
|
|
28
|
-
"color.foreground",
|
|
29
|
-
"color.card",
|
|
30
|
-
"color.border",
|
|
31
|
-
"color.ring",
|
|
32
|
-
"radius.md",
|
|
33
|
-
"fontFamily.sans"
|
|
34
|
-
],
|
|
35
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"id": "gradient",
|
|
40
|
-
"name": "Gradient",
|
|
41
|
-
"category": "marketing",
|
|
42
|
-
"mood": "Growth and marketing - bright, polished, conversion-oriented",
|
|
43
|
-
"tokenPath": "tokens/themes/gradient.json",
|
|
44
|
-
"install": {
|
|
45
|
-
"command": "nebutra theme add gradient",
|
|
46
|
-
"registryUrl": "https://ui.nebutra.com/themes/gradient.json"
|
|
47
|
-
},
|
|
48
|
-
"compatibility": {
|
|
49
|
-
"tailwind": "4",
|
|
50
|
-
"cssVariables": true,
|
|
51
|
-
"figmaVariables": true,
|
|
52
|
-
"shadcnRegistry": true
|
|
53
|
-
},
|
|
54
|
-
"governance": {
|
|
55
|
-
"wcag": "AA",
|
|
56
|
-
"requiredTokens": [
|
|
57
|
-
"color.primary",
|
|
58
|
-
"color.primary-foreground",
|
|
59
|
-
"color.background",
|
|
60
|
-
"color.foreground",
|
|
61
|
-
"color.card",
|
|
62
|
-
"color.border",
|
|
63
|
-
"color.ring",
|
|
64
|
-
"radius.md",
|
|
65
|
-
"fontFamily.sans"
|
|
66
|
-
],
|
|
67
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"id": "dark-dense",
|
|
72
|
-
"name": "Dark Dense",
|
|
73
|
-
"category": "pro-tools",
|
|
74
|
-
"mood": "Dense operator surfaces - dark, compact, low distraction",
|
|
75
|
-
"tokenPath": "tokens/themes/dark-dense.json",
|
|
76
|
-
"install": {
|
|
77
|
-
"command": "nebutra theme add dark-dense",
|
|
78
|
-
"registryUrl": "https://ui.nebutra.com/themes/dark-dense.json"
|
|
79
|
-
},
|
|
80
|
-
"compatibility": {
|
|
81
|
-
"tailwind": "4",
|
|
82
|
-
"cssVariables": true,
|
|
83
|
-
"figmaVariables": true,
|
|
84
|
-
"shadcnRegistry": true
|
|
85
|
-
},
|
|
86
|
-
"governance": {
|
|
87
|
-
"wcag": "AA",
|
|
88
|
-
"requiredTokens": [
|
|
89
|
-
"color.primary",
|
|
90
|
-
"color.primary-foreground",
|
|
91
|
-
"color.background",
|
|
92
|
-
"color.foreground",
|
|
93
|
-
"color.card",
|
|
94
|
-
"color.border",
|
|
95
|
-
"color.ring",
|
|
96
|
-
"radius.md",
|
|
97
|
-
"fontFamily.sans"
|
|
98
|
-
],
|
|
99
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"id": "minimal",
|
|
104
|
-
"name": "Minimal",
|
|
105
|
-
"category": "productivity",
|
|
106
|
-
"mood": "Document and workspace apps - neutral, calm, readable",
|
|
107
|
-
"tokenPath": "tokens/themes/minimal.json",
|
|
108
|
-
"install": {
|
|
109
|
-
"command": "nebutra theme add minimal",
|
|
110
|
-
"registryUrl": "https://ui.nebutra.com/themes/minimal.json"
|
|
111
|
-
},
|
|
112
|
-
"compatibility": {
|
|
113
|
-
"tailwind": "4",
|
|
114
|
-
"cssVariables": true,
|
|
115
|
-
"figmaVariables": true,
|
|
116
|
-
"shadcnRegistry": true
|
|
117
|
-
},
|
|
118
|
-
"governance": {
|
|
119
|
-
"wcag": "AA",
|
|
120
|
-
"requiredTokens": [
|
|
121
|
-
"color.primary",
|
|
122
|
-
"color.primary-foreground",
|
|
123
|
-
"color.background",
|
|
124
|
-
"color.foreground",
|
|
125
|
-
"color.card",
|
|
126
|
-
"color.border",
|
|
127
|
-
"color.ring",
|
|
128
|
-
"radius.md",
|
|
129
|
-
"fontFamily.sans"
|
|
130
|
-
],
|
|
131
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"id": "vibrant",
|
|
136
|
-
"name": "Vibrant",
|
|
137
|
-
"category": "creative",
|
|
138
|
-
"mood": "Creator and consumer surfaces - saturated, expressive, energetic",
|
|
139
|
-
"tokenPath": "tokens/themes/vibrant.json",
|
|
140
|
-
"install": {
|
|
141
|
-
"command": "nebutra theme add vibrant",
|
|
142
|
-
"registryUrl": "https://ui.nebutra.com/themes/vibrant.json"
|
|
143
|
-
},
|
|
144
|
-
"compatibility": {
|
|
145
|
-
"tailwind": "4",
|
|
146
|
-
"cssVariables": true,
|
|
147
|
-
"figmaVariables": true,
|
|
148
|
-
"shadcnRegistry": true
|
|
149
|
-
},
|
|
150
|
-
"governance": {
|
|
151
|
-
"wcag": "AA",
|
|
152
|
-
"requiredTokens": [
|
|
153
|
-
"color.primary",
|
|
154
|
-
"color.primary-foreground",
|
|
155
|
-
"color.background",
|
|
156
|
-
"color.foreground",
|
|
157
|
-
"color.card",
|
|
158
|
-
"color.border",
|
|
159
|
-
"color.ring",
|
|
160
|
-
"radius.md",
|
|
161
|
-
"fontFamily.sans"
|
|
162
|
-
],
|
|
163
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"id": "ocean",
|
|
168
|
-
"name": "Ocean",
|
|
169
|
-
"category": "enterprise",
|
|
170
|
-
"mood": "B2B infrastructure and finance - cool, stable, trustworthy",
|
|
171
|
-
"tokenPath": "tokens/themes/ocean.json",
|
|
172
|
-
"install": {
|
|
173
|
-
"command": "nebutra theme add ocean",
|
|
174
|
-
"registryUrl": "https://ui.nebutra.com/themes/ocean.json"
|
|
175
|
-
},
|
|
176
|
-
"compatibility": {
|
|
177
|
-
"tailwind": "4",
|
|
178
|
-
"cssVariables": true,
|
|
179
|
-
"figmaVariables": true,
|
|
180
|
-
"shadcnRegistry": true
|
|
181
|
-
},
|
|
182
|
-
"governance": {
|
|
183
|
-
"wcag": "AA",
|
|
184
|
-
"requiredTokens": [
|
|
185
|
-
"color.primary",
|
|
186
|
-
"color.primary-foreground",
|
|
187
|
-
"color.background",
|
|
188
|
-
"color.foreground",
|
|
189
|
-
"color.card",
|
|
190
|
-
"color.border",
|
|
191
|
-
"color.ring",
|
|
192
|
-
"radius.md",
|
|
193
|
-
"fontFamily.sans"
|
|
194
|
-
],
|
|
195
|
-
"visualSuites": ["forms", "pricing", "dashboard", "ai-chat", "charts"]
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
]
|
|
3
|
+
"version": "2026.07",
|
|
4
|
+
"defaultTheme": "factory",
|
|
5
|
+
"themes": [],
|
|
6
|
+
"notes": "FROZEN empty mood list. Design languages: languages.json. Do not add themes here."
|
|
199
7
|
}
|