@threadlabs/looma 0.5.2 → 0.6.0-rc.1

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 (174) hide show
  1. package/components/shared/overlay.js +3 -0
  2. package/components/ui-button/ui-button.html +14 -14
  3. package/components/ui-callout/ui-callout.html +1 -1
  4. package/components/ui-checkbox/ui-checkbox.html +1 -1
  5. package/components/ui-cluster/ui-cluster.html +6 -6
  6. package/components/ui-combobox/ui-combobox.html +23 -23
  7. package/components/ui-container/ui-container.html +4 -4
  8. package/components/ui-context-menu/ui-context-menu.html +2 -2
  9. package/components/ui-dialog/ui-dialog.html +12 -12
  10. package/components/ui-disclosure/ui-disclosure.html +19 -4
  11. package/components/ui-editable/ui-editable.html +6 -6
  12. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +20 -20
  13. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +25 -25
  14. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  15. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +20 -20
  16. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +48 -48
  17. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +34 -34
  18. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  19. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  20. package/components/ui-grid/ui-grid.html +6 -6
  21. package/components/ui-icon-button/ui-icon-button.html +42 -38
  22. package/components/ui-input/ui-input.html +2 -2
  23. package/components/ui-menu/ui-menu.html +15 -4
  24. package/components/ui-menu-item/ui-menu-item.html +5 -5
  25. package/components/ui-popover/ui-popover.html +3 -3
  26. package/components/ui-reel/ui-reel.html +6 -6
  27. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  28. package/components/ui-search-shell/ui-search-shell.html +3 -3
  29. package/components/ui-select/ui-select.html +2 -2
  30. package/components/ui-sidebar/ui-sidebar.html +11 -11
  31. package/components/ui-stack/ui-stack.html +6 -6
  32. package/components/ui-switcher/ui-switcher.html +6 -6
  33. package/components/ui-tabs/ui-tabs.html +18 -4
  34. package/components/ui-textarea/ui-textarea.html +2 -2
  35. package/components/ui-toast-region/ui-toast-region.html +2 -2
  36. package/components/ui-tooltip/ui-tooltip.html +1 -1
  37. package/components/ui-top-bar/ui-top-bar.html +5 -5
  38. package/components/ui-tree/ui-tree.html +7 -0
  39. package/components/ui-tree-item/ui-tree-item.html +15 -7
  40. package/dist/index.js +1 -1
  41. package/package.json +1 -1
  42. package/styles/ui-button.css +14 -14
  43. package/styles/ui-callout.css +1 -1
  44. package/styles/ui-checkbox.css +1 -1
  45. package/styles/ui-cluster.css +6 -6
  46. package/styles/ui-combobox.css +23 -23
  47. package/styles/ui-container.css +4 -4
  48. package/styles/ui-context-menu.css +2 -2
  49. package/styles/ui-dialog.css +12 -12
  50. package/styles/ui-disclosure.css +22 -6
  51. package/styles/ui-editable.css +6 -6
  52. package/styles/ui-editor-insert-table-grid.css +20 -20
  53. package/styles/ui-editor-mention-menu.css +25 -25
  54. package/styles/ui-editor-slash-menu.css +39 -39
  55. package/styles/ui-editor-table-context-menu.css +20 -20
  56. package/styles/ui-editor-table-overlay.css +48 -48
  57. package/styles/ui-editor-table-toolbar.css +34 -34
  58. package/styles/ui-editor-toolbar.css +9 -9
  59. package/styles/ui-floating-action-button.css +16 -22
  60. package/styles/ui-grid.css +6 -6
  61. package/styles/ui-icon-button.css +42 -38
  62. package/styles/ui-input.css +2 -2
  63. package/styles/ui-menu-item.css +5 -5
  64. package/styles/ui-menu.css +18 -6
  65. package/styles/ui-popover.css +3 -3
  66. package/styles/ui-reel.css +6 -6
  67. package/styles/ui-search-result-row.css +9 -9
  68. package/styles/ui-search-shell.css +3 -3
  69. package/styles/ui-select.css +2 -2
  70. package/styles/ui-sidebar.css +11 -11
  71. package/styles/ui-stack.css +6 -6
  72. package/styles/ui-switcher.css +6 -6
  73. package/styles/ui-tabs.css +20 -6
  74. package/styles/ui-textarea.css +2 -2
  75. package/styles/ui-toast-region.css +2 -2
  76. package/styles/ui-tooltip.css +1 -1
  77. package/styles/ui-top-bar.css +5 -5
  78. package/styles/ui-tree-item.css +21 -8
  79. package/styles/ui-tree.css +7 -1
  80. package/theme-dark.css +42 -103
  81. package/theme-high-contrast.css +18 -22
  82. package/theme-light.css +15 -41
  83. package/tokens.css +149 -201
  84. package/vanilla/UiDisclosure.d.ts +1 -0
  85. package/vanilla/UiDisclosure.js +1 -1
  86. package/vanilla/UiMenu.d.ts +1 -0
  87. package/vanilla/UiMenu.js +1 -1
  88. package/vanilla/UiTabs.d.ts +1 -0
  89. package/vanilla/UiTabs.js +1 -1
  90. package/vanilla/UiTree.d.ts +1 -0
  91. package/vanilla/UiTree.js +1 -1
  92. package/vue/UiButton.vue +20 -14
  93. package/vue/UiCallout.vue +1 -1
  94. package/vue/UiCheckbox.vue +1 -1
  95. package/vue/UiCluster.vue +6 -6
  96. package/vue/UiCombobox.vue +23 -23
  97. package/vue/UiContainer.vue +4 -4
  98. package/vue/UiContextMenu.vue +2 -2
  99. package/vue/UiDialog.vue +12 -12
  100. package/vue/UiDisclosure.d.ts +2 -0
  101. package/vue/UiDisclosure.vue +21 -4
  102. package/vue/UiEditable.vue +6 -6
  103. package/vue/UiEditorInsertTableGrid.vue +20 -20
  104. package/vue/UiEditorMentionMenu.vue +25 -25
  105. package/vue/UiEditorSlashMenu.vue +39 -39
  106. package/vue/UiEditorTableContextMenu.vue +20 -20
  107. package/vue/UiEditorTableOverlay.vue +48 -57
  108. package/vue/UiEditorTableToolbar.vue +34 -34
  109. package/vue/UiEditorToolbar.vue +9 -9
  110. package/vue/UiFloatingActionButton.vue +17 -22
  111. package/vue/UiGrid.vue +6 -6
  112. package/vue/UiIconButton.vue +46 -42
  113. package/vue/UiInput.vue +2 -2
  114. package/vue/UiMenu.d.ts +2 -0
  115. package/vue/UiMenu.vue +17 -7
  116. package/vue/UiMenuItem.vue +6 -5
  117. package/vue/UiPopover.vue +3 -3
  118. package/vue/UiReel.vue +6 -6
  119. package/vue/UiSearchResultRow.vue +10 -13
  120. package/vue/UiSearchShell.vue +3 -3
  121. package/vue/UiSelect.vue +2 -2
  122. package/vue/UiSidebar.vue +11 -16
  123. package/vue/UiStack.vue +6 -6
  124. package/vue/UiSwitcher.vue +6 -6
  125. package/vue/UiTabs.d.ts +2 -0
  126. package/vue/UiTabs.vue +21 -4
  127. package/vue/UiTextarea.vue +2 -2
  128. package/vue/UiToastRegion.vue +2 -2
  129. package/vue/UiTooltip.vue +1 -1
  130. package/vue/UiTopBar.vue +5 -5
  131. package/vue/UiTree.d.ts +2 -0
  132. package/vue/UiTree.vue +24 -1
  133. package/vue/UiTreeItem.vue +16 -8
  134. package/vue/chunks/UiButton.js +1 -1
  135. package/vue/chunks/UiCallout.js +1 -1
  136. package/vue/chunks/UiCheckbox.js +1 -1
  137. package/vue/chunks/UiCluster.js +1 -1
  138. package/vue/chunks/UiCombobox.js +1 -1
  139. package/vue/chunks/UiContainer.js +1 -1
  140. package/vue/chunks/UiContextMenu.js +1 -1
  141. package/vue/chunks/UiDialog.js +1 -1
  142. package/vue/chunks/UiDisclosure.js +3 -2
  143. package/vue/chunks/UiEditable.js +1 -1
  144. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  145. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  146. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  147. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  148. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  149. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  150. package/vue/chunks/UiEditorToolbar.js +1 -1
  151. package/vue/chunks/UiFloatingActionButton.js +1 -1
  152. package/vue/chunks/UiGrid.js +1 -1
  153. package/vue/chunks/UiIconButton.js +1 -1
  154. package/vue/chunks/UiInput.js +1 -1
  155. package/vue/chunks/UiMenu.js +3 -2
  156. package/vue/chunks/UiMenuItem.js +1 -1
  157. package/vue/chunks/UiPopover.js +1 -1
  158. package/vue/chunks/UiReel.js +1 -1
  159. package/vue/chunks/UiSearchResultRow.js +1 -1
  160. package/vue/chunks/UiSearchShell.js +1 -1
  161. package/vue/chunks/UiSelect.js +1 -1
  162. package/vue/chunks/UiSidebar.js +1 -1
  163. package/vue/chunks/UiStack.js +1 -1
  164. package/vue/chunks/UiSwitcher.js +1 -1
  165. package/vue/chunks/UiTabs.js +7 -2
  166. package/vue/chunks/UiTextarea.js +1 -1
  167. package/vue/chunks/UiToastRegion.js +1 -1
  168. package/vue/chunks/UiTooltip.js +1 -1
  169. package/vue/chunks/UiTopBar.js +1 -1
  170. package/vue/chunks/UiTree.js +8 -2
  171. package/vue/chunks/UiTreeItem.js +1 -1
  172. package/vue/components.css +1082 -1048
  173. package/vue/editor/LoomaEditor.d.ts +11 -0
  174. package/vue/editor/index.js +9 -0
@@ -18,13 +18,13 @@
18
18
 
19
19
  .looma-editor__mobile-toolbar-shell :scope button.active,
20
20
  .looma-editor__mobile-toolbar-shell :scope button.selected {
21
- background: var(--ui-accent-soft, var(--ui-accent-subtle, #e8f0fb));
21
+ background: var(--ui-accent-soft, var(--ui-accent-subtle));
22
22
  }
23
23
 
24
24
  .looma-editor__mobile-toolbar-shell :scope .menu {
25
25
  top: auto;
26
26
  right: 0;
27
- bottom: calc(100% + var(--ui-space-2, 8px));
27
+ bottom: calc(100% + var(--ui-space-2));
28
28
  max-height: min(50dvh, 22rem);
29
29
  overflow-y: auto;
30
30
  overscroll-behavior: contain;
@@ -32,11 +32,11 @@
32
32
  :scope {
33
33
  display: inline-flex;
34
34
  align-items: center;
35
- gap: var(--ui-space-1, 4px);
36
- padding: var(--ui-space-1, 4px);
37
- background: color-mix(in srgb, var(--ui-surface, #fff) 94%, transparent);
38
- border: 1px solid var(--ui-border, #e5e7eb);
39
- border-radius: calc(var(--ui-radius-md, 6px) + 2px);
35
+ gap: var(--ui-space-1);
36
+ padding: var(--ui-space-1);
37
+ background: color-mix(in srgb, var(--ui-surface) 94%, transparent);
38
+ border: 1px solid var(--ui-border);
39
+ border-radius: calc(var(--ui-radius-md) + 2px);
40
40
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
41
41
  backdrop-filter: blur(10px);
42
42
  }
@@ -51,7 +51,7 @@
51
51
  .sep {
52
52
  width: 1px;
53
53
  align-self: stretch;
54
- background: var(--ui-border, #e5e7eb);
54
+ background: var(--ui-border);
55
55
  }
56
56
 
57
57
  .overflow {
@@ -62,31 +62,31 @@
62
62
  display: inline-flex;
63
63
  align-items: center;
64
64
  justify-content: center;
65
- gap: var(--ui-space-1-5, 6px);
65
+ gap: var(--ui-space-2);
66
66
  min-height: 32px;
67
67
  border: 0;
68
- border-radius: var(--ui-radius-sm, 4px);
68
+ border-radius: var(--ui-radius-sm);
69
69
  background: transparent;
70
- color: var(--ui-text-primary, #111827);
70
+ color: var(--ui-text-primary);
71
71
  cursor: pointer;
72
- font-size: var(--ui-text-sm, 0.875rem);
72
+ font-size: var(--ui-font-size-sm);
73
73
  font-weight: 500;
74
74
  line-height: 1;
75
- padding: var(--ui-space-1-5, 6px) var(--ui-space-2, 8px);
75
+ padding: var(--ui-space-2) var(--ui-space-2);
76
76
  white-space: nowrap;
77
77
  }
78
78
 
79
79
  :scope button:hover {
80
- background: var(--ui-surface-hover, #f3f4f6);
80
+ background: var(--ui-surface-hover);
81
81
  }
82
82
 
83
83
  :scope button.active {
84
- background: var(--ui-accent-soft, var(--ui-accent-subtle, #e8f0fb));
85
- color: var(--ui-accent-active, #003d7a);
84
+ background: var(--ui-accent-soft, var(--ui-accent-subtle));
85
+ color: var(--ui-accent-active);
86
86
  }
87
87
 
88
88
  .group button {
89
- border-radius: var(--ui-radius-sm, 4px);
89
+ border-radius: var(--ui-radius-sm);
90
90
  }
91
91
 
92
92
  .group button + button {
@@ -95,11 +95,11 @@
95
95
 
96
96
  :scope .more {
97
97
  border: 0;
98
- border-radius: var(--ui-radius-sm, 4px);
98
+ border-radius: var(--ui-radius-sm);
99
99
  }
100
100
 
101
101
  :scope button.danger {
102
- color: var(--ui-danger, #dc2626);
102
+ color: var(--ui-danger);
103
103
  }
104
104
 
105
105
  :scope {
@@ -119,13 +119,13 @@
119
119
 
120
120
  .menu {
121
121
  position: absolute;
122
- top: calc(100% + var(--ui-space-2, 8px));
122
+ top: calc(100% + var(--ui-space-2));
123
123
  right: 0;
124
124
  min-width: 12rem;
125
- padding: var(--ui-space-1, 4px);
126
- background: var(--ui-surface, #fff);
127
- border: 1px solid var(--ui-border, #e5e7eb);
128
- border-radius: var(--ui-radius-md, 6px);
125
+ padding: var(--ui-space-1);
126
+ background: var(--ui-surface);
127
+ border: 1px solid var(--ui-border);
128
+ border-radius: var(--ui-radius-md);
129
129
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
130
130
  display: flex;
131
131
  flex-direction: column;
@@ -134,18 +134,18 @@
134
134
  }
135
135
 
136
136
  .menu-section + .menu-section {
137
- margin-top: var(--ui-space-1, 4px);
138
- padding-top: var(--ui-space-1, 4px);
139
- border-top: 1px solid color-mix(in srgb, var(--ui-border, #e5e7eb) 80%, transparent);
137
+ margin-top: var(--ui-space-1);
138
+ padding-top: var(--ui-space-1);
139
+ border-top: 1px solid color-mix(in srgb, var(--ui-border) 80%, transparent);
140
140
  }
141
141
 
142
142
  .menu-heading {
143
- padding: var(--ui-space-1, 4px) var(--ui-space-2, 8px);
143
+ padding: var(--ui-space-1) var(--ui-space-2);
144
144
  font-size: 0.6875rem;
145
145
  font-weight: 700;
146
146
  letter-spacing: 0.05em;
147
147
  text-transform: uppercase;
148
- color: var(--ui-text-muted, #6b7280);
148
+ color: var(--ui-text-muted);
149
149
  }
150
150
 
151
151
  .menu button {
@@ -162,7 +162,7 @@
162
162
  }
163
163
 
164
164
  :scope .swatch-button {
165
- gap: var(--ui-space-1, 4px);
165
+ gap: var(--ui-space-1);
166
166
  justify-content: flex-start;
167
167
  }
168
168
 
@@ -170,19 +170,19 @@
170
170
  width: 14px;
171
171
  height: 14px;
172
172
  flex: 0 0 14px;
173
- border: 1px solid color-mix(in srgb, var(--ui-border, #e5e7eb) 80%, #000);
173
+ border: 1px solid color-mix(in srgb, var(--ui-border) 80%, #000);
174
174
  border-radius: 3px;
175
175
  background: var(--ui-editor-table-toolbar-swatch);
176
176
  }
177
177
 
178
178
  .swatch.default {
179
179
  background:
180
- linear-gradient(135deg, transparent 44%, var(--ui-danger, #dc2626) 46% 54%, transparent 56%),
181
- var(--ui-surface, #fff);
180
+ linear-gradient(135deg, transparent 44%, var(--ui-danger) 46% 54%, transparent 56%),
181
+ var(--ui-surface);
182
182
  }
183
183
 
184
184
  .swatch-button.selected {
185
- background: var(--ui-accent-soft, var(--ui-accent-subtle, #e8f0fb));
185
+ background: var(--ui-accent-soft, var(--ui-accent-subtle));
186
186
  }
187
187
 
188
188
  :scope[hidden] {
@@ -13,8 +13,8 @@
13
13
  overflow-x: auto;
14
14
  scrollbar-width: none;
15
15
  white-space: nowrap;
16
- background: var(--ui-editor-toolbar-bg, var(--ui-surface, #fff));
17
- border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
16
+ background: var(--ui-editor-toolbar-surface, var(--ui-surface));
17
+ border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border));
18
18
  }
19
19
 
20
20
  :scope::-webkit-scrollbar {
@@ -29,9 +29,9 @@
29
29
  min-height: auto;
30
30
  padding: var(--ui-editor-toolbar-floating-padding, 4px);
31
31
  overflow-x: visible;
32
- background: color-mix(in srgb, var(--ui-editor-toolbar-bg, var(--ui-surface, #fff)) 96%, transparent);
33
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
34
- border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg, 10px));
32
+ background: color-mix(in srgb, var(--ui-editor-toolbar-surface, var(--ui-surface)) 96%, transparent);
33
+ border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border));
34
+ border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
35
35
  box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
36
36
  backdrop-filter: blur(10px);
37
37
  }
@@ -44,7 +44,7 @@
44
44
  left: 0;
45
45
  right: 0;
46
46
  min-height: var(--ui-editor-toolbar-mobile-min-height, 56px);
47
- border-top: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
47
+ border-top: 1px solid var(--ui-editor-toolbar-border, var(--ui-border));
48
48
  border-bottom: none;
49
49
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
50
50
  }
@@ -53,8 +53,8 @@
53
53
  position: static;
54
54
  inset: auto;
55
55
  min-height: auto;
56
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border, #e5e7eb));
57
- border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg, 10px));
56
+ border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border));
57
+ border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
58
58
  box-shadow: var(--ui-editor-toolbar-floating-shadow, var(--ui-shadow-lg, 0 10px 24px rgb(0 0 0 / 0.12)));
59
59
  }
60
60
  }
@@ -99,7 +99,7 @@
99
99
  :where([data-slotted], [data-slotted] *):is(.divider) {
100
100
  width: 1px;
101
101
  height: 20px;
102
- background: var(--ui-editor-toolbar-divider, var(--ui-border, #e5e7eb));
102
+ background: var(--ui-editor-toolbar-divider, var(--ui-border));
103
103
  flex-shrink: 0;
104
104
  margin: 0 var(--ui-editor-toolbar-divider-margin, 4px);
105
105
  }
@@ -2,13 +2,13 @@
2
2
  @scope ([data-component~="ui-floating-action-button"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
4
  position: fixed;
5
- inset-block-end: calc(var(--ui-floating-action-button-bottom, var(--ui-space-6, 1.5rem)) + env(safe-area-inset-bottom));
5
+ inset-block-end: calc(var(--ui-floating-action-button-inset-block-end, var(--ui-space-6)) + env(safe-area-inset-bottom));
6
6
  inset-inline-end: max(
7
- var(--ui-floating-action-button-inline-end, var(--ui-space-5, 1.25rem)),
7
+ var(--ui-floating-action-button-inset-inline-end, var(--ui-space-5)),
8
8
  env(safe-area-inset-right)
9
9
  );
10
- inline-size: var(--ui-floating-action-button-size, 56px);
11
- block-size: var(--ui-floating-action-button-size, 56px);
10
+ inline-size: var(--ui-control-min-block-size);
11
+ block-size: var(--ui-control-min-block-size);
12
12
  display: inline-flex;
13
13
  z-index: var(--ui-floating-action-button-z-index, 100);
14
14
  }
@@ -22,33 +22,27 @@
22
22
  display: inline-flex;
23
23
  align-items: center;
24
24
  justify-content: center;
25
- background: var(--ui-floating-action-button-bg, var(--ui-accent-solid));
26
- color: var(--ui-floating-action-button-color, var(--ui-text-on-accent));
27
- box-shadow: var(
28
- --ui-floating-action-button-shadow,
29
- 0 4px 12px color-mix(in srgb, var(--ui-accent-solid) 40%, transparent)
30
- );
25
+ background: var(--ui-accent);
26
+ color: var(--ui-on-accent);
27
+ box-shadow: 0 4px 12px color-mix(in srgb, var(--ui-accent) 40%, transparent);
31
28
  cursor: pointer;
32
29
  transition:
33
- background-color var(--ui-motion-fast, 160ms) var(--ui-motion-ease, ease),
34
- transform var(--ui-motion-fast, 160ms) var(--ui-motion-ease, ease),
35
- box-shadow var(--ui-motion-fast, 160ms) var(--ui-motion-ease, ease);
30
+ background-color var(--ui-motion-fast) var(--ui-motion-ease),
31
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
32
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
36
33
  }
37
34
 
38
35
  :scope:hover:enabled {
39
- background: var(--ui-floating-action-button-hover-bg, var(--ui-accent-hover));
40
- box-shadow: var(
41
- --ui-floating-action-button-hover-shadow,
42
- 0 6px 16px color-mix(in srgb, var(--ui-accent-solid) 50%, transparent)
43
- );
36
+ background: var(--ui-accent-hover);
37
+ box-shadow: 0 6px 16px color-mix(in srgb, var(--ui-accent) 50%, transparent);
44
38
  }
45
39
 
46
40
  :scope:active:enabled {
47
- transform: scale(var(--ui-floating-action-button-active-scale, 0.94));
41
+ transform: scale(0.94);
48
42
  }
49
43
 
50
44
  :scope:focus-visible {
51
- outline: 2px solid var(--ui-focus-ring, currentColor);
45
+ outline: 2px solid var(--ui-focus-ring);
52
46
  outline-offset: 2px;
53
47
  }
54
48
 
@@ -70,8 +64,8 @@
70
64
  }
71
65
  @scope ([data-component~="ui-floating-action-button"]) to ([data-component]) {
72
66
  :where([data-slotted], [data-slotted] *):is(svg) {
73
- inline-size: var(--ui-floating-action-button-icon-size, 24px);
74
- block-size: var(--ui-floating-action-button-icon-size, 24px);
67
+ inline-size: var(--ui-icon-size-lg);
68
+ block-size: var(--ui-icon-size-lg);
75
69
  flex-shrink: 0;
76
70
  }
77
71
 
@@ -1,7 +1,7 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-grid"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
- --_grid-gap: var(--ui-space-4, 1rem);
4
+ --_grid-gap: var(--ui-space-4);
5
5
  --_grid-min: 12rem;
6
6
  display: grid;
7
7
  gap: var(--ui-grid-gap, var(--_grid-gap));
@@ -12,19 +12,19 @@
12
12
  }
13
13
 
14
14
  :scope[data-ui-grid-state~="gap=xs"] {
15
- --_grid-gap: var(--ui-space-2, 0.5rem);
15
+ --_grid-gap: var(--ui-space-2);
16
16
  }
17
17
  :scope[data-ui-grid-state~="gap=s"] {
18
- --_grid-gap: var(--ui-space-3, 0.75rem);
18
+ --_grid-gap: var(--ui-space-3);
19
19
  }
20
20
  :scope[data-ui-grid-state~="gap=m"] {
21
- --_grid-gap: var(--ui-space-4, 1rem);
21
+ --_grid-gap: var(--ui-space-4);
22
22
  }
23
23
  :scope[data-ui-grid-state~="gap=l"] {
24
- --_grid-gap: var(--ui-space-5, 1.5rem);
24
+ --_grid-gap: var(--ui-space-5);
25
25
  }
26
26
  :scope[data-ui-grid-state~="gap=xl"] {
27
- --_grid-gap: var(--ui-space-6, 2rem);
27
+ --_grid-gap: var(--ui-space-6);
28
28
  }
29
29
  :scope[data-ui-grid-state~="min=md"] {
30
30
  --_grid-min: 16rem;
@@ -14,11 +14,11 @@
14
14
  position: absolute;
15
15
  inset: 50% auto auto 50%;
16
16
  z-index: 1;
17
- inline-size: var(--ui-affordance-guide-size, 0.25rem);
18
- block-size: var(--ui-affordance-guide-size, 0.25rem);
19
- border-radius: var(--ui-radius-round, 999px);
17
+ inline-size: var(--ui-affordance-guide-size);
18
+ block-size: var(--ui-affordance-guide-size);
19
+ border-radius: var(--ui-radius-round);
20
20
  background: var(--ui-affordance-guide-color, var(--ui-border-strong));
21
- opacity: var(--ui-affordance-guide-opacity, 0.42);
21
+ opacity: var(--ui-affordance-guide-opacity);
22
22
  transform: translate(-50%, -50%);
23
23
  transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
24
24
  pointer-events: none;
@@ -41,16 +41,18 @@
41
41
  }
42
42
 
43
43
  :scope {
44
+ /* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
45
+ --_size: 2rem;
44
46
  appearance: none;
45
- inline-size: var(--ui-icon-button-size, 2rem);
46
- block-size: var(--ui-icon-button-size, 2rem);
47
- min-inline-size: var(--ui-icon-button-size, 2rem);
48
- min-block-size: var(--ui-icon-button-size, 2rem);
47
+ inline-size: var(--ui-icon-button-size, var(--_size));
48
+ block-size: var(--ui-icon-button-size, var(--_size));
49
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
50
+ min-block-size: var(--ui-icon-button-size, var(--_size));
49
51
  padding: 0;
50
52
  margin: 0;
51
53
  border: 1px solid transparent;
52
- border-radius: var(--ui-icon-button-radius, var(--ui-radius-2));
53
- background: var(--ui-icon-button-bg, transparent);
54
+ border-radius: var(--ui-icon-button-radius, var(--ui-radius-md));
55
+ background: var(--ui-icon-button-surface, transparent);
54
56
  color: inherit;
55
57
  display: inline-flex;
56
58
  align-items: center;
@@ -81,8 +83,8 @@
81
83
  content: "";
82
84
  position: absolute;
83
85
  inset: 50% auto auto 50%;
84
- inline-size: max(100%, var(--ui-control-min-block-size, 2.75rem));
85
- block-size: max(100%, var(--ui-control-min-block-size, 2.75rem));
86
+ inline-size: max(100%, var(--ui-control-min-block-size));
87
+ block-size: max(100%, var(--ui-control-min-block-size));
86
88
  transform: translate(-50%, -50%);
87
89
  }
88
90
  }
@@ -95,38 +97,40 @@
95
97
  content: "";
96
98
  position: absolute;
97
99
  inset: 50% auto auto 50%;
98
- inline-size: max(100%, var(--ui-control-min-block-size, 2.75rem));
99
- block-size: max(100%, var(--ui-control-min-block-size, 2.75rem));
100
+ inline-size: max(100%, var(--ui-control-min-block-size));
101
+ block-size: max(100%, var(--ui-control-min-block-size));
100
102
  transform: translate(-50%, -50%);
101
103
  }
102
104
 
103
105
  :scope[data-ui-icon-button-state~="size=sm"] {
104
- inline-size: var(--ui-icon-button-size-sm, 1.75rem);
105
- block-size: var(--ui-icon-button-size-sm, 1.75rem);
106
- min-inline-size: var(--ui-icon-button-size-sm, 1.75rem);
107
- min-block-size: var(--ui-icon-button-size-sm, 1.75rem);
106
+ --_size: 1.75rem;
107
+ inline-size: var(--ui-icon-button-size, var(--_size));
108
+ block-size: var(--ui-icon-button-size, var(--_size));
109
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
110
+ min-block-size: var(--ui-icon-button-size, var(--_size));
108
111
  }
109
112
 
110
113
  :scope[data-ui-icon-button-state~="size=lg"] {
111
- inline-size: var(--ui-icon-button-size-lg, 2.5rem);
112
- block-size: var(--ui-icon-button-size-lg, 2.5rem);
113
- min-inline-size: var(--ui-icon-button-size-lg, 2.5rem);
114
- min-block-size: var(--ui-icon-button-size-lg, 2.5rem);
114
+ --_size: 2.5rem;
115
+ inline-size: var(--ui-icon-button-size, var(--_size));
116
+ block-size: var(--ui-icon-button-size, var(--_size));
117
+ min-inline-size: var(--ui-icon-button-size, var(--_size));
118
+ min-block-size: var(--ui-icon-button-size, var(--_size));
115
119
  }
116
120
 
117
121
  :scope[data-ui-icon-button-state~="round"] {
118
- border-radius: var(--ui-radius-round, 999px);
122
+ border-radius: var(--ui-radius-round);
119
123
  }
120
124
 
121
125
  :scope[data-ui-icon-button-state~="variant=outline"] {
122
126
  border-color: var(--ui-icon-button-border, var(--ui-border-default));
123
- background: var(--ui-icon-button-outline-bg, var(--ui-surface-default));
124
- color: var(--ui-icon-button-outline-color, var(--ui-text-primary));
127
+ background: var(--ui-icon-button-outline-surface, var(--ui-surface-default));
128
+ color: var(--ui-icon-button-outline-text, var(--ui-text-primary));
125
129
  }
126
130
 
127
131
  :scope[data-ui-icon-button-state~="variant=solid"] {
128
- background: var(--ui-icon-button-solid-bg, var(--ui-accent-solid));
129
- color: var(--ui-icon-button-solid-color, var(--ui-text-on-accent));
132
+ background: var(--ui-icon-button-solid-surface, var(--ui-accent-solid));
133
+ color: var(--ui-icon-button-solid-text, var(--ui-text-on-accent));
130
134
  box-shadow: var(
131
135
  --ui-icon-button-solid-shadow,
132
136
  0 1px 2px color-mix(in srgb, var(--ui-accent-solid) 18%, transparent)
@@ -135,8 +139,8 @@
135
139
 
136
140
  :scope:hover:enabled {
137
141
  /* Derived from the text colour so the ghost hover shows on any background. */
138
- background: var(--ui-icon-button-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
139
- color: var(--ui-icon-button-hover-color, var(--ui-text-primary));
142
+ background: var(--ui-icon-button-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
143
+ color: var(--ui-icon-button-hover-text, var(--ui-text-primary));
140
144
  }
141
145
 
142
146
  :scope[data-ui-icon-button-state~="variant=outline"]:hover:enabled {
@@ -144,7 +148,7 @@
144
148
  }
145
149
 
146
150
  :scope[data-ui-icon-button-state~="variant=solid"]:hover:enabled {
147
- background: var(--ui-icon-button-solid-hover-bg, var(--ui-accent-hover));
151
+ background: var(--ui-icon-button-solid-hover-surface, var(--ui-accent-hover));
148
152
  }
149
153
 
150
154
  :scope:active:enabled {
@@ -159,31 +163,31 @@
159
163
  /* Disabled colours fall back to each variant's own; ghost takes only the icon colour. */
160
164
  :scope:disabled {
161
165
  opacity: var(--ui-icon-button-disabled-opacity, 0.6);
162
- color: var(--ui-icon-button-disabled-color, inherit);
166
+ color: var(--ui-icon-button-disabled-text, inherit);
163
167
  cursor: not-allowed;
164
168
  }
165
169
 
166
170
  :scope[data-ui-icon-button-state~="variant=outline"]:disabled {
167
171
  border-color: var(--ui-icon-button-disabled-border, var(--ui-icon-button-border, var(--ui-border-default)));
168
- background-color: var(--ui-icon-button-disabled-bg, var(--ui-icon-button-outline-bg, var(--ui-surface-default)));
169
- color: var(--ui-icon-button-disabled-color, var(--ui-icon-button-outline-color, var(--ui-text-primary)));
172
+ background-color: var(--ui-icon-button-disabled-surface, var(--ui-icon-button-outline-surface, var(--ui-surface-default)));
173
+ color: var(--ui-icon-button-disabled-text, var(--ui-icon-button-outline-text, var(--ui-text-primary)));
170
174
  }
171
175
 
172
176
  :scope[data-ui-icon-button-state~="variant=solid"]:disabled {
173
- background-color: var(--ui-icon-button-disabled-bg, var(--ui-icon-button-solid-bg, var(--ui-accent-solid)));
174
- color: var(--ui-icon-button-disabled-color, var(--ui-icon-button-solid-color, var(--ui-text-on-accent)));
177
+ background-color: var(--ui-icon-button-disabled-surface, var(--ui-icon-button-solid-surface, var(--ui-accent-solid)));
178
+ color: var(--ui-icon-button-disabled-text, var(--ui-icon-button-solid-text, var(--ui-text-on-accent)));
175
179
  }
176
180
 
177
181
  :scope {
178
- --_icon-button-icon-default: var(--ui-icon-size-md, 1.25rem);
182
+ --_icon-button-icon-default: var(--ui-icon-size-md);
179
183
  }
180
184
 
181
185
  :scope[data-ui-icon-button-state~="size=sm"] {
182
- --_icon-button-icon-default: var(--ui-icon-size-sm, 1rem);
186
+ --_icon-button-icon-default: var(--ui-icon-size-sm);
183
187
  }
184
188
 
185
189
  :scope[data-ui-icon-button-state~="size=lg"] {
186
- --_icon-button-icon-default: var(--ui-icon-size-lg, 1.5rem);
190
+ --_icon-button-icon-default: var(--ui-icon-size-lg);
187
191
  }
188
192
 
189
193
  /* A component that sets its display still honours the hidden attribute on its root. */
@@ -5,12 +5,12 @@
5
5
  display: inline-block;
6
6
  inline-size: 100%;
7
7
  min-inline-size: 0;
8
- min-block-size: var(--ui-control-size-md, 2.5rem);
8
+ min-block-size: var(--ui-control-size-md);
9
9
  margin: 0;
10
10
  padding: var(--ui-space-2) var(--ui-space-3);
11
11
  appearance: none;
12
12
  border: 1px solid var(--ui-control-border, var(--ui-border-strong));
13
- border-radius: var(--ui-input-radius, var(--ui-radius-2));
13
+ border-radius: var(--ui-input-radius, var(--ui-radius-md));
14
14
  background: var(--ui-control-surface, var(--ui-surface-elevated));
15
15
  color: var(--ui-text-primary);
16
16
  font: inherit;
@@ -4,19 +4,19 @@
4
4
  display: block;
5
5
  box-sizing: border-box;
6
6
  width: 100%;
7
- padding: var(--ui-space-2) var(--ui-space-3);
7
+ padding: var(--ui-menu-item-padding-block, var(--ui-space-2)) var(--ui-menu-item-padding-inline, var(--ui-space-3));
8
8
  text-align: left;
9
- border-radius: var(--ui-radius-2);
9
+ border-radius: var(--ui-menu-item-radius, var(--ui-radius-md));
10
10
  color: var(--ui-text-primary);
11
- font-size: var(--ui-font-size-md);
12
- font-weight: var(--ui-font-medium, 500);
11
+ font-size: var(--ui-menu-item-font-size, var(--ui-font-size-md));
12
+ font-weight: var(--ui-font-medium);
13
13
  cursor: pointer;
14
14
  outline: none;
15
15
  transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease);
16
16
  }
17
17
 
18
18
  :scope:is(:hover, :focus-visible):not([aria-disabled="true"]) {
19
- background: var(--ui-surface-subtle);
19
+ background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
20
20
  }
21
21
 
22
22
  :scope[aria-disabled="true"] {
@@ -1,12 +1,22 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-menu"]) to ([data-component], [data-slotted]) {
3
- :scope {
3
+ /* Compact sets the part tokens its items read, so nothing has to rescale a global. */
4
+ :scope[data-ui-menu-state~="density=compact"] {
5
+ --ui-menu-item-padding-block: var(--ui-space-1);
6
+ --ui-menu-item-padding-inline: var(--ui-space-2);
7
+ --ui-menu-item-font-size: var(--ui-font-size-sm);
8
+ --ui-menu-item-radius: var(--ui-radius-sm);
9
+ padding: var(--ui-space-1);
10
+ gap: 0;
11
+ }
12
+
13
+ :scope {
4
14
  display: flex;
5
15
  flex-direction: column;
6
16
  box-sizing: border-box;
7
17
  inline-size: max-content;
8
- min-inline-size: min(12rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2, 0.5rem)) * 2));
9
- max-inline-size: calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2, 0.5rem)) * 2);
18
+ min-inline-size: min(12rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
19
+ max-inline-size: calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
10
20
  padding: 0;
11
21
  border: 0;
12
22
  outline: 0;
@@ -24,7 +34,7 @@
24
34
  padding: var(--ui-space-1);
25
35
  background: var(--ui-surface-elevated);
26
36
  border: 1px solid var(--ui-border-default);
27
- border-radius: var(--ui-radius-3);
37
+ border-radius: var(--ui-radius-lg);
28
38
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
29
39
  max-block-size: inherit;
30
40
  overflow: auto;
@@ -39,7 +49,7 @@
39
49
  inset: auto;
40
50
  margin: 0;
41
51
  overflow: visible;
42
- max-block-size: calc(100dvh - var(--ui-menu-viewport-gap, var(--ui-space-2, 0.5rem)) * 2);
52
+ max-block-size: calc(100dvh - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
43
53
  opacity: 0;
44
54
  transform: translateY(-4px) scale(0.99);
45
55
  transition:
@@ -72,7 +82,9 @@
72
82
  }
73
83
  }
74
84
  @scope ([data-component~="ui-menu"]) to ([data-component]) {
75
- @starting-style {
85
+ /* Compact sets the part tokens its items read, so nothing has to rescale a global. */
86
+
87
+ @starting-style {
76
88
  }
77
89
 
78
90
  @media (prefers-reduced-motion: reduce) {
@@ -4,9 +4,9 @@
4
4
  box-sizing: border-box;
5
5
  max-inline-size: min(
6
6
  20rem,
7
- calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2, 0.5rem)) * 2)
7
+ calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2)
8
8
  );
9
- max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2, 0.5rem)) * 2);
9
+ max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2);
10
10
  overflow: visible;
11
11
  padding: 0;
12
12
  border: 0;
@@ -24,7 +24,7 @@
24
24
  padding: var(--ui-space-3);
25
25
  background: var(--ui-surface-elevated);
26
26
  border: 1px solid var(--ui-border-default);
27
- border-radius: var(--ui-radius-3);
27
+ border-radius: var(--ui-radius-lg);
28
28
  box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
29
29
  }
30
30
 
@@ -1,7 +1,7 @@
1
1
  /* Generated by HTML Next 1.0.0-alpha.2. Do not edit. */
2
2
  @scope ([data-component~="ui-reel"]) to ([data-component], [data-slotted]) {
3
3
  :scope {
4
- --_reel-gap: var(--ui-space-4, 1rem);
4
+ --_reel-gap: var(--ui-space-4);
5
5
  --_reel-item-width: auto;
6
6
  display: flex;
7
7
  inline-size: 100%;
@@ -15,19 +15,19 @@
15
15
  }
16
16
 
17
17
  :scope[data-ui-reel-state~="gap=xs"] {
18
- --_reel-gap: var(--ui-space-2, 0.5rem);
18
+ --_reel-gap: var(--ui-space-2);
19
19
  }
20
20
  :scope[data-ui-reel-state~="gap=s"] {
21
- --_reel-gap: var(--ui-space-3, 0.75rem);
21
+ --_reel-gap: var(--ui-space-3);
22
22
  }
23
23
  :scope[data-ui-reel-state~="gap=m"] {
24
- --_reel-gap: var(--ui-space-4, 1rem);
24
+ --_reel-gap: var(--ui-space-4);
25
25
  }
26
26
  :scope[data-ui-reel-state~="gap=l"] {
27
- --_reel-gap: var(--ui-space-5, 1.5rem);
27
+ --_reel-gap: var(--ui-space-5);
28
28
  }
29
29
  :scope[data-ui-reel-state~="gap=xl"] {
30
- --_reel-gap: var(--ui-space-6, 2rem);
30
+ --_reel-gap: var(--ui-space-6);
31
31
  }
32
32
  :scope[data-ui-reel-state~="itemWidth=sm"] {
33
33
  --_reel-item-width: 12rem;