@threadlabs/looma 0.32.1 → 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 (330) 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/package.json +3 -2
  86. package/styles/ui-action-bar.css +11 -11
  87. package/styles/ui-affordance-scope.css +2 -2
  88. package/styles/ui-avatar-group.css +14 -14
  89. package/styles/ui-avatar.css +8 -8
  90. package/styles/ui-badge.css +41 -41
  91. package/styles/ui-breadcrumb-item.css +13 -13
  92. package/styles/ui-breadcrumbs.css +8 -8
  93. package/styles/ui-button.css +30 -28
  94. package/styles/ui-callout.css +9 -9
  95. package/styles/ui-card.css +11 -11
  96. package/styles/ui-checkbox.css +52 -33
  97. package/styles/ui-cluster.css +21 -21
  98. package/styles/ui-color-picker.css +120 -0
  99. package/styles/ui-combobox.css +86 -86
  100. package/styles/ui-container.css +7 -7
  101. package/styles/ui-context-menu.css +9 -9
  102. package/styles/ui-cover.css +8 -8
  103. package/styles/ui-description-item.css +7 -7
  104. package/styles/ui-description-list.css +4 -4
  105. package/styles/ui-dialog.css +52 -52
  106. package/styles/ui-disclosure.css +23 -23
  107. package/styles/ui-editable.css +16 -16
  108. package/styles/ui-editor-insert-table-grid.css +9 -9
  109. package/styles/ui-editor-mention-menu-item.css +10 -10
  110. package/styles/ui-editor-mention-menu.css +23 -23
  111. package/styles/ui-editor-slash-menu-group.css +5 -5
  112. package/styles/ui-editor-slash-menu-item.css +11 -11
  113. package/styles/ui-editor-slash-menu.css +29 -29
  114. package/styles/ui-editor-surface.css +2 -2
  115. package/styles/ui-editor-table-context-menu.css +25 -25
  116. package/styles/ui-editor-table-overlay.css +13 -13
  117. package/styles/ui-editor-table-toolbar.css +31 -31
  118. package/styles/ui-editor-toolbar.css +13 -13
  119. package/styles/ui-floating-action-button.css +8 -8
  120. package/styles/ui-form-field.css +13 -13
  121. package/styles/ui-grid.css +4 -4
  122. package/styles/ui-icon-button.css +13 -13
  123. package/styles/ui-icon.css +2 -2
  124. package/styles/ui-image.css +14 -14
  125. package/styles/ui-input-group.css +18 -18
  126. package/styles/ui-input.css +8 -8
  127. package/styles/ui-list-item.css +18 -18
  128. package/styles/ui-list.css +11 -11
  129. package/styles/ui-listbox.css +20 -20
  130. package/styles/ui-menu-group.css +4 -4
  131. package/styles/ui-menu-item.css +20 -20
  132. package/styles/ui-menu.css +16 -16
  133. package/styles/ui-meter.css +5 -5
  134. package/styles/ui-nav-item.css +20 -20
  135. package/styles/ui-page-header.css +18 -17
  136. package/styles/ui-popover.css +8 -8
  137. package/styles/ui-radio-group.css +10 -10
  138. package/styles/ui-radio.css +26 -18
  139. package/styles/ui-reel.css +5 -5
  140. package/styles/ui-scroll-area.css +10 -10
  141. package/styles/ui-search-result-row.css +19 -19
  142. package/styles/ui-search-shell.css +22 -22
  143. package/styles/ui-section.css +24 -23
  144. package/styles/ui-select.css +10 -10
  145. package/styles/ui-separator.css +2 -2
  146. package/styles/ui-sidebar.css +8 -8
  147. package/styles/ui-spinner.css +6 -6
  148. package/styles/ui-stack.css +12 -12
  149. package/styles/ui-status-message.css +17 -17
  150. package/styles/ui-swatch.css +2 -2
  151. package/styles/ui-switch.css +36 -28
  152. package/styles/ui-switcher.css +7 -7
  153. package/styles/ui-table.css +6 -6
  154. package/styles/ui-tabs.css +11 -11
  155. package/styles/ui-text.css +3 -2
  156. package/styles/ui-textarea.css +10 -10
  157. package/styles/ui-toast-region.css +24 -24
  158. package/styles/ui-toast.css +18 -18
  159. package/styles/ui-tooltip.css +15 -15
  160. package/styles/ui-top-bar.css +11 -11
  161. package/styles/ui-tree-item.css +71 -71
  162. package/styles/ui-tree.css +5 -5
  163. package/theme-system.css +80 -0
  164. package/tokens.css +14 -3
  165. package/vanilla/UiColorPicker.d.ts +30 -0
  166. package/vanilla/UiColorPicker.js +77 -0
  167. package/vanilla/UiIcon.js +1 -1
  168. package/vanilla/index.js +1 -0
  169. package/vue/UiActionBar.vue +11 -11
  170. package/vue/UiAffordanceScope.vue +2 -2
  171. package/vue/UiAvatar.vue +8 -8
  172. package/vue/UiAvatarGroup.vue +14 -14
  173. package/vue/UiBadge.vue +43 -42
  174. package/vue/UiBreadcrumbItem.vue +13 -13
  175. package/vue/UiBreadcrumbs.vue +8 -8
  176. package/vue/UiButton.vue +34 -29
  177. package/vue/UiCallout.vue +9 -9
  178. package/vue/UiCard.vue +11 -11
  179. package/vue/UiCheckbox.vue +57 -34
  180. package/vue/UiCluster.vue +21 -21
  181. package/vue/UiColorPicker.d.ts +65 -0
  182. package/vue/UiColorPicker.js +2 -0
  183. package/vue/UiColorPicker.vue +422 -0
  184. package/vue/UiCombobox.vue +86 -86
  185. package/vue/UiContainer.vue +7 -7
  186. package/vue/UiContextMenu.vue +9 -9
  187. package/vue/UiCover.vue +8 -8
  188. package/vue/UiDescriptionItem.vue +7 -7
  189. package/vue/UiDescriptionList.vue +4 -4
  190. package/vue/UiDialog.vue +52 -52
  191. package/vue/UiDisclosure.vue +23 -23
  192. package/vue/UiEditable.vue +16 -16
  193. package/vue/UiEditorInsertTableGrid.vue +9 -9
  194. package/vue/UiEditorMentionMenu.vue +23 -23
  195. package/vue/UiEditorMentionMenuItem.vue +10 -10
  196. package/vue/UiEditorSlashMenu.vue +29 -29
  197. package/vue/UiEditorSlashMenuGroup.vue +5 -5
  198. package/vue/UiEditorSlashMenuItem.vue +11 -11
  199. package/vue/UiEditorSurface.vue +2 -2
  200. package/vue/UiEditorTableContextMenu.vue +25 -25
  201. package/vue/UiEditorTableOverlay.vue +13 -13
  202. package/vue/UiEditorTableToolbar.vue +31 -31
  203. package/vue/UiEditorToolbar.vue +13 -13
  204. package/vue/UiFloatingActionButton.vue +8 -8
  205. package/vue/UiFormField.vue +14 -14
  206. package/vue/UiGrid.vue +4 -4
  207. package/vue/UiIcon.vue +6 -2
  208. package/vue/UiIconButton.vue +14 -14
  209. package/vue/UiImage.vue +14 -14
  210. package/vue/UiInput.vue +9 -8
  211. package/vue/UiInputGroup.vue +18 -18
  212. package/vue/UiList.vue +11 -11
  213. package/vue/UiListItem.vue +18 -18
  214. package/vue/UiListbox.vue +20 -20
  215. package/vue/UiMenu.vue +16 -16
  216. package/vue/UiMenuGroup.vue +4 -4
  217. package/vue/UiMenuItem.vue +20 -20
  218. package/vue/UiMeter.vue +5 -5
  219. package/vue/UiNavItem.vue +20 -20
  220. package/vue/UiPageHeader.vue +18 -17
  221. package/vue/UiPopover.vue +8 -8
  222. package/vue/UiRadio.vue +28 -17
  223. package/vue/UiRadioGroup.vue +10 -10
  224. package/vue/UiReel.vue +5 -5
  225. package/vue/UiScrollArea.vue +10 -10
  226. package/vue/UiSearchResultRow.vue +19 -19
  227. package/vue/UiSearchShell.vue +22 -22
  228. package/vue/UiSection.vue +24 -23
  229. package/vue/UiSelect.vue +11 -10
  230. package/vue/UiSeparator.vue +2 -2
  231. package/vue/UiSidebar.vue +8 -8
  232. package/vue/UiSpinner.vue +6 -6
  233. package/vue/UiStack.vue +12 -12
  234. package/vue/UiStatusMessage.vue +17 -17
  235. package/vue/UiSwatch.vue +2 -2
  236. package/vue/UiSwitch.vue +38 -25
  237. package/vue/UiSwitcher.vue +7 -7
  238. package/vue/UiTable.vue +6 -6
  239. package/vue/UiTabs.vue +13 -13
  240. package/vue/UiText.vue +3 -2
  241. package/vue/UiTextarea.vue +10 -10
  242. package/vue/UiToast.vue +18 -18
  243. package/vue/UiToastRegion.vue +24 -24
  244. package/vue/UiTooltip.vue +15 -15
  245. package/vue/UiTopBar.vue +11 -11
  246. package/vue/UiTree.vue +5 -5
  247. package/vue/UiTreeItem.vue +73 -71
  248. package/vue/chunks/UiActionBar.js +1 -1
  249. package/vue/chunks/UiAffordanceScope.js +1 -1
  250. package/vue/chunks/UiAvatar.js +1 -1
  251. package/vue/chunks/UiAvatarGroup.js +1 -1
  252. package/vue/chunks/UiBadge.js +2 -2
  253. package/vue/chunks/UiBreadcrumbItem.js +1 -1
  254. package/vue/chunks/UiBreadcrumbs.js +1 -1
  255. package/vue/chunks/UiButton.js +2 -2
  256. package/vue/chunks/UiCallout.js +1 -1
  257. package/vue/chunks/UiCard.js +1 -1
  258. package/vue/chunks/UiCheckbox.js +1 -1
  259. package/vue/chunks/UiCluster.js +1 -1
  260. package/vue/chunks/UiColorPicker.js +326 -0
  261. package/vue/chunks/UiCombobox.js +1 -1
  262. package/vue/chunks/UiContainer.js +1 -1
  263. package/vue/chunks/UiContextMenu.js +1 -1
  264. package/vue/chunks/UiCover.js +1 -1
  265. package/vue/chunks/UiDescriptionItem.js +1 -1
  266. package/vue/chunks/UiDescriptionList.js +1 -1
  267. package/vue/chunks/UiDialog.js +1 -1
  268. package/vue/chunks/UiDisclosure.js +1 -1
  269. package/vue/chunks/UiEditable.js +1 -1
  270. package/vue/chunks/UiEditorImageToolbar.js +1 -1
  271. package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
  272. package/vue/chunks/UiEditorLinkForm.js +1 -1
  273. package/vue/chunks/UiEditorMentionMenu.js +1 -1
  274. package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
  275. package/vue/chunks/UiEditorSlashMenu.js +1 -1
  276. package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
  277. package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
  278. package/vue/chunks/UiEditorSurface.js +1 -1
  279. package/vue/chunks/UiEditorTableContextMenu.js +1 -1
  280. package/vue/chunks/UiEditorTableOverlay.js +1 -1
  281. package/vue/chunks/UiEditorTableToolbar.js +1 -1
  282. package/vue/chunks/UiEditorToolbar.js +1 -1
  283. package/vue/chunks/UiFloatingActionButton.js +1 -1
  284. package/vue/chunks/UiFormField.js +2 -2
  285. package/vue/chunks/UiGrid.js +1 -1
  286. package/vue/chunks/UiIcon.js +5 -1
  287. package/vue/chunks/UiIconButton.js +2 -2
  288. package/vue/chunks/UiImage.js +1 -1
  289. package/vue/chunks/UiInput.js +1 -1
  290. package/vue/chunks/UiInputGroup.js +1 -1
  291. package/vue/chunks/UiList.js +1 -1
  292. package/vue/chunks/UiListItem.js +1 -1
  293. package/vue/chunks/UiListbox.js +1 -1
  294. package/vue/chunks/UiMenu.js +1 -1
  295. package/vue/chunks/UiMenuGroup.js +1 -1
  296. package/vue/chunks/UiMenuItem.js +1 -1
  297. package/vue/chunks/UiMeter.js +1 -1
  298. package/vue/chunks/UiNavItem.js +1 -1
  299. package/vue/chunks/UiPageHeader.js +1 -1
  300. package/vue/chunks/UiPopover.js +1 -1
  301. package/vue/chunks/UiRadio.js +1 -1
  302. package/vue/chunks/UiRadioGroup.js +1 -1
  303. package/vue/chunks/UiReel.js +1 -1
  304. package/vue/chunks/UiScrollArea.js +1 -1
  305. package/vue/chunks/UiSearchResultRow.js +1 -1
  306. package/vue/chunks/UiSearchShell.js +1 -1
  307. package/vue/chunks/UiSection.js +1 -1
  308. package/vue/chunks/UiSelect.js +1 -1
  309. package/vue/chunks/UiSeparator.js +1 -1
  310. package/vue/chunks/UiSidebar.js +1 -1
  311. package/vue/chunks/UiSpinner.js +1 -1
  312. package/vue/chunks/UiStack.js +1 -1
  313. package/vue/chunks/UiStatusMessage.js +1 -1
  314. package/vue/chunks/UiSwatch.js +1 -1
  315. package/vue/chunks/UiSwitch.js +1 -1
  316. package/vue/chunks/UiSwitcher.js +1 -1
  317. package/vue/chunks/UiTable.js +1 -1
  318. package/vue/chunks/UiTabs.js +3 -3
  319. package/vue/chunks/UiText.js +1 -1
  320. package/vue/chunks/UiTextarea.js +1 -1
  321. package/vue/chunks/UiToast.js +1 -1
  322. package/vue/chunks/UiToastRegion.js +1 -1
  323. package/vue/chunks/UiTooltip.js +1 -1
  324. package/vue/chunks/UiTopBar.js +1 -1
  325. package/vue/chunks/UiTree.js +1 -1
  326. package/vue/chunks/UiTreeItem.js +1 -1
  327. package/vue/components.css +1857 -1654
  328. package/vue/editor/index.js +28 -11
  329. package/vue/index.d.ts +1 -0
  330. package/vue/index.js +3 -2
@@ -0,0 +1,76 @@
1
+ import { afterFormReset } from "../shared/form-reset.js";
2
+ import { closeOverlay, createAnchoredSurface, openOverlay } from "../shared/overlay.js";
3
+
4
+ export function connect(host) {
5
+ const { trigger, editor, colour, hex, red, green, blue, field } = host.refs;
6
+ const document = trigger.ownerDocument;
7
+ const id = `ui-color-picker-${Math.random().toString(36).slice(2, 11)}`;
8
+ editor.id = id;
9
+ trigger.setAttribute("aria-controls", id);
10
+ const surface = createAnchoredSurface(editor, { anchor: trigger });
11
+ surface.hide();
12
+ let opened = false;
13
+ let current = "#000000";
14
+ let external;
15
+ // A hidden input’s value writes also change defaultValue; reset needs the last valid external colour.
16
+ let resetValue = "#000000";
17
+ const valid = value => /^#[0-9a-f]{6}$/i.test(String(value));
18
+ const paint = value => {
19
+ current = value.toLowerCase();
20
+ field.value = current;
21
+ hex.removeAttribute("aria-invalid");
22
+ colour.style.backgroundColor = current;
23
+ trigger.title = current;
24
+ hex.value = current;
25
+ [red, green, blue].forEach((input, i) => { input.value = String(parseInt(current.slice(i * 2 + 1, i * 2 + 3), 16)); });
26
+ };
27
+ paint(current);
28
+ const close = reason => {
29
+ opened = false;
30
+ trigger.setAttribute("aria-expanded", "false");
31
+ surface.hide();
32
+ closeOverlay(document, id);
33
+ if (reason === "escape") trigger.focus();
34
+ };
35
+ const toggle = () => {
36
+ if (host.props.disabled.value) return;
37
+ if (opened) { close("action"); return; }
38
+ opened = true;
39
+ trigger.setAttribute("aria-expanded", "true");
40
+ surface.show();
41
+ openOverlay({ id, modal: false, element: editor, relatedElements: [trigger], dismissible: true, requestClose: close });
42
+ hex.focus();
43
+ };
44
+ const edit = event => {
45
+ event.stopPropagation();
46
+ const value = event.currentTarget === hex ? hex.value : "#" + [red, green, blue].map(input => Number(input.value).toString(16).padStart(2, "0")).join("");
47
+ if (!valid(value)) { hex.setAttribute("aria-invalid", "true"); return; }
48
+ paint(value);
49
+ host.dispatch(event.type, { value: current });
50
+ };
51
+ const escape = event => {
52
+ if (event.key === "Escape" && opened) { event.preventDefault(); close("escape"); }
53
+ };
54
+ trigger.addEventListener("click", toggle);
55
+ editor.addEventListener("keydown", escape);
56
+ for (const input of [hex, red, green, blue]) for (const type of ["input", "change"]) input.addEventListener(type, edit);
57
+ const stop = host.effect(() => {
58
+ const value = host.props.value.value;
59
+ if (value !== external) {
60
+ external = value;
61
+ if (valid(value)) {
62
+ resetValue = String(value).toLowerCase();
63
+ field.defaultValue = resetValue;
64
+ paint(value);
65
+ }
66
+ }
67
+ if (host.props.disabled.value && opened) close("disabled");
68
+ });
69
+ const stopReset = afterFormReset(field, () => { paint(resetValue); close("reset"); });
70
+ return () => {
71
+ stop(); stopReset(); close("disconnect"); surface.destroy();
72
+ trigger.removeEventListener("click", toggle);
73
+ editor.removeEventListener("keydown", escape);
74
+ for (const input of [hex, red, green, blue]) for (const type of ["input", "change"]) input.removeEventListener(type, edit);
75
+ };
76
+ }
@@ -655,8 +655,8 @@
655
655
  --_ui-combobox-popup-shadow: var(--ui-combobox-popup-shadow);
656
656
 
657
657
  --_row: var(--ui-control-size-md);
658
- display: grid;
659
- gap: var(--ui-space-1);
658
+ display: grid !important;
659
+ gap: var(--ui-space-1) !important;
660
660
  min-inline-size: 0;
661
661
  color: var(--ui-text-primary);
662
662
  font: inherit;
@@ -669,17 +669,17 @@
669
669
  /* The field and anything that annotates it sit on one row; the help button is beside the box,
670
670
  not inside it, because a control's box holds its value. */
671
671
  .control {
672
- display: flex;
673
- align-items: center;
674
- gap: var(--ui-space-2);
672
+ display: flex !important;
673
+ align-items: center !important;
674
+ gap: var(--ui-space-2) !important;
675
675
  min-inline-size: 0;
676
676
  }
677
677
 
678
678
  .field {
679
- box-sizing: border-box;
679
+ box-sizing: border-box !important;
680
680
  min-block-size: var(--_row);
681
681
  flex: 1 1 auto;
682
- display: flex;
682
+ display: flex !important;
683
683
  min-inline-size: 0;
684
684
  border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-default));
685
685
  border-radius: var(--_ui-combobox-radius, var(--ui-field-radius, var(--ui-radius-md)));
@@ -694,19 +694,19 @@
694
694
  var(--ui-control-focus-halo-shadow);
695
695
  }
696
696
  .entry {
697
- display: flex;
697
+ display: flex !important;
698
698
  flex: 1 1 auto;
699
699
  min-inline-size: 0;
700
700
  }
701
701
  /* A ghost icon button: the affordance is the mark, not a box around it. */
702
702
  .help {
703
703
  flex: none;
704
- display: inline-flex;
705
- align-items: center;
706
- justify-content: center;
704
+ display: inline-flex !important;
705
+ align-items: center !important;
706
+ justify-content: center !important;
707
707
  inline-size: var(--ui-control-size-sm);
708
708
  block-size: var(--ui-control-size-sm);
709
- padding: 0;
709
+ padding: 0 !important;
710
710
  border: 0;
711
711
  border-radius: var(--ui-radius-round);
712
712
  background: transparent;
@@ -745,34 +745,34 @@
745
745
  width: 100%;
746
746
  min-inline-size: 0;
747
747
  min-block-size: calc(var(--_row) - 2 * var(--ui-border-width));
748
- box-sizing: border-box;
748
+ box-sizing: border-box !important;
749
749
  border: 0;
750
750
  border-radius: inherit;
751
751
  background: transparent;
752
752
  color: inherit;
753
753
  font: inherit;
754
754
  line-height: var(--ui-line-height-tight);
755
- padding: var(--ui-space-2) var(--ui-space-3);
756
- margin: 0;
755
+ padding: var(--ui-control-inset-block-md, var(--ui-space-2)) var(--ui-space-3) !important;
756
+ margin: 0 !important;
757
757
  outline: none;
758
758
  }
759
759
  :host([size="sm"]) {
760
760
  --_row: var(--ui-control-size-sm);
761
761
  }
762
762
  :host([size="sm"]) input {
763
- padding: var(--ui-space-1) var(--ui-space-2);
763
+ padding: var(--ui-control-inset-block-sm, var(--ui-space-1)) var(--ui-space-2) !important;
764
764
  font-size: var(--ui-font-size-sm);
765
765
  }
766
766
  :host([size="lg"]) {
767
767
  --_row: var(--ui-control-size-lg);
768
768
  }
769
769
  :host([size="lg"]) input {
770
- padding: var(--ui-space-3) var(--ui-space-4);
770
+ padding: var(--ui-control-inset-block-lg, var(--ui-space-3)) var(--ui-space-4) !important;
771
771
  font-size: var(--ui-font-size-md);
772
772
  }
773
773
  button {
774
774
  appearance: none;
775
- display: inline-grid;
775
+ display: inline-grid !important;
776
776
  place-items: center;
777
777
  align-self: stretch;
778
778
  border: 0;
@@ -782,11 +782,11 @@
782
782
  font: inherit;
783
783
  font-weight: 400;
784
784
  min-inline-size: 2rem;
785
- padding: 0 var(--ui-space-1);
785
+ padding: 0 var(--ui-space-1) !important;
786
786
  cursor: pointer;
787
787
  }
788
788
  .affordance-icon {
789
- display: block;
789
+ display: block !important;
790
790
  inline-size: var(--ui-icon-size-sm);
791
791
  block-size: var(--ui-icon-size-sm);
792
792
  }
@@ -811,13 +811,13 @@
811
811
  border-color: var(--_ui-combobox-invalid-border, var(--ui-field-danger, var(--ui-danger-solid, var(--ui-accent-active))));
812
812
  }
813
813
  .popup {
814
- box-sizing: border-box;
814
+ box-sizing: border-box !important;
815
815
  min-inline-size: 12rem;
816
816
  max-inline-size: calc(100vw - 1rem);
817
817
  max-block-size: var(--_ui-combobox-max-block-size, 18rem);
818
818
  overflow: auto;
819
- margin: 0;
820
- padding: var(--ui-space-1);
819
+ margin: 0 !important;
820
+ padding: var(--ui-space-1) !important;
821
821
  border: var(--ui-border-width) solid var(--_ui-combobox-popup-border, var(--ui-overlay-border, var(--ui-border-strong)));
822
822
  border-radius: var(--_ui-combobox-popup-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
823
823
  background: var(--_ui-combobox-popup-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
@@ -825,28 +825,28 @@
825
825
  box-shadow: var(--_ui-combobox-popup-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
826
826
  }
827
827
  [hidden] {
828
- display: none;
828
+ display: none !important;
829
829
  }
830
830
  .option[aria-disabled="true"] .primary,
831
831
  .option[aria-disabled="true"] .secondary {
832
832
  color: var(--ui-disabled-text);
833
833
  }
834
834
  .primary {
835
- display: block;
835
+ display: block !important;
836
836
  color: var(--_ui-combobox-option-text, inherit);
837
837
  font-weight: 500;
838
838
  }
839
839
  /* A row with a tag or a description: the label and its tag on one line, the description under them. */
840
840
  .detail {
841
- display: grid;
842
- gap: var(--ui-space-0-5);
841
+ display: grid !important;
842
+ gap: var(--ui-space-0-5) !important;
843
843
  min-inline-size: 0;
844
844
  }
845
845
  .line {
846
- display: flex;
847
- flex-wrap: wrap;
848
- align-items: center;
849
- gap: var(--ui-space-2);
846
+ display: flex !important;
847
+ flex-wrap: wrap !important;
848
+ align-items: center !important;
849
+ gap: var(--ui-space-2) !important;
850
850
  }
851
851
  .description {
852
852
  color: var(--ui-text-muted);
@@ -861,7 +861,7 @@
861
861
  overflow-wrap: anywhere;
862
862
  }
863
863
  .group, .popup .message {
864
- padding: var(--ui-space-2) var(--ui-space-3);
864
+ padding: var(--ui-space-2) var(--ui-space-3) !important;
865
865
  }
866
866
  .sr-only {
867
867
  position: absolute;
@@ -900,33 +900,33 @@
900
900
  /* Multiple mode keeps one control height. Chips and the input scroll within the entry,
901
901
  while the clear and disclosure controls remain fixed at the end of the field. */
902
902
  :host([multiple]) .field {
903
- align-items: center;
903
+ align-items: center !important;
904
904
  min-block-size: var(--_ui-combobox-item-min-block-size, var(--_row));
905
- padding: var(--ui-space-1);
905
+ padding: var(--ui-space-1) !important;
906
906
  }
907
907
  :host([multiple]) .entry {
908
- align-items: center;
909
- gap: var(--ui-space-1);
908
+ align-items: center !important;
909
+ gap: var(--ui-space-1) !important;
910
910
  overflow-x: auto;
911
911
  scrollbar-width: none;
912
912
  }
913
913
  :host([multiple]) .entry::-webkit-scrollbar {
914
- display: none;
914
+ display: none !important;
915
915
  }
916
916
  :host([multiple]) input {
917
917
  flex: 1 0 var(--_ui-combobox-item-input-min-inline-size, 5rem);
918
918
  width: auto;
919
919
  min-block-size: 1.75rem;
920
- padding: var(--ui-space-0-5) var(--ui-space-1);
920
+ padding: var(--ui-space-0-5) var(--ui-space-1) !important;
921
921
  }
922
922
  /* Size variants keep their control height as selections are added. */
923
923
  :host([multiple]):host([size="sm"]) .field {
924
924
  min-block-size: 0;
925
- padding: var(--ui-space-0-5);
925
+ padding: var(--ui-space-0-5) !important;
926
926
  }
927
927
  :host([multiple]):host([size="sm"]) input {
928
928
  min-block-size: calc(var(--_row) - 2 * var(--ui-border-width) - 2 * var(--ui-space-0-5));
929
- padding: 0 var(--ui-space-1);
929
+ padding: 0 var(--ui-space-1) !important;
930
930
  }
931
931
  /* A large multiple field starts at the large control height, as sm starts at the small one. */
932
932
  :host([multiple]):host([size="lg"]) .field {
@@ -937,12 +937,12 @@
937
937
  }
938
938
  .item {
939
939
  appearance: none;
940
- display: inline-flex;
940
+ display: inline-flex !important;
941
941
  flex: none;
942
942
  min-inline-size: 0;
943
943
  max-inline-size: min(100%, var(--_ui-combobox-item-item-max-inline-size, 12rem));
944
944
  overflow: hidden;
945
- padding: 0;
945
+ padding: 0 !important;
946
946
  border: 0;
947
947
  border-radius: var(--ui-radius-sm);
948
948
  background: transparent;
@@ -960,7 +960,7 @@
960
960
 
961
961
  /* A component that sets its display still honours the hidden attribute on its root. */
962
962
  :host[hidden] {
963
- display: none;
963
+ display: none !important;
964
964
  }
965
965
  </style>
966
966
  </template>
@@ -25,20 +25,20 @@
25
25
  :host {
26
26
  --_container-measure: 65ch;
27
27
  --_container-gutters: var(--ui-space-4);
28
- display: block;
28
+ display: block !important;
29
29
  inline-size: 100%;
30
30
  max-inline-size: var(--ui-container-measure, var(--_container-measure));
31
- margin-inline: auto;
32
- padding-inline: var(--ui-container-gutters, var(--_container-gutters));
31
+ margin-inline: auto !important;
32
+ padding-inline: var(--ui-container-gutters, var(--_container-gutters)) !important;
33
33
  }
34
34
 
35
35
  :host([measure="narrow"]) {
36
36
  --_container-measure: 45ch;
37
37
  }
38
38
  :host([fill]) {
39
- box-sizing: border-box;
40
- display: flex;
41
- flex-direction: column;
39
+ box-sizing: border-box !important;
40
+ display: flex !important;
41
+ flex-direction: column !important;
42
42
  flex: 1;
43
43
  min-inline-size: 0;
44
44
  min-block-size: 0;
@@ -58,7 +58,7 @@
58
58
 
59
59
  /* A component that sets its display still honours the hidden attribute on its root. */
60
60
  :host[hidden] {
61
- display: none;
61
+ display: none !important;
62
62
  }
63
63
  </style>
64
64
  </template>
@@ -57,17 +57,17 @@
57
57
  --_ui-context-menu-shadow: var(--ui-context-menu-shadow);
58
58
  --_ui-context-menu-z-index: var(--ui-context-menu-z-index);
59
59
 
60
- display: contents;
60
+ display: contents !important;
61
61
  }
62
62
 
63
63
  .menu {
64
64
  position: fixed;
65
65
  inset: auto;
66
- margin: 0;
67
- display: flex;
68
- flex-direction: column;
69
- box-sizing: border-box;
70
- padding: var(--ui-space-1);
66
+ margin: 0 !important;
67
+ display: flex !important;
68
+ flex-direction: column !important;
69
+ box-sizing: border-box !important;
70
+ padding: var(--ui-space-1) !important;
71
71
  background: var(--_ui-context-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
72
72
  border: var(--ui-border-width) solid var(--_ui-context-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
73
73
  border-radius: var(--_ui-context-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
@@ -88,7 +88,7 @@
88
88
  .menu hr {
89
89
  align-self: stretch;
90
90
  block-size: 0;
91
- margin: var(--ui-space-1) 0;
91
+ margin: var(--ui-space-1) 0 !important;
92
92
  border: 0;
93
93
  border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
94
94
  }
@@ -107,7 +107,7 @@
107
107
 
108
108
  .menu[hidden],
109
109
  .menu[popover]:not(:popover-open) {
110
- display: none;
110
+ display: none !important;
111
111
  }
112
112
 
113
113
  @media (prefers-reduced-motion: reduce) {
@@ -118,7 +118,7 @@
118
118
 
119
119
  /* A component that sets its display still honours the hidden attribute on its root. */
120
120
  :host[hidden] {
121
- display: none;
121
+ display: none !important;
122
122
  }
123
123
  </style>
124
124
  </template>
@@ -9,15 +9,15 @@
9
9
  /* A layout primitive that centres its content in the space, both ways, with room around it: the
10
10
  frame for a view that is one card or one message. */
11
11
  :host {
12
- display: flex;
13
- flex-direction: column;
12
+ display: flex !important;
13
+ flex-direction: column !important;
14
14
  /* Safe: a child wider than the cover keeps its start edge in view instead of overflowing both ways. */
15
- align-items: safe center;
16
- justify-content: center;
17
- gap: var(--ui-space-6);
18
- box-sizing: border-box;
15
+ align-items: safe center !important;
16
+ justify-content: center !important;
17
+ gap: var(--ui-space-6) !important;
18
+ box-sizing: border-box !important;
19
19
  min-block-size: 100dvh;
20
- padding: var(--ui-space-6) var(--ui-space-4);
20
+ padding: var(--ui-space-6) var(--ui-space-4) !important;
21
21
  }
22
22
 
23
23
  :host([size="fill"]) {
@@ -27,7 +27,7 @@
27
27
 
28
28
  /* A component that sets its display still honours the hidden attribute on its root. */
29
29
  :host[hidden] {
30
- display: none;
30
+ display: none !important;
31
31
  }
32
32
  </style>
33
33
  </template>
@@ -9,14 +9,14 @@
9
9
  <style>
10
10
  /* One term and its value in a ui-description-list, laid out by the list's layout. */
11
11
  :host {
12
- display: var(--_ui-description-display, grid);
12
+ display: var(--_ui-description-display, grid) !important;
13
13
  grid-column: var(--_ui-description-column, 1 / -1);
14
14
  grid-template-columns: subgrid;
15
- flex-direction: column;
16
- align-items: var(--_ui-description-align, baseline);
17
- gap: var(--ui-space-1) var(--ui-space-6);
15
+ flex-direction: column !important;
16
+ align-items: var(--_ui-description-align, baseline) !important;
17
+ gap: var(--ui-space-1) var(--ui-space-6) !important;
18
18
  min-inline-size: 0;
19
- padding: var(--_ui-description-padding, 0);
19
+ padding: var(--_ui-description-padding, 0) !important;
20
20
  border-width: var(--_ui-description-border-width, 0);
21
21
  border-style: solid;
22
22
  border-color: var(--_ui-description-border-color, var(--ui-border-default));
@@ -29,7 +29,7 @@
29
29
  }
30
30
 
31
31
  dd {
32
- margin: 0;
32
+ margin: 0 !important;
33
33
  min-inline-size: 0;
34
34
  color: var(--ui-text-primary);
35
35
  font-weight: var(--ui-font-medium);
@@ -40,7 +40,7 @@
40
40
 
41
41
  /* A component that sets its display still honours the hidden attribute on its root. */
42
42
  :host[hidden] {
43
- display: none;
43
+ display: none !important;
44
44
  }
45
45
  </style>
46
46
  </template>
@@ -21,11 +21,11 @@
21
21
  --_min: 10rem;
22
22
  --_track: var(--_min);
23
23
  --_tile-padding: var(--ui-space-3);
24
- display: grid;
24
+ display: grid !important;
25
25
  grid-template-columns: minmax(6rem, max-content) minmax(0, 1fr);
26
- gap: var(--_gap) var(--_column-gap);
26
+ gap: var(--_gap) var(--_column-gap) !important;
27
27
  min-inline-size: 0;
28
- margin: 0;
28
+ margin: 0 !important;
29
29
  }
30
30
 
31
31
  /* Stacked, grid, and tiles set each term above its value, passing the shape to the items through
@@ -78,7 +78,7 @@
78
78
 
79
79
  /* A component that sets its display still honours the hidden attribute on its root. */
80
80
  :host[hidden] {
81
- display: none;
81
+ display: none !important;
82
82
  }
83
83
  </style>
84
84
  </template>
@@ -80,17 +80,17 @@
80
80
 
81
81
  position: fixed;
82
82
  inset: 0;
83
- box-sizing: border-box;
83
+ box-sizing: border-box !important;
84
84
  inline-size: min(
85
85
  calc(100% - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2),
86
86
  var(--ui-dialog-max-width, var(--_ui-dialog-size, 440px))
87
87
  );
88
88
  max-inline-size: none;
89
89
  max-block-size: calc(100dvh - var(--ui-dialog-viewport-gap, var(--ui-space-4)) * 2);
90
- margin: auto;
91
- padding: 0;
90
+ margin: auto !important;
91
+ padding: 0 !important;
92
92
  overflow: hidden;
93
- flex-direction: column;
93
+ flex-direction: column !important;
94
94
  background: var(--ui-dialog-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
95
95
  border: var(--ui-border-width) solid var(--ui-dialog-border, var(--ui-overlay-border, var(--ui-border-strong)));
96
96
  border-radius: var(--ui-dialog-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
@@ -108,7 +108,7 @@
108
108
  }
109
109
 
110
110
  :host[open] {
111
- display: flex;
111
+ display: flex !important;
112
112
  visibility: visible;
113
113
  pointer-events: auto;
114
114
  opacity: 1;
@@ -129,36 +129,36 @@
129
129
  inline-size: 100%;
130
130
  block-size: 100dvh;
131
131
  max-block-size: none;
132
- margin: 0;
132
+ margin: 0 !important;
133
133
  border-radius: var(--ui-dialog-radius, 0);
134
134
  }
135
135
 
136
136
  :host([alert]) .close {
137
- display: none;
137
+ display: none !important;
138
138
  }
139
139
 
140
140
  /* Own the layout wrapper; nested component roots are outside these scoped rules. */
141
141
  header {
142
- display: flex;
143
- align-items: center;
144
- gap: var(--ui-space-3);
142
+ display: flex !important;
143
+ align-items: center !important;
144
+ gap: var(--ui-space-3) !important;
145
145
  flex: none;
146
146
  /* The title's ink sits inside its line box and the taller close target. Balance that
147
147
  visible top inset against the action row's bottom inset, not just the boxes. */
148
- padding: calc(var(--ui-space-3) + var(--ui-space-1) / 2) var(--ui-space-3) var(--ui-space-3) var(--ui-space-5);
148
+ padding: calc(var(--ui-space-3) + var(--ui-space-1) / 2) var(--ui-space-3) var(--ui-space-3) var(--ui-space-5) !important;
149
149
  }
150
150
 
151
151
  /* Alerts have no close target to add height above the title. */
152
152
  :host([alert]) header {
153
- padding: var(--ui-space-5) var(--ui-space-5) var(--ui-space-3);
153
+ padding: var(--ui-space-5) var(--ui-space-5) var(--ui-space-3) !important;
154
154
  }
155
155
 
156
156
  /* :host-qualified so page heading rules that reach in cannot outrank the dialog chrome. */
157
157
  :host .title {
158
158
  flex: 1;
159
159
  min-inline-size: 0;
160
- margin: 0;
161
- padding: 0;
160
+ margin: 0 !important;
161
+ padding: 0 !important;
162
162
  border: 0;
163
163
  color: var(--ui-text-primary);
164
164
  letter-spacing: normal;
@@ -168,13 +168,13 @@
168
168
  }
169
169
 
170
170
  .close {
171
- display: inline-grid;
171
+ display: inline-grid !important;
172
172
  place-items: center;
173
173
  flex: none;
174
- margin-inline-start: auto;
174
+ margin-inline-start: auto !important;
175
175
  inline-size: var(--ui-control-size-sm);
176
176
  block-size: var(--ui-control-size-sm);
177
- padding: 0;
177
+ padding: 0 !important;
178
178
  border: 0;
179
179
  border-radius: var(--ui-radius-round);
180
180
  background: transparent;
@@ -223,24 +223,24 @@
223
223
  }
224
224
 
225
225
  .body {
226
- display: flex;
227
- flex-direction: column;
226
+ display: flex !important;
227
+ flex-direction: column !important;
228
228
  flex: 1 1 auto;
229
229
  min-block-size: 0;
230
- padding: var(--ui-space-3) var(--ui-space-5) var(--ui-space-5);
230
+ padding: var(--ui-space-3) var(--ui-space-5) var(--ui-space-5) !important;
231
231
  }
232
232
 
233
233
  footer {
234
- display: flex;
234
+ display: flex !important;
235
235
  flex: none;
236
- flex-wrap: wrap;
237
- justify-content: flex-end;
238
- gap: var(--ui-space-2);
239
- padding: 0 var(--ui-space-5) var(--ui-space-5);
236
+ flex-wrap: wrap !important;
237
+ justify-content: flex-end !important;
238
+ gap: var(--ui-space-2) !important;
239
+ padding: 0 var(--ui-space-5) var(--ui-space-5) !important;
240
240
  }
241
241
 
242
242
  footer:empty {
243
- display: none;
243
+ display: none !important;
244
244
  }
245
245
 
246
246
  @keyframes ui-dialog-enter {