@threadlabs/looma 0.22.13 → 0.23.0

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 (257) hide show
  1. package/components/shared/icons.js +6 -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 +23 -4
  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 +6 -0
  25. package/components/ui-icon-button/ui-icon-button.html +1 -1
  26. package/components/ui-input/ui-input.html +9 -4
  27. package/components/ui-input-group/ui-input-group.html +21 -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 +16 -1
  36. package/components/ui-radio/ui-radio.html +2 -2
  37. package/components/ui-scroll-area/ui-scroll-area.html +12 -0
  38. package/components/ui-search-result-row/ui-search-result-row.html +24 -5
  39. package/components/ui-search-shell/ui-search-shell.html +4 -4
  40. package/components/ui-section/ui-section.html +3 -3
  41. package/components/ui-select/ui-select.html +6 -2
  42. package/components/ui-separator/ui-separator.html +2 -2
  43. package/components/ui-sidebar/ui-sidebar.html +3 -3
  44. package/components/ui-stack/ui-stack.html +6 -3
  45. package/components/ui-status-message/ui-status-message.html +1 -1
  46. package/components/ui-switch/ui-switch.html +3 -3
  47. package/components/ui-table/ui-table.html +3 -3
  48. package/components/ui-tabs/ui-tabs.html +7 -7
  49. package/components/ui-text/ui-text.html +12 -0
  50. package/components/ui-textarea/ui-textarea.html +6 -2
  51. package/components/ui-toast/ui-toast.html +2 -2
  52. package/components/ui-toast-region/ui-toast-region.html +5 -5
  53. package/components/ui-tooltip/ui-tooltip.html +15 -15
  54. package/components/ui-top-bar/ui-top-bar.html +1 -1
  55. package/components/ui-tree-item/ui-tree-item.html +27 -8
  56. package/dist/index.js +1 -1
  57. package/editor/chunks/extensions.js +55 -2
  58. package/editor/extensions/index.d.ts +1 -0
  59. package/editor/extensions/index.js +2 -2
  60. package/editor/extensions/preset.d.ts +2 -0
  61. package/editor/extensions/relative-links.d.ts +8 -0
  62. package/editor/icons.d.ts +6 -0
  63. package/editor/index.js +9 -3
  64. package/package.json +1 -1
  65. package/styles/ui-avatar-group.css +1 -1
  66. package/styles/ui-avatar.css +3 -3
  67. package/styles/ui-badge.css +1 -1
  68. package/styles/ui-button.css +3 -3
  69. package/styles/ui-callout.css +3 -2
  70. package/styles/ui-card.css +19 -2
  71. package/styles/ui-checkbox.css +3 -3
  72. package/styles/ui-combobox.css +8 -8
  73. package/styles/ui-context-menu.css +2 -2
  74. package/styles/ui-description-list.css +1 -1
  75. package/styles/ui-dialog.css +3 -3
  76. package/styles/ui-disclosure.css +42 -2
  77. package/styles/ui-editable.css +2 -2
  78. package/styles/ui-editor-insert-table-grid.css +5 -5
  79. package/styles/ui-editor-mention-menu.css +2 -2
  80. package/styles/ui-editor-slash-menu-item.css +1 -1
  81. package/styles/ui-editor-slash-menu.css +6 -6
  82. package/styles/ui-editor-table-context-menu.css +2 -2
  83. package/styles/ui-editor-table-overlay.css +11 -11
  84. package/styles/ui-editor-table-toolbar.css +5 -5
  85. package/styles/ui-editor-toolbar.css +4 -4
  86. package/styles/ui-floating-action-button.css +2 -2
  87. package/styles/ui-icon-button.css +1 -1
  88. package/styles/ui-input-group.css +19 -6
  89. package/styles/ui-input.css +9 -4
  90. package/styles/ui-list-item.css +23 -4
  91. package/styles/ui-list.css +1 -1
  92. package/styles/ui-listbox.css +3 -3
  93. package/styles/ui-menu-item.css +4 -4
  94. package/styles/ui-menu.css +2 -2
  95. package/styles/ui-meter.css +1 -1
  96. package/styles/ui-nav-item.css +46 -12
  97. package/styles/ui-popover.css +14 -1
  98. package/styles/ui-radio.css +2 -2
  99. package/styles/ui-scroll-area.css +10 -0
  100. package/styles/ui-search-result-row.css +25 -5
  101. package/styles/ui-search-shell.css +4 -4
  102. package/styles/ui-section.css +3 -3
  103. package/styles/ui-select.css +6 -2
  104. package/styles/ui-separator.css +2 -2
  105. package/styles/ui-sidebar.css +3 -3
  106. package/styles/ui-stack.css +3 -0
  107. package/styles/ui-status-message.css +1 -1
  108. package/styles/ui-switch.css +3 -3
  109. package/styles/ui-table.css +3 -3
  110. package/styles/ui-tabs.css +7 -7
  111. package/styles/ui-text.css +8 -0
  112. package/styles/ui-textarea.css +6 -2
  113. package/styles/ui-toast-region.css +5 -5
  114. package/styles/ui-toast.css +2 -2
  115. package/styles/ui-tooltip.css +15 -15
  116. package/styles/ui-top-bar.css +1 -1
  117. package/styles/ui-tree-item.css +32 -8
  118. package/tokens.css +30 -9
  119. package/vanilla/UiCard.d.ts +2 -1
  120. package/vanilla/UiCard.js +1 -1
  121. package/vanilla/UiDisclosure.d.ts +1 -0
  122. package/vanilla/UiDisclosure.js +10 -1
  123. package/vanilla/UiIcon.js +1 -1
  124. package/vanilla/UiInputGroup.d.ts +1 -0
  125. package/vanilla/UiInputGroup.js +1 -1
  126. package/vanilla/UiNavItem.d.ts +2 -0
  127. package/vanilla/UiNavItem.js +1 -1
  128. package/vanilla/UiPopover.d.ts +1 -0
  129. package/vanilla/UiPopover.js +1 -1
  130. package/vanilla/UiScrollArea.d.ts +1 -0
  131. package/vanilla/UiScrollArea.js +1 -1
  132. package/vanilla/UiSearchResultRow.d.ts +1 -0
  133. package/vanilla/UiSearchResultRow.js +1 -1
  134. package/vanilla/UiStack.d.ts +1 -1
  135. package/vanilla/UiStack.js +1 -1
  136. package/vanilla/UiText.d.ts +2 -0
  137. package/vanilla/UiText.js +1 -1
  138. package/vue/UiAvatar.vue +3 -3
  139. package/vue/UiAvatarGroup.vue +1 -1
  140. package/vue/UiBadge.vue +2 -1
  141. package/vue/UiButton.vue +3 -3
  142. package/vue/UiCallout.vue +2 -2
  143. package/vue/UiCard.d.ts +12 -3
  144. package/vue/UiCard.vue +51 -7
  145. package/vue/UiCheckbox.vue +3 -3
  146. package/vue/UiCombobox.vue +11 -8
  147. package/vue/UiContextMenu.vue +2 -2
  148. package/vue/UiDescriptionList.vue +1 -1
  149. package/vue/UiDialog.vue +4 -3
  150. package/vue/UiDisclosure.d.ts +13 -2
  151. package/vue/UiDisclosure.vue +61 -4
  152. package/vue/UiEditable.vue +2 -2
  153. package/vue/UiEditorInsertTableGrid.vue +5 -5
  154. package/vue/UiEditorMentionMenu.vue +2 -2
  155. package/vue/UiEditorSlashMenu.vue +6 -6
  156. package/vue/UiEditorSlashMenuItem.vue +1 -1
  157. package/vue/UiEditorTableContextMenu.vue +2 -2
  158. package/vue/UiEditorTableOverlay.vue +11 -11
  159. package/vue/UiEditorTableToolbar.vue +5 -5
  160. package/vue/UiEditorToolbar.vue +6 -4
  161. package/vue/UiFloatingActionButton.vue +2 -2
  162. package/vue/UiIcon.vue +31 -0
  163. package/vue/UiIconButton.vue +1 -1
  164. package/vue/UiInput.vue +8 -4
  165. package/vue/UiInputGroup.d.ts +9 -0
  166. package/vue/UiInputGroup.vue +39 -8
  167. package/vue/UiList.vue +1 -1
  168. package/vue/UiListItem.vue +20 -4
  169. package/vue/UiListbox.vue +3 -3
  170. package/vue/UiMenu.vue +3 -2
  171. package/vue/UiMenuItem.vue +4 -4
  172. package/vue/UiMeter.vue +1 -1
  173. package/vue/UiNavItem.d.ts +18 -0
  174. package/vue/UiNavItem.vue +96 -12
  175. package/vue/UiPopover.d.ts +9 -0
  176. package/vue/UiPopover.vue +45 -3
  177. package/vue/UiRadio.vue +2 -2
  178. package/vue/UiScrollArea.d.ts +9 -0
  179. package/vue/UiScrollArea.vue +35 -2
  180. package/vue/UiSearchResultRow.d.ts +9 -0
  181. package/vue/UiSearchResultRow.vue +51 -6
  182. package/vue/UiSearchShell.vue +4 -4
  183. package/vue/UiSection.vue +3 -3
  184. package/vue/UiSelect.vue +3 -2
  185. package/vue/UiSeparator.vue +4 -2
  186. package/vue/UiSidebar.vue +5 -3
  187. package/vue/UiStack.d.ts +3 -3
  188. package/vue/UiStack.vue +10 -4
  189. package/vue/UiStatusMessage.vue +1 -1
  190. package/vue/UiSwitch.vue +3 -3
  191. package/vue/UiTable.vue +3 -3
  192. package/vue/UiTabs.vue +8 -7
  193. package/vue/UiText.d.ts +18 -0
  194. package/vue/UiText.vue +70 -0
  195. package/vue/UiTextarea.vue +2 -2
  196. package/vue/UiToast.vue +4 -2
  197. package/vue/UiToastRegion.vue +5 -5
  198. package/vue/UiTooltip.vue +19 -15
  199. package/vue/UiTopBar.vue +1 -1
  200. package/vue/UiTreeItem.vue +31 -8
  201. package/vue/chunks/UiAvatar.js +1 -1
  202. package/vue/chunks/UiAvatarGroup.js +1 -1
  203. package/vue/chunks/UiBadge.js +1 -1
  204. package/vue/chunks/UiButton.js +1 -1
  205. package/vue/chunks/UiCallout.js +1 -1
  206. package/vue/chunks/UiCard.js +39 -3
  207. package/vue/chunks/UiCheckbox.js +1 -1
  208. package/vue/chunks/UiCombobox.js +1 -1
  209. package/vue/chunks/UiContextMenu.js +1 -1
  210. package/vue/chunks/UiDescriptionList.js +1 -1
  211. package/vue/chunks/UiDialog.js +1 -1
  212. package/vue/chunks/UiDisclosure.js +27 -4
  213. package/vue/chunks/UiEditable.js +1 -1
  214. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  215. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  216. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  217. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  218. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  219. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  220. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  221. package/vue/chunks/UiEditorToolbar.js +1 -1
  222. package/vue/chunks/UiFloatingActionButton.js +1 -1
  223. package/vue/chunks/UiIcon.js +92 -1
  224. package/vue/chunks/UiIconButton.js +1 -1
  225. package/vue/chunks/UiInput.js +1 -1
  226. package/vue/chunks/UiInputGroup.js +59 -22
  227. package/vue/chunks/UiList.js +1 -1
  228. package/vue/chunks/UiListItem.js +1 -1
  229. package/vue/chunks/UiListbox.js +1 -1
  230. package/vue/chunks/UiMenu.js +1 -1
  231. package/vue/chunks/UiMenuItem.js +1 -1
  232. package/vue/chunks/UiMeter.js +1 -1
  233. package/vue/chunks/UiNavItem.js +65 -6
  234. package/vue/chunks/UiPopover.js +37 -5
  235. package/vue/chunks/UiRadio.js +1 -1
  236. package/vue/chunks/UiScrollArea.js +66 -23
  237. package/vue/chunks/UiSearchResultRow.js +28 -2
  238. package/vue/chunks/UiSearchShell.js +1 -1
  239. package/vue/chunks/UiSection.js +1 -1
  240. package/vue/chunks/UiSelect.js +1 -1
  241. package/vue/chunks/UiSeparator.js +1 -1
  242. package/vue/chunks/UiSidebar.js +1 -1
  243. package/vue/chunks/UiStack.js +3 -2
  244. package/vue/chunks/UiStatusMessage.js +1 -1
  245. package/vue/chunks/UiSwitch.js +1 -1
  246. package/vue/chunks/UiTable.js +1 -1
  247. package/vue/chunks/UiTabs.js +1 -1
  248. package/vue/chunks/UiText.js +92 -4
  249. package/vue/chunks/UiTextarea.js +1 -1
  250. package/vue/chunks/UiToast.js +1 -1
  251. package/vue/chunks/UiToastRegion.js +1 -1
  252. package/vue/chunks/UiTooltip.js +1 -1
  253. package/vue/chunks/UiTopBar.js +1 -1
  254. package/vue/chunks/UiTreeItem.js +1 -1
  255. package/vue/components.css +1431 -1429
  256. package/vue/editor/LoomaEditor.d.ts +11 -0
  257. package/vue/editor/index.js +261 -145
package/vue/UiText.d.ts CHANGED
@@ -32,6 +32,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
32
32
  type: PropType<"p" | "span" | "div" | "small" | "strong" | "label" | "h2" | "h3" | "h4" | "h5" | "h6" | null>;
33
33
  default: string;
34
34
  };
35
+ font: {
36
+ type: PropType<"inherit" | "sans" | null>;
37
+ default: string;
38
+ };
35
39
  size: {
36
40
  type: PropType<"inherit" | "xs" | "sm" | "md" | "lg" | null>;
37
41
  default: string;
@@ -52,6 +56,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
52
56
  type: PropType<"inherit" | "normal" | "medium" | "semibold" | null>;
53
57
  default: string;
54
58
  };
59
+ wrap: {
60
+ type: PropType<"normal" | "anywhere" | null>;
61
+ default: string;
62
+ };
55
63
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
64
  align: {
57
65
  type: PropType<"start" | "center" | null>;
@@ -61,6 +69,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
61
69
  type: PropType<"p" | "span" | "div" | "small" | "strong" | "label" | "h2" | "h3" | "h4" | "h5" | "h6" | null>;
62
70
  default: string;
63
71
  };
72
+ font: {
73
+ type: PropType<"inherit" | "sans" | null>;
74
+ default: string;
75
+ };
64
76
  size: {
65
77
  type: PropType<"inherit" | "xs" | "sm" | "md" | "lg" | null>;
66
78
  default: string;
@@ -81,12 +93,18 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
81
93
  type: PropType<"inherit" | "normal" | "medium" | "semibold" | null>;
82
94
  default: string;
83
95
  };
96
+ wrap: {
97
+ type: PropType<"normal" | "anywhere" | null>;
98
+ default: string;
99
+ };
84
100
  }>> & Readonly<{}>, {
101
+ font: "inherit" | "sans" | null;
85
102
  size: "inherit" | "xs" | "sm" | "md" | "lg" | null;
86
103
  tone: "secondary" | "default" | "info" | "accent" | "success" | "warning" | "danger" | "muted" | null;
87
104
  variant: "code" | "body" | "eyebrow" | null;
88
105
  align: "center" | "start" | null;
89
106
  as: "div" | "h2" | "h3" | "h4" | "h5" | "h6" | "label" | "p" | "small" | "span" | "strong" | null;
107
+ wrap: "normal" | "anywhere" | null;
90
108
  truncate: boolean | null;
91
109
  weight: "inherit" | "normal" | "medium" | "semibold" | null;
92
110
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/vue/UiText.vue CHANGED
@@ -26,6 +26,15 @@ const propValidityContract = {
26
26
  values: ['p', 'span', 'div', 'small', 'strong', 'label', 'h2', 'h3', 'h4', 'h5', 'h6'],
27
27
  default: 'p',
28
28
  },
29
+ font: {
30
+ type: { kind: 'terminal', name: 'keyword' },
31
+ required: false,
32
+ target: { attribute: 'font' },
33
+ description:
34
+ 'Use sans for UI text rendered outside its original font context; inherit preserves the surrounding typeface.',
35
+ values: ['inherit', 'sans'],
36
+ default: 'inherit',
37
+ },
29
38
  size: {
30
39
  type: { kind: 'terminal', name: 'keyword' },
31
40
  required: false,
@@ -69,6 +78,15 @@ const propValidityContract = {
69
78
  values: ['inherit', 'normal', 'medium', 'semibold'],
70
79
  default: 'inherit',
71
80
  },
81
+ wrap: {
82
+ type: { kind: 'terminal', name: 'keyword' },
83
+ required: false,
84
+ target: { attribute: 'wrap' },
85
+ description:
86
+ 'Use anywhere for unbroken values such as long destinations; ordinary prose keeps its normal wrapping.',
87
+ values: ['normal', 'anywhere'],
88
+ default: 'normal',
89
+ },
72
90
  },
73
91
  } as const
74
92
  const props = defineProps({
@@ -79,6 +97,7 @@ const props = defineProps({
79
97
  >,
80
98
  default: 'p',
81
99
  },
100
+ font: { type: null as unknown as PropType<'inherit' | 'sans' | null>, default: 'inherit' },
82
101
  size: {
83
102
  type: null as unknown as PropType<'inherit' | 'xs' | 'sm' | 'md' | 'lg' | null>,
84
103
  default: 'inherit',
@@ -106,15 +125,18 @@ const props = defineProps({
106
125
  type: null as unknown as PropType<'inherit' | 'normal' | 'medium' | 'semibold' | null>,
107
126
  default: 'inherit',
108
127
  },
128
+ wrap: { type: null as unknown as PropType<'normal' | 'anywhere' | null>, default: 'normal' },
109
129
  })
110
130
  const acceptedProps: Record<string, unknown> = {
111
131
  align: 'start',
112
132
  as: 'p',
133
+ font: 'inherit',
113
134
  size: 'inherit',
114
135
  tone: 'default',
115
136
  truncate: false,
116
137
  variant: 'body',
117
138
  weight: 'inherit',
139
+ wrap: 'normal',
118
140
  }
119
141
  const checkedProps = computed(() => ({
120
142
  align: checkedProp<'start' | 'center'>(
@@ -138,6 +160,13 @@ const checkedProps = computed(() => ({
138
160
  | 'h4'
139
161
  | 'h5'
140
162
  | 'h6',
163
+ font: checkedProp<'inherit' | 'sans'>(
164
+ props['font'],
165
+ { kind: 'terminal', name: 'keyword' },
166
+ false,
167
+ 'font',
168
+ acceptedProps,
169
+ ) as 'inherit' | 'sans',
141
170
  size: checkedProp<'inherit' | 'xs' | 'sm' | 'md' | 'lg'>(
142
171
  props['size'],
143
172
  { kind: 'terminal', name: 'keyword' },
@@ -177,6 +206,13 @@ const checkedProps = computed(() => ({
177
206
  'weight',
178
207
  acceptedProps,
179
208
  ) as 'inherit' | 'normal' | 'medium' | 'semibold',
209
+ wrap: checkedProp<'normal' | 'anywhere'>(
210
+ props['wrap'],
211
+ { kind: 'terminal', name: 'keyword' },
212
+ false,
213
+ 'wrap',
214
+ acceptedProps,
215
+ ) as 'normal' | 'anywhere',
180
216
  }))
181
217
  void checkedProps.value
182
218
  watchSyncEffect(() => {
@@ -267,6 +303,10 @@ const hostState = computed(() =>
267
303
  checkedProps.value.truncate && 'truncate',
268
304
  checkedProps.value.align && 'align',
269
305
  checkedProps.value.align != null && `align=${encodeURIComponent(checkedProps.value.align)}`,
306
+ checkedProps.value.font && 'font',
307
+ checkedProps.value.font != null && `font=${encodeURIComponent(checkedProps.value.font)}`,
308
+ checkedProps.value.wrap && 'wrap',
309
+ checkedProps.value.wrap != null && `wrap=${encodeURIComponent(checkedProps.value.wrap)}`,
270
310
  ].filter(Boolean).join(' ')
271
311
  )
272
312
  </script>
@@ -279,11 +319,13 @@ const hostState = computed(() =>
279
319
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
280
320
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
281
321
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
322
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
282
323
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
283
324
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
284
325
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
285
326
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
286
327
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
328
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
287
329
  :data-ui-text-state="hostState || undefined"
288
330
  ref="@html-next/root"
289
331
  ><slot /></span>
@@ -294,11 +336,13 @@ const hostState = computed(() =>
294
336
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
295
337
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
296
338
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
339
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
297
340
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
298
341
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
299
342
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
300
343
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
301
344
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
345
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
302
346
  :data-ui-text-state="hostState || undefined"
303
347
  ref="@html-next/root"
304
348
  >
@@ -311,11 +355,13 @@ const hostState = computed(() =>
311
355
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
312
356
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
313
357
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
358
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
314
359
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
315
360
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
316
361
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
317
362
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
318
363
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
364
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
319
365
  :data-ui-text-state="hostState || undefined"
320
366
  ref="@html-next/root"
321
367
  ><slot /></small>
@@ -326,11 +372,13 @@ const hostState = computed(() =>
326
372
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
327
373
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
328
374
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
375
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
329
376
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
330
377
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
331
378
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
332
379
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
333
380
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
381
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
334
382
  :data-ui-text-state="hostState || undefined"
335
383
  ref="@html-next/root"
336
384
  ><slot /></strong>
@@ -341,11 +389,13 @@ const hostState = computed(() =>
341
389
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
342
390
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
343
391
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
392
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
344
393
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
345
394
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
346
395
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
347
396
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
348
397
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
398
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
349
399
  :data-ui-text-state="hostState || undefined"
350
400
  ref="@html-next/root"
351
401
  ><slot /></label>
@@ -356,11 +406,13 @@ const hostState = computed(() =>
356
406
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
357
407
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
358
408
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
409
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
359
410
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
360
411
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
361
412
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
362
413
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
363
414
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
415
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
364
416
  :data-ui-text-state="hostState || undefined"
365
417
  ref="@html-next/root"
366
418
  >
@@ -373,11 +425,13 @@ const hostState = computed(() =>
373
425
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
374
426
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
375
427
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
428
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
376
429
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
377
430
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
378
431
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
379
432
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
380
433
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
434
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
381
435
  :data-ui-text-state="hostState || undefined"
382
436
  ref="@html-next/root"
383
437
  >
@@ -390,11 +444,13 @@ const hostState = computed(() =>
390
444
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
391
445
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
392
446
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
447
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
393
448
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
394
449
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
395
450
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
396
451
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
397
452
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
453
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
398
454
  :data-ui-text-state="hostState || undefined"
399
455
  ref="@html-next/root"
400
456
  >
@@ -407,11 +463,13 @@ const hostState = computed(() =>
407
463
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
408
464
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
409
465
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
466
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
410
467
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
411
468
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
412
469
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
413
470
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
414
471
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
472
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
415
473
  :data-ui-text-state="hostState || undefined"
416
474
  ref="@html-next/root"
417
475
  >
@@ -424,11 +482,13 @@ const hostState = computed(() =>
424
482
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
425
483
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
426
484
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
485
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
427
486
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
428
487
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
429
488
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
430
489
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
431
490
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
491
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
432
492
  :data-ui-text-state="hostState || undefined"
433
493
  ref="@html-next/root"
434
494
  >
@@ -441,11 +501,13 @@ const hostState = computed(() =>
441
501
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
442
502
  :data-align="reflectedProp('align', 'align', checkedProps.align, undefined, false)"
443
503
  :data-as="reflectedProp('as', 'as', checkedProps.as, undefined, false)"
504
+ :data-font="reflectedProp('font', 'font', checkedProps.font, undefined, false)"
444
505
  :data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
445
506
  :data-tone="reflectedProp('tone', 'tone', checkedProps.tone, undefined, false)"
446
507
  :data-truncate="reflectedProp('truncate', 'truncate', checkedProps.truncate, undefined, false)"
447
508
  :data-variant="reflectedProp('variant', 'variant', checkedProps.variant, undefined, false)"
448
509
  :data-weight="reflectedProp('weight', 'weight', checkedProps.weight, undefined, false)"
510
+ :data-wrap="reflectedProp('wrap', 'wrap', checkedProps.wrap, undefined, false)"
449
511
  :data-ui-text-state="hostState || undefined"
450
512
  ref="@html-next/root"
451
513
  >
@@ -551,6 +613,14 @@ const hostState = computed(() =>
551
613
  text-align: center;
552
614
  }
553
615
 
616
+ [data-component~="ui-text"][data-ui-text-state~="font=sans"] {
617
+ font-family: var(--ui-font-family-sans, sans-serif);
618
+ }
619
+
620
+ [data-component~="ui-text"][data-ui-text-state~="wrap=anywhere"] {
621
+ overflow-wrap: anywhere;
622
+ }
623
+
554
624
  /* A component that sets its display still honours the hidden attribute on its root. */
555
625
  [data-component~="ui-text"][hidden] {
556
626
  display: none;
@@ -314,7 +314,7 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
314
314
  padding: var(--ui-space-2) var(--ui-space-3);
315
315
  appearance: none;
316
316
  resize: vertical;
317
- border: 1px solid var(--ui-control-border, var(--ui-border-strong));
317
+ border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
318
318
  border-radius: var(--ui-textarea-radius, var(--ui-field-radius, var(--ui-radius-md)));
319
319
  background: var(--ui-control-surface, var(--ui-surface-elevated));
320
320
  color: var(--ui-text-primary);
@@ -362,7 +362,7 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
362
362
  box-shadow: var(
363
363
  --ui-textarea-invalid-focus-shadow,
364
364
  var(--ui-control-inset),
365
- 0 0 0 3px color-mix(
365
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
366
366
  in srgb,
367
367
  var(--ui-textarea-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
368
368
  transparent
package/vue/UiToast.vue CHANGED
@@ -241,8 +241,10 @@ function attribute(value: unknown): any {
241
241
  inline-size: 100%;
242
242
  margin: 0;
243
243
  padding: var(--ui-space-3) var(--ui-space-4);
244
- border: 1px solid var(--ui-toast-border, var(--ui-overlay-border, var(--ui-border-strong)));
245
- border-inline-start: 3px solid var(--ui-toast-accent, var(--_ui-toast-accent));
244
+ border: var(--ui-border-width) solid
245
+ var(--ui-toast-border, var(--ui-overlay-border, var(--ui-border-strong)));
246
+ border-inline-start: var(--ui-accent-line-width) solid
247
+ var(--ui-toast-accent, var(--_ui-toast-accent));
246
248
  border-radius: var(--ui-toast-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
247
249
  background: var(--ui-toast-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
248
250
  color: var(--ui-text-primary);
@@ -401,7 +401,7 @@ function uniqueKeys<T>(
401
401
  grid-template-columns: 1fr auto;
402
402
  gap: var(--ui-space-2);
403
403
  align-items: start;
404
- border: 1px solid
404
+ border: var(--ui-border-width) solid
405
405
  var(--_ui-toast-region-border, var(--ui-overlay-border, var(--ui-border-strong)));
406
406
  border-radius: var(--_ui-toast-region-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
407
407
  padding: var(--ui-space-3) var(--ui-space-4);
@@ -419,16 +419,16 @@ function uniqueKeys<T>(
419
419
  }
420
420
 
421
421
  .toast[data-tone="info"] {
422
- border-inline-start: 3px solid var(--ui-info-solid);
422
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-info-solid);
423
423
  }
424
424
  .toast[data-tone="success"] {
425
- border-inline-start: 3px solid var(--ui-success-solid);
425
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-success-solid);
426
426
  }
427
427
  .toast[data-tone="warning"] {
428
- border-inline-start: 3px solid var(--ui-warning-solid);
428
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-warning-solid);
429
429
  }
430
430
  .toast[data-tone="danger"] {
431
- border-inline-start: 3px solid var(--ui-danger-solid);
431
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger-solid);
432
432
  }
433
433
 
434
434
  /* Leaving slides on down and fades; the controller removes the toast when this ends. */
package/vue/UiTooltip.vue CHANGED
@@ -424,7 +424,7 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
424
424
  position: relative;
425
425
  box-sizing: border-box;
426
426
  max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
427
- border: 1px solid var(--_tooltip-line);
427
+ border: var(--ui-border-width) solid var(--_tooltip-line);
428
428
  border-radius: var(--_ui-tooltip-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
429
429
  background: var(--_ui-tooltip-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
430
430
  color: var(--_ui-tooltip-text, var(--ui-text-primary));
@@ -475,27 +475,29 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
475
475
  position: absolute;
476
476
  z-index: 1;
477
477
  inset-inline-start: var(--ui-space-3);
478
- inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
478
+ inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
479
479
  inline-size: var(--_ui-tooltip-arrow-size, 0.625rem);
480
480
  block-size: var(--_ui-tooltip-arrow-size, 0.625rem);
481
481
  box-sizing: border-box;
482
482
  background: inherit;
483
483
  border: 0 solid var(--_tooltip-line);
484
- border-inline-end-width: 1px;
485
- border-block-end-width: 1px;
486
- border-end-end-radius: 1px;
484
+ border-inline-end-width: var(--ui-border-width);
485
+ border-block-end-width: var(--ui-border-width);
486
+ border-end-end-radius: var(--ui-border-width);
487
487
  transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
488
488
  }
489
489
 
490
490
  [data-component~="ui-tooltip"][data-ui-actual-placement="bottom"] .surface::after {
491
- inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
491
+ inset-block-start: calc(
492
+ var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2
493
+ );
492
494
  inset-block-end: auto;
493
495
  border-inline-end-width: 0;
494
496
  border-block-end-width: 0;
495
- border-inline-start-width: 1px;
496
- border-block-start-width: 1px;
497
+ border-inline-start-width: var(--ui-border-width);
498
+ border-block-start-width: var(--ui-border-width);
497
499
  border-end-end-radius: 0;
498
- border-start-start-radius: 1px;
500
+ border-start-start-radius: var(--ui-border-width);
499
501
  }
500
502
 
501
503
  [data-component~="ui-tooltip"][data-ui-actual-align="center"] .surface::after {
@@ -516,16 +518,18 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
516
518
 
517
519
  [data-component~="ui-tooltip"][data-ui-actual-placement="left"] .surface::after {
518
520
  inset-inline-start: auto;
519
- inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
520
- border-inline-end-width: 1px;
521
- border-block-start-width: 1px;
521
+ inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
522
+ border-inline-end-width: var(--ui-border-width);
523
+ border-block-start-width: var(--ui-border-width);
522
524
  }
523
525
 
524
526
  [data-component~="ui-tooltip"][data-ui-actual-placement="right"] .surface::after {
525
- inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - 0.5px);
527
+ inset-inline-start: calc(
528
+ var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2
529
+ );
526
530
  inset-inline-end: auto;
527
- border-inline-start-width: 1px;
528
- border-block-end-width: 1px;
531
+ border-inline-start-width: var(--ui-border-width);
532
+ border-block-end-width: var(--ui-border-width);
529
533
  }
530
534
 
531
535
  [data-component~="ui-tooltip"][data-ui-actual-placement="left"][data-ui-actual-align="start"]
package/vue/UiTopBar.vue CHANGED
@@ -95,7 +95,7 @@ if (
95
95
  env(safe-area-inset-right)
96
96
  );
97
97
  background: var(--ui-top-bar-surface, var(--ui-surface-elevated));
98
- border-block-end: 1px solid var(--ui-top-bar-border, var(--ui-border-divider));
98
+ border-block-end: var(--ui-border-width) solid var(--ui-top-bar-border, var(--ui-border-divider));
99
99
  }
100
100
 
101
101
  .leading,
@@ -568,7 +568,7 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
568
568
  min-block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
569
569
  min-inline-size: 0;
570
570
  font-size: var(--_ui-tree-item-font-size, var(--ui-font-size-sm));
571
- border-radius: var(--ui-radius-md);
571
+ border-radius: var(--ui-selection-radius);
572
572
  color: var(--ui-text-secondary);
573
573
  transition:
574
574
  background-color var(--ui-motion-fast) var(--ui-motion-ease),
@@ -579,12 +579,22 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
579
579
  }
580
580
 
581
581
  .row:hover,
582
- [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] .row,
583
582
  .row:focus-within {
584
583
  color: var(--ui-text-primary);
585
584
  background: var(--ui-surface-muted);
586
585
  }
587
586
 
587
+ /* Selection is the same surface recipe as destination and choice rows. */
588
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] > .row {
589
+ color: var(--ui-selection-text);
590
+ background: var(--ui-selection-surface);
591
+ }
592
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
593
+ > .row
594
+ > .leading {
595
+ color: var(--ui-selection-text);
596
+ }
597
+
588
598
  [data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row {
589
599
  color: var(--ui-disabled-text);
590
600
  background: var(--ui-disabled-surface);
@@ -599,13 +609,14 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
599
609
  }
600
610
 
601
611
  [data-component~="ui-tree-item"]:focus-visible .row {
602
- box-shadow: 0 0 0 2px var(--ui-focus-ring);
612
+ box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
603
613
  }
604
614
 
605
615
  /* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
606
616
  [data-component~="ui-tree-item"][data-drop-position="inside"] > .row {
607
617
  background: var(--ui-accent-subtle);
608
- box-shadow: inset 0 0 0 1px var(--_ui-tree-drop-color, var(--ui-accent-solid));
618
+ box-shadow: inset 0 0 0 var(--ui-accent-line-width)
619
+ var(--_ui-tree-drop-color, var(--ui-accent-solid));
609
620
  }
610
621
 
611
622
  .disclosure,
@@ -935,7 +946,7 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
935
946
  z-index: 3;
936
947
  inset-inline: 1px;
937
948
  display: none;
938
- block-size: 2px;
949
+ block-size: var(--ui-accent-line-width);
939
950
  border-radius: var(--ui-radius-round);
940
951
  background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
941
952
  pointer-events: none;
@@ -948,7 +959,7 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
948
959
  inset-block-start: 50%;
949
960
  inline-size: 7px;
950
961
  block-size: 7px;
951
- border: 2px solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
962
+ border: var(--ui-accent-line-width) solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
952
963
  border-radius: var(--ui-radius-round);
953
964
  background: var(--ui-surface-elevated);
954
965
  transform: translateY(-50%);
@@ -963,12 +974,12 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
963
974
 
964
975
  [data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator {
965
976
  display: block;
966
- inset-block-start: -1px;
977
+ inset-block-start: calc(-0.5 * var(--ui-accent-line-width));
967
978
  }
968
979
 
969
980
  [data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator {
970
981
  display: block;
971
- inset-block-end: -1px;
982
+ inset-block-end: calc(-0.5 * var(--ui-accent-line-width));
972
983
  }
973
984
 
974
985
  .children[hidden] {
@@ -1044,6 +1055,18 @@ html[data-ui-input-modality="touch"]
1044
1055
  }
1045
1056
  }
1046
1057
 
1058
+ @media (forced-colors: active) {
1059
+ [data-component~="ui-tree-item"]:focus-visible > .row {
1060
+ outline: var(--ui-focus-width) solid Highlight;
1061
+ outline-offset: calc(-1 * var(--ui-focus-width));
1062
+ }
1063
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
1064
+ > .row {
1065
+ outline: var(--ui-border-width) solid Highlight;
1066
+ outline-offset: calc(-1 * var(--ui-border-width));
1067
+ }
1068
+ }
1069
+
1047
1070
  /* A component that sets its display still honours the hidden attribute on its root. */
1048
1071
  [data-component~="ui-tree-item"][hidden] {
1049
1072
  display: none;
@@ -335,6 +335,6 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
335
335
  }]]);
336
336
  };
337
337
  }
338
- }), [["__scopeId", "data-v-5cd53487"]]);
338
+ }), [["__scopeId", "data-v-55aefae2"]]);
339
339
  //#endregion
340
340
  export { UiAvatar_default as t };
@@ -227,6 +227,6 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
227
227
  }]]);
228
228
  };
229
229
  }
230
- }), [["__scopeId", "data-v-d3d2981c"]]);
230
+ }), [["__scopeId", "data-v-29579f97"]]);
231
231
  //#endregion
232
232
  export { UiAvatarGroup_default as t };
@@ -163,6 +163,6 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
163
163
  }]]);
164
164
  };
165
165
  }
166
- }), [["__scopeId", "data-v-eba32334"]]);
166
+ }), [["__scopeId", "data-v-dac78ff4"]]);
167
167
  //#endregion
168
168
  export { UiBadge_default as t };
@@ -533,6 +533,6 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
533
533
  }]]);
534
534
  };
535
535
  }
536
- }), [["__scopeId", "data-v-79e949e5"]]);
536
+ }), [["__scopeId", "data-v-a77b2cb4"]]);
537
537
  //#endregion
538
538
  export { UiButton_default as t };
@@ -160,6 +160,6 @@ var UiCallout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
160
160
  }]]);
161
161
  };
162
162
  }
163
- }), [["__scopeId", "data-v-a88cefbd"]]);
163
+ }), [["__scopeId", "data-v-46b53e77"]]);
164
164
  //#endregion
165
165
  export { UiCallout_default as t };