@ecoma-io/loom 0.3.0 → 0.5.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 (587) hide show
  1. package/README.md +11 -9
  2. package/dist/a11y.js +2 -2
  3. package/dist/index.js +73 -6
  4. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/CalendarDate.js +1 -1
  5. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/CalendarDate.js.map +1 -1
  6. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js +1 -1
  7. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/calendars/GregorianCalendar.js.map +1 -1
  8. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/conversion.js +1 -1
  9. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/conversion.js.map +1 -1
  10. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/manipulation.js +1 -1
  11. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/manipulation.js.map +1 -1
  12. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/queries.js +1 -1
  13. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/queries.js.map +1 -1
  14. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/string.js +1 -1
  15. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/string.js.map +1 -1
  16. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/utils.js +1 -1
  17. package/dist/node_modules/.pnpm/{@internationalized_date@3.12.3 → @internationalized_date@3.12.4}/node_modules/@internationalized/date/dist/private/utils.js.map +1 -1
  18. package/dist/packages/blocks/app-header/src/AppHeader.js.map +1 -1
  19. package/dist/packages/blocks/app-header/src/AppHeader.vue.d.ts.map +1 -1
  20. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js +1 -0
  21. package/dist/packages/blocks/app-header/src/AppHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts +3 -3
  23. package/dist/packages/blocks/empty-state/src/EmptyState.js.map +1 -1
  24. package/dist/packages/blocks/empty-state/src/EmptyState.vue.d.ts.map +1 -1
  25. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js +5 -6
  26. package/dist/packages/blocks/empty-state/src/EmptyState.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/packages/blocks/error-summary/src/ErrorSummary.js +7 -0
  28. package/dist/packages/blocks/error-summary/src/ErrorSummary.js.map +1 -0
  29. package/dist/packages/blocks/error-summary/src/ErrorSummary.vue.d.ts +31 -0
  30. package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js +90 -0
  31. package/dist/packages/blocks/error-summary/src/ErrorSummary.vue_vue_type_script_setup_true_lang.js.map +1 -0
  32. package/dist/packages/blocks/error-summary/src/index.d.ts +4 -0
  33. package/dist/packages/blocks/error-summary/src/index.js +3 -0
  34. package/dist/packages/blocks/metric-card/src/MetricCard.js.map +1 -1
  35. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts +22 -4
  36. package/dist/packages/blocks/metric-card/src/MetricCard.vue.d.ts.map +1 -1
  37. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js +38 -15
  38. package/dist/packages/blocks/metric-card/src/MetricCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts +3 -3
  40. package/dist/packages/blocks/toast-stack/src/ToastStack.vue.d.ts +3 -3
  41. package/dist/packages/composition/scroll-reel/src/ScrollReel.js +2 -2
  42. package/dist/packages/composition/scroll-reel/src/ScrollReel.js.map +1 -1
  43. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue.d.ts +26 -0
  44. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js +28 -7
  45. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/packages/composition/scroll-reel/src/index.d.ts +2 -1
  47. package/dist/packages/composition/scroll-reel/src/index.js +2 -1
  48. package/dist/packages/composition/sidebar/src/Sidebar.js.map +1 -1
  49. package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts +4 -0
  50. package/dist/packages/composition/sidebar/src/Sidebar.vue.d.ts.map +1 -1
  51. package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js +13 -4
  52. package/dist/packages/composition/sidebar/src/Sidebar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/packages/composition/split/src/Split.js.map +1 -1
  54. package/dist/packages/composition/split/src/Split.vue.d.ts +11 -12
  55. package/dist/packages/composition/split/src/Split.vue.d.ts.map +1 -1
  56. package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js +15 -5
  57. package/dist/packages/composition/split/src/Split.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/packages/core/src/a11y-scope.d.ts +71 -5
  59. package/dist/packages/core/src/a11y-scope.d.ts.map +1 -1
  60. package/dist/packages/core/src/a11y-scope.js +126 -6
  61. package/dist/packages/core/src/a11y-scope.js.map +1 -1
  62. package/dist/packages/core/src/index.d.ts +2 -2
  63. package/dist/packages/core/src/index.d.ts.map +1 -1
  64. package/dist/packages/core/src/index.js +3 -3
  65. package/dist/packages/core/src/motion.d.ts +13 -0
  66. package/dist/packages/core/src/motion.d.ts.map +1 -1
  67. package/dist/packages/core/src/motion.js +20 -13
  68. package/dist/packages/core/src/motion.js.map +1 -1
  69. package/dist/packages/core/src/theme.d.ts +9 -0
  70. package/dist/packages/core/src/theme.d.ts.map +1 -1
  71. package/dist/packages/core/src/theme.js +36 -10
  72. package/dist/packages/core/src/theme.js.map +1 -1
  73. package/dist/packages/labels/src/ancestor-disabled.d.ts +5 -1
  74. package/dist/packages/labels/src/ancestor-disabled.d.ts.map +1 -1
  75. package/dist/packages/labels/src/ancestor-disabled.js +5 -1
  76. package/dist/packages/labels/src/ancestor-disabled.js.map +1 -1
  77. package/dist/packages/labels/src/component-shapes.d.ts +236 -1
  78. package/dist/packages/labels/src/component-shapes.d.ts.map +1 -1
  79. package/dist/packages/labels/src/date-labels.d.ts +86 -7
  80. package/dist/packages/labels/src/date-labels.d.ts.map +1 -1
  81. package/dist/packages/labels/src/date-labels.js +58 -9
  82. package/dist/packages/labels/src/date-labels.js.map +1 -1
  83. package/dist/packages/labels/src/field-context.d.ts +2 -2
  84. package/dist/packages/labels/src/field-context.js.map +1 -1
  85. package/dist/packages/labels/src/index.d.ts +3 -3
  86. package/dist/packages/labels/src/index.d.ts.map +1 -1
  87. package/dist/packages/labels/src/index.js +2 -2
  88. package/dist/packages/labels/src/label-registry.d.ts +15 -1
  89. package/dist/packages/labels/src/label-registry.d.ts.map +1 -1
  90. package/dist/packages/layouts/dashboard/src/Dashboard.js.map +1 -1
  91. package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts +4 -4
  92. package/dist/packages/layouts/dashboard/src/Dashboard.vue.d.ts.map +1 -1
  93. package/dist/packages/layouts/dashboard/src/Dashboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/packages/layouts/reading/src/Reading.js.map +1 -1
  95. package/dist/packages/layouts/reading/src/Reading.vue.d.ts +16 -15
  96. package/dist/packages/layouts/reading/src/Reading.vue.d.ts.map +1 -1
  97. package/dist/packages/layouts/reading/src/Reading.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/packages/layouts/reading/src/index.d.ts +1 -0
  99. package/dist/packages/layouts/reading/src/index.d.ts.map +1 -1
  100. package/dist/packages/layouts/settings/src/Settings.js.map +1 -1
  101. package/dist/packages/layouts/settings/src/Settings.vue.d.ts +3 -3
  102. package/dist/packages/layouts/settings/src/Settings.vue.d.ts.map +1 -1
  103. package/dist/packages/layouts/settings/src/Settings.vue_vue_type_script_setup_true_lang.js.map +1 -1
  104. package/dist/packages/layouts/split-layout/src/SplitLayout.js.map +1 -1
  105. package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts +4 -6
  106. package/dist/packages/layouts/split-layout/src/SplitLayout.vue.d.ts.map +1 -1
  107. package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js +20 -5
  108. package/dist/packages/layouts/split-layout/src/SplitLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  109. package/dist/packages/layouts/split-layout/src/index.d.ts +1 -1
  110. package/dist/packages/layouts/split-layout/src/index.d.ts.map +1 -1
  111. package/dist/packages/loom/src/a11y.d.ts +1 -1
  112. package/dist/packages/loom/src/index.d.ts +217 -174
  113. package/dist/packages/loom/src/theme.d.ts +3 -0
  114. package/dist/packages/primitives/alert/src/Alert.js +7 -0
  115. package/dist/packages/primitives/alert/src/Alert.js.map +1 -0
  116. package/dist/packages/primitives/alert/src/Alert.vue.d.ts +91 -0
  117. package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js +130 -0
  118. package/dist/packages/primitives/alert/src/Alert.vue_vue_type_script_setup_true_lang.js.map +1 -0
  119. package/dist/packages/primitives/alert/src/index.d.ts +4 -0
  120. package/dist/packages/primitives/alert/src/index.js +3 -0
  121. package/dist/packages/primitives/alert-dialog/src/AlertDialog.js.map +1 -1
  122. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue.d.ts +2 -2
  123. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js +2 -2
  124. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  125. package/dist/packages/primitives/alert-dialog/src/index.d.ts +1 -1
  126. package/dist/packages/primitives/avatar/src/Avatar.js.map +1 -1
  127. package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts +2 -2
  128. package/dist/packages/primitives/avatar/src/Avatar.vue.d.ts.map +1 -1
  129. package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js +1 -1
  130. package/dist/packages/primitives/avatar/src/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  131. package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue.d.ts +3 -3
  132. package/dist/packages/primitives/avatar-group/src/index.d.ts +1 -1
  133. package/dist/packages/primitives/badge/src/Badge.js.map +1 -1
  134. package/dist/packages/primitives/badge/src/Badge.vue.d.ts.map +1 -1
  135. package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js +1 -1
  136. package/dist/packages/primitives/badge/src/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  137. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js +2 -2
  138. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.js.map +1 -1
  139. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue.d.ts +28 -0
  140. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js +16 -5
  141. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/packages/primitives/breadcrumb/src/index.d.ts +2 -1
  143. package/dist/packages/primitives/breadcrumb/src/index.js +2 -1
  144. package/dist/packages/primitives/button/src/Button.js.map +1 -1
  145. package/dist/packages/primitives/button/src/Button.vue.d.ts.map +1 -1
  146. package/dist/packages/primitives/button/src/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
  147. package/dist/packages/primitives/button/src/index.js +2 -2
  148. package/dist/packages/primitives/calendar/src/Calendar.js +7 -0
  149. package/dist/packages/primitives/calendar/src/Calendar.js.map +1 -0
  150. package/dist/packages/primitives/calendar/src/Calendar.vue.d.ts +95 -0
  151. package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js +204 -0
  152. package/dist/packages/primitives/calendar/src/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  153. package/dist/packages/primitives/calendar/src/index.d.ts +3 -0
  154. package/dist/packages/primitives/calendar/src/index.js +3 -0
  155. package/dist/packages/primitives/card/src/Card.js +7 -0
  156. package/dist/packages/primitives/card/src/Card.js.map +1 -0
  157. package/dist/packages/primitives/card/src/Card.vue.d.ts +72 -0
  158. package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js +65 -0
  159. package/dist/packages/primitives/card/src/Card.vue_vue_type_script_setup_true_lang.js.map +1 -0
  160. package/dist/packages/primitives/card/src/index.d.ts +3 -0
  161. package/dist/packages/primitives/card/src/index.d.ts.map +1 -0
  162. package/dist/packages/primitives/card/src/index.js +2 -0
  163. package/dist/packages/primitives/carousel/src/Carousel.js +7 -0
  164. package/dist/packages/primitives/carousel/src/Carousel.js.map +1 -0
  165. package/dist/packages/primitives/carousel/src/Carousel.vue.d.ts +34 -0
  166. package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js +175 -0
  167. package/dist/packages/primitives/carousel/src/Carousel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  168. package/dist/packages/primitives/carousel/src/index.d.ts +3 -0
  169. package/dist/packages/primitives/carousel/src/index.js +3 -0
  170. package/dist/packages/primitives/checkbox/src/Checkbox.js.map +1 -1
  171. package/dist/packages/primitives/checkbox/src/Checkbox.vue.d.ts +1 -1
  172. package/dist/packages/primitives/checkbox/src/Checkbox.vue.d.ts.map +1 -1
  173. package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js +3 -3
  174. package/dist/packages/primitives/checkbox/src/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  175. package/dist/packages/primitives/chip/src/Chip.js.map +1 -1
  176. package/dist/packages/primitives/chip/src/Chip.vue.d.ts.map +1 -1
  177. package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js +1 -1
  178. package/dist/packages/primitives/chip/src/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  179. package/dist/packages/primitives/collapse/src/Collapse.js +7 -0
  180. package/dist/packages/primitives/collapse/src/Collapse.js.map +1 -0
  181. package/dist/packages/primitives/collapse/src/Collapse.vue.d.ts +56 -0
  182. package/dist/packages/primitives/collapse/src/Collapse.vue.d.ts.map +1 -0
  183. package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js +81 -0
  184. package/dist/packages/primitives/collapse/src/Collapse.vue_vue_type_script_setup_true_lang.js.map +1 -0
  185. package/dist/packages/primitives/collapse/src/index.d.ts +2 -0
  186. package/dist/packages/primitives/collapse/src/index.d.ts.map +1 -0
  187. package/dist/packages/primitives/collapse/src/index.js +2 -0
  188. package/dist/packages/primitives/color-picker/src/ColorPicker.js.map +1 -1
  189. package/dist/packages/primitives/color-picker/src/ColorPicker.vue.d.ts +4 -4
  190. package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js +2 -2
  191. package/dist/packages/primitives/color-picker/src/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/packages/primitives/color-picker/src/index.d.ts +1 -1
  193. package/dist/packages/primitives/combobox/src/Combobox.js.map +1 -1
  194. package/dist/packages/primitives/combobox/src/Combobox.vue.d.ts +3 -3
  195. package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js +2 -2
  196. package/dist/packages/primitives/combobox/src/Combobox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  197. package/dist/packages/primitives/combobox/src/index.d.ts +1 -1
  198. package/dist/packages/primitives/command/src/Command.js +7 -0
  199. package/dist/packages/primitives/command/src/Command.js.map +1 -0
  200. package/dist/packages/primitives/command/src/Command.vue.d.ts +77 -0
  201. package/dist/packages/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js +333 -0
  202. package/dist/packages/primitives/command/src/Command.vue_vue_type_script_setup_true_lang.js.map +1 -0
  203. package/dist/packages/primitives/command/src/index.d.ts +4 -0
  204. package/dist/packages/primitives/command/src/index.js +3 -0
  205. package/dist/packages/primitives/context-menu/src/ContextMenu.js.map +1 -1
  206. package/dist/packages/primitives/context-menu/src/ContextMenu.vue.d.ts +12 -0
  207. package/dist/packages/primitives/context-menu/src/ContextMenu.vue.d.ts.map +1 -1
  208. package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js +7 -3
  209. package/dist/packages/primitives/context-menu/src/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/packages/primitives/copy-button/src/CopyButton.js +7 -0
  211. package/dist/packages/primitives/copy-button/src/CopyButton.js.map +1 -0
  212. package/dist/packages/primitives/copy-button/src/CopyButton.vue.d.ts +64 -0
  213. package/dist/packages/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js +113 -0
  214. package/dist/packages/primitives/copy-button/src/CopyButton.vue_vue_type_script_setup_true_lang.js.map +1 -0
  215. package/dist/packages/primitives/copy-button/src/index.d.ts +4 -0
  216. package/dist/packages/primitives/copy-button/src/index.js +3 -0
  217. package/dist/packages/primitives/data-grid/src/DataGrid.js +7 -0
  218. package/dist/packages/primitives/data-grid/src/DataGrid.js.map +1 -0
  219. package/dist/packages/primitives/data-grid/src/DataGrid.vue.d.ts +128 -0
  220. package/dist/packages/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js +347 -0
  221. package/dist/packages/primitives/data-grid/src/DataGrid.vue_vue_type_script_setup_true_lang.js.map +1 -0
  222. package/dist/packages/primitives/data-grid/src/index.d.ts +4 -0
  223. package/dist/packages/primitives/data-grid/src/index.js +3 -0
  224. package/dist/packages/primitives/date-picker/src/DatePicker.js.map +1 -1
  225. package/dist/packages/primitives/date-picker/src/DatePicker.vue.d.ts +2 -2
  226. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js +14 -14
  227. package/dist/packages/primitives/date-picker/src/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  228. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.js.map +1 -1
  229. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue.d.ts +3 -3
  230. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js +22 -19
  231. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/packages/primitives/date-range-picker/src/index.d.ts +1 -1
  233. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.js.map +1 -1
  234. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue.d.ts +2 -2
  235. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js +18 -17
  236. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.js.map +1 -1
  238. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue.d.ts +3 -3
  239. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +18 -17
  240. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/packages/primitives/date-time-range-picker/src/index.d.ts +1 -1
  242. package/dist/packages/primitives/dialog/src/Dialog.js.map +1 -1
  243. package/dist/packages/primitives/dialog/src/Dialog.vue.d.ts +27 -11
  244. package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js +6 -4
  245. package/dist/packages/primitives/dialog/src/Dialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  246. package/dist/packages/primitives/dialog/src/index.d.ts +1 -1
  247. package/dist/packages/primitives/drawer/src/Drawer.js.map +1 -1
  248. package/dist/packages/primitives/drawer/src/Drawer.vue.d.ts +12 -4
  249. package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js +13 -5
  250. package/dist/packages/primitives/drawer/src/Drawer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  251. package/dist/packages/primitives/drawer/src/index.d.ts +1 -1
  252. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.js.map +1 -1
  253. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue.d.ts +26 -0
  254. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue.d.ts.map +1 -1
  255. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js +10 -4
  256. package/dist/packages/primitives/dropdown-menu/src/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  257. package/dist/packages/primitives/editable/src/Editable.js.map +1 -1
  258. package/dist/packages/primitives/editable/src/Editable.vue.d.ts +2 -2
  259. package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js +1 -1
  260. package/dist/packages/primitives/editable/src/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -1
  261. package/dist/packages/primitives/editable/src/index.d.ts +1 -1
  262. package/dist/packages/primitives/file-upload/src/FileUpload.js.map +1 -1
  263. package/dist/packages/primitives/file-upload/src/FileUpload.vue.d.ts +2 -2
  264. package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js +1 -1
  265. package/dist/packages/primitives/file-upload/src/FileUpload.vue_vue_type_script_setup_true_lang.js.map +1 -1
  266. package/dist/packages/primitives/file-upload/src/index.d.ts +1 -1
  267. package/dist/packages/primitives/hover-card/src/HoverCard.js.map +1 -1
  268. package/dist/packages/primitives/hover-card/src/HoverCard.vue.d.ts.map +1 -1
  269. package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js +1 -1
  270. package/dist/packages/primitives/hover-card/src/HoverCard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/packages/primitives/hover-card/src/index.d.ts.map +1 -1
  272. package/dist/packages/primitives/icon-button/src/IconButton.js.map +1 -1
  273. package/dist/packages/primitives/icon-button/src/IconButton.vue.d.ts +10 -4
  274. package/dist/packages/primitives/icon-button/src/IconButton.vue.d.ts.map +1 -1
  275. package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js +18 -6
  276. package/dist/packages/primitives/icon-button/src/IconButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  277. package/dist/packages/primitives/indicator/src/Indicator.vue.d.ts +2 -2
  278. package/dist/packages/primitives/indicator/src/index.d.ts +1 -1
  279. package/dist/packages/primitives/kbd/src/Kbd.js +7 -0
  280. package/dist/packages/primitives/kbd/src/Kbd.js.map +1 -0
  281. package/dist/packages/primitives/kbd/src/Kbd.vue.d.ts +30 -0
  282. package/dist/packages/primitives/kbd/src/Kbd.vue.d.ts.map +1 -0
  283. package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js +29 -0
  284. package/dist/packages/primitives/kbd/src/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -0
  285. package/dist/packages/primitives/kbd/src/index.d.ts +3 -0
  286. package/dist/packages/primitives/kbd/src/index.d.ts.map +1 -0
  287. package/dist/packages/primitives/kbd/src/index.js +3 -0
  288. package/dist/packages/primitives/link/src/Link.js.map +1 -1
  289. package/dist/packages/primitives/link/src/Link.vue.d.ts.map +1 -1
  290. package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js +3 -3
  291. package/dist/packages/primitives/link/src/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/dist/packages/primitives/list/src/List.js +7 -0
  293. package/dist/packages/primitives/list/src/List.js.map +1 -0
  294. package/dist/packages/primitives/list/src/List.vue.d.ts +22 -0
  295. package/dist/packages/primitives/list/src/List.vue.d.ts.map +1 -0
  296. package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js +27 -0
  297. package/dist/packages/primitives/list/src/List.vue_vue_type_script_setup_true_lang.js.map +1 -0
  298. package/dist/packages/primitives/list/src/ListItem.js +7 -0
  299. package/dist/packages/primitives/list/src/ListItem.js.map +1 -0
  300. package/dist/packages/primitives/list/src/ListItem.vue.d.ts +75 -0
  301. package/dist/packages/primitives/list/src/ListItem.vue.d.ts.map +1 -0
  302. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js +101 -0
  303. package/dist/packages/primitives/list/src/ListItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  304. package/dist/packages/primitives/list/src/index.d.ts +4 -0
  305. package/dist/packages/primitives/list/src/index.d.ts.map +1 -0
  306. package/dist/packages/primitives/list/src/index.js +3 -0
  307. package/dist/packages/primitives/live-region/src/LiveRegion.js +7 -0
  308. package/dist/packages/primitives/live-region/src/LiveRegion.js.map +1 -0
  309. package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts +36 -0
  310. package/dist/packages/primitives/live-region/src/LiveRegion.vue.d.ts.map +1 -0
  311. package/dist/packages/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js +59 -0
  312. package/dist/packages/primitives/live-region/src/LiveRegion.vue_vue_type_script_setup_true_lang.js.map +1 -0
  313. package/dist/packages/primitives/live-region/src/context.d.ts +40 -0
  314. package/dist/packages/primitives/live-region/src/context.d.ts.map +1 -0
  315. package/dist/packages/primitives/live-region/src/context.js +85 -0
  316. package/dist/packages/primitives/live-region/src/context.js.map +1 -0
  317. package/dist/packages/primitives/live-region/src/index.d.ts +4 -0
  318. package/dist/packages/primitives/live-region/src/index.d.ts.map +1 -0
  319. package/dist/packages/primitives/live-region/src/index.js +3 -0
  320. package/dist/packages/primitives/live-region/src/useAnnounce.d.ts +17 -0
  321. package/dist/packages/primitives/live-region/src/useAnnounce.d.ts.map +1 -0
  322. package/dist/packages/primitives/live-region/src/useAnnounce.js +25 -0
  323. package/dist/packages/primitives/live-region/src/useAnnounce.js.map +1 -0
  324. package/dist/packages/primitives/menubar/src/Menubar.js.map +1 -1
  325. package/dist/packages/primitives/menubar/src/Menubar.vue.d.ts +20 -6
  326. package/dist/packages/primitives/menubar/src/Menubar.vue.d.ts.map +1 -1
  327. package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js +211 -64
  328. package/dist/packages/primitives/menubar/src/Menubar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  329. package/dist/packages/primitives/meter/src/Meter.js +7 -0
  330. package/dist/packages/primitives/meter/src/Meter.js.map +1 -0
  331. package/dist/packages/primitives/meter/src/Meter.vue.d.ts +87 -0
  332. package/dist/packages/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js +236 -0
  333. package/dist/packages/primitives/meter/src/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -0
  334. package/dist/packages/primitives/meter/src/index.d.ts +4 -0
  335. package/dist/packages/primitives/meter/src/index.js +3 -0
  336. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.js +7 -0
  337. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.js.map +1 -0
  338. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts +69 -0
  339. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue.d.ts.map +1 -0
  340. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js +118 -0
  341. package/dist/packages/primitives/navigation-menu/src/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  342. package/dist/packages/primitives/navigation-menu/src/index.d.ts +3 -0
  343. package/dist/packages/primitives/navigation-menu/src/index.d.ts.map +1 -0
  344. package/dist/packages/primitives/navigation-menu/src/index.js +2 -0
  345. package/dist/packages/primitives/number-field/src/NumberField.js.map +1 -1
  346. package/dist/packages/primitives/number-field/src/NumberField.vue.d.ts +2 -2
  347. package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js +1 -0
  348. package/dist/packages/primitives/number-field/src/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/dist/packages/primitives/number-field/src/index.d.ts +1 -1
  350. package/dist/packages/primitives/otp-input/src/OtpInput.vue.d.ts +2 -2
  351. package/dist/packages/primitives/otp-input/src/index.d.ts +1 -1
  352. package/dist/packages/primitives/pagination/src/Pagination.js.map +1 -1
  353. package/dist/packages/primitives/pagination/src/Pagination.vue.d.ts +3 -3
  354. package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js +1 -1
  355. package/dist/packages/primitives/pagination/src/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  356. package/dist/packages/primitives/pagination/src/index.d.ts +1 -1
  357. package/dist/packages/primitives/popover/src/Popover.js.map +1 -1
  358. package/dist/packages/primitives/popover/src/Popover.vue.d.ts.map +1 -1
  359. package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js +1 -1
  360. package/dist/packages/primitives/popover/src/Popover.vue_vue_type_script_setup_true_lang.js.map +1 -1
  361. package/dist/packages/primitives/progress/src/Progress.vue.d.ts +2 -2
  362. package/dist/packages/primitives/progress/src/index.d.ts +1 -1
  363. package/dist/packages/primitives/radial-progress/src/RadialProgress.vue.d.ts +2 -2
  364. package/dist/packages/primitives/radial-progress/src/index.d.ts +1 -1
  365. package/dist/packages/primitives/radio-group/src/RadioGroup.js.map +1 -1
  366. package/dist/packages/primitives/radio-group/src/RadioGroup.vue.d.ts.map +1 -1
  367. package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js +1 -1
  368. package/dist/packages/primitives/radio-group/src/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  369. package/dist/packages/primitives/rating/src/Rating.vue.d.ts +2 -2
  370. package/dist/packages/primitives/rating/src/index.d.ts +1 -1
  371. package/dist/packages/primitives/segmented-control/src/SegmentedControl.js.map +1 -1
  372. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue.d.ts.map +1 -1
  373. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js +2 -3
  374. package/dist/packages/primitives/segmented-control/src/SegmentedControl.vue_vue_type_script_setup_true_lang.js.map +1 -1
  375. package/dist/packages/primitives/select/src/Select.js.map +1 -1
  376. package/dist/packages/primitives/select/src/Select.vue.d.ts.map +1 -1
  377. package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js +1 -1
  378. package/dist/packages/primitives/select/src/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  379. package/dist/packages/primitives/skip-link/src/SkipLink.js +7 -0
  380. package/dist/packages/primitives/skip-link/src/SkipLink.js.map +1 -0
  381. package/dist/packages/primitives/skip-link/src/SkipLink.vue.d.ts +62 -0
  382. package/dist/packages/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js +64 -0
  383. package/dist/packages/primitives/skip-link/src/SkipLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  384. package/dist/packages/primitives/skip-link/src/index.d.ts +3 -0
  385. package/dist/packages/primitives/skip-link/src/index.js +3 -0
  386. package/dist/packages/primitives/slider/src/Slider.js.map +1 -1
  387. package/dist/packages/primitives/slider/src/Slider.vue.d.ts +6 -3
  388. package/dist/packages/primitives/slider/src/Slider.vue.d.ts.map +1 -1
  389. package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js +15 -10
  390. package/dist/packages/primitives/slider/src/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  391. package/dist/packages/primitives/stepper/src/Stepper.js.map +1 -1
  392. package/dist/packages/primitives/stepper/src/Stepper.vue.d.ts +2 -2
  393. package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js +7 -5
  394. package/dist/packages/primitives/stepper/src/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  395. package/dist/packages/primitives/stepper/src/index.d.ts +1 -1
  396. package/dist/packages/primitives/switch/src/Switch.js.map +1 -1
  397. package/dist/packages/primitives/switch/src/Switch.vue.d.ts +1 -1
  398. package/dist/packages/primitives/switch/src/Switch.vue.d.ts.map +1 -1
  399. package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js +3 -3
  400. package/dist/packages/primitives/switch/src/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  401. package/dist/packages/primitives/table/src/Table.js +7 -0
  402. package/dist/packages/primitives/table/src/Table.js.map +1 -0
  403. package/dist/packages/primitives/table/src/Table.vue.d.ts +45 -0
  404. package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js +72 -0
  405. package/dist/packages/primitives/table/src/Table.vue_vue_type_script_setup_true_lang.js.map +1 -0
  406. package/dist/packages/primitives/table/src/TableCell.js +7 -0
  407. package/dist/packages/primitives/table/src/TableCell.js.map +1 -0
  408. package/dist/packages/primitives/table/src/TableCell.vue.d.ts +19 -0
  409. package/dist/packages/primitives/table/src/TableCell.vue.d.ts.map +1 -0
  410. package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js +17 -0
  411. package/dist/packages/primitives/table/src/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -0
  412. package/dist/packages/primitives/table/src/TableHead.js +7 -0
  413. package/dist/packages/primitives/table/src/TableHead.js.map +1 -0
  414. package/dist/packages/primitives/table/src/TableHead.vue.d.ts +56 -0
  415. package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js +79 -0
  416. package/dist/packages/primitives/table/src/TableHead.vue_vue_type_script_setup_true_lang.js.map +1 -0
  417. package/dist/packages/primitives/table/src/TableRow.js +7 -0
  418. package/dist/packages/primitives/table/src/TableRow.js.map +1 -0
  419. package/dist/packages/primitives/table/src/TableRow.vue.d.ts +39 -0
  420. package/dist/packages/primitives/table/src/TableRow.vue.d.ts.map +1 -0
  421. package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js +61 -0
  422. package/dist/packages/primitives/table/src/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  423. package/dist/packages/primitives/table/src/index.d.ts +10 -0
  424. package/dist/packages/primitives/table/src/index.js +8 -0
  425. package/dist/packages/primitives/tabs/src/Tabs.js.map +1 -1
  426. package/dist/packages/primitives/tabs/src/Tabs.vue.d.ts.map +1 -1
  427. package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js +1 -1
  428. package/dist/packages/primitives/tabs/src/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  429. package/dist/packages/primitives/tags-input/src/TagsInput.js.map +1 -1
  430. package/dist/packages/primitives/tags-input/src/TagsInput.vue.d.ts +2 -2
  431. package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js +1 -1
  432. package/dist/packages/primitives/tags-input/src/TagsInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  433. package/dist/packages/primitives/tags-input/src/index.d.ts +1 -1
  434. package/dist/packages/primitives/text-field/src/TextField.js.map +1 -1
  435. package/dist/packages/primitives/text-field/src/TextField.vue.d.ts +2 -2
  436. package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js +1 -1
  437. package/dist/packages/primitives/text-field/src/TextField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  438. package/dist/packages/primitives/text-field/src/index.d.ts +1 -1
  439. package/dist/packages/primitives/text-field/src/index.js +2 -2
  440. package/dist/packages/primitives/textarea/src/Textarea.js.map +1 -1
  441. package/dist/packages/primitives/textarea/src/Textarea.vue.d.ts +2 -2
  442. package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js +1 -1
  443. package/dist/packages/primitives/textarea/src/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  444. package/dist/packages/primitives/textarea/src/index.d.ts +1 -1
  445. package/dist/packages/primitives/textarea/src/index.js +2 -2
  446. package/dist/packages/primitives/time-picker/src/TimePicker.js.map +1 -1
  447. package/dist/packages/primitives/time-picker/src/TimePicker.vue.d.ts +2 -2
  448. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js +10 -8
  449. package/dist/packages/primitives/time-picker/src/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  450. package/dist/packages/primitives/timeline/src/Timeline.js +7 -0
  451. package/dist/packages/primitives/timeline/src/Timeline.js.map +1 -0
  452. package/dist/packages/primitives/timeline/src/Timeline.vue.d.ts +37 -0
  453. package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js +44 -0
  454. package/dist/packages/primitives/timeline/src/Timeline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  455. package/dist/packages/primitives/timeline/src/TimelineItem.js +7 -0
  456. package/dist/packages/primitives/timeline/src/TimelineItem.js.map +1 -0
  457. package/dist/packages/primitives/timeline/src/TimelineItem.vue.d.ts +50 -0
  458. package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js +96 -0
  459. package/dist/packages/primitives/timeline/src/TimelineItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  460. package/dist/packages/primitives/timeline/src/index.d.ts +5 -0
  461. package/dist/packages/primitives/timeline/src/index.js +5 -0
  462. package/dist/packages/primitives/toast/src/Toast.vue.d.ts +2 -2
  463. package/dist/packages/primitives/toast/src/ToastItem.js.map +1 -1
  464. package/dist/packages/primitives/toast/src/ToastItem.vue.d.ts +2 -2
  465. package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js +5 -3
  466. package/dist/packages/primitives/toast/src/ToastItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  467. package/dist/packages/primitives/toast/src/index.d.ts +1 -1
  468. package/dist/packages/primitives/toggle-group/src/ToggleGroup.js +7 -0
  469. package/dist/packages/primitives/toggle-group/src/ToggleGroup.js.map +1 -0
  470. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts +53 -0
  471. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue.d.ts.map +1 -0
  472. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js +111 -0
  473. package/dist/packages/primitives/toggle-group/src/ToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  474. package/dist/packages/primitives/toggle-group/src/index.d.ts +3 -0
  475. package/dist/packages/primitives/toggle-group/src/index.d.ts.map +1 -0
  476. package/dist/packages/primitives/toggle-group/src/index.js +2 -0
  477. package/dist/packages/primitives/toolbar/src/Toolbar.js +7 -0
  478. package/dist/packages/primitives/toolbar/src/Toolbar.js.map +1 -0
  479. package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts +31 -0
  480. package/dist/packages/primitives/toolbar/src/Toolbar.vue.d.ts.map +1 -0
  481. package/dist/packages/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js +149 -0
  482. package/dist/packages/primitives/toolbar/src/Toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  483. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.js +7 -0
  484. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.js.map +1 -0
  485. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts +24 -0
  486. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue.d.ts.map +1 -0
  487. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js +40 -0
  488. package/dist/packages/primitives/toolbar/src/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  489. package/dist/packages/primitives/toolbar/src/index.d.ts +4 -0
  490. package/dist/packages/primitives/toolbar/src/index.d.ts.map +1 -0
  491. package/dist/packages/primitives/toolbar/src/index.js +3 -0
  492. package/dist/packages/primitives/tooltip/src/Tooltip.js.map +1 -1
  493. package/dist/packages/primitives/tooltip/src/Tooltip.vue.d.ts.map +1 -1
  494. package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js +1 -1
  495. package/dist/packages/primitives/tooltip/src/Tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  496. package/dist/packages/primitives/tree-view/src/TreeView.js +7 -0
  497. package/dist/packages/primitives/tree-view/src/TreeView.js.map +1 -0
  498. package/dist/packages/primitives/tree-view/src/TreeView.vue.d.ts +99 -0
  499. package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js +310 -0
  500. package/dist/packages/primitives/tree-view/src/TreeView.vue_vue_type_script_setup_true_lang.js.map +1 -0
  501. package/dist/packages/primitives/tree-view/src/TreeViewNode.js +7 -0
  502. package/dist/packages/primitives/tree-view/src/TreeViewNode.js.map +1 -0
  503. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts +15 -0
  504. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue.d.ts.map +1 -0
  505. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js +103 -0
  506. package/dist/packages/primitives/tree-view/src/TreeViewNode.vue_vue_type_script_setup_true_lang.js.map +1 -0
  507. package/dist/packages/primitives/tree-view/src/context.d.ts +39 -0
  508. package/dist/packages/primitives/tree-view/src/context.d.ts.map +1 -0
  509. package/dist/packages/primitives/tree-view/src/context.js +6 -0
  510. package/dist/packages/primitives/tree-view/src/context.js.map +1 -0
  511. package/dist/packages/primitives/tree-view/src/index.d.ts +4 -0
  512. package/dist/packages/primitives/tree-view/src/index.js +3 -0
  513. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.js +7 -0
  514. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.js.map +1 -0
  515. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts +21 -0
  516. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue.d.ts.map +1 -0
  517. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js +27 -0
  518. package/dist/packages/primitives/visually-hidden/src/VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map +1 -0
  519. package/dist/packages/primitives/visually-hidden/src/index.d.ts +3 -0
  520. package/dist/packages/primitives/visually-hidden/src/index.d.ts.map +1 -0
  521. package/dist/packages/primitives/visually-hidden/src/index.js +2 -0
  522. package/dist/packages/primitives/window-controls/src/WindowControls.vue.d.ts +2 -2
  523. package/dist/packages/primitives/window-controls/src/index.d.ts +1 -1
  524. package/dist/styles/global.css +59 -0
  525. package/dist/styles/theme.css +13 -0
  526. package/dist/theme.js +3 -0
  527. package/package.json +37 -30
  528. package/dist/packages/blocks/desktop-app-shell/src/DesktopAppShell.vue.d.ts.map +0 -1
  529. package/dist/packages/blocks/title-bar/src/TitleBar.vue.d.ts.map +0 -1
  530. package/dist/packages/blocks/toast-stack/src/ToastStack.vue.d.ts.map +0 -1
  531. package/dist/packages/composition/scroll-reel/src/ScrollReel.vue.d.ts.map +0 -1
  532. package/dist/packages/composition/scroll-reel/src/index.d.ts.map +0 -1
  533. package/dist/packages/loom/src/a11y.d.ts.map +0 -1
  534. package/dist/packages/loom/src/index.d.ts.map +0 -1
  535. package/dist/packages/primitives/alert-dialog/src/AlertDialog.vue.d.ts.map +0 -1
  536. package/dist/packages/primitives/alert-dialog/src/index.d.ts.map +0 -1
  537. package/dist/packages/primitives/avatar-group/src/AvatarGroup.vue.d.ts.map +0 -1
  538. package/dist/packages/primitives/avatar-group/src/index.d.ts.map +0 -1
  539. package/dist/packages/primitives/breadcrumb/src/Breadcrumb.vue.d.ts.map +0 -1
  540. package/dist/packages/primitives/breadcrumb/src/index.d.ts.map +0 -1
  541. package/dist/packages/primitives/color-picker/src/ColorPicker.vue.d.ts.map +0 -1
  542. package/dist/packages/primitives/color-picker/src/index.d.ts.map +0 -1
  543. package/dist/packages/primitives/combobox/src/Combobox.vue.d.ts.map +0 -1
  544. package/dist/packages/primitives/combobox/src/index.d.ts.map +0 -1
  545. package/dist/packages/primitives/date-picker/src/DatePicker.vue.d.ts.map +0 -1
  546. package/dist/packages/primitives/date-range-picker/src/DateRangePicker.vue.d.ts.map +0 -1
  547. package/dist/packages/primitives/date-range-picker/src/index.d.ts.map +0 -1
  548. package/dist/packages/primitives/date-time-picker/src/DateTimePicker.vue.d.ts.map +0 -1
  549. package/dist/packages/primitives/date-time-range-picker/src/DateTimeRangePicker.vue.d.ts.map +0 -1
  550. package/dist/packages/primitives/date-time-range-picker/src/index.d.ts.map +0 -1
  551. package/dist/packages/primitives/dialog/src/Dialog.vue.d.ts.map +0 -1
  552. package/dist/packages/primitives/dialog/src/index.d.ts.map +0 -1
  553. package/dist/packages/primitives/drawer/src/Drawer.vue.d.ts.map +0 -1
  554. package/dist/packages/primitives/drawer/src/index.d.ts.map +0 -1
  555. package/dist/packages/primitives/editable/src/Editable.vue.d.ts.map +0 -1
  556. package/dist/packages/primitives/editable/src/index.d.ts.map +0 -1
  557. package/dist/packages/primitives/file-upload/src/FileUpload.vue.d.ts.map +0 -1
  558. package/dist/packages/primitives/file-upload/src/index.d.ts.map +0 -1
  559. package/dist/packages/primitives/indicator/src/Indicator.vue.d.ts.map +0 -1
  560. package/dist/packages/primitives/indicator/src/index.d.ts.map +0 -1
  561. package/dist/packages/primitives/number-field/src/NumberField.vue.d.ts.map +0 -1
  562. package/dist/packages/primitives/number-field/src/index.d.ts.map +0 -1
  563. package/dist/packages/primitives/otp-input/src/OtpInput.vue.d.ts.map +0 -1
  564. package/dist/packages/primitives/otp-input/src/index.d.ts.map +0 -1
  565. package/dist/packages/primitives/pagination/src/Pagination.vue.d.ts.map +0 -1
  566. package/dist/packages/primitives/pagination/src/index.d.ts.map +0 -1
  567. package/dist/packages/primitives/progress/src/Progress.vue.d.ts.map +0 -1
  568. package/dist/packages/primitives/progress/src/index.d.ts.map +0 -1
  569. package/dist/packages/primitives/radial-progress/src/RadialProgress.vue.d.ts.map +0 -1
  570. package/dist/packages/primitives/radial-progress/src/index.d.ts.map +0 -1
  571. package/dist/packages/primitives/rating/src/Rating.vue.d.ts.map +0 -1
  572. package/dist/packages/primitives/rating/src/index.d.ts.map +0 -1
  573. package/dist/packages/primitives/stepper/src/Stepper.vue.d.ts.map +0 -1
  574. package/dist/packages/primitives/stepper/src/index.d.ts.map +0 -1
  575. package/dist/packages/primitives/tags-input/src/TagsInput.vue.d.ts.map +0 -1
  576. package/dist/packages/primitives/tags-input/src/index.d.ts.map +0 -1
  577. package/dist/packages/primitives/text-field/src/TextField.vue.d.ts.map +0 -1
  578. package/dist/packages/primitives/text-field/src/index.d.ts.map +0 -1
  579. package/dist/packages/primitives/textarea/src/Textarea.vue.d.ts.map +0 -1
  580. package/dist/packages/primitives/textarea/src/index.d.ts.map +0 -1
  581. package/dist/packages/primitives/time-picker/src/TimePicker.vue.d.ts.map +0 -1
  582. package/dist/packages/primitives/toast/src/Toast.vue.d.ts.map +0 -1
  583. package/dist/packages/primitives/toast/src/ToastItem.vue.d.ts.map +0 -1
  584. package/dist/packages/primitives/toast/src/index.d.ts.map +0 -1
  585. package/dist/packages/primitives/window-controls/src/WindowControls.vue.d.ts.map +0 -1
  586. package/dist/packages/primitives/window-controls/src/index.d.ts.map +0 -1
  587. package/dist/styles/theme.contrast.test.ts +0 -460
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../packages/primitives/tree-view/src/TreeView.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { LabelOverrides, TreeViewLabels } from \"@ecoma-io/loom-labels\";\n\n/**\n * Loom's English, co-located with the component so it tree-shakes with it.\n * Everything else a tree renders is a node's own label, so the bag is one\n * string — but it is a string a reader waits on.\n */\nexport const TREE_VIEW_LABELS: TreeViewLabels = {\n loading: \"Loading…\",\n};\n\n/**\n * One node of the tree. `children`'s shape is the contract for expansion: an\n * array of any length (including empty — a known leaf) is static data the\n * tree renders directly, while a node *without* one under a `loadChildren`\n * tree is treated as a branch still to fetch.\n */\nexport interface TreeNode {\n /** The value bound to `v-model` when this node is chosen. Unique within the tree. */\n value: string | number;\n /** The text shown on the row and matched by the typeahead. */\n label: string;\n /** This node's children. Their presence is what makes the row expandable. */\n children?: TreeNode[];\n /** Present but unchoosable: visible, arrow-reachable, refuses selection and expansion. */\n disabled?: boolean;\n}\n\n/** Whether one node or several can be chosen at once. */\nexport type TreeViewSelectionMode = \"single\" | \"multiple\";\n</script>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onScopeDispose, provide, ref, watch } from \"vue\";\nimport { useAncestorDisabled, useLabels } from \"@ecoma-io/loom-labels\";\nimport { TREE_VIEW_CONTEXT, type TreeViewContext, type TreeViewNodeState } from \"./context\";\nimport TreeViewNode from \"./TreeViewNode.vue\";\n\nconst props = withDefaults(\n defineProps<{\n /** The nodes, in the order they are shown, parents before children. */\n nodes: TreeNode[];\n /**\n * The chosen node's `value` — or every chosen value, when `selectionMode`\n * is \"multiple\". The union, not two generic shapes, for the same reason\n * Combobox is: `v-model` needs one binding whose type does not depend on\n * another prop's value, and a scalar/array mismatch is caught the same\n * place the tree catches it — at the render.\n */\n modelValue?: string | number | Array<string | number> | undefined;\n /** Whether one node or several can be chosen at once. */\n selectionMode?: TreeViewSelectionMode;\n /**\n * Fetch a branch's children the first time it is expanded. A node with no\n * `children` of its own is treated as lazily loadable; one that resolves\n * to an empty array becomes a leaf, and a rejected fetch leaves the node\n * collapsed so the next activation retries rather than caching failure.\n */\n loadChildren?: (node: TreeNode) => Promise<TreeNode[]>;\n /** Node values expanded on mount. After mount the tree owns the state. */\n defaultExpanded?: Array<string | number>;\n /**\n * Unavailable: the rows dim, refuse selection and expansion, and drop out\n * of the tab order. Unset defers to an enclosing `<fieldset disabled>`\n * read straight off the DOM.\n */\n disabled?: boolean | undefined;\n /** Names for the strings this control supplies itself. */\n labels?: LabelOverrides<TreeViewLabels> | undefined;\n }>(),\n {\n modelValue: undefined,\n selectionMode: \"single\",\n defaultExpanded: () => [],\n disabled: undefined,\n labels: undefined,\n },\n);\n\nconst emit = defineEmits<{\n /** The chosen node's `value` — or the whole chosen list, when `selectionMode` is \"multiple\". */\n \"update:modelValue\": [value: string | number | Array<string | number>];\n}>();\n\n/**\n * A row as the keyboard sees it: one step of the depth-first walk of the\n * visible tree, with everything the key map needs resolved once per change\n * instead of per keystroke.\n */\ninterface FlatRow {\n value: string | number;\n node: TreeNode;\n level: number;\n setsize: number;\n posinset: number;\n parentId: string | number | null;\n expandable: boolean;\n expanded: boolean;\n selected: boolean;\n busy: boolean;\n disabled: boolean;\n}\n\nconst rootEl = ref<HTMLUListElement | null>(null);\n\nconst ancestorDisabled = useAncestorDisabled(() => rootEl.value);\nconst controlDisabled = computed(() => (props.disabled ?? false) || ancestorDisabled.value);\n\nconst text = useLabels(\"treeView\", TREE_VIEW_LABELS, () => props.labels);\n\n// Seeded once from `defaultExpanded`, then the tree owns it — a prop the user\n// edits after mount silently losing their edits is worse than a seed.\nconst expandedKeys = ref(new Set<string | number>(props.defaultExpanded));\nconst loadingKeys = ref(new Set<string | number>());\nconst lazyChildren = ref(new Map<string | number, TreeNode[]>());\nconst focusValue = ref<string | number | null>(null);\n\nfunction toKeySet(\n model: string | number | Array<string | number> | undefined,\n): Set<string | number> {\n if (model == null) return new Set();\n return new Set(Array.isArray(model) ? model : [model]);\n}\n\n// A mirror rather than a read-through, so the tree works uncontrolled (`v-model`\n// absent, `modelValue` never supplied) exactly as it does controlled — the same\n// contract Combobox keeps.\nconst selectedKeys = ref(toKeySet(props.modelValue));\nwatch(\n () => props.modelValue,\n (next) => {\n selectedKeys.value = toKeySet(next);\n },\n);\n\nfunction childrenOf(node: TreeNode): TreeNode[] {\n if (Array.isArray(node.children)) return node.children;\n return lazyChildren.value.get(node.value) ?? [];\n}\n\n/**\n * A row can open when it has children to show: a non-empty `children` array,\n * or a fetch already resolved beneath it — an empty resolution *is* the\n * answer, and the row collapses back to a leaf rather than offering a branch\n * that opens onto nothing.\n */\nfunction isExpandable(node: TreeNode): boolean {\n if (Array.isArray(node.children)) return node.children.length > 0;\n const loaded = lazyChildren.value.get(node.value);\n if (loaded) return loaded.length > 0;\n return props.loadChildren != null;\n}\n\nconst flatRows = computed<FlatRow[]>(() => {\n const rows: FlatRow[] = [];\n const walk = (nodes: TreeNode[], level: number, parentId: string | number | null): void => {\n for (let index = 0; index < nodes.length; index++) {\n const node = nodes[index];\n if (!node) continue;\n const expandable = isExpandable(node);\n const expanded = expandable && expandedKeys.value.has(node.value);\n rows.push({\n value: node.value,\n node,\n level,\n setsize: nodes.length,\n posinset: index + 1,\n parentId,\n expandable,\n expanded,\n selected: selectedKeys.value.has(node.value),\n busy: loadingKeys.value.has(node.value),\n disabled: (node.disabled ?? false) || controlDisabled.value,\n });\n if (expanded) walk(childrenOf(node), level + 1, node.value);\n }\n };\n walk(props.nodes, 1, null);\n return rows;\n});\n\nconst rowByValue = computed(() => new Map(flatRows.value.map((row) => [row.value, row])));\n\n// The roving tab stop: wherever the reader last was, or — before the first\n// arrow key — the first row a Tab is allowed to land on. A disabled row is\n// reachable from inside the tree but never *entered* from outside it.\nconst tabStopValue = computed<string | number | null>(() => {\n // The stop answers \"where Tab would land\", not \"where the reader is\": the\n // arrows deliberately rest on disabled rows, but entering the tree from\n // outside must land on the first enabled one.\n const focused = focusValue.value != null ? rowByValue.value.get(focusValue.value) : undefined;\n if (focused && !focused.disabled) return focusValue.value;\n const firstEnabled = flatRows.value.find((row) => !row.disabled);\n return firstEnabled?.value ?? null;\n});\n\nfunction stateFor(node: TreeNode): TreeViewNodeState {\n const row = rowByValue.value.get(node.value);\n return {\n expandable: row?.expandable ?? false,\n expanded: row?.expanded ?? false,\n selected: row?.selected ?? false,\n busy: row?.busy ?? false,\n disabled: row?.disabled ?? false,\n focusable: !controlDisabled.value && row?.value === tabStopValue.value,\n };\n}\n\nasync function expandRow(row: FlatRow): Promise<void> {\n const value = row.node.value;\n if (\n row.disabled ||\n !row.expandable ||\n expandedKeys.value.has(value) ||\n loadingKeys.value.has(value)\n ) {\n return;\n }\n const isLazy =\n !Array.isArray(row.node.children) &&\n props.loadChildren != null &&\n !lazyChildren.value.has(value);\n if (isLazy && props.loadChildren) {\n loadingKeys.value = new Set(loadingKeys.value).add(value);\n try {\n const children = await props.loadChildren(row.node);\n const next = new Map(lazyChildren.value);\n next.set(value, children);\n lazyChildren.value = next;\n } catch {\n // The fetch failed: leave the row collapsed and still expandable, so\n // the next activation retries rather than caching a broken branch.\n return;\n } finally {\n const settled = new Set(loadingKeys.value);\n settled.delete(value);\n loadingKeys.value = settled;\n }\n }\n expandedKeys.value = new Set(expandedKeys.value).add(value);\n}\n\nfunction collapseRow(value: string | number): void {\n const next = new Set(expandedKeys.value);\n next.delete(value);\n expandedKeys.value = next;\n}\n\nfunction selectRow(node: TreeNode): void {\n if (controlDisabled.value || node.disabled) return;\n if (props.selectionMode === \"multiple\") {\n const next = new Set(selectedKeys.value);\n if (next.has(node.value)) next.delete(node.value);\n else next.add(node.value);\n selectedKeys.value = next;\n emit(\"update:modelValue\", [...next]);\n return;\n }\n selectedKeys.value = new Set([node.value]);\n emit(\"update:modelValue\", node.value);\n}\n\nfunction rowElement(value: string | number): HTMLElement | null {\n const root = rootEl.value;\n if (!root) return null;\n return root.querySelector<HTMLElement>(`[data-tree-value=\"${CSS.escape(String(value))}\"]`);\n}\n\nfunction focusRow(row: FlatRow | undefined): void {\n if (!row) return;\n focusValue.value = row.node.value;\n void nextTick(() => {\n rowElement(row.value)?.focus();\n });\n}\n\nfunction onRowFocus(node: TreeNode): void {\n focusValue.value = node.value;\n}\n\nfunction onRowActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value) return;\n focusRow(row);\n selectRow(node);\n}\n\nfunction onChevronActivate(node: TreeNode): void {\n const row = rowByValue.value.get(node.value);\n if (!row || controlDisabled.value || row.disabled) return;\n focusRow(row);\n if (row.expanded) collapseRow(node.value);\n else void expandRow(row);\n}\n\nfunction currentRowIndex(): number {\n if (focusValue.value == null) return -1;\n return flatRows.value.findIndex((row) => row.value === focusValue.value);\n}\n\n/*\n * The typeahead. APG trees match a prefix of the row's label, starting after\n * the current row and wrapping; the same character typed again cycles to that\n * character's next match rather than extending a prefix to itself. The buffer\n * is 500 ms, and the timer is released with the scope so a tree torn down\n * mid-typeahead leaves nothing pending.\n */\nconst TYPEAHEAD_RESET_MS = 500;\nlet typeaheadBuffer = \"\";\nlet typeaheadTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction handleTypeahead(event: KeyboardEvent): void {\n if (event.key.length !== 1 || event.altKey || event.ctrlKey || event.metaKey) return;\n if (flatRows.value.length === 0) return;\n const char = event.key.toLowerCase();\n // Repeat detection reads the buffer's LAST character: a multi-character\n // prefix must survive a repeated final character so the walk cycles to\n // the next match instead of extending the prefix to a non-match.\n if (typeaheadBuffer.slice(-1) !== char) typeaheadBuffer += char;\n const query = typeaheadBuffer;\n const start = currentRowIndex() + 1;\n for (let step = 0; step < flatRows.value.length; step++) {\n const row = flatRows.value[(start + step) % flatRows.value.length];\n // Typeahead is a jump made from outside the walk, like the entry tab\n // stop: it lands on a row the reader can act on. The arrows remain the\n // way to deliberately rest on a disabled row.\n if (row && !row.disabled && row.node.label.toLowerCase().startsWith(query)) {\n focusRow(row);\n break;\n }\n }\n event.preventDefault();\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n typeaheadTimer = setTimeout(() => {\n typeaheadBuffer = \"\";\n typeaheadTimer = undefined;\n }, TYPEAHEAD_RESET_MS);\n}\n\nonScopeDispose(() => {\n if (typeaheadTimer !== undefined) clearTimeout(typeaheadTimer);\n});\n\n/**\n * One keydown on the root, reached from every row by bubbling: the key map is\n * written once against the flat visible walk instead of duplicated per row.\n * Disabled rows stay in the arrow walk — present and reachable, per the APG —\n * but Enter, Space and the disclosure keys refuse them.\n */\nfunction onKeydown(event: KeyboardEvent): void {\n if (controlDisabled.value) return;\n const rows = flatRows.value;\n if (rows.length === 0) return;\n const index = currentRowIndex();\n const row = index >= 0 ? rows[index] : undefined;\n\n switch (event.key) {\n case \"ArrowDown\": {\n const next = rows[index + 1];\n if (next) focusRow(next);\n break;\n }\n case \"ArrowUp\": {\n const previous = index > 0 ? rows[index - 1] : undefined;\n if (previous) focusRow(previous);\n break;\n }\n case \"Home\":\n focusRow(rows[0]);\n break;\n case \"End\":\n focusRow(rows[rows.length - 1]);\n break;\n case \"ArrowRight\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && !row.expanded) {\n void expandRow(row);\n break;\n }\n if (row.expanded) {\n const child = rows[index + 1];\n if (child && child.level === row.level + 1) focusRow(child);\n }\n break;\n }\n case \"ArrowLeft\": {\n if (!row) break;\n if (row.disabled) break;\n if (row.expandable && row.expanded) {\n collapseRow(row.value);\n break;\n }\n if (row.parentId != null) {\n const parent = rowByValue.value.get(row.parentId);\n if (parent) focusRow(parent);\n }\n break;\n }\n case \"Enter\":\n case \" \":\n if (row) selectRow(row.node);\n break;\n default:\n handleTypeahead(event);\n return;\n }\n event.preventDefault();\n}\n\nprovide(TREE_VIEW_CONTEXT, {\n stateFor,\n childrenOf,\n loadingText: computed(() => text.value.loading),\n onRowFocus,\n onRowActivate,\n onChevronActivate,\n} satisfies TreeViewContext);\n</script>\n\n<!--\n The tree is a plain `<ul>`, so the caller's `aria-label`, `aria-labelledby`\n and `id` fall through to it untouched — naming the tree is naming the\n element, exactly as the APG example does. Rows render one tab stop at a\n time (roving tabindex); the keydown above is the only keyboard listener.\n-->\n<template>\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -- the container is deliberately not focusable: focus roves across the rows (APG tree view), so exactly one row holds the tab stop and the `<ul>` itself never takes one. -->\n <ul\n ref=\"rootEl\"\n role=\"tree\"\n :aria-multiselectable=\"selectionMode === 'multiple' ? 'true' : undefined\"\n :aria-disabled=\"controlDisabled ? 'true' : undefined\"\n class=\"m-0 list-none select-none p-0 text-sm text-foreground\"\n @keydown=\"onKeydown\"\n >\n <TreeViewNode\n v-for=\"(node, index) in nodes\"\n :key=\"node.value\"\n :node=\"node\"\n :level=\"1\"\n :setsize=\"nodes.length\"\n :posinset=\"index + 1\"\n />\n </ul>\n</template>\n"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import TreeViewNode_vue_vue_type_script_setup_true_lang_default from "./TreeViewNode.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/tree-view/src/TreeViewNode.vue
3
+ var TreeViewNode_default = TreeViewNode_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { TreeViewNode_default as default };
6
+
7
+ //# sourceMappingURL=TreeViewNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeViewNode.js","names":[],"sources":["../../../../../packages/primitives/tree-view/src/TreeViewNode.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport type { TreeNode } from \"./TreeView.vue\";\nimport { TREE_VIEW_CONTEXT } from \"./context\";\n\nconst props = defineProps<{\n /** The node this row renders, with its subtree beneath it. */\n node: TreeNode;\n /** One-based depth — what `aria-level` says. */\n level: number;\n /** How many siblings this row has — what `aria-setsize` says. */\n setsize: number;\n /** This row's one-based position among those siblings — what `aria-posinset` says. */\n posinset: number;\n}>();\n\nconst ctx = inject(TREE_VIEW_CONTEXT);\nif (!ctx) throw new Error(\"TreeViewNode must be rendered inside a TreeView.\");\n\nconst state = computed(() => ctx.stateFor(props.node));\nconst children = computed(() => ctx.childrenOf(props.node));\n// `aria-expanded` and `aria-selected` want the literal strings \"true\"/\"false\";\n// `String()` widens to `string`, which the ARIA types refuse.\nconst ariaExpanded = computed(() =>\n state.value.expandable ? (state.value.expanded ? \"true\" : \"false\") : undefined,\n);\nconst ariaSelected = computed(() => (state.value.selected ? \"true\" : \"false\"));\n</script>\n\n<template>\n <!--\n The role carrier and the focus carrier are different elements on purpose.\n ARIA attributes belong on the `li` the tree grammar expects; the tab stop,\n the focus ring and the highlight sit on the inner row `div`, so the ring\n wraps the row the reader is on and not the whole open branch beneath it.\n -->\n <li\n role=\"treeitem\"\n :aria-level=\"level\"\n :aria-setsize=\"setsize\"\n :aria-posinset=\"posinset\"\n :aria-expanded=\"ariaExpanded\"\n :aria-selected=\"ariaSelected\"\n :aria-disabled=\"state.disabled ? 'true' : undefined\"\n :aria-busy=\"state.busy ? 'true' : undefined\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -- the row answers the keyboard through the one keydown on the root `<ul>` every keydown bubbles to; a per-row listener would duplicate it. -->\n <div\n :data-tree-value=\"String(node.value)\"\n :tabindex=\"state.focusable ? 0 : -1\"\n :class=\"\n cn(\n 'flex cursor-pointer select-none items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm outline-none',\n 'transition-colors duration-fast ease-out',\n 'hover:bg-subtle',\n 'focus-visible:bg-subtle focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring',\n state.selected && 'bg-primary-muted text-primary-text',\n state.disabled && 'cursor-not-allowed',\n )\n \"\n @focusin=\"ctx.onRowFocus(node)\"\n @click=\"ctx.onRowActivate(node)\"\n >\n <!--\n The disclosure control is a glyph, not a button: a real `<button>`\n would be a second tab stop inside every openable row, which is the one\n thing the roving-tabindex contract cannot afford. Pointer users click\n it; keyboard users reach the same behaviour with ArrowRight and\n ArrowLeft, so nothing is keyboard-only because of this.\n -->\n <span\n v-if=\"state.expandable\"\n class=\"flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground\"\n aria-hidden=\"true\"\n @click.stop=\"ctx.onChevronActivate(node)\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n :class=\"\n cn(\n 'h-3.5 w-3.5 transition-transform duration-fast ease-out',\n state.expanded && 'rotate-90',\n )\n \"\n >\n <path\n d=\"m6 4 4 4-4 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <!-- The same slot, left empty on a leaf, keeps every label on one axis. -->\n <span v-else class=\"h-4 w-4 shrink-0\" aria-hidden=\"true\"></span>\n\n <span class=\"truncate\" :class=\"state.disabled && 'text-muted-foreground'\">{{\n node.label\n }}</span>\n <span v-if=\"state.busy\" class=\"shrink-0 text-small text-muted-foreground\">{{\n ctx.loadingText.value\n }}</span>\n </div>\n\n <ul v-if=\"state.expanded\" role=\"group\" class=\"m-0 list-none p-0 pl-4\">\n <TreeViewNode\n v-for=\"(child, index) in children\"\n :key=\"child.value\"\n :node=\"child\"\n :level=\"level + 1\"\n :setsize=\"children.length\"\n :posinset=\"index + 1\"\n />\n </ul>\n </li>\n</template>\n"],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { TreeNode } from "./TreeView.vue";
2
+ type __VLS_Props = {
3
+ /** The node this row renders, with its subtree beneath it. */
4
+ node: TreeNode;
5
+ /** One-based depth — what `aria-level` says. */
6
+ level: number;
7
+ /** How many siblings this row has — what `aria-setsize` says. */
8
+ setsize: number;
9
+ /** This row's one-based position among those siblings — what `aria-posinset` says. */
10
+ posinset: number;
11
+ };
12
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ //# sourceMappingURL=TreeViewNode.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeViewNode.vue.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/tree-view/src/TreeViewNode.vue"],"names":[],"mappings":"AA6HA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,KAAK,WAAW,GAAG;IACjB,8DAA8D;IAC9D,IAAI,EAAE,QAAQ,CAAC;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA4KF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,103 @@
1
+ import { cn } from "../../../core/src/cn.js";
2
+ import "../../../core/src/index.js";
3
+ import { TREE_VIEW_CONTEXT } from "./context.js";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, inject, normalizeClass, openBlock, renderList, resolveComponent, toDisplayString, unref, withModifiers } from "vue";
5
+ //#region packages/primitives/tree-view/src/TreeViewNode.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1 = [
7
+ "aria-level",
8
+ "aria-setsize",
9
+ "aria-posinset",
10
+ "aria-expanded",
11
+ "aria-selected",
12
+ "aria-disabled",
13
+ "aria-busy"
14
+ ];
15
+ var _hoisted_2 = ["data-tree-value", "tabindex"];
16
+ var _hoisted_3 = {
17
+ key: 1,
18
+ class: "h-4 w-4 shrink-0",
19
+ "aria-hidden": "true"
20
+ };
21
+ var _hoisted_4 = {
22
+ key: 2,
23
+ class: "shrink-0 text-small text-muted-foreground"
24
+ };
25
+ var _hoisted_5 = {
26
+ key: 0,
27
+ role: "group",
28
+ class: "m-0 list-none p-0 pl-4"
29
+ };
30
+ var TreeViewNode_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
31
+ __name: "TreeViewNode",
32
+ props: {
33
+ node: {},
34
+ level: {},
35
+ setsize: {},
36
+ posinset: {}
37
+ },
38
+ setup(__props) {
39
+ const props = __props;
40
+ const ctx = inject(TREE_VIEW_CONTEXT);
41
+ if (!ctx) throw new Error("TreeViewNode must be rendered inside a TreeView.");
42
+ const state = computed(() => ctx.stateFor(props.node));
43
+ const children = computed(() => ctx.childrenOf(props.node));
44
+ const ariaExpanded = computed(() => state.value.expandable ? state.value.expanded ? "true" : "false" : void 0);
45
+ const ariaSelected = computed(() => state.value.selected ? "true" : "false");
46
+ return (_ctx, _cache) => {
47
+ const _component_TreeViewNode = resolveComponent("TreeViewNode", true);
48
+ return openBlock(), createElementBlock("li", {
49
+ role: "treeitem",
50
+ "aria-level": __props.level,
51
+ "aria-setsize": __props.setsize,
52
+ "aria-posinset": __props.posinset,
53
+ "aria-expanded": ariaExpanded.value,
54
+ "aria-selected": ariaSelected.value,
55
+ "aria-disabled": state.value.disabled ? "true" : void 0,
56
+ "aria-busy": state.value.busy ? "true" : void 0
57
+ }, [createElementVNode("div", {
58
+ "data-tree-value": String(__props.node.value),
59
+ tabindex: state.value.focusable ? 0 : -1,
60
+ class: normalizeClass(unref(cn)("flex cursor-pointer select-none items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm outline-none", "transition-colors duration-fast ease-out", "hover:bg-subtle", "focus-visible:bg-subtle focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring", state.value.selected && "bg-primary-muted text-primary-text", state.value.disabled && "cursor-not-allowed")),
61
+ onFocusin: _cache[1] || (_cache[1] = ($event) => unref(ctx).onRowFocus(__props.node)),
62
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(ctx).onRowActivate(__props.node))
63
+ }, [
64
+ state.value.expandable ? (openBlock(), createElementBlock("span", {
65
+ key: 0,
66
+ class: "flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground",
67
+ "aria-hidden": "true",
68
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => unref(ctx).onChevronActivate(__props.node), ["stop"]))
69
+ }, [(openBlock(), createElementBlock("svg", {
70
+ viewBox: "0 0 16 16",
71
+ fill: "none",
72
+ "aria-hidden": "true",
73
+ class: normalizeClass(unref(cn)("h-3.5 w-3.5 transition-transform duration-fast ease-out", state.value.expanded && "rotate-90"))
74
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("path", {
75
+ d: "m6 4 4 4-4 4",
76
+ stroke: "currentColor",
77
+ "stroke-width": "1.5",
78
+ "stroke-linecap": "round",
79
+ "stroke-linejoin": "round"
80
+ }, null, -1)])], 2))])) : (openBlock(), createElementBlock("span", _hoisted_3)),
81
+ createElementVNode("span", { class: normalizeClass(["truncate", state.value.disabled && "text-muted-foreground"]) }, toDisplayString(__props.node.label), 3),
82
+ state.value.busy ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(unref(ctx).loadingText.value), 1)) : createCommentVNode("", true)
83
+ ], 42, _hoisted_2), state.value.expanded ? (openBlock(), createElementBlock("ul", _hoisted_5, [(openBlock(true), createElementBlock(Fragment, null, renderList(children.value, (child, index) => {
84
+ return openBlock(), createBlock(_component_TreeViewNode, {
85
+ key: child.value,
86
+ node: child,
87
+ level: __props.level + 1,
88
+ setsize: children.value.length,
89
+ posinset: index + 1
90
+ }, null, 8, [
91
+ "node",
92
+ "level",
93
+ "setsize",
94
+ "posinset"
95
+ ]);
96
+ }), 128))])) : createCommentVNode("", true)], 8, _hoisted_1);
97
+ };
98
+ }
99
+ });
100
+ //#endregion
101
+ export { TreeViewNode_vue_vue_type_script_setup_true_lang_default as default };
102
+
103
+ //# sourceMappingURL=TreeViewNode.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeViewNode.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../packages/primitives/tree-view/src/TreeViewNode.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from \"vue\";\nimport { cn } from \"@ecoma-io/loom-core\";\nimport type { TreeNode } from \"./TreeView.vue\";\nimport { TREE_VIEW_CONTEXT } from \"./context\";\n\nconst props = defineProps<{\n /** The node this row renders, with its subtree beneath it. */\n node: TreeNode;\n /** One-based depth — what `aria-level` says. */\n level: number;\n /** How many siblings this row has — what `aria-setsize` says. */\n setsize: number;\n /** This row's one-based position among those siblings — what `aria-posinset` says. */\n posinset: number;\n}>();\n\nconst ctx = inject(TREE_VIEW_CONTEXT);\nif (!ctx) throw new Error(\"TreeViewNode must be rendered inside a TreeView.\");\n\nconst state = computed(() => ctx.stateFor(props.node));\nconst children = computed(() => ctx.childrenOf(props.node));\n// `aria-expanded` and `aria-selected` want the literal strings \"true\"/\"false\";\n// `String()` widens to `string`, which the ARIA types refuse.\nconst ariaExpanded = computed(() =>\n state.value.expandable ? (state.value.expanded ? \"true\" : \"false\") : undefined,\n);\nconst ariaSelected = computed(() => (state.value.selected ? \"true\" : \"false\"));\n</script>\n\n<template>\n <!--\n The role carrier and the focus carrier are different elements on purpose.\n ARIA attributes belong on the `li` the tree grammar expects; the tab stop,\n the focus ring and the highlight sit on the inner row `div`, so the ring\n wraps the row the reader is on and not the whole open branch beneath it.\n -->\n <li\n role=\"treeitem\"\n :aria-level=\"level\"\n :aria-setsize=\"setsize\"\n :aria-posinset=\"posinset\"\n :aria-expanded=\"ariaExpanded\"\n :aria-selected=\"ariaSelected\"\n :aria-disabled=\"state.disabled ? 'true' : undefined\"\n :aria-busy=\"state.busy ? 'true' : undefined\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/click-events-have-key-events, vuejs-accessibility/no-static-element-interactions -- the row answers the keyboard through the one keydown on the root `<ul>` every keydown bubbles to; a per-row listener would duplicate it. -->\n <div\n :data-tree-value=\"String(node.value)\"\n :tabindex=\"state.focusable ? 0 : -1\"\n :class=\"\n cn(\n 'flex cursor-pointer select-none items-center gap-1.5 rounded-sm px-2 py-1.5 text-sm outline-none',\n 'transition-colors duration-fast ease-out',\n 'hover:bg-subtle',\n 'focus-visible:bg-subtle focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring',\n state.selected && 'bg-primary-muted text-primary-text',\n state.disabled && 'cursor-not-allowed',\n )\n \"\n @focusin=\"ctx.onRowFocus(node)\"\n @click=\"ctx.onRowActivate(node)\"\n >\n <!--\n The disclosure control is a glyph, not a button: a real `<button>`\n would be a second tab stop inside every openable row, which is the one\n thing the roving-tabindex contract cannot afford. Pointer users click\n it; keyboard users reach the same behaviour with ArrowRight and\n ArrowLeft, so nothing is keyboard-only because of this.\n -->\n <span\n v-if=\"state.expandable\"\n class=\"flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground\"\n aria-hidden=\"true\"\n @click.stop=\"ctx.onChevronActivate(node)\"\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n :class=\"\n cn(\n 'h-3.5 w-3.5 transition-transform duration-fast ease-out',\n state.expanded && 'rotate-90',\n )\n \"\n >\n <path\n d=\"m6 4 4 4-4 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <!-- The same slot, left empty on a leaf, keeps every label on one axis. -->\n <span v-else class=\"h-4 w-4 shrink-0\" aria-hidden=\"true\"></span>\n\n <span class=\"truncate\" :class=\"state.disabled && 'text-muted-foreground'\">{{\n node.label\n }}</span>\n <span v-if=\"state.busy\" class=\"shrink-0 text-small text-muted-foreground\">{{\n ctx.loadingText.value\n }}</span>\n </div>\n\n <ul v-if=\"state.expanded\" role=\"group\" class=\"m-0 list-none p-0 pl-4\">\n <TreeViewNode\n v-for=\"(child, index) in children\"\n :key=\"child.value\"\n :node=\"child\"\n :level=\"level + 1\"\n :setsize=\"children.length\"\n :posinset=\"index + 1\"\n />\n </ul>\n </li>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAWd,MAAM,MAAM,OAAO,iBAAiB;EACpC,IAAI,CAAC,KAAK,MAAM,IAAI,MAAM,kDAAkD;EAE5E,MAAM,QAAQ,eAAe,IAAI,SAAS,MAAM,IAAI,CAAC;EACrD,MAAM,WAAW,eAAe,IAAI,WAAW,MAAM,IAAI,CAAC;EAG1D,MAAM,eAAe,eACnB,MAAM,MAAM,aAAc,MAAM,MAAM,WAAW,SAAS,UAAW,KAAA,CACvE;EACA,MAAM,eAAe,eAAgB,MAAM,MAAM,WAAW,SAAS,OAAQ;;;GAU3E,OAAA,UAAA,GAAA,mBAiFK,MAAA;IAhFH,MAAK;IACJ,cAAY,QAAA;IACZ,gBAAc,QAAA;IACd,iBAAe,QAAA;IACf,iBAAe,aAAA;IACf,iBAAe,aAAA;IACf,iBAAe,MAAA,MAAM,WAAQ,SAAY,KAAA;IACzC,aAAW,MAAA,MAAM,OAAI,SAAY,KAAA;GAGlC,GAAA,CAAA,mBA0DM,OAAA;IAzDH,mBAAiB,OAAO,QAAA,KAAK,KAAK;IAClC,UAAU,MAAA,MAAM,YAAS,IAAA;IACzB,OAAK,eAAW,MAAA,EAAA,CAAE,CAAA,oGAAA,4CAAA,mBAAA,8GAAqU,MAAA,MAAM,YAAQ,sCAAoD,MAAA,MAAM,YAAQ,oBAAA,CAAA;IAUva,WAAO,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,GAAA,CAAG,CAAC,WAAW,QAAA,IAAI;IAC5B,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,MAAA,GAAA,CAAG,CAAC,cAAc,QAAA,IAAI;;IAUtB,MAAA,MAAM,cADd,UAAA,GAAA,mBAyBO,QAAA;;KAvBL,OAAM;KACN,eAAY;KACX,SAAK,OAAA,OAAA,OAAA,KAAA,eAAA,WAAO,MAAA,GAAA,CAAG,CAAC,kBAAkB,QAAA,IAAI,GAAA,CAAA,MAAA,CAAA;IAEvC,GAAA,EAAA,UAAA,GAAA,mBAkBM,OAAA;KAjBJ,SAAQ;KACR,MAAK;KACL,eAAY;KACX,OAAK,eAAe,MAAA,EAAA,CAAE,CAAA,2DAAyF,MAAA,MAAM,YAAQ,WAAA,CAAA;IAO9H,GAAA,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAAA,mBAME,QAAA;KALA,GAAE;KACF,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;IAKtB,GAAA,MAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA,MAAA,UAAA,GAAA,mBAAgE,QAAhE,UAAgE;IAEhE,mBAES,QAAA,EAFH,OAAK,eAAA,CAAC,YAAmB,MAAA,MAAM,YAAQ,uBAAA,CAAA,EAC3C,GAAA,gBAAA,QAAA,KAAK,KAAK,GAAA,CAAA;IAEA,MAAA,MAAM,QAAlB,UAAA,GAAA,mBAES,QAFT,YAES,gBADP,MAAA,GAAA,CAAG,CAAC,YAAY,KAAK,GAAA,CAAA,KAAA,mBAAA,IAAA,IAAA;GAIf,GAAA,IAAA,UAAA,GAAA,MAAA,MAAM,YAAhB,UAAA,GAAA,mBASK,MATL,YASK,EARH,UAAA,IAAA,GAAA,mBAOE,UAAA,MAAA,WANyB,SAAA,QAAjB,OAAO,UAAK;IADtB,OAAA,UAAA,GAAA,YAOE,yBAAA;KALC,KAAK,MAAM;KACX,MAAM;KACN,OAAO,QAAA,QAAK;KACZ,SAAS,SAAA,MAAS;KAClB,UAAU,QAAK"}
@@ -0,0 +1,39 @@
1
+ import type { ComputedRef, InjectionKey } from "vue";
2
+ import type { TreeNode } from "./TreeView.vue";
3
+ /**
4
+ * What a row needs to know about itself, resolved by the tree that owns the
5
+ * state. The node component stays presentational: it computes nothing about
6
+ * expandability, selection or focus and renders what it is handed.
7
+ */
8
+ export interface TreeViewNodeState {
9
+ /** The row can open and close — it has children to show. */
10
+ expandable: boolean;
11
+ /** The row is open, so its subtree is in the DOM beneath it. */
12
+ expanded: boolean;
13
+ /** The row is one of the chosen ones. */
14
+ selected: boolean;
15
+ /** The row's children are being fetched by `loadChildren` right now. */
16
+ busy: boolean;
17
+ /** The row, or the whole tree it stands in, is unavailable. */
18
+ disabled: boolean;
19
+ /** The row holds the roving tab stop — the one row Tab reaches. */
20
+ focusable: boolean;
21
+ }
22
+ /**
23
+ * The seam between the tree (which owns every bit of state and the keyboard)
24
+ * and its rows. Provided once by the tree and injected at every depth, which
25
+ * is what lets the recursion be a plain SFC: events go up through these
26
+ * handlers, state comes down through these getters, and neither side carries
27
+ * the other's props through N levels of re-emission.
28
+ */
29
+ export interface TreeViewContext {
30
+ stateFor(node: TreeNode): TreeViewNodeState;
31
+ childrenOf(node: TreeNode): TreeNode[];
32
+ /** The localised string shown while a row's children are being fetched. */
33
+ loadingText: ComputedRef<string>;
34
+ onRowFocus(node: TreeNode): void;
35
+ onRowActivate(node: TreeNode): void;
36
+ onChevronActivate(node: TreeNode): void;
37
+ }
38
+ export declare const TREE_VIEW_CONTEXT: InjectionKey<TreeViewContext>;
39
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/tree-view/src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,UAAU,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,QAAQ,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,iBAAiB,CAAC;IAC5C,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,CAAC;IACvC,2EAA2E;IAC3E,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,eAAe,CAA4B,CAAC"}
@@ -0,0 +1,6 @@
1
+ //#region packages/primitives/tree-view/src/context.ts
2
+ var TREE_VIEW_CONTEXT = Symbol("loom.tree-view");
3
+ //#endregion
4
+ export { TREE_VIEW_CONTEXT };
5
+
6
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../../packages/primitives/tree-view/src/context.ts"],"sourcesContent":["import type { ComputedRef, InjectionKey } from \"vue\";\nimport type { TreeNode } from \"./TreeView.vue\";\n\n/**\n * What a row needs to know about itself, resolved by the tree that owns the\n * state. The node component stays presentational: it computes nothing about\n * expandability, selection or focus and renders what it is handed.\n */\nexport interface TreeViewNodeState {\n /** The row can open and close — it has children to show. */\n expandable: boolean;\n /** The row is open, so its subtree is in the DOM beneath it. */\n expanded: boolean;\n /** The row is one of the chosen ones. */\n selected: boolean;\n /** The row's children are being fetched by `loadChildren` right now. */\n busy: boolean;\n /** The row, or the whole tree it stands in, is unavailable. */\n disabled: boolean;\n /** The row holds the roving tab stop — the one row Tab reaches. */\n focusable: boolean;\n}\n\n/**\n * The seam between the tree (which owns every bit of state and the keyboard)\n * and its rows. Provided once by the tree and injected at every depth, which\n * is what lets the recursion be a plain SFC: events go up through these\n * handlers, state comes down through these getters, and neither side carries\n * the other's props through N levels of re-emission.\n */\nexport interface TreeViewContext {\n stateFor(node: TreeNode): TreeViewNodeState;\n childrenOf(node: TreeNode): TreeNode[];\n /** The localised string shown while a row's children are being fetched. */\n loadingText: ComputedRef<string>;\n onRowFocus(node: TreeNode): void;\n onRowActivate(node: TreeNode): void;\n onChevronActivate(node: TreeNode): void;\n}\n\nexport const TREE_VIEW_CONTEXT: InjectionKey<TreeViewContext> = Symbol(\"loom.tree-view\");\n"],"mappings":";AAwCA,IAAa,oBAAmD,OAAO,gBAAgB"}
@@ -0,0 +1,4 @@
1
+ export { default, TREE_VIEW_LABELS } from "./TreeView.vue";
2
+ export type { TreeNode, TreeViewSelectionMode } from "./TreeView.vue";
3
+ export type { TreeViewLabels } from "../../../labels/src/index";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { TREE_VIEW_LABELS } from "./TreeView.vue_vue_type_script_setup_true_lang.js";
2
+ import TreeView_default from "./TreeView.js";
3
+ export { TREE_VIEW_LABELS, TreeView_default as default };
@@ -0,0 +1,7 @@
1
+ import VisuallyHidden_vue_vue_type_script_setup_true_lang_default from "./VisuallyHidden.vue_vue_type_script_setup_true_lang.js";
2
+ //#region packages/primitives/visually-hidden/src/VisuallyHidden.vue
3
+ var VisuallyHidden_default = VisuallyHidden_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { VisuallyHidden_default as default };
6
+
7
+ //# sourceMappingURL=VisuallyHidden.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHidden.js","names":[],"sources":["../../../../../packages/primitives/visually-hidden/src/VisuallyHidden.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Which element tag carries the visually-hidden content. */\nexport type VisuallyHiddenElement = \"span\" | \"div\";\n</script>\n\n<script setup lang=\"ts\">\n/**\n * VisuallyHidden — content assistive technology reads that the page never\n * paints. The clip technique: a 1×1 box pulled out of flow and clipped to\n * nothing, which keeps the content in the accessibility tree and reachable\n * by in-page find. Deliberately not `display: none`, which would remove it\n * from screen readers too, and never focusable in its own right — if the\n * content should take focus, the caller puts a focusable element in the\n * slot and this wrapper stays inert.\n */\nwithDefaults(\n defineProps<{\n /** `span` keeps the markup valid inside phrasing content — labels, buttons, paragraphs. `div` when the hidden content is a block of its own. */\n as?: VisuallyHiddenElement;\n }>(),\n { as: \"span\" },\n);\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"absolute -m-px h-px w-px overflow-hidden whitespace-nowrap border-0 p-0 [clip:rect(0,0,0,0)] [clip-path:inset(50%)]\"\n >\n <slot />\n </component>\n</template>\n"],"mappings":""}
@@ -0,0 +1,21 @@
1
+ /** Which element tag carries the visually-hidden content. */
2
+ export type VisuallyHiddenElement = "span" | "div";
3
+ declare const _default: typeof __VLS_export;
4
+ export default _default;
5
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
6
+ /** `span` keeps the markup valid inside phrasing content — labels, buttons, paragraphs. `div` when the hidden content is a block of its own. */
7
+ as?: VisuallyHiddenElement;
8
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
9
+ /** `span` keeps the markup valid inside phrasing content — labels, buttons, paragraphs. `div` when the hidden content is a block of its own. */
10
+ as?: VisuallyHiddenElement;
11
+ }> & Readonly<{}>, {
12
+ as: VisuallyHiddenElement;
13
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
14
+ default?: (props: {}) => any;
15
+ }>;
16
+ type __VLS_WithSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
21
+ //# sourceMappingURL=VisuallyHidden.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHidden.vue.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/visually-hidden/src/VisuallyHidden.vue"],"names":[],"mappings":"AAoCA,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;wBAC9B,OAAO,YAAY;AAAxC,wBAAyC;AACzC,QAAA,MAAM,YAAY;IAWd,gJAAgJ;SAC3I,qBAAqB;;IAD1B,gJAAgJ;SAC3I,qBAAqB;;QAArB,qBAAqB;;cAiDhB,CAAC,KAAK,IAAgB,KAAK,GAAG;EAUxC,CAAC;AAWL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { createBlock, defineComponent, openBlock, renderSlot, resolveDynamicComponent, withCtx } from "vue";
2
+ //#region packages/primitives/visually-hidden/src/VisuallyHidden.vue?vue&type=script&setup=true&lang.ts
3
+ var VisuallyHidden_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ __name: "VisuallyHidden",
5
+ props: { as: { default: "span" } },
6
+ setup(__props) {
7
+ /**
8
+ * VisuallyHidden — content assistive technology reads that the page never
9
+ * paints. The clip technique: a 1×1 box pulled out of flow and clipped to
10
+ * nothing, which keeps the content in the accessibility tree and reachable
11
+ * by in-page find. Deliberately not `display: none`, which would remove it
12
+ * from screen readers too, and never focusable in its own right — if the
13
+ * content should take focus, the caller puts a focusable element in the
14
+ * slot and this wrapper stays inert.
15
+ */
16
+ return (_ctx, _cache) => {
17
+ return openBlock(), createBlock(resolveDynamicComponent(__props.as), { class: "absolute -m-px h-px w-px overflow-hidden whitespace-nowrap border-0 p-0 [clip:rect(0,0,0,0)] [clip-path:inset(50%)]" }, {
18
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
19
+ _: 3
20
+ });
21
+ };
22
+ }
23
+ });
24
+ //#endregion
25
+ export { VisuallyHidden_vue_vue_type_script_setup_true_lang_default as default };
26
+
27
+ //# sourceMappingURL=VisuallyHidden.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHidden.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../../../packages/primitives/visually-hidden/src/VisuallyHidden.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Which element tag carries the visually-hidden content. */\nexport type VisuallyHiddenElement = \"span\" | \"div\";\n</script>\n\n<script setup lang=\"ts\">\n/**\n * VisuallyHidden — content assistive technology reads that the page never\n * paints. The clip technique: a 1×1 box pulled out of flow and clipped to\n * nothing, which keeps the content in the accessibility tree and reachable\n * by in-page find. Deliberately not `display: none`, which would remove it\n * from screen readers too, and never focusable in its own right — if the\n * content should take focus, the caller puts a focusable element in the\n * slot and this wrapper stays inert.\n */\nwithDefaults(\n defineProps<{\n /** `span` keeps the markup valid inside phrasing content — labels, buttons, paragraphs. `div` when the hidden content is a block of its own. */\n as?: VisuallyHiddenElement;\n }>(),\n { as: \"span\" },\n);\n</script>\n\n<template>\n <component\n :is=\"as\"\n class=\"absolute -m-px h-px w-px overflow-hidden whitespace-nowrap border-0 p-0 [clip:rect(0,0,0,0)] [clip-path:inset(50%)]\"\n >\n <slot />\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;GAyBE,OAAA,UAAA,GAAA,YAKY,wBAJL,QAAA,EAAE,GAAA,EACP,OAAM,sHAAqH,GAAA;IAE3H,SAAA,cAAQ,CAAR,WAAQ,KAAA,QAAA,SAAA,CAAA,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { default } from "./VisuallyHidden.vue";
2
+ export type { VisuallyHiddenElement } from "./VisuallyHidden.vue";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/primitives/visually-hidden/src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import VisuallyHidden_default from "./VisuallyHidden.js";
2
+ export { VisuallyHidden_default as default };
@@ -1,5 +1,5 @@
1
- import { type LabelOverrides } from "@ecoma-io/loom-labels";
2
- import type { WindowControlsLabels } from "@ecoma-io/loom-labels";
1
+ import { type LabelOverrides } from "../../../labels/src/index";
2
+ import type { WindowControlsLabels } from "../../../labels/src/index";
3
3
  /**
4
4
  * WindowControls — the minimize / maximize / close cluster for a frameless
5
5
  * (custom-chrome) window. Presentational only: it emits intents; the host wires
@@ -1,4 +1,4 @@
1
1
  export { default, WINDOW_CONTROLS_LABELS } from "./WindowControls.vue";
2
2
  export type { WindowPlatform } from "./WindowControls.vue";
3
- export type { WindowControlsLabels } from "@ecoma-io/loom-labels";
3
+ export type { WindowControlsLabels } from "../../../labels/src/index";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -111,6 +111,21 @@
111
111
  * layout. When the overlay is active, the brand cluster's left padding expands
112
112
  * to clear the native controls on the left edge (same corner as macOS), and
113
113
  * the drag region continues to work over the full bar width. */
114
+ /* ---- AppHeader safe areas --------------------------------------------------
115
+ * The shell's own strip sits at the very top of the viewport, which is exactly
116
+ * where a phone's notch and a PWA's title-bar overlay reserve space. The base
117
+ * padding stays the component's; this only adds what the platform takes back,
118
+ * on the same attribute-hook pattern as `[data-loom-titlebar]` above. */
119
+ [data-loom-app-header] {
120
+ padding-block-start: calc(0.5rem + var(--safe-area-top, 0px));
121
+ }
122
+
123
+ @media (min-width: 640px) {
124
+ [data-loom-app-header] {
125
+ padding-block-start: var(--safe-area-top, 0px);
126
+ }
127
+ }
128
+
114
129
  @supports (window-controls-overlay: visible) {
115
130
  [data-loom-titlebar] {
116
131
  /* Narrow the drag spacer so the title text is not pushed too far right.
@@ -197,6 +212,35 @@
197
212
  }
198
213
  }
199
214
 
215
+ /* ---- Expansion. The disclosure pair: a panel growing into and out of its
216
+ * own height, keyed to Reka's `--reka-collapsible-content-height` (the px
217
+ * value Reka measures onto every Collapsible content element). This is the
218
+ * height animation the Accordion docblock once deferred to this file rather
219
+ * than hand-rolling per component; Collapse plays it, and Accordion can
220
+ * adopt it whenever its own look is next revisited.
221
+ *
222
+ * Height animates layout, which is why the pair exists as keyframes on one
223
+ * property with `overflow-hidden` supplied by the component — nothing here
224
+ * fights a live measurement, and under reduced motion the collapse to
225
+ * 0.01ms turns both into the instant toggle those readers asked for. */
226
+ @keyframes expand {
227
+ from {
228
+ height: 0;
229
+ }
230
+ to {
231
+ height: var(--reka-collapsible-content-height);
232
+ }
233
+ }
234
+
235
+ @keyframes collapse {
236
+ from {
237
+ height: var(--reka-collapsible-content-height);
238
+ }
239
+ to {
240
+ height: 0;
241
+ }
242
+ }
243
+
200
244
  /* An edge-anchored panel leaving along its own axis.
201
245
  *
202
246
  * These animate `translate`, not `transform`, and the distinction is the whole
@@ -267,6 +311,21 @@
267
311
  }
268
312
  }
269
313
 
314
+ /* The exit answering `toast-in`, leaving along the same axis it arrived and
315
+ * was swiped away on. It rides the toast root — Reka's Presence holds that
316
+ * element for `animationend`; an animation on an inner card would never play
317
+ * a frame. */
318
+ @keyframes toast-out {
319
+ from {
320
+ opacity: 1;
321
+ transform: translateX(0);
322
+ }
323
+ to {
324
+ opacity: 0;
325
+ transform: translateX(0.75rem);
326
+ }
327
+ }
328
+
270
329
  /* Respect the reader. Motion is meaning, but it is never a barrier. */
271
330
  @media (prefers-reduced-motion: reduce) {
272
331
  *,
@@ -300,6 +300,19 @@
300
300
  --animate-slide-out-to-right: slide-out-to-right var(--duration-normal) var(--ease-in) both; /* a panel leaving past the right edge */
301
301
  --animate-slide-out-to-top: slide-out-to-top var(--duration-normal) var(--ease-in) both; /* a panel leaving past the top edge */
302
302
  --animate-slide-out-to-bottom: slide-out-to-bottom var(--duration-normal) var(--ease-in) both; /* a panel leaving past the bottom edge */
303
+
304
+ /* The exit answering `--animate-toast-in`: the card leaves along the axis it
305
+ * arrived on, on the accelerate curve, shorter than its entrance — the same
306
+ * relationship every exit here keeps with the entrance it mirrors. */
307
+ --animate-toast-out: toast-out var(--duration-fast) var(--ease-in) both;
308
+
309
+ /* The disclosure pair, keyed to Reka's measured content height — see
310
+ * `global.css` for why these are height keyframes at all. Arriving is the
311
+ * emphasized direction (decelerating into place over `--duration-normal`);
312
+ * leaving clears the eye faster on the accelerate curve, like every exit
313
+ * above. */
314
+ --animate-expand: expand var(--duration-normal) var(--ease-out) both;
315
+ --animate-collapse: collapse var(--duration-fast) var(--ease-in) both;
303
316
  }
304
317
 
305
318
  /* Tailwind has no `--duration-*` theme namespace — `duration-*` takes a bare
package/dist/theme.js ADDED
@@ -0,0 +1,3 @@
1
+ import { themeScript, useTheme } from "./packages/core/src/theme.js";
2
+ import "./packages/core/src/index.js";
3
+ export { themeScript, useTheme };