@teamofsilicons/silicon-ui 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.
Files changed (163) hide show
  1. package/README.md +4 -3
  2. package/check.mjs +14 -5
  3. package/components/activity-heatmap/activity-heatmap.module.css +4 -4
  4. package/components/alert/alert.module.css +1 -1
  5. package/components/animated-counter/animated-counter.js +1 -1
  6. package/components/announcement-bar/announcement-bar.module.css +6 -6
  7. package/components/avatar/avatar.d.ts +2 -2
  8. package/components/avatar/avatar.js +1 -1
  9. package/components/avatar/avatar.module.css +5 -2
  10. package/components/avatar-group/avatar-group.module.css +4 -4
  11. package/components/badge/badge.module.css +4 -4
  12. package/components/bar-chart/bar-chart.js +1 -1
  13. package/components/bar-chart/bar-chart.module.css +4 -4
  14. package/components/billing-toggle/billing-toggle.js +2 -2
  15. package/components/billing-toggle/billing-toggle.module.css +10 -10
  16. package/components/bottom-sheet/bottom-sheet.js +1 -1
  17. package/components/bottom-sheet/bottom-sheet.module.css +4 -5
  18. package/components/breadcrumb/breadcrumb.d.ts +8 -2
  19. package/components/breadcrumb/breadcrumb.js +21 -9
  20. package/components/breadcrumb/breadcrumb.module.css +7 -3
  21. package/components/brush-chart/brush-chart.module.css +9 -9
  22. package/components/button/button.d.ts +7 -2
  23. package/components/button/button.js +3 -1
  24. package/components/button/button.module.css +10 -1
  25. package/components/button-group/button-group.module.css +7 -7
  26. package/components/calendar/calendar.js +15 -5
  27. package/components/calendar/calendar.module.css +13 -10
  28. package/components/card/card.js +4 -4
  29. package/components/card/card.module.css +2 -2
  30. package/components/card-stack/card-stack.js +2 -2
  31. package/components/card-stack/card-stack.module.css +2 -3
  32. package/components/carousel/carousel.module.css +3 -3
  33. package/components/chat-thread/chat-thread.module.css +41 -41
  34. package/components/checkbox/checkbox.module.css +1 -1
  35. package/components/chip-group/chip-group.js +1 -1
  36. package/components/chip-group/chip-group.module.css +2 -2
  37. package/components/code-block/code-block.module.css +7 -14
  38. package/components/color-picker/color-picker.module.css +20 -21
  39. package/components/combobox/combobox.js +5 -1
  40. package/components/combobox/combobox.module.css +2 -2
  41. package/components/command-palette/command-palette.js +18 -11
  42. package/components/command-palette/command-palette.module.css +18 -18
  43. package/components/comment-thread/comment-thread.module.css +35 -35
  44. package/components/confirm-morph/confirm-morph.js +5 -5
  45. package/components/confirm-morph/confirm-morph.module.css +9 -9
  46. package/components/context-menu/context-menu.js +10 -28
  47. package/components/context-menu/context-menu.module.css +3 -3
  48. package/components/copy-button/copy-button.js +4 -4
  49. package/components/countdown/countdown.module.css +4 -4
  50. package/components/date-picker/date-picker.js +3 -3
  51. package/components/date-picker/date-picker.module.css +7 -7
  52. package/components/date-range-picker/date-range-picker.js +13 -10
  53. package/components/date-range-picker/date-range-picker.module.css +23 -22
  54. package/components/dialog/dialog.module.css +2 -2
  55. package/components/donut-chart/donut-chart.module.css +5 -5
  56. package/components/drawer/drawer.module.css +7 -7
  57. package/components/dropdown-menu/dropdown-menu.d.ts +71 -1
  58. package/components/dropdown-menu/dropdown-menu.js +100 -6
  59. package/components/dropdown-menu/dropdown-menu.module.css +15 -5
  60. package/components/elastic-slider/elastic-slider.js +2 -2
  61. package/components/elastic-slider/elastic-slider.module.css +4 -4
  62. package/components/expandable-card/expandable-card.js +1 -1
  63. package/components/expandable-card/expandable-card.module.css +1 -1
  64. package/components/expanding-button-group/expanding-button-group.module.css +3 -3
  65. package/components/expanding-search/expanding-search.js +3 -3
  66. package/components/expanding-search/expanding-search.module.css +9 -9
  67. package/components/file-dropzone/file-dropzone.js +3 -3
  68. package/components/file-dropzone/file-dropzone.module.css +21 -21
  69. package/components/file-upload/file-upload.module.css +7 -7
  70. package/components/filter-toolbar/filter-toolbar.js +7 -3
  71. package/components/filter-toolbar/filter-toolbar.module.css +9 -9
  72. package/components/floating-button-group/floating-button-group.module.css +7 -7
  73. package/components/gauge/gauge.js +1 -1
  74. package/components/gauge/gauge.module.css +2 -2
  75. package/components/hover-card/hover-card.js +2 -2
  76. package/components/hover-card/hover-card.module.css +2 -2
  77. package/components/image-compare/image-compare.module.css +4 -4
  78. package/components/inline-edit/inline-edit.module.css +12 -12
  79. package/components/json-viewer/json-viewer.module.css +12 -12
  80. package/components/line-chart/line-chart.js +1 -1
  81. package/components/line-chart/line-chart.module.css +8 -8
  82. package/components/mention-input/mention-input.js +4 -2
  83. package/components/mention-input/mention-input.module.css +8 -8
  84. package/components/metric-card/metric-card.module.css +1 -1
  85. package/components/money-input/money-input.js +6 -3
  86. package/components/money-input/money-input.module.css +10 -10
  87. package/components/morph-select/morph-select.js +7 -5
  88. package/components/morph-select/morph-select.module.css +13 -13
  89. package/components/multi-select/multi-select.js +4 -2
  90. package/components/multi-select/multi-select.module.css +6 -6
  91. package/components/nav-list/nav-list.d.ts +64 -0
  92. package/components/nav-list/nav-list.js +96 -0
  93. package/components/nav-list/nav-list.module.css +25 -0
  94. package/components/notification-center/notification-center.module.css +27 -27
  95. package/components/number-field/number-field.js +3 -3
  96. package/components/number-field/number-field.module.css +3 -3
  97. package/components/otp-input/otp-input.module.css +4 -4
  98. package/components/pagination/pagination.module.css +1 -1
  99. package/components/password-field/password-field.module.css +2 -2
  100. package/components/password-strength/password-strength.module.css +8 -8
  101. package/components/phone-input/phone-input.js +9 -7
  102. package/components/phone-input/phone-input.module.css +19 -19
  103. package/components/popover/popover.module.css +2 -2
  104. package/components/progress/progress.module.css +1 -1
  105. package/components/radio-cards/radio-cards.module.css +8 -8
  106. package/components/radio-group/radio-group.js +4 -1
  107. package/components/radio-group/radio-group.module.css +4 -3
  108. package/components/resizable-panels/resizable-panels.module.css +5 -5
  109. package/components/rich-text-editor/rich-text-editor.js +3 -3
  110. package/components/rich-text-editor/rich-text-editor.module.css +12 -12
  111. package/components/ridgeline/ridgeline.module.css +7 -7
  112. package/components/scroll-area/scroll-area.module.css +8 -8
  113. package/components/segmented-control/segmented-control.d.ts +3 -1
  114. package/components/segmented-control/segmented-control.js +5 -2
  115. package/components/segmented-control/segmented-control.module.css +9 -4
  116. package/components/select/select.module.css +5 -5
  117. package/components/shortcut-recorder/shortcut-recorder.js +5 -5
  118. package/components/shortcut-recorder/shortcut-recorder.module.css +16 -16
  119. package/components/signature-pad/signature-pad.module.css +11 -11
  120. package/components/slider/slider.module.css +4 -4
  121. package/components/slope-chart/slope-chart.module.css +7 -7
  122. package/components/slot-text/slot-text.js +2 -1
  123. package/components/sortable-data-table/sortable-data-table.module.css +4 -4
  124. package/components/sparkline/sparkline.js +1 -1
  125. package/components/split-button/split-button.module.css +6 -6
  126. package/components/stepper/stepper.module.css +3 -3
  127. package/components/streamgraph/streamgraph.module.css +7 -7
  128. package/components/swipe-actions/swipe-actions.js +2 -2
  129. package/components/swipe-actions/swipe-actions.module.css +5 -5
  130. package/components/switch/switch.js +2 -2
  131. package/components/switch/switch.module.css +1 -1
  132. package/components/tabs/tabs.d.ts +9 -2
  133. package/components/tabs/tabs.js +11 -5
  134. package/components/tabs/tabs.module.css +10 -3
  135. package/components/tag-input/tag-input.module.css +4 -4
  136. package/components/text-reveal/text-reveal.js +1 -1
  137. package/components/time-picker/time-picker.js +4 -2
  138. package/components/time-picker/time-picker.module.css +3 -3
  139. package/components/timeline/timeline.js +4 -4
  140. package/components/timeline/timeline.module.css +3 -3
  141. package/components/toast/toast.js +1 -1
  142. package/components/toast/toast.module.css +5 -5
  143. package/components/toast-stack/toast-stack.js +1 -1
  144. package/components/toast-stack/toast-stack.module.css +5 -5
  145. package/components/tooltip/tooltip.module.css +1 -1
  146. package/components/tree-view/tree-view.js +16 -12
  147. package/components/tree-view/tree-view.module.css +10 -8
  148. package/components/treemap/treemap.module.css +13 -13
  149. package/components/usage-meter/usage-meter.js +1 -1
  150. package/components/usage-meter/usage-meter.module.css +5 -5
  151. package/components/user-menu/user-menu.js +16 -14
  152. package/components/user-menu/user-menu.module.css +22 -22
  153. package/components/waffle-chart/waffle-chart.module.css +7 -7
  154. package/components.json +416 -1
  155. package/eslint.js +35 -3
  156. package/lib/fluid-hover.d.ts +83 -0
  157. package/lib/fluid-hover.js +184 -0
  158. package/lib/menu-highlight.d.ts +24 -11
  159. package/lib/menu-highlight.js +29 -28
  160. package/lib/motion-tokens.d.ts +76 -18
  161. package/lib/motion-tokens.js +45 -10
  162. package/package.json +1 -1
  163. package/styles.css +50 -7
@@ -1,6 +1,30 @@
1
- /** Motion presets are shared by the gallery and future registry consumers. */
1
+ /**
2
+ * Motion tokens, shared by every component and by apps (`@teamofsilicons/silicon-ui/motion-tokens`).
3
+ *
4
+ * Interface motion runs on three spring tiers. Each tier is the ENTER transition (critically damped, except slow, which
5
+ * keeps a little bounce), and its `.exit` is the matching EXIT: a plain tween one tier quicker, so a dismissal reads as
6
+ * crisp and final instead of replaying the entrance in reverse. The bigger the thing that moves, the slower the tier.
7
+ * Never hand-write a duration: reach for a tier.
8
+ *
9
+ * transition={motionTokens.spring.fast} // enter
10
+ * exit={{ opacity: 0, transition: motionTokens.spring.fast.exit }} // leave
11
+ *
12
+ * The tier values and the exit rule are adapted from Fluid Functionalism by Micka Touillaud (MIT),
13
+ * https://github.com/mickadesign/fluid-functionalism.
14
+ */
15
+ // Written as visualDuration (the form the components read) with values that arrive (95% of the way) at the same moment as
16
+ // FF's settling durations of 0.08, 0.16 and 0.24s: 42, 83 and 109ms.
17
+ const fast = { type: "spring", visualDuration: 0.05, bounce: 0, exit: { duration: 0.06 } };
18
+ const moderate = { type: "spring", visualDuration: 0.09, bounce: 0, exit: { duration: 0.12 } };
19
+ const slow = { type: "spring", visualDuration: 0.15, bounce: 0.12, exit: { duration: 0.16 } };
2
20
  export const motionTokens = {
3
- duration: { instant: 0.12, fast: 0.16, exit: 0.18, standard: 0.24, considered: 0.48 },
21
+ /** Tween durations in seconds, for opacity, colour and blur, and for CSS (the same steps as `--duration-*`). */
22
+ duration: {
23
+ instant: 0.06, fast: 0.08, exit: 0.12, standard: 0.16, considered: 0.24,
24
+ /** Motion that tells a story over time rather than answering a click: a chart drawing in, a counter rolling, text
25
+ * revealing, a success ring drawing, a slow image zoom. Never for a hover, press, menu or panel. */
26
+ expressive: 0.48,
27
+ },
4
28
  ease: {
5
29
  enter: [0.16, 1, 0.3, 1],
6
30
  exit: [0.7, 0, 0.84, 0],
@@ -9,17 +33,28 @@ export const motionTokens = {
9
33
  inOut: [0.65, 0, 0.35, 1],
10
34
  },
11
35
  spring: {
12
- responsive: { type: "spring", stiffness: 520, damping: 38 },
13
- gentle: { type: "spring", stiffness: 340, damping: 34 },
14
- /** Presses, toggles, thumbs, and small indicators. Settles fast with a hint of life. */
15
- snappy: { type: "spring", visualDuration: 0.26, bounce: 0.12 },
16
- /** Panels, height changes, and layout shifts. Critically damped, never overshoots. */
17
- smooth: { type: "spring", visualDuration: 0.4, bounce: 0 },
18
- /** Shape morphs, shared layout highlights, and width changes that follow new content. */
19
- morph: { type: "spring", visualDuration: 0.42, bounce: 0.16 },
36
+ /** Hover highlights, presses, toggles, thumbs and small indicators. */
37
+ fast,
38
+ /** Menus, popovers, tabs, drawers, height changes: short travel that must land exactly. */
39
+ moderate,
40
+ /** Dialogs, sheets, shape morphs and large shared-layout moves. A little bounce. */
41
+ slow,
42
+ /** Earlier names, kept so existing code keeps working. Prefer the tier names. */
43
+ snappy: fast,
44
+ smooth: moderate,
45
+ morph: slow,
46
+ responsive: moderate,
47
+ gentle: moderate,
48
+ /** The spring for expressive motion (see duration.expressive): a bar growing, a value settling into place. */
49
+ expressive: { type: "spring", visualDuration: 0.42, bounce: 0.16 },
20
50
  },
21
51
  /** Stagger steps in seconds. Keep total stagger under roughly 0.4s. */
22
52
  stagger: { char: 0.016, word: 0.04, line: 0.08, item: 0.035 },
23
53
  /** Blur radii in px for text and content crossfades. Keep blur small and brief. */
24
54
  blur: { subtle: 2, soft: 4, text: 8 },
25
55
  };
56
+ /**
57
+ * How long (ms) a deferred-unmount timer waits for a tier's exit before forcing it: the exit plus a safety margin, for
58
+ * a throttled background tab that never finishes the animation.
59
+ */
60
+ export const exitFallbackMs = (tier) => Math.round(tier.exit.duration * 1000) + 100;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamofsilicons/silicon-ui",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "React components with calm motion, on the Silicon design tokens. By Team of Silicons.",
5
5
  "license": "MIT",
6
6
  "author": "Team of Silicons",
package/styles.css CHANGED
@@ -16,6 +16,8 @@
16
16
  --surface: var(--neutral-0);
17
17
  --surface-raised: var(--neutral-0);
18
18
  --surface-muted: var(--neutral-2);
19
+ /* One step stronger than --surface-muted: the hover and press of a muted fill (a soft button). */
20
+ --surface-pressed: var(--neutral-3);
19
21
  --foreground: var(--neutral-11);
20
22
  --text-secondary: var(--neutral-8);
21
23
  --text-muted: var(--neutral-7);
@@ -53,6 +55,27 @@
53
55
  --shadow-resting: 0 1px 2px oklch(0% 0 0 / .035);
54
56
  --shadow-raised: 0 6px 18px oklch(0% 0 0 / .065), 0 1px 3px oklch(0% 0 0 / .035);
55
57
  --shadow-floating: 0 20px 48px oklch(0% 0 0 / .105), 0 3px 10px oklch(0% 0 0 / .045);
58
+ /* Layers, edges and shadows by role (component CSS uses these instead of raw colours). */
59
+ --scrim: oklch(10% 0 0 / .46); /* behind a modal layer: dialog, drawer, sheet, mobile menu */
60
+ --scrim-soft: oklch(10% 0 0 / .16); /* behind a non-modal panel */
61
+ --shade: oklch(0% 0 0 / .035); /* a faint tint over a surface, such as a stacked card */
62
+ --media-scrim: oklch(0% 0 0 / .45); /* over a photo, under text */
63
+ --on-media: var(--color-white); /* text over a photo */
64
+ --edge-inset: inset 0 0 0 1px oklch(0% 0 0 / .08); /* a hairline inside a swatch, thumbnail or track */
65
+ --shadow-hairline: 0 0 0 .5px oklch(0% 0 0 / .14);
66
+ --shadow-knob: 0 2px 8px oklch(0% 0 0 / .3); /* a draggable handle that must read on any colour */
67
+ --shadow-thumb: 0 1px 2px oklch(0% 0 0 / .06), 0 2px 6px oklch(0% 0 0 / .04); /* small lifted controls and cards */
68
+ --shadow-drop: drop-shadow(0 18px 36px oklch(0% 0 0 / .12)) drop-shadow(0 2px 6px oklch(0% 0 0 / .06)); /* filter: floating previews */
69
+ --shadow-showcase: 0 1px 1px rgb(20 24 40 / .04), 0 10px 30px -12px rgb(20 24 40 / .22); /* hero product shots */
70
+ --shadow-showcase-lg: 0 1px 1px rgb(20 24 40 / .04), 0 24px 48px -16px rgb(20 24 40 / .16), 0 60px 120px -40px rgb(40 48 110 / .22);
71
+ --glow: #b9c2ff; /* the light line on a dark hero window */
72
+ /* Code highlighting roles (CodeBlock); each has contrast in both themes. */
73
+ --syntax-string: oklch(46% .13 150); --syntax-number: oklch(50% .14 55); --syntax-keyword: oklch(48% .15 285);
74
+ --syntax-type: oklch(46% .13 230); --syntax-function: oklch(43% .12 25); --syntax-property: oklch(44% .12 85);
75
+ /* File types (TreeView): each brand hue, mixed with the text colour in the component. */
76
+ --file-typescript: #3178c6; --file-stylesheet: #8b6ace; --file-markdown: #38896b; --file-json: #c48637;
77
+ /* Theme-independent constants, for things that must stay black or white in both themes (colour picker planes). */
78
+ --color-black: #000; --color-white: #fff;
56
79
  /* Brand gradient: soft lavender to warm peach. Light enough for dark text (--silicon-gradient-foreground, >12:1). */
57
80
  --silicon-gradient-from: oklch(90% .045 300);
58
81
  --silicon-gradient-to: oklch(92% .045 65);
@@ -64,8 +87,8 @@
64
87
  --silicon-gradient-line: linear-gradient(100deg, oklch(83% .06 300), oklch(86% .06 65));
65
88
  /* Text-safe stops for gradient text and small marks (>4.5:1 on the surface). */
66
89
  --silicon-gradient-ink: linear-gradient(100deg, oklch(47% .1 300), oklch(50% .09 55));
67
- /* Space, by role: tight 4 · related 8 · group 12 · inset 16 · comfort 20 · section 24 · block 32 · page 48 · stage 64 · screen 80. */
68
- --space-tight: 4px; --space-related: 8px; --space-group: 12px; --space-inset: 16px; --space-comfort: 20px;
90
+ /* Space, by role: hair 2 · tight 4 · related 8 · group 12 · inset 16 · comfort 20 · section 24 · block 32 · page 48 · stage 64 · screen 80. */
91
+ --space-hair: 2px; --space-tight: 4px; --space-related: 8px; --space-group: 12px; --space-inset: 16px; --space-comfort: 20px;
69
92
  --space-section: 24px; --space-block: 32px; --space-page: 48px; --space-stage: 64px; --space-screen: 80px;
70
93
  /* Radius, by role: detail for small marks and swatches, control for buttons and fields, container for cards and menus,
71
94
  overlay for dialogs and sheets, full for pills and dots. Every corner in every component reads one of these.
@@ -74,9 +97,10 @@
74
97
  --radius-detail: 2px; --radius-control: 6px; --radius-container: 8px; --radius-overlay: 12px; --radius-full: 999px;
75
98
  /* Corner shape. Squircle by default; see the corner rule after the dark theme. */
76
99
  --corner-shape: squircle;
77
- --control-height-sm: 2.25rem; --control-height-md: 2.75rem; --control-height-lg: 3.125rem;
100
+ /* xs is for dense UI (tree rows, toolbars); 24px is the smallest target WCAG 2.5.8 allows, so the scale stops there. */
101
+ --control-height-xs: 1.5rem; --control-height-sm: 2.25rem; --control-height-md: 2.75rem; --control-height-lg: 3.125rem;
78
102
  --font-display: var(--font-geist, "Geist Variable"), sans-serif;
79
- --font-body: var(--font-inter, "Inter Variable"), sans-serif;
103
+ --font-body: var(--font-hanken-grotesk, "Hanken Grotesk Variable"), sans-serif;
80
104
  --text-xs: .75rem; --text-sm: .875rem; --text-base: 1rem; --text-lg: 1.125rem;
81
105
  --text-xl: 1.375rem; --text-2xl: 1.75rem; --text-3xl: 2.25rem;
82
106
  --text-4xl: 3.25rem; --text-5xl: 4.5rem;
@@ -86,9 +110,19 @@
86
110
  --ease-standard: cubic-bezier(.22,1,.36,1);
87
111
  --ease-exit: cubic-bezier(.7,0,.84,0);
88
112
  --ease-in-out: cubic-bezier(.65,0,.35,1);
89
- /* Spring with a gentle settle (bounce .15). Pair with --duration-spring for transform transitions. */
90
- --ease-spring: linear(0, 0.0258, 0.09, 0.1763, 0.2732, 0.3724, 0.4683, 0.5573, 0.6376, 0.7082, 0.7689, 0.8202, 0.8628, 0.8976, 0.9256, 0.9476, 0.9648, 0.9778, 0.9875, 0.9945, 0.9994, 1.0026, 1.0047, 1.0058, 1.0062, 1.0062, 1.0059, 1.0055, 1.0049, 1.0043, 1.0036, 1.0031, 1.0025, 1.002, 1.0016, 1.0013, 1);
91
- --duration-instant: 120ms; --duration-fast: 160ms; --duration-standard: 240ms; --duration-considered: 480ms; --duration-spring: 580ms;
113
+ /* The slow spring tier (bounce .12, settles in 240ms), sampled for CSS. Pair with --duration-spring for transforms. */
114
+ --ease-spring: linear(0, 0.0515, 0.1675, 0.3072, 0.4464, 0.5725, 0.6797, 0.7668, 0.8352, 0.887, 0.9253, 0.9527, 0.9717, 0.9846, 0.9928, 0.9979, 1.0008, 1.0023, 1.0029, 1.0029, 1.0027, 1.0023, 1.0019, 1.0015, 1);
115
+ /* The same steps as motionTokens.duration: fast is a hover or press, standard a menu or panel, considered a dialog. */
116
+ --duration-instant: 60ms; --duration-fast: 80ms; --duration-standard: 160ms; --duration-considered: 240ms; --duration-spring: 240ms;
117
+ /* Motion that tells a story (a chart drawing in, a slow image zoom), never a hover, press or panel. */
118
+ --duration-expressive: 480ms;
119
+ /* Stagger steps (the same values as motionTokens.stagger). Keep total stagger under roughly 400ms. */
120
+ --stagger-item: 35ms;
121
+ /* Stacking order, by role. Menus and listboxes sit above popovers and dialogs because they open from inside them.
122
+ An app's own chrome (sticky header, sidebar, toolbar) stays below --layer-overlay, so dims and every floating
123
+ layer cover it: use --layer-sticky, or calc(var(--layer-overlay) - 1) at most. */
124
+ --layer-raised: 10; --layer-sticky: 20; --layer-overlay: 50; --layer-dialog: 51;
125
+ --layer-popover: 60; --layer-dropdown: 70; --layer-toast: 80; --layer-tooltip: 90;
92
126
  }
93
127
 
94
128
  :root[data-theme="dark"] {
@@ -98,6 +132,7 @@
98
132
  --surface-raised: oklch(24% 0 0);
99
133
  /* Keep muted surfaces and hover states distinct from the base surface in dark mode. */
100
134
  --surface-muted: oklch(26% 0 0);
135
+ --surface-pressed: oklch(30% 0 0);
101
136
  --foreground: oklch(96% 0 0);
102
137
  --text-secondary: oklch(77% 0 0);
103
138
  --text-muted: oklch(64% 0 0);
@@ -123,6 +158,14 @@
123
158
  --shadow-resting: 0 1px 2px oklch(0% 0 0 / .18);
124
159
  --shadow-raised: 0 8px 22px oklch(0% 0 0 / .22);
125
160
  --shadow-floating: 0 22px 55px oklch(0% 0 0 / .34);
161
+ --scrim: oklch(0% 0 0 / .52);
162
+ --shade: oklch(0% 0 0 / .22);
163
+ --shadow-thumb: inset 0 1px 0 oklch(100% 0 0 / .05), 0 1px 2px oklch(0% 0 0 / .3);
164
+ --shadow-drop: drop-shadow(0 20px 44px oklch(0% 0 0 / .5));
165
+ --shadow-showcase: inset 0 1px 0 color-mix(in oklab, var(--foreground) 8%, transparent), 0 10px 30px -12px rgb(0 0 0 / .6);
166
+ --shadow-showcase-lg: inset 0 1px 0 color-mix(in oklab, var(--foreground) 9%, transparent), 0 24px 48px -16px rgb(0 0 0 / .6), 0 60px 140px -40px rgb(40 50 140 / .35);
167
+ --syntax-string: oklch(77% .15 150); --syntax-number: oklch(80% .14 75); --syntax-keyword: oklch(78% .16 285);
168
+ --syntax-type: oklch(79% .13 230); --syntax-function: oklch(80% .13 25); --syntax-property: oklch(79% .12 85);
126
169
  --silicon-gradient-from: oklch(38% .05 300);
127
170
  --silicon-gradient-to: oklch(40% .045 60);
128
171
  --silicon-gradient-foreground: oklch(96% .005 300);