@threadlabs/looma 0.28.4 → 0.28.6

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 (437) hide show
  1. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.html +96 -0
  2. package/components/ui-editor-image-toolbar/ui-editor-image-toolbar.js +56 -0
  3. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +3 -2
  4. package/dist/index.js +34 -33
  5. package/package.json +3 -2
  6. package/styles/ui-action-bar.css +13 -6
  7. package/styles/ui-affordance-scope.css +12 -5
  8. package/styles/ui-avatar-group.css +17 -10
  9. package/styles/ui-avatar.css +23 -16
  10. package/styles/ui-badge.css +78 -71
  11. package/styles/ui-breadcrumb-item.css +12 -5
  12. package/styles/ui-breadcrumbs.css +10 -3
  13. package/styles/ui-button.css +79 -72
  14. package/styles/ui-callout.css +29 -22
  15. package/styles/ui-card.css +25 -18
  16. package/styles/ui-checkbox.css +45 -37
  17. package/styles/ui-cluster.css +34 -27
  18. package/styles/ui-combobox.css +46 -39
  19. package/styles/ui-container.css +20 -13
  20. package/styles/ui-context-menu.css +17 -10
  21. package/styles/ui-cover.css +12 -5
  22. package/styles/ui-description-item.css +10 -3
  23. package/styles/ui-description-list.css +20 -13
  24. package/styles/ui-dialog.css +44 -35
  25. package/styles/ui-disclosure.css +32 -25
  26. package/styles/ui-editable.css +15 -8
  27. package/styles/ui-editor-image-toolbar.css +1 -0
  28. package/styles/ui-editor-insert-table-grid.css +11 -4
  29. package/styles/ui-editor-mention-menu-item.css +17 -8
  30. package/styles/ui-editor-mention-menu.css +14 -7
  31. package/styles/ui-editor-slash-menu-group.css +10 -3
  32. package/styles/ui-editor-slash-menu-item.css +15 -8
  33. package/styles/ui-editor-slash-menu.css +15 -8
  34. package/styles/ui-editor-surface.css +10 -3
  35. package/styles/ui-editor-table-context-menu.css +17 -10
  36. package/styles/ui-editor-table-overlay.css +17 -10
  37. package/styles/ui-editor-table-toolbar.css +22 -15
  38. package/styles/ui-editor-toolbar.css +18 -11
  39. package/styles/ui-floating-action-button.css +21 -14
  40. package/styles/ui-form-field.css +20 -13
  41. package/styles/ui-grid.css +21 -14
  42. package/styles/ui-icon-button.css +80 -73
  43. package/styles/ui-icon.css +14 -7
  44. package/styles/ui-image.css +25 -18
  45. package/styles/ui-input-group.css +34 -27
  46. package/styles/ui-input.css +42 -35
  47. package/styles/ui-list-item.css +33 -26
  48. package/styles/ui-list.css +22 -15
  49. package/styles/ui-listbox.css +22 -14
  50. package/styles/ui-menu-group.css +10 -3
  51. package/styles/ui-menu-item.css +29 -22
  52. package/styles/ui-menu.css +25 -18
  53. package/styles/ui-meter.css +36 -29
  54. package/styles/ui-nav-item.css +26 -19
  55. package/styles/ui-page-header.css +12 -5
  56. package/styles/ui-popover.css +27 -20
  57. package/styles/ui-radio-group.css +14 -6
  58. package/styles/ui-radio.css +24 -17
  59. package/styles/ui-reel.css +28 -21
  60. package/styles/ui-scroll-area.css +22 -15
  61. package/styles/ui-search-result-row.css +28 -21
  62. package/styles/ui-search-shell.css +24 -17
  63. package/styles/ui-section.css +14 -7
  64. package/styles/ui-select.css +33 -26
  65. package/styles/ui-separator.css +17 -10
  66. package/styles/ui-sidebar.css +35 -28
  67. package/styles/ui-spinner.css +32 -23
  68. package/styles/ui-stack.css +29 -21
  69. package/styles/ui-status-message.css +14 -7
  70. package/styles/ui-switch.css +29 -22
  71. package/styles/ui-switcher.css +27 -20
  72. package/styles/ui-table.css +14 -7
  73. package/styles/ui-tabs.css +24 -17
  74. package/styles/ui-text.css +35 -28
  75. package/styles/ui-textarea.css +37 -30
  76. package/styles/ui-toast-region.css +74 -63
  77. package/styles/ui-toast.css +21 -14
  78. package/styles/ui-tooltip.css +38 -31
  79. package/styles/ui-top-bar.css +19 -12
  80. package/styles/ui-tree-item.css +79 -71
  81. package/styles/ui-tree.css +18 -11
  82. package/vanilla/UiActionBar.d.ts +1 -1
  83. package/vanilla/UiActionBar.js +1 -1
  84. package/vanilla/UiAffordanceScope.d.ts +1 -1
  85. package/vanilla/UiAffordanceScope.js +1 -1
  86. package/vanilla/UiAvatar.d.ts +1 -1
  87. package/vanilla/UiAvatar.js +1 -1
  88. package/vanilla/UiAvatarGroup.d.ts +1 -1
  89. package/vanilla/UiAvatarGroup.js +1 -1
  90. package/vanilla/UiBadge.d.ts +1 -1
  91. package/vanilla/UiBadge.js +1 -1
  92. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  93. package/vanilla/UiBreadcrumbItem.js +1 -1
  94. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  95. package/vanilla/UiBreadcrumbs.js +1 -1
  96. package/vanilla/UiButton.d.ts +1 -1
  97. package/vanilla/UiButton.js +19 -57
  98. package/vanilla/UiCallout.d.ts +1 -1
  99. package/vanilla/UiCallout.js +25 -73
  100. package/vanilla/UiCard.d.ts +1 -1
  101. package/vanilla/UiCard.js +1 -1
  102. package/vanilla/UiCheckbox.d.ts +1 -1
  103. package/vanilla/UiCheckbox.js +1 -1
  104. package/vanilla/UiCluster.d.ts +1 -1
  105. package/vanilla/UiCluster.js +1 -1
  106. package/vanilla/UiCombobox.d.ts +1 -1
  107. package/vanilla/UiCombobox.js +60 -166
  108. package/vanilla/UiContainer.d.ts +1 -1
  109. package/vanilla/UiContainer.js +1 -1
  110. package/vanilla/UiContextMenu.d.ts +1 -1
  111. package/vanilla/UiContextMenu.js +1 -1
  112. package/vanilla/UiCover.d.ts +1 -1
  113. package/vanilla/UiCover.js +1 -1
  114. package/vanilla/UiDescriptionItem.d.ts +1 -1
  115. package/vanilla/UiDescriptionItem.js +1 -1
  116. package/vanilla/UiDescriptionList.d.ts +1 -1
  117. package/vanilla/UiDescriptionList.js +1 -1
  118. package/vanilla/UiDialog.d.ts +1 -1
  119. package/vanilla/UiDialog.js +4 -10
  120. package/vanilla/UiDisclosure.d.ts +1 -1
  121. package/vanilla/UiDisclosure.js +1 -1
  122. package/vanilla/UiEditable.d.ts +1 -1
  123. package/vanilla/UiEditable.js +7 -19
  124. package/vanilla/UiEditorImageToolbar.d.ts +19 -0
  125. package/vanilla/UiEditorImageToolbar.js +171 -0
  126. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  127. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  128. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  129. package/vanilla/UiEditorMentionMenu.js +17 -37
  130. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  131. package/vanilla/UiEditorMentionMenuItem.js +4 -10
  132. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  133. package/vanilla/UiEditorSlashMenu.js +5 -4
  134. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  135. package/vanilla/UiEditorSlashMenuGroup.js +1 -1
  136. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  137. package/vanilla/UiEditorSlashMenuItem.js +7 -19
  138. package/vanilla/UiEditorSurface.d.ts +1 -1
  139. package/vanilla/UiEditorSurface.js +1 -1
  140. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  141. package/vanilla/UiEditorTableContextMenu.js +6 -14
  142. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  143. package/vanilla/UiEditorTableOverlay.js +9 -25
  144. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  145. package/vanilla/UiEditorTableToolbar.js +25 -77
  146. package/vanilla/UiEditorToolbar.d.ts +1 -1
  147. package/vanilla/UiEditorToolbar.js +1 -1
  148. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  149. package/vanilla/UiFloatingActionButton.js +1 -1
  150. package/vanilla/UiFormField.d.ts +1 -1
  151. package/vanilla/UiFormField.js +1 -1
  152. package/vanilla/UiGrid.d.ts +1 -1
  153. package/vanilla/UiGrid.js +1 -1
  154. package/vanilla/UiIcon.d.ts +1 -1
  155. package/vanilla/UiIcon.js +15 -47
  156. package/vanilla/UiIconButton.d.ts +1 -1
  157. package/vanilla/UiIconButton.js +4 -10
  158. package/vanilla/UiImage.d.ts +1 -1
  159. package/vanilla/UiImage.js +1 -1
  160. package/vanilla/UiInput.d.ts +1 -1
  161. package/vanilla/UiInput.js +1 -1
  162. package/vanilla/UiInputGroup.d.ts +1 -1
  163. package/vanilla/UiInputGroup.js +1 -1
  164. package/vanilla/UiList.d.ts +1 -1
  165. package/vanilla/UiList.js +1 -1
  166. package/vanilla/UiListItem.d.ts +1 -1
  167. package/vanilla/UiListItem.js +1 -1
  168. package/vanilla/UiListbox.d.ts +1 -1
  169. package/vanilla/UiListbox.js +4 -10
  170. package/vanilla/UiMenu.d.ts +1 -1
  171. package/vanilla/UiMenu.js +1 -1
  172. package/vanilla/UiMenuGroup.d.ts +1 -1
  173. package/vanilla/UiMenuGroup.js +4 -10
  174. package/vanilla/UiMenuItem.d.ts +1 -1
  175. package/vanilla/UiMenuItem.js +4 -10
  176. package/vanilla/UiMeter.d.ts +1 -1
  177. package/vanilla/UiMeter.js +13 -33
  178. package/vanilla/UiNavItem.d.ts +1 -1
  179. package/vanilla/UiNavItem.js +1 -1
  180. package/vanilla/UiPageHeader.d.ts +1 -1
  181. package/vanilla/UiPageHeader.js +1 -1
  182. package/vanilla/UiPopover.d.ts +1 -1
  183. package/vanilla/UiPopover.js +1 -1
  184. package/vanilla/UiRadio.d.ts +1 -1
  185. package/vanilla/UiRadio.js +1 -1
  186. package/vanilla/UiRadioGroup.d.ts +1 -1
  187. package/vanilla/UiRadioGroup.js +1 -1
  188. package/vanilla/UiReel.d.ts +1 -1
  189. package/vanilla/UiReel.js +1 -1
  190. package/vanilla/UiScrollArea.d.ts +1 -1
  191. package/vanilla/UiScrollArea.js +1 -1
  192. package/vanilla/UiSearchResultRow.d.ts +1 -1
  193. package/vanilla/UiSearchResultRow.js +1 -1
  194. package/vanilla/UiSearchShell.d.ts +1 -1
  195. package/vanilla/UiSearchShell.js +1 -1
  196. package/vanilla/UiSection.d.ts +1 -1
  197. package/vanilla/UiSection.js +1 -1
  198. package/vanilla/UiSelect.d.ts +1 -1
  199. package/vanilla/UiSelect.js +1 -1
  200. package/vanilla/UiSeparator.d.ts +1 -1
  201. package/vanilla/UiSeparator.js +1 -1
  202. package/vanilla/UiSidebar.d.ts +1 -1
  203. package/vanilla/UiSidebar.js +1 -1
  204. package/vanilla/UiSpinner.d.ts +1 -1
  205. package/vanilla/UiSpinner.js +1 -1
  206. package/vanilla/UiStack.d.ts +1 -1
  207. package/vanilla/UiStack.js +1 -1
  208. package/vanilla/UiStatusMessage.d.ts +1 -1
  209. package/vanilla/UiStatusMessage.js +1 -1
  210. package/vanilla/UiSwitch.d.ts +1 -1
  211. package/vanilla/UiSwitch.js +1 -1
  212. package/vanilla/UiSwitcher.d.ts +1 -1
  213. package/vanilla/UiSwitcher.js +1 -1
  214. package/vanilla/UiTable.d.ts +1 -1
  215. package/vanilla/UiTable.js +1 -1
  216. package/vanilla/UiTabs.d.ts +1 -1
  217. package/vanilla/UiTabs.js +1 -1
  218. package/vanilla/UiText.d.ts +1 -1
  219. package/vanilla/UiText.js +1 -1
  220. package/vanilla/UiTextarea.d.ts +1 -1
  221. package/vanilla/UiTextarea.js +1 -1
  222. package/vanilla/UiToast.d.ts +1 -1
  223. package/vanilla/UiToast.js +1 -1
  224. package/vanilla/UiToastRegion.d.ts +1 -1
  225. package/vanilla/UiToastRegion.js +1 -1
  226. package/vanilla/UiTooltip.d.ts +1 -1
  227. package/vanilla/UiTooltip.js +1 -1
  228. package/vanilla/UiTopBar.d.ts +1 -1
  229. package/vanilla/UiTopBar.js +1 -1
  230. package/vanilla/UiTree.d.ts +1 -1
  231. package/vanilla/UiTree.js +1 -1
  232. package/vanilla/UiTreeItem.d.ts +1 -1
  233. package/vanilla/UiTreeItem.js +7 -19
  234. package/vanilla/index.js +1 -0
  235. package/vue/UiActionBar.vue +46 -78
  236. package/vue/UiAffordanceScope.vue +27 -66
  237. package/vue/UiAvatar.d.ts +10 -7
  238. package/vue/UiAvatar.vue +100 -218
  239. package/vue/UiAvatarGroup.d.ts +10 -7
  240. package/vue/UiAvatarGroup.vue +78 -160
  241. package/vue/UiBadge.d.ts +1 -1
  242. package/vue/UiBadge.vue +483 -520
  243. package/vue/UiBreadcrumbItem.vue +52 -123
  244. package/vue/UiBreadcrumbs.vue +27 -70
  245. package/vue/UiButton.d.ts +2 -2
  246. package/vue/UiButton.vue +420 -471
  247. package/vue/UiCallout.vue +131 -175
  248. package/vue/UiCard.d.ts +1 -1
  249. package/vue/UiCard.vue +112 -151
  250. package/vue/UiCheckbox.d.ts +13 -10
  251. package/vue/UiCheckbox.vue +160 -221
  252. package/vue/UiCluster.d.ts +1 -1
  253. package/vue/UiCluster.vue +84 -128
  254. package/vue/UiCombobox.d.ts +71 -68
  255. package/vue/UiCombobox.vue +417 -743
  256. package/vue/UiContainer.vue +43 -87
  257. package/vue/UiContextMenu.d.ts +6 -6
  258. package/vue/UiContextMenu.vue +78 -117
  259. package/vue/UiCover.vue +29 -69
  260. package/vue/UiDescriptionItem.vue +39 -82
  261. package/vue/UiDescriptionList.vue +64 -107
  262. package/vue/UiDialog.d.ts +22 -19
  263. package/vue/UiDialog.vue +193 -246
  264. package/vue/UiDisclosure.d.ts +22 -19
  265. package/vue/UiDisclosure.vue +192 -283
  266. package/vue/UiEditable.d.ts +5 -5
  267. package/vue/UiEditable.vue +124 -207
  268. package/vue/UiEditorImageToolbar.d.ts +54 -0
  269. package/vue/UiEditorImageToolbar.js +2 -0
  270. package/vue/UiEditorImageToolbar.vue +415 -0
  271. package/vue/UiEditorInsertTableGrid.d.ts +2 -2
  272. package/vue/UiEditorInsertTableGrid.vue +98 -266
  273. package/vue/UiEditorMentionMenu.d.ts +15 -12
  274. package/vue/UiEditorMentionMenu.vue +150 -239
  275. package/vue/UiEditorMentionMenuItem.vue +66 -110
  276. package/vue/UiEditorSlashMenu.d.ts +16 -13
  277. package/vue/UiEditorSlashMenu.vue +172 -253
  278. package/vue/UiEditorSlashMenuGroup.vue +25 -69
  279. package/vue/UiEditorSlashMenuItem.vue +67 -115
  280. package/vue/UiEditorSurface.vue +19 -63
  281. package/vue/UiEditorTableContextMenu.vue +135 -269
  282. package/vue/UiEditorTableOverlay.d.ts +2 -2
  283. package/vue/UiEditorTableOverlay.vue +310 -479
  284. package/vue/UiEditorTableToolbar.d.ts +2 -2
  285. package/vue/UiEditorTableToolbar.vue +182 -357
  286. package/vue/UiEditorToolbar.vue +143 -183
  287. package/vue/UiFloatingActionButton.vue +70 -114
  288. package/vue/UiFormField.d.ts +1 -1
  289. package/vue/UiFormField.vue +76 -117
  290. package/vue/UiGrid.d.ts +1 -1
  291. package/vue/UiGrid.vue +65 -103
  292. package/vue/UiIcon.vue +32 -106
  293. package/vue/UiIconButton.d.ts +2 -2
  294. package/vue/UiIconButton.vue +359 -411
  295. package/vue/UiImage.vue +145 -180
  296. package/vue/UiInput.vue +158 -190
  297. package/vue/UiInputGroup.vue +199 -239
  298. package/vue/UiList.vue +67 -109
  299. package/vue/UiListItem.vue +154 -201
  300. package/vue/UiListbox.d.ts +10 -7
  301. package/vue/UiListbox.vue +86 -260
  302. package/vue/UiMenu.d.ts +11 -11
  303. package/vue/UiMenu.vue +118 -152
  304. package/vue/UiMenuGroup.vue +21 -67
  305. package/vue/UiMenuItem.d.ts +19 -16
  306. package/vue/UiMenuItem.vue +169 -262
  307. package/vue/UiMeter.d.ts +4 -4
  308. package/vue/UiMeter.vue +166 -680
  309. package/vue/UiNavItem.vue +140 -213
  310. package/vue/UiPageHeader.vue +81 -127
  311. package/vue/UiPopover.d.ts +7 -7
  312. package/vue/UiPopover.vue +90 -129
  313. package/vue/UiRadio.d.ts +12 -9
  314. package/vue/UiRadio.vue +91 -149
  315. package/vue/UiRadioGroup.d.ts +2 -2
  316. package/vue/UiRadioGroup.vue +47 -85
  317. package/vue/UiReel.vue +89 -130
  318. package/vue/UiScrollArea.d.ts +1 -1
  319. package/vue/UiScrollArea.vue +78 -119
  320. package/vue/UiSearchResultRow.vue +96 -149
  321. package/vue/UiSearchShell.d.ts +2 -2
  322. package/vue/UiSearchShell.vue +159 -196
  323. package/vue/UiSection.vue +105 -149
  324. package/vue/UiSelect.d.ts +1 -1
  325. package/vue/UiSelect.vue +114 -146
  326. package/vue/UiSeparator.vue +42 -85
  327. package/vue/UiSidebar.d.ts +10 -7
  328. package/vue/UiSidebar.vue +193 -260
  329. package/vue/UiSpinner.vue +54 -130
  330. package/vue/UiStack.vue +66 -107
  331. package/vue/UiStatusMessage.d.ts +1 -1
  332. package/vue/UiStatusMessage.vue +61 -135
  333. package/vue/UiSwitch.d.ts +12 -9
  334. package/vue/UiSwitch.vue +136 -194
  335. package/vue/UiSwitcher.vue +69 -107
  336. package/vue/UiTable.vue +121 -156
  337. package/vue/UiTabs.d.ts +1 -1
  338. package/vue/UiTabs.vue +139 -267
  339. package/vue/UiText.d.ts +4 -4
  340. package/vue/UiText.vue +145 -184
  341. package/vue/UiTextarea.d.ts +2 -2
  342. package/vue/UiTextarea.vue +162 -194
  343. package/vue/UiToast.vue +70 -118
  344. package/vue/UiToastRegion.vue +157 -276
  345. package/vue/UiTooltip.d.ts +21 -18
  346. package/vue/UiTooltip.vue +174 -234
  347. package/vue/UiTopBar.vue +48 -76
  348. package/vue/UiTree.vue +46 -79
  349. package/vue/UiTreeItem.d.ts +18 -15
  350. package/vue/UiTreeItem.vue +526 -668
  351. package/vue/chunks/UiActionBar.js +5 -17
  352. package/vue/chunks/UiAffordanceScope.js +7 -26
  353. package/vue/chunks/UiAvatar.js +20 -74
  354. package/vue/chunks/UiAvatarGroup.js +14 -56
  355. package/vue/chunks/UiBadge.js +10 -28
  356. package/vue/chunks/UiBreadcrumbItem.js +11 -41
  357. package/vue/chunks/UiBreadcrumbs.js +7 -25
  358. package/vue/chunks/UiButton.js +80 -103
  359. package/vue/chunks/UiCallout.js +9 -27
  360. package/vue/chunks/UiCard.js +33 -53
  361. package/vue/chunks/UiCheckbox.js +14 -46
  362. package/vue/chunks/UiCluster.js +13 -31
  363. package/vue/chunks/UiCombobox.js +99 -237
  364. package/vue/chunks/UiContainer.js +9 -27
  365. package/vue/chunks/UiContextMenu.js +7 -26
  366. package/vue/chunks/UiCover.js +7 -25
  367. package/vue/chunks/UiDescriptionItem.js +6 -24
  368. package/vue/chunks/UiDescriptionList.js +9 -27
  369. package/vue/chunks/UiDialog.js +18 -47
  370. package/vue/chunks/UiDisclosure.js +19 -66
  371. package/vue/chunks/UiEditable.js +18 -60
  372. package/vue/chunks/UiEditorImageToolbar.js +515 -0
  373. package/vue/chunks/UiEditorInsertTableGrid.js +14 -112
  374. package/vue/chunks/UiEditorMentionMenu.js +16 -54
  375. package/vue/chunks/UiEditorMentionMenuItem.js +10 -28
  376. package/vue/chunks/UiEditorSlashMenu.js +17 -46
  377. package/vue/chunks/UiEditorSlashMenuGroup.js +7 -25
  378. package/vue/chunks/UiEditorSlashMenuItem.js +16 -31
  379. package/vue/chunks/UiEditorSurface.js +7 -25
  380. package/vue/chunks/UiEditorTableContextMenu.js +25 -102
  381. package/vue/chunks/UiEditorTableOverlay.js +41 -104
  382. package/vue/chunks/UiEditorTableToolbar.js +44 -122
  383. package/vue/chunks/UiEditorToolbar.js +7 -26
  384. package/vue/chunks/UiFloatingActionButton.js +10 -28
  385. package/vue/chunks/UiFormField.js +8 -27
  386. package/vue/chunks/UiGrid.js +10 -28
  387. package/vue/chunks/UiIcon.js +21 -74
  388. package/vue/chunks/UiIconButton.js +18 -50
  389. package/vue/chunks/UiImage.js +14 -33
  390. package/vue/chunks/UiInput.js +12 -31
  391. package/vue/chunks/UiInputGroup.js +10 -29
  392. package/vue/chunks/UiList.js +17 -37
  393. package/vue/chunks/UiListItem.js +12 -30
  394. package/vue/chunks/UiListbox.js +22 -124
  395. package/vue/chunks/UiMenu.js +13 -32
  396. package/vue/chunks/UiMenuGroup.js +8 -26
  397. package/vue/chunks/UiMenuItem.js +35 -80
  398. package/vue/chunks/UiMeter.js +17 -351
  399. package/vue/chunks/UiNavItem.js +23 -57
  400. package/vue/chunks/UiPageHeader.js +7 -25
  401. package/vue/chunks/UiPopover.js +9 -28
  402. package/vue/chunks/UiRadio.js +11 -43
  403. package/vue/chunks/UiRadioGroup.js +13 -32
  404. package/vue/chunks/UiReel.js +10 -28
  405. package/vue/chunks/UiScrollArea.js +10 -29
  406. package/vue/chunks/UiSearchResultRow.js +10 -28
  407. package/vue/chunks/UiSearchShell.js +9 -28
  408. package/vue/chunks/UiSection.js +9 -27
  409. package/vue/chunks/UiSelect.js +10 -29
  410. package/vue/chunks/UiSeparator.js +10 -28
  411. package/vue/chunks/UiSidebar.js +15 -47
  412. package/vue/chunks/UiSpinner.js +8 -44
  413. package/vue/chunks/UiStack.js +12 -30
  414. package/vue/chunks/UiStatusMessage.js +10 -42
  415. package/vue/chunks/UiSwitch.js +11 -43
  416. package/vue/chunks/UiSwitcher.js +9 -28
  417. package/vue/chunks/UiTable.js +7 -26
  418. package/vue/chunks/UiTabs.js +15 -91
  419. package/vue/chunks/UiText.js +148 -168
  420. package/vue/chunks/UiTextarea.js +16 -35
  421. package/vue/chunks/UiToast.js +13 -37
  422. package/vue/chunks/UiToastRegion.js +16 -88
  423. package/vue/chunks/UiTooltip.js +14 -46
  424. package/vue/chunks/UiTopBar.js +5 -17
  425. package/vue/chunks/UiTree.js +13 -32
  426. package/vue/chunks/UiTreeItem.js +34 -90
  427. package/vue/chunks/_plugin-vue_export-helper.js +904 -1
  428. package/vue/chunks/control.js +3 -0
  429. package/vue/chunks/props.js +1 -1
  430. package/vue/components.css +7902 -7830
  431. package/vue/editor/index.js +42 -171
  432. package/vue/editor/primitives.d.ts +9 -1
  433. package/vue/host.ts +999 -14
  434. package/vue/index.d.ts +1 -0
  435. package/vue/index.js +9 -8
  436. package/vue/chunks/host.js +0 -443
  437. package/vue/editor/image-controls.d.ts +0 -19
@@ -1,8 +1,14 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
3
  import { computed, getCurrentInstance, provide, ref, useTemplateRef, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
- import { createDispatch, useComponentHost } from './host'
5
+ import {
6
+ checkHydratedRoot,
7
+ createDispatch,
8
+ nativeAttrs,
9
+ useComponentHost,
10
+ useReflectedProp,
11
+ } from './host'
6
12
  import { acceptsControllerWrite } from './props'
7
13
  import { checkedProp, propValidityState, vPropValidity } from './props'
8
14
 
@@ -87,38 +93,7 @@ void checkedProps.value
87
93
  watchSyncEffect(() => {
88
94
  void checkedProps.value
89
95
  })
90
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
91
- const names = Object.keys(attrs)
92
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
93
- return Object.fromEntries(names.map((name) => [
94
- Object.hasOwn(Object.prototype, name)
95
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
96
- : name,
97
- attrs[name],
98
- ]))
99
- }
100
- const componentInstance = getCurrentInstance()
101
- function reflectedProp(
102
- name: string,
103
- kebab: string,
104
- value: unknown,
105
- fallback: string | undefined,
106
- bound: boolean,
107
- separator?: string,
108
- ): string | undefined {
109
- const incoming = componentInstance?.vnode.props
110
- if (
111
- !bound
112
- && (incoming === null || incoming === undefined
113
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
114
- ) return fallback
115
- if (value === null || value === undefined) return undefined
116
- return Array.isArray(value) && separator !== undefined
117
- ? value.join(separator)
118
- : typeof value === 'object'
119
- ? JSON.stringify(value)
120
- : String(value)
121
- }
96
+ const reflectedProp = useReflectedProp()
122
97
  const hydrationInstance = getCurrentInstance()
123
98
  const emit = defineEmits<{
124
99
  'update:open': [value: boolean]
@@ -137,22 +112,7 @@ const root = ref<HTMLElement | null>(null)
137
112
  const dialogElement = useTemplateRef<HTMLElement>('dialogElement')
138
113
  const internalOpen = ref(false)
139
114
  provide('html-next:ui-search-shell:internalOpen', internalOpen)
140
- const hydrationNode = hydrationInstance?.vnode.el
141
- if (
142
- typeof window !== 'undefined' && hydrationNode != null
143
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
144
- ) {
145
- throw Object.assign(
146
- new Error('HR005: Server markup for <ui-search-shell> has an incompatible root.'),
147
- {
148
- name: 'HtmlDiagnosticError',
149
- diagnostic: Object.freeze({
150
- code: 'HR005',
151
- message: 'Server markup for <ui-search-shell> has an incompatible root.',
152
- }),
153
- },
154
- )
155
- }
115
+ checkHydratedRoot('div', 'ui-search-shell')
156
116
 
157
117
  const isCloseDetail = (
158
118
  detail: unknown,
@@ -204,7 +164,7 @@ useComponentHost(() => import('../components/ui-search-shell/ui-search-shell.js'
204
164
 
205
165
  <template>
206
166
  <div
207
- data-component="ui-search-shell"
167
+ class="ui-search-shell"
208
168
  v-bind="nativeAttrs($attrs)"
209
169
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
210
170
  :data-dismissible="reflectedProp('dismissible', 'dismissible', checkedProps.dismissible, undefined, false)"
@@ -267,168 +227,171 @@ useComponentHost(() => import('../components/ui-search-shell/ui-search-shell.js'
267
227
  inherits: false;
268
228
  }
269
229
 
270
- [data-component~="ui-search-shell"] {
271
- /* Hooks do not inherit, so the parts below read them from the root. */
272
- --_ui-search-shell-z-index: var(--ui-search-shell-z-index);
273
- --_ui-search-shell-padding-top: var(--ui-search-shell-padding-top);
274
- --_ui-search-shell-viewport-gap: var(--ui-search-shell-viewport-gap);
275
- --_ui-search-shell-max-width: var(--ui-search-shell-max-width);
276
- --_ui-search-shell-max-height: var(--ui-search-shell-max-height);
277
- --_ui-search-shell-surface: var(--ui-search-shell-surface);
278
- --_ui-search-shell-border: var(--ui-search-shell-border);
279
- --_ui-search-shell-radius: var(--ui-search-shell-radius);
280
- --_ui-search-shell-shadow: var(--ui-search-shell-shadow);
281
- --_ui-search-shell-focus-color: var(--ui-search-shell-focus-color);
282
-
283
- display: contents;
284
- }
230
+ /* Laid out like the dialog's action row: actions right-aligned, spaced as buttons, no fill. */
285
231
 
286
- dialog {
287
- position: fixed;
288
- inset: 0;
289
- z-index: var(--_ui-search-shell-z-index, 400);
290
- box-sizing: border-box;
291
- inline-size: 100%;
292
- max-inline-size: none;
293
- block-size: 100%;
294
- max-block-size: none;
295
- margin: 0;
296
- padding: var(--_ui-search-shell-padding-top, 10vh)
297
- var(--_ui-search-shell-viewport-gap, var(--ui-space-4))
298
- var(--_ui-search-shell-viewport-gap, var(--ui-space-4));
299
- overflow: auto;
300
- border: 0;
301
- background: var(--ui-overlay-backdrop);
302
- color: var(--ui-text-primary);
303
- }
232
+ /* A component that sets its display still honours the hidden attribute on its root. */
304
233
 
305
- dialog:modal::backdrop {
306
- background: var(--ui-overlay-backdrop);
307
- }
234
+ @scope (.ui-search-shell) {
235
+ :scope:where(:scope) {
236
+ /* Hooks do not inherit, so the parts below read them from the root. */
237
+ --_ui-search-shell-z-index: var(--ui-search-shell-z-index);
238
+ --_ui-search-shell-padding-top: var(--ui-search-shell-padding-top);
239
+ --_ui-search-shell-viewport-gap: var(--ui-search-shell-viewport-gap);
240
+ --_ui-search-shell-max-width: var(--ui-search-shell-max-width);
241
+ --_ui-search-shell-max-height: var(--ui-search-shell-max-height);
242
+ --_ui-search-shell-surface: var(--ui-search-shell-surface);
243
+ --_ui-search-shell-border: var(--ui-search-shell-border);
244
+ --_ui-search-shell-radius: var(--ui-search-shell-radius);
245
+ --_ui-search-shell-shadow: var(--ui-search-shell-shadow);
246
+ --_ui-search-shell-focus-color: var(--ui-search-shell-focus-color);
308
247
 
309
- dialog:modal {
310
- background: transparent;
311
- }
248
+ display: contents;
249
+ }
312
250
 
313
- dialog[data-ui-backdrop-hidden]::backdrop {
314
- background: transparent;
315
- }
251
+ dialog {
252
+ position: fixed;
253
+ inset: 0;
254
+ z-index: var(--_ui-search-shell-z-index, 400);
255
+ box-sizing: border-box;
256
+ inline-size: 100%;
257
+ max-inline-size: none;
258
+ block-size: 100%;
259
+ max-block-size: none;
260
+ margin: 0;
261
+ padding: var(--_ui-search-shell-padding-top, 10vh)
262
+ var(--_ui-search-shell-viewport-gap, var(--ui-space-4))
263
+ var(--_ui-search-shell-viewport-gap, var(--ui-space-4));
264
+ overflow: auto;
265
+ border: 0;
266
+ background: var(--ui-overlay-backdrop);
267
+ color: var(--ui-text-primary);
268
+ }
316
269
 
317
- .panel {
318
- position: relative;
319
- display: flex;
320
- flex-direction: column;
321
- inline-size: min(100%, var(--_ui-search-shell-max-width, 40rem));
322
- max-block-size: var(--_ui-search-shell-max-height, 80vh);
323
- margin-inline: auto;
324
- overflow: hidden;
325
- background: var(
326
- --_ui-search-shell-surface,
327
- var(--ui-overlay-surface, var(--ui-surface-elevated))
328
- );
329
- border: var(--ui-border-width) solid
330
- var(--_ui-search-shell-border, var(--ui-overlay-border, var(--ui-border-strong)));
331
- border-radius: var(--_ui-search-shell-radius, var(--ui-overlay-radius, var(--ui-radius-dialog)));
332
- box-shadow: var(
333
- --_ui-search-shell-shadow,
334
- var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)))
335
- );
336
- }
270
+ dialog:modal::backdrop {
271
+ background: var(--ui-overlay-backdrop);
272
+ }
337
273
 
338
- .search {
339
- padding: var(--ui-space-3);
340
- }
274
+ dialog:modal {
275
+ background: transparent;
276
+ }
341
277
 
342
- :slotted(input[slot="search"]) {
343
- box-sizing: border-box;
344
- inline-size: 100%;
345
- min-block-size: var(--ui-control-min-block-size);
346
- padding: var(--ui-space-2) var(--ui-space-3);
347
- border: var(--ui-border-width) solid var(--ui-control-border);
348
- border-radius: var(--ui-field-radius, var(--ui-radius-md));
349
- background: var(--ui-control-surface);
350
- color: var(--ui-text-primary);
351
- font: inherit;
352
- box-shadow: var(--ui-shadow-xs);
353
- }
278
+ dialog[data-ui-backdrop-hidden]::backdrop {
279
+ background: transparent;
280
+ }
354
281
 
355
- :slotted(input[slot="search"]:focus-visible) {
356
- border-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
357
- outline: var(--ui-focus-width) solid var(--ui-focus-ring);
358
- outline-offset: var(--ui-focus-width);
359
- }
282
+ .panel {
283
+ position: relative;
284
+ display: flex;
285
+ flex-direction: column;
286
+ inline-size: min(100%, var(--_ui-search-shell-max-width, 40rem));
287
+ max-block-size: var(--_ui-search-shell-max-height, 80vh);
288
+ margin-inline: auto;
289
+ overflow: hidden;
290
+ background: var(
291
+ --_ui-search-shell-surface,
292
+ var(--ui-overlay-surface, var(--ui-surface-elevated))
293
+ );
294
+ border: var(--ui-border-width) solid
295
+ var(--_ui-search-shell-border, var(--ui-overlay-border, var(--ui-border-strong)));
296
+ border-radius: var(
297
+ --_ui-search-shell-radius,
298
+ var(--ui-overlay-radius, var(--ui-radius-dialog))
299
+ );
300
+ box-shadow: var(
301
+ --_ui-search-shell-shadow,
302
+ var(--ui-overlay-shadow, var(--ui-elevation-dialog, var(--ui-shadow-xl)))
303
+ );
304
+ }
360
305
 
361
- .status,
362
- .actions {
363
- flex-shrink: 0;
364
- padding: var(--ui-space-2) var(--ui-space-4);
365
- color: var(--ui-text-secondary);
366
- font-size: var(--ui-font-size-sm);
367
- }
306
+ .search {
307
+ padding: var(--ui-space-3);
308
+ }
368
309
 
369
- .status {
370
- padding-block-start: 0;
371
- }
310
+ :slotted(input[slot="search"]) {
311
+ box-sizing: border-box;
312
+ inline-size: 100%;
313
+ min-block-size: var(--ui-control-min-block-size);
314
+ padding: var(--ui-space-2) var(--ui-space-3);
315
+ border: var(--ui-border-width) solid var(--ui-control-border);
316
+ border-radius: var(--ui-field-radius, var(--ui-radius-md));
317
+ background: var(--ui-control-surface);
318
+ color: var(--ui-text-primary);
319
+ font: inherit;
320
+ box-shadow: var(--ui-shadow-xs);
321
+ }
372
322
 
373
- /* Laid out like the dialog's action row: actions right-aligned, spaced as buttons, no fill. */
374
- .actions {
375
- display: flex;
376
- flex-wrap: wrap;
377
- align-items: center;
378
- justify-content: flex-end;
379
- gap: var(--ui-space-2);
380
- padding: var(--ui-space-3) var(--ui-space-4);
381
- }
323
+ :slotted(input[slot="search"]:focus-visible) {
324
+ border-color: var(--_ui-search-shell-focus-color, var(--ui-control-focus));
325
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring);
326
+ outline-offset: var(--ui-focus-width);
327
+ }
382
328
 
383
- .status:empty,
384
- .actions:empty {
385
- display: none;
386
- }
329
+ .status, .actions {
330
+ flex-shrink: 0;
331
+ padding: var(--ui-space-2) var(--ui-space-4);
332
+ color: var(--ui-text-secondary);
333
+ font-size: var(--ui-font-size-sm);
334
+ }
387
335
 
388
- .body {
389
- flex: 1;
390
- min-block-size: 0;
391
- overflow: auto;
392
- padding: var(--ui-space-2);
393
- /* Each edge that hides content fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
394
- --_ui-scroll-fade-direction: to bottom;
395
- --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
396
- mask-image: linear-gradient(
397
- var(--_ui-scroll-fade-direction),
398
- transparent,
399
- #000 var(--_ui-scroll-fade-start),
400
- #000 calc(100% - var(--_ui-scroll-fade-end)),
401
- transparent
402
- );
403
- animation:
404
- ui-scroll-fade-start linear,
405
- ui-scroll-fade-start-hold linear,
406
- ui-scroll-fade-end-hold linear,
407
- ui-scroll-fade-end linear;
408
- animation-timeline: scroll(self block);
409
- animation-range:
410
- 0 var(--_ui-scroll-fade-size),
411
- var(--_ui-scroll-fade-size) calc(100% + 1px),
412
- -1px calc(100% - var(--_ui-scroll-fade-size)),
413
- calc(100% - var(--_ui-scroll-fade-size)) 100%;
414
- }
336
+ .status {
337
+ padding-block-start: 0;
338
+ }
339
+ .actions {
340
+ display: flex;
341
+ flex-wrap: wrap;
342
+ align-items: center;
343
+ justify-content: flex-end;
344
+ gap: var(--ui-space-2);
345
+ padding: var(--ui-space-3) var(--ui-space-4);
346
+ }
415
347
 
416
- @media (max-width: 47.9375rem) {
417
- dialog {
418
- padding: 0;
348
+ .status:empty, .actions:empty {
349
+ display: none;
419
350
  }
420
351
 
421
- .panel {
422
- inline-size: 100%;
423
- min-block-size: 100dvh;
424
- max-block-size: none;
425
- border: 0;
426
- border-radius: 0;
352
+ .body {
353
+ flex: 1;
354
+ min-block-size: 0;
355
+ overflow: auto;
356
+ padding: var(--ui-space-2);
357
+ /* Each edge that hides content fades: the scroll fade every Looma scroller uses (see ui-scroll-area). */
358
+ --_ui-scroll-fade-direction: to bottom;
359
+ --_ui-scroll-fade-size: var(--ui-scroll-fade-size, 24px);
360
+ mask-image: linear-gradient(
361
+ var(--_ui-scroll-fade-direction),
362
+ transparent,
363
+ #000 var(--_ui-scroll-fade-start),
364
+ #000 calc(100% - var(--_ui-scroll-fade-end)),
365
+ transparent
366
+ );
367
+ animation:
368
+ ui-scroll-fade-start linear,
369
+ ui-scroll-fade-start-hold linear,
370
+ ui-scroll-fade-end-hold linear,
371
+ ui-scroll-fade-end linear;
372
+ animation-timeline: scroll(self block);
373
+ animation-range:
374
+ 0 var(--_ui-scroll-fade-size),
375
+ var(--_ui-scroll-fade-size) calc(100% + 1px),
376
+ -1px calc(100% - var(--_ui-scroll-fade-size)),
377
+ calc(100% - var(--_ui-scroll-fade-size)) 100%;
427
378
  }
428
- }
429
379
 
430
- /* A component that sets its display still honours the hidden attribute on its root. */
431
- [data-component~="ui-search-shell"][hidden] {
432
- display: none;
380
+ @media (max-width: 47.9375rem) {
381
+ dialog {
382
+ padding: 0;
383
+ }
384
+
385
+ .panel {
386
+ inline-size: 100%;
387
+ min-block-size: 100dvh;
388
+ max-block-size: none;
389
+ border: 0;
390
+ border-radius: 0;
391
+ }
392
+ }
393
+ :scope:where(:scope):is([hidden]) {
394
+ display: none;
395
+ }
433
396
  }
434
397
  </style>
package/vue/UiSection.vue CHANGED
@@ -1,7 +1,8 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.35 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, getCurrentInstance, watchSyncEffect } from 'vue'
3
+ import { computed, watchSyncEffect } from 'vue'
4
4
  import type { PropType } from 'vue'
5
+ import { checkHydratedRoot, nativeAttrs, useReflectedProp } from './host'
5
6
  import { checkedProp, vPropValidity } from './props'
6
7
 
7
8
  defineOptions({ inheritAttrs: false })
@@ -72,56 +73,9 @@ void checkedProps.value
72
73
  watchSyncEffect(() => {
73
74
  void checkedProps.value
74
75
  })
75
- function nativeAttrs(attrs: Record<string, unknown>): Record<string, unknown> {
76
- const names = Object.keys(attrs)
77
- if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
78
- return Object.fromEntries(names.map((name) => [
79
- Object.hasOwn(Object.prototype, name)
80
- ? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
81
- : name,
82
- attrs[name],
83
- ]))
84
- }
85
- const componentInstance = getCurrentInstance()
86
- function reflectedProp(
87
- name: string,
88
- kebab: string,
89
- value: unknown,
90
- fallback: string | undefined,
91
- bound: boolean,
92
- separator?: string,
93
- ): string | undefined {
94
- const incoming = componentInstance?.vnode.props
95
- if (
96
- !bound
97
- && (incoming === null || incoming === undefined
98
- || (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
99
- ) return fallback
100
- if (value === null || value === undefined) return undefined
101
- return Array.isArray(value) && separator !== undefined
102
- ? value.join(separator)
103
- : typeof value === 'object'
104
- ? JSON.stringify(value)
105
- : String(value)
106
- }
107
- const hydrationInstance = getCurrentInstance()
76
+ const reflectedProp = useReflectedProp()
108
77
 
109
- const hydrationNode = hydrationInstance?.vnode.el
110
- if (
111
- typeof window !== 'undefined' && hydrationNode != null
112
- && (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('section'))
113
- ) {
114
- throw Object.assign(
115
- new Error('HR005: Server markup for <ui-section> has an incompatible root.'),
116
- {
117
- name: 'HtmlDiagnosticError',
118
- diagnostic: Object.freeze({
119
- code: 'HR005',
120
- message: 'Server markup for <ui-section> has an incompatible root.',
121
- }),
122
- },
123
- )
124
- }
78
+ checkHydratedRoot('section', 'ui-section')
125
79
 
126
80
  /** The values the styles' :host-state() rules test. */
127
81
  const hostState = computed(() =>
@@ -137,7 +91,7 @@ const hostState = computed(() =>
137
91
 
138
92
  <template>
139
93
  <section
140
- data-component="ui-section"
94
+ class="ui-section"
141
95
  v-bind="nativeAttrs($attrs)"
142
96
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
143
97
  :data-heading="reflectedProp('heading', 'heading', checkedProps.heading, undefined, false)"
@@ -157,104 +111,106 @@ const hostState = computed(() =>
157
111
  <style scoped>
158
112
  /* A part of a view: a heading, an optional line under it, actions for the whole section at its
159
113
  end, and the content. Sections space themselves out through the Stack around them. */
160
- [data-component~="ui-section"] {
161
- display: flex;
162
- flex-direction: column;
163
- gap: var(--ui-space-4);
164
- min-inline-size: 0;
165
- }
166
-
167
- [data-component~="ui-section"][data-ui-section-state~="variant=card"] {
168
- --_ui-selection-context-surface: initial;
169
- --_ui-selection-context-border: initial;
170
- --_ui-selection-context-text: initial;
171
- padding: var(--ui-space-5);
172
- border: var(--ui-border-width) solid var(--ui-border-strong);
173
- border-radius: var(--ui-radius-lg);
174
- background: var(--ui-surface-raised);
175
- }
176
-
177
- [data-component~="ui-section"][data-ui-section-state~="variant=divided"] {
178
- padding-block-start: var(--ui-space-6);
179
- border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
180
- }
181
-
182
- [data-component~="ui-section"][data-ui-section-state~="variant=card"][data-ui-section-state~="tone=danger"] {
183
- --_ui-selection-context-surface: light-dark(
184
- oklch(from var(--ui-danger-soft) calc(l - 0.045) calc(max(c, min(0.045, c * 3))) h),
185
- oklch(from var(--ui-danger-soft) calc(l + 0.045) calc(max(c, min(0.045, c * 3))) h)
186
- );
187
- --_ui-selection-context-border: light-dark(
188
- oklch(from var(--ui-danger-soft) calc(l - 0.085) calc(max(c, min(0.045, c * 3))) h),
189
- oklch(from var(--ui-danger-soft) calc(l + 0.085) calc(max(c, min(0.045, c * 3))) h)
190
- );
191
- --_ui-selection-context-text: var(--ui-text-primary);
192
- border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
193
- border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
194
- /* An accent edge keeps the corners on its side straight. */
195
- border-start-start-radius: 0;
196
- border-end-start-radius: 0;
197
- background: var(--ui-danger-soft);
198
- }
199
-
200
- .head {
201
- display: flex;
202
- flex-wrap: wrap;
203
- align-items: flex-start;
204
- justify-content: space-between;
205
- gap: var(--ui-space-2) var(--ui-space-4);
206
- }
207
-
208
- .copy {
209
- display: flex;
210
- flex: 1 1 16rem;
211
- flex-direction: column;
212
- gap: var(--ui-space-1);
213
- min-inline-size: 0;
214
- }
215
-
216
- .heading {
217
- margin: 0;
218
- color: var(--ui-text-primary);
219
- font-size: var(--ui-font-size-lg);
220
- font-weight: var(--ui-font-semibold);
221
- line-height: var(--ui-line-height-tight);
222
- }
223
-
224
- [data-component~="ui-section"][data-ui-section-state~="tone=danger"] .heading {
225
- color: var(--ui-danger);
226
- }
227
-
228
- .description {
229
- color: var(--ui-text-secondary);
230
- font-size: var(--ui-font-size-sm);
231
- line-height: var(--ui-line-height);
232
- }
233
-
234
- .actions {
235
- display: inline-flex;
236
- flex-wrap: wrap;
237
- gap: var(--ui-space-2);
238
- }
239
-
240
- .body {
241
- display: flex;
242
- flex-direction: column;
243
- gap: var(--ui-space-4);
244
- min-inline-size: 0;
245
- }
246
-
247
- .description:empty,
248
- .actions:empty {
249
- display: none;
250
- }
251
-
252
- .head:has(.heading[hidden]):has(.description:empty):has(.actions:empty) {
253
- display: none;
254
- }
255
114
 
256
115
  /* A component that sets its display still honours the hidden attribute on its root. */
257
- [data-component~="ui-section"][hidden] {
258
- display: none;
116
+
117
+ @scope (.ui-section) {
118
+ :scope:where(:scope) {
119
+ display: flex;
120
+ flex-direction: column;
121
+ gap: var(--ui-space-4);
122
+ min-inline-size: 0;
123
+ }
124
+
125
+ :scope:where(:scope):is([data-ui-section-state~="variant=card"]) {
126
+ --_ui-selection-context-surface: initial;
127
+ --_ui-selection-context-border: initial;
128
+ --_ui-selection-context-text: initial;
129
+ padding: var(--ui-space-5);
130
+ border: var(--ui-border-width) solid var(--ui-border-strong);
131
+ border-radius: var(--ui-radius-lg);
132
+ background: var(--ui-surface-raised);
133
+ }
134
+
135
+ :scope:where(:scope):is([data-ui-section-state~="variant=divided"]) {
136
+ padding-block-start: var(--ui-space-6);
137
+ border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
138
+ }
139
+
140
+ :scope:where(:scope):is([data-ui-section-state~="variant=card"][data-ui-section-state~="tone=danger"]) {
141
+ --_ui-selection-context-surface: light-dark(
142
+ oklch(from var(--ui-danger-soft) calc(l - 0.045) calc(max(c, min(0.045, c * 3))) h),
143
+ oklch(from var(--ui-danger-soft) calc(l + 0.045) calc(max(c, min(0.045, c * 3))) h)
144
+ );
145
+ --_ui-selection-context-border: light-dark(
146
+ oklch(from var(--ui-danger-soft) calc(l - 0.085) calc(max(c, min(0.045, c * 3))) h),
147
+ oklch(from var(--ui-danger-soft) calc(l + 0.085) calc(max(c, min(0.045, c * 3))) h)
148
+ );
149
+ --_ui-selection-context-text: var(--ui-text-primary);
150
+ border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
151
+ border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
152
+ /* An accent edge keeps the corners on its side straight. */
153
+ border-start-start-radius: 0;
154
+ border-end-start-radius: 0;
155
+ background: var(--ui-danger-soft);
156
+ }
157
+
158
+ .head {
159
+ display: flex;
160
+ flex-wrap: wrap;
161
+ align-items: flex-start;
162
+ justify-content: space-between;
163
+ gap: var(--ui-space-2) var(--ui-space-4);
164
+ }
165
+
166
+ .copy {
167
+ display: flex;
168
+ flex: 1 1 16rem;
169
+ flex-direction: column;
170
+ gap: var(--ui-space-1);
171
+ min-inline-size: 0;
172
+ }
173
+
174
+ .heading {
175
+ margin: 0;
176
+ color: var(--ui-text-primary);
177
+ font-size: var(--ui-font-size-lg);
178
+ font-weight: var(--ui-font-semibold);
179
+ line-height: var(--ui-line-height-tight);
180
+ }
181
+
182
+ :scope[data-ui-section-state~="tone=danger"] .heading {
183
+ color: var(--ui-danger);
184
+ }
185
+
186
+ .description {
187
+ color: var(--ui-text-secondary);
188
+ font-size: var(--ui-font-size-sm);
189
+ line-height: var(--ui-line-height);
190
+ }
191
+
192
+ .actions {
193
+ display: inline-flex;
194
+ flex-wrap: wrap;
195
+ gap: var(--ui-space-2);
196
+ }
197
+
198
+ .body {
199
+ display: flex;
200
+ flex-direction: column;
201
+ gap: var(--ui-space-4);
202
+ min-inline-size: 0;
203
+ }
204
+
205
+ .description:empty, .actions:empty {
206
+ display: none;
207
+ }
208
+
209
+ .head:has(.heading[hidden]):has(.description:empty):has(.actions:empty) {
210
+ display: none;
211
+ }
212
+ :scope:where(:scope):is([hidden]) {
213
+ display: none;
214
+ }
259
215
  }
260
216
  </style>
package/vue/UiSelect.d.ts CHANGED
@@ -57,10 +57,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
57
57
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
58
58
  }>, {
59
59
  value: string | null;
60
+ required: boolean | null;
60
61
  invalid: boolean | null;
61
62
  size: "sm" | "md" | "lg" | null;
62
63
  disabled: boolean | null;
63
- required: boolean | null;
64
64
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
65
65
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
66
66
  declare const _default: typeof __VLS_export;