@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 @@
1
+ {"version":3,"file":"HoverCard.js","names":[],"sources":["../../../../packages/primitives/hover-card/src/HoverCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the card 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 HoverCardSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\n/**\n * How the card aligns against the trigger along the cross-axis, before\n * collision flipping. Same rationale as `HoverCardSide`.\n */\nexport type HoverCardAlign = \"start\" | \"center\" | \"end\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n HoverCardRoot,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * HoverCard — a supplementary preview surface on hover, for content the user\n * reads rather than operates.\n *\n * The pointer can travel from the trigger into the card without closing it —\n * the close delay exists for that transit, which is what makes a hover card a\n * complementary surface and a tooltip a non-interactive hint. But that reach\n * is a pointer privilege only. Reka strips `tabindex=\"-1\"` onto every tabbable\n * node inside the content on mount, and the trigger closes the card on blur\n * after `closeDelay` (300ms by default) — so by the time a keyboard user\n * tabbed toward anything inside, the card would already be gone. Interactive\n * content inside a HoverCard is unreachable by keyboard (WCAG 2.1.1), whatever\n * the markup allows.\n *\n * The honest contract: keep the card's content non-interactive — text, an\n * image, a definition — and duplicate anything actionable somewhere reachable.\n * When a preview genuinely needs its own links or buttons, it is not a hover\n * card; it is a `Popover`, whose content takes focus and whose Esc/outside\n * dismissal gives a keyboard user a way in and out.\n *\n * The content is NOT wired as `aria-describedby` — it is a supplementary panel,\n * not an accessible name supplement. A screen reader user who never hovers\n * should still have the trigger's own accessible name, and the card is extra\n * rather than essential.\n */\nwithDefaults(\n defineProps<{\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: HoverCardSide;\n /** Gap in pixels between the trigger and the card. */\n sideOffset?: number;\n /** Alignment against the trigger along the cross-axis, before collision flipping. */\n align?: HoverCardAlign;\n /** Alignment offset in pixels from the chosen alignment position. */\n alignOffset?: number;\n /** Milliseconds of hover before the card appears. */\n openDelay?: number;\n /** Milliseconds before the card disappears after the pointer leaves both trigger and content. */\n closeDelay?: number;\n /** Drive the card from the host with `v-model:open`. Omit for hover 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.\n {\n side: \"bottom\",\n sideOffset: 6,\n align: \"start\",\n alignOffset: 0,\n openDelay: 300,\n closeDelay: 300,\n open: undefined,\n },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <HoverCardRoot\n :open-delay=\"openDelay\"\n :close-delay=\"closeDelay\"\n v-bind=\"optional({ open })\"\n @update:open=\"$emit('update:open', $event)\"\n >\n <!-- @slot The element that opens the card on hover. Rendered `as-child`, so\n the caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <HoverCardTrigger as-child>\n <slot name=\"trigger\" />\n </HoverCardTrigger>\n\n <HoverCardPortal>\n <HoverCardContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :class=\"\n cn(\n 'z-overlay w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n // Both states scoped, 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 card 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 'data-[state=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 card content. Pointer-reachable, but keep it\n non-interactive — see the component docblock for why keyboard\n users cannot reach anything focusable in here. -->\n <slot />\n <HoverCardArrow class=\"fill-popover\" :width=\"10\" :height=\"5\" />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverCard.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../../packages/primitives/hover-card/src/HoverCard.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Which edge of the trigger the card 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 HoverCardSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\n/**\n * How the card aligns against the trigger along the cross-axis, before\n * collision flipping. Same rationale as `HoverCardSide`.\n */\nexport type HoverCardAlign = \"start\" | \"center\" | \"end\";\n</script>\n\n<script setup lang=\"ts\">\nimport {\n HoverCardRoot,\n HoverCardTrigger,\n HoverCardPortal,\n HoverCardContent,\n HoverCardArrow,\n} from \"reka-ui\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport { optional } from \"@ecoma-io/loom-core\";\n\n/**\n * HoverCard — a supplementary preview surface on hover, for content the user\n * reads rather than operates.\n *\n * The pointer can travel from the trigger into the card without closing it —\n * the close delay exists for that transit, which is what makes a hover card a\n * complementary surface and a tooltip a non-interactive hint. But that reach\n * is a pointer privilege only. Reka strips `tabindex=\"-1\"` onto every tabbable\n * node inside the content on mount, and the trigger closes the card on blur\n * after `closeDelay` (300ms by default) — so by the time a keyboard user\n * tabbed toward anything inside, the card would already be gone. Interactive\n * content inside a HoverCard is unreachable by keyboard (WCAG 2.1.1), whatever\n * the markup allows.\n *\n * The honest contract: keep the card's content non-interactive — text, an\n * image, a definition — and duplicate anything actionable somewhere reachable.\n * When a preview genuinely needs its own links or buttons, it is not a hover\n * card; it is a `Popover`, whose content takes focus and whose Esc/outside\n * dismissal gives a keyboard user a way in and out.\n *\n * The content is NOT wired as `aria-describedby` — it is a supplementary panel,\n * not an accessible name supplement. A screen reader user who never hovers\n * should still have the trigger's own accessible name, and the card is extra\n * rather than essential.\n */\nwithDefaults(\n defineProps<{\n /** The edge of the trigger to anchor against, before collision flipping. */\n side?: HoverCardSide;\n /** Gap in pixels between the trigger and the card. */\n sideOffset?: number;\n /** Alignment against the trigger along the cross-axis, before collision flipping. */\n align?: HoverCardAlign;\n /** Alignment offset in pixels from the chosen alignment position. */\n alignOffset?: number;\n /** Milliseconds of hover before the card appears. */\n openDelay?: number;\n /** Milliseconds before the card disappears after the pointer leaves both trigger and content. */\n closeDelay?: number;\n /** Drive the card from the host with `v-model:open`. Omit for hover 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.\n {\n side: \"bottom\",\n sideOffset: 6,\n align: \"start\",\n alignOffset: 0,\n openDelay: 300,\n closeDelay: 300,\n open: undefined,\n },\n);\n\ndefineEmits<{ \"update:open\": [value: boolean] }>();\n</script>\n\n<template>\n <HoverCardRoot\n :open-delay=\"openDelay\"\n :close-delay=\"closeDelay\"\n v-bind=\"optional({ open })\"\n @update:open=\"$emit('update:open', $event)\"\n >\n <!-- @slot The element that opens the card on hover. Rendered `as-child`, so\n the caller's own element *is* the trigger and keeps its own accessible\n name. -->\n <HoverCardTrigger as-child>\n <slot name=\"trigger\" />\n </HoverCardTrigger>\n\n <HoverCardPortal>\n <HoverCardContent\n :side=\"side\"\n :side-offset=\"sideOffset\"\n :align=\"align\"\n :align-offset=\"alignOffset\"\n :class=\"\n cn(\n 'z-overlay w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n // Both states scoped, 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 card 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 'data-[state=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 card content. Pointer-reachable, but keep it\n non-interactive — see the component docblock for why keyboard\n users cannot reach anything focusable in here. -->\n <slot />\n <HoverCardArrow class=\"fill-popover\" :width=\"10\" :height=\"5\" />\n </HoverCardContent>\n </HoverCardPortal>\n </HoverCardRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;GAyFE,OAAA,UAAA,GAAA,YAyCgB,MAAA,aAAA,GAzChB,WAyCgB;IAxCb,cAAY,QAAA;IACZ,eAAa,QAAA;GACN,GAAA,MAAA,QAAA,CAAQ,CAAA,EAAA,MAAG,QAAA,KAAI,CAAA,GAAA,EACtB,iBAAW,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,eAAgB,MAAM,GAAA,CAAA,GAAA;IAKzC,SAAA,cAEmB,CAFnB,YAEmB,MAAA,gBAAA,GAAA,EAFD,YAAA,GAAQ,GAAA;KACxB,SAAA,cAAuB,CAAvB,WAAuB,KAAA,QAAA,SAAA,CAAA,CAAA;;IAGzB,CAAA,GAAA,YA2BkB,MAAA,eAAA,GAAA,MAAA;KA1BhB,SAAA,cAyBmB,CAzBnB,YAyBmB,MAAA,gBAAA,GAAA;MAxBhB,MAAM,QAAA;MACN,eAAa,QAAA;MACb,OAAO,QAAA;MACP,gBAAc,QAAA;MACd,OAAK,eAAa,MAAA,EAAA,CAAE,CAAA,gHAAA,0EAAA,CAAA;MAarB,OAAA,EAAA,oBAAA,sCAAA;;MAKA,SAAA,cAAQ,CAAR,WAAQ,KAAA,QAAA,SAAA,GACR,YAA+D,MAAA,cAAA,GAAA;OAA/C,OAAM;OAAgB,OAAO;OAAK,QAAQ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.js","names":[],"sources":["../../../../packages/primitives/icon-button/src/IconButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\nexport type IconButtonVariant = \"default\" | \"secondary\" | \"ghost\" | \"destructive\";\n\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * An icon-only button is a square, so every size is height-equals-width and has\n * no horizontal padding. The four variants match Button's press language — hover\n * lifts by fill, active presses down, focus blooms the primary ring — but\n * `default` here names what Button calls `primary`, because an icon button is\n * never the screen's primary action and the word would mislead.\n */\nexport const iconButtonVariants = cva(\n [\n \"relative inline-flex items-center justify-center rounded-md select-none\",\n // Button's own transition list, verbatim: transform rides --ease-spring so\n // the press squish springs, while colour and shadow stay on --ease-out.\n // A bare `transition-colors` silently dropped any transform change.\n \"[transition:transform_var(--duration-fast)_var(--ease-spring),background-color_var(--duration-fast)_var(--ease-out),color_var(--duration-fast)_var(--ease-out),box-shadow_var(--duration-fast)_var(--ease-out)]\",\n \"active:scale-press focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo\",\n \"disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 active:bg-secondary/70\",\n ghost: \"hover:bg-subtle text-foreground\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 active:bg-destructive/80\",\n } satisfies Record<IconButtonVariant, string>,\n size: {\n sm: \"h-8 w-8\",\n md: \"h-9 w-9\",\n lg: \"h-10 w-10\",\n } satisfies Record<IconButtonSize, string>,\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Visual weight, matching Button's press language but without the `primary` name — an icon button is never the action a screen is asking for. */\n variant?: IconButtonVariant;\n /** Square hit area. Every size is 24px or above (WCAG 2.2 SC 2.5.8). */\n size?: IconButtonSize;\n /** The accessible name. An icon-only button without one is a WCAG failure, so this prop is required. */\n label: string;\n /** Unavailable rather than dimmed — drains to the neutral well and blocks pointer events. */\n disabled?: boolean;\n /** The native button type. Defaults to `button`, never an accidental submit. */\n type?: \"button\" | \"submit\" | \"reset\";\n }>(),\n { variant: \"default\", size: \"md\", disabled: false, type: \"button\" },\n);\n</script>\n\n<template>\n <button\n :type=\"type\"\n :class=\"\n cn(\n iconButtonVariants({ variant, size }),\n $attrs.class,\n // Drained, not dimmed — Button's rule, and for the same measured reason:\n // `opacity-50` faded the fill and the glyph together, multiplying away\n // whatever contrast either had. One neutral treatment covers all four\n // variants here exactly as it does on Button — a fill-bearing icon\n // button gives up its hue, `ghost` gains a fill — because an unavailable\n // control has no emphasis left to carry, and the native `disabled`\n // attribute above carries the state to assistive tech regardless.\n // No `border-border` companion: unlike Button's variants none of these\n // paints a border to slacken.\n disabled && 'bg-muted text-muted-foreground shadow-none',\n )\n \"\n :aria-label=\"label\"\n :disabled=\"disabled\"\n >\n <slot />\n </button>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconButton.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../packages/primitives/icon-button/src/IconButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\nexport type IconButtonVariant = \"default\" | \"secondary\" | \"ghost\" | \"destructive\";\n\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * An icon-only button is a square, so every size is height-equals-width and has\n * no horizontal padding. The four variants match Button's press language — hover\n * lifts by fill, active presses down, focus blooms the primary ring — but\n * `default` here names what Button calls `primary`, because an icon button is\n * never the screen's primary action and the word would mislead.\n */\nexport const iconButtonVariants = cva(\n [\n \"relative inline-flex items-center justify-center rounded-md select-none\",\n // Button's own transition list, verbatim: transform rides --ease-spring so\n // the press squish springs, while colour and shadow stay on --ease-out.\n // A bare `transition-colors` silently dropped any transform change.\n \"[transition:transform_var(--duration-fast)_var(--ease-spring),background-color_var(--duration-fast)_var(--ease-out),color_var(--duration-fast)_var(--ease-out),box-shadow_var(--duration-fast)_var(--ease-out)]\",\n \"active:scale-press focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo\",\n \"disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80 active:bg-secondary/70\",\n ghost: \"hover:bg-subtle text-foreground\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90 active:bg-destructive/80\",\n } satisfies Record<IconButtonVariant, string>,\n size: {\n sm: \"h-8 w-8\",\n md: \"h-9 w-9\",\n lg: \"h-10 w-10\",\n } satisfies Record<IconButtonSize, string>,\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Visual weight, matching Button's press language but without the `primary` name — an icon button is never the action a screen is asking for. */\n variant?: IconButtonVariant;\n /** Square hit area. Every size is 24px or above (WCAG 2.2 SC 2.5.8). */\n size?: IconButtonSize;\n /** The accessible name. An icon-only button without one is a WCAG failure, so this prop is required. */\n label: string;\n /** Unavailable rather than dimmed — drains to the neutral well and blocks pointer events. */\n disabled?: boolean;\n /** The native button type. Defaults to `button`, never an accidental submit. */\n type?: \"button\" | \"submit\" | \"reset\";\n }>(),\n { variant: \"default\", size: \"md\", disabled: false, type: \"button\" },\n);\n</script>\n\n<template>\n <button\n :type=\"type\"\n :class=\"\n cn(\n iconButtonVariants({ variant, size }),\n $attrs.class,\n // Drained, not dimmed — Button's rule, and for the same measured reason:\n // `opacity-50` faded the fill and the glyph together, multiplying away\n // whatever contrast either had. One neutral treatment covers all four\n // variants here exactly as it does on Button — a fill-bearing icon\n // button gives up its hue, `ghost` gains a fill — because an unavailable\n // control has no emphasis left to carry, and the native `disabled`\n // attribute above carries the state to assistive tech regardless.\n // No `border-border` companion: unlike Button's variants none of these\n // paints a border to slacken.\n disabled && 'bg-muted text-muted-foreground shadow-none',\n )\n \"\n :aria-label=\"label\"\n :disabled=\"disabled\"\n >\n <slot />\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;AAcA,IAAa,qBAAqB,IAChC;CACE;CAIA;CACA;CACA;AACF,GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,WACE;GACF,OAAO;GACP,aACE;EACJ;EACA,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;;;;;;;;;;;;;;;GAwBE,OAAA,UAAA,GAAA,mBAsBS,UAAA;IArBN,MAAM,QAAA;IACN,OAAK,eAAS,MAAA,EAAA,CAAE,CAAU,MAAA,kBAAA,CAAkB,CAAA;KAAA,SAAG,QAAA;KAAO,MAAE,QAAA;IAAI,CAAA,GAAaA,KAAAA,OAAO,OAA4qB,QAAA,YAAQ,4CAAA,CAAA;IAgBpwB,cAAY,QAAA;IACZ,UAAU,QAAA;GAEX,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Indicator.js","names":[],"sources":["../../../../packages/primitives/indicator/src/Indicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { IndicatorLabels } from \"@ecoma-io/loom-labels\";\nimport { cva } from \"class-variance-authority\";\n\n/** A presence dot, or a number. */\nexport type IndicatorVariant = \"dot\" | \"count\";\n\n/** The four presence states a dot can report. */\nexport type IndicatorStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\n/** Which corner of the marked element the marker straddles. */\nexport type IndicatorPlacement = \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n\n/**\n * The colour vocabulary, deliberately Badge's own names rather than a second\n * set — `accent` included, and it means here exactly what it means there:\n * a second semantic category distinct from primary, never decoration.\n */\nexport type IndicatorTone =\n \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"info\" | \"destructive\" | \"accent\";\n\n/** The surface the marked element sits on, which the separating ring matches. */\nexport type IndicatorSurface = \"background\" | \"card\" | \"sunken\" | \"popover\";\n\nexport const indicatorVariants = cva(\n // `pointer-events-none` is load-bearing rather than tidy: the marker\n // overhangs the corner of whatever it marks, so without it the top-right\n // few pixels of a bell button stop being clickable.\n \"pointer-events-none absolute z-10 flex items-center justify-center select-none ring-2\",\n {\n variants: {\n variant: {\n // 12px leaves room for the status glyphs below to read as shapes\n // rather than as noise.\n dot: \"h-3 w-3 rounded-full\",\n // `min-w-5` and the padding together are what make one digit a circle\n // and three a pill, with no branch: \"1\" is narrower than the minimum\n // and lands on it, \"99+\" outgrows it and the radius turns the ends.\n count: \"h-5 min-w-5 rounded-full px-1.5 text-micro font-medium tabular\",\n } satisfies Record<IndicatorVariant, string>,\n placement: {\n \"top-right\": \"top-0 right-0 -translate-y-1/2 translate-x-1/2\",\n \"top-left\": \"top-0 left-0 -translate-y-1/2 -translate-x-1/2\",\n \"bottom-right\": \"right-0 bottom-0 translate-x-1/2 translate-y-1/2\",\n \"bottom-left\": \"bottom-0 left-0 -translate-x-1/2 translate-y-1/2\",\n } satisfies Record<IndicatorPlacement, string>,\n // The ring is what separates the marker from the photo, avatar or icon\n // underneath, the way a presence dot is punched out of a portrait. It\n // has to be the colour of what surrounds the pair, which only the caller\n // knows — hence a prop rather than a guess.\n surface: {\n background: \"ring-background\",\n card: \"ring-card\",\n sunken: \"ring-sunken\",\n popover: \"ring-popover\",\n } satisfies Record<IndicatorSurface, string>,\n },\n defaultVariants: { variant: \"dot\", placement: \"top-right\", surface: \"background\" },\n },\n);\n\n/**\n * The fill, keyed by Badge's colour names so a success dot and a success badge\n * are the same green. These are the solid tokens where Badge uses a 12% wash:\n * a wash reads fine across a chip and carries no signal at all across 12px.\n *\n * The paired `text-*` is what the count prints in and what the status glyph is\n * punched out in, so one entry drives both layers.\n */\nexport const indicatorToneVariants = cva(\"\", {\n variants: {\n tone: {\n neutral: \"bg-muted-foreground text-background\",\n primary: \"bg-primary text-primary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n info: \"bg-info text-info-foreground\",\n destructive: \"bg-destructive text-destructive-foreground\",\n accent: \"bg-accent text-accent-foreground\",\n } satisfies Record<IndicatorTone, string>,\n },\n defaultVariants: { tone: \"primary\" },\n});\n\n/** Which colour each presence state means, so `status` alone is enough. */\nconst STATUS_TONES = {\n online: \"success\",\n offline: \"neutral\",\n busy: \"destructive\",\n away: \"warning\",\n} satisfies Record<IndicatorStatus, IndicatorTone>;\n\n/**\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it, and\n * exported so a host can build a partial vocabulary against the real thing.\n */\nexport const INDICATOR_LABELS: IndicatorLabels = {\n online: \"Online\",\n offline: \"Offline\",\n busy: \"Busy\",\n away: \"Away\",\n count: ({ count }) => `${String(count)} unread`,\n attention: \"Needs attention\",\n};\n\n/**\n * The shape layer, and it exists for the sighted reader the `sr-only` string\n * below cannot help. Three of the four states are saturated — green, amber,\n * red — which is the exact triple a red/green deficiency collapses, so `busy`\n * wears a bar and `away` a hole and no two of them differ by hue alone.\n * `offline` needs none: grey against any of the three is a saturation\n * difference, not a hue one.\n */\nconst STATUS_GLYPHS = {\n online: \"\",\n offline: \"\",\n busy: \"h-0.5 w-1.5 rounded-full bg-current\",\n away: \"h-1 w-1 rounded-full bg-current\",\n} satisfies Record<IndicatorStatus, string>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\nimport { cn, useSplitAttrs } from \"@ecoma-io/loom-core\";\nimport { useLabels, type LabelOverrides } from \"@ecoma-io/loom-labels\";\n\n/**\n * Indicator — the small marker pinned onto the corner of something else: a\n * presence dot on an avatar, an unread count on a bell, a \"needs attention\"\n * dot on a tab. The default slot is the thing being marked, and the marker\n * positions itself over that child's corner.\n *\n * The boundary with Badge is the whole of the decision between them: **Badge\n * sits in the flow beside content; Indicator is pinned onto content.** A count\n * chip in a table cell is a Badge. The same count floating over a bell icon is\n * an Indicator. Reach for Badge whenever the marker would take up room of its\n * own, and for this whenever it would overhang something.\n *\n * What this component is by default is a bare colour, which is the one thing\n * Loom's accessibility bar forbids outright. A green dot says nothing to a\n * reader who cannot see it. So every marker that renders carries a visually\n * hidden string — `label`, or a default derived from `status` or `count` — and\n * a blank `label` falls back to that default rather than replacing it, which\n * is what makes an unnamed indicator unreachable rather than merely\n * discouraged. The shape layer in `STATUS_GLYPHS` covers the sighted reader\n * the hidden string cannot.\n *\n * There is deliberately **no `aria-live` region here**, and the reason is that\n * this component cannot know whether a change is news. An unread counter is\n * usually fed by a poll, so a live region announces every tick over whatever\n * the reader was doing; the same count is commonly pinned in two places at\n * once, so it announces twice; and a polite region speaks on first render in\n * several screen reader and browser pairs, which turns every page load into a\n * recitation of the inbox. The marker is therefore static text a reader\n * reaches on demand, and announcing a *change* stays with the consumer, who\n * knows whether it followed something the reader just did.\n *\n * One consequence to design around: when the marked child is interactive, its\n * accessible name is computed from the child, and this marker's text sits\n * outside it — a bell button announces \"Notifications, button\" on focus and\n * never mentions the three unread. The default slot exposes `labelId` for\n * exactly that: bind it to the control's `aria-describedby` and the count is\n * announced straight after the name, once, without being duplicated into it.\n */\nconst props = withDefaults(\n defineProps<{\n /** A presence dot, or a number in a pill. */\n variant?: IndicatorVariant;\n /** The number the pill prints, when `variant` is `count`. Zero hides the marker unless `showZero` is set. */\n count?: number;\n /** The highest number printed in full; anything above it prints as `<max>+`. The accessible text still carries the real figure. */\n max?: number;\n /** Presence, for a dot: it picks the colour and the shape, and names the dot for a screen reader. Omit it for a plain \"something changed\" dot. */\n status?: IndicatorStatus;\n /** The marker's colour, in Badge's own vocabulary. Defaults to whatever `status` implies, or to `primary` when there is no status. */\n tone?: IndicatorTone;\n /** Which corner of the marked element the marker straddles. */\n placement?: IndicatorPlacement;\n /** What a screen reader announces for the marker. Leave it unset for the derived default — \"Online\", \"3 unread\" — and set it whenever the count is not of unread things. Blank or whitespace falls back to the default rather than clearing it. */\n label?: string;\n /** Render the pill when the count is zero. Off by default, because a count of nothing is not news. */\n showZero?: boolean;\n /** The surface the marked element sits on, so the ring separating the marker from it matches what surrounds them. */\n surface?: IndicatorSurface;\n /**\n * Names for the markers this component derives on its own, as any subset\n * of `IndicatorLabels` — the rest stay as the host's `provideLoomLabels`\n * vocabulary left them, and then as Loom's English.\n *\n * This is the vocabulary, not the instance's name: `label` still beats it\n * and is what one bell counting drafts rather than unread mail reaches for.\n */\n labels?: LabelOverrides<IndicatorLabels>;\n }>(),\n {\n variant: \"dot\",\n count: 0,\n max: 99,\n placement: \"top-right\",\n showZero: false,\n surface: \"background\",\n },\n);\n\n// `text`, not `labels`: the prop of that name is one of the three sources this\n// resolves, and a template reading the raw prop would be reading the overrides\n// rather than the answer.\nconst text = useLabels(\"indicator\", INDICATOR_LABELS, () => props.labels);\n\n// One rendered node, and every fallthrough attribute belongs on it — but\n// `class` still has to go the long way round. A consumer replacing the root's\n// `inline-flex` with `block` cannot win by concatenation, because the winner\n// there is decided by the order of the two rules in the stylesheet rather than\n// by the order of the two names in the attribute; `cn()` is what resolves it.\ndefineOptions({ inheritAttrs: false });\nconst { attrs, rest } = useSplitAttrs();\n\n// Bound to the hidden label so an interactive child can point its\n// `aria-describedby` at it through the slot prop.\nconst labelId = useId();\n\n/**\n * The count as a whole, non-negative number. A negative count is a defect in\n * the caller's data, and a pill reading \"-1 unread\" reports that defect to the\n * reader rather than to the caller — falling back to \"nothing to report\" is\n * the honest rendering of it.\n */\nconst total = computed(() => Math.max(0, Math.trunc(props.count)));\n\nconst visible = computed(() => props.variant === \"dot\" || total.value > 0 || props.showZero);\n\n/** What the pill prints — the real figure up to `max`, then `<max>+`. */\nconst printed = computed(() =>\n total.value > props.max ? `${String(props.max)}+` : String(total.value),\n);\n\nconst tone = computed<IndicatorTone>(\n () => props.tone ?? (props.status ? STATUS_TONES[props.status] : \"primary\"),\n);\n\nconst glyph = computed(() => (props.status ? STATUS_GLYPHS[props.status] : \"\"));\n\n/**\n * The accessible name, and it is never empty by construction. The count case\n * reports `total` rather than `printed`: clamping at `max` is a decision about\n * how wide the pill is allowed to get, and a reader who cannot see the pill\n * has no reason to inherit it — \"132 unread\" is the fact, \"99+\" is the layout.\n */\nconst name = computed(() => {\n const given = props.label?.trim();\n if (given) return given;\n if (props.variant === \"count\") return text.value.count({ count: total.value });\n // Keyed by the status itself rather than through a lookup table of its own:\n // `IndicatorLabels` names its four presence keys after the four members of\n // `IndicatorStatus`, so a state added to the union with no name for it stops\n // compiling here instead of rendering an unnamed dot.\n return props.status ? text.value[props.status] : text.value.attention;\n});\n</script>\n\n<template>\n <span v-bind=\"rest\" :class=\"cn('relative inline-flex align-middle', attrs.class as string)\">\n <!-- A multi-line `@slot` comment comes back from vue-docgen with no description at all, so this one stays on one line. -->\n <!-- @slot The element being marked. `labelId` is the id of the marker's own hidden text — bind it to an interactive child's `aria-describedby` so the count is announced after that control's name. -->\n <slot :label-id=\"labelId\" />\n\n <!-- Keyed on what is printed rather than on the count, so `animate-scale-in`\n replays when a number a reader can see actually changes and stays put\n when 100 becomes 132 behind the same \"99+\". A dot's key never moves, so\n a dot never animates: presence settles into place on load, it does not\n arrive as news, and it must not pulse. -->\n <span\n v-if=\"visible\"\n :key=\"printed\"\n :data-placement=\"placement\"\n :class=\"\n cn(\n indicatorVariants({ variant, placement, surface }),\n indicatorToneVariants({ tone }),\n variant === 'count' && 'animate-scale-in',\n )\n \"\n >\n <!-- Hidden from assistive tech because the label below carries the real\n figure; left visible the pair would read as \"99+ 132 unread\". -->\n <span v-if=\"variant === 'count'\" aria-hidden=\"true\">{{ printed }}</span>\n <span v-else-if=\"glyph\" :class=\"glyph\" />\n\n <span :id=\"labelId\" class=\"sr-only\">{{ name }}</span>\n </span>\n </span>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Indicator.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/indicator/src/Indicator.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { IndicatorLabels } from \"@ecoma-io/loom-labels\";\nimport { cva } from \"class-variance-authority\";\n\n/** A presence dot, or a number. */\nexport type IndicatorVariant = \"dot\" | \"count\";\n\n/** The four presence states a dot can report. */\nexport type IndicatorStatus = \"online\" | \"offline\" | \"busy\" | \"away\";\n\n/** Which corner of the marked element the marker straddles. */\nexport type IndicatorPlacement = \"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\";\n\n/**\n * The colour vocabulary, deliberately Badge's own names rather than a second\n * set — `accent` included, and it means here exactly what it means there:\n * a second semantic category distinct from primary, never decoration.\n */\nexport type IndicatorTone =\n \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"info\" | \"destructive\" | \"accent\";\n\n/** The surface the marked element sits on, which the separating ring matches. */\nexport type IndicatorSurface = \"background\" | \"card\" | \"sunken\" | \"popover\";\n\nexport const indicatorVariants = cva(\n // `pointer-events-none` is load-bearing rather than tidy: the marker\n // overhangs the corner of whatever it marks, so without it the top-right\n // few pixels of a bell button stop being clickable.\n \"pointer-events-none absolute z-10 flex items-center justify-center select-none ring-2\",\n {\n variants: {\n variant: {\n // 12px leaves room for the status glyphs below to read as shapes\n // rather than as noise.\n dot: \"h-3 w-3 rounded-full\",\n // `min-w-5` and the padding together are what make one digit a circle\n // and three a pill, with no branch: \"1\" is narrower than the minimum\n // and lands on it, \"99+\" outgrows it and the radius turns the ends.\n count: \"h-5 min-w-5 rounded-full px-1.5 text-micro font-medium tabular\",\n } satisfies Record<IndicatorVariant, string>,\n placement: {\n \"top-right\": \"top-0 right-0 -translate-y-1/2 translate-x-1/2\",\n \"top-left\": \"top-0 left-0 -translate-y-1/2 -translate-x-1/2\",\n \"bottom-right\": \"right-0 bottom-0 translate-x-1/2 translate-y-1/2\",\n \"bottom-left\": \"bottom-0 left-0 -translate-x-1/2 translate-y-1/2\",\n } satisfies Record<IndicatorPlacement, string>,\n // The ring is what separates the marker from the photo, avatar or icon\n // underneath, the way a presence dot is punched out of a portrait. It\n // has to be the colour of what surrounds the pair, which only the caller\n // knows — hence a prop rather than a guess.\n surface: {\n background: \"ring-background\",\n card: \"ring-card\",\n sunken: \"ring-sunken\",\n popover: \"ring-popover\",\n } satisfies Record<IndicatorSurface, string>,\n },\n defaultVariants: { variant: \"dot\", placement: \"top-right\", surface: \"background\" },\n },\n);\n\n/**\n * The fill, keyed by Badge's colour names so a success dot and a success badge\n * are the same green. These are the solid tokens where Badge uses a 12% wash:\n * a wash reads fine across a chip and carries no signal at all across 12px.\n *\n * The paired `text-*` is what the count prints in and what the status glyph is\n * punched out in, so one entry drives both layers.\n */\nexport const indicatorToneVariants = cva(\"\", {\n variants: {\n tone: {\n neutral: \"bg-muted-foreground text-background\",\n primary: \"bg-primary text-primary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n info: \"bg-info text-info-foreground\",\n destructive: \"bg-destructive text-destructive-foreground\",\n accent: \"bg-accent text-accent-foreground\",\n } satisfies Record<IndicatorTone, string>,\n },\n defaultVariants: { tone: \"primary\" },\n});\n\n/** Which colour each presence state means, so `status` alone is enough. */\nconst STATUS_TONES = {\n online: \"success\",\n offline: \"neutral\",\n busy: \"destructive\",\n away: \"warning\",\n} satisfies Record<IndicatorStatus, IndicatorTone>;\n\n/**\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it, and\n * exported so a host can build a partial vocabulary against the real thing.\n */\nexport const INDICATOR_LABELS: IndicatorLabels = {\n online: \"Online\",\n offline: \"Offline\",\n busy: \"Busy\",\n away: \"Away\",\n count: ({ count }) => `${String(count)} unread`,\n attention: \"Needs attention\",\n};\n\n/**\n * The shape layer, and it exists for the sighted reader the `sr-only` string\n * below cannot help. Three of the four states are saturated — green, amber,\n * red — which is the exact triple a red/green deficiency collapses, so `busy`\n * wears a bar and `away` a hole and no two of them differ by hue alone.\n * `offline` needs none: grey against any of the three is a saturation\n * difference, not a hue one.\n */\nconst STATUS_GLYPHS = {\n online: \"\",\n offline: \"\",\n busy: \"h-0.5 w-1.5 rounded-full bg-current\",\n away: \"h-1 w-1 rounded-full bg-current\",\n} satisfies Record<IndicatorStatus, string>;\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, useId } from \"vue\";\nimport { cn, useSplitAttrs } from \"@ecoma-io/loom-core\";\nimport { useLabels, type LabelOverrides } from \"@ecoma-io/loom-labels\";\n\n/**\n * Indicator — the small marker pinned onto the corner of something else: a\n * presence dot on an avatar, an unread count on a bell, a \"needs attention\"\n * dot on a tab. The default slot is the thing being marked, and the marker\n * positions itself over that child's corner.\n *\n * The boundary with Badge is the whole of the decision between them: **Badge\n * sits in the flow beside content; Indicator is pinned onto content.** A count\n * chip in a table cell is a Badge. The same count floating over a bell icon is\n * an Indicator. Reach for Badge whenever the marker would take up room of its\n * own, and for this whenever it would overhang something.\n *\n * What this component is by default is a bare colour, which is the one thing\n * Loom's accessibility bar forbids outright. A green dot says nothing to a\n * reader who cannot see it. So every marker that renders carries a visually\n * hidden string — `label`, or a default derived from `status` or `count` — and\n * a blank `label` falls back to that default rather than replacing it, which\n * is what makes an unnamed indicator unreachable rather than merely\n * discouraged. The shape layer in `STATUS_GLYPHS` covers the sighted reader\n * the hidden string cannot.\n *\n * There is deliberately **no `aria-live` region here**, and the reason is that\n * this component cannot know whether a change is news. An unread counter is\n * usually fed by a poll, so a live region announces every tick over whatever\n * the reader was doing; the same count is commonly pinned in two places at\n * once, so it announces twice; and a polite region speaks on first render in\n * several screen reader and browser pairs, which turns every page load into a\n * recitation of the inbox. The marker is therefore static text a reader\n * reaches on demand, and announcing a *change* stays with the consumer, who\n * knows whether it followed something the reader just did.\n *\n * One consequence to design around: when the marked child is interactive, its\n * accessible name is computed from the child, and this marker's text sits\n * outside it — a bell button announces \"Notifications, button\" on focus and\n * never mentions the three unread. The default slot exposes `labelId` for\n * exactly that: bind it to the control's `aria-describedby` and the count is\n * announced straight after the name, once, without being duplicated into it.\n */\nconst props = withDefaults(\n defineProps<{\n /** A presence dot, or a number in a pill. */\n variant?: IndicatorVariant;\n /** The number the pill prints, when `variant` is `count`. Zero hides the marker unless `showZero` is set. */\n count?: number;\n /** The highest number printed in full; anything above it prints as `<max>+`. The accessible text still carries the real figure. */\n max?: number;\n /** Presence, for a dot: it picks the colour and the shape, and names the dot for a screen reader. Omit it for a plain \"something changed\" dot. */\n status?: IndicatorStatus;\n /** The marker's colour, in Badge's own vocabulary. Defaults to whatever `status` implies, or to `primary` when there is no status. */\n tone?: IndicatorTone;\n /** Which corner of the marked element the marker straddles. */\n placement?: IndicatorPlacement;\n /** What a screen reader announces for the marker. Leave it unset for the derived default — \"Online\", \"3 unread\" — and set it whenever the count is not of unread things. Blank or whitespace falls back to the default rather than clearing it. */\n label?: string;\n /** Render the pill when the count is zero. Off by default, because a count of nothing is not news. */\n showZero?: boolean;\n /** The surface the marked element sits on, so the ring separating the marker from it matches what surrounds them. */\n surface?: IndicatorSurface;\n /**\n * Names for the markers this component derives on its own, as any subset\n * of `IndicatorLabels` — the rest stay as the host's `provideLoomLabels`\n * vocabulary left them, and then as Loom's English.\n *\n * This is the vocabulary, not the instance's name: `label` still beats it\n * and is what one bell counting drafts rather than unread mail reaches for.\n */\n labels?: LabelOverrides<IndicatorLabels>;\n }>(),\n {\n variant: \"dot\",\n count: 0,\n max: 99,\n placement: \"top-right\",\n showZero: false,\n surface: \"background\",\n },\n);\n\n// `text`, not `labels`: the prop of that name is one of the three sources this\n// resolves, and a template reading the raw prop would be reading the overrides\n// rather than the answer.\nconst text = useLabels(\"indicator\", INDICATOR_LABELS, () => props.labels);\n\n// One rendered node, and every fallthrough attribute belongs on it — but\n// `class` still has to go the long way round. A consumer replacing the root's\n// `inline-flex` with `block` cannot win by concatenation, because the winner\n// there is decided by the order of the two rules in the stylesheet rather than\n// by the order of the two names in the attribute; `cn()` is what resolves it.\ndefineOptions({ inheritAttrs: false });\nconst { attrs, rest } = useSplitAttrs();\n\n// Bound to the hidden label so an interactive child can point its\n// `aria-describedby` at it through the slot prop.\nconst labelId = useId();\n\n/**\n * The count as a whole, non-negative number. A negative count is a defect in\n * the caller's data, and a pill reading \"-1 unread\" reports that defect to the\n * reader rather than to the caller — falling back to \"nothing to report\" is\n * the honest rendering of it.\n */\nconst total = computed(() => Math.max(0, Math.trunc(props.count)));\n\nconst visible = computed(() => props.variant === \"dot\" || total.value > 0 || props.showZero);\n\n/** What the pill prints — the real figure up to `max`, then `<max>+`. */\nconst printed = computed(() =>\n total.value > props.max ? `${String(props.max)}+` : String(total.value),\n);\n\nconst tone = computed<IndicatorTone>(\n () => props.tone ?? (props.status ? STATUS_TONES[props.status] : \"primary\"),\n);\n\nconst glyph = computed(() => (props.status ? STATUS_GLYPHS[props.status] : \"\"));\n\n/**\n * The accessible name, and it is never empty by construction. The count case\n * reports `total` rather than `printed`: clamping at `max` is a decision about\n * how wide the pill is allowed to get, and a reader who cannot see the pill\n * has no reason to inherit it — \"132 unread\" is the fact, \"99+\" is the layout.\n */\nconst name = computed(() => {\n const given = props.label?.trim();\n if (given) return given;\n if (props.variant === \"count\") return text.value.count({ count: total.value });\n // Keyed by the status itself rather than through a lookup table of its own:\n // `IndicatorLabels` names its four presence keys after the four members of\n // `IndicatorStatus`, so a state added to the union with no name for it stops\n // compiling here instead of rendering an unnamed dot.\n return props.status ? text.value[props.status] : text.value.attention;\n});\n</script>\n\n<template>\n <span v-bind=\"rest\" :class=\"cn('relative inline-flex align-middle', attrs.class as string)\">\n <!-- A multi-line `@slot` comment comes back from vue-docgen with no description at all, so this one stays on one line. -->\n <!-- @slot The element being marked. `labelId` is the id of the marker's own hidden text — bind it to an interactive child's `aria-describedby` so the count is announced after that control's name. -->\n <slot :label-id=\"labelId\" />\n\n <!-- Keyed on what is printed rather than on the count, so `animate-scale-in`\n replays when a number a reader can see actually changes and stays put\n when 100 becomes 132 behind the same \"99+\". A dot's key never moves, so\n a dot never animates: presence settles into place on load, it does not\n arrive as news, and it must not pulse. -->\n <span\n v-if=\"visible\"\n :key=\"printed\"\n :data-placement=\"placement\"\n :class=\"\n cn(\n indicatorVariants({ variant, placement, surface }),\n indicatorToneVariants({ tone }),\n variant === 'count' && 'animate-scale-in',\n )\n \"\n >\n <!-- Hidden from assistive tech because the label below carries the real\n figure; left visible the pair would read as \"99+ 132 unread\". -->\n <span v-if=\"variant === 'count'\" aria-hidden=\"true\">{{ printed }}</span>\n <span v-else-if=\"glyph\" :class=\"glyph\" />\n\n <span :id=\"labelId\" class=\"sr-only\">{{ name }}</span>\n </span>\n </span>\n</template>\n"],"mappings":";;;;;;;;;;;;;;AAwBA,IAAa,oBAAoB,IAI/B,yFACA;CACE,UAAU;EACR,SAAS;GAGP,KAAK;GAIL,OAAO;EACT;EACA,WAAW;GACT,aAAa;GACb,YAAY;GACZ,gBAAgB;GAChB,eAAe;EACjB;EAKA,SAAS;GACP,YAAY;GACZ,MAAM;GACN,QAAQ;GACR,SAAS;EACX;CACF;CACA,iBAAiB;EAAE,SAAS;EAAO,WAAW;EAAa,SAAS;CAAa;AACnF,CACF;;;;;;;;;AAUA,IAAa,wBAAwB,IAAI,IAAI;CAC3C,UAAU,EACR,MAAM;EACJ,SAAS;EACT,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;EACN,aAAa;EACb,QAAQ;CACV,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CAAC;;AAGD,IAAM,eAAe;CACnB,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;AACR;;;;;;;AAQA,IAAa,mBAAoC;CAC/C,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;CACN,QAAQ,EAAE,YAAY,GAAG,OAAO,KAAK,EAAE;CACvC,WAAW;AACb;;;;;;;;;AAUA,IAAM,gBAAgB;CACpB,QAAQ;CACR,SAAS;CACT,MAAM;CACN,MAAM;AACR;;;;;;;;;;;;;;;;;;;;EA8CA,MAAM,QAAQ;EA2Cd,MAAM,OAAO,UAAU,aAAa,wBAAwB,MAAM,MAAM;EAQxE,MAAM,EAAE,OAAO,SAAS,cAAc;EAItC,MAAM,UAAU,MAAM;;;;;;;EAQtB,MAAM,QAAQ,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC;EAEjE,MAAM,UAAU,eAAe,MAAM,YAAY,SAAS,MAAM,QAAQ,KAAK,MAAM,QAAQ;;EAG3F,MAAM,UAAU,eACd,MAAM,QAAQ,MAAM,MAAM,GAAG,OAAO,MAAM,GAAG,EAAE,KAAK,OAAO,MAAM,KAAK,CACxE;EAEA,MAAM,OAAO,eACL,MAAM,SAAS,MAAM,SAAS,aAAa,MAAM,UAAU,UACnE;EAEA,MAAM,QAAQ,eAAgB,MAAM,SAAS,cAAc,MAAM,UAAU,EAAG;;;;;;;EAQ9E,MAAM,OAAO,eAAe;GAC1B,MAAM,QAAQ,MAAM,OAAO,KAAK;GAChC,IAAI,OAAO,OAAO;GAClB,IAAI,MAAM,YAAY,SAAS,OAAO,KAAK,MAAM,MAAM,EAAE,OAAO,MAAM,MAAM,CAAC;GAK7E,OAAO,MAAM,SAAS,KAAK,MAAM,MAAM,UAAU,KAAK,MAAM;EAC9D,CAAC;;GAIC,OAAA,UAAA,GAAA,mBA6BO,QA7BP,WAAc,MA6BP,IAAA,GA7BW,EAAG,OAAO,MAAA,EAAA,CAAE,CAAA,qCAAsC,MAAA,KAAA,CAAK,CAAC,KAAK,EAAA,CAAA,GAAA,CAG7E,WAA4B,KAAA,QAAA,WAAA,EAArB,SAAU,MAAA,OAAA,EAAO,CAAA,GAQhB,QAAA,SADR,UAAA,GAAA,mBAkBO,QAAA;IAhBJ,KAAK,QAAA;IACL,kBAAgB,QAAA;IAChB,OAAK,eAAW,MAAA,EAAA,CAAE,CAAY,MAAA,iBAAA,CAAiB,CAAA;KAAA,SAAG,QAAA;KAAO,WAAE,QAAA;KAAS,SAAE,QAAA;IAAO,CAAA,GAAe,MAAA,qBAAA,CAAqB,CAAA,EAAA,MAAG,KAAA,MAAI,CAAA,GAAe,QAAA,YAAO,WAAA,kBAAA,CAAA;GAUnI,GAAA,CAAA,QAAA,YAAO,WAAnB,UAAA,GAAA,mBAAwE,QAAxE,YAAwE,gBAAjB,QAAA,KAAO,GAAA,CAAA,KAC7C,MAAA,SAAjB,UAAA,GAAA,mBAAyC,QAAA;;IAAhB,OAAK,eAAE,MAAA,KAAK;GAErC,GAAA,MAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,GAAA,mBAAqD,QAAA;IAA9C,IAAI,MAAA,OAAA;IAAS,OAAM;GAAa,GAAA,gBAAA,KAAA,KAAI,GAAA,GAAA,UAAA,CAAA,GAAA,IAAA,UAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,EAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineError.js","names":[],"sources":["../../../../packages/primitives/inline-error/src/InlineError.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { TriangleAlert } from \"@lucide/vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\n\n/**\n * InlineError — the one error contract for a field or a section, instead of\n * a paragraph here and a badge there. `role=\"alert\"` on the root means a\n * screen reader announces it the instant it enters the DOM, which is also\n * why a host must mount it with `v-if` rather than hide it with `v-show`:\n * CSS visibility leaves the node in the DOM, so a message change under\n * `v-show` may not re-announce.\n *\n * Persists until the host resolves the cause it names — there is no\n * auto-dismiss timer and no built-in close button. A transient notice that\n * hides itself belongs to a toast, not here.\n */\ndefineProps<{\n /** The error text. A default-slot child overrides this when both are given. */\n message?: string;\n}>();\n</script>\n\n<template>\n <div\n role=\"alert\"\n :class=\"\n cn(\n 'flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive-text',\n 'animate-fade-rise',\n )\n \"\n >\n <TriangleAlert class=\"mt-0.5 h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n <div class=\"min-w-0 flex-1\">\n <slot>{{ message }}</slot>\n </div>\n <div v-if=\"$slots.action\" class=\"shrink-0\"><slot name=\"action\" /></div>\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InlineError.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../packages/primitives/inline-error/src/InlineError.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { TriangleAlert } from \"@lucide/vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\n\n/**\n * InlineError — the one error contract for a field or a section, instead of\n * a paragraph here and a badge there. `role=\"alert\"` on the root means a\n * screen reader announces it the instant it enters the DOM, which is also\n * why a host must mount it with `v-if` rather than hide it with `v-show`:\n * CSS visibility leaves the node in the DOM, so a message change under\n * `v-show` may not re-announce.\n *\n * Persists until the host resolves the cause it names — there is no\n * auto-dismiss timer and no built-in close button. A transient notice that\n * hides itself belongs to a toast, not here.\n */\ndefineProps<{\n /** The error text. A default-slot child overrides this when both are given. */\n message?: string;\n}>();\n</script>\n\n<template>\n <div\n role=\"alert\"\n :class=\"\n cn(\n 'flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive-text',\n 'animate-fade-rise',\n )\n \"\n >\n <TriangleAlert class=\"mt-0.5 h-4 w-4 shrink-0\" aria-hidden=\"true\" />\n <div class=\"min-w-0 flex-1\">\n <slot>{{ message }}</slot>\n </div>\n <div v-if=\"$slots.action\" class=\"shrink-0\"><slot name=\"action\" /></div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;GAuBE,OAAA,UAAA,GAAA,mBAcM,OAAA;IAbJ,MAAK;IACJ,OAAK,eAAS,MAAA,EAAA,CAAE,CAAA,4HAAA,mBAAA,CAAA;;IAOjB,YAAoE,MAAA,aAAA,GAAA;KAArD,OAAM;KAA0B,eAAY;;IAC3D,mBAEM,OAFN,YAEM,CADJ,WAA0B,KAAA,QAAA,WAAA,CAAA,SAAA,CAAjB,gBAAA,gBAAA,QAAA,OAAO,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IAEPA,KAAAA,OAAO,UAAlB,UAAA,GAAA,mBAAuE,OAAvE,YAAuE,CAA5B,WAAsB,KAAA,QAAA,QAAA,CAAA,CAAA,KAAA,mBAAA,IAAA,IAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kbd.js","names":[],"sources":["../../../../packages/primitives/kbd/src/Kbd.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/**\n * Kbd — one key cap. A combination is several of these side by side, joined\n * by a visible separator the host renders (`+` or `-`), with the whole run\n * given an accessible name on its wrapper; Kbd deliberately does not parse\n * shortcut strings, because the line between \"display\" and \"shortcut\n * manager\" is exactly where this primitive should stop.\n */\nexport type KbdSize = \"sm\" | \"md\";\n\nexport const kbdVariants = cva(\n [\n \"inline-flex select-none items-center justify-center rounded-sm\",\n // The cap: a subtle well, a hairline, and a bottom-weighted edge so it\n // reads as something you could press. Tokens only — high-contrast and\n // dark both come from the same pair every surface uses.\n \"border border-border border-b-border-strong bg-subtle text-foreground shadow-sm\",\n \"font-mono tabular whitespace-nowrap\",\n ],\n {\n variants: {\n size: {\n // Display-only, so target-size rules do not bind — the floors exist\n // because inline caps sit inside sentences, and one that shifts the\n // baseline or reads as a speck is worse than a generous box.\n sm: \"min-h-6 min-w-6 px-1.5 text-xs\",\n md: \"min-h-7 min-w-7 px-2 text-small\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** `sm` sits inside prose and table cells; `md` for settings pages. */\n size?: KbdSize;\n }>(),\n { size: \"md\" },\n);\n</script>\n\n<template>\n <kbd :class=\"cn(kbdVariants({ size }))\">\n <!-- @slot The key's face — a letter, a glyph like ⌘, an arrow character. -->\n <slot />\n </kbd>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Kbd.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/kbd/src/Kbd.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/**\n * Kbd — one key cap. A combination is several of these side by side, joined\n * by a visible separator the host renders (`+` or `-`), with the whole run\n * given an accessible name on its wrapper; Kbd deliberately does not parse\n * shortcut strings, because the line between \"display\" and \"shortcut\n * manager\" is exactly where this primitive should stop.\n */\nexport type KbdSize = \"sm\" | \"md\";\n\nexport const kbdVariants = cva(\n [\n \"inline-flex select-none items-center justify-center rounded-sm\",\n // The cap: a subtle well, a hairline, and a bottom-weighted edge so it\n // reads as something you could press. Tokens only — high-contrast and\n // dark both come from the same pair every surface uses.\n \"border border-border border-b-border-strong bg-subtle text-foreground shadow-sm\",\n \"font-mono tabular whitespace-nowrap\",\n ],\n {\n variants: {\n size: {\n // Display-only, so target-size rules do not bind — the floors exist\n // because inline caps sit inside sentences, and one that shifts the\n // baseline or reads as a speck is worse than a generous box.\n sm: \"min-h-6 min-w-6 px-1.5 text-xs\",\n md: \"min-h-7 min-w-7 px-2 text-small\",\n },\n },\n defaultVariants: { size: \"md\" },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** `sm` sits inside prose and table cells; `md` for settings pages. */\n size?: KbdSize;\n }>(),\n { size: \"md\" },\n);\n</script>\n\n<template>\n <kbd :class=\"cn(kbdVariants({ size }))\">\n <!-- @slot The key's face — a letter, a glyph like ⌘, an arrow character. -->\n <slot />\n </kbd>\n</template>\n"],"mappings":";;;;;AAYA,IAAa,cAAc,IACzB;CACE;CAIA;CACA;AACF,GACA;CACE,UAAU,EACR,MAAM;EAIJ,IAAI;EACJ,IAAI;CACN,EACF;CACA,iBAAiB,EAAE,MAAM,KAAK;AAChC,CACF;;;;;;GAgBE,OAAA,UAAA,GAAA,mBAGM,OAAA,EAHA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAA,WAAA,CAAW,CAAA,EAAA,MAAG,QAAA,KAAI,CAAA,CAAA,CAAA,EAAA,GAAA,CAEhC,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","names":[],"sources":["../../../../packages/primitives/link/src/Link.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/** The visual emphasis assigned to a link. */\nexport type LinkVariant = \"default\" | \"muted\" | \"accent\" | \"subtle\";\n\nexport const linkVariants = cva(\n \"inline-flex items-center gap-1 transition-colors duration-fast ease-out focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo\",\n {\n variants: {\n variant: {\n default: \"text-primary-text underline underline-offset-4 hover:text-primary-text/80\",\n // Underlined like its siblings. WCAG 1.4.1 asks for a non-colour\n // carrier and the underline is the one links have; `muted` used to be\n // the variant that dropped it while keeping a hover colour change,\n // which identified the link by hue alone.\n muted: \"text-muted-foreground underline underline-offset-4 hover:text-foreground\",\n accent: \"text-accent-text underline underline-offset-4 hover:text-accent-text/80\",\n subtle:\n \"text-foreground/80 hover:text-foreground underline underline-offset-4 decoration-border hover:decoration-foreground/50\",\n } satisfies Record<LinkVariant, string>,\n underline: {\n true: \"\",\n false: \"no-underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: true,\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Controls the link's visual emphasis. */\n variant?: LinkVariant;\n /** Draws an underline beneath the link label. */\n underline?: boolean;\n /** The destination the link navigates to. */\n href: string;\n /** Opens the destination in a new tab and marks it as an external link. */\n external?: boolean;\n /** Replaces the anchor with an unavailable, non-interactive span. */\n disabled?: boolean;\n }>(),\n {\n variant: \"default\",\n underline: true,\n external: false,\n disabled: false,\n },\n);\n</script>\n\n<template>\n <span\n v-if=\"disabled\"\n :class=\"\n cn(\n linkVariants({ variant, underline }),\n // Drained, not dimmed — the same rule Button and Chip follow. The dim\n // faded whatever hue the variant wore, taking the label's contrast\n // down with it; a link has no fill to drain, so it takes the neutral\n // well the transparent controls take, and `aria-disabled` carries the\n // state rather than colour alone.\n 'cursor-default bg-muted text-muted-foreground pointer-events-none',\n $attrs.class,\n )\n \"\n aria-disabled=\"true\"\n >\n <slot />\n </span>\n <a\n v-else\n :href=\"href\"\n :class=\"cn(linkVariants({ variant, underline }), $attrs.class)\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noopener noreferrer' : undefined\"\n >\n <slot />\n <svg\n v-if=\"external\"\n class=\"h-3.5 w-3.5 shrink-0\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M7 17 17 7\" />\n <path d=\"M7 7h10v10\" />\n </svg>\n </a>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../../packages/primitives/link/src/Link.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/** The visual emphasis assigned to a link. */\nexport type LinkVariant = \"default\" | \"muted\" | \"accent\" | \"subtle\";\n\nexport const linkVariants = cva(\n \"inline-flex items-center gap-1 transition-colors duration-fast ease-out focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo\",\n {\n variants: {\n variant: {\n default: \"text-primary-text underline underline-offset-4 hover:text-primary-text/80\",\n // Underlined like its siblings. WCAG 1.4.1 asks for a non-colour\n // carrier and the underline is the one links have; `muted` used to be\n // the variant that dropped it while keeping a hover colour change,\n // which identified the link by hue alone.\n muted: \"text-muted-foreground underline underline-offset-4 hover:text-foreground\",\n accent: \"text-accent-text underline underline-offset-4 hover:text-accent-text/80\",\n subtle:\n \"text-foreground/80 hover:text-foreground underline underline-offset-4 decoration-border hover:decoration-foreground/50\",\n } satisfies Record<LinkVariant, string>,\n underline: {\n true: \"\",\n false: \"no-underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n underline: true,\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Controls the link's visual emphasis. */\n variant?: LinkVariant;\n /** Draws an underline beneath the link label. */\n underline?: boolean;\n /** The destination the link navigates to. */\n href: string;\n /** Opens the destination in a new tab and marks it as an external link. */\n external?: boolean;\n /** Replaces the anchor with an unavailable, non-interactive span. */\n disabled?: boolean;\n }>(),\n {\n variant: \"default\",\n underline: true,\n external: false,\n disabled: false,\n },\n);\n</script>\n\n<template>\n <span\n v-if=\"disabled\"\n :class=\"\n cn(\n linkVariants({ variant, underline }),\n // Drained, not dimmed — the same rule Button and Chip follow. The dim\n // faded whatever hue the variant wore, taking the label's contrast\n // down with it; a link has no fill to drain, so it takes the neutral\n // well the transparent controls take, and `aria-disabled` carries the\n // state rather than colour alone.\n 'cursor-default bg-muted text-muted-foreground pointer-events-none',\n $attrs.class,\n )\n \"\n aria-disabled=\"true\"\n >\n <slot />\n </span>\n <a\n v-else\n :href=\"href\"\n :class=\"cn(linkVariants({ variant, underline }), $attrs.class)\"\n :target=\"external ? '_blank' : undefined\"\n :rel=\"external ? 'noopener noreferrer' : undefined\"\n >\n <slot />\n <svg\n v-if=\"external\"\n class=\"h-3.5 w-3.5 shrink-0\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M7 17 17 7\" />\n <path d=\"M7 7h10v10\" />\n </svg>\n </a>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAa,eAAe,IAC1B,uLACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GAKT,OAAO;GACP,QAAQ;GACR,QACE;EACJ;EACA,WAAW;GACT,MAAM;GACN,OAAO;EACT;CACF;CACA,iBAAiB;EACf,SAAS;EACT,WAAW;CACb;AACF,CACF;;;;;;;;;;;;;;;;;;;;;GA8BU,OAAA,QAAA,YADR,UAAA,GAAA,mBAiBO,QAAA;;IAfJ,OAAK,eAAS,MAAA,EAAA,CAAE,CAAU,MAAA,YAAA,CAAY,CAAA;KAAA,SAAG,QAAA;KAAO,WAAE,QAAA;IAAS,CAAA,GAAA,qEAA6bA,KAAAA,OAAO,KAAA,CAAA;IAYhgB,iBAAc;GAEd,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,MAEV,UAAA,GAAA,mBAyBI,KAAA;;IAvBD,MAAM,QAAA;IACN,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,MAAA,YAAA,CAAY,CAAA;KAAA,SAAG,QAAA;KAAO,WAAE,QAAA;IAAS,CAAA,GAAKA,KAAAA,OAAO,KAAK,CAAA;IAC5D,QAAQ,QAAA,WAAQ,WAAc,KAAA;IAC9B,KAAK,QAAA,WAAQ,wBAA2B,KAAA;GAEzC,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,GAEA,QAAA,YADR,UAAA,GAAA,mBAgBM,OAhBN,YAgBM,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAFJ,mBAAuB,QAAA,EAAjB,GAAE,aAAY,GAAA,MAAA,EAAA,GACpB,mBAAuB,QAAA,EAAjB,GAAE,aAAY,GAAA,MAAA,EAAA,CAAA,EAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.js","names":[],"sources":["../../../../packages/primitives/list/src/List.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * List — a generic composition of rows: leading content, a title and\n * description, trailing metadata or actions. It is the *presentational*\n * vocabulary for row-shaped content, not a navigation primitive — SidebarNav\n * owns wayfinding, Menu owns commands, Table owns columns. This owns \"a\n * titled thing per line\" wherever that appears: settings groups, pickers,\n * summaries under a page's chrome.\n */\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Names the list for assistive technology when surrounding prose does not already say it. */\n label?: string;\n /** Hairline dividers between rows. Off for card-stacked lists. */\n divided?: boolean;\n }>(),\n { divided: true },\n);\nvoid cn;\n</script>\n\n<template>\n <ul :aria-label=\"label\" :class=\"cn('m-0 list-none p-0', divided && 'divide-y divide-border')\">\n <!-- @slot The rows: one `ListItem` per line. -->\n <slot />\n </ul>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/list/src/List.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * List — a generic composition of rows: leading content, a title and\n * description, trailing metadata or actions. It is the *presentational*\n * vocabulary for row-shaped content, not a navigation primitive — SidebarNav\n * owns wayfinding, Menu owns commands, Table owns columns. This owns \"a\n * titled thing per line\" wherever that appears: settings groups, pickers,\n * summaries under a page's chrome.\n */\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Names the list for assistive technology when surrounding prose does not already say it. */\n label?: string;\n /** Hairline dividers between rows. Off for card-stacked lists. */\n divided?: boolean;\n }>(),\n { divided: true },\n);\nvoid cn;\n</script>\n\n<template>\n <ul :aria-label=\"label\" :class=\"cn('m-0 list-none p-0', divided && 'divide-y divide-border')\">\n <!-- @slot The rows: one `ListItem` per line. -->\n <slot />\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;GAwBE,OAAA,UAAA,GAAA,mBAGK,MAAA;IAHA,cAAY,QAAA;IAAQ,OAAK,eAAE,MAAA,EAAA,CAAE,CAAA,qBAAsB,QAAA,WAAO,wBAAA,CAAA;GAE7D,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.js","names":[],"sources":["../../../../packages/primitives/list/src/ListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/**\n * Interactive comes in exactly two shapes, the same honesty Card documents:\n * `href` makes the whole row one real anchor (nothing interactive inside),\n * `interactive` paints hover/press while the host owns role/handler. Plain\n * rows are just rows.\n */\nexport type ListItemShape = \"static\" | \"link\" | \"interactive\";\n\nexport const listItemVariants = cva(\n \"flex w-full items-center gap-3 rounded-md px-3 py-2.5 text-left transition-colors duration-fast ease-out\",\n {\n variants: {\n shape: {\n static: \"\",\n // The shared clickable-row language: lift by fill, never by shadow.\n // The soft press weight, not `scale-press` — a full-width row moving\n // the full 3% reads as the page jolting rather than the row answering.\n link: \"cursor-pointer outline-none hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo [transition:transform_var(--duration-fast)_var(--ease-spring),background-color_var(--duration-fast)_var(--ease-out)] active:scale-press-soft\",\n interactive:\n \"cursor-pointer hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo active:bg-subtle\",\n },\n dense: { true: \"px-2 py-1.5\", false: \"\" },\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { Check } from \"@lucide/vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\n\nconst props = withDefaults(\n defineProps<{\n /** The row's heading; omit when the default slot carries custom composition. */\n title?: string;\n /** Supporting line beneath the title. */\n description?: string;\n /** Trailing metadata — a count, a timestamp. Reads in tabular digits. */\n meta?: string;\n /** Makes the whole row one link. Nothing interactive may sit inside. */\n href?: string;\n /**\n * Hover/press language for a clickable row whose behaviour belongs to\n * the host; attach the handler yourself.\n */\n interactive?: boolean;\n /** Marks this row as the current choice among its peers (`aria-current`). */\n selected?: boolean;\n /** Unavailable rather than hidden: drained, inert, still announced. */\n disabled?: boolean;\n /** Tighter rhythm inside dense chrome. */\n dense?: boolean;\n }>(),\n {\n interactive: false,\n selected: false,\n disabled: false,\n dense: false,\n },\n);\n\ndefineEmits<{ activate: [] }>();\n\n// One of three shapes decides the element; a disabled row is an inert button\n// rather than a missing one, so it stays announced.\nconst shape = computed<\"link\" | \"interactive\" | \"static\">(() =>\n props.href ? \"link\" : props.interactive ? \"interactive\" : \"static\",\n);\n</script>\n\n<template>\n <li>\n <component\n :is=\"href ? 'a' : interactive ? 'button' : 'div'\"\n :href=\"disabled ? undefined : href\"\n :type=\"interactive && !href ? 'button' : undefined\"\n :disabled=\"interactive && !href ? disabled : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :aria-current=\"selected || undefined\"\n :class=\"\n cn(\n listItemVariants({ shape, dense }),\n selected && !disabled && 'bg-primary-muted/40 aria-current:bg-primary-muted/40',\n disabled && 'cursor-not-allowed bg-transparent',\n )\n \"\n @click=\"interactive && !disabled && $emit('activate')\"\n >\n <!-- @slot Before the title: an icon, an Avatar. -->\n <slot name=\"leading\" />\n\n <span class=\"min-w-0 flex-1\">\n <span v-if=\"title\" class=\"block truncate text-sm font-medium\">{{ title }}</span>\n <span v-if=\"description\" class=\"mt-0.5 block text-small text-muted-foreground\">{{\n description\n }}</span>\n <!-- @slot Custom body; replaces title/description entirely. -->\n <slot />\n </span>\n\n <!-- Selection is stated twice: aria-current for technology, a glyph\n for eyes — colour alone is not a state. -->\n <Check v-if=\"selected\" class=\"h-4 w-4 shrink-0 text-primary-text\" aria-hidden=\"true\" />\n\n <!-- @slot After everything: actions, a Badge, a RowActions cluster. -->\n <slot name=\"trailing\">\n <span v-if=\"meta\" class=\"shrink-0 text-small tabular text-muted-foreground\">{{\n meta\n }}</span>\n </slot>\n </component>\n </li>\n</template>\n"],"mappings":""}
@@ -0,0 +1,101 @@
1
+ import { cn } from "../../../core/src/cn.js";
2
+ import "../../../core/src/index.js";
3
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, renderSlot, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
4
+ import { Check } from "@lucide/vue";
5
+ import { cva } from "class-variance-authority";
6
+ //#region packages/primitives/list/src/ListItem.vue?vue&type=script&setup=true&lang.ts
7
+ var _hoisted_1 = { class: "min-w-0 flex-1" };
8
+ var _hoisted_2 = {
9
+ key: 0,
10
+ class: "block truncate text-sm font-medium"
11
+ };
12
+ var _hoisted_3 = {
13
+ key: 1,
14
+ class: "mt-0.5 block text-small text-muted-foreground"
15
+ };
16
+ var _hoisted_4 = {
17
+ key: 0,
18
+ class: "shrink-0 text-small tabular text-muted-foreground"
19
+ };
20
+ var listItemVariants = cva("flex w-full items-center gap-3 rounded-md px-3 py-2.5 text-left transition-colors duration-fast ease-out", { variants: {
21
+ shape: {
22
+ static: "",
23
+ link: "cursor-pointer outline-none hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo [transition:transform_var(--duration-fast)_var(--ease-spring),background-color_var(--duration-fast)_var(--ease-out)] active:scale-press-soft",
24
+ interactive: "cursor-pointer hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo active:bg-subtle"
25
+ },
26
+ dense: {
27
+ true: "px-2 py-1.5",
28
+ false: ""
29
+ }
30
+ } });
31
+ var ListItem_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
32
+ __name: "ListItem",
33
+ props: {
34
+ title: {},
35
+ description: {},
36
+ meta: {},
37
+ href: {},
38
+ interactive: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ selected: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ disabled: {
47
+ type: Boolean,
48
+ default: false
49
+ },
50
+ dense: {
51
+ type: Boolean,
52
+ default: false
53
+ }
54
+ },
55
+ emits: ["activate"],
56
+ setup(__props) {
57
+ const props = __props;
58
+ const shape = computed(() => props.href ? "link" : props.interactive ? "interactive" : "static");
59
+ return (_ctx, _cache) => {
60
+ return openBlock(), createElementBlock("li", null, [(openBlock(), createBlock(resolveDynamicComponent(__props.href ? "a" : __props.interactive ? "button" : "div"), {
61
+ href: __props.disabled ? void 0 : __props.href,
62
+ type: __props.interactive && !__props.href ? "button" : void 0,
63
+ disabled: __props.interactive && !__props.href ? __props.disabled : void 0,
64
+ "aria-disabled": __props.disabled || void 0,
65
+ "aria-current": __props.selected || void 0,
66
+ class: normalizeClass(unref(cn)(unref(listItemVariants)({
67
+ shape: shape.value,
68
+ dense: __props.dense
69
+ }), __props.selected && !__props.disabled && "bg-primary-muted/40 aria-current:bg-primary-muted/40", __props.disabled && "cursor-not-allowed bg-transparent")),
70
+ onClick: _cache[0] || (_cache[0] = ($event) => __props.interactive && !__props.disabled && _ctx.$emit("activate"))
71
+ }, {
72
+ default: withCtx(() => [
73
+ renderSlot(_ctx.$slots, "leading"),
74
+ createElementVNode("span", _hoisted_1, [
75
+ __props.title ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
76
+ __props.description ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
77
+ renderSlot(_ctx.$slots, "default")
78
+ ]),
79
+ __props.selected ? (openBlock(), createBlock(unref(Check), {
80
+ key: 0,
81
+ class: "h-4 w-4 shrink-0 text-primary-text",
82
+ "aria-hidden": "true"
83
+ })) : createCommentVNode("", true),
84
+ renderSlot(_ctx.$slots, "trailing", {}, () => [__props.meta ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(__props.meta), 1)) : createCommentVNode("", true)])
85
+ ]),
86
+ _: 3
87
+ }, 8, [
88
+ "href",
89
+ "type",
90
+ "disabled",
91
+ "aria-disabled",
92
+ "aria-current",
93
+ "class"
94
+ ]))]);
95
+ };
96
+ }
97
+ });
98
+ //#endregion
99
+ export { ListItem_vue_vue_type_script_setup_true_lang_default as default, listItemVariants };
100
+
101
+ //# sourceMappingURL=ListItem.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../../packages/primitives/list/src/ListItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { cva } from \"class-variance-authority\";\n\n/**\n * Interactive comes in exactly two shapes, the same honesty Card documents:\n * `href` makes the whole row one real anchor (nothing interactive inside),\n * `interactive` paints hover/press while the host owns role/handler. Plain\n * rows are just rows.\n */\nexport type ListItemShape = \"static\" | \"link\" | \"interactive\";\n\nexport const listItemVariants = cva(\n \"flex w-full items-center gap-3 rounded-md px-3 py-2.5 text-left transition-colors duration-fast ease-out\",\n {\n variants: {\n shape: {\n static: \"\",\n // The shared clickable-row language: lift by fill, never by shadow.\n // The soft press weight, not `scale-press` — a full-width row moving\n // the full 3% reads as the page jolting rather than the row answering.\n link: \"cursor-pointer outline-none hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo [transition:transform_var(--duration-fast)_var(--ease-spring),background-color_var(--duration-fast)_var(--ease-out)] active:scale-press-soft\",\n interactive:\n \"cursor-pointer hover:bg-subtle/60 focus-visible:bg-subtle/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring focus-visible:shadow-halo active:bg-subtle\",\n },\n dense: { true: \"px-2 py-1.5\", false: \"\" },\n },\n },\n);\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { Check } from \"@lucide/vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\n\nconst props = withDefaults(\n defineProps<{\n /** The row's heading; omit when the default slot carries custom composition. */\n title?: string;\n /** Supporting line beneath the title. */\n description?: string;\n /** Trailing metadata — a count, a timestamp. Reads in tabular digits. */\n meta?: string;\n /** Makes the whole row one link. Nothing interactive may sit inside. */\n href?: string;\n /**\n * Hover/press language for a clickable row whose behaviour belongs to\n * the host; attach the handler yourself.\n */\n interactive?: boolean;\n /** Marks this row as the current choice among its peers (`aria-current`). */\n selected?: boolean;\n /** Unavailable rather than hidden: drained, inert, still announced. */\n disabled?: boolean;\n /** Tighter rhythm inside dense chrome. */\n dense?: boolean;\n }>(),\n {\n interactive: false,\n selected: false,\n disabled: false,\n dense: false,\n },\n);\n\ndefineEmits<{ activate: [] }>();\n\n// One of three shapes decides the element; a disabled row is an inert button\n// rather than a missing one, so it stays announced.\nconst shape = computed<\"link\" | \"interactive\" | \"static\">(() =>\n props.href ? \"link\" : props.interactive ? \"interactive\" : \"static\",\n);\n</script>\n\n<template>\n <li>\n <component\n :is=\"href ? 'a' : interactive ? 'button' : 'div'\"\n :href=\"disabled ? undefined : href\"\n :type=\"interactive && !href ? 'button' : undefined\"\n :disabled=\"interactive && !href ? disabled : undefined\"\n :aria-disabled=\"disabled || undefined\"\n :aria-current=\"selected || undefined\"\n :class=\"\n cn(\n listItemVariants({ shape, dense }),\n selected && !disabled && 'bg-primary-muted/40 aria-current:bg-primary-muted/40',\n disabled && 'cursor-not-allowed bg-transparent',\n )\n \"\n @click=\"interactive && !disabled && $emit('activate')\"\n >\n <!-- @slot Before the title: an icon, an Avatar. -->\n <slot name=\"leading\" />\n\n <span class=\"min-w-0 flex-1\">\n <span v-if=\"title\" class=\"block truncate text-sm font-medium\">{{ title }}</span>\n <span v-if=\"description\" class=\"mt-0.5 block text-small text-muted-foreground\">{{\n description\n }}</span>\n <!-- @slot Custom body; replaces title/description entirely. -->\n <slot />\n </span>\n\n <!-- Selection is stated twice: aria-current for technology, a glyph\n for eyes — colour alone is not a state. -->\n <Check v-if=\"selected\" class=\"h-4 w-4 shrink-0 text-primary-text\" aria-hidden=\"true\" />\n\n <!-- @slot After everything: actions, a Badge, a RowActions cluster. -->\n <slot name=\"trailing\">\n <span v-if=\"meta\" class=\"shrink-0 text-small tabular text-muted-foreground\">{{\n meta\n }}</span>\n </slot>\n </component>\n </li>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,IAAa,mBAAmB,IAC9B,4GACA,EACE,UAAU;CACR,OAAO;EACL,QAAQ;EAIR,MAAM;EACN,aACE;CACJ;CACA,OAAO;EAAE,MAAM;EAAe,OAAO;CAAG;AAC1C,EACF,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,MAAM,QAAQ;EAkCd,MAAM,QAAQ,eACZ,MAAM,OAAO,SAAS,MAAM,cAAc,gBAAgB,QAC5D;;GAIE,OAAA,UAAA,GAAA,mBAwCK,MAAA,MAAA,EAvCH,UAAA,GAAA,YAsCY,wBArCL,QAAA,OAAI,MAAS,QAAA,cAAW,WAAA,KAAA,GAAA;IAC5B,MAAM,QAAA,WAAW,KAAA,IAAY,QAAA;IAC7B,MAAM,QAAA,eAAW,CAAK,QAAA,OAAI,WAAc,KAAA;IACxC,UAAU,QAAA,eAAW,CAAK,QAAA,OAAO,QAAA,WAAW,KAAA;IAC5C,iBAAe,QAAA,YAAY,KAAA;IAC3B,gBAAc,QAAA,YAAY,KAAA;IAC1B,OAAK,eAAW,MAAA,EAAA,CAAE,CAAY,MAAA,gBAAA,CAAgB,CAAA;KAAA,OAAG,MAAA;KAAK,OAAE,QAAA;IAAK,CAAA,GAAe,QAAA,YAAQ,CAAK,QAAA,YAAQ,wDAAsE,QAAA,YAAQ,mCAAA,CAAA;IAO/K,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,QAAA,eAAW,CAAK,QAAA,YAAYA,KAAAA,MAAK,UAAA;;IAGzC,SAAA,cAAuB;KAAvB,WAAuB,KAAA,QAAA,SAAA;KAEvB,mBAOO,QAPP,YAOO;MANO,QAAA,SAAZ,UAAA,GAAA,mBAAgF,QAAhF,YAAgF,gBAAf,QAAA,KAAK,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;MAC1D,QAAA,eAAZ,UAAA,GAAA,mBAES,QAFT,YAES,gBADP,QAAA,WAAW,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;MAGb,WAAQ,KAAA,QAAA,SAAA;;KAKG,QAAA,YAAb,UAAA,GAAA,YAAuF,MAAA,KAAA,GAAA;;MAAhE,OAAM;MAAqC,eAAY;;KAG9E,WAIO,KAAA,QAAA,YAAA,CAAA,SAAA,CAHO,QAAA,QAAZ,UAAA,GAAA,mBAES,QAFT,YAES,gBADP,QAAA,IAAI,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA,CAAA,CAAA"}
@@ -0,0 +1,7 @@
1
+ import LiveRegion_vue_vue_type_script_setup_true_lang_default from "./LiveRegion.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/live-region/src/LiveRegion.vue
3
+ var LiveRegion_default = LiveRegion_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { LiveRegion_default as default };
6
+
7
+ //# sourceMappingURL=LiveRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveRegion.js","names":[],"sources":["../../../../packages/primitives/live-region/src/LiveRegion.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * LiveRegion — a permanently mounted, visually hidden `aria-live` region and\n * the seam (`useAnnounce()`) that writes into it. Screen readers announce a\n * live region only when its content *changes* after the region exists, so\n * the region renders empty and stays mounted for its whole lifetime: a\n * region added in the same tick as its message is announced unreliably, and\n * a region toggled into existence per message misses its first announcement.\n *\n * The hiding is the clip technique, delegated to VisuallyHidden — never\n * `display: none`, which removes the region from the accessibility tree\n * entirely. No `role=\"status\"`/`role=\"alert\"` is layered on top: the\n * politeness prop *is* the semantics, mapped straight onto `aria-live`, and\n * duplicating it in a role would only let the two disagree. The component\n * owns no strings, so there is nothing to localise and no labels prop.\n */\nexport type { LiveRegionContext, LiveRegionPoliteness } from \"./context\";\n</script>\n\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, provide, ref, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport VisuallyHidden from \"@ecoma-io/loom-visually-hidden\";\nimport { LIVE_REGION_KEY, announce, mountingStandalone, registerWriter } from \"./context\";\nimport type { LiveRegionPoliteness } from \"./context\";\n\nconst props = defineProps({\n /** How urgent announcements through this region are — mapped to `aria-live` verbatim. */\n politeness: {\n type: String as PropType<LiveRegionPoliteness>,\n default: \"polite\",\n },\n});\n\nconst node = ref<HTMLElement | null>(null);\n\nlet unregister: (() => void) | null = null;\n\nfunction bind(politeness: LiveRegionPoliteness): () => void {\n const el = node.value;\n if (!el) return () => {};\n return registerWriter(\n politeness,\n (message) => {\n // Clear first: assistive tech compares region content, and rewriting\n // identical text in place announces nothing. Re-adding across the next\n // frame makes the repeat a real content addition, which\n // `aria-relevant=\"additions text\"` then reads.\n el.textContent = \"\";\n requestAnimationFrame(() => {\n el.textContent = message;\n });\n },\n mountingStandalone,\n );\n}\n\nonMounted(() => {\n unregister = bind(props.politeness);\n});\n\nwatch(\n () => props.politeness,\n (politeness) => {\n if (!unregister) return;\n unregister();\n unregister = bind(politeness);\n },\n);\n\nonBeforeUnmount(() => {\n unregister?.();\n unregister = null;\n});\n\n// Every region provides the seam for the subtree under it, so a component\n// sitting beside a region reaches `useAnnounce()` through the tree; with no\n// region mounted anywhere, `useAnnounce()` falls back to the standalone pair.\nprovide(LIVE_REGION_KEY, { announce });\n</script>\n\n<template>\n <VisuallyHidden as=\"div\">\n <div ref=\"node\" :aria-live=\"politeness\" aria-relevant=\"additions text\" aria-atomic=\"true\" />\n </VisuallyHidden>\n</template>\n"],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import VisuallyHidden_default from "../../visually-hidden/src/VisuallyHidden.js";
2
+ import "../../visually-hidden/src/index.js";
3
+ import { LIVE_REGION_KEY, announce, mountingStandalone, registerWriter } from "./context.js";
4
+ import { createBlock, createElementVNode, defineComponent, onBeforeUnmount, onMounted, openBlock, provide, ref, unref, watch, withCtx } from "vue";
5
+ //#region packages/primitives/live-region/src/LiveRegion.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = ["aria-live"];
7
+ var LiveRegion_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
8
+ __name: "LiveRegion",
9
+ props: {
10
+ /** How urgent announcements through this region are — mapped to `aria-live` verbatim. */
11
+ politeness: {
12
+ type: String,
13
+ default: "polite"
14
+ } },
15
+ setup(__props) {
16
+ const props = __props;
17
+ const node = ref(null);
18
+ let unregister = null;
19
+ function bind(politeness) {
20
+ const el = node.value;
21
+ if (!el) return () => {};
22
+ return registerWriter(politeness, (message) => {
23
+ el.textContent = "";
24
+ requestAnimationFrame(() => {
25
+ el.textContent = message;
26
+ });
27
+ }, mountingStandalone);
28
+ }
29
+ onMounted(() => {
30
+ unregister = bind(props.politeness);
31
+ });
32
+ watch(() => props.politeness, (politeness) => {
33
+ if (!unregister) return;
34
+ unregister();
35
+ unregister = bind(politeness);
36
+ });
37
+ onBeforeUnmount(() => {
38
+ unregister?.();
39
+ unregister = null;
40
+ });
41
+ provide(LIVE_REGION_KEY, { announce });
42
+ return (_ctx, _cache) => {
43
+ return openBlock(), createBlock(unref(VisuallyHidden_default), { as: "div" }, {
44
+ default: withCtx(() => [createElementVNode("div", {
45
+ ref_key: "node",
46
+ ref: node,
47
+ "aria-live": __props.politeness,
48
+ "aria-relevant": "additions text",
49
+ "aria-atomic": "true"
50
+ }, null, 8, _hoisted_1)]),
51
+ _: 1
52
+ });
53
+ };
54
+ }
55
+ });
56
+ //#endregion
57
+ export { LiveRegion_vue_vue_type_script_setup_true_lang_default as default };
58
+
59
+ //# sourceMappingURL=LiveRegion.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveRegion.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/primitives/live-region/src/LiveRegion.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * LiveRegion — a permanently mounted, visually hidden `aria-live` region and\n * the seam (`useAnnounce()`) that writes into it. Screen readers announce a\n * live region only when its content *changes* after the region exists, so\n * the region renders empty and stays mounted for its whole lifetime: a\n * region added in the same tick as its message is announced unreliably, and\n * a region toggled into existence per message misses its first announcement.\n *\n * The hiding is the clip technique, delegated to VisuallyHidden — never\n * `display: none`, which removes the region from the accessibility tree\n * entirely. No `role=\"status\"`/`role=\"alert\"` is layered on top: the\n * politeness prop *is* the semantics, mapped straight onto `aria-live`, and\n * duplicating it in a role would only let the two disagree. The component\n * owns no strings, so there is nothing to localise and no labels prop.\n */\nexport type { LiveRegionContext, LiveRegionPoliteness } from \"./context\";\n</script>\n\n<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, provide, ref, watch } from \"vue\";\nimport type { PropType } from \"vue\";\nimport VisuallyHidden from \"@ecoma-io/loom-visually-hidden\";\nimport { LIVE_REGION_KEY, announce, mountingStandalone, registerWriter } from \"./context\";\nimport type { LiveRegionPoliteness } from \"./context\";\n\nconst props = defineProps({\n /** How urgent announcements through this region are — mapped to `aria-live` verbatim. */\n politeness: {\n type: String as PropType<LiveRegionPoliteness>,\n default: \"polite\",\n },\n});\n\nconst node = ref<HTMLElement | null>(null);\n\nlet unregister: (() => void) | null = null;\n\nfunction bind(politeness: LiveRegionPoliteness): () => void {\n const el = node.value;\n if (!el) return () => {};\n return registerWriter(\n politeness,\n (message) => {\n // Clear first: assistive tech compares region content, and rewriting\n // identical text in place announces nothing. Re-adding across the next\n // frame makes the repeat a real content addition, which\n // `aria-relevant=\"additions text\"` then reads.\n el.textContent = \"\";\n requestAnimationFrame(() => {\n el.textContent = message;\n });\n },\n mountingStandalone,\n );\n}\n\nonMounted(() => {\n unregister = bind(props.politeness);\n});\n\nwatch(\n () => props.politeness,\n (politeness) => {\n if (!unregister) return;\n unregister();\n unregister = bind(politeness);\n },\n);\n\nonBeforeUnmount(() => {\n unregister?.();\n unregister = null;\n});\n\n// Every region provides the seam for the subtree under it, so a component\n// sitting beside a region reaches `useAnnounce()` through the tree; with no\n// region mounted anywhere, `useAnnounce()` falls back to the standalone pair.\nprovide(LIVE_REGION_KEY, { announce });\n</script>\n\n<template>\n <VisuallyHidden as=\"div\">\n <div ref=\"node\" :aria-live=\"politeness\" aria-relevant=\"additions text\" aria-atomic=\"true\" />\n </VisuallyHidden>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EA0BA,MAAM,QAAQ;EAQd,MAAM,OAAO,IAAwB,IAAI;EAEzC,IAAI,aAAkC;EAEtC,SAAS,KAAK,YAA8C;GAC1D,MAAM,KAAK,KAAK;GAChB,IAAI,CAAC,IAAI,aAAa,CAAC;GACvB,OAAO,eACL,aACC,YAAY;IAKX,GAAG,cAAc;IACjB,4BAA4B;KAC1B,GAAG,cAAc;IACnB,CAAC;GACH,GACA,kBACF;EACF;EAEA,gBAAgB;GACd,aAAa,KAAK,MAAM,UAAU;EACpC,CAAC;EAED,YACQ,MAAM,aACX,eAAe;GACd,IAAI,CAAC,YAAY;GACjB,WAAW;GACX,aAAa,KAAK,UAAU;EAC9B,CACF;EAEA,sBAAsB;GACpB,aAAa;GACb,aAAa;EACf,CAAC;EAKD,QAAQ,iBAAiB,EAAE,SAAS,CAAC;;GAInC,OAAA,UAAA,GAAA,YAEiB,MAAA,sBAAA,GAAA,EAFD,IAAG,MAAK,GAAA;IACtB,SAAA,cAA4F,CAA5F,mBAA4F,OAAA;KAAnF,SAAA;KAAJ,KAAI;KAAQ,aAAW,QAAA;KAAY,iBAAc;KAAiB,eAAY"}
@@ -0,0 +1,85 @@
1
+ import LiveRegion_default from "./LiveRegion.js";
2
+ import { createApp } from "vue";
3
+ //#region packages/primitives/live-region/src/context.ts
4
+ var LIVE_REGION_KEY = Symbol("loom-live-region");
5
+ /**
6
+ * Writers registered by regions mounted in the component tree, per
7
+ * politeness. The earliest still-mounted region of a politeness wins, so a
8
+ * region near the app root owns the channel and a stray duplicate deeper in
9
+ * the tree stays silent.
10
+ */
11
+ var regionWriters = /* @__PURE__ */ new Map();
12
+ /**
13
+ * Writers for the standalone pair mounted on `document.body`, kept apart
14
+ * from `regionWriters` so an in-tree region always outranks the fallback
15
+ * without the lookup depending on mount order.
16
+ */
17
+ var standaloneWriters = /* @__PURE__ */ new Map();
18
+ function registerWriter(politeness, writer, standalone) {
19
+ if (standalone) {
20
+ standaloneWriters.set(politeness, writer);
21
+ return () => {
22
+ if (standaloneWriters.get(politeness) === writer) standaloneWriters.delete(politeness);
23
+ };
24
+ }
25
+ const list = regionWriters.get(politeness) ?? [];
26
+ list.push(writer);
27
+ regionWriters.set(politeness, list);
28
+ return () => {
29
+ regionWriters.set(politeness, (regionWriters.get(politeness) ?? []).filter((registered) => registered !== writer));
30
+ };
31
+ }
32
+ /**
33
+ * True while the fallback pair is mounting, so those instances register as
34
+ * the fallback rather than as in-tree regions. `createApp().mount()` runs
35
+ * synchronously, so the flag cannot interleave.
36
+ */
37
+ var mountingStandalone = false;
38
+ var standaloneMounted = false;
39
+ /**
40
+ * Mounts the standalone polite + assertive pair on `document.body` — the
41
+ * default for callers that never mounted a region. It runs when the seam is
42
+ * first asked for (`useAnnounce()`), never at announce time: a region added
43
+ * in the same tick as its message is announced unreliably, so the pair has
44
+ * to pre-exist the first message.
45
+ */
46
+ function ensureStandaloneRegions() {
47
+ if (standaloneMounted || typeof document === "undefined") return;
48
+ standaloneMounted = true;
49
+ const host = document.createElement("div");
50
+ host.setAttribute("data-loom-live-region", "");
51
+ const apps = [];
52
+ for (const politeness of ["polite", "assertive"]) {
53
+ const mountPoint = document.createElement("div");
54
+ host.appendChild(mountPoint);
55
+ mountingStandalone = true;
56
+ try {
57
+ const app = createApp(LiveRegion_default, { politeness });
58
+ app.mount(mountPoint);
59
+ apps.push(app);
60
+ } finally {
61
+ mountingStandalone = false;
62
+ }
63
+ }
64
+ document.body.appendChild(host);
65
+ window.addEventListener("pagehide", () => {
66
+ for (const app of apps) app.unmount();
67
+ standaloneWriters.clear();
68
+ standaloneMounted = false;
69
+ host.remove();
70
+ }, { once: true });
71
+ }
72
+ /**
73
+ * The shared announcer: the in-tree region of that politeness if one is
74
+ * mounted, else the standalone pair. Never mounts anything — regions must
75
+ * pre-exist announcements, so the pair is mounted when `useAnnounce()` first
76
+ * runs, not here.
77
+ */
78
+ var announce = (message, politeness = "polite") => {
79
+ if (typeof document === "undefined") return;
80
+ (regionWriters.get(politeness)?.[0] ?? standaloneWriters.get(politeness))?.(message);
81
+ };
82
+ //#endregion
83
+ export { LIVE_REGION_KEY, announce, ensureStandaloneRegions, mountingStandalone, registerWriter };
84
+
85
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../packages/primitives/live-region/src/context.ts"],"sourcesContent":["import { createApp } from \"vue\";\nimport type { InjectionKey } from \"vue\";\n// Self-import: the fallback pair is real LiveRegion instances, so it\n// inherits the VisuallyHidden clip technique instead of duplicating it. The\n// cycle is benign — this module touches the SFC only inside\n// `ensureStandaloneRegions()`, long after both modules have evaluated.\nimport LiveRegion from \"./LiveRegion.vue\";\n\n/**\n * The seam's machinery, kept out of the SFC so the module-level state it\n * needs — the writer registries and the standalone fallback — is genuinely\n * module-level rather than per-instance.\n */\nexport type LiveRegionPoliteness = \"polite\" | \"assertive\";\n\n/** The write half of the seam — what `useAnnounce()` hands back. */\nexport type Announce = (message: string, politeness?: LiveRegionPoliteness) => void;\n\n/** The provide/inject shape a mounted region shares with its subtree. */\nexport interface LiveRegionContext {\n announce: Announce;\n}\n\nexport const LIVE_REGION_KEY: InjectionKey<LiveRegionContext> = Symbol(\"loom-live-region\");\n\n/** The write function a mounted region registers. */\ntype Writer = Announce;\n\n/**\n * Writers registered by regions mounted in the component tree, per\n * politeness. The earliest still-mounted region of a politeness wins, so a\n * region near the app root owns the channel and a stray duplicate deeper in\n * the tree stays silent.\n */\nconst regionWriters = new Map<LiveRegionPoliteness, Writer[]>();\n\n/**\n * Writers for the standalone pair mounted on `document.body`, kept apart\n * from `regionWriters` so an in-tree region always outranks the fallback\n * without the lookup depending on mount order.\n */\nconst standaloneWriters = new Map<LiveRegionPoliteness, Writer>();\n\nexport function registerWriter(\n politeness: LiveRegionPoliteness,\n writer: Writer,\n standalone: boolean,\n): () => void {\n if (standalone) {\n standaloneWriters.set(politeness, writer);\n return () => {\n if (standaloneWriters.get(politeness) === writer) standaloneWriters.delete(politeness);\n };\n }\n const list = regionWriters.get(politeness) ?? [];\n list.push(writer);\n regionWriters.set(politeness, list);\n return () => {\n regionWriters.set(\n politeness,\n (regionWriters.get(politeness) ?? []).filter((registered) => registered !== writer),\n );\n };\n}\n\n/**\n * True while the fallback pair is mounting, so those instances register as\n * the fallback rather than as in-tree regions. `createApp().mount()` runs\n * synchronously, so the flag cannot interleave.\n */\nexport let mountingStandalone = false;\n\nlet standaloneMounted = false;\n\n/**\n * Mounts the standalone polite + assertive pair on `document.body` — the\n * default for callers that never mounted a region. It runs when the seam is\n * first asked for (`useAnnounce()`), never at announce time: a region added\n * in the same tick as its message is announced unreliably, so the pair has\n * to pre-exist the first message.\n */\nexport function ensureStandaloneRegions(): void {\n if (standaloneMounted || typeof document === \"undefined\") return;\n standaloneMounted = true;\n const host = document.createElement(\"div\");\n host.setAttribute(\"data-loom-live-region\", \"\");\n const apps: ReturnType<typeof createApp>[] = [];\n for (const politeness of [\"polite\", \"assertive\"] as const) {\n const mountPoint = document.createElement(\"div\");\n host.appendChild(mountPoint);\n mountingStandalone = true;\n try {\n const app = createApp(LiveRegion, { politeness });\n app.mount(mountPoint);\n apps.push(app);\n } finally {\n mountingStandalone = false;\n }\n }\n document.body.appendChild(host);\n // The pair is a page-lifetime singleton — it must outlive the component\n // that first asked for it, or in-flight announcements would die with it —\n // so its teardown rides the page's, not any caller's.\n window.addEventListener(\n \"pagehide\",\n () => {\n for (const app of apps) app.unmount();\n standaloneWriters.clear();\n standaloneMounted = false;\n host.remove();\n },\n { once: true },\n );\n}\n\n/**\n * The shared announcer: the in-tree region of that politeness if one is\n * mounted, else the standalone pair. Never mounts anything — regions must\n * pre-exist announcements, so the pair is mounted when `useAnnounce()` first\n * runs, not here.\n */\nexport const announce: Announce = (message, politeness = \"polite\") => {\n if (typeof document === \"undefined\") return;\n const writer = regionWriters.get(politeness)?.[0] ?? standaloneWriters.get(politeness);\n writer?.(message);\n};\n"],"mappings":";;;AAuBA,IAAa,kBAAmD,OAAO,kBAAkB;;;;;;;AAWzF,IAAM,gCAAgB,IAAI,IAAoC;;;;;;AAO9D,IAAM,oCAAoB,IAAI,IAAkC;AAEhE,SAAgB,eACd,YACA,QACA,YACY;CACZ,IAAI,YAAY;EACd,kBAAkB,IAAI,YAAY,MAAM;EACxC,aAAa;GACX,IAAI,kBAAkB,IAAI,UAAU,MAAM,QAAQ,kBAAkB,OAAO,UAAU;EACvF;CACF;CACA,MAAM,OAAO,cAAc,IAAI,UAAU,KAAK,CAAC;CAC/C,KAAK,KAAK,MAAM;CAChB,cAAc,IAAI,YAAY,IAAI;CAClC,aAAa;EACX,cAAc,IACZ,aACC,cAAc,IAAI,UAAU,KAAK,CAAC,EAAA,CAAG,QAAQ,eAAe,eAAe,MAAM,CACpF;CACF;AACF;;;;;;AAOA,IAAW,qBAAqB;AAEhC,IAAI,oBAAoB;;;;;;;;AASxB,SAAgB,0BAAgC;CAC9C,IAAI,qBAAqB,OAAO,aAAa,aAAa;CAC1D,oBAAoB;CACpB,MAAM,OAAO,SAAS,cAAc,KAAK;CACzC,KAAK,aAAa,yBAAyB,EAAE;CAC7C,MAAM,OAAuC,CAAC;CAC9C,KAAK,MAAM,cAAc,CAAC,UAAU,WAAW,GAAY;EACzD,MAAM,aAAa,SAAS,cAAc,KAAK;EAC/C,KAAK,YAAY,UAAU;EAC3B,qBAAqB;EACrB,IAAI;GACF,MAAM,MAAM,UAAU,oBAAY,EAAE,WAAW,CAAC;GAChD,IAAI,MAAM,UAAU;GACpB,KAAK,KAAK,GAAG;EACf,UAAU;GACR,qBAAqB;EACvB;CACF;CACA,SAAS,KAAK,YAAY,IAAI;CAI9B,OAAO,iBACL,kBACM;EACJ,KAAK,MAAM,OAAO,MAAM,IAAI,QAAQ;EACpC,kBAAkB,MAAM;EACxB,oBAAoB;EACpB,KAAK,OAAO;CACd,GACA,EAAE,MAAM,KAAK,CACf;AACF;;;;;;;AAQA,IAAa,YAAsB,SAAS,aAAa,aAAa;CACpE,IAAI,OAAO,aAAa,aAAa;CAErC,CADe,cAAc,IAAI,UAAU,CAAC,GAAG,MAAM,kBAAkB,IAAI,UAAU,EAAA,GAC5E,OAAO;AAClB"}
@@ -0,0 +1,3 @@
1
+ import LiveRegion_default from "./LiveRegion.js";
2
+ import { useAnnounce } from "./useAnnounce.js";
3
+ export { LiveRegion_default as default, useAnnounce };
@@ -0,0 +1,25 @@
1
+ import { LIVE_REGION_KEY, announce, ensureStandaloneRegions } from "./context.js";
2
+ import { inject } from "vue";
3
+ //#region packages/primitives/live-region/src/useAnnounce.ts
4
+ /**
5
+ * The announcement seam. Call once in `setup()`:
6
+ *
7
+ * const announce = useAnnounce();
8
+ * announce("3 results found"); // politely
9
+ * announce("Upload failed", "assertive"); // interrupting
10
+ *
11
+ * Under a mounted `<LiveRegion>` the message goes to the region registered
12
+ * for that politeness; with no region in the tree it goes to the standalone
13
+ * pair that this call mounts on `document.body` — mounted here, at setup
14
+ * time, so the regions pre-exist the first message rather than appearing in
15
+ * the same tick as it. SSR-safe: with no `document` there is nowhere to
16
+ * announce to, and the function is a no-op.
17
+ */
18
+ function useAnnounce() {
19
+ ensureStandaloneRegions();
20
+ return inject(LIVE_REGION_KEY, null)?.announce ?? announce;
21
+ }
22
+ //#endregion
23
+ export { useAnnounce };
24
+
25
+ //# sourceMappingURL=useAnnounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAnnounce.js","names":[],"sources":["../../../../packages/primitives/live-region/src/useAnnounce.ts"],"sourcesContent":["import { inject } from \"vue\";\nimport { LIVE_REGION_KEY, ensureStandaloneRegions, announce } from \"./context\";\nimport type { Announce } from \"./context\";\n\n/**\n * The announcement seam. Call once in `setup()`:\n *\n * const announce = useAnnounce();\n * announce(\"3 results found\"); // politely\n * announce(\"Upload failed\", \"assertive\"); // interrupting\n *\n * Under a mounted `<LiveRegion>` the message goes to the region registered\n * for that politeness; with no region in the tree it goes to the standalone\n * pair that this call mounts on `document.body` — mounted here, at setup\n * time, so the regions pre-exist the first message rather than appearing in\n * the same tick as it. SSR-safe: with no `document` there is nowhere to\n * announce to, and the function is a no-op.\n */\nexport function useAnnounce(): Announce {\n ensureStandaloneRegions();\n return inject(LIVE_REGION_KEY, null)?.announce ?? announce;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,SAAgB,cAAwB;CACtC,wBAAwB;CACxB,OAAO,OAAO,iBAAiB,IAAI,CAAC,EAAE,YAAY;AACpD"}