@alfakit/vue 0.1.2 → 0.1.7

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 (281) 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/ActionGroupMenu.js.map +1 -1
  7. package/dist/components/actions/ActionGroupMenu.vue.d.ts.map +1 -1
  8. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js +69 -65
  9. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/actions/ActionModal.js.map +1 -1
  11. package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
  12. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +17 -15
  13. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/ai/AiCopilot.js.map +1 -1
  15. package/dist/components/ai/AiCopilot.vue.d.ts +2 -0
  16. package/dist/components/ai/AiCopilot.vue.d.ts.map +1 -1
  17. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js +7 -2
  18. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js +19 -19
  20. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/components/cms/LivePreview.js.map +1 -1
  22. package/dist/components/cms/LivePreview.vue.d.ts.map +1 -1
  23. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js +83 -83
  24. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/fields/BuilderField.js.map +1 -1
  26. package/dist/components/fields/BuilderField.vue.d.ts.map +1 -1
  27. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js +162 -157
  28. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/fields/ImageEditorDialog.js.map +1 -1
  30. package/dist/components/fields/ImageEditorDialog.vue.d.ts.map +1 -1
  31. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js +46 -46
  32. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/fields/KeyValueField.js.map +1 -1
  34. package/dist/components/fields/KeyValueField.vue.d.ts.map +1 -1
  35. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js +66 -66
  36. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/fields/ModalTablePicker.js.map +1 -1
  38. package/dist/components/fields/ModalTablePicker.vue.d.ts.map +1 -1
  39. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js +113 -113
  40. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/fields/RepeaterField.js.map +1 -1
  42. package/dist/components/fields/RepeaterField.vue.d.ts.map +1 -1
  43. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js +12 -12
  44. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/fields/RichEditorInput.js.map +1 -1
  46. package/dist/components/fields/RichEditorInput.vue.d.ts.map +1 -1
  47. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js +166 -165
  48. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/fields/SliderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  50. package/dist/components/fields/item-actions.d.ts +2 -2
  51. package/dist/components/fields/item-actions.d.ts.map +1 -1
  52. package/dist/components/fields/item-actions.js +31 -31
  53. package/dist/components/fields/item-actions.js.map +1 -1
  54. package/dist/components/form/FormBlock.js.map +1 -1
  55. package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
  56. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +1 -1
  57. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/components/form/form-context.js +25 -25
  59. package/dist/components/form/form-context.js.map +1 -1
  60. package/dist/components/kanban/KanbanBoard.js.map +1 -1
  61. package/dist/components/kanban/KanbanBoard.vue.d.ts.map +1 -1
  62. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js +5 -2
  63. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  64. package/dist/components/kanban/KanbanColumnHeader.js.map +1 -1
  65. package/dist/components/kanban/KanbanColumnHeader.vue.d.ts.map +1 -1
  66. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js +64 -64
  67. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  68. package/dist/components/layout/SectionComponent.js.map +1 -1
  69. package/dist/components/layout/SectionComponent.vue.d.ts.map +1 -1
  70. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js +23 -23
  71. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js +8 -8
  73. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  74. package/dist/components/panel/GlobalSearchPalette.js.map +1 -1
  75. package/dist/components/panel/GlobalSearchPalette.vue.d.ts.map +1 -1
  76. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js +102 -96
  77. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
  78. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js +10 -10
  79. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  80. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js +9 -9
  81. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  82. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js +16 -16
  83. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js +10 -10
  85. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +35 -35
  87. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js +11 -11
  89. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/realtime/use-live-updates.d.ts.map +1 -1
  91. package/dist/components/realtime/use-live-updates.js +24 -23
  92. package/dist/components/realtime/use-live-updates.js.map +1 -1
  93. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js +2 -1
  94. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  95. package/dist/components/table/ColumnHeader.js.map +1 -1
  96. package/dist/components/table/ColumnHeader.vue.d.ts.map +1 -1
  97. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js +55 -49
  98. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/table/ColumnManager.js.map +1 -1
  100. package/dist/components/table/ColumnManager.vue.d.ts.map +1 -1
  101. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js +5 -4
  102. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js.map +1 -1
  103. package/dist/components/table/ContentLayoutSort.js.map +1 -1
  104. package/dist/components/table/ContentLayoutSort.vue.d.ts.map +1 -1
  105. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js +5 -5
  106. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  107. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +2 -1
  108. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  109. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js +2 -1
  110. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/table/TableCellContent.js.map +1 -1
  112. package/dist/components/table/TableCellContent.vue.d.ts.map +1 -1
  113. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js +4 -3
  114. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  115. package/dist/components/table/TablePagination.js.map +1 -1
  116. package/dist/components/table/TablePagination.vue.d.ts.map +1 -1
  117. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js +87 -87
  118. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  119. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +2 -1
  120. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  121. package/dist/components/table/cell-update.d.ts +6 -0
  122. package/dist/components/table/cell-update.d.ts.map +1 -1
  123. package/dist/components/table/cell-update.js.map +1 -1
  124. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  125. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/ui/CommandAutoHighlight.js +7 -0
  127. package/dist/components/ui/CommandAutoHighlight.js.map +1 -0
  128. package/dist/components/ui/CommandAutoHighlight.vue.d.ts +21 -0
  129. package/dist/components/ui/CommandAutoHighlight.vue.d.ts.map +1 -0
  130. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js +18 -0
  131. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -0
  132. package/dist/components/ui/DialogContent.js.map +1 -1
  133. package/dist/components/ui/DialogContent.vue.d.ts.map +1 -1
  134. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js +13 -12
  135. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/ui/PopoverContent.js.map +1 -1
  137. package/dist/components/ui/PopoverContent.vue.d.ts.map +1 -1
  138. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js +9 -8
  139. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/components/ui/SheetContent.js.map +1 -1
  141. package/dist/components/ui/SheetContent.vue.d.ts.map +1 -1
  142. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js +13 -12
  143. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/ui/TooltipContent.js.map +1 -1
  145. package/dist/components/ui/TooltipContent.vue.d.ts.map +1 -1
  146. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js +9 -8
  147. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/context.d.ts +7 -0
  149. package/dist/context.d.ts.map +1 -1
  150. package/dist/context.js +29 -26
  151. package/dist/context.js.map +1 -1
  152. package/dist/create-alfakit.d.ts.map +1 -1
  153. package/dist/create-alfakit.js +33 -31
  154. package/dist/create-alfakit.js.map +1 -1
  155. package/dist/eject-manifest.json +11 -2
  156. package/dist/index.d.ts +1 -0
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +219 -217
  159. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  160. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/layouts/AuthLayout.vue_vue_type_script_setup_true_lang.js +9 -9
  162. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  163. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js +15 -15
  165. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/layouts/lazy-layouts.d.ts +10 -0
  167. package/dist/layouts/lazy-layouts.d.ts.map +1 -0
  168. package/dist/layouts/lazy-layouts.js +8 -0
  169. package/dist/layouts/lazy-layouts.js.map +1 -0
  170. package/dist/layouts/panel-layouts.d.ts +8 -0
  171. package/dist/layouts/panel-layouts.d.ts.map +1 -0
  172. package/dist/layouts/panel-layouts.js +15 -0
  173. package/dist/layouts/panel-layouts.js.map +1 -0
  174. package/dist/lib/lazy.d.ts.map +1 -1
  175. package/dist/lib/lazy.js +2 -2
  176. package/dist/lib/lazy.js.map +1 -1
  177. package/dist/pages/PageShell.js.map +1 -1
  178. package/dist/pages/PageShell.vue.d.ts.map +1 -1
  179. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js +39 -42
  180. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  181. package/dist/standalone/AlfakitComponent.js.map +1 -1
  182. package/dist/standalone/AlfakitComponent.vue.d.ts.map +1 -1
  183. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js +56 -52
  184. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  185. package/dist/standalone.css +7 -0
  186. package/dist/starter-kit/AlfakitStarterKitRoot.js.map +1 -1
  187. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts +2 -2
  188. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts.map +1 -1
  189. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js +17 -12
  190. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  191. package/dist/starter-kit/dashboard-widgets.d.ts +54 -0
  192. package/dist/starter-kit/dashboard-widgets.d.ts.map +1 -0
  193. package/dist/starter-kit/dashboard-widgets.js +54 -0
  194. package/dist/starter-kit/dashboard-widgets.js.map +1 -0
  195. package/dist/starter-kit/index.d.ts +2 -1
  196. package/dist/starter-kit/index.d.ts.map +1 -1
  197. package/dist/starter-kit/index.js +5 -4
  198. package/dist/starter-kit/runtime.d.ts +6 -0
  199. package/dist/starter-kit/runtime.d.ts.map +1 -1
  200. package/dist/starter-kit/runtime.js +19 -15
  201. package/dist/starter-kit/runtime.js.map +1 -1
  202. package/dist/starter-kit/starter-kit.d.ts.map +1 -1
  203. package/dist/starter-kit/starter-kit.js +8 -8
  204. package/dist/starter-kit/starter-kit.js.map +1 -1
  205. package/dist/starter-kit/widgets/CopilotTrigger.js +7 -0
  206. package/dist/starter-kit/widgets/CopilotTrigger.js.map +1 -0
  207. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts +12 -0
  208. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts.map +1 -0
  209. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js +23 -0
  210. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  211. package/dist/starter-kit/widgets/LoadedCopilot.js +7 -0
  212. package/dist/starter-kit/widgets/LoadedCopilot.js.map +1 -0
  213. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts +8 -0
  214. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts.map +1 -0
  215. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js +31 -0
  216. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -0
  217. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js +7 -0
  218. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js.map +1 -0
  219. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts +8 -0
  220. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts.map +1 -0
  221. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js +34 -0
  222. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  223. package/dist/starter-kit/widgets/index.d.ts +40 -9
  224. package/dist/starter-kit/widgets/index.d.ts.map +1 -1
  225. package/dist/starter-kit/widgets/index.js +21 -18
  226. package/dist/starter-kit/widgets/index.js.map +1 -1
  227. package/dist/starter-kit/widgets/loaded.d.ts +10 -0
  228. package/dist/starter-kit/widgets/loaded.d.ts.map +1 -0
  229. package/dist/starter-kit/widgets/loaded.js +5 -0
  230. package/dist/styles.css +9 -2
  231. package/dist/themes.css +6 -1
  232. package/package.json +2 -2
  233. package/src/AlfakitRoot.vue +9 -1
  234. package/src/components/actions/ActionGroupMenu.vue +13 -1
  235. package/src/components/actions/ActionModal.vue +9 -0
  236. package/src/components/ai/AiCopilot.vue +7 -1
  237. package/src/components/cms/LivePreview.vue +8 -2
  238. package/src/components/fields/BuilderField.vue +15 -2
  239. package/src/components/fields/ImageEditorDialog.vue +7 -3
  240. package/src/components/fields/KeyValueField.vue +3 -2
  241. package/src/components/fields/ModalTablePicker.vue +7 -2
  242. package/src/components/fields/RepeaterField.vue +2 -3
  243. package/src/components/fields/RichEditorInput.vue +3 -0
  244. package/src/components/fields/item-actions.ts +31 -10
  245. package/src/components/form/FormBlock.vue +2 -1
  246. package/src/components/form/form-context.ts +2 -2
  247. package/src/components/kanban/KanbanBoard.vue +15 -3
  248. package/src/components/kanban/KanbanColumnHeader.vue +6 -4
  249. package/src/components/layout/SectionComponent.vue +10 -4
  250. package/src/components/panel/GlobalSearchPalette.vue +2 -0
  251. package/src/components/realtime/use-live-updates.ts +3 -1
  252. package/src/components/table/ColumnHeader.vue +23 -12
  253. package/src/components/table/ColumnManager.vue +12 -8
  254. package/src/components/table/ContentLayoutSort.vue +7 -1
  255. package/src/components/table/TableCellContent.vue +4 -2
  256. package/src/components/table/TablePagination.vue +12 -7
  257. package/src/components/table/cell-update.ts +6 -0
  258. package/src/components/ui/CommandAutoHighlight.vue +27 -0
  259. package/src/components/ui/DialogContent.vue +5 -1
  260. package/src/components/ui/PopoverContent.vue +5 -1
  261. package/src/components/ui/SheetContent.vue +5 -1
  262. package/src/components/ui/TooltipContent.vue +5 -1
  263. package/src/context.ts +10 -0
  264. package/src/create-alfakit.ts +5 -0
  265. package/src/index.ts +2 -0
  266. package/src/layouts/lazy-layouts.ts +14 -0
  267. package/src/layouts/panel-layouts.ts +17 -0
  268. package/src/lib/lazy.ts +11 -1
  269. package/src/pages/PageShell.vue +5 -6
  270. package/src/standalone/AlfakitComponent.vue +17 -6
  271. package/src/starter-kit/AlfakitStarterKitRoot.vue +12 -3
  272. package/src/starter-kit/dashboard-widgets.ts +93 -0
  273. package/src/starter-kit/index.ts +7 -1
  274. package/src/starter-kit/runtime.ts +17 -1
  275. package/src/starter-kit/starter-kit.ts +2 -1
  276. package/src/starter-kit/widgets/CopilotTrigger.vue +58 -0
  277. package/src/starter-kit/widgets/LoadedCopilot.vue +29 -0
  278. package/src/starter-kit/widgets/StarterKitImpersonationBanner.vue +57 -0
  279. package/src/starter-kit/widgets/index.ts +56 -11
  280. package/src/starter-kit/widgets/loaded.ts +9 -0
  281. package/src/styles.css +9 -2
@@ -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":"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)]),
@@ -1 +1 @@
1
- {"version":3,"file":"SectionComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Collapsible","_withCtx","_createElementVNode","_mergeProps","_createElementBlock","_unref","Icon","_createCommentVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString","ActionList","_createVNode","MixedContent","CollapsibleTrigger","Button","_normalizeClass","CollapsibleContent","DeferredSchema","SchemaRenderer","Icon_default","Button_default","ActionList_default","SchemaRenderer_default","Collapsible_default","CollapsibleContent_default","CollapsibleTrigger_default","DeferredSchema_default","MixedContent_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","SectionComponent_vue_vue_type_script_setup_true_lang_default","props","__props","open","ref","sectionForm","useOptionalFormStore","pageContext","usePageActionContext","fieldContext","useFieldActionContext","context","computed","heading","headingTag","hasHeader","key","stored","readPersisted","setOpen","next","writePersisted","hasFooterActions","hasFooter","t","useT","openBlock","createBlock","_cache","$event","withCtx","createElementVNode","mergeProps","createElementBlock","unref","createCommentVNode","resolveDynamicComponent","createTextVNode","toDisplayString","createVNode","ChevronDownIcon","normalizeClass","cn","loaded","schemaGapClass","actionsAlignmentClass"],"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":"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"}
1
+ {"version":3,"file":"SectionComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Collapsible","_withCtx","_createElementVNode","_mergeProps","_createElementBlock","_unref","Icon","_createCommentVNode","_resolveDynamicComponent","_createTextVNode","_toDisplayString","ActionList","_createVNode","MixedContent","CollapsibleTrigger","Button","_normalizeClass","CollapsibleContent","DeferredSchema","SchemaRenderer","Icon_default","Button_default","ActionList_default","SchemaRenderer_default","DeferredSchema_default","Collapsible_default","CollapsibleContent_default","MixedContent_default","CollapsibleTrigger_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","SectionComponent_vue_vue_type_script_setup_true_lang_default","props","__props","open","ref","sectionForm","useOptionalFormStore","pageContext","usePageActionContext","fieldContext","useFieldActionContext","context","computed","heading","headingTag","hasHeader","key","stored","readPersisted","setOpen","next","writePersisted","hasFooterActions","hasFooter","t","useT","openBlock","createBlock","_cache","$event","withCtx","createElementVNode","mergeProps","createElementBlock","unref","createCommentVNode","resolveDynamicComponent","createTextVNode","toDisplayString","createVNode","ChevronDownIcon","normalizeClass","cn","loaded","schemaGapClass","actionsAlignmentClass"],"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":"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"}
@@ -12,10 +12,10 @@ import oe from "../ui/Tabs.js";
12
12
  import o from "../ui/TabsContent.js";
13
13
  import s from "../ui/TabsList.js";
14
14
  import c from "../ui/TabsTrigger.js";
15
- import l from "../ui/ScrollArea.js";
16
- import u from "../ui/Collapsible.js";
17
- import d from "../ui/CollapsibleContent.js";
18
- import f from "../ui/CollapsibleTrigger.js";
15
+ import l from "../ui/Collapsible.js";
16
+ import u from "../ui/CollapsibleContent.js";
17
+ import d from "../ui/CollapsibleTrigger.js";
18
+ import f from "../ui/ScrollArea.js";
19
19
  import p from "./DebugFormState.js";
20
20
  import m from "./DebugTreeNode.js";
21
21
  import { byteLength as se, debugRecorder as h, formatBytes as g } from "@alfakit/core";
@@ -132,7 +132,7 @@ var N = {
132
132
  })
133
133
  ]),
134
134
  _: 1
135
- }), w(l, { class: "min-h-0 flex-1" }, {
135
+ }), w(f, { class: "min-h-0 flex-1" }, {
136
136
  default: A(() => [
137
137
  w(o, {
138
138
  value: "schema",
@@ -167,11 +167,11 @@ var N = {
167
167
  }, {
168
168
  default: A(() => [C(O(k(J)("debug.clear", {}, "Clear")), 1)]),
169
169
  _: 1
170
- })]), (E(!0), x(_, null, D(k(Z).requests, (e) => (E(), y(u, {
170
+ })]), (E(!0), x(_, null, D(k(Z).requests, (e) => (E(), y(l, {
171
171
  key: e.id,
172
172
  class: "rounded-md border"
173
173
  }, {
174
- default: A(() => [w(f, { class: "flex w-full items-center gap-2 px-3 py-2 text-start [&[data-state=open]>svg]:rotate-90" }, {
174
+ default: A(() => [w(d, { class: "flex w-full items-center gap-2 px-3 py-2 text-start [&[data-state=open]>svg]:rotate-90" }, {
175
175
  default: A(() => [
176
176
  w(k(M), { class: "text-muted-foreground size-3.5 shrink-0 transition-transform rtl:rotate-180" }),
177
177
  S("span", V, O(e.method), 1),
@@ -189,7 +189,7 @@ var N = {
189
189
  S("span", U, O(e.duration) + " ms", 1)
190
190
  ]),
191
191
  _: 2
192
- }, 1024), w(d, { class: "space-y-2 border-t px-3 py-2" }, {
192
+ }, 1024), w(u, { class: "space-y-2 border-t px-3 py-2" }, {
193
193
  default: A(() => [
194
194
  S("dl", W, [
195
195
  S("dt", null, O(k(J)("debug.duration", {}, "Duration")), 1),
@@ -1 +1 @@
1
- {"version":3,"file":"DebugPanel.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Sheet","_withCtx","_createVNode","SheetTrigger","Button","_unref","SheetContent","_createElementVNode","SheetHeader","SheetTitle","_createTextVNode","_toDisplayString","SheetDescription","Tabs","TabsList","TabsTrigger","_createElementBlock","_createCommentVNode","ScrollArea","TabsContent","_Fragment","_renderList","DebugTreeNode","DebugFormState","Collapsible","CollapsibleTrigger","Badge","CollapsibleContent","Badge_default","Button_default","Sheet_default","SheetContent_default","SheetDescription_default","SheetHeader_default","SheetTitle_default","SheetTrigger_default","Tabs_default","TabsContent_default","TabsList_default","TabsTrigger_default","ScrollArea_default","Collapsible_default","CollapsibleContent_default","CollapsibleTrigger_default","DebugFormState_default","DebugTreeNode_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","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","DebugPanel_vue_vue_type_script_setup_true_lang_default","t","useT","props","useAlfakitProps","direction","useDirection","debug","computed","state","useStore","debugRecorder","payloadBytes","byteLength","json","value","pathOf","parsed","url","forms","openBlock","createBlock","withCtx","createVNode","unref","BugIcon","createElementVNode","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","Fragment","renderList","node","index","_cache","request","ChevronRightIcon","formatBytes","closure","item"],"sources":["../../../src/components/panel/DebugPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FormStore } from '@alfakit/core'\nimport { byteLength, debugRecorder, formatBytes } from '@alfakit/core'\nimport { BugIcon, ChevronRightIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { useAlfakitProps, useDirection, useT } from '../../context'\nimport Badge from '../ui/Badge.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 ScrollArea from '../ui/ScrollArea.vue'\nimport Sheet from '../ui/Sheet.vue'\nimport SheetContent from '../ui/SheetContent.vue'\nimport SheetDescription from '../ui/SheetDescription.vue'\nimport SheetHeader from '../ui/SheetHeader.vue'\nimport SheetTitle from '../ui/SheetTitle.vue'\nimport SheetTrigger from '../ui/SheetTrigger.vue'\nimport Tabs from '../ui/Tabs.vue'\nimport TabsContent from '../ui/TabsContent.vue'\nimport TabsList from '../ui/TabsList.vue'\nimport TabsTrigger from '../ui/TabsTrigger.vue'\nimport DebugFormState from './DebugFormState.vue'\nimport DebugTreeNode from './DebugTreeNode.vue'\n\n/**\n * The developer debug panel: a top bar toggle that opens a drawer with the page's resolved\n * schema tree (visibility and authorisation per component, closures evaluated), the live\n * form state, the internal requests captured by `requestJson()` and timings. Rendered only\n * when the page carries the `alfakitDebug` prop, which PHP adds while `Panel::debugPanel()`\n * is active and `app.debug` is on. Replace it with `components: { 'panel:debug-panel': … }`.\n */\nconst t = useT()\nconst props = useAlfakitProps()\nconst direction = useDirection()\nconst debug = computed(() => props.value.alfakitDebug)\nconst state = useStore(debugRecorder.store)\nconst payloadBytes = computed(() => byteLength(props.value))\n\nconst json = (value: unknown): string => {\n try {\n return typeof value === 'string' ? value : JSON.stringify(value, null, 2)\n } catch {\n return String(value)\n }\n}\n\nconst pathOf = (url: string): string => {\n try {\n const parsed = new URL(url, 'http://localhost')\n\n return parsed.pathname + parsed.search\n } catch {\n return url\n }\n}\n\nconst forms = computed(() => state.value.forms as FormStore[])\n</script>\n\n<template>\n <Sheet v-if=\"debug\">\n <SheetTrigger as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n :aria-label=\"t('debug.open', {}, 'Open debug panel')\"\n data-slot=\"debug-toggle\"\n >\n <BugIcon />\n </Button>\n </SheetTrigger>\n <SheetContent\n :side=\"direction === 'rtl' ? 'left' : 'right'\"\n class=\"flex w-full flex-col gap-0 p-0 sm:max-w-xl\"\n >\n <div data-slot=\"debug-panel\" class=\"flex min-h-0 flex-1 flex-col\">\n <SheetHeader class=\"border-b\">\n <SheetTitle class=\"flex items-center gap-2\">\n <BugIcon class=\"size-4\" />\n {{ t('debug.title', {}, 'Debug') }}\n </SheetTitle>\n <SheetDescription class=\"truncate font-mono text-xs\" :title=\"debug.page\">\n {{ debug.page }}\n </SheetDescription>\n </SheetHeader>\n <Tabs default-value=\"schema\" class=\"flex min-h-0 flex-1 flex-col gap-0\">\n <TabsList class=\"mx-4 mt-3 grid w-auto grid-cols-4\">\n <TabsTrigger value=\"schema\">{{ t('debug.schema', {}, 'Schema') }}</TabsTrigger>\n <TabsTrigger value=\"form\">\n {{ t('debug.form', {}, 'Form') }}\n <span\n v-if=\"forms.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ forms.length }}</span\n >\n </TabsTrigger>\n <TabsTrigger value=\"requests\">\n {{ t('debug.requests', {}, 'Requests') }}\n <span\n v-if=\"state.requests.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ state.requests.length }}</span\n >\n </TabsTrigger>\n <TabsTrigger value=\"timings\">{{ t('debug.timings', {}, 'Timings') }}</TabsTrigger>\n </TabsList>\n <ScrollArea class=\"min-h-0 flex-1\">\n <TabsContent value=\"schema\" class=\"p-4 text-sm\">\n <p v-if=\"debug.tree.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_tree', {}, 'The server sent no schema tree for this page.') }}\n </p>\n <ul v-else class=\"space-y-0.5 font-mono text-xs\">\n <DebugTreeNode\n v-for=\"(node, index) in debug.tree\"\n :key=\"`${node.key ?? node.type}-${index}`\"\n :node=\"node\"\n :depth=\"0\"\n />\n </ul>\n </TabsContent>\n <TabsContent value=\"form\" class=\"space-y-4 p-4 text-sm\">\n <p v-if=\"forms.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_forms', {}, 'No forms on this page.') }}\n </p>\n <DebugFormState v-for=\"(form, index) in forms\" :key=\"index\" :form=\"form\" />\n </TabsContent>\n <TabsContent value=\"requests\" class=\"space-y-2 p-4 text-sm\">\n <p v-if=\"state.requests.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_requests', {}, 'No internal requests yet.') }}\n </p>\n <template v-else>\n <div class=\"flex justify-end\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n @click=\"debugRecorder.clearRequests()\"\n >\n {{ t('debug.clear', {}, 'Clear') }}\n </Button>\n </div>\n <Collapsible\n v-for=\"request in state.requests\"\n :key=\"request.id\"\n class=\"rounded-md border\"\n >\n <CollapsibleTrigger\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start [&[data-state=open]>svg]:rotate-90\"\n >\n <ChevronRightIcon\n class=\"text-muted-foreground size-3.5 shrink-0 transition-transform rtl:rotate-180\"\n />\n <span class=\"font-mono text-xs font-semibold\">{{ request.method }}</span>\n <span class=\"min-w-0 flex-1 truncate font-mono text-xs\" :title=\"request.url\">{{\n pathOf(request.url)\n }}</span>\n <Badge\n :variant=\"\n request.status === 0 || request.status >= 400 ? 'destructive' : 'secondary'\n \"\n class=\"font-mono\"\n >{{\n request.status === 0 ? t('debug.failed', {}, 'failed') : request.status\n }}</Badge\n >\n <span class=\"text-muted-foreground font-mono text-xs tabular-nums\"\n >{{ request.duration }} ms</span\n >\n </CollapsibleTrigger>\n <CollapsibleContent class=\"space-y-2 border-t px-3 py-2\">\n <dl\n class=\"text-muted-foreground grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs\"\n >\n <dt>{{ t('debug.duration', {}, 'Duration') }}</dt>\n <dd class=\"font-mono tabular-nums\">\n {{ request.duration }} ms\n <template v-if=\"request.serverDuration !== null\">\n ({{ t('debug.server_time', {}, 'Server time') }}:\n {{ request.serverDuration }} ms)\n </template>\n </dd>\n <dt>{{ t('debug.size', {}, 'Size') }}</dt>\n <dd class=\"font-mono tabular-nums\">\n ↑ {{ formatBytes(request.requestBytes) }} · ↓\n {{ formatBytes(request.responseBytes) }}\n </dd>\n </dl>\n <pre\n v-if=\"request.request !== undefined && request.request !== null\"\n dir=\"ltr\"\n class=\"bg-muted/50 max-h-72 overflow-auto rounded-md p-2 text-start font-mono text-xs leading-relaxed\"\n >{{ json(request.request) }}</pre>\n <pre\n dir=\"ltr\"\n class=\"bg-muted/50 max-h-72 overflow-auto rounded-md p-2 text-start font-mono text-xs leading-relaxed\"\n >{{ json(request.response) }}</pre>\n </CollapsibleContent>\n </Collapsible>\n </template>\n </TabsContent>\n <TabsContent value=\"timings\" class=\"space-y-4 p-4 text-sm\">\n <dl class=\"grid grid-cols-2 gap-3\">\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.server_time', {}, 'Server time') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ debug.server.duration }} ms\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.queries', {}, 'Queries') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ debug.server.queries }} · {{ debug.server.queryTime }} ms\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.memory', {}, 'Peak memory') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ formatBytes(debug.server.memory) }}\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.payload', {}, 'Page payload') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ formatBytes(payloadBytes) }}\n </dd>\n </div>\n </dl>\n <p class=\"text-muted-foreground font-mono text-xs\">\n PHP {{ debug.server.php }} · Laravel {{ debug.server.laravel }}\n </p>\n <section>\n <h3 class=\"mb-2 text-sm font-medium\">\n {{ t('debug.closures', {}, 'Closures evaluated') }}\n <span\n v-if=\"debug.closures.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ debug.closures.length }}</span\n >\n </h3>\n <p v-if=\"debug.closures.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_closures', {}, 'No closures were evaluated.') }}\n </p>\n <ul v-else class=\"divide-y rounded-md border font-mono text-xs\">\n <li\n v-for=\"(closure, index) in debug.closures\"\n :key=\"index\"\n class=\"flex items-center gap-2 px-3 py-1.5\"\n >\n <span class=\"font-semibold\">{{ closure.owner }}</span>\n <span\n class=\"text-muted-foreground min-w-0 flex-1 truncate\"\n :title=\"closure.file\"\n >{{ closure.file }}:{{ closure.line }}</span\n >\n <Badge v-if=\"closure.count > 1\" variant=\"secondary\">{{\n t('debug.times', { count: closure.count }, '×:count')\n }}</Badge>\n </li>\n </ul>\n </section>\n <section v-if=\"(debug.deprecations ?? []).length > 0\">\n <h3 class=\"mb-2 text-sm font-medium\">\n {{ t('debug.deprecations', {}, 'Deprecations') }}\n <span class=\"bg-muted ms-1 rounded px-1.5 py-0.5 font-mono text-xs\">{{\n debug.deprecations?.length\n }}</span>\n </h3>\n <ul class=\"divide-y rounded-md border text-xs\">\n <li\n v-for=\"item in debug.deprecations\"\n :key=\"item.subject\"\n class=\"flex flex-col gap-0.5 px-3 py-1.5\"\n >\n <span class=\"font-mono font-semibold\"\n >{{ item.subject\n }}<span v-if=\"item.since\" class=\"text-muted-foreground font-normal\">\n · {{ item.since }}</span\n ></span\n >\n <span class=\"text-muted-foreground\">{{ item.message }}</span>\n </li>\n </ul>\n </section>\n </TabsContent>\n </ScrollArea>\n </Tabs>\n </div>\n </SheetContent>\n </Sheet>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"DebugPanel.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Sheet","_withCtx","_createVNode","SheetTrigger","Button","_unref","SheetContent","_createElementVNode","SheetHeader","SheetTitle","_createTextVNode","_toDisplayString","SheetDescription","Tabs","TabsList","TabsTrigger","_createElementBlock","_createCommentVNode","ScrollArea","TabsContent","_Fragment","_renderList","DebugTreeNode","DebugFormState","Collapsible","CollapsibleTrigger","Badge","CollapsibleContent","Badge_default","Button_default","Sheet_default","SheetContent_default","SheetDescription_default","SheetHeader_default","SheetTitle_default","SheetTrigger_default","Tabs_default","TabsContent_default","TabsList_default","TabsTrigger_default","Collapsible_default","CollapsibleContent_default","CollapsibleTrigger_default","ScrollArea_default","DebugFormState_default","DebugTreeNode_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","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","DebugPanel_vue_vue_type_script_setup_true_lang_default","t","useT","props","useAlfakitProps","direction","useDirection","debug","computed","state","useStore","debugRecorder","payloadBytes","byteLength","json","value","pathOf","parsed","url","forms","openBlock","createBlock","withCtx","createVNode","unref","BugIcon","createElementVNode","createTextVNode","toDisplayString","createElementBlock","createCommentVNode","Fragment","renderList","node","index","_cache","request","ChevronRightIcon","formatBytes","closure","item"],"sources":["../../../src/components/panel/DebugPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { FormStore } from '@alfakit/core'\nimport { byteLength, debugRecorder, formatBytes } from '@alfakit/core'\nimport { BugIcon, ChevronRightIcon } from '@lucide/vue'\nimport { computed } from 'vue'\nimport { useStore } from '../../composables/use-store'\nimport { useAlfakitProps, useDirection, useT } from '../../context'\nimport Badge from '../ui/Badge.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 ScrollArea from '../ui/ScrollArea.vue'\nimport Sheet from '../ui/Sheet.vue'\nimport SheetContent from '../ui/SheetContent.vue'\nimport SheetDescription from '../ui/SheetDescription.vue'\nimport SheetHeader from '../ui/SheetHeader.vue'\nimport SheetTitle from '../ui/SheetTitle.vue'\nimport SheetTrigger from '../ui/SheetTrigger.vue'\nimport Tabs from '../ui/Tabs.vue'\nimport TabsContent from '../ui/TabsContent.vue'\nimport TabsList from '../ui/TabsList.vue'\nimport TabsTrigger from '../ui/TabsTrigger.vue'\nimport DebugFormState from './DebugFormState.vue'\nimport DebugTreeNode from './DebugTreeNode.vue'\n\n/**\n * The developer debug panel: a top bar toggle that opens a drawer with the page's resolved\n * schema tree (visibility and authorisation per component, closures evaluated), the live\n * form state, the internal requests captured by `requestJson()` and timings. Rendered only\n * when the page carries the `alfakitDebug` prop, which PHP adds while `Panel::debugPanel()`\n * is active and `app.debug` is on. Replace it with `components: { 'panel:debug-panel': … }`.\n */\nconst t = useT()\nconst props = useAlfakitProps()\nconst direction = useDirection()\nconst debug = computed(() => props.value.alfakitDebug)\nconst state = useStore(debugRecorder.store)\nconst payloadBytes = computed(() => byteLength(props.value))\n\nconst json = (value: unknown): string => {\n try {\n return typeof value === 'string' ? value : JSON.stringify(value, null, 2)\n } catch {\n return String(value)\n }\n}\n\nconst pathOf = (url: string): string => {\n try {\n const parsed = new URL(url, 'http://localhost')\n\n return parsed.pathname + parsed.search\n } catch {\n return url\n }\n}\n\nconst forms = computed(() => state.value.forms as FormStore[])\n</script>\n\n<template>\n <Sheet v-if=\"debug\">\n <SheetTrigger as-child>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n :aria-label=\"t('debug.open', {}, 'Open debug panel')\"\n data-slot=\"debug-toggle\"\n >\n <BugIcon />\n </Button>\n </SheetTrigger>\n <SheetContent\n :side=\"direction === 'rtl' ? 'left' : 'right'\"\n class=\"flex w-full flex-col gap-0 p-0 sm:max-w-xl\"\n >\n <div data-slot=\"debug-panel\" class=\"flex min-h-0 flex-1 flex-col\">\n <SheetHeader class=\"border-b\">\n <SheetTitle class=\"flex items-center gap-2\">\n <BugIcon class=\"size-4\" />\n {{ t('debug.title', {}, 'Debug') }}\n </SheetTitle>\n <SheetDescription class=\"truncate font-mono text-xs\" :title=\"debug.page\">\n {{ debug.page }}\n </SheetDescription>\n </SheetHeader>\n <Tabs default-value=\"schema\" class=\"flex min-h-0 flex-1 flex-col gap-0\">\n <TabsList class=\"mx-4 mt-3 grid w-auto grid-cols-4\">\n <TabsTrigger value=\"schema\">{{ t('debug.schema', {}, 'Schema') }}</TabsTrigger>\n <TabsTrigger value=\"form\">\n {{ t('debug.form', {}, 'Form') }}\n <span\n v-if=\"forms.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ forms.length }}</span\n >\n </TabsTrigger>\n <TabsTrigger value=\"requests\">\n {{ t('debug.requests', {}, 'Requests') }}\n <span\n v-if=\"state.requests.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ state.requests.length }}</span\n >\n </TabsTrigger>\n <TabsTrigger value=\"timings\">{{ t('debug.timings', {}, 'Timings') }}</TabsTrigger>\n </TabsList>\n <ScrollArea class=\"min-h-0 flex-1\">\n <TabsContent value=\"schema\" class=\"p-4 text-sm\">\n <p v-if=\"debug.tree.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_tree', {}, 'The server sent no schema tree for this page.') }}\n </p>\n <ul v-else class=\"space-y-0.5 font-mono text-xs\">\n <DebugTreeNode\n v-for=\"(node, index) in debug.tree\"\n :key=\"`${node.key ?? node.type}-${index}`\"\n :node=\"node\"\n :depth=\"0\"\n />\n </ul>\n </TabsContent>\n <TabsContent value=\"form\" class=\"space-y-4 p-4 text-sm\">\n <p v-if=\"forms.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_forms', {}, 'No forms on this page.') }}\n </p>\n <DebugFormState v-for=\"(form, index) in forms\" :key=\"index\" :form=\"form\" />\n </TabsContent>\n <TabsContent value=\"requests\" class=\"space-y-2 p-4 text-sm\">\n <p v-if=\"state.requests.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_requests', {}, 'No internal requests yet.') }}\n </p>\n <template v-else>\n <div class=\"flex justify-end\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n @click=\"debugRecorder.clearRequests()\"\n >\n {{ t('debug.clear', {}, 'Clear') }}\n </Button>\n </div>\n <Collapsible\n v-for=\"request in state.requests\"\n :key=\"request.id\"\n class=\"rounded-md border\"\n >\n <CollapsibleTrigger\n class=\"flex w-full items-center gap-2 px-3 py-2 text-start [&[data-state=open]>svg]:rotate-90\"\n >\n <ChevronRightIcon\n class=\"text-muted-foreground size-3.5 shrink-0 transition-transform rtl:rotate-180\"\n />\n <span class=\"font-mono text-xs font-semibold\">{{ request.method }}</span>\n <span class=\"min-w-0 flex-1 truncate font-mono text-xs\" :title=\"request.url\">{{\n pathOf(request.url)\n }}</span>\n <Badge\n :variant=\"\n request.status === 0 || request.status >= 400 ? 'destructive' : 'secondary'\n \"\n class=\"font-mono\"\n >{{\n request.status === 0 ? t('debug.failed', {}, 'failed') : request.status\n }}</Badge\n >\n <span class=\"text-muted-foreground font-mono text-xs tabular-nums\"\n >{{ request.duration }} ms</span\n >\n </CollapsibleTrigger>\n <CollapsibleContent class=\"space-y-2 border-t px-3 py-2\">\n <dl\n class=\"text-muted-foreground grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs\"\n >\n <dt>{{ t('debug.duration', {}, 'Duration') }}</dt>\n <dd class=\"font-mono tabular-nums\">\n {{ request.duration }} ms\n <template v-if=\"request.serverDuration !== null\">\n ({{ t('debug.server_time', {}, 'Server time') }}:\n {{ request.serverDuration }} ms)\n </template>\n </dd>\n <dt>{{ t('debug.size', {}, 'Size') }}</dt>\n <dd class=\"font-mono tabular-nums\">\n ↑ {{ formatBytes(request.requestBytes) }} · ↓\n {{ formatBytes(request.responseBytes) }}\n </dd>\n </dl>\n <pre\n v-if=\"request.request !== undefined && request.request !== null\"\n dir=\"ltr\"\n class=\"bg-muted/50 max-h-72 overflow-auto rounded-md p-2 text-start font-mono text-xs leading-relaxed\"\n >{{ json(request.request) }}</pre>\n <pre\n dir=\"ltr\"\n class=\"bg-muted/50 max-h-72 overflow-auto rounded-md p-2 text-start font-mono text-xs leading-relaxed\"\n >{{ json(request.response) }}</pre>\n </CollapsibleContent>\n </Collapsible>\n </template>\n </TabsContent>\n <TabsContent value=\"timings\" class=\"space-y-4 p-4 text-sm\">\n <dl class=\"grid grid-cols-2 gap-3\">\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.server_time', {}, 'Server time') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ debug.server.duration }} ms\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.queries', {}, 'Queries') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ debug.server.queries }} · {{ debug.server.queryTime }} ms\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.memory', {}, 'Peak memory') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ formatBytes(debug.server.memory) }}\n </dd>\n </div>\n <div class=\"rounded-md border p-3\">\n <dt class=\"text-muted-foreground text-xs\">\n {{ t('debug.payload', {}, 'Page payload') }}\n </dt>\n <dd class=\"font-mono text-sm font-semibold tabular-nums\">\n {{ formatBytes(payloadBytes) }}\n </dd>\n </div>\n </dl>\n <p class=\"text-muted-foreground font-mono text-xs\">\n PHP {{ debug.server.php }} · Laravel {{ debug.server.laravel }}\n </p>\n <section>\n <h3 class=\"mb-2 text-sm font-medium\">\n {{ t('debug.closures', {}, 'Closures evaluated') }}\n <span\n v-if=\"debug.closures.length > 0\"\n class=\"bg-muted text-muted-foreground ms-1.5 rounded-full px-1.5 font-mono text-[10px] tabular-nums\"\n >{{ debug.closures.length }}</span\n >\n </h3>\n <p v-if=\"debug.closures.length === 0\" class=\"text-muted-foreground text-sm\">\n {{ t('debug.no_closures', {}, 'No closures were evaluated.') }}\n </p>\n <ul v-else class=\"divide-y rounded-md border font-mono text-xs\">\n <li\n v-for=\"(closure, index) in debug.closures\"\n :key=\"index\"\n class=\"flex items-center gap-2 px-3 py-1.5\"\n >\n <span class=\"font-semibold\">{{ closure.owner }}</span>\n <span\n class=\"text-muted-foreground min-w-0 flex-1 truncate\"\n :title=\"closure.file\"\n >{{ closure.file }}:{{ closure.line }}</span\n >\n <Badge v-if=\"closure.count > 1\" variant=\"secondary\">{{\n t('debug.times', { count: closure.count }, '×:count')\n }}</Badge>\n </li>\n </ul>\n </section>\n <section v-if=\"(debug.deprecations ?? []).length > 0\">\n <h3 class=\"mb-2 text-sm font-medium\">\n {{ t('debug.deprecations', {}, 'Deprecations') }}\n <span class=\"bg-muted ms-1 rounded px-1.5 py-0.5 font-mono text-xs\">{{\n debug.deprecations?.length\n }}</span>\n </h3>\n <ul class=\"divide-y rounded-md border text-xs\">\n <li\n v-for=\"item in debug.deprecations\"\n :key=\"item.subject\"\n class=\"flex flex-col gap-0.5 px-3 py-1.5\"\n >\n <span class=\"font-mono font-semibold\"\n >{{ item.subject\n }}<span v-if=\"item.since\" class=\"text-muted-foreground font-normal\">\n · {{ item.since }}</span\n ></span\n >\n <span class=\"text-muted-foreground\">{{ item.message }}</span>\n </li>\n </ul>\n </section>\n </TabsContent>\n </ScrollArea>\n </Tabs>\n </div>\n </SheetContent>\n </Sheet>\n</template>\n"],"mappings":"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"}