@duro-app/tokens 0.2.0 → 0.4.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/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export { colors } from './tokens/colors.css';
2
2
  export { spacing, radii } from './tokens/spacing.css';
3
- export { typography } from './tokens/typography.css';
3
+ export { layoutSpacing } from './tokens/layout-spacing.css';
4
+ export { typography, typeScale } from './tokens/typography.css';
5
+ export { typePresets } from './tokens/type-presets.css';
4
6
  export { shadows } from './tokens/shadows.css';
5
7
  export { lightTheme, lightShadows } from './themes/light.css';
6
8
  export { highContrastTheme, highContrastShadows } from './themes/high-contrast.css';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAA;AAG5C,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAA;AAG5C,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,4BAA4B,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- const r = {
1
+ const e = {
2
2
  bg: "var(--bg-xqkwqtp)",
3
3
  bgCard: "var(--bgCard-xj2l5r)",
4
4
  bgCardHover: "var(--bgCardHover-xlxk7vw)",
@@ -22,26 +22,44 @@ const r = {
22
22
  warningBg: "var(--warningBg-xtnxqss)",
23
23
  warningBorder: "var(--warningBorder-x1ev2mr5)",
24
24
  warningText: "var(--warningText-x1lgjghx)",
25
+ info: "var(--info-x97ho0r)",
25
26
  infoBg: "var(--infoBg-xho8jir)",
26
27
  infoBorder: "var(--infoBorder-xnevk3x)",
27
28
  infoText: "var(--infoText-x19pseus)",
28
29
  __varGroupHash__: "xjvd03b"
29
- }, a = {
30
+ }, t = {
30
31
  xs: "var(--xs-xxfyjsd)",
31
32
  sm: "var(--sm-xbh8y7f)",
33
+ ms: "var(--ms-x13y09zs)",
32
34
  md: "var(--md-x3pkb85)",
33
35
  lg: "var(--lg-x34mutn)",
34
36
  xl: "var(--xl-xttpygj)",
35
37
  xxl: "var(--xxl-xbe9eha)",
38
+ xxxl: "var(--xxxl-xroalp5)",
36
39
  __varGroupHash__: "x6uc9q"
37
- }, e = {
40
+ }, n = {
38
41
  sm: "var(--sm-x1bhtfs5)",
39
42
  md: "var(--md-xx2g89g)",
40
43
  lg: "var(--lg-xwd56yl)",
41
44
  full: "var(--full-x9vxdtd)",
42
45
  __varGroupHash__: "xw3ffwm"
43
- }, t = {
46
+ }, i = {
47
+ stackXs: "var(--stackXs-x1qfrfo2)",
48
+ stackSm: "var(--stackSm-x2rk1ut)",
49
+ stackMd: "var(--stackMd-xhblkt4)",
50
+ stackLg: "var(--stackLg-xeue779)",
51
+ stackXl: "var(--stackXl-x7sbbgu)",
52
+ inlineXs: "var(--inlineXs-xq4tp4f)",
53
+ inlineSm: "var(--inlineSm-x2o8bbf)",
54
+ inlineMd: "var(--inlineMd-x1oalkxi)",
55
+ inlineLg: "var(--inlineLg-xz69o43)",
56
+ containerSm: "var(--containerSm-x3nosus)",
57
+ containerMd: "var(--containerMd-x170dvin)",
58
+ containerLg: "var(--containerLg-x1n6aasq)",
59
+ __varGroupHash__: "x16nfoyr"
60
+ }, r = {
44
61
  fontFamily: "var(--fontFamily-xvrmnat)",
62
+ fontFamilyMono: "var(--fontFamilyMono-x1bzqfky)",
45
63
  fontSizeXs: "var(--fontSizeXs-x1w5m325)",
46
64
  fontSizeSm: "var(--fontSizeSm-x1bjjs4u)",
47
65
  fontSizeMd: "var(--fontSizeMd-xq8d99q)",
@@ -54,33 +72,176 @@ const r = {
54
72
  fontWeightBold: "var(--fontWeightBold-x1pjkvwg)",
55
73
  lineHeight: "var(--lineHeight-x1gubzd5)",
56
74
  __varGroupHash__: "xs62swl"
57
- }, x = {
75
+ }, a = {
76
+ fontSize1: "var(--fontSize1-xx27tux)",
77
+ fontSize2: "var(--fontSize2-x5hag8h)",
78
+ fontSize3: "var(--fontSize3-x1mf6j39)",
79
+ fontSize4: "var(--fontSize4-xh0hch2)",
80
+ fontSize5: "var(--fontSize5-xcllv62)",
81
+ fontSize6: "var(--fontSize6-xo5veds)",
82
+ fontSize7: "var(--fontSize7-x1j85tz8)",
83
+ fontSize8: "var(--fontSize8-x17zhits)",
84
+ fontSize9: "var(--fontSize9-xveysf7)",
85
+ lineHeight1: "var(--lineHeight1-x17o1wol)",
86
+ lineHeight2: "var(--lineHeight2-xinpx5n)",
87
+ lineHeight3: "var(--lineHeight3-x1163vpm)",
88
+ lineHeight4: "var(--lineHeight4-x1y0jdbp)",
89
+ lineHeight5: "var(--lineHeight5-xjln4cz)",
90
+ lineHeight6: "var(--lineHeight6-x1h1b5wo)",
91
+ lineHeight7: "var(--lineHeight7-xx3gx0p)",
92
+ lineHeight8: "var(--lineHeight8-xk1f09j)",
93
+ lineHeight9: "var(--lineHeight9-xshcxhh)",
94
+ displaySm: "var(--displaySm-x5inqzv)",
95
+ displayMd: "var(--displayMd-x1oektom)",
96
+ displayLg: "var(--displayLg-x6qsr1u)",
97
+ letterSpacingTight: "var(--letterSpacingTight-xmavxfk)",
98
+ letterSpacingNormal: "var(--letterSpacingNormal-x1ih41v1)",
99
+ letterSpacingWide: "var(--letterSpacingWide-xt8z9rj)",
100
+ __varGroupHash__: "x4cj49w"
101
+ }, o = {
102
+ bodySm: {
103
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
104
+ "fontSize-kGuDYH": "fontSize-x1hn3ytp",
105
+ "lineHeight-kLWn49": "lineHeight-xzs5d81",
106
+ "fontWeight-k63SB2": "fontWeight-xrec02b",
107
+ "letterSpacing-kb6lSQ": "letterSpacing-x2e73ve",
108
+ $$css: "tokens/type-presets.css.ts:6"
109
+ },
110
+ bodyMd: {
111
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
112
+ "fontSize-kGuDYH": "fontSize-xfzcsg9",
113
+ "lineHeight-kLWn49": "lineHeight-x80sjjd",
114
+ "fontWeight-k63SB2": "fontWeight-xrec02b",
115
+ "letterSpacing-kb6lSQ": "letterSpacing-x2e73ve",
116
+ $$css: "tokens/type-presets.css.ts:13"
117
+ },
118
+ bodyLg: {
119
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
120
+ "fontSize-kGuDYH": "fontSize-x1kws70c",
121
+ "lineHeight-kLWn49": "lineHeight-x1487en2",
122
+ "fontWeight-k63SB2": "fontWeight-xrec02b",
123
+ "letterSpacing-kb6lSQ": "letterSpacing-x2e73ve",
124
+ $$css: "tokens/type-presets.css.ts:20"
125
+ },
126
+ caption: {
127
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
128
+ "fontSize-kGuDYH": "fontSize-x19zw8p8",
129
+ "lineHeight-kLWn49": "lineHeight-xsnwo96",
130
+ "fontWeight-k63SB2": "fontWeight-xrec02b",
131
+ "letterSpacing-kb6lSQ": "letterSpacing-x121swot",
132
+ $$css: "tokens/type-presets.css.ts:29"
133
+ },
134
+ label: {
135
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
136
+ "fontSize-kGuDYH": "fontSize-x1hn3ytp",
137
+ "lineHeight-kLWn49": "lineHeight-xzs5d81",
138
+ "fontWeight-k63SB2": "fontWeight-x120ksxs",
139
+ "letterSpacing-kb6lSQ": "letterSpacing-x2e73ve",
140
+ $$css: "tokens/type-presets.css.ts:36"
141
+ },
142
+ code: {
143
+ "fontFamily-kMv6JI": "fontFamily-x1kygxdj",
144
+ "fontSize-kGuDYH": "fontSize-x1hn3ytp",
145
+ "lineHeight-kLWn49": "lineHeight-xzs5d81",
146
+ "fontWeight-k63SB2": "fontWeight-xrec02b",
147
+ "letterSpacing-kb6lSQ": "letterSpacing-x2e73ve",
148
+ $$css: "tokens/type-presets.css.ts:43"
149
+ },
150
+ overline: {
151
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
152
+ "fontSize-kGuDYH": "fontSize-x19zw8p8",
153
+ "lineHeight-kLWn49": "lineHeight-xsnwo96",
154
+ "fontWeight-k63SB2": "fontWeight-x1x12jc5",
155
+ "letterSpacing-kb6lSQ": "letterSpacing-x121swot",
156
+ "textTransform-kP9fke": "textTransform-xtvhhri",
157
+ $$css: "tokens/type-presets.css.ts:50"
158
+ },
159
+ headingSm: {
160
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
161
+ "fontSize-kGuDYH": "fontSize-xtv95mj",
162
+ "lineHeight-kLWn49": "lineHeight-xyb71hx",
163
+ "fontWeight-k63SB2": "fontWeight-x1x12jc5",
164
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
165
+ $$css: "tokens/type-presets.css.ts:60"
166
+ },
167
+ headingMd: {
168
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
169
+ "fontSize-kGuDYH": "fontSize-x1qndi8g",
170
+ "lineHeight-kLWn49": "lineHeight-x17ovj3u",
171
+ "fontWeight-k63SB2": "fontWeight-x1x12jc5",
172
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
173
+ $$css: "tokens/type-presets.css.ts:67"
174
+ },
175
+ headingLg: {
176
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
177
+ "fontSize-kGuDYH": "fontSize-xo0rcgw",
178
+ "lineHeight-kLWn49": "lineHeight-x18micsl",
179
+ "fontWeight-k63SB2": "fontWeight-xhkckuk",
180
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
181
+ $$css: "tokens/type-presets.css.ts:74"
182
+ },
183
+ headingXl: {
184
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
185
+ "fontSize-kGuDYH": "fontSize-x6ugw34",
186
+ "lineHeight-kLWn49": "lineHeight-x1f79cfb",
187
+ "fontWeight-k63SB2": "fontWeight-xhkckuk",
188
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
189
+ $$css: "tokens/type-presets.css.ts:81"
190
+ },
191
+ displaySm: {
192
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
193
+ "fontSize-kGuDYH": "fontSize-x1lwaixd",
194
+ "lineHeight-kLWn49": "lineHeight-x1u7k74",
195
+ "fontWeight-k63SB2": "fontWeight-xhkckuk",
196
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
197
+ $$css: "tokens/type-presets.css.ts:90"
198
+ },
199
+ displayMd: {
200
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
201
+ "fontSize-kGuDYH": "fontSize-xrqn33v",
202
+ "lineHeight-kLWn49": "lineHeight-x1uo3zyz",
203
+ "fontWeight-k63SB2": "fontWeight-xhkckuk",
204
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
205
+ $$css: "tokens/type-presets.css.ts:97"
206
+ },
207
+ displayLg: {
208
+ "fontFamily-kMv6JI": "fontFamily-xce2pww",
209
+ "fontSize-kGuDYH": "fontSize-x1s08cw3",
210
+ "lineHeight-kLWn49": "lineHeight-x1159mfc",
211
+ "fontWeight-k63SB2": "fontWeight-xhkckuk",
212
+ "letterSpacing-kb6lSQ": "letterSpacing-xql2p2a",
213
+ $$css: "tokens/type-presets.css.ts:104"
214
+ }
215
+ }, s = {
58
216
  sm: "var(--sm-x17hhtln)",
59
217
  md: "var(--md-x1oyt0aw)",
60
218
  lg: "var(--lg-x1mxd62i)",
61
219
  __varGroupHash__: "x13v825q"
62
- }, o = {
63
- xjvd03b: "x18itf25 xjvd03b",
220
+ }, x = {
221
+ xjvd03b: "xrtwk39 xjvd03b",
64
222
  $$css: !0
65
- }, v = {
223
+ }, l = {
66
224
  x13v825q: "xv9ibj0 x13v825q",
67
225
  $$css: !0
68
- }, n = {
69
- xjvd03b: "x1qgt5a2 xjvd03b",
226
+ }, g = {
227
+ xjvd03b: "xaveibd xjvd03b",
70
228
  $$css: !0
71
- }, s = {
229
+ }, c = {
72
230
  x13v825q: "x15e39jv x13v825q",
73
231
  $$css: !0
74
232
  };
75
233
  export {
76
- r as colors,
77
- s as highContrastShadows,
78
- n as highContrastTheme,
79
- v as lightShadows,
80
- o as lightTheme,
81
- e as radii,
82
- x as shadows,
83
- a as spacing,
84
- t as typography
234
+ e as colors,
235
+ c as highContrastShadows,
236
+ g as highContrastTheme,
237
+ i as layoutSpacing,
238
+ l as lightShadows,
239
+ x as lightTheme,
240
+ n as radii,
241
+ s as shadows,
242
+ t as spacing,
243
+ o as typePresets,
244
+ a as typeScale,
245
+ r as typography
85
246
  };
86
247
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/tokens/colors.css.ts","../src/tokens/spacing.css.ts","../src/tokens/typography.css.ts","../src/tokens/shadows.css.ts","../src/themes/light.css.ts","../src/themes/high-contrast.css.ts"],"sourcesContent":["import {css} from 'react-strict-dom'\n\nexport const colors = css.defineVars({\n // Backgrounds\n bg: '#0f0f0f',\n bgCard: '#1a1a1a',\n bgCardHover: '#242424',\n\n // Text\n text: '#e5e5e5',\n textMuted: '#b0b0b0',\n\n // Accent\n accent: '#6aaffc',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n\n // Border\n border: '#333333',\n\n // Semantic — Error\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.1)',\n errorBorder: 'rgba(248, 113, 113, 0.3)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n\n // Semantic — Success\n success: '#22c55e',\n successBg: 'rgba(34, 197, 94, 0.1)',\n successBorder: 'rgba(34, 197, 94, 0.3)',\n successText: '#86efac',\n\n // Semantic — Warning\n warning: '#fbbf24',\n warningBg: 'rgba(251, 191, 36, 0.1)',\n warningBorder: 'rgba(251, 191, 36, 0.3)',\n warningText: '#fde68a',\n\n // Semantic — Info (uses accent)\n infoBg: 'rgba(106, 175, 252, 0.1)',\n infoBorder: 'rgba(106, 175, 252, 0.3)',\n infoText: '#93c5fd',\n})\n","import {css} from 'react-strict-dom'\n\nexport const spacing = css.defineVars({\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n xxl: '48px',\n})\n\nexport const radii = css.defineVars({\n sm: '8px',\n md: '12px',\n lg: '16px',\n full: '9999px',\n})\n","import {css} from 'react-strict-dom'\n\nexport const typography = css.defineVars({\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif',\n fontSizeXs: '0.75rem',\n fontSizeSm: '0.875rem',\n fontSizeMd: '1rem',\n fontSizeLg: '1.1rem',\n fontSizeXl: '1.25rem',\n fontSizeHeading: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeight: '1.5',\n})\n","import {css} from 'react-strict-dom'\n\nexport const shadows = css.defineVars({\n sm: '0 2px 4px rgba(0, 0, 0, 0.3)',\n md: '0 4px 12px rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.5)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n"],"names":["colors","spacing","radii","typography","shadows","lightTheme","lightShadows","highContrastTheme","highContrastShadows"],"mappings":"AAEO,MAAMA,IAAS;AAAA,EACpB,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,eAAe;AAAA,EACf,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,eAAe;AAAA,EACf,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,kBAAkB;AACpB,GC5BaC,IAAU;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,kBAAkB;AACpB,GACaC,IAAQ;AAAA,EACnB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,kBAAkB;AACpB,GCfaC,IAAa;AAAA,EACxB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,kBAAkB;AACpB,GCdaC,IAAU;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,kBAAkB;AACpB,GCHaC,IAAa;AAAA,EACxB,SAAS;AAAA,EACT,OAAO;AACT,GACaC,IAAe;AAAA,EAC1B,UAAU;AAAA,EACV,OAAO;AACT,GCPaC,IAAoB;AAAA,EAC/B,SAAS;AAAA,EACT,OAAO;AACT,GACaC,IAAsB;AAAA,EACjC,UAAU;AAAA,EACV,OAAO;AACT;"}
1
+ {"version":3,"file":"index.js","sources":["../src/tokens/colors.css.ts","../src/tokens/spacing.css.ts","../src/tokens/layout-spacing.css.ts","../src/tokens/typography.css.ts","../src/tokens/type-presets.css.ts","../src/tokens/shadows.css.ts","../src/themes/light.css.ts","../src/themes/high-contrast.css.ts"],"sourcesContent":["import {css} from 'react-strict-dom'\n\nexport const colors = css.defineVars({\n // Backgrounds\n bg: '#0f0f0f',\n bgCard: '#1a1a1a',\n bgCardHover: '#242424',\n\n // Text\n text: '#e5e5e5',\n textMuted: '#b0b0b0',\n\n // Accent\n accent: '#6aaffc',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n\n // Border\n border: '#333333',\n\n // Semantic — Error\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.1)',\n errorBorder: 'rgba(248, 113, 113, 0.3)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n\n // Semantic — Success\n success: '#22c55e',\n successBg: 'rgba(34, 197, 94, 0.1)',\n successBorder: 'rgba(34, 197, 94, 0.3)',\n successText: '#86efac',\n\n // Semantic — Warning\n warning: '#fbbf24',\n warningBg: 'rgba(251, 191, 36, 0.1)',\n warningBorder: 'rgba(251, 191, 36, 0.3)',\n warningText: '#fde68a',\n\n // Semantic — Info (uses accent)\n info: '#6aaffc',\n infoBg: 'rgba(106, 175, 252, 0.1)',\n infoBorder: 'rgba(106, 175, 252, 0.3)',\n infoText: '#93c5fd',\n})\n","import {css} from 'react-strict-dom'\n\nexport const spacing = css.defineVars({\n xs: '4px',\n sm: '8px',\n ms: '12px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n xxl: '48px',\n xxxl: '64px',\n})\n\nexport const radii = css.defineVars({\n sm: '8px',\n md: '12px',\n lg: '16px',\n full: '9999px',\n})\n","import {css} from 'react-strict-dom'\n\nexport const layoutSpacing = css.defineVars({\n // Vertical rhythm (stack gaps)\n stackXs: '4px',\n stackSm: '8px',\n stackMd: '16px',\n stackLg: '24px',\n stackXl: '48px',\n\n // Horizontal rhythm (inline gaps)\n inlineXs: '4px',\n inlineSm: '8px',\n inlineMd: '16px',\n inlineLg: '24px',\n\n // Container insets\n containerSm: '16px',\n containerMd: '24px',\n containerLg: '32px',\n})\n","import {css} from 'react-strict-dom'\n\nexport const typography = css.defineVars({\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif',\n fontFamilyMono: '\"SF Mono\", \"Fira Code\", \"Fira Mono\", \"Roboto Mono\", \"Courier New\", monospace',\n fontSizeXs: '0.75rem',\n fontSizeSm: '0.875rem',\n fontSizeMd: '1rem',\n fontSizeLg: '1.125rem',\n fontSizeXl: '1.25rem',\n fontSizeHeading: '1.5rem',\n fontWeightNormal: '400',\n fontWeightMedium: '500',\n fontWeightSemibold: '600',\n fontWeightBold: '700',\n lineHeight: '1.5',\n})\n\nexport const typeScale = css.defineVars({\n // 9-step font size scale\n fontSize1: '0.75rem', // 12px — captions, badges\n fontSize2: '0.8125rem', // 13px — small UI\n fontSize3: '0.875rem', // 14px — default UI (buttons, inputs)\n fontSize4: '1rem', // 16px — body text\n fontSize5: '1.125rem', // 18px — body-lg\n fontSize6: '1.25rem', // 20px — subheading\n fontSize7: '1.5rem', // 24px — heading-sm\n fontSize8: '1.875rem', // 30px — heading-md\n fontSize9: '2.25rem', // 36px — heading-lg\n\n // Matched line-heights\n lineHeight1: '1rem', // 16px\n lineHeight2: '1.25rem', // 20px\n lineHeight3: '1.25rem', // 20px\n lineHeight4: '1.5rem', // 24px\n lineHeight5: '1.5rem', // 24px\n lineHeight6: '1.75rem', // 28px\n lineHeight7: '2rem', // 32px\n lineHeight8: '2.25rem', // 36px\n lineHeight9: '2.75rem', // 44px\n\n // Fluid display sizes\n displaySm: 'clamp(2.25rem, 1.5rem + 2vw, 3rem)', // 36–48px\n displayMd: 'clamp(2.75rem, 1.75rem + 2.5vw, 3.75rem)', // 44–60px\n displayLg: 'clamp(3.5rem, 2rem + 3.5vw, 4.5rem)', // 56–72px\n\n // Letter-spacing\n letterSpacingTight: '-0.02em',\n letterSpacingNormal: '0',\n letterSpacingWide: '0.04em',\n})\n","import {css} from 'react-strict-dom'\nimport {typography, typeScale} from './typography.css'\n\nexport const typePresets = css.create({\n // Body\n bodySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize4,\n lineHeight: typeScale.lineHeight4,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n bodyLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize5,\n lineHeight: typeScale.lineHeight5,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n\n // UI\n caption: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingWide,\n },\n label: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightMedium,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n code: {\n fontFamily: typography.fontFamilyMono,\n fontSize: typeScale.fontSize3,\n lineHeight: typeScale.lineHeight3,\n fontWeight: typography.fontWeightNormal,\n letterSpacing: typeScale.letterSpacingNormal,\n },\n overline: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize1,\n lineHeight: typeScale.lineHeight1,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingWide,\n textTransform: 'uppercase' as const,\n },\n\n // Heading\n headingSm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize6,\n lineHeight: typeScale.lineHeight6,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize7,\n lineHeight: typeScale.lineHeight7,\n fontWeight: typography.fontWeightSemibold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize8,\n lineHeight: typeScale.lineHeight8,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n headingXl: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.fontSize9,\n lineHeight: typeScale.lineHeight9,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n\n // Display (fluid)\n displaySm: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displaySm,\n lineHeight: 1.2,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayMd: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayMd,\n lineHeight: 1.15,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n displayLg: {\n fontFamily: typography.fontFamily,\n fontSize: typeScale.displayLg,\n lineHeight: 1.1,\n fontWeight: typography.fontWeightBold,\n letterSpacing: typeScale.letterSpacingTight,\n },\n})\n","import {css} from 'react-strict-dom'\n\nexport const shadows = css.defineVars({\n sm: '0 2px 4px rgba(0, 0, 0, 0.3)',\n md: '0 4px 12px rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.5)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const lightTheme = css.createTheme(colors, {\n bg: '#ffffff',\n bgCard: '#f5f5f5',\n bgCardHover: '#ebebeb',\n text: '#1a1a1a',\n textMuted: '#4a4a4a',\n accent: '#1e40af',\n accentHover: '#1a3799',\n accentContrast: '#ffffff',\n border: '#d4d4d4',\n error: '#991b1b',\n errorHover: '#7f1d1d',\n errorBg: 'rgba(153, 27, 27, 0.08)',\n errorBorder: 'rgba(153, 27, 27, 0.3)',\n errorText: '#7f1d1d',\n errorContrast: '#ffffff',\n success: '#166534',\n successBg: 'rgba(22, 101, 52, 0.08)',\n successBorder: 'rgba(22, 101, 52, 0.3)',\n successText: '#14532d',\n warning: '#92400e',\n warningBg: 'rgba(146, 64, 14, 0.08)',\n warningBorder: 'rgba(146, 64, 14, 0.3)',\n warningText: '#78350f',\n info: '#1e40af',\n infoBg: 'rgba(30, 64, 175, 0.08)',\n infoBorder: 'rgba(30, 64, 175, 0.3)',\n infoText: '#1e40af',\n})\n\nexport const lightShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.08)',\n md: '0 4px 12px rgba(0, 0, 0, 0.12)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.16)',\n})\n","import {css} from 'react-strict-dom'\nimport {colors} from '../tokens/colors.css'\nimport {shadows} from '../tokens/shadows.css'\n\nexport const highContrastTheme = css.createTheme(colors, {\n bg: '#000000',\n bgCard: '#111111',\n bgCardHover: '#1a1a1a',\n text: '#ffffff',\n textMuted: '#b0b0b0',\n accent: '#60a5fa',\n accentHover: '#93c5fd',\n accentContrast: '#000000',\n border: '#555555',\n error: '#f87171',\n errorHover: '#fca5a5',\n errorBg: 'rgba(248, 113, 113, 0.15)',\n errorBorder: 'rgba(248, 113, 113, 0.5)',\n errorText: '#fca5a5',\n errorContrast: '#000000',\n success: '#4ade80',\n successBg: 'rgba(74, 222, 128, 0.15)',\n successBorder: 'rgba(74, 222, 128, 0.5)',\n successText: '#86efac',\n warning: '#fcd34d',\n warningBg: 'rgba(252, 211, 77, 0.15)',\n warningBorder: 'rgba(252, 211, 77, 0.5)',\n warningText: '#fef08a',\n info: '#60a5fa',\n infoBg: 'rgba(96, 165, 250, 0.15)',\n infoBorder: 'rgba(96, 165, 250, 0.5)',\n infoText: '#bfdbfe',\n})\n\nexport const highContrastShadows = css.createTheme(shadows, {\n sm: '0 2px 4px rgba(0, 0, 0, 0.6)',\n md: '0 4px 12px rgba(0, 0, 0, 0.7)',\n lg: '0 8px 24px rgba(0, 0, 0, 0.8)',\n})\n"],"names":["colors","spacing","radii","layoutSpacing","typography","typeScale","typePresets","shadows","lightTheme","lightShadows","highContrastTheme","highContrastShadows"],"mappings":"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"}
@@ -23,6 +23,7 @@ export declare const highContrastTheme: css.Theme<css.VarGroup<Readonly<{
23
23
  warningBg: string;
24
24
  warningBorder: string;
25
25
  warningText: string;
26
+ info: string;
26
27
  infoBg: string;
27
28
  infoBorder: string;
28
29
  infoText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"high-contrast.css.d.ts","sourceRoot":"","sources":["../../src/themes/high-contrast.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAIpC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA2B5B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;oBAI9B,CAAA"}
1
+ {"version":3,"file":"high-contrast.css.d.ts","sourceRoot":"","sources":["../../src/themes/high-contrast.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAIpC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA4B5B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;oBAI9B,CAAA"}
@@ -23,6 +23,7 @@ export declare const lightTheme: css.Theme<css.VarGroup<Readonly<{
23
23
  warningBg: string;
24
24
  warningBorder: string;
25
25
  warningText: string;
26
+ info: string;
26
27
  infoBg: string;
27
28
  infoBorder: string;
28
29
  infoText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"light.css.d.ts","sourceRoot":"","sources":["../../src/themes/light.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAIpC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA2BrB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;oBAIvB,CAAA"}
1
+ {"version":3,"file":"light.css.d.ts","sourceRoot":"","sources":["../../src/themes/light.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAIpC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA4BrB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;oBAIvB,CAAA"}
@@ -23,6 +23,7 @@ export declare const colors: css.VarGroup<Readonly<{
23
23
  warningBg: string;
24
24
  warningBorder: string;
25
25
  warningText: string;
26
+ info: string;
26
27
  infoBg: string;
27
28
  infoBorder: string;
28
29
  infoText: string;
@@ -1 +1 @@
1
- {"version":3,"file":"colors.css.d.ts","sourceRoot":"","sources":["../../src/tokens/colors.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0CjB,CAAA"}
1
+ {"version":3,"file":"colors.css.d.ts","sourceRoot":"","sources":["../../src/tokens/colors.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2CjB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { css } from 'react-strict-dom';
2
+ export declare const layoutSpacing: css.VarGroup<Readonly<{
3
+ stackXs: string;
4
+ stackSm: string;
5
+ stackMd: string;
6
+ stackLg: string;
7
+ stackXl: string;
8
+ inlineXs: string;
9
+ inlineSm: string;
10
+ inlineMd: string;
11
+ inlineLg: string;
12
+ containerSm: string;
13
+ containerMd: string;
14
+ containerLg: string;
15
+ }>, symbol>;
16
+ //# sourceMappingURL=layout-spacing.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-spacing.css.d.ts","sourceRoot":"","sources":["../../src/tokens/layout-spacing.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,aAAa;;;;;;;;;;;;;WAkBxB,CAAA"}
@@ -2,10 +2,12 @@ import { css } from 'react-strict-dom';
2
2
  export declare const spacing: css.VarGroup<Readonly<{
3
3
  xs: string;
4
4
  sm: string;
5
+ ms: string;
5
6
  md: string;
6
7
  lg: string;
7
8
  xl: string;
8
9
  xxl: string;
10
+ xxxl: string;
9
11
  }>, symbol>;
10
12
  export declare const radii: css.VarGroup<Readonly<{
11
13
  sm: string;
@@ -1 +1 @@
1
- {"version":3,"file":"spacing.css.d.ts","sourceRoot":"","sources":["../../src/tokens/spacing.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,OAAO;;;;;;;WAOlB,CAAA;AAEF,eAAO,MAAM,KAAK;;;;;WAKhB,CAAA"}
1
+ {"version":3,"file":"spacing.css.d.ts","sourceRoot":"","sources":["../../src/tokens/spacing.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,OAAO;;;;;;;;;WASlB,CAAA;AAEF,eAAO,MAAM,KAAK;;;;;WAKhB,CAAA"}
@@ -0,0 +1,103 @@
1
+ import { css } from 'react-strict-dom';
2
+ export declare const typePresets: Readonly<{
3
+ readonly bodySm: Readonly<{
4
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
5
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
6
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
7
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
8
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
9
+ }>;
10
+ readonly bodyMd: Readonly<{
11
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
12
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
13
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
14
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
15
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
16
+ }>;
17
+ readonly bodyLg: Readonly<{
18
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
19
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
20
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
21
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
22
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
23
+ }>;
24
+ readonly caption: Readonly<{
25
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
26
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
27
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
28
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
29
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
30
+ }>;
31
+ readonly label: Readonly<{
32
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
33
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
34
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
35
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
36
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
37
+ }>;
38
+ readonly code: Readonly<{
39
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
40
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
41
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
42
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
43
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
44
+ }>;
45
+ readonly overline: Readonly<{
46
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
47
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
48
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
49
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
50
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
51
+ readonly textTransform: css.StyleXClassNameFor<"textTransform", "uppercase">;
52
+ }>;
53
+ readonly headingSm: Readonly<{
54
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
55
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
56
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
57
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
58
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
59
+ }>;
60
+ readonly headingMd: Readonly<{
61
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
62
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
63
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
64
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
65
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
66
+ }>;
67
+ readonly headingLg: Readonly<{
68
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
69
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
70
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
71
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
72
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
73
+ }>;
74
+ readonly headingXl: Readonly<{
75
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
76
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
77
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", string>;
78
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
79
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
80
+ }>;
81
+ readonly displaySm: Readonly<{
82
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
83
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
84
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", 1.2>;
85
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
86
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
87
+ }>;
88
+ readonly displayMd: Readonly<{
89
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
90
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
91
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", 1.15>;
92
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
93
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
94
+ }>;
95
+ readonly displayLg: Readonly<{
96
+ readonly fontFamily: css.StyleXClassNameFor<"fontFamily", string>;
97
+ readonly fontSize: css.StyleXClassNameFor<"fontSize", string>;
98
+ readonly lineHeight: css.StyleXClassNameFor<"lineHeight", 1.1>;
99
+ readonly fontWeight: css.StyleXClassNameFor<"fontWeight", string>;
100
+ readonly letterSpacing: css.StyleXClassNameFor<"letterSpacing", string>;
101
+ }>;
102
+ }>;
103
+ //# sourceMappingURL=type-presets.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-presets.css.d.ts","sourceRoot":"","sources":["../../src/tokens/type-presets.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAGpC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2GtB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { css } from 'react-strict-dom';
2
2
  export declare const typography: css.VarGroup<Readonly<{
3
3
  fontFamily: string;
4
+ fontFamilyMono: string;
4
5
  fontSizeXs: string;
5
6
  fontSizeSm: string;
6
7
  fontSizeMd: string;
@@ -13,4 +14,30 @@ export declare const typography: css.VarGroup<Readonly<{
13
14
  fontWeightBold: string;
14
15
  lineHeight: string;
15
16
  }>, symbol>;
17
+ export declare const typeScale: css.VarGroup<Readonly<{
18
+ fontSize1: string;
19
+ fontSize2: string;
20
+ fontSize3: string;
21
+ fontSize4: string;
22
+ fontSize5: string;
23
+ fontSize6: string;
24
+ fontSize7: string;
25
+ fontSize8: string;
26
+ fontSize9: string;
27
+ lineHeight1: string;
28
+ lineHeight2: string;
29
+ lineHeight3: string;
30
+ lineHeight4: string;
31
+ lineHeight5: string;
32
+ lineHeight6: string;
33
+ lineHeight7: string;
34
+ lineHeight8: string;
35
+ lineHeight9: string;
36
+ displaySm: string;
37
+ displayMd: string;
38
+ displayLg: string;
39
+ letterSpacingTight: string;
40
+ letterSpacingNormal: string;
41
+ letterSpacingWide: string;
42
+ }>, symbol>;
16
43
  //# sourceMappingURL=typography.css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typography.css.d.ts","sourceRoot":"","sources":["../../src/tokens/typography.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,UAAU;;;;;;;;;;;;;WAcrB,CAAA"}
1
+ {"version":3,"file":"typography.css.d.ts","sourceRoot":"","sources":["../../src/tokens/typography.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,kBAAkB,CAAA;AAEpC,eAAO,MAAM,UAAU;;;;;;;;;;;;;;WAerB,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;WAgCpB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duro-app/tokens",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -16,13 +16,15 @@
16
16
  "access": "public"
17
17
  },
18
18
  "files": [
19
- "dist"
19
+ "dist",
20
+ "src"
20
21
  ],
21
22
  "main": "dist/index.js",
22
23
  "module": "dist/index.js",
23
24
  "types": "dist/index.d.ts",
24
25
  "exports": {
25
26
  ".": {
27
+ "source": "./src/index.ts",
26
28
  "import": "./dist/index.js",
27
29
  "types": "./dist/index.d.ts",
28
30
  "default": "./dist/index.js"
@@ -30,7 +32,9 @@
30
32
  "./tokens/colors.css": "./src/tokens/colors.css.ts",
31
33
  "./tokens/spacing.css": "./src/tokens/spacing.css.ts",
32
34
  "./tokens/typography.css": "./src/tokens/typography.css.ts",
35
+ "./tokens/layout-spacing.css": "./src/tokens/layout-spacing.css.ts",
33
36
  "./tokens/shadows.css": "./src/tokens/shadows.css.ts",
37
+ "./tokens/type-presets.css": "./src/tokens/type-presets.css.ts",
34
38
  "./themes/light.css": "./src/themes/light.css.ts",
35
39
  "./themes/high-contrast.css": "./src/themes/high-contrast.css.ts"
36
40
  },
package/src/index.ts ADDED
@@ -0,0 +1,11 @@
1
+ // Tokens
2
+ export {colors} from './tokens/colors.css'
3
+ export {spacing, radii} from './tokens/spacing.css'
4
+ export {layoutSpacing} from './tokens/layout-spacing.css'
5
+ export {typography, typeScale} from './tokens/typography.css'
6
+ export {typePresets} from './tokens/type-presets.css'
7
+ export {shadows} from './tokens/shadows.css'
8
+
9
+ // Themes
10
+ export {lightTheme, lightShadows} from './themes/light.css'
11
+ export {highContrastTheme, highContrastShadows} from './themes/high-contrast.css'
@@ -0,0 +1,39 @@
1
+ import {css} from 'react-strict-dom'
2
+ import {colors} from '../tokens/colors.css'
3
+ import {shadows} from '../tokens/shadows.css'
4
+
5
+ export const highContrastTheme = css.createTheme(colors, {
6
+ bg: '#000000',
7
+ bgCard: '#111111',
8
+ bgCardHover: '#1a1a1a',
9
+ text: '#ffffff',
10
+ textMuted: '#b0b0b0',
11
+ accent: '#60a5fa',
12
+ accentHover: '#93c5fd',
13
+ accentContrast: '#000000',
14
+ border: '#555555',
15
+ error: '#f87171',
16
+ errorHover: '#fca5a5',
17
+ errorBg: 'rgba(248, 113, 113, 0.15)',
18
+ errorBorder: 'rgba(248, 113, 113, 0.5)',
19
+ errorText: '#fca5a5',
20
+ errorContrast: '#000000',
21
+ success: '#4ade80',
22
+ successBg: 'rgba(74, 222, 128, 0.15)',
23
+ successBorder: 'rgba(74, 222, 128, 0.5)',
24
+ successText: '#86efac',
25
+ warning: '#fcd34d',
26
+ warningBg: 'rgba(252, 211, 77, 0.15)',
27
+ warningBorder: 'rgba(252, 211, 77, 0.5)',
28
+ warningText: '#fef08a',
29
+ info: '#60a5fa',
30
+ infoBg: 'rgba(96, 165, 250, 0.15)',
31
+ infoBorder: 'rgba(96, 165, 250, 0.5)',
32
+ infoText: '#bfdbfe',
33
+ })
34
+
35
+ export const highContrastShadows = css.createTheme(shadows, {
36
+ sm: '0 2px 4px rgba(0, 0, 0, 0.6)',
37
+ md: '0 4px 12px rgba(0, 0, 0, 0.7)',
38
+ lg: '0 8px 24px rgba(0, 0, 0, 0.8)',
39
+ })
@@ -0,0 +1,39 @@
1
+ import {css} from 'react-strict-dom'
2
+ import {colors} from '../tokens/colors.css'
3
+ import {shadows} from '../tokens/shadows.css'
4
+
5
+ export const lightTheme = css.createTheme(colors, {
6
+ bg: '#ffffff',
7
+ bgCard: '#f5f5f5',
8
+ bgCardHover: '#ebebeb',
9
+ text: '#1a1a1a',
10
+ textMuted: '#4a4a4a',
11
+ accent: '#1e40af',
12
+ accentHover: '#1a3799',
13
+ accentContrast: '#ffffff',
14
+ border: '#d4d4d4',
15
+ error: '#991b1b',
16
+ errorHover: '#7f1d1d',
17
+ errorBg: 'rgba(153, 27, 27, 0.08)',
18
+ errorBorder: 'rgba(153, 27, 27, 0.3)',
19
+ errorText: '#7f1d1d',
20
+ errorContrast: '#ffffff',
21
+ success: '#166534',
22
+ successBg: 'rgba(22, 101, 52, 0.08)',
23
+ successBorder: 'rgba(22, 101, 52, 0.3)',
24
+ successText: '#14532d',
25
+ warning: '#92400e',
26
+ warningBg: 'rgba(146, 64, 14, 0.08)',
27
+ warningBorder: 'rgba(146, 64, 14, 0.3)',
28
+ warningText: '#78350f',
29
+ info: '#1e40af',
30
+ infoBg: 'rgba(30, 64, 175, 0.08)',
31
+ infoBorder: 'rgba(30, 64, 175, 0.3)',
32
+ infoText: '#1e40af',
33
+ })
34
+
35
+ export const lightShadows = css.createTheme(shadows, {
36
+ sm: '0 2px 4px rgba(0, 0, 0, 0.08)',
37
+ md: '0 4px 12px rgba(0, 0, 0, 0.12)',
38
+ lg: '0 8px 24px rgba(0, 0, 0, 0.16)',
39
+ })
@@ -0,0 +1,46 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ export const colors = css.defineVars({
4
+ // Backgrounds
5
+ bg: '#0f0f0f',
6
+ bgCard: '#1a1a1a',
7
+ bgCardHover: '#242424',
8
+
9
+ // Text
10
+ text: '#e5e5e5',
11
+ textMuted: '#b0b0b0',
12
+
13
+ // Accent
14
+ accent: '#6aaffc',
15
+ accentHover: '#93c5fd',
16
+ accentContrast: '#000000',
17
+
18
+ // Border
19
+ border: '#333333',
20
+
21
+ // Semantic — Error
22
+ error: '#f87171',
23
+ errorHover: '#fca5a5',
24
+ errorBg: 'rgba(248, 113, 113, 0.1)',
25
+ errorBorder: 'rgba(248, 113, 113, 0.3)',
26
+ errorText: '#fca5a5',
27
+ errorContrast: '#000000',
28
+
29
+ // Semantic — Success
30
+ success: '#22c55e',
31
+ successBg: 'rgba(34, 197, 94, 0.1)',
32
+ successBorder: 'rgba(34, 197, 94, 0.3)',
33
+ successText: '#86efac',
34
+
35
+ // Semantic — Warning
36
+ warning: '#fbbf24',
37
+ warningBg: 'rgba(251, 191, 36, 0.1)',
38
+ warningBorder: 'rgba(251, 191, 36, 0.3)',
39
+ warningText: '#fde68a',
40
+
41
+ // Semantic — Info (uses accent)
42
+ info: '#6aaffc',
43
+ infoBg: 'rgba(106, 175, 252, 0.1)',
44
+ infoBorder: 'rgba(106, 175, 252, 0.3)',
45
+ infoText: '#93c5fd',
46
+ })
@@ -0,0 +1,21 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ export const layoutSpacing = css.defineVars({
4
+ // Vertical rhythm (stack gaps)
5
+ stackXs: '4px',
6
+ stackSm: '8px',
7
+ stackMd: '16px',
8
+ stackLg: '24px',
9
+ stackXl: '48px',
10
+
11
+ // Horizontal rhythm (inline gaps)
12
+ inlineXs: '4px',
13
+ inlineSm: '8px',
14
+ inlineMd: '16px',
15
+ inlineLg: '24px',
16
+
17
+ // Container insets
18
+ containerSm: '16px',
19
+ containerMd: '24px',
20
+ containerLg: '32px',
21
+ })
@@ -0,0 +1,7 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ export const shadows = css.defineVars({
4
+ sm: '0 2px 4px rgba(0, 0, 0, 0.3)',
5
+ md: '0 4px 12px rgba(0, 0, 0, 0.4)',
6
+ lg: '0 8px 24px rgba(0, 0, 0, 0.5)',
7
+ })
@@ -0,0 +1,19 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ export const spacing = css.defineVars({
4
+ xs: '4px',
5
+ sm: '8px',
6
+ ms: '12px',
7
+ md: '16px',
8
+ lg: '24px',
9
+ xl: '32px',
10
+ xxl: '48px',
11
+ xxxl: '64px',
12
+ })
13
+
14
+ export const radii = css.defineVars({
15
+ sm: '8px',
16
+ md: '12px',
17
+ lg: '16px',
18
+ full: '9999px',
19
+ })
@@ -0,0 +1,111 @@
1
+ import {css} from 'react-strict-dom'
2
+ import {typography, typeScale} from './typography.css'
3
+
4
+ export const typePresets = css.create({
5
+ // Body
6
+ bodySm: {
7
+ fontFamily: typography.fontFamily,
8
+ fontSize: typeScale.fontSize3,
9
+ lineHeight: typeScale.lineHeight3,
10
+ fontWeight: typography.fontWeightNormal,
11
+ letterSpacing: typeScale.letterSpacingNormal,
12
+ },
13
+ bodyMd: {
14
+ fontFamily: typography.fontFamily,
15
+ fontSize: typeScale.fontSize4,
16
+ lineHeight: typeScale.lineHeight4,
17
+ fontWeight: typography.fontWeightNormal,
18
+ letterSpacing: typeScale.letterSpacingNormal,
19
+ },
20
+ bodyLg: {
21
+ fontFamily: typography.fontFamily,
22
+ fontSize: typeScale.fontSize5,
23
+ lineHeight: typeScale.lineHeight5,
24
+ fontWeight: typography.fontWeightNormal,
25
+ letterSpacing: typeScale.letterSpacingNormal,
26
+ },
27
+
28
+ // UI
29
+ caption: {
30
+ fontFamily: typography.fontFamily,
31
+ fontSize: typeScale.fontSize1,
32
+ lineHeight: typeScale.lineHeight1,
33
+ fontWeight: typography.fontWeightNormal,
34
+ letterSpacing: typeScale.letterSpacingWide,
35
+ },
36
+ label: {
37
+ fontFamily: typography.fontFamily,
38
+ fontSize: typeScale.fontSize3,
39
+ lineHeight: typeScale.lineHeight3,
40
+ fontWeight: typography.fontWeightMedium,
41
+ letterSpacing: typeScale.letterSpacingNormal,
42
+ },
43
+ code: {
44
+ fontFamily: typography.fontFamilyMono,
45
+ fontSize: typeScale.fontSize3,
46
+ lineHeight: typeScale.lineHeight3,
47
+ fontWeight: typography.fontWeightNormal,
48
+ letterSpacing: typeScale.letterSpacingNormal,
49
+ },
50
+ overline: {
51
+ fontFamily: typography.fontFamily,
52
+ fontSize: typeScale.fontSize1,
53
+ lineHeight: typeScale.lineHeight1,
54
+ fontWeight: typography.fontWeightSemibold,
55
+ letterSpacing: typeScale.letterSpacingWide,
56
+ textTransform: 'uppercase' as const,
57
+ },
58
+
59
+ // Heading
60
+ headingSm: {
61
+ fontFamily: typography.fontFamily,
62
+ fontSize: typeScale.fontSize6,
63
+ lineHeight: typeScale.lineHeight6,
64
+ fontWeight: typography.fontWeightSemibold,
65
+ letterSpacing: typeScale.letterSpacingTight,
66
+ },
67
+ headingMd: {
68
+ fontFamily: typography.fontFamily,
69
+ fontSize: typeScale.fontSize7,
70
+ lineHeight: typeScale.lineHeight7,
71
+ fontWeight: typography.fontWeightSemibold,
72
+ letterSpacing: typeScale.letterSpacingTight,
73
+ },
74
+ headingLg: {
75
+ fontFamily: typography.fontFamily,
76
+ fontSize: typeScale.fontSize8,
77
+ lineHeight: typeScale.lineHeight8,
78
+ fontWeight: typography.fontWeightBold,
79
+ letterSpacing: typeScale.letterSpacingTight,
80
+ },
81
+ headingXl: {
82
+ fontFamily: typography.fontFamily,
83
+ fontSize: typeScale.fontSize9,
84
+ lineHeight: typeScale.lineHeight9,
85
+ fontWeight: typography.fontWeightBold,
86
+ letterSpacing: typeScale.letterSpacingTight,
87
+ },
88
+
89
+ // Display (fluid)
90
+ displaySm: {
91
+ fontFamily: typography.fontFamily,
92
+ fontSize: typeScale.displaySm,
93
+ lineHeight: 1.2,
94
+ fontWeight: typography.fontWeightBold,
95
+ letterSpacing: typeScale.letterSpacingTight,
96
+ },
97
+ displayMd: {
98
+ fontFamily: typography.fontFamily,
99
+ fontSize: typeScale.displayMd,
100
+ lineHeight: 1.15,
101
+ fontWeight: typography.fontWeightBold,
102
+ letterSpacing: typeScale.letterSpacingTight,
103
+ },
104
+ displayLg: {
105
+ fontFamily: typography.fontFamily,
106
+ fontSize: typeScale.displayLg,
107
+ lineHeight: 1.1,
108
+ fontWeight: typography.fontWeightBold,
109
+ letterSpacing: typeScale.letterSpacingTight,
110
+ },
111
+ })
@@ -0,0 +1,52 @@
1
+ import {css} from 'react-strict-dom'
2
+
3
+ export const typography = css.defineVars({
4
+ fontFamily:
5
+ '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif',
6
+ fontFamilyMono: '"SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", "Courier New", monospace',
7
+ fontSizeXs: '0.75rem',
8
+ fontSizeSm: '0.875rem',
9
+ fontSizeMd: '1rem',
10
+ fontSizeLg: '1.125rem',
11
+ fontSizeXl: '1.25rem',
12
+ fontSizeHeading: '1.5rem',
13
+ fontWeightNormal: '400',
14
+ fontWeightMedium: '500',
15
+ fontWeightSemibold: '600',
16
+ fontWeightBold: '700',
17
+ lineHeight: '1.5',
18
+ })
19
+
20
+ export const typeScale = css.defineVars({
21
+ // 9-step font size scale
22
+ fontSize1: '0.75rem', // 12px — captions, badges
23
+ fontSize2: '0.8125rem', // 13px — small UI
24
+ fontSize3: '0.875rem', // 14px — default UI (buttons, inputs)
25
+ fontSize4: '1rem', // 16px — body text
26
+ fontSize5: '1.125rem', // 18px — body-lg
27
+ fontSize6: '1.25rem', // 20px — subheading
28
+ fontSize7: '1.5rem', // 24px — heading-sm
29
+ fontSize8: '1.875rem', // 30px — heading-md
30
+ fontSize9: '2.25rem', // 36px — heading-lg
31
+
32
+ // Matched line-heights
33
+ lineHeight1: '1rem', // 16px
34
+ lineHeight2: '1.25rem', // 20px
35
+ lineHeight3: '1.25rem', // 20px
36
+ lineHeight4: '1.5rem', // 24px
37
+ lineHeight5: '1.5rem', // 24px
38
+ lineHeight6: '1.75rem', // 28px
39
+ lineHeight7: '2rem', // 32px
40
+ lineHeight8: '2.25rem', // 36px
41
+ lineHeight9: '2.75rem', // 44px
42
+
43
+ // Fluid display sizes
44
+ displaySm: 'clamp(2.25rem, 1.5rem + 2vw, 3rem)', // 36–48px
45
+ displayMd: 'clamp(2.75rem, 1.75rem + 2.5vw, 3.75rem)', // 44–60px
46
+ displayLg: 'clamp(3.5rem, 2rem + 3.5vw, 4.5rem)', // 56–72px
47
+
48
+ // Letter-spacing
49
+ letterSpacingTight: '-0.02em',
50
+ letterSpacingNormal: '0',
51
+ letterSpacingWide: '0.04em',
52
+ })