@alfakit/vue 0.1.1 → 0.1.6

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 (372) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/AlfakitRoot.js.map +1 -1
  3. package/dist/AlfakitRoot.vue.d.ts.map +1 -1
  4. package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js +3 -1
  5. package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/actions/ActionButton.js.map +1 -1
  7. package/dist/components/actions/ActionButton.vue.d.ts.map +1 -1
  8. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js +160 -159
  9. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/actions/ActionGroupMenu.js.map +1 -1
  11. package/dist/components/actions/ActionGroupMenu.vue.d.ts.map +1 -1
  12. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js +69 -65
  13. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/actions/ActionModal.js.map +1 -1
  15. package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
  16. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +221 -219
  17. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/ai/AiCopilot.js.map +1 -1
  19. package/dist/components/ai/AiCopilot.vue.d.ts +2 -0
  20. package/dist/components/ai/AiCopilot.vue.d.ts.map +1 -1
  21. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js +7 -2
  22. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js +19 -19
  24. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/cms/LivePreview.js.map +1 -1
  26. package/dist/components/cms/LivePreview.vue.d.ts.map +1 -1
  27. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js +83 -83
  28. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/fields/BuilderField.js.map +1 -1
  30. package/dist/components/fields/BuilderField.vue.d.ts.map +1 -1
  31. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js +162 -157
  32. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/fields/ColorPickerField.js.map +1 -1
  34. package/dist/components/fields/ColorPickerField.vue.d.ts.map +1 -1
  35. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js +1 -0
  36. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/fields/ComboboxSelect.js.map +1 -1
  38. package/dist/components/fields/ComboboxSelect.vue.d.ts.map +1 -1
  39. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  40. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/fields/FileUploadField.js.map +1 -1
  42. package/dist/components/fields/FileUploadField.vue.d.ts.map +1 -1
  43. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js +183 -183
  44. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/fields/ImageEditorDialog.js.map +1 -1
  46. package/dist/components/fields/ImageEditorDialog.vue.d.ts.map +1 -1
  47. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js +46 -46
  48. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/fields/KeyValueField.js.map +1 -1
  50. package/dist/components/fields/KeyValueField.vue.d.ts.map +1 -1
  51. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js +66 -66
  52. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/components/fields/ModalTablePicker.js.map +1 -1
  54. package/dist/components/fields/ModalTablePicker.vue.d.ts.map +1 -1
  55. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js +113 -113
  56. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/fields/OneTimeCodeInputField.js.map +1 -1
  58. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js +1 -2
  59. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/fields/RepeaterField.js.map +1 -1
  61. package/dist/components/fields/RepeaterField.vue.d.ts.map +1 -1
  62. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js +12 -12
  63. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  64. package/dist/components/fields/RichEditorInput.js.map +1 -1
  65. package/dist/components/fields/RichEditorInput.vue.d.ts.map +1 -1
  66. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js +166 -165
  67. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  68. package/dist/components/fields/SelectField.js.map +1 -1
  69. package/dist/components/fields/SelectField.vue.d.ts.map +1 -1
  70. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js +2 -2
  71. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/fields/SliderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/fields/TableColumnHeaders.js.map +1 -1
  74. package/dist/components/fields/TableColumnHeaders.vue.d.ts.map +1 -1
  75. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js +6 -3
  76. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/fields/item-actions.d.ts +2 -2
  78. package/dist/components/fields/item-actions.d.ts.map +1 -1
  79. package/dist/components/fields/item-actions.js +31 -31
  80. package/dist/components/fields/item-actions.js.map +1 -1
  81. package/dist/components/file-manager/FileManagerView.js.map +1 -1
  82. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/form/FormBlock.js.map +1 -1
  85. package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
  86. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +81 -77
  87. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/form/form-context.js +25 -25
  89. package/dist/components/form/form-context.js.map +1 -1
  90. package/dist/components/kanban/KanbanBoard.js.map +1 -1
  91. package/dist/components/kanban/KanbanBoard.vue.d.ts.map +1 -1
  92. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js +5 -2
  93. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/components/kanban/KanbanColumnHeader.js.map +1 -1
  95. package/dist/components/kanban/KanbanColumnHeader.vue.d.ts.map +1 -1
  96. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js +64 -64
  97. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/layout/FusedGroupComponent.js.map +1 -1
  99. package/dist/components/layout/FusedGroupComponent.vue.d.ts.map +1 -1
  100. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js +1 -0
  101. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/layout/SectionComponent.js.map +1 -1
  103. package/dist/components/layout/SectionComponent.vue.d.ts.map +1 -1
  104. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js +23 -23
  105. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/layout/TabsComponent.js.map +1 -1
  107. package/dist/components/layout/TabsComponent.vue.d.ts.map +1 -1
  108. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js +76 -55
  109. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/components/notifications/NotificationsMenu.js.map +1 -1
  111. package/dist/components/notifications/NotificationsMenu.vue.d.ts.map +1 -1
  112. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js +44 -42
  113. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js +8 -8
  115. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/panel/GlobalSearch.js.map +1 -1
  117. package/dist/components/panel/GlobalSearch.vue.d.ts.map +1 -1
  118. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js +1 -0
  119. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/panel/GlobalSearchPalette.js.map +1 -1
  121. package/dist/components/panel/GlobalSearchPalette.vue.d.ts.map +1 -1
  122. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js +102 -96
  123. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js +10 -10
  125. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js +9 -9
  127. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js +16 -16
  129. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js +10 -10
  131. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/panel/ShortcutKeys.js.map +1 -1
  133. package/dist/components/panel/ShortcutKeys.vue.d.ts.map +1 -1
  134. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js +4 -1
  135. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/panel/TenantMenu.js.map +1 -1
  137. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +37 -37
  138. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js +11 -11
  140. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/realtime/use-live-updates.d.ts.map +1 -1
  142. package/dist/components/realtime/use-live-updates.js +24 -23
  143. package/dist/components/realtime/use-live-updates.js.map +1 -1
  144. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js +2 -1
  145. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/table/ColumnHeader.js.map +1 -1
  147. package/dist/components/table/ColumnHeader.vue.d.ts.map +1 -1
  148. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js +55 -49
  149. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/components/table/ColumnManager.js.map +1 -1
  151. package/dist/components/table/ColumnManager.vue.d.ts.map +1 -1
  152. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js +5 -4
  153. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js.map +1 -1
  154. package/dist/components/table/ContentLayoutSort.js.map +1 -1
  155. package/dist/components/table/ContentLayoutSort.vue.d.ts.map +1 -1
  156. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js +5 -5
  157. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/table/GroupHeaderRow.js.map +1 -1
  159. package/dist/components/table/GroupHeaderRow.vue.d.ts.map +1 -1
  160. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js +55 -34
  161. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/table/SelectCell.js.map +1 -1
  163. package/dist/components/table/SelectCell.vue.d.ts.map +1 -1
  164. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +26 -20
  165. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js +2 -1
  167. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/components/table/TableCellContent.js.map +1 -1
  169. package/dist/components/table/TableCellContent.vue.d.ts.map +1 -1
  170. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js +4 -3
  171. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  172. package/dist/components/table/TablePagination.js.map +1 -1
  173. package/dist/components/table/TablePagination.vue.d.ts.map +1 -1
  174. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js +87 -87
  175. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  176. package/dist/components/table/TextInputCell.js.map +1 -1
  177. package/dist/components/table/TextInputCell.vue.d.ts.map +1 -1
  178. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +40 -34
  179. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/components/table/cell-update.d.ts +6 -0
  181. package/dist/components/table/cell-update.d.ts.map +1 -1
  182. package/dist/components/table/cell-update.js.map +1 -1
  183. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  184. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  185. package/dist/components/ui/CommandAutoHighlight.js +7 -0
  186. package/dist/components/ui/CommandAutoHighlight.js.map +1 -0
  187. package/dist/components/ui/CommandAutoHighlight.vue.d.ts +21 -0
  188. package/dist/components/ui/CommandAutoHighlight.vue.d.ts.map +1 -0
  189. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js +18 -0
  190. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -0
  191. package/dist/components/ui/DialogContent.js.map +1 -1
  192. package/dist/components/ui/DialogContent.vue.d.ts.map +1 -1
  193. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js +13 -12
  194. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/components/ui/PopoverContent.js.map +1 -1
  196. package/dist/components/ui/PopoverContent.vue.d.ts.map +1 -1
  197. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js +9 -8
  198. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/components/ui/SheetContent.js.map +1 -1
  200. package/dist/components/ui/SheetContent.vue.d.ts.map +1 -1
  201. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js +13 -12
  202. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/ui/TooltipContent.js.map +1 -1
  204. package/dist/components/ui/TooltipContent.vue.d.ts.map +1 -1
  205. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js +9 -8
  206. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components.css +347 -0
  208. package/dist/context.d.ts +7 -0
  209. package/dist/context.d.ts.map +1 -1
  210. package/dist/context.js +29 -26
  211. package/dist/context.js.map +1 -1
  212. package/dist/create-alfakit.d.ts.map +1 -1
  213. package/dist/create-alfakit.js +33 -31
  214. package/dist/create-alfakit.js.map +1 -1
  215. package/dist/eject-manifest.json +11 -2
  216. package/dist/index.d.ts +1 -0
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +219 -217
  219. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  220. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/layouts/AuthLayout.vue_vue_type_script_setup_true_lang.js +9 -9
  222. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  223. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  224. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js +15 -15
  225. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/layouts/lazy-layouts.d.ts +10 -0
  227. package/dist/layouts/lazy-layouts.d.ts.map +1 -0
  228. package/dist/layouts/lazy-layouts.js +8 -0
  229. package/dist/layouts/lazy-layouts.js.map +1 -0
  230. package/dist/layouts/panel-layouts.d.ts +8 -0
  231. package/dist/layouts/panel-layouts.d.ts.map +1 -0
  232. package/dist/layouts/panel-layouts.js +15 -0
  233. package/dist/layouts/panel-layouts.js.map +1 -0
  234. package/dist/lib/lazy.d.ts.map +1 -1
  235. package/dist/lib/lazy.js +2 -2
  236. package/dist/lib/lazy.js.map +1 -1
  237. package/dist/pages/PageShell.js.map +1 -1
  238. package/dist/pages/PageShell.vue.d.ts.map +1 -1
  239. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js +39 -42
  240. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/standalone/AlfakitComponent.js.map +1 -1
  242. package/dist/standalone/AlfakitComponent.vue.d.ts.map +1 -1
  243. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js +56 -52
  244. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  245. package/dist/standalone/AlfakitToaster.js.map +1 -1
  246. package/dist/standalone/AlfakitToaster.vue.d.ts.map +1 -1
  247. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js +23 -15
  248. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
  249. package/dist/standalone.css +54 -0
  250. package/dist/starter-kit/AlfakitStarterKitRoot.js.map +1 -1
  251. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts +2 -2
  252. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts.map +1 -1
  253. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js +17 -12
  254. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  255. package/dist/starter-kit/dashboard-widgets.d.ts +54 -0
  256. package/dist/starter-kit/dashboard-widgets.d.ts.map +1 -0
  257. package/dist/starter-kit/dashboard-widgets.js +54 -0
  258. package/dist/starter-kit/dashboard-widgets.js.map +1 -0
  259. package/dist/starter-kit/index.d.ts +2 -1
  260. package/dist/starter-kit/index.d.ts.map +1 -1
  261. package/dist/starter-kit/index.js +5 -4
  262. package/dist/starter-kit/runtime.d.ts +6 -0
  263. package/dist/starter-kit/runtime.d.ts.map +1 -1
  264. package/dist/starter-kit/runtime.js +19 -15
  265. package/dist/starter-kit/runtime.js.map +1 -1
  266. package/dist/starter-kit/starter-kit.d.ts.map +1 -1
  267. package/dist/starter-kit/starter-kit.js +8 -8
  268. package/dist/starter-kit/starter-kit.js.map +1 -1
  269. package/dist/starter-kit/widgets/CopilotTrigger.js +7 -0
  270. package/dist/starter-kit/widgets/CopilotTrigger.js.map +1 -0
  271. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts +12 -0
  272. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts.map +1 -0
  273. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js +23 -0
  274. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  275. package/dist/starter-kit/widgets/LoadedCopilot.js +7 -0
  276. package/dist/starter-kit/widgets/LoadedCopilot.js.map +1 -0
  277. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts +8 -0
  278. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts.map +1 -0
  279. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js +31 -0
  280. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -0
  281. package/dist/starter-kit/widgets/SearchTrigger.js.map +1 -1
  282. package/dist/starter-kit/widgets/SearchTrigger.vue.d.ts.map +1 -1
  283. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  284. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  285. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js +7 -0
  286. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js.map +1 -0
  287. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts +8 -0
  288. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts.map +1 -0
  289. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js +34 -0
  290. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  291. package/dist/starter-kit/widgets/TenantChooser.js.map +1 -1
  292. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js +1 -1
  293. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  294. package/dist/starter-kit/widgets/index.d.ts +40 -9
  295. package/dist/starter-kit/widgets/index.d.ts.map +1 -1
  296. package/dist/starter-kit/widgets/index.js +21 -18
  297. package/dist/starter-kit/widgets/index.js.map +1 -1
  298. package/dist/starter-kit/widgets/loaded.d.ts +10 -0
  299. package/dist/starter-kit/widgets/loaded.d.ts.map +1 -0
  300. package/dist/starter-kit/widgets/loaded.js +5 -0
  301. package/dist/styles.css +9 -2
  302. package/dist/themes.css +8 -335
  303. package/package.json +3 -3
  304. package/src/AlfakitRoot.vue +9 -1
  305. package/src/components/actions/ActionButton.vue +14 -6
  306. package/src/components/actions/ActionGroupMenu.vue +13 -1
  307. package/src/components/actions/ActionModal.vue +12 -1
  308. package/src/components/ai/AiCopilot.vue +7 -1
  309. package/src/components/cms/LivePreview.vue +8 -2
  310. package/src/components/fields/BuilderField.vue +15 -2
  311. package/src/components/fields/ColorPickerField.vue +1 -0
  312. package/src/components/fields/ComboboxSelect.vue +1 -1
  313. package/src/components/fields/FileUploadField.vue +14 -11
  314. package/src/components/fields/ImageEditorDialog.vue +7 -3
  315. package/src/components/fields/KeyValueField.vue +3 -2
  316. package/src/components/fields/ModalTablePicker.vue +7 -2
  317. package/src/components/fields/OneTimeCodeInputField.vue +1 -1
  318. package/src/components/fields/RepeaterField.vue +2 -3
  319. package/src/components/fields/RichEditorInput.vue +3 -0
  320. package/src/components/fields/SelectField.vue +4 -2
  321. package/src/components/fields/TableColumnHeaders.vue +6 -1
  322. package/src/components/fields/item-actions.ts +31 -10
  323. package/src/components/file-manager/FileManagerView.vue +1 -1
  324. package/src/components/form/FormBlock.vue +26 -1
  325. package/src/components/form/form-context.ts +3 -3
  326. package/src/components/kanban/KanbanBoard.vue +15 -3
  327. package/src/components/kanban/KanbanColumnHeader.vue +6 -4
  328. package/src/components/layout/FusedGroupComponent.vue +1 -0
  329. package/src/components/layout/SectionComponent.vue +10 -4
  330. package/src/components/layout/TabsComponent.vue +61 -5
  331. package/src/components/notifications/NotificationsMenu.vue +11 -0
  332. package/src/components/panel/GlobalSearch.vue +1 -0
  333. package/src/components/panel/GlobalSearchPalette.vue +2 -0
  334. package/src/components/panel/ShortcutKeys.vue +1 -0
  335. package/src/components/panel/TenantMenu.vue +2 -2
  336. package/src/components/realtime/use-live-updates.ts +3 -1
  337. package/src/components/table/ColumnHeader.vue +23 -12
  338. package/src/components/table/ColumnManager.vue +12 -8
  339. package/src/components/table/ContentLayoutSort.vue +7 -1
  340. package/src/components/table/GroupHeaderRow.vue +27 -0
  341. package/src/components/table/SelectCell.vue +5 -2
  342. package/src/components/table/TableCellContent.vue +4 -2
  343. package/src/components/table/TablePagination.vue +12 -7
  344. package/src/components/table/TextInputCell.vue +11 -5
  345. package/src/components/table/cell-update.ts +6 -0
  346. package/src/components/ui/CommandAutoHighlight.vue +27 -0
  347. package/src/components/ui/DialogContent.vue +5 -1
  348. package/src/components/ui/PopoverContent.vue +5 -1
  349. package/src/components/ui/SheetContent.vue +5 -1
  350. package/src/components/ui/TooltipContent.vue +5 -1
  351. package/src/context.ts +10 -0
  352. package/src/create-alfakit.ts +5 -0
  353. package/src/index.ts +2 -0
  354. package/src/layouts/lazy-layouts.ts +14 -0
  355. package/src/layouts/panel-layouts.ts +17 -0
  356. package/src/lib/lazy.ts +11 -1
  357. package/src/pages/PageShell.vue +5 -6
  358. package/src/standalone/AlfakitComponent.vue +17 -6
  359. package/src/standalone/AlfakitToaster.vue +12 -2
  360. package/src/starter-kit/AlfakitStarterKitRoot.vue +12 -3
  361. package/src/starter-kit/dashboard-widgets.ts +93 -0
  362. package/src/starter-kit/index.ts +7 -1
  363. package/src/starter-kit/runtime.ts +17 -1
  364. package/src/starter-kit/starter-kit.ts +2 -1
  365. package/src/starter-kit/widgets/CopilotTrigger.vue +58 -0
  366. package/src/starter-kit/widgets/LoadedCopilot.vue +29 -0
  367. package/src/starter-kit/widgets/SearchTrigger.vue +1 -0
  368. package/src/starter-kit/widgets/StarterKitImpersonationBanner.vue +57 -0
  369. package/src/starter-kit/widgets/TenantChooser.vue +1 -1
  370. package/src/starter-kit/widgets/index.ts +56 -11
  371. package/src/starter-kit/widgets/loaded.ts +9 -0
  372. package/src/styles.css +9 -2
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanColumnHeader.js","names":["_sfc_main","KanbanColumnHeader_vue_vue_type_script_setup_true_lang_default","KanbanColumnHeader_default"],"sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { KanbanColumnSchema } from '@alfakit/core'\nimport { kanbanWipState } from '@alfakit/core'\nimport { ChevronsLeftRightIcon, ChevronsRightLeftIcon, PlusIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useT } from '../../context'\nimport { cssColor } from '../../lib/colors'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport Badge from '../ui/Badge.vue'\nimport Button from '../ui/Button.vue'\n\nconst props = defineProps<{\n column: KanbanColumnSchema\n id: string\n collapsed: boolean\n creatable: boolean\n filtered: boolean\n}>()\nconst emit = defineEmits<{ toggle: []; create: [] }>()\nconst t = useT()\n\nconst wip = computed(() => kanbanWipState(props.column))\nconst shown = computed(() =>\n props.column.wipLimit !== undefined\n ? props.column.count\n : props.filtered\n ? props.column.total\n : props.column.count,\n)\nconst countLabel = computed(() => {\n const column = props.column\n\n if (column.wipLimit !== undefined) {\n return t('kanban.wip', { count: column.count, limit: column.wipLimit }, ':count of :limit')\n }\n\n return props.filtered && column.total !== column.count\n ? t(\n 'kanban.count_filtered',\n { shown: column.total, count: column.count },\n ':shown of :count cards',\n )\n : t('kanban.count', { count: column.count }, ':count cards')\n})\nconst style = computed(() =>\n props.column.color ? { borderTopColor: cssColor(props.column.color) } : undefined,\n)\nconst toggleLabel = computed(() =>\n props.collapsed\n ? t('kanban.expand', { column: props.column.label }, 'Expand :column')\n : t('kanban.collapse', { column: props.column.label }, 'Collapse :column'),\n)\nconst addLabel = computed(() =>\n t('kanban.add_card', { column: props.column.label }, 'Add a card to :column'),\n)\n</script>\n\n<template>\n <div\n v-if=\"props.collapsed\"\n class=\"bg-muted/60 flex snap-start flex-col items-center gap-2 rounded-lg border border-t-4 px-1 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n data-collapsed=\"\"\n :data-wip=\"wip ?? undefined\"\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"false\"\n @click=\"emit('toggle')\"\n >\n <ChevronsLeftRightIcon aria-hidden=\"true\" />\n </Button>\n <span class=\"text-muted-foreground text-xs tabular-nums\" :title=\"countLabel\">{{ shown }}</span>\n <h3 :id=\"props.id\" class=\"text-sm font-medium [writing-mode:vertical-rl]\">\n {{ props.column.label }}\n </h3>\n </div>\n <div\n v-else\n class=\"bg-muted/60 flex snap-start flex-col gap-1 rounded-lg border border-t-4 px-3 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n :data-wip=\"wip ?? undefined\"\n >\n <div class=\"flex items-center gap-2\">\n <Icon\n v-if=\"props.column.icon\"\n :name=\"props.column.icon\"\n class=\"text-muted-foreground size-4\"\n />\n <h3 :id=\"props.id\" class=\"min-w-0 truncate text-sm font-semibold\">\n {{ props.column.label }}\n </h3>\n <Badge\n variant=\"secondary\"\n :class=\"\n cn(\n 'h-5 px-1.5 tabular-nums',\n wip === 'over' && 'bg-destructive/15 text-destructive',\n wip === 'full' && 'bg-warning/15 text-warning',\n )\n \"\n :title=\"countLabel\"\n >\n <span aria-hidden=\"true\">{{\n props.column.wipLimit !== undefined\n ? `${props.column.count}/${props.column.wipLimit}`\n : shown\n }}</span>\n <span class=\"sr-only\">{{ countLabel }}</span>\n </Badge>\n <div class=\"ms-auto flex items-center\">\n <Button\n v-if=\"props.creatable\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"addLabel\"\n :title=\"addLabel\"\n @click=\"emit('create')\"\n >\n <PlusIcon aria-hidden=\"true\" />\n </Button>\n <Button\n v-if=\"props.column.collapsible\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :title=\"toggleLabel\"\n :aria-expanded=\"true\"\n @click=\"emit('toggle')\"\n >\n <ChevronsRightLeftIcon aria-hidden=\"true\" />\n </Button>\n </div>\n </div>\n <p v-if=\"props.column.description\" class=\"text-muted-foreground line-clamp-2 text-xs\">\n {{ props.column.description }}\n </p>\n <p v-if=\"wip === 'over'\" class=\"text-destructive text-xs\">\n {{\n t(\n 'kanban.wip_over',\n { limit: props.column.wipLimit ?? 0 },\n 'Over the limit of :limit cards',\n )\n }}\n </p>\n <p v-if=\"wip === 'full' && props.column.wipStrict\" class=\"text-muted-foreground text-xs\">\n {{ t('kanban.wip_full', {}, 'This column is full') }}\n </p>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"KanbanColumnHeader.js","names":["_sfc_main","KanbanColumnHeader_vue_vue_type_script_setup_true_lang_default","KanbanColumnHeader_default"],"sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { KanbanColumnSchema } from '@alfakit/core'\nimport { kanbanWipState } from '@alfakit/core'\nimport { ChevronsLeftRightIcon, ChevronsRightLeftIcon, PlusIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useChoice, useT } from '../../context'\nimport { cssColor } from '../../lib/colors'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport Badge from '../ui/Badge.vue'\nimport Button from '../ui/Button.vue'\n\nconst props = defineProps<{\n column: KanbanColumnSchema\n id: string\n collapsed: boolean\n creatable: boolean\n filtered: boolean\n}>()\nconst emit = defineEmits<{ toggle: []; create: [] }>()\nconst t = useT()\nconst choice = useChoice()\n\nconst wip = computed(() => kanbanWipState(props.column))\nconst shown = computed(() =>\n props.column.wipLimit !== undefined\n ? props.column.count\n : props.filtered\n ? props.column.total\n : props.column.count,\n)\nconst countLabel = computed(() => {\n const column = props.column\n\n if (column.wipLimit !== undefined) {\n return t('kanban.wip', { count: column.count, limit: column.wipLimit }, ':count of :limit')\n }\n\n return props.filtered && column.total !== column.count\n ? t(\n 'kanban.count_filtered',\n { shown: column.total, count: column.count },\n ':shown of :count cards',\n )\n : choice('kanban.count', column.count, {}, '{1} :count card|[0,*] :count cards')\n})\nconst style = computed(() =>\n props.column.color ? { borderTopColor: cssColor(props.column.color) } : undefined,\n)\nconst toggleLabel = computed(() =>\n props.collapsed\n ? t('kanban.expand', { column: props.column.label }, 'Expand :column')\n : t('kanban.collapse', { column: props.column.label }, 'Collapse :column'),\n)\nconst addLabel = computed(() =>\n t('kanban.add_card', { column: props.column.label }, 'Add a card to :column'),\n)\n</script>\n\n<template>\n <div\n v-if=\"props.collapsed\"\n class=\"bg-muted/60 flex snap-start flex-col items-center gap-2 rounded-lg border border-t-4 px-1 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n data-collapsed=\"\"\n :data-wip=\"wip ?? undefined\"\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"false\"\n @click=\"emit('toggle')\"\n >\n <ChevronsLeftRightIcon aria-hidden=\"true\" />\n </Button>\n <span class=\"text-muted-foreground text-xs tabular-nums\" :title=\"countLabel\">{{ shown }}</span>\n <h3 :id=\"props.id\" class=\"text-sm font-medium [writing-mode:vertical-rl]\">\n {{ props.column.label }}\n </h3>\n </div>\n <div\n v-else\n class=\"bg-muted/60 flex snap-start flex-col gap-1 rounded-lg border border-t-4 px-3 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n :data-wip=\"wip ?? undefined\"\n >\n <div class=\"flex items-center gap-2\">\n <Icon\n v-if=\"props.column.icon\"\n :name=\"props.column.icon\"\n class=\"text-muted-foreground size-4\"\n />\n <h3 :id=\"props.id\" class=\"min-w-0 truncate text-sm font-semibold\">\n {{ props.column.label }}\n </h3>\n <Badge\n variant=\"secondary\"\n :class=\"\n cn(\n 'h-5 px-1.5 tabular-nums',\n wip === 'over' && 'bg-destructive/15 text-destructive',\n wip === 'full' && 'bg-warning/15 text-warning',\n )\n \"\n :title=\"countLabel\"\n >\n <span aria-hidden=\"true\">{{\n props.column.wipLimit !== undefined\n ? `${props.column.count}/${props.column.wipLimit}`\n : shown\n }}</span>\n <span class=\"sr-only\">{{ countLabel }}</span>\n </Badge>\n <div class=\"ms-auto flex items-center\">\n <Button\n v-if=\"props.creatable\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"addLabel\"\n :title=\"addLabel\"\n @click=\"emit('create')\"\n >\n <PlusIcon aria-hidden=\"true\" />\n </Button>\n <Button\n v-if=\"props.column.collapsible\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :title=\"toggleLabel\"\n :aria-expanded=\"true\"\n @click=\"emit('toggle')\"\n >\n <ChevronsRightLeftIcon aria-hidden=\"true\" />\n </Button>\n </div>\n </div>\n <p v-if=\"props.column.description\" class=\"text-muted-foreground line-clamp-2 text-xs\">\n {{ props.column.description }}\n </p>\n <p v-if=\"wip === 'over'\" class=\"text-destructive text-xs\">\n {{\n choice(\n 'kanban.wip_over',\n props.column.wipLimit ?? 0,\n { limit: props.column.wipLimit ?? 0 },\n '{1} Over the limit of :limit card|[0,*] Over the limit of :limit cards',\n )\n }}\n </p>\n <p v-if=\"wip === 'full' && props.column.wipStrict\" class=\"text-muted-foreground text-xs\">\n {{ t('kanban.wip_full', {}, 'This column is full') }}\n </p>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanColumnHeader.vue.d.ts","sourceRoot":"","sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"names":[],"mappings":"AAmKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvD,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAC;;;;;;;;AA8WF,wBAOG"}
1
+ {"version":3,"file":"KanbanColumnHeader.vue.d.ts","sourceRoot":"","sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"names":[],"mappings":"AAqKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvD,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAC;;;;;;;;AAiXF,wBAOG"}
@@ -1,23 +1,23 @@
1
- import { useT as e } from "../../context.js";
2
- import { cn as t } from "../../lib/utils.js";
3
- import { cssColor as n } from "../../lib/colors.js";
4
- import r from "../../lib/Icon.js";
5
- import i from "../ui/Badge2.js";
6
- import a from "../ui/Button2.js";
7
- import { kanbanWipState as o } from "@alfakit/core";
8
- import { computed as s, createBlock as c, createCommentVNode as l, createElementBlock as u, createElementVNode as d, createVNode as f, defineComponent as p, normalizeClass as m, normalizeStyle as h, openBlock as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
9
- import { ChevronsLeftRightIcon as b, ChevronsRightLeftIcon as x, PlusIcon as S } from "@lucide/vue";
1
+ import { useChoice as e, useT as t } from "../../context.js";
2
+ import { cn as n } from "../../lib/utils.js";
3
+ import { cssColor as r } from "../../lib/colors.js";
4
+ import i from "../../lib/Icon.js";
5
+ import a from "../ui/Badge2.js";
6
+ import o from "../ui/Button2.js";
7
+ import { kanbanWipState as s } from "@alfakit/core";
8
+ import { computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createVNode as p, defineComponent as m, normalizeClass as h, normalizeStyle as g, openBlock as _, toDisplayString as v, unref as y, withCtx as b } from "vue";
9
+ import { ChevronsLeftRightIcon as x, ChevronsRightLeftIcon as S, PlusIcon as C } from "@lucide/vue";
10
10
  //#region src/components/kanban/KanbanColumnHeader.vue?vue&type=script&setup=true&lang.ts
11
- var C = ["data-column", "data-wip"], w = ["title"], T = ["id"], E = ["data-column", "data-wip"], D = { class: "flex items-center gap-2" }, O = ["id"], k = { "aria-hidden": "true" }, A = { class: "sr-only" }, j = { class: "ms-auto flex items-center" }, M = {
11
+ var w = ["data-column", "data-wip"], T = ["title"], E = ["id"], D = ["data-column", "data-wip"], O = { class: "flex items-center gap-2" }, k = ["id"], A = { "aria-hidden": "true" }, j = { class: "sr-only" }, M = { class: "ms-auto flex items-center" }, N = {
12
12
  key: 0,
13
13
  class: "text-muted-foreground line-clamp-2 text-xs"
14
- }, N = {
14
+ }, P = {
15
15
  key: 1,
16
16
  class: "text-destructive text-xs"
17
- }, P = {
17
+ }, F = {
18
18
  key: 2,
19
19
  class: "text-muted-foreground text-xs"
20
- }, F = /*@__PURE__*/ p({
20
+ }, I = /*@__PURE__*/ m({
21
21
  __name: "KanbanColumnHeader",
22
22
  props: {
23
23
  column: {},
@@ -27,103 +27,103 @@ var C = ["data-column", "data-wip"], w = ["title"], T = ["id"], E = ["data-colum
27
27
  filtered: { type: Boolean }
28
28
  },
29
29
  emits: ["toggle", "create"],
30
- setup(p, { emit: F }) {
31
- let I = p, L = F, R = e(), z = s(() => o(I.column)), B = s(() => I.column.wipLimit === void 0 && I.filtered ? I.column.total : I.column.count), V = s(() => {
32
- let e = I.column;
33
- return e.wipLimit === void 0 ? I.filtered && e.total !== e.count ? R("kanban.count_filtered", {
30
+ setup(m, { emit: I }) {
31
+ let L = m, R = I, z = t(), B = e(), V = c(() => s(L.column)), H = c(() => L.column.wipLimit === void 0 && L.filtered ? L.column.total : L.column.count), U = c(() => {
32
+ let e = L.column;
33
+ return e.wipLimit === void 0 ? L.filtered && e.total !== e.count ? z("kanban.count_filtered", {
34
34
  shown: e.total,
35
35
  count: e.count
36
- }, ":shown of :count cards") : R("kanban.count", { count: e.count }, ":count cards") : R("kanban.wip", {
36
+ }, ":shown of :count cards") : B("kanban.count", e.count, {}, "{1} :count card|[0,*] :count cards") : z("kanban.wip", {
37
37
  count: e.count,
38
38
  limit: e.wipLimit
39
39
  }, ":count of :limit");
40
- }), H = s(() => I.column.color ? { borderTopColor: n(I.column.color) } : void 0), U = s(() => I.collapsed ? R("kanban.expand", { column: I.column.label }, "Expand :column") : R("kanban.collapse", { column: I.column.label }, "Collapse :column")), W = s(() => R("kanban.add_card", { column: I.column.label }, "Add a card to :column"));
41
- return (e, n) => I.collapsed ? (g(), u("div", {
40
+ }), W = c(() => L.column.color ? { borderTopColor: r(L.column.color) } : void 0), G = c(() => L.collapsed ? z("kanban.expand", { column: L.column.label }, "Expand :column") : z("kanban.collapse", { column: L.column.label }, "Collapse :column")), K = c(() => z("kanban.add_card", { column: L.column.label }, "Add a card to :column"));
41
+ return (e, t) => L.collapsed ? (_(), d("div", {
42
42
  key: 0,
43
43
  class: "bg-muted/60 flex snap-start flex-col items-center gap-2 rounded-lg border border-t-4 px-1 py-2",
44
- style: h(H.value),
44
+ style: g(W.value),
45
45
  "data-slot": "kanban-column-header",
46
- "data-column": I.column.key,
46
+ "data-column": L.column.key,
47
47
  "data-collapsed": "",
48
- "data-wip": z.value ?? void 0
48
+ "data-wip": V.value ?? void 0
49
49
  }, [
50
- f(a, {
50
+ p(o, {
51
51
  type: "button",
52
52
  variant: "ghost",
53
53
  size: "icon-xs",
54
- "aria-label": U.value,
54
+ "aria-label": G.value,
55
55
  "aria-expanded": !1,
56
- onClick: n[0] ||= (e) => L("toggle")
56
+ onClick: t[0] ||= (e) => R("toggle")
57
57
  }, {
58
- default: y(() => [f(v(b), { "aria-hidden": "true" })]),
58
+ default: b(() => [p(y(x), { "aria-hidden": "true" })]),
59
59
  _: 1
60
60
  }, 8, ["aria-label"]),
61
- d("span", {
61
+ f("span", {
62
62
  class: "text-muted-foreground text-xs tabular-nums",
63
- title: V.value
64
- }, _(B.value), 9, w),
65
- d("h3", {
66
- id: I.id,
63
+ title: U.value
64
+ }, v(H.value), 9, T),
65
+ f("h3", {
66
+ id: L.id,
67
67
  class: "text-sm font-medium [writing-mode:vertical-rl]"
68
- }, _(I.column.label), 9, T)
69
- ], 12, C)) : (g(), u("div", {
68
+ }, v(L.column.label), 9, E)
69
+ ], 12, w)) : (_(), d("div", {
70
70
  key: 1,
71
71
  class: "bg-muted/60 flex snap-start flex-col gap-1 rounded-lg border border-t-4 px-3 py-2",
72
- style: h(H.value),
72
+ style: g(W.value),
73
73
  "data-slot": "kanban-column-header",
74
- "data-column": I.column.key,
75
- "data-wip": z.value ?? void 0
74
+ "data-column": L.column.key,
75
+ "data-wip": V.value ?? void 0
76
76
  }, [
77
- d("div", D, [
78
- I.column.icon ? (g(), c(v(r), {
77
+ f("div", O, [
78
+ L.column.icon ? (_(), l(y(i), {
79
79
  key: 0,
80
- name: I.column.icon,
80
+ name: L.column.icon,
81
81
  class: "text-muted-foreground size-4"
82
- }, null, 8, ["name"])) : l("", !0),
83
- d("h3", {
84
- id: I.id,
82
+ }, null, 8, ["name"])) : u("", !0),
83
+ f("h3", {
84
+ id: L.id,
85
85
  class: "min-w-0 truncate text-sm font-semibold"
86
- }, _(I.column.label), 9, O),
87
- f(i, {
86
+ }, v(L.column.label), 9, k),
87
+ p(a, {
88
88
  variant: "secondary",
89
- class: m(v(t)("h-5 px-1.5 tabular-nums", z.value === "over" && "bg-destructive/15 text-destructive", z.value === "full" && "bg-warning/15 text-warning")),
90
- title: V.value
89
+ class: h(y(n)("h-5 px-1.5 tabular-nums", V.value === "over" && "bg-destructive/15 text-destructive", V.value === "full" && "bg-warning/15 text-warning")),
90
+ title: U.value
91
91
  }, {
92
- default: y(() => [d("span", k, _(I.column.wipLimit === void 0 ? B.value : `${I.column.count}/${I.column.wipLimit}`), 1), d("span", A, _(V.value), 1)]),
92
+ default: b(() => [f("span", A, v(L.column.wipLimit === void 0 ? H.value : `${L.column.count}/${L.column.wipLimit}`), 1), f("span", j, v(U.value), 1)]),
93
93
  _: 1
94
94
  }, 8, ["class", "title"]),
95
- d("div", j, [I.creatable ? (g(), c(a, {
95
+ f("div", M, [L.creatable ? (_(), l(o, {
96
96
  key: 0,
97
97
  type: "button",
98
98
  variant: "ghost",
99
99
  size: "icon-xs",
100
- "aria-label": W.value,
101
- title: W.value,
102
- onClick: n[1] ||= (e) => L("create")
100
+ "aria-label": K.value,
101
+ title: K.value,
102
+ onClick: t[1] ||= (e) => R("create")
103
103
  }, {
104
- default: y(() => [f(v(S), { "aria-hidden": "true" })]),
104
+ default: b(() => [p(y(C), { "aria-hidden": "true" })]),
105
105
  _: 1
106
- }, 8, ["aria-label", "title"])) : l("", !0), I.column.collapsible ? (g(), c(a, {
106
+ }, 8, ["aria-label", "title"])) : u("", !0), L.column.collapsible ? (_(), l(o, {
107
107
  key: 1,
108
108
  type: "button",
109
109
  variant: "ghost",
110
110
  size: "icon-xs",
111
- "aria-label": U.value,
112
- title: U.value,
111
+ "aria-label": G.value,
112
+ title: G.value,
113
113
  "aria-expanded": !0,
114
- onClick: n[2] ||= (e) => L("toggle")
114
+ onClick: t[2] ||= (e) => R("toggle")
115
115
  }, {
116
- default: y(() => [f(v(x), { "aria-hidden": "true" })]),
116
+ default: b(() => [p(y(S), { "aria-hidden": "true" })]),
117
117
  _: 1
118
- }, 8, ["aria-label", "title"])) : l("", !0)])
118
+ }, 8, ["aria-label", "title"])) : u("", !0)])
119
119
  ]),
120
- I.column.description ? (g(), u("p", M, _(I.column.description), 1)) : l("", !0),
121
- z.value === "over" ? (g(), u("p", N, _(v(R)("kanban.wip_over", { limit: I.column.wipLimit ?? 0 }, "Over the limit of :limit cards")), 1)) : l("", !0),
122
- z.value === "full" && I.column.wipStrict ? (g(), u("p", P, _(v(R)("kanban.wip_full", {}, "This column is full")), 1)) : l("", !0)
123
- ], 12, E));
120
+ L.column.description ? (_(), d("p", N, v(L.column.description), 1)) : u("", !0),
121
+ V.value === "over" ? (_(), d("p", P, v(y(B)("kanban.wip_over", L.column.wipLimit ?? 0, { limit: L.column.wipLimit ?? 0 }, "{1} Over the limit of :limit card|[0,*] Over the limit of :limit cards")), 1)) : u("", !0),
122
+ V.value === "full" && L.column.wipStrict ? (_(), d("p", F, v(y(z)("kanban.wip_full", {}, "This column is full")), 1)) : u("", !0)
123
+ ], 12, D));
124
124
  }
125
125
  });
126
126
  //#endregion
127
- export { F as default };
127
+ export { I as default };
128
128
 
129
129
  //# sourceMappingURL=KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeStyle","_createVNode","Button","_withCtx","_unref","_createElementVNode","_toDisplayString","_createBlock","Icon","_createCommentVNode","Badge","_normalizeClass","Icon_default","Badge_default","Button_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","KanbanColumnHeader_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","t","useT","wip","computed","kanbanWipState","shown","countLabel","column","style","cssColor","toggleLabel","addLabel","openBlock","createElementBlock","normalizeStyle","createVNode","_cache","withCtx","unref","ChevronsLeftRightIcon","createElementVNode","toDisplayString","createBlock","createCommentVNode","normalizeClass","cn","PlusIcon","ChevronsRightLeftIcon"],"sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { KanbanColumnSchema } from '@alfakit/core'\nimport { kanbanWipState } from '@alfakit/core'\nimport { ChevronsLeftRightIcon, ChevronsRightLeftIcon, PlusIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useT } from '../../context'\nimport { cssColor } from '../../lib/colors'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport Badge from '../ui/Badge.vue'\nimport Button from '../ui/Button.vue'\n\nconst props = defineProps<{\n column: KanbanColumnSchema\n id: string\n collapsed: boolean\n creatable: boolean\n filtered: boolean\n}>()\nconst emit = defineEmits<{ toggle: []; create: [] }>()\nconst t = useT()\n\nconst wip = computed(() => kanbanWipState(props.column))\nconst shown = computed(() =>\n props.column.wipLimit !== undefined\n ? props.column.count\n : props.filtered\n ? props.column.total\n : props.column.count,\n)\nconst countLabel = computed(() => {\n const column = props.column\n\n if (column.wipLimit !== undefined) {\n return t('kanban.wip', { count: column.count, limit: column.wipLimit }, ':count of :limit')\n }\n\n return props.filtered && column.total !== column.count\n ? t(\n 'kanban.count_filtered',\n { shown: column.total, count: column.count },\n ':shown of :count cards',\n )\n : t('kanban.count', { count: column.count }, ':count cards')\n})\nconst style = computed(() =>\n props.column.color ? { borderTopColor: cssColor(props.column.color) } : undefined,\n)\nconst toggleLabel = computed(() =>\n props.collapsed\n ? t('kanban.expand', { column: props.column.label }, 'Expand :column')\n : t('kanban.collapse', { column: props.column.label }, 'Collapse :column'),\n)\nconst addLabel = computed(() =>\n t('kanban.add_card', { column: props.column.label }, 'Add a card to :column'),\n)\n</script>\n\n<template>\n <div\n v-if=\"props.collapsed\"\n class=\"bg-muted/60 flex snap-start flex-col items-center gap-2 rounded-lg border border-t-4 px-1 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n data-collapsed=\"\"\n :data-wip=\"wip ?? undefined\"\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"false\"\n @click=\"emit('toggle')\"\n >\n <ChevronsLeftRightIcon aria-hidden=\"true\" />\n </Button>\n <span class=\"text-muted-foreground text-xs tabular-nums\" :title=\"countLabel\">{{ shown }}</span>\n <h3 :id=\"props.id\" class=\"text-sm font-medium [writing-mode:vertical-rl]\">\n {{ props.column.label }}\n </h3>\n </div>\n <div\n v-else\n class=\"bg-muted/60 flex snap-start flex-col gap-1 rounded-lg border border-t-4 px-3 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n :data-wip=\"wip ?? undefined\"\n >\n <div class=\"flex items-center gap-2\">\n <Icon\n v-if=\"props.column.icon\"\n :name=\"props.column.icon\"\n class=\"text-muted-foreground size-4\"\n />\n <h3 :id=\"props.id\" class=\"min-w-0 truncate text-sm font-semibold\">\n {{ props.column.label }}\n </h3>\n <Badge\n variant=\"secondary\"\n :class=\"\n cn(\n 'h-5 px-1.5 tabular-nums',\n wip === 'over' && 'bg-destructive/15 text-destructive',\n wip === 'full' && 'bg-warning/15 text-warning',\n )\n \"\n :title=\"countLabel\"\n >\n <span aria-hidden=\"true\">{{\n props.column.wipLimit !== undefined\n ? `${props.column.count}/${props.column.wipLimit}`\n : shown\n }}</span>\n <span class=\"sr-only\">{{ countLabel }}</span>\n </Badge>\n <div class=\"ms-auto flex items-center\">\n <Button\n v-if=\"props.creatable\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"addLabel\"\n :title=\"addLabel\"\n @click=\"emit('create')\"\n >\n <PlusIcon aria-hidden=\"true\" />\n </Button>\n <Button\n v-if=\"props.column.collapsible\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :title=\"toggleLabel\"\n :aria-expanded=\"true\"\n @click=\"emit('toggle')\"\n >\n <ChevronsRightLeftIcon aria-hidden=\"true\" />\n </Button>\n </div>\n </div>\n <p v-if=\"props.column.description\" class=\"text-muted-foreground line-clamp-2 text-xs\">\n {{ props.column.description }}\n </p>\n <p v-if=\"wip === 'over'\" class=\"text-destructive text-xs\">\n {{\n t(\n 'kanban.wip_over',\n { limit: props.column.wipLimit ?? 0 },\n 'Over the limit of :limit cards',\n )\n }}\n </p>\n <p v-if=\"wip === 'full' && props.column.wipStrict\" class=\"text-muted-foreground text-xs\">\n {{ t('kanban.wip_full', {}, 'This column is full') }}\n </p>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeStyle","_createVNode","Button","_withCtx","_unref","_createElementVNode","_toDisplayString","_createBlock","Icon","_createCommentVNode","Badge","_normalizeClass","Icon_default","Badge_default","Button_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","KanbanColumnHeader_vue_vue_type_script_setup_true_lang_default","__emit","props","__props","emit","t","useT","choice","useChoice","wip","computed","kanbanWipState","shown","countLabel","column","style","cssColor","toggleLabel","addLabel","openBlock","createElementBlock","normalizeStyle","createVNode","_cache","withCtx","unref","ChevronsLeftRightIcon","createElementVNode","toDisplayString","createBlock","createCommentVNode","normalizeClass","cn","PlusIcon","ChevronsRightLeftIcon"],"sources":["../../../src/components/kanban/KanbanColumnHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { KanbanColumnSchema } from '@alfakit/core'\nimport { kanbanWipState } from '@alfakit/core'\nimport { ChevronsLeftRightIcon, ChevronsRightLeftIcon, PlusIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useChoice, useT } from '../../context'\nimport { cssColor } from '../../lib/colors'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport Badge from '../ui/Badge.vue'\nimport Button from '../ui/Button.vue'\n\nconst props = defineProps<{\n column: KanbanColumnSchema\n id: string\n collapsed: boolean\n creatable: boolean\n filtered: boolean\n}>()\nconst emit = defineEmits<{ toggle: []; create: [] }>()\nconst t = useT()\nconst choice = useChoice()\n\nconst wip = computed(() => kanbanWipState(props.column))\nconst shown = computed(() =>\n props.column.wipLimit !== undefined\n ? props.column.count\n : props.filtered\n ? props.column.total\n : props.column.count,\n)\nconst countLabel = computed(() => {\n const column = props.column\n\n if (column.wipLimit !== undefined) {\n return t('kanban.wip', { count: column.count, limit: column.wipLimit }, ':count of :limit')\n }\n\n return props.filtered && column.total !== column.count\n ? t(\n 'kanban.count_filtered',\n { shown: column.total, count: column.count },\n ':shown of :count cards',\n )\n : choice('kanban.count', column.count, {}, '{1} :count card|[0,*] :count cards')\n})\nconst style = computed(() =>\n props.column.color ? { borderTopColor: cssColor(props.column.color) } : undefined,\n)\nconst toggleLabel = computed(() =>\n props.collapsed\n ? t('kanban.expand', { column: props.column.label }, 'Expand :column')\n : t('kanban.collapse', { column: props.column.label }, 'Collapse :column'),\n)\nconst addLabel = computed(() =>\n t('kanban.add_card', { column: props.column.label }, 'Add a card to :column'),\n)\n</script>\n\n<template>\n <div\n v-if=\"props.collapsed\"\n class=\"bg-muted/60 flex snap-start flex-col items-center gap-2 rounded-lg border border-t-4 px-1 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n data-collapsed=\"\"\n :data-wip=\"wip ?? undefined\"\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :aria-expanded=\"false\"\n @click=\"emit('toggle')\"\n >\n <ChevronsLeftRightIcon aria-hidden=\"true\" />\n </Button>\n <span class=\"text-muted-foreground text-xs tabular-nums\" :title=\"countLabel\">{{ shown }}</span>\n <h3 :id=\"props.id\" class=\"text-sm font-medium [writing-mode:vertical-rl]\">\n {{ props.column.label }}\n </h3>\n </div>\n <div\n v-else\n class=\"bg-muted/60 flex snap-start flex-col gap-1 rounded-lg border border-t-4 px-3 py-2\"\n :style=\"style\"\n data-slot=\"kanban-column-header\"\n :data-column=\"props.column.key\"\n :data-wip=\"wip ?? undefined\"\n >\n <div class=\"flex items-center gap-2\">\n <Icon\n v-if=\"props.column.icon\"\n :name=\"props.column.icon\"\n class=\"text-muted-foreground size-4\"\n />\n <h3 :id=\"props.id\" class=\"min-w-0 truncate text-sm font-semibold\">\n {{ props.column.label }}\n </h3>\n <Badge\n variant=\"secondary\"\n :class=\"\n cn(\n 'h-5 px-1.5 tabular-nums',\n wip === 'over' && 'bg-destructive/15 text-destructive',\n wip === 'full' && 'bg-warning/15 text-warning',\n )\n \"\n :title=\"countLabel\"\n >\n <span aria-hidden=\"true\">{{\n props.column.wipLimit !== undefined\n ? `${props.column.count}/${props.column.wipLimit}`\n : shown\n }}</span>\n <span class=\"sr-only\">{{ countLabel }}</span>\n </Badge>\n <div class=\"ms-auto flex items-center\">\n <Button\n v-if=\"props.creatable\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"addLabel\"\n :title=\"addLabel\"\n @click=\"emit('create')\"\n >\n <PlusIcon aria-hidden=\"true\" />\n </Button>\n <Button\n v-if=\"props.column.collapsible\"\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n :aria-label=\"toggleLabel\"\n :title=\"toggleLabel\"\n :aria-expanded=\"true\"\n @click=\"emit('toggle')\"\n >\n <ChevronsRightLeftIcon aria-hidden=\"true\" />\n </Button>\n </div>\n </div>\n <p v-if=\"props.column.description\" class=\"text-muted-foreground line-clamp-2 text-xs\">\n {{ props.column.description }}\n </p>\n <p v-if=\"wip === 'over'\" class=\"text-destructive text-xs\">\n {{\n choice(\n 'kanban.wip_over',\n props.column.wipLimit ?? 0,\n { limit: props.column.wipLimit ?? 0 },\n '{1} Over the limit of :limit card|[0,*] Over the limit of :limit cards',\n )\n }}\n </p>\n <p v-if=\"wip === 'full' && props.column.wipStrict\" class=\"text-muted-foreground text-xs\">\n {{ t('kanban.wip_full', {}, 'This column is full') }}\n </p>\n </div>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FusedGroupComponent.js","names":["_sfc_main","FusedGroupComponent_vue_vue_type_script_setup_true_lang_default","FusedGroupComponent_default"],"sources":["../../../src/components/layout/FusedGroupComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FusedGroupSchema } from '@alfakit/core'\nimport { collectFieldStatePaths, gridColumnsClasses } from '@alfakit/core'\nimport { computed, shallowRef, useId } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { cn } from '../../lib/utils'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { provideFusedGroup } from '../schema/fused-group'\nimport RenderComponent from '../schema/RenderComponent.vue'\n\n/**\n * Fields fused into one control: one border around them (styled by `themes.css`), the\n * group label above, and the fields' validation errors below.\n */\nconst props = defineProps<{ component: FusedGroupSchema }>()\n\nprovideFusedGroup()\n\nconst labelId = `${useId()}-label`\nconst store = useOptionalFormStore()\nconst state = store ? useStore(store.store) : shallowRef(null)\nconst paths = computed(() => collectFieldStatePaths(props.component.schema))\nconst errors = computed(() =>\n state.value\n ? paths.value\n .map((path) => state.value?.errors[path]?.[0])\n .filter((message): message is string => Boolean(message))\n : [],\n)\n</script>\n\n<template>\n <div\n data-slot=\"fused-group\"\n role=\"group\"\n :aria-labelledby=\"props.component.label ? labelId : undefined\"\n class=\"flex flex-col gap-1.5\"\n v-bind=\"props.component.extraAttributes\"\n >\n <span\n v-if=\"props.component.label\"\n :id=\"labelId\"\n class=\"text-sm leading-none font-medium select-none\"\n >\n {{ props.component.label }}\n </span>\n <div\n data-slot=\"fused-group-controls\"\n :data-invalid=\"errors.length ? '' : undefined\"\n :class=\"cn('grid', gridColumnsClasses(props.component.columns ?? { default: 1 }))\"\n >\n <RenderComponent\n v-for=\"child in props.component.schema ?? []\"\n :key=\"child.key\"\n :component=\"child\"\n />\n </div>\n <!-- The fields announce their own errors; this list is the visible copy. -->\n <div v-if=\"errors.length\" aria-hidden=\"true\" class=\"flex flex-col gap-0.5\">\n <p v-for=\"(message, index) in errors\" :key=\"index\" class=\"text-destructive text-xs\">\n {{ message }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"FusedGroupComponent.js","names":["_sfc_main","FusedGroupComponent_vue_vue_type_script_setup_true_lang_default","FusedGroupComponent_default"],"sources":["../../../src/components/layout/FusedGroupComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FusedGroupSchema } from '@alfakit/core'\nimport { collectFieldStatePaths, gridColumnsClasses } from '@alfakit/core'\nimport { computed, shallowRef, useId } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { cn } from '../../lib/utils'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { provideFusedGroup } from '../schema/fused-group'\nimport RenderComponent from '../schema/RenderComponent.vue'\n\n/**\n * Fields fused into one control: one border around them (styled by `themes.css`), the\n * group label above, and the fields' validation errors below.\n */\nconst props = defineProps<{ component: FusedGroupSchema }>()\n\nprovideFusedGroup()\n\nconst labelId = `${useId()}-label`\nconst store = useOptionalFormStore()\nconst state = store ? useStore(store.store) : shallowRef(null)\nconst paths = computed(() => collectFieldStatePaths(props.component.schema))\nconst errors = computed(() =>\n state.value\n ? paths.value\n .map((path) => state.value?.errors[path]?.[0])\n .filter((message): message is string => Boolean(message))\n : [],\n)\n</script>\n\n<template>\n <div\n data-slot=\"fused-group\"\n role=\"group\"\n :aria-labelledby=\"props.component.label ? labelId : undefined\"\n class=\"flex flex-col gap-1.5\"\n v-bind=\"props.component.extraAttributes\"\n >\n <span\n v-if=\"props.component.label\"\n :id=\"labelId\"\n data-slot=\"label\"\n class=\"text-sm leading-none font-medium select-none\"\n >\n {{ props.component.label }}\n </span>\n <div\n data-slot=\"fused-group-controls\"\n :data-invalid=\"errors.length ? '' : undefined\"\n :class=\"cn('grid', gridColumnsClasses(props.component.columns ?? { default: 1 }))\"\n >\n <RenderComponent\n v-for=\"child in props.component.schema ?? []\"\n :key=\"child.key\"\n :component=\"child\"\n />\n </div>\n <!-- The fields announce their own errors; this list is the visible copy. -->\n <div v-if=\"errors.length\" aria-hidden=\"true\" class=\"flex flex-col gap-0.5\">\n <p v-for=\"(message, index) in errors\" :key=\"index\" class=\"text-destructive text-xs\">\n {{ message }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"FusedGroupComponent.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/FusedGroupComponent.vue"],"names":[],"mappings":"AAmEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AASrD;;;GAGG;AACH,KAAK,WAAW,GAAG;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC;;AAyGnD,wBAMG"}
1
+ {"version":3,"file":"FusedGroupComponent.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/FusedGroupComponent.vue"],"names":[],"mappings":"AAoEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AASrD;;;GAGG;AACH,KAAK,WAAW,GAAG;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAAC;;AA0GnD,wBAMG"}
@@ -26,6 +26,7 @@ var S = ["aria-labelledby"], C = ["data-invalid"], w = {
26
26
  T.component.label ? (g(), d("span", {
27
27
  key: 0,
28
28
  id: E,
29
+ "data-slot": "label",
29
30
  class: "text-sm leading-none font-medium select-none"
30
31
  }, y(T.component.label), 1)) : u("", !0),
31
32
  f("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"FusedGroupComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_mergeProps","_toDisplayString","_createCommentVNode","_createElementVNode","_normalizeClass","_unref","_Fragment","_renderList","_createBlock","RenderComponent","RenderComponent_default","_hoisted_1","_hoisted_2","_hoisted_3","FusedGroupComponent_vue_vue_type_script_setup_true_lang_default","props","__props","labelId","useId","store","useOptionalFormStore","state","useStore","shallowRef","paths","computed","collectFieldStatePaths","errors","path","message","openBlock","createElementBlock","mergeProps","toDisplayString","createCommentVNode","createElementVNode","normalizeClass","unref","cn","gridColumnsClasses","Fragment","renderList","createBlock","child","index"],"sources":["../../../src/components/layout/FusedGroupComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FusedGroupSchema } from '@alfakit/core'\nimport { collectFieldStatePaths, gridColumnsClasses } from '@alfakit/core'\nimport { computed, shallowRef, useId } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { cn } from '../../lib/utils'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { provideFusedGroup } from '../schema/fused-group'\nimport RenderComponent from '../schema/RenderComponent.vue'\n\n/**\n * Fields fused into one control: one border around them (styled by `themes.css`), the\n * group label above, and the fields' validation errors below.\n */\nconst props = defineProps<{ component: FusedGroupSchema }>()\n\nprovideFusedGroup()\n\nconst labelId = `${useId()}-label`\nconst store = useOptionalFormStore()\nconst state = store ? useStore(store.store) : shallowRef(null)\nconst paths = computed(() => collectFieldStatePaths(props.component.schema))\nconst errors = computed(() =>\n state.value\n ? paths.value\n .map((path) => state.value?.errors[path]?.[0])\n .filter((message): message is string => Boolean(message))\n : [],\n)\n</script>\n\n<template>\n <div\n data-slot=\"fused-group\"\n role=\"group\"\n :aria-labelledby=\"props.component.label ? labelId : undefined\"\n class=\"flex flex-col gap-1.5\"\n v-bind=\"props.component.extraAttributes\"\n >\n <span\n v-if=\"props.component.label\"\n :id=\"labelId\"\n class=\"text-sm leading-none font-medium select-none\"\n >\n {{ props.component.label }}\n </span>\n <div\n data-slot=\"fused-group-controls\"\n :data-invalid=\"errors.length ? '' : undefined\"\n :class=\"cn('grid', gridColumnsClasses(props.component.columns ?? { default: 1 }))\"\n >\n <RenderComponent\n v-for=\"child in props.component.schema ?? []\"\n :key=\"child.key\"\n :component=\"child\"\n />\n </div>\n <!-- The fields announce their own errors; this list is the visible copy. -->\n <div v-if=\"errors.length\" aria-hidden=\"true\" class=\"flex flex-col gap-0.5\">\n <p v-for=\"(message, index) in errors\" :key=\"index\" class=\"text-destructive text-xs\">\n {{ message }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAcA,IAAMiB,IAAQC;EAEd,EAAkB;EAElB,IAAMC,IAAU,GAAGC,EAAM,EAAE,SACrBC,IAAQC,EAAqB,GAC7BC,IAAQF,IAAQG,EAASH,EAAM,KAAK,IAAII,EAAW,IAAI,GACvDC,IAAQC,QAAeC,EAAuBX,EAAM,UAAU,MAAM,CAAC,GACrEY,IAASF,QACbJ,EAAM,QACFG,EAAM,MACH,KAAK,MAASH,EAAM,OAAO,OAAOO,EAAK,GAAG,EAAE,CAAA,CAC5C,QAAQ,MAA+B,EAAQC,CAAQ,IAC1D,CAAC,CACP;oBAIE/B,EAAA,GAAAC,EA+BM,OA/BNC,EA+BM;GA9BJ,aAAU;GACV,MAAK;GACJ,mBAAiBe,EAAM,UAAU,QAAQE,IAAU,KAAA;GACpD,OAAM;EACE,GAAAF,EAAM,UAAU,eAAe,GAAA;GAG/BA,EAAM,UAAU,SADxBjB,EAAA,GAAAC,EAMO,QAAA;;IAJJ,IAAIkB;IACL,OAAM;GAEH,GAAAhB,EAAAc,EAAM,UAAU,KAAK,GAAA,CAAA,KAAAmB,EAAA,IAAA,EAAA;GAE1B/B,EAUM,OAAA;IATJ,aAAU;IACT,gBAAcwB,EAAA,MAAO,SAAM,KAAQ,KAAA;IACnC,OAAKvB,EAAEC,EAAAiC,CAAA,CAAE,CAAA,QAASjC,EAAAkC,CAAA,CAAkB,CAACxB,EAAM,UAAU,WAAO,EAAA,SAAA,EAAA,CAAA,CAAA,CAAA;GAE7DjB,GAAAA,EAAAA,EAAA,EAAA,GAAAC,EAIEO,GAAA,MAAAC,EAHgBQ,EAAM,UAAU,UAAM,CAAA,IAA/B,OADTjB,EAAA,GAAAU,EAIEC,GAAA;IAFC,KAAKkC,EAAM;IACX,WAAWA;;GAILhB,EAAA,MAAO,UAAlB7B,EAAA,GAAAC,EAIM,OAJNc,GAIM,EAHJf,EAAA,EAAA,GAAAC,EAEIO,GAAA,MAAAC,EAF0BoB,EAAA,QAAnB,GAAS,OAApB7B,EAAA,GAAAC,EAEI,KAAA;IAFmC,KAAK6C;IAAO,OAAM;GACpD,GAAA3C,EAAA4B,CAAO,GAAA,CAAA"}
1
+ {"version":3,"file":"FusedGroupComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_mergeProps","_toDisplayString","_createCommentVNode","_createElementVNode","_normalizeClass","_unref","_Fragment","_renderList","_createBlock","RenderComponent","RenderComponent_default","_hoisted_1","_hoisted_2","_hoisted_3","FusedGroupComponent_vue_vue_type_script_setup_true_lang_default","props","__props","labelId","useId","store","useOptionalFormStore","state","useStore","shallowRef","paths","computed","collectFieldStatePaths","errors","path","message","openBlock","createElementBlock","mergeProps","toDisplayString","createCommentVNode","createElementVNode","normalizeClass","unref","cn","gridColumnsClasses","Fragment","renderList","createBlock","child","index"],"sources":["../../../src/components/layout/FusedGroupComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FusedGroupSchema } from '@alfakit/core'\nimport { collectFieldStatePaths, gridColumnsClasses } from '@alfakit/core'\nimport { computed, shallowRef, useId } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { cn } from '../../lib/utils'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { provideFusedGroup } from '../schema/fused-group'\nimport RenderComponent from '../schema/RenderComponent.vue'\n\n/**\n * Fields fused into one control: one border around them (styled by `themes.css`), the\n * group label above, and the fields' validation errors below.\n */\nconst props = defineProps<{ component: FusedGroupSchema }>()\n\nprovideFusedGroup()\n\nconst labelId = `${useId()}-label`\nconst store = useOptionalFormStore()\nconst state = store ? useStore(store.store) : shallowRef(null)\nconst paths = computed(() => collectFieldStatePaths(props.component.schema))\nconst errors = computed(() =>\n state.value\n ? paths.value\n .map((path) => state.value?.errors[path]?.[0])\n .filter((message): message is string => Boolean(message))\n : [],\n)\n</script>\n\n<template>\n <div\n data-slot=\"fused-group\"\n role=\"group\"\n :aria-labelledby=\"props.component.label ? labelId : undefined\"\n class=\"flex flex-col gap-1.5\"\n v-bind=\"props.component.extraAttributes\"\n >\n <span\n v-if=\"props.component.label\"\n :id=\"labelId\"\n data-slot=\"label\"\n class=\"text-sm leading-none font-medium select-none\"\n >\n {{ props.component.label }}\n </span>\n <div\n data-slot=\"fused-group-controls\"\n :data-invalid=\"errors.length ? '' : undefined\"\n :class=\"cn('grid', gridColumnsClasses(props.component.columns ?? { default: 1 }))\"\n >\n <RenderComponent\n v-for=\"child in props.component.schema ?? []\"\n :key=\"child.key\"\n :component=\"child\"\n />\n </div>\n <!-- The fields announce their own errors; this list is the visible copy. -->\n <div v-if=\"errors.length\" aria-hidden=\"true\" class=\"flex flex-col gap-0.5\">\n <p v-for=\"(message, index) in errors\" :key=\"index\" class=\"text-destructive text-xs\">\n {{ message }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAcA,IAAMiB,IAAQC;EAEd,EAAkB;EAElB,IAAMC,IAAU,GAAGC,EAAM,EAAE,SACrBC,IAAQC,EAAqB,GAC7BC,IAAQF,IAAQG,EAASH,EAAM,KAAK,IAAII,EAAW,IAAI,GACvDC,IAAQC,QAAeC,EAAuBX,EAAM,UAAU,MAAM,CAAC,GACrEY,IAASF,QACbJ,EAAM,QACFG,EAAM,MACH,KAAK,MAASH,EAAM,OAAO,OAAOO,EAAK,GAAG,EAAE,CAAA,CAC5C,QAAQ,MAA+B,EAAQC,CAAQ,IAC1D,CAAC,CACP;oBAIE/B,EAAA,GAAAC,EAgCM,OAhCNC,EAgCM;GA/BJ,aAAU;GACV,MAAK;GACJ,mBAAiBe,EAAM,UAAU,QAAQE,IAAU,KAAA;GACpD,OAAM;EACE,GAAAF,EAAM,UAAU,eAAe,GAAA;GAG/BA,EAAM,UAAU,SADxBjB,EAAA,GAAAC,EAOO,QAAA;;IALJ,IAAIkB;IACL,aAAU;IACV,OAAM;GAEH,GAAAhB,EAAAc,EAAM,UAAU,KAAK,GAAA,CAAA,KAAAmB,EAAA,IAAA,EAAA;GAE1B/B,EAUM,OAAA;IATJ,aAAU;IACT,gBAAcwB,EAAA,MAAO,SAAM,KAAQ,KAAA;IACnC,OAAKvB,EAAEC,EAAAiC,CAAA,CAAE,CAAA,QAASjC,EAAAkC,CAAA,CAAkB,CAACxB,EAAM,UAAU,WAAO,EAAA,SAAA,EAAA,CAAA,CAAA,CAAA;GAE7DjB,GAAAA,EAAAA,EAAA,EAAA,GAAAC,EAIEO,GAAA,MAAAC,EAHgBQ,EAAM,UAAU,UAAM,CAAA,IAA/B,OADTjB,EAAA,GAAAU,EAIEC,GAAA;IAFC,KAAKkC,EAAM;IACX,WAAWA;;GAILhB,EAAA,MAAO,UAAlB7B,EAAA,GAAAC,EAIM,OAJNc,GAIM,EAHJf,EAAA,EAAA,GAAAC,EAEIO,GAAA,MAAAC,EAF0BoB,EAAA,QAAnB,GAAS,OAApB7B,EAAA,GAAAC,EAEI,KAAA;IAFmC,KAAK6C;IAAO,OAAM;GACpD,GAAA3C,EAAA4B,CAAO,GAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionComponent.js","names":["_sfc_main","SectionComponent_vue_vue_type_script_setup_true_lang_default","SectionComponent_default"],"sources":["../../../src/components/layout/SectionComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SectionSchema } from '@alfakit/core'\nimport {\n actionsAlignmentClass,\n headingTag,\n readPersisted,\n schemaGapClass,\n writePersisted,\n} from '@alfakit/core'\nimport { ChevronDownIcon } from '@lucide/vue'\nimport { computed, onMounted, ref } from 'vue'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport { usePageActionContext } from '../actions/action-context'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { useFieldActionContext } from '../schema/field-actions'\nimport ActionList from '../actions/ActionList.vue'\nimport SchemaRenderer from '../schema/SchemaRenderer.vue'\nimport Button from '../ui/Button.vue'\nimport Collapsible from '../ui/Collapsible.vue'\nimport CollapsibleContent from '../ui/CollapsibleContent.vue'\nimport CollapsibleTrigger from '../ui/CollapsibleTrigger.vue'\nimport { useT } from '../../context'\nimport DeferredSchema from './DeferredSchema.vue'\nimport MixedContent from './MixedContent.vue'\n\nconst props = defineProps<{ component: SectionSchema }>()\nconst open = ref(!props.component.collapsed)\n// Inside a form the section's actions run as field actions, so `$get` / `$set` work.\nconst sectionForm = useOptionalFormStore()\nconst pageContext = usePageActionContext()\nconst fieldContext = useFieldActionContext(() => props.component)\nconst context = computed(() => (sectionForm ? fieldContext.value : pageContext))\nconst heading = computed(() => headingTag(props.component.headingLevel))\nconst hasHeader = computed(() =>\n Boolean(\n props.component.heading ||\n props.component.description ||\n props.component.icon ||\n props.component.headerActions?.length ||\n props.component.afterHeader?.length,\n ),\n)\n\n// Stored after mounting, so the server render and hydration use the schema's default.\nonMounted(() => {\n const key = props.component.persistCollapsed\n\n if (!key) return\n\n const stored = readPersisted(key)\n\n if (stored !== null) open.value = stored !== 'collapsed'\n})\n\nfunction setOpen(next: boolean) {\n open.value = next\n\n if (props.component.persistCollapsed) {\n writePersisted(props.component.persistCollapsed, next ? 'expanded' : 'collapsed')\n }\n}\nconst hasFooterActions = computed(() => Boolean(props.component.footerActions?.length))\nconst hasFooter = computed(() => hasFooterActions.value || Boolean(props.component.footer?.length))\nconst t = useT()\n</script>\n\n<template>\n <Collapsible\n v-if=\"props.component.aside\"\n :open=\"!props.component.collapsible || open\"\n as-child\n @update:open=\"setOpen($event)\"\n >\n <section\n data-slot=\"section\"\n class=\"grid gap-6 lg:grid-cols-3\"\n v-bind=\"props.component.extraAttributes\"\n >\n <div v-if=\"hasHeader\" class=\"flex flex-wrap items-start gap-3 lg:col-span-1\">\n <Icon\n v-if=\"props.component.icon\"\n :name=\"props.component.icon\"\n class=\"text-muted-foreground mt-0.5 size-5\"\n />\n <div class=\"min-w-0 flex-1 basis-48\">\n <component\n :is=\"heading\"\n v-if=\"props.component.heading\"\n class=\"text-base leading-6 font-semibold\"\n >\n {{ props.component.heading }}\n </component>\n <p v-if=\"props.component.description\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ props.component.description }}\n </p>\n </div>\n <ActionList\n v-if=\"props.component.headerActions && props.component.headerActions.length > 0\"\n :actions=\"props.component.headerActions\"\n :context=\"context\"\n size=\"sm\"\n />\n <MixedContent :items=\"props.component.afterHeader\" name=\"section-after-header\" />\n <CollapsibleTrigger v-if=\"props.component.collapsible\" as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n :aria-label=\"t('toggle_section', {}, 'Toggle section')\"\n >\n <Icon\n name=\"alfakit::schemas.section.collapse-button\"\n :fallback=\"ChevronDownIcon\"\n :class=\"cn('transition-transform', open && 'rotate-180')\"\n />\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent as-child>\n <div\n data-surface=\"section\"\n :class=\"\n cn(\n 'bg-card rounded-xl border shadow-xs lg:col-span-2',\n props.component.secondary && 'bg-muted/40',\n )\n \"\n >\n <div :class=\"cn('p-6', props.component.compact && 'p-4')\">\n <DeferredSchema v-slot=\"{ component: loaded }\" :component=\"props.component\">\n <SchemaRenderer\n :components=\"loaded.schema ?? []\"\n :columns=\"loaded.columns\"\n :class=\"schemaGapClass(loaded) || undefined\"\n />\n </DeferredSchema>\n </div>\n <div\n v-if=\"hasFooter\"\n data-slot=\"section-footer\"\n :class=\"\n cn(\n 'flex flex-wrap items-center gap-3 border-t px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <ActionList\n v-if=\"hasFooterActions\"\n :actions=\"props.component.footerActions!\"\n :context=\"context\"\n :class=\"actionsAlignmentClass(props.component.footerActionsAlignment) || undefined\"\n />\n <MixedContent :items=\"props.component.footer\" name=\"section-footer-content\" />\n </div>\n </div>\n </CollapsibleContent>\n </section>\n </Collapsible>\n <Collapsible\n v-else\n :open=\"!props.component.collapsible || open\"\n as-child\n @update:open=\"setOpen($event)\"\n >\n <section\n data-slot=\"section\"\n data-surface=\"section\"\n :class=\"cn('bg-card rounded-xl border shadow-xs', props.component.secondary && 'bg-muted/40')\"\n v-bind=\"props.component.extraAttributes\"\n >\n <div\n v-if=\"hasHeader\"\n :class=\"\n cn(\n 'flex flex-wrap items-start gap-3 border-b px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <Icon\n v-if=\"props.component.icon\"\n :name=\"props.component.icon\"\n class=\"text-muted-foreground mt-0.5 size-5\"\n />\n <div class=\"min-w-0 flex-1 basis-48\">\n <component\n :is=\"heading\"\n v-if=\"props.component.heading\"\n class=\"text-base leading-6 font-semibold\"\n >\n {{ props.component.heading }}\n </component>\n <p v-if=\"props.component.description\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ props.component.description }}\n </p>\n </div>\n <ActionList\n v-if=\"props.component.headerActions && props.component.headerActions.length > 0\"\n :actions=\"props.component.headerActions\"\n :context=\"context\"\n size=\"sm\"\n />\n <MixedContent :items=\"props.component.afterHeader\" name=\"section-after-header\" />\n <CollapsibleTrigger v-if=\"props.component.collapsible\" as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n :aria-label=\"t('toggle_section', {}, 'Toggle section')\"\n >\n <Icon\n name=\"alfakit::schemas.section.collapse-button\"\n :fallback=\"ChevronDownIcon\"\n :class=\"cn('transition-transform', open && 'rotate-180')\"\n />\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent>\n <div :class=\"cn('p-6', props.component.compact && 'p-4')\">\n <DeferredSchema v-slot=\"{ component: loaded }\" :component=\"props.component\">\n <SchemaRenderer\n :components=\"loaded.schema ?? []\"\n :columns=\"loaded.columns\"\n :class=\"schemaGapClass(loaded) || undefined\"\n />\n </DeferredSchema>\n </div>\n <div\n v-if=\"hasFooter\"\n data-slot=\"section-footer\"\n :class=\"\n cn(\n 'flex flex-wrap items-center gap-3 border-t px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <ActionList\n v-if=\"hasFooterActions\"\n :actions=\"props.component.footerActions!\"\n :context=\"context\"\n :class=\"actionsAlignmentClass(props.component.footerActionsAlignment) || undefined\"\n />\n <MixedContent :items=\"props.component.footer\" name=\"section-footer-content\" />\n </div>\n </CollapsibleContent>\n </section>\n </Collapsible>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SectionComponent.js","names":["_sfc_main","SectionComponent_vue_vue_type_script_setup_true_lang_default","SectionComponent_default"],"sources":["../../../src/components/layout/SectionComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { SectionSchema } from '@alfakit/core'\nimport {\n actionsAlignmentClass,\n headingTag,\n readPersisted,\n schemaGapClass,\n writePersisted,\n} from '@alfakit/core'\nimport { ChevronDownIcon } from '@lucide/vue'\nimport { computed, onMounted, ref } from 'vue'\nimport { Icon } from '../../lib/icons'\nimport { cn } from '../../lib/utils'\nimport { usePageActionContext } from '../actions/action-context'\nimport { useOptionalFormStore } from '../form/form-context'\nimport { useFieldActionContext } from '../schema/field-actions'\nimport ActionList from '../actions/ActionList.vue'\nimport SchemaRenderer from '../schema/SchemaRenderer.vue'\nimport Button from '../ui/Button.vue'\nimport Collapsible from '../ui/Collapsible.vue'\nimport CollapsibleContent from '../ui/CollapsibleContent.vue'\nimport CollapsibleTrigger from '../ui/CollapsibleTrigger.vue'\nimport { useT } from '../../context'\nimport DeferredSchema from './DeferredSchema.vue'\nimport MixedContent from './MixedContent.vue'\n\nconst props = defineProps<{ component: SectionSchema }>()\nconst open = ref(!props.component.collapsed)\n// Inside a form the section's actions run as field actions, so `$get` / `$set` work.\nconst sectionForm = useOptionalFormStore()\nconst pageContext = usePageActionContext()\nconst fieldContext = useFieldActionContext(() => props.component)\nconst context = computed(() => (sectionForm ? fieldContext.value : pageContext))\nconst heading = computed(() => headingTag(props.component.headingLevel))\nconst hasHeader = computed(() =>\n Boolean(\n props.component.heading ||\n props.component.description ||\n props.component.icon ||\n props.component.headerActions?.length ||\n props.component.afterHeader?.length,\n ),\n)\n\n// Stored after mounting, so the server render and hydration use the schema's default.\nonMounted(() => {\n const key = props.component.persistCollapsed\n\n if (!key) return\n\n const stored = readPersisted(key)\n\n if (stored !== null) open.value = stored !== 'collapsed'\n})\n\nfunction setOpen(next: boolean) {\n open.value = next\n\n if (props.component.persistCollapsed) {\n writePersisted(props.component.persistCollapsed, next ? 'expanded' : 'collapsed')\n }\n}\nconst hasFooterActions = computed(() => Boolean(props.component.footerActions?.length))\nconst hasFooter = computed(() => hasFooterActions.value || Boolean(props.component.footer?.length))\nconst t = useT()\n</script>\n\n<template>\n <Collapsible\n v-if=\"props.component.aside\"\n :open=\"!props.component.collapsible || open\"\n as-child\n @update:open=\"setOpen($event)\"\n >\n <section\n data-slot=\"section\"\n class=\"grid gap-6 lg:grid-cols-3\"\n v-bind=\"props.component.extraAttributes\"\n >\n <div v-if=\"hasHeader\" class=\"flex flex-wrap items-start gap-3 lg:col-span-1\">\n <Icon\n v-if=\"props.component.icon\"\n :name=\"props.component.icon\"\n class=\"text-muted-foreground mt-0.5 size-5\"\n />\n <div class=\"min-w-0 flex-1 basis-48\">\n <component\n :is=\"heading\"\n v-if=\"props.component.heading\"\n class=\"text-base leading-6 font-semibold break-words\"\n >\n {{ props.component.heading }}\n </component>\n <p\n v-if=\"props.component.description\"\n class=\"text-muted-foreground mt-1 text-sm break-words\"\n >\n {{ props.component.description }}\n </p>\n </div>\n <ActionList\n v-if=\"props.component.headerActions && props.component.headerActions.length > 0\"\n :actions=\"props.component.headerActions\"\n :context=\"context\"\n size=\"sm\"\n />\n <MixedContent :items=\"props.component.afterHeader\" name=\"section-after-header\" />\n <CollapsibleTrigger v-if=\"props.component.collapsible\" as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n :aria-label=\"t('toggle_section', {}, 'Toggle section')\"\n >\n <Icon\n name=\"alfakit::schemas.section.collapse-button\"\n :fallback=\"ChevronDownIcon\"\n :class=\"cn('transition-transform', open && 'rotate-180')\"\n />\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent as-child>\n <div\n data-surface=\"section\"\n :class=\"\n cn(\n 'bg-card rounded-xl border shadow-xs lg:col-span-2',\n props.component.secondary && 'bg-muted/40',\n )\n \"\n >\n <div :class=\"cn('p-6', props.component.compact && 'p-4')\">\n <DeferredSchema v-slot=\"{ component: loaded }\" :component=\"props.component\">\n <SchemaRenderer\n :components=\"loaded.schema ?? []\"\n :columns=\"loaded.columns\"\n :class=\"schemaGapClass(loaded) || undefined\"\n />\n </DeferredSchema>\n </div>\n <div\n v-if=\"hasFooter\"\n data-slot=\"section-footer\"\n :class=\"\n cn(\n 'flex flex-wrap items-center gap-3 border-t px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <ActionList\n v-if=\"hasFooterActions\"\n :actions=\"props.component.footerActions!\"\n :context=\"context\"\n :class=\"actionsAlignmentClass(props.component.footerActionsAlignment) || undefined\"\n />\n <MixedContent :items=\"props.component.footer\" name=\"section-footer-content\" />\n </div>\n </div>\n </CollapsibleContent>\n </section>\n </Collapsible>\n <Collapsible\n v-else\n :open=\"!props.component.collapsible || open\"\n as-child\n @update:open=\"setOpen($event)\"\n >\n <section\n data-slot=\"section\"\n data-surface=\"section\"\n :class=\"cn('bg-card rounded-xl border shadow-xs', props.component.secondary && 'bg-muted/40')\"\n v-bind=\"props.component.extraAttributes\"\n >\n <div\n v-if=\"hasHeader\"\n :class=\"\n cn(\n 'flex flex-wrap items-start gap-3 border-b px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <Icon\n v-if=\"props.component.icon\"\n :name=\"props.component.icon\"\n class=\"text-muted-foreground mt-0.5 size-5\"\n />\n <div class=\"min-w-0 flex-1 basis-48\">\n <component\n :is=\"heading\"\n v-if=\"props.component.heading\"\n class=\"text-base leading-6 font-semibold break-words\"\n >\n {{ props.component.heading }}\n </component>\n <p\n v-if=\"props.component.description\"\n class=\"text-muted-foreground mt-1 text-sm break-words\"\n >\n {{ props.component.description }}\n </p>\n </div>\n <ActionList\n v-if=\"props.component.headerActions && props.component.headerActions.length > 0\"\n :actions=\"props.component.headerActions\"\n :context=\"context\"\n size=\"sm\"\n />\n <MixedContent :items=\"props.component.afterHeader\" name=\"section-after-header\" />\n <CollapsibleTrigger v-if=\"props.component.collapsible\" as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n :aria-label=\"t('toggle_section', {}, 'Toggle section')\"\n >\n <Icon\n name=\"alfakit::schemas.section.collapse-button\"\n :fallback=\"ChevronDownIcon\"\n :class=\"cn('transition-transform', open && 'rotate-180')\"\n />\n </Button>\n </CollapsibleTrigger>\n </div>\n <CollapsibleContent>\n <div :class=\"cn('p-6', props.component.compact && 'p-4')\">\n <DeferredSchema v-slot=\"{ component: loaded }\" :component=\"props.component\">\n <SchemaRenderer\n :components=\"loaded.schema ?? []\"\n :columns=\"loaded.columns\"\n :class=\"schemaGapClass(loaded) || undefined\"\n />\n </DeferredSchema>\n </div>\n <div\n v-if=\"hasFooter\"\n data-slot=\"section-footer\"\n :class=\"\n cn(\n 'flex flex-wrap items-center gap-3 border-t px-6 py-4',\n props.component.compact && 'px-4 py-3',\n )\n \"\n >\n <ActionList\n v-if=\"hasFooterActions\"\n :actions=\"props.component.footerActions!\"\n :context=\"context\"\n :class=\"actionsAlignmentClass(props.component.footerActionsAlignment) || undefined\"\n />\n <MixedContent :items=\"props.component.footer\" name=\"section-footer-content\" />\n </div>\n </CollapsibleContent>\n </section>\n </Collapsible>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"SectionComponent.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SectionComponent.vue"],"names":[],"mappings":"AA8PA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAyBlD,KAAK,WAAW,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;;AAyiBhD,wBAMG"}
1
+ {"version":3,"file":"SectionComponent.vue.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SectionComponent.vue"],"names":[],"mappings":"AAoQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAyBlD,KAAK,WAAW,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,CAAC;;AA6iBhD,wBAMG"}
@@ -6,12 +6,12 @@ import i from "../ui/Button2.js";
6
6
  import a from "../actions/ActionList.js";
7
7
  import { useOptionalFormStore as o } from "../form/form-context.js";
8
8
  import s from "../schema/SchemaRenderer.js";
9
- import c from "../ui/Collapsible.js";
10
- import l from "../ui/CollapsibleContent.js";
11
- import u from "../ui/CollapsibleTrigger.js";
12
- import { useFieldActionContext as d } from "../schema/field-actions.js";
13
- import f from "./DeferredSchema.js";
14
- import p from "./MixedContent.js";
9
+ import { useFieldActionContext as c } from "../schema/field-actions.js";
10
+ import l from "./DeferredSchema.js";
11
+ import u from "../ui/Collapsible.js";
12
+ import d from "../ui/CollapsibleContent.js";
13
+ import f from "./MixedContent.js";
14
+ import p from "../ui/CollapsibleTrigger.js";
15
15
  import { actionsAlignmentClass as m, headingTag as h, readPersisted as g, schemaGapClass as _, writePersisted as v } from "@alfakit/core";
16
16
  import { computed as y, createBlock as b, createCommentVNode as x, createElementBlock as S, createElementVNode as C, createTextVNode as w, createVNode as T, defineComponent as E, mergeProps as D, normalizeClass as O, onMounted as k, openBlock as A, ref as j, resolveDynamicComponent as M, toDisplayString as N, unref as P, withCtx as F } from "vue";
17
17
  import { ChevronDownIcon as I } from "@lucide/vue";
@@ -21,15 +21,15 @@ var L = {
21
21
  class: "flex flex-wrap items-start gap-3 lg:col-span-1"
22
22
  }, R = { class: "min-w-0 flex-1 basis-48" }, z = {
23
23
  key: 1,
24
- class: "text-muted-foreground mt-1 text-sm"
24
+ class: "text-muted-foreground mt-1 text-sm break-words"
25
25
  }, B = { class: "min-w-0 flex-1 basis-48" }, V = {
26
26
  key: 1,
27
- class: "text-muted-foreground mt-1 text-sm"
27
+ class: "text-muted-foreground mt-1 text-sm break-words"
28
28
  }, H = /*@__PURE__*/ E({
29
29
  __name: "SectionComponent",
30
30
  props: { component: {} },
31
31
  setup(E) {
32
- let H = E, U = j(!H.component.collapsed), W = o(), G = t(), K = d(() => H.component), q = y(() => W ? K.value : G), J = y(() => h(H.component.headingLevel)), Y = y(() => !!(H.component.heading || H.component.description || H.component.icon || H.component.headerActions?.length || H.component.afterHeader?.length));
32
+ let H = E, U = j(!H.component.collapsed), W = o(), G = t(), K = c(() => H.component), q = y(() => W ? K.value : G), J = y(() => h(H.component.headingLevel)), Y = y(() => !!(H.component.heading || H.component.description || H.component.icon || H.component.headerActions?.length || H.component.afterHeader?.length));
33
33
  k(() => {
34
34
  let e = H.component.persistCollapsed;
35
35
  if (!e) return;
@@ -40,7 +40,7 @@ var L = {
40
40
  U.value = e, H.component.persistCollapsed && v(H.component.persistCollapsed, e ? "expanded" : "collapsed");
41
41
  }
42
42
  let Z = y(() => !!H.component.footerActions?.length), Q = y(() => Z.value || !!H.component.footer?.length), $ = e();
43
- return (e, t) => H.component.aside ? (A(), b(c, {
43
+ return (e, t) => H.component.aside ? (A(), b(u, {
44
44
  key: 0,
45
45
  open: !H.component.collapsible || U.value,
46
46
  "as-child": "",
@@ -57,7 +57,7 @@ var L = {
57
57
  }, null, 8, ["name"])) : x("", !0),
58
58
  C("div", R, [H.component.heading ? (A(), b(M(J.value), {
59
59
  key: 0,
60
- class: "text-base leading-6 font-semibold"
60
+ class: "text-base leading-6 font-semibold break-words"
61
61
  }, {
62
62
  default: F(() => [w(N(H.component.heading), 1)]),
63
63
  _: 1
@@ -68,11 +68,11 @@ var L = {
68
68
  context: q.value,
69
69
  size: "sm"
70
70
  }, null, 8, ["actions", "context"])) : x("", !0),
71
- T(p, {
71
+ T(f, {
72
72
  items: H.component.afterHeader,
73
73
  name: "section-after-header"
74
74
  }, null, 8, ["items"]),
75
- H.component.collapsible ? (A(), b(u, {
75
+ H.component.collapsible ? (A(), b(p, {
76
76
  key: 2,
77
77
  "as-child": ""
78
78
  }, {
@@ -91,11 +91,11 @@ var L = {
91
91
  }, 8, ["aria-label"])]),
92
92
  _: 1
93
93
  })) : x("", !0)
94
- ])) : x("", !0), T(l, { "as-child": "" }, {
94
+ ])) : x("", !0), T(d, { "as-child": "" }, {
95
95
  default: F(() => [C("div", {
96
96
  "data-surface": "section",
97
97
  class: O(P(n)("bg-card rounded-xl border shadow-xs lg:col-span-2", H.component.secondary && "bg-muted/40"))
98
- }, [C("div", { class: O(P(n)("p-6", H.component.compact && "p-4")) }, [T(f, { component: H.component }, {
98
+ }, [C("div", { class: O(P(n)("p-6", H.component.compact && "p-4")) }, [T(l, { component: H.component }, {
99
99
  default: F(({ component: e }) => [T(s, {
100
100
  components: e.schema ?? [],
101
101
  columns: e.columns,
@@ -119,14 +119,14 @@ var L = {
119
119
  "actions",
120
120
  "context",
121
121
  "class"
122
- ])) : x("", !0), T(p, {
122
+ ])) : x("", !0), T(f, {
123
123
  items: H.component.footer,
124
124
  name: "section-footer-content"
125
125
  }, null, 8, ["items"])], 2)) : x("", !0)], 2)]),
126
126
  _: 1
127
127
  })], 16)]),
128
128
  _: 1
129
- }, 8, ["open"])) : (A(), b(c, {
129
+ }, 8, ["open"])) : (A(), b(u, {
130
130
  key: 1,
131
131
  open: !H.component.collapsible || U.value,
132
132
  "as-child": "",
@@ -147,7 +147,7 @@ var L = {
147
147
  }, null, 8, ["name"])) : x("", !0),
148
148
  C("div", B, [H.component.heading ? (A(), b(M(J.value), {
149
149
  key: 0,
150
- class: "text-base leading-6 font-semibold"
150
+ class: "text-base leading-6 font-semibold break-words"
151
151
  }, {
152
152
  default: F(() => [w(N(H.component.heading), 1)]),
153
153
  _: 1
@@ -158,11 +158,11 @@ var L = {
158
158
  context: q.value,
159
159
  size: "sm"
160
160
  }, null, 8, ["actions", "context"])) : x("", !0),
161
- T(p, {
161
+ T(f, {
162
162
  items: H.component.afterHeader,
163
163
  name: "section-after-header"
164
164
  }, null, 8, ["items"]),
165
- H.component.collapsible ? (A(), b(u, {
165
+ H.component.collapsible ? (A(), b(p, {
166
166
  key: 2,
167
167
  "as-child": ""
168
168
  }, {
@@ -181,8 +181,8 @@ var L = {
181
181
  }, 8, ["aria-label"])]),
182
182
  _: 1
183
183
  })) : x("", !0)
184
- ], 2)) : x("", !0), T(l, null, {
185
- default: F(() => [C("div", { class: O(P(n)("p-6", H.component.compact && "p-4")) }, [T(f, { component: H.component }, {
184
+ ], 2)) : x("", !0), T(d, null, {
185
+ default: F(() => [C("div", { class: O(P(n)("p-6", H.component.compact && "p-4")) }, [T(l, { component: H.component }, {
186
186
  default: F(({ component: e }) => [T(s, {
187
187
  components: e.schema ?? [],
188
188
  columns: e.columns,
@@ -206,7 +206,7 @@ var L = {
206
206
  "actions",
207
207
  "context",
208
208
  "class"
209
- ])) : x("", !0), T(p, {
209
+ ])) : x("", !0), T(f, {
210
210
  items: H.component.footer,
211
211
  name: "section-footer-content"
212
212
  }, null, 8, ["items"])], 2)) : x("", !0)]),