@ecoma-io/loom 0.4.0 → 0.6.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 (1073) hide show
  1. package/README.md +202 -113
  2. package/dist/a11y.js +4 -3
  3. package/dist/composition/center/src/Center.js.map +1 -0
  4. package/dist/composition/center/src/Center.vue_vue_type_script_setup_true_lang.js.map +1 -0
  5. package/dist/composition/dashboard-grid/src/DashboardGrid.js +7 -0
  6. package/dist/composition/dashboard-grid/src/DashboardGrid.js.map +1 -0
  7. package/dist/composition/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js +45 -0
  8. package/dist/composition/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  9. package/dist/composition/frame/src/Frame.js.map +1 -0
  10. package/dist/composition/frame/src/Frame.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/dist/composition/grid/src/Grid.js.map +1 -0
  12. package/dist/composition/grid/src/Grid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  13. package/dist/composition/inline/src/Inline.js.map +1 -0
  14. package/dist/composition/inline/src/Inline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  15. package/dist/composition/scroll-reel/src/ScrollReel.js.map +1 -0
  16. package/dist/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js +101 -0
  17. package/dist/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  18. package/dist/composition/sidebar/src/Sidebar.js.map +1 -0
  19. package/dist/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js +46 -0
  20. package/dist/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  21. package/dist/composition/split/src/Split.js.map +1 -0
  22. package/dist/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js +51 -0
  23. package/dist/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +1 -0
  24. package/dist/composition/stack/src/Stack.js.map +1 -0
  25. package/dist/composition/stack/src/Stack.vue_vue_type_script_setup_true_lang.js.map +1 -0
  26. package/dist/core/src/a11y-contract.js +558 -0
  27. package/dist/core/src/a11y-contract.js.map +1 -0
  28. package/dist/core/src/a11y-scope.js +151 -0
  29. package/dist/core/src/a11y-scope.js.map +1 -0
  30. package/dist/core/src/attrs.js.map +1 -0
  31. package/dist/core/src/cn.js +61 -0
  32. package/dist/core/src/cn.js.map +1 -0
  33. package/dist/core/src/icon-defaults.js.map +1 -0
  34. package/dist/core/src/index.js +9 -0
  35. package/dist/core/src/motion.js +31 -0
  36. package/dist/core/src/motion.js.map +1 -0
  37. package/dist/core/src/props.js.map +1 -0
  38. package/dist/core/src/theme.js.map +1 -0
  39. package/dist/index.js +287 -250
  40. package/dist/labels/src/ancestor-disabled.js.map +1 -0
  41. package/dist/labels/src/count-labels.js.map +1 -0
  42. package/dist/labels/src/date-labels.js +206 -0
  43. package/dist/labels/src/date-labels.js.map +1 -0
  44. package/dist/labels/src/field-context.js.map +1 -0
  45. package/dist/labels/src/index.js +6 -0
  46. package/dist/labels/src/labels.js.map +1 -0
  47. package/dist/layouts/app-shell/src/AppShell.js.map +1 -0
  48. package/dist/layouts/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  49. package/dist/layouts/centered/src/Centered.js.map +1 -0
  50. package/dist/layouts/centered/src/Centered.vue_vue_type_script_setup_true_lang.js.map +1 -0
  51. package/dist/layouts/dashboard/src/Dashboard.js.map +1 -0
  52. package/dist/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js +65 -0
  53. package/dist/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  54. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.js +7 -0
  55. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.js.map +1 -0
  56. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js +76 -0
  57. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  58. package/dist/layouts/form-layout/src/FormLayout.js.map +1 -0
  59. package/dist/layouts/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js.map +1 -0
  60. package/dist/layouts/master-detail/src/MasterDetail.js.map +1 -0
  61. package/dist/layouts/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js.map +1 -0
  62. package/dist/layouts/reading/src/Reading.js.map +1 -0
  63. package/dist/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/layouts/settings/src/Settings.js.map +1 -0
  65. package/dist/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +1 -0
  66. package/dist/layouts/split-layout/src/SplitLayout.js.map +1 -0
  67. package/dist/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js +62 -0
  68. package/dist/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +1 -0
  69. package/dist/packages/composition/dashboard-grid/src/DashboardGrid.vue.d.ts +26 -0
  70. package/dist/packages/composition/dashboard-grid/src/DashboardGrid.vue.d.ts.map +1 -0
  71. package/dist/packages/composition/dashboard-grid/src/index.d.ts.map +1 -0
  72. package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts +4 -0
  73. package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts.map +1 -1
  74. package/dist/packages/composition/split/src/Split.vue.d.ts +11 -12
  75. package/dist/packages/composition/split/src/Split.vue.d.ts.map +1 -1
  76. package/dist/packages/core/src/a11y-contract.d.ts +417 -0
  77. package/dist/packages/core/src/a11y-contract.d.ts.map +1 -0
  78. package/dist/packages/core/src/a11y-scope.d.ts +73 -5
  79. package/dist/packages/core/src/a11y-scope.d.ts.map +1 -1
  80. package/dist/packages/core/src/index.d.ts +8 -2
  81. package/dist/packages/core/src/index.d.ts.map +1 -1
  82. package/dist/packages/core/src/motion.d.ts +15 -6
  83. package/dist/packages/core/src/motion.d.ts.map +1 -1
  84. package/dist/packages/core/src/responsive-contract.d.ts +155 -0
  85. package/dist/packages/core/src/responsive-contract.d.ts.map +1 -0
  86. package/dist/packages/labels/src/component-shapes.d.ts +165 -1
  87. package/dist/packages/labels/src/component-shapes.d.ts.map +1 -1
  88. package/dist/packages/labels/src/date-labels.d.ts +82 -5
  89. package/dist/packages/labels/src/date-labels.d.ts.map +1 -1
  90. package/dist/packages/labels/src/field-context.d.ts +2 -2
  91. package/dist/packages/labels/src/index.d.ts +3 -3
  92. package/dist/packages/labels/src/index.d.ts.map +1 -1
  93. package/dist/packages/labels/src/label-registry.d.ts +9 -1
  94. package/dist/packages/labels/src/label-registry.d.ts.map +1 -1
  95. package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts +4 -4
  96. package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts.map +1 -1
  97. package/dist/packages/layouts/desktop-app-shell/src/DesktopAppShell.vue.d.ts +103 -0
  98. package/dist/packages/layouts/desktop-app-shell/src/index.d.ts.map +1 -0
  99. package/dist/packages/layouts/settings/src/Settings.vue.d.ts +3 -3
  100. package/dist/packages/layouts/settings/src/Settings.vue.d.ts.map +1 -1
  101. package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts +4 -6
  102. package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts.map +1 -1
  103. package/dist/packages/layouts/split-layout/src/index.d.ts +1 -1
  104. package/dist/packages/layouts/split-layout/src/index.d.ts.map +1 -1
  105. package/dist/packages/loom/src/a11y.d.ts +2 -1
  106. package/dist/packages/loom/src/index.d.ts +47 -21
  107. package/dist/packages/patterns/app-header/src/AppHeader.vue.d.ts +82 -0
  108. package/dist/packages/patterns/app-header/src/AppHeader.vue.d.ts.map +1 -0
  109. package/dist/packages/patterns/app-header/src/index.d.ts.map +1 -0
  110. package/dist/packages/patterns/empty-state/src/EmptyState.vue.d.ts +54 -0
  111. package/dist/packages/patterns/empty-state/src/EmptyState.vue.d.ts.map +1 -0
  112. package/dist/packages/patterns/empty-state/src/index.d.ts.map +1 -0
  113. package/dist/packages/patterns/error-state/src/ErrorState.vue.d.ts +44 -0
  114. package/dist/packages/patterns/error-state/src/ErrorState.vue.d.ts.map +1 -0
  115. package/dist/packages/patterns/error-state/src/index.d.ts.map +1 -0
  116. package/dist/packages/patterns/error-summary/src/ErrorSummary.vue.d.ts +31 -0
  117. package/dist/packages/patterns/error-summary/src/index.d.ts +4 -0
  118. package/dist/packages/patterns/form-actions/src/FormActions.vue.d.ts +56 -0
  119. package/dist/packages/patterns/form-actions/src/FormActions.vue.d.ts.map +1 -0
  120. package/dist/packages/patterns/form-actions/src/index.d.ts.map +1 -0
  121. package/dist/packages/patterns/form-section/src/FormSection.vue.d.ts +85 -0
  122. package/dist/packages/patterns/form-section/src/FormSection.vue.d.ts.map +1 -0
  123. package/dist/packages/patterns/form-section/src/index.d.ts.map +1 -0
  124. package/dist/packages/patterns/loading-state/src/LoadingState.vue.d.ts.map +1 -0
  125. package/dist/packages/patterns/loading-state/src/index.d.ts.map +1 -0
  126. package/dist/packages/patterns/metric-card/src/MetricCard.vue.d.ts +77 -0
  127. package/dist/packages/patterns/metric-card/src/MetricCard.vue.d.ts.map +1 -0
  128. package/dist/packages/patterns/metric-card/src/index.d.ts.map +1 -0
  129. package/dist/packages/patterns/page-header/src/PageHeader.vue.d.ts.map +1 -0
  130. package/dist/packages/patterns/page-header/src/index.d.ts.map +1 -0
  131. package/dist/packages/patterns/row-actions/src/RowActions.vue.d.ts.map +1 -0
  132. package/dist/packages/patterns/row-actions/src/index.d.ts.map +1 -0
  133. package/dist/packages/patterns/sidebar-nav/src/SidebarNav.vue.d.ts.map +1 -0
  134. package/dist/packages/patterns/sidebar-nav/src/index.d.ts.map +1 -0
  135. package/dist/packages/patterns/title-bar/src/TitleBar.vue.d.ts +83 -0
  136. package/dist/packages/patterns/title-bar/src/index.d.ts.map +1 -0
  137. package/dist/packages/patterns/toast-stack/src/index.d.ts.map +1 -0
  138. package/dist/packages/primitives/alert/src/Alert.vue.d.ts +18 -0
  139. package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts +2 -2
  140. package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts.map +1 -1
  141. package/dist/packages/primitives/calendar/src/Calendar.vue.d.ts +95 -0
  142. package/dist/packages/primitives/calendar/src/index.d.ts +3 -0
  143. package/dist/packages/primitives/combobox/src/Combobox.vue.d.ts +1 -1
  144. package/dist/packages/primitives/command/src/Command.vue.d.ts +77 -0
  145. package/dist/packages/primitives/command/src/index.d.ts +4 -0
  146. package/dist/packages/primitives/copy-button/src/CopyButton.vue.d.ts +64 -0
  147. package/dist/packages/primitives/copy-button/src/index.d.ts +4 -0
  148. package/dist/packages/primitives/data-grid/src/DataGrid.vue.d.ts +128 -0
  149. package/dist/packages/primitives/data-grid/src/index.d.ts +4 -0
  150. package/dist/packages/primitives/dialog/src/Dialog.vue.d.ts +15 -7
  151. package/dist/packages/primitives/drawer/src/Drawer.vue.d.ts +10 -2
  152. package/dist/packages/primitives/hover-card/src/index.d.ts.map +1 -1
  153. package/dist/packages/primitives/list/src/ListItem.vue.d.ts +1 -1
  154. package/dist/packages/primitives/list/src/ListItem.vue.d.ts.map +1 -1
  155. package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts +36 -0
  156. package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts.map +1 -0
  157. package/dist/packages/primitives/live-region/src/context.d.ts +40 -0
  158. package/dist/packages/primitives/live-region/src/context.d.ts.map +1 -0
  159. package/dist/packages/primitives/live-region/src/index.d.ts +4 -0
  160. package/dist/packages/primitives/live-region/src/index.d.ts.map +1 -0
  161. package/dist/packages/primitives/live-region/src/useAnnounce.d.ts +17 -0
  162. package/dist/packages/primitives/live-region/src/useAnnounce.d.ts.map +1 -0
  163. package/dist/packages/primitives/menubar/src/Menubar.vue.d.ts.map +1 -1
  164. package/dist/packages/primitives/meter/src/Meter.vue.d.ts +87 -0
  165. package/dist/packages/primitives/meter/src/index.d.ts +4 -0
  166. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts +69 -0
  167. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts.map +1 -0
  168. package/dist/packages/primitives/navigation-menu/src/index.d.ts +3 -0
  169. package/dist/packages/primitives/navigation-menu/src/index.d.ts.map +1 -0
  170. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue.d.ts.map +1 -1
  171. package/dist/packages/primitives/skip-link/src/SkipLink.vue.d.ts +62 -0
  172. package/dist/packages/primitives/skip-link/src/index.d.ts +3 -0
  173. package/dist/packages/primitives/surface/src/Surface.vue.d.ts +2 -2
  174. package/dist/packages/primitives/surface/src/Surface.vue.d.ts.map +1 -1
  175. package/dist/packages/primitives/switch/src/Switch.vue.d.ts.map +1 -1
  176. package/dist/packages/primitives/table/src/TableRow.vue.d.ts +2 -2
  177. package/dist/packages/primitives/table/src/TableRow.vue.d.ts.map +1 -1
  178. package/dist/packages/primitives/table/src/index.d.ts +1 -1
  179. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts +53 -0
  180. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts.map +1 -0
  181. package/dist/packages/primitives/toggle-group/src/index.d.ts +3 -0
  182. package/dist/packages/primitives/toggle-group/src/index.d.ts.map +1 -0
  183. package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts +31 -0
  184. package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts.map +1 -0
  185. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts +24 -0
  186. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts.map +1 -0
  187. package/dist/packages/primitives/toolbar/src/index.d.ts +4 -0
  188. package/dist/packages/primitives/toolbar/src/index.d.ts.map +1 -0
  189. package/dist/packages/primitives/tree-view/src/TreeView.vue.d.ts +99 -0
  190. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts +15 -0
  191. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts.map +1 -0
  192. package/dist/packages/primitives/tree-view/src/context.d.ts +39 -0
  193. package/dist/packages/primitives/tree-view/src/context.d.ts.map +1 -0
  194. package/dist/packages/primitives/tree-view/src/index.d.ts +4 -0
  195. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts +21 -0
  196. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts.map +1 -0
  197. package/dist/packages/primitives/visually-hidden/src/index.d.ts +3 -0
  198. package/dist/packages/primitives/visually-hidden/src/index.d.ts.map +1 -0
  199. package/dist/patterns/app-header/src/AppHeader.js +7 -0
  200. package/dist/patterns/app-header/src/AppHeader.js.map +1 -0
  201. package/dist/patterns/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +96 -0
  202. package/dist/patterns/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
  203. package/dist/patterns/empty-state/src/EmptyState.js +7 -0
  204. package/dist/patterns/empty-state/src/EmptyState.js.map +1 -0
  205. package/dist/patterns/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +73 -0
  206. package/dist/patterns/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  207. package/dist/patterns/error-state/src/ErrorState.js +7 -0
  208. package/dist/patterns/error-state/src/ErrorState.js.map +1 -0
  209. package/dist/patterns/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js +60 -0
  210. package/dist/patterns/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  211. package/dist/patterns/error-summary/src/ErrorSummary.js +7 -0
  212. package/dist/patterns/error-summary/src/ErrorSummary.js.map +1 -0
  213. package/dist/patterns/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js +90 -0
  214. package/dist/patterns/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
  215. package/dist/patterns/error-summary/src/index.js +3 -0
  216. package/dist/patterns/form-actions/src/FormActions.js +7 -0
  217. package/dist/patterns/form-actions/src/FormActions.js.map +1 -0
  218. package/dist/patterns/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js +22 -0
  219. package/dist/patterns/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js.map +1 -0
  220. package/dist/patterns/form-section/src/FormSection.js +7 -0
  221. package/dist/patterns/form-section/src/FormSection.js.map +1 -0
  222. package/dist/patterns/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js +64 -0
  223. package/dist/patterns/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
  224. package/dist/patterns/loading-state/src/LoadingState.js +7 -0
  225. package/dist/patterns/loading-state/src/LoadingState.js.map +1 -0
  226. package/dist/patterns/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js +59 -0
  227. package/dist/patterns/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  228. package/dist/patterns/metric-card/src/MetricCard.js +7 -0
  229. package/dist/patterns/metric-card/src/MetricCard.js.map +1 -0
  230. package/dist/patterns/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +87 -0
  231. package/dist/patterns/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  232. package/dist/patterns/page-header/src/PageHeader.js +7 -0
  233. package/dist/patterns/page-header/src/PageHeader.js.map +1 -0
  234. package/dist/patterns/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js +68 -0
  235. package/dist/patterns/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
  236. package/dist/patterns/row-actions/src/RowActions.js +7 -0
  237. package/dist/patterns/row-actions/src/RowActions.js.map +1 -0
  238. package/dist/patterns/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js +47 -0
  239. package/dist/patterns/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js.map +1 -0
  240. package/dist/patterns/sidebar-nav/src/SidebarNav.js +7 -0
  241. package/dist/patterns/sidebar-nav/src/SidebarNav.js.map +1 -0
  242. package/dist/patterns/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js +129 -0
  243. package/dist/patterns/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js.map +1 -0
  244. package/dist/patterns/title-bar/src/TitleBar.js +7 -0
  245. package/dist/patterns/title-bar/src/TitleBar.js.map +1 -0
  246. package/dist/patterns/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js +69 -0
  247. package/dist/patterns/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  248. package/dist/patterns/toast-stack/src/ToastStack.js +7 -0
  249. package/dist/patterns/toast-stack/src/ToastStack.js.map +1 -0
  250. package/dist/patterns/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js +52 -0
  251. package/dist/patterns/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js.map +1 -0
  252. package/dist/primitives/accordion/src/Accordion.js.map +1 -0
  253. package/dist/primitives/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  254. package/dist/primitives/alert/src/Alert.js.map +1 -0
  255. package/dist/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js +130 -0
  256. package/dist/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  257. package/dist/primitives/alert-dialog/src/AlertDialog.js.map +1 -0
  258. package/dist/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  259. package/dist/primitives/avatar/src/Avatar.js.map +1 -0
  260. package/dist/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js +115 -0
  261. package/dist/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  262. package/dist/primitives/avatar-group/src/AvatarGroup.js.map +1 -0
  263. package/dist/primitives/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  264. package/dist/primitives/badge/src/Badge.js.map +1 -0
  265. package/dist/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -0
  266. package/dist/primitives/breadcrumb/src/Breadcrumb.js.map +1 -0
  267. package/dist/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -0
  268. package/dist/primitives/button/src/Button.js.map +1 -0
  269. package/dist/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +1 -0
  270. package/dist/primitives/calendar/src/Calendar.js +7 -0
  271. package/dist/primitives/calendar/src/Calendar.js.map +1 -0
  272. package/dist/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js +202 -0
  273. package/dist/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  274. package/dist/primitives/calendar/src/index.js +3 -0
  275. package/dist/primitives/card/src/Card.js.map +1 -0
  276. package/dist/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +1 -0
  277. package/dist/primitives/carousel/src/Carousel.js.map +1 -0
  278. package/dist/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  279. package/dist/primitives/checkbox/src/Checkbox.js.map +1 -0
  280. package/dist/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  281. package/dist/primitives/chip/src/Chip.js.map +1 -0
  282. package/dist/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  283. package/dist/primitives/collapse/src/Collapse.js.map +1 -0
  284. package/dist/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +1 -0
  285. package/dist/primitives/color-picker/src/ColorPicker.js.map +1 -0
  286. package/dist/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  287. package/dist/primitives/combobox/src/Combobox.js.map +1 -0
  288. package/dist/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  289. package/dist/primitives/command/src/Command.js +7 -0
  290. package/dist/primitives/command/src/Command.js.map +1 -0
  291. package/dist/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js +333 -0
  292. package/dist/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js.map +1 -0
  293. package/dist/primitives/command/src/index.js +3 -0
  294. package/dist/primitives/context-menu/src/ContextMenu.js.map +1 -0
  295. package/dist/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  296. package/dist/primitives/copy-button/src/CopyButton.js +7 -0
  297. package/dist/primitives/copy-button/src/CopyButton.js.map +1 -0
  298. package/dist/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js +113 -0
  299. package/dist/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  300. package/dist/primitives/copy-button/src/index.js +3 -0
  301. package/dist/primitives/data-grid/src/DataGrid.js +7 -0
  302. package/dist/primitives/data-grid/src/DataGrid.js.map +1 -0
  303. package/dist/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js +347 -0
  304. package/dist/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  305. package/dist/primitives/data-grid/src/index.js +3 -0
  306. package/dist/primitives/date-picker/src/DatePicker.js.map +1 -0
  307. package/dist/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +292 -0
  308. package/dist/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  309. package/dist/primitives/date-range-picker/src/DateRangePicker.js.map +1 -0
  310. package/dist/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +417 -0
  311. package/dist/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  312. package/dist/primitives/date-time-picker/src/DateTimePicker.js.map +1 -0
  313. package/dist/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +359 -0
  314. package/dist/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  315. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +1 -0
  316. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +563 -0
  317. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  318. package/dist/primitives/dialog/src/Dialog.js.map +1 -0
  319. package/dist/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js +103 -0
  320. package/dist/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  321. package/dist/primitives/drawer/src/Drawer.js.map +1 -0
  322. package/dist/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js +235 -0
  323. package/dist/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  324. package/dist/primitives/dropdown-menu/src/DropdownMenu.js.map +1 -0
  325. package/dist/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  326. package/dist/primitives/editable/src/Editable.js.map +1 -0
  327. package/dist/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  328. package/dist/primitives/field/src/Field.js.map +1 -0
  329. package/dist/primitives/field/src/Field.vue_vue_type_script_setup_true_lang.js.map +1 -0
  330. package/dist/primitives/fieldset/src/Fieldset.js.map +1 -0
  331. package/dist/primitives/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
  332. package/dist/primitives/file-upload/src/FileUpload.js.map +1 -0
  333. package/dist/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
  334. package/dist/primitives/hover-card/src/HoverCard.js.map +1 -0
  335. package/dist/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  336. package/dist/primitives/icon-button/src/IconButton.js.map +1 -0
  337. package/dist/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  338. package/dist/primitives/indicator/src/Indicator.js.map +1 -0
  339. package/dist/primitives/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  340. package/dist/primitives/inline-error/src/InlineError.js.map +1 -0
  341. package/dist/primitives/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js.map +1 -0
  342. package/dist/primitives/kbd/src/Kbd.js.map +1 -0
  343. package/dist/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -0
  344. package/dist/primitives/link/src/Link.js.map +1 -0
  345. package/dist/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +1 -0
  346. package/dist/primitives/list/src/List.js.map +1 -0
  347. package/dist/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +1 -0
  348. package/dist/primitives/list/src/ListItem.js.map +1 -0
  349. package/dist/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +101 -0
  350. package/dist/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  351. package/dist/primitives/live-region/src/LiveRegion.js +7 -0
  352. package/dist/primitives/live-region/src/LiveRegion.js.map +1 -0
  353. package/dist/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js +59 -0
  354. package/dist/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  355. package/dist/primitives/live-region/src/context.js +85 -0
  356. package/dist/primitives/live-region/src/context.js.map +1 -0
  357. package/dist/primitives/live-region/src/index.js +3 -0
  358. package/dist/primitives/live-region/src/useAnnounce.js +25 -0
  359. package/dist/primitives/live-region/src/useAnnounce.js.map +1 -0
  360. package/dist/primitives/menubar/src/Menubar.js.map +1 -0
  361. package/dist/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js +332 -0
  362. package/dist/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  363. package/dist/primitives/meter/src/Meter.js +7 -0
  364. package/dist/primitives/meter/src/Meter.js.map +1 -0
  365. package/dist/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js +236 -0
  366. package/dist/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -0
  367. package/dist/primitives/meter/src/index.js +3 -0
  368. package/dist/primitives/navigation-menu/src/NavigationMenu.js +7 -0
  369. package/dist/primitives/navigation-menu/src/NavigationMenu.js.map +1 -0
  370. package/dist/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js +118 -0
  371. package/dist/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  372. package/dist/primitives/navigation-menu/src/index.js +2 -0
  373. package/dist/primitives/number-field/src/NumberField.js.map +1 -0
  374. package/dist/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  375. package/dist/primitives/otp-input/src/OtpInput.js.map +1 -0
  376. package/dist/primitives/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  377. package/dist/primitives/pagination/src/Pagination.js.map +1 -0
  378. package/dist/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
  379. package/dist/primitives/popover/src/Popover.js.map +1 -0
  380. package/dist/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +1 -0
  381. package/dist/primitives/progress/src/Progress.js.map +1 -0
  382. package/dist/primitives/progress/src/Progress.vue_vue_type_script_setup_true_lang.js.map +1 -0
  383. package/dist/primitives/radial-progress/src/RadialProgress.js.map +1 -0
  384. package/dist/primitives/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js.map +1 -0
  385. package/dist/primitives/radio-group/src/RadioGroup.js.map +1 -0
  386. package/dist/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  387. package/dist/primitives/rating/src/Rating.js.map +1 -0
  388. package/dist/primitives/rating/src/Rating.vue_vue_type_script_setup_true_lang.js.map +1 -0
  389. package/dist/primitives/scroll-area/src/ScrollArea.js.map +1 -0
  390. package/dist/primitives/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  391. package/dist/primitives/segmented-control/src/SegmentedControl.js.map +1 -0
  392. package/dist/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js +133 -0
  393. package/dist/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +1 -0
  394. package/dist/primitives/select/src/Select.js.map +1 -0
  395. package/dist/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +1 -0
  396. package/dist/primitives/separator/src/Separator.js.map +1 -0
  397. package/dist/primitives/separator/src/Separator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  398. package/dist/primitives/skeleton/src/Skeleton.js.map +1 -0
  399. package/dist/primitives/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  400. package/dist/primitives/skip-link/src/SkipLink.js +7 -0
  401. package/dist/primitives/skip-link/src/SkipLink.js.map +1 -0
  402. package/dist/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js +64 -0
  403. package/dist/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  404. package/dist/primitives/skip-link/src/index.js +3 -0
  405. package/dist/primitives/slider/src/Slider.js.map +1 -0
  406. package/dist/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -0
  407. package/dist/primitives/speed-dial/src/SpeedDial.js.map +1 -0
  408. package/dist/primitives/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js.map +1 -0
  409. package/dist/primitives/spinner/src/Spinner.js.map +1 -0
  410. package/dist/primitives/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  411. package/dist/primitives/stepper/src/Stepper.js.map +1 -0
  412. package/dist/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js +208 -0
  413. package/dist/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
  414. package/dist/primitives/surface/src/Surface.js.map +1 -0
  415. package/dist/primitives/surface/src/Surface.vue_vue_type_script_setup_true_lang.js.map +1 -0
  416. package/dist/primitives/switch/src/Switch.js.map +1 -0
  417. package/dist/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js +75 -0
  418. package/dist/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -0
  419. package/dist/primitives/table/src/Table.js.map +1 -0
  420. package/dist/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +1 -0
  421. package/dist/primitives/table/src/TableCell.js.map +1 -0
  422. package/dist/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  423. package/dist/primitives/table/src/TableHead.js.map +1 -0
  424. package/dist/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +1 -0
  425. package/dist/primitives/table/src/TableRow.js.map +1 -0
  426. package/dist/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  427. package/dist/primitives/table/src/index.js +8 -0
  428. package/dist/primitives/tabs/src/Tabs.js.map +1 -0
  429. package/dist/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
  430. package/dist/primitives/tags-input/src/TagsInput.js.map +1 -0
  431. package/dist/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  432. package/dist/primitives/text-field/src/TextField.js.map +1 -0
  433. package/dist/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  434. package/dist/primitives/textarea/src/Textarea.js.map +1 -0
  435. package/dist/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  436. package/dist/primitives/time-picker/src/TimePicker.js.map +1 -0
  437. package/dist/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +189 -0
  438. package/dist/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  439. package/dist/primitives/timeline/src/Timeline.js.map +1 -0
  440. package/dist/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  441. package/dist/primitives/timeline/src/TimelineItem.js.map +1 -0
  442. package/dist/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  443. package/dist/primitives/timeline/src/index.js +5 -0
  444. package/dist/primitives/toast/src/Toast.js.map +1 -0
  445. package/dist/primitives/toast/src/Toast.vue_vue_type_script_setup_true_lang.js.map +1 -0
  446. package/dist/primitives/toast/src/ToastItem.js.map +1 -0
  447. package/dist/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js +120 -0
  448. package/dist/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  449. package/dist/primitives/toggle-group/src/ToggleGroup.js +7 -0
  450. package/dist/primitives/toggle-group/src/ToggleGroup.js.map +1 -0
  451. package/dist/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js +111 -0
  452. package/dist/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  453. package/dist/primitives/toggle-group/src/index.js +2 -0
  454. package/dist/primitives/toolbar/src/Toolbar.js +7 -0
  455. package/dist/primitives/toolbar/src/Toolbar.js.map +1 -0
  456. package/dist/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js +149 -0
  457. package/dist/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  458. package/dist/primitives/toolbar/src/ToolbarSeparator.js +7 -0
  459. package/dist/primitives/toolbar/src/ToolbarSeparator.js.map +1 -0
  460. package/dist/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js +40 -0
  461. package/dist/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  462. package/dist/primitives/toolbar/src/index.js +3 -0
  463. package/dist/primitives/tooltip/src/Tooltip.js.map +1 -0
  464. package/dist/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  465. package/dist/primitives/tree-view/src/TreeView.js +7 -0
  466. package/dist/primitives/tree-view/src/TreeView.js.map +1 -0
  467. package/dist/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js +310 -0
  468. package/dist/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
  469. package/dist/primitives/tree-view/src/TreeViewNode.js +7 -0
  470. package/dist/primitives/tree-view/src/TreeViewNode.js.map +1 -0
  471. package/dist/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js +103 -0
  472. package/dist/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js.map +1 -0
  473. package/dist/primitives/tree-view/src/context.js +6 -0
  474. package/dist/primitives/tree-view/src/context.js.map +1 -0
  475. package/dist/primitives/tree-view/src/index.js +3 -0
  476. package/dist/primitives/visually-hidden/src/VisuallyHidden.js +7 -0
  477. package/dist/primitives/visually-hidden/src/VisuallyHidden.js.map +1 -0
  478. package/dist/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js +27 -0
  479. package/dist/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map +1 -0
  480. package/dist/primitives/visually-hidden/src/index.js +2 -0
  481. package/dist/primitives/window-controls/src/WindowControls.js.map +1 -0
  482. package/dist/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js +127 -0
  483. package/dist/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js.map +1 -0
  484. package/dist/styles/theme.css +30 -6
  485. package/dist/theme.js +2 -2
  486. package/package.json +31 -29
  487. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/CalendarDate.js +0 -236
  488. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/CalendarDate.js.map +0 -1
  489. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js +0 -117
  490. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js.map +0 -1
  491. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/conversion.js +0 -142
  492. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/conversion.js.map +0 -1
  493. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/manipulation.js +0 -280
  494. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/manipulation.js.map +0 -1
  495. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/queries.js +0 -40
  496. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/queries.js.map +0 -1
  497. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/string.js +0 -69
  498. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/string.js.map +0 -1
  499. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/utils.js +0 -8
  500. package/dist/node_modules/.pnpm/@internationalized_date@3.12.3/node_modules/@internationalized/date/dist/private/utils.js.map +0 -1
  501. package/dist/packages/blocks/app-header/src/AppHeader.js +0 -7
  502. package/dist/packages/blocks/app-header/src/AppHeader.js.map +0 -1
  503. package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts +0 -82
  504. package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts.map +0 -1
  505. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +0 -96
  506. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +0 -1
  507. package/dist/packages/blocks/app-header/src/index.d.ts.map +0 -1
  508. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.js +0 -7
  509. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.js.map +0 -1
  510. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue.d.ts +0 -42
  511. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue.d.ts.map +0 -1
  512. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js +0 -45
  513. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js.map +0 -1
  514. package/dist/packages/blocks/dashboard-grid/src/index.d.ts.map +0 -1
  515. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.js +0 -7
  516. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.js.map +0 -1
  517. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts +0 -102
  518. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js +0 -76
  519. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  520. package/dist/packages/blocks/desktop-app-shell/src/index.d.ts.map +0 -1
  521. package/dist/packages/blocks/empty-state/src/EmptyState.js +0 -7
  522. package/dist/packages/blocks/empty-state/src/EmptyState.js.map +0 -1
  523. package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts +0 -50
  524. package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts.map +0 -1
  525. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +0 -71
  526. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  527. package/dist/packages/blocks/empty-state/src/index.d.ts.map +0 -1
  528. package/dist/packages/blocks/error-state/src/ErrorState.js +0 -7
  529. package/dist/packages/blocks/error-state/src/ErrorState.js.map +0 -1
  530. package/dist/packages/blocks/error-state/src/ErrorState.vue.d.ts +0 -44
  531. package/dist/packages/blocks/error-state/src/ErrorState.vue.d.ts.map +0 -1
  532. package/dist/packages/blocks/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js +0 -60
  533. package/dist/packages/blocks/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  534. package/dist/packages/blocks/error-state/src/index.d.ts.map +0 -1
  535. package/dist/packages/blocks/form-actions/src/FormActions.js +0 -7
  536. package/dist/packages/blocks/form-actions/src/FormActions.js.map +0 -1
  537. package/dist/packages/blocks/form-actions/src/FormActions.vue.d.ts +0 -51
  538. package/dist/packages/blocks/form-actions/src/FormActions.vue.d.ts.map +0 -1
  539. package/dist/packages/blocks/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js +0 -22
  540. package/dist/packages/blocks/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js.map +0 -1
  541. package/dist/packages/blocks/form-actions/src/index.d.ts.map +0 -1
  542. package/dist/packages/blocks/form-section/src/FormSection.js +0 -7
  543. package/dist/packages/blocks/form-section/src/FormSection.js.map +0 -1
  544. package/dist/packages/blocks/form-section/src/FormSection.vue.d.ts +0 -85
  545. package/dist/packages/blocks/form-section/src/FormSection.vue.d.ts.map +0 -1
  546. package/dist/packages/blocks/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js +0 -64
  547. package/dist/packages/blocks/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  548. package/dist/packages/blocks/form-section/src/index.d.ts.map +0 -1
  549. package/dist/packages/blocks/loading-state/src/LoadingState.js +0 -7
  550. package/dist/packages/blocks/loading-state/src/LoadingState.js.map +0 -1
  551. package/dist/packages/blocks/loading-state/src/LoadingState.vue.d.ts.map +0 -1
  552. package/dist/packages/blocks/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js +0 -59
  553. package/dist/packages/blocks/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  554. package/dist/packages/blocks/loading-state/src/index.d.ts.map +0 -1
  555. package/dist/packages/blocks/metric-card/src/MetricCard.js +0 -7
  556. package/dist/packages/blocks/metric-card/src/MetricCard.js.map +0 -1
  557. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts +0 -77
  558. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts.map +0 -1
  559. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +0 -87
  560. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  561. package/dist/packages/blocks/metric-card/src/index.d.ts.map +0 -1
  562. package/dist/packages/blocks/page-header/src/PageHeader.js +0 -7
  563. package/dist/packages/blocks/page-header/src/PageHeader.js.map +0 -1
  564. package/dist/packages/blocks/page-header/src/PageHeader.vue.d.ts.map +0 -1
  565. package/dist/packages/blocks/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js +0 -68
  566. package/dist/packages/blocks/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js.map +0 -1
  567. package/dist/packages/blocks/page-header/src/index.d.ts.map +0 -1
  568. package/dist/packages/blocks/row-actions/src/RowActions.js +0 -7
  569. package/dist/packages/blocks/row-actions/src/RowActions.js.map +0 -1
  570. package/dist/packages/blocks/row-actions/src/RowActions.vue.d.ts.map +0 -1
  571. package/dist/packages/blocks/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js +0 -47
  572. package/dist/packages/blocks/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js.map +0 -1
  573. package/dist/packages/blocks/row-actions/src/index.d.ts.map +0 -1
  574. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.js +0 -7
  575. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.js.map +0 -1
  576. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue.d.ts.map +0 -1
  577. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js +0 -129
  578. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  579. package/dist/packages/blocks/sidebar-nav/src/index.d.ts.map +0 -1
  580. package/dist/packages/blocks/title-bar/src/TitleBar.js +0 -7
  581. package/dist/packages/blocks/title-bar/src/TitleBar.js.map +0 -1
  582. package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts +0 -83
  583. package/dist/packages/blocks/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js +0 -69
  584. package/dist/packages/blocks/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  585. package/dist/packages/blocks/title-bar/src/index.d.ts.map +0 -1
  586. package/dist/packages/blocks/toast-stack/src/ToastStack.js +0 -7
  587. package/dist/packages/blocks/toast-stack/src/ToastStack.js.map +0 -1
  588. package/dist/packages/blocks/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js +0 -52
  589. package/dist/packages/blocks/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js.map +0 -1
  590. package/dist/packages/blocks/toast-stack/src/index.d.ts.map +0 -1
  591. package/dist/packages/composition/center/src/Center.js.map +0 -1
  592. package/dist/packages/composition/center/src/Center.vue_vue_type_script_setup_true_lang.js.map +0 -1
  593. package/dist/packages/composition/frame/src/Frame.js.map +0 -1
  594. package/dist/packages/composition/frame/src/Frame.vue_vue_type_script_setup_true_lang.js.map +0 -1
  595. package/dist/packages/composition/grid/src/Grid.js.map +0 -1
  596. package/dist/packages/composition/grid/src/Grid.vue_vue_type_script_setup_true_lang.js.map +0 -1
  597. package/dist/packages/composition/inline/src/Inline.js.map +0 -1
  598. package/dist/packages/composition/inline/src/Inline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  599. package/dist/packages/composition/scroll-reel/src/ScrollReel.js.map +0 -1
  600. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js +0 -100
  601. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  602. package/dist/packages/composition/sidebar/src/Sidebar.js.map +0 -1
  603. package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js +0 -37
  604. package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  605. package/dist/packages/composition/split/src/Split.js.map +0 -1
  606. package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js +0 -41
  607. package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +0 -1
  608. package/dist/packages/composition/stack/src/Stack.js.map +0 -1
  609. package/dist/packages/composition/stack/src/Stack.vue_vue_type_script_setup_true_lang.js.map +0 -1
  610. package/dist/packages/core/src/a11y-scope.js +0 -29
  611. package/dist/packages/core/src/a11y-scope.js.map +0 -1
  612. package/dist/packages/core/src/attrs.js.map +0 -1
  613. package/dist/packages/core/src/cn.js +0 -61
  614. package/dist/packages/core/src/cn.js.map +0 -1
  615. package/dist/packages/core/src/icon-defaults.js.map +0 -1
  616. package/dist/packages/core/src/index.js +0 -8
  617. package/dist/packages/core/src/motion.js +0 -27
  618. package/dist/packages/core/src/motion.js.map +0 -1
  619. package/dist/packages/core/src/props.js.map +0 -1
  620. package/dist/packages/core/src/theme.js.map +0 -1
  621. package/dist/packages/labels/src/ancestor-disabled.js.map +0 -1
  622. package/dist/packages/labels/src/count-labels.js.map +0 -1
  623. package/dist/packages/labels/src/date-labels.js +0 -159
  624. package/dist/packages/labels/src/date-labels.js.map +0 -1
  625. package/dist/packages/labels/src/field-context.js.map +0 -1
  626. package/dist/packages/labels/src/index.js +0 -6
  627. package/dist/packages/labels/src/labels.js.map +0 -1
  628. package/dist/packages/layouts/app-shell/src/AppShell.js.map +0 -1
  629. package/dist/packages/layouts/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  630. package/dist/packages/layouts/centered/src/Centered.js.map +0 -1
  631. package/dist/packages/layouts/centered/src/Centered.vue_vue_type_script_setup_true_lang.js.map +0 -1
  632. package/dist/packages/layouts/dashboard/src/Dashboard.js.map +0 -1
  633. package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js +0 -65
  634. package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  635. package/dist/packages/layouts/form-layout/src/FormLayout.js.map +0 -1
  636. package/dist/packages/layouts/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js.map +0 -1
  637. package/dist/packages/layouts/master-detail/src/MasterDetail.js.map +0 -1
  638. package/dist/packages/layouts/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js.map +0 -1
  639. package/dist/packages/layouts/reading/src/Reading.js.map +0 -1
  640. package/dist/packages/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +0 -1
  641. package/dist/packages/layouts/settings/src/Settings.js.map +0 -1
  642. package/dist/packages/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +0 -1
  643. package/dist/packages/layouts/split-layout/src/SplitLayout.js.map +0 -1
  644. package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js +0 -47
  645. package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +0 -1
  646. package/dist/packages/primitives/accordion/src/Accordion.js.map +0 -1
  647. package/dist/packages/primitives/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  648. package/dist/packages/primitives/alert/src/Alert.js.map +0 -1
  649. package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js +0 -127
  650. package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +0 -1
  651. package/dist/packages/primitives/alert-dialog/src/AlertDialog.js.map +0 -1
  652. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +0 -1
  653. package/dist/packages/primitives/avatar/src/Avatar.js.map +0 -1
  654. package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js +0 -115
  655. package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  656. package/dist/packages/primitives/avatar-group/src/AvatarGroup.js.map +0 -1
  657. package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  658. package/dist/packages/primitives/badge/src/Badge.js.map +0 -1
  659. package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +0 -1
  660. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js.map +0 -1
  661. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +0 -1
  662. package/dist/packages/primitives/button/src/Button.js.map +0 -1
  663. package/dist/packages/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +0 -1
  664. package/dist/packages/primitives/card/src/Card.js.map +0 -1
  665. package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +0 -1
  666. package/dist/packages/primitives/carousel/src/Carousel.js.map +0 -1
  667. package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  668. package/dist/packages/primitives/checkbox/src/Checkbox.js.map +0 -1
  669. package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +0 -1
  670. package/dist/packages/primitives/chip/src/Chip.js.map +0 -1
  671. package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  672. package/dist/packages/primitives/collapse/src/Collapse.js.map +0 -1
  673. package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +0 -1
  674. package/dist/packages/primitives/color-picker/src/ColorPicker.js.map +0 -1
  675. package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  676. package/dist/packages/primitives/combobox/src/Combobox.js.map +0 -1
  677. package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +0 -1
  678. package/dist/packages/primitives/context-menu/src/ContextMenu.js.map +0 -1
  679. package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +0 -1
  680. package/dist/packages/primitives/date-picker/src/DatePicker.js.map +0 -1
  681. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +0 -294
  682. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  683. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.js.map +0 -1
  684. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +0 -416
  685. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  686. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.js.map +0 -1
  687. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +0 -360
  688. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  689. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +0 -1
  690. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +0 -564
  691. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  692. package/dist/packages/primitives/dialog/src/Dialog.js.map +0 -1
  693. package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js +0 -101
  694. package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +0 -1
  695. package/dist/packages/primitives/drawer/src/Drawer.js.map +0 -1
  696. package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js +0 -227
  697. package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +0 -1
  698. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.js.map +0 -1
  699. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +0 -1
  700. package/dist/packages/primitives/editable/src/Editable.js.map +0 -1
  701. package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +0 -1
  702. package/dist/packages/primitives/field/src/Field.js.map +0 -1
  703. package/dist/packages/primitives/field/src/Field.vue_vue_type_script_setup_true_lang.js.map +0 -1
  704. package/dist/packages/primitives/fieldset/src/Fieldset.js.map +0 -1
  705. package/dist/packages/primitives/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js.map +0 -1
  706. package/dist/packages/primitives/file-upload/src/FileUpload.js.map +0 -1
  707. package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +0 -1
  708. package/dist/packages/primitives/hover-card/src/HoverCard.js.map +0 -1
  709. package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  710. package/dist/packages/primitives/icon-button/src/IconButton.js.map +0 -1
  711. package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +0 -1
  712. package/dist/packages/primitives/indicator/src/Indicator.js.map +0 -1
  713. package/dist/packages/primitives/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  714. package/dist/packages/primitives/inline-error/src/InlineError.js.map +0 -1
  715. package/dist/packages/primitives/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js.map +0 -1
  716. package/dist/packages/primitives/kbd/src/Kbd.js.map +0 -1
  717. package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +0 -1
  718. package/dist/packages/primitives/link/src/Link.js.map +0 -1
  719. package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +0 -1
  720. package/dist/packages/primitives/list/src/List.js.map +0 -1
  721. package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +0 -1
  722. package/dist/packages/primitives/list/src/ListItem.js.map +0 -1
  723. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +0 -101
  724. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  725. package/dist/packages/primitives/menubar/src/Menubar.js.map +0 -1
  726. package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js +0 -299
  727. package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  728. package/dist/packages/primitives/number-field/src/NumberField.js.map +0 -1
  729. package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  730. package/dist/packages/primitives/otp-input/src/OtpInput.js.map +0 -1
  731. package/dist/packages/primitives/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
  732. package/dist/packages/primitives/pagination/src/Pagination.js.map +0 -1
  733. package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +0 -1
  734. package/dist/packages/primitives/popover/src/Popover.js.map +0 -1
  735. package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  736. package/dist/packages/primitives/progress/src/Progress.js.map +0 -1
  737. package/dist/packages/primitives/progress/src/Progress.vue_vue_type_script_setup_true_lang.js.map +0 -1
  738. package/dist/packages/primitives/radial-progress/src/RadialProgress.js.map +0 -1
  739. package/dist/packages/primitives/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js.map +0 -1
  740. package/dist/packages/primitives/radio-group/src/RadioGroup.js.map +0 -1
  741. package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  742. package/dist/packages/primitives/rating/src/Rating.js.map +0 -1
  743. package/dist/packages/primitives/rating/src/Rating.vue_vue_type_script_setup_true_lang.js.map +0 -1
  744. package/dist/packages/primitives/scroll-area/src/ScrollArea.js.map +0 -1
  745. package/dist/packages/primitives/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js.map +0 -1
  746. package/dist/packages/primitives/segmented-control/src/SegmentedControl.js.map +0 -1
  747. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js +0 -133
  748. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +0 -1
  749. package/dist/packages/primitives/select/src/Select.js.map +0 -1
  750. package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +0 -1
  751. package/dist/packages/primitives/separator/src/Separator.js.map +0 -1
  752. package/dist/packages/primitives/separator/src/Separator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  753. package/dist/packages/primitives/skeleton/src/Skeleton.js.map +0 -1
  754. package/dist/packages/primitives/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js.map +0 -1
  755. package/dist/packages/primitives/slider/src/Slider.js.map +0 -1
  756. package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +0 -1
  757. package/dist/packages/primitives/speed-dial/src/SpeedDial.js.map +0 -1
  758. package/dist/packages/primitives/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js.map +0 -1
  759. package/dist/packages/primitives/spinner/src/Spinner.js.map +0 -1
  760. package/dist/packages/primitives/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js.map +0 -1
  761. package/dist/packages/primitives/stepper/src/Stepper.js.map +0 -1
  762. package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js +0 -206
  763. package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +0 -1
  764. package/dist/packages/primitives/surface/src/Surface.js.map +0 -1
  765. package/dist/packages/primitives/surface/src/Surface.vue_vue_type_script_setup_true_lang.js.map +0 -1
  766. package/dist/packages/primitives/switch/src/Switch.js.map +0 -1
  767. package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js +0 -75
  768. package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +0 -1
  769. package/dist/packages/primitives/table/src/Table.js.map +0 -1
  770. package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +0 -1
  771. package/dist/packages/primitives/table/src/TableCell.js.map +0 -1
  772. package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  773. package/dist/packages/primitives/table/src/TableHead.js.map +0 -1
  774. package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +0 -1
  775. package/dist/packages/primitives/table/src/TableRow.js.map +0 -1
  776. package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  777. package/dist/packages/primitives/table/src/index.js +0 -8
  778. package/dist/packages/primitives/tabs/src/Tabs.js.map +0 -1
  779. package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +0 -1
  780. package/dist/packages/primitives/tags-input/src/TagsInput.js.map +0 -1
  781. package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
  782. package/dist/packages/primitives/text-field/src/TextField.js.map +0 -1
  783. package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  784. package/dist/packages/primitives/textarea/src/Textarea.js.map +0 -1
  785. package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +0 -1
  786. package/dist/packages/primitives/time-picker/src/TimePicker.js.map +0 -1
  787. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +0 -187
  788. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  789. package/dist/packages/primitives/timeline/src/Timeline.js.map +0 -1
  790. package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  791. package/dist/packages/primitives/timeline/src/TimelineItem.js.map +0 -1
  792. package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  793. package/dist/packages/primitives/timeline/src/index.js +0 -5
  794. package/dist/packages/primitives/toast/src/Toast.js.map +0 -1
  795. package/dist/packages/primitives/toast/src/Toast.vue_vue_type_script_setup_true_lang.js.map +0 -1
  796. package/dist/packages/primitives/toast/src/ToastItem.js.map +0 -1
  797. package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js +0 -118
  798. package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  799. package/dist/packages/primitives/tooltip/src/Tooltip.js.map +0 -1
  800. package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  801. package/dist/packages/primitives/window-controls/src/WindowControls.js.map +0 -1
  802. package/dist/packages/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js +0 -124
  803. package/dist/packages/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js.map +0 -1
  804. /package/dist/{packages/composition → composition}/center/src/Center.js +0 -0
  805. /package/dist/{packages/composition → composition}/center/src/Center.vue_vue_type_script_setup_true_lang.js +0 -0
  806. /package/dist/{packages/composition → composition}/center/src/index.js +0 -0
  807. /package/dist/{packages/blocks → composition}/dashboard-grid/src/index.js +0 -0
  808. /package/dist/{packages/composition → composition}/frame/src/Frame.js +0 -0
  809. /package/dist/{packages/composition → composition}/frame/src/Frame.vue_vue_type_script_setup_true_lang.js +0 -0
  810. /package/dist/{packages/composition → composition}/frame/src/index.js +0 -0
  811. /package/dist/{packages/composition → composition}/grid/src/Grid.js +0 -0
  812. /package/dist/{packages/composition → composition}/grid/src/Grid.vue_vue_type_script_setup_true_lang.js +0 -0
  813. /package/dist/{packages/composition → composition}/grid/src/index.js +0 -0
  814. /package/dist/{packages/composition → composition}/inline/src/Inline.js +0 -0
  815. /package/dist/{packages/composition → composition}/inline/src/Inline.vue_vue_type_script_setup_true_lang.js +0 -0
  816. /package/dist/{packages/composition → composition}/inline/src/index.js +0 -0
  817. /package/dist/{packages/composition → composition}/scroll-reel/src/ScrollReel.js +0 -0
  818. /package/dist/{packages/composition → composition}/scroll-reel/src/index.js +0 -0
  819. /package/dist/{packages/composition → composition}/sidebar/src/Sidebar.js +0 -0
  820. /package/dist/{packages/composition → composition}/sidebar/src/index.js +0 -0
  821. /package/dist/{packages/composition → composition}/split/src/Split.js +0 -0
  822. /package/dist/{packages/composition → composition}/split/src/index.js +0 -0
  823. /package/dist/{packages/composition → composition}/stack/src/Stack.js +0 -0
  824. /package/dist/{packages/composition → composition}/stack/src/Stack.vue_vue_type_script_setup_true_lang.js +0 -0
  825. /package/dist/{packages/composition → composition}/stack/src/index.js +0 -0
  826. /package/dist/{packages/core → core}/src/attrs.js +0 -0
  827. /package/dist/{packages/core → core}/src/icon-defaults.js +0 -0
  828. /package/dist/{packages/core → core}/src/props.js +0 -0
  829. /package/dist/{packages/core → core}/src/theme.js +0 -0
  830. /package/dist/{packages/labels → labels}/src/ancestor-disabled.js +0 -0
  831. /package/dist/{packages/labels → labels}/src/count-labels.js +0 -0
  832. /package/dist/{packages/labels → labels}/src/field-context.js +0 -0
  833. /package/dist/{packages/labels → labels}/src/labels.js +0 -0
  834. /package/dist/{packages/layouts → layouts}/app-shell/src/AppShell.js +0 -0
  835. /package/dist/{packages/layouts → layouts}/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js +0 -0
  836. /package/dist/{packages/layouts → layouts}/app-shell/src/index.js +0 -0
  837. /package/dist/{packages/layouts → layouts}/centered/src/Centered.js +0 -0
  838. /package/dist/{packages/layouts → layouts}/centered/src/Centered.vue_vue_type_script_setup_true_lang.js +0 -0
  839. /package/dist/{packages/layouts → layouts}/centered/src/index.js +0 -0
  840. /package/dist/{packages/layouts → layouts}/dashboard/src/Dashboard.js +0 -0
  841. /package/dist/{packages/layouts → layouts}/dashboard/src/index.js +0 -0
  842. /package/dist/{packages/blocks → layouts}/desktop-app-shell/src/index.js +0 -0
  843. /package/dist/{packages/layouts → layouts}/form-layout/src/FormLayout.js +0 -0
  844. /package/dist/{packages/layouts → layouts}/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js +0 -0
  845. /package/dist/{packages/layouts → layouts}/form-layout/src/index.js +0 -0
  846. /package/dist/{packages/layouts → layouts}/master-detail/src/MasterDetail.js +0 -0
  847. /package/dist/{packages/layouts → layouts}/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js +0 -0
  848. /package/dist/{packages/layouts → layouts}/master-detail/src/index.js +0 -0
  849. /package/dist/{packages/layouts → layouts}/reading/src/Reading.js +0 -0
  850. /package/dist/{packages/layouts → layouts}/reading/src/Reading.vue_vue_type_script_setup_true_lang.js +0 -0
  851. /package/dist/{packages/layouts → layouts}/reading/src/index.js +0 -0
  852. /package/dist/{packages/layouts → layouts}/settings/src/Settings.js +0 -0
  853. /package/dist/{packages/layouts → layouts}/settings/src/Settings.vue_vue_type_script_setup_true_lang.js +0 -0
  854. /package/dist/{packages/layouts → layouts}/settings/src/index.js +0 -0
  855. /package/dist/{packages/layouts → layouts}/split-layout/src/SplitLayout.js +0 -0
  856. /package/dist/{packages/layouts → layouts}/split-layout/src/index.js +0 -0
  857. /package/dist/packages/{blocks → composition}/dashboard-grid/src/index.d.ts +0 -0
  858. /package/dist/packages/{blocks → layouts}/desktop-app-shell/src/index.d.ts +0 -0
  859. /package/dist/packages/{blocks → patterns}/app-header/src/index.d.ts +0 -0
  860. /package/dist/packages/{blocks → patterns}/empty-state/src/index.d.ts +0 -0
  861. /package/dist/packages/{blocks → patterns}/error-state/src/index.d.ts +0 -0
  862. /package/dist/packages/{blocks → patterns}/form-actions/src/index.d.ts +0 -0
  863. /package/dist/packages/{blocks → patterns}/form-section/src/index.d.ts +0 -0
  864. /package/dist/packages/{blocks → patterns}/loading-state/src/LoadingState.vue.d.ts +0 -0
  865. /package/dist/packages/{blocks → patterns}/loading-state/src/index.d.ts +0 -0
  866. /package/dist/packages/{blocks → patterns}/metric-card/src/index.d.ts +0 -0
  867. /package/dist/packages/{blocks → patterns}/page-header/src/PageHeader.vue.d.ts +0 -0
  868. /package/dist/packages/{blocks → patterns}/page-header/src/index.d.ts +0 -0
  869. /package/dist/packages/{blocks → patterns}/row-actions/src/RowActions.vue.d.ts +0 -0
  870. /package/dist/packages/{blocks → patterns}/row-actions/src/index.d.ts +0 -0
  871. /package/dist/packages/{blocks → patterns}/sidebar-nav/src/SidebarNav.vue.d.ts +0 -0
  872. /package/dist/packages/{blocks → patterns}/sidebar-nav/src/index.d.ts +0 -0
  873. /package/dist/packages/{blocks → patterns}/title-bar/src/index.d.ts +0 -0
  874. /package/dist/packages/{blocks → patterns}/toast-stack/src/ToastStack.vue.d.ts +0 -0
  875. /package/dist/packages/{blocks → patterns}/toast-stack/src/index.d.ts +0 -0
  876. /package/dist/{packages/blocks → patterns}/app-header/src/index.js +0 -0
  877. /package/dist/{packages/blocks → patterns}/empty-state/src/index.js +0 -0
  878. /package/dist/{packages/blocks → patterns}/error-state/src/index.js +0 -0
  879. /package/dist/{packages/blocks → patterns}/form-actions/src/index.js +0 -0
  880. /package/dist/{packages/blocks → patterns}/form-section/src/index.js +0 -0
  881. /package/dist/{packages/blocks → patterns}/loading-state/src/index.js +0 -0
  882. /package/dist/{packages/blocks → patterns}/metric-card/src/index.js +0 -0
  883. /package/dist/{packages/blocks → patterns}/page-header/src/index.js +0 -0
  884. /package/dist/{packages/blocks → patterns}/row-actions/src/index.js +0 -0
  885. /package/dist/{packages/blocks → patterns}/sidebar-nav/src/index.js +0 -0
  886. /package/dist/{packages/blocks → patterns}/title-bar/src/index.js +0 -0
  887. /package/dist/{packages/blocks → patterns}/toast-stack/src/index.js +0 -0
  888. /package/dist/{packages/primitives → primitives}/accordion/src/Accordion.js +0 -0
  889. /package/dist/{packages/primitives → primitives}/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js +0 -0
  890. /package/dist/{packages/primitives → primitives}/accordion/src/index.js +0 -0
  891. /package/dist/{packages/primitives → primitives}/alert/src/Alert.js +0 -0
  892. /package/dist/{packages/primitives → primitives}/alert/src/index.js +0 -0
  893. /package/dist/{packages/primitives → primitives}/alert-dialog/src/AlertDialog.js +0 -0
  894. /package/dist/{packages/primitives → primitives}/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js +0 -0
  895. /package/dist/{packages/primitives → primitives}/alert-dialog/src/index.js +0 -0
  896. /package/dist/{packages/primitives → primitives}/avatar/src/Avatar.js +0 -0
  897. /package/dist/{packages/primitives → primitives}/avatar/src/index.js +0 -0
  898. /package/dist/{packages/primitives → primitives}/avatar-group/src/AvatarGroup.js +0 -0
  899. /package/dist/{packages/primitives → primitives}/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  900. /package/dist/{packages/primitives → primitives}/avatar-group/src/index.js +0 -0
  901. /package/dist/{packages/primitives → primitives}/badge/src/Badge.js +0 -0
  902. /package/dist/{packages/primitives → primitives}/badge/src/Badge.vue_vue_type_script_setup_true_lang.js +0 -0
  903. /package/dist/{packages/primitives → primitives}/badge/src/index.js +0 -0
  904. /package/dist/{packages/primitives → primitives}/breadcrumb/src/Breadcrumb.js +0 -0
  905. /package/dist/{packages/primitives → primitives}/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js +0 -0
  906. /package/dist/{packages/primitives → primitives}/breadcrumb/src/index.js +0 -0
  907. /package/dist/{packages/primitives → primitives}/button/src/Button.js +0 -0
  908. /package/dist/{packages/primitives → primitives}/button/src/Button.vue_vue_type_script_setup_true_lang.js +0 -0
  909. /package/dist/{packages/primitives → primitives}/button/src/index.js +0 -0
  910. /package/dist/{packages/primitives → primitives}/card/src/Card.js +0 -0
  911. /package/dist/{packages/primitives → primitives}/card/src/Card.vue_vue_type_script_setup_true_lang.js +0 -0
  912. /package/dist/{packages/primitives → primitives}/card/src/index.js +0 -0
  913. /package/dist/{packages/primitives → primitives}/carousel/src/Carousel.js +0 -0
  914. /package/dist/{packages/primitives → primitives}/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js +0 -0
  915. /package/dist/{packages/primitives → primitives}/carousel/src/index.js +0 -0
  916. /package/dist/{packages/primitives → primitives}/checkbox/src/Checkbox.js +0 -0
  917. /package/dist/{packages/primitives → primitives}/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js +0 -0
  918. /package/dist/{packages/primitives → primitives}/checkbox/src/index.js +0 -0
  919. /package/dist/{packages/primitives → primitives}/chip/src/Chip.js +0 -0
  920. /package/dist/{packages/primitives → primitives}/chip/src/Chip.vue_vue_type_script_setup_true_lang.js +0 -0
  921. /package/dist/{packages/primitives → primitives}/chip/src/index.js +0 -0
  922. /package/dist/{packages/primitives → primitives}/collapse/src/Collapse.js +0 -0
  923. /package/dist/{packages/primitives → primitives}/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js +0 -0
  924. /package/dist/{packages/primitives → primitives}/collapse/src/index.js +0 -0
  925. /package/dist/{packages/primitives → primitives}/color-picker/src/ColorPicker.js +0 -0
  926. /package/dist/{packages/primitives → primitives}/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js +0 -0
  927. /package/dist/{packages/primitives → primitives}/color-picker/src/index.js +0 -0
  928. /package/dist/{packages/primitives → primitives}/combobox/src/Combobox.js +0 -0
  929. /package/dist/{packages/primitives → primitives}/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js +0 -0
  930. /package/dist/{packages/primitives → primitives}/combobox/src/index.js +0 -0
  931. /package/dist/{packages/primitives → primitives}/context-menu/src/ContextMenu.js +0 -0
  932. /package/dist/{packages/primitives → primitives}/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js +0 -0
  933. /package/dist/{packages/primitives → primitives}/context-menu/src/index.js +0 -0
  934. /package/dist/{packages/primitives → primitives}/date-picker/src/DatePicker.js +0 -0
  935. /package/dist/{packages/primitives → primitives}/date-picker/src/index.js +0 -0
  936. /package/dist/{packages/primitives → primitives}/date-range-picker/src/DateRangePicker.js +0 -0
  937. /package/dist/{packages/primitives → primitives}/date-range-picker/src/index.js +0 -0
  938. /package/dist/{packages/primitives → primitives}/date-time-picker/src/DateTimePicker.js +0 -0
  939. /package/dist/{packages/primitives → primitives}/date-time-picker/src/index.js +0 -0
  940. /package/dist/{packages/primitives → primitives}/date-time-range-picker/src/DateTimeRangePicker.js +0 -0
  941. /package/dist/{packages/primitives → primitives}/date-time-range-picker/src/index.js +0 -0
  942. /package/dist/{packages/primitives → primitives}/dialog/src/Dialog.js +0 -0
  943. /package/dist/{packages/primitives → primitives}/dialog/src/index.js +0 -0
  944. /package/dist/{packages/primitives → primitives}/drawer/src/Drawer.js +0 -0
  945. /package/dist/{packages/primitives → primitives}/drawer/src/index.js +0 -0
  946. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/DropdownMenu.js +0 -0
  947. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js +0 -0
  948. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/index.js +0 -0
  949. /package/dist/{packages/primitives → primitives}/editable/src/Editable.js +0 -0
  950. /package/dist/{packages/primitives → primitives}/editable/src/Editable.vue_vue_type_script_setup_true_lang.js +0 -0
  951. /package/dist/{packages/primitives → primitives}/editable/src/index.js +0 -0
  952. /package/dist/{packages/primitives → primitives}/field/src/Field.js +0 -0
  953. /package/dist/{packages/primitives → primitives}/field/src/Field.vue_vue_type_script_setup_true_lang.js +0 -0
  954. /package/dist/{packages/primitives → primitives}/field/src/index.js +0 -0
  955. /package/dist/{packages/primitives → primitives}/fieldset/src/Fieldset.js +0 -0
  956. /package/dist/{packages/primitives → primitives}/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js +0 -0
  957. /package/dist/{packages/primitives → primitives}/fieldset/src/index.js +0 -0
  958. /package/dist/{packages/primitives → primitives}/file-upload/src/FileUpload.js +0 -0
  959. /package/dist/{packages/primitives → primitives}/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js +0 -0
  960. /package/dist/{packages/primitives → primitives}/file-upload/src/index.js +0 -0
  961. /package/dist/{packages/primitives → primitives}/hover-card/src/HoverCard.js +0 -0
  962. /package/dist/{packages/primitives → primitives}/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js +0 -0
  963. /package/dist/{packages/primitives → primitives}/hover-card/src/index.js +0 -0
  964. /package/dist/{packages/primitives → primitives}/icon-button/src/IconButton.js +0 -0
  965. /package/dist/{packages/primitives → primitives}/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js +0 -0
  966. /package/dist/{packages/primitives → primitives}/icon-button/src/index.js +0 -0
  967. /package/dist/{packages/primitives → primitives}/indicator/src/Indicator.js +0 -0
  968. /package/dist/{packages/primitives → primitives}/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js +0 -0
  969. /package/dist/{packages/primitives → primitives}/indicator/src/index.js +0 -0
  970. /package/dist/{packages/primitives → primitives}/inline-error/src/InlineError.js +0 -0
  971. /package/dist/{packages/primitives → primitives}/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js +0 -0
  972. /package/dist/{packages/primitives → primitives}/inline-error/src/index.js +0 -0
  973. /package/dist/{packages/primitives → primitives}/kbd/src/Kbd.js +0 -0
  974. /package/dist/{packages/primitives → primitives}/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js +0 -0
  975. /package/dist/{packages/primitives → primitives}/kbd/src/index.js +0 -0
  976. /package/dist/{packages/primitives → primitives}/link/src/Link.js +0 -0
  977. /package/dist/{packages/primitives → primitives}/link/src/Link.vue_vue_type_script_setup_true_lang.js +0 -0
  978. /package/dist/{packages/primitives → primitives}/link/src/index.js +0 -0
  979. /package/dist/{packages/primitives → primitives}/list/src/List.js +0 -0
  980. /package/dist/{packages/primitives → primitives}/list/src/List.vue_vue_type_script_setup_true_lang.js +0 -0
  981. /package/dist/{packages/primitives → primitives}/list/src/ListItem.js +0 -0
  982. /package/dist/{packages/primitives → primitives}/list/src/index.js +0 -0
  983. /package/dist/{packages/primitives → primitives}/menubar/src/Menubar.js +0 -0
  984. /package/dist/{packages/primitives → primitives}/menubar/src/index.js +0 -0
  985. /package/dist/{packages/primitives → primitives}/number-field/src/NumberField.js +0 -0
  986. /package/dist/{packages/primitives → primitives}/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js +0 -0
  987. /package/dist/{packages/primitives → primitives}/number-field/src/index.js +0 -0
  988. /package/dist/{packages/primitives → primitives}/otp-input/src/OtpInput.js +0 -0
  989. /package/dist/{packages/primitives → primitives}/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js +0 -0
  990. /package/dist/{packages/primitives → primitives}/otp-input/src/index.js +0 -0
  991. /package/dist/{packages/primitives → primitives}/pagination/src/Pagination.js +0 -0
  992. /package/dist/{packages/primitives → primitives}/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js +0 -0
  993. /package/dist/{packages/primitives → primitives}/pagination/src/index.js +0 -0
  994. /package/dist/{packages/primitives → primitives}/popover/src/Popover.js +0 -0
  995. /package/dist/{packages/primitives → primitives}/popover/src/Popover.vue_vue_type_script_setup_true_lang.js +0 -0
  996. /package/dist/{packages/primitives → primitives}/popover/src/index.js +0 -0
  997. /package/dist/{packages/primitives → primitives}/progress/src/Progress.js +0 -0
  998. /package/dist/{packages/primitives → primitives}/progress/src/Progress.vue_vue_type_script_setup_true_lang.js +0 -0
  999. /package/dist/{packages/primitives → primitives}/progress/src/index.js +0 -0
  1000. /package/dist/{packages/primitives → primitives}/radial-progress/src/RadialProgress.js +0 -0
  1001. /package/dist/{packages/primitives → primitives}/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js +0 -0
  1002. /package/dist/{packages/primitives → primitives}/radial-progress/src/index.js +0 -0
  1003. /package/dist/{packages/primitives → primitives}/radio-group/src/RadioGroup.js +0 -0
  1004. /package/dist/{packages/primitives → primitives}/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  1005. /package/dist/{packages/primitives → primitives}/radio-group/src/index.js +0 -0
  1006. /package/dist/{packages/primitives → primitives}/rating/src/Rating.js +0 -0
  1007. /package/dist/{packages/primitives → primitives}/rating/src/Rating.vue_vue_type_script_setup_true_lang.js +0 -0
  1008. /package/dist/{packages/primitives → primitives}/rating/src/index.js +0 -0
  1009. /package/dist/{packages/primitives → primitives}/scroll-area/src/ScrollArea.js +0 -0
  1010. /package/dist/{packages/primitives → primitives}/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js +0 -0
  1011. /package/dist/{packages/primitives → primitives}/scroll-area/src/index.js +0 -0
  1012. /package/dist/{packages/primitives → primitives}/segmented-control/src/SegmentedControl.js +0 -0
  1013. /package/dist/{packages/primitives → primitives}/segmented-control/src/index.js +0 -0
  1014. /package/dist/{packages/primitives → primitives}/select/src/Select.js +0 -0
  1015. /package/dist/{packages/primitives → primitives}/select/src/Select.vue_vue_type_script_setup_true_lang.js +0 -0
  1016. /package/dist/{packages/primitives → primitives}/select/src/index.js +0 -0
  1017. /package/dist/{packages/primitives → primitives}/separator/src/Separator.js +0 -0
  1018. /package/dist/{packages/primitives → primitives}/separator/src/Separator.vue_vue_type_script_setup_true_lang.js +0 -0
  1019. /package/dist/{packages/primitives → primitives}/separator/src/index.js +0 -0
  1020. /package/dist/{packages/primitives → primitives}/skeleton/src/Skeleton.js +0 -0
  1021. /package/dist/{packages/primitives → primitives}/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js +0 -0
  1022. /package/dist/{packages/primitives → primitives}/skeleton/src/index.js +0 -0
  1023. /package/dist/{packages/primitives → primitives}/slider/src/Slider.js +0 -0
  1024. /package/dist/{packages/primitives → primitives}/slider/src/Slider.vue_vue_type_script_setup_true_lang.js +0 -0
  1025. /package/dist/{packages/primitives → primitives}/slider/src/index.js +0 -0
  1026. /package/dist/{packages/primitives → primitives}/speed-dial/src/SpeedDial.js +0 -0
  1027. /package/dist/{packages/primitives → primitives}/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js +0 -0
  1028. /package/dist/{packages/primitives → primitives}/speed-dial/src/index.js +0 -0
  1029. /package/dist/{packages/primitives → primitives}/spinner/src/Spinner.js +0 -0
  1030. /package/dist/{packages/primitives → primitives}/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js +0 -0
  1031. /package/dist/{packages/primitives → primitives}/spinner/src/index.js +0 -0
  1032. /package/dist/{packages/primitives → primitives}/stepper/src/Stepper.js +0 -0
  1033. /package/dist/{packages/primitives → primitives}/stepper/src/index.js +0 -0
  1034. /package/dist/{packages/primitives → primitives}/surface/src/Surface.js +0 -0
  1035. /package/dist/{packages/primitives → primitives}/surface/src/Surface.vue_vue_type_script_setup_true_lang.js +0 -0
  1036. /package/dist/{packages/primitives → primitives}/surface/src/index.js +0 -0
  1037. /package/dist/{packages/primitives → primitives}/switch/src/Switch.js +0 -0
  1038. /package/dist/{packages/primitives → primitives}/switch/src/index.js +0 -0
  1039. /package/dist/{packages/primitives → primitives}/table/src/Table.js +0 -0
  1040. /package/dist/{packages/primitives → primitives}/table/src/Table.vue_vue_type_script_setup_true_lang.js +0 -0
  1041. /package/dist/{packages/primitives → primitives}/table/src/TableCell.js +0 -0
  1042. /package/dist/{packages/primitives → primitives}/table/src/TableCell.vue_vue_type_script_setup_true_lang.js +0 -0
  1043. /package/dist/{packages/primitives → primitives}/table/src/TableHead.js +0 -0
  1044. /package/dist/{packages/primitives → primitives}/table/src/TableHead.vue_vue_type_script_setup_true_lang.js +0 -0
  1045. /package/dist/{packages/primitives → primitives}/table/src/TableRow.js +0 -0
  1046. /package/dist/{packages/primitives → primitives}/table/src/TableRow.vue_vue_type_script_setup_true_lang.js +0 -0
  1047. /package/dist/{packages/primitives → primitives}/tabs/src/Tabs.js +0 -0
  1048. /package/dist/{packages/primitives → primitives}/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js +0 -0
  1049. /package/dist/{packages/primitives → primitives}/tabs/src/index.js +0 -0
  1050. /package/dist/{packages/primitives → primitives}/tags-input/src/TagsInput.js +0 -0
  1051. /package/dist/{packages/primitives → primitives}/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js +0 -0
  1052. /package/dist/{packages/primitives → primitives}/tags-input/src/index.js +0 -0
  1053. /package/dist/{packages/primitives → primitives}/text-field/src/TextField.js +0 -0
  1054. /package/dist/{packages/primitives → primitives}/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js +0 -0
  1055. /package/dist/{packages/primitives → primitives}/text-field/src/index.js +0 -0
  1056. /package/dist/{packages/primitives → primitives}/textarea/src/Textarea.js +0 -0
  1057. /package/dist/{packages/primitives → primitives}/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js +0 -0
  1058. /package/dist/{packages/primitives → primitives}/textarea/src/index.js +0 -0
  1059. /package/dist/{packages/primitives → primitives}/time-picker/src/TimePicker.js +0 -0
  1060. /package/dist/{packages/primitives → primitives}/time-picker/src/index.js +0 -0
  1061. /package/dist/{packages/primitives → primitives}/timeline/src/Timeline.js +0 -0
  1062. /package/dist/{packages/primitives → primitives}/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js +0 -0
  1063. /package/dist/{packages/primitives → primitives}/timeline/src/TimelineItem.js +0 -0
  1064. /package/dist/{packages/primitives → primitives}/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js +0 -0
  1065. /package/dist/{packages/primitives → primitives}/toast/src/Toast.js +0 -0
  1066. /package/dist/{packages/primitives → primitives}/toast/src/Toast.vue_vue_type_script_setup_true_lang.js +0 -0
  1067. /package/dist/{packages/primitives → primitives}/toast/src/ToastItem.js +0 -0
  1068. /package/dist/{packages/primitives → primitives}/toast/src/index.js +0 -0
  1069. /package/dist/{packages/primitives → primitives}/tooltip/src/Tooltip.js +0 -0
  1070. /package/dist/{packages/primitives → primitives}/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js +0 -0
  1071. /package/dist/{packages/primitives → primitives}/tooltip/src/index.js +0 -0
  1072. /package/dist/{packages/primitives → primitives}/window-controls/src/WindowControls.js +0 -0
  1073. /package/dist/{packages/primitives → primitives}/window-controls/src/index.js +0 -0
@@ -0,0 +1,111 @@
1
+ import { cn } from "../../../core/src/cn.js";
2
+ import { optional } from "../../../core/src/props.js";
3
+ import { useSplitAttrs } from "../../../core/src/attrs.js";
4
+ import "../../../core/src/index.js";
5
+ import { useFieldControl } from "../../../labels/src/field-context.js";
6
+ import { useAncestorDisabled } from "../../../labels/src/ancestor-disabled.js";
7
+ import "../../../labels/src/index.js";
8
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, normalizeClass, openBlock, renderList, resolveDynamicComponent, toDisplayString, unref, useTemplateRef, withCtx } from "vue";
9
+ import { ToggleGroupItem, ToggleGroupRoot } from "reka-ui";
10
+ //#region packages/primitives/toggle-group/src/ToggleGroup.vue?vue&type=script&setup=true&lang.ts
11
+ var _hoisted_1 = { class: "group-data-[disabled]/item:text-muted-foreground" };
12
+ var ToggleGroup_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
13
+ inheritAttrs: false,
14
+ __name: "ToggleGroup",
15
+ props: {
16
+ modelValue: {},
17
+ items: {},
18
+ type: { default: "single" },
19
+ variant: { default: "secondary" },
20
+ size: { default: "md" },
21
+ disabled: {
22
+ type: Boolean,
23
+ default: void 0
24
+ }
25
+ },
26
+ emits: ["update:modelValue"],
27
+ setup(__props, { emit: __emit }) {
28
+ const props = __props;
29
+ const emit = __emit;
30
+ const { attrs, rest: groupAttrs } = useSplitAttrs();
31
+ /**
32
+ * The buttons are real `<button>`s, so a `<fieldset disabled>` above this
33
+ * group already makes each of them inert — but Reka's roving focus is what
34
+ * decides where Tab lands, and it is driven by the group's own `disabled`,
35
+ * which the fieldset never reaches. Its own `disabled` prop sets that to
36
+ * `-1`, exactly as SegmentedControl does.
37
+ *
38
+ * Read off the DOM rather than taken from the Field context, which publishes
39
+ * no `disabled` on purpose — see `../../lib/ancestor-disabled.ts`.
40
+ */
41
+ const root = useTemplateRef("root");
42
+ const groupDisabled = useAncestorDisabled(() => root.value?.$el);
43
+ const field = useFieldControl(() => ({
44
+ id: attrs.id,
45
+ describedBy: attrs["aria-describedby"],
46
+ disabled: groupDisabled.value ? true : props.disabled
47
+ }));
48
+ /**
49
+ * Reka's own model is `AcceptableValue` for `"single"` and `AcceptableValue[]`
50
+ * for `"multiple"`, and its typing has no `undefined` rung under
51
+ * `exactOptionalPropertyTypes`. The seam's contract adds `null` for "nothing
52
+ * pressed" and keeps a `null`/absent model from reaching Reka as a stray
53
+ * non-string: a single group with nothing pressed shows Reka `""`, which is
54
+ * no item's value — and `data-state="off"` on every button — in both engines.
55
+ */
56
+ const rootValue = computed(() => {
57
+ if (props.type === "multiple") return Array.isArray(props.modelValue) ? props.modelValue : [];
58
+ return typeof props.modelValue === "string" ? props.modelValue : "";
59
+ });
60
+ function onUpdate(value) {
61
+ if (props.type === "multiple") emit("update:modelValue", Array.isArray(value) ? value : []);
62
+ else emit("update:modelValue", typeof value === "string" && value !== "" ? value : null);
63
+ }
64
+ const iconClass = computed(() => props.size === "sm" ? "size-3.5" : "size-4");
65
+ return (_ctx, _cache) => {
66
+ return openBlock(), createBlock(unref(ToggleGroupRoot), mergeProps({
67
+ ref_key: "root",
68
+ ref: root,
69
+ type: __props.type,
70
+ "model-value": rootValue.value,
71
+ orientation: "horizontal",
72
+ disabled: unref(field).disabled
73
+ }, {
74
+ ...unref(groupAttrs),
75
+ ...unref(field).attrs
76
+ }, {
77
+ class: unref(cn)("inline-flex items-center gap-0.5 rounded-md p-0.5", __props.variant === "secondary" && "border border-input bg-muted", __props.variant === "outline" && "border border-input bg-background", __props.variant === "ghost" && "bg-transparent", unref(field).disabled && __props.variant !== "ghost" && "border-border cursor-not-allowed", unref(attrs).class),
78
+ "onUpdate:modelValue": onUpdate
79
+ }), {
80
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (opt) => {
81
+ return openBlock(), createBlock(unref(ToggleGroupItem), mergeProps({
82
+ key: opt.value,
83
+ value: opt.value,
84
+ disabled: opt.disabled ?? false
85
+ }, { ref_for: true }, unref(optional)({ "data-testid": opt.testId }), { class: unref(cn)("group/item relative inline-flex items-center justify-center gap-1.5 rounded-sm text-muted-foreground", __props.size === "sm" && "min-h-6 min-w-6 px-1.5 py-px text-micro", __props.size === "md" && "min-h-8 px-3 py-1 text-sm", __props.size === "lg" && "min-h-10 px-4 py-1.5", "data-[state=off]:hover:bg-subtle", "data-[state=on]:bg-primary data-[state=on]:font-medium data-[state=on]:text-primary-foreground data-[state=on]:shadow-sm", "active:scale-press", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo", "disabled:pointer-events-none data-[disabled]:bg-background") }), {
86
+ default: withCtx(() => [opt.icon ? (openBlock(), createBlock(resolveDynamicComponent(opt.icon), {
87
+ key: 0,
88
+ "aria-hidden": "true",
89
+ class: normalizeClass(unref(cn)("shrink-0", iconClass.value))
90
+ }, null, 8, ["class"])) : createCommentVNode("", true), createElementVNode("span", _hoisted_1, toDisplayString(opt.label), 1)]),
91
+ _: 2
92
+ }, 1040, [
93
+ "value",
94
+ "disabled",
95
+ "class"
96
+ ]);
97
+ }), 128))]),
98
+ _: 1
99
+ }, 16, [
100
+ "type",
101
+ "model-value",
102
+ "disabled",
103
+ "class"
104
+ ]);
105
+ };
106
+ }
107
+ });
108
+ //#endregion
109
+ export { ToggleGroup_vue_vue_type_script_setup_true_lang_default as default };
110
+
111
+ //# sourceMappingURL=ToggleGroup.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/toggle-group/src/ToggleGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Component } from \"vue\";\n\n/** One toggle inside a {@link ToggleGroup}. */\nexport interface ToggleGroupItem {\n /** Matched against `modelValue`. */\n value: string;\n /** Visible label, rendered inside the button. */\n label: string;\n /** Optional glyph rendered before the label; hidden from the tree, the label is the name. */\n icon?: Component;\n /** Disables this button alone, leaving its neighbours toggleable. */\n disabled?: boolean;\n /** Forwarded to the button's DOM node — lets hosts keep stable test hooks. */\n testId?: string;\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from \"vue\";\nimport { ToggleGroupRoot, ToggleGroupItem as RekaToggleGroupItem } from \"reka-ui\";\nimport type { AcceptableValue } from \"reka-ui\";\nimport { useAncestorDisabled, useFieldControl } from \"@ecoma-io/loom-labels\";\nimport { cn, optional, useSplitAttrs } from \"@ecoma-io/loom-core\";\n\n/**\n * ToggleGroup — a set of toggle actions or filters whose pressed state is the\n * value: bold/italic/underline, column filters, metric toggles. Each item is\n * a real `<button aria-pressed>` — deliberately **not** `aria-checked`/radio\n * semantics, which is the whole distinction from\n * [SegmentedControl](../../segmented-control): a segmented control is a value\n * picker where one option is always active, while here zero-or-more buttons\n * can be on at once and the group's `type` says which contract the model\n * follows — `\"single\"` holds one value or `null`, `\"multiple\"` a `string[]`.\n * Built on Reka UI's ToggleGroup: the group is one Tab stop (roving\n * tabindex), Arrow keys move focus between buttons skipping disabled ones —\n * they move *focus only* and never flip a toggle, unlike a radio group where\n * the arrows change the value. Styled with Loom tokens; a pressed button\n * fills with the primary token and takes weight, so the state is carried by\n * `aria-pressed` plus fill plus weight — never colour alone.\n *\n * Inside a [Field](../Field/Field.vue) the row's description, `required` and\n * `invalid` reach the group through `useFieldControl()`, and a\n * `<Fieldset disabled>` above it disables every button.\n *\n * **A row's label does not name this group.** `<label for>` names a labelable\n * element and this renders a `div[role=\"group\"]`, so the row's label resolves\n * to the element and names nobody. Name it with a\n * [Fieldset](../Fieldset/Fieldset.vue)'s real `<legend>`, or with an\n * `aria-label`/`aria-labelledby` of its own — which is what every example\n * already does, because the component carries no label text of its own and\n * therefore no labels prop: the item labels are the caller's content.\n *\n * There is no `readonly`: a toggle that displays a state but cannot change it\n * is a disabled one showing an answer, so a row's `readonly` arrives as\n * nothing at all rather than as that disguise.\n */\nconst props = withDefaults(\n defineProps<{\n /** The pressed value (`\"single\"`), the pressed values (`\"multiple\"`), or nothing pressed. */\n modelValue?: string | string[] | null;\n /** The buttons to render, in order. */\n items: ToggleGroupItem[];\n /** `\"single\"` models one value or `null`; `\"multiple\"` a `string[]`. */\n type?: \"single\" | \"multiple\";\n /** The track's resting look; a pressed button fills with the primary token in every variant. */\n variant?: \"secondary\" | \"outline\" | \"ghost\";\n /** `\"sm\"` is the compressed form for dense chrome — e.g. an editor toolbar. */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Disables every button at once, distinct from a single item's own `disabled`. Unset defers to a wrapping Field. */\n disabled?: boolean | undefined;\n }>(),\n {\n // Not `false`: absent has to stay tellable from `false` for a Field above\n // to disable the group and for `:disabled=\"false\"` to overrule one that\n // does. Vue casts an absent Boolean prop with no declared default to\n // `false`, which would leave the context wired and inert.\n disabled: undefined,\n type: \"single\",\n variant: \"secondary\",\n size: \"md\",\n },\n);\n\nconst emit = defineEmits<{ \"update:modelValue\": [value: string | null | string[]] }>();\n\ndefineOptions({ inheritAttrs: false });\nconst { attrs, rest: groupAttrs } = useSplitAttrs();\n\n/**\n * The buttons are real `<button>`s, so a `<fieldset disabled>` above this\n * group already makes each of them inert — but Reka's roving focus is what\n * decides where Tab lands, and it is driven by the group's own `disabled`,\n * which the fieldset never reaches. Its own `disabled` prop sets that to\n * `-1`, exactly as SegmentedControl does.\n *\n * Read off the DOM rather than taken from the Field context, which publishes\n * no `disabled` on purpose — see `../../lib/ancestor-disabled.ts`.\n */\nconst root = useTemplateRef<{ $el?: Element }>(\"root\");\nconst groupDisabled = useAncestorDisabled(() => root.value?.$el);\n\nconst field = useFieldControl(() => ({\n id: attrs.id as string | undefined,\n describedBy: attrs[\"aria-describedby\"] as string | undefined,\n // The fieldset beats the prop in both directions, exactly as it does for\n // the buttons themselves.\n disabled: groupDisabled.value ? true : props.disabled,\n}));\n\n/**\n * Reka's own model is `AcceptableValue` for `\"single\"` and `AcceptableValue[]`\n * for `\"multiple\"`, and its typing has no `undefined` rung under\n * `exactOptionalPropertyTypes`. The seam's contract adds `null` for \"nothing\n * pressed\" and keeps a `null`/absent model from reaching Reka as a stray\n * non-string: a single group with nothing pressed shows Reka `\"\"`, which is\n * no item's value — and `data-state=\"off\"` on every button — in both engines.\n */\nconst rootValue = computed<string | string[]>(() => {\n if (props.type === \"multiple\") {\n return Array.isArray(props.modelValue) ? props.modelValue : [];\n }\n return typeof props.modelValue === \"string\" ? props.modelValue : \"\";\n});\n\nfunction onUpdate(value: AcceptableValue | AcceptableValue[]) {\n if (props.type === \"multiple\") {\n // Every item's value is a caller-provided `string`, so the array Reka\n // hands back can only hold those strings.\n emit(\"update:modelValue\", Array.isArray(value) ? (value as string[]) : []);\n } else {\n // Reka hands back `undefined` when the pressed button is pressed again —\n // the seam publishes that as `null`, the model's spelling of \"nothing\".\n emit(\"update:modelValue\", typeof value === \"string\" && value !== \"\" ? value : null);\n }\n}\n\nconst iconClass = computed(() => (props.size === \"sm\" ? \"size-3.5\" : \"size-4\"));\n</script>\n\n<template>\n <ToggleGroupRoot\n ref=\"root\"\n :type=\"type\"\n :model-value=\"rootValue\"\n orientation=\"horizontal\"\n :disabled=\"field.disabled\"\n v-bind=\"{ ...groupAttrs, ...field.attrs }\"\n :class=\"\n cn(\n 'inline-flex items-center gap-0.5 rounded-md p-0.5',\n // The track has three resting looks. `secondary` is SegmentedControl's\n // own track — a muted well with a rim; `outline` keeps the rim but\n // sits on the page ground; `ghost` has neither rim nor well and leans\n // entirely on the buttons.\n variant === 'secondary' && 'border border-input bg-muted',\n variant === 'outline' && 'border border-input bg-background',\n variant === 'ghost' && 'bg-transparent',\n // The one thing the *track* has left to say when the whole group is\n // unavailable: the rim slackening from `input` to the lighter\n // `border` — the well is already spent. A ghost track has no rim to\n // slacken, so it says it through its buttons alone.\n field.disabled && variant !== 'ghost' && 'border-border cursor-not-allowed',\n attrs.class as string,\n )\n \"\n @update:model-value=\"onUpdate\"\n >\n <RekaToggleGroupItem\n v-for=\"opt in items\"\n :key=\"opt.value\"\n :value=\"opt.value\"\n :disabled=\"opt.disabled ?? false\"\n v-bind=\"optional({ 'data-testid': opt.testId })\"\n :class=\"\n cn(\n // Named, not the bare `group`: this control is dropped into\n // application chrome, and a bare `group-*` would also answer to any\n // ancestor a host happened to mark up as one.\n // `min-h-6`/`min-w-6` are the WCAG 2.5.8 target floors made\n // explicit in the sm form, whose one-character labels would\n // otherwise collapse under 24px.\n 'group/item relative inline-flex items-center justify-center gap-1.5 rounded-sm text-muted-foreground',\n size === 'sm' && 'min-h-6 min-w-6 px-1.5 py-px text-micro',\n size === 'md' && 'min-h-8 px-3 py-1 text-sm',\n size === 'lg' && 'min-h-10 px-4 py-1.5',\n 'data-[state=off]:hover:bg-subtle',\n // The pressed state is fill plus weight plus `aria-pressed` — never\n // colour alone.\n 'data-[state=on]:bg-primary data-[state=on]:font-medium data-[state=on]:text-primary-foreground data-[state=on]:shadow-sm',\n 'active:scale-press',\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo',\n // No `opacity` here either, for SegmentedControl's reason: the label\n // is most of the button, and a dim took it to 1.96:1. Unavailability\n // is a fill instead — the cell drains to the page ground — and the\n // mute lives on the span, where it beats whatever the button\n // resolved to.\n 'disabled:pointer-events-none data-[disabled]:bg-background',\n )\n \"\n >\n <component\n :is=\"opt.icon\"\n v-if=\"opt.icon\"\n aria-hidden=\"true\"\n :class=\"cn('shrink-0', iconClass)\"\n />\n <span class=\"group-data-[disabled]/item:text-muted-foreground\">{{ opt.label }}</span>\n </RekaToggleGroupItem>\n </ToggleGroupRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAyDA,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAGb,MAAM,EAAE,OAAO,MAAM,eAAe,cAAc;;;;;;;;;;;EAYlD,MAAM,OAAO,eAAkC,MAAM;EACrD,MAAM,gBAAgB,0BAA0B,KAAK,OAAO,GAAG;EAE/D,MAAM,QAAQ,uBAAuB;GACnC,IAAI,MAAM;GACV,aAAa,MAAM;GAGnB,UAAU,cAAc,QAAQ,OAAO,MAAM;EAC/C,EAAE;;;;;;;;;EAUF,MAAM,YAAY,eAAkC;GAClD,IAAI,MAAM,SAAS,YACjB,OAAO,MAAM,QAAQ,MAAM,UAAU,IAAI,MAAM,aAAa,CAAC;GAE/D,OAAO,OAAO,MAAM,eAAe,WAAW,MAAM,aAAa;EACnE,CAAC;EAED,SAAS,SAAS,OAA4C;GAC5D,IAAI,MAAM,SAAS,YAGjB,KAAK,qBAAqB,MAAM,QAAQ,KAAK,IAAK,QAAqB,CAAC,CAAC;QAIzE,KAAK,qBAAqB,OAAO,UAAU,YAAY,UAAU,KAAK,QAAQ,IAAI;EAEtF;EAEA,MAAM,YAAY,eAAgB,MAAM,SAAS,OAAO,aAAa,QAAS;;GAI5E,OAAA,UAAA,GAAA,YAoEkB,MAAA,eAAA,GApElB,WAoEkB;IAnEZ,SAAA;IAAJ,KAAI;IACH,MAAM,QAAA;IACN,eAAa,UAAA;IACd,aAAY;IACX,UAAU,MAAA,KAAA,CAAK,CAAC;GACJ,GAAA;IAAA,GAAA,MAAA,UAAA;IAAU,GAAK,MAAA,KAAA,CAAK,CAAC;GAAK,GAAA;IACtC,OAAc,MAAA,EAAA,CAAE,CAAA,qDAAsV,QAAA,YAAO,eAAA,gCAA4D,QAAA,YAAO,aAAA,qCAA+D,QAAA,YAAO,WAAA,kBAAwU,MAAA,KAAA,CAAK,CAAC,YAAY,QAAA,YAAO,WAAA,oCAA4D,MAAA,KAAA,CAAK,CAAC,KAAA;IAkBz5B,uBAAoB;;IAGnB,SAAA,cAAoB,EADtB,UAAA,IAAA,GAAA,mBAwCsB,UAAA,MAAA,WAvCN,QAAA,QAAP,QAAG;KADZ,OAAA,UAAA,GAAA,YAwCsB,MAAA,eAAA,GAxCtB,WAwCsB;MAtCnB,KAAK,IAAI;MACT,OAAO,IAAI;MACX,UAAU,IAAI,YAAQ;KACf,GAAA,EAAA,SAAA,KAAA,GAAA,MAAA,QAAA,CAAQ,CAAA,EAAA,eAAkB,IAAI,OAAM,CAAA,GAAA,EAC3C,OAAgB,MAAA,EAAA,CAAE,CAAA,wGAAugB,QAAA,SAAI,QAAA,2CAAkE,QAAA,SAAI,QAAA,6BAAoD,QAAA,SAAI,QAAA,wBAAA,oCAAA,4HAAA,sBAAA,+GAAA,4DAAA,EAAA,CAAA,GAAA;MA2B5pB,SAAA,cAKE,CAHM,IAAI,QAFZ,UAAA,GAAA,YAKE,wBAJK,IAAI,IAAI,GAAA;;OAEb,eAAY;OACX,OAAK,eAAE,MAAA,EAAA,CAAE,CAAA,YAAa,UAAA,KAAS,CAAA;MAElC,GAAA,MAAA,GAAA,CAAA,OAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAAA,mBAAqF,QAArF,YAAqF,gBAAnB,IAAI,KAAK,GAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,2 @@
1
+ import ToggleGroup_default from "./ToggleGroup.js";
2
+ export { ToggleGroup_default as default };
@@ -0,0 +1,7 @@
1
+ import Toolbar_vue_vue_type_script_setup_true_lang_default, { TOOLBAR_CONTEXT } from "./Toolbar.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/toolbar/src/Toolbar.vue
3
+ var Toolbar_default = Toolbar_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { TOOLBAR_CONTEXT, Toolbar_default as default };
6
+
7
+ //# sourceMappingURL=Toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.js","names":[],"sources":["../../../../packages/primitives/toolbar/src/Toolbar.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { InjectionKey } from \"vue\";\n/** Which axis the controls run along. */\nexport type ToolbarOrientation = \"horizontal\" | \"vertical\";\n\n/** What the toolbar hands to its slotted children — only its axis. */\nexport interface ToolbarContext {\n orientation: ToolbarOrientation;\n}\n\nexport const TOOLBAR_CONTEXT: InjectionKey<ToolbarContext> = Symbol(\"loom-toolbar\");\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, provide, ref } from \"vue\";\nimport { cn, useSplitAttrs } from \"@ecoma-io/loom-core\";\n\n/**\n * WAI-ARIA APG toolbar pattern: Tab enters the toolbar and lands on its\n * active control, Tab again leaves it, and the arrow keys walk between the\n * controls inside. For a text-format strip, a view's zoom/filter row, a\n * table's bulk actions — anywhere seven individual Tab stops would stand\n * between a keyboard user and the rest of the page.\n *\n * **Participation needs no contract on the controls.** The toolbar does not\n * wrap its children in registration components and does not require them to\n * consume an injection: on mount, on every render, and on subtree mutations\n * it collects its own focusable descendants — `button`, `input`, `select`,\n * `textarea`, links with `href`, `summary`, and anything carrying a real\n * `tabindex` — and manages their `tabindex` itself. Any control, Loom or\n * native, participates by being slotted in; that is the point of the\n * pattern, and it is why the component ships no `items` prop.\n *\n * The roving index only lands on enabled, visible items: a control disabled\n * (`disabled` or `aria-disabled=\"true\"`) or hidden (`[hidden]`,\n * `aria-hidden=\"true\"`, `display: none`, `visibility: hidden`) is skipped by\n * the arrows but keeps its position, and focus never rests on it. Visibility\n * through `getComputedStyle` is exact in a real browser; under jsdom only\n * inline styles and attributes resolve, which the unit tests work within.\n *\n * Every walk key (both arrow pairs, Home, End) is left to the control when\n * focus rests inside an editable one (`input`, `select`, `textarea`,\n * `contenteditable`) — caret movement, native `select` value stepping and\n * text-field Home/End are not the toolbar's to hijack. Tab is the way out\n * of an editable stop, as it is everywhere else.\n *\n * Wrapping is ON: an arrow at either edge carries to the opposite end, the\n * way every editor's format strip behaves. Home/End jump to the first and\n * last enabled control. Both arrow pairs work in both orientations (each\n * key maps to one direction), so `orientation` is a layout and AT-announced\n * axis, not a key-availability switch.\n *\n * The accessible name is the consumer's to supply — `label` or a\n * pass-through `aria-label` — because a toolbar names its own purpose, and\n * the component owns no other string (separators carry no text). There is\n * deliberately no labels prop: zero localisable strings, nothing to seam.\n *\n * ```vue\n * <Toolbar label=\"Text formatting\">\n * <IconButton label=\"Bold\"><BoldIcon class=\"size-4\" /></IconButton>\n * <IconButton label=\"Italic\"><ItalicIcon class=\"size-4\" /></IconButton>\n * <ToolbarSeparator />\n * <Select :options=\"zoomLevels\" aria-label=\"Zoom\" />\n * </Toolbar>\n * ```\n */\nconst props = withDefaults(\n defineProps<{\n /** Layout and announced axis of the control run. */\n orientation?: ToolbarOrientation;\n /** The toolbar's accessible name, for when no better label sits in the DOM. */\n label?: string;\n }>(),\n { orientation: \"horizontal\" },\n);\n\ndefineOptions({ inheritAttrs: false });\nconst { attrs, rest } = useSplitAttrs();\n\n// The consumer's own `aria-label` beats the `label` prop — an explicitly\n// passed attribute is the more specific intent.\nconst ariaLabel = computed(() => (rest.value[\"aria-label\"] as string | undefined) ?? props.label);\n\nprovide(TOOLBAR_CONTEXT, {\n get orientation() {\n return props.orientation;\n },\n});\n\n// One selector for every kind of control a toolbar can hold. `:not([disabled])`\n// prunes natively disabled controls at query time; the property check in\n// `participating` covers the ones an attribute cannot see — a control inside a\n// disabled `<fieldset>` reports `.disabled === true` with no attribute of its\n// own. `[tabindex]` catches custom controls that are none of the above; the\n// root itself carries none, so it never collects itself.\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"summary\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[contenteditable='true']\",\n \"[contenteditable='']\",\n].join(\",\");\n\nconst EDITABLE_SELECTOR = \"input, select, textarea, [contenteditable='true'], [contenteditable='']\";\n\nconst root = ref<HTMLElement | null>(null);\n/** The enabled, visible controls, in DOM order — disabled and hidden ones are not in it, which is exactly \"skipped but keeping their position\". */\nconst items = ref<HTMLElement[]>([]);\nconst activeIndex = ref(0);\n\nfunction participating(el: HTMLElement): boolean {\n const maybeDisableable = el as HTMLButtonElement;\n if (maybeDisableable.disabled || el.getAttribute(\"aria-disabled\") === \"true\") return false;\n if (el.hasAttribute(\"hidden\") || el.closest(\"[aria-hidden='true']\") !== null) return false;\n // Exact in a browser; under jsdom only inline styles resolve, so the unit\n // tests drive this path with attributes and inline styles.\n const style = window.getComputedStyle(el);\n return style.display !== \"none\" && style.visibility !== \"hidden\";\n}\n\n/** Re-collect the participating controls and re-apply the roving tab stops. */\nfunction collect(): void {\n const rootEl = root.value;\n if (!rootEl) return;\n const next = Array.from(rootEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n participating,\n );\n // Anything that just left the set — it went disabled or hidden while\n // holding the roving stop — must give the stop back: an `aria-disabled`\n // control is still natively focusable, and a stale `tabindex=\"0\"` would\n // leave it a standing Tab stop the walk can never land on.\n for (const el of items.value) {\n if (!next.includes(el)) el.removeAttribute(\"tabindex\");\n }\n if (activeIndex.value >= next.length) activeIndex.value = 0;\n next.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n items.value = next;\n}\n\n// Only structural and state attributes are watched — not `tabindex`, which\n// `collect()` itself writes: an observer reacting to its own writes would\n// loop. CSS-driven visibility changes are also missed; that limit is named in\n// the docblock and covered by the real-browser e2e instead.\nlet observer: MutationObserver | undefined;\nlet scheduled = false;\nfunction schedule(): void {\n if (scheduled) return;\n scheduled = true;\n queueMicrotask(() => {\n scheduled = false;\n collect();\n });\n}\n\nonMounted(() => {\n collect();\n observer = new MutationObserver(schedule);\n observer.observe(root.value!, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"hidden\", \"disabled\", \"aria-disabled\", \"aria-hidden\", \"href\", \"type\"],\n });\n});\n\nonBeforeUnmount(() => observer?.disconnect());\n\nfunction moveTo(index: number): void {\n if (!items.value.length) return;\n // Modulo makes both edges wrap: -1 lands on the last, `length` on the first.\n const next = items.value[(index + items.value.length) % items.value.length]!;\n activeIndex.value = items.value.indexOf(next);\n items.value.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n next.focus();\n}\n\n/**\n * Pointer focus has to move the roving stop too — whoever actually holds\n * focus is the active control, whatever moved focus there.\n */\nfunction onFocusin(event: FocusEvent): void {\n const target = event.target as Element;\n const item =\n items.value.indexOf(target as HTMLElement) >= 0\n ? (target as HTMLElement)\n : (target.closest(FOCUSABLE_SELECTOR) as HTMLElement | null);\n if (item) {\n activeIndex.value = items.value.indexOf(item);\n items.value.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n }\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n // Arrows inside a control that consumes them — caret movement, `select`\n // value stepping — belong to that control. Tab is the exit, as always.\n if ((event.target as Element).closest(EDITABLE_SELECTOR)) return;\n collect(); // fresh on every keystroke: cheap at toolbar scale, never stale\n if (!items.value.length) return;\n const current = items.value.indexOf(document.activeElement as HTMLElement);\n const from = current === -1 ? 0 : current;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n moveTo(from - 1);\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n moveTo(from + 1);\n break;\n case \"Home\":\n moveTo(0);\n break;\n case \"End\":\n moveTo(items.value.length - 1);\n break;\n default:\n return; // Space, Enter and every other key are the control's own\n }\n event.preventDefault();\n}\n</script>\n\n<template>\n <!-- `role=\"toolbar\"` is the pattern's name for this container — not\n redundant on a `div`, which carries no role to repeat — and the two\n delegated handlers are the pattern's plumbing: focus and keys are\n handled once here for every control slotted inside. The rule models\n neither. The comments lead the template, which makes the component\n multi-root; attrs are bound explicitly below, so nothing is lost to\n fallthrough. -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions, vuejs-accessibility/no-redundant-roles -->\n <div\n v-bind=\"rest\"\n ref=\"root\"\n role=\"toolbar\"\n :aria-label=\"ariaLabel\"\n :aria-orientation=\"orientation\"\n :class=\"\n cn(\n 'inline-flex items-center gap-1 rounded-lg border border-border bg-background p-1',\n // A vertical toolbar stacks, and its separators stretch across it.\n orientation === 'vertical' ? 'flex-col items-stretch' : 'max-w-full flex-row',\n attrs.class as string,\n )\n \"\n @focusin=\"onFocusin\"\n @keydown=\"onKeydown\"\n >\n <!-- @slot The controls — any focusable element participates, no wrapper required. -->\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1,149 @@
1
+ import { cn } from "../../../core/src/cn.js";
2
+ import { useSplitAttrs } from "../../../core/src/attrs.js";
3
+ import "../../../core/src/index.js";
4
+ import { computed, createElementBlock, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, unref } from "vue";
5
+ //#region packages/primitives/toolbar/src/Toolbar.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = ["aria-label", "aria-orientation"];
7
+ var TOOLBAR_CONTEXT = Symbol("loom-toolbar");
8
+ var Toolbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
9
+ inheritAttrs: false,
10
+ __name: "Toolbar",
11
+ props: {
12
+ orientation: { default: "horizontal" },
13
+ label: {}
14
+ },
15
+ setup(__props) {
16
+ const props = __props;
17
+ const { attrs, rest } = useSplitAttrs();
18
+ const ariaLabel = computed(() => rest.value["aria-label"] ?? props.label);
19
+ provide(TOOLBAR_CONTEXT, { get orientation() {
20
+ return props.orientation;
21
+ } });
22
+ const FOCUSABLE_SELECTOR = [
23
+ "a[href]",
24
+ "button:not([disabled])",
25
+ "input:not([disabled]):not([type='hidden'])",
26
+ "select:not([disabled])",
27
+ "textarea:not([disabled])",
28
+ "summary",
29
+ "[tabindex]:not([tabindex='-1'])",
30
+ "[contenteditable='true']",
31
+ "[contenteditable='']"
32
+ ].join(",");
33
+ const EDITABLE_SELECTOR = "input, select, textarea, [contenteditable='true'], [contenteditable='']";
34
+ const root = ref(null);
35
+ /** The enabled, visible controls, in DOM order — disabled and hidden ones are not in it, which is exactly "skipped but keeping their position". */
36
+ const items = ref([]);
37
+ const activeIndex = ref(0);
38
+ function participating(el) {
39
+ if (el.disabled || el.getAttribute("aria-disabled") === "true") return false;
40
+ if (el.hasAttribute("hidden") || el.closest("[aria-hidden='true']") !== null) return false;
41
+ const style = window.getComputedStyle(el);
42
+ return style.display !== "none" && style.visibility !== "hidden";
43
+ }
44
+ /** Re-collect the participating controls and re-apply the roving tab stops. */
45
+ function collect() {
46
+ const rootEl = root.value;
47
+ if (!rootEl) return;
48
+ const next = Array.from(rootEl.querySelectorAll(FOCUSABLE_SELECTOR)).filter(participating);
49
+ for (const el of items.value) if (!next.includes(el)) el.removeAttribute("tabindex");
50
+ if (activeIndex.value >= next.length) activeIndex.value = 0;
51
+ next.forEach((el, i) => {
52
+ el.tabIndex = i === activeIndex.value ? 0 : -1;
53
+ });
54
+ items.value = next;
55
+ }
56
+ let observer;
57
+ let scheduled = false;
58
+ function schedule() {
59
+ if (scheduled) return;
60
+ scheduled = true;
61
+ queueMicrotask(() => {
62
+ scheduled = false;
63
+ collect();
64
+ });
65
+ }
66
+ onMounted(() => {
67
+ collect();
68
+ observer = new MutationObserver(schedule);
69
+ observer.observe(root.value, {
70
+ childList: true,
71
+ subtree: true,
72
+ attributes: true,
73
+ attributeFilter: [
74
+ "hidden",
75
+ "disabled",
76
+ "aria-disabled",
77
+ "aria-hidden",
78
+ "href",
79
+ "type"
80
+ ]
81
+ });
82
+ });
83
+ onBeforeUnmount(() => observer?.disconnect());
84
+ function moveTo(index) {
85
+ if (!items.value.length) return;
86
+ const next = items.value[(index + items.value.length) % items.value.length];
87
+ activeIndex.value = items.value.indexOf(next);
88
+ items.value.forEach((el, i) => {
89
+ el.tabIndex = i === activeIndex.value ? 0 : -1;
90
+ });
91
+ next.focus();
92
+ }
93
+ /**
94
+ * Pointer focus has to move the roving stop too — whoever actually holds
95
+ * focus is the active control, whatever moved focus there.
96
+ */
97
+ function onFocusin(event) {
98
+ const target = event.target;
99
+ const item = items.value.indexOf(target) >= 0 ? target : target.closest(FOCUSABLE_SELECTOR);
100
+ if (item) {
101
+ activeIndex.value = items.value.indexOf(item);
102
+ items.value.forEach((el, i) => {
103
+ el.tabIndex = i === activeIndex.value ? 0 : -1;
104
+ });
105
+ }
106
+ }
107
+ function onKeydown(event) {
108
+ if (event.target.closest(EDITABLE_SELECTOR)) return;
109
+ collect();
110
+ if (!items.value.length) return;
111
+ const current = items.value.indexOf(document.activeElement);
112
+ const from = current === -1 ? 0 : current;
113
+ switch (event.key) {
114
+ case "ArrowLeft":
115
+ case "ArrowUp":
116
+ moveTo(from - 1);
117
+ break;
118
+ case "ArrowRight":
119
+ case "ArrowDown":
120
+ moveTo(from + 1);
121
+ break;
122
+ case "Home":
123
+ moveTo(0);
124
+ break;
125
+ case "End":
126
+ moveTo(items.value.length - 1);
127
+ break;
128
+ default: return;
129
+ }
130
+ event.preventDefault();
131
+ }
132
+ return (_ctx, _cache) => {
133
+ return openBlock(), createElementBlock("div", mergeProps(unref(rest), {
134
+ ref_key: "root",
135
+ ref: root,
136
+ role: "toolbar",
137
+ "aria-label": ariaLabel.value,
138
+ "aria-orientation": __props.orientation,
139
+ class: unref(cn)("inline-flex items-center gap-1 rounded-lg border border-border bg-background p-1", __props.orientation === "vertical" ? "flex-col items-stretch" : "max-w-full flex-row", unref(attrs).class),
140
+ onFocusin,
141
+ onKeydown
142
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1);
143
+ };
144
+ }
145
+ });
146
+ //#endregion
147
+ export { TOOLBAR_CONTEXT, Toolbar_vue_vue_type_script_setup_true_lang_default as default };
148
+
149
+ //# sourceMappingURL=Toolbar.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toolbar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/toolbar/src/Toolbar.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { InjectionKey } from \"vue\";\n/** Which axis the controls run along. */\nexport type ToolbarOrientation = \"horizontal\" | \"vertical\";\n\n/** What the toolbar hands to its slotted children — only its axis. */\nexport interface ToolbarContext {\n orientation: ToolbarOrientation;\n}\n\nexport const TOOLBAR_CONTEXT: InjectionKey<ToolbarContext> = Symbol(\"loom-toolbar\");\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, provide, ref } from \"vue\";\nimport { cn, useSplitAttrs } from \"@ecoma-io/loom-core\";\n\n/**\n * WAI-ARIA APG toolbar pattern: Tab enters the toolbar and lands on its\n * active control, Tab again leaves it, and the arrow keys walk between the\n * controls inside. For a text-format strip, a view's zoom/filter row, a\n * table's bulk actions — anywhere seven individual Tab stops would stand\n * between a keyboard user and the rest of the page.\n *\n * **Participation needs no contract on the controls.** The toolbar does not\n * wrap its children in registration components and does not require them to\n * consume an injection: on mount, on every render, and on subtree mutations\n * it collects its own focusable descendants — `button`, `input`, `select`,\n * `textarea`, links with `href`, `summary`, and anything carrying a real\n * `tabindex` — and manages their `tabindex` itself. Any control, Loom or\n * native, participates by being slotted in; that is the point of the\n * pattern, and it is why the component ships no `items` prop.\n *\n * The roving index only lands on enabled, visible items: a control disabled\n * (`disabled` or `aria-disabled=\"true\"`) or hidden (`[hidden]`,\n * `aria-hidden=\"true\"`, `display: none`, `visibility: hidden`) is skipped by\n * the arrows but keeps its position, and focus never rests on it. Visibility\n * through `getComputedStyle` is exact in a real browser; under jsdom only\n * inline styles and attributes resolve, which the unit tests work within.\n *\n * Every walk key (both arrow pairs, Home, End) is left to the control when\n * focus rests inside an editable one (`input`, `select`, `textarea`,\n * `contenteditable`) — caret movement, native `select` value stepping and\n * text-field Home/End are not the toolbar's to hijack. Tab is the way out\n * of an editable stop, as it is everywhere else.\n *\n * Wrapping is ON: an arrow at either edge carries to the opposite end, the\n * way every editor's format strip behaves. Home/End jump to the first and\n * last enabled control. Both arrow pairs work in both orientations (each\n * key maps to one direction), so `orientation` is a layout and AT-announced\n * axis, not a key-availability switch.\n *\n * The accessible name is the consumer's to supply — `label` or a\n * pass-through `aria-label` — because a toolbar names its own purpose, and\n * the component owns no other string (separators carry no text). There is\n * deliberately no labels prop: zero localisable strings, nothing to seam.\n *\n * ```vue\n * <Toolbar label=\"Text formatting\">\n * <IconButton label=\"Bold\"><BoldIcon class=\"size-4\" /></IconButton>\n * <IconButton label=\"Italic\"><ItalicIcon class=\"size-4\" /></IconButton>\n * <ToolbarSeparator />\n * <Select :options=\"zoomLevels\" aria-label=\"Zoom\" />\n * </Toolbar>\n * ```\n */\nconst props = withDefaults(\n defineProps<{\n /** Layout and announced axis of the control run. */\n orientation?: ToolbarOrientation;\n /** The toolbar's accessible name, for when no better label sits in the DOM. */\n label?: string;\n }>(),\n { orientation: \"horizontal\" },\n);\n\ndefineOptions({ inheritAttrs: false });\nconst { attrs, rest } = useSplitAttrs();\n\n// The consumer's own `aria-label` beats the `label` prop — an explicitly\n// passed attribute is the more specific intent.\nconst ariaLabel = computed(() => (rest.value[\"aria-label\"] as string | undefined) ?? props.label);\n\nprovide(TOOLBAR_CONTEXT, {\n get orientation() {\n return props.orientation;\n },\n});\n\n// One selector for every kind of control a toolbar can hold. `:not([disabled])`\n// prunes natively disabled controls at query time; the property check in\n// `participating` covers the ones an attribute cannot see — a control inside a\n// disabled `<fieldset>` reports `.disabled === true` with no attribute of its\n// own. `[tabindex]` catches custom controls that are none of the above; the\n// root itself carries none, so it never collects itself.\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"summary\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[contenteditable='true']\",\n \"[contenteditable='']\",\n].join(\",\");\n\nconst EDITABLE_SELECTOR = \"input, select, textarea, [contenteditable='true'], [contenteditable='']\";\n\nconst root = ref<HTMLElement | null>(null);\n/** The enabled, visible controls, in DOM order — disabled and hidden ones are not in it, which is exactly \"skipped but keeping their position\". */\nconst items = ref<HTMLElement[]>([]);\nconst activeIndex = ref(0);\n\nfunction participating(el: HTMLElement): boolean {\n const maybeDisableable = el as HTMLButtonElement;\n if (maybeDisableable.disabled || el.getAttribute(\"aria-disabled\") === \"true\") return false;\n if (el.hasAttribute(\"hidden\") || el.closest(\"[aria-hidden='true']\") !== null) return false;\n // Exact in a browser; under jsdom only inline styles resolve, so the unit\n // tests drive this path with attributes and inline styles.\n const style = window.getComputedStyle(el);\n return style.display !== \"none\" && style.visibility !== \"hidden\";\n}\n\n/** Re-collect the participating controls and re-apply the roving tab stops. */\nfunction collect(): void {\n const rootEl = root.value;\n if (!rootEl) return;\n const next = Array.from(rootEl.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n participating,\n );\n // Anything that just left the set — it went disabled or hidden while\n // holding the roving stop — must give the stop back: an `aria-disabled`\n // control is still natively focusable, and a stale `tabindex=\"0\"` would\n // leave it a standing Tab stop the walk can never land on.\n for (const el of items.value) {\n if (!next.includes(el)) el.removeAttribute(\"tabindex\");\n }\n if (activeIndex.value >= next.length) activeIndex.value = 0;\n next.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n items.value = next;\n}\n\n// Only structural and state attributes are watched — not `tabindex`, which\n// `collect()` itself writes: an observer reacting to its own writes would\n// loop. CSS-driven visibility changes are also missed; that limit is named in\n// the docblock and covered by the real-browser e2e instead.\nlet observer: MutationObserver | undefined;\nlet scheduled = false;\nfunction schedule(): void {\n if (scheduled) return;\n scheduled = true;\n queueMicrotask(() => {\n scheduled = false;\n collect();\n });\n}\n\nonMounted(() => {\n collect();\n observer = new MutationObserver(schedule);\n observer.observe(root.value!, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"hidden\", \"disabled\", \"aria-disabled\", \"aria-hidden\", \"href\", \"type\"],\n });\n});\n\nonBeforeUnmount(() => observer?.disconnect());\n\nfunction moveTo(index: number): void {\n if (!items.value.length) return;\n // Modulo makes both edges wrap: -1 lands on the last, `length` on the first.\n const next = items.value[(index + items.value.length) % items.value.length]!;\n activeIndex.value = items.value.indexOf(next);\n items.value.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n next.focus();\n}\n\n/**\n * Pointer focus has to move the roving stop too — whoever actually holds\n * focus is the active control, whatever moved focus there.\n */\nfunction onFocusin(event: FocusEvent): void {\n const target = event.target as Element;\n const item =\n items.value.indexOf(target as HTMLElement) >= 0\n ? (target as HTMLElement)\n : (target.closest(FOCUSABLE_SELECTOR) as HTMLElement | null);\n if (item) {\n activeIndex.value = items.value.indexOf(item);\n items.value.forEach((el, i) => {\n el.tabIndex = i === activeIndex.value ? 0 : -1;\n });\n }\n}\n\nfunction onKeydown(event: KeyboardEvent): void {\n // Arrows inside a control that consumes them — caret movement, `select`\n // value stepping — belong to that control. Tab is the exit, as always.\n if ((event.target as Element).closest(EDITABLE_SELECTOR)) return;\n collect(); // fresh on every keystroke: cheap at toolbar scale, never stale\n if (!items.value.length) return;\n const current = items.value.indexOf(document.activeElement as HTMLElement);\n const from = current === -1 ? 0 : current;\n switch (event.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n moveTo(from - 1);\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n moveTo(from + 1);\n break;\n case \"Home\":\n moveTo(0);\n break;\n case \"End\":\n moveTo(items.value.length - 1);\n break;\n default:\n return; // Space, Enter and every other key are the control's own\n }\n event.preventDefault();\n}\n</script>\n\n<template>\n <!-- `role=\"toolbar\"` is the pattern's name for this container — not\n redundant on a `div`, which carries no role to repeat — and the two\n delegated handlers are the pattern's plumbing: focus and keys are\n handled once here for every control slotted inside. The rule models\n neither. The comments lead the template, which makes the component\n multi-root; attrs are bound explicitly below, so nothing is lost to\n fallthrough. -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions, vuejs-accessibility/no-redundant-roles -->\n <div\n v-bind=\"rest\"\n ref=\"root\"\n role=\"toolbar\"\n :aria-label=\"ariaLabel\"\n :aria-orientation=\"orientation\"\n :class=\"\n cn(\n 'inline-flex items-center gap-1 rounded-lg border border-border bg-background p-1',\n // A vertical toolbar stacks, and its separators stretch across it.\n orientation === 'vertical' ? 'flex-col items-stretch' : 'max-w-full flex-row',\n attrs.class as string,\n )\n \"\n @focusin=\"onFocusin\"\n @keydown=\"onKeydown\"\n >\n <!-- @slot The controls — any focusable element participates, no wrapper required. -->\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;AAUA,IAAa,kBAAgD,OAAO,cAAc;;;;;;;;;EAwDlF,MAAM,QAAQ;EAWd,MAAM,EAAE,OAAO,SAAS,cAAc;EAItC,MAAM,YAAY,eAAgB,KAAK,MAAM,iBAAwC,MAAM,KAAK;EAEhG,QAAQ,iBAAiB,EACvB,IAAI,cAAc;GAChB,OAAO,MAAM;EACf,EACF,CAAC;EAQD,MAAM,qBAAqB;GACzB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC,CAAC,KAAK,GAAG;EAEV,MAAM,oBAAoB;EAE1B,MAAM,OAAO,IAAwB,IAAI;;EAEzC,MAAM,QAAQ,IAAmB,CAAC,CAAC;EACnC,MAAM,cAAc,IAAI,CAAC;EAEzB,SAAS,cAAc,IAA0B;GAE/C,IAAI,GAAiB,YAAY,GAAG,aAAa,eAAe,MAAM,QAAQ,OAAO;GACrF,IAAI,GAAG,aAAa,QAAQ,KAAK,GAAG,QAAQ,sBAAsB,MAAM,MAAM,OAAO;GAGrF,MAAM,QAAQ,OAAO,iBAAiB,EAAE;GACxC,OAAO,MAAM,YAAY,UAAU,MAAM,eAAe;EAC1D;;EAGA,SAAS,UAAgB;GACvB,MAAM,SAAS,KAAK;GACpB,IAAI,CAAC,QAAQ;GACb,MAAM,OAAO,MAAM,KAAK,OAAO,iBAA8B,kBAAkB,CAAC,CAAC,CAAC,OAChF,aACF;GAKA,KAAK,MAAM,MAAM,MAAM,OACrB,IAAI,CAAC,KAAK,SAAS,EAAE,GAAG,GAAG,gBAAgB,UAAU;GAEvD,IAAI,YAAY,SAAS,KAAK,QAAQ,YAAY,QAAQ;GAC1D,KAAK,SAAS,IAAI,MAAM;IACtB,GAAG,WAAW,MAAM,YAAY,QAAQ,IAAI;GAC9C,CAAC;GACD,MAAM,QAAQ;EAChB;EAMA,IAAI;EACJ,IAAI,YAAY;EAChB,SAAS,WAAiB;GACxB,IAAI,WAAW;GACf,YAAY;GACZ,qBAAqB;IACnB,YAAY;IACZ,QAAQ;GACV,CAAC;EACH;EAEA,gBAAgB;GACd,QAAQ;GACR,WAAW,IAAI,iBAAiB,QAAQ;GACxC,SAAS,QAAQ,KAAK,OAAQ;IAC5B,WAAW;IACX,SAAS;IACT,YAAY;IACZ,iBAAiB;KAAC;KAAU;KAAY;KAAiB;KAAe;KAAQ;IAAM;GACxF,CAAC;EACH,CAAC;EAED,sBAAsB,UAAU,WAAW,CAAC;EAE5C,SAAS,OAAO,OAAqB;GACnC,IAAI,CAAC,MAAM,MAAM,QAAQ;GAEzB,MAAM,OAAO,MAAM,OAAO,QAAQ,MAAM,MAAM,UAAU,MAAM,MAAM;GACpE,YAAY,QAAQ,MAAM,MAAM,QAAQ,IAAI;GAC5C,MAAM,MAAM,SAAS,IAAI,MAAM;IAC7B,GAAG,WAAW,MAAM,YAAY,QAAQ,IAAI;GAC9C,CAAC;GACD,KAAK,MAAM;EACb;;;;;EAMA,SAAS,UAAU,OAAyB;GAC1C,MAAM,SAAS,MAAM;GACrB,MAAM,OACJ,MAAM,MAAM,QAAQ,MAAqB,KAAK,IACzC,SACA,OAAO,QAAQ,kBAAkB;GACxC,IAAI,MAAM;IACR,YAAY,QAAQ,MAAM,MAAM,QAAQ,IAAI;IAC5C,MAAM,MAAM,SAAS,IAAI,MAAM;KAC7B,GAAG,WAAW,MAAM,YAAY,QAAQ,IAAI;IAC9C,CAAC;GACH;EACF;EAEA,SAAS,UAAU,OAA4B;GAG7C,IAAK,MAAM,OAAmB,QAAQ,iBAAiB,GAAG;GAC1D,QAAQ;GACR,IAAI,CAAC,MAAM,MAAM,QAAQ;GACzB,MAAM,UAAU,MAAM,MAAM,QAAQ,SAAS,aAA4B;GACzE,MAAM,OAAO,YAAY,KAAK,IAAI;GAClC,QAAQ,MAAM,KAAd;IACE,KAAK;IACL,KAAK;KACH,OAAO,OAAO,CAAC;KACf;IACF,KAAK;IACL,KAAK;KACH,OAAO,OAAO,CAAC;KACf;IACF,KAAK;KACH,OAAO,CAAC;KACR;IACF,KAAK;KACH,OAAO,MAAM,MAAM,SAAS,CAAC;KAC7B;IACF,SACE;GACJ;GACA,MAAM,eAAe;EACvB;;GAYE,OAAA,UAAA,GAAA,mBAmBM,OAnBN,WACU,MAkBJ,IAAA,GAlBQ;IACR,SAAA;IAAJ,KAAI;IACJ,MAAK;IACJ,cAAY,UAAA;IACZ,oBAAkB,QAAA;IAClB,OAAc,MAAA,EAAA,CAAE,CAAA,oFAAkL,QAAA,gBAAW,aAAA,2BAAA,uBAA4E,MAAA,KAAA,CAAK,CAAC,KAAA;IAQtR;IACA;GAGV,CAAA,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1,7 @@
1
+ import ToolbarSeparator_vue_vue_type_script_setup_true_lang_default from "./ToolbarSeparator.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/toolbar/src/ToolbarSeparator.vue
3
+ var ToolbarSeparator_default = ToolbarSeparator_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { ToolbarSeparator_default as default };
6
+
7
+ //# sourceMappingURL=ToolbarSeparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarSeparator.js","names":[],"sources":["../../../../packages/primitives/toolbar/src/ToolbarSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport type { ToolbarContext, ToolbarOrientation } from \"./Toolbar.vue\";\nimport { TOOLBAR_CONTEXT } from \"./Toolbar.vue\";\n\n/**\n * ToolbarSeparator — the divider between groups of controls inside a\n * Toolbar. It reads the toolbar's own orientation through the context the\n * toolbar provides and draws along the perpendicular axis, so a horizontal\n * toolbar gets vertical hairlines and a vertical one gets horizontal. Its\n * `role=\"separator\"` is the one an APG toolbar wants between its groups —\n * which is why `decorative` is not offered here: inside a toolbar the line\n * is never merely visual, it IS the group boundary.\n *\n * Composing the `Separator` primitive instead of drawing the hairline here\n * was considered and rejected: the primitive binds `h-full w-px` for its\n * vertical axis, and the short, centered divider a toolbar wants would fight\n * that on Tailwind's emitted order — a coin flip, not a decision. Four lines\n * of divider here beat a class-order lottery.\n */\nconst props = defineProps<{\n /** Only for standalone use — inside a Toolbar the axis is inherited. */\n orientation?: ToolbarOrientation;\n}>();\n\nconst inherited = inject<ToolbarContext | null>(TOOLBAR_CONTEXT, null);\nconst axis = computed(\n () => props.orientation ?? (inherited ? inherited.orientation : \"horizontal\"),\n);\n</script>\n\n<template>\n <div\n role=\"separator\"\n :aria-orientation=\"axis === 'vertical' ? 'horizontal' : 'vertical'\"\n :class=\"axis === 'vertical' ? 'mx-2 h-px w-4 self-center' : 'h-4 w-px self-center'\"\n class=\"shrink-0 bg-border\"\n />\n</template>\n"],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { TOOLBAR_CONTEXT } from "./Toolbar.vue_vue_type_script_setup_true_lang.js";
2
+ import "./Toolbar.js";
3
+ import { computed, createElementBlock, defineComponent, inject, normalizeClass, openBlock } from "vue";
4
+ //#region packages/primitives/toolbar/src/ToolbarSeparator.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["aria-orientation"];
6
+ /**
7
+ * ToolbarSeparator — the divider between groups of controls inside a
8
+ * Toolbar. It reads the toolbar's own orientation through the context the
9
+ * toolbar provides and draws along the perpendicular axis, so a horizontal
10
+ * toolbar gets vertical hairlines and a vertical one gets horizontal. Its
11
+ * `role="separator"` is the one an APG toolbar wants between its groups —
12
+ * which is why `decorative` is not offered here: inside a toolbar the line
13
+ * is never merely visual, it IS the group boundary.
14
+ *
15
+ * Composing the `Separator` primitive instead of drawing the hairline here
16
+ * was considered and rejected: the primitive binds `h-full w-px` for its
17
+ * vertical axis, and the short, centered divider a toolbar wants would fight
18
+ * that on Tailwind's emitted order — a coin flip, not a decision. Four lines
19
+ * of divider here beat a class-order lottery.
20
+ */
21
+ var ToolbarSeparator_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
22
+ __name: "ToolbarSeparator",
23
+ props: { orientation: {} },
24
+ setup(__props) {
25
+ const props = __props;
26
+ const inherited = inject(TOOLBAR_CONTEXT, null);
27
+ const axis = computed(() => props.orientation ?? (inherited ? inherited.orientation : "horizontal"));
28
+ return (_ctx, _cache) => {
29
+ return openBlock(), createElementBlock("div", {
30
+ role: "separator",
31
+ "aria-orientation": axis.value === "vertical" ? "horizontal" : "vertical",
32
+ class: normalizeClass([axis.value === "vertical" ? "mx-2 h-px w-4 self-center" : "h-4 w-px self-center", "shrink-0 bg-border"])
33
+ }, null, 10, _hoisted_1);
34
+ };
35
+ }
36
+ });
37
+ //#endregion
38
+ export { ToolbarSeparator_vue_vue_type_script_setup_true_lang_default as default };
39
+
40
+ //# sourceMappingURL=ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarSeparator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/toolbar/src/ToolbarSeparator.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport type { ToolbarContext, ToolbarOrientation } from \"./Toolbar.vue\";\nimport { TOOLBAR_CONTEXT } from \"./Toolbar.vue\";\n\n/**\n * ToolbarSeparator — the divider between groups of controls inside a\n * Toolbar. It reads the toolbar's own orientation through the context the\n * toolbar provides and draws along the perpendicular axis, so a horizontal\n * toolbar gets vertical hairlines and a vertical one gets horizontal. Its\n * `role=\"separator\"` is the one an APG toolbar wants between its groups —\n * which is why `decorative` is not offered here: inside a toolbar the line\n * is never merely visual, it IS the group boundary.\n *\n * Composing the `Separator` primitive instead of drawing the hairline here\n * was considered and rejected: the primitive binds `h-full w-px` for its\n * vertical axis, and the short, centered divider a toolbar wants would fight\n * that on Tailwind's emitted order — a coin flip, not a decision. Four lines\n * of divider here beat a class-order lottery.\n */\nconst props = defineProps<{\n /** Only for standalone use — inside a Toolbar the axis is inherited. */\n orientation?: ToolbarOrientation;\n}>();\n\nconst inherited = inject<ToolbarContext | null>(TOOLBAR_CONTEXT, null);\nconst axis = computed(\n () => props.orientation ?? (inherited ? inherited.orientation : \"horizontal\"),\n);\n</script>\n\n<template>\n <div\n role=\"separator\"\n :aria-orientation=\"axis === 'vertical' ? 'horizontal' : 'vertical'\"\n :class=\"axis === 'vertical' ? 'mx-2 h-px w-4 self-center' : 'h-4 w-px self-center'\"\n class=\"shrink-0 bg-border\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAoBA,MAAM,QAAQ;EAKd,MAAM,YAAY,OAA8B,iBAAiB,IAAI;EACrE,MAAM,OAAO,eACL,MAAM,gBAAgB,YAAY,UAAU,cAAc,aAClE;;GAIE,OAAA,UAAA,GAAA,mBAKE,OAAA;IAJA,MAAK;IACJ,oBAAkB,KAAA,UAAI,aAAA,eAAA;IACtB,OAAK,eAAA,CAAE,KAAA,UAAI,aAAA,8BAAA,wBACN,oBAAoB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import Toolbar_default from "./Toolbar.js";
2
+ import ToolbarSeparator_default from "./ToolbarSeparator.js";
3
+ export { ToolbarSeparator_default as ToolbarSeparator, Toolbar_default as default };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.js","names":[],"sources":["../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-overlay max-w-[16rem] rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background shadow-md',\n // Scoped to the open state, never unconditional. Reka's Presence\n // keeps closed content mounted until an animationend arrives, and\n // a mount-only animation never fires a second one — so an\n // unconditional animation class leaves a stray tip in the page.\n // Scoped, the closed element computes `animation-name: none` and\n // Presence unmounts it at once; the paired exit is precisely what\n // Presence is waiting to hold it for.\n //\n // `delayed-open` rather than `open`: the animation belongs to the\n // hover path, which the user waited for. A tip opened by keyboard\n // focus appears instantly, because a keyboard user asked for it\n // deliberately and has nothing to wait through. The exit needs no\n // such split — Reka reports both open flavours as plain `closed`\n // on the way out, so one class answers them both.\n 'data-[state=delayed-open]:animate-scale-in data-[state=closed]:animate-scale-out',\n )\n \"\n style=\"transform-origin: var(--reka-popper-transform-origin)\"\n >\n <!-- @slot The hint, where markup is needed. Takes precedence over\n `content`. Nothing interactive belongs here — a tooltip cannot be\n reached by keyboard or pointer. -->\n <slot>{{ content }}</slot>\n <TooltipArrow class=\"fill-foreground\" :width=\"10\" :height=\"5\" />\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tooltip.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../../packages/primitives/tooltip/src/Tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the tip prefers, before collision flipping. The\n * members mirror Reka's own `Side`, and the template binding is what enforces\n * that: a member Reka does not accept stops `:side=\"side\"` type-checking.\n * Declared here rather than aliased so the generated props table prints the\n * four values instead of a name that tells the reader nothing.\n */\nexport type TooltipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n TooltipProvider,\n TooltipRoot,\n TooltipTrigger,\n TooltipPortal,\n TooltipContent,\n TooltipArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * Tooltip — a short, non-interactive hint on hover or keyboard focus of its\n * trigger: the label for an icon-only button, or one terse explanation.\n *\n * A tooltip is not a small dialog, and the difference is the whole contract.\n * It never takes focus — focus stays on the trigger the entire time it is\n * shown, which is what lets a keyboard user read it and keep going. Hovering\n * the trigger or focusing it opens the tip; Esc, blur and moving the pointer\n * away close it; the page behind never stops scrolling. Nothing inside it can\n * be reached, so nothing interactive belongs inside it. The moment a hint\n * needs a link or a button, it is a `Popover`.\n *\n * It is wired as `aria-describedby`, never `aria-labelledby`: it *supplements*\n * an accessible name and must never be the only source of one. An icon-only\n * button still carries its own `aria-label` — a screen reader user who never\n * hovers would otherwise meet an unnamed button.\n *\n * The provider is bundled in so a single tooltip works with no setup. An\n * application with many can hoist one Reka `TooltipProvider` higher later,\n * which is what shares the hover delay across them.\n */\nwithDefaults(\n defineProps<{\n /** The hint text. The default slot overrides it where the hint needs markup. */\n content?: string;\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: TooltipSide;\n /** Gap in pixels between the trigger and the tip. */\n sideOffset?: number;\n /** Milliseconds of hover before the tip appears. Keyboard focus is always immediate. */\n delay?: number;\n /** Drive the tip from the host with `v-model:open` — an onboarding hint, say. Omit it for hover and focus alone. */\n open?: boolean | undefined;\n }>(),\n // `open: undefined` is load-bearing, not a redundant default — it is what\n // keeps the uncontrolled third state reachable past Vue's absent-Boolean\n // casting. `optional()` in the template is the other half; its docblock\n // carries the reasoning for both. `content` needs no such entry: a string\n // prop is already `undefined` when absent.\n { open: undefined, side: \"top\", sideOffset: 6, delay: 300 },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <TooltipProvider :delay-duration=\"delay\">\n <TooltipRoot v-bind=\"optional({ open })\" @update:open=\"$emit('update:open', $event)\">\n <!-- @slot The element the hint describes. Rendered `as-child`, so the\n caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <TooltipTrigger as-child>\n <slot name=\"trigger\" />\n </TooltipTrigger>\n\n <TooltipPortal>\n <TooltipContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :class=\"\n cn(\n 'z-overlay max-w-[16rem] rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background shadow-md',\n // Scoped to the open state, never unconditional. Reka's Presence\n // keeps closed content mounted until an animationend arrives, and\n // a mount-only animation never fires a second one — so an\n // unconditional animation class leaves a stray tip in the page.\n // Scoped, the closed element computes `animation-name: none` and\n // Presence unmounts it at once; the paired exit is precisely what\n // Presence is waiting to hold it for.\n //\n // `delayed-open` rather than `open`: the animation belongs to the\n // hover path, which the user waited for. A tip opened by keyboard\n // focus appears instantly, because a keyboard user asked for it\n // deliberately and has nothing to wait through. The exit needs no\n // such split — Reka reports both open flavours as plain `closed`\n // on the way out, so one class answers them both.\n 'data-[state=delayed-open]:animate-scale-in data-[state=closed]:animate-scale-out',\n )\n \"\n style=\"transform-origin: var(--reka-popper-transform-origin)\"\n >\n <!-- @slot The hint, where markup is needed. Takes precedence over\n `content`. Nothing interactive belongs here — a tooltip cannot be\n reached by keyboard or pointer. -->\n <slot>{{ content }}</slot>\n <TooltipArrow class=\"fill-foreground\" :width=\"10\" :height=\"5\" />\n </TooltipContent>\n </TooltipPortal>\n </TooltipRoot>\n </TooltipProvider>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;GAqEE,OAAA,UAAA,GAAA,YA2CkB,MAAA,eAAA,GAAA,EA3CA,kBAAgB,QAAA,MAAK,GAAA;IACrC,SAAA,cAyCc,CAzCd,YAyCc,MAAA,WAAA,GAzCd,WAAqB,MAyCP,QAAA,CAzCe,CAAA,EAAA,MAAG,QAAA,KAAI,CAAA,GAAA,EAAM,iBAAW,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,eAAgB,MAAM,GAAA,CAAA,GAAA;KAIhF,SAAA,cAEiB,CAFjB,YAEiB,MAAA,cAAA,GAAA,EAFD,YAAA,GAAQ,GAAA;MACtB,SAAA,cAAuB,CAAvB,WAAuB,KAAA,QAAA,SAAA,CAAA,CAAA;;KAGzB,CAAA,GAAA,YAgCgB,MAAA,aAAA,GAAA,MAAA;MA/Bd,SAAA,cA8BiB,CA9BjB,YA8BiB,MAAA,cAAA,GAAA;OA7Bd,MAAM,QAAA;OACN,eAAa,QAAA;OACb,OAAK,eAAe,MAAA,EAAA,CAAE,CAAA,4GAAA,kFAAA,CAAA;OAoBvB,OAAA,EAAA,oBAAA,sCAAA;;OAKA,SAAA,cAA0B,CAA1B,WAA0B,KAAA,QAAA,WAAA,CAAA,SAAA,CAAjB,gBAAA,gBAAA,QAAA,OAAO,GAAA,CAAA,CAAA,CAAA,GAChB,YAAgE,MAAA,YAAA,GAAA;QAAlD,OAAM;QAAmB,OAAO;QAAK,QAAQ"}
@@ -0,0 +1,7 @@
1
+ import TreeView_vue_vue_type_script_setup_true_lang_default, { TREE_VIEW_LABELS } from "./TreeView.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/tree-view/src/TreeView.vue
3
+ var TreeView_default = TreeView_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { TREE_VIEW_LABELS, TreeView_default as default };
6
+
7
+ //# sourceMappingURL=TreeView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.js","names":[],"sources":["../../../../packages/primitives/tree-view/src/TreeView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { LabelOverrides, TreeViewLabels } from \"@ecoma-io/loom-labels\";\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it.\n * Everything else a tree renders is a node's own label, so the bag is one\n * string — but it is a string a reader waits on.\n */\nexport const TREE_VIEW_LABELS: TreeViewLabels = {\n loading: \"Loading…\",\n};\n\n/**\n * One node of the tree. `children`'s shape is the contract for expansion: an\n * array of any length (including empty — a known leaf) is static data the\n * tree renders directly, while a node *without* one under a `loadChildren`\n * tree is treated as a branch still to fetch.\n */\nexport interface TreeNode {\n /** The value bound to `v-model` when this node is chosen. Unique within the tree. */\n value: string | number;\n /** The text shown on the row and matched by the typeahead. */\n label: string;\n /** This node's children. Their presence is what makes the row expandable. */\n children?: TreeNode[];\n /** Present but unchoosable: visible, arrow-reachable, refuses selection and expansion. */\n disabled?: boolean;\n}\n\n/** Whether one node or several can be chosen at once. */\nexport type TreeViewSelectionMode = \"single\" | \"multiple\";\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onScopeDispose, provide, ref, watch } from \"vue\";\nimport { useAncestorDisabled, useLabels } from \"@ecoma-io/loom-labels\";\nimport { TREE_VIEW_CONTEXT, type TreeViewContext, type TreeViewNodeState } from \"./context\";\nimport TreeViewNode from \"./TreeViewNode.vue\";\n\nconst props = withDefaults(\n defineProps<{\n /** The nodes, in the order they are shown, parents before children. */\n nodes: TreeNode[];\n /**\n * The chosen node's `value` — or every chosen value, when `selectionMode`\n * is \"multiple\". The union, not two generic shapes, for the same reason\n * Combobox is: `v-model` needs one binding whose type does not depend on\n * another prop's value, and a scalar/array mismatch is caught the same\n * place the tree catches it — at the render.\n */\n modelValue?: string | number | Array<string | number> | undefined;\n /** Whether one node or several can be chosen at once. */\n selectionMode?: TreeViewSelectionMode;\n /**\n * Fetch a branch's children the first time it is expanded. A node with no\n * `children` of its own is treated as lazily loadable; one that resolves\n * to an empty array becomes a leaf, and a rejected fetch leaves the node\n * collapsed so the next activation retries rather than caching failure.\n */\n loadChildren?: (node: TreeNode) => Promise<TreeNode[]>;\n /** Node values expanded on mount. After mount the tree owns the state. */\n defaultExpanded?: Array<string | number>;\n /**\n * Unavailable: the rows dim, refuse selection and expansion, and drop out\n * of the tab order. Unset defers to an enclosing `<fieldset disabled>`\n * read straight off the DOM.\n */\n disabled?: boolean | undefined;\n /** Names for the strings this control supplies itself. */\n labels?: LabelOverrides<TreeViewLabels> | undefined;\n }>(),\n {\n modelValue: undefined,\n selectionMode: \"single\",\n defaultExpanded: () => [],\n disabled: undefined,\n labels: undefined,\n },\n);\n\nconst emit = defineEmits<{\n /** The chosen node's `value` — or the whole chosen list, when `selectionMode` is \"multiple\". */\n \"update:modelValue\": [value: string | number | Array<string | number>];\n}>();\n\n/**\n * A row as the keyboard sees it: one step of the depth-first walk of the\n * visible tree, with everything the key map needs resolved once per change\n * instead of per keystroke.\n */\ninterface FlatRow {\n value: string | number;\n node: TreeNode;\n level: number;\n setsize: number;\n posinset: number;\n parentId: string | number | null;\n expandable: boolean;\n expanded: boolean;\n selected: boolean;\n busy: boolean;\n disabled: boolean;\n}\n\nconst rootEl = ref<HTMLUListElement | null>(null);\n\nconst ancestorDisabled = useAncestorDisabled(() => rootEl.value);\nconst controlDisabled = computed(() => (props.disabled ?? false) || ancestorDisabled.value);\n\nconst text = useLabels(\"treeView\", TREE_VIEW_LABELS, () => props.labels);\n\n// Seeded once from `defaultExpanded`, then the tree owns it — a prop the user\n// edits after mount silently losing their edits is worse than a seed.\nconst expandedKeys = ref(new Set<string | number>(props.defaultExpanded));\nconst loadingKeys = ref(new Set<string | number>());\nconst lazyChildren = ref(new Map<string | number, TreeNode[]>());\nconst focusValue = ref<string | number | null>(null);\n\nfunction toKeySet(\n model: string | number | Array<string | number> | undefined,\n): Set<string | number> {\n if (model == null) return new Set();\n return new Set(Array.isArray(model) ? model : [model]);\n}\n\n// A mirror rather than a read-through, so the tree works uncontrolled (`v-model`\n// absent, `modelValue` never supplied) exactly as it does controlled — the same\n// contract Combobox keeps.\nconst selectedKeys = ref(toKeySet(props.modelValue));\nwatch(\n () => props.modelValue,\n (next) => {\n selectedKeys.value = toKeySet(next);\n },\n);\n\nfunction childrenOf(node: TreeNode): TreeNode[] {\n if (Array.isArray(node.children)) return node.children;\n return lazyChildren.value.get(node.value) ?? [];\n}\n\n/**\n * A row can open when it has children to show: a non-empty `children` array,\n * or a fetch already resolved beneath it — an empty resolution *is* the\n * answer, and the row collapses back to a leaf rather than offering a branch\n * that opens onto nothing.\n */\nfunction isExpandable(node: TreeNode): boolean {\n if (Array.isArray(node.children)) return node.children.length > 0;\n const loaded = lazyChildren.value.get(node.value);\n if (loaded) return loaded.length > 0;\n return props.loadChildren != null;\n}\n\nconst flatRows = computed<FlatRow[]>(() => {\n const rows: FlatRow[] = [];\n const walk = (nodes: TreeNode[], level: number, parentId: string | number | null): void => {\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n if (!node) continue;\n const expandable = isExpandable(node);\n const expanded = expandable && expandedKeys.value.has(node.value);\n rows.push({\n value: node.value,\n node,\n level,\n setsize: nodes.length,\n posinset: index + 1,\n parentId,\n expandable,\n expanded,\n selected: selectedKeys.value.has(node.value),\n busy: loadingKeys.value.has(node.value),\n disabled: (node.disabled ?? false) || controlDisabled.value,\n });\n if (expanded) walk(childrenOf(node), level + 1, node.value);\n }\n };\n walk(props.nodes, 1, null);\n return rows;\n});\n\nconst rowByValue = computed(() => new Map(flatRows.value.map((row) => [row.value, row])));\n\n// The roving tab stop: wherever the reader last was, or — before the first\n// arrow key — the first row a Tab is allowed to land on. A disabled row is\n// reachable from inside the tree but never *entered* from outside it.\nconst tabStopValue = computed<string | number | null>(() => {\n // The stop answers \"where Tab would land\", not \"where the reader is\": the\n // arrows deliberately rest on disabled rows, but entering the tree from\n // outside must land on the first enabled one.\n const focused = focusValue.value != null ? rowByValue.value.get(focusValue.value) : undefined;\n if (focused && !focused.disabled) return focusValue.value;\n const firstEnabled = flatRows.value.find((row) => !row.disabled);\n return firstEnabled?.value ?? null;\n});\n\nfunction stateFor(node: TreeNode): TreeViewNodeState {\n const row = rowByValue.value.get(node.value);\n return {\n expandable: row?.expandable ?? false,\n expanded: row?.expanded ?? false,\n selected: row?.selected ?? false,\n busy: row?.busy ?? false,\n disabled: row?.disabled ?? false,\n focusable: !controlDisabled.value && row?.value === tabStopValue.value,\n };\n}\n\nasync function expandRow(row: FlatRow): Promise<void> {\n const value = row.node.value;\n if (\n row.disabled ||\n !row.expandable ||\n expandedKeys.value.has(value) ||\n loadingKeys.value.has(value)\n ) {\n return;\n }\n const isLazy =\n !Array.isArray(row.node.children) &&\n props.loadChildren != null &&\n !lazyChildren.value.has(value);\n if (isLazy && props.loadChildren) {\n loadingKeys.value = new Set(loadingKeys.value).add(value);\n try {\n const children = await props.loadChildren(row.node);\n const next = new Map(lazyChildren.value);\n next.set(value, children);\n lazyChildren.value = next;\n } catch {\n // The fetch failed: leave the row collapsed and still expandable, so\n // the next activation retries rather than caching a broken branch.\n return;\n } finally {\n const settled = new Set(loadingKeys.value);\n settled.delete(value);\n loadingKeys.value = settled;\n }\n }\n expandedKeys.value = new Set(expandedKeys.value).add(value);\n}\n\nfunction collapseRow(value: string | number): void {\n const next = new Set(expandedKeys.value);\n next.delete(value);\n expandedKeys.value = next;\n}\n\nfunction selectRow(node: TreeNode): void {\n if (controlDisabled.value || node.disabled) return;\n if (props.selectionMode === \"multiple\") {\n const next = new Set(selectedKeys.value);\n if (next.has(node.value)) next.delete(node.value);\n else next.add(node.value);\n selectedKeys.value = next;\n emit(\"update:modelValue\", [...next]);\n return;\n }\n selectedKeys.value = new Set([node.value]);\n emit(\"update:modelValue\", node.value);\n}\n\nfunction rowElement(value: string | number): HTMLElement | null {\n const root = rootEl.value;\n if (!root) return null;\n return root.querySelector<HTMLElement>(`[data-tree-value=\"${CSS.escape(String(value))}\"]`);\n}\n\nfunction focusRow(row: FlatRow | undefined): void {\n if (!row) return;\n focusValue.value = row.node.value;\n void nextTick(() => {\n rowElement(row.value)?.focus();\n });\n}\n\nfunction onRowFocus(node: TreeNode): void {\n focusValue.value = node.value;\n}\n\nfunction onRowActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value) return;\n focusRow(row);\n selectRow(node);\n}\n\nfunction onChevronActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value || row.disabled) return;\n focusRow(row);\n if (row.expanded) collapseRow(node.value);\n else void expandRow(row);\n}\n\nfunction currentRowIndex(): number {\n if (focusValue.value == null) return -1;\n return flatRows.value.findIndex((row) => row.value === focusValue.value);\n}\n\n/*\n * The typeahead. APG trees match a prefix of the row's label, starting after\n * the current row and wrapping; the same character typed again cycles to that\n * character's next match rather than extending a prefix to itself. The buffer\n * is 500 ms, and the timer is released with the scope so a tree torn down\n * mid-typeahead leaves nothing pending.\n */\nconst TYPEAHEAD_RESET_MS = 500;\nlet typeaheadBuffer = \"\";\nlet typeaheadTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction handleTypeahead(event: KeyboardEvent): void {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n if (flatRows.value.length === 0) return;\n const char = event.key.toLowerCase();\n // Repeat detection reads the buffer's LAST character: a multi-character\n // prefix must survive a repeated final character so the walk cycles to\n // the next match instead of extending the prefix to a non-match.\n if (typeaheadBuffer.slice(-1) !== char) typeaheadBuffer += char;\n const query = typeaheadBuffer;\n const start = currentRowIndex() + 1;\n for (let step = 0; step < flatRows.value.length; step++) {\n const row = flatRows.value[(start + step) % flatRows.value.length];\n // Typeahead is a jump made from outside the walk, like the entry tab\n // stop: it lands on a row the reader can act on. The arrows remain the\n // way to deliberately rest on a disabled row.\n if (row && !row.disabled && row.node.label.toLowerCase().startsWith(query)) {\n focusRow(row);\n break;\n }\n }\n event.preventDefault();\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n typeaheadTimer = setTimeout(() => {\n typeaheadBuffer = \"\";\n typeaheadTimer = undefined;\n }, TYPEAHEAD_RESET_MS);\n}\n\nonScopeDispose(() => {\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n});\n\n/**\n * One keydown on the root, reached from every row by bubbling: the key map is\n * written once against the flat visible walk instead of duplicated per row.\n * Disabled rows stay in the arrow walk — present and reachable, per the APG —\n * but Enter, Space and the disclosure keys refuse them.\n */\nfunction onKeydown(event: KeyboardEvent): void {\n if (controlDisabled.value) return;\n const rows = flatRows.value;\n if (rows.length === 0) return;\n const index = currentRowIndex();\n const row = index >= 0 ? rows[index] : undefined;\n\n switch (event.key) {\n case \"ArrowDown\": {\n const next = rows[index + 1];\n if (next) focusRow(next);\n break;\n }\n case \"ArrowUp\": {\n const previous = index > 0 ? rows[index - 1] : undefined;\n if (previous) focusRow(previous);\n break;\n }\n case \"Home\":\n focusRow(rows[0]);\n break;\n case \"End\":\n focusRow(rows[rows.length - 1]);\n break;\n case \"ArrowRight\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && !row.expanded) {\n void expandRow(row);\n break;\n }\n if (row.expanded) {\n const child = rows[index + 1];\n if (child && child.level === row.level + 1) focusRow(child);\n }\n break;\n }\n case \"ArrowLeft\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && row.expanded) {\n collapseRow(row.value);\n break;\n }\n if (row.parentId != null) {\n const parent = rowByValue.value.get(row.parentId);\n if (parent) focusRow(parent);\n }\n break;\n }\n case \"Enter\":\n case \" \":\n if (row) selectRow(row.node);\n break;\n default:\n handleTypeahead(event);\n return;\n }\n event.preventDefault();\n}\n\nprovide(TREE_VIEW_CONTEXT, {\n stateFor,\n childrenOf,\n loadingText: computed(() => text.value.loading),\n onRowFocus,\n onRowActivate,\n onChevronActivate,\n} satisfies TreeViewContext);\n</script>\n\n<!--\n The tree is a plain `<ul>`, so the caller's `aria-label`, `aria-labelledby`\n and `id` fall through to it untouched — naming the tree is naming the\n element, exactly as the APG example does. Rows render one tab stop at a\n time (roving tabindex); the keydown above is the only keyboard listener.\n-->\n<template>\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -- the container is deliberately not focusable: focus roves across the rows (APG tree view), so exactly one row holds the tab stop and the `<ul>` itself never takes one. -->\n <ul\n ref=\"rootEl\"\n role=\"tree\"\n :aria-multiselectable=\"selectionMode === 'multiple' ? 'true' : undefined\"\n :aria-disabled=\"controlDisabled ? 'true' : undefined\"\n class=\"m-0 list-none select-none p-0 text-sm text-foreground\"\n @keydown=\"onKeydown\"\n >\n <TreeViewNode\n v-for=\"(node, index) in nodes\"\n :key=\"node.value\"\n :node=\"node\"\n :level=\"1\"\n :setsize=\"nodes.length\"\n :posinset=\"index + 1\"\n />\n </ul>\n</template>\n"],"mappings":""}