paris 0.8.21 → 0.9.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/package.json +2 -2
  3. package/src/helpers/useIsMounted.ts +17 -0
  4. package/src/helpers/useResizeObserver.ts +97 -0
  5. package/src/stories/accordion/Accordion.module.scss +4 -4
  6. package/src/stories/avatar/Avatar.module.scss +1 -1
  7. package/src/stories/avatar/Avatar.tsx +1 -1
  8. package/src/stories/button/Button.module.scss +46 -24
  9. package/src/stories/button/Button.stories.ts +24 -0
  10. package/src/stories/button/Button.tsx +95 -70
  11. package/src/stories/callout/Callout.module.scss +7 -7
  12. package/src/stories/callout/Callout.stories.ts +8 -0
  13. package/src/stories/callout/Callout.tsx +4 -3
  14. package/src/stories/card/Card.module.scss +3 -3
  15. package/src/stories/card/Card.stories.ts +0 -5
  16. package/src/stories/checkbox/Checkbox.module.scss +19 -6
  17. package/src/stories/checkbox/Checkbox.tsx +2 -1
  18. package/src/stories/combobox/Combobox.stories.ts +8 -8
  19. package/src/stories/combobox/Combobox.tsx +11 -4
  20. package/src/stories/dialog/Dialog.module.scss +43 -19
  21. package/src/stories/dialog/Dialog.stories.tsx +40 -0
  22. package/src/stories/dialog/Dialog.tsx +28 -17
  23. package/src/stories/drawer/Drawer.module.scss +141 -46
  24. package/src/stories/drawer/Drawer.stories.tsx +151 -0
  25. package/src/stories/drawer/Drawer.tsx +100 -103
  26. package/src/stories/field/Field.stories.ts +1 -1
  27. package/src/stories/field/Field.tsx +0 -1
  28. package/src/stories/icon/ArrowRight.tsx +11 -0
  29. package/src/stories/icon/Check.tsx +11 -0
  30. package/src/stories/icon/Icon.stories.ts +5 -1
  31. package/src/stories/icon/index.ts +3 -0
  32. package/src/stories/input/Input.module.scss +43 -31
  33. package/src/stories/input/Input.stories.ts +7 -7
  34. package/src/stories/input/Input.tsx +14 -5
  35. package/src/stories/menu/Menu.module.scss +6 -6
  36. package/src/stories/menu/Menu.stories.tsx +24 -28
  37. package/src/stories/popover/Popover.module.scss +3 -3
  38. package/src/stories/select/Select.module.scss +38 -16
  39. package/src/stories/select/Select.stories.ts +24 -12
  40. package/src/stories/select/Select.tsx +17 -3
  41. package/src/stories/styledlink/StyledLink.module.scss +2 -2
  42. package/src/stories/table/Table.module.scss +6 -5
  43. package/src/stories/table/Table.stories.ts +9 -9
  44. package/src/stories/table/Table.tsx +7 -1
  45. package/src/stories/tabs/Tabs.module.scss +168 -27
  46. package/src/stories/tabs/Tabs.stories.tsx +125 -0
  47. package/src/stories/tabs/Tabs.tsx +69 -37
  48. package/src/stories/tag/Tag.module.scss +160 -21
  49. package/src/stories/tag/Tag.stories.ts +22 -1
  50. package/src/stories/tag/Tag.tsx +63 -16
  51. package/src/stories/textarea/TextArea.stories.ts +2 -2
  52. package/src/stories/textarea/TextArea.tsx +12 -5
  53. package/src/stories/theme/themes.ts +907 -13
  54. package/src/stories/theme/tokens.ts +77 -0
  55. package/src/stories/theme/tw-preflight.css +3 -3
  56. package/src/stories/tilt/Tilt.stories.tsx +4 -4
  57. package/src/stories/toast/Toast.module.scss +4 -4
  58. package/src/stories/tabs/Tabs.stories.ts +0 -39
@@ -1,5 +1,5 @@
1
1
  import { createTheme } from 'pte';
2
- import type { CSSColor, CSSLength } from '@ssh/csstypes';
2
+ import type { CSSColor, CSSLength, PixelSize } from '@ssh/csstypes';
3
3
  import type { Property } from 'csstype';
4
4
  import type { PartialDeep } from 'type-fest';
5
5
  import merge from 'ts-deepmerge';
@@ -17,19 +17,66 @@ export type FontDefinition = {
17
17
 
18
18
  export type FontClassDefinition = Omit<FontDefinition, 'fontSize' | 'lineHeight'>;
19
19
 
20
- export type ShadowDefinition = `${CSSLength} ${CSSLength} ${CSSLength} ${CSSColor}` | 'none';
20
+ export type ShadowDefinition = `${PixelSize} ${PixelSize} ${PixelSize} ${PixelSize} ${CSSColor}` | 'none';
21
+
22
+ export type ShadowsType = {
23
+ shallowAbove: ShadowDefinition,
24
+ deepAbove: ShadowDefinition,
25
+ shallowBelow: ShadowDefinition,
26
+ deepBelow: ShadowDefinition,
27
+ shallowLeft: ShadowDefinition,
28
+ shallowRight: ShadowDefinition,
29
+ subtlePopup: ShadowDefinition,
30
+ shallowPopup: ShadowDefinition,
31
+ deepPopup: ShadowDefinition,
32
+ };
21
33
 
22
- const Shadows = {
23
- shallowBelow: '0px 4px 20px rgba(0, 0, 0, 0.2)',
24
- deepBelow: '0px 8px 20px rgba(0, 0, 0, 0.2)',
25
- shallowAbove: '0px -4px 20px rgba(0, 0, 0, 0.2)',
26
- deepAbove: '0px -8px 20px rgba(0, 0, 0, 0.2)',
27
- shallowPopup: '0px 0px 30px rgba(0, 0, 0, 0.2)',
28
- deepPopup: '0px 0px 40px rgba(0, 0, 0, 0.2)',
29
- subtlePopup: '0px 0px 10px rgba(0, 0, 0, 0.1)',
30
- shallowLeft: '-20px 0px 40px rgba(0, 0, 0, 0.1)',
31
- shallowRight: '20px 0px 40px rgba(0, 0, 0, 0.1)',
32
- } as const;
34
+ const Shadows: ShadowsType = {
35
+ shallowAbove: '0px -4px 20px 0px rgba(0, 0, 0, 0.2)',
36
+ deepAbove: '0px -8px 20px 0px rgba(0, 0, 0, 0.2)',
37
+ shallowBelow: '0px 4px 20px 0px rgba(0, 0, 0, 0.2)',
38
+ deepBelow: '0px 8px 20px 0px rgba(0, 0, 0, 0.2)',
39
+ shallowLeft: '-20px 0px 40px 0px rgba(0, 0, 0, 0.1)',
40
+ shallowRight: '20px 0px 40px 0px rgba(0, 0, 0, 0.1)',
41
+ subtlePopup: '0px 0px 10px 0px rgba(0, 0, 0, 0.1)',
42
+ shallowPopup: '0px 0px 30px 0px rgba(0, 0, 0, 0.2)',
43
+ deepPopup: '0px 0px 40px 0px rgba(0, 0, 0, 0.2)',
44
+ };
45
+
46
+ const ShadowsDark: ShadowsType = {
47
+ ...Shadows,
48
+ deepBelow: '0px 20px 30px 10px rgba(0, 0, 0, 0.5)',
49
+ shallowLeft: '-20px 0px 60px 20px rgba(0, 0, 0, 0.25)',
50
+ shallowRight: '20px 0px 60px 20px rgba(0, 0, 0, 0.25)',
51
+ deepPopup: '0px 0px 40px 15px rgba(0, 0, 0, 0.35)',
52
+ };
53
+
54
+ export type GlowsType = {
55
+ glowSubtle1: ShadowDefinition,
56
+ glowSubtle2: ShadowDefinition,
57
+ glowSubtle3: ShadowDefinition,
58
+ glowDeep1: ShadowDefinition,
59
+ glowDeep2: ShadowDefinition,
60
+ glowDeep3: ShadowDefinition,
61
+ };
62
+
63
+ const Glows: GlowsType = {
64
+ glowSubtle1: '0px 0px 3px 0px rgba(29, 238, 205, 0.3)',
65
+ glowSubtle2: '0px 0px 6px 0px rgba(29, 238, 205, 0.2)',
66
+ glowSubtle3: '0px 0px 9px 0px rgba(29, 238, 205, 0.1)',
67
+ glowDeep1: '0px 0px 3px 1px rgba(29, 238, 205, 0.3)',
68
+ glowDeep2: '0px 0px 9px 3px rgba(29, 238, 205, 0.3)',
69
+ glowDeep3: '0px 0px 15px 0px rgba(29, 238, 205, 0.2)',
70
+ };
71
+
72
+ const GlowsDark: GlowsType = {
73
+ glowSubtle1: '0px 0px 3px 0px rgba(29, 238, 205, 0.15)',
74
+ glowSubtle2: '0px 0px 6px 0px rgba(29, 238, 205, 0.1)',
75
+ glowSubtle3: '0px 0px 9px 0px rgba(29, 238, 205, 0.05)',
76
+ glowDeep1: '0px 0px 3px 1px rgba(29, 238, 205, 0.15)',
77
+ glowDeep2: '0px 0px 9px 3px rgba(29, 238, 205, 0.15)',
78
+ glowDeep3: '0px 0px 12px 0px rgba(29, 238, 205, 0.1)',
79
+ };
33
80
 
34
81
  export type TimingFunction = `cubic-bezier(${number}, ${number}, ${number}, ${number})` | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'linear';
35
82
  export type Duration = `${number}ms` | `${number}s`;
@@ -44,6 +91,340 @@ const TimingFunctions: Omit<Theme['animations']['timing'], 'default'> = {
44
91
  };
45
92
 
46
93
  export type Theme = {
94
+ new: {
95
+ tokens: TokensT['new'],
96
+ utils: {
97
+ defaultUserSelect: Property.UserSelect,
98
+ }
99
+ colors: {
100
+ // Content
101
+ contentPrimary: CSSColor,
102
+ contentSecondary: CSSColor,
103
+ contentTertiary: CSSColor,
104
+ contentDisabled: CSSColor,
105
+ contentAccent: CSSColor,
106
+ contentNegative: CSSColor,
107
+ contentWarning: CSSColor,
108
+ contentPositive: CSSColor,
109
+
110
+ // Content Inverse
111
+ contentInversePrimary: CSSColor,
112
+ contentInverseSecondary: CSSColor,
113
+ contentInverseTertiary: CSSColor,
114
+ contentInverseDisabled: CSSColor,
115
+
116
+ // Background
117
+ backgroundPrimary: CSSColor,
118
+ backgroundSecondary: CSSColor,
119
+ backgroundMobilePrimary: CSSColor,
120
+ backgroundMobileSecondary: CSSColor,
121
+ backgroundNegative: CSSColor,
122
+ backgroundNegativeMedium: CSSColor,
123
+ backgroundNegativeStrong: CSSColor,
124
+ backgroundWarning: CSSColor,
125
+ backgroundWarningMedium: CSSColor,
126
+ backgroundWarningStrong: CSSColor,
127
+ backgroundPositive: CSSColor,
128
+ backgroundPositiveMedium: CSSColor,
129
+ backgroundPositiveStrong: CSSColor,
130
+ backgroundAccent: CSSColor,
131
+ backgroundAccentMedium: CSSColor,
132
+ backgroundAccentStrong: CSSColor,
133
+
134
+ // Surface
135
+ surfacePrimary: CSSColor,
136
+ surfaceSecondary: CSSColor,
137
+ surfaceTertiary: CSSColor,
138
+ surfaceQuaternary: CSSColor,
139
+
140
+ // Border
141
+ borderSubtle: CSSColor,
142
+ borderMedium: CSSColor,
143
+ borderStrong: CSSColor,
144
+ borderUltrastrong: CSSColor,
145
+
146
+ // Button
147
+ buttonFill: CSSColor,
148
+ buttonFillHover: CSSColor,
149
+ buttonFillDisabled: CSSColor,
150
+ buttonFillHoverAlt: CSSColor,
151
+ buttonFillHoverNegative: CSSColor,
152
+ buttonBorder: CSSColor,
153
+ buttonBorderDisabled: CSSColor,
154
+ buttonBorderNegative: CSSColor,
155
+
156
+ // Input
157
+ inputFill: CSSColor,
158
+ inputFillFocus: CSSColor,
159
+ inputFillNegative: CSSColor,
160
+ inputFillDisabled: CSSColor,
161
+ inputBorderFocus: CSSColor,
162
+ inputBorderNegative: CSSColor,
163
+
164
+ // Overlay
165
+ overlaySubtle: CSSColor,
166
+ overlayMedium: CSSColor,
167
+ overlayStrong: CSSColor,
168
+ overlayInverseSubtle: CSSColor,
169
+ overlayInverseMedium: CSSColor,
170
+ overlayWhiteSubtle: CSSColor,
171
+ overlayWhiteMedium: CSSColor,
172
+ overlayWhiteStrong: CSSColor,
173
+ overlayWhiteUltrastrong: CSSColor,
174
+ overlayBlackSubtle: CSSColor,
175
+ overlayBlackMedium: CSSColor,
176
+ overlayBlackStrong: CSSColor,
177
+ overlayPageBackground: CSSColor,
178
+ overlayRed: CSSColor,
179
+ overlayTeal: CSSColor,
180
+ },
181
+ blurs: {
182
+ strong: string,
183
+ ultrastrong: string,
184
+ },
185
+ typography: {
186
+ fontFamily: string,
187
+ italicLetterSpacing: CSSLength,
188
+ verticalMetricsAdjust: CSSLength;
189
+
190
+ fontWeights: {
191
+ thin: number,
192
+ extralight: number,
193
+ light: number,
194
+ normal: number,
195
+ medium: number,
196
+ semibold: number,
197
+ bold: number,
198
+ extrabold: number,
199
+ black: number,
200
+ extrablack: number,
201
+ },
202
+
203
+ fontStyles: {
204
+ normal: string,
205
+ italic: string,
206
+ }
207
+
208
+ styles: {
209
+ // Display
210
+
211
+ displayLarge: FontDefinition,
212
+ displayMedium: FontDefinition,
213
+ display: FontDefinition,
214
+ displaySmall: FontDefinition,
215
+
216
+ // Heading
217
+
218
+ headingLarge: FontDefinition,
219
+ headingMedium: FontDefinition,
220
+ headingSmall: FontDefinition,
221
+ headingXSmall: FontDefinition,
222
+ headingXXSmall: FontDefinition,
223
+
224
+ // Label
225
+
226
+ labelXLarge: FontDefinition,
227
+ labelLarge: FontDefinition,
228
+ labelMedium: FontDefinition,
229
+ labelSmall: FontDefinition,
230
+ labelXSmall: FontDefinition,
231
+ labelXXSmall: FontDefinition,
232
+
233
+ // Paragraph
234
+
235
+ paragraphLarge: FontDefinition,
236
+ paragraphMedium: FontDefinition,
237
+ paragraphSmall: FontDefinition,
238
+ paragraphXSmall: FontDefinition,
239
+ paragraphXXSmall: FontDefinition,
240
+ }
241
+ },
242
+ lighting: {
243
+ shallowBelow: ShadowDefinition,
244
+ deepBelow: ShadowDefinition,
245
+ shallowAbove: ShadowDefinition,
246
+ deepAbove: ShadowDefinition,
247
+ shallowPopup: ShadowDefinition,
248
+ deepPopup: ShadowDefinition,
249
+ subtlePopup: ShadowDefinition,
250
+ shallowLeft: ShadowDefinition,
251
+ shallowRight: ShadowDefinition,
252
+ glowSubtle1: ShadowDefinition,
253
+ glowSubtle2: ShadowDefinition,
254
+ glowSubtle3: ShadowDefinition,
255
+ glowDeep1: ShadowDefinition,
256
+ glowDeep2: ShadowDefinition,
257
+ glowDeep3: ShadowDefinition,
258
+ },
259
+ materials: {
260
+ // Simple Materials
261
+ whiteThin: {
262
+ background: CSSColor,
263
+ },
264
+ whiteRegular: {
265
+ background: CSSColor,
266
+ },
267
+ whiteThick: {
268
+ background: CSSColor,
269
+ },
270
+ blackThin: {
271
+ background: CSSColor,
272
+ },
273
+ blackRegular: {
274
+ background: CSSColor,
275
+ },
276
+ blackThick: {
277
+ background: CSSColor,
278
+ },
279
+
280
+ // Multi-part Materials
281
+ lightGreyUltrathin: {
282
+ background: CSSColor,
283
+ backgroundBlend: CSSColor
284
+ mixBlendMode: Property.MixBlendMode,
285
+ },
286
+ lightGreyThin: {
287
+ background: CSSColor,
288
+ backgroundBlend: CSSColor
289
+ mixBlendMode: Property.MixBlendMode,
290
+ },
291
+ lightGreyRegular: {
292
+ background: CSSColor,
293
+ backgroundBlend: CSSColor
294
+ mixBlendMode: Property.MixBlendMode,
295
+ },
296
+ lightGreyThick: {
297
+ background: CSSColor,
298
+ backgroundBlend: CSSColor
299
+ mixBlendMode: Property.MixBlendMode,
300
+ },
301
+ darkGreyUltrathin: {
302
+ background: CSSColor,
303
+ backgroundBlend: CSSColor
304
+ mixBlendMode: Property.MixBlendMode,
305
+ },
306
+ darkGreyThin: {
307
+ background: CSSColor,
308
+ backgroundBlend: CSSColor
309
+ mixBlendMode: Property.MixBlendMode,
310
+ },
311
+ darkGreyRegular: {
312
+ background: CSSColor,
313
+ backgroundBlend: CSSColor
314
+ mixBlendMode: Property.MixBlendMode,
315
+ },
316
+ darkGreyThick: {
317
+ background: CSSColor,
318
+ backgroundBlend: CSSColor
319
+ mixBlendMode: Property.MixBlendMode,
320
+ },
321
+ greyUltrathin: {
322
+ background: CSSColor,
323
+ backgroundBlend: CSSColor
324
+ mixBlendMode: Property.MixBlendMode,
325
+ },
326
+ greyThin: {
327
+ background: CSSColor,
328
+ backgroundBlend: CSSColor
329
+ mixBlendMode: Property.MixBlendMode,
330
+ },
331
+ greyRegular: {
332
+ background: CSSColor,
333
+ backgroundBlend: CSSColor
334
+ mixBlendMode: Property.MixBlendMode,
335
+ },
336
+ greyThick: {
337
+ background: CSSColor,
338
+ backgroundBlend: CSSColor
339
+ mixBlendMode: Property.MixBlendMode,
340
+ },
341
+
342
+ // Material Variables
343
+ primaryThin: {
344
+ background: CSSColor,
345
+ },
346
+ primaryRegular: {
347
+ background: CSSColor,
348
+ },
349
+ primaryThick: {
350
+ background: CSSColor,
351
+ },
352
+ secondaryUltrathin: {
353
+ background: CSSColor,
354
+ backgroundBlend: CSSColor
355
+ mixBlendMode: Property.MixBlendMode,
356
+ },
357
+ secondaryThin: {
358
+ background: CSSColor,
359
+ backgroundBlend: CSSColor
360
+ mixBlendMode: Property.MixBlendMode,
361
+ },
362
+ secondaryRegular: {
363
+ background: CSSColor,
364
+ backgroundBlend: CSSColor
365
+ mixBlendMode: Property.MixBlendMode,
366
+ },
367
+ secondaryThick: {
368
+ background: CSSColor,
369
+ backgroundBlend: CSSColor
370
+ mixBlendMode: Property.MixBlendMode,
371
+ },
372
+ },
373
+ borders: {
374
+ // Border Radius
375
+ radius: {
376
+ pill: CSSLength,
377
+ circle: CSSLength,
378
+ rectangle: CSSLength,
379
+ rounded: CSSLength,
380
+ roundedSmall: CSSLength,
381
+ roundedLarge: CSSLength,
382
+ roundedXL: CSSLength,
383
+ },
384
+
385
+ // Dropdowns (Select, Menu, Popovers, etc.)
386
+
387
+ dropdown: {
388
+ color: CSSColor,
389
+ shadow: ShadowDefinition,
390
+ border: `${number}px ${string} ${CSSColor}` | 'none',
391
+ },
392
+ },
393
+ surfaces: {
394
+ dialog: {
395
+ border: `${number}px ${string} ${CSSColor}`,
396
+ outline: `${number}px ${string} ${CSSColor}`,
397
+ background: CSSColor,
398
+ backdropFilter: string,
399
+ },
400
+ },
401
+ animations: {
402
+ interaction: string,
403
+ timing: {
404
+ easeInOut: TimingFunction,
405
+ easeOut: TimingFunction,
406
+ easeIn: TimingFunction,
407
+ easeOutQuad: TimingFunction,
408
+ easeInQuad: TimingFunction,
409
+ easeInOutExpo: TimingFunction,
410
+ default: TimingFunction,
411
+ },
412
+ duration: {
413
+ rapid: Duration,
414
+ fast: Duration,
415
+ normal: Duration,
416
+ relaxed: Duration,
417
+ slow: Duration,
418
+ gradual: Duration,
419
+ },
420
+ },
421
+ breakpoints: {
422
+ sm: `${number}px`,
423
+ md: `${number}px`,
424
+ lg: `${number}px`,
425
+ xl: `${number}px`,
426
+ }
427
+ },
47
428
  tokens: TokensT,
48
429
  utils: {
49
430
  defaultUserSelect: Property.UserSelect,
@@ -274,6 +655,396 @@ export const ParagraphFontClass: FontClassDefinition = {
274
655
  };
275
656
 
276
657
  export const LightTheme: Theme = {
658
+ new: {
659
+ tokens: T.new,
660
+ utils: {
661
+ defaultUserSelect: 'none',
662
+ },
663
+ colors: {
664
+ // Content
665
+ contentPrimary: T.new.colors.grey2400,
666
+ contentSecondary: T.new.colors.grey1600,
667
+ contentTertiary: T.new.colors.grey1400,
668
+ contentDisabled: T.new.colors.grey1100,
669
+ contentAccent: T.new.colors.teal400,
670
+ contentNegative: T.new.colors.red400,
671
+ contentWarning: T.new.colors.yellow500,
672
+ contentPositive: T.new.colors.green400,
673
+
674
+ // Content Inverse
675
+ contentInversePrimary: T.new.colors.white,
676
+ contentInverseSecondary: T.new.colors.grey600,
677
+ contentInverseTertiary: T.new.colors.grey1000,
678
+ contentInverseDisabled: T.new.colors.grey1400,
679
+
680
+ // Background
681
+ backgroundPrimary: T.new.colors.white,
682
+ backgroundSecondary: T.new.colors.grey100,
683
+ backgroundMobilePrimary: T.new.colors.white,
684
+ backgroundMobileSecondary: T.new.colors.grey100,
685
+ backgroundNegative: T.new.colors.red100,
686
+ backgroundNegativeMedium: T.new.colors.red200,
687
+ backgroundNegativeStrong: T.new.colors.red300,
688
+ backgroundWarning: T.new.colors.yellow100,
689
+ backgroundWarningMedium: T.new.colors.yellow200,
690
+ backgroundWarningStrong: T.new.colors.yellow300,
691
+ backgroundPositive: T.new.colors.green100,
692
+ backgroundPositiveMedium: T.new.colors.green200,
693
+ backgroundPositiveStrong: T.new.colors.green300,
694
+ backgroundAccent: T.new.colors.teal100,
695
+ backgroundAccentMedium: T.new.colors.teal200,
696
+ backgroundAccentStrong: T.new.colors.teal300,
697
+
698
+ // Surface
699
+ surfacePrimary: T.new.colors.white,
700
+ surfaceSecondary: T.new.colors.grey200,
701
+ surfaceTertiary: T.new.colors.grey400,
702
+ surfaceQuaternary: T.new.colors.grey100,
703
+
704
+ // Border
705
+ borderSubtle: T.new.colors.grey400,
706
+ borderMedium: T.new.colors.grey600,
707
+ borderStrong: T.new.colors.grey700,
708
+ borderUltrastrong: T.new.colors.grey1400,
709
+
710
+ // Button
711
+ buttonFill: T.new.colors.grey2400,
712
+ buttonFillHover: T.new.colors.grey1900,
713
+ buttonFillDisabled: T.new.colors.grey500,
714
+ buttonFillHoverAlt: T.new.colors.grey300,
715
+ buttonFillHoverNegative: T.new.colors.red100,
716
+ buttonBorder: T.new.colors.grey2400,
717
+ buttonBorderDisabled: T.new.colors.grey1000,
718
+ buttonBorderNegative: T.new.colors.red400,
719
+
720
+ // Input
721
+ inputFill: T.new.colors.grey300,
722
+ inputFillFocus: T.new.colors.grey400,
723
+ inputFillNegative: T.new.colors.red100,
724
+ inputFillDisabled: T.new.colors.grey200,
725
+ inputBorderFocus: T.new.colors.grey1400,
726
+ inputBorderNegative: T.new.colors.red400,
727
+
728
+ // Overlay
729
+ overlaySubtle: 'rgba(0, 0, 0, 0.02)',
730
+ overlayMedium: 'rgba(0, 0, 0, 0.03)',
731
+ overlayStrong: 'rgba(0, 0, 0, 0.05)',
732
+ overlayInverseSubtle: 'rgba(255, 255, 255, 0.02)',
733
+ overlayInverseMedium: 'rgba(255, 255, 255, 0.05)',
734
+ overlayWhiteSubtle: 'rgba(255, 255, 255, 0.04)',
735
+ overlayWhiteMedium: 'rgba(255, 255, 255, 0.09)',
736
+ overlayWhiteStrong: 'rgba(255, 255, 255, 0.11)',
737
+ overlayWhiteUltrastrong: 'rgba(255, 255, 255, 0.85)',
738
+ overlayBlackSubtle: 'rgba(0, 0, 0, 0.04)',
739
+ overlayBlackMedium: 'rgba(0, 0, 0, 0.07)',
740
+ overlayBlackStrong: 'rgba(0, 0, 0, 0.1)',
741
+ overlayPageBackground: 'rgba(60, 60, 60, 0.65)',
742
+ overlayRed: 'rgba(253, 77, 46, 0.07)',
743
+ overlayTeal: 'rgba(29, 238, 205, 0.1)',
744
+ },
745
+ blurs: {
746
+ strong: 'blur(17.5px)',
747
+ ultrastrong: 'blur(37.5px)',
748
+ },
749
+ typography: {
750
+ fontFamily: '"Graphik Web", -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif',
751
+ italicLetterSpacing: '-0.01em',
752
+ verticalMetricsAdjust: '1px',
753
+
754
+ fontWeights: {
755
+ thin: 100,
756
+ extralight: 200,
757
+ light: 300,
758
+ normal: 400,
759
+ medium: 500,
760
+ semibold: 600,
761
+ bold: 700,
762
+ extrabold: 800,
763
+ black: 900,
764
+ extrablack: 950,
765
+ },
766
+
767
+ fontStyles: {
768
+ italic: 'italic',
769
+ normal: 'normal',
770
+ },
771
+
772
+ styles: {
773
+ // Display
774
+
775
+ displayLarge: {
776
+ ...DisplayFontClass,
777
+ fontSize: '72px',
778
+ lineHeight: '86px',
779
+ },
780
+ displayMedium: {
781
+ ...DisplayFontClass,
782
+ fontSize: '52px',
783
+ lineHeight: '62px',
784
+ },
785
+ display: {
786
+ ...DisplayFontClass,
787
+ fontSize: '42px',
788
+ lineHeight: '50.4px',
789
+ },
790
+ displaySmall: {
791
+ ...DisplayFontClass,
792
+ fontSize: '34px',
793
+ lineHeight: '41px',
794
+ },
795
+
796
+ // Heading
797
+
798
+ headingLarge: {
799
+ ...HeadingFontClass,
800
+ fontSize: '32px',
801
+ lineHeight: '38px',
802
+ },
803
+ headingMedium: {
804
+ ...HeadingFontClass,
805
+ fontSize: '28px',
806
+ lineHeight: '34px',
807
+ },
808
+ headingSmall: {
809
+ ...HeadingFontClass,
810
+ fontSize: '24px',
811
+ lineHeight: '29px',
812
+ },
813
+ headingXSmall: {
814
+ ...HeadingFontClass,
815
+ fontSize: '20px',
816
+ lineHeight: '24px',
817
+ },
818
+ headingXXSmall: {
819
+ ...HeadingFontClass,
820
+ fontSize: '18px',
821
+ lineHeight: '22px',
822
+ },
823
+
824
+ // Label
825
+
826
+ labelXLarge: {
827
+ ...LabelFontClass,
828
+ fontSize: '18px',
829
+ lineHeight: '22px',
830
+ },
831
+ labelLarge: {
832
+ ...LabelFontClass,
833
+ fontSize: '16px',
834
+ lineHeight: '19px',
835
+ },
836
+ labelMedium: {
837
+ ...LabelFontClass,
838
+ fontSize: '14px',
839
+ lineHeight: '17px',
840
+ },
841
+ labelSmall: {
842
+ ...LabelFontClass,
843
+ fontSize: '12px',
844
+ lineHeight: '14px',
845
+ },
846
+ labelXSmall: {
847
+ ...LabelFontClass,
848
+ fontSize: '10px',
849
+ lineHeight: '12px',
850
+ },
851
+ labelXXSmall: {
852
+ ...LabelFontClass,
853
+ fontSize: '9px',
854
+ lineHeight: '10.8px',
855
+ },
856
+
857
+ // Paragraph
858
+
859
+ paragraphLarge: {
860
+ ...ParagraphFontClass,
861
+ fontSize: '18px',
862
+ lineHeight: '150%',
863
+ },
864
+ paragraphMedium: {
865
+ ...ParagraphFontClass,
866
+ fontSize: '16px',
867
+ lineHeight: '150%',
868
+ },
869
+ paragraphSmall: {
870
+ ...ParagraphFontClass,
871
+ fontSize: '14px',
872
+ lineHeight: '150%',
873
+ },
874
+ paragraphXSmall: {
875
+ ...ParagraphFontClass,
876
+ fontSize: '12px',
877
+ lineHeight: '150%',
878
+ },
879
+ paragraphXXSmall: {
880
+ ...ParagraphFontClass,
881
+ fontSize: '10px',
882
+ lineHeight: '150%',
883
+ },
884
+ },
885
+ },
886
+ lighting: {
887
+ ...Shadows,
888
+ ...Glows,
889
+ },
890
+ materials: {
891
+ whiteThin: {
892
+ background: 'rgba(255, 255, 255, 0.5)',
893
+ },
894
+ whiteRegular: {
895
+ background: 'rgba(255, 255, 255, 0.85)',
896
+ },
897
+ whiteThick: {
898
+ background: 'rgba(255, 255, 255, 0.93)',
899
+ },
900
+ blackThin: {
901
+ background: 'rgba(0, 0, 0, 0.3)',
902
+ },
903
+ blackRegular: {
904
+ background: 'rgba(0, 0, 0, 0.75)',
905
+ },
906
+ blackThick: {
907
+ background: 'rgba(0, 0, 0, 0.85)',
908
+ },
909
+
910
+ lightGreyUltrathin: {
911
+ background: 'rgba(191, 191, 191, 0.44)',
912
+ backgroundBlend: '#303030',
913
+ mixBlendMode: 'color-dodge',
914
+ },
915
+ lightGreyThin: {
916
+ background: 'rgba(166, 166, 166, 0.70)',
917
+ backgroundBlend: '#3D3D3D',
918
+ mixBlendMode: 'color-dodge',
919
+ },
920
+ lightGreyRegular: {
921
+ background: 'rgba(179, 179, 179, 0.82)',
922
+ backgroundBlend: '#434343',
923
+ mixBlendMode: 'color-dodge',
924
+ },
925
+ lightGreyThick: {
926
+ background: 'rgba(153, 153, 153, 0.97)',
927
+ backgroundBlend: '#5F5F5F',
928
+ mixBlendMode: 'color-dodge',
929
+ },
930
+ darkGreyUltrathin: {
931
+ background: 'rgba(37, 37, 37, 0.55)',
932
+ backgroundBlend: '#9C9C9C',
933
+ mixBlendMode: 'overlay',
934
+ },
935
+ darkGreyThin: {
936
+ background: 'rgba(37, 37, 37, 0.70)',
937
+ backgroundBlend: '#9C9C9C',
938
+ mixBlendMode: 'overlay',
939
+ },
940
+ darkGreyRegular: {
941
+ background: 'rgba(37, 37, 37, 0.82)',
942
+ backgroundBlend: '#8C8C8C',
943
+ mixBlendMode: 'overlay',
944
+ },
945
+ darkGreyThick: {
946
+ background: 'rgba(37, 37, 37, 0.90)',
947
+ backgroundBlend: '#7C7C7C',
948
+ mixBlendMode: 'overlay',
949
+ },
950
+ greyUltrathin: {
951
+ background: 'rgba(37, 37, 37, 0.55)',
952
+ backgroundBlend: '#D2D2D2',
953
+ mixBlendMode: 'overlay',
954
+ },
955
+ greyThin: {
956
+ background: 'rgba(37, 37, 37, 0.70)',
957
+ backgroundBlend: '#CFCFCF',
958
+ mixBlendMode: 'overlay',
959
+ },
960
+ greyRegular: {
961
+ background: 'rgba(37, 37, 37, 0.82)',
962
+ backgroundBlend: '#BCBCBC',
963
+ mixBlendMode: 'overlay',
964
+ },
965
+ greyThick: {
966
+ background: 'rgba(37, 37, 37, 0.90)',
967
+ backgroundBlend: '#B6B6B6',
968
+ mixBlendMode: 'overlay',
969
+ },
970
+
971
+ primaryThin: {
972
+ background: 'rgba(255, 255, 255, 0.5)',
973
+ },
974
+ primaryRegular: {
975
+ background: 'rgba(255, 255, 255, 0.85)',
976
+ },
977
+ primaryThick: {
978
+ background: 'rgba(255, 255, 255, 0.93)',
979
+ },
980
+ secondaryUltrathin: {
981
+ background: 'rgba(191, 191, 191, 0.44)',
982
+ backgroundBlend: '#303030',
983
+ mixBlendMode: 'color-dodge',
984
+ },
985
+ secondaryThin: {
986
+ background: 'rgba(166, 166, 166, 0.70)',
987
+ backgroundBlend: '#3D3D3D',
988
+ mixBlendMode: 'color-dodge',
989
+ },
990
+ secondaryRegular: {
991
+ background: 'rgba(179, 179, 179, 0.82)',
992
+ backgroundBlend: '#434343',
993
+ mixBlendMode: 'color-dodge',
994
+ },
995
+ secondaryThick: {
996
+ background: 'rgba(153, 153, 153, 0.97)',
997
+ backgroundBlend: '#5F5F5F',
998
+ mixBlendMode: 'color-dodge',
999
+ },
1000
+ },
1001
+ borders: {
1002
+ radius: {
1003
+ pill: '1000px',
1004
+ circle: '100%',
1005
+ rectangle: '0px',
1006
+ rounded: '8px',
1007
+ roundedSmall: '4px',
1008
+ roundedLarge: '12px',
1009
+ roundedXL: '16px',
1010
+ },
1011
+
1012
+ dropdown: {
1013
+ shadow: Shadows.deepBelow,
1014
+ color: 'transparent',
1015
+ border: 'none',
1016
+ },
1017
+ },
1018
+ surfaces: {
1019
+ dialog: {
1020
+ border: '8px solid rgba(0, 0, 0, 0.2)',
1021
+ outline: '1px solid rgba(0, 0, 0, 0.25)',
1022
+ background: 'rgba(255, 255, 255, 0.9)',
1023
+ backdropFilter: 'blur(6px)',
1024
+ },
1025
+ },
1026
+ animations: {
1027
+ interaction: '200ms cubic-bezier(0.5, 1, 0.89, 1)',
1028
+ timing: {
1029
+ ...TimingFunctions,
1030
+ default: TimingFunctions.easeOut,
1031
+ },
1032
+ duration: {
1033
+ rapid: '50ms',
1034
+ fast: '100ms',
1035
+ normal: '200ms',
1036
+ relaxed: '300ms',
1037
+ slow: '400ms',
1038
+ gradual: '600ms',
1039
+ },
1040
+ },
1041
+ breakpoints: {
1042
+ sm: '480px',
1043
+ md: '640px',
1044
+ lg: '768px',
1045
+ xl: '1024px',
1046
+ },
1047
+ },
277
1048
  tokens: T,
278
1049
  utils: {
279
1050
  defaultUserSelect: 'none',
@@ -538,6 +1309,129 @@ export const LightTheme: Theme = {
538
1309
  };
539
1310
 
540
1311
  export const DarkTheme: Theme = merge(LightTheme, {
1312
+ new: {
1313
+ colors: {
1314
+ // Content
1315
+ contentPrimary: T.new.colors.grey200,
1316
+ contentSecondary: T.new.colors.grey800,
1317
+ contentTertiary: T.new.colors.grey1000,
1318
+ contentDisabled: T.new.colors.grey1300,
1319
+
1320
+ contentInversePrimary: T.new.colors.grey2400,
1321
+ contentInverseSecondary: T.new.colors.grey1600,
1322
+ contentInverseTertiary: T.new.colors.grey1400,
1323
+ contentInverseDisabled: T.new.colors.grey1000,
1324
+
1325
+ // Background
1326
+ backgroundPrimary: T.new.colors.grey2400,
1327
+ backgroundSecondary: T.new.colors.grey2200,
1328
+ backgroundMobilePrimary: T.new.colors.black,
1329
+ backgroundMobileSecondary: T.new.colors.grey2300,
1330
+ backgroundNegative: T.new.colors.red800,
1331
+ backgroundNegativeMedium: T.new.colors.red700,
1332
+ backgroundNegativeStrong: T.new.colors.red600,
1333
+ backgroundWarning: T.new.colors.yellow800,
1334
+ backgroundWarningMedium: T.new.colors.yellow700,
1335
+ backgroundWarningStrong: T.new.colors.yellow600,
1336
+ backgroundPositive: T.new.colors.green800,
1337
+ backgroundPositiveMedium: T.new.colors.green700,
1338
+ backgroundPositiveStrong: T.new.colors.green600,
1339
+ backgroundAccent: T.new.colors.teal800,
1340
+ backgroundAccentMedium: T.new.colors.teal700,
1341
+ backgroundAccentStrong: T.new.colors.teal600,
1342
+
1343
+ // Surface
1344
+ surfacePrimary: T.new.colors.grey2000,
1345
+ surfaceSecondary: T.new.colors.grey2100,
1346
+ surfaceTertiary: T.new.colors.grey2200,
1347
+ surfaceQuaternary: T.new.colors.grey1900,
1348
+
1349
+ // Border
1350
+ borderSubtle: T.new.colors.grey2000,
1351
+ borderMedium: T.new.colors.grey1700,
1352
+ borderStrong: T.new.colors.grey1600,
1353
+ borderUltrastrong: T.new.colors.grey900,
1354
+
1355
+ // Button
1356
+ buttonFill: T.new.colors.grey200,
1357
+ buttonFillHover: T.new.colors.grey400,
1358
+ buttonFillDisabled: T.new.colors.grey1700,
1359
+ buttonFillHoverAlt: T.new.colors.grey2000,
1360
+ buttonFillHoverNegative: T.new.colors.red800,
1361
+ buttonBorder: T.new.colors.grey100,
1362
+ buttonBorderDisabled: T.new.colors.grey1400,
1363
+ buttonBorderNegative: T.new.colors.red400,
1364
+
1365
+ // Input
1366
+ inputFill: T.new.colors.grey2200,
1367
+ inputFillFocus: T.new.colors.grey2300,
1368
+ inputFillNegative: T.new.colors.red800,
1369
+ inputFillDisabled: T.new.colors.grey2100,
1370
+ inputBorderFocus: T.new.colors.grey900,
1371
+
1372
+ // Overlay
1373
+ overlaySubtle: 'rgba(255, 255, 255, 0.03)',
1374
+ overlayMedium: 'rgba(255, 255, 255, 0.07)',
1375
+ overlayStrong: 'rgba(255, 255, 255, 0.09)',
1376
+ overlayInverseSubtle: 'rgba(0, 0, 0, 0.02)',
1377
+ overlayInverseMedium: 'rgba(0, 0, 0, 0.05)',
1378
+ overlayWhiteUltrastrong: 'rgba(0, 0, 0, 0.18)',
1379
+ overlayBlackSubtle: 'rgba(255, 255, 255, 0.2)',
1380
+ overlayBlackMedium: 'rgba(255, 255, 255, 0.3)',
1381
+ overlayBlackStrong: 'rgba(255, 255, 255, 0.4)',
1382
+ overlayPageBackground: 'rgba(18, 18, 18, 0.75)',
1383
+ },
1384
+ lighting: {
1385
+ ...ShadowsDark,
1386
+ ...GlowsDark,
1387
+ },
1388
+ materials: {
1389
+ primaryThin: {
1390
+ background: 'rgba(0, 0, 0, 0.3)',
1391
+ },
1392
+ primaryRegular: {
1393
+ background: 'rgba(0, 0, 0, 0.75)',
1394
+ },
1395
+ primaryThick: {
1396
+ background: 'rgba(0, 0, 0, 0.85)',
1397
+ },
1398
+ secondaryUltrathin: {
1399
+ background: 'rgba(37, 37, 37, 0.55)',
1400
+ backgroundBlend: '#9C9C9C',
1401
+ mixBlendMode: 'overlay',
1402
+ },
1403
+ secondaryThin: {
1404
+ background: 'rgba(37, 37, 37, 0.70)',
1405
+ backgroundBlend: '#9C9C9C',
1406
+ mixBlendMode: 'overlay',
1407
+ },
1408
+ secondaryRegular: {
1409
+ background: 'rgba(37, 37, 37, 0.82)',
1410
+ backgroundBlend: '#8C8C8C',
1411
+ mixBlendMode: 'overlay',
1412
+ },
1413
+ secondaryThick: {
1414
+ background: 'rgba(37, 37, 37, 0.90)',
1415
+ backgroundBlend: '#7C7C7C',
1416
+ mixBlendMode: 'overlay',
1417
+ },
1418
+ },
1419
+ borders: {
1420
+ dropdown: {
1421
+ shadow: 'none',
1422
+ color: 'none',
1423
+ border: 'none',
1424
+ },
1425
+ },
1426
+ surfaces: {
1427
+ dialog: {
1428
+ border: '8px solid rgba(255, 255, 255, 0.2)',
1429
+ outline: '1px solid rgba(255, 255, 255, 0.25)',
1430
+ background: 'rgba(0, 0, 0, 0.6)',
1431
+ backdropFilter: 'blur(6px)',
1432
+ },
1433
+ },
1434
+ },
541
1435
  colors: {
542
1436
  // Reverse all inverse colors
543
1437