@threadlabs/looma 0.32.0 → 0.33.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 (337) hide show
  1. package/components/shared/icons.js +1 -0
  2. package/components/shared/overlay.js +1 -1
  3. package/components/ui-action-bar/ui-action-bar.html +11 -11
  4. package/components/ui-affordance-scope/ui-affordance-scope.html +2 -2
  5. package/components/ui-avatar/ui-avatar.html +8 -8
  6. package/components/ui-avatar-group/ui-avatar-group.html +14 -14
  7. package/components/ui-avatar-group/ui-avatar-group.js +3 -2
  8. package/components/ui-badge/ui-badge.html +43 -43
  9. package/components/ui-breadcrumb-item/ui-breadcrumb-item.html +13 -13
  10. package/components/ui-breadcrumbs/ui-breadcrumbs.html +8 -8
  11. package/components/ui-button/ui-button.html +32 -29
  12. package/components/ui-callout/ui-callout.html +9 -9
  13. package/components/ui-card/ui-card.html +11 -11
  14. package/components/ui-checkbox/ui-checkbox.html +52 -33
  15. package/components/ui-cluster/ui-cluster.html +21 -21
  16. package/components/ui-color-picker/ui-color-picker.html +135 -0
  17. package/components/ui-color-picker/ui-color-picker.js +76 -0
  18. package/components/ui-combobox/ui-combobox.html +43 -43
  19. package/components/ui-container/ui-container.html +7 -7
  20. package/components/ui-context-menu/ui-context-menu.html +9 -9
  21. package/components/ui-cover/ui-cover.html +8 -8
  22. package/components/ui-description-item/ui-description-item.html +7 -7
  23. package/components/ui-description-list/ui-description-list.html +4 -4
  24. package/components/ui-dialog/ui-dialog.html +26 -26
  25. package/components/ui-disclosure/ui-disclosure.html +23 -23
  26. package/components/ui-editable/ui-editable.html +16 -16
  27. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +9 -9
  28. package/components/ui-editor-link-form/ui-editor-link-form.html +1 -2
  29. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +23 -23
  30. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +10 -10
  31. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +29 -29
  32. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +5 -5
  33. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +11 -11
  34. package/components/ui-editor-surface/ui-editor-surface.html +2 -2
  35. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +25 -25
  36. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +13 -13
  37. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +31 -31
  38. package/components/ui-editor-toolbar/ui-editor-toolbar.html +13 -13
  39. package/components/ui-floating-action-button/ui-floating-action-button.html +8 -8
  40. package/components/ui-form-field/ui-form-field.html +15 -15
  41. package/components/ui-form-field/ui-form-field.js +12 -4
  42. package/components/ui-grid/ui-grid.html +4 -4
  43. package/components/ui-icon/ui-icon.html +3 -2
  44. package/components/ui-icon-button/ui-icon-button.html +15 -14
  45. package/components/ui-image/ui-image.html +14 -14
  46. package/components/ui-input/ui-input.html +8 -8
  47. package/components/ui-input-group/ui-input-group.html +18 -18
  48. package/components/ui-list/ui-list.html +11 -11
  49. package/components/ui-list-item/ui-list-item.html +18 -18
  50. package/components/ui-listbox/ui-listbox.html +10 -10
  51. package/components/ui-menu/ui-menu.html +18 -17
  52. package/components/ui-menu-group/ui-menu-group.html +4 -4
  53. package/components/ui-menu-item/ui-menu-item.html +20 -20
  54. package/components/ui-meter/ui-meter.html +5 -5
  55. package/components/ui-nav-item/ui-nav-item.html +20 -20
  56. package/components/ui-page-header/ui-page-header.html +18 -17
  57. package/components/ui-popover/ui-popover.html +8 -8
  58. package/components/ui-radio/ui-radio.html +25 -17
  59. package/components/ui-radio-group/ui-radio-group.html +10 -10
  60. package/components/ui-reel/ui-reel.html +5 -5
  61. package/components/ui-scroll-area/ui-scroll-area.html +10 -10
  62. package/components/ui-search-result-row/ui-search-result-row.html +19 -19
  63. package/components/ui-search-shell/ui-search-shell.html +22 -22
  64. package/components/ui-section/ui-section.html +24 -23
  65. package/components/ui-select/ui-select.html +10 -10
  66. package/components/ui-separator/ui-separator.html +2 -2
  67. package/components/ui-sidebar/ui-sidebar.html +8 -8
  68. package/components/ui-spinner/ui-spinner.html +6 -6
  69. package/components/ui-stack/ui-stack.html +12 -12
  70. package/components/ui-status-message/ui-status-message.html +17 -17
  71. package/components/ui-swatch/ui-swatch.html +2 -2
  72. package/components/ui-switch/ui-switch.html +36 -26
  73. package/components/ui-switcher/ui-switcher.html +7 -7
  74. package/components/ui-table/ui-table.html +6 -6
  75. package/components/ui-tabs/ui-tabs.html +16 -15
  76. package/components/ui-text/ui-text.html +3 -2
  77. package/components/ui-textarea/ui-textarea.html +10 -10
  78. package/components/ui-toast/ui-toast.html +9 -9
  79. package/components/ui-toast-region/ui-toast-region.html +12 -12
  80. package/components/ui-tooltip/ui-tooltip.html +15 -15
  81. package/components/ui-top-bar/ui-top-bar.html +11 -11
  82. package/components/ui-tree/ui-tree.html +5 -5
  83. package/components/ui-tree-item/ui-tree-item.html +36 -36
  84. package/dist/index.js +46 -45
  85. package/editor/chunks/extensions.js +17 -1
  86. package/editor/extensions/slash-command.d.ts +1 -1
  87. package/editor/file-uploads.d.ts +31 -0
  88. package/editor/icons.d.ts +1 -0
  89. package/editor/index.js +2 -1
  90. package/package.json +3 -2
  91. package/styles/ui-action-bar.css +11 -11
  92. package/styles/ui-affordance-scope.css +2 -2
  93. package/styles/ui-avatar-group.css +14 -14
  94. package/styles/ui-avatar.css +8 -8
  95. package/styles/ui-badge.css +41 -41
  96. package/styles/ui-breadcrumb-item.css +13 -13
  97. package/styles/ui-breadcrumbs.css +8 -8
  98. package/styles/ui-button.css +30 -28
  99. package/styles/ui-callout.css +9 -9
  100. package/styles/ui-card.css +11 -11
  101. package/styles/ui-checkbox.css +52 -33
  102. package/styles/ui-cluster.css +21 -21
  103. package/styles/ui-color-picker.css +120 -0
  104. package/styles/ui-combobox.css +86 -86
  105. package/styles/ui-container.css +7 -7
  106. package/styles/ui-context-menu.css +9 -9
  107. package/styles/ui-cover.css +8 -8
  108. package/styles/ui-description-item.css +7 -7
  109. package/styles/ui-description-list.css +4 -4
  110. package/styles/ui-dialog.css +52 -52
  111. package/styles/ui-disclosure.css +23 -23
  112. package/styles/ui-editable.css +16 -16
  113. package/styles/ui-editor-insert-table-grid.css +9 -9
  114. package/styles/ui-editor-mention-menu-item.css +10 -10
  115. package/styles/ui-editor-mention-menu.css +23 -23
  116. package/styles/ui-editor-slash-menu-group.css +5 -5
  117. package/styles/ui-editor-slash-menu-item.css +11 -11
  118. package/styles/ui-editor-slash-menu.css +29 -29
  119. package/styles/ui-editor-surface.css +2 -2
  120. package/styles/ui-editor-table-context-menu.css +25 -25
  121. package/styles/ui-editor-table-overlay.css +13 -13
  122. package/styles/ui-editor-table-toolbar.css +31 -31
  123. package/styles/ui-editor-toolbar.css +13 -13
  124. package/styles/ui-floating-action-button.css +8 -8
  125. package/styles/ui-form-field.css +13 -13
  126. package/styles/ui-grid.css +4 -4
  127. package/styles/ui-icon-button.css +13 -13
  128. package/styles/ui-icon.css +2 -2
  129. package/styles/ui-image.css +14 -14
  130. package/styles/ui-input-group.css +18 -18
  131. package/styles/ui-input.css +8 -8
  132. package/styles/ui-list-item.css +18 -18
  133. package/styles/ui-list.css +11 -11
  134. package/styles/ui-listbox.css +20 -20
  135. package/styles/ui-menu-group.css +4 -4
  136. package/styles/ui-menu-item.css +20 -20
  137. package/styles/ui-menu.css +16 -16
  138. package/styles/ui-meter.css +5 -5
  139. package/styles/ui-nav-item.css +20 -20
  140. package/styles/ui-page-header.css +18 -17
  141. package/styles/ui-popover.css +8 -8
  142. package/styles/ui-radio-group.css +10 -10
  143. package/styles/ui-radio.css +26 -18
  144. package/styles/ui-reel.css +5 -5
  145. package/styles/ui-scroll-area.css +10 -10
  146. package/styles/ui-search-result-row.css +19 -19
  147. package/styles/ui-search-shell.css +22 -22
  148. package/styles/ui-section.css +24 -23
  149. package/styles/ui-select.css +10 -10
  150. package/styles/ui-separator.css +2 -2
  151. package/styles/ui-sidebar.css +8 -8
  152. package/styles/ui-spinner.css +6 -6
  153. package/styles/ui-stack.css +12 -12
  154. package/styles/ui-status-message.css +17 -17
  155. package/styles/ui-swatch.css +2 -2
  156. package/styles/ui-switch.css +36 -28
  157. package/styles/ui-switcher.css +7 -7
  158. package/styles/ui-table.css +6 -6
  159. package/styles/ui-tabs.css +11 -11
  160. package/styles/ui-text.css +3 -2
  161. package/styles/ui-textarea.css +10 -10
  162. package/styles/ui-toast-region.css +24 -24
  163. package/styles/ui-toast.css +18 -18
  164. package/styles/ui-tooltip.css +15 -15
  165. package/styles/ui-top-bar.css +11 -11
  166. package/styles/ui-tree-item.css +71 -71
  167. package/styles/ui-tree.css +5 -5
  168. package/theme-system.css +80 -0
  169. package/tokens.css +14 -3
  170. package/vanilla/UiColorPicker.d.ts +30 -0
  171. package/vanilla/UiColorPicker.js +77 -0
  172. package/vanilla/UiIcon.js +1 -1
  173. package/vanilla/index.js +1 -0
  174. package/vue/UiActionBar.vue +11 -11
  175. package/vue/UiAffordanceScope.vue +2 -2
  176. package/vue/UiAvatar.vue +8 -8
  177. package/vue/UiAvatarGroup.vue +14 -14
  178. package/vue/UiBadge.vue +43 -42
  179. package/vue/UiBreadcrumbItem.vue +13 -13
  180. package/vue/UiBreadcrumbs.vue +8 -8
  181. package/vue/UiButton.vue +34 -29
  182. package/vue/UiCallout.vue +9 -9
  183. package/vue/UiCard.vue +11 -11
  184. package/vue/UiCheckbox.vue +57 -34
  185. package/vue/UiCluster.vue +21 -21
  186. package/vue/UiColorPicker.d.ts +65 -0
  187. package/vue/UiColorPicker.js +2 -0
  188. package/vue/UiColorPicker.vue +422 -0
  189. package/vue/UiCombobox.vue +86 -86
  190. package/vue/UiContainer.vue +7 -7
  191. package/vue/UiContextMenu.vue +9 -9
  192. package/vue/UiCover.vue +8 -8
  193. package/vue/UiDescriptionItem.vue +7 -7
  194. package/vue/UiDescriptionList.vue +4 -4
  195. package/vue/UiDialog.vue +52 -52
  196. package/vue/UiDisclosure.vue +23 -23
  197. package/vue/UiEditable.vue +16 -16
  198. package/vue/UiEditorInsertTableGrid.vue +9 -9
  199. package/vue/UiEditorMentionMenu.vue +23 -23
  200. package/vue/UiEditorMentionMenuItem.vue +10 -10
  201. package/vue/UiEditorSlashMenu.vue +29 -29
  202. package/vue/UiEditorSlashMenuGroup.vue +5 -5
  203. package/vue/UiEditorSlashMenuItem.vue +11 -11
  204. package/vue/UiEditorSurface.vue +2 -2
  205. package/vue/UiEditorTableContextMenu.vue +25 -25
  206. package/vue/UiEditorTableOverlay.vue +13 -13
  207. package/vue/UiEditorTableToolbar.vue +31 -31
  208. package/vue/UiEditorToolbar.vue +13 -13
  209. package/vue/UiFloatingActionButton.vue +8 -8
  210. package/vue/UiFormField.vue +14 -14
  211. package/vue/UiGrid.vue +4 -4
  212. package/vue/UiIcon.vue +6 -2
  213. package/vue/UiIconButton.vue +14 -14
  214. package/vue/UiImage.vue +14 -14
  215. package/vue/UiInput.vue +9 -8
  216. package/vue/UiInputGroup.vue +18 -18
  217. package/vue/UiList.vue +11 -11
  218. package/vue/UiListItem.vue +18 -18
  219. package/vue/UiListbox.vue +20 -20
  220. package/vue/UiMenu.vue +16 -16
  221. package/vue/UiMenuGroup.vue +4 -4
  222. package/vue/UiMenuItem.vue +20 -20
  223. package/vue/UiMeter.vue +5 -5
  224. package/vue/UiNavItem.vue +20 -20
  225. package/vue/UiPageHeader.vue +18 -17
  226. package/vue/UiPopover.vue +8 -8
  227. package/vue/UiRadio.vue +28 -17
  228. package/vue/UiRadioGroup.vue +10 -10
  229. package/vue/UiReel.vue +5 -5
  230. package/vue/UiScrollArea.vue +10 -10
  231. package/vue/UiSearchResultRow.vue +19 -19
  232. package/vue/UiSearchShell.vue +22 -22
  233. package/vue/UiSection.vue +24 -23
  234. package/vue/UiSelect.vue +11 -10
  235. package/vue/UiSeparator.vue +2 -2
  236. package/vue/UiSidebar.vue +8 -8
  237. package/vue/UiSpinner.vue +6 -6
  238. package/vue/UiStack.vue +12 -12
  239. package/vue/UiStatusMessage.vue +17 -17
  240. package/vue/UiSwatch.vue +2 -2
  241. package/vue/UiSwitch.vue +38 -25
  242. package/vue/UiSwitcher.vue +7 -7
  243. package/vue/UiTable.vue +6 -6
  244. package/vue/UiTabs.vue +13 -13
  245. package/vue/UiText.vue +3 -2
  246. package/vue/UiTextarea.vue +10 -10
  247. package/vue/UiToast.vue +18 -18
  248. package/vue/UiToastRegion.vue +24 -24
  249. package/vue/UiTooltip.vue +15 -15
  250. package/vue/UiTopBar.vue +11 -11
  251. package/vue/UiTree.vue +5 -5
  252. package/vue/UiTreeItem.vue +73 -71
  253. package/vue/chunks/UiActionBar.js +1 -1
  254. package/vue/chunks/UiAffordanceScope.js +1 -1
  255. package/vue/chunks/UiAvatar.js +1 -1
  256. package/vue/chunks/UiAvatarGroup.js +1 -1
  257. package/vue/chunks/UiBadge.js +2 -2
  258. package/vue/chunks/UiBreadcrumbItem.js +1 -1
  259. package/vue/chunks/UiBreadcrumbs.js +1 -1
  260. package/vue/chunks/UiButton.js +2 -2
  261. package/vue/chunks/UiCallout.js +1 -1
  262. package/vue/chunks/UiCard.js +1 -1
  263. package/vue/chunks/UiCheckbox.js +1 -1
  264. package/vue/chunks/UiCluster.js +1 -1
  265. package/vue/chunks/UiColorPicker.js +326 -0
  266. package/vue/chunks/UiCombobox.js +1 -1
  267. package/vue/chunks/UiContainer.js +1 -1
  268. package/vue/chunks/UiContextMenu.js +1 -1
  269. package/vue/chunks/UiCover.js +1 -1
  270. package/vue/chunks/UiDescriptionItem.js +1 -1
  271. package/vue/chunks/UiDescriptionList.js +1 -1
  272. package/vue/chunks/UiDialog.js +1 -1
  273. package/vue/chunks/UiDisclosure.js +1 -1
  274. package/vue/chunks/UiEditable.js +1 -1
  275. package/vue/chunks/UiEditorImageToolbar.js +1 -1
  276. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  277. package/vue/chunks/UiEditorLinkForm.js +1 -1
  278. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  279. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  280. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  281. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  282. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  283. package/vue/chunks/UiEditorSurface.js +1 -1
  284. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  285. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  286. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  287. package/vue/chunks/UiEditorToolbar.js +1 -1
  288. package/vue/chunks/UiFloatingActionButton.js +1 -1
  289. package/vue/chunks/UiFormField.js +2 -2
  290. package/vue/chunks/UiGrid.js +1 -1
  291. package/vue/chunks/UiIcon.js +5 -1
  292. package/vue/chunks/UiIconButton.js +2 -2
  293. package/vue/chunks/UiImage.js +1 -1
  294. package/vue/chunks/UiInput.js +1 -1
  295. package/vue/chunks/UiInputGroup.js +1 -1
  296. package/vue/chunks/UiList.js +1 -1
  297. package/vue/chunks/UiListItem.js +1 -1
  298. package/vue/chunks/UiListbox.js +1 -1
  299. package/vue/chunks/UiMenu.js +1 -1
  300. package/vue/chunks/UiMenuGroup.js +1 -1
  301. package/vue/chunks/UiMenuItem.js +1 -1
  302. package/vue/chunks/UiMeter.js +1 -1
  303. package/vue/chunks/UiNavItem.js +1 -1
  304. package/vue/chunks/UiPageHeader.js +1 -1
  305. package/vue/chunks/UiPopover.js +1 -1
  306. package/vue/chunks/UiRadio.js +1 -1
  307. package/vue/chunks/UiRadioGroup.js +1 -1
  308. package/vue/chunks/UiReel.js +1 -1
  309. package/vue/chunks/UiScrollArea.js +1 -1
  310. package/vue/chunks/UiSearchResultRow.js +1 -1
  311. package/vue/chunks/UiSearchShell.js +1 -1
  312. package/vue/chunks/UiSection.js +1 -1
  313. package/vue/chunks/UiSelect.js +1 -1
  314. package/vue/chunks/UiSeparator.js +1 -1
  315. package/vue/chunks/UiSidebar.js +1 -1
  316. package/vue/chunks/UiSpinner.js +1 -1
  317. package/vue/chunks/UiStack.js +1 -1
  318. package/vue/chunks/UiStatusMessage.js +1 -1
  319. package/vue/chunks/UiSwatch.js +1 -1
  320. package/vue/chunks/UiSwitch.js +1 -1
  321. package/vue/chunks/UiSwitcher.js +1 -1
  322. package/vue/chunks/UiTable.js +1 -1
  323. package/vue/chunks/UiTabs.js +3 -3
  324. package/vue/chunks/UiText.js +1 -1
  325. package/vue/chunks/UiTextarea.js +1 -1
  326. package/vue/chunks/UiToast.js +1 -1
  327. package/vue/chunks/UiToastRegion.js +1 -1
  328. package/vue/chunks/UiTooltip.js +1 -1
  329. package/vue/chunks/UiTopBar.js +1 -1
  330. package/vue/chunks/UiTree.js +1 -1
  331. package/vue/chunks/UiTreeItem.js +1 -1
  332. package/vue/components.css +1857 -1654
  333. package/vue/editor/LoomaEditor.d.ts +18 -2
  334. package/vue/editor/index.d.ts +2 -1
  335. package/vue/editor/index.js +147 -16
  336. package/vue/index.d.ts +1 -0
  337. package/vue/index.js +3 -2
@@ -52,6 +52,7 @@ export const icons = {
52
52
  "panel-left": [["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["path",{"d":"M9 3v18"}]],
53
53
  "panel-right": [["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["path",{"d":"M15 3v18"}]],
54
54
  "panel-top": [["rect",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["path",{"d":"M3 9h18"}]],
55
+ "paperclip": [["path",{"d":"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551"}]],
55
56
  "pencil": [["path",{"d":"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{"d":"m15 5 4 4"}]],
56
57
  "pilcrow": [["path",{"d":"M13 4v16"}],["path",{"d":"M17 4v16"}],["path",{"d":"M19 4H9.5a4.5 4.5 0 0 0 0 9H13"}]],
57
58
  "plus": [["path",{"d":"M5 12h14"}],["path",{"d":"M12 5v14"}]],
@@ -433,7 +433,7 @@ export function createAnchoredSurface(surface, options = {}) {
433
433
  positionAnchoredSurface(surface, rect, { placement: point ? "bottom-start" : placement, gap: gap(), viewportGap, boundary });
434
434
  };
435
435
  surface.style.position = "fixed";
436
- surface.style.margin = "0";
436
+ surface.style.setProperty("margin", "0", "important");
437
437
  // `bare` resets the browser's popover chrome on a surface that has none of its own.
438
438
  const presentation = createViewportSurface(surface, { position, bare: options.bare });
439
439
  // Resize and scroll events do not report an ancestor's transition or layout shift.
@@ -23,7 +23,7 @@
23
23
  --_ui-action-bar-gap: var(--ui-action-bar-gap);
24
24
 
25
25
  --_gap: var(--ui-space-2);
26
- display: block;
26
+ display: block !important;
27
27
  /* A size container sizes itself from its container, never its content. */
28
28
  container-type: inline-size;
29
29
  inline-size: 100%;
@@ -34,16 +34,16 @@
34
34
  .tertiary,
35
35
  .secondary,
36
36
  .primary {
37
- display: flex;
38
- flex-wrap: wrap;
39
- align-items: center;
40
- gap: var(--_ui-action-bar-gap, var(--_gap));
37
+ display: flex !important;
38
+ flex-wrap: wrap !important;
39
+ align-items: center !important;
40
+ gap: var(--_ui-action-bar-gap, var(--_gap)) !important;
41
41
  }
42
42
 
43
43
  /* The tertiary group takes the spare space, pushing the rest to the end edge; without it, the
44
44
  rest still ends the row. */
45
45
  .bar {
46
- justify-content: flex-end;
46
+ justify-content: flex-end !important;
47
47
  }
48
48
 
49
49
  .tertiary {
@@ -53,7 +53,7 @@
53
53
  .tertiary:empty,
54
54
  .secondary:empty,
55
55
  .primary:empty {
56
- display: none;
56
+ display: none !important;
57
57
  }
58
58
 
59
59
  /* A narrow container stacks the actions full width, primary on top: the row turned on its end,
@@ -63,9 +63,9 @@
63
63
  .tertiary,
64
64
  .secondary,
65
65
  .primary {
66
- flex-direction: column-reverse;
67
- flex-wrap: nowrap;
68
- align-items: stretch;
66
+ flex-direction: column-reverse !important;
67
+ flex-wrap: nowrap !important;
68
+ align-items: stretch !important;
69
69
  }
70
70
 
71
71
  .tertiary {
@@ -75,7 +75,7 @@
75
75
 
76
76
  /* A component that sets its display still honours the hidden attribute on its root. */
77
77
  :host[hidden] {
78
- display: none;
78
+ display: none !important;
79
79
  }
80
80
  </style>
81
81
  </template>
@@ -9,7 +9,7 @@
9
9
  <span><slot></slot></span>
10
10
  <style>
11
11
  :host {
12
- display: contents;
12
+ display: contents !important;
13
13
  --ui-affordance-scope-engaged: 0;
14
14
  --ui-affordance-scope-guide: 1;
15
15
  }
@@ -25,7 +25,7 @@
25
25
 
26
26
  /* A component that sets its display still honours the hidden attribute on its root. */
27
27
  :host[hidden] {
28
- display: none;
28
+ display: none !important;
29
29
  }
30
30
  </style>
31
31
  </template>
@@ -60,7 +60,7 @@
60
60
 
61
61
  :host {
62
62
  --_ui-default-icon-size: 1.25rem;
63
- display: inline-grid;
63
+ display: inline-grid !important;
64
64
  place-items: center;
65
65
  overflow: hidden;
66
66
  inline-size: 2.5rem;
@@ -122,9 +122,9 @@
122
122
 
123
123
  .fallback {
124
124
  grid-area: 1 / 1;
125
- display: inline-flex;
126
- align-items: center;
127
- justify-content: center;
125
+ display: inline-flex !important;
126
+ align-items: center !important;
127
+ justify-content: center !important;
128
128
  inline-size: 100%;
129
129
  block-size: 100%;
130
130
  }
@@ -134,21 +134,21 @@
134
134
  * Trimming applies to block containers, so the box is a block with centred content. */
135
135
  @supports (text-box-trim: trim-both) {
136
136
  .fallback {
137
- display: block;
137
+ display: block !important;
138
138
  text-align: center;
139
- align-content: center;
139
+ align-content: center !important;
140
140
  text-box-trim: trim-both;
141
141
  text-box-edge: cap alphabetic;
142
142
  }
143
143
  }
144
144
 
145
145
  [hidden] {
146
- display: none;
146
+ display: none !important;
147
147
  }
148
148
 
149
149
  /* A component that sets its display still honours the hidden attribute on its root. */
150
150
  :host[hidden] {
151
- display: none;
151
+ display: none !important;
152
152
  }
153
153
  </style>
154
154
  </template>
@@ -40,21 +40,21 @@
40
40
  * a white gap out of the avatar underneath. */
41
41
  --_overlap-shadow: -1px 0 0 0 rgb(0 0 0 / 0.22);
42
42
 
43
- display: flex;
44
- align-items: center;
45
- flex-direction: row;
46
- gap: 0;
43
+ display: flex !important;
44
+ align-items: center !important;
45
+ flex-direction: row !important;
46
+ gap: 0 !important;
47
47
  }
48
48
 
49
49
  /* Overlap and the separating shadow are applied by the controller: slotted avatars are nested
50
50
  * component roots outside this style scope. */
51
51
  :slotted(*) {
52
- margin-inline-start: -0.5rem;
52
+ margin-inline-start: -0.5rem !important;
53
53
  flex-shrink: 0;
54
54
  }
55
55
 
56
56
  :slotted(*:first-child) {
57
- margin-inline-start: 0;
57
+ margin-inline-start: 0 !important;
58
58
  }
59
59
 
60
60
  :host:dir(rtl) {
@@ -62,10 +62,10 @@
62
62
  }
63
63
 
64
64
  .overflow {
65
- margin-inline-start: -0.5rem;
66
- display: inline-flex;
67
- align-items: center;
68
- justify-content: center;
65
+ margin-inline-start: -0.5rem !important;
66
+ display: inline-flex !important;
67
+ align-items: center !important;
68
+ justify-content: center !important;
69
69
  inline-size: 2.5rem;
70
70
  block-size: 2.5rem;
71
71
  border-radius: var(--ui-radius-round);
@@ -82,13 +82,13 @@
82
82
  }
83
83
 
84
84
  :host([size="sm"]) .overflow {
85
- margin-inline-start: -0.25rem;
85
+ margin-inline-start: -0.25rem !important;
86
86
  inline-size: 1.75rem;
87
87
  block-size: 1.75rem;
88
88
  }
89
89
 
90
90
  :host([size="xs"]) .overflow {
91
- margin-inline-start: -0.1875rem;
91
+ margin-inline-start: -0.1875rem !important;
92
92
  inline-size: 1.25rem;
93
93
  block-size: 1.25rem;
94
94
  /* Matches the xs Avatar's initials. */
@@ -97,12 +97,12 @@
97
97
  }
98
98
 
99
99
  .overflow[hidden] {
100
- display: none;
100
+ display: none !important;
101
101
  }
102
102
 
103
103
  /* A component that sets its display still honours the hidden attribute on its root. */
104
104
  :host[hidden] {
105
- display: none;
105
+ display: none !important;
106
106
  }
107
107
  </style>
108
108
  </template>
@@ -9,8 +9,9 @@ export function connect(host) {
9
9
  // Small avatars overlap less, so their initials stay clear of the next one.
10
10
  const overlap = { xs: "-0.1875rem", sm: "-0.25rem" }[host.props.size.value] ?? "-0.5rem";
11
11
  avatars.forEach((avatar, index) => {
12
- avatar.style.display = index >= visible ? "none" : "";
13
- avatar.style.marginInlineStart = index === 0 ? "0px" : overlap;
12
+ if (index >= visible) avatar.style.setProperty("display", "none", "important");
13
+ else avatar.style.removeProperty("display");
14
+ avatar.style.setProperty("margin-inline-start", index === 0 ? "0px" : overlap, "important");
14
15
  // Later avatars darken only their leading edge; the first overlaps nothing.
15
16
  avatar.style.boxShadow = index === 0
16
17
  ? "var(--ui-avatar-group-edge-ring, none)"
@@ -3,8 +3,8 @@
3
3
  <prop name="variant" type="keyword" values="solid, subtle, outline, inverse, overlay" default="subtle"
4
4
  >Emphasis. subtle sets toned text over a soft wash; solid fills with the tone and uses contrasting text; outline keeps the surface with a toned edge.
5
5
  inverse uses a translucent contrasting surface and toned ink for a count or label on a filled control of that tone. Neutral looks the same in solid and
6
- subtle. overlay inherits the containing filled control's text colour on a faint translucent fill, with a quiet single-pixel boundary and no shadow. Its small circle is
7
- 20px. When space is constrained, the label truncates with an ellipsis while its full text remains available.</prop>
6
+ subtle. overlay inherits the containing filled control's text colour on a faint translucent fill, with a quiet single-pixel boundary and no shadow. Its
7
+ small circle is 20px. When space is constrained, the label truncates with an ellipsis while its full text remains available.</prop>
8
8
  <prop name="tone" type="keyword" values="neutral, accent, info, success, warning, danger" default="neutral"
9
9
  >Which colour the badge speaks in. neutral is a quiet grey for plain labels; accent draws the eye in the accent colour; info, success, warning, and danger
10
10
  mark a status, so match the tone to what the badge says. For a category rather than a status, set the --ui-badge-color hook on the badge instead: any CSS
@@ -102,14 +102,14 @@
102
102
  --_badge-color-text: var(--_badge-color-ink);
103
103
  --_badge-outline-surface: var(--ui-badge-surface, var(--_badge-color-surface, var(--_badge-surface)));
104
104
 
105
- display: inline-flex;
106
- align-items: center;
107
- justify-content: center;
108
- gap: var(--ui-space-1);
109
- box-sizing: border-box;
105
+ display: inline-flex !important;
106
+ align-items: center !important;
107
+ justify-content: center !important;
108
+ gap: var(--ui-space-1) !important;
109
+ box-sizing: border-box !important;
110
110
  min-inline-size: 0;
111
111
  max-inline-size: 100%;
112
- padding: var(--ui-badge-padding-block, var(--ui-space-0-5)) var(--ui-badge-padding-inline, var(--ui-space-2));
112
+ padding: var(--ui-badge-padding-block, var(--ui-space-0-5)) var(--ui-badge-padding-inline, var(--ui-space-2)) !important;
113
113
  border: var(--ui-border-width) solid var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
114
114
  border-radius: var(--ui-radius-round);
115
115
  background: var(--_badge-outline-surface);
@@ -124,30 +124,30 @@
124
124
  /* A constrained badge keeps its surface intact and ellipsizes only its label. The full
125
125
  text stays in the DOM for accessible names and consumers' selected values. */
126
126
  .label {
127
- display: block;
127
+ display: block !important;
128
128
  min-inline-size: 0;
129
129
  overflow: hidden;
130
130
  text-overflow: ellipsis;
131
131
  }
132
132
 
133
133
  .label:empty {
134
- display: none;
134
+ display: none !important;
135
135
  }
136
136
 
137
137
  /* Icon content has its own flex item so label ellipsis never clips its strokes. */
138
138
  .icon {
139
- display: inline-flex;
140
- align-items: center;
141
- justify-content: center;
139
+ display: inline-flex !important;
140
+ align-items: center !important;
141
+ justify-content: center !important;
142
142
  flex: none;
143
143
  }
144
144
 
145
145
  .icon:empty {
146
- display: none;
146
+ display: none !important;
147
147
  }
148
148
 
149
149
  .icon :slotted(svg) {
150
- display: block;
150
+ display: block !important;
151
151
  inline-size: 1em;
152
152
  block-size: 1em;
153
153
  flex: none;
@@ -158,7 +158,7 @@
158
158
  inline-size: 1em;
159
159
  block-size: 1em;
160
160
  vertical-align: middle;
161
- margin-inline-end: var(--ui-space-1);
161
+ margin-inline-end: var(--ui-space-1) !important;
162
162
  }
163
163
 
164
164
  .label:has(svg) {
@@ -169,15 +169,15 @@
169
169
  Vertical ink remains visible so trimming never cuts off ascenders or descenders. */
170
170
  @supports (text-box-trim: trim-both) {
171
171
  :host {
172
- display: inline-block;
172
+ display: inline-block !important;
173
173
  min-block-size: var(--ui-badge-min-block-size, 1.5rem);
174
174
  text-align: center;
175
- align-content: center;
175
+ align-content: center !important;
176
176
  text-box-trim: none;
177
177
  }
178
178
  :host:has(.icon:not(:empty)),
179
179
  :host:has(.label svg) {
180
- display: inline-flex;
180
+ display: inline-flex !important;
181
181
  text-box-trim: none;
182
182
  }
183
183
  .label:not(:has(svg)) {
@@ -189,12 +189,12 @@
189
189
  }
190
190
 
191
191
  :host([size="xs"]) {
192
- box-sizing: border-box;
192
+ box-sizing: border-box !important;
193
193
  min-inline-size: 1rem;
194
194
  min-block-size: var(--ui-badge-min-block-size, 1rem);
195
195
  /* Compact text still needs room at both rounded edges. Fixed marks override this
196
196
  padding below; ordinary text badges retain their larger spacing. */
197
- padding: var(--ui-badge-padding-block, 0) var(--ui-badge-padding-inline, var(--ui-space-1));
197
+ padding: var(--ui-badge-padding-block, 0) var(--ui-badge-padding-inline, var(--ui-space-1)) !important;
198
198
  font-size: var(--ui-badge-font-size, var(--ui-font-size-2xs));
199
199
  line-height: var(--ui-badge-line-height, 1);
200
200
  }
@@ -368,14 +368,14 @@
368
368
  /* An icon mark keeps the existing tone recipe and follows the global spacing and radius. */
369
369
  :host([shape="square"]) {
370
370
  --_badge-square-size: var(--ui-badge-square-size, calc(var(--ui-space-4) * 2));
371
- display: inline-flex;
372
- box-sizing: border-box;
371
+ display: inline-flex !important;
372
+ box-sizing: border-box !important;
373
373
  flex: none;
374
374
  inline-size: var(--_badge-square-size);
375
375
  block-size: var(--_badge-square-size);
376
376
  min-inline-size: var(--_badge-square-size);
377
377
  min-block-size: var(--_badge-square-size);
378
- padding: 0;
378
+ padding: 0 !important;
379
379
  border-radius: var(--ui-radius-md);
380
380
  text-box-trim: none;
381
381
  }
@@ -389,29 +389,29 @@
389
389
  }
390
390
 
391
391
  :host([shape="square"]) .label {
392
- display: inline-flex;
393
- align-items: center;
394
- justify-content: center;
392
+ display: inline-flex !important;
393
+ align-items: center !important;
394
+ justify-content: center !important;
395
395
  }
396
396
 
397
397
  :host([shape="square"]) .label :slotted(svg) {
398
- margin-inline-end: 0;
398
+ margin-inline-end: 0 !important;
399
399
  }
400
400
 
401
401
  :host([shape="square"]) .label:empty {
402
- display: none;
402
+ display: none !important;
403
403
  }
404
404
 
405
405
  /* A visible glyph needs fixed geometry, unlike a content-sized pill or a hidden-label dot. */
406
406
  :host([shape="circle"]) {
407
407
  --_badge-circle-size: var(--ui-badge-circle-size, calc(var(--ui-space-3) * 2));
408
- display: inline-flex;
408
+ display: inline-flex !important;
409
409
  flex: none;
410
410
  inline-size: var(--_badge-circle-size);
411
411
  block-size: var(--_badge-circle-size);
412
412
  min-inline-size: var(--_badge-circle-size);
413
413
  min-block-size: var(--_badge-circle-size);
414
- padding: 0;
414
+ padding: 0 !important;
415
415
  border-radius: var(--ui-radius-round);
416
416
  text-box-trim: none;
417
417
  }
@@ -429,19 +429,19 @@
429
429
  }
430
430
 
431
431
  :host([shape="circle"]) .label {
432
- display: inline-flex;
433
- align-items: center;
434
- justify-content: center;
432
+ display: inline-flex !important;
433
+ align-items: center !important;
434
+ justify-content: center !important;
435
435
  line-height: 1;
436
436
  text-box-trim: none;
437
437
  }
438
438
 
439
439
  :host([shape="circle"]) .label :slotted(svg) {
440
- margin-inline-end: 0;
440
+ margin-inline-end: 0 !important;
441
441
  }
442
442
 
443
443
  :host([shape="circle"]) .label:empty {
444
- display: none;
444
+ display: none !important;
445
445
  }
446
446
 
447
447
  /* Center capital and numeral ink, rather than the font's ascent/descent line box.
@@ -449,7 +449,7 @@
449
449
  @supports (text-box-trim: trim-both) {
450
450
  :host([shape="circle"]) .label:not(:has(svg)),
451
451
  :host([shape="square"]) .label:not(:has(svg)) {
452
- display: block;
452
+ display: block !important;
453
453
  text-box-trim: trim-both;
454
454
  text-box-edge: cap alphabetic;
455
455
  overflow: visible;
@@ -459,13 +459,13 @@
459
459
  /* A dot uses the badge's tone recipe; only its silhouette and visible label change. */
460
460
  :host([shape="dot"]) {
461
461
  position: relative;
462
- box-sizing: border-box;
462
+ box-sizing: border-box !important;
463
463
  flex: none;
464
464
  inline-size: var(--ui-badge-dot-size, var(--ui-space-2));
465
465
  block-size: var(--ui-badge-dot-size, var(--ui-space-2));
466
466
  min-inline-size: var(--ui-badge-dot-size, var(--ui-space-2));
467
467
  min-block-size: var(--ui-badge-dot-size, var(--ui-space-2));
468
- padding: 0;
468
+ padding: 0 !important;
469
469
  border-radius: var(--ui-radius-round);
470
470
  text-box-trim: none;
471
471
  }
@@ -489,7 +489,7 @@
489
489
  border-color: transparent;
490
490
  border-radius: 0;
491
491
  background: var(--ui-badge-border, var(--_badge-color-border, var(--_badge-border)));
492
- padding-inline-end: calc(var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point));
492
+ padding-inline-end: calc(var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point)) !important;
493
493
  clip-path: polygon(0 0, calc(100% - var(--_badge-point)) 0, 100% 50%, calc(100% - var(--_badge-point)) 100%, 0 100%);
494
494
  }
495
495
 
@@ -508,8 +508,8 @@
508
508
  }
509
509
 
510
510
  :host([shape="tag"]):dir(rtl) {
511
- padding-inline-end: var(--ui-badge-padding-inline, var(--ui-space-2));
512
- padding-inline-start: calc(var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point));
511
+ padding-inline-end: var(--ui-badge-padding-inline, var(--ui-space-2)) !important;
512
+ padding-inline-start: calc(var(--ui-badge-padding-inline, var(--ui-space-2)) + var(--_badge-point)) !important;
513
513
  clip-path: polygon(var(--_badge-point) 0, 100% 0, 100% 100%, var(--_badge-point) 100%, 0 50%);
514
514
  }
515
515
 
@@ -537,7 +537,7 @@
537
537
 
538
538
  /* A component that sets its display still honours the hidden attribute on its root. */
539
539
  :host[hidden] {
540
- display: none;
540
+ display: none !important;
541
541
  }
542
542
  </style>
543
543
  </template>
@@ -11,34 +11,34 @@
11
11
  /* One step in a ui-breadcrumbs trail: a link up to that place, or the current view. A chevron leads
12
12
  every step but the first. An icon slotted before the name sits with it. */
13
13
  :host {
14
- display: inline-flex;
15
- align-items: center;
16
- gap: var(--ui-space-2);
14
+ display: inline-flex !important;
15
+ align-items: center !important;
16
+ gap: var(--ui-space-2) !important;
17
17
  min-inline-size: 0;
18
- margin: 0;
18
+ margin: 0 !important;
19
19
  }
20
20
 
21
21
  .separator {
22
- display: inline-flex;
22
+ display: inline-flex !important;
23
23
  color: var(--ui-text-muted);
24
24
  font-size: var(--ui-font-size-sm);
25
25
  }
26
26
 
27
27
  :host:first-child .separator {
28
- display: none;
28
+ display: none !important;
29
29
  }
30
30
 
31
31
  .content {
32
- display: inline-flex;
33
- align-items: center;
34
- gap: var(--ui-space-1);
32
+ display: inline-flex !important;
33
+ align-items: center !important;
34
+ gap: var(--ui-space-1) !important;
35
35
  min-inline-size: 0;
36
36
  }
37
37
 
38
38
  .content > :slotted(a) {
39
- display: inline-flex;
40
- align-items: center;
41
- gap: var(--ui-space-1);
39
+ display: inline-flex !important;
40
+ align-items: center !important;
41
+ gap: var(--ui-space-1) !important;
42
42
  color: var(--ui-text-secondary);
43
43
  text-decoration: none;
44
44
  }
@@ -55,7 +55,7 @@
55
55
 
56
56
  /* A component that sets its display still honours the hidden attribute on its root. */
57
57
  :host[hidden] {
58
- display: none;
58
+ display: none !important;
59
59
  }
60
60
  </style>
61
61
  </template>
@@ -7,25 +7,25 @@
7
7
  /* Where a view sits: a trail of ui-breadcrumb-item, from the top down to the current view. It wraps
8
8
  rather than scrolls, so every step stays reachable. */
9
9
  :host {
10
- display: block;
10
+ display: block !important;
11
11
  min-inline-size: 0;
12
12
  color: var(--ui-text-muted);
13
13
  font-size: var(--ui-font-size-sm);
14
14
  }
15
15
 
16
16
  ol {
17
- display: flex;
18
- flex-wrap: wrap;
19
- align-items: center;
20
- gap: var(--ui-space-1) var(--ui-space-2);
21
- margin: 0;
22
- padding: 0;
17
+ display: flex !important;
18
+ flex-wrap: wrap !important;
19
+ align-items: center !important;
20
+ gap: var(--ui-space-1) var(--ui-space-2) !important;
21
+ margin: 0 !important;
22
+ padding: 0 !important;
23
23
  list-style: none;
24
24
  }
25
25
 
26
26
  /* A component that sets its display still honours the hidden attribute on its root. */
27
27
  :host[hidden] {
28
- display: none;
28
+ display: none !important;
29
29
  }
30
30
  </style>
31
31
  </template>