@prodivix/themes 0.0.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.
Files changed (31) hide show
  1. package/LICENSE +21 -0
  2. package/dist/css/createCssVariables.d.ts +7 -0
  3. package/dist/css/createCssVariables.d.ts.map +1 -0
  4. package/dist/css/createThemeStyleText.d.ts +8 -0
  5. package/dist/css/createThemeStyleText.d.ts.map +1 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +384 -0
  9. package/dist/palette/defaultPalette.d.ts +4 -0
  10. package/dist/palette/defaultPalette.d.ts.map +1 -0
  11. package/dist/palette/defaultPalette.json +82 -0
  12. package/dist/resolver/detectTokenCycles.d.ts +7 -0
  13. package/dist/resolver/detectTokenCycles.d.ts.map +1 -0
  14. package/dist/resolver/resolveThemeManifest.d.ts +6 -0
  15. package/dist/resolver/resolveThemeManifest.d.ts.map +1 -0
  16. package/dist/resolver/resolveTokenReferences.d.ts +6 -0
  17. package/dist/resolver/resolveTokenReferences.d.ts.map +1 -0
  18. package/dist/schema/themeManifest.schema.json +98 -0
  19. package/dist/schema/themeManifest.types.d.ts +59 -0
  20. package/dist/schema/themeManifest.types.d.ts.map +1 -0
  21. package/dist/tokens/defaultFallback.d.ts +8 -0
  22. package/dist/tokens/defaultFallback.d.ts.map +1 -0
  23. package/dist/tokens/tokenPaths.d.ts +8 -0
  24. package/dist/tokens/tokenPaths.d.ts.map +1 -0
  25. package/dist/validation/validateThemeManifest.d.ts +6 -0
  26. package/dist/validation/validateThemeManifest.d.ts.map +1 -0
  27. package/manifests/official/monochrome-dark-high-contrast.json +166 -0
  28. package/manifests/official/monochrome-dark.json +166 -0
  29. package/manifests/official/monochrome-light-high-contrast.json +166 -0
  30. package/manifests/official/monochrome-light.json +166 -0
  31. package/package.json +33 -0
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://prodivix.dev/schemas/theme-manifest.schema.json",
4
+ "title": "Prodivix Theme Manifest",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "id", "name", "source", "mode", "semantic"],
8
+ "properties": {
9
+ "schemaVersion": {
10
+ "const": "1.0"
11
+ },
12
+ "id": {
13
+ "type": "string",
14
+ "pattern": "^[a-z][a-z0-9]*(\\.[a-z0-9][a-z0-9-]*)+$"
15
+ },
16
+ "name": {
17
+ "type": "string",
18
+ "minLength": 1
19
+ },
20
+ "author": {
21
+ "type": "string"
22
+ },
23
+ "source": {
24
+ "enum": ["official", "custom", "community"]
25
+ },
26
+ "mode": {
27
+ "enum": ["light", "dark", "adaptive"]
28
+ },
29
+ "semantic": {
30
+ "$ref": "#/$defs/tokenTree"
31
+ },
32
+ "product": {
33
+ "$ref": "#/$defs/tokenTree"
34
+ },
35
+ "typography": {
36
+ "$ref": "#/$defs/tokenTree"
37
+ },
38
+ "radius": {
39
+ "$ref": "#/$defs/stringMap"
40
+ },
41
+ "shadow": {
42
+ "$ref": "#/$defs/stringMap"
43
+ },
44
+ "density": {
45
+ "$ref": "#/$defs/tokenTree"
46
+ },
47
+ "motion": {
48
+ "$ref": "#/$defs/tokenTree"
49
+ },
50
+ "metadata": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "properties": {
54
+ "description": {
55
+ "type": "string"
56
+ },
57
+ "tags": {
58
+ "type": "array",
59
+ "items": {
60
+ "type": "string"
61
+ }
62
+ },
63
+ "preview": {
64
+ "type": "string"
65
+ },
66
+ "license": {
67
+ "type": "string"
68
+ }
69
+ }
70
+ }
71
+ },
72
+ "$defs": {
73
+ "stringMap": {
74
+ "type": "object",
75
+ "additionalProperties": {
76
+ "type": "string",
77
+ "minLength": 1
78
+ }
79
+ },
80
+ "tokenTree": {
81
+ "type": "object",
82
+ "additionalProperties": {
83
+ "anyOf": [
84
+ {
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ {
89
+ "type": "number"
90
+ },
91
+ {
92
+ "$ref": "#/$defs/tokenTree"
93
+ }
94
+ ]
95
+ }
96
+ }
97
+ }
98
+ }
@@ -0,0 +1,59 @@
1
+ export declare const CURRENT_THEME_SCHEMA_VERSION: "1.0";
2
+ export type ThemeSchemaVersion = typeof CURRENT_THEME_SCHEMA_VERSION;
3
+ export type ThemeSource = 'official' | 'custom' | 'community';
4
+ export type ThemeMode = 'light' | 'dark' | 'adaptive';
5
+ export type ThemeTokenPrimitive = string | number;
6
+ export type ThemeTokenTree = {
7
+ [tokenName: string]: ThemeTokenPrimitive | ThemeTokenTree;
8
+ };
9
+ export type ThemeScaleStep = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | '13';
10
+ export type ThemeColorScale = Record<ThemeScaleStep, string>;
11
+ export type ThemePalette = Record<string, ThemeColorScale>;
12
+ export type ThemeSemanticTokens = ThemeTokenTree;
13
+ export type ThemeProductTokens = ThemeTokenTree;
14
+ export type ThemeTypographyTokens = ThemeTokenTree;
15
+ export type ThemeRadiusTokens = Record<string, string>;
16
+ export type ThemeShadowTokens = Record<string, string>;
17
+ export type ThemeDensityTokens = ThemeTokenTree;
18
+ export type ThemeMotionTokens = ThemeTokenTree;
19
+ export type ThemeManifest = {
20
+ schemaVersion: ThemeSchemaVersion;
21
+ id: string;
22
+ name: string;
23
+ author?: string;
24
+ source: ThemeSource;
25
+ mode: ThemeMode;
26
+ semantic: ThemeSemanticTokens;
27
+ product?: ThemeProductTokens;
28
+ typography?: ThemeTypographyTokens;
29
+ radius?: ThemeRadiusTokens;
30
+ shadow?: ThemeShadowTokens;
31
+ density?: ThemeDensityTokens;
32
+ motion?: ThemeMotionTokens;
33
+ metadata?: {
34
+ description?: string;
35
+ tags?: string[];
36
+ preview?: string;
37
+ license?: string;
38
+ };
39
+ };
40
+ export type ThemeTokenSection = 'palette' | 'semantic' | 'product' | 'typography' | 'radius' | 'shadow' | 'density' | 'motion';
41
+ export type ThemeTokenPath = `${ThemeTokenSection}.${string}`;
42
+ export type ThemeTokenIndex = Record<ThemeTokenPath, ThemeTokenPrimitive>;
43
+ export type ResolvedThemeManifest = {
44
+ manifest: ThemeManifest;
45
+ rawTokens: ThemeTokenIndex;
46
+ resolvedTokens: ThemeTokenIndex;
47
+ };
48
+ export type ThemeValidationIssue = {
49
+ path: string;
50
+ message: string;
51
+ };
52
+ export type ThemeValidationResult = {
53
+ valid: true;
54
+ errors: [];
55
+ } | {
56
+ valid: false;
57
+ errors: ThemeValidationIssue[];
58
+ };
59
+ //# sourceMappingURL=themeManifest.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeManifest.types.d.ts","sourceRoot":"","sources":["../../src/schema/themeManifest.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ThemeManifest } from '../schema/themeManifest.types';
2
+ export declare const officialMonochromeLightTheme: ThemeManifest;
3
+ export declare const officialMonochromeDarkTheme: ThemeManifest;
4
+ export declare const officialMonochromeLightHighContrastTheme: ThemeManifest;
5
+ export declare const officialMonochromeDarkHighContrastTheme: ThemeManifest;
6
+ export declare const officialThemes: readonly [ThemeManifest, ThemeManifest, ThemeManifest, ThemeManifest];
7
+ export declare const defaultFallbackTheme: ThemeManifest;
8
+ //# sourceMappingURL=defaultFallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultFallback.d.ts","sourceRoot":"","sources":["../../src/tokens/defaultFallback.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAO,MAAM,4BAA4B,EACZ,aAAa,CAAC;AAE3C,eAAO,MAAM,2BAA2B,EACZ,aAAa,CAAC;AAE1C,eAAO,MAAM,wCAAwC,EACZ,aAAa,CAAC;AAEvD,eAAO,MAAM,uCAAuC,EACZ,aAAa,CAAC;AAEtD,eAAO,MAAM,cAAc,uEAKkB,CAAC;AAE9C,eAAO,MAAM,oBAAoB,eAA+B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ThemeManifest, ThemeTokenIndex, ThemeTokenPath, ThemeTokenPrimitive, ThemeTokenTree } from '../schema/themeManifest.types';
2
+ export declare const THEME_TOKEN_SECTIONS: readonly ["semantic", "product", "typography", "radius", "shadow", "density", "motion"];
3
+ export declare const isThemeTokenTree: (value: unknown) => value is ThemeTokenTree;
4
+ export declare const isThemeTokenPrimitive: (value: unknown) => value is ThemeTokenPrimitive;
5
+ export declare const flattenThemeTokens: (manifest: ThemeManifest) => ThemeTokenIndex;
6
+ export declare const tokenPathToCssVariable: (path: ThemeTokenPath | string) => string;
7
+ export declare const extractReferencePath: (value: ThemeTokenPrimitive) => `palette.${string}` | `semantic.${string}` | `product.${string}` | `typography.${string}` | `radius.${string}` | `shadow.${string}` | `density.${string}` | `motion.${string}` | undefined;
8
+ //# sourceMappingURL=tokenPaths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenPaths.d.ts","sourceRoot":"","sources":["../../src/tokens/tokenPaths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,cAAc,EACd,mBAAmB,EAEnB,cAAc,EACf,MAAM,+BAA+B,CAAC;AAGvC,eAAO,MAAM,oBAAoB,yFAQoC,CAAC;AA2DtE,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAE1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,KACb,KAAK,IAAI,mBAEX,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,aAAa,KACtB,eAgBF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,MAAM,cAAc,GAAG,MAAM,KAC5B,MAwEF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,mBAAmB,+LAQ9D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ThemeManifest, ThemeValidationResult } from '../schema/themeManifest.types';
2
+ export type ValidateThemeManifestOptions = {
3
+ fallbackManifest?: ThemeManifest;
4
+ };
5
+ export declare const validateThemeManifest: (input: unknown, options?: ValidateThemeManifestOptions) => ThemeValidationResult;
6
+ //# sourceMappingURL=validateThemeManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateThemeManifest.d.ts","sourceRoot":"","sources":["../../src/validation/validateThemeManifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAGb,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AAYvC,MAAM,MAAM,4BAA4B,GAAG;IACzC,gBAAgB,CAAC,EAAE,aAAa,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,EACd,UAAS,4BAAiC,KACzC,qBA4GF,CAAC"}
@@ -0,0 +1,166 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "id": "official.monochrome.dark-high-contrast",
4
+ "name": "Monochrome Dark High Contrast",
5
+ "author": "Prodivix",
6
+ "source": "official",
7
+ "mode": "dark",
8
+ "semantic": {
9
+ "surface": {
10
+ "canvas": "{palette.gray.13}",
11
+ "panel": "{palette.gray.13}",
12
+ "raised": "{palette.gray.13}"
13
+ },
14
+ "text": {
15
+ "primary": "{palette.gray.0}",
16
+ "secondary": "{palette.gray.0}",
17
+ "muted": "{palette.gray.2}",
18
+ "inverse": "{palette.gray.13}"
19
+ },
20
+ "border": {
21
+ "subtle": "{palette.gray.0}",
22
+ "default": "{palette.gray.0}",
23
+ "strong": "{palette.gray.0}"
24
+ },
25
+ "accent": {
26
+ "default": "{palette.gray.0}",
27
+ "hover": "{palette.gray.2}"
28
+ },
29
+ "success": {
30
+ "default": "{palette.green.4}",
31
+ "hover": "{palette.green.2}",
32
+ "subtle": "{palette.green.12}",
33
+ "subtleHover": "{palette.green.11}"
34
+ },
35
+ "danger": {
36
+ "default": "{palette.red.4}",
37
+ "hover": "{palette.red.2}",
38
+ "subtle": "{palette.red.12}",
39
+ "subtleHover": "{palette.red.11}"
40
+ },
41
+ "warning": {
42
+ "default": "{palette.yellow.4}",
43
+ "hover": "{palette.yellow.2}",
44
+ "subtle": "{palette.yellow.12}",
45
+ "subtleHover": "{palette.yellow.11}"
46
+ },
47
+ "info": {
48
+ "default": "{palette.blue.4}",
49
+ "hover": "{palette.blue.2}",
50
+ "subtle": "{palette.blue.12}",
51
+ "subtleHover": "{palette.blue.11}"
52
+ }
53
+ },
54
+ "product": {
55
+ "editor": {
56
+ "canvasBackground": "{semantic.surface.canvas}",
57
+ "selectionOutline": "{semantic.accent.default}",
58
+ "dropIndicator": "{semantic.accent.default}"
59
+ },
60
+ "editorBar": {
61
+ "background": "{palette.gray.0}",
62
+ "icon": "{palette.gray.13}",
63
+ "iconHover": "{palette.gray.13}",
64
+ "iconHoverBackground": "rgb(0 0 0 / 0.18)"
65
+ },
66
+ "inspector": {
67
+ "rowHover": "{palette.gray.11}",
68
+ "fieldLabel": "{semantic.text.primary}",
69
+ "fieldControl": "{semantic.text.primary}"
70
+ },
71
+ "nodeGraph": {
72
+ "nodeBackground": "{semantic.surface.panel}",
73
+ "nodeBorder": "{semantic.border.strong}",
74
+ "portColor": "{semantic.text.primary}"
75
+ },
76
+ "home": {
77
+ "logo": "{palette.gray.0}",
78
+ "heroText": "{palette.gray.0}",
79
+ "heroHighlight": "{palette.gray.0}",
80
+ "subtitle": "{palette.gray.2}",
81
+ "navIcon": "{palette.gray.0}",
82
+ "navIconHoverBg": "{palette.gray.11}",
83
+ "navIconHoverText": "{palette.gray.0}",
84
+ "profileBg": "{palette.gray.13}",
85
+ "profileHoverShadow": "0 0 0 2px rgb(255 255 255 / 1)",
86
+ "footerText": "{palette.gray.0}"
87
+ }
88
+ },
89
+ "typography": {
90
+ "fontFamily": {
91
+ "ui": "Inter, 'HarmonyOS Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
92
+ "mono": "JetBrains Mono, Consolas, monospace",
93
+ "canvas": "{typography.fontFamily.ui}"
94
+ },
95
+ "fontSize": {
96
+ "micro": "10px",
97
+ "caption": "11px",
98
+ "2xs": "10px",
99
+ "xs": "12px",
100
+ "sm": "13px",
101
+ "md": "14px",
102
+ "lg": "16px",
103
+ "xl": "18px",
104
+ "2xl": "20px",
105
+ "3xl": "24px",
106
+ "4xl": "30px",
107
+ "5xl": "36px",
108
+ "hero": "64px"
109
+ },
110
+ "fontWeight": {
111
+ "regular": "500",
112
+ "medium": "600",
113
+ "semibold": "700",
114
+ "bold": "800",
115
+ "extrabold": "900"
116
+ },
117
+ "lineHeight": {
118
+ "tight": "1",
119
+ "compact": "1.3",
120
+ "editor": "1.45",
121
+ "normal": "1.5"
122
+ }
123
+ },
124
+ "radius": {
125
+ "none": "0",
126
+ "sm": "4px",
127
+ "md": "8px",
128
+ "lg": "12px",
129
+ "full": "9999px"
130
+ },
131
+ "shadow": {
132
+ "sm": "0 0 0 1px rgb(255 255 255 / 1)",
133
+ "md": "0 0 0 2px rgb(255 255 255 / 1)",
134
+ "lg": "0 0 0 3px rgb(255 255 255 / 1)"
135
+ },
136
+ "density": {
137
+ "spacing": {
138
+ "none": "0",
139
+ "xs": "4px",
140
+ "sm": "8px",
141
+ "md": "16px",
142
+ "lg": "24px",
143
+ "xl": "32px",
144
+ "2xl": "48px"
145
+ },
146
+ "controlHeight": {
147
+ "sm": "24px",
148
+ "md": "28px",
149
+ "lg": "32px"
150
+ }
151
+ },
152
+ "motion": {
153
+ "duration": {
154
+ "fast": "150ms",
155
+ "normal": "300ms"
156
+ },
157
+ "easing": {
158
+ "standard": "ease"
159
+ }
160
+ },
161
+ "metadata": {
162
+ "description": "High contrast dark theme with maximum text and border contrast for accessibility.",
163
+ "tags": ["official", "monochrome", "dark", "high-contrast", "a11y"],
164
+ "license": "MIT"
165
+ }
166
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "id": "official.monochrome.dark",
4
+ "name": "Monochrome Dark",
5
+ "author": "Prodivix",
6
+ "source": "official",
7
+ "mode": "dark",
8
+ "semantic": {
9
+ "surface": {
10
+ "canvas": "{palette.gray.12}",
11
+ "panel": "{palette.gray.11}",
12
+ "raised": "{palette.gray.10}"
13
+ },
14
+ "text": {
15
+ "primary": "{palette.gray.0}",
16
+ "secondary": "{palette.gray.4}",
17
+ "muted": "{palette.gray.7}",
18
+ "inverse": "{palette.gray.13}"
19
+ },
20
+ "border": {
21
+ "subtle": "{palette.gray.10}",
22
+ "default": "{palette.gray.9}",
23
+ "strong": "{palette.gray.7}"
24
+ },
25
+ "accent": {
26
+ "default": "{palette.gray.0}",
27
+ "hover": "{palette.gray.2}"
28
+ },
29
+ "success": {
30
+ "default": "{palette.green.5}",
31
+ "hover": "{palette.green.4}",
32
+ "subtle": "{palette.green.11}",
33
+ "subtleHover": "{palette.green.10}"
34
+ },
35
+ "danger": {
36
+ "default": "{palette.red.5}",
37
+ "hover": "{palette.red.4}",
38
+ "subtle": "{palette.red.11}",
39
+ "subtleHover": "{palette.red.10}"
40
+ },
41
+ "warning": {
42
+ "default": "{palette.yellow.5}",
43
+ "hover": "{palette.yellow.4}",
44
+ "subtle": "{palette.yellow.11}",
45
+ "subtleHover": "{palette.yellow.10}"
46
+ },
47
+ "info": {
48
+ "default": "{palette.blue.5}",
49
+ "hover": "{palette.blue.4}",
50
+ "subtle": "{palette.blue.11}",
51
+ "subtleHover": "{palette.blue.10}"
52
+ }
53
+ },
54
+ "product": {
55
+ "editor": {
56
+ "canvasBackground": "{semantic.surface.canvas}",
57
+ "selectionOutline": "{semantic.accent.default}",
58
+ "dropIndicator": "{semantic.accent.default}"
59
+ },
60
+ "editorBar": {
61
+ "background": "{palette.gray.13}",
62
+ "icon": "{palette.gray.3}",
63
+ "iconHover": "{palette.gray.0}",
64
+ "iconHoverBackground": "rgb(255 255 255 / 0.08)"
65
+ },
66
+ "inspector": {
67
+ "rowHover": "{palette.gray.10}",
68
+ "fieldLabel": "{semantic.text.secondary}",
69
+ "fieldControl": "{semantic.text.primary}"
70
+ },
71
+ "nodeGraph": {
72
+ "nodeBackground": "{semantic.surface.panel}",
73
+ "nodeBorder": "{semantic.border.default}",
74
+ "portColor": "{semantic.text.secondary}"
75
+ },
76
+ "home": {
77
+ "logo": "{palette.gray.0}",
78
+ "heroText": "{palette.gray.1}",
79
+ "heroHighlight": "{palette.gray.0}",
80
+ "subtitle": "{palette.gray.6}",
81
+ "navIcon": "{palette.gray.4}",
82
+ "navIconHoverBg": "{palette.gray.11}",
83
+ "navIconHoverText": "{palette.gray.0}",
84
+ "profileBg": "{palette.gray.11}",
85
+ "profileHoverShadow": "0 10px 18px rgb(0 0 0 / 0.32)",
86
+ "footerText": "{palette.gray.4}"
87
+ }
88
+ },
89
+ "typography": {
90
+ "fontFamily": {
91
+ "ui": "Inter, 'HarmonyOS Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
92
+ "mono": "JetBrains Mono, Consolas, monospace",
93
+ "canvas": "{typography.fontFamily.ui}"
94
+ },
95
+ "fontSize": {
96
+ "micro": "10px",
97
+ "caption": "11px",
98
+ "2xs": "10px",
99
+ "xs": "12px",
100
+ "sm": "13px",
101
+ "md": "14px",
102
+ "lg": "16px",
103
+ "xl": "18px",
104
+ "2xl": "20px",
105
+ "3xl": "24px",
106
+ "4xl": "30px",
107
+ "5xl": "36px",
108
+ "hero": "64px"
109
+ },
110
+ "fontWeight": {
111
+ "regular": "400",
112
+ "medium": "500",
113
+ "semibold": "600",
114
+ "bold": "700",
115
+ "extrabold": "800"
116
+ },
117
+ "lineHeight": {
118
+ "tight": "1",
119
+ "compact": "1.3",
120
+ "editor": "1.45",
121
+ "normal": "1.5"
122
+ }
123
+ },
124
+ "radius": {
125
+ "none": "0",
126
+ "sm": "4px",
127
+ "md": "8px",
128
+ "lg": "12px",
129
+ "full": "9999px"
130
+ },
131
+ "shadow": {
132
+ "sm": "0 1px 2px 0 rgb(0 0 0 / 0.28)",
133
+ "md": "0 4px 6px -1px rgb(0 0 0 / 0.32)",
134
+ "lg": "0 10px 15px -3px rgb(0 0 0 / 0.36)"
135
+ },
136
+ "density": {
137
+ "spacing": {
138
+ "none": "0",
139
+ "xs": "4px",
140
+ "sm": "8px",
141
+ "md": "16px",
142
+ "lg": "24px",
143
+ "xl": "32px",
144
+ "2xl": "48px"
145
+ },
146
+ "controlHeight": {
147
+ "sm": "24px",
148
+ "md": "28px",
149
+ "lg": "32px"
150
+ }
151
+ },
152
+ "motion": {
153
+ "duration": {
154
+ "fast": "150ms",
155
+ "normal": "300ms"
156
+ },
157
+ "easing": {
158
+ "standard": "ease"
159
+ }
160
+ },
161
+ "metadata": {
162
+ "description": "Default monochrome dark theme with stable multi-color 0-13 palette scales.",
163
+ "tags": ["official", "monochrome", "dark"],
164
+ "license": "MIT"
165
+ }
166
+ }