@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
@@ -0,0 +1,304 @@
1
+ [data-ui-platform='macos'][data-ui-platform-version='27'],
2
+ [data-ui-sidebar-style='edge-to-edge'] {
3
+ --m-ui-font-family: var(--m27-source-font-family-ui);
4
+ --m-ui-color-text-primary: var(--m27-source-color-label-primary);
5
+ --m-ui-color-text-secondary: var(--m27-source-color-label-secondary);
6
+ --m-ui-color-text-tertiary: var(--m27-source-color-label-tertiary);
7
+ --m-ui-color-text-quaternary: var(--m27-source-color-label-quaternary);
8
+ --m-ui-color-text-quinary: var(--m27-source-color-label-quinary);
9
+ --m-ui-color-fill-primary: var(--m27-source-color-fill-primary);
10
+ --m-ui-color-fill-secondary: var(--m27-source-color-fill-secondary);
11
+ --m-ui-color-fill-tertiary: var(--m27-source-color-fill-tertiary);
12
+ --m-ui-color-fill-quaternary: var(--m27-source-color-fill-quaternary);
13
+ --m-ui-color-fill-quinary: var(--m27-source-color-fill-quinary);
14
+ --m-ui-color-accent: var(--m27-source-color-accent-blue);
15
+ --m-ui-color-destructive: var(--m27-source-color-accent-red);
16
+ --m-ui-surface-window: var(--m27-source-color-window-background);
17
+ --m-ui-surface-content: var(--m27-source-color-window-background);
18
+
19
+ --m-ui-control-height: var(--m27-source-size-control-height);
20
+ --m-ui-control-font-size: var(--m27-source-size-global-font-size);
21
+ --m-ui-control-line-height: 16px;
22
+ --m-ui-control-padding-inline: var(--m27-source-size-button-padding-inline);
23
+ --m-ui-control-radius: var(--m27-source-size-control-radius);
24
+ --m-ui-button-radius: var(--m27-source-size-button-radius);
25
+ --m-ui-button-font-weight: var(--m27-source-font-weight-medium);
26
+ --m-ui-button-bordered-fill: var(--m27-source-button-bordered-fill-idle);
27
+ --m-ui-button-bordered-fill-pressed: var(
28
+ --m27-source-button-bordered-fill-pressed
29
+ );
30
+ --m-ui-button-bordered-fill-disabled: var(
31
+ --m27-source-button-bordered-fill-disabled
32
+ );
33
+ --m-ui-button-bordered-label: var(--m27-source-button-bordered-label-idle);
34
+ --m-ui-button-bordered-label-disabled: var(
35
+ --m27-source-button-bordered-label-disabled
36
+ );
37
+ --m-ui-button-tinted-fill: var(--m27-source-button-tinted-fill-idle);
38
+ --m-ui-button-tinted-fill-pressed: var(
39
+ --m27-source-button-tinted-fill-pressed
40
+ );
41
+ --m-ui-button-tinted-fill-disabled: var(
42
+ --m27-source-button-tinted-fill-disabled
43
+ );
44
+ --m-ui-button-tinted-label: var(--m27-source-button-tinted-label);
45
+ --m-ui-button-tinted-label-disabled: var(
46
+ --m27-source-button-tinted-label-disabled
47
+ );
48
+ --m-ui-button-prominent-fill: var(--m27-source-button-prominent-fill-idle);
49
+ --m-ui-button-prominent-fill-pressed: var(
50
+ --m27-source-button-prominent-fill-pressed
51
+ );
52
+ --m-ui-button-prominent-fill-disabled: var(
53
+ --m27-source-button-prominent-fill-disabled
54
+ );
55
+ --m-ui-button-prominent-label: var(--m27-source-button-prominent-label-idle);
56
+ --m-ui-button-prominent-label-disabled: var(
57
+ --m27-source-button-prominent-label-disabled
58
+ );
59
+ --m-ui-button-destructive-fill: var(
60
+ --m27-source-button-destructive-fill-idle
61
+ );
62
+ --m-ui-button-destructive-fill-pressed: var(
63
+ --m27-source-button-destructive-fill-pressed
64
+ );
65
+ --m-ui-button-destructive-fill-disabled: var(
66
+ --m27-source-button-destructive-fill-disabled
67
+ );
68
+ --m-ui-button-destructive-label: var(
69
+ --m27-source-button-destructive-label-idle
70
+ );
71
+ --m-ui-button-destructive-label-disabled: var(
72
+ --m27-source-button-destructive-label-disabled
73
+ );
74
+ --m-ui-button-destructive-tinted-fill: var(
75
+ --m27-source-button-destructive-tinted-fill-idle
76
+ );
77
+ --m-ui-button-destructive-tinted-fill-pressed: var(
78
+ --m27-source-button-destructive-tinted-fill-pressed
79
+ );
80
+ --m-ui-button-destructive-tinted-fill-disabled: var(
81
+ --m27-source-button-destructive-tinted-fill-disabled
82
+ );
83
+ --m-ui-button-destructive-tinted-label: var(
84
+ --m27-source-button-destructive-tinted-label
85
+ );
86
+ --m-ui-button-destructive-tinted-label-disabled: var(
87
+ --m27-source-button-destructive-tinted-label-disabled
88
+ );
89
+ --m-ui-button-borderless-label: var(
90
+ --m27-source-button-borderless-label-idle
91
+ );
92
+ --m-ui-button-borderless-label-pressed: var(
93
+ --m27-source-button-borderless-label-pressed
94
+ );
95
+ --m-ui-button-borderless-label-disabled: var(
96
+ --m27-source-button-borderless-label-disabled
97
+ );
98
+ --m-ui-field-inset-inline: var(--m27-source-size-fields-inset-left);
99
+ --m-ui-checkbox-size: var(--m27-source-size-checkboxes-width);
100
+ --m-ui-checkbox-radius: var(--m27-source-size-checkboxes-radius);
101
+ --m-ui-checkbox-checkmark-width: var(
102
+ --m27-source-size-checkboxes-width-checkmark
103
+ );
104
+ --m-ui-checkbox-checkmark-height: var(
105
+ --m27-source-size-checkboxes-height-checkmark
106
+ );
107
+ --m-ui-radio-size: var(--m27-source-size-radio-button-width);
108
+ --m-ui-radio-dash-width: var(--m27-source-size-radio-button-width-dash);
109
+ --m-ui-segment-margin: var(--m27-source-size-segmented-control-margins);
110
+ --m-ui-switch-track-width: var(--m27-source-size-toggle-track-width);
111
+ --m-ui-switch-track-height: var(--m27-source-size-toggle-track-height);
112
+ --m-ui-switch-knob-width: var(--m27-source-size-toggle-knob-width);
113
+ --m-ui-switch-knob-height: var(--m27-source-size-toggle-knob-height);
114
+ --m-ui-switch-knob-pressed-width: var(
115
+ --m27-source-size-toggle-knob-clicked-width
116
+ );
117
+ --m-ui-switch-knob-pressed-height: var(
118
+ --m27-source-size-toggle-knob-clicked-height
119
+ );
120
+
121
+ --m-ui-type-large-title-size: var(--m27-source-type-large-title-size);
122
+ --m-ui-type-large-title-line-height: var(
123
+ --m27-source-type-large-title-line-height
124
+ );
125
+ --m-ui-type-title-1-size: var(--m27-source-type-title-1-size);
126
+ --m-ui-type-title-1-line-height: var(--m27-source-type-title-1-line-height);
127
+ --m-ui-type-title-2-size: var(--m27-source-type-title-2-size);
128
+ --m-ui-type-title-2-line-height: var(--m27-source-type-title-2-line-height);
129
+ --m-ui-type-title-3-size: var(--m27-source-type-title-3-size);
130
+ --m-ui-type-title-3-line-height: var(--m27-source-type-title-3-line-height);
131
+ --m-ui-type-headline-size: var(--m27-source-type-headline-size);
132
+ --m-ui-type-headline-line-height: var(--m27-source-type-headline-line-height);
133
+ --m-ui-type-body-size: var(--m27-source-type-body-size);
134
+ --m-ui-type-body-line-height: var(--m27-source-type-body-line-height);
135
+ --m-ui-type-callout-size: var(--m27-source-type-callout-size);
136
+ --m-ui-type-callout-line-height: var(--m27-source-type-callout-line-height);
137
+ --m-ui-type-subheadline-size: var(--m27-source-type-subheadline-size);
138
+ --m-ui-type-subheadline-line-height: var(
139
+ --m27-source-type-subheadline-line-height
140
+ );
141
+ --m-ui-type-footnote-size: var(--m27-source-type-footnote-size);
142
+ --m-ui-type-footnote-line-height: var(--m27-source-type-footnote-line-height);
143
+ --m-ui-type-caption-1-size: var(--m27-source-type-caption-1-size);
144
+ --m-ui-type-caption-1-line-height: var(
145
+ --m27-source-type-caption-1-line-height
146
+ );
147
+
148
+ --m-ui-material-ultra-thick-fill: var(--m27-source-material-ultra-thick-fill);
149
+ --m-ui-material-thick-fill: var(--m27-source-material-thick-fill);
150
+ --m-ui-material-medium-fill: var(--m27-source-material-medium-fill);
151
+ --m-ui-material-thin-fill: var(--m27-source-material-thin-fill);
152
+ --m-ui-material-ultra-thin-fill: var(--m27-source-material-ultra-thin-fill);
153
+ --m-ui-material-blur: var(--m27-source-material-standard-blur);
154
+
155
+ --m-ui-window-radius: var(--m27-source-chrome-window-radius);
156
+ --m-ui-window-border-width: 1px;
157
+ --m-ui-window-border-color: var(--m27-source-chrome-window-border);
158
+ --m-ui-window-shadow-active: var(--m27-source-chrome-window-active-shadow);
159
+ --m-ui-window-shadow-inactive: var(
160
+ --m27-source-chrome-window-inactive-shadow
161
+ );
162
+ --m-ui-toolbar-gap: var(--m27-source-chrome-toolbar-gap);
163
+ --m-ui-toolbar-control-group-height: var(
164
+ --m27-source-chrome-toolbar-medium-control-height
165
+ );
166
+ --m-ui-toolbar-control-group-padding: var(
167
+ --m27-source-chrome-toolbar-medium-inset
168
+ );
169
+ --m-ui-toolbar-control-group-gap: var(
170
+ --m27-source-chrome-toolbar-control-group-gap
171
+ );
172
+ --m-ui-toolbar-control-height: var(
173
+ --m27-source-chrome-toolbar-medium-icon-content-height
174
+ );
175
+ --m-ui-toolbar-action-padding-inline: var(
176
+ --m27-source-size-segmented-control-margins
177
+ );
178
+ --m-ui-toolbar-action-gap: var(--m27-source-chrome-toolbar-control-group-gap);
179
+ --m-ui-toolbar-action-icon-size: var(--m27-source-size-menu-font-size-symbol);
180
+ --m-ui-toolbar-title-size: var(--m27-source-chrome-window-title-font-size);
181
+ --m-ui-toolbar-title-line-height: var(
182
+ --m27-source-chrome-window-title-line-height
183
+ );
184
+ --m-ui-toolbar-title-weight: var(
185
+ --m27-source-chrome-window-title-font-weight
186
+ );
187
+ --m-ui-traffic-light-size: var(--m27-source-chrome-stoplight-size);
188
+ --m-ui-traffic-light-gap: var(--m27-source-chrome-stoplight-gap);
189
+ --m-ui-menu-radius: var(--m27-source-chrome-menu-radius);
190
+ --m-ui-menu-padding-block: var(--m27-source-chrome-menu-padding-block);
191
+ --m-ui-menu-item-height: var(--m27-source-chrome-menu-item-height);
192
+ --m-ui-menu-item-radius: var(--m27-source-chrome-menu-item-radius);
193
+ --m-ui-sidebar-width: var(--m27-source-chrome-sidebar-width);
194
+ --m-ui-sidebar-window-inset: 0px;
195
+ --m-ui-sidebar-shell-radius: 0px;
196
+ --m-ui-sidebar-item-radius: var(
197
+ --m27-source-chrome-sidebar-medium-selection-radius
198
+ );
199
+ --m-ui-sidebar-selection-radius: var(
200
+ --m27-source-chrome-sidebar-medium-selection-radius
201
+ );
202
+ --m-ui-sidebar-border-width: 0px;
203
+ /*
204
+ * Edge-to-edge sidebars terminate through their material transition.
205
+ * The visible hairline belongs to the outer window perimeter, not this
206
+ * internal seam.
207
+ */
208
+ --m-ui-sidebar-divider-width: 0px;
209
+ --m-ui-sidebar-divider-color: transparent;
210
+ --m-ui-sidebar-shadow: none;
211
+ /*
212
+ * The macOS 27 edge-to-edge sidebar does not own a material fill. It reveals
213
+ * the app/window canvas beneath it; product-specific color and imagery stay
214
+ * the responsibility of that canvas.
215
+ */
216
+ --m-ui-sidebar-glass-effect-radius: 0px;
217
+ --m-ui-sidebar-padding-block: 0px;
218
+ --m-ui-sidebar-row-inset-inline: 8px;
219
+ --m-ui-sidebar-row-height-small: var(
220
+ --m27-source-chrome-sidebar-small-row-height
221
+ );
222
+ --m-ui-sidebar-row-height-medium: var(
223
+ --m27-source-chrome-sidebar-medium-row-height
224
+ );
225
+ --m-ui-sidebar-row-height-large: var(
226
+ --m27-source-chrome-sidebar-large-row-height
227
+ );
228
+ --m-ui-sidebar-selection-fill: var(--m27-source-color-fill-primary);
229
+ --m-ui-sidebar-material-fill: transparent;
230
+ --m-ui-table-row-height: var(--m27-source-chrome-table-row-height);
231
+ --m-ui-scrollbar-width: var(--m27-source-chrome-scrollbar-cross-size);
232
+
233
+ --m-ui-alert-width: var(--m27-source-alert-width);
234
+ --m-ui-alert-radius: var(--m27-source-alert-radius);
235
+ --m-ui-alert-padding-block-start: var(--m27-source-alert-padding-block-start);
236
+ --m-ui-alert-padding-inline: var(--m27-source-alert-padding-inline-start);
237
+ --m-ui-alert-padding-block-end: var(--m27-source-alert-padding-block-end);
238
+ --m-ui-alert-gap: var(--m27-source-alert-major-gap);
239
+ --m-ui-alert-action-height-stacked: var(
240
+ --m27-source-alert-stacked-action-height
241
+ );
242
+ --m-ui-alert-action-height-inline: var(
243
+ --m27-source-alert-side-by-side-action-height
244
+ );
245
+ --m-ui-alert-action-gap-stacked: var(--m27-source-alert-stacked-action-gap);
246
+ --m-ui-alert-action-gap-inline: var(
247
+ --m27-source-alert-side-by-side-action-gap
248
+ );
249
+ --m-ui-dialog-radius: var(--m27-source-dialog-radius);
250
+ --m-ui-dialog-shadow: var(--m27-source-dialog-shadow-offset-x)
251
+ var(--m27-source-dialog-shadow-offset-y)
252
+ var(--m27-source-dialog-shadow-blur) var(--m27-source-dialog-shadow-spread)
253
+ var(--m27-source-dialog-shadow-color);
254
+ --m-ui-dialog-halo: var(--m27-source-dialog-halo-offset-x)
255
+ var(--m27-source-dialog-halo-offset-y) var(--m27-source-dialog-halo-blur)
256
+ var(--m27-source-dialog-halo-spread) var(--m27-source-dialog-halo-color);
257
+ --m-ui-notification-width: var(--m27-source-notification-width);
258
+ --m-ui-notification-min-height: var(--m27-source-notification-min-height);
259
+ --m-ui-notification-radius: var(--m27-source-notification-radius);
260
+ --m-ui-notification-stack-peek: var(--m27-source-notification-stack-peek);
261
+ --m-ui-notification-stack-inset: var(
262
+ --m27-source-notification-stack-inset-inline
263
+ );
264
+ --m-ui-popover-radius: var(--m27-source-popover-radius);
265
+ --m-ui-popover-protrusion-depth: var(--m27-source-popover-protrusion-depth);
266
+ --m-ui-progress-small-height: var(--m27-source-progress-linear-small-height);
267
+ --m-ui-progress-medium-height: var(
268
+ --m27-source-progress-linear-medium-height
269
+ );
270
+ --m-ui-progress-radius: var(--m27-source-progress-linear-radius);
271
+ --m-ui-progress-ring-small-size: var(
272
+ --m27-source-progress-circular-small-size
273
+ );
274
+ --m-ui-progress-ring-large-size: var(
275
+ --m27-source-progress-circular-large-size
276
+ );
277
+ --m-ui-progress-ring-thickness: var(
278
+ --m27-source-progress-circular-ring-thickness
279
+ );
280
+ --m-ui-sheet-radius: var(--m27-source-sheet-radius);
281
+ --m-ui-tooltip-padding: var(--m27-source-tooltip-padding-block-start)
282
+ var(--m27-source-tooltip-padding-inline)
283
+ var(--m27-source-tooltip-padding-block-end);
284
+ --m-ui-tooltip-radius: var(--m27-source-tooltip-radius);
285
+ --m-ui-tooltip-inner-stroke-width: var(
286
+ --m27-source-tooltip-inner-stroke-width
287
+ );
288
+ --m-ui-group-box-radius: var(--m27-source-group-box-radius);
289
+ --m-ui-group-box-background-alpha: var(
290
+ --m27-source-group-box-effective-background-opacity
291
+ );
292
+ }
293
+
294
+ [data-ui-platform='macos'][data-ui-platform-version='27'][data-control-size='mini'],
295
+ [data-ui-platform='macos'][data-ui-platform-version='27']
296
+ [data-control-size='mini'] {
297
+ --m-ui-control-line-height: 13px;
298
+ }
299
+
300
+ [data-ui-platform='macos'][data-ui-platform-version='27'][data-control-size='small'],
301
+ [data-ui-platform='macos'][data-ui-platform-version='27']
302
+ [data-control-size='small'] {
303
+ --m-ui-control-line-height: 14px;
304
+ }
@@ -0,0 +1,212 @@
1
+ /*
2
+ * Complete compatibility surface for components that still consume the
3
+ * pre-platform Moldable/shadcn semantic contract.
4
+ *
5
+ * This adapter is intentionally part of the versioned platform pack. It
6
+ * prevents :root, .dark, Tailwind theme, and application defaults from
7
+ * leaking into the raw macOS 27 profile while components migrate to
8
+ * --m-ui-* roles.
9
+ */
10
+ [data-ui-platform='macos'][data-ui-platform-version='27'] {
11
+ /* Typography */
12
+ --font-family-ui: var(--m27-source-font-family-ui);
13
+ --type-display-size: var(--m27-source-type-large-title-size);
14
+ --type-display-line-height: var(--m27-source-type-large-title-line-height);
15
+ --type-display-weight: var(--m27-source-type-large-title-emphasized-weight);
16
+ --type-display-tracking: 0;
17
+ --type-heading-size: var(--m27-source-type-title-2-size);
18
+ --type-heading-line-height: var(--m27-source-type-title-2-line-height);
19
+ --type-heading-weight: var(--m27-source-type-title-2-emphasized-weight);
20
+ --type-heading-tracking: 0;
21
+ --type-title-size: var(--m27-source-type-title-3-size);
22
+ --type-title-line-height: var(--m27-source-type-title-3-line-height);
23
+ --type-title-weight: var(--m27-source-type-title-3-emphasized-weight);
24
+ --type-title-tracking: 0;
25
+ --type-body-size: var(--m27-source-type-body-size);
26
+ --type-body-line-height: var(--m27-source-type-body-line-height);
27
+ --type-label-size: var(--m27-source-type-headline-size);
28
+ --type-label-line-height: var(--m27-source-type-headline-line-height);
29
+ --type-caption-size: var(--m27-source-type-caption-1-size);
30
+ --type-caption-line-height: var(--m27-source-type-caption-1-line-height);
31
+ --type-badge-size: var(--m27-source-type-caption-1-size);
32
+ --type-badge-line-height: var(--m27-source-type-caption-1-line-height);
33
+
34
+ /* Density and geometry */
35
+ --density-control-height-xs: 16px;
36
+ --density-control-height-sm: 20px;
37
+ --density-control-height-md: 24px;
38
+ --density-control-height-lg: 28px;
39
+ --density-control-height-xl: 36px;
40
+ --density-control-gap: var(--m27-source-chrome-toolbar-control-group-gap);
41
+ --density-control-padding-inline: var(
42
+ --m27-source-size-button-padding-inline
43
+ );
44
+ --density-badge-height: 18px;
45
+ --density-badge-padding-inline: 6px;
46
+ --density-row-height: var(--m27-source-chrome-sidebar-medium-row-height);
47
+ --density-toolbar-height: var(--m27-source-chrome-toolbar-unified-height);
48
+ --density-pane-padding: var(--m27-source-chrome-menu-padding-inline);
49
+ --density-section-gap: var(--m27-source-chrome-toolbar-unified-padding-block);
50
+
51
+ --shape-control: var(--m27-source-size-control-radius);
52
+ --shape-checkbox: var(--m27-source-size-checkboxes-radius);
53
+ --shape-popover: var(--m27-source-popover-radius);
54
+ --shape-card: var(--m27-source-chrome-menu-radius);
55
+ --shape-group: var(--m27-source-chrome-menu-radius);
56
+ --shape-panel: var(--m27-source-chrome-window-radius);
57
+ --shape-dialog: var(--m27-source-dialog-radius);
58
+ --shape-pill: 9999px;
59
+ --shape-container: var(--shape-card);
60
+ --shape-overlay: var(--shape-popover);
61
+ --radius: var(--shape-card);
62
+
63
+ /* Foundational colors */
64
+ --background: var(--m27-source-color-window-background);
65
+ --foreground: var(--m27-source-color-label-primary);
66
+ --card: var(--m27-source-color-window-background);
67
+ --card-foreground: var(--m27-source-color-label-primary);
68
+ --popover: var(--m27-source-color-window-background);
69
+ --popover-foreground: var(--m27-source-color-label-primary);
70
+ --primary: var(--m27-source-color-accent-blue);
71
+ --primary-foreground: var(--m27-source-color-label-white);
72
+ --prominent: var(--m27-source-color-accent-blue);
73
+ --prominent-foreground: var(--m27-source-color-label-white);
74
+ --secondary: var(--m27-source-color-fill-secondary);
75
+ --secondary-foreground: var(--m27-source-color-label-primary);
76
+ --muted: var(--m27-source-color-fill-quinary);
77
+ --muted-foreground: var(--m27-source-color-label-secondary);
78
+ --accent: var(--m27-source-color-fill-primary);
79
+ --accent-foreground: var(--m27-source-color-label-primary);
80
+ --destructive: var(--m27-source-color-accent-red);
81
+ --destructive-foreground: var(--m27-source-color-label-white);
82
+ --border: var(--m27-source-color-fill-primary);
83
+ --input: var(--m27-source-color-fill-primary);
84
+ --ring: var(--m27-source-color-accent-blue);
85
+
86
+ --info: var(--m27-source-color-accent-blue);
87
+ --info-foreground: var(--m27-source-color-accent-blue);
88
+ --neutral: var(--m27-source-color-gray);
89
+ --neutral-foreground: var(--m27-source-color-label-secondary);
90
+ --pending: var(--m27-source-color-accent-yellow);
91
+ --pending-foreground: var(--m27-source-color-accent-yellow);
92
+ --warning: var(--m27-source-color-accent-orange);
93
+ --warning-foreground: var(--m27-source-color-accent-orange);
94
+ --success: var(--m27-source-color-accent-green);
95
+ --success-foreground: var(--m27-source-color-accent-green);
96
+ --status-running: var(--m27-source-color-accent-green);
97
+ --status-stopped: var(--m27-source-color-gray);
98
+ --status-pending: var(--m27-source-color-accent-yellow);
99
+ --status-error: var(--m27-source-color-accent-red);
100
+
101
+ /* Stable semantic roles */
102
+ --text-primary: var(--m27-source-color-label-primary);
103
+ --text-secondary: var(--m27-source-color-label-secondary);
104
+ --text-tertiary: var(--m27-source-color-label-tertiary);
105
+ --text-disabled: var(--m27-source-color-label-tertiary);
106
+ --surface-canvas: var(--m27-source-color-window-background);
107
+ --surface-raised: var(--m27-source-color-window-background);
108
+ --surface-recessed: var(--m27-source-color-fill-quinary);
109
+ --surface-sidebar: var(--m-ui-sidebar-material-fill);
110
+ --surface-toolbar: var(--m27-source-material-medium-fill);
111
+ --surface-overlay: var(--m27-source-material-medium-fill);
112
+ --surface-selected: var(--m27-source-color-fill-primary);
113
+ --separator: var(--m27-source-color-fill-primary);
114
+ --separator-strong: var(--m27-source-color-table-column-separator);
115
+ --control-hover: var(--m27-source-color-fill-quinary);
116
+ --control-pressed: var(--m27-source-color-fill-primary);
117
+ --control-selected: var(--m27-source-color-fill-primary);
118
+ --control-selected-foreground: var(--m27-source-color-label-primary);
119
+ --control-disabled: var(--m27-source-color-fill-quinary);
120
+ --control-focus: var(--m27-source-color-accent-blue);
121
+ --control-invalid: var(--m27-source-color-accent-red);
122
+
123
+ /* Sidebar and collection compatibility */
124
+ --sidebar: var(--m-ui-sidebar-material-fill);
125
+ --sidebar-foreground: var(--m27-source-color-label-primary);
126
+ --sidebar-primary: var(--m27-source-color-accent-blue);
127
+ --sidebar-primary-foreground: var(--m27-source-color-label-white);
128
+ --sidebar-accent: var(--m27-source-color-fill-primary);
129
+ --sidebar-accent-foreground: var(--m27-source-color-label-primary);
130
+ --sidebar-border: var(--m27-source-color-table-column-separator);
131
+ --sidebar-ring: var(--m27-source-color-accent-blue);
132
+
133
+ /* Toolbar and window chrome */
134
+ --toolbar-control-background: var(--m27-source-color-fill-quinary);
135
+ --toolbar-control-hover: var(--m27-source-color-fill-secondary);
136
+ --toolbar-control-pressed: var(--m27-source-color-fill-primary);
137
+ --toolbar-control-border: var(--m27-source-color-fill-primary);
138
+ --toolbar-control-shadow: none;
139
+ --window-corner-radius: var(--m27-source-chrome-window-radius);
140
+ --window-chrome-background: var(--m27-source-material-medium-fill);
141
+ --window-chrome-foreground: var(--m27-source-color-label-primary);
142
+ --window-chrome-muted-foreground: var(--m27-source-color-label-secondary);
143
+ --window-border: var(--m27-source-color-fill-primary);
144
+
145
+ /* Materials */
146
+ --material-blur-toolbar: var(--m27-source-material-standard-blur);
147
+ --material-blur-overlay: var(--m27-source-material-standard-blur);
148
+ --material-saturation: 1;
149
+ --material-ultra-thick-fill: var(--m27-source-material-ultra-thick-fill);
150
+ --material-thick-fill: var(--m27-source-material-thick-fill);
151
+ --material-medium-fill: var(--m27-source-material-medium-fill);
152
+ --material-thin-fill: var(--m27-source-material-thin-fill);
153
+ --material-ultra-thin-fill: var(--m27-source-material-ultra-thin-fill);
154
+ --material-ultra-thick-fallback: var(
155
+ --m27-source-material-ultra-thick-layer-1-color
156
+ );
157
+ --material-thick-fallback: var(--m27-source-material-thick-layer-1-color);
158
+ --material-medium-fallback: var(--m27-source-material-medium-layer-1-color);
159
+ --material-thin-fallback: var(--m27-source-material-thin-layer-1-color);
160
+ --material-ultra-thin-fallback: var(
161
+ --m27-source-material-ultra-thin-layer-1-color
162
+ );
163
+ --material-standard-blur: var(--m27-source-material-standard-blur);
164
+ --material-regular-fill: var(--m27-source-material-medium-fill);
165
+ --material-regular-fallback: var(--m27-source-material-medium-layer-1-color);
166
+ --material-regular-border: var(--m27-source-color-fill-primary);
167
+ --material-regular-highlight: var(--m27-source-color-label-quaternary);
168
+ --material-regular-blur: var(--m27-source-material-standard-blur);
169
+ --material-regular-saturation: 1;
170
+ --material-clear-fill: var(--m27-source-material-ultra-thin-fill);
171
+ --material-clear-fallback: var(
172
+ --m27-source-material-ultra-thin-layer-1-color
173
+ );
174
+ --material-clear-border: var(--m27-source-color-fill-primary);
175
+ --material-clear-highlight: var(--m27-source-color-label-quaternary);
176
+ --material-clear-blur: var(--m27-source-material-standard-blur);
177
+ --material-clear-saturation: 1;
178
+ /*
179
+ * Structural cards live in the content layer. They deliberately do not
180
+ * inherit the source Liquid Glass effects used by floating panels.
181
+ */
182
+ --material-shadow-card: 0 1px 2px rgb(0 0 0 / 8%);
183
+ --material-shadow-sidebar:
184
+ 0 1px 2px rgb(0 0 0 / 5%), 0 3px 10px rgb(0 0 0 / 4%);
185
+ --material-shadow-panel: var(--m27-source-effect-liquid-glass-medium);
186
+ --material-shadow-overlay: var(--m27-source-effect-liquid-glass-large);
187
+ --material-shadow-dialog: var(--m-ui-dialog-shadow), var(--m-ui-dialog-halo);
188
+ --material-shadow-window: var(--m27-source-effect-window-active);
189
+ }
190
+
191
+ [data-ui-platform='macos'][data-ui-platform-version='27']
192
+ [data-ui-appearance='dark'],
193
+ [data-ui-platform='macos'][data-ui-platform-version='27'][data-ui-appearance='dark'] {
194
+ --material-shadow-card: 0 1px 2px rgb(0 0 0 / 28%);
195
+ --material-shadow-sidebar:
196
+ 0 1px 2px rgb(0 0 0 / 20%), 0 3px 10px rgb(0 0 0 / 14%);
197
+ }
198
+
199
+ /*
200
+ * A component-level edge-to-edge override can live beneath a root using the
201
+ * Moldable floating-sidebar recipe. Reassert the joined-canvas contract at
202
+ * the sidebar boundary so floating brand colors and perimeter styling never
203
+ * leak into this anatomy.
204
+ */
205
+ [data-ui-sidebar-style='edge-to-edge'][data-slot='sidebar'] {
206
+ --m-ui-sidebar-material-fill: transparent;
207
+ --m-ui-sidebar-border-width: 0px;
208
+ --m-ui-sidebar-border-color: transparent;
209
+ --sidebar: transparent;
210
+ --sidebar-border: transparent;
211
+ --surface-sidebar: transparent;
212
+ }
@@ -0,0 +1,15 @@
1
+ @import './source/colors.generated.css';
2
+ @import './source/sizes.generated.css';
3
+ @import './source/text-styles.generated.css';
4
+ @import './source/paint-styles.generated.css';
5
+ @import './source/kit.generated.css';
6
+ @import './source/effects.generated.css';
7
+ @import './source/context.generated.css';
8
+ @import './source/chrome.generated.css';
9
+ @import './source/controls.generated.css';
10
+ @import './source/overlays-status.generated.css';
11
+ @import './web-adaptations.css';
12
+ @import './aliases.css';
13
+ @import './compatibility.css';
14
+ @import './recipes.css';
15
+ @import './accessibility.css';
@@ -0,0 +1,23 @@
1
+ [data-ui-platform='macos'][data-ui-platform-version='27'] {
2
+ --m-ui-window-radius: 16px;
3
+ --m-ui-window-shadow-active: var(--m27-source-effect-window-active);
4
+ --m-ui-window-shadow-inactive: var(--m27-source-effect-window-inactive);
5
+ --m-ui-toolbar-padding-block: 8px;
6
+ --m-ui-toolbar-padding-inline-start: 18px;
7
+ --m-ui-toolbar-padding-inline-end: 8px;
8
+ --m-ui-toolbar-gap: 8px;
9
+ --m-ui-toolbar-control-group-height: 24px;
10
+ --m-ui-toolbar-control-group-padding: 2px;
11
+ --m-ui-toolbar-control-group-gap: 4px;
12
+ --m-ui-toolbar-control-height: 20px;
13
+ --m-ui-toolbar-title-size: 13px;
14
+ --m-ui-toolbar-title-line-height: 15px;
15
+ --m-ui-toolbar-title-weight: 700;
16
+ --m-ui-traffic-light-size: 14px;
17
+ --m-ui-traffic-light-gap: 9px;
18
+ }
19
+
20
+ [data-ui-platform='macos'][data-ui-platform-version='27'][data-control-size='xl'] {
21
+ --m-ui-toolbar-control-group-height: 36px;
22
+ --m-ui-toolbar-control-height: 28px;
23
+ }