@moldable-ai/ui 0.2.29 → 0.2.31

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 (181) 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/ui/app-frame.d.ts +20 -1
  9. package/dist/components/ui/app-frame.d.ts.map +1 -1
  10. package/dist/components/ui/app-frame.js +37 -7
  11. package/dist/components/ui/badge.d.ts +1 -1
  12. package/dist/components/ui/badge.js +1 -1
  13. package/dist/components/ui/button.d.ts +5 -3
  14. package/dist/components/ui/button.d.ts.map +1 -1
  15. package/dist/components/ui/button.js +39 -11
  16. package/dist/components/ui/card.d.ts +12 -2
  17. package/dist/components/ui/card.d.ts.map +1 -1
  18. package/dist/components/ui/card.js +3 -2
  19. package/dist/components/ui/checkbox.d.ts +4 -1
  20. package/dist/components/ui/checkbox.d.ts.map +1 -1
  21. package/dist/components/ui/checkbox.js +4 -4
  22. package/dist/components/ui/context-menu.js +6 -6
  23. package/dist/components/ui/dropdown-menu.js +6 -6
  24. package/dist/components/ui/icon-button.d.ts +1 -1
  25. package/dist/components/ui/icon-button.d.ts.map +1 -1
  26. package/dist/components/ui/icon-button.js +1 -0
  27. package/dist/components/ui/input.d.ts +6 -2
  28. package/dist/components/ui/input.d.ts.map +1 -1
  29. package/dist/components/ui/input.js +2 -2
  30. package/dist/components/ui/material.d.ts +8 -3
  31. package/dist/components/ui/material.d.ts.map +1 -1
  32. package/dist/components/ui/material.js +2 -2
  33. package/dist/components/ui/search-field.d.ts +3 -1
  34. package/dist/components/ui/search-field.d.ts.map +1 -1
  35. package/dist/components/ui/search-field.js +16 -6
  36. package/dist/components/ui/segmented-control.d.ts +3 -1
  37. package/dist/components/ui/segmented-control.d.ts.map +1 -1
  38. package/dist/components/ui/segmented-control.js +23 -17
  39. package/dist/components/ui/select.js +2 -2
  40. package/dist/components/ui/sidebar.d.ts +5 -3
  41. package/dist/components/ui/sidebar.d.ts.map +1 -1
  42. package/dist/components/ui/sidebar.js +53 -15
  43. package/dist/components/ui/status.d.ts +1 -1
  44. package/dist/components/ui/status.js +1 -1
  45. package/dist/components/ui/switch.d.ts +3 -1
  46. package/dist/components/ui/switch.d.ts.map +1 -1
  47. package/dist/components/ui/switch.js +3 -2
  48. package/dist/components/ui/toolbar-controls.d.ts +3 -1
  49. package/dist/components/ui/toolbar-controls.d.ts.map +1 -1
  50. package/dist/components/ui/toolbar-controls.js +14 -7
  51. package/dist/components/ui/toolbar.d.ts +5 -4
  52. package/dist/components/ui/toolbar.d.ts.map +1 -1
  53. package/dist/components/ui/toolbar.js +3 -3
  54. package/dist/index.d.ts +2 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +3 -1
  57. package/dist/lib/frame-lifecycle.d.ts +1 -0
  58. package/dist/lib/frame-lifecycle.d.ts.map +1 -1
  59. package/dist/lib/frame-lifecycle.js +7 -0
  60. package/dist/lib/theme.d.ts +39 -5
  61. package/dist/lib/theme.d.ts.map +1 -1
  62. package/dist/lib/theme.js +105 -17
  63. package/dist/tokens/contracts.d.ts +79 -0
  64. package/dist/tokens/contracts.d.ts.map +1 -0
  65. package/dist/tokens/contracts.js +57 -0
  66. package/dist/tokens/index.d.ts +2 -0
  67. package/dist/tokens/index.d.ts.map +1 -0
  68. package/dist/tokens/index.js +1 -0
  69. package/docs/README.md +2 -0
  70. package/docs/adaptive-materials.md +14 -9
  71. package/docs/design-tokens.md +10 -6
  72. package/docs/foundations.md +3 -3
  73. package/docs/macos-design-audit.md +144 -0
  74. package/docs/native-integration.md +4 -4
  75. package/docs/platform-architecture.md +189 -0
  76. package/docs/standalone-app-windows.md +37 -0
  77. package/docs/visual-regression.md +6 -8
  78. package/package.json +13 -1
  79. package/src/components/ui/accordion.md +46 -0
  80. package/src/components/ui/alert.md +12 -4
  81. package/src/components/ui/app-frame.md +8 -5
  82. package/src/components/ui/aspect-ratio.md +37 -0
  83. package/src/components/ui/avatar.md +48 -0
  84. package/src/components/ui/breadcrumb.md +52 -0
  85. package/src/components/ui/button-group.md +43 -0
  86. package/src/components/ui/button.md +20 -4
  87. package/src/components/ui/calendar.md +42 -0
  88. package/src/components/ui/card.md +43 -0
  89. package/src/components/ui/carousel.md +47 -0
  90. package/src/components/ui/chart.md +52 -0
  91. package/src/components/ui/checkbox.md +36 -0
  92. package/src/components/ui/collapsible.md +2 -3
  93. package/src/components/ui/color-well.md +14 -4
  94. package/src/components/ui/combobox.md +3 -3
  95. package/src/components/ui/confirm-dialog.md +5 -4
  96. package/src/components/ui/context-menu.md +3 -2
  97. package/src/components/ui/date-field.md +6 -1
  98. package/src/components/ui/date-picker.md +6 -3
  99. package/src/components/ui/dialog.md +14 -12
  100. package/src/components/ui/drawer.md +58 -0
  101. package/src/components/ui/error-boundary-view.md +1 -1
  102. package/src/components/ui/field.md +2 -1
  103. package/src/components/ui/form.md +71 -0
  104. package/src/components/ui/grid.md +4 -3
  105. package/src/components/ui/icon-button.md +4 -1
  106. package/src/components/ui/input-group.md +49 -0
  107. package/src/components/ui/input-otp.md +56 -0
  108. package/src/components/ui/input.md +40 -0
  109. package/src/components/ui/inspector.md +47 -7
  110. package/src/components/ui/item.md +5 -3
  111. package/src/components/ui/kbd.md +30 -0
  112. package/src/components/ui/label.md +29 -0
  113. package/src/components/ui/list.md +2 -2
  114. package/src/components/ui/material.md +25 -12
  115. package/src/components/ui/menu-items.md +60 -0
  116. package/src/components/ui/menubar.md +58 -0
  117. package/src/components/ui/message-scroller-primitive.md +70 -0
  118. package/src/components/ui/message-scroller.md +86 -0
  119. package/src/components/ui/navigation-button-group.md +4 -3
  120. package/src/components/ui/navigation-menu.md +52 -0
  121. package/src/components/ui/number-input.md +8 -0
  122. package/src/components/ui/pagination.md +51 -0
  123. package/src/components/ui/panel.md +6 -0
  124. package/src/components/ui/popover.md +10 -7
  125. package/src/components/ui/progress.md +31 -0
  126. package/src/components/ui/radio-group.md +36 -0
  127. package/src/components/ui/resizable.md +2 -1
  128. package/src/components/ui/scroll-area.md +3 -1
  129. package/src/components/ui/search-field.md +6 -1
  130. package/src/components/ui/segmented-control.md +6 -1
  131. package/src/components/ui/separator.md +35 -0
  132. package/src/components/ui/sidebar.md +20 -3
  133. package/src/components/ui/skeleton.md +36 -0
  134. package/src/components/ui/slider.md +58 -0
  135. package/src/components/ui/spinner.md +41 -0
  136. package/src/components/ui/split-view.md +8 -4
  137. package/src/components/ui/switch.md +44 -0
  138. package/src/components/ui/table.md +7 -7
  139. package/src/components/ui/tabs.md +3 -1
  140. package/src/components/ui/textarea.md +41 -0
  141. package/src/components/ui/toggle-group.md +2 -2
  142. package/src/components/ui/toggle.md +9 -9
  143. package/src/components/ui/toolbar-controls.md +17 -9
  144. package/src/components/ui/toolbar.md +6 -6
  145. package/src/styles/index.css +171 -117
  146. package/src/tokens/contracts.ts +131 -0
  147. package/src/tokens/index.css +6 -0
  148. package/src/tokens/index.ts +23 -0
  149. package/src/tokens/macos-26/README.md +37 -0
  150. package/src/tokens/macos-26/aliases.css +53 -0
  151. package/src/tokens/macos-26/compatibility.css +7 -0
  152. package/src/tokens/macos-26/index.css +3 -0
  153. package/src/tokens/macos-26/source/provenance.generated.json +28 -0
  154. package/src/tokens/macos-26/source/sidebar.generated.css +29 -0
  155. package/src/tokens/macos-26/source.css +7 -0
  156. package/src/tokens/macos-26/web-adaptations.json +25 -0
  157. package/src/tokens/macos-26/web-adaptations.md +15 -0
  158. package/src/tokens/macos-27/accessibility.css +11 -0
  159. package/src/tokens/macos-27/aliases.css +304 -0
  160. package/src/tokens/macos-27/compatibility.css +212 -0
  161. package/src/tokens/macos-27/index.css +15 -0
  162. package/src/tokens/macos-27/recipes.css +23 -0
  163. package/src/tokens/macos-27/source/chrome.generated.css +338 -0
  164. package/src/tokens/macos-27/source/colors.generated.css +140 -0
  165. package/src/tokens/macos-27/source/context.generated.css +18 -0
  166. package/src/tokens/macos-27/source/controls.generated.css +764 -0
  167. package/src/tokens/macos-27/source/effects.generated.css +68 -0
  168. package/src/tokens/macos-27/source/kit.generated.css +50 -0
  169. package/src/tokens/macos-27/source/overlays-status.generated.css +931 -0
  170. package/src/tokens/macos-27/source/paint-styles.generated.css +81 -0
  171. package/src/tokens/macos-27/source/provenance.generated.json +62 -0
  172. package/src/tokens/macos-27/source/sizes.generated.css +385 -0
  173. package/src/tokens/macos-27/source/source.generated.json +554 -0
  174. package/src/tokens/macos-27/source/text-styles.generated.css +116 -0
  175. package/src/tokens/macos-27/source.css +17 -0
  176. package/src/tokens/macos-27/web-adaptations.css +98 -0
  177. package/src/tokens/macos-27/web-adaptations.json +163 -0
  178. package/src/tokens/macos-27/web-adaptations.md +117 -0
  179. package/src/tokens/moldable/brand.css +48 -0
  180. package/src/tokens/moldable/index.css +1 -0
  181. package/src/tokens/platform-contract.test.ts +290 -0
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Stable component adapter for the macOS 26 floating sidebar.
3
+ *
4
+ * This selector is intentionally independent from the base platform/version
5
+ * selector so Moldable can use a macOS 27 base pack with macOS 26 sidebar
6
+ * anatomy.
7
+ */
8
+ [data-ui-platform='macos'][data-ui-platform-version='26'],
9
+ [data-ui-sidebar-style='floating'] {
10
+ --m-ui-sidebar-width: var(--m26-source-sidebar-width-reference);
11
+ --m-ui-sidebar-window-inset: var(--m26-source-sidebar-window-inset);
12
+ --m-ui-sidebar-shell-radius: var(--m26-source-sidebar-radius-shell);
13
+ --m-ui-sidebar-item-radius: var(--m26-source-sidebar-radius-item);
14
+ --m-ui-sidebar-selection-radius: var(--m26-source-sidebar-radius-selection);
15
+ --m-ui-sidebar-corner-smoothing: var(--m26-source-sidebar-corner-smoothing);
16
+ --m-ui-sidebar-border-width: var(--m26-source-sidebar-border-width);
17
+ --m-ui-sidebar-divider-width: 0px;
18
+ --m-ui-sidebar-divider-color: transparent;
19
+ --m-ui-sidebar-shadow: var(--m26-source-sidebar-shadow);
20
+ --m-ui-sidebar-glass-effect-radius: var(
21
+ --m26-source-sidebar-glass-effect-radius
22
+ );
23
+ --m-ui-sidebar-padding-block: var(--m26-source-sidebar-padding-block);
24
+ --m-ui-sidebar-row-inset-inline: var(--m26-source-sidebar-row-inset-inline);
25
+ --m-ui-sidebar-row-height-small: var(--m26-source-sidebar-row-height-small);
26
+ --m-ui-sidebar-row-height-medium: var(--m26-source-sidebar-row-height-medium);
27
+ --m-ui-sidebar-row-height-large: var(--m26-source-sidebar-row-height-large);
28
+ --m-ui-sidebar-section-height-small: var(
29
+ --m26-source-sidebar-section-height-small
30
+ );
31
+ --m-ui-sidebar-section-height-medium: var(
32
+ --m26-source-sidebar-section-height-medium
33
+ );
34
+ --m-ui-sidebar-section-height-large: var(
35
+ --m26-source-sidebar-section-height-large
36
+ );
37
+ --m-ui-sidebar-selection-fill: var(--m26-source-sidebar-selection-light);
38
+ --m-ui-sidebar-material-fill: var(--m-ui-material-medium-fill);
39
+ }
40
+
41
+ /*
42
+ * @m26-divergence M26-WEB-COLOR-001
43
+ * The extracted light selection uses Multiply. Browser compositing the whole
44
+ * row with mix-blend-mode also blends its text and icons, so dark appearance
45
+ * uses a semantic alpha fill derived from the resolved platform text color.
46
+ */
47
+ [data-ui-sidebar-style='floating'][data-ui-appearance='dark'] {
48
+ --m-ui-sidebar-selection-fill: color-mix(
49
+ in srgb,
50
+ var(--m-ui-color-text-primary) 10%,
51
+ transparent
52
+ );
53
+ }
@@ -0,0 +1,7 @@
1
+ [data-ui-platform='macos'][data-ui-platform-version='26'],
2
+ [data-ui-sidebar-style='floating'] {
3
+ --sidebar: var(--m-ui-sidebar-material-fill);
4
+ --sidebar-accent: var(--m-ui-sidebar-selection-fill);
5
+ --density-row-height: var(--m-ui-sidebar-row-height-medium);
6
+ --material-shadow-sidebar: var(--m-ui-sidebar-shadow);
7
+ }
@@ -0,0 +1,3 @@
1
+ @import './source/sidebar.generated.css';
2
+ @import './aliases.css';
3
+ @import './compatibility.css';
@@ -0,0 +1,28 @@
1
+ {
2
+ "source": "macOS 26",
3
+ "schemaVersion": 1,
4
+ "scope": {
5
+ "platform": "macos",
6
+ "platformVersion": "26",
7
+ "publicTheme": false,
8
+ "immutableSourcePack": true
9
+ },
10
+ "coverage": ["floating-sidebar"],
11
+ "inventory": {
12
+ "variables": {
13
+ "total": 19,
14
+ "byType": {
15
+ "COLOR": 1,
16
+ "DIMENSION": 15,
17
+ "EFFECT": 1,
18
+ "PERCENT": 1,
19
+ "STRING": 1
20
+ }
21
+ }
22
+ },
23
+ "notes": [
24
+ "This initial source module covers the macOS 26 floating sidebar only.",
25
+ "It can be selected independently from the application's base platform pack.",
26
+ "No source artwork, symbols, vectors, image assets, or font files are included."
27
+ ]
28
+ }
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Generated from the macOS 26 sidebar source specification.
3
+ * Values only. No source artwork, symbols, vectors, or image assets.
4
+ *
5
+ * The second selector exposes this immutable source to applications that
6
+ * deliberately compose the macOS 26 sidebar with another base platform pack.
7
+ */
8
+ [data-ui-platform='macos'][data-ui-platform-version='26'],
9
+ [data-ui-sidebar-style='floating'] {
10
+ --m26-source-sidebar-width-reference: 240px;
11
+ --m26-source-sidebar-window-inset: 8px;
12
+ --m26-source-sidebar-radius-shell: 18px;
13
+ --m26-source-sidebar-radius-item: 5px;
14
+ --m26-source-sidebar-radius-selection: 8px;
15
+ --m26-source-sidebar-corner-smoothing: 60%;
16
+ --m26-source-sidebar-shadow: 0 8px 40px rgb(0 0 0 / 12%);
17
+ --m26-source-sidebar-glass-effect-radius: 12px;
18
+ --m26-source-sidebar-border-width: 0px;
19
+ --m26-source-sidebar-padding-block: 10px;
20
+ --m26-source-sidebar-row-inset-inline: 10px;
21
+ --m26-source-sidebar-row-height-small: 24px;
22
+ --m26-source-sidebar-row-height-medium: 32px;
23
+ --m26-source-sidebar-row-height-large: 40px;
24
+ --m26-source-sidebar-section-height-small: 34px;
25
+ --m26-source-sidebar-section-height-medium: 39px;
26
+ --m26-source-sidebar-section-height-large: 43px;
27
+ --m26-source-sidebar-selection-light: rgb(0 0 0 / 11%);
28
+ --m26-source-sidebar-selection-blend-mode: multiply;
29
+ }
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Immutable macOS 26 source specification.
3
+ *
4
+ * This initial entry point contains the floating-sidebar source module only.
5
+ * It intentionally excludes Moldable aliases and web compatibility mappings.
6
+ */
7
+ @import './source/sidebar.generated.css';
@@ -0,0 +1,25 @@
1
+ {
2
+ "source": "macOS 26",
3
+ "target": "web",
4
+ "schemaVersion": 1,
5
+ "idConvention": "M26-WEB-{AREA}-{NNN}",
6
+ "adaptations": [
7
+ {
8
+ "id": "M26-WEB-COLOR-001",
9
+ "area": "color",
10
+ "status": "intentional-divergence",
11
+ "summary": "Use a semantic alpha selection fill in dark appearance.",
12
+ "reason": "The extracted light selection uses Multiply. Applying mix-blend-mode to a browser row would also blend its text and icons, and a dark source selection value has not yet been added to this partial source module.",
13
+ "sourceBehavior": "An 11% black selection fill composited with Multiply in light appearance.",
14
+ "webBehavior": "The source fill remains exact in light appearance; dark appearance derives a 10% alpha fill from the resolved platform text color.",
15
+ "overrides": [
16
+ {
17
+ "appearance": "dark",
18
+ "token": "--m-ui-sidebar-selection-fill",
19
+ "sourceValue": "not-present-in-partial-source",
20
+ "adaptedValue": "color-mix(in srgb, var(--m-ui-color-text-primary) 10%, transparent)"
21
+ }
22
+ ]
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,15 @@
1
+ # macOS 26 web adaptations
2
+
3
+ The immutable macOS 26 values live in `source/`. Effective browser behavior is
4
+ kept in the adapter layer and identified with stable `M26-WEB-*` IDs.
5
+
6
+ ## M26-WEB-COLOR-001
7
+
8
+ The currently extracted sidebar selection is the light-appearance value:
9
+ 11% black composited with Multiply. Applying `mix-blend-mode` to the entire
10
+ browser row also blends its label and icon, so the light value remains exact
11
+ while dark appearance uses a semantic 10% alpha fill derived from the resolved
12
+ platform text color.
13
+
14
+ When a dark macOS 26 source selection is added, this adaptation should be
15
+ re-evaluated rather than silently replacing the source.
@@ -0,0 +1,11 @@
1
+ @media (prefers-reduced-transparency: reduce) {
2
+ :root {
3
+ --m-ui-material-blur: 0px;
4
+ }
5
+ }
6
+
7
+ @media (prefers-contrast: more) {
8
+ :root {
9
+ --m-ui-color-text-secondary: var(--m-ui-color-text-primary);
10
+ }
11
+ }
@@ -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
+ }