@threadlabs/looma 0.22.14 → 0.23.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 (217) hide show
  1. package/components/shared/icons.js +2 -0
  2. package/components/ui-avatar/ui-avatar.html +3 -3
  3. package/components/ui-avatar-group/ui-avatar-group.html +1 -1
  4. package/components/ui-badge/ui-badge.html +1 -1
  5. package/components/ui-button/ui-button.html +3 -3
  6. package/components/ui-callout/ui-callout.html +3 -2
  7. package/components/ui-card/ui-card.html +2 -2
  8. package/components/ui-checkbox/ui-checkbox.html +3 -3
  9. package/components/ui-combobox/ui-combobox.html +8 -8
  10. package/components/ui-context-menu/ui-context-menu.html +2 -2
  11. package/components/ui-description-list/ui-description-list.html +1 -1
  12. package/components/ui-dialog/ui-dialog.html +3 -3
  13. package/components/ui-disclosure/ui-disclosure.html +43 -3
  14. package/components/ui-editable/ui-editable.html +2 -2
  15. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +5 -5
  16. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +2 -2
  17. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -6
  18. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +1 -1
  19. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +2 -2
  20. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +11 -11
  21. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +5 -5
  22. package/components/ui-editor-toolbar/ui-editor-toolbar.html +4 -4
  23. package/components/ui-floating-action-button/ui-floating-action-button.html +2 -2
  24. package/components/ui-icon/ui-icon.html +2 -0
  25. package/components/ui-icon-button/ui-icon-button.html +1 -1
  26. package/components/ui-input/ui-input.html +8 -4
  27. package/components/ui-input-group/ui-input-group.html +10 -6
  28. package/components/ui-list/ui-list.html +1 -1
  29. package/components/ui-list-item/ui-list-item.html +20 -4
  30. package/components/ui-listbox/ui-listbox.html +3 -3
  31. package/components/ui-menu/ui-menu.html +2 -2
  32. package/components/ui-menu-item/ui-menu-item.html +4 -4
  33. package/components/ui-meter/ui-meter.html +1 -1
  34. package/components/ui-nav-item/ui-nav-item.html +46 -14
  35. package/components/ui-popover/ui-popover.html +1 -1
  36. package/components/ui-radio/ui-radio.html +2 -2
  37. package/components/ui-search-result-row/ui-search-result-row.html +24 -5
  38. package/components/ui-search-shell/ui-search-shell.html +4 -4
  39. package/components/ui-section/ui-section.html +3 -3
  40. package/components/ui-select/ui-select.html +6 -2
  41. package/components/ui-separator/ui-separator.html +2 -2
  42. package/components/ui-sidebar/ui-sidebar.html +3 -3
  43. package/components/ui-status-message/ui-status-message.html +1 -1
  44. package/components/ui-switch/ui-switch.html +3 -3
  45. package/components/ui-table/ui-table.html +3 -3
  46. package/components/ui-tabs/ui-tabs.html +7 -7
  47. package/components/ui-textarea/ui-textarea.html +6 -2
  48. package/components/ui-toast/ui-toast.html +2 -2
  49. package/components/ui-toast-region/ui-toast-region.html +5 -5
  50. package/components/ui-tooltip/ui-tooltip.html +15 -15
  51. package/components/ui-top-bar/ui-top-bar.html +1 -1
  52. package/components/ui-tree-item/ui-tree-item.html +27 -8
  53. package/dist/index.js +1 -1
  54. package/editor/icons.d.ts +2 -0
  55. package/editor/index.js +3 -1
  56. package/package.json +1 -1
  57. package/styles/ui-avatar-group.css +1 -1
  58. package/styles/ui-avatar.css +3 -3
  59. package/styles/ui-badge.css +1 -1
  60. package/styles/ui-button.css +3 -3
  61. package/styles/ui-callout.css +3 -2
  62. package/styles/ui-card.css +2 -2
  63. package/styles/ui-checkbox.css +3 -3
  64. package/styles/ui-combobox.css +8 -8
  65. package/styles/ui-context-menu.css +2 -2
  66. package/styles/ui-description-list.css +1 -1
  67. package/styles/ui-dialog.css +3 -3
  68. package/styles/ui-disclosure.css +42 -2
  69. package/styles/ui-editable.css +2 -2
  70. package/styles/ui-editor-insert-table-grid.css +5 -5
  71. package/styles/ui-editor-mention-menu.css +2 -2
  72. package/styles/ui-editor-slash-menu-item.css +1 -1
  73. package/styles/ui-editor-slash-menu.css +6 -6
  74. package/styles/ui-editor-table-context-menu.css +2 -2
  75. package/styles/ui-editor-table-overlay.css +11 -11
  76. package/styles/ui-editor-table-toolbar.css +5 -5
  77. package/styles/ui-editor-toolbar.css +4 -4
  78. package/styles/ui-floating-action-button.css +2 -2
  79. package/styles/ui-icon-button.css +1 -1
  80. package/styles/ui-input-group.css +10 -6
  81. package/styles/ui-input.css +8 -4
  82. package/styles/ui-list-item.css +23 -4
  83. package/styles/ui-list.css +1 -1
  84. package/styles/ui-listbox.css +3 -3
  85. package/styles/ui-menu-item.css +4 -4
  86. package/styles/ui-menu.css +2 -2
  87. package/styles/ui-meter.css +1 -1
  88. package/styles/ui-nav-item.css +46 -12
  89. package/styles/ui-popover.css +1 -1
  90. package/styles/ui-radio.css +2 -2
  91. package/styles/ui-search-result-row.css +29 -5
  92. package/styles/ui-search-shell.css +4 -4
  93. package/styles/ui-section.css +3 -3
  94. package/styles/ui-select.css +6 -2
  95. package/styles/ui-separator.css +2 -2
  96. package/styles/ui-sidebar.css +3 -3
  97. package/styles/ui-status-message.css +1 -1
  98. package/styles/ui-switch.css +3 -3
  99. package/styles/ui-table.css +3 -3
  100. package/styles/ui-tabs.css +7 -7
  101. package/styles/ui-textarea.css +6 -2
  102. package/styles/ui-toast-region.css +5 -5
  103. package/styles/ui-toast.css +2 -2
  104. package/styles/ui-tooltip.css +15 -15
  105. package/styles/ui-top-bar.css +1 -1
  106. package/styles/ui-tree-item.css +32 -8
  107. package/tokens.css +30 -9
  108. package/vanilla/UiDisclosure.d.ts +1 -0
  109. package/vanilla/UiDisclosure.js +10 -1
  110. package/vanilla/UiIcon.js +1 -1
  111. package/vanilla/UiNavItem.d.ts +2 -0
  112. package/vanilla/UiNavItem.js +1 -1
  113. package/vue/UiAvatar.vue +3 -3
  114. package/vue/UiAvatarGroup.vue +1 -1
  115. package/vue/UiBadge.vue +2 -1
  116. package/vue/UiButton.vue +3 -3
  117. package/vue/UiCallout.vue +2 -2
  118. package/vue/UiCard.vue +2 -2
  119. package/vue/UiCheckbox.vue +3 -3
  120. package/vue/UiCombobox.vue +11 -8
  121. package/vue/UiContextMenu.vue +2 -2
  122. package/vue/UiDescriptionList.vue +1 -1
  123. package/vue/UiDialog.vue +4 -3
  124. package/vue/UiDisclosure.d.ts +13 -2
  125. package/vue/UiDisclosure.vue +61 -4
  126. package/vue/UiEditable.vue +2 -2
  127. package/vue/UiEditorInsertTableGrid.vue +5 -5
  128. package/vue/UiEditorMentionMenu.vue +2 -2
  129. package/vue/UiEditorSlashMenu.vue +6 -6
  130. package/vue/UiEditorSlashMenuItem.vue +1 -1
  131. package/vue/UiEditorTableContextMenu.vue +2 -2
  132. package/vue/UiEditorTableOverlay.vue +11 -11
  133. package/vue/UiEditorTableToolbar.vue +5 -5
  134. package/vue/UiEditorToolbar.vue +6 -4
  135. package/vue/UiFloatingActionButton.vue +2 -2
  136. package/vue/UiIcon.vue +8 -0
  137. package/vue/UiIconButton.vue +1 -1
  138. package/vue/UiInput.vue +7 -4
  139. package/vue/UiInputGroup.vue +6 -6
  140. package/vue/UiList.vue +1 -1
  141. package/vue/UiListItem.vue +20 -4
  142. package/vue/UiListbox.vue +3 -3
  143. package/vue/UiMenu.vue +3 -2
  144. package/vue/UiMenuItem.vue +4 -4
  145. package/vue/UiMeter.vue +1 -1
  146. package/vue/UiNavItem.d.ts +18 -0
  147. package/vue/UiNavItem.vue +96 -12
  148. package/vue/UiPopover.vue +2 -1
  149. package/vue/UiRadio.vue +2 -2
  150. package/vue/UiSearchResultRow.vue +25 -5
  151. package/vue/UiSearchShell.vue +4 -4
  152. package/vue/UiSection.vue +3 -3
  153. package/vue/UiSelect.vue +3 -2
  154. package/vue/UiSeparator.vue +4 -2
  155. package/vue/UiSidebar.vue +5 -3
  156. package/vue/UiStatusMessage.vue +1 -1
  157. package/vue/UiSwitch.vue +3 -3
  158. package/vue/UiTable.vue +3 -3
  159. package/vue/UiTabs.vue +8 -7
  160. package/vue/UiTextarea.vue +2 -2
  161. package/vue/UiToast.vue +4 -2
  162. package/vue/UiToastRegion.vue +5 -5
  163. package/vue/UiTooltip.vue +19 -15
  164. package/vue/UiTopBar.vue +1 -1
  165. package/vue/UiTreeItem.vue +31 -8
  166. package/vue/chunks/UiAvatar.js +1 -1
  167. package/vue/chunks/UiAvatarGroup.js +1 -1
  168. package/vue/chunks/UiBadge.js +1 -1
  169. package/vue/chunks/UiButton.js +1 -1
  170. package/vue/chunks/UiCallout.js +1 -1
  171. package/vue/chunks/UiCard.js +1 -1
  172. package/vue/chunks/UiCheckbox.js +1 -1
  173. package/vue/chunks/UiCombobox.js +1 -1
  174. package/vue/chunks/UiContextMenu.js +1 -1
  175. package/vue/chunks/UiDescriptionList.js +1 -1
  176. package/vue/chunks/UiDialog.js +1 -1
  177. package/vue/chunks/UiDisclosure.js +27 -4
  178. package/vue/chunks/UiEditable.js +1 -1
  179. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  180. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  181. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  182. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  183. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  184. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  185. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  186. package/vue/chunks/UiEditorToolbar.js +1 -1
  187. package/vue/chunks/UiFloatingActionButton.js +1 -1
  188. package/vue/chunks/UiIcon.js +24 -1
  189. package/vue/chunks/UiIconButton.js +1 -1
  190. package/vue/chunks/UiInput.js +1 -1
  191. package/vue/chunks/UiInputGroup.js +1 -1
  192. package/vue/chunks/UiList.js +1 -1
  193. package/vue/chunks/UiListItem.js +1 -1
  194. package/vue/chunks/UiListbox.js +1 -1
  195. package/vue/chunks/UiMenu.js +1 -1
  196. package/vue/chunks/UiMenuItem.js +1 -1
  197. package/vue/chunks/UiMeter.js +1 -1
  198. package/vue/chunks/UiNavItem.js +65 -6
  199. package/vue/chunks/UiPopover.js +1 -1
  200. package/vue/chunks/UiRadio.js +1 -1
  201. package/vue/chunks/UiSearchResultRow.js +1 -1
  202. package/vue/chunks/UiSearchShell.js +1 -1
  203. package/vue/chunks/UiSection.js +1 -1
  204. package/vue/chunks/UiSelect.js +1 -1
  205. package/vue/chunks/UiSeparator.js +1 -1
  206. package/vue/chunks/UiSidebar.js +1 -1
  207. package/vue/chunks/UiStatusMessage.js +1 -1
  208. package/vue/chunks/UiSwitch.js +1 -1
  209. package/vue/chunks/UiTable.js +1 -1
  210. package/vue/chunks/UiTabs.js +1 -1
  211. package/vue/chunks/UiTextarea.js +1 -1
  212. package/vue/chunks/UiToast.js +1 -1
  213. package/vue/chunks/UiToastRegion.js +1 -1
  214. package/vue/chunks/UiTooltip.js +1 -1
  215. package/vue/chunks/UiTopBar.js +1 -1
  216. package/vue/chunks/UiTreeItem.js +1 -1
  217. package/vue/components.css +1348 -1208
@@ -695,7 +695,7 @@ function uniqueKeys<T>(
695
695
  width: 24px;
696
696
  height: 24px;
697
697
  padding: 0;
698
- border: 1px solid var(--ui-affordance-near-color, var(--ui-border-strong));
698
+ border: var(--ui-border-width) solid var(--ui-affordance-near-color, var(--ui-border-strong));
699
699
  border-radius: var(--ui-radius-round);
700
700
  background: color-mix(in srgb, var(--ui-surface-elevated) 96%, transparent);
701
701
  color: var(--ui-affordance-near-color, var(--ui-text-secondary));
@@ -738,8 +738,8 @@ function uniqueKeys<T>(
738
738
  .handle:focus-visible,
739
739
  .selector:focus-visible,
740
740
  .cell-menu:focus-visible {
741
- outline: 2px solid var(--ui-focus-ring);
742
- outline-offset: 2px;
741
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
742
+ outline-offset: var(--ui-focus-width);
743
743
  }
744
744
 
745
745
  .control.row {
@@ -772,13 +772,13 @@ function uniqueKeys<T>(
772
772
  }
773
773
 
774
774
  .control.row .line {
775
- inset: -1px 0 auto;
776
- height: 2px;
775
+ inset: calc(-0.5 * var(--ui-accent-line-width)) 0 auto;
776
+ height: var(--ui-accent-line-width);
777
777
  }
778
778
 
779
779
  .control.col .line {
780
- inset: 0 auto 0 -1px;
781
- width: 2px;
780
+ inset: 0 auto 0 calc(-0.5 * var(--ui-accent-line-width));
781
+ width: var(--ui-accent-line-width);
782
782
  }
783
783
 
784
784
  .control.active .line {
@@ -850,7 +850,7 @@ function uniqueKeys<T>(
850
850
  align-items: center;
851
851
  justify-content: center;
852
852
  padding: 0;
853
- border: 1px solid transparent;
853
+ border: var(--ui-border-width) solid transparent;
854
854
  background: transparent;
855
855
  color: var(--ui-text-secondary);
856
856
  box-shadow: none;
@@ -967,19 +967,19 @@ function uniqueKeys<T>(
967
967
  position: absolute;
968
968
  z-index: 3;
969
969
  background: var(--ui-accent-solid);
970
- box-shadow: 0 0 0 2px var(--ui-surface);
970
+ box-shadow: 0 0 0 var(--ui-border-width) var(--ui-surface);
971
971
  pointer-events: none;
972
972
  }
973
973
 
974
974
  .drop-indicator.row {
975
975
  left: 0;
976
976
  width: 100%;
977
- height: 2px;
977
+ height: var(--ui-accent-line-width);
978
978
  }
979
979
 
980
980
  .drop-indicator.column {
981
981
  top: 0;
982
- width: 2px;
982
+ width: var(--ui-accent-line-width);
983
983
  height: 100%;
984
984
  }
985
985
 
@@ -648,8 +648,8 @@ function uniqueKeys<T>(
648
648
  gap: var(--ui-space-1);
649
649
  padding: var(--ui-space-1);
650
650
  background: color-mix(in srgb, var(--ui-surface) 94%, transparent);
651
- border: 1px solid var(--ui-border-strong);
652
- border-radius: calc(var(--ui-radius-md) + 2px);
651
+ border: var(--ui-border-width) solid var(--ui-border-strong);
652
+ border-radius: calc(var(--ui-radius-md) + 2 * var(--ui-border-width));
653
653
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
654
654
  backdrop-filter: blur(10px);
655
655
  }
@@ -739,7 +739,7 @@ function uniqueKeys<T>(
739
739
  max-width: min(17rem, calc(100vw - 24px));
740
740
  padding: var(--ui-space-1);
741
741
  background: var(--ui-surface);
742
- border: 1px solid var(--ui-border-strong);
742
+ border: var(--ui-border-width) solid var(--ui-border-strong);
743
743
  border-radius: var(--ui-radius-md);
744
744
  box-shadow: var(--ui-shadow-lg, 0 10px 15px -3px rgb(0 0 0 / 0.1));
745
745
  display: flex;
@@ -754,7 +754,7 @@ function uniqueKeys<T>(
754
754
  .menu-section + .menu-section {
755
755
  margin-top: var(--ui-space-1);
756
756
  padding-top: var(--ui-space-1);
757
- border-top: 1px solid var(--ui-border-divider);
757
+ border-top: var(--ui-border-width) solid var(--ui-border-divider);
758
758
  }
759
759
 
760
760
  .menu-heading {
@@ -788,7 +788,7 @@ function uniqueKeys<T>(
788
788
  width: 14px;
789
789
  height: 14px;
790
790
  flex: 0 0 14px;
791
- border: 1px solid color-mix(in srgb, var(--ui-border) 80%, #000);
791
+ border: var(--ui-border-width) solid color-mix(in srgb, var(--ui-border) 80%, #000);
792
792
  border-radius: var(--ui-radius-round);
793
793
  background: var(--_swatch);
794
794
  }
@@ -146,7 +146,8 @@ useComponentHost(() => import('../components/ui-editor-toolbar/ui-editor-toolbar
146
146
  var(--ui-editor-toolbar-padding-inline, 12px);
147
147
  min-height: var(--ui-editor-toolbar-min-height, 48px);
148
148
  background: var(--ui-editor-toolbar-surface, var(--ui-surface));
149
- border-bottom: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
149
+ border-bottom: var(--ui-border-width) solid
150
+ var(--ui-editor-toolbar-border, var(--ui-border-divider));
150
151
  }
151
152
 
152
153
  /* One row, always. When the controls outgrow the space, the row scrolls sideways rather than
@@ -221,7 +222,7 @@ useComponentHost(() => import('../components/ui-editor-toolbar/ui-editor-toolbar
221
222
  var(--ui-editor-toolbar-surface, var(--ui-surface)) 96%,
222
223
  transparent
223
224
  );
224
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
225
+ border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
225
226
  border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
226
227
  box-shadow: var(
227
228
  --ui-editor-toolbar-floating-shadow,
@@ -238,7 +239,8 @@ useComponentHost(() => import('../components/ui-editor-toolbar/ui-editor-toolbar
238
239
  left: 0;
239
240
  right: 0;
240
241
  min-height: var(--ui-editor-toolbar-mobile-min-height, 56px);
241
- border-top: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-divider));
242
+ border-top: var(--ui-border-width) solid
243
+ var(--ui-editor-toolbar-border, var(--ui-border-divider));
242
244
  border-bottom: none;
243
245
  box-shadow: var(--ui-editor-toolbar-mobile-shadow, 0 -2px 8px rgb(0 0 0 / 0.06));
244
246
  }
@@ -247,7 +249,7 @@ useComponentHost(() => import('../components/ui-editor-toolbar/ui-editor-toolbar
247
249
  position: relative;
248
250
  inset: auto;
249
251
  min-height: auto;
250
- border: 1px solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
252
+ border: var(--ui-border-width) solid var(--ui-editor-toolbar-border, var(--ui-border-strong));
251
253
  border-radius: var(--ui-editor-toolbar-floating-radius, var(--ui-radius-lg));
252
254
  box-shadow: var(
253
255
  --ui-editor-toolbar-floating-shadow,
@@ -203,8 +203,8 @@ const hostState = computed(() =>
203
203
  }
204
204
 
205
205
  [data-component~="ui-floating-action-button"]:focus-visible {
206
- outline: 2px solid var(--ui-focus-ring);
207
- outline-offset: 2px;
206
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
207
+ outline-offset: var(--ui-focus-width);
208
208
  }
209
209
 
210
210
  [data-component~="ui-floating-action-button"]:disabled {
package/vue/UiIcon.vue CHANGED
@@ -160,6 +160,10 @@ const shapes = cycleCheckedComputed(() =>
160
160
  tag: 'path',
161
161
  d: 'M9 3v18',
162
162
  }, { tag: 'path', d: 'M15 3v18' }],
163
+ compass: [{
164
+ tag: 'path',
165
+ d: 'm16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z',
166
+ }, { tag: 'circle', cx: '12', cy: '12', r: '10' }],
163
167
  'credit-card': [{ tag: 'rect', width: '20', height: '14', x: '2', y: '5', rx: '2' }, {
164
168
  tag: 'line',
165
169
  x1: '2',
@@ -234,6 +238,10 @@ const shapes = cycleCheckedComputed(() =>
234
238
  tag: 'path',
235
239
  d: 'm22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4',
236
240
  }],
241
+ history: [{ tag: 'path', d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8' }, {
242
+ tag: 'path',
243
+ d: 'M3 3v5h5',
244
+ }, { tag: 'path', d: 'M12 7v5l4 2' }],
237
245
  image: [{ tag: 'rect', width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2' }, {
238
246
  tag: 'circle',
239
247
  cx: '9',
@@ -459,7 +459,7 @@ function attribute(value: unknown): any {
459
459
  min-block-size: var(--ui-icon-button-size, var(--_size));
460
460
  padding: 0;
461
461
  margin: 0;
462
- border: 1px solid transparent;
462
+ border: var(--ui-border-width) solid transparent;
463
463
  border-radius: var(--ui-icon-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
464
464
  background-color: var(--ui-icon-button-surface, transparent);
465
465
  color: inherit;
package/vue/UiInput.vue CHANGED
@@ -554,7 +554,10 @@ useComponentHost(() => import('../components/ui-input/ui-input.js'), {
554
554
  padding: var(--ui-space-2) var(--ui-space-3);
555
555
  appearance: none;
556
556
  padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
557
- border: var(--ui-input-border-width, var(--_ui-default-input-border-width, 1px)) solid
557
+ border: var(
558
+ --ui-input-border-width,
559
+ var(--_ui-default-input-border-width, var(--ui-border-width))
560
+ ) solid
558
561
  var(
559
562
  --ui-input-border,
560
563
  var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong)))
@@ -657,7 +660,7 @@ useComponentHost(() => import('../components/ui-input/ui-input.js'), {
657
660
  var(
658
661
  --_ui-default-input-invalid-focus-shadow,
659
662
  var(--ui-control-inset),
660
- 0 0 0 3px color-mix(
663
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
661
664
  in srgb,
662
665
  var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
663
666
  transparent
@@ -678,9 +681,9 @@ useComponentHost(() => import('../components/ui-input/ui-input.js'), {
678
681
  [data-component~="ui-input"]:focus-visible {
679
682
  outline: var(
680
683
  --ui-input-focus-outline,
681
- var(--_ui-default-input-focus-outline, 2px solid Highlight)
684
+ var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight)
682
685
  );
683
- outline-offset: 1px;
686
+ outline-offset: var(--ui-border-width);
684
687
  }
685
688
  }
686
689
 
@@ -199,7 +199,7 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
199
199
  min-inline-size: 0;
200
200
  min-block-size: var(--ui-control-size-md);
201
201
  /* The frame reads the shared control tokens with a lone Input's fallbacks, so the two match. */
202
- border: 1px solid var(--ui-control-border, var(--ui-border-strong));
202
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
203
203
  border-radius: var(--ui-input-group-radius, var(--ui-field-radius, var(--ui-radius-md)));
204
204
  background: var(--ui-control-surface, var(--ui-surface-elevated));
205
205
  box-shadow: var(--ui-control-inset);
@@ -250,7 +250,7 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
250
250
  box-shadow: var(
251
251
  --ui-input-group-invalid-focus-shadow,
252
252
  var(--ui-control-inset),
253
- 0 0 0 3px color-mix(
253
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
254
254
  in srgb,
255
255
  var(--ui-input-group-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
256
256
  transparent
@@ -261,8 +261,8 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
261
261
  /* Forced colors drop box shadows, so the focus ring becomes an outline. */
262
262
  @media (forced-colors: active) {
263
263
  [data-component~="ui-input-group"]:has(input:focus-visible) {
264
- outline: 2px solid Highlight;
265
- outline-offset: 1px;
264
+ outline: var(--ui-focus-width) solid Highlight;
265
+ outline-offset: var(--ui-border-width);
266
266
  }
267
267
  }
268
268
 
@@ -297,11 +297,11 @@ useComponentHost(() => import('../components/ui-input-group/ui-input-group.js'),
297
297
  }
298
298
 
299
299
  .affix:has([slot="prefix"]) {
300
- border-inline-end: 1px solid var(--ui-border-divider);
300
+ border-inline-end: var(--ui-border-width) solid var(--ui-border-divider);
301
301
  }
302
302
 
303
303
  .affix:has([slot="suffix"]) {
304
- border-inline-start: 1px solid var(--ui-border-divider);
304
+ border-inline-start: var(--ui-border-width) solid var(--ui-border-divider);
305
305
  }
306
306
 
307
307
  [data-component~="ui-input-group"][data-ui-input-group-state~="prefixKind=icon"] {
package/vue/UiList.vue CHANGED
@@ -250,7 +250,7 @@ const hostState = computed(() =>
250
250
  [data-component~="ui-list"] > :slotted(li.card) {
251
251
  padding: var(--_ui-list-native-padding-block, var(--ui-space-3))
252
252
  var(--_ui-list-native-padding-inline, var(--ui-space-4));
253
- border: 1px solid var(--ui-border-strong);
253
+ border: var(--ui-border-width) solid var(--ui-border-strong);
254
254
  border-radius: var(--ui-radius-lg);
255
255
  background: var(--ui-surface-raised);
256
256
  list-style: none;
@@ -178,7 +178,7 @@ const hostState = computed(() =>
178
178
  --ui-list-item-padding-inline,
179
179
  var(--_ui-list-item-padding-inline, var(--ui-space-3))
180
180
  );
181
- border-radius: var(--ui-radius-md);
181
+ border-radius: var(--ui-selection-radius);
182
182
  color: var(--ui-text-primary);
183
183
  transition:
184
184
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
@@ -188,7 +188,7 @@ const hostState = computed(() =>
188
188
  [data-component~="ui-list-item"][data-ui-list-item-state~="variant=card"] {
189
189
  padding-block: var(--ui-list-item-padding-block, var(--ui-space-3));
190
190
  padding-inline: var(--ui-list-item-padding-inline, var(--ui-space-4));
191
- border: 1px solid var(--ui-border-strong);
191
+ border: var(--ui-border-width) solid var(--ui-border-strong);
192
192
  border-radius: var(--ui-radius-lg);
193
193
  background: var(--ui-surface-raised);
194
194
  }
@@ -203,11 +203,12 @@ const hostState = computed(() =>
203
203
  }
204
204
 
205
205
  [data-component~="ui-list-item"][data-ui-list-item-state~="current"] {
206
- background: var(--ui-surface-hover);
206
+ background: var(--ui-selection-surface);
207
+ color: var(--ui-selection-text);
207
208
  }
208
209
 
209
210
  [data-component~="ui-list-item"]:has(.title a[href]:focus-visible) {
210
- box-shadow: 0 0 0 2px var(--ui-focus-ring);
211
+ box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
211
212
  }
212
213
 
213
214
  .leading,
@@ -223,6 +224,10 @@ const hostState = computed(() =>
223
224
  font-size: var(--_ui-list-item-icon-size, var(--ui-font-size-lg));
224
225
  }
225
226
 
227
+ [data-component~="ui-list-item"][data-ui-list-item-state~="current"] .leading {
228
+ color: var(--ui-selection-text);
229
+ }
230
+
226
231
  /* Trailing controls take their own clicks, above the title link's stretched hit area. */
227
232
  .trailing {
228
233
  position: relative;
@@ -284,6 +289,17 @@ const hostState = computed(() =>
284
289
  display: none;
285
290
  }
286
291
 
292
+ @media (forced-colors: active) {
293
+ [data-component~="ui-list-item"]:has(a:focus-visible) {
294
+ outline: var(--ui-focus-width) solid Highlight;
295
+ outline-offset: calc(-1 * var(--ui-focus-width));
296
+ }
297
+ [data-component~="ui-list-item"][data-ui-list-item-state~="current"]:not(:has(a:focus-visible)) {
298
+ outline: var(--ui-border-width) solid Highlight;
299
+ outline-offset: calc(-1 * var(--ui-border-width));
300
+ }
301
+ }
302
+
287
303
  /* A component that sets its display still honours the hidden attribute on its root. */
288
304
  [data-component~="ui-list-item"][hidden] {
289
305
  display: none;
package/vue/UiListbox.vue CHANGED
@@ -471,7 +471,7 @@ function uniqueKeys<T>(
471
471
  min-inline-size: 0;
472
472
  margin: 0;
473
473
  padding: var(--ui-space-1);
474
- border: 1px solid var(--ui-listbox-border, var(--ui-control-border));
474
+ border: var(--ui-border-width) solid var(--ui-listbox-border, var(--ui-control-border));
475
475
  border-radius: var(--ui-listbox-radius, var(--ui-field-radius, var(--ui-radius-md)));
476
476
  background: var(--ui-listbox-surface, var(--ui-control-surface));
477
477
  color: var(--ui-text-primary);
@@ -515,8 +515,8 @@ function uniqueKeys<T>(
515
515
 
516
516
  [data-component~="ui-listbox"]:focus-visible {
517
517
  border-color: var(--ui-control-focus);
518
- outline: 2px solid var(--ui-focus-ring);
519
- outline-offset: 2px;
518
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
519
+ outline-offset: var(--ui-focus-width);
520
520
  box-shadow: var(--ui-listbox-focus-shadow, var(--ui-focus-halo));
521
521
  }
522
522
 
package/vue/UiMenu.vue CHANGED
@@ -379,7 +379,8 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
379
379
  max-inline-size: inherit;
380
380
  padding: var(--ui-space-1);
381
381
  background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
382
- border: 1px solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
382
+ border: var(--ui-border-width) solid
383
+ var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
383
384
  border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
384
385
  box-shadow: var(
385
386
  --_ui-menu-shadow,
@@ -394,7 +395,7 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
394
395
  block-size: 0;
395
396
  margin: var(--ui-space-1) 0;
396
397
  border: 0;
397
- border-block-start: 1px solid var(--ui-border-divider);
398
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
398
399
  }
399
400
 
400
401
  [data-component~="ui-menu"]:not([data-component~="ui-menu"][data-ui-menu-state~="internalOpen"]):not([data-component~="ui-menu"][data-ui-menu-state~="inline"]) {
@@ -369,7 +369,7 @@ function attribute(value: unknown): any {
369
369
  text-align: left;
370
370
  border-radius: var(
371
371
  --ui-menu-item-radius,
372
- var(--_ui-default-menu-item-radius, var(--ui-radius-md))
372
+ var(--_ui-default-menu-item-radius, var(--ui-selection-radius))
373
373
  );
374
374
  color: var(--ui-text-primary);
375
375
  font-size: var(
@@ -401,7 +401,7 @@ function attribute(value: unknown): any {
401
401
  box-sizing: border-box;
402
402
  inline-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
403
403
  block-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
404
- border: 1.5px solid var(--ui-control-border);
404
+ border: var(--ui-border-width) solid var(--ui-control-border);
405
405
  border-radius: var(--ui-radius-sm);
406
406
  color: var(--ui-surface);
407
407
  --_ui-default-icon-size: 0.75rem;
@@ -457,8 +457,8 @@ function attribute(value: unknown): any {
457
457
  }
458
458
 
459
459
  [data-component~="ui-menu-item"]:focus-visible {
460
- outline: 2px solid var(--ui-focus-ring);
461
- outline-offset: -2px;
460
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
461
+ outline-offset: calc(-1 * var(--ui-focus-width));
462
462
  }
463
463
 
464
464
  [data-component~="ui-menu-item"][aria-disabled="true"] {
package/vue/UiMeter.vue CHANGED
@@ -388,7 +388,7 @@ function number(value: unknown): number | undefined {
388
388
  background: var(--ui-border);
389
389
  box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1), inset 0 -1px rgb(255 255 255 / 0.22);
390
390
  /* Unseen until forced colours draw it, where the track's own colour is gone. */
391
- outline: 1px solid transparent;
391
+ outline: var(--ui-border-width) solid transparent;
392
392
  }
393
393
 
394
394
  [data-component~="ui-meter"][data-ui-meter-state~="size=sm"] {
@@ -22,6 +22,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
22
22
  type: PropType<"true" | "false" | "page" | "step" | "location" | null>;
23
23
  default: string;
24
24
  };
25
+ density: {
26
+ type: PropType<"comfortable" | "compact" | null>;
27
+ default: string;
28
+ };
25
29
  href: {
26
30
  type: PropType<string | null>;
27
31
  default: null;
@@ -34,6 +38,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
34
38
  type: PropType<string | null>;
35
39
  default: null;
36
40
  };
41
+ variant: {
42
+ type: PropType<"surface" | "line" | null>;
43
+ default: string;
44
+ };
37
45
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
38
46
  as: {
39
47
  type: PropType<"button" | "a" | null>;
@@ -43,6 +51,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
43
51
  type: PropType<"true" | "false" | "page" | "step" | "location" | null>;
44
52
  default: string;
45
53
  };
54
+ density: {
55
+ type: PropType<"comfortable" | "compact" | null>;
56
+ default: string;
57
+ };
46
58
  href: {
47
59
  type: PropType<string | null>;
48
60
  default: null;
@@ -55,12 +67,18 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
55
67
  type: PropType<string | null>;
56
68
  default: null;
57
69
  };
70
+ variant: {
71
+ type: PropType<"surface" | "line" | null>;
72
+ default: string;
73
+ };
58
74
  }>> & Readonly<{}>, {
75
+ variant: "line" | "surface" | null;
59
76
  current: "true" | "false" | "page" | "step" | "location" | null;
60
77
  as: "a" | "button" | null;
61
78
  href: string | null;
62
79
  rel: string | null;
63
80
  target: string | null;
81
+ density: "comfortable" | "compact" | null;
64
82
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
65
83
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
66
84
  declare const _default: typeof __VLS_export;