@verdify/tokens 0.6.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.
@@ -0,0 +1,228 @@
1
+ {
2
+ "BorderWidth0": "0",
3
+ "BorderWidth2": "2px",
4
+ "BorderWidth4": "4px",
5
+ "BorderWidthDefault": "1px",
6
+ "BreakpointSm": "40rem",
7
+ "BreakpointMd": "48rem",
8
+ "BreakpointLg": "64rem",
9
+ "BreakpointXl": "80rem",
10
+ "Breakpoint2xl": "96rem",
11
+ "ColorBrandBrand": "#7c5cff",
12
+ "ColorBrandBrandDeep": "#5b3ee8",
13
+ "ColorNeutralObsidian300": "#c8d0de",
14
+ "ColorNeutralObsidian400": "#8a95a8",
15
+ "ColorNeutralObsidian500": "#4a5567",
16
+ "ColorNeutralObsidian600": "#2a3142",
17
+ "ColorNeutralObsidian700": "#1f2638",
18
+ "ColorNeutralObsidian800": "#161b2a",
19
+ "ColorNeutralObsidian850": "#0f1320",
20
+ "ColorNeutralObsidian900": "#0b0f19",
21
+ "ColorNeutralObsidian950": "#060912",
22
+ "ColorNeutralMist50": "#fbfcfe",
23
+ "ColorNeutralMist100": "#f4f6fa",
24
+ "ColorNeutralMist200": "#e8ecf4",
25
+ "ColorNeutralMist300": "#d6dce8",
26
+ "ColorNeutralMist400": "#b0baca",
27
+ "ColorNeutralMist500": "#8a95a8",
28
+ "ColorNeutralMist600": "#4a5567",
29
+ "ColorNeutralMist800": "#2a3142",
30
+ "ColorNeutralMist950": "#0b0f19",
31
+ "ColorSemanticVerified": "#00d17a",
32
+ "ColorSemanticVerifiedStrong": "#007947",
33
+ "ColorSemanticSignal": "#4d9dff",
34
+ "ColorSemanticSignalStrong": "#346bad",
35
+ "ColorSemanticCaution": "#f5a623",
36
+ "ColorSemanticCautionStrong": "#8e6014",
37
+ "ColorSemanticCritical": "#ff4d4d",
38
+ "ColorSemanticCriticalStrong": "#be3939",
39
+ "ColorAdaptiveDawnSurface": "#f0eee9",
40
+ "ColorAdaptiveDawnText": "#2a3142",
41
+ "ColorAdaptiveDaySurface": "#f4f6fa",
42
+ "ColorAdaptiveDayText": "#2a3142",
43
+ "ColorAdaptiveDuskSurface": "#1a1a26",
44
+ "ColorAdaptiveDuskText": "#c8d0de",
45
+ "ColorAdaptiveNightSurface": "#060912",
46
+ "ColorAdaptiveNightText": "#c8d0de",
47
+ "ColorSurfaceCanvas": "#f4f6fa",
48
+ "ColorSurfaceRaised": "#e8ecf4",
49
+ "ColorSurfaceInput": "#d6dce8",
50
+ "ColorSurfaceBorder": "#b0baca",
51
+ "ColorSurfaceBorderMuted": "#8a95a8",
52
+ "ColorTextPrimary": "#0b0f19",
53
+ "ColorTextSecondary": "#4a5567",
54
+ "ColorTextMuted": "#8a95a8",
55
+ "ColorTextDisabled": "#b0baca",
56
+ "ColorTextInverse": "#fbfcfe",
57
+ "ColorTextOnBrand": "#fbfcfe",
58
+ "ColorScrimLight": "#0b0f1980",
59
+ "ColorScrimDark": "#060912b3",
60
+ "ColorActionPrimaryBg": "#7c5cff",
61
+ "ColorActionPrimaryFg": "#fbfcfe",
62
+ "ColorActionPrimaryBorder": "#7c5cff",
63
+ "ColorActionPrimaryBgHover": "#5b3ee8",
64
+ "ColorActionPrimaryBgActive": "#5b3ee8",
65
+ "ColorActionSecondaryBg": "#e8ecf4",
66
+ "ColorActionSecondaryFg": "#0b0f19",
67
+ "ColorActionSecondaryBorder": "#b0baca",
68
+ "ColorActionSecondaryBgHover": "#d6dce8",
69
+ "ColorActionGhostFg": "#0b0f19",
70
+ "ColorActionGhostBgHover": "#e8ecf4",
71
+ "ColorActionDestructiveBg": "#ff4d4d",
72
+ "ColorActionDestructiveFg": "#fbfcfe",
73
+ "ColorActionDestructiveBorder": "#ff4d4d",
74
+ "ColorStatusVerifiedFg": "#007947",
75
+ "ColorStatusVerifiedBg": "#e8ecf4",
76
+ "ColorStatusVerifiedBorder": "#007947",
77
+ "ColorStatusVerifiedAccent": "#00d17a",
78
+ "ColorStatusSignalFg": "#346bad",
79
+ "ColorStatusSignalBg": "#e8ecf4",
80
+ "ColorStatusSignalBorder": "#346bad",
81
+ "ColorStatusSignalAccent": "#4d9dff",
82
+ "ColorStatusCautionFg": "#8e6014",
83
+ "ColorStatusCautionBg": "#e8ecf4",
84
+ "ColorStatusCautionBorder": "#8e6014",
85
+ "ColorStatusCautionAccent": "#f5a623",
86
+ "ColorStatusCriticalFg": "#be3939",
87
+ "ColorStatusCriticalBg": "#e8ecf4",
88
+ "ColorStatusCriticalBorder": "#be3939",
89
+ "ColorStatusCriticalAccent": "#ff4d4d",
90
+ "ColorBorderDefault": "#b0baca",
91
+ "ColorBorderStrong": "#8a95a8",
92
+ "ColorBorderFocus": "#4d9dff",
93
+ "ColorControlBg": "#d6dce8",
94
+ "ColorControlBorder": "#b0baca",
95
+ "ColorControlFg": "#0b0f19",
96
+ "ColorControlPlaceholder": "#8a95a8",
97
+ "ContainerSm": "40rem",
98
+ "ContainerMd": "48rem",
99
+ "ContainerLg": "64rem",
100
+ "ContainerXl": "80rem",
101
+ "Container2xl": "96rem",
102
+ "FocusRingWidth": "2px",
103
+ "FocusRingColor": "#4d9dff",
104
+ "FocusRingOffset": "2px",
105
+ "FontFamilySans": "Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
106
+ "FontFamilyMono": "'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace",
107
+ "FontWeightRegular": "400",
108
+ "FontWeightMedium": "500",
109
+ "FontWeightSemibold": "600",
110
+ "FontWeightBold": "700",
111
+ "MotionDurationInstant": "0ms",
112
+ "MotionDurationFast": "120ms",
113
+ "MotionDurationBase": "200ms",
114
+ "MotionDurationDeliberate": "350ms",
115
+ "MotionDurationAmbient": "1200ms",
116
+ "MotionEasingVerdify": "cubic-bezier(0.2, 0.8, 0.2, 1)",
117
+ "MotionEasingEmphasis": "cubic-bezier(0.34, 1.56, 0.64, 1)",
118
+ "MotionEasingAmbient": "cubic-bezier(0.4, 0, 0.6, 1)",
119
+ "MotionEasingExit": "cubic-bezier(0.4, 0, 1, 1)",
120
+ "MotionTransitionMicroDuration": "120ms",
121
+ "MotionTransitionMicroEasing": "cubic-bezier(0.2, 0.8, 0.2, 1)",
122
+ "MotionTransitionLayoutDuration": "200ms",
123
+ "MotionTransitionLayoutEasing": "cubic-bezier(0.2, 0.8, 0.2, 1)",
124
+ "MotionTransitionModalDuration": "350ms",
125
+ "MotionTransitionModalEasing": "cubic-bezier(0.2, 0.8, 0.2, 1)",
126
+ "MotionTransitionAmbientDuration": "1200ms",
127
+ "MotionTransitionAmbientEasing": "cubic-bezier(0.4, 0, 0.6, 1)",
128
+ "Opacity0": "0",
129
+ "Opacity5": "0.05",
130
+ "Opacity10": "0.1",
131
+ "Opacity20": "0.2",
132
+ "Opacity30": "0.3",
133
+ "Opacity40": "0.4",
134
+ "Opacity50": "0.5",
135
+ "Opacity60": "0.6",
136
+ "Opacity70": "0.7",
137
+ "Opacity80": "0.8",
138
+ "Opacity90": "0.9",
139
+ "Opacity95": "0.95",
140
+ "Opacity100": "1",
141
+ "RadiusNone": "0",
142
+ "RadiusSm": "0.25rem",
143
+ "RadiusMd": "0.5rem",
144
+ "RadiusLg": "0.75rem",
145
+ "RadiusXl": "1rem",
146
+ "RadiusFull": "9999px",
147
+ "ShadowNone": "none",
148
+ "ShadowSm": "0 1px 2px 0 rgb(11 15 25 / 0.05)",
149
+ "ShadowMd": "0 4px 6px -1px rgb(11 15 25 / 0.08), 0 2px 4px -2px rgb(11 15 25 / 0.08)",
150
+ "ShadowLg": "0 10px 15px -3px rgb(11 15 25 / 0.10), 0 4px 6px -4px rgb(11 15 25 / 0.10)",
151
+ "ShadowXl": "0 20px 25px -5px rgb(11 15 25 / 0.10), 0 8px 10px -6px rgb(11 15 25 / 0.10)",
152
+ "SizeIconSm": "1rem",
153
+ "SizeIconMd": "1.25rem",
154
+ "SizeIconLg": "1.5rem",
155
+ "SizeIconXl": "2rem",
156
+ "SizeTargetMobile": "2.75rem",
157
+ "SizeTargetDesktop": "2.5rem",
158
+ "Space0": "0",
159
+ "Space1": "0.25rem",
160
+ "Space2": "0.5rem",
161
+ "Space3": "0.75rem",
162
+ "Space4": "1rem",
163
+ "Space5": "1.25rem",
164
+ "Space6": "1.5rem",
165
+ "Space7": "1.75rem",
166
+ "Space8": "2rem",
167
+ "Space9": "2.25rem",
168
+ "Space10": "2.5rem",
169
+ "Space11": "2.75rem",
170
+ "Space12": "3rem",
171
+ "Space14": "3.5rem",
172
+ "Space16": "4rem",
173
+ "Space20": "5rem",
174
+ "Space24": "6rem",
175
+ "Space28": "7rem",
176
+ "Space32": "8rem",
177
+ "StateOpacityHover": "0.08",
178
+ "StateOpacityPressed": "0.12",
179
+ "StateOpacityFocus": "0.12",
180
+ "StateOpacityDisabled": "0.38",
181
+ "StateOpacityDragged": "0.16",
182
+ "TextDisplaySize": "3.5rem",
183
+ "TextDisplayLineHeight": "1.05",
184
+ "TextDisplayLetterSpacing": "-0.025em",
185
+ "TextDisplayWeight": "600",
186
+ "TextH1Size": "2.25rem",
187
+ "TextH1LineHeight": "1.15",
188
+ "TextH1LetterSpacing": "-0.022em",
189
+ "TextH1Weight": "600",
190
+ "TextH2Size": "1.625rem",
191
+ "TextH2LineHeight": "1.25",
192
+ "TextH2LetterSpacing": "-0.018em",
193
+ "TextH2Weight": "500",
194
+ "TextH3Size": "1.25rem",
195
+ "TextH3LineHeight": "1.35",
196
+ "TextH3LetterSpacing": "-0.015em",
197
+ "TextH3Weight": "500",
198
+ "TextBodyLgSize": "1.0625rem",
199
+ "TextBodyLgLineHeight": "1.55",
200
+ "TextBodyLgLetterSpacing": "0",
201
+ "TextBodyLgWeight": "400",
202
+ "TextBodySize": "0.9375rem",
203
+ "TextBodyLineHeight": "1.55",
204
+ "TextBodyLetterSpacing": "0",
205
+ "TextBodyWeight": "400",
206
+ "TextCaptionSize": "0.75rem",
207
+ "TextCaptionLineHeight": "1.45",
208
+ "TextCaptionLetterSpacing": "0.005em",
209
+ "TextCaptionWeight": "400",
210
+ "TextLabelSize": "0.6875rem",
211
+ "TextLabelLineHeight": "1.4",
212
+ "TextLabelLetterSpacing": "0.18em",
213
+ "TextLabelWeight": "500",
214
+ "TextMonoSmSize": "0.75rem",
215
+ "TextMonoSmLineHeight": "1.5",
216
+ "TextMonoSmLetterSpacing": "0",
217
+ "TextMonoSmWeight": "400",
218
+ "TextMonoSize": "0.875rem",
219
+ "TextMonoLineHeight": "1.55",
220
+ "TextMonoLetterSpacing": "0",
221
+ "TextMonoWeight": "400",
222
+ "ZIndexBase": "0",
223
+ "ZIndexDropdown": "1000",
224
+ "ZIndexSticky": "1100",
225
+ "ZIndexModal": "1200",
226
+ "ZIndexPopover": "1300",
227
+ "ZIndexToast": "1400"
228
+ }
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ export const BorderWidth0 = "0"; // No border
6
+ export const BorderWidth2 = "2px"; // Emphasized border width
7
+ export const BorderWidth4 = "4px"; // Heavy border width — reserved for focus indicators or active states
8
+ export const BorderWidthDefault = "1px"; // Default border width
9
+ export const BreakpointSm = "40rem"; // Small breakpoint (640px) — landscape phones
10
+ export const BreakpointMd = "48rem"; // Medium breakpoint (768px) — tablets portrait
11
+ export const BreakpointLg = "64rem"; // Large breakpoint (1024px) — tablets landscape, small laptops
12
+ export const BreakpointXl = "80rem"; // Extra large breakpoint (1280px) — desktops
13
+ export const Breakpoint2xl = "96rem"; // 2X large breakpoint (1536px) — wide desktops
14
+ export const ColorBrandBrand = "#7c5cff"; // Sovereign Violet — the single brand anchor. Identity color; the logo seam and primary brand moments. Sits outside the traffic-light status register.
15
+ export const ColorBrandBrandDeep = "#5b3ee8"; // Companion to brand.brand — used on light surfaces where #7C5CFF fails WCAG 2.2 non-text contrast (>=3:1). Luminance shift only.
16
+ export const ColorNeutralObsidian300 = "#c8d0de"; // Primary text on dark
17
+ export const ColorNeutralObsidian400 = "#8a95a8"; // Secondary text
18
+ export const ColorNeutralObsidian500 = "#4a5567"; // Muted text
19
+ export const ColorNeutralObsidian600 = "#2a3142"; // Muted border
20
+ export const ColorNeutralObsidian700 = "#1f2638"; // Border / divider
21
+ export const ColorNeutralObsidian800 = "#161b2a"; // Input / well
22
+ export const ColorNeutralObsidian850 = "#0f1320"; // Raised surface · cards
23
+ export const ColorNeutralObsidian900 = "#0b0f19"; // Default dark canvas
24
+ export const ColorNeutralObsidian950 = "#060912"; // Deepest backdrop · night-band canvas
25
+ export const ColorNeutralMist50 = "#fbfcfe"; // Deepest light backdrop
26
+ export const ColorNeutralMist100 = "#f4f6fa"; // Default light canvas
27
+ export const ColorNeutralMist200 = "#e8ecf4"; // Raised surface · cards
28
+ export const ColorNeutralMist300 = "#d6dce8"; // Input / well
29
+ export const ColorNeutralMist400 = "#b0baca"; // Border / divider
30
+ export const ColorNeutralMist500 = "#8a95a8"; // Muted (shared with obsidian.400)
31
+ export const ColorNeutralMist600 = "#4a5567"; // Secondary text (shared with obsidian.500)
32
+ export const ColorNeutralMist800 = "#2a3142"; // Strong text
33
+ export const ColorNeutralMist950 = "#0b0f19"; // Highest-contrast text (shared with obsidian.900)
34
+ export const ColorSemanticVerified = "#00d17a"; // Trust / success / verification passed — bright decorative accent (icons/fills). Fails WCAG AA as text on light surfaces; use verified-strong for readable fg/border.
35
+ export const ColorSemanticVerifiedStrong = "#007947"; // Verified, darkened to WCAG AA — in-hue luminance shift of verified; 4.64:1 on Mist-200 (#E8ECF4). Status chip foreground/border.
36
+ export const ColorSemanticSignal = "#4d9dff"; // Info / hyperlinks / neutral interactive accent — bright decorative accent. Fails WCAG AA as text on light surfaces; use signal-strong for readable fg/border.
37
+ export const ColorSemanticSignalStrong = "#346bad"; // Signal, darkened to WCAG AA — in-hue luminance shift of signal; 4.60:1 on Mist-200 (#E8ECF4). Status chip foreground/border.
38
+ export const ColorSemanticCaution = "#f5a623"; // Warning / pending / verification in progress — bright decorative accent. Fails WCAG AA as text on light surfaces; use caution-strong for readable fg/border.
39
+ export const ColorSemanticCautionStrong = "#8e6014"; // Caution, darkened to WCAG AA — in-hue luminance shift of caution; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border.
40
+ export const ColorSemanticCritical = "#ff4d4d"; // Error / verification failure / destructive action — bright decorative accent. Fails WCAG AA as text on light surfaces; use critical-strong for readable fg/border.
41
+ export const ColorSemanticCriticalStrong = "#be3939"; // Critical, darkened to WCAG AA — in-hue luminance shift of critical; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border.
42
+ export const ColorAdaptiveDawnSurface = "#f0eee9"; // Adaptive dawn band surface (05:00-09:00)
43
+ export const ColorAdaptiveDawnText = "#2a3142"; // Adaptive dawn band primary text (05:00-09:00)
44
+ export const ColorAdaptiveDaySurface = "#f4f6fa"; // Adaptive day band surface (09:00-17:00)
45
+ export const ColorAdaptiveDayText = "#2a3142"; // Adaptive day band primary text (09:00-17:00)
46
+ export const ColorAdaptiveDuskSurface = "#1a1a26"; // Adaptive dusk band surface (17:00-21:00)
47
+ export const ColorAdaptiveDuskText = "#c8d0de"; // Adaptive dusk band primary text (17:00-21:00)
48
+ export const ColorAdaptiveNightSurface = "#060912"; // Adaptive night band surface (21:00-05:00)
49
+ export const ColorAdaptiveNightText = "#c8d0de"; // Adaptive night band primary text (21:00-05:00)
50
+ export const ColorSurfaceCanvas = "#f4f6fa"; // Default canvas (light); reassigned per adaptive band at runtime. Per BR-1 §4.2 'Default light canvas'.
51
+ export const ColorSurfaceRaised = "#e8ecf4"; // Raised surface — cards. Per BR-1 §4.2 'Raised surface · cards'.
52
+ export const ColorSurfaceInput = "#d6dce8"; // Input / well. Per BR-1 §4.2 'Input / well'.
53
+ export const ColorSurfaceBorder = "#b0baca"; // Border / divider. Per BR-1 §4.2 'Border / divider'.
54
+ export const ColorSurfaceBorderMuted = "#8a95a8"; // Muted border — implicit in Mist scale (mid-range collision with Obsidian 600). Per BR-1 §4.2.
55
+ export const ColorTextPrimary = "#0b0f19"; // Primary text on canvas; reassigned per adaptive band. Per BR-1 §4.2 'Highest-contrast text'.
56
+ export const ColorTextSecondary = "#4a5567"; // Secondary text role; aliases to mist.600, whose hex (#4A5567) is shared with obsidian.500 per BR-1 §4.2 mid-range collision.
57
+ export const ColorTextMuted = "#8a95a8"; // Muted text — shared with obsidian.400 per BR-1 §4.2 mid-range collision. Contrast on surface.canvas is ~2.8:1 — intentionally below WCAG AA for body text; use only for de-emphasised auxiliary text where ≥3:1 (UI components) is the relevant bar.
58
+ export const ColorTextDisabled = "#b0baca"; // Disabled text — low-contrast, deliberate. Aliases mist.400; downstream consumers may alternatively compose text.primary with state.opacity.disabled (0.38) for a different visual register.
59
+ export const ColorTextInverse = "#fbfcfe"; // Text on dark surfaces (e.g. obsidian backdrop, dark scrim). Aliases mist.50 — the lightest neutral. Distinct from on-brand: inverse is for neutral-dark contexts; on-brand is reserved for brand backgrounds.
60
+ export const ColorTextOnBrand = "#fbfcfe"; // Text on brand backgrounds (e.g. CTA buttons). Constant per brand discipline.
61
+ export const ColorScrimLight = "#0b0f1980"; // Modal/sheet backdrop on light surfaces — obsidian-900 at 50% opacity (per BR-2 spec §4).
62
+ export const ColorScrimDark = "#060912b3"; // Modal/sheet backdrop on dark surfaces — obsidian-950 at 70% opacity for stronger isolation.
63
+ export const ColorActionPrimaryBg = "#7c5cff"; // Primary action background — Sovereign Violet. The single high-emphasis CTA per surface.
64
+ export const ColorActionPrimaryFg = "#fbfcfe"; // Text/icon on a primary action.
65
+ export const ColorActionPrimaryBorder = "#7c5cff"; // Primary action border — matches bg.
66
+ export const ColorActionPrimaryBgHover = "#5b3ee8"; // Primary action hover — deep companion.
67
+ export const ColorActionPrimaryBgActive = "#5b3ee8"; // Primary action pressed/active.
68
+ export const ColorActionSecondaryBg = "#e8ecf4"; // Secondary action background — neutral raised surface.
69
+ export const ColorActionSecondaryFg = "#0b0f19"; // Text/icon on a secondary action.
70
+ export const ColorActionSecondaryBorder = "#b0baca"; // Secondary action border.
71
+ export const ColorActionSecondaryBgHover = "#d6dce8"; // Secondary action hover.
72
+ export const ColorActionGhostFg = "#0b0f19"; // Ghost action text/icon — no fill until hover.
73
+ export const ColorActionGhostBgHover = "#e8ecf4"; // Ghost action hover fill.
74
+ export const ColorActionDestructiveBg = "#ff4d4d"; // Destructive action background — Critical. A status color used for a destructive control; never the brand.
75
+ export const ColorActionDestructiveFg = "#fbfcfe"; // Text/icon on a destructive action.
76
+ export const ColorActionDestructiveBorder = "#ff4d4d"; // Destructive action border.
77
+ export const ColorStatusVerifiedFg = "#007947"; // Verified status foreground — Verified Green darkened to WCAG AA (#007947, ≥4.5:1 on the chip bg). The in-product success state; never the brand.
78
+ export const ColorStatusVerifiedBg = "#e8ecf4"; // Verified status chip background — neutral; color carried by fg/border (restraint over volume).
79
+ export const ColorStatusVerifiedBorder = "#007947"; // Verified status border — AA-dark shade (≥3:1 non-text).
80
+ export const ColorStatusVerifiedAccent = "#00d17a"; // Verified bright decorative accent (#00D17A) — for icons/fills where contrast is not a text/border requirement.
81
+ export const ColorStatusSignalFg = "#346bad"; // Informational status foreground — Signal darkened to WCAG AA (#346BAD, ≥4.5:1 on the chip bg).
82
+ export const ColorStatusSignalBg = "#e8ecf4"; // Informational status chip background — neutral.
83
+ export const ColorStatusSignalBorder = "#346bad"; // Informational status border — AA-dark shade (≥3:1 non-text).
84
+ export const ColorStatusSignalAccent = "#4d9dff"; // Signal bright decorative accent (#4D9DFF) — for icons/fills.
85
+ export const ColorStatusCautionFg = "#8e6014"; // Caution status foreground — Caution darkened to WCAG AA (#8E6014, ≥4.5:1 on the chip bg); pending / in-progress.
86
+ export const ColorStatusCautionBg = "#e8ecf4"; // Caution status chip background — neutral.
87
+ export const ColorStatusCautionBorder = "#8e6014"; // Caution status border — AA-dark shade (≥3:1 non-text).
88
+ export const ColorStatusCautionAccent = "#f5a623"; // Caution bright decorative accent (#F5A623) — for icons/fills.
89
+ export const ColorStatusCriticalFg = "#be3939"; // Critical status foreground — Critical darkened to WCAG AA (#BE3939, ≥4.5:1 on the chip bg); error / failure.
90
+ export const ColorStatusCriticalBg = "#e8ecf4"; // Critical status chip background — neutral.
91
+ export const ColorStatusCriticalBorder = "#be3939"; // Critical status border — AA-dark shade (≥3:1 non-text).
92
+ export const ColorStatusCriticalAccent = "#ff4d4d"; // Critical bright decorative accent (#FF4D4D) — for icons/fills.
93
+ export const ColorBorderDefault = "#b0baca"; // Default component border — divider weight.
94
+ export const ColorBorderStrong = "#8a95a8"; // Higher-contrast component border for emphasis.
95
+ export const ColorBorderFocus = "#4d9dff"; // Focused-input border color — matches the focus ring (single source: focus.ring.color).
96
+ export const ColorControlBg = "#d6dce8"; // Form control background — input / well.
97
+ export const ColorControlBorder = "#b0baca"; // Form control border.
98
+ export const ColorControlFg = "#0b0f19"; // Form control text/value.
99
+ export const ColorControlPlaceholder = "#8a95a8"; // Form control placeholder text — de-emphasised.
100
+ export const ContainerSm = "40rem"; // Container max-width at sm breakpoint
101
+ export const ContainerMd = "48rem"; // Container max-width at md breakpoint
102
+ export const ContainerLg = "64rem"; // Container max-width at lg breakpoint
103
+ export const ContainerXl = "80rem"; // Container max-width at xl breakpoint
104
+ export const Container2xl = "96rem"; // Container max-width at 2xl breakpoint
105
+ export const FocusRingWidth = "2px"; // Focus ring width. Per WCAG 2.4.7.
106
+ export const FocusRingColor = "#4d9dff"; // Focus ring color — semantic.signal (#4D9DFF). Contrast ≥3:1 verified in Task 7 (contrast-validation).
107
+ export const FocusRingOffset = "2px"; // Focus ring offset (gap between target and ring).
108
+ export const FontFamilySans =
109
+ "Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"; // Primary UI and reading family — Inter Variable per BR-1 §5.1. System fallbacks listed in priority order.
110
+ export const FontFamilyMono =
111
+ "'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace"; // Technical family for IDs, hashes, code, timestamps — JetBrains Mono Variable per BR-1 §5.1.
112
+ export const FontWeightRegular = "400"; // Body / paragraph weight
113
+ export const FontWeightMedium = "500"; // H2/H3, labels, wordmark
114
+ export const FontWeightSemibold = "600"; // Display / H1
115
+ export const FontWeightBold = "700"; // Reserved for rare emphasis; not used in default scale
116
+ export const MotionDurationInstant = "0ms"; // State changes — selection, focus state (no animation). Per BR-1 §9.1.
117
+ export const MotionDurationFast = "120ms"; // Hover, focus rings, button presses. Per BR-1 §9.1.
118
+ export const MotionDurationBase = "200ms"; // Most UI transitions — panels, tooltips. Per BR-1 §9.1.
119
+ export const MotionDurationDeliberate = "350ms"; // Verification moments, modals, the check. Per BR-1 §9.1.
120
+ export const MotionDurationAmbient = "1200ms"; // Band transitions, time-of-day, hero entrances. Per BR-1 §9.1. NOT for UI feedback.
121
+ export const MotionEasingVerdify = "cubic-bezier(0.2, 0.8, 0.2, 1)"; // Default — natural, slightly snappy. Per BR-1 §9.2.
122
+ export const MotionEasingEmphasis = "cubic-bezier(0.34, 1.56, 0.64, 1)"; // The check moment only — slight overshoot. Per BR-1 §9.2.
123
+ export const MotionEasingAmbient = "cubic-bezier(0.4, 0, 0.6, 1)"; // Long, gentle — adaptive bands. Per BR-1 §9.2.
124
+ export const MotionEasingExit = "cubic-bezier(0.4, 0, 1, 1)"; // Things leaving feel decisive. Per BR-1 §9.2.
125
+ export const MotionTransitionMicroDuration = "120ms"; // Hover/press feedback duration. Per BR-2 spec D-11.
126
+ export const MotionTransitionMicroEasing = "cubic-bezier(0.2, 0.8, 0.2, 1)"; // Hover/press feedback easing.
127
+ export const MotionTransitionLayoutDuration = "200ms"; // Most UI layout transitions duration.
128
+ export const MotionTransitionLayoutEasing = "cubic-bezier(0.2, 0.8, 0.2, 1)"; // Most UI layout transitions easing.
129
+ export const MotionTransitionModalDuration = "350ms"; // Modal/sheet entry/exit duration. Per BR-1 §9.3 — restraint (no ease-emphasis; that is reserved for the check).
130
+ export const MotionTransitionModalEasing = "cubic-bezier(0.2, 0.8, 0.2, 1)"; // Modal/sheet entry/exit easing.
131
+ export const MotionTransitionAmbientDuration = "1200ms"; // Adaptive band transitions duration. NOT for primary UI feedback.
132
+ export const MotionTransitionAmbientEasing = "cubic-bezier(0.4, 0, 0.6, 1)"; // Adaptive band transitions easing.
133
+ export const Opacity0 = "0"; // Fully transparent
134
+ export const Opacity5 = "0.05"; // Opacity 5%
135
+ export const Opacity10 = "0.1"; // Opacity 10%
136
+ export const Opacity20 = "0.2"; // Opacity 20%
137
+ export const Opacity30 = "0.3"; // Opacity 30%
138
+ export const Opacity40 = "0.4"; // Opacity 40%
139
+ export const Opacity50 = "0.5"; // Opacity 50%
140
+ export const Opacity60 = "0.6"; // Opacity 60%
141
+ export const Opacity70 = "0.7"; // Opacity 70%
142
+ export const Opacity80 = "0.8"; // Opacity 80%
143
+ export const Opacity90 = "0.9"; // Opacity 90%
144
+ export const Opacity95 = "0.95"; // Opacity 95%
145
+ export const Opacity100 = "1"; // Fully opaque
146
+ export const RadiusNone = "0"; // No border radius — squared corners
147
+ export const RadiusSm = "0.25rem"; // Small radius (4px) — inputs, chips
148
+ export const RadiusMd = "0.5rem"; // Medium radius (8px) — buttons, cards
149
+ export const RadiusLg = "0.75rem"; // Large radius (12px) — modals, sheets
150
+ export const RadiusXl = "1rem"; // Extra large radius (16px) — feature surfaces
151
+ export const RadiusFull = "9999px"; // Full radius — pills, circular avatars
152
+ export const ShadowNone = "none"; // No shadow
153
+ export const ShadowSm = "0 1px 2px 0 rgb(11 15 25 / 0.05)"; // Subtle elevation — inputs, low cards
154
+ export const ShadowMd =
155
+ "0 4px 6px -1px rgb(11 15 25 / 0.08), 0 2px 4px -2px rgb(11 15 25 / 0.08)"; // Standard elevation — raised cards, dropdowns
156
+ export const ShadowLg =
157
+ "0 10px 15px -3px rgb(11 15 25 / 0.10), 0 4px 6px -4px rgb(11 15 25 / 0.10)"; // Strong elevation — popovers, sheets
158
+ export const ShadowXl =
159
+ "0 20px 25px -5px rgb(11 15 25 / 0.10), 0 8px 10px -6px rgb(11 15 25 / 0.10)"; // Hero elevation — modals, feature emphasis. Max opacity (brand-voice ceiling).
160
+ export const SizeIconSm = "1rem"; // Small icon (16px) — inline, captions
161
+ export const SizeIconMd = "1.25rem"; // Medium icon (20px) — buttons, inline body
162
+ export const SizeIconLg = "1.5rem"; // Large icon (24px) — primary actions, headers
163
+ export const SizeIconXl = "2rem"; // Extra large icon (32px) — feature emphasis
164
+ export const SizeTargetMobile = "2.75rem"; // Mobile minimum tap target (44px). Per WCAG 2.5.5 and Apple HIG.
165
+ export const SizeTargetDesktop = "2.5rem"; // Desktop minimum click target (40px). Per Material Design.
166
+ export const Space0 = "0"; // Spacing step 0 (0px)
167
+ export const Space1 = "0.25rem"; // Spacing step 1 (4px)
168
+ export const Space2 = "0.5rem"; // Spacing step 2 (8px)
169
+ export const Space3 = "0.75rem"; // Spacing step 3 (12px)
170
+ export const Space4 = "1rem"; // Spacing step 4 (16px) — base unit
171
+ export const Space5 = "1.25rem"; // Spacing step 5 (20px)
172
+ export const Space6 = "1.5rem"; // Spacing step 6 (24px)
173
+ export const Space7 = "1.75rem"; // Spacing step 7 (28px)
174
+ export const Space8 = "2rem"; // Spacing step 8 (32px)
175
+ export const Space9 = "2.25rem"; // Spacing step 9 (36px)
176
+ export const Space10 = "2.5rem"; // Spacing step 10 (40px)
177
+ export const Space11 = "2.75rem"; // Spacing step 11 (44px)
178
+ export const Space12 = "3rem"; // Spacing step 12 (48px)
179
+ export const Space14 = "3.5rem"; // Spacing step 14 (56px)
180
+ export const Space16 = "4rem"; // Spacing step 16 (64px)
181
+ export const Space20 = "5rem"; // Spacing step 20 (80px)
182
+ export const Space24 = "6rem"; // Spacing step 24 (96px)
183
+ export const Space28 = "7rem"; // Spacing step 28 (112px)
184
+ export const Space32 = "8rem"; // Spacing step 32 (128px)
185
+ export const StateOpacityHover = "0.08"; // Hover state-layer opacity overlay. Material-derived; per BR-2 spec D-10.
186
+ export const StateOpacityPressed = "0.12"; // Pressed/active state-layer opacity overlay.
187
+ export const StateOpacityFocus = "0.12"; // Focused state-layer opacity overlay (in addition to focus ring).
188
+ export const StateOpacityDisabled = "0.38"; // Disabled state opacity — applied to text or icon, not as overlay.
189
+ export const StateOpacityDragged = "0.16"; // Dragged state-layer opacity overlay.
190
+ export const TextDisplaySize = "3.5rem"; // Display heading size (56px); per BR-1 §5.2
191
+ export const TextDisplayLineHeight = "1.05"; // Display heading line-height
192
+ export const TextDisplayLetterSpacing = "-0.025em"; // Display heading tracking
193
+ export const TextDisplayWeight = "600"; // Display heading weight (semibold)
194
+ export const TextH1Size = "2.25rem"; // H1 size (36px); per BR-1 §5.2
195
+ export const TextH1LineHeight = "1.15"; // H1 line-height
196
+ export const TextH1LetterSpacing = "-0.022em"; // H1 tracking
197
+ export const TextH1Weight = "600"; // H1 weight (semibold)
198
+ export const TextH2Size = "1.625rem"; // H2 size (26px); per BR-1 §5.2
199
+ export const TextH2LineHeight = "1.25"; // H2 line-height
200
+ export const TextH2LetterSpacing = "-0.018em"; // H2 tracking
201
+ export const TextH2Weight = "500"; // H2 weight (medium)
202
+ export const TextH3Size = "1.25rem"; // H3 size (20px); per BR-1 §5.2
203
+ export const TextH3LineHeight = "1.35"; // H3 line-height
204
+ export const TextH3LetterSpacing = "-0.015em"; // H3 tracking
205
+ export const TextH3Weight = "500"; // H3 weight (medium)
206
+ export const TextBodyLgSize = "1.0625rem"; // Body large size (17px); per BR-1 §5.2
207
+ export const TextBodyLgLineHeight = "1.55"; // Body large line-height
208
+ export const TextBodyLgLetterSpacing = "0"; // Body large tracking (none)
209
+ export const TextBodyLgWeight = "400"; // Body large weight (regular)
210
+ export const TextBodySize = "0.9375rem"; // Body size (15px); per BR-1 §5.2. Consumers MUST apply a 16px reset on inputs to avoid iOS auto-zoom (per spec D-12).
211
+ export const TextBodyLineHeight = "1.55"; // Body line-height
212
+ export const TextBodyLetterSpacing = "0"; // Body tracking (none)
213
+ export const TextBodyWeight = "400"; // Body weight (regular)
214
+ export const TextCaptionSize = "0.75rem"; // Caption size (12px); per BR-1 §5.2
215
+ export const TextCaptionLineHeight = "1.45"; // Caption line-height
216
+ export const TextCaptionLetterSpacing = "0.005em"; // Caption tracking
217
+ export const TextCaptionWeight = "400"; // Caption weight (regular)
218
+ export const TextLabelSize = "0.6875rem"; // Label size (11px); UPPERCASE per BR-1 §5.4
219
+ export const TextLabelLineHeight = "1.4"; // Label line-height
220
+ export const TextLabelLetterSpacing = "0.18em"; // Label tracking (wide; for eyebrows/labels)
221
+ export const TextLabelWeight = "500"; // Label weight (medium)
222
+ export const TextMonoSmSize = "0.75rem"; // Mono small size (12px); per BR-1 §5.2
223
+ export const TextMonoSmLineHeight = "1.5"; // Mono small line-height
224
+ export const TextMonoSmLetterSpacing = "0"; // Mono small tracking (none)
225
+ export const TextMonoSmWeight = "400"; // Mono small weight (regular)
226
+ export const TextMonoSize = "0.875rem"; // Mono size (14px); per BR-1 §5.2
227
+ export const TextMonoLineHeight = "1.55"; // Mono line-height
228
+ export const TextMonoLetterSpacing = "0"; // Mono tracking (none)
229
+ export const TextMonoWeight = "400"; // Mono weight (regular)
230
+ export const ZIndexBase = "0"; // Base stacking — flat content
231
+ export const ZIndexDropdown = "1000"; // Dropdown menus, comboboxes
232
+ export const ZIndexSticky = "1100"; // Sticky headers, fixed bars
233
+ export const ZIndexModal = "1200"; // Modal dialogs, sheets
234
+ export const ZIndexPopover = "1300"; // Popovers, tooltips above modals
235
+ export const ZIndexToast = "1400"; // Toasts, notifications — highest
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@verdify/tokens",
3
+ "version": "0.6.0",
4
+ "description": "Verdify design tokens — W3C DTCG sources with Tailwind v4 preset, CSS vars, JS/TS, and raw JSON outputs",
5
+ "license": "UNLICENSED",
6
+ "publishConfig": {
7
+ "registry": "https://registry.npmjs.org",
8
+ "access": "public"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/mirinsim/verdify-brand.git",
13
+ "directory": "packages/tokens"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/tokens.mjs",
18
+ "require": "./dist/tokens.js",
19
+ "types": "./dist/tokens.d.ts"
20
+ },
21
+ "./css": "./dist/tokens.css",
22
+ "./preset": "./dist/preset.css",
23
+ "./preset-adaptive": "./dist/preset-adaptive.css",
24
+ "./json": "./dist/tokens.json",
25
+ "./tokens/*": "./src/tokens/*"
26
+ },
27
+ "files": [
28
+ "dist/",
29
+ "src/tokens/",
30
+ "README.md"
31
+ ],
32
+ "devDependencies": {
33
+ "style-dictionary": "^4.0.0",
34
+ "tsx": "^4.7.0",
35
+ "typescript": "^5.4.0",
36
+ "ajv": "^8.12.0",
37
+ "@types/node": "^20.0.0"
38
+ },
39
+ "scripts": {
40
+ "sync": "tsx scripts/sync-color.ts",
41
+ "sync:print": "tsx scripts/sync-print.ts",
42
+ "build:ase": "tsx scripts/build-ase.ts",
43
+ "validate": "tsx scripts/validate.ts",
44
+ "build": "pnpm run sync && pnpm run sync:print && pnpm run build:ase && pnpm run validate && tsx scripts/build.ts",
45
+ "verify": "pnpm run build && git diff --exit-code src/",
46
+ "test": "tsx scripts/test.ts"
47
+ }
48
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "border-width": {
3
+ "0": { "$value": "0", "$type": "dimension", "$description": "No border" },
4
+ "default": { "$value": "1px", "$type": "dimension", "$description": "Default border width" },
5
+ "2": { "$value": "2px", "$type": "dimension", "$description": "Emphasized border width" },
6
+ "4": { "$value": "4px", "$type": "dimension", "$description": "Heavy border width — reserved for focus indicators or active states" }
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "breakpoint": {
3
+ "sm": { "$value": "40rem", "$type": "dimension", "$description": "Small breakpoint (640px) — landscape phones" },
4
+ "md": { "$value": "48rem", "$type": "dimension", "$description": "Medium breakpoint (768px) — tablets portrait" },
5
+ "lg": { "$value": "64rem", "$type": "dimension", "$description": "Large breakpoint (1024px) — tablets landscape, small laptops" },
6
+ "xl": { "$value": "80rem", "$type": "dimension", "$description": "Extra large breakpoint (1280px) — desktops" },
7
+ "2xl": { "$value": "96rem", "$type": "dimension", "$description": "2X large breakpoint (1536px) — wide desktops" }
8
+ }
9
+ }