@ecoma-io/loom 0.5.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 (1023) hide show
  1. package/README.md +188 -101
  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.map +1 -0
  17. package/dist/composition/sidebar/src/Sidebar.js.map +1 -0
  18. package/dist/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  19. package/dist/composition/split/src/Split.js.map +1 -0
  20. package/dist/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +1 -0
  21. package/dist/composition/stack/src/Stack.js.map +1 -0
  22. package/dist/composition/stack/src/Stack.vue_vue_type_script_setup_true_lang.js.map +1 -0
  23. package/dist/core/src/a11y-contract.js +558 -0
  24. package/dist/core/src/a11y-contract.js.map +1 -0
  25. package/dist/core/src/a11y-scope.js +151 -0
  26. package/dist/core/src/a11y-scope.js.map +1 -0
  27. package/dist/core/src/attrs.js.map +1 -0
  28. package/dist/core/src/cn.js +61 -0
  29. package/dist/core/src/cn.js.map +1 -0
  30. package/dist/core/src/icon-defaults.js.map +1 -0
  31. package/dist/core/src/index.js +9 -0
  32. package/dist/core/src/motion.js +31 -0
  33. package/dist/core/src/motion.js.map +1 -0
  34. package/dist/core/src/props.js.map +1 -0
  35. package/dist/core/src/theme.js.map +1 -0
  36. package/dist/index.js +287 -285
  37. package/dist/labels/src/ancestor-disabled.js.map +1 -0
  38. package/dist/labels/src/count-labels.js.map +1 -0
  39. package/dist/labels/src/date-labels.js +206 -0
  40. package/dist/labels/src/date-labels.js.map +1 -0
  41. package/dist/labels/src/field-context.js.map +1 -0
  42. package/dist/labels/src/labels.js.map +1 -0
  43. package/dist/layouts/app-shell/src/AppShell.js.map +1 -0
  44. package/dist/layouts/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  45. package/dist/layouts/centered/src/Centered.js.map +1 -0
  46. package/dist/layouts/centered/src/Centered.vue_vue_type_script_setup_true_lang.js.map +1 -0
  47. package/dist/layouts/dashboard/src/Dashboard.js.map +1 -0
  48. package/dist/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js +65 -0
  49. package/dist/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  50. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.js +7 -0
  51. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.js.map +1 -0
  52. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js +76 -0
  53. package/dist/layouts/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  54. package/dist/layouts/form-layout/src/FormLayout.js.map +1 -0
  55. package/dist/layouts/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js.map +1 -0
  56. package/dist/layouts/master-detail/src/MasterDetail.js.map +1 -0
  57. package/dist/layouts/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js.map +1 -0
  58. package/dist/layouts/reading/src/Reading.js.map +1 -0
  59. package/dist/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +1 -0
  60. package/dist/layouts/settings/src/Settings.js.map +1 -0
  61. package/dist/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +1 -0
  62. package/dist/layouts/split-layout/src/SplitLayout.js.map +1 -0
  63. package/dist/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +1 -0
  64. package/dist/packages/composition/dashboard-grid/src/DashboardGrid.vue.d.ts +26 -0
  65. package/dist/packages/composition/dashboard-grid/src/DashboardGrid.vue.d.ts.map +1 -0
  66. package/dist/packages/composition/dashboard-grid/src/index.d.ts.map +1 -0
  67. package/dist/packages/composition/split/src/Split.vue.d.ts.map +1 -1
  68. package/dist/packages/core/src/a11y-contract.d.ts +417 -0
  69. package/dist/packages/core/src/a11y-contract.d.ts.map +1 -0
  70. package/dist/packages/core/src/a11y-scope.d.ts +5 -3
  71. package/dist/packages/core/src/a11y-scope.d.ts.map +1 -1
  72. package/dist/packages/core/src/index.d.ts +7 -1
  73. package/dist/packages/core/src/index.d.ts.map +1 -1
  74. package/dist/packages/core/src/motion.d.ts +15 -6
  75. package/dist/packages/core/src/motion.d.ts.map +1 -1
  76. package/dist/packages/core/src/responsive-contract.d.ts +155 -0
  77. package/dist/packages/core/src/responsive-contract.d.ts.map +1 -0
  78. package/dist/packages/labels/src/component-shapes.d.ts +2 -0
  79. package/dist/packages/labels/src/component-shapes.d.ts.map +1 -1
  80. package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts.map +1 -1
  81. package/dist/packages/layouts/desktop-app-shell/src/DesktopAppShell.vue.d.ts +103 -0
  82. package/dist/packages/layouts/desktop-app-shell/src/index.d.ts.map +1 -0
  83. package/dist/packages/loom/src/a11y.d.ts +2 -1
  84. package/dist/packages/loom/src/index.d.ts +23 -23
  85. package/dist/packages/patterns/app-header/src/AppHeader.vue.d.ts +82 -0
  86. package/dist/packages/patterns/app-header/src/AppHeader.vue.d.ts.map +1 -0
  87. package/dist/packages/patterns/app-header/src/index.d.ts.map +1 -0
  88. package/dist/packages/patterns/empty-state/src/EmptyState.vue.d.ts +54 -0
  89. package/dist/packages/patterns/empty-state/src/EmptyState.vue.d.ts.map +1 -0
  90. package/dist/packages/patterns/empty-state/src/index.d.ts.map +1 -0
  91. package/dist/packages/patterns/error-state/src/ErrorState.vue.d.ts +44 -0
  92. package/dist/packages/patterns/error-state/src/ErrorState.vue.d.ts.map +1 -0
  93. package/dist/packages/patterns/error-state/src/index.d.ts.map +1 -0
  94. package/dist/packages/patterns/form-actions/src/FormActions.vue.d.ts +56 -0
  95. package/dist/packages/patterns/form-actions/src/FormActions.vue.d.ts.map +1 -0
  96. package/dist/packages/patterns/form-actions/src/index.d.ts.map +1 -0
  97. package/dist/packages/patterns/form-section/src/FormSection.vue.d.ts +85 -0
  98. package/dist/packages/patterns/form-section/src/FormSection.vue.d.ts.map +1 -0
  99. package/dist/packages/patterns/form-section/src/index.d.ts.map +1 -0
  100. package/dist/packages/patterns/loading-state/src/LoadingState.vue.d.ts.map +1 -0
  101. package/dist/packages/patterns/loading-state/src/index.d.ts.map +1 -0
  102. package/dist/packages/patterns/metric-card/src/MetricCard.vue.d.ts +77 -0
  103. package/dist/packages/patterns/metric-card/src/MetricCard.vue.d.ts.map +1 -0
  104. package/dist/packages/patterns/metric-card/src/index.d.ts.map +1 -0
  105. package/dist/packages/patterns/page-header/src/PageHeader.vue.d.ts.map +1 -0
  106. package/dist/packages/patterns/page-header/src/index.d.ts.map +1 -0
  107. package/dist/packages/patterns/row-actions/src/RowActions.vue.d.ts.map +1 -0
  108. package/dist/packages/patterns/row-actions/src/index.d.ts.map +1 -0
  109. package/dist/packages/patterns/sidebar-nav/src/SidebarNav.vue.d.ts.map +1 -0
  110. package/dist/packages/patterns/sidebar-nav/src/index.d.ts.map +1 -0
  111. package/dist/packages/patterns/title-bar/src/TitleBar.vue.d.ts +83 -0
  112. package/dist/packages/patterns/title-bar/src/index.d.ts.map +1 -0
  113. package/dist/packages/patterns/toast-stack/src/index.d.ts.map +1 -0
  114. package/dist/packages/primitives/list/src/ListItem.vue.d.ts +1 -1
  115. package/dist/packages/primitives/list/src/ListItem.vue.d.ts.map +1 -1
  116. package/dist/packages/primitives/surface/src/Surface.vue.d.ts +2 -2
  117. package/dist/packages/primitives/surface/src/Surface.vue.d.ts.map +1 -1
  118. package/dist/packages/primitives/table/src/TableRow.vue.d.ts +2 -2
  119. package/dist/packages/primitives/table/src/TableRow.vue.d.ts.map +1 -1
  120. package/dist/patterns/app-header/src/AppHeader.js +7 -0
  121. package/dist/patterns/app-header/src/AppHeader.js.map +1 -0
  122. package/dist/patterns/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +96 -0
  123. package/dist/patterns/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
  124. package/dist/patterns/empty-state/src/EmptyState.js +7 -0
  125. package/dist/patterns/empty-state/src/EmptyState.js.map +1 -0
  126. package/dist/patterns/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +73 -0
  127. package/dist/patterns/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  128. package/dist/patterns/error-state/src/ErrorState.js +7 -0
  129. package/dist/patterns/error-state/src/ErrorState.js.map +1 -0
  130. package/dist/patterns/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js +60 -0
  131. package/dist/patterns/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  132. package/dist/patterns/error-summary/src/ErrorSummary.js +7 -0
  133. package/dist/patterns/error-summary/src/ErrorSummary.js.map +1 -0
  134. package/dist/patterns/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js +90 -0
  135. package/dist/patterns/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
  136. package/dist/patterns/form-actions/src/FormActions.js +7 -0
  137. package/dist/patterns/form-actions/src/FormActions.js.map +1 -0
  138. package/dist/patterns/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js +22 -0
  139. package/dist/patterns/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js.map +1 -0
  140. package/dist/patterns/form-section/src/FormSection.js +7 -0
  141. package/dist/patterns/form-section/src/FormSection.js.map +1 -0
  142. package/dist/patterns/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js +64 -0
  143. package/dist/patterns/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
  144. package/dist/patterns/loading-state/src/LoadingState.js +7 -0
  145. package/dist/patterns/loading-state/src/LoadingState.js.map +1 -0
  146. package/dist/patterns/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js +59 -0
  147. package/dist/patterns/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js.map +1 -0
  148. package/dist/patterns/metric-card/src/MetricCard.js +7 -0
  149. package/dist/patterns/metric-card/src/MetricCard.js.map +1 -0
  150. package/dist/patterns/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +87 -0
  151. package/dist/patterns/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  152. package/dist/patterns/page-header/src/PageHeader.js +7 -0
  153. package/dist/patterns/page-header/src/PageHeader.js.map +1 -0
  154. package/dist/patterns/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js +68 -0
  155. package/dist/patterns/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js.map +1 -0
  156. package/dist/patterns/row-actions/src/RowActions.js +7 -0
  157. package/dist/patterns/row-actions/src/RowActions.js.map +1 -0
  158. package/dist/patterns/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js +47 -0
  159. package/dist/patterns/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js.map +1 -0
  160. package/dist/patterns/sidebar-nav/src/SidebarNav.js +7 -0
  161. package/dist/patterns/sidebar-nav/src/SidebarNav.js.map +1 -0
  162. package/dist/patterns/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js +129 -0
  163. package/dist/patterns/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js.map +1 -0
  164. package/dist/patterns/title-bar/src/TitleBar.js +7 -0
  165. package/dist/patterns/title-bar/src/TitleBar.js.map +1 -0
  166. package/dist/patterns/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js +69 -0
  167. package/dist/patterns/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  168. package/dist/patterns/toast-stack/src/ToastStack.js +7 -0
  169. package/dist/patterns/toast-stack/src/ToastStack.js.map +1 -0
  170. package/dist/patterns/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js +52 -0
  171. package/dist/patterns/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js.map +1 -0
  172. package/dist/primitives/accordion/src/Accordion.js.map +1 -0
  173. package/dist/primitives/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  174. package/dist/primitives/alert/src/Alert.js.map +1 -0
  175. package/dist/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  176. package/dist/primitives/alert-dialog/src/AlertDialog.js.map +1 -0
  177. package/dist/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  178. package/dist/primitives/avatar/src/Avatar.js.map +1 -0
  179. package/dist/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  180. package/dist/primitives/avatar-group/src/AvatarGroup.js.map +1 -0
  181. package/dist/primitives/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  182. package/dist/primitives/badge/src/Badge.js.map +1 -0
  183. package/dist/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -0
  184. package/dist/primitives/breadcrumb/src/Breadcrumb.js.map +1 -0
  185. package/dist/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -0
  186. package/dist/primitives/button/src/Button.js.map +1 -0
  187. package/dist/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +1 -0
  188. package/dist/primitives/calendar/src/Calendar.js.map +1 -0
  189. package/dist/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js +202 -0
  190. package/dist/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  191. package/dist/primitives/card/src/Card.js.map +1 -0
  192. package/dist/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +1 -0
  193. package/dist/primitives/carousel/src/Carousel.js.map +1 -0
  194. package/dist/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  195. package/dist/primitives/checkbox/src/Checkbox.js.map +1 -0
  196. package/dist/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  197. package/dist/primitives/chip/src/Chip.js.map +1 -0
  198. package/dist/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  199. package/dist/primitives/collapse/src/Collapse.js.map +1 -0
  200. package/dist/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +1 -0
  201. package/dist/primitives/color-picker/src/ColorPicker.js.map +1 -0
  202. package/dist/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  203. package/dist/primitives/combobox/src/Combobox.js.map +1 -0
  204. package/dist/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +1 -0
  205. package/dist/primitives/command/src/Command.js.map +1 -0
  206. package/dist/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js.map +1 -0
  207. package/dist/primitives/context-menu/src/ContextMenu.js.map +1 -0
  208. package/dist/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  209. package/dist/primitives/copy-button/src/CopyButton.js.map +1 -0
  210. package/dist/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  211. package/dist/primitives/copy-button/src/index.js +3 -0
  212. package/dist/primitives/data-grid/src/DataGrid.js.map +1 -0
  213. package/dist/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  214. package/dist/primitives/date-picker/src/DatePicker.js.map +1 -0
  215. package/dist/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +292 -0
  216. package/dist/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  217. package/dist/primitives/date-range-picker/src/DateRangePicker.js.map +1 -0
  218. package/dist/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +417 -0
  219. package/dist/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  220. package/dist/primitives/date-time-picker/src/DateTimePicker.js.map +1 -0
  221. package/dist/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +359 -0
  222. package/dist/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  223. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +1 -0
  224. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +563 -0
  225. package/dist/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  226. package/dist/primitives/dialog/src/Dialog.js.map +1 -0
  227. package/dist/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +1 -0
  228. package/dist/primitives/drawer/src/Drawer.js.map +1 -0
  229. package/dist/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +1 -0
  230. package/dist/primitives/dropdown-menu/src/DropdownMenu.js.map +1 -0
  231. package/dist/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  232. package/dist/primitives/editable/src/Editable.js.map +1 -0
  233. package/dist/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  234. package/dist/primitives/field/src/Field.js.map +1 -0
  235. package/dist/primitives/field/src/Field.vue_vue_type_script_setup_true_lang.js.map +1 -0
  236. package/dist/primitives/fieldset/src/Fieldset.js.map +1 -0
  237. package/dist/primitives/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js.map +1 -0
  238. package/dist/primitives/file-upload/src/FileUpload.js.map +1 -0
  239. package/dist/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -0
  240. package/dist/primitives/hover-card/src/HoverCard.js.map +1 -0
  241. package/dist/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  242. package/dist/primitives/icon-button/src/IconButton.js.map +1 -0
  243. package/dist/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  244. package/dist/primitives/indicator/src/Indicator.js.map +1 -0
  245. package/dist/primitives/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  246. package/dist/primitives/inline-error/src/InlineError.js.map +1 -0
  247. package/dist/primitives/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js.map +1 -0
  248. package/dist/primitives/kbd/src/Kbd.js.map +1 -0
  249. package/dist/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -0
  250. package/dist/primitives/link/src/Link.js.map +1 -0
  251. package/dist/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +1 -0
  252. package/dist/primitives/list/src/List.js.map +1 -0
  253. package/dist/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +1 -0
  254. package/dist/primitives/list/src/ListItem.js.map +1 -0
  255. package/dist/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +101 -0
  256. package/dist/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  257. package/dist/primitives/live-region/src/LiveRegion.js.map +1 -0
  258. package/dist/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  259. package/dist/primitives/live-region/src/context.js.map +1 -0
  260. package/dist/primitives/live-region/src/useAnnounce.js.map +1 -0
  261. package/dist/primitives/menubar/src/Menubar.js.map +1 -0
  262. package/dist/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  263. package/dist/primitives/meter/src/Meter.js.map +1 -0
  264. package/dist/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -0
  265. package/dist/primitives/navigation-menu/src/NavigationMenu.js.map +1 -0
  266. package/dist/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  267. package/dist/primitives/number-field/src/NumberField.js.map +1 -0
  268. package/dist/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  269. package/dist/primitives/otp-input/src/OtpInput.js.map +1 -0
  270. package/dist/primitives/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  271. package/dist/primitives/pagination/src/Pagination.js.map +1 -0
  272. package/dist/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -0
  273. package/dist/primitives/popover/src/Popover.js.map +1 -0
  274. package/dist/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +1 -0
  275. package/dist/primitives/progress/src/Progress.js.map +1 -0
  276. package/dist/primitives/progress/src/Progress.vue_vue_type_script_setup_true_lang.js.map +1 -0
  277. package/dist/primitives/radial-progress/src/RadialProgress.js.map +1 -0
  278. package/dist/primitives/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js.map +1 -0
  279. package/dist/primitives/radio-group/src/RadioGroup.js.map +1 -0
  280. package/dist/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  281. package/dist/primitives/rating/src/Rating.js.map +1 -0
  282. package/dist/primitives/rating/src/Rating.vue_vue_type_script_setup_true_lang.js.map +1 -0
  283. package/dist/primitives/scroll-area/src/ScrollArea.js.map +1 -0
  284. package/dist/primitives/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  285. package/dist/primitives/segmented-control/src/SegmentedControl.js.map +1 -0
  286. package/dist/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +1 -0
  287. package/dist/primitives/select/src/Select.js.map +1 -0
  288. package/dist/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +1 -0
  289. package/dist/primitives/separator/src/Separator.js.map +1 -0
  290. package/dist/primitives/separator/src/Separator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  291. package/dist/primitives/skeleton/src/Skeleton.js.map +1 -0
  292. package/dist/primitives/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  293. package/dist/primitives/skip-link/src/SkipLink.js.map +1 -0
  294. package/dist/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  295. package/dist/primitives/slider/src/Slider.js.map +1 -0
  296. package/dist/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -0
  297. package/dist/primitives/speed-dial/src/SpeedDial.js.map +1 -0
  298. package/dist/primitives/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js.map +1 -0
  299. package/dist/primitives/spinner/src/Spinner.js.map +1 -0
  300. package/dist/primitives/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  301. package/dist/primitives/stepper/src/Stepper.js.map +1 -0
  302. package/dist/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -0
  303. package/dist/primitives/surface/src/Surface.js.map +1 -0
  304. package/dist/primitives/surface/src/Surface.vue_vue_type_script_setup_true_lang.js.map +1 -0
  305. package/dist/primitives/switch/src/Switch.js.map +1 -0
  306. package/dist/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -0
  307. package/dist/primitives/table/src/Table.js.map +1 -0
  308. package/dist/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +1 -0
  309. package/dist/primitives/table/src/TableCell.js.map +1 -0
  310. package/dist/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  311. package/dist/primitives/table/src/TableHead.js.map +1 -0
  312. package/dist/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +1 -0
  313. package/dist/primitives/table/src/TableRow.js.map +1 -0
  314. package/dist/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  315. package/dist/primitives/tabs/src/Tabs.js.map +1 -0
  316. package/dist/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -0
  317. package/dist/primitives/tags-input/src/TagsInput.js.map +1 -0
  318. package/dist/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  319. package/dist/primitives/text-field/src/TextField.js.map +1 -0
  320. package/dist/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  321. package/dist/primitives/textarea/src/Textarea.js.map +1 -0
  322. package/dist/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  323. package/dist/primitives/time-picker/src/TimePicker.js.map +1 -0
  324. package/dist/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +189 -0
  325. package/dist/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  326. package/dist/primitives/timeline/src/Timeline.js.map +1 -0
  327. package/dist/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  328. package/dist/primitives/timeline/src/TimelineItem.js.map +1 -0
  329. package/dist/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  330. package/dist/primitives/timeline/src/index.js +5 -0
  331. package/dist/primitives/toast/src/Toast.js.map +1 -0
  332. package/dist/primitives/toast/src/Toast.vue_vue_type_script_setup_true_lang.js.map +1 -0
  333. package/dist/primitives/toast/src/ToastItem.js.map +1 -0
  334. package/dist/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  335. package/dist/primitives/toggle-group/src/ToggleGroup.js.map +1 -0
  336. package/dist/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  337. package/dist/primitives/toolbar/src/Toolbar.js.map +1 -0
  338. package/dist/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  339. package/dist/primitives/toolbar/src/ToolbarSeparator.js.map +1 -0
  340. package/dist/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  341. package/dist/primitives/tooltip/src/Tooltip.js.map +1 -0
  342. package/dist/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -0
  343. package/dist/primitives/tree-view/src/TreeView.js.map +1 -0
  344. package/dist/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
  345. package/dist/primitives/tree-view/src/TreeViewNode.js.map +1 -0
  346. package/dist/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js.map +1 -0
  347. package/dist/primitives/tree-view/src/context.js.map +1 -0
  348. package/dist/primitives/visually-hidden/src/VisuallyHidden.js.map +1 -0
  349. package/dist/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map +1 -0
  350. package/dist/primitives/window-controls/src/WindowControls.js.map +1 -0
  351. package/dist/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js +127 -0
  352. package/dist/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js.map +1 -0
  353. package/dist/styles/theme.css +30 -6
  354. package/dist/theme.js +2 -2
  355. package/package.json +5 -4
  356. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/CalendarDate.js +0 -236
  357. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/CalendarDate.js.map +0 -1
  358. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js +0 -117
  359. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js.map +0 -1
  360. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/conversion.js +0 -142
  361. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/conversion.js.map +0 -1
  362. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/manipulation.js +0 -280
  363. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/manipulation.js.map +0 -1
  364. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/queries.js +0 -40
  365. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/queries.js.map +0 -1
  366. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/string.js +0 -69
  367. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/string.js.map +0 -1
  368. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/utils.js +0 -8
  369. package/dist/node_modules/.pnpm/@internationalized_date@3.12.4/node_modules/@internationalized/date/dist/private/utils.js.map +0 -1
  370. package/dist/packages/blocks/app-header/src/AppHeader.js +0 -7
  371. package/dist/packages/blocks/app-header/src/AppHeader.js.map +0 -1
  372. package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts +0 -82
  373. package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts.map +0 -1
  374. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +0 -96
  375. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +0 -1
  376. package/dist/packages/blocks/app-header/src/index.d.ts.map +0 -1
  377. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.js +0 -7
  378. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.js.map +0 -1
  379. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue.d.ts +0 -42
  380. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue.d.ts.map +0 -1
  381. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js +0 -45
  382. package/dist/packages/blocks/dashboard-grid/src/DashboardGrid.vue_vue_type_script_setup_true_lang.js.map +0 -1
  383. package/dist/packages/blocks/dashboard-grid/src/index.d.ts.map +0 -1
  384. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.js +0 -7
  385. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.js.map +0 -1
  386. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts +0 -102
  387. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js +0 -76
  388. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  389. package/dist/packages/blocks/desktop-app-shell/src/index.d.ts.map +0 -1
  390. package/dist/packages/blocks/empty-state/src/EmptyState.js +0 -7
  391. package/dist/packages/blocks/empty-state/src/EmptyState.js.map +0 -1
  392. package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts +0 -50
  393. package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts.map +0 -1
  394. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +0 -70
  395. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  396. package/dist/packages/blocks/empty-state/src/index.d.ts.map +0 -1
  397. package/dist/packages/blocks/error-state/src/ErrorState.js +0 -7
  398. package/dist/packages/blocks/error-state/src/ErrorState.js.map +0 -1
  399. package/dist/packages/blocks/error-state/src/ErrorState.vue.d.ts +0 -44
  400. package/dist/packages/blocks/error-state/src/ErrorState.vue.d.ts.map +0 -1
  401. package/dist/packages/blocks/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js +0 -60
  402. package/dist/packages/blocks/error-state/src/ErrorState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  403. package/dist/packages/blocks/error-state/src/index.d.ts.map +0 -1
  404. package/dist/packages/blocks/error-summary/src/ErrorSummary.js +0 -7
  405. package/dist/packages/blocks/error-summary/src/ErrorSummary.js.map +0 -1
  406. package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js +0 -90
  407. package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +0 -1
  408. package/dist/packages/blocks/form-actions/src/FormActions.js +0 -7
  409. package/dist/packages/blocks/form-actions/src/FormActions.js.map +0 -1
  410. package/dist/packages/blocks/form-actions/src/FormActions.vue.d.ts +0 -51
  411. package/dist/packages/blocks/form-actions/src/FormActions.vue.d.ts.map +0 -1
  412. package/dist/packages/blocks/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js +0 -22
  413. package/dist/packages/blocks/form-actions/src/FormActions.vue_vue_type_script_setup_true_lang.js.map +0 -1
  414. package/dist/packages/blocks/form-actions/src/index.d.ts.map +0 -1
  415. package/dist/packages/blocks/form-section/src/FormSection.js +0 -7
  416. package/dist/packages/blocks/form-section/src/FormSection.js.map +0 -1
  417. package/dist/packages/blocks/form-section/src/FormSection.vue.d.ts +0 -85
  418. package/dist/packages/blocks/form-section/src/FormSection.vue.d.ts.map +0 -1
  419. package/dist/packages/blocks/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js +0 -64
  420. package/dist/packages/blocks/form-section/src/FormSection.vue_vue_type_script_setup_true_lang.js.map +0 -1
  421. package/dist/packages/blocks/form-section/src/index.d.ts.map +0 -1
  422. package/dist/packages/blocks/loading-state/src/LoadingState.js +0 -7
  423. package/dist/packages/blocks/loading-state/src/LoadingState.js.map +0 -1
  424. package/dist/packages/blocks/loading-state/src/LoadingState.vue.d.ts.map +0 -1
  425. package/dist/packages/blocks/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js +0 -59
  426. package/dist/packages/blocks/loading-state/src/LoadingState.vue_vue_type_script_setup_true_lang.js.map +0 -1
  427. package/dist/packages/blocks/loading-state/src/index.d.ts.map +0 -1
  428. package/dist/packages/blocks/metric-card/src/MetricCard.js +0 -7
  429. package/dist/packages/blocks/metric-card/src/MetricCard.js.map +0 -1
  430. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts +0 -77
  431. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts.map +0 -1
  432. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +0 -87
  433. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  434. package/dist/packages/blocks/metric-card/src/index.d.ts.map +0 -1
  435. package/dist/packages/blocks/page-header/src/PageHeader.js +0 -7
  436. package/dist/packages/blocks/page-header/src/PageHeader.js.map +0 -1
  437. package/dist/packages/blocks/page-header/src/PageHeader.vue.d.ts.map +0 -1
  438. package/dist/packages/blocks/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js +0 -68
  439. package/dist/packages/blocks/page-header/src/PageHeader.vue_vue_type_script_setup_true_lang.js.map +0 -1
  440. package/dist/packages/blocks/page-header/src/index.d.ts.map +0 -1
  441. package/dist/packages/blocks/row-actions/src/RowActions.js +0 -7
  442. package/dist/packages/blocks/row-actions/src/RowActions.js.map +0 -1
  443. package/dist/packages/blocks/row-actions/src/RowActions.vue.d.ts.map +0 -1
  444. package/dist/packages/blocks/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js +0 -47
  445. package/dist/packages/blocks/row-actions/src/RowActions.vue_vue_type_script_setup_true_lang.js.map +0 -1
  446. package/dist/packages/blocks/row-actions/src/index.d.ts.map +0 -1
  447. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.js +0 -7
  448. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.js.map +0 -1
  449. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue.d.ts.map +0 -1
  450. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js +0 -129
  451. package/dist/packages/blocks/sidebar-nav/src/SidebarNav.vue_vue_type_script_setup_true_lang.js.map +0 -1
  452. package/dist/packages/blocks/sidebar-nav/src/index.d.ts.map +0 -1
  453. package/dist/packages/blocks/title-bar/src/TitleBar.js +0 -7
  454. package/dist/packages/blocks/title-bar/src/TitleBar.js.map +0 -1
  455. package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts +0 -83
  456. package/dist/packages/blocks/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js +0 -69
  457. package/dist/packages/blocks/title-bar/src/TitleBar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  458. package/dist/packages/blocks/title-bar/src/index.d.ts.map +0 -1
  459. package/dist/packages/blocks/toast-stack/src/ToastStack.js +0 -7
  460. package/dist/packages/blocks/toast-stack/src/ToastStack.js.map +0 -1
  461. package/dist/packages/blocks/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js +0 -52
  462. package/dist/packages/blocks/toast-stack/src/ToastStack.vue_vue_type_script_setup_true_lang.js.map +0 -1
  463. package/dist/packages/blocks/toast-stack/src/index.d.ts.map +0 -1
  464. package/dist/packages/composition/center/src/Center.js.map +0 -1
  465. package/dist/packages/composition/center/src/Center.vue_vue_type_script_setup_true_lang.js.map +0 -1
  466. package/dist/packages/composition/frame/src/Frame.js.map +0 -1
  467. package/dist/packages/composition/frame/src/Frame.vue_vue_type_script_setup_true_lang.js.map +0 -1
  468. package/dist/packages/composition/grid/src/Grid.js.map +0 -1
  469. package/dist/packages/composition/grid/src/Grid.vue_vue_type_script_setup_true_lang.js.map +0 -1
  470. package/dist/packages/composition/inline/src/Inline.js.map +0 -1
  471. package/dist/packages/composition/inline/src/Inline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  472. package/dist/packages/composition/scroll-reel/src/ScrollReel.js.map +0 -1
  473. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  474. package/dist/packages/composition/sidebar/src/Sidebar.js.map +0 -1
  475. package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  476. package/dist/packages/composition/split/src/Split.js.map +0 -1
  477. package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +0 -1
  478. package/dist/packages/composition/stack/src/Stack.js.map +0 -1
  479. package/dist/packages/composition/stack/src/Stack.vue_vue_type_script_setup_true_lang.js.map +0 -1
  480. package/dist/packages/core/src/a11y-scope.js +0 -149
  481. package/dist/packages/core/src/a11y-scope.js.map +0 -1
  482. package/dist/packages/core/src/attrs.js.map +0 -1
  483. package/dist/packages/core/src/cn.js +0 -61
  484. package/dist/packages/core/src/cn.js.map +0 -1
  485. package/dist/packages/core/src/icon-defaults.js.map +0 -1
  486. package/dist/packages/core/src/index.js +0 -8
  487. package/dist/packages/core/src/motion.js +0 -27
  488. package/dist/packages/core/src/motion.js.map +0 -1
  489. package/dist/packages/core/src/props.js.map +0 -1
  490. package/dist/packages/core/src/theme.js.map +0 -1
  491. package/dist/packages/labels/src/ancestor-disabled.js.map +0 -1
  492. package/dist/packages/labels/src/count-labels.js.map +0 -1
  493. package/dist/packages/labels/src/date-labels.js +0 -206
  494. package/dist/packages/labels/src/date-labels.js.map +0 -1
  495. package/dist/packages/labels/src/field-context.js.map +0 -1
  496. package/dist/packages/labels/src/labels.js.map +0 -1
  497. package/dist/packages/layouts/app-shell/src/AppShell.js.map +0 -1
  498. package/dist/packages/layouts/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  499. package/dist/packages/layouts/centered/src/Centered.js.map +0 -1
  500. package/dist/packages/layouts/centered/src/Centered.vue_vue_type_script_setup_true_lang.js.map +0 -1
  501. package/dist/packages/layouts/dashboard/src/Dashboard.js.map +0 -1
  502. package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js +0 -65
  503. package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  504. package/dist/packages/layouts/form-layout/src/FormLayout.js.map +0 -1
  505. package/dist/packages/layouts/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js.map +0 -1
  506. package/dist/packages/layouts/master-detail/src/MasterDetail.js.map +0 -1
  507. package/dist/packages/layouts/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js.map +0 -1
  508. package/dist/packages/layouts/reading/src/Reading.js.map +0 -1
  509. package/dist/packages/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +0 -1
  510. package/dist/packages/layouts/settings/src/Settings.js.map +0 -1
  511. package/dist/packages/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +0 -1
  512. package/dist/packages/layouts/split-layout/src/SplitLayout.js.map +0 -1
  513. package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +0 -1
  514. package/dist/packages/primitives/accordion/src/Accordion.js.map +0 -1
  515. package/dist/packages/primitives/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  516. package/dist/packages/primitives/alert/src/Alert.js.map +0 -1
  517. package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +0 -1
  518. package/dist/packages/primitives/alert-dialog/src/AlertDialog.js.map +0 -1
  519. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +0 -1
  520. package/dist/packages/primitives/avatar/src/Avatar.js.map +0 -1
  521. package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  522. package/dist/packages/primitives/avatar-group/src/AvatarGroup.js.map +0 -1
  523. package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  524. package/dist/packages/primitives/badge/src/Badge.js.map +0 -1
  525. package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +0 -1
  526. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js.map +0 -1
  527. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +0 -1
  528. package/dist/packages/primitives/button/src/Button.js.map +0 -1
  529. package/dist/packages/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +0 -1
  530. package/dist/packages/primitives/calendar/src/Calendar.js.map +0 -1
  531. package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js +0 -204
  532. package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  533. package/dist/packages/primitives/card/src/Card.js.map +0 -1
  534. package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +0 -1
  535. package/dist/packages/primitives/carousel/src/Carousel.js.map +0 -1
  536. package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +0 -1
  537. package/dist/packages/primitives/checkbox/src/Checkbox.js.map +0 -1
  538. package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +0 -1
  539. package/dist/packages/primitives/chip/src/Chip.js.map +0 -1
  540. package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  541. package/dist/packages/primitives/collapse/src/Collapse.js.map +0 -1
  542. package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +0 -1
  543. package/dist/packages/primitives/color-picker/src/ColorPicker.js.map +0 -1
  544. package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  545. package/dist/packages/primitives/combobox/src/Combobox.js.map +0 -1
  546. package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +0 -1
  547. package/dist/packages/primitives/command/src/Command.js.map +0 -1
  548. package/dist/packages/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js.map +0 -1
  549. package/dist/packages/primitives/context-menu/src/ContextMenu.js.map +0 -1
  550. package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +0 -1
  551. package/dist/packages/primitives/copy-button/src/CopyButton.js.map +0 -1
  552. package/dist/packages/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js.map +0 -1
  553. package/dist/packages/primitives/copy-button/src/index.js +0 -3
  554. package/dist/packages/primitives/data-grid/src/DataGrid.js.map +0 -1
  555. package/dist/packages/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js.map +0 -1
  556. package/dist/packages/primitives/date-picker/src/DatePicker.js.map +0 -1
  557. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +0 -294
  558. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  559. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.js.map +0 -1
  560. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +0 -419
  561. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  562. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.js.map +0 -1
  563. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +0 -361
  564. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  565. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +0 -1
  566. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +0 -565
  567. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  568. package/dist/packages/primitives/dialog/src/Dialog.js.map +0 -1
  569. package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +0 -1
  570. package/dist/packages/primitives/drawer/src/Drawer.js.map +0 -1
  571. package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +0 -1
  572. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.js.map +0 -1
  573. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +0 -1
  574. package/dist/packages/primitives/editable/src/Editable.js.map +0 -1
  575. package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +0 -1
  576. package/dist/packages/primitives/field/src/Field.js.map +0 -1
  577. package/dist/packages/primitives/field/src/Field.vue_vue_type_script_setup_true_lang.js.map +0 -1
  578. package/dist/packages/primitives/fieldset/src/Fieldset.js.map +0 -1
  579. package/dist/packages/primitives/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js.map +0 -1
  580. package/dist/packages/primitives/file-upload/src/FileUpload.js.map +0 -1
  581. package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +0 -1
  582. package/dist/packages/primitives/hover-card/src/HoverCard.js.map +0 -1
  583. package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +0 -1
  584. package/dist/packages/primitives/icon-button/src/IconButton.js.map +0 -1
  585. package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +0 -1
  586. package/dist/packages/primitives/indicator/src/Indicator.js.map +0 -1
  587. package/dist/packages/primitives/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  588. package/dist/packages/primitives/inline-error/src/InlineError.js.map +0 -1
  589. package/dist/packages/primitives/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js.map +0 -1
  590. package/dist/packages/primitives/kbd/src/Kbd.js.map +0 -1
  591. package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +0 -1
  592. package/dist/packages/primitives/link/src/Link.js.map +0 -1
  593. package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +0 -1
  594. package/dist/packages/primitives/list/src/List.js.map +0 -1
  595. package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +0 -1
  596. package/dist/packages/primitives/list/src/ListItem.js.map +0 -1
  597. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +0 -101
  598. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  599. package/dist/packages/primitives/live-region/src/LiveRegion.js.map +0 -1
  600. package/dist/packages/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js.map +0 -1
  601. package/dist/packages/primitives/live-region/src/context.js.map +0 -1
  602. package/dist/packages/primitives/live-region/src/useAnnounce.js.map +0 -1
  603. package/dist/packages/primitives/menubar/src/Menubar.js.map +0 -1
  604. package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  605. package/dist/packages/primitives/meter/src/Meter.js.map +0 -1
  606. package/dist/packages/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js.map +0 -1
  607. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.js.map +0 -1
  608. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +0 -1
  609. package/dist/packages/primitives/number-field/src/NumberField.js.map +0 -1
  610. package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  611. package/dist/packages/primitives/otp-input/src/OtpInput.js.map +0 -1
  612. package/dist/packages/primitives/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
  613. package/dist/packages/primitives/pagination/src/Pagination.js.map +0 -1
  614. package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +0 -1
  615. package/dist/packages/primitives/popover/src/Popover.js.map +0 -1
  616. package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +0 -1
  617. package/dist/packages/primitives/progress/src/Progress.js.map +0 -1
  618. package/dist/packages/primitives/progress/src/Progress.vue_vue_type_script_setup_true_lang.js.map +0 -1
  619. package/dist/packages/primitives/radial-progress/src/RadialProgress.js.map +0 -1
  620. package/dist/packages/primitives/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js.map +0 -1
  621. package/dist/packages/primitives/radio-group/src/RadioGroup.js.map +0 -1
  622. package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  623. package/dist/packages/primitives/rating/src/Rating.js.map +0 -1
  624. package/dist/packages/primitives/rating/src/Rating.vue_vue_type_script_setup_true_lang.js.map +0 -1
  625. package/dist/packages/primitives/scroll-area/src/ScrollArea.js.map +0 -1
  626. package/dist/packages/primitives/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js.map +0 -1
  627. package/dist/packages/primitives/segmented-control/src/SegmentedControl.js.map +0 -1
  628. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +0 -1
  629. package/dist/packages/primitives/select/src/Select.js.map +0 -1
  630. package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +0 -1
  631. package/dist/packages/primitives/separator/src/Separator.js.map +0 -1
  632. package/dist/packages/primitives/separator/src/Separator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  633. package/dist/packages/primitives/skeleton/src/Skeleton.js.map +0 -1
  634. package/dist/packages/primitives/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js.map +0 -1
  635. package/dist/packages/primitives/skip-link/src/SkipLink.js.map +0 -1
  636. package/dist/packages/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js.map +0 -1
  637. package/dist/packages/primitives/slider/src/Slider.js.map +0 -1
  638. package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +0 -1
  639. package/dist/packages/primitives/speed-dial/src/SpeedDial.js.map +0 -1
  640. package/dist/packages/primitives/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js.map +0 -1
  641. package/dist/packages/primitives/spinner/src/Spinner.js.map +0 -1
  642. package/dist/packages/primitives/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js.map +0 -1
  643. package/dist/packages/primitives/stepper/src/Stepper.js.map +0 -1
  644. package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +0 -1
  645. package/dist/packages/primitives/surface/src/Surface.js.map +0 -1
  646. package/dist/packages/primitives/surface/src/Surface.vue_vue_type_script_setup_true_lang.js.map +0 -1
  647. package/dist/packages/primitives/switch/src/Switch.js.map +0 -1
  648. package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +0 -1
  649. package/dist/packages/primitives/table/src/Table.js.map +0 -1
  650. package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +0 -1
  651. package/dist/packages/primitives/table/src/TableCell.js.map +0 -1
  652. package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +0 -1
  653. package/dist/packages/primitives/table/src/TableHead.js.map +0 -1
  654. package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +0 -1
  655. package/dist/packages/primitives/table/src/TableRow.js.map +0 -1
  656. package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +0 -1
  657. package/dist/packages/primitives/tabs/src/Tabs.js.map +0 -1
  658. package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +0 -1
  659. package/dist/packages/primitives/tags-input/src/TagsInput.js.map +0 -1
  660. package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
  661. package/dist/packages/primitives/text-field/src/TextField.js.map +0 -1
  662. package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +0 -1
  663. package/dist/packages/primitives/textarea/src/Textarea.js.map +0 -1
  664. package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +0 -1
  665. package/dist/packages/primitives/time-picker/src/TimePicker.js.map +0 -1
  666. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +0 -189
  667. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +0 -1
  668. package/dist/packages/primitives/timeline/src/Timeline.js.map +0 -1
  669. package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +0 -1
  670. package/dist/packages/primitives/timeline/src/TimelineItem.js.map +0 -1
  671. package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  672. package/dist/packages/primitives/timeline/src/index.js +0 -5
  673. package/dist/packages/primitives/toast/src/Toast.js.map +0 -1
  674. package/dist/packages/primitives/toast/src/Toast.vue_vue_type_script_setup_true_lang.js.map +0 -1
  675. package/dist/packages/primitives/toast/src/ToastItem.js.map +0 -1
  676. package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +0 -1
  677. package/dist/packages/primitives/toggle-group/src/ToggleGroup.js.map +0 -1
  678. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  679. package/dist/packages/primitives/toolbar/src/Toolbar.js.map +0 -1
  680. package/dist/packages/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js.map +0 -1
  681. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.js.map +0 -1
  682. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +0 -1
  683. package/dist/packages/primitives/tooltip/src/Tooltip.js.map +0 -1
  684. package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +0 -1
  685. package/dist/packages/primitives/tree-view/src/TreeView.js.map +0 -1
  686. package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js.map +0 -1
  687. package/dist/packages/primitives/tree-view/src/TreeViewNode.js.map +0 -1
  688. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js.map +0 -1
  689. package/dist/packages/primitives/tree-view/src/context.js.map +0 -1
  690. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.js.map +0 -1
  691. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map +0 -1
  692. package/dist/packages/primitives/window-controls/src/WindowControls.js.map +0 -1
  693. package/dist/packages/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js +0 -124
  694. package/dist/packages/primitives/window-controls/src/WindowControls.vue_vue_type_script_setup_true_lang.js.map +0 -1
  695. /package/dist/{packages/composition → composition}/center/src/Center.js +0 -0
  696. /package/dist/{packages/composition → composition}/center/src/Center.vue_vue_type_script_setup_true_lang.js +0 -0
  697. /package/dist/{packages/composition → composition}/center/src/index.js +0 -0
  698. /package/dist/{packages/blocks → composition}/dashboard-grid/src/index.js +0 -0
  699. /package/dist/{packages/composition → composition}/frame/src/Frame.js +0 -0
  700. /package/dist/{packages/composition → composition}/frame/src/Frame.vue_vue_type_script_setup_true_lang.js +0 -0
  701. /package/dist/{packages/composition → composition}/frame/src/index.js +0 -0
  702. /package/dist/{packages/composition → composition}/grid/src/Grid.js +0 -0
  703. /package/dist/{packages/composition → composition}/grid/src/Grid.vue_vue_type_script_setup_true_lang.js +0 -0
  704. /package/dist/{packages/composition → composition}/grid/src/index.js +0 -0
  705. /package/dist/{packages/composition → composition}/inline/src/Inline.js +0 -0
  706. /package/dist/{packages/composition → composition}/inline/src/Inline.vue_vue_type_script_setup_true_lang.js +0 -0
  707. /package/dist/{packages/composition → composition}/inline/src/index.js +0 -0
  708. /package/dist/{packages/composition → composition}/scroll-reel/src/ScrollReel.js +0 -0
  709. /package/dist/{packages/composition → composition}/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js +0 -0
  710. /package/dist/{packages/composition → composition}/scroll-reel/src/index.js +0 -0
  711. /package/dist/{packages/composition → composition}/sidebar/src/Sidebar.js +0 -0
  712. /package/dist/{packages/composition → composition}/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js +0 -0
  713. /package/dist/{packages/composition → composition}/sidebar/src/index.js +0 -0
  714. /package/dist/{packages/composition → composition}/split/src/Split.js +0 -0
  715. /package/dist/{packages/composition → composition}/split/src/Split.vue_vue_type_script_setup_true_lang.js +0 -0
  716. /package/dist/{packages/composition → composition}/split/src/index.js +0 -0
  717. /package/dist/{packages/composition → composition}/stack/src/Stack.js +0 -0
  718. /package/dist/{packages/composition → composition}/stack/src/Stack.vue_vue_type_script_setup_true_lang.js +0 -0
  719. /package/dist/{packages/composition → composition}/stack/src/index.js +0 -0
  720. /package/dist/{packages/core → core}/src/attrs.js +0 -0
  721. /package/dist/{packages/core → core}/src/icon-defaults.js +0 -0
  722. /package/dist/{packages/core → core}/src/props.js +0 -0
  723. /package/dist/{packages/core → core}/src/theme.js +0 -0
  724. /package/dist/{packages/labels → labels}/src/ancestor-disabled.js +0 -0
  725. /package/dist/{packages/labels → labels}/src/count-labels.js +0 -0
  726. /package/dist/{packages/labels → labels}/src/field-context.js +0 -0
  727. /package/dist/{packages/labels → labels}/src/index.js +0 -0
  728. /package/dist/{packages/labels → labels}/src/labels.js +0 -0
  729. /package/dist/{packages/layouts → layouts}/app-shell/src/AppShell.js +0 -0
  730. /package/dist/{packages/layouts → layouts}/app-shell/src/AppShell.vue_vue_type_script_setup_true_lang.js +0 -0
  731. /package/dist/{packages/layouts → layouts}/app-shell/src/index.js +0 -0
  732. /package/dist/{packages/layouts → layouts}/centered/src/Centered.js +0 -0
  733. /package/dist/{packages/layouts → layouts}/centered/src/Centered.vue_vue_type_script_setup_true_lang.js +0 -0
  734. /package/dist/{packages/layouts → layouts}/centered/src/index.js +0 -0
  735. /package/dist/{packages/layouts → layouts}/dashboard/src/Dashboard.js +0 -0
  736. /package/dist/{packages/layouts → layouts}/dashboard/src/index.js +0 -0
  737. /package/dist/{packages/blocks → layouts}/desktop-app-shell/src/index.js +0 -0
  738. /package/dist/{packages/layouts → layouts}/form-layout/src/FormLayout.js +0 -0
  739. /package/dist/{packages/layouts → layouts}/form-layout/src/FormLayout.vue_vue_type_script_setup_true_lang.js +0 -0
  740. /package/dist/{packages/layouts → layouts}/form-layout/src/index.js +0 -0
  741. /package/dist/{packages/layouts → layouts}/master-detail/src/MasterDetail.js +0 -0
  742. /package/dist/{packages/layouts → layouts}/master-detail/src/MasterDetail.vue_vue_type_script_setup_true_lang.js +0 -0
  743. /package/dist/{packages/layouts → layouts}/master-detail/src/index.js +0 -0
  744. /package/dist/{packages/layouts → layouts}/reading/src/Reading.js +0 -0
  745. /package/dist/{packages/layouts → layouts}/reading/src/Reading.vue_vue_type_script_setup_true_lang.js +0 -0
  746. /package/dist/{packages/layouts → layouts}/reading/src/index.js +0 -0
  747. /package/dist/{packages/layouts → layouts}/settings/src/Settings.js +0 -0
  748. /package/dist/{packages/layouts → layouts}/settings/src/Settings.vue_vue_type_script_setup_true_lang.js +0 -0
  749. /package/dist/{packages/layouts → layouts}/settings/src/index.js +0 -0
  750. /package/dist/{packages/layouts → layouts}/split-layout/src/SplitLayout.js +0 -0
  751. /package/dist/{packages/layouts → layouts}/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js +0 -0
  752. /package/dist/{packages/layouts → layouts}/split-layout/src/index.js +0 -0
  753. /package/dist/packages/{blocks → composition}/dashboard-grid/src/index.d.ts +0 -0
  754. /package/dist/packages/{blocks → layouts}/desktop-app-shell/src/index.d.ts +0 -0
  755. /package/dist/packages/{blocks → patterns}/app-header/src/index.d.ts +0 -0
  756. /package/dist/packages/{blocks → patterns}/empty-state/src/index.d.ts +0 -0
  757. /package/dist/packages/{blocks → patterns}/error-state/src/index.d.ts +0 -0
  758. /package/dist/packages/{blocks → patterns}/error-summary/src/ErrorSummary.vue.d.ts +0 -0
  759. /package/dist/packages/{blocks → patterns}/error-summary/src/index.d.ts +0 -0
  760. /package/dist/packages/{blocks → patterns}/form-actions/src/index.d.ts +0 -0
  761. /package/dist/packages/{blocks → patterns}/form-section/src/index.d.ts +0 -0
  762. /package/dist/packages/{blocks → patterns}/loading-state/src/LoadingState.vue.d.ts +0 -0
  763. /package/dist/packages/{blocks → patterns}/loading-state/src/index.d.ts +0 -0
  764. /package/dist/packages/{blocks → patterns}/metric-card/src/index.d.ts +0 -0
  765. /package/dist/packages/{blocks → patterns}/page-header/src/PageHeader.vue.d.ts +0 -0
  766. /package/dist/packages/{blocks → patterns}/page-header/src/index.d.ts +0 -0
  767. /package/dist/packages/{blocks → patterns}/row-actions/src/RowActions.vue.d.ts +0 -0
  768. /package/dist/packages/{blocks → patterns}/row-actions/src/index.d.ts +0 -0
  769. /package/dist/packages/{blocks → patterns}/sidebar-nav/src/SidebarNav.vue.d.ts +0 -0
  770. /package/dist/packages/{blocks → patterns}/sidebar-nav/src/index.d.ts +0 -0
  771. /package/dist/packages/{blocks → patterns}/title-bar/src/index.d.ts +0 -0
  772. /package/dist/packages/{blocks → patterns}/toast-stack/src/ToastStack.vue.d.ts +0 -0
  773. /package/dist/packages/{blocks → patterns}/toast-stack/src/index.d.ts +0 -0
  774. /package/dist/{packages/blocks → patterns}/app-header/src/index.js +0 -0
  775. /package/dist/{packages/blocks → patterns}/empty-state/src/index.js +0 -0
  776. /package/dist/{packages/blocks → patterns}/error-state/src/index.js +0 -0
  777. /package/dist/{packages/blocks → patterns}/error-summary/src/index.js +0 -0
  778. /package/dist/{packages/blocks → patterns}/form-actions/src/index.js +0 -0
  779. /package/dist/{packages/blocks → patterns}/form-section/src/index.js +0 -0
  780. /package/dist/{packages/blocks → patterns}/loading-state/src/index.js +0 -0
  781. /package/dist/{packages/blocks → patterns}/metric-card/src/index.js +0 -0
  782. /package/dist/{packages/blocks → patterns}/page-header/src/index.js +0 -0
  783. /package/dist/{packages/blocks → patterns}/row-actions/src/index.js +0 -0
  784. /package/dist/{packages/blocks → patterns}/sidebar-nav/src/index.js +0 -0
  785. /package/dist/{packages/blocks → patterns}/title-bar/src/index.js +0 -0
  786. /package/dist/{packages/blocks → patterns}/toast-stack/src/index.js +0 -0
  787. /package/dist/{packages/primitives → primitives}/accordion/src/Accordion.js +0 -0
  788. /package/dist/{packages/primitives → primitives}/accordion/src/Accordion.vue_vue_type_script_setup_true_lang.js +0 -0
  789. /package/dist/{packages/primitives → primitives}/accordion/src/index.js +0 -0
  790. /package/dist/{packages/primitives → primitives}/alert/src/Alert.js +0 -0
  791. /package/dist/{packages/primitives → primitives}/alert/src/Alert.vue_vue_type_script_setup_true_lang.js +0 -0
  792. /package/dist/{packages/primitives → primitives}/alert/src/index.js +0 -0
  793. /package/dist/{packages/primitives → primitives}/alert-dialog/src/AlertDialog.js +0 -0
  794. /package/dist/{packages/primitives → primitives}/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js +0 -0
  795. /package/dist/{packages/primitives → primitives}/alert-dialog/src/index.js +0 -0
  796. /package/dist/{packages/primitives → primitives}/avatar/src/Avatar.js +0 -0
  797. /package/dist/{packages/primitives → primitives}/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js +0 -0
  798. /package/dist/{packages/primitives → primitives}/avatar/src/index.js +0 -0
  799. /package/dist/{packages/primitives → primitives}/avatar-group/src/AvatarGroup.js +0 -0
  800. /package/dist/{packages/primitives → primitives}/avatar-group/src/AvatarGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  801. /package/dist/{packages/primitives → primitives}/avatar-group/src/index.js +0 -0
  802. /package/dist/{packages/primitives → primitives}/badge/src/Badge.js +0 -0
  803. /package/dist/{packages/primitives → primitives}/badge/src/Badge.vue_vue_type_script_setup_true_lang.js +0 -0
  804. /package/dist/{packages/primitives → primitives}/badge/src/index.js +0 -0
  805. /package/dist/{packages/primitives → primitives}/breadcrumb/src/Breadcrumb.js +0 -0
  806. /package/dist/{packages/primitives → primitives}/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js +0 -0
  807. /package/dist/{packages/primitives → primitives}/breadcrumb/src/index.js +0 -0
  808. /package/dist/{packages/primitives → primitives}/button/src/Button.js +0 -0
  809. /package/dist/{packages/primitives → primitives}/button/src/Button.vue_vue_type_script_setup_true_lang.js +0 -0
  810. /package/dist/{packages/primitives → primitives}/button/src/index.js +0 -0
  811. /package/dist/{packages/primitives → primitives}/calendar/src/Calendar.js +0 -0
  812. /package/dist/{packages/primitives → primitives}/calendar/src/index.js +0 -0
  813. /package/dist/{packages/primitives → primitives}/card/src/Card.js +0 -0
  814. /package/dist/{packages/primitives → primitives}/card/src/Card.vue_vue_type_script_setup_true_lang.js +0 -0
  815. /package/dist/{packages/primitives → primitives}/card/src/index.js +0 -0
  816. /package/dist/{packages/primitives → primitives}/carousel/src/Carousel.js +0 -0
  817. /package/dist/{packages/primitives → primitives}/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js +0 -0
  818. /package/dist/{packages/primitives → primitives}/carousel/src/index.js +0 -0
  819. /package/dist/{packages/primitives → primitives}/checkbox/src/Checkbox.js +0 -0
  820. /package/dist/{packages/primitives → primitives}/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js +0 -0
  821. /package/dist/{packages/primitives → primitives}/checkbox/src/index.js +0 -0
  822. /package/dist/{packages/primitives → primitives}/chip/src/Chip.js +0 -0
  823. /package/dist/{packages/primitives → primitives}/chip/src/Chip.vue_vue_type_script_setup_true_lang.js +0 -0
  824. /package/dist/{packages/primitives → primitives}/chip/src/index.js +0 -0
  825. /package/dist/{packages/primitives → primitives}/collapse/src/Collapse.js +0 -0
  826. /package/dist/{packages/primitives → primitives}/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js +0 -0
  827. /package/dist/{packages/primitives → primitives}/collapse/src/index.js +0 -0
  828. /package/dist/{packages/primitives → primitives}/color-picker/src/ColorPicker.js +0 -0
  829. /package/dist/{packages/primitives → primitives}/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js +0 -0
  830. /package/dist/{packages/primitives → primitives}/color-picker/src/index.js +0 -0
  831. /package/dist/{packages/primitives → primitives}/combobox/src/Combobox.js +0 -0
  832. /package/dist/{packages/primitives → primitives}/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js +0 -0
  833. /package/dist/{packages/primitives → primitives}/combobox/src/index.js +0 -0
  834. /package/dist/{packages/primitives → primitives}/command/src/Command.js +0 -0
  835. /package/dist/{packages/primitives → primitives}/command/src/Command.vue_vue_type_script_setup_true_lang.js +0 -0
  836. /package/dist/{packages/primitives → primitives}/command/src/index.js +0 -0
  837. /package/dist/{packages/primitives → primitives}/context-menu/src/ContextMenu.js +0 -0
  838. /package/dist/{packages/primitives → primitives}/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js +0 -0
  839. /package/dist/{packages/primitives → primitives}/context-menu/src/index.js +0 -0
  840. /package/dist/{packages/primitives → primitives}/copy-button/src/CopyButton.js +0 -0
  841. /package/dist/{packages/primitives → primitives}/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js +0 -0
  842. /package/dist/{packages/primitives → primitives}/data-grid/src/DataGrid.js +0 -0
  843. /package/dist/{packages/primitives → primitives}/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js +0 -0
  844. /package/dist/{packages/primitives → primitives}/data-grid/src/index.js +0 -0
  845. /package/dist/{packages/primitives → primitives}/date-picker/src/DatePicker.js +0 -0
  846. /package/dist/{packages/primitives → primitives}/date-picker/src/index.js +0 -0
  847. /package/dist/{packages/primitives → primitives}/date-range-picker/src/DateRangePicker.js +0 -0
  848. /package/dist/{packages/primitives → primitives}/date-range-picker/src/index.js +0 -0
  849. /package/dist/{packages/primitives → primitives}/date-time-picker/src/DateTimePicker.js +0 -0
  850. /package/dist/{packages/primitives → primitives}/date-time-picker/src/index.js +0 -0
  851. /package/dist/{packages/primitives → primitives}/date-time-range-picker/src/DateTimeRangePicker.js +0 -0
  852. /package/dist/{packages/primitives → primitives}/date-time-range-picker/src/index.js +0 -0
  853. /package/dist/{packages/primitives → primitives}/dialog/src/Dialog.js +0 -0
  854. /package/dist/{packages/primitives → primitives}/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js +0 -0
  855. /package/dist/{packages/primitives → primitives}/dialog/src/index.js +0 -0
  856. /package/dist/{packages/primitives → primitives}/drawer/src/Drawer.js +0 -0
  857. /package/dist/{packages/primitives → primitives}/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js +0 -0
  858. /package/dist/{packages/primitives → primitives}/drawer/src/index.js +0 -0
  859. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/DropdownMenu.js +0 -0
  860. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js +0 -0
  861. /package/dist/{packages/primitives → primitives}/dropdown-menu/src/index.js +0 -0
  862. /package/dist/{packages/primitives → primitives}/editable/src/Editable.js +0 -0
  863. /package/dist/{packages/primitives → primitives}/editable/src/Editable.vue_vue_type_script_setup_true_lang.js +0 -0
  864. /package/dist/{packages/primitives → primitives}/editable/src/index.js +0 -0
  865. /package/dist/{packages/primitives → primitives}/field/src/Field.js +0 -0
  866. /package/dist/{packages/primitives → primitives}/field/src/Field.vue_vue_type_script_setup_true_lang.js +0 -0
  867. /package/dist/{packages/primitives → primitives}/field/src/index.js +0 -0
  868. /package/dist/{packages/primitives → primitives}/fieldset/src/Fieldset.js +0 -0
  869. /package/dist/{packages/primitives → primitives}/fieldset/src/Fieldset.vue_vue_type_script_setup_true_lang.js +0 -0
  870. /package/dist/{packages/primitives → primitives}/fieldset/src/index.js +0 -0
  871. /package/dist/{packages/primitives → primitives}/file-upload/src/FileUpload.js +0 -0
  872. /package/dist/{packages/primitives → primitives}/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js +0 -0
  873. /package/dist/{packages/primitives → primitives}/file-upload/src/index.js +0 -0
  874. /package/dist/{packages/primitives → primitives}/hover-card/src/HoverCard.js +0 -0
  875. /package/dist/{packages/primitives → primitives}/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js +0 -0
  876. /package/dist/{packages/primitives → primitives}/hover-card/src/index.js +0 -0
  877. /package/dist/{packages/primitives → primitives}/icon-button/src/IconButton.js +0 -0
  878. /package/dist/{packages/primitives → primitives}/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js +0 -0
  879. /package/dist/{packages/primitives → primitives}/icon-button/src/index.js +0 -0
  880. /package/dist/{packages/primitives → primitives}/indicator/src/Indicator.js +0 -0
  881. /package/dist/{packages/primitives → primitives}/indicator/src/Indicator.vue_vue_type_script_setup_true_lang.js +0 -0
  882. /package/dist/{packages/primitives → primitives}/indicator/src/index.js +0 -0
  883. /package/dist/{packages/primitives → primitives}/inline-error/src/InlineError.js +0 -0
  884. /package/dist/{packages/primitives → primitives}/inline-error/src/InlineError.vue_vue_type_script_setup_true_lang.js +0 -0
  885. /package/dist/{packages/primitives → primitives}/inline-error/src/index.js +0 -0
  886. /package/dist/{packages/primitives → primitives}/kbd/src/Kbd.js +0 -0
  887. /package/dist/{packages/primitives → primitives}/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js +0 -0
  888. /package/dist/{packages/primitives → primitives}/kbd/src/index.js +0 -0
  889. /package/dist/{packages/primitives → primitives}/link/src/Link.js +0 -0
  890. /package/dist/{packages/primitives → primitives}/link/src/Link.vue_vue_type_script_setup_true_lang.js +0 -0
  891. /package/dist/{packages/primitives → primitives}/link/src/index.js +0 -0
  892. /package/dist/{packages/primitives → primitives}/list/src/List.js +0 -0
  893. /package/dist/{packages/primitives → primitives}/list/src/List.vue_vue_type_script_setup_true_lang.js +0 -0
  894. /package/dist/{packages/primitives → primitives}/list/src/ListItem.js +0 -0
  895. /package/dist/{packages/primitives → primitives}/list/src/index.js +0 -0
  896. /package/dist/{packages/primitives → primitives}/live-region/src/LiveRegion.js +0 -0
  897. /package/dist/{packages/primitives → primitives}/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js +0 -0
  898. /package/dist/{packages/primitives → primitives}/live-region/src/context.js +0 -0
  899. /package/dist/{packages/primitives → primitives}/live-region/src/index.js +0 -0
  900. /package/dist/{packages/primitives → primitives}/live-region/src/useAnnounce.js +0 -0
  901. /package/dist/{packages/primitives → primitives}/menubar/src/Menubar.js +0 -0
  902. /package/dist/{packages/primitives → primitives}/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js +0 -0
  903. /package/dist/{packages/primitives → primitives}/menubar/src/index.js +0 -0
  904. /package/dist/{packages/primitives → primitives}/meter/src/Meter.js +0 -0
  905. /package/dist/{packages/primitives → primitives}/meter/src/Meter.vue_vue_type_script_setup_true_lang.js +0 -0
  906. /package/dist/{packages/primitives → primitives}/meter/src/index.js +0 -0
  907. /package/dist/{packages/primitives → primitives}/navigation-menu/src/NavigationMenu.js +0 -0
  908. /package/dist/{packages/primitives → primitives}/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js +0 -0
  909. /package/dist/{packages/primitives → primitives}/navigation-menu/src/index.js +0 -0
  910. /package/dist/{packages/primitives → primitives}/number-field/src/NumberField.js +0 -0
  911. /package/dist/{packages/primitives → primitives}/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js +0 -0
  912. /package/dist/{packages/primitives → primitives}/number-field/src/index.js +0 -0
  913. /package/dist/{packages/primitives → primitives}/otp-input/src/OtpInput.js +0 -0
  914. /package/dist/{packages/primitives → primitives}/otp-input/src/OtpInput.vue_vue_type_script_setup_true_lang.js +0 -0
  915. /package/dist/{packages/primitives → primitives}/otp-input/src/index.js +0 -0
  916. /package/dist/{packages/primitives → primitives}/pagination/src/Pagination.js +0 -0
  917. /package/dist/{packages/primitives → primitives}/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js +0 -0
  918. /package/dist/{packages/primitives → primitives}/pagination/src/index.js +0 -0
  919. /package/dist/{packages/primitives → primitives}/popover/src/Popover.js +0 -0
  920. /package/dist/{packages/primitives → primitives}/popover/src/Popover.vue_vue_type_script_setup_true_lang.js +0 -0
  921. /package/dist/{packages/primitives → primitives}/popover/src/index.js +0 -0
  922. /package/dist/{packages/primitives → primitives}/progress/src/Progress.js +0 -0
  923. /package/dist/{packages/primitives → primitives}/progress/src/Progress.vue_vue_type_script_setup_true_lang.js +0 -0
  924. /package/dist/{packages/primitives → primitives}/progress/src/index.js +0 -0
  925. /package/dist/{packages/primitives → primitives}/radial-progress/src/RadialProgress.js +0 -0
  926. /package/dist/{packages/primitives → primitives}/radial-progress/src/RadialProgress.vue_vue_type_script_setup_true_lang.js +0 -0
  927. /package/dist/{packages/primitives → primitives}/radial-progress/src/index.js +0 -0
  928. /package/dist/{packages/primitives → primitives}/radio-group/src/RadioGroup.js +0 -0
  929. /package/dist/{packages/primitives → primitives}/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  930. /package/dist/{packages/primitives → primitives}/radio-group/src/index.js +0 -0
  931. /package/dist/{packages/primitives → primitives}/rating/src/Rating.js +0 -0
  932. /package/dist/{packages/primitives → primitives}/rating/src/Rating.vue_vue_type_script_setup_true_lang.js +0 -0
  933. /package/dist/{packages/primitives → primitives}/rating/src/index.js +0 -0
  934. /package/dist/{packages/primitives → primitives}/scroll-area/src/ScrollArea.js +0 -0
  935. /package/dist/{packages/primitives → primitives}/scroll-area/src/ScrollArea.vue_vue_type_script_setup_true_lang.js +0 -0
  936. /package/dist/{packages/primitives → primitives}/scroll-area/src/index.js +0 -0
  937. /package/dist/{packages/primitives → primitives}/segmented-control/src/SegmentedControl.js +0 -0
  938. /package/dist/{packages/primitives → primitives}/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js +0 -0
  939. /package/dist/{packages/primitives → primitives}/segmented-control/src/index.js +0 -0
  940. /package/dist/{packages/primitives → primitives}/select/src/Select.js +0 -0
  941. /package/dist/{packages/primitives → primitives}/select/src/Select.vue_vue_type_script_setup_true_lang.js +0 -0
  942. /package/dist/{packages/primitives → primitives}/select/src/index.js +0 -0
  943. /package/dist/{packages/primitives → primitives}/separator/src/Separator.js +0 -0
  944. /package/dist/{packages/primitives → primitives}/separator/src/Separator.vue_vue_type_script_setup_true_lang.js +0 -0
  945. /package/dist/{packages/primitives → primitives}/separator/src/index.js +0 -0
  946. /package/dist/{packages/primitives → primitives}/skeleton/src/Skeleton.js +0 -0
  947. /package/dist/{packages/primitives → primitives}/skeleton/src/Skeleton.vue_vue_type_script_setup_true_lang.js +0 -0
  948. /package/dist/{packages/primitives → primitives}/skeleton/src/index.js +0 -0
  949. /package/dist/{packages/primitives → primitives}/skip-link/src/SkipLink.js +0 -0
  950. /package/dist/{packages/primitives → primitives}/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js +0 -0
  951. /package/dist/{packages/primitives → primitives}/skip-link/src/index.js +0 -0
  952. /package/dist/{packages/primitives → primitives}/slider/src/Slider.js +0 -0
  953. /package/dist/{packages/primitives → primitives}/slider/src/Slider.vue_vue_type_script_setup_true_lang.js +0 -0
  954. /package/dist/{packages/primitives → primitives}/slider/src/index.js +0 -0
  955. /package/dist/{packages/primitives → primitives}/speed-dial/src/SpeedDial.js +0 -0
  956. /package/dist/{packages/primitives → primitives}/speed-dial/src/SpeedDial.vue_vue_type_script_setup_true_lang.js +0 -0
  957. /package/dist/{packages/primitives → primitives}/speed-dial/src/index.js +0 -0
  958. /package/dist/{packages/primitives → primitives}/spinner/src/Spinner.js +0 -0
  959. /package/dist/{packages/primitives → primitives}/spinner/src/Spinner.vue_vue_type_script_setup_true_lang.js +0 -0
  960. /package/dist/{packages/primitives → primitives}/spinner/src/index.js +0 -0
  961. /package/dist/{packages/primitives → primitives}/stepper/src/Stepper.js +0 -0
  962. /package/dist/{packages/primitives → primitives}/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js +0 -0
  963. /package/dist/{packages/primitives → primitives}/stepper/src/index.js +0 -0
  964. /package/dist/{packages/primitives → primitives}/surface/src/Surface.js +0 -0
  965. /package/dist/{packages/primitives → primitives}/surface/src/Surface.vue_vue_type_script_setup_true_lang.js +0 -0
  966. /package/dist/{packages/primitives → primitives}/surface/src/index.js +0 -0
  967. /package/dist/{packages/primitives → primitives}/switch/src/Switch.js +0 -0
  968. /package/dist/{packages/primitives → primitives}/switch/src/Switch.vue_vue_type_script_setup_true_lang.js +0 -0
  969. /package/dist/{packages/primitives → primitives}/switch/src/index.js +0 -0
  970. /package/dist/{packages/primitives → primitives}/table/src/Table.js +0 -0
  971. /package/dist/{packages/primitives → primitives}/table/src/Table.vue_vue_type_script_setup_true_lang.js +0 -0
  972. /package/dist/{packages/primitives → primitives}/table/src/TableCell.js +0 -0
  973. /package/dist/{packages/primitives → primitives}/table/src/TableCell.vue_vue_type_script_setup_true_lang.js +0 -0
  974. /package/dist/{packages/primitives → primitives}/table/src/TableHead.js +0 -0
  975. /package/dist/{packages/primitives → primitives}/table/src/TableHead.vue_vue_type_script_setup_true_lang.js +0 -0
  976. /package/dist/{packages/primitives → primitives}/table/src/TableRow.js +0 -0
  977. /package/dist/{packages/primitives → primitives}/table/src/TableRow.vue_vue_type_script_setup_true_lang.js +0 -0
  978. /package/dist/{packages/primitives → primitives}/table/src/index.js +0 -0
  979. /package/dist/{packages/primitives → primitives}/tabs/src/Tabs.js +0 -0
  980. /package/dist/{packages/primitives → primitives}/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js +0 -0
  981. /package/dist/{packages/primitives → primitives}/tabs/src/index.js +0 -0
  982. /package/dist/{packages/primitives → primitives}/tags-input/src/TagsInput.js +0 -0
  983. /package/dist/{packages/primitives → primitives}/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js +0 -0
  984. /package/dist/{packages/primitives → primitives}/tags-input/src/index.js +0 -0
  985. /package/dist/{packages/primitives → primitives}/text-field/src/TextField.js +0 -0
  986. /package/dist/{packages/primitives → primitives}/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js +0 -0
  987. /package/dist/{packages/primitives → primitives}/text-field/src/index.js +0 -0
  988. /package/dist/{packages/primitives → primitives}/textarea/src/Textarea.js +0 -0
  989. /package/dist/{packages/primitives → primitives}/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js +0 -0
  990. /package/dist/{packages/primitives → primitives}/textarea/src/index.js +0 -0
  991. /package/dist/{packages/primitives → primitives}/time-picker/src/TimePicker.js +0 -0
  992. /package/dist/{packages/primitives → primitives}/time-picker/src/index.js +0 -0
  993. /package/dist/{packages/primitives → primitives}/timeline/src/Timeline.js +0 -0
  994. /package/dist/{packages/primitives → primitives}/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js +0 -0
  995. /package/dist/{packages/primitives → primitives}/timeline/src/TimelineItem.js +0 -0
  996. /package/dist/{packages/primitives → primitives}/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js +0 -0
  997. /package/dist/{packages/primitives → primitives}/toast/src/Toast.js +0 -0
  998. /package/dist/{packages/primitives → primitives}/toast/src/Toast.vue_vue_type_script_setup_true_lang.js +0 -0
  999. /package/dist/{packages/primitives → primitives}/toast/src/ToastItem.js +0 -0
  1000. /package/dist/{packages/primitives → primitives}/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js +0 -0
  1001. /package/dist/{packages/primitives → primitives}/toast/src/index.js +0 -0
  1002. /package/dist/{packages/primitives → primitives}/toggle-group/src/ToggleGroup.js +0 -0
  1003. /package/dist/{packages/primitives → primitives}/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js +0 -0
  1004. /package/dist/{packages/primitives → primitives}/toggle-group/src/index.js +0 -0
  1005. /package/dist/{packages/primitives → primitives}/toolbar/src/Toolbar.js +0 -0
  1006. /package/dist/{packages/primitives → primitives}/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js +0 -0
  1007. /package/dist/{packages/primitives → primitives}/toolbar/src/ToolbarSeparator.js +0 -0
  1008. /package/dist/{packages/primitives → primitives}/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js +0 -0
  1009. /package/dist/{packages/primitives → primitives}/toolbar/src/index.js +0 -0
  1010. /package/dist/{packages/primitives → primitives}/tooltip/src/Tooltip.js +0 -0
  1011. /package/dist/{packages/primitives → primitives}/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js +0 -0
  1012. /package/dist/{packages/primitives → primitives}/tooltip/src/index.js +0 -0
  1013. /package/dist/{packages/primitives → primitives}/tree-view/src/TreeView.js +0 -0
  1014. /package/dist/{packages/primitives → primitives}/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js +0 -0
  1015. /package/dist/{packages/primitives → primitives}/tree-view/src/TreeViewNode.js +0 -0
  1016. /package/dist/{packages/primitives → primitives}/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js +0 -0
  1017. /package/dist/{packages/primitives → primitives}/tree-view/src/context.js +0 -0
  1018. /package/dist/{packages/primitives → primitives}/tree-view/src/index.js +0 -0
  1019. /package/dist/{packages/primitives → primitives}/visually-hidden/src/VisuallyHidden.js +0 -0
  1020. /package/dist/{packages/primitives → primitives}/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js +0 -0
  1021. /package/dist/{packages/primitives → primitives}/visually-hidden/src/index.js +0 -0
  1022. /package/dist/{packages/primitives → primitives}/window-controls/src/WindowControls.js +0 -0
  1023. /package/dist/{packages/primitives → primitives}/window-controls/src/index.js +0 -0
package/README.md CHANGED
@@ -1,3 +1,12 @@
1
+ <!-- The README's structure is ten sections, in this order: what Loom is, install,
2
+ your first component, tokens and theming, the accessibility bar, evidence
3
+ tiers, templates, module boundaries, governance and contributing,
4
+ compatibility and requirements. A section exists because a consumer must
5
+ learn that thing to use Loom — prose that answers none of the ten questions
6
+ does not earn a section, however fond of it we are. The checklist, with the
7
+ referent each section must cite, lives in the governing issue
8
+ (ecoma-io/loom#338). -->
9
+
1
10
  <p align="center">
2
11
  <a href="https://github.com/ecoma-io/loom/actions/workflows/ci.yml"><img src="https://github.com/ecoma-io/loom/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
3
12
  <a href="https://github.com/ecoma-io/loom/actions/workflows/analysis.yml"><img src="https://img.shields.io/badge/analysis-semgrep-purple.svg" alt="Analysis" /></a>
@@ -10,25 +19,25 @@
10
19
  </p>
11
20
 
12
21
  <p align="center">
13
- <img src=".github/assets/banner.png" alt="Loom — an opinionated UI system and composition library for cross-platform web applications" width="100%" />
22
+ <img src=".github/assets/banner.png" alt="Loom — an Application Interface System for Vue" width="100%" />
14
23
  </p>
15
24
 
16
25
  <h1 align="center">Loom</h1>
17
26
 
18
27
  <p align="center">
19
- <strong>Opinionated UI system &amp; composition library for cross-platform web applications.</strong><br />
28
+ <strong>An Application Interface System for Vue.</strong><br />
20
29
  An open-source, accessibility-first component library and design-token system —
21
- Vue&nbsp;3, TypeScript and Tailwind&nbsp;CSS — from mobile to ultrawide.<br />
22
- <em>Build the interface once. Ship it everywhere. Never re-decide what a button is.</em>
30
+ Vue&nbsp;3, TypeScript and Tailwind&nbsp;CSS.<br />
31
+ <em>Build the interface once. Never re-decide what a button is.</em>
23
32
  </p>
24
33
 
25
34
  <p align="center">
26
- <a href="https://loom.ecoma.io"><strong>Documentation&nbsp;→</strong></a>
35
+ <a href="https://ecoma.io/docs/contribute/design-system/"><strong>Documentation&nbsp;→</strong></a>
27
36
  </p>
28
37
 
29
38
  ---
30
39
 
31
- ## Every product rewrites its buttons. That is the tax Loom exists to stop paying.
40
+ ## What Loom is
32
41
 
33
42
  A design system is not a folder of components. It is a decision, made once, that
34
43
  every screen inherits — how far apart two things sit, how a dialog gives focus
@@ -38,133 +47,211 @@ differently, every sprint, by whoever is closest to the deadline.
38
47
 
39
48
  **Loom is where that decision lives.** One vocabulary of design tokens, one set
40
49
  of accessible UI primitives, one motion language — consumed by every surface,
41
- owned by none of them. Open source under Apache-2.0, so you can take it into
42
- your own product on the same terms.
43
-
44
- ## Built for cross-platform web applications
45
-
46
- Loom is designed for applications that run everywhere the web does: browsers,
47
- progressive web apps, Electron, and Tauri (desktop and mobile). A component
48
- library for products that need desktop window chrome, responsive layouts that
49
- stretch from phone to ultrawide, and an opinionated visual language that is
50
- ready to ship — not a skeleton to assemble.
51
-
52
- That premise demands more than a component dump. It demands:
53
-
54
- - **Responsive composition**, not just responsive CSS — layout primitives that
55
- adapt to viewport and container, so a sidebar collapses at the right width
56
- and a master-detail panel stacks on mobile without the host writing a
57
- breakpoint.
58
- - **Desktop awareness** — title bars, window controls, safe-area insets. A
59
- Tauri or Electron window has chrome a web page does not, and the components
60
- that live in it need to know that.
61
- - **Content never stretches to infinity** — on an ultrawide monitor, readable
62
- content is bounded and the extra viewport goes to intentional whitespace,
63
- side panels, or supplementary content. Never to stretching.
64
- - **Same design language on every viewport** — a button is the same button at
65
- 320px and 3440px. The layout around it changes; the button does not.
66
-
67
- Loom originated within the [Ecoma](https://ecoma.io) ecosystem and is developed
68
- as an independent open-source UI system.
50
+ owned by none of them.
69
51
 
70
- ## What Loom gives you
52
+ **Loom owns interface decisions, not application decisions.** What it standardises
53
+ is the reusable layer — visual language, accessibility, interaction semantics,
54
+ responsive behaviour, composition, patterns, templates. What requires knowing
55
+ what your product _is_ belongs to your product. That split is the one rule that
56
+ decides most questions about what belongs here.
71
57
 
72
58
  | | |
73
59
  | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
74
60
  | **Design tokens** | Colour, spacing, radius, elevation, typography and motion — one source that light mode and dark mode both read from, so a rebrand is an edit rather than an audit. |
75
61
  | **UI primitives** | The generic controls every product needs and no product should own: buttons, inputs, selects, dialogs, menus, toasts, tooltips, skeletons, switches, progress. |
76
62
  | **Composition primitives** | Layout building blocks — Stack, Grid, Split, Center, Sidebar — that express spatial intent and adapt to viewport without the host writing breakpoint queries. |
77
- | **Blocks** | Compositions worth standardising once — empty states, page headers, title bars, sidebar navigation — assembled from primitives, never from scratch. |
63
+ | **Patterns** | Compositions worth standardising once — empty states, page headers, title bars, sidebar navigation — assembled from primitives, never from scratch. |
78
64
  | **Showcase** | Demonstrations, in this documentation site, of what the parts produce when they compose — for discovery and teaching. A showcase is read; it is not a starting point to copy. |
79
- | **Templates** | Copyable prebuilt pages — AI Chat, Dashboard, Music Player — to take into an application and build on. One page each; routing, auth and backend stay with the consumer. |
65
+ | **Templates** | Copyable prebuilt pages — Starter, Analytics, Workspace settings — to take into an application and build on. One page each; routing, auth and backend stay with the consumer. |
80
66
  | **Accessibility, built in** | Keyboard paths, focus restoration, accessible names and reduced-motion behaviour ship inside the component. WCAG is the acceptance bar, not a checklist run afterwards. |
81
67
  | **Theming that survives** | Every visual decision is a token reference, so white-labelling a tenant is configuration rather than a fork. |
82
68
  | **Typed and tree-shakeable** | Ships ES modules with TypeScript types. Consumers bundle what they import and nothing more. |
83
69
 
84
- ## Who this is for
70
+ It is for teams building Vue applications who want the interface layer decided:
71
+ design-system maintainers who want the token model, the artifact conventions and
72
+ the accessibility bar readable in the open, and anyone tired of re-deciding what
73
+ a button is — ship the defaults, override the tokens that don't fit, leave the
74
+ rest alone. Loom originated within the [Ecoma](https://ecoma.io) ecosystem and is
75
+ developed as an independent open-source UI system.
85
76
 
86
- - **Teams building cross-platform web applications** — especially those
87
- targeting desktop (Electron, Tauri) alongside browser and mobile, where
88
- existing component libraries assume a web page, not an application window.
89
- - **Design-system maintainers** — the token model, the artifact-per-primitive
90
- convention and the accessibility bar are all readable in the open, Apache-2.0,
91
- and free to borrow.
92
- - **Anyone tired of re-deciding what a button is** — Loom is opinionated so
93
- you don't have to be. Ship the defaults, override the tokens that don't fit,
94
- and leave the rest alone.
77
+ ## Install
95
78
 
96
- ## Getting started
97
-
98
- Requirements: **Node ≥ 24** and **pnpm 11** (pinned in `package.json`, so
99
- Corepack fetches the right one for you).
79
+ Loom ships as one npm package — the components, the theme composable and the
80
+ stylesheet entry behind a single install:
100
81
 
101
82
  ```bash
102
- git clone https://github.com/ecoma-io/loom.git
103
- cd loom
104
- pnpm install
83
+ pnpm add @ecoma-io/loom
105
84
  ```
106
85
 
107
- `pnpm install` also installs the Git hooks, so formatting, linting and commit
108
- message checks run before anything reaches a branch.
86
+ One import is the whole styling surface a normal host needs — tokens, the
87
+ self-hosted fonts, base element styling and the motion library ride along:
109
88
 
110
- ```bash
111
- pnpm lint # ESLint
112
- pnpm typecheck # tsc --noEmit
113
- pnpm test # Vitest
114
- pnpm e2e # Playwright
115
- pnpm format # Prettier, in place
89
+ ```css
90
+ @import "@ecoma-io/loom/styles/global.css";
116
91
  ```
117
92
 
118
- The component surface is landing in the open, one primitive at a time
119
- `packages/loom/src/index.ts` is always the complete export list. Follow along or ask for
120
- something specific in [the issues](https://github.com/ecoma-io/loom/issues).
93
+ It needs Vue 3.5 or newer as a peer and Tailwind CSS 4 in your build; the
94
+ [compatibility table](#compatibility-and-requirements) has the full list. The
95
+ [documentation site](https://ecoma.io/docs/contribute/design-system/) walks an
96
+ empty Vue application to a rendered, themed component.
121
97
 
122
- ## Contributing
98
+ ## Your first component
123
99
 
124
- Loom holds what is **generic** — an affordance more than one product reaches for
125
- the same way. That single rule decides most questions about what belongs here,
126
- and [CONTRIBUTING.md](CONTRIBUTING.md) covers the rest: the commit format, the
127
- tiers of tests, and what a reviewer will look for.
100
+ ```vue
101
+ <script setup lang="ts">
102
+ import { Button } from "@ecoma-io/loom";
103
+ </script>
128
104
 
129
- Everyone taking part is held to the [Code of Conduct](CODE_OF_CONDUCT.md).
130
- Security issues go through [SECURITY.md](SECURITY.md) — never a public issue.
131
-
132
- ## Frequently asked
105
+ <template>
106
+ <Button variant="primary" @click="save">Save</Button>
107
+ </template>
108
+ ```
133
109
 
134
- **Can I use Loom outside Ecoma?**
135
- Yes. It is Apache-2.0, has no runtime dependency on any Ecoma platform, and is
136
- designed to be consumed as an ordinary npm package.
110
+ Everything importable lives behind the one package: [packages/loom/src/index.ts](packages/loom/src/index.ts)
111
+ is the complete export list, and says so in its own docblock. The generic controls
112
+ sit beside composition primitives that adapt to viewport and container — a
113
+ sidebar collapses at the right width, a master-detail panel stacks on mobile,
114
+ and on an ultrawide monitor content is bounded at readable widths, the extra
115
+ viewport going to intentional whitespace rather than stretching.
116
+
117
+ A `class` you pass merges with the component's own instead of replacing it —
118
+ `cn` ships from the same package and is Tailwind-aware, so your `px-4` resolves
119
+ against the component's `px-6` rather than both shipping and stylesheet order
120
+ deciding the winner.
121
+
122
+ Each component's page on the documentation site carries an API table generated
123
+ from the component's own `defineProps`, so the documented surface cannot drift
124
+ from the shipped one.
125
+
126
+ ## Tokens and theming
127
+
128
+ Every visual decision is a token reference, and the tokens have one home:
129
+ [packages/theme-core/src/theme.css](packages/theme-core/src/theme.css) is the
130
+ source of truth. Light mode and dark mode both derive from that one set — dark
131
+ is not a second theme anyone maintains, which is why the two cannot drift apart.
132
+ A `useTheme` composable switches between light, dark and system preference.
133
+
134
+ Because a token is a CSS custom property rather than a Tailwind class, the token
135
+ layer is framework-neutral and usable anywhere; the components that consume it
136
+ are Vue. Rebranding is editing tokens; white-labelling a tenant is configuration,
137
+ not a fork.
138
+
139
+ ## The accessibility bar
140
+
141
+ Accessibility ships inside the component, not as a follow-up: keyboard operation
142
+ with visible focus, focus restored to the trigger when an overlay closes,
143
+ accessible names, no state conveyed by colour alone, and a
144
+ `prefers-reduced-motion` path through the motion library.
145
+
146
+ The bar is defined, not aspirational. `WCAG_TAGS` in
147
+ [packages/core/src/a11y-scope.ts](packages/core/src/a11y-scope.ts) is the closed
148
+ rule set the library holds itself to — the axe rules mapping to a WCAG Level A
149
+ or AA success criterion — and the browser gate that enforces it carries no
150
+ excludes. Every component also declares an `a11y.json` claim beside its source,
151
+ held by a gate against the role → requirement matrix in
152
+ [packages/core/src/a11y-contract.ts](packages/core/src/a11y-contract.ts), so a
153
+ requirement nothing answers yet is recorded as a named exception rather than
154
+ silently missing. An accessibility bug is a bug, and it is filed and fixed as one.
155
+
156
+ ## Evidence tiers
157
+
158
+ The claims above are pinned at three runtimes — the same three the
159
+ accessibility contract names (`browserless`, `harness`, `sweep`):
160
+
161
+ - **browserless** — the jsdom sweep mounts every demo and holds it to its
162
+ component's accessibility claim, no browser required.
163
+ - **harness** — a Vite dev server mounts one demo at a time, so a component's
164
+ browser specs run in seconds without paying for a site build.
165
+ - **sweep** — the site-wide suite over the built documentation site: axe,
166
+ contrast, target size, keyboard, focus-not-obscured, motion, responsive.
167
+
168
+ Beside them, unit and integration tests live next to each component's source and
169
+ the browser tier lives apart; [CONTRIBUTING.md](CONTRIBUTING.md) holds the
170
+ contract for all of it. The documentation is held to the same honesty: token
171
+ tables are generated from `theme.css` and API tables from the components
172
+ themselves — generated, never transcribed, so a page cannot quietly disagree
173
+ with the code it describes.
174
+
175
+ ## Templates
176
+
177
+ An Official Template is a copyable prebuilt **page** — a starting point composed
178
+ from Loom components and patterns, taken into an application and built on:
179
+ Starter, Analytics, Workspace settings. Where a pattern is a component you
180
+ compose with and the showcase is a demonstration you read, a template is a page
181
+ you start from. Routing, auth and backend stay with the consumer.
182
+
183
+ Templates consume the public `@ecoma-io/loom` package exactly as an external
184
+ consumer would — no internal imports, nothing the published package does not
185
+ have — because if a template cannot build against the published surface, that is
186
+ a defect in the surface. [docs/templates/contract.md](docs/templates/contract.md)
187
+ states the artifact kind's law, and the template suite holds every template to
188
+ smoke, axe in light and dark, keyboard and responsive gates.
189
+
190
+ ## Module boundaries
191
+
192
+ Loom is layered, and the direction is one way: core → labels → primitives →
193
+ composition → patterns → layouts → facade. The facade — the `@ecoma-io/loom`
194
+ package you install — is the only import surface: its exports map offers the
195
+ components, the `./a11y` and `./theme` entries, and the stylesheet files, and
196
+ nothing inside the monorepo is public API.
197
+
198
+ The boundary is enforced twice, by two readers that see different things:
199
+ [tools/check-architecture.ts](tools/check-architecture.ts) matches the import
200
+ specifier text, and [archkeep](https://github.com/ecoma-io/archkeep) resolves
201
+ each specifier through the TypeScript config and judges the resolved target
202
+ against [module-boundaries.config.mjs](module-boundaries.config.mjs). The
203
+ [architecture contract](docs/architecture/contract.md) records which invariant
204
+ each reader owns.
205
+
206
+ ## Governance and contributing
207
+
208
+ What Loom takes is decided by the one rule: Loom holds what is **generic** — an
209
+ affordance more than one product reaches for the same way. Everything else about
210
+ working here is the contract, and the contract is
211
+ [CONTRIBUTING.md](CONTRIBUTING.md): the commit format, the test tiers, the
212
+ Semgrep rules, the accessibility bar, and how a pull request lands.
213
+
214
+ To work on Loom itself:
137
215
 
138
- **Why Apache-2.0 and not MIT?**
139
- Apache-2.0 carries an explicit patent grant. For a component library that ends
140
- up embedded in commercial products, that is the difference between "probably
141
- fine" and "written down".
216
+ ```bash
217
+ git clone https://github.com/ecoma-io/loom.git
218
+ cd loom
219
+ pnpm install
220
+ ```
142
221
 
143
- **Which framework does it target?**
144
- Vue 3 with TypeScript, styled through Tailwind CSS. The design tokens themselves
145
- are framework-neutral CSS custom properties, so they are usable anywhere.
222
+ `pnpm install` also installs the Git hooks, so formatting, linting and commit
223
+ message checks run before anything reaches a branch. The component surface is
224
+ landing in the open, one artifact at a time — follow along or ask for something
225
+ specific in [the issues](https://github.com/ecoma-io/loom/issues).
146
226
 
147
- **Does it support dark mode?**
148
- Dark is derived from the same token set as light rather than maintained as a
149
- second theme, which is why the two cannot drift apart. A `useTheme` composable
150
- switches between light, dark, and system preference.
227
+ Everyone taking part is held to the [Code of Conduct](CODE_OF_CONDUCT.md).
228
+ Security issues go through [SECURITY.md](SECURITY.md) never a public issue.
151
229
 
152
- **How is accessibility verified?**
153
- Keyboard operation, focus restoration and accessible naming are pinned by tests
154
- and reviewed on every pull request see the accessibility section of
155
- [CONTRIBUTING.md](CONTRIBUTING.md).
230
+ Loom is [Apache-2.0](LICENSE) — an explicit patent grant, which for a component
231
+ library that ends up embedded in commercial products is the difference between
232
+ "probably fine" and "written down" with no runtime dependency on any Ecoma
233
+ platform, so consuming it as an ordinary npm package includes consuming it
234
+ outside Ecoma. Use it, ship it, fork it, sell what you build with it.
156
235
 
157
- **What about responsive layouts?**
158
- Loom provides composition primitives (Stack, Grid, Split, Center, Sidebar) that
159
- express layout intent and adapt to viewport width. Content is bounded at
160
- readable widths on ultrawide screens — extra viewport goes to whitespace, not
161
- stretching.
236
+ ## Compatibility and requirements
162
237
 
163
- ## License
238
+ | Requirement | Version |
239
+ | ------------ | ---------------------------------------------- |
240
+ | Node | ≥ 24 (`engines` in `package.json`) |
241
+ | pnpm | 11 — pinned, so Corepack fetches the right one |
242
+ | Vue | ≥ 3.5, as a peer dependency |
243
+ | Tailwind CSS | 4, in your build (`@tailwindcss/vite`) |
164
244
 
165
- [Apache License 2.0](LICENSE) © Ecoma.
245
+ Types ship strict, and the package ships ES modules that tree-shake: consumers
246
+ bundle what they import and nothing more.
166
247
 
167
- Use it, ship it, fork it, sell what you build with it.
248
+ Cross-platform is a design constraint, not the product category. Loom's
249
+ interface decisions are made so they can survive a change of rendering target —
250
+ a browser tab, an installed PWA, an Electron or Tauri desktop shell, a mobile
251
+ webview — and the platform-specific parts stay at the boundary, passed in by the
252
+ host rather than sniffed at runtime: window chrome, safe-area insets, PWA
253
+ overlays. Loom today is a Vue-facing interface system, not a cross-platform
254
+ framework.
168
255
 
169
256
  ---
170
257
 
@@ -172,7 +259,7 @@ Use it, ship it, fork it, sell what you build with it.
172
259
  <img src=".github/assets/logo.png" alt="" width="56" /><br />
173
260
  <sub>
174
261
  An <a href="https://ecoma.io">Ecoma</a> open-source project ·
175
- <a href="https://loom.ecoma.io">Documentation</a> ·
262
+ <a href="https://ecoma.io/docs/contribute/design-system/">Documentation</a> ·
176
263
  <a href="https://github.com/ecoma-io">Organisation</a> ·
177
264
  <a href="CONTRIBUTING.md">Contribute</a>
178
265
  </sub>
package/dist/a11y.js CHANGED
@@ -1,3 +1,4 @@
1
- import { BROWSERLESS_RULES, BROWSER_REQUIRED_RULES, WCAG_TAGS } from "./packages/core/src/a11y-scope.js";
2
- import "./packages/core/src/index.js";
3
- export { BROWSERLESS_RULES, BROWSER_REQUIRED_RULES, WCAG_TAGS };
1
+ import { BROWSERLESS_RULES, BROWSER_REQUIRED_RULES, WCAG_TAGS } from "./core/src/a11y-scope.js";
2
+ import { A11Y_EVIDENCE_MATRIX, A11Y_EVIDENCE_REQUIREMENTS, A11Y_EVIDENCE_TIERS, A11Y_ROLES, ARIA_ROLES, NON_ROLE_MEMBERS } from "./core/src/a11y-contract.js";
3
+ import "./core/src/index.js";
4
+ export { A11Y_EVIDENCE_MATRIX, A11Y_EVIDENCE_REQUIREMENTS, A11Y_EVIDENCE_TIERS, A11Y_ROLES, ARIA_ROLES, BROWSERLESS_RULES, BROWSER_REQUIRED_RULES, NON_ROLE_MEMBERS, WCAG_TAGS };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Center.js","names":[],"sources":["../../../../packages/composition/center/src/Center.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Center — centered content with a max-width constraint.\n *\n * A horizontally centered block that caps its own width and widens its\n * gutters at wider breakpoints. Critical for ultra-wide viewports, where\n * content that stretches to infinity is unreadable: the extra viewport goes\n * to intentional whitespace, never to stretching lines of text or card grids.\n *\n * A Center is a component, not `mx-auto max-w-3xl px-4`, because the\n * gutters step up at breakpoints (the component's job, not every call\n * site's) and the `maxWidth` prop names readable intent rather than a\n * Tailwind size.\n */\nexport type CenterMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"prose\";\n\nconst maxWidthClass: Record<CenterMaxWidth, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n prose: \"max-w-prose\",\n} as const;\n\nexport { maxWidthClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Maximum content width — names intent rather than a pixel value. */\n maxWidth?: CenterMaxWidth;\n /** Whether to add horizontal gutters that widen at wider breakpoints. */\n gutter?: boolean;\n }>(),\n { maxWidth: \"lg\", gutter: true },\n);\n</script>\n\n<template>\n <!--\n Gutters step up at `sm` and `3xl`: narrow viewports need less margin\n because the viewport itself is margin, and ultra-wide viewports need more\n so the gap between content and screen edge stays proportional.\n -->\n <div\n :class=\"cn(maxWidthClass[maxWidth], 'mx-auto', gutter ? 'px-4 sm:px-6 3xl:px-8' : undefined)\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Center.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/center/src/Center.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Center — centered content with a max-width constraint.\n *\n * A horizontally centered block that caps its own width and widens its\n * gutters at wider breakpoints. Critical for ultra-wide viewports, where\n * content that stretches to infinity is unreadable: the extra viewport goes\n * to intentional whitespace, never to stretching lines of text or card grids.\n *\n * A Center is a component, not `mx-auto max-w-3xl px-4`, because the\n * gutters step up at breakpoints (the component's job, not every call\n * site's) and the `maxWidth` prop names readable intent rather than a\n * Tailwind size.\n */\nexport type CenterMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"prose\";\n\nconst maxWidthClass: Record<CenterMaxWidth, string> = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n prose: \"max-w-prose\",\n} as const;\n\nexport { maxWidthClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Maximum content width — names intent rather than a pixel value. */\n maxWidth?: CenterMaxWidth;\n /** Whether to add horizontal gutters that widen at wider breakpoints. */\n gutter?: boolean;\n }>(),\n { maxWidth: \"lg\", gutter: true },\n);\n</script>\n\n<template>\n <!--\n Gutters step up at `sm` and `3xl`: narrow viewports need less margin\n because the viewport itself is margin, and ultra-wide viewports need more\n so the gap between content and screen edge stays proportional.\n -->\n <div\n :class=\"cn(maxWidthClass[maxWidth], 'mx-auto', gutter ? 'px-4 sm:px-6 3xl:px-8' : undefined)\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;AAgBA,IAAM,gBAAgD;CACpD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;;;;;;;;;;;;GAyBE,OAAA,UAAA,GAAA,mBAIM,OAAA,EAHH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAC,cAAc,QAAA,WAAQ,WAAc,QAAA,SAAM,0BAA6B,KAAA,CAAS,CAAA,EAAA,GAAA,CAE3F,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,7 @@
1
+ import DashboardGrid_vue_vue_type_script_setup_true_lang_default from "./DashboardGrid.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/composition/dashboard-grid/src/DashboardGrid.vue
3
+ var DashboardGrid_default = DashboardGrid_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { DashboardGrid_default as default };
6
+
7
+ //# sourceMappingURL=DashboardGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardGrid.js","names":[],"sources":["../../../../packages/composition/dashboard-grid/src/DashboardGrid.vue"],"sourcesContent":["<script lang=\"ts\">\n/** The gutter step — the same scale Stack's gap steps mirror. */\nexport type DashboardGridGap = \"sm\" | \"md\" | \"lg\";\n</script>\n\n<script setup lang=\"ts\">\n/**\n * DashboardGrid — the reflowing tile grid a dashboard's panels sit in: a CSS\n * grid that fits as many `minTileWidth`-wide tracks as the container allows,\n * so a KPI row and a couple of wider panels share one layout without the\n * host authoring a single breakpoint.\n *\n * `auto-fit` + `minmax` (never fixed `grid-cols-N` breakpoints) is the\n * deliberate choice: a fixed column count needs one breakpoint per host\n * viewport, while auto-fit recomputes the column count from the container's\n * own width — it reflows identically inside a sidebar-narrowed workspace and\n * full-bleed on an ultra-wide monitor, with zero Tailwind breakpoints\n * authored here or at the call site. The `minmax` lower bound is wrapped in\n * `min(100%, …)` so a tile never forces horizontal overflow on a container\n * narrower than `minTileWidth` itself.\n *\n * Presentational only: panels arrive through the default slot, and a panel\n * spans multiple tracks with its own `col-span-*` utility at the call\n * site — the grid does not know or count how many panels it holds.\n */\nwithDefaults(\n defineProps<{\n /** Narrowest a tile may get before the grid drops to fewer columns. Any valid CSS length (e.g. \"14rem\"). */\n minTileWidth?: string;\n /** Row/column gap step — mirrors Surface's `pad` scale at `sm` and up (sm 12px · md 16px · lg 24px); each step drops one notch below `sm`. */\n gap?: \"sm\" | \"md\" | \"lg\";\n }>(),\n { minTileWidth: \"16rem\", gap: \"md\" },\n);\n\n// One notch tighter below the `sm` breakpoint. A gutter is spent viewport, and\n// on a phone the grid is already single-column — 24px of air between stacked\n// tiles buys no separation the tile borders do not already give, it just\n// pushes the second tile off screen. From `sm` up each step is its\n// documented value.\nconst gapClass: Record<DashboardGridGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n</script>\n\n<template>\n <div\n class=\"grid\"\n :class=\"gapClass[gap]\"\n :style=\"{ gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minTileWidth}), 1fr))` }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { createElementBlock, defineComponent, normalizeClass, normalizeStyle, openBlock, renderSlot } from "vue";
2
+ //#region packages/composition/dashboard-grid/src/DashboardGrid.vue?vue&type=script&setup=true&lang.ts
3
+ var DashboardGrid_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ __name: "DashboardGrid",
5
+ props: {
6
+ minTileWidth: { default: "16rem" },
7
+ gap: { default: "md" }
8
+ },
9
+ setup(__props) {
10
+ /**
11
+ * DashboardGrid — the reflowing tile grid a dashboard's panels sit in: a CSS
12
+ * grid that fits as many `minTileWidth`-wide tracks as the container allows,
13
+ * so a KPI row and a couple of wider panels share one layout without the
14
+ * host authoring a single breakpoint.
15
+ *
16
+ * `auto-fit` + `minmax` (never fixed `grid-cols-N` breakpoints) is the
17
+ * deliberate choice: a fixed column count needs one breakpoint per host
18
+ * viewport, while auto-fit recomputes the column count from the container's
19
+ * own width — it reflows identically inside a sidebar-narrowed workspace and
20
+ * full-bleed on an ultra-wide monitor, with zero Tailwind breakpoints
21
+ * authored here or at the call site. The `minmax` lower bound is wrapped in
22
+ * `min(100%, …)` so a tile never forces horizontal overflow on a container
23
+ * narrower than `minTileWidth` itself.
24
+ *
25
+ * Presentational only: panels arrive through the default slot, and a panel
26
+ * spans multiple tracks with its own `col-span-*` utility at the call
27
+ * site — the grid does not know or count how many panels it holds.
28
+ */
29
+ const gapClass = {
30
+ sm: "gap-2 sm:gap-3",
31
+ md: "gap-3 sm:gap-4",
32
+ lg: "gap-4 sm:gap-6"
33
+ };
34
+ return (_ctx, _cache) => {
35
+ return openBlock(), createElementBlock("div", {
36
+ class: normalizeClass(["grid", gapClass[__props.gap]]),
37
+ style: normalizeStyle({ gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${__props.minTileWidth}), 1fr))` })
38
+ }, [renderSlot(_ctx.$slots, "default")], 6);
39
+ };
40
+ }
41
+ });
42
+ //#endregion
43
+ export { DashboardGrid_vue_vue_type_script_setup_true_lang_default as default };
44
+
45
+ //# sourceMappingURL=DashboardGrid.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardGrid.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/dashboard-grid/src/DashboardGrid.vue"],"sourcesContent":["<script lang=\"ts\">\n/** The gutter step — the same scale Stack's gap steps mirror. */\nexport type DashboardGridGap = \"sm\" | \"md\" | \"lg\";\n</script>\n\n<script setup lang=\"ts\">\n/**\n * DashboardGrid — the reflowing tile grid a dashboard's panels sit in: a CSS\n * grid that fits as many `minTileWidth`-wide tracks as the container allows,\n * so a KPI row and a couple of wider panels share one layout without the\n * host authoring a single breakpoint.\n *\n * `auto-fit` + `minmax` (never fixed `grid-cols-N` breakpoints) is the\n * deliberate choice: a fixed column count needs one breakpoint per host\n * viewport, while auto-fit recomputes the column count from the container's\n * own width — it reflows identically inside a sidebar-narrowed workspace and\n * full-bleed on an ultra-wide monitor, with zero Tailwind breakpoints\n * authored here or at the call site. The `minmax` lower bound is wrapped in\n * `min(100%, …)` so a tile never forces horizontal overflow on a container\n * narrower than `minTileWidth` itself.\n *\n * Presentational only: panels arrive through the default slot, and a panel\n * spans multiple tracks with its own `col-span-*` utility at the call\n * site — the grid does not know or count how many panels it holds.\n */\nwithDefaults(\n defineProps<{\n /** Narrowest a tile may get before the grid drops to fewer columns. Any valid CSS length (e.g. \"14rem\"). */\n minTileWidth?: string;\n /** Row/column gap step — mirrors Surface's `pad` scale at `sm` and up (sm 12px · md 16px · lg 24px); each step drops one notch below `sm`. */\n gap?: \"sm\" | \"md\" | \"lg\";\n }>(),\n { minTileWidth: \"16rem\", gap: \"md\" },\n);\n\n// One notch tighter below the `sm` breakpoint. A gutter is spent viewport, and\n// on a phone the grid is already single-column — 24px of air between stacked\n// tiles buys no separation the tile borders do not already give, it just\n// pushes the second tile off screen. From `sm` up each step is its\n// documented value.\nconst gapClass: Record<DashboardGridGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n</script>\n\n<template>\n <div\n class=\"grid\"\n :class=\"gapClass[gap]\"\n :style=\"{ gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minTileWidth}), 1fr))` }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCA,MAAM,WAA6C;GACjD,IAAI;GACJ,IAAI;GACJ,IAAI;EACN;;GAIE,OAAA,UAAA,GAAA,mBAMM,OAAA;IALJ,OAAK,eAAA,CAAC,QACE,SAAS,QAAA,IAAG,CAAA;IACnB,OAAK,eAAA,EAAA,qBAAA,qCAA8D,QAAA,aAAY,UAAA,CAAA;GAEhF,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.js","names":[],"sources":["../../../../packages/composition/frame/src/Frame.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Frame — fixed-ratio container.\n *\n * A container that maintains a consistent aspect ratio regardless of its\n * width, using CSS `aspect-ratio`. Useful for media embeds, image thumbnails,\n * and any content that needs a fixed ratio (video players, avatar crops,\n * card illustrations).\n *\n * A Frame is a component, not `aspect-video`, because the `ratio` prop\n * names the intent (\"16:9\", \"1:1\") rather than requiring the caller to\n * compute the `aspect-ratio` value, and the component handles the\n * `overflow: hidden` that prevents content from distorting the frame.\n */\nexport type FrameRatio = \"16:9\" | \"4:3\" | \"1:1\" | \"3:4\";\n\nconst aspectRatioValue: Record<FrameRatio, string> = {\n \"16:9\": \"16 / 9\",\n \"4:3\": \"4 / 3\",\n \"1:1\": \"1 / 1\",\n \"3:4\": \"3 / 4\",\n} as const;\n\nexport { aspectRatioValue };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** The aspect ratio to maintain. Named ratios or any valid CSS `aspect-ratio` value (e.g. \"21 / 9\"). */\n ratio?: FrameRatio | string;\n }>(),\n { ratio: \"16:9\" },\n);\n\n/** Resolve a named ratio or pass through a raw CSS value. */\nfunction resolveRatio(r: FrameRatio | string): string {\n return r in aspectRatioValue ? aspectRatioValue[r as FrameRatio] : r;\n}\n</script>\n\n<template>\n <div :class=\"cn('relative overflow-hidden w-full')\" :style=\"{ aspectRatio: resolveRatio(ratio) }\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Frame.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/frame/src/Frame.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Frame — fixed-ratio container.\n *\n * A container that maintains a consistent aspect ratio regardless of its\n * width, using CSS `aspect-ratio`. Useful for media embeds, image thumbnails,\n * and any content that needs a fixed ratio (video players, avatar crops,\n * card illustrations).\n *\n * A Frame is a component, not `aspect-video`, because the `ratio` prop\n * names the intent (\"16:9\", \"1:1\") rather than requiring the caller to\n * compute the `aspect-ratio` value, and the component handles the\n * `overflow: hidden` that prevents content from distorting the frame.\n */\nexport type FrameRatio = \"16:9\" | \"4:3\" | \"1:1\" | \"3:4\";\n\nconst aspectRatioValue: Record<FrameRatio, string> = {\n \"16:9\": \"16 / 9\",\n \"4:3\": \"4 / 3\",\n \"1:1\": \"1 / 1\",\n \"3:4\": \"3 / 4\",\n} as const;\n\nexport { aspectRatioValue };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** The aspect ratio to maintain. Named ratios or any valid CSS `aspect-ratio` value (e.g. \"21 / 9\"). */\n ratio?: FrameRatio | string;\n }>(),\n { ratio: \"16:9\" },\n);\n\n/** Resolve a named ratio or pass through a raw CSS value. */\nfunction resolveRatio(r: FrameRatio | string): string {\n return r in aspectRatioValue ? aspectRatioValue[r as FrameRatio] : r;\n}\n</script>\n\n<template>\n <div :class=\"cn('relative overflow-hidden w-full')\" :style=\"{ aspectRatio: resolveRatio(ratio) }\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;;AAgBA,IAAM,mBAA+C;CACnD,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;AACT;;;;;;EAiBA,SAAS,aAAa,GAAgC;GACpD,OAAO,KAAK,mBAAmB,iBAAiB,KAAmB;EACrE;;GAIE,OAAA,UAAA,GAAA,mBAEM,OAAA;IAFA,OAAK,eAAE,MAAA,EAAA,CAAE,CAAA,iCAAA,CAAA;IAAsC,OAAK,eAAA,EAAA,aAAiB,aAAa,QAAA,KAAK,EAAA,CAAA;GAC3F,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.js","names":[],"sources":["../../../../packages/composition/grid/src/Grid.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Grid — CSS Grid with responsive column count.\n *\n * A grid that derives its column count from the container's own width\n * (`auto-fit` + `minmax`, never fixed `grid-cols-N` breakpoints), so the same\n * grid reflows inside a sidebar-narrowed workspace and full-bleed on an\n * ultra-wide monitor alike.\n *\n * A Grid is a component, not `grid grid-cols-3 gap-4`, because the responsive\n * column count is the component's job (a fixed count needs one breakpoint per\n * viewport and is already wrong the moment the grid sits in a sidebar narrower\n * than the viewport), and the gap tightens one step below `sm` like Stack and\n * DashboardGrid.\n */\nexport type GridGap = \"sm\" | \"md\" | \"lg\";\n\nconst gapClass: Record<GridGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nexport { gapClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Narrowest a column may get before the grid drops to fewer columns. Any valid CSS length (e.g. \"14rem\"). */\n minColWidth?: string;\n /** Column/row gap step — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: GridGap;\n }>(),\n { minColWidth: \"16rem\", gap: \"md\" },\n);\n</script>\n\n<template>\n <div\n class=\"grid\"\n :class=\"cn(gapClass[gap])\"\n :style=\"{ gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minColWidth}), 1fr))` }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Grid.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/grid/src/Grid.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Grid — CSS Grid with responsive column count.\n *\n * A grid that derives its column count from the container's own width\n * (`auto-fit` + `minmax`, never fixed `grid-cols-N` breakpoints), so the same\n * grid reflows inside a sidebar-narrowed workspace and full-bleed on an\n * ultra-wide monitor alike.\n *\n * A Grid is a component, not `grid grid-cols-3 gap-4`, because the responsive\n * column count is the component's job (a fixed count needs one breakpoint per\n * viewport and is already wrong the moment the grid sits in a sidebar narrower\n * than the viewport), and the gap tightens one step below `sm` like Stack and\n * DashboardGrid.\n */\nexport type GridGap = \"sm\" | \"md\" | \"lg\";\n\nconst gapClass: Record<GridGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nexport { gapClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Narrowest a column may get before the grid drops to fewer columns. Any valid CSS length (e.g. \"14rem\"). */\n minColWidth?: string;\n /** Column/row gap step — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: GridGap;\n }>(),\n { minColWidth: \"16rem\", gap: \"md\" },\n);\n</script>\n\n<template>\n <div\n class=\"grid\"\n :class=\"cn(gapClass[gap])\"\n :style=\"{ gridTemplateColumns: `repeat(auto-fit, minmax(min(100%, ${minColWidth}), 1fr))` }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;AAiBA,IAAM,WAAoC;CACxC,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;GAoBE,OAAA,UAAA,GAAA,mBAMM,OAAA;IALJ,OAAK,eAAA,CAAC,QACE,MAAA,EAAA,CAAE,CAAC,SAAS,QAAA,IAAG,CAAA,CAAA;IACtB,OAAK,eAAA,EAAA,qBAAA,qCAA8D,QAAA,YAAW,UAAA,CAAA;GAE/E,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.js","names":[],"sources":["../../../../packages/composition/inline/src/Inline.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Inline — horizontal flow with wrap, consistent gap.\n *\n * A flex row that wraps naturally at the container edge and tightens its gutter\n * one step below the `sm` breakpoint. The gap steps mirror Stack's and\n * DashboardGrid's: the value each step names applies from `sm` up, and drops\n * one notch below it.\n *\n * An Inline is a component, not `flex flex-row flex-wrap gap-4`, because the\n * responsive gap is the component's job, the `align` prop maps cross-axis\n * intent to a class, and the `wrap` prop controls line-wrapping behaviour.\n */\nexport type InlineGap = \"sm\" | \"md\" | \"lg\";\n\nexport type InlineAlign = \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n\nconst gapClass: Record<InlineGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nconst alignClass: Record<InlineAlign, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n} as const;\n\nexport { gapClass, alignClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Horizontal gap step — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: InlineGap;\n /** Cross-axis alignment of children. */\n align?: InlineAlign;\n /** Whether items wrap to new lines when they exceed the container width. */\n wrap?: boolean;\n }>(),\n { gap: \"md\", align: \"stretch\", wrap: true },\n);\n</script>\n\n<template>\n <div\n :class=\"\n cn('flex flex-row', gapClass[gap], alignClass[align], wrap ? 'flex-wrap' : 'flex-nowrap')\n \"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/inline/src/Inline.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Inline — horizontal flow with wrap, consistent gap.\n *\n * A flex row that wraps naturally at the container edge and tightens its gutter\n * one step below the `sm` breakpoint. The gap steps mirror Stack's and\n * DashboardGrid's: the value each step names applies from `sm` up, and drops\n * one notch below it.\n *\n * An Inline is a component, not `flex flex-row flex-wrap gap-4`, because the\n * responsive gap is the component's job, the `align` prop maps cross-axis\n * intent to a class, and the `wrap` prop controls line-wrapping behaviour.\n */\nexport type InlineGap = \"sm\" | \"md\" | \"lg\";\n\nexport type InlineAlign = \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\n\nconst gapClass: Record<InlineGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nconst alignClass: Record<InlineAlign, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n} as const;\n\nexport { gapClass, alignClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Horizontal gap step — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: InlineGap;\n /** Cross-axis alignment of children. */\n align?: InlineAlign;\n /** Whether items wrap to new lines when they exceed the container width. */\n wrap?: boolean;\n }>(),\n { gap: \"md\", align: \"stretch\", wrap: true },\n);\n</script>\n\n<template>\n <div\n :class=\"\n cn('flex flex-row', gapClass[gap], alignClass[align], wrap ? 'flex-wrap' : 'flex-nowrap')\n \"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;AAiBA,IAAM,WAAsC;CAC1C,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAM,aAA0C;CAC9C,OAAO;CACP,QAAQ;CACR,KAAK;CACL,SAAS;CACT,UAAU;AACZ;;;;;;;;;;;;;GAsBE,OAAA,UAAA,GAAA,mBAMM,OAAA,EALH,OAAK,eAAS,MAAA,EAAA,CAAE,CAAA,iBAAkB,SAAS,QAAA,MAAM,WAAW,QAAA,QAAQ,QAAA,OAAI,cAAA,aAAA,CAAA,EAAA,GAAA,CAIzE,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollReel.js","names":[],"sources":["../../../../packages/composition/scroll-reel/src/ScrollReel.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * ScrollReel — horizontal scrolling strip with scroll-snap.\n *\n * A touch-friendly, keyboard-navigable horizontal scroll container with\n * optional scroll-snap alignment. Arrow keys scroll to the next or previous\n * snap point; the `Home` and `End` keys jump to the start or end of the\n * strip.\n *\n * A ScrollReel is a component, not `overflow-x-auto snap-x snap-mandatory`,\n * because keyboard accessibility for scroll-snap requires JavaScript (arrow\n * keys must find the next snap-aligned child and scroll it into view), and\n * the gap tightens one step below `sm` like Stack and DashboardGrid.\n */\nexport type ScrollReelSnap = \"start\" | \"center\" | \"end\" | \"none\";\n\nexport type ScrollReelGap = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it,\n * and exported so a host can build a partial vocabulary against the real\n * thing rather than a transcription of it. The type itself lives in the\n * labels registry (`ScrollReelLabels`) like every other slot's, so\n * `provideLoomLabels({ scrollReel: … })` reaches this component exactly as\n * it reaches every primitive — composition sits above labels in the layer\n * direction, and a host localising one reel should not have to learn a\n * second seam to do it.\n */\nexport const SCROLL_REEL_LABELS: ScrollReelLabels = {\n region: \"Scrollable content\",\n};\n\nconst snapClass: Record<ScrollReelSnap, string> = {\n start: \"snap-x snap-mandatory snap-start\",\n center: \"snap-x snap-mandatory snap-center\",\n end: \"snap-x snap-mandatory snap-end\",\n // `none` means no snap alignment — items scroll freely.\n none: \"\",\n} as const;\n\nconst gapClass: Record<ScrollReelGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nexport { snapClass, gapClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { cn, smoothScrollBehavior } from \"@ecoma-io/loom-core\";\nimport { useLabels, type LabelOverrides, type ScrollReelLabels } from \"@ecoma-io/loom-labels\";\n\nconst props = withDefaults(\n defineProps<{\n /** Scroll-snap alignment. \"none\" disables snap entirely. */\n snap?: ScrollReelSnap;\n /** Gap between items — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: ScrollReelGap;\n /**\n * Names for what the reel says out loud, as any subset of\n * `ScrollReelLabels` — the per-instance correction over\n * `SCROLL_REEL_LABELS`, in the same shape a primitive's `labels` prop\n * takes.\n */\n labels?: LabelOverrides<ScrollReelLabels>;\n }>(),\n { snap: \"start\", gap: \"md\" },\n);\n\n// `text`, not `labels`: the prop of that name is one of the three sources this\n// resolves (own prop, then the host vocabulary from `provideLoomLabels`, then\n// these English defaults), and a template reading the raw prop would be\n// reading the overrides rather than the answer.\nconst text = useLabels(\"scrollReel\", SCROLL_REEL_LABELS, () => props.labels);\n\nconst reel = ref<HTMLDivElement | null>(null);\n\n// The reduced-motion softening lives in core (`smoothScrollBehavior`): an\n// explicit `\"smooth\"` in a scrollTo dictionary overrides the stylesheet's\n// kill-switch, so the question has to be answered at the call site — and\n// Carousel asks it too, which is why the answer is shared rather than owned.\nconst scrollBehavior = smoothScrollBehavior;\n\n/**\n * Keyboard navigation for scroll-snap: arrow keys scroll to the next or\n * previous snap-aligned child. Without this, the browser's default arrow-key\n * behaviour scrolls by a fixed pixel amount that rarely aligns with snap\n * points, leaving the strip between two items.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const el = reel.value;\n if (!el) return;\n\n // A keypress inside a nested editable (search field, combobox, contenteditable\n // chip) bubbles up to this listener: the arrows and Home/End are the caret's\n // keys there, not the reel's. Step aside so the text control keeps them —\n // the same boundary Toolbar draws at its own listener.\n if ((event.target as HTMLElement).closest(\"input, select, textarea, [contenteditable]\")) return;\n\n const direction = event.key === \"ArrowRight\" ? 1 : event.key === \"ArrowLeft\" ? -1 : 0;\n if (direction === 0 && event.key !== \"Home\" && event.key !== \"End\") return;\n\n event.preventDefault();\n\n const behavior = scrollBehavior();\n if (event.key === \"Home\") {\n el.scrollTo({ left: 0, behavior });\n return;\n }\n if (event.key === \"End\") {\n el.scrollTo({ left: el.scrollWidth, behavior });\n return;\n }\n\n // Find the next snap-aligned child in the scroll direction.\n const children = [...el.children] as HTMLElement[];\n const scrollEdge = direction === 1 ? el.scrollLeft + el.clientWidth : el.scrollLeft;\n\n for (const child of direction === 1 ? children : children.reverse()) {\n const childEdge = direction === 1 ? child.offsetLeft : child.offsetLeft + child.offsetWidth;\n const isNext = direction === 1 ? childEdge > scrollEdge - 1 : childEdge < scrollEdge + 1;\n if (isNext) {\n child.scrollIntoView({ behavior, block: \"nearest\", inline: \"start\" });\n break;\n }\n }\n}\n</script>\n\n<template>\n <!-- `role=\"region\"` + `tabindex=\"0\"` + an accessible name make this a named,\n focusable landmark region. The keyboard handler is what makes the\n scroll-snap strip navigable by arrow keys — a genuine interaction on\n a genuinely interactive element. The rule does not account for\n non-interactive ARIA roles with an explicit tabindex. -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <div\n ref=\"reel\"\n class=\"overflow-x-auto\"\n :class=\"cn('flex flex-row', snapClass[snap], gapClass[gap])\"\n tabindex=\"0\"\n role=\"region\"\n :aria-label=\"text.region\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollReel.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/scroll-reel/src/ScrollReel.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * ScrollReel — horizontal scrolling strip with scroll-snap.\n *\n * A touch-friendly, keyboard-navigable horizontal scroll container with\n * optional scroll-snap alignment. Arrow keys scroll to the next or previous\n * snap point; the `Home` and `End` keys jump to the start or end of the\n * strip.\n *\n * A ScrollReel is a component, not `overflow-x-auto snap-x snap-mandatory`,\n * because keyboard accessibility for scroll-snap requires JavaScript (arrow\n * keys must find the next snap-aligned child and scroll it into view), and\n * the gap tightens one step below `sm` like Stack and DashboardGrid.\n */\nexport type ScrollReelSnap = \"start\" | \"center\" | \"end\" | \"none\";\n\nexport type ScrollReelGap = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it,\n * and exported so a host can build a partial vocabulary against the real\n * thing rather than a transcription of it. The type itself lives in the\n * labels registry (`ScrollReelLabels`) like every other slot's, so\n * `provideLoomLabels({ scrollReel: … })` reaches this component exactly as\n * it reaches every primitive — composition sits above labels in the layer\n * direction, and a host localising one reel should not have to learn a\n * second seam to do it.\n */\nexport const SCROLL_REEL_LABELS: ScrollReelLabels = {\n region: \"Scrollable content\",\n};\n\nconst snapClass: Record<ScrollReelSnap, string> = {\n start: \"snap-x snap-mandatory snap-start\",\n center: \"snap-x snap-mandatory snap-center\",\n end: \"snap-x snap-mandatory snap-end\",\n // `none` means no snap alignment — items scroll freely.\n none: \"\",\n} as const;\n\nconst gapClass: Record<ScrollReelGap, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nexport { snapClass, gapClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { cn, smoothScrollBehavior } from \"@ecoma-io/loom-core\";\nimport { useLabels, type LabelOverrides, type ScrollReelLabels } from \"@ecoma-io/loom-labels\";\n\nconst props = withDefaults(\n defineProps<{\n /** Scroll-snap alignment. \"none\" disables snap entirely. */\n snap?: ScrollReelSnap;\n /** Gap between items — mirrors Stack's scale. Tightens one notch below `sm`. */\n gap?: ScrollReelGap;\n /**\n * Names for what the reel says out loud, as any subset of\n * `ScrollReelLabels` — the per-instance correction over\n * `SCROLL_REEL_LABELS`, in the same shape a primitive's `labels` prop\n * takes.\n */\n labels?: LabelOverrides<ScrollReelLabels>;\n }>(),\n { snap: \"start\", gap: \"md\" },\n);\n\n// `text`, not `labels`: the prop of that name is one of the three sources this\n// resolves (own prop, then the host vocabulary from `provideLoomLabels`, then\n// these English defaults), and a template reading the raw prop would be\n// reading the overrides rather than the answer.\nconst text = useLabels(\"scrollReel\", SCROLL_REEL_LABELS, () => props.labels);\n\nconst reel = ref<HTMLDivElement | null>(null);\n\n// The reduced-motion softening lives in core (`smoothScrollBehavior`): an\n// explicit `\"smooth\"` in a scrollTo dictionary overrides the stylesheet's\n// kill-switch, so the question has to be answered at the call site — and\n// Carousel asks it too, which is why the answer is shared rather than owned.\nconst scrollBehavior = smoothScrollBehavior;\n\n/**\n * Keyboard navigation for scroll-snap: arrow keys scroll to the next or\n * previous snap-aligned child. Without this, the browser's default arrow-key\n * behaviour scrolls by a fixed pixel amount that rarely aligns with snap\n * points, leaving the strip between two items.\n */\nfunction onKeydown(event: KeyboardEvent) {\n const el = reel.value;\n if (!el) return;\n\n // A keypress inside a nested editable (search field, combobox, contenteditable\n // chip) bubbles up to this listener: the arrows and Home/End are the caret's\n // keys there, not the reel's. Step aside so the text control keeps them —\n // the same boundary Toolbar draws at its own listener.\n if ((event.target as HTMLElement).closest(\"input, select, textarea, [contenteditable]\")) return;\n\n const direction = event.key === \"ArrowRight\" ? 1 : event.key === \"ArrowLeft\" ? -1 : 0;\n if (direction === 0 && event.key !== \"Home\" && event.key !== \"End\") return;\n\n event.preventDefault();\n\n const behavior = scrollBehavior();\n if (event.key === \"Home\") {\n el.scrollTo({ left: 0, behavior });\n return;\n }\n if (event.key === \"End\") {\n el.scrollTo({ left: el.scrollWidth, behavior });\n return;\n }\n\n // Find the next snap-aligned child in the scroll direction.\n const children = [...el.children] as HTMLElement[];\n const scrollEdge = direction === 1 ? el.scrollLeft + el.clientWidth : el.scrollLeft;\n\n for (const child of direction === 1 ? children : children.reverse()) {\n const childEdge = direction === 1 ? child.offsetLeft : child.offsetLeft + child.offsetWidth;\n const isNext = direction === 1 ? childEdge > scrollEdge - 1 : childEdge < scrollEdge + 1;\n if (isNext) {\n child.scrollIntoView({ behavior, block: \"nearest\", inline: \"start\" });\n break;\n }\n }\n}\n</script>\n\n<template>\n <!-- `role=\"region\"` + `tabindex=\"0\"` + an accessible name make this a named,\n focusable landmark region. The keyboard handler is what makes the\n scroll-snap strip navigable by arrow keys — a genuine interaction on\n a genuinely interactive element. The rule does not account for\n non-interactive ARIA roles with an explicit tabindex. -->\n <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n <div\n ref=\"reel\"\n class=\"overflow-x-auto\"\n :class=\"cn('flex flex-row', snapClass[snap], gapClass[gap])\"\n tabindex=\"0\"\n role=\"region\"\n :aria-label=\"text.region\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4BA,IAAa,qBAAuC,EAClD,QAAQ,qBACV;AAEA,IAAM,YAA4C;CAChD,OAAO;CACP,QAAQ;CACR,KAAK;CAEL,MAAM;AACR;AAEA,IAAM,WAA0C;CAC9C,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;;;;;;;;;EAUA,MAAM,QAAQ;EAqBd,MAAM,OAAO,UAAU,cAAc,0BAA0B,MAAM,MAAM;EAE3E,MAAM,OAAO,IAA2B,IAAI;EAM5C,MAAM,iBAAiB;;;;;;;EAQvB,SAAS,UAAU,OAAsB;GACvC,MAAM,KAAK,KAAK;GAChB,IAAI,CAAC,IAAI;GAMT,IAAK,MAAM,OAAuB,QAAQ,4CAA4C,GAAG;GAEzF,MAAM,YAAY,MAAM,QAAQ,eAAe,IAAI,MAAM,QAAQ,cAAc,KAAK;GACpF,IAAI,cAAc,KAAK,MAAM,QAAQ,UAAU,MAAM,QAAQ,OAAO;GAEpE,MAAM,eAAe;GAErB,MAAM,WAAW,eAAe;GAChC,IAAI,MAAM,QAAQ,QAAQ;IACxB,GAAG,SAAS;KAAE,MAAM;KAAG;IAAS,CAAC;IACjC;GACF;GACA,IAAI,MAAM,QAAQ,OAAO;IACvB,GAAG,SAAS;KAAE,MAAM,GAAG;KAAa;IAAS,CAAC;IAC9C;GACF;GAGA,MAAM,WAAW,CAAC,GAAG,GAAG,QAAQ;GAChC,MAAM,aAAa,cAAc,IAAI,GAAG,aAAa,GAAG,cAAc,GAAG;GAEzE,KAAK,MAAM,SAAS,cAAc,IAAI,WAAW,SAAS,QAAQ,GAAG;IACnE,MAAM,YAAY,cAAc,IAAI,MAAM,aAAa,MAAM,aAAa,MAAM;IAEhF,IADe,cAAc,IAAI,YAAY,aAAa,IAAI,YAAY,aAAa,GAC3E;KACV,MAAM,eAAe;MAAE;MAAU,OAAO;MAAW,QAAQ;KAAQ,CAAC;KACpE;IACF;GACF;EACF;;GAUE,OAAA,UAAA,GAAA,mBAUM,OAAA;IATA,SAAA;IAAJ,KAAI;IACJ,OAAK,eAAA,CAAC,mBACE,MAAA,EAAA,CAAE,CAAA,iBAAkB,UAAU,QAAA,OAAO,SAAS,QAAA,IAAG,CAAA,CAAA;IACzD,UAAS;IACT,MAAK;IACJ,cAAY,MAAA,IAAA,CAAI,CAAC;IACR;GAEV,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,IAAA,UAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.js","names":[],"sources":["../../../../packages/composition/sidebar/src/Sidebar.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Sidebar — content + sidebar with intrinsic CSS collapse.\n *\n * The Every Layout \"Sidebar\" pattern: the sidebar gets a fixed `flex-basis`\n * and the content gets `flex-grow: 999`, so the layout wraps and both panels\n * go full-width the moment the content can't fit its `contentMin` percentage.\n * No media query, no JavaScript — the layout derives its own breakpoint from\n * the container's width.\n *\n * A Sidebar is a component because the `calc()` technique for intrinsic\n * sidebar width is non-obvious and easy to get wrong, and Loom wrapping it\n * prevents footguns. It differs from Split in that the content area is the\n * star — it grows to fill all available space — and the sidebar has a\n * preferred, not a minimum, width.\n */\nexport type SidebarSide = \"left\" | \"right\";\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Which side the sidebar sits on. Controls flex direction and stacking order. */\n side?: SidebarSide;\n /** Preferred width for the sidebar (e.g. \"16rem\"). The sidebar does not grow. */\n sideWidth?: string;\n /** Minimum percentage of the container the content demands before the layout wraps. Default: `\"50%\"`. */\n contentMin?: string;\n /** Whether to add a gap between the two panels. Default: `true`. */\n gap?: boolean;\n }>(),\n { side: \"left\", sideWidth: \"16rem\", contentMin: \"50%\", gap: true },\n);\n</script>\n\n<template>\n <!--\n `flex-wrap: wrap` is the intrinsic collapse mechanism. When the content\n can't fit its `contentMin`, it wraps to a new line and both panels take\n full width — the sidebar becomes a full-width section above or below the\n content, depending on `side`.\n\n The sidebar's `flex-basis` is its preferred width. The content's\n `flex-grow: 999` ensures it takes all remaining space when there is room,\n but its `flex-basis: 0` and `min-width: contentMin` trigger wrapping\n when there isn't.\n -->\n <div\n :class=\"cn('flex flex-row', gap ? 'gap-3 sm:gap-4' : undefined)\"\n :style=\"{ flexWrap: 'wrap' }\"\n >\n <!--\n Document order follows `side`, so the wrapped stack never contradicts\n the side-by-side row and screen-reader order matches the visual one:\n content first when `side=\"right\"`, sidebar first when `side=\"left\"`.\n flex-row (never reverse) plus this ordering is what makes the wrap\n produce content-above-sidebar for `side=\"right\"`.\n -->\n <template v-if=\"side === 'right'\">\n <!-- Content: fills all remaining space (flex-grow: 999), but its\n min-width: contentMin triggers wrapping when there isn't room. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: contentMin,\n }\"\n >\n <slot />\n </div>\n <!-- Sidebar: preferred width as flex-basis, does not grow. -->\n <div\n :style=\"{\n flexBasis: sideWidth,\n flexGrow: 0,\n flexShrink: 1,\n }\"\n >\n <slot name=\"side\" />\n </div>\n </template>\n <template v-else>\n <!-- Sidebar: preferred width as flex-basis, does not grow. -->\n <div\n :style=\"{\n flexBasis: sideWidth,\n flexGrow: 0,\n flexShrink: 1,\n }\"\n >\n <slot name=\"side\" />\n </div>\n <!-- Content: fills all remaining space (flex-grow: 999), but its\n min-width: contentMin triggers wrapping when there isn't room. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: contentMin,\n }\"\n >\n <slot />\n </div>\n </template>\n </div>\n</template>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../packages/composition/sidebar/src/Sidebar.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Sidebar — content + sidebar with intrinsic CSS collapse.\n *\n * The Every Layout \"Sidebar\" pattern: the sidebar gets a fixed `flex-basis`\n * and the content gets `flex-grow: 999`, so the layout wraps and both panels\n * go full-width the moment the content can't fit its `contentMin` percentage.\n * No media query, no JavaScript — the layout derives its own breakpoint from\n * the container's width.\n *\n * A Sidebar is a component because the `calc()` technique for intrinsic\n * sidebar width is non-obvious and easy to get wrong, and Loom wrapping it\n * prevents footguns. It differs from Split in that the content area is the\n * star — it grows to fill all available space — and the sidebar has a\n * preferred, not a minimum, width.\n */\nexport type SidebarSide = \"left\" | \"right\";\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** Which side the sidebar sits on. Controls flex direction and stacking order. */\n side?: SidebarSide;\n /** Preferred width for the sidebar (e.g. \"16rem\"). The sidebar does not grow. */\n sideWidth?: string;\n /** Minimum percentage of the container the content demands before the layout wraps. Default: `\"50%\"`. */\n contentMin?: string;\n /** Whether to add a gap between the two panels. Default: `true`. */\n gap?: boolean;\n }>(),\n { side: \"left\", sideWidth: \"16rem\", contentMin: \"50%\", gap: true },\n);\n</script>\n\n<template>\n <!--\n `flex-wrap: wrap` is the intrinsic collapse mechanism. When the content\n can't fit its `contentMin`, it wraps to a new line and both panels take\n full width — the sidebar becomes a full-width section above or below the\n content, depending on `side`.\n\n The sidebar's `flex-basis` is its preferred width. The content's\n `flex-grow: 999` ensures it takes all remaining space when there is room,\n but its `flex-basis: 0` and `min-width: contentMin` trigger wrapping\n when there isn't.\n -->\n <div\n :class=\"cn('flex flex-row', gap ? 'gap-3 sm:gap-4' : undefined)\"\n :style=\"{ flexWrap: 'wrap' }\"\n >\n <!--\n Document order follows `side`, so the wrapped stack never contradicts\n the side-by-side row and screen-reader order matches the visual one:\n content first when `side=\"right\"`, sidebar first when `side=\"left\"`.\n flex-row (never reverse) plus this ordering is what makes the wrap\n produce content-above-sidebar for `side=\"right\"`.\n -->\n <template v-if=\"side === 'right'\">\n <!-- Content: fills all remaining space (flex-grow: 999), but its\n min-width: contentMin triggers wrapping when there isn't room. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: contentMin,\n }\"\n >\n <slot />\n </div>\n <!-- Sidebar: preferred width as flex-basis, does not grow. -->\n <div\n :style=\"{\n flexBasis: sideWidth,\n flexGrow: 0,\n flexShrink: 1,\n }\"\n >\n <slot name=\"side\" />\n </div>\n </template>\n <template v-else>\n <!-- Sidebar: preferred width as flex-basis, does not grow. -->\n <div\n :style=\"{\n flexBasis: sideWidth,\n flexGrow: 0,\n flexShrink: 1,\n }\"\n >\n <slot name=\"side\" />\n </div>\n <!-- Content: fills all remaining space (flex-grow: 999), but its\n min-width: contentMin triggers wrapping when there isn't room. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: contentMin,\n }\"\n >\n <slot />\n </div>\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;GAiDE,OAAA,UAAA,GAAA,mBA2DM,OAAA;IA1DH,OAAK,eAAE,MAAA,EAAA,CAAE,CAAA,iBAAkB,QAAA,MAAG,mBAAsB,KAAA,CAAS,CAAA;IAC7D,OAAO,EAAA,UAAA,OAAA;GASQ,GAAA,CAAA,QAAA,SAAI,WAApB,UAAA,GAAA,mBAuBW,UAAA,EAAA,KAAA,EAAA,GAAA,CApBT,mBASM,OAAA,EARH,OAAK,eAAA;;;;IAAkG,UAAA,QAAA;GAOxG,CAAA,EAAA,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,GAGV,mBAQM,OAAA,EAPH,OAAK,eAAA;IAAyB,WAAA,QAAA;;;GAM/B,CAAA,EAAA,GAAA,CAAA,WAAoB,KAAA,QAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,MAGxB,UAAA,GAAA,mBAuBW,UAAA,EAAA,KAAA,EAAA,GAAA,CArBT,mBAQM,OAAA,EAPH,OAAK,eAAA;IAAyB,WAAA,QAAA;;;GAM/B,CAAA,EAAA,GAAA,CAAA,WAAoB,KAAA,QAAA,MAAA,CAAA,GAAA,CAAA,GAItB,mBASM,OAAA,EARH,OAAK,eAAA;;;;IAAkG,UAAA,QAAA;GAOxG,CAAA,EAAA,GAAA,CAAA,WAAQ,KAAA,QAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Split.js","names":[],"sources":["../../../../packages/composition/split/src/Split.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Split — two-panel layout with intrinsic collapse.\n *\n * A flex row that places a side panel and a content area side by side, and\n * stacks them vertically once the container is too narrow for both. The side\n * panel gets a fixed minimum width; the content area grows to fill the\n * remaining space.\n *\n * This is the Every Layout \"Sidebar\" pattern, simplified for the common\n * two-panel case. The intrinsic collapse — panels stack when the container is\n * too narrow — avoids a breakpoint per viewport, and works identically inside\n * a sidebar-narrowed workspace and full-bleed on an ultra-wide monitor.\n *\n * A Split is a component, not a hand-rolled flex row with a media query,\n * because the wrap-and-floor technique is non-obvious and easy to get wrong,\n * and the stacking order (side above or below) is an intent the `side` prop\n * expresses.\n */\nexport type SplitSide = \"left\" | \"right\";\n\nexport type SplitGap = \"sm\" | \"md\" | \"lg\" | \"none\";\n\nconst gapClass: Record<Exclude<SplitGap, \"none\">, string> = {\n sm: \"gap-2 sm:gap-3\",\n md: \"gap-3 sm:gap-4\",\n lg: \"gap-4 sm:gap-6\",\n} as const;\n\nexport { gapClass };\n</script>\n\n<script setup lang=\"ts\">\nimport { cn } from \"@ecoma-io/loom-core\";\n\nwithDefaults(\n defineProps<{\n /** The side the panel sits on. Controls stacking order when collapsed: \"left\" stacks the panel above, \"right\" stacks it below. */\n side?: SplitSide;\n /** Minimum width for the side panel (e.g. \"16rem\"). The content area takes the rest. */\n minSideWidth?: string;\n /** Gap between the two panels. Tightens one notch below `sm` (except \"none\"). */\n gap?: SplitGap;\n }>(),\n { side: \"left\", minSideWidth: \"16rem\", gap: \"md\" },\n);\n</script>\n\n<template>\n <!--\n `flex-wrap` is the intrinsic collapse mechanism: when the combined\n `min-width` of both panels exceeds the container, the second panel wraps\n to a new line. Where that happens is decided by the panels' own minimum\n widths — there is no breakpoint prop to set it with.\n -->\n <div\n :class=\"cn('flex flex-row', gap !== 'none' ? gapClass[gap] : undefined)\"\n :style=\"{\n flexWrap: 'wrap',\n }\"\n >\n <!--\n Document order follows `side`, so the wrapped stack never contradicts\n the side-by-side row and screen-reader order matches the visual one:\n content first when `side=\"right\"`, side first when `side=\"left\"`.\n flex-row (never reverse) plus this ordering is what makes the wrap\n produce content-above-panel for `side=\"right\"`.\n -->\n <template v-if=\"side === 'right'\">\n <!-- Content area: fills remaining space, but demands at least 50% of\n the container before wrapping. Wrapped onto a line of its own it\n takes that whole line: flex-basis 0 starts from nothing and\n flex-grow 999 absorbs every free pixel on the line. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: '50%',\n }\"\n >\n <slot />\n </div>\n <!-- Side panel: fixed minimum width, does not grow. Wrapped onto a\n line of its own it keeps exactly that declared width — flex-grow 0\n with an explicit basis never widens, so the full-line stretch is\n the content side's alone. -->\n <div\n :style=\"{\n flexBasis: minSideWidth,\n flexGrow: 0,\n flexShrink: 0,\n minWidth: minSideWidth,\n }\"\n >\n <slot name=\"side\" />\n </div>\n </template>\n <template v-else>\n <!-- Side panel: fixed minimum width, does not grow. Wrapped onto a\n line of its own it keeps exactly that declared width — flex-grow 0\n with an explicit basis never widens, so the full-line stretch is\n the content side's alone. -->\n <div\n :style=\"{\n flexBasis: minSideWidth,\n flexGrow: 0,\n flexShrink: 0,\n minWidth: minSideWidth,\n }\"\n >\n <slot name=\"side\" />\n </div>\n <!-- Content area: fills remaining space, but demands at least 50% of\n the container before wrapping. Wrapped onto a line of its own it\n takes that whole line: flex-basis 0 starts from nothing and\n flex-grow 999 absorbs every free pixel on the line. -->\n <div\n :style=\"{\n flexBasis: 0,\n flexGrow: 999,\n flexShrink: 1,\n minWidth: '50%',\n }\"\n >\n <slot />\n </div>\n </template>\n </div>\n</template>\n"],"mappings":""}