@threadlabs/looma 0.5.1 → 0.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +1 -1
  2. package/components/shared/overlay.js +3 -0
  3. package/components/ui-button/ui-button.html +27 -14
  4. package/components/ui-callout/ui-callout.html +1 -1
  5. package/components/ui-checkbox/ui-checkbox.html +1 -1
  6. package/components/ui-cluster/ui-cluster.html +6 -6
  7. package/components/ui-combobox/ui-combobox.html +35 -27
  8. package/components/ui-container/ui-container.html +4 -4
  9. package/components/ui-context-menu/ui-context-menu.html +2 -2
  10. package/components/ui-dialog/ui-dialog.html +21 -8
  11. package/components/ui-disclosure/ui-disclosure.html +19 -4
  12. package/components/ui-editable/ui-editable.html +6 -6
  13. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +21 -21
  14. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +26 -26
  15. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
  16. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +26 -22
  17. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +68 -52
  18. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +42 -38
  19. package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
  20. package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
  21. package/components/ui-form-field/ui-form-field.html +18 -7
  22. package/components/ui-grid/ui-grid.html +6 -6
  23. package/components/ui-icon/ui-icon.html +5 -1
  24. package/components/ui-icon-button/ui-icon-button.html +68 -34
  25. package/components/ui-input/ui-input.html +2 -2
  26. package/components/ui-menu/ui-menu.html +15 -4
  27. package/components/ui-menu-item/ui-menu-item.html +5 -5
  28. package/components/ui-popover/ui-popover.html +3 -3
  29. package/components/ui-popover/ui-popover.js +10 -2
  30. package/components/ui-reel/ui-reel.html +6 -6
  31. package/components/ui-search-result-row/ui-search-result-row.html +9 -9
  32. package/components/ui-search-shell/ui-search-shell.html +10 -3
  33. package/components/ui-search-shell/ui-search-shell.js +9 -0
  34. package/components/ui-select/ui-select.html +2 -2
  35. package/components/ui-sidebar/ui-sidebar.html +11 -11
  36. package/components/ui-stack/ui-stack.html +6 -6
  37. package/components/ui-switcher/ui-switcher.html +6 -6
  38. package/components/ui-tabs/ui-tabs.html +19 -5
  39. package/components/ui-textarea/ui-textarea.html +2 -2
  40. package/components/ui-toast-region/ui-toast-region.html +3 -3
  41. package/components/ui-tooltip/ui-tooltip.html +1 -1
  42. package/components/ui-top-bar/ui-top-bar.html +5 -5
  43. package/components/ui-tree/ui-tree.html +7 -0
  44. package/components/ui-tree-item/ui-tree-item.html +20 -7
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.js +2 -2
  47. package/package.json +2 -2
  48. package/styles/ui-affordance-scope.css +1 -1
  49. package/styles/ui-avatar-group.css +1 -1
  50. package/styles/ui-avatar.css +1 -1
  51. package/styles/ui-badge.css +1 -1
  52. package/styles/ui-button.css +25 -15
  53. package/styles/ui-callout.css +2 -2
  54. package/styles/ui-checkbox.css +2 -2
  55. package/styles/ui-cluster.css +7 -7
  56. package/styles/ui-combobox.css +24 -24
  57. package/styles/ui-container.css +5 -5
  58. package/styles/ui-context-menu.css +3 -3
  59. package/styles/ui-dialog.css +26 -9
  60. package/styles/ui-disclosure.css +23 -7
  61. package/styles/ui-editable.css +7 -7
  62. package/styles/ui-editor-insert-table-grid.css +21 -21
  63. package/styles/ui-editor-mention-menu.css +26 -26
  64. package/styles/ui-editor-slash-menu.css +40 -40
  65. package/styles/ui-editor-table-context-menu.css +21 -21
  66. package/styles/ui-editor-table-overlay.css +49 -49
  67. package/styles/ui-editor-table-toolbar.css +35 -35
  68. package/styles/ui-editor-toolbar.css +10 -10
  69. package/styles/ui-floating-action-button.css +17 -23
  70. package/styles/ui-form-field.css +24 -10
  71. package/styles/ui-grid.css +7 -7
  72. package/styles/ui-icon-button.css +74 -35
  73. package/styles/ui-icon.css +1 -1
  74. package/styles/ui-input.css +3 -3
  75. package/styles/ui-menu-item.css +6 -6
  76. package/styles/ui-menu.css +19 -7
  77. package/styles/ui-popover.css +4 -4
  78. package/styles/ui-radio-group.css +1 -1
  79. package/styles/ui-radio.css +1 -1
  80. package/styles/ui-reel.css +7 -7
  81. package/styles/ui-search-result-row.css +10 -10
  82. package/styles/ui-search-shell.css +14 -5
  83. package/styles/ui-select.css +3 -3
  84. package/styles/ui-separator.css +1 -1
  85. package/styles/ui-sidebar.css +12 -12
  86. package/styles/ui-stack.css +7 -7
  87. package/styles/ui-switch.css +1 -1
  88. package/styles/ui-switcher.css +7 -7
  89. package/styles/ui-tabs.css +21 -7
  90. package/styles/ui-textarea.css +3 -3
  91. package/styles/ui-toast-region.css +3 -3
  92. package/styles/ui-tooltip.css +2 -2
  93. package/styles/ui-top-bar.css +6 -6
  94. package/styles/ui-tree-item.css +30 -9
  95. package/styles/ui-tree.css +8 -2
  96. package/theme-dark.css +42 -103
  97. package/theme-high-contrast.css +18 -22
  98. package/theme-light.css +15 -41
  99. package/tokens.css +149 -201
  100. package/vanilla/UiAffordanceScope.d.ts +1 -1
  101. package/vanilla/UiAffordanceScope.js +2 -2
  102. package/vanilla/UiAvatar.d.ts +1 -1
  103. package/vanilla/UiAvatar.js +2 -2
  104. package/vanilla/UiAvatarGroup.d.ts +1 -1
  105. package/vanilla/UiAvatarGroup.js +2 -2
  106. package/vanilla/UiBadge.d.ts +1 -1
  107. package/vanilla/UiBadge.js +2 -2
  108. package/vanilla/UiButton.d.ts +3 -1
  109. package/vanilla/UiButton.js +3 -3
  110. package/vanilla/UiCallout.d.ts +1 -1
  111. package/vanilla/UiCallout.js +2 -2
  112. package/vanilla/UiCheckbox.d.ts +1 -1
  113. package/vanilla/UiCheckbox.js +2 -2
  114. package/vanilla/UiCluster.d.ts +1 -1
  115. package/vanilla/UiCluster.js +2 -2
  116. package/vanilla/UiCombobox.d.ts +1 -1
  117. package/vanilla/UiCombobox.js +3 -3
  118. package/vanilla/UiContainer.d.ts +1 -1
  119. package/vanilla/UiContainer.js +2 -2
  120. package/vanilla/UiContextMenu.d.ts +1 -1
  121. package/vanilla/UiContextMenu.js +2 -2
  122. package/vanilla/UiDialog.d.ts +1 -1
  123. package/vanilla/UiDialog.js +2 -2
  124. package/vanilla/UiDisclosure.d.ts +2 -1
  125. package/vanilla/UiDisclosure.js +3 -3
  126. package/vanilla/UiEditable.d.ts +1 -1
  127. package/vanilla/UiEditable.js +2 -2
  128. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  129. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  130. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  131. package/vanilla/UiEditorMentionMenu.js +3 -3
  132. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  133. package/vanilla/UiEditorSlashMenu.js +2 -2
  134. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  135. package/vanilla/UiEditorTableContextMenu.js +3 -3
  136. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  137. package/vanilla/UiEditorTableOverlay.js +3 -3
  138. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  139. package/vanilla/UiEditorTableToolbar.js +3 -3
  140. package/vanilla/UiEditorToolbar.d.ts +1 -1
  141. package/vanilla/UiEditorToolbar.js +2 -2
  142. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  143. package/vanilla/UiFloatingActionButton.js +2 -2
  144. package/vanilla/UiFormField.d.ts +1 -1
  145. package/vanilla/UiFormField.js +15 -6
  146. package/vanilla/UiGrid.d.ts +1 -1
  147. package/vanilla/UiGrid.js +2 -2
  148. package/vanilla/UiIcon.d.ts +1 -1
  149. package/vanilla/UiIcon.js +3 -3
  150. package/vanilla/UiIconButton.d.ts +1 -1
  151. package/vanilla/UiIconButton.js +2 -2
  152. package/vanilla/UiInput.d.ts +1 -1
  153. package/vanilla/UiInput.js +2 -2
  154. package/vanilla/UiMenu.d.ts +2 -1
  155. package/vanilla/UiMenu.js +3 -3
  156. package/vanilla/UiMenuItem.d.ts +1 -1
  157. package/vanilla/UiMenuItem.js +2 -2
  158. package/vanilla/UiPopover.d.ts +1 -1
  159. package/vanilla/UiPopover.js +2 -2
  160. package/vanilla/UiRadio.d.ts +1 -1
  161. package/vanilla/UiRadio.js +2 -2
  162. package/vanilla/UiRadioGroup.d.ts +1 -1
  163. package/vanilla/UiRadioGroup.js +2 -2
  164. package/vanilla/UiReel.d.ts +1 -1
  165. package/vanilla/UiReel.js +2 -2
  166. package/vanilla/UiSearchResultRow.d.ts +1 -1
  167. package/vanilla/UiSearchResultRow.js +2 -2
  168. package/vanilla/UiSearchShell.d.ts +1 -1
  169. package/vanilla/UiSearchShell.js +2 -2
  170. package/vanilla/UiSelect.d.ts +1 -1
  171. package/vanilla/UiSelect.js +2 -2
  172. package/vanilla/UiSeparator.d.ts +1 -1
  173. package/vanilla/UiSeparator.js +2 -2
  174. package/vanilla/UiSidebar.d.ts +1 -1
  175. package/vanilla/UiSidebar.js +2 -2
  176. package/vanilla/UiStack.d.ts +1 -1
  177. package/vanilla/UiStack.js +2 -2
  178. package/vanilla/UiSwitch.d.ts +1 -1
  179. package/vanilla/UiSwitch.js +2 -2
  180. package/vanilla/UiSwitcher.d.ts +1 -1
  181. package/vanilla/UiSwitcher.js +2 -2
  182. package/vanilla/UiTabs.d.ts +2 -1
  183. package/vanilla/UiTabs.js +3 -3
  184. package/vanilla/UiTextarea.d.ts +1 -1
  185. package/vanilla/UiTextarea.js +2 -2
  186. package/vanilla/UiToastRegion.d.ts +1 -1
  187. package/vanilla/UiToastRegion.js +3 -3
  188. package/vanilla/UiTooltip.d.ts +1 -1
  189. package/vanilla/UiTooltip.js +2 -2
  190. package/vanilla/UiTopBar.d.ts +1 -1
  191. package/vanilla/UiTopBar.js +1 -1
  192. package/vanilla/UiTree.d.ts +2 -1
  193. package/vanilla/UiTree.js +3 -3
  194. package/vanilla/UiTreeItem.d.ts +1 -1
  195. package/vanilla/UiTreeItem.js +2 -2
  196. package/vue/UiAffordanceScope.d.ts +2 -2
  197. package/vue/UiAffordanceScope.vue +92 -73
  198. package/vue/UiAvatar.d.ts +7 -7
  199. package/vue/UiAvatar.vue +145 -105
  200. package/vue/UiAvatarGroup.d.ts +4 -4
  201. package/vue/UiAvatarGroup.vue +134 -118
  202. package/vue/UiBadge.d.ts +4 -4
  203. package/vue/UiBadge.vue +113 -114
  204. package/vue/UiButton.d.ts +10 -6
  205. package/vue/UiButton.vue +295 -248
  206. package/vue/UiCallout.d.ts +2 -2
  207. package/vue/UiCallout.vue +154 -87
  208. package/vue/UiCheckbox.d.ts +14 -10
  209. package/vue/UiCheckbox.vue +228 -162
  210. package/vue/UiCluster.d.ts +2 -2
  211. package/vue/UiCluster.vue +53 -60
  212. package/vue/UiCombobox.d.ts +36 -32
  213. package/vue/UiCombobox.vue +1005 -416
  214. package/vue/UiContainer.d.ts +2 -2
  215. package/vue/UiContainer.vue +48 -51
  216. package/vue/UiContextMenu.d.ts +6 -4
  217. package/vue/UiContextMenu.vue +205 -116
  218. package/vue/UiDialog.d.ts +11 -9
  219. package/vue/UiDialog.vue +287 -212
  220. package/vue/UiDisclosure.d.ts +10 -6
  221. package/vue/UiDisclosure.vue +265 -159
  222. package/vue/UiEditable.d.ts +16 -12
  223. package/vue/UiEditable.vue +325 -205
  224. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  225. package/vue/UiEditorInsertTableGrid.vue +216 -157
  226. package/vue/UiEditorMentionMenu.d.ts +9 -9
  227. package/vue/UiEditorMentionMenu.vue +265 -222
  228. package/vue/UiEditorSlashMenu.d.ts +7 -7
  229. package/vue/UiEditorSlashMenu.vue +286 -240
  230. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  231. package/vue/UiEditorTableContextMenu.vue +306 -193
  232. package/vue/UiEditorTableOverlay.d.ts +2 -2
  233. package/vue/UiEditorTableOverlay.vue +600 -369
  234. package/vue/UiEditorTableToolbar.d.ts +7 -7
  235. package/vue/UiEditorTableToolbar.vue +443 -268
  236. package/vue/UiEditorToolbar.d.ts +2 -2
  237. package/vue/UiEditorToolbar.vue +134 -121
  238. package/vue/UiFloatingActionButton.d.ts +6 -6
  239. package/vue/UiFloatingActionButton.vue +95 -99
  240. package/vue/UiFormField.d.ts +6 -6
  241. package/vue/UiFormField.vue +112 -80
  242. package/vue/UiGrid.d.ts +2 -2
  243. package/vue/UiGrid.vue +51 -57
  244. package/vue/UiIcon.d.ts +2 -2
  245. package/vue/UiIcon.vue +118 -89
  246. package/vue/UiIconButton.d.ts +11 -11
  247. package/vue/UiIconButton.vue +287 -217
  248. package/vue/UiInput.d.ts +9 -9
  249. package/vue/UiInput.vue +153 -127
  250. package/vue/UiMenu.d.ts +10 -6
  251. package/vue/UiMenu.vue +227 -143
  252. package/vue/UiMenuItem.d.ts +4 -4
  253. package/vue/UiMenuItem.vue +53 -46
  254. package/vue/UiPopover.d.ts +8 -6
  255. package/vue/UiPopover.vue +197 -137
  256. package/vue/UiRadio.d.ts +14 -10
  257. package/vue/UiRadio.vue +183 -117
  258. package/vue/UiRadioGroup.d.ts +14 -12
  259. package/vue/UiRadioGroup.vue +172 -111
  260. package/vue/UiReel.d.ts +3 -3
  261. package/vue/UiReel.vue +77 -77
  262. package/vue/UiSearchResultRow.d.ts +4 -4
  263. package/vue/UiSearchResultRow.vue +121 -115
  264. package/vue/UiSearchShell.d.ts +10 -8
  265. package/vue/UiSearchShell.vue +245 -176
  266. package/vue/UiSelect.d.ts +9 -9
  267. package/vue/UiSelect.vue +162 -134
  268. package/vue/UiSeparator.d.ts +2 -2
  269. package/vue/UiSeparator.vue +22 -27
  270. package/vue/UiSidebar.d.ts +20 -18
  271. package/vue/UiSidebar.vue +307 -224
  272. package/vue/UiStack.d.ts +3 -3
  273. package/vue/UiStack.vue +64 -70
  274. package/vue/UiSwitch.d.ts +12 -8
  275. package/vue/UiSwitch.vue +218 -150
  276. package/vue/UiSwitcher.d.ts +3 -3
  277. package/vue/UiSwitcher.vue +73 -75
  278. package/vue/UiTabs.d.ts +12 -8
  279. package/vue/UiTabs.vue +268 -210
  280. package/vue/UiTextarea.d.ts +11 -11
  281. package/vue/UiTextarea.vue +155 -128
  282. package/vue/UiToastRegion.d.ts +10 -8
  283. package/vue/UiToastRegion.vue +261 -198
  284. package/vue/UiTooltip.d.ts +14 -12
  285. package/vue/UiTooltip.vue +241 -177
  286. package/vue/UiTopBar.vue +51 -42
  287. package/vue/UiTree.d.ts +10 -6
  288. package/vue/UiTree.vue +180 -70
  289. package/vue/UiTreeItem.d.ts +24 -22
  290. package/vue/UiTreeItem.vue +464 -339
  291. package/vue/chunks/UiAffordanceScope.js +9 -16
  292. package/vue/chunks/UiAvatar.js +23 -29
  293. package/vue/chunks/UiAvatarGroup.js +16 -39
  294. package/vue/chunks/UiBadge.js +3 -12
  295. package/vue/chunks/UiButton.js +15 -18
  296. package/vue/chunks/UiCallout.js +8 -17
  297. package/vue/chunks/UiCheckbox.js +37 -40
  298. package/vue/chunks/UiCluster.js +3 -12
  299. package/vue/chunks/UiCombobox.js +224 -266
  300. package/vue/chunks/UiContainer.js +3 -12
  301. package/vue/chunks/UiContextMenu.js +39 -34
  302. package/vue/chunks/UiDialog.js +36 -39
  303. package/vue/chunks/UiDisclosure.js +44 -48
  304. package/vue/chunks/UiEditable.js +55 -57
  305. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  306. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  307. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  308. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  309. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  310. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  311. package/vue/chunks/UiEditorToolbar.js +4 -13
  312. package/vue/chunks/UiFloatingActionButton.js +7 -21
  313. package/vue/chunks/UiFormField.js +15 -12
  314. package/vue/chunks/UiGrid.js +3 -12
  315. package/vue/chunks/UiIcon.js +20 -43
  316. package/vue/chunks/UiIconButton.js +16 -28
  317. package/vue/chunks/UiInput.js +20 -25
  318. package/vue/chunks/UiMenu.js +30 -33
  319. package/vue/chunks/UiMenuItem.js +4 -10
  320. package/vue/chunks/UiPopover.js +28 -29
  321. package/vue/chunks/UiRadio.js +36 -39
  322. package/vue/chunks/UiRadioGroup.js +30 -34
  323. package/vue/chunks/UiReel.js +6 -15
  324. package/vue/chunks/UiSearchResultRow.js +6 -19
  325. package/vue/chunks/UiSearchShell.js +25 -28
  326. package/vue/chunks/UiSelect.js +20 -23
  327. package/vue/chunks/UiSeparator.js +2 -8
  328. package/vue/chunks/UiSidebar.js +39 -44
  329. package/vue/chunks/UiStack.js +6 -15
  330. package/vue/chunks/UiSwitch.js +35 -38
  331. package/vue/chunks/UiSwitcher.js +6 -15
  332. package/vue/chunks/UiTabs.js +52 -85
  333. package/vue/chunks/UiTextarea.js +21 -26
  334. package/vue/chunks/UiToastRegion.js +38 -72
  335. package/vue/chunks/UiTooltip.js +34 -35
  336. package/vue/chunks/UiTopBar.js +1 -1
  337. package/vue/chunks/UiTree.js +27 -16
  338. package/vue/chunks/UiTreeItem.js +85 -102
  339. package/vue/components.css +4027 -3800
  340. package/vue/editor/LoomaEditor.d.ts +11 -0
  341. package/vue/editor/index.js +9 -0
@@ -1,161 +1,222 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from "vue";
4
- import * as controllerModule from "../components/ui-radio-group/ui-radio-group.js";
3
+ import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from 'vue'
4
+ import * as controllerModule from '../components/ui-radio-group/ui-radio-group.js'
5
5
 
6
- defineOptions({ inheritAttrs: false });
6
+ defineOptions({ inheritAttrs: false })
7
7
 
8
- const hn = {
9
- t: (v: unknown): boolean => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
10
- text: (v: unknown): string => v === undefined || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
11
- };
12
-
13
- const props = withDefaults(defineProps<{
14
- disabled?: boolean | null;
15
- label?: string | null;
16
- name?: string | null;
17
- orientation?: "horizontal" | "vertical" | null;
18
- required?: boolean | null;
19
- value?: string | null;
20
- }>(), {
21
- disabled: false,
22
- label: "Options",
23
- name: "",
24
- orientation: "horizontal",
25
- required: false,
26
- value: "",
27
- });
8
+ const props = withDefaults(
9
+ defineProps<{
10
+ disabled?: boolean
11
+ label?: string
12
+ name?: string
13
+ orientation?: 'horizontal' | 'vertical'
14
+ required?: boolean
15
+ value?: string
16
+ }>(),
17
+ {
18
+ disabled: false,
19
+ label: 'Options',
20
+ name: '',
21
+ orientation: 'horizontal',
22
+ required: false,
23
+ value: '',
24
+ },
25
+ )
28
26
  const emit = defineEmits<{
29
- "select": [detail: { readonly value: string; readonly previousValue: string; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
30
- "change": [detail: { readonly checked: boolean; readonly value: string; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
31
- }>();
32
- const root = ref<HTMLElement | null>(null);
33
- const refs: Record<string, Element | undefined> = {};
34
- const state_internalValue = ref<any>("");
27
+ 'update:value': [value: string]
28
+ select: [
29
+ detail: {
30
+ readonly value: string
31
+ readonly previousValue: string
32
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
33
+ },
34
+ ]
35
+ change: [
36
+ detail: {
37
+ readonly checked: boolean
38
+ readonly value: string
39
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
40
+ },
41
+ ]
42
+ }>()
43
+
44
+ const root = ref<HTMLElement | null>(null)
45
+ const internalValue = ref('')
46
+
47
+ /** The values the styles' :host-state() rules test. */
48
+ const hostState = computed(() =>
49
+ [
50
+ props.orientation && `orientation orientation=${props.orientation}`,
51
+ ].filter(Boolean).join(' ')
52
+ )
35
53
 
36
54
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
37
- const dispatch = (name: string, detail?: unknown): boolean => {
38
- const declared = {"select":{"bubbles":true,"composed":true,"cancelable":false},"change":{"bubbles":true,"composed":true,"cancelable":false}} as Record<string, EventInit | undefined>;
55
+ function dispatch(name: string, detail?: unknown): boolean {
56
+ const declared: Record<string, EventInit | undefined> = {
57
+ select: { bubbles: true, composed: true, cancelable: false },
58
+ change: { bubbles: true, composed: true, cancelable: false },
59
+ }
39
60
  const checks: Record<string, (detail: unknown) => boolean> = {
40
- "select": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["value"] === "string" && typeof (detail as Record<string, unknown>)["previousValue"] === "string" && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["value","previousValue","trigger"].includes(key))),
41
- "change": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["checked"] === "boolean" && typeof (detail as Record<string, unknown>)["value"] === "string" && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["checked","value","trigger"].includes(key))),
42
- };
61
+ select: (detail) =>
62
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
63
+ && typeof (detail as Record<string, unknown>)['value'] === 'string'
64
+ && typeof (detail as Record<string, unknown>)['previousValue'] === 'string'
65
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
66
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
67
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
68
+ && Object.keys(detail as object).every((key) =>
69
+ ['value', 'previousValue', 'trigger'].includes(key)
70
+ ),
71
+ change: (detail) =>
72
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
73
+ && typeof (detail as Record<string, unknown>)['checked'] === 'boolean'
74
+ && typeof (detail as Record<string, unknown>)['value'] === 'string'
75
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
76
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
77
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
78
+ && Object.keys(detail as object).every((key) =>
79
+ ['checked', 'value', 'trigger'].includes(key)
80
+ ),
81
+ }
43
82
  if (detail !== undefined && checks[name] !== undefined && !checks[name]!(detail)) {
44
- throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
83
+ throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`)
45
84
  }
46
- (emit as (name: string, detail: unknown) => void)(name, detail);
47
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail })) ?? true;
48
- };
49
-
50
- /** The resolved values the styles' :host-state() rules test. */
51
- const hostState = computed(() => (["orientation"] as const).flatMap((name) => {
52
- const value = read(name);
53
- const tokens: string[] = hn.t(value) ? [name] : [];
54
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
55
- return tokens;
56
- }).join(" "));
85
+ const emitEvent = emit as (name: string, detail: unknown) => void
86
+ emitEvent(name, detail)
87
+ if (detail !== null && typeof detail === 'object' && 'value' in detail) {
88
+ emitEvent('update:value', (detail as Record<string, unknown>)['value'])
89
+ }
90
+ return root.value?.dispatchEvent(
91
+ new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail }),
92
+ ) ?? true
93
+ }
57
94
 
58
95
  function read(name: string): unknown {
59
- if (name === "internalValue") return state_internalValue.value;
60
- return (props as Record<string, unknown>)[name];
96
+ if (name === 'internalValue') return internalValue.value
97
+ return (props as Record<string, unknown>)[name]
61
98
  }
62
99
 
63
100
  function write(name: string, value: unknown): boolean {
64
- if (name === "internalValue") { state_internalValue.value = value; return true; }
65
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
101
+ if (name === 'internalValue') {
102
+ internalValue.value = value as never
103
+ return true
104
+ }
105
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
66
106
  }
67
107
 
68
- const stops: Array<() => void> = [];
108
+ const stops: Array<() => void> = []
69
109
  const host = {
70
- get element(): Element { return root.value as Element; },
110
+ get element(): Element {
111
+ return root.value as Element
112
+ },
71
113
  state: new Proxy({} as Record<string, unknown>, {
72
- get: (_target, name) => typeof name === "string" ? read(name) : undefined,
73
- set: (_target, name, value) => typeof name === "string" && write(name, value),
114
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
115
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
74
116
  }),
75
- refs: refs as Readonly<Record<string, Element>>,
117
+ refs: {} as Readonly<Record<string, Element>>,
76
118
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
77
119
  get: (_target, name) => {
78
- if (typeof name !== "string" || root.value === null) return undefined;
79
- const form = root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form");
80
- return form?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined;
120
+ if (typeof name !== 'string' || root.value === null) return undefined
121
+ const form = root.value instanceof HTMLFormElement
122
+ ? root.value
123
+ : root.value.querySelector('form')
124
+ return form?.elements.namedItem(name)
125
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
81
126
  },
82
127
  }),
83
128
  signal<T>(initialValue: T) {
84
- const value = shallowRef(initialValue);
129
+ const value = shallowRef(initialValue)
85
130
  return {
86
131
  get: (): T => value.value,
87
- set: (next: T): void => { if (!Object.is(value.value, next)) value.value = next; },
88
- update: (next: (current: T) => T): void => { const updated = next(value.value); if (!Object.is(value.value, updated)) value.value = updated; },
89
- };
132
+ set: (next: T): void => {
133
+ if (!Object.is(value.value, next)) value.value = next
134
+ },
135
+ update: (next: (current: T) => T): void => {
136
+ const updated = next(value.value)
137
+ if (!Object.is(value.value, updated)) value.value = updated
138
+ },
139
+ }
90
140
  },
91
141
  computed<T>(compute: () => T) {
92
- const value = computed(compute);
93
- return { get: (): T => value.value };
142
+ const value = computed(compute)
143
+ return { get: (): T => value.value }
94
144
  },
95
145
  effect(run: () => void | (() => void)): () => void {
96
146
  const stop = watchEffect((onCleanup) => {
97
- const cleanup = run();
98
- if (typeof cleanup === "function") onCleanup(cleanup);
99
- }, { flush: "post" });
100
- stops.push(stop);
101
- return stop;
147
+ const cleanup = run()
148
+ if (typeof cleanup === 'function') onCleanup(cleanup)
149
+ }, { flush: 'post' })
150
+ stops.push(stop)
151
+ return stop
102
152
  },
103
153
  on(event: string, listener: EventListener): () => void {
104
- const element = root.value;
105
- element?.addEventListener(event, listener);
106
- const off = (): void => element?.removeEventListener(event, listener);
107
- stops.push(off);
108
- return off;
154
+ const element = root.value
155
+ element?.addEventListener(event, listener)
156
+ const off = (): void => element?.removeEventListener(event, listener)
157
+ stops.push(off)
158
+ return off
109
159
  },
110
160
  dispatch,
111
- };
161
+ }
112
162
 
113
- let cleanup: void | (() => void);
114
- let ready: Promise<void> | undefined;
163
+ let cleanup: void | (() => void)
164
+ let ready: Promise<void> | undefined
115
165
  onMounted(() => {
116
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
117
- });
166
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
167
+ cleanup = result
168
+ })
169
+ })
118
170
  onBeforeUnmount(() => {
119
- for (const stop of stops.splice(0)) stop();
120
- if (typeof cleanup === "function") cleanup();
121
- });
171
+ for (const stop of stops.splice(0)) stop()
172
+ if (typeof cleanup === 'function') cleanup()
173
+ })
122
174
  </script>
123
175
 
124
176
  <template>
125
- <fieldset data-component="ui-radio-group" role="radiogroup" v-bind="$attrs" :data-ui-radio-group-state="hostState || undefined" ref="root"><legend>{{ hn.text(props.label) }}</legend><slot></slot></fieldset>
177
+ <fieldset
178
+ data-component="ui-radio-group"
179
+ role="radiogroup"
180
+ v-bind="$attrs"
181
+ :data-ui-radio-group-state="hostState || undefined"
182
+ ref="root"
183
+ >
184
+ <legend>{{ label }}</legend>
185
+ <slot />
186
+ </fieldset>
126
187
  </template>
127
188
 
128
189
  <style scoped>
129
190
  [data-component~="ui-radio-group"] {
130
- display: inline-flex;
131
- align-items: center;
132
- gap: var(--ui-space-2);
133
- min-inline-size: 0;
134
- margin: 0;
135
- padding: 0;
136
- border: 0;
137
- }
191
+ display: inline-flex;
192
+ align-items: center;
193
+ gap: var(--ui-space-2);
194
+ min-inline-size: 0;
195
+ margin: 0;
196
+ padding: 0;
197
+ border: 0;
198
+ }
138
199
 
139
- legend {
140
- float: inline-start;
141
- inline-size: 100%;
142
- margin: 0 0 var(--ui-space-2);
143
- padding: 0;
144
- color: var(--ui-text-primary);
145
- font-weight: var(--ui-font-medium);
146
- }
200
+ legend {
201
+ float: inline-start;
202
+ inline-size: 100%;
203
+ margin: 0 0 var(--ui-space-2);
204
+ padding: 0;
205
+ color: var(--ui-text-primary);
206
+ font-weight: var(--ui-font-medium);
207
+ }
147
208
 
148
- legend + * {
149
- clear: both;
150
- }
209
+ legend + * {
210
+ clear: both;
211
+ }
151
212
 
152
- [data-component~="ui-radio-group"][data-ui-radio-group-state~="orientation=vertical"] {
153
- display: inline-grid;
154
- justify-items: start;
155
- }
213
+ [data-component~="ui-radio-group"][data-ui-radio-group-state~="orientation=vertical"] {
214
+ display: inline-grid;
215
+ justify-items: start;
216
+ }
156
217
 
157
- /* A component that sets its display still honours the hidden attribute on its root. */
158
- [data-component~="ui-radio-group"][hidden] {
159
- display: none;
160
- }
218
+ /* A component that sets its display still honours the hidden attribute on its root. */
219
+ [data-component~="ui-radio-group"][hidden] {
220
+ display: none;
221
+ }
161
222
  </style>
package/vue/UiReel.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  type __VLS_Props = {
2
- gap?: "xs" | "s" | "m" | "l" | "xl" | null;
3
- itemWidth?: "sm" | "md" | "lg" | null;
4
- snap?: "start" | "center" | null;
2
+ gap?: 'xs' | 's' | 'm' | 'l' | 'xl';
3
+ itemWidth?: 'sm' | 'md' | 'lg';
4
+ snap?: 'start' | 'center';
5
5
  };
6
6
  declare var __VLS_1: {};
7
7
  type __VLS_Slots = {} & {
package/vue/UiReel.vue CHANGED
@@ -1,93 +1,93 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed } from "vue";
3
+ import { computed } from 'vue'
4
4
 
5
- defineOptions({ inheritAttrs: false });
6
-
7
- const hn = {
8
- t: (v: unknown): boolean => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
9
- };
5
+ defineOptions({ inheritAttrs: false })
10
6
 
11
7
  const props = defineProps<{
12
- gap?: "xs" | "s" | "m" | "l" | "xl" | null;
13
- itemWidth?: "sm" | "md" | "lg" | null;
14
- snap?: "start" | "center" | null;
15
- }>();
16
-
17
- /** The resolved values the styles' :host-state() rules test. */
18
- const hostState = computed(() => (["gap","itemWidth","snap"] as const).flatMap((name) => {
19
- const value = read(name);
20
- const tokens: string[] = hn.t(value) ? [name] : [];
21
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
22
- return tokens;
23
- }).join(" "));
24
-
25
- function read(name: string): unknown {
26
- return (props as Record<string, unknown>)[name];
27
- }
8
+ gap?: 'xs' | 's' | 'm' | 'l' | 'xl'
9
+ itemWidth?: 'sm' | 'md' | 'lg'
10
+ snap?: 'start' | 'center'
11
+ }>()
28
12
 
13
+ /** The values the styles' :host-state() rules test. */
14
+ const hostState = computed(() =>
15
+ [
16
+ props.gap && `gap gap=${props.gap}`,
17
+ props.itemWidth && `itemWidth itemWidth=${props.itemWidth}`,
18
+ props.snap && `snap snap=${props.snap}`,
19
+ ].filter(Boolean).join(' ')
20
+ )
29
21
  </script>
30
22
 
31
23
  <template>
32
- <div data-component="ui-reel" role="region" tabindex="0" v-bind="$attrs" :data-ui-reel-state="hostState || undefined"><slot></slot></div>
24
+ <div
25
+ data-component="ui-reel"
26
+ role="region"
27
+ tabindex="0"
28
+ v-bind="$attrs"
29
+ :data-ui-reel-state="hostState || undefined"
30
+ >
31
+ <slot />
32
+ </div>
33
33
  </template>
34
34
 
35
35
  <style scoped>
36
36
  [data-component~="ui-reel"] {
37
- --_reel-gap: var(--ui-space-4, 1rem);
38
- --_reel-item-width: auto;
39
- display: flex;
40
- inline-size: 100%;
41
- gap: var(--ui-reel-gap, var(--_reel-gap));
42
- min-inline-size: 0;
43
- max-inline-size: 100%;
44
- margin: 0;
45
- overflow-x: auto;
46
- overflow-y: hidden;
47
- overscroll-behavior-inline: contain;
48
- }
37
+ --_reel-gap: var(--ui-space-4);
38
+ --_reel-item-width: auto;
39
+ display: flex;
40
+ inline-size: 100%;
41
+ gap: var(--ui-reel-gap, var(--_reel-gap));
42
+ min-inline-size: 0;
43
+ max-inline-size: 100%;
44
+ margin: 0;
45
+ overflow-x: auto;
46
+ overflow-y: hidden;
47
+ overscroll-behavior-inline: contain;
48
+ }
49
49
 
50
- [data-component~="ui-reel"] > :slotted(*) {
51
- min-inline-size: 0;
52
- flex: 0 0 var(--ui-reel-item-width, var(--_reel-item-width));
53
- }
50
+ [data-component~="ui-reel"] > :slotted(*) {
51
+ min-inline-size: 0;
52
+ flex: 0 0 var(--ui-reel-item-width, var(--_reel-item-width));
53
+ }
54
54
 
55
- [data-component~="ui-reel"][data-ui-reel-state~="gap=xs"] {
56
- --_reel-gap: var(--ui-space-2, 0.5rem);
57
- }
58
- [data-component~="ui-reel"][data-ui-reel-state~="gap=s"] {
59
- --_reel-gap: var(--ui-space-3, 0.75rem);
60
- }
61
- [data-component~="ui-reel"][data-ui-reel-state~="gap=m"] {
62
- --_reel-gap: var(--ui-space-4, 1rem);
63
- }
64
- [data-component~="ui-reel"][data-ui-reel-state~="gap=l"] {
65
- --_reel-gap: var(--ui-space-5, 1.5rem);
66
- }
67
- [data-component~="ui-reel"][data-ui-reel-state~="gap=xl"] {
68
- --_reel-gap: var(--ui-space-6, 2rem);
69
- }
70
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=sm"] {
71
- --_reel-item-width: 12rem;
72
- }
73
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=md"] {
74
- --_reel-item-width: 16rem;
75
- }
76
- [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=lg"] {
77
- --_reel-item-width: 20rem;
78
- }
79
- [data-component~="ui-reel"][data-ui-reel-state~="snap"] {
80
- scroll-snap-type: inline mandatory;
81
- }
82
- [data-component~="ui-reel"][data-ui-reel-state~="snap=start"] > :slotted(*) {
83
- scroll-snap-align: start;
84
- }
85
- [data-component~="ui-reel"][data-ui-reel-state~="snap=center"] > :slotted(*) {
86
- scroll-snap-align: center;
87
- }
55
+ [data-component~="ui-reel"][data-ui-reel-state~="gap=xs"] {
56
+ --_reel-gap: var(--ui-space-2);
57
+ }
58
+ [data-component~="ui-reel"][data-ui-reel-state~="gap=s"] {
59
+ --_reel-gap: var(--ui-space-3);
60
+ }
61
+ [data-component~="ui-reel"][data-ui-reel-state~="gap=m"] {
62
+ --_reel-gap: var(--ui-space-4);
63
+ }
64
+ [data-component~="ui-reel"][data-ui-reel-state~="gap=l"] {
65
+ --_reel-gap: var(--ui-space-5);
66
+ }
67
+ [data-component~="ui-reel"][data-ui-reel-state~="gap=xl"] {
68
+ --_reel-gap: var(--ui-space-6);
69
+ }
70
+ [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=sm"] {
71
+ --_reel-item-width: 12rem;
72
+ }
73
+ [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=md"] {
74
+ --_reel-item-width: 16rem;
75
+ }
76
+ [data-component~="ui-reel"][data-ui-reel-state~="itemWidth=lg"] {
77
+ --_reel-item-width: 20rem;
78
+ }
79
+ [data-component~="ui-reel"][data-ui-reel-state~="snap"] {
80
+ scroll-snap-type: inline mandatory;
81
+ }
82
+ [data-component~="ui-reel"][data-ui-reel-state~="snap=start"] > :slotted(*) {
83
+ scroll-snap-align: start;
84
+ }
85
+ [data-component~="ui-reel"][data-ui-reel-state~="snap=center"] > :slotted(*) {
86
+ scroll-snap-align: center;
87
+ }
88
88
 
89
- /* A component that sets its display still honours the hidden attribute on its root. */
90
- [data-component~="ui-reel"][hidden] {
91
- display: none;
92
- }
89
+ /* A component that sets its display still honours the hidden attribute on its root. */
90
+ [data-component~="ui-reel"][hidden] {
91
+ display: none;
92
+ }
93
93
  </style>
@@ -1,6 +1,6 @@
1
1
  type __VLS_Props = {
2
- disabled?: boolean | null;
3
- selected?: boolean | null;
2
+ disabled?: boolean;
3
+ selected?: boolean;
4
4
  };
5
5
  declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {};
6
6
  type __VLS_Slots = {} & {
@@ -15,8 +15,8 @@ type __VLS_Slots = {} & {
15
15
  trailing?: (props: typeof __VLS_9) => any;
16
16
  };
17
17
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
18
- disabled: boolean | null;
19
- selected: boolean | null;
18
+ disabled: boolean;
19
+ selected: boolean;
20
20
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
21
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
22
22
  declare const _default: typeof __VLS_export;