@moldable-ai/ui 0.2.29 → 0.2.32

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 (215) hide show
  1. package/dist/catalog/component-catalog.d.ts +9 -2
  2. package/dist/catalog/component-catalog.d.ts.map +1 -1
  3. package/dist/catalog/component-catalog.js +11 -7
  4. package/dist/catalog/core-control-stories.d.ts.map +1 -1
  5. package/dist/catalog/core-control-stories.js +1 -1
  6. package/dist/catalog/core-foundation-stories.d.ts.map +1 -1
  7. package/dist/catalog/core-foundation-stories.js +5 -5
  8. package/dist/components/app-error-boundary.d.ts +1 -1
  9. package/dist/components/chat/chat-image-lightbox.d.ts +8 -0
  10. package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -1
  11. package/dist/components/chat/chat-image-lightbox.js +24 -2
  12. package/dist/components/chat/chat-input.d.ts +3 -2
  13. package/dist/components/chat/chat-input.d.ts.map +1 -1
  14. package/dist/components/chat/chat-input.js +3 -3
  15. package/dist/components/chat/chat-message.d.ts.map +1 -1
  16. package/dist/components/chat/chat-message.js +3 -1
  17. package/dist/components/chat/chat-panel.d.ts +3 -1
  18. package/dist/components/chat/chat-panel.d.ts.map +1 -1
  19. package/dist/components/chat/chat-panel.js +53 -39
  20. package/dist/components/chat/conversation-history.d.ts +4 -2
  21. package/dist/components/chat/conversation-history.d.ts.map +1 -1
  22. package/dist/components/chat/conversation-history.js +20 -15
  23. package/dist/components/ui/alert.d.ts +1 -1
  24. package/dist/components/ui/app-frame.d.ts +20 -1
  25. package/dist/components/ui/app-frame.d.ts.map +1 -1
  26. package/dist/components/ui/app-frame.js +37 -7
  27. package/dist/components/ui/badge.d.ts +1 -1
  28. package/dist/components/ui/badge.js +1 -1
  29. package/dist/components/ui/button.d.ts +5 -3
  30. package/dist/components/ui/button.d.ts.map +1 -1
  31. package/dist/components/ui/button.js +39 -11
  32. package/dist/components/ui/card.d.ts +12 -2
  33. package/dist/components/ui/card.d.ts.map +1 -1
  34. package/dist/components/ui/card.js +3 -2
  35. package/dist/components/ui/checkbox.d.ts +4 -1
  36. package/dist/components/ui/checkbox.d.ts.map +1 -1
  37. package/dist/components/ui/checkbox.js +4 -4
  38. package/dist/components/ui/context-menu.d.ts.map +1 -1
  39. package/dist/components/ui/context-menu.js +7 -6
  40. package/dist/components/ui/date-field.d.ts +1 -1
  41. package/dist/components/ui/dropdown-menu.d.ts +1 -0
  42. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  43. package/dist/components/ui/dropdown-menu.js +9 -8
  44. package/dist/components/ui/icon-button.d.ts +1 -1
  45. package/dist/components/ui/icon-button.d.ts.map +1 -1
  46. package/dist/components/ui/icon-button.js +1 -0
  47. package/dist/components/ui/input.d.ts +6 -2
  48. package/dist/components/ui/input.d.ts.map +1 -1
  49. package/dist/components/ui/input.js +2 -2
  50. package/dist/components/ui/material.d.ts +8 -3
  51. package/dist/components/ui/material.d.ts.map +1 -1
  52. package/dist/components/ui/material.js +2 -2
  53. package/dist/components/ui/menu-items.d.ts +2 -1
  54. package/dist/components/ui/menu-items.d.ts.map +1 -1
  55. package/dist/components/ui/menu-items.js +3 -2
  56. package/dist/components/ui/message-scroller-controller.d.ts +15 -17
  57. package/dist/components/ui/message-scroller-controller.d.ts.map +1 -1
  58. package/dist/components/ui/message-scroller-controller.js +106 -91
  59. package/dist/components/ui/message-scroller-primitive.d.ts +2 -0
  60. package/dist/components/ui/message-scroller-primitive.d.ts.map +1 -1
  61. package/dist/components/ui/message-scroller-primitive.js +2 -0
  62. package/dist/components/ui/message-scroller.d.ts.map +1 -1
  63. package/dist/components/ui/message-scroller.js +2 -2
  64. package/dist/components/ui/number-input.d.ts +1 -1
  65. package/dist/components/ui/popover.js +1 -1
  66. package/dist/components/ui/search-field.d.ts +4 -2
  67. package/dist/components/ui/search-field.d.ts.map +1 -1
  68. package/dist/components/ui/search-field.js +16 -6
  69. package/dist/components/ui/segmented-control.d.ts +3 -1
  70. package/dist/components/ui/segmented-control.d.ts.map +1 -1
  71. package/dist/components/ui/segmented-control.js +23 -17
  72. package/dist/components/ui/select.js +2 -2
  73. package/dist/components/ui/sidebar.d.ts +10 -4
  74. package/dist/components/ui/sidebar.d.ts.map +1 -1
  75. package/dist/components/ui/sidebar.js +74 -17
  76. package/dist/components/ui/status.d.ts +1 -1
  77. package/dist/components/ui/status.js +1 -1
  78. package/dist/components/ui/switch.d.ts +3 -1
  79. package/dist/components/ui/switch.d.ts.map +1 -1
  80. package/dist/components/ui/switch.js +3 -2
  81. package/dist/components/ui/toolbar-controls.d.ts +13 -3
  82. package/dist/components/ui/toolbar-controls.d.ts.map +1 -1
  83. package/dist/components/ui/toolbar-controls.js +35 -10
  84. package/dist/components/ui/toolbar.d.ts +5 -4
  85. package/dist/components/ui/toolbar.d.ts.map +1 -1
  86. package/dist/components/ui/toolbar.js +3 -3
  87. package/dist/index.d.ts +2 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +3 -1
  90. package/dist/lib/frame-lifecycle.d.ts +1 -0
  91. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  92. package/dist/lib/frame-lifecycle.js +7 -0
  93. package/dist/lib/theme.d.ts +39 -5
  94. package/dist/lib/theme.d.ts.map +1 -1
  95. package/dist/lib/theme.js +105 -17
  96. package/dist/tokens/contracts.d.ts +79 -0
  97. package/dist/tokens/contracts.d.ts.map +1 -0
  98. package/dist/tokens/contracts.js +57 -0
  99. package/dist/tokens/index.d.ts +2 -0
  100. package/dist/tokens/index.d.ts.map +1 -0
  101. package/dist/tokens/index.js +1 -0
  102. package/docs/README.md +2 -0
  103. package/docs/adaptive-materials.md +14 -9
  104. package/docs/design-tokens.md +10 -6
  105. package/docs/foundations.md +3 -3
  106. package/docs/macos-design-audit.md +144 -0
  107. package/docs/native-integration.md +4 -4
  108. package/docs/platform-architecture.md +189 -0
  109. package/docs/standalone-app-windows.md +37 -0
  110. package/docs/visual-regression.md +6 -8
  111. package/package.json +13 -1
  112. package/src/components/ui/accordion.md +46 -0
  113. package/src/components/ui/alert.md +12 -4
  114. package/src/components/ui/app-frame.md +8 -5
  115. package/src/components/ui/aspect-ratio.md +37 -0
  116. package/src/components/ui/avatar.md +48 -0
  117. package/src/components/ui/breadcrumb.md +52 -0
  118. package/src/components/ui/button-group.md +43 -0
  119. package/src/components/ui/button.md +21 -4
  120. package/src/components/ui/calendar.md +42 -0
  121. package/src/components/ui/card.md +43 -0
  122. package/src/components/ui/carousel.md +47 -0
  123. package/src/components/ui/chart.md +52 -0
  124. package/src/components/ui/checkbox.md +36 -0
  125. package/src/components/ui/collapsible.md +2 -3
  126. package/src/components/ui/color-well.md +14 -4
  127. package/src/components/ui/combobox.md +3 -3
  128. package/src/components/ui/confirm-dialog.md +5 -4
  129. package/src/components/ui/context-menu.md +3 -2
  130. package/src/components/ui/date-field.md +6 -1
  131. package/src/components/ui/date-picker.md +6 -3
  132. package/src/components/ui/dialog.md +14 -12
  133. package/src/components/ui/drawer.md +58 -0
  134. package/src/components/ui/dropdown-menu.md +16 -14
  135. package/src/components/ui/error-boundary-view.md +1 -1
  136. package/src/components/ui/field.md +2 -1
  137. package/src/components/ui/form.md +71 -0
  138. package/src/components/ui/grid.md +4 -3
  139. package/src/components/ui/icon-button.md +4 -1
  140. package/src/components/ui/input-group.md +49 -0
  141. package/src/components/ui/input-otp.md +56 -0
  142. package/src/components/ui/input.md +40 -0
  143. package/src/components/ui/inspector.md +47 -7
  144. package/src/components/ui/item.md +5 -3
  145. package/src/components/ui/kbd.md +30 -0
  146. package/src/components/ui/label.md +29 -0
  147. package/src/components/ui/list.md +2 -2
  148. package/src/components/ui/material.md +25 -12
  149. package/src/components/ui/menu-items.md +62 -0
  150. package/src/components/ui/menubar.md +58 -0
  151. package/src/components/ui/message-scroller-primitive.md +70 -0
  152. package/src/components/ui/message-scroller.md +89 -0
  153. package/src/components/ui/navigation-button-group.md +4 -3
  154. package/src/components/ui/navigation-menu.md +52 -0
  155. package/src/components/ui/number-input.md +8 -0
  156. package/src/components/ui/pagination.md +51 -0
  157. package/src/components/ui/panel.md +6 -0
  158. package/src/components/ui/popover.md +10 -7
  159. package/src/components/ui/progress.md +31 -0
  160. package/src/components/ui/radio-group.md +36 -0
  161. package/src/components/ui/resizable.md +2 -1
  162. package/src/components/ui/scroll-area.md +3 -1
  163. package/src/components/ui/search-field.md +6 -1
  164. package/src/components/ui/segmented-control.md +6 -1
  165. package/src/components/ui/separator.md +35 -0
  166. package/src/components/ui/sidebar.md +29 -6
  167. package/src/components/ui/skeleton.md +36 -0
  168. package/src/components/ui/slider.md +58 -0
  169. package/src/components/ui/spinner.md +41 -0
  170. package/src/components/ui/split-view.md +8 -4
  171. package/src/components/ui/switch.md +44 -0
  172. package/src/components/ui/table.md +7 -7
  173. package/src/components/ui/tabs.md +3 -1
  174. package/src/components/ui/textarea.md +41 -0
  175. package/src/components/ui/toggle-group.md +2 -2
  176. package/src/components/ui/toggle.md +9 -9
  177. package/src/components/ui/toolbar-controls.md +24 -12
  178. package/src/components/ui/toolbar.md +6 -6
  179. package/src/styles/index.css +298 -117
  180. package/src/tokens/contracts.ts +131 -0
  181. package/src/tokens/index.css +6 -0
  182. package/src/tokens/index.ts +23 -0
  183. package/src/tokens/macos-26/README.md +37 -0
  184. package/src/tokens/macos-26/aliases.css +53 -0
  185. package/src/tokens/macos-26/compatibility.css +7 -0
  186. package/src/tokens/macos-26/index.css +3 -0
  187. package/src/tokens/macos-26/source/provenance.generated.json +28 -0
  188. package/src/tokens/macos-26/source/sidebar.generated.css +29 -0
  189. package/src/tokens/macos-26/source.css +7 -0
  190. package/src/tokens/macos-26/web-adaptations.json +25 -0
  191. package/src/tokens/macos-26/web-adaptations.md +15 -0
  192. package/src/tokens/macos-27/accessibility.css +11 -0
  193. package/src/tokens/macos-27/aliases.css +304 -0
  194. package/src/tokens/macos-27/compatibility.css +212 -0
  195. package/src/tokens/macos-27/index.css +15 -0
  196. package/src/tokens/macos-27/recipes.css +23 -0
  197. package/src/tokens/macos-27/source/chrome.generated.css +338 -0
  198. package/src/tokens/macos-27/source/colors.generated.css +140 -0
  199. package/src/tokens/macos-27/source/context.generated.css +18 -0
  200. package/src/tokens/macos-27/source/controls.generated.css +764 -0
  201. package/src/tokens/macos-27/source/effects.generated.css +68 -0
  202. package/src/tokens/macos-27/source/kit.generated.css +50 -0
  203. package/src/tokens/macos-27/source/overlays-status.generated.css +931 -0
  204. package/src/tokens/macos-27/source/paint-styles.generated.css +81 -0
  205. package/src/tokens/macos-27/source/provenance.generated.json +62 -0
  206. package/src/tokens/macos-27/source/sizes.generated.css +385 -0
  207. package/src/tokens/macos-27/source/source.generated.json +554 -0
  208. package/src/tokens/macos-27/source/text-styles.generated.css +116 -0
  209. package/src/tokens/macos-27/source.css +17 -0
  210. package/src/tokens/macos-27/web-adaptations.css +98 -0
  211. package/src/tokens/macos-27/web-adaptations.json +163 -0
  212. package/src/tokens/macos-27/web-adaptations.md +117 -0
  213. package/src/tokens/moldable/brand.css +165 -0
  214. package/src/tokens/moldable/index.css +1 -0
  215. package/src/tokens/platform-contract.test.ts +294 -0
@@ -1,5 +1,6 @@
1
1
  @import 'tailwindcss';
2
2
  @import 'tw-animate-css';
3
+ @import '../tokens/index.css';
3
4
 
4
5
  @plugin "@tailwindcss/typography";
5
6
 
@@ -186,11 +187,17 @@
186
187
  --font-sans: var(--font-family-ui);
187
188
  --font-mono: var(--font-family-mono);
188
189
 
190
+ --text-10: 10px;
189
191
  --text-11: 11px;
192
+ --text-12: 12px;
190
193
  --text-13: 13px;
194
+ --text-15: 15px;
191
195
  --text-16: 16px;
196
+ --text-17: 17px;
192
197
  --text-18: 18px;
198
+ --text-22: 22px;
193
199
  --text-24: 24px;
200
+ --text-26: 26px;
194
201
  --text-ui-display: var(--type-display-size);
195
202
  --text-ui-display--line-height: var(--type-display-line-height);
196
203
  --text-ui-display--font-weight: var(--type-display-weight);
@@ -232,6 +239,7 @@
232
239
  --spacing-control-sm: var(--density-control-height-sm);
233
240
  --spacing-control-md: var(--density-control-height-md);
234
241
  --spacing-control-lg: var(--density-control-height-lg);
242
+ --spacing-control-xl: var(--density-control-height-xl);
235
243
  --spacing-row: var(--density-row-height);
236
244
  --spacing-toolbar: var(--density-toolbar-height);
237
245
  --spacing-pane: var(--density-pane-padding);
@@ -241,6 +249,7 @@
241
249
  --ease-enter: var(--motion-ease-enter);
242
250
  --ease-exit: var(--motion-ease-exit);
243
251
  --ease-spring: var(--motion-ease-spring);
252
+ --shadow-card: var(--material-shadow-card);
244
253
  --shadow-panel: var(--material-shadow-panel);
245
254
  --shadow-overlay: var(--material-shadow-overlay);
246
255
  --shadow-dialog: var(--material-shadow-dialog);
@@ -282,6 +291,8 @@
282
291
  --color-popover-foreground: var(--popover-foreground);
283
292
  --color-primary: var(--primary);
284
293
  --color-primary-foreground: var(--primary-foreground);
294
+ --color-prominent: var(--prominent);
295
+ --color-prominent-foreground: var(--prominent-foreground);
285
296
  --color-secondary: var(--secondary);
286
297
  --color-secondary-foreground: var(--secondary-foreground);
287
298
  --color-muted: var(--muted);
@@ -722,38 +733,43 @@
722
733
  system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
723
734
  --font-family-mono: ui-monospace, Menlo, Consolas, monospace;
724
735
 
725
- --type-display-size: var(--text-24);
726
- --type-display-line-height: 28px;
727
- --type-display-weight: 600;
728
- --type-display-tracking: -0.02em;
729
- --type-heading-size: var(--text-18);
736
+ --type-display-size: var(--text-26);
737
+ --type-display-line-height: 32px;
738
+ --type-display-weight: 700;
739
+ --type-display-tracking: 0;
740
+ --type-heading-size: var(--text-17);
730
741
  --type-heading-line-height: 22px;
731
- --type-heading-weight: 600;
732
- --type-heading-tracking: -0.012em;
733
- --type-title-size: var(--text-16);
742
+ --type-heading-weight: 700;
743
+ --type-heading-tracking: 0;
744
+ --type-title-size: var(--text-15);
734
745
  --type-title-line-height: 20px;
735
746
  --type-title-weight: 600;
736
- --type-title-tracking: -0.006em;
747
+ --type-title-tracking: 0;
737
748
  --type-body-size: var(--text-13);
738
- --type-body-line-height: 18px;
749
+ --type-body-line-height: 16px;
739
750
  --type-label-size: var(--text-13);
740
751
  --type-label-line-height: 16px;
741
752
  --type-caption-size: var(--text-11);
742
753
  --type-caption-line-height: 14px;
743
-
744
- --density-control-height-xs: 1.5rem;
745
- --density-control-height-sm: 1.75rem;
746
- --density-control-height-md: 2rem;
747
- --density-control-height-lg: 2.25rem;
748
- --density-control-gap: 0.3125rem;
754
+ --type-badge-size: var(--text-11);
755
+ --type-badge-line-height: 14px;
756
+
757
+ --density-control-height-xs: 1rem;
758
+ --density-control-height-sm: 1.25rem;
759
+ --density-control-height-md: 1.5rem;
760
+ --density-control-height-lg: 1.75rem;
761
+ --density-control-height-xl: 2.25rem;
762
+ --density-control-gap: 0.25rem;
749
763
  --density-control-padding-inline: 0.625rem;
764
+ --density-badge-height: 1.125rem;
765
+ --density-badge-padding-inline: 0.375rem;
750
766
  --density-row-height: 2rem;
751
767
  --density-toolbar-height: 2.375rem;
752
768
  --density-pane-padding: 0.625rem;
753
769
  --density-section-gap: 0.875rem;
754
770
 
755
- --shape-control: 10px;
756
- --shape-checkbox: 4px;
771
+ --shape-control: 6px;
772
+ --shape-checkbox: 5px;
757
773
  --shape-popover: 12px;
758
774
  --shape-card: 12px;
759
775
  --shape-group: 12px;
@@ -773,24 +789,26 @@
773
789
  --motion-ease-spring: cubic-bezier(0.22, 1.15, 0.36, 1);
774
790
 
775
791
  --radius: var(--shape-card);
776
- --background: oklch(1 0 0);
777
- --foreground: oklch(0.141 0.005 285.823);
778
- --card: oklch(1 0 0);
779
- --card-foreground: oklch(0.141 0.005 285.823);
780
- --popover: oklch(1 0 0);
781
- --popover-foreground: oklch(0.141 0.005 285.823);
792
+ --background: #fff;
793
+ --foreground: rgb(0 0 0 / 85%);
794
+ --card: #fff;
795
+ --card-foreground: rgb(0 0 0 / 85%);
796
+ --popover: #fff;
797
+ --popover-foreground: rgb(0 0 0 / 85%);
782
798
  --primary: oklch(0.205 0 0);
783
799
  --primary-foreground: oklch(0.985 0 0);
784
- --secondary: oklch(0.967 0.001 286.375);
785
- --secondary-foreground: oklch(0.21 0.006 285.885);
786
- --muted: oklch(0.967 0.001 286.375);
787
- --muted-foreground: oklch(0.5 0.016 285.938);
788
- --accent: oklch(0.967 0.001 286.375);
789
- --accent-foreground: oklch(0.21 0.006 285.885);
800
+ --prominent: #0088ff;
801
+ --prominent-foreground: #fff;
802
+ --secondary: rgb(0 0 0 / 8%);
803
+ --secondary-foreground: rgb(0 0 0 / 85%);
804
+ --muted: rgb(0 0 0 / 5%);
805
+ --muted-foreground: rgb(0 0 0 / 50%);
806
+ --accent: rgb(0 0 0 / 10%);
807
+ --accent-foreground: rgb(0 0 0 / 85%);
790
808
  --destructive: oklch(0.5866 0.1994 31.76);
791
809
  --destructive-foreground: oklch(0.985 0 0);
792
- --border: oklch(0.92 0.004 286.32);
793
- --input: oklch(0.92 0.004 286.32);
810
+ --border: rgb(0 0 0 / 10%);
811
+ --input: rgb(0 0 0 / 10%);
794
812
  --ring: oklch(0.2 0 0 / 48%);
795
813
  --model-effort-blue: #339cff;
796
814
  --model-effort-purple: #924ff7;
@@ -855,11 +873,7 @@
855
873
  );
856
874
  --control-focus: var(--ring);
857
875
  --control-invalid: var(--destructive);
858
- --toolbar-control-background: color-mix(
859
- in oklch,
860
- var(--background) 74%,
861
- transparent
862
- );
876
+ --toolbar-control-background: rgb(255 255 255 / 42%);
863
877
  --toolbar-control-hover: color-mix(
864
878
  in oklch,
865
879
  var(--background) 84%,
@@ -870,54 +884,49 @@
870
884
  var(--background) 74%,
871
885
  var(--foreground) 14%
872
886
  );
873
- --toolbar-control-border: color-mix(
874
- in oklch,
875
- var(--foreground) 11%,
876
- transparent
877
- );
887
+ --toolbar-control-border: rgb(0 0 0 / 10%);
878
888
  --toolbar-control-shadow:
879
889
  inset 0 1px 0 color-mix(in oklch, white 42%, transparent),
880
890
  0 1px 2px oklch(0.15 0.005 285 / 8%);
881
891
 
882
- --material-blur-toolbar: 16px;
883
- --material-blur-overlay: 20px;
884
- --material-saturation: 1.12;
885
- --material-regular-fill: color-mix(
886
- in oklch,
887
- var(--background) 76%,
888
- transparent
889
- );
890
- --material-regular-fallback: color-mix(
891
- in oklch,
892
- var(--background) 94%,
893
- var(--foreground) 6%
894
- );
892
+ --material-blur-toolbar: 6px;
893
+ --material-blur-overlay: 30px;
894
+ --material-saturation: 1;
895
+ --material-ultra-thick-fill: rgb(236 236 236 / 88%);
896
+ --material-thick-fill: rgb(246 246 246 / 72%);
897
+ --material-medium-fill: rgb(246 246 246 / 60%);
898
+ --material-thin-fill: rgb(246 246 246 / 48%);
899
+ --material-ultra-thin-fill: rgb(246 246 246 / 36%);
900
+ --material-ultra-thick-fallback: #ececec;
901
+ --material-thick-fallback: #f6f6f6;
902
+ --material-medium-fallback: #f6f6f6;
903
+ --material-thin-fallback: #f6f6f6;
904
+ --material-ultra-thin-fallback: #f6f6f6;
905
+ --material-standard-blur: 30px;
906
+ --material-regular-fill: var(--material-medium-fill);
907
+ --material-regular-fallback: var(--material-medium-fallback);
895
908
  --material-regular-border: color-mix(
896
909
  in oklch,
897
910
  var(--foreground) 10%,
898
911
  transparent
899
912
  );
900
913
  --material-regular-highlight: oklch(1 0 0 / 42%);
901
- --material-regular-blur: 20px;
902
- --material-regular-saturation: 1.18;
903
- --material-clear-fill: color-mix(
904
- in oklch,
905
- var(--background) 24%,
906
- transparent
907
- );
908
- --material-clear-fallback: color-mix(
909
- in oklch,
910
- var(--background) 88%,
911
- var(--foreground) 12%
912
- );
914
+ --material-regular-blur: var(--material-standard-blur);
915
+ --material-regular-saturation: 1;
916
+ --material-clear-fill: var(--material-ultra-thin-fill);
917
+ --material-clear-fallback: var(--material-ultra-thin-fallback);
913
918
  --material-clear-border: color-mix(
914
919
  in oklch,
915
920
  var(--foreground) 14%,
916
921
  transparent
917
922
  );
918
923
  --material-clear-highlight: oklch(1 0 0 / 28%);
919
- --material-clear-blur: 12px;
920
- --material-clear-saturation: 1.24;
924
+ --material-clear-blur: var(--material-standard-blur);
925
+ --material-clear-saturation: 1;
926
+ /* In-flow structure: never map this role to overlay or glass elevation. */
927
+ --material-shadow-card: 0 1px 2px oklch(0.15 0.005 285 / 6%);
928
+ --material-shadow-sidebar:
929
+ 0 1px 2px oklch(0.15 0.005 285 / 4%), 0 3px 10px oklch(0.15 0.005 285 / 4%);
921
930
  --material-shadow-panel:
922
931
  inset 0 0 0 1px var(--separator), 0 1px 2px oklch(0.15 0.005 285 / 5%),
923
932
  0 5px 14px oklch(0.15 0.005 285 / 5%);
@@ -1000,10 +1009,11 @@
1000
1009
  }
1001
1010
 
1002
1011
  :where([data-density='compact']) {
1003
- --density-control-height-xs: 1.375rem;
1004
- --density-control-height-sm: 1.75rem;
1005
- --density-control-height-md: 2rem;
1006
- --density-control-height-lg: 2.25rem;
1012
+ --density-control-height-xs: 1rem;
1013
+ --density-control-height-sm: 1.25rem;
1014
+ --density-control-height-md: 1.5rem;
1015
+ --density-control-height-lg: 1.75rem;
1016
+ --density-control-height-xl: 2.25rem;
1007
1017
  --density-control-gap: 0.25rem;
1008
1018
  --density-control-padding-inline: 0.625rem;
1009
1019
  --density-row-height: 1.875rem;
@@ -1017,6 +1027,7 @@
1017
1027
  --density-control-height-sm: 2.25rem;
1018
1028
  --density-control-height-md: 2.5rem;
1019
1029
  --density-control-height-lg: 2.75rem;
1030
+ --density-control-height-xl: 3rem;
1020
1031
  --density-control-gap: 0.5rem;
1021
1032
  --density-control-padding-inline: 1rem;
1022
1033
  --density-row-height: 2.75rem;
@@ -1026,20 +1037,22 @@
1026
1037
  }
1027
1038
 
1028
1039
  .dark {
1029
- --background: oklch(0.235 0 0);
1030
- --foreground: oklch(0.985 0 0);
1031
- --card: oklch(0.269 0.0018 286.28);
1032
- --card-foreground: oklch(0.985 0 0);
1033
- --popover: oklch(0.269 0.0018 286.28);
1034
- --popover-foreground: oklch(0.985 0 0);
1040
+ --background: #181818;
1041
+ --foreground: rgb(255 255 255 / 85%);
1042
+ --card: #242424;
1043
+ --card-foreground: rgb(255 255 255 / 85%);
1044
+ --popover: #242424;
1045
+ --popover-foreground: rgb(255 255 255 / 85%);
1035
1046
  --primary: oklch(0.985 0 0);
1036
1047
  --primary-foreground: oklch(0.205 0 0);
1037
- --secondary: oklch(0.3375 0.0035 286.21);
1038
- --secondary-foreground: oklch(0.985 0 0);
1039
- --muted: oklch(0.3375 0.0035 286.21);
1040
- --muted-foreground: oklch(0.74 0.012 286);
1041
- --accent: oklch(0.3375 0.0035 286.21);
1042
- --accent-foreground: oklch(0.985 0 0);
1048
+ --prominent: #0091ff;
1049
+ --prominent-foreground: #fff;
1050
+ --secondary: rgb(255 255 255 / 8%);
1051
+ --secondary-foreground: rgb(255 255 255 / 85%);
1052
+ --muted: rgb(255 255 255 / 5%);
1053
+ --muted-foreground: rgb(255 255 255 / 55%);
1054
+ --accent: rgb(255 255 255 / 10%);
1055
+ --accent-foreground: rgb(255 255 255 / 85%);
1043
1056
  --destructive: oklch(0.704 0.191 22.216);
1044
1057
  --destructive-foreground: oklch(0.985 0 0);
1045
1058
  --border: oklch(1 0 0 / 10%);
@@ -1053,13 +1066,13 @@
1053
1066
  --chart-3: var(--pending);
1054
1067
  --chart-4: var(--neutral);
1055
1068
  --chart-5: var(--accent-foreground);
1056
- --sidebar: oklch(0.235 0 0);
1069
+ --sidebar: #1b1d1e;
1057
1070
  --sidebar-foreground: oklch(0.985 0 0);
1058
1071
  --sidebar-primary: oklch(0.7145 0.185 45.03);
1059
1072
  --sidebar-primary-foreground: oklch(0.985 0 0);
1060
- --sidebar-accent: oklch(0.3375 0.0035 286.21);
1061
- --sidebar-accent-foreground: oklch(0.985 0 0);
1062
- --sidebar-border: oklch(1 0 0 / 10%);
1073
+ --sidebar-accent: color-mix(in srgb, #0091ff 14%, transparent);
1074
+ --sidebar-accent-foreground: #0091ff;
1075
+ --sidebar-border: #394043;
1063
1076
  --sidebar-ring: var(--ring);
1064
1077
  --info: oklch(0.72 0.15 250);
1065
1078
  --info-foreground: oklch(0.78 0.11 250);
@@ -1075,30 +1088,30 @@
1075
1088
  --status-stopped: var(--neutral);
1076
1089
  --status-pending: var(--pending);
1077
1090
  --status-error: var(--destructive);
1078
- --material-regular-fill: color-mix(
1079
- in oklch,
1080
- var(--background) 68%,
1081
- transparent
1082
- );
1083
- --material-regular-fallback: color-mix(
1084
- in oklch,
1085
- var(--background) 88%,
1086
- var(--foreground) 12%
1087
- );
1091
+ --toolbar-control-background: rgb(153 153 153 / 17%);
1092
+ --toolbar-control-border: rgb(255 255 255 / 10%);
1093
+ --material-ultra-thick-fill: rgb(0 0 0 / 50%);
1094
+ --material-thick-fill: rgb(0 0 0 / 40%);
1095
+ --material-medium-fill: rgb(0 0 0 / 29%);
1096
+ --material-thin-fill: rgb(0 0 0 / 20%);
1097
+ --material-ultra-thin-fill: rgb(0 0 0 / 10%);
1098
+ --material-ultra-thick-fallback: #000;
1099
+ --material-thick-fallback: #000;
1100
+ --material-medium-fallback: #000;
1101
+ --material-thin-fallback: #000;
1102
+ --material-ultra-thin-fallback: #000;
1103
+ --material-regular-fill: var(--material-medium-fill);
1104
+ --material-regular-fallback: var(--material-medium-fallback);
1088
1105
  --material-regular-border: oklch(1 0 0 / 14%);
1089
1106
  --material-regular-highlight: oklch(1 0 0 / 12%);
1090
- --material-clear-fill: color-mix(
1091
- in oklch,
1092
- var(--background) 20%,
1093
- transparent
1094
- );
1095
- --material-clear-fallback: color-mix(
1096
- in oklch,
1097
- var(--background) 78%,
1098
- var(--foreground) 22%
1099
- );
1107
+ --material-clear-fill: var(--material-ultra-thin-fill);
1108
+ --material-clear-fallback: var(--material-ultra-thin-fallback);
1100
1109
  --material-clear-border: oklch(1 0 0 / 18%);
1101
1110
  --material-clear-highlight: oklch(1 0 0 / 10%);
1111
+ /* In-flow structure: never map this role to overlay or glass elevation. */
1112
+ --material-shadow-card: 0 1px 2px oklch(0 0 0 / 24%);
1113
+ --material-shadow-sidebar:
1114
+ 0 1px 2px oklch(0 0 0 / 18%), 0 3px 10px oklch(0 0 0 / 12%);
1102
1115
  --material-shadow-panel:
1103
1116
  inset 0 0 0 1px var(--separator), 0 2px 5px oklch(0 0 0 / 28%),
1104
1117
  0 8px 22px oklch(0 0 0 / 22%);
@@ -1157,6 +1170,7 @@
1157
1170
  transparent
1158
1171
  );
1159
1172
  --material-clear-border: var(--separator-strong);
1173
+ --material-shadow-card: none;
1160
1174
  --material-shadow-panel: inset 0 0 0 1px var(--separator-strong);
1161
1175
  --material-shadow-overlay: inset 0 0 0 1px var(--separator-strong);
1162
1176
  --material-shadow-dialog: inset 0 0 0 1px var(--separator-strong);
@@ -1200,6 +1214,7 @@
1200
1214
  transparent
1201
1215
  );
1202
1216
  --material-clear-border: var(--separator-strong);
1217
+ --material-shadow-card: none;
1203
1218
  --material-shadow-panel: inset 0 0 0 1px var(--separator-strong);
1204
1219
  --material-shadow-overlay: inset 0 0 0 1px var(--separator-strong);
1205
1220
  --material-shadow-dialog: inset 0 0 0 1px var(--separator-strong);
@@ -1249,6 +1264,7 @@
1249
1264
  --material-blur-toolbar: 0px;
1250
1265
  --material-blur-overlay: 0px;
1251
1266
  --material-saturation: 1;
1267
+ --material-shadow-card: none;
1252
1268
  --material-shadow-panel: none;
1253
1269
  --material-shadow-overlay: none;
1254
1270
  --material-shadow-dialog: none;
@@ -1316,8 +1332,6 @@
1316
1332
  .moldable-material {
1317
1333
  --material-active-fill: var(--material-regular-fill);
1318
1334
  --material-active-fallback: var(--material-regular-fallback);
1319
- --material-active-border: var(--material-regular-border);
1320
- --material-active-highlight: var(--material-regular-highlight);
1321
1335
  --material-active-blur: var(--material-regular-blur);
1322
1336
  --material-active-saturation: var(--material-regular-saturation);
1323
1337
  --material-active-shadow: none;
@@ -1325,21 +1339,61 @@
1325
1339
  position: relative;
1326
1340
  isolation: isolate;
1327
1341
  background-color: var(--material-active-fallback);
1328
- border-color: var(--material-active-border);
1329
- box-shadow:
1330
- inset 0 1px 0 var(--material-active-highlight),
1331
- var(--material-active-shadow);
1342
+ box-shadow: var(--material-active-shadow);
1332
1343
  }
1333
1344
 
1334
1345
  .moldable-material[data-material='clear'] {
1335
1346
  --material-active-fill: var(--material-clear-fill);
1336
1347
  --material-active-fallback: var(--material-clear-fallback);
1337
- --material-active-border: var(--material-clear-border);
1338
- --material-active-highlight: var(--material-clear-highlight);
1339
1348
  --material-active-blur: var(--material-clear-blur);
1340
1349
  --material-active-saturation: var(--material-clear-saturation);
1341
1350
  }
1342
1351
 
1352
+ .moldable-material[data-material='ultra-thick'] {
1353
+ --material-active-fill: var(--material-ultra-thick-fill);
1354
+ --material-active-fallback: var(--material-ultra-thick-fallback);
1355
+ --material-active-blur: var(--material-standard-blur);
1356
+ --material-active-saturation: 1;
1357
+ }
1358
+
1359
+ .moldable-material[data-material='thick'] {
1360
+ --material-active-fill: var(--material-thick-fill);
1361
+ --material-active-fallback: var(--material-thick-fallback);
1362
+ --material-active-blur: var(--material-standard-blur);
1363
+ --material-active-saturation: 1;
1364
+ }
1365
+
1366
+ .moldable-material[data-material='medium'] {
1367
+ --material-active-fill: var(--material-medium-fill);
1368
+ --material-active-fallback: var(--material-medium-fallback);
1369
+ --material-active-blur: var(--material-standard-blur);
1370
+ --material-active-saturation: 1;
1371
+ }
1372
+
1373
+ .moldable-material[data-material='thin'] {
1374
+ --material-active-fill: var(--material-thin-fill);
1375
+ --material-active-fallback: var(--material-thin-fallback);
1376
+ --material-active-blur: var(--material-standard-blur);
1377
+ --material-active-saturation: 1;
1378
+ }
1379
+
1380
+ .moldable-material[data-material='ultra-thin'] {
1381
+ --material-active-fill: var(--material-ultra-thin-fill);
1382
+ --material-active-fallback: var(--material-ultra-thin-fallback);
1383
+ --material-active-blur: var(--material-standard-blur);
1384
+ --material-active-saturation: 1;
1385
+ }
1386
+
1387
+ :where(
1388
+ [data-slot='button'][data-variant='toolbar'],
1389
+ [data-slot='toolbar-control-group'][data-appearance='chrome']
1390
+ ) {
1391
+ -webkit-backdrop-filter: blur(var(--material-blur-toolbar))
1392
+ saturate(var(--material-saturation));
1393
+ backdrop-filter: blur(var(--material-blur-toolbar))
1394
+ saturate(var(--material-saturation));
1395
+ }
1396
+
1343
1397
  .moldable-material[data-material-elevation='panel'] {
1344
1398
  --material-active-shadow: var(--material-shadow-panel);
1345
1399
  }
@@ -1383,6 +1437,133 @@
1383
1437
  saturate(var(--material-active-saturation));
1384
1438
  }
1385
1439
  }
1440
+
1441
+ /*
1442
+ * Popovers keep the quieter material treatment used before the general
1443
+ * surface-material expansion. They are compact menus, not floating windows.
1444
+ */
1445
+ .moldable-popover {
1446
+ --shape-overlay: 0.75rem;
1447
+ --density-pane-padding: 0.75rem;
1448
+ --popover-material-fill: color-mix(
1449
+ in oklch,
1450
+ var(--background) 76%,
1451
+ transparent
1452
+ );
1453
+ --popover-material-fallback: color-mix(
1454
+ in oklch,
1455
+ var(--background) 94%,
1456
+ var(--foreground) 6%
1457
+ );
1458
+ --popover-material-border: color-mix(
1459
+ in oklch,
1460
+ var(--foreground) 10%,
1461
+ transparent
1462
+ );
1463
+ --popover-material-highlight: oklch(1 0 0 / 42%);
1464
+ --popover-material-blur: 20px;
1465
+ --popover-material-saturation: 1.18;
1466
+ --popover-material-shadow:
1467
+ 0 8px 24px oklch(0.15 0.005 285 / 12%),
1468
+ 0 2px 6px oklch(0.15 0.005 285 / 8%);
1469
+
1470
+ border: 1px solid var(--popover-material-border);
1471
+ background-color: var(--popover-material-fallback);
1472
+ box-shadow:
1473
+ inset 0 1px 0 var(--popover-material-highlight),
1474
+ var(--popover-material-shadow);
1475
+ }
1476
+
1477
+ .moldable-popover[data-material='clear'] {
1478
+ --popover-material-fill: color-mix(
1479
+ in oklch,
1480
+ var(--background) 24%,
1481
+ transparent
1482
+ );
1483
+ --popover-material-fallback: color-mix(
1484
+ in oklch,
1485
+ var(--background) 88%,
1486
+ var(--foreground) 12%
1487
+ );
1488
+ --popover-material-border: color-mix(
1489
+ in oklch,
1490
+ var(--foreground) 14%,
1491
+ transparent
1492
+ );
1493
+ --popover-material-highlight: oklch(1 0 0 / 28%);
1494
+ --popover-material-blur: 12px;
1495
+ --popover-material-saturation: 1.24;
1496
+ }
1497
+
1498
+ .dark .moldable-popover {
1499
+ --popover-material-fill: color-mix(
1500
+ in oklch,
1501
+ var(--background) 68%,
1502
+ transparent
1503
+ );
1504
+ --popover-material-fallback: color-mix(
1505
+ in oklch,
1506
+ var(--background) 88%,
1507
+ var(--foreground) 12%
1508
+ );
1509
+ --popover-material-border: oklch(1 0 0 / 14%);
1510
+ --popover-material-highlight: oklch(1 0 0 / 12%);
1511
+ --popover-material-shadow:
1512
+ 0 12px 32px oklch(0 0 0 / 34%), 0 2px 8px oklch(0 0 0 / 24%);
1513
+ }
1514
+
1515
+ .dark .moldable-popover[data-material='clear'] {
1516
+ --popover-material-fill: color-mix(
1517
+ in oklch,
1518
+ var(--background) 20%,
1519
+ transparent
1520
+ );
1521
+ --popover-material-fallback: color-mix(
1522
+ in oklch,
1523
+ var(--background) 78%,
1524
+ var(--foreground) 22%
1525
+ );
1526
+ --popover-material-border: oklch(1 0 0 / 18%);
1527
+ --popover-material-highlight: oklch(1 0 0 / 10%);
1528
+ }
1529
+
1530
+ :where([data-transparency='reduced']) .moldable-popover {
1531
+ --popover-material-fill: var(--popover-material-fallback);
1532
+ --popover-material-blur: 0px;
1533
+ --popover-material-saturation: 1;
1534
+ }
1535
+
1536
+ @media (prefers-reduced-transparency: reduce) {
1537
+ .moldable-popover {
1538
+ --popover-material-fill: var(--popover-material-fallback);
1539
+ --popover-material-blur: 0px;
1540
+ --popover-material-saturation: 1;
1541
+ }
1542
+ }
1543
+
1544
+ @media (forced-colors: active) {
1545
+ .moldable-popover {
1546
+ --popover-material-fill: Canvas;
1547
+ --popover-material-fallback: Canvas;
1548
+ --popover-material-border: ButtonBorder;
1549
+ --popover-material-highlight: transparent;
1550
+ --popover-material-shadow: none;
1551
+ --popover-material-blur: 0px;
1552
+ --popover-material-saturation: 1;
1553
+ }
1554
+ }
1555
+
1556
+ @supports (
1557
+ (-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))
1558
+ ) {
1559
+ .moldable-popover {
1560
+ background-color: var(--popover-material-fill);
1561
+ -webkit-backdrop-filter: blur(var(--popover-material-blur))
1562
+ saturate(var(--popover-material-saturation));
1563
+ backdrop-filter: blur(var(--popover-material-blur))
1564
+ saturate(var(--popover-material-saturation));
1565
+ }
1566
+ }
1386
1567
  }
1387
1568
 
1388
1569
  @layer utilities {