@alfakit/vue 0.1.1 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/AlfakitRoot.js.map +1 -1
  3. package/dist/AlfakitRoot.vue.d.ts.map +1 -1
  4. package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js +3 -1
  5. package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/actions/ActionButton.js.map +1 -1
  7. package/dist/components/actions/ActionButton.vue.d.ts.map +1 -1
  8. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js +160 -159
  9. package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  10. package/dist/components/actions/ActionGroupMenu.js.map +1 -1
  11. package/dist/components/actions/ActionGroupMenu.vue.d.ts.map +1 -1
  12. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js +69 -65
  13. package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/actions/ActionModal.js.map +1 -1
  15. package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
  16. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +221 -219
  17. package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/ai/AiCopilot.js.map +1 -1
  19. package/dist/components/ai/AiCopilot.vue.d.ts +2 -0
  20. package/dist/components/ai/AiCopilot.vue.d.ts.map +1 -1
  21. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js +7 -2
  22. package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js +19 -19
  24. package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/cms/LivePreview.js.map +1 -1
  26. package/dist/components/cms/LivePreview.vue.d.ts.map +1 -1
  27. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js +83 -83
  28. package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/fields/BuilderField.js.map +1 -1
  30. package/dist/components/fields/BuilderField.vue.d.ts.map +1 -1
  31. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js +162 -157
  32. package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/fields/ColorPickerField.js.map +1 -1
  34. package/dist/components/fields/ColorPickerField.vue.d.ts.map +1 -1
  35. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js +1 -0
  36. package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/fields/ComboboxSelect.js.map +1 -1
  38. package/dist/components/fields/ComboboxSelect.vue.d.ts.map +1 -1
  39. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js +1 -1
  40. package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/fields/FileUploadField.js.map +1 -1
  42. package/dist/components/fields/FileUploadField.vue.d.ts.map +1 -1
  43. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js +183 -183
  44. package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/fields/ImageEditorDialog.js.map +1 -1
  46. package/dist/components/fields/ImageEditorDialog.vue.d.ts.map +1 -1
  47. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js +46 -46
  48. package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/fields/KeyValueField.js.map +1 -1
  50. package/dist/components/fields/KeyValueField.vue.d.ts.map +1 -1
  51. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js +66 -66
  52. package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/components/fields/ModalTablePicker.js.map +1 -1
  54. package/dist/components/fields/ModalTablePicker.vue.d.ts.map +1 -1
  55. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js +113 -113
  56. package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/fields/OneTimeCodeInputField.js.map +1 -1
  58. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js +1 -2
  59. package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/fields/RepeaterField.js.map +1 -1
  61. package/dist/components/fields/RepeaterField.vue.d.ts.map +1 -1
  62. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js +12 -12
  63. package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  64. package/dist/components/fields/RichEditorInput.js.map +1 -1
  65. package/dist/components/fields/RichEditorInput.vue.d.ts.map +1 -1
  66. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js +166 -165
  67. package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  68. package/dist/components/fields/SelectField.js.map +1 -1
  69. package/dist/components/fields/SelectField.vue.d.ts.map +1 -1
  70. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js +2 -2
  71. package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/fields/SliderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/fields/TableColumnHeaders.js.map +1 -1
  74. package/dist/components/fields/TableColumnHeaders.vue.d.ts.map +1 -1
  75. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js +6 -3
  76. package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/fields/item-actions.d.ts +2 -2
  78. package/dist/components/fields/item-actions.d.ts.map +1 -1
  79. package/dist/components/fields/item-actions.js +31 -31
  80. package/dist/components/fields/item-actions.js.map +1 -1
  81. package/dist/components/file-manager/FileManagerView.js.map +1 -1
  82. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  83. package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/form/FormBlock.js.map +1 -1
  85. package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
  86. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +81 -77
  87. package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/form/form-context.js +25 -25
  89. package/dist/components/form/form-context.js.map +1 -1
  90. package/dist/components/kanban/KanbanBoard.js.map +1 -1
  91. package/dist/components/kanban/KanbanBoard.vue.d.ts.map +1 -1
  92. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js +5 -2
  93. package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/components/kanban/KanbanColumnHeader.js.map +1 -1
  95. package/dist/components/kanban/KanbanColumnHeader.vue.d.ts.map +1 -1
  96. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js +64 -64
  97. package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/layout/FusedGroupComponent.js.map +1 -1
  99. package/dist/components/layout/FusedGroupComponent.vue.d.ts.map +1 -1
  100. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js +1 -0
  101. package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/layout/SectionComponent.js.map +1 -1
  103. package/dist/components/layout/SectionComponent.vue.d.ts.map +1 -1
  104. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js +23 -23
  105. package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/layout/TabsComponent.js.map +1 -1
  107. package/dist/components/layout/TabsComponent.vue.d.ts.map +1 -1
  108. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js +76 -55
  109. package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/components/notifications/NotificationsMenu.js.map +1 -1
  111. package/dist/components/notifications/NotificationsMenu.vue.d.ts.map +1 -1
  112. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js +44 -42
  113. package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js +8 -8
  115. package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/panel/GlobalSearch.js.map +1 -1
  117. package/dist/components/panel/GlobalSearch.vue.d.ts.map +1 -1
  118. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js +1 -0
  119. package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/panel/GlobalSearchPalette.js.map +1 -1
  121. package/dist/components/panel/GlobalSearchPalette.vue.d.ts.map +1 -1
  122. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js +102 -96
  123. package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js +10 -10
  125. package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js +9 -9
  127. package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js +16 -16
  129. package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js +10 -10
  131. package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/panel/ShortcutKeys.js.map +1 -1
  133. package/dist/components/panel/ShortcutKeys.vue.d.ts.map +1 -1
  134. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js +4 -1
  135. package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/panel/TenantMenu.js.map +1 -1
  137. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +37 -37
  138. package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  139. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js +11 -11
  140. package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/realtime/use-live-updates.d.ts.map +1 -1
  142. package/dist/components/realtime/use-live-updates.js +24 -23
  143. package/dist/components/realtime/use-live-updates.js.map +1 -1
  144. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js +2 -1
  145. package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/table/ColumnHeader.js.map +1 -1
  147. package/dist/components/table/ColumnHeader.vue.d.ts.map +1 -1
  148. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js +55 -49
  149. package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/components/table/ColumnManager.js.map +1 -1
  151. package/dist/components/table/ColumnManager.vue.d.ts.map +1 -1
  152. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js +5 -4
  153. package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js.map +1 -1
  154. package/dist/components/table/ContentLayoutSort.js.map +1 -1
  155. package/dist/components/table/ContentLayoutSort.vue.d.ts.map +1 -1
  156. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js +5 -5
  157. package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/table/GroupHeaderRow.js.map +1 -1
  159. package/dist/components/table/GroupHeaderRow.vue.d.ts.map +1 -1
  160. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js +55 -34
  161. package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/table/SelectCell.js.map +1 -1
  163. package/dist/components/table/SelectCell.vue.d.ts.map +1 -1
  164. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +26 -20
  165. package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  166. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js +2 -1
  167. package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/components/table/TableCellContent.js.map +1 -1
  169. package/dist/components/table/TableCellContent.vue.d.ts.map +1 -1
  170. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js +4 -3
  171. package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  172. package/dist/components/table/TablePagination.js.map +1 -1
  173. package/dist/components/table/TablePagination.vue.d.ts.map +1 -1
  174. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js +87 -87
  175. package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  176. package/dist/components/table/TextInputCell.js.map +1 -1
  177. package/dist/components/table/TextInputCell.vue.d.ts.map +1 -1
  178. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +40 -34
  179. package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/components/table/cell-update.d.ts +6 -0
  181. package/dist/components/table/cell-update.d.ts.map +1 -1
  182. package/dist/components/table/cell-update.js.map +1 -1
  183. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
  184. package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  185. package/dist/components/ui/CommandAutoHighlight.js +7 -0
  186. package/dist/components/ui/CommandAutoHighlight.js.map +1 -0
  187. package/dist/components/ui/CommandAutoHighlight.vue.d.ts +21 -0
  188. package/dist/components/ui/CommandAutoHighlight.vue.d.ts.map +1 -0
  189. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js +18 -0
  190. package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -0
  191. package/dist/components/ui/DialogContent.js.map +1 -1
  192. package/dist/components/ui/DialogContent.vue.d.ts.map +1 -1
  193. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js +13 -12
  194. package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/components/ui/PopoverContent.js.map +1 -1
  196. package/dist/components/ui/PopoverContent.vue.d.ts.map +1 -1
  197. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js +9 -8
  198. package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/components/ui/SheetContent.js.map +1 -1
  200. package/dist/components/ui/SheetContent.vue.d.ts.map +1 -1
  201. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js +13 -12
  202. package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  203. package/dist/components/ui/TooltipContent.js.map +1 -1
  204. package/dist/components/ui/TooltipContent.vue.d.ts.map +1 -1
  205. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js +9 -8
  206. package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components.css +347 -0
  208. package/dist/context.d.ts +7 -0
  209. package/dist/context.d.ts.map +1 -1
  210. package/dist/context.js +29 -26
  211. package/dist/context.js.map +1 -1
  212. package/dist/create-alfakit.d.ts.map +1 -1
  213. package/dist/create-alfakit.js +33 -31
  214. package/dist/create-alfakit.js.map +1 -1
  215. package/dist/eject-manifest.json +11 -2
  216. package/dist/index.d.ts +1 -0
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +219 -217
  219. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  220. package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  221. package/dist/layouts/AuthLayout.vue_vue_type_script_setup_true_lang.js +9 -9
  222. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js +8 -8
  223. package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  224. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js +15 -15
  225. package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/layouts/lazy-layouts.d.ts +10 -0
  227. package/dist/layouts/lazy-layouts.d.ts.map +1 -0
  228. package/dist/layouts/lazy-layouts.js +8 -0
  229. package/dist/layouts/lazy-layouts.js.map +1 -0
  230. package/dist/layouts/panel-layouts.d.ts +8 -0
  231. package/dist/layouts/panel-layouts.d.ts.map +1 -0
  232. package/dist/layouts/panel-layouts.js +15 -0
  233. package/dist/layouts/panel-layouts.js.map +1 -0
  234. package/dist/lib/lazy.d.ts.map +1 -1
  235. package/dist/lib/lazy.js +2 -2
  236. package/dist/lib/lazy.js.map +1 -1
  237. package/dist/pages/PageShell.js.map +1 -1
  238. package/dist/pages/PageShell.vue.d.ts.map +1 -1
  239. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js +39 -42
  240. package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/standalone/AlfakitComponent.js.map +1 -1
  242. package/dist/standalone/AlfakitComponent.vue.d.ts.map +1 -1
  243. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js +56 -52
  244. package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  245. package/dist/standalone/AlfakitToaster.js.map +1 -1
  246. package/dist/standalone/AlfakitToaster.vue.d.ts.map +1 -1
  247. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js +23 -15
  248. package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
  249. package/dist/standalone.css +54 -0
  250. package/dist/starter-kit/AlfakitStarterKitRoot.js.map +1 -1
  251. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts +2 -2
  252. package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts.map +1 -1
  253. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js +17 -12
  254. package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
  255. package/dist/starter-kit/dashboard-widgets.d.ts +54 -0
  256. package/dist/starter-kit/dashboard-widgets.d.ts.map +1 -0
  257. package/dist/starter-kit/dashboard-widgets.js +54 -0
  258. package/dist/starter-kit/dashboard-widgets.js.map +1 -0
  259. package/dist/starter-kit/index.d.ts +2 -1
  260. package/dist/starter-kit/index.d.ts.map +1 -1
  261. package/dist/starter-kit/index.js +5 -4
  262. package/dist/starter-kit/runtime.d.ts +6 -0
  263. package/dist/starter-kit/runtime.d.ts.map +1 -1
  264. package/dist/starter-kit/runtime.js +19 -15
  265. package/dist/starter-kit/runtime.js.map +1 -1
  266. package/dist/starter-kit/starter-kit.d.ts.map +1 -1
  267. package/dist/starter-kit/starter-kit.js +8 -8
  268. package/dist/starter-kit/starter-kit.js.map +1 -1
  269. package/dist/starter-kit/widgets/CopilotTrigger.js +7 -0
  270. package/dist/starter-kit/widgets/CopilotTrigger.js.map +1 -0
  271. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts +12 -0
  272. package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts.map +1 -0
  273. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js +23 -0
  274. package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  275. package/dist/starter-kit/widgets/LoadedCopilot.js +7 -0
  276. package/dist/starter-kit/widgets/LoadedCopilot.js.map +1 -0
  277. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts +8 -0
  278. package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts.map +1 -0
  279. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js +31 -0
  280. package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -0
  281. package/dist/starter-kit/widgets/SearchTrigger.js.map +1 -1
  282. package/dist/starter-kit/widgets/SearchTrigger.vue.d.ts.map +1 -1
  283. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
  284. package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  285. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js +7 -0
  286. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js.map +1 -0
  287. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts +8 -0
  288. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts.map +1 -0
  289. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js +34 -0
  290. package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js.map +1 -0
  291. package/dist/starter-kit/widgets/TenantChooser.js.map +1 -1
  292. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js +1 -1
  293. package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js.map +1 -1
  294. package/dist/starter-kit/widgets/index.d.ts +40 -9
  295. package/dist/starter-kit/widgets/index.d.ts.map +1 -1
  296. package/dist/starter-kit/widgets/index.js +21 -18
  297. package/dist/starter-kit/widgets/index.js.map +1 -1
  298. package/dist/starter-kit/widgets/loaded.d.ts +10 -0
  299. package/dist/starter-kit/widgets/loaded.d.ts.map +1 -0
  300. package/dist/starter-kit/widgets/loaded.js +5 -0
  301. package/dist/styles.css +9 -2
  302. package/dist/themes.css +8 -335
  303. package/package.json +3 -3
  304. package/src/AlfakitRoot.vue +9 -1
  305. package/src/components/actions/ActionButton.vue +14 -6
  306. package/src/components/actions/ActionGroupMenu.vue +13 -1
  307. package/src/components/actions/ActionModal.vue +12 -1
  308. package/src/components/ai/AiCopilot.vue +7 -1
  309. package/src/components/cms/LivePreview.vue +8 -2
  310. package/src/components/fields/BuilderField.vue +15 -2
  311. package/src/components/fields/ColorPickerField.vue +1 -0
  312. package/src/components/fields/ComboboxSelect.vue +1 -1
  313. package/src/components/fields/FileUploadField.vue +14 -11
  314. package/src/components/fields/ImageEditorDialog.vue +7 -3
  315. package/src/components/fields/KeyValueField.vue +3 -2
  316. package/src/components/fields/ModalTablePicker.vue +7 -2
  317. package/src/components/fields/OneTimeCodeInputField.vue +1 -1
  318. package/src/components/fields/RepeaterField.vue +2 -3
  319. package/src/components/fields/RichEditorInput.vue +3 -0
  320. package/src/components/fields/SelectField.vue +4 -2
  321. package/src/components/fields/TableColumnHeaders.vue +6 -1
  322. package/src/components/fields/item-actions.ts +31 -10
  323. package/src/components/file-manager/FileManagerView.vue +1 -1
  324. package/src/components/form/FormBlock.vue +26 -1
  325. package/src/components/form/form-context.ts +3 -3
  326. package/src/components/kanban/KanbanBoard.vue +15 -3
  327. package/src/components/kanban/KanbanColumnHeader.vue +6 -4
  328. package/src/components/layout/FusedGroupComponent.vue +1 -0
  329. package/src/components/layout/SectionComponent.vue +10 -4
  330. package/src/components/layout/TabsComponent.vue +61 -5
  331. package/src/components/notifications/NotificationsMenu.vue +11 -0
  332. package/src/components/panel/GlobalSearch.vue +1 -0
  333. package/src/components/panel/GlobalSearchPalette.vue +2 -0
  334. package/src/components/panel/ShortcutKeys.vue +1 -0
  335. package/src/components/panel/TenantMenu.vue +2 -2
  336. package/src/components/realtime/use-live-updates.ts +3 -1
  337. package/src/components/table/ColumnHeader.vue +23 -12
  338. package/src/components/table/ColumnManager.vue +12 -8
  339. package/src/components/table/ContentLayoutSort.vue +7 -1
  340. package/src/components/table/GroupHeaderRow.vue +27 -0
  341. package/src/components/table/SelectCell.vue +5 -2
  342. package/src/components/table/TableCellContent.vue +4 -2
  343. package/src/components/table/TablePagination.vue +12 -7
  344. package/src/components/table/TextInputCell.vue +11 -5
  345. package/src/components/table/cell-update.ts +6 -0
  346. package/src/components/ui/CommandAutoHighlight.vue +27 -0
  347. package/src/components/ui/DialogContent.vue +5 -1
  348. package/src/components/ui/PopoverContent.vue +5 -1
  349. package/src/components/ui/SheetContent.vue +5 -1
  350. package/src/components/ui/TooltipContent.vue +5 -1
  351. package/src/context.ts +10 -0
  352. package/src/create-alfakit.ts +5 -0
  353. package/src/index.ts +2 -0
  354. package/src/layouts/lazy-layouts.ts +14 -0
  355. package/src/layouts/panel-layouts.ts +17 -0
  356. package/src/lib/lazy.ts +11 -1
  357. package/src/pages/PageShell.vue +5 -6
  358. package/src/standalone/AlfakitComponent.vue +17 -6
  359. package/src/standalone/AlfakitToaster.vue +12 -2
  360. package/src/starter-kit/AlfakitStarterKitRoot.vue +12 -3
  361. package/src/starter-kit/dashboard-widgets.ts +93 -0
  362. package/src/starter-kit/index.ts +7 -1
  363. package/src/starter-kit/runtime.ts +17 -1
  364. package/src/starter-kit/starter-kit.ts +2 -1
  365. package/src/starter-kit/widgets/CopilotTrigger.vue +58 -0
  366. package/src/starter-kit/widgets/LoadedCopilot.vue +29 -0
  367. package/src/starter-kit/widgets/SearchTrigger.vue +1 -0
  368. package/src/starter-kit/widgets/StarterKitImpersonationBanner.vue +57 -0
  369. package/src/starter-kit/widgets/TenantChooser.vue +1 -1
  370. package/src/starter-kit/widgets/index.ts +56 -11
  371. package/src/starter-kit/widgets/loaded.ts +9 -0
  372. package/src/styles.css +9 -2
@@ -1 +1 @@
1
- {"version":3,"file":"PageShell.vue_vue_type_script_setup_true_lang.js","names":["AuthLayout","BlankLayout","FullscreenLayout","AppLayout","ConflictBanner","_openBlock","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","_createVNode","KeyboardShortcuts","Slot","PageHeader","_createCommentVNode","SubNavigationLayout","Slot_default","KeyboardShortcuts_default","AppLayout_default","AuthLayout_default","BlankLayout_default","FullscreenLayout_default","SubNavigationLayout_default","ConflictBanner_default","PageHeader_default","PageShell_vue_vue_type_script_setup_true_lang_default","props","__props","registry","useRegistry","Auth","computed","Blank","Fullscreen","App","Conflicts","undoBodyAttributes","watch","applyBodyAttributes","onBeforeUnmount","openBlock","createBlock","resolveDynamicComponent","withCtx","renderSlot","_ctx","createVNode","createCommentVNode"],"sources":["../../src/pages/PageShell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageSchema } from '@alfakit/core'\nimport { applyBodyAttributes } from '@alfakit/core'\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport KeyboardShortcuts from '../components/panel/KeyboardShortcuts.vue'\nimport Slot from '../components/panel/Slot.vue'\nimport { useRegistry } from '../context'\nimport AppLayout from '../layouts/AppLayout.vue'\nimport AuthLayout from '../layouts/AuthLayout.vue'\nimport BlankLayout from '../layouts/BlankLayout.vue'\nimport FullscreenLayout from '../layouts/FullscreenLayout.vue'\nimport SubNavigationLayout from '../components/panel/SubNavigationLayout.vue'\nimport ConflictBanner from '../components/realtime/ConflictBanner.vue'\nimport PageHeader from './PageHeader.vue'\n\nconst props = defineProps<{ page: PageSchema }>()\nconst registry = useRegistry()\n\n// Each layout can be replaced: createAlfakit({ components: { 'layout:app': MyLayout } }).\nconst Auth = computed(() => registry.resolve('layout:auth') ?? AuthLayout)\nconst Blank = computed(() => registry.resolve('layout:blank') ?? BlankLayout)\nconst Fullscreen = computed(() => registry.resolve('layout:fullscreen') ?? FullscreenLayout)\nconst App = computed(() => registry.resolve('layout:app') ?? AppLayout)\n// Edit pages: somebody else saved the record (`detectConflicts()`, `Panel::realtime()`).\nconst Conflicts = computed(() => registry.resolve('page:conflict-banner') ?? ConflictBanner)\n\n// The page's `$extraBodyAttributes` on `<body>` while it is open.\nlet undoBodyAttributes = () => {}\nwatch(\n () => JSON.stringify(props.page.extraBodyAttributes ?? null),\n () => {\n undoBodyAttributes()\n undoBodyAttributes = applyBodyAttributes(props.page.extraBodyAttributes)\n },\n { immediate: true },\n)\nonBeforeUnmount(() => undoBodyAttributes())\n</script>\n\n<template>\n <component\n :is=\"Auth\"\n v-if=\"props.page.layout === 'auth'\"\n :heading=\"props.page.heading ?? props.page.title\"\n :subheading=\"props.page.subheading\"\n :page=\"props.page\"\n >\n <slot />\n </component>\n <component :is=\"Blank\" v-else-if=\"props.page.layout === 'blank'\" :page=\"props.page\">\n <slot />\n </component>\n <component :is=\"Fullscreen\" v-else-if=\"props.page.layout === 'fullscreen'\" :page=\"props.page\">\n <slot />\n </component>\n <component\n :is=\"App\"\n v-else\n :breadcrumbs=\"props.page.breadcrumbs\"\n :max-content-width=\"props.page.maxContentWidth\"\n :page=\"props.page\"\n >\n <!-- `?` overlay, `/`, `g d` and panel command shortcuts (`keyboardShortcuts()`). -->\n <KeyboardShortcuts />\n <Slot name=\"page.start\" />\n <PageHeader :page=\"props.page\" />\n <component :is=\"Conflicts\" v-if=\"props.page.conflicts\" :page=\"props.page\" />\n <SubNavigationLayout v-if=\"props.page.subNavigation\" :navigation=\"props.page.subNavigation\">\n <slot />\n </SubNavigationLayout>\n <slot v-else />\n <Slot name=\"page.end\" />\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAeA,IAAM0B,IAAQC,GACRC,IAAWC,EAAY,GAGvBC,IAAOC,QAAeH,EAAS,QAAQ,aAAa,KAAK5B,CAAU,GACnEgC,IAAQD,QAAeH,EAAS,QAAQ,cAAc,KAAK3B,CAAW,GACtEgC,IAAaF,QAAeH,EAAS,QAAQ,mBAAmB,KAAK1B,CAAgB,GACrFgC,IAAMH,QAAeH,EAAS,QAAQ,YAAY,KAAKzB,CAAS,GAEhEgC,IAAYJ,QAAeH,EAAS,QAAQ,sBAAsB,KAAKxB,CAAc,GAGvFgC,UAA2B,CAAC;SAChCC,QACQ,KAAK,UAAUX,EAAM,KAAK,uBAAuB,IAAI,SACrD;GAEJ,AADAU,EAAmB,GACnB,IAAqBE,EAAoBZ,EAAM,KAAK,mBAAmB;EACzE,GACA,EAAE,WAAW,GAAK,CACpB,GACAa,QAAsBH,EAAmB,CAAC,aAMhCV,EAAM,KAAK,WAAM,UAFzBrB,EAAA,GAAAC,EAQYC,EAPLuB,EAAA,KAAI,GAAA;;GAER,SAASJ,EAAM,KAAK,WAAWA,EAAM,KAAK;GAC1C,YAAYA,EAAM,KAAK;GACvB,MAAMA,EAAM;;GAEb,SAAAlB,QAAQ,CAARC,EAAQoC,EAAA,QAAA,SAAA,CAAA,CAAA;;;;;;EAEwB,CAAA,KAAAnB,EAAM,KAAK,WAAM,WAAnDrB,EAAA,GAAAC,EAEYC,EAFIyB,EAAA,KAAK,GAAA;;GAA6C,MAAMN,EAAM;;GAC5E,SAAAlB,QAAQ,CAARC,EAAQoC,EAAA,QAAA,SAAA,CAAA,CAAA;;EAE6B,GAAA,GAAA,CAAA,MAAA,CAAA,KAAAnB,EAAM,KAAK,WAAM,gBAAxDrB,EAAA,GAAAC,EAEYC,EAFI0B,EAAA,KAAU,GAAA;;GAAkD,MAAMP,EAAM;;GACtF,SAAAlB,QAAQ,CAARC,EAAQoC,EAAA,QAAA,SAAA,CAAA,CAAA;;EAEVxC,GAAAA,GAAAA,CAAAA,MAAAA,CAAAA,MAAAA,EAAA,GAAAC,EAiBYC,EAhBL2B,EAAA,KAAG,GAAA;;GAEP,aAAaR,EAAM,KAAK;GACxB,qBAAmBA,EAAM,KAAK;GAC9B,MAAMA,EAAM;;GAGb,SAAAlB,QAAqB;IAArBE,EAAqBC,CAAA;IACrBD,EAA0BE,GAAA,EAApB,MAAK,aAAY,CAAA;IACvBF,EAAiCG,GAAA,EAApB,MAAMa,EAAM,KAAA,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA;IACQA,EAAM,KAAK,aAA5CrB,EAAA,GAAAC,EAA4EC,EAA5D4B,EAAA,KAAS,GAAA;;KAA+B,MAAMT,EAAM;;IACzCA,EAAM,KAAK,iBAAtCrB,EAAA,GAAAC,EAEsBS,GAAA;;KAFgC,YAAYW,EAAM,KAAK;;KAC3E,SAAAlB,QAAQ,CAARC,EAAQoC,EAAA,QAAA,SAAA,CAAA,CAAA;;IAEVpC,GAAAA,GAAAA,CAAAA,YAAAA,CAAAA,KAAAA,EAAeoC,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA;IACfnC,EAAwBE,GAAA,EAAlB,MAAK,WAAU,CAAA"}
1
+ {"version":3,"file":"PageShell.vue_vue_type_script_setup_true_lang.js","names":["BlankLayout","ConflictBanner","_openBlock","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","_createVNode","KeyboardShortcuts","Slot","PageHeader","_createCommentVNode","SubNavigationLayout","Slot_default","KeyboardShortcuts_default","BlankLayout_default","SubNavigationLayout_default","ConflictBanner_default","PageHeader_default","PageShell_vue_vue_type_script_setup_true_lang_default","props","__props","registry","useRegistry","Auth","computed","Blank","Fullscreen","App","Conflicts","undoBodyAttributes","watch","applyBodyAttributes","onBeforeUnmount","openBlock","createBlock","resolveDynamicComponent","withCtx","renderSlot","_ctx","createVNode","createCommentVNode"],"sources":["../../src/pages/PageShell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { PageSchema } from '@alfakit/core'\nimport { applyBodyAttributes } from '@alfakit/core'\nimport { computed, onBeforeUnmount, watch } from 'vue'\nimport KeyboardShortcuts from '../components/panel/KeyboardShortcuts.vue'\nimport Slot from '../components/panel/Slot.vue'\nimport { useRegistry } from '../context'\nimport BlankLayout from '../layouts/BlankLayout.vue'\nimport SubNavigationLayout from '../components/panel/SubNavigationLayout.vue'\nimport ConflictBanner from '../components/realtime/ConflictBanner.vue'\nimport PageHeader from './PageHeader.vue'\n\nconst props = defineProps<{ page: PageSchema }>()\nconst registry = useRegistry()\n\n// Each layout can be replaced: createAlfakit({ components: { 'layout:app': MyLayout } }).\n// `createAlfakit()` registers the panel's layouts (`panelLayouts`), the starter kit its content\n// layout; importing the panel layouts here would put the sidebar in every starter kit page.\nconst Auth = computed(() => registry.resolve('layout:auth') ?? BlankLayout)\nconst Blank = computed(() => registry.resolve('layout:blank') ?? BlankLayout)\nconst Fullscreen = computed(() => registry.resolve('layout:fullscreen') ?? BlankLayout)\nconst App = computed(() => registry.resolve('layout:app') ?? BlankLayout)\n// Edit pages: somebody else saved the record (`detectConflicts()`, `Panel::realtime()`).\nconst Conflicts = computed(() => registry.resolve('page:conflict-banner') ?? ConflictBanner)\n\n// The page's `$extraBodyAttributes` on `<body>` while it is open.\nlet undoBodyAttributes = () => {}\nwatch(\n () => JSON.stringify(props.page.extraBodyAttributes ?? null),\n () => {\n undoBodyAttributes()\n undoBodyAttributes = applyBodyAttributes(props.page.extraBodyAttributes)\n },\n { immediate: true },\n)\nonBeforeUnmount(() => undoBodyAttributes())\n</script>\n\n<template>\n <component\n :is=\"Auth\"\n v-if=\"props.page.layout === 'auth'\"\n :heading=\"props.page.heading ?? props.page.title\"\n :subheading=\"props.page.subheading\"\n :page=\"props.page\"\n >\n <slot />\n </component>\n <component :is=\"Blank\" v-else-if=\"props.page.layout === 'blank'\" :page=\"props.page\">\n <slot />\n </component>\n <component :is=\"Fullscreen\" v-else-if=\"props.page.layout === 'fullscreen'\" :page=\"props.page\">\n <slot />\n </component>\n <component\n :is=\"App\"\n v-else\n :breadcrumbs=\"props.page.breadcrumbs\"\n :max-content-width=\"props.page.maxContentWidth\"\n :page=\"props.page\"\n >\n <!-- `?` overlay, `/`, `g d` and panel command shortcuts (`keyboardShortcuts()`). -->\n <KeyboardShortcuts />\n <Slot name=\"page.start\" />\n <PageHeader :page=\"props.page\" />\n <component :is=\"Conflicts\" v-if=\"props.page.conflicts\" :page=\"props.page\" />\n <SubNavigationLayout v-if=\"props.page.subNavigation\" :navigation=\"props.page.subNavigation\">\n <slot />\n </SubNavigationLayout>\n <slot v-else />\n <Slot name=\"page.end\" />\n </component>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAYA,IAAMoB,IAAQC,GACRC,IAAWC,EAAY,GAKvBC,IAAOC,QAAeH,EAAS,QAAQ,aAAa,KAAKtB,CAAW,GACpE0B,IAAQD,QAAeH,EAAS,QAAQ,cAAc,KAAKtB,CAAW,GACtE2B,IAAaF,QAAeH,EAAS,QAAQ,mBAAmB,KAAKtB,CAAW,GAChF4B,IAAMH,QAAeH,EAAS,QAAQ,YAAY,KAAKtB,CAAW,GAElE6B,IAAYJ,QAAeH,EAAS,QAAQ,sBAAsB,KAAKrB,CAAc,GAGvF6B,UAA2B,CAAC;SAChCC,QACQ,KAAK,UAAUX,EAAM,KAAK,uBAAuB,IAAI,SACrD;GAEJ,AADAU,EAAmB,GACnB,IAAqBE,EAAoBZ,EAAM,KAAK,mBAAmB;EACzE,GACA,EAAE,WAAW,GAAK,CACpB,GACAa,QAAsBH,EAAmB,CAAC,aAMhCV,EAAM,KAAK,WAAM,UAFzBlB,EAAA,GAAAC,EAQYC,EAPLoB,EAAA,KAAI,GAAA;;GAER,SAASJ,EAAM,KAAK,WAAWA,EAAM,KAAK;GAC1C,YAAYA,EAAM,KAAK;GACvB,MAAMA,EAAM;;GAEb,SAAAf,QAAQ,CAARC,EAAQiC,EAAA,QAAA,SAAA,CAAA,CAAA;;;;;;EAEwB,CAAA,KAAAnB,EAAM,KAAK,WAAM,WAAnDlB,EAAA,GAAAC,EAEYC,EAFIsB,EAAA,KAAK,GAAA;;GAA6C,MAAMN,EAAM;;GAC5E,SAAAf,QAAQ,CAARC,EAAQiC,EAAA,QAAA,SAAA,CAAA,CAAA;;EAE6B,GAAA,GAAA,CAAA,MAAA,CAAA,KAAAnB,EAAM,KAAK,WAAM,gBAAxDlB,EAAA,GAAAC,EAEYC,EAFIuB,EAAA,KAAU,GAAA;;GAAkD,MAAMP,EAAM;;GACtF,SAAAf,QAAQ,CAARC,EAAQiC,EAAA,QAAA,SAAA,CAAA,CAAA;;EAEVrC,GAAAA,GAAAA,CAAAA,MAAAA,CAAAA,MAAAA,EAAA,GAAAC,EAiBYC,EAhBLwB,EAAA,KAAG,GAAA;;GAEP,aAAaR,EAAM,KAAK;GACxB,qBAAmBA,EAAM,KAAK;GAC9B,MAAMA,EAAM;;GAGb,SAAAf,QAAqB;IAArBE,EAAqBC,CAAA;IACrBD,EAA0BE,GAAA,EAApB,MAAK,aAAY,CAAA;IACvBF,EAAiCG,GAAA,EAApB,MAAMU,EAAM,KAAA,GAAA,MAAA,GAAA,CAAA,MAAA,CAAA;IACQA,EAAM,KAAK,aAA5ClB,EAAA,GAAAC,EAA4EC,EAA5DyB,EAAA,KAAS,GAAA;;KAA+B,MAAMT,EAAM;;IACzCA,EAAM,KAAK,iBAAtClB,EAAA,GAAAC,EAEsBS,GAAA;;KAFgC,YAAYQ,EAAM,KAAK;;KAC3E,SAAAf,QAAQ,CAARC,EAAQiC,EAAA,QAAA,SAAA,CAAA,CAAA;;IAEVjC,GAAAA,GAAAA,CAAAA,YAAAA,CAAAA,KAAAA,EAAeiC,EAAA,QAAA,WAAA,CAAA,GAAA,KAAA,GAAA,KAAA,GAAA,CAAA;IACfhC,EAAwBE,GAAA,EAAlB,MAAK,WAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitComponent.js","names":["_sfc_main","AlfakitComponent_vue_vue_type_script_setup_true_lang_default","AlfakitComponent_default"],"sources":["../../src/standalone/AlfakitComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n StandaloneComponentState,\n findStandalonePropName,\n registerStandaloneProp,\n standalonePanelSchema,\n type ContentBlock,\n type StandaloneComponentSchema,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { ConfigProvider } from 'reka-ui'\nimport { computed, onMounted, onScopeDispose, provide, ref, watch, type HTMLAttributes } from 'vue'\nimport { providePageActionContext } from '../components/actions/action-context'\nimport ActionList from '../components/actions/ActionList.vue'\nimport ActionModals from '../components/actions/ActionModals.vue'\nimport TooltipProvider from '../components/ui/TooltipProvider.vue'\nimport {\n ALFAKIT_KEY,\n provideStandalone,\n useOptionalAlfakit,\n type AlfakitContextValue,\n type AnyComponent,\n} from '../context'\nimport { cn } from '../lib/utils'\nimport ContentBlockRenderer from '../pages/ContentBlockRenderer.vue'\nimport AlfakitToaster from './AlfakitToaster.vue'\nimport {\n claimToaster,\n createStandaloneContext,\n createStandaloneRegistry,\n ensureStandaloneRuntime,\n hasToaster,\n} from './runtime'\n\n/**\n * Renders an Alfakit component outside a panel: a form, table, infolist, widgets or any mix\n * (`AlfaSix\\Alfakit\\Standalone\\*`) in any Inertia page of the application. Needs no\n * `createAlfakit()` and no panel layout: it provides its own translator, registry, action\n * runner and modals, and inherits the application's shadcn tokens.\n *\n * ```vue\n * <AlfakitComponent :component=\"orders\" class=\"max-w-4xl\" />\n * ```\n *\n * Slots: `header` (above the content blocks), `footer` (below), and the default slot to\n * render the blocks yourself: `<template #default=\"{ blocks }\">…<ContentBlockRenderer :block=\"…\" />`.\n */\nconst props = defineProps<{\n /** The payload: `ContactForm::make()` passed as an Inertia prop. */\n component: StandaloneComponentSchema\n /** Renderer overrides for this instance (`{ TextInput: MyInput }`), on top of `configureAlfakit()`. */\n components?: Record<string, AnyComponent>\n class?: HTMLAttributes['class']\n}>()\n\ndefineSlots<{\n header?: () => unknown\n footer?: () => unknown\n default?: (props: { blocks: ContentBlock[]; page: StandaloneComponentSchema }) => unknown\n}>()\n\nconst parent = useOptionalAlfakit()\nconst inertiaPage = usePage()\n\n// Lazy and polled schemas of this component, merged into the page it renders.\nconst version = ref(0)\nconst state = new StandaloneComponentState(props.component, () => version.value++)\nconst poll = (target: string, interval: string | number | null | undefined) =>\n state.poll(target, interval)\n\nconst context: AlfakitContextValue = parent\n ? { ...parent, registry: createStandaloneRegistry(props.components, parent.registry), poll }\n : createStandaloneContext(\n { action: props.component.endpoints.action, modal: props.component.endpoints.modal },\n props.components,\n poll,\n )\n\nprovide(ALFAKIT_KEY, context)\n\nconst panel = computed(() => standalonePanelSchema(props.component))\nconst page = computed(() => {\n void version.value\n state.setComponent(props.component)\n\n return state.page\n})\nconst direction = computed(() => props.component.localization?.direction ?? 'ltr')\nconst actionContext = computed(() => ({ token: props.component.token, component: 'page' }))\n\nprovideStandalone({ panel, page })\nprovidePageActionContext(actionContext.value)\n\n// Endpoints and strings follow the latest payload (they change per locale or path).\nwatch(\n () => props.component,\n (component) => {\n context.actions.setEndpoints({\n action: component.endpoints.action,\n modal: component.endpoints.modal,\n })\n\n // Inside `createAlfakit()` the panel feeds the shared translator; on a page without the\n // `alfakit` prop (the rest of the app) the component's own translations apply.\n if (!parent || !(inertiaPage.props as Record<string, unknown>).alfakit) {\n context.translator.setTranslations(component.translations ?? {})\n context.translator.setLocale(component.localization?.tag ?? 'en')\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\n// Toasts: use the layout's <AlfakitToaster /> when there is one, else the first component\n// on the page renders one (checked after every component mounted).\nconst ownsToaster = ref(false)\n\nonMounted(() => {\n ensureStandaloneRuntime()\n\n // Partial reloads (sorting, paging, inline edits) request this component's own prop.\n watch(\n () => findStandalonePropName(inertiaPage.props as Record<string, unknown>, props.component),\n (name, _old, onCleanup) => onCleanup(registerStandaloneProp(name ?? null)),\n { immediate: true },\n )\n\n watch(\n () => props.component.token,\n () => void state.loadLazy(),\n { immediate: true },\n )\n\n if (parent) return\n\n let release: (() => void) | null = null\n let cancelled = false\n\n queueMicrotask(() => {\n if (cancelled || hasToaster()) return\n\n release = claimToaster()\n ownsToaster.value = true\n })\n\n onScopeDispose(() => {\n cancelled = true\n release?.()\n })\n})\n</script>\n\n<template>\n <component\n :is=\"parent ? 'div' : ConfigProvider\"\n :dir=\"parent ? undefined : direction\"\n :class=\"parent ? 'contents' : undefined\"\n >\n <TooltipProvider :delay-duration=\"0\">\n <div\n data-slot=\"standalone\"\n :data-alfakit-component=\"props.component.class\"\n :dir=\"direction\"\n :class=\"cn('flex flex-col gap-6', props.class)\"\n >\n <header\n v-if=\"page.heading || page.headerActions?.length\"\n data-slot=\"page-header\"\n class=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\"\n >\n <div class=\"min-w-0\">\n <h2 v-if=\"page.heading\" class=\"text-xl font-semibold tracking-tight\">\n {{ page.heading }}\n </h2>\n <p v-if=\"page.subheading\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ page.subheading }}\n </p>\n </div>\n <ActionList\n v-if=\"page.headerActions && page.headerActions.length > 0\"\n :actions=\"page.headerActions\"\n :context=\"actionContext\"\n align=\"end\"\n class=\"max-w-full shrink-0\"\n />\n </header>\n <slot name=\"header\" />\n <slot :blocks=\"page.content\" :page=\"props.component\">\n <ContentBlockRenderer v-for=\"block in page.content\" :key=\"block.key\" :block=\"block\" />\n </slot>\n <slot name=\"footer\" />\n </div>\n <ActionModals />\n <AlfakitToaster v-if=\"ownsToaster\" claimed />\n </TooltipProvider>\n </component>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AlfakitComponent.js","names":["_sfc_main","AlfakitComponent_vue_vue_type_script_setup_true_lang_default","AlfakitComponent_default"],"sources":["../../src/standalone/AlfakitComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n StandaloneComponentState,\n findStandalonePropName,\n registerStandaloneProp,\n standalonePanelSchema,\n type ContentBlock,\n type StandaloneComponentSchema,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { ConfigProvider } from 'reka-ui'\nimport { computed, onMounted, onScopeDispose, provide, ref, watch, type HTMLAttributes } from 'vue'\nimport { providePageActionContext } from '../components/actions/action-context'\nimport ActionList from '../components/actions/ActionList.vue'\nimport ActionModals from '../components/actions/ActionModals.vue'\nimport TooltipProvider from '../components/ui/TooltipProvider.vue'\nimport {\n ALFAKIT_KEY,\n provideStandalone,\n useOptionalAlfakit,\n type AlfakitContextValue,\n type AnyComponent,\n} from '../context'\nimport { cn } from '../lib/utils'\nimport ContentBlockRenderer from '../pages/ContentBlockRenderer.vue'\nimport AlfakitToaster from './AlfakitToaster.vue'\nimport {\n claimToaster,\n createStandaloneContext,\n createStandaloneRegistry,\n ensureStandaloneRuntime,\n hasToaster,\n} from './runtime'\n\n/**\n * Renders an Alfakit component outside a panel: a form, table, infolist, widgets or any mix\n * (`AlfaSix\\Alfakit\\Standalone\\*`) in any Inertia page of the application. Needs no\n * `createAlfakit()` and no panel layout: it provides its own translator, registry, action\n * runner and modals, and inherits the application's shadcn tokens.\n *\n * ```vue\n * <AlfakitComponent :component=\"orders\" class=\"max-w-4xl\" />\n * ```\n *\n * Slots: `header` (above the content blocks), `footer` (below), and the default slot to\n * render the blocks yourself: `<template #default=\"{ blocks }\">…<ContentBlockRenderer :block=\"…\" />`.\n */\nconst props = defineProps<{\n /** The payload: `ContactForm::make()` passed as an Inertia prop. */\n component: StandaloneComponentSchema\n /** Renderer overrides for this instance (`{ TextInput: MyInput }`), on top of `configureAlfakit()`. */\n components?: Record<string, AnyComponent>\n class?: HTMLAttributes['class']\n}>()\n\ndefineSlots<{\n header?: () => unknown\n footer?: () => unknown\n default?: (props: { blocks: ContentBlock[]; page: StandaloneComponentSchema }) => unknown\n}>()\n\nconst parent = useOptionalAlfakit()\nconst inertiaPage = usePage()\n\n// Lazy and polled schemas of this component, merged into the page it renders.\nconst version = ref(0)\nconst state = new StandaloneComponentState(props.component, () => version.value++)\nconst poll = (target: string, interval: string | number | null | undefined) =>\n state.poll(target, interval)\nconst refresh = (targets: string[]) => state.refresh(targets)\n\nconst context: AlfakitContextValue = parent\n ? {\n ...parent,\n registry: createStandaloneRegistry(props.components, parent.registry),\n poll,\n refresh,\n }\n : {\n ...createStandaloneContext(\n { action: props.component.endpoints.action, modal: props.component.endpoints.modal },\n props.components,\n poll,\n ),\n refresh,\n }\n\nprovide(ALFAKIT_KEY, context)\n\nconst panel = computed(() => standalonePanelSchema(props.component))\nconst page = computed(() => {\n void version.value\n state.setComponent(props.component)\n\n return state.page\n})\nconst direction = computed(() => props.component.localization?.direction ?? 'ltr')\nconst actionContext = computed(() => ({ token: props.component.token, component: 'page' }))\n\nprovideStandalone({ panel, page })\nprovidePageActionContext(actionContext.value)\n\n// Endpoints and strings follow the latest payload (they change per locale or path).\nwatch(\n () => props.component,\n (component) => {\n context.actions.setEndpoints({\n action: component.endpoints.action,\n modal: component.endpoints.modal,\n })\n\n // Inside `createAlfakit()` the panel feeds the shared translator; on a page without the\n // `alfakit` prop (the rest of the app) the component's own translations apply.\n if (!parent || !(inertiaPage.props as Record<string, unknown>).alfakit) {\n context.translator.setTranslations(component.translations ?? {})\n context.translator.setLocale(component.localization?.tag ?? 'en')\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\n// Toasts: use the layout's <AlfakitToaster /> when there is one, else the first component\n// on the page renders one (checked after every component mounted).\nconst ownsToaster = ref(false)\n\nonMounted(() => {\n ensureStandaloneRuntime()\n\n // Partial reloads (sorting, paging, inline edits) request this component's own prop.\n watch(\n () => findStandalonePropName(inertiaPage.props as Record<string, unknown>, props.component),\n (name, _old, onCleanup) => onCleanup(registerStandaloneProp(name ?? null)),\n { immediate: true },\n )\n\n // The watcher runs before the new payload renders: hand it over, or the response would\n // count as stale and lazy widgets (a calendar after its action) keep their old schema.\n watch(\n () => props.component.token,\n () => void state.loadLazy(props.component),\n { immediate: true },\n )\n\n if (parent) return\n\n let release: (() => void) | null = null\n let cancelled = false\n\n queueMicrotask(() => {\n if (cancelled || hasToaster()) return\n\n release = claimToaster()\n ownsToaster.value = true\n })\n\n onScopeDispose(() => {\n cancelled = true\n release?.()\n })\n})\n</script>\n\n<template>\n <component\n :is=\"parent ? 'div' : ConfigProvider\"\n :dir=\"parent ? undefined : direction\"\n :class=\"parent ? 'contents' : undefined\"\n >\n <TooltipProvider :delay-duration=\"0\">\n <div\n data-slot=\"standalone\"\n :data-alfakit-component=\"props.component.class\"\n :dir=\"direction\"\n :class=\"cn('flex flex-col gap-6', props.class)\"\n >\n <header\n v-if=\"page.heading || page.headerActions?.length\"\n data-slot=\"page-header\"\n class=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\"\n >\n <div class=\"min-w-0\">\n <h2 v-if=\"page.heading\" class=\"text-xl font-semibold tracking-tight\">\n {{ page.heading }}\n </h2>\n <p v-if=\"page.subheading\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ page.subheading }}\n </p>\n </div>\n <ActionList\n v-if=\"page.headerActions && page.headerActions.length > 0\"\n :actions=\"page.headerActions\"\n :context=\"actionContext\"\n align=\"end\"\n class=\"max-w-full shrink-0\"\n />\n </header>\n <slot name=\"header\" />\n <slot :blocks=\"page.content\" :page=\"props.component\">\n <ContentBlockRenderer v-for=\"block in page.content\" :key=\"block.key\" :block=\"block\" />\n </slot>\n <slot name=\"footer\" />\n </div>\n <ActionModals />\n <AlfakitToaster v-if=\"ownsToaster\" claimed />\n </TooltipProvider>\n </component>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitComponent.vue.d.ts","sourceRoot":"","sources":["../../src/standalone/AlfakitComponent.vue"],"names":[],"mappings":"AAsMA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAA;AAGtB,OAAO,EAA4D,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAKnG,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAA;AAYnB;;;;;;;;;;;;GAYG;AACH,KAAK,WAAW,GAAG;IACjB,oEAAoE;IACpE,SAAS,EAAE,yBAAyB,CAAA;IACpC,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;CAChC,CAAC;AAGF,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,yBAAyB,CAAA;KAAE,KAAK,OAAO,CAAA;CAC1F,CAAC;AAuPF,QAAA,MAAM,eAAe,kSAMnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAQ1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"AlfakitComponent.vue.d.ts","sourceRoot":"","sources":["../../src/standalone/AlfakitComponent.vue"],"names":[],"mappings":"AAiNA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAA;AAGtB,OAAO,EAA4D,KAAK,cAAc,EAAE,MAAM,KAAK,CAAA;AAKnG,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAA;AAYnB;;;;;;;;;;;;GAYG;AACH,KAAK,WAAW,GAAG;IACjB,oEAAoE;IACpE,SAAS,EAAE,yBAAyB,CAAA;IACpC,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;CAChC,CAAC;AAGF,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,IAAI,EAAE,yBAAyB,CAAA;KAAE,KAAK,OAAO,CAAA;CAC1F,CAAC;AAkQF,QAAA,MAAM,eAAe,kSAMnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAQ1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,28 +1,28 @@
1
1
  import { ALFAKIT_KEY as e, provideStandalone as t, useOptionalAlfakit as n } from "../context.js";
2
- import { providePageActionContext as ee } from "../components/actions/action-context.js";
3
- import { cn as r } from "../lib/utils.js";
4
- import i from "../components/actions/ActionList.js";
5
- import a from "../pages/ContentBlockRenderer.js";
2
+ import { providePageActionContext as r } from "../components/actions/action-context.js";
3
+ import { cn as i } from "../lib/utils.js";
4
+ import a from "../components/actions/ActionList.js";
5
+ import ee from "../pages/ContentBlockRenderer.js";
6
6
  import o from "../components/actions/ActionModals.js";
7
7
  import s from "../components/ui/TooltipProvider.js";
8
8
  import { claimToaster as c, createStandaloneContext as l, createStandaloneRegistry as u, ensureStandaloneRuntime as d, hasToaster as f } from "./runtime.js";
9
- import p from "./AlfakitToaster.js";
10
- import { StandaloneComponentState as te, findStandalonePropName as m, registerStandaloneProp as h, standalonePanelSchema as g } from "@alfakit/core";
11
- import { usePage as _ } from "@inertiajs/vue3";
12
- import { Fragment as v, computed as y, createBlock as b, createCommentVNode as x, createElementBlock as S, createElementVNode as C, createVNode as w, defineComponent as T, normalizeClass as E, onMounted as ne, onScopeDispose as re, openBlock as D, provide as O, ref as k, renderList as A, renderSlot as j, resolveDynamicComponent as M, toDisplayString as N, unref as P, watch as F, withCtx as I } from "vue";
13
- import { ConfigProvider as L } from "reka-ui";
9
+ import te from "./AlfakitToaster.js";
10
+ import { StandaloneComponentState as ne, findStandalonePropName as p, registerStandaloneProp as m, standalonePanelSchema as h } from "@alfakit/core";
11
+ import { usePage as g } from "@inertiajs/vue3";
12
+ import { Fragment as _, computed as v, createBlock as y, createCommentVNode as b, createElementBlock as x, createElementVNode as S, createVNode as C, defineComponent as w, normalizeClass as T, onMounted as re, onScopeDispose as ie, openBlock as E, provide as D, ref as O, renderList as k, renderSlot as A, resolveDynamicComponent as j, toDisplayString as M, unref as N, watch as P, withCtx as F } from "vue";
13
+ import { ConfigProvider as I } from "reka-ui";
14
14
  //#region src/standalone/AlfakitComponent.vue?vue&type=script&setup=true&lang.ts
15
- var R = ["data-alfakit-component", "dir"], z = {
15
+ var L = ["data-alfakit-component", "dir"], R = {
16
16
  key: 0,
17
17
  "data-slot": "page-header",
18
18
  class: "flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between"
19
- }, B = { class: "min-w-0" }, V = {
19
+ }, z = { class: "min-w-0" }, B = {
20
20
  key: 0,
21
21
  class: "text-xl font-semibold tracking-tight"
22
- }, H = {
22
+ }, V = {
23
23
  key: 1,
24
24
  class: "text-muted-foreground mt-1 text-sm"
25
- }, U = /*@__PURE__*/ T({
25
+ }, H = /*@__PURE__*/ w({
26
26
  __name: "AlfakitComponent",
27
27
  props: {
28
28
  component: {},
@@ -35,75 +35,79 @@ var R = ["data-alfakit-component", "dir"], z = {
35
35
  Array
36
36
  ] }
37
37
  },
38
- setup(T) {
39
- let U = T, W = n(), G = _(), K = k(0), q = new te(U.component, () => K.value++), J = (e, t) => q.poll(e, t), Y = W ? {
40
- ...W,
41
- registry: u(U.components, W.registry),
42
- poll: J
43
- } : l({
44
- action: U.component.endpoints.action,
45
- modal: U.component.endpoints.modal
46
- }, U.components, J);
47
- O(e, Y);
48
- let ie = y(() => g(U.component)), X = y(() => (K.value, q.setComponent(U.component), q.page)), Z = y(() => U.component.localization?.direction ?? "ltr"), Q = y(() => ({
49
- token: U.component.token,
38
+ setup(w) {
39
+ let H = w, U = n(), W = g(), G = O(0), K = new ne(H.component, () => G.value++), q = (e, t) => K.poll(e, t), J = (e) => K.refresh(e), Y = U ? {
40
+ ...U,
41
+ registry: u(H.components, U.registry),
42
+ poll: q,
43
+ refresh: J
44
+ } : {
45
+ ...l({
46
+ action: H.component.endpoints.action,
47
+ modal: H.component.endpoints.modal
48
+ }, H.components, q),
49
+ refresh: J
50
+ };
51
+ D(e, Y);
52
+ let ae = v(() => h(H.component)), X = v(() => (G.value, K.setComponent(H.component), K.page)), Z = v(() => H.component.localization?.direction ?? "ltr"), Q = v(() => ({
53
+ token: H.component.token,
50
54
  component: "page"
51
55
  }));
52
56
  t({
53
- panel: ie,
57
+ panel: ae,
54
58
  page: X
55
- }), ee(Q.value), F(() => U.component, (e) => {
59
+ }), r(Q.value), P(() => H.component, (e) => {
56
60
  Y.actions.setEndpoints({
57
61
  action: e.endpoints.action,
58
62
  modal: e.endpoints.modal
59
- }), (!W || !G.props.alfakit) && (Y.translator.setTranslations(e.translations ?? {}), Y.translator.setLocale(e.localization?.tag ?? "en"));
63
+ }), (!U || !W.props.alfakit) && (Y.translator.setTranslations(e.translations ?? {}), Y.translator.setLocale(e.localization?.tag ?? "en"));
60
64
  }, {
61
65
  immediate: !0,
62
66
  flush: "sync"
63
67
  });
64
- let $ = k(!1);
65
- return ne(() => {
66
- if (d(), F(() => m(G.props, U.component), (e, t, n) => n(h(e ?? null)), { immediate: !0 }), F(() => U.component.token, () => void q.loadLazy(), { immediate: !0 }), W) return;
68
+ let $ = O(!1);
69
+ return re(() => {
70
+ if (d(), P(() => p(W.props, H.component), (e, t, n) => n(m(e ?? null)), { immediate: !0 }), P(() => H.component.token, () => void K.loadLazy(H.component), { immediate: !0 }), U) return;
67
71
  let e = null, t = !1;
68
72
  queueMicrotask(() => {
69
73
  t || f() || (e = c(), $.value = !0);
70
- }), re(() => {
74
+ }), ie(() => {
71
75
  t = !0, e?.();
72
76
  });
73
- }), (e, t) => (D(), b(M(P(W) ? "div" : P(L)), {
74
- dir: P(W) ? void 0 : Z.value,
75
- class: E(P(W) ? "contents" : void 0)
77
+ }), (e, t) => (E(), y(j(N(U) ? "div" : N(I)), {
78
+ dir: N(U) ? void 0 : Z.value,
79
+ class: T(N(U) ? "contents" : void 0)
76
80
  }, {
77
- default: I(() => [w(s, { "delay-duration": 0 }, {
78
- default: I(() => [
79
- C("div", {
81
+ default: F(() => [C(s, { "delay-duration": 0 }, {
82
+ default: F(() => [
83
+ S("div", {
80
84
  "data-slot": "standalone",
81
- "data-alfakit-component": U.component.class,
85
+ "data-alfakit-component": H.component.class,
82
86
  dir: Z.value,
83
- class: E(P(r)("flex flex-col gap-6", U.class))
87
+ class: T(N(i)("flex flex-col gap-6", H.class))
84
88
  }, [
85
- X.value.heading || X.value.headerActions?.length ? (D(), S("header", z, [C("div", B, [X.value.heading ? (D(), S("h2", V, N(X.value.heading), 1)) : x("", !0), X.value.subheading ? (D(), S("p", H, N(X.value.subheading), 1)) : x("", !0)]), X.value.headerActions && X.value.headerActions.length > 0 ? (D(), b(i, {
89
+ X.value.heading || X.value.headerActions?.length ? (E(), x("header", R, [S("div", z, [X.value.heading ? (E(), x("h2", B, M(X.value.heading), 1)) : b("", !0), X.value.subheading ? (E(), x("p", V, M(X.value.subheading), 1)) : b("", !0)]), X.value.headerActions && X.value.headerActions.length > 0 ? (E(), y(a, {
86
90
  key: 0,
87
91
  actions: X.value.headerActions,
88
92
  context: Q.value,
89
93
  align: "end",
90
94
  class: "max-w-full shrink-0"
91
- }, null, 8, ["actions", "context"])) : x("", !0)])) : x("", !0),
92
- j(e.$slots, "header"),
93
- j(e.$slots, "default", {
95
+ }, null, 8, ["actions", "context"])) : b("", !0)])) : b("", !0),
96
+ A(e.$slots, "header"),
97
+ A(e.$slots, "default", {
94
98
  blocks: X.value.content,
95
- page: U.component
96
- }, () => [(D(!0), S(v, null, A(X.value.content, (e) => (D(), b(a, {
99
+ page: H.component
100
+ }, () => [(E(!0), x(_, null, k(X.value.content, (e) => (E(), y(ee, {
97
101
  key: e.key,
98
102
  block: e
99
103
  }, null, 8, ["block"]))), 128))]),
100
- j(e.$slots, "footer")
101
- ], 10, R),
102
- w(o),
103
- $.value ? (D(), b(p, {
104
+ A(e.$slots, "footer")
105
+ ], 10, L),
106
+ C(o),
107
+ $.value ? (E(), y(te, {
104
108
  key: 0,
105
109
  claimed: ""
106
- })) : x("", !0)
110
+ })) : b("", !0)
107
111
  ]),
108
112
  _: 3
109
113
  })]),
@@ -112,6 +116,6 @@ var R = ["data-alfakit-component", "dir"], z = {
112
116
  }
113
117
  });
114
118
  //#endregion
115
- export { U as default };
119
+ export { H as default };
116
120
 
117
121
  //# sourceMappingURL=AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_unref","_normalizeClass","_withCtx","_createVNode","TooltipProvider","_createElementVNode","_createElementBlock","_toDisplayString","_createCommentVNode","ActionList","_renderSlot","_Fragment","_renderList","ContentBlockRenderer","ActionModals","AlfakitToaster","ActionList_default","ContentBlockRenderer_default","ActionModals_default","TooltipProvider_default","AlfakitToaster_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","AlfakitComponent_vue_vue_type_script_setup_true_lang_default","props","__props","parent","useOptionalAlfakit","inertiaPage","usePage","version","ref","state","StandaloneComponentState","poll","target","interval","context","createStandaloneRegistry","createStandaloneContext","ALFAKIT_KEY","panel","computed","standalonePanelSchema","page","direction","actionContext","provideStandalone","providePageActionContext","watch","component","ownsToaster","onMounted","ensureStandaloneRuntime","findStandalonePropName","onCleanup","registerStandaloneProp","name","release","cancelled","hasToaster","claimToaster","onScopeDispose","openBlock","createBlock","resolveDynamicComponent","unref","ConfigProvider","normalizeClass","withCtx","createVNode","createElementVNode","cn","createElementBlock","toDisplayString","createCommentVNode","renderSlot","_ctx","Fragment","renderList","block"],"sources":["../../src/standalone/AlfakitComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n StandaloneComponentState,\n findStandalonePropName,\n registerStandaloneProp,\n standalonePanelSchema,\n type ContentBlock,\n type StandaloneComponentSchema,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { ConfigProvider } from 'reka-ui'\nimport { computed, onMounted, onScopeDispose, provide, ref, watch, type HTMLAttributes } from 'vue'\nimport { providePageActionContext } from '../components/actions/action-context'\nimport ActionList from '../components/actions/ActionList.vue'\nimport ActionModals from '../components/actions/ActionModals.vue'\nimport TooltipProvider from '../components/ui/TooltipProvider.vue'\nimport {\n ALFAKIT_KEY,\n provideStandalone,\n useOptionalAlfakit,\n type AlfakitContextValue,\n type AnyComponent,\n} from '../context'\nimport { cn } from '../lib/utils'\nimport ContentBlockRenderer from '../pages/ContentBlockRenderer.vue'\nimport AlfakitToaster from './AlfakitToaster.vue'\nimport {\n claimToaster,\n createStandaloneContext,\n createStandaloneRegistry,\n ensureStandaloneRuntime,\n hasToaster,\n} from './runtime'\n\n/**\n * Renders an Alfakit component outside a panel: a form, table, infolist, widgets or any mix\n * (`AlfaSix\\Alfakit\\Standalone\\*`) in any Inertia page of the application. Needs no\n * `createAlfakit()` and no panel layout: it provides its own translator, registry, action\n * runner and modals, and inherits the application's shadcn tokens.\n *\n * ```vue\n * <AlfakitComponent :component=\"orders\" class=\"max-w-4xl\" />\n * ```\n *\n * Slots: `header` (above the content blocks), `footer` (below), and the default slot to\n * render the blocks yourself: `<template #default=\"{ blocks }\">…<ContentBlockRenderer :block=\"…\" />`.\n */\nconst props = defineProps<{\n /** The payload: `ContactForm::make()` passed as an Inertia prop. */\n component: StandaloneComponentSchema\n /** Renderer overrides for this instance (`{ TextInput: MyInput }`), on top of `configureAlfakit()`. */\n components?: Record<string, AnyComponent>\n class?: HTMLAttributes['class']\n}>()\n\ndefineSlots<{\n header?: () => unknown\n footer?: () => unknown\n default?: (props: { blocks: ContentBlock[]; page: StandaloneComponentSchema }) => unknown\n}>()\n\nconst parent = useOptionalAlfakit()\nconst inertiaPage = usePage()\n\n// Lazy and polled schemas of this component, merged into the page it renders.\nconst version = ref(0)\nconst state = new StandaloneComponentState(props.component, () => version.value++)\nconst poll = (target: string, interval: string | number | null | undefined) =>\n state.poll(target, interval)\n\nconst context: AlfakitContextValue = parent\n ? { ...parent, registry: createStandaloneRegistry(props.components, parent.registry), poll }\n : createStandaloneContext(\n { action: props.component.endpoints.action, modal: props.component.endpoints.modal },\n props.components,\n poll,\n )\n\nprovide(ALFAKIT_KEY, context)\n\nconst panel = computed(() => standalonePanelSchema(props.component))\nconst page = computed(() => {\n void version.value\n state.setComponent(props.component)\n\n return state.page\n})\nconst direction = computed(() => props.component.localization?.direction ?? 'ltr')\nconst actionContext = computed(() => ({ token: props.component.token, component: 'page' }))\n\nprovideStandalone({ panel, page })\nprovidePageActionContext(actionContext.value)\n\n// Endpoints and strings follow the latest payload (they change per locale or path).\nwatch(\n () => props.component,\n (component) => {\n context.actions.setEndpoints({\n action: component.endpoints.action,\n modal: component.endpoints.modal,\n })\n\n // Inside `createAlfakit()` the panel feeds the shared translator; on a page without the\n // `alfakit` prop (the rest of the app) the component's own translations apply.\n if (!parent || !(inertiaPage.props as Record<string, unknown>).alfakit) {\n context.translator.setTranslations(component.translations ?? {})\n context.translator.setLocale(component.localization?.tag ?? 'en')\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\n// Toasts: use the layout's <AlfakitToaster /> when there is one, else the first component\n// on the page renders one (checked after every component mounted).\nconst ownsToaster = ref(false)\n\nonMounted(() => {\n ensureStandaloneRuntime()\n\n // Partial reloads (sorting, paging, inline edits) request this component's own prop.\n watch(\n () => findStandalonePropName(inertiaPage.props as Record<string, unknown>, props.component),\n (name, _old, onCleanup) => onCleanup(registerStandaloneProp(name ?? null)),\n { immediate: true },\n )\n\n watch(\n () => props.component.token,\n () => void state.loadLazy(),\n { immediate: true },\n )\n\n if (parent) return\n\n let release: (() => void) | null = null\n let cancelled = false\n\n queueMicrotask(() => {\n if (cancelled || hasToaster()) return\n\n release = claimToaster()\n ownsToaster.value = true\n })\n\n onScopeDispose(() => {\n cancelled = true\n release?.()\n })\n})\n</script>\n\n<template>\n <component\n :is=\"parent ? 'div' : ConfigProvider\"\n :dir=\"parent ? undefined : direction\"\n :class=\"parent ? 'contents' : undefined\"\n >\n <TooltipProvider :delay-duration=\"0\">\n <div\n data-slot=\"standalone\"\n :data-alfakit-component=\"props.component.class\"\n :dir=\"direction\"\n :class=\"cn('flex flex-col gap-6', props.class)\"\n >\n <header\n v-if=\"page.heading || page.headerActions?.length\"\n data-slot=\"page-header\"\n class=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\"\n >\n <div class=\"min-w-0\">\n <h2 v-if=\"page.heading\" class=\"text-xl font-semibold tracking-tight\">\n {{ page.heading }}\n </h2>\n <p v-if=\"page.subheading\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ page.subheading }}\n </p>\n </div>\n <ActionList\n v-if=\"page.headerActions && page.headerActions.length > 0\"\n :actions=\"page.headerActions\"\n :context=\"actionContext\"\n align=\"end\"\n class=\"max-w-full shrink-0\"\n />\n </header>\n <slot name=\"header\" />\n <slot :blocks=\"page.content\" :page=\"props.component\">\n <ContentBlockRenderer v-for=\"block in page.content\" :key=\"block.key\" :block=\"block\" />\n </slot>\n <slot name=\"footer\" />\n </div>\n <ActionModals />\n <AlfakitToaster v-if=\"ownsToaster\" claimed />\n </TooltipProvider>\n </component>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"AlfakitComponent.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_resolveDynamicComponent","_unref","_normalizeClass","_withCtx","_createVNode","TooltipProvider","_createElementVNode","_createElementBlock","_toDisplayString","_createCommentVNode","ActionList","_renderSlot","_Fragment","_renderList","ContentBlockRenderer","ActionModals","AlfakitToaster","ActionList_default","ContentBlockRenderer_default","ActionModals_default","TooltipProvider_default","AlfakitToaster_default","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","AlfakitComponent_vue_vue_type_script_setup_true_lang_default","props","__props","parent","useOptionalAlfakit","inertiaPage","usePage","version","ref","state","StandaloneComponentState","poll","target","interval","refresh","targets","context","createStandaloneRegistry","createStandaloneContext","ALFAKIT_KEY","panel","computed","standalonePanelSchema","page","direction","actionContext","provideStandalone","providePageActionContext","watch","component","ownsToaster","onMounted","ensureStandaloneRuntime","findStandalonePropName","onCleanup","registerStandaloneProp","name","release","cancelled","hasToaster","claimToaster","onScopeDispose","openBlock","createBlock","resolveDynamicComponent","unref","ConfigProvider","normalizeClass","withCtx","createVNode","createElementVNode","cn","createElementBlock","toDisplayString","createCommentVNode","renderSlot","_ctx","Fragment","renderList","block"],"sources":["../../src/standalone/AlfakitComponent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n StandaloneComponentState,\n findStandalonePropName,\n registerStandaloneProp,\n standalonePanelSchema,\n type ContentBlock,\n type StandaloneComponentSchema,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { ConfigProvider } from 'reka-ui'\nimport { computed, onMounted, onScopeDispose, provide, ref, watch, type HTMLAttributes } from 'vue'\nimport { providePageActionContext } from '../components/actions/action-context'\nimport ActionList from '../components/actions/ActionList.vue'\nimport ActionModals from '../components/actions/ActionModals.vue'\nimport TooltipProvider from '../components/ui/TooltipProvider.vue'\nimport {\n ALFAKIT_KEY,\n provideStandalone,\n useOptionalAlfakit,\n type AlfakitContextValue,\n type AnyComponent,\n} from '../context'\nimport { cn } from '../lib/utils'\nimport ContentBlockRenderer from '../pages/ContentBlockRenderer.vue'\nimport AlfakitToaster from './AlfakitToaster.vue'\nimport {\n claimToaster,\n createStandaloneContext,\n createStandaloneRegistry,\n ensureStandaloneRuntime,\n hasToaster,\n} from './runtime'\n\n/**\n * Renders an Alfakit component outside a panel: a form, table, infolist, widgets or any mix\n * (`AlfaSix\\Alfakit\\Standalone\\*`) in any Inertia page of the application. Needs no\n * `createAlfakit()` and no panel layout: it provides its own translator, registry, action\n * runner and modals, and inherits the application's shadcn tokens.\n *\n * ```vue\n * <AlfakitComponent :component=\"orders\" class=\"max-w-4xl\" />\n * ```\n *\n * Slots: `header` (above the content blocks), `footer` (below), and the default slot to\n * render the blocks yourself: `<template #default=\"{ blocks }\">…<ContentBlockRenderer :block=\"…\" />`.\n */\nconst props = defineProps<{\n /** The payload: `ContactForm::make()` passed as an Inertia prop. */\n component: StandaloneComponentSchema\n /** Renderer overrides for this instance (`{ TextInput: MyInput }`), on top of `configureAlfakit()`. */\n components?: Record<string, AnyComponent>\n class?: HTMLAttributes['class']\n}>()\n\ndefineSlots<{\n header?: () => unknown\n footer?: () => unknown\n default?: (props: { blocks: ContentBlock[]; page: StandaloneComponentSchema }) => unknown\n}>()\n\nconst parent = useOptionalAlfakit()\nconst inertiaPage = usePage()\n\n// Lazy and polled schemas of this component, merged into the page it renders.\nconst version = ref(0)\nconst state = new StandaloneComponentState(props.component, () => version.value++)\nconst poll = (target: string, interval: string | number | null | undefined) =>\n state.poll(target, interval)\nconst refresh = (targets: string[]) => state.refresh(targets)\n\nconst context: AlfakitContextValue = parent\n ? {\n ...parent,\n registry: createStandaloneRegistry(props.components, parent.registry),\n poll,\n refresh,\n }\n : {\n ...createStandaloneContext(\n { action: props.component.endpoints.action, modal: props.component.endpoints.modal },\n props.components,\n poll,\n ),\n refresh,\n }\n\nprovide(ALFAKIT_KEY, context)\n\nconst panel = computed(() => standalonePanelSchema(props.component))\nconst page = computed(() => {\n void version.value\n state.setComponent(props.component)\n\n return state.page\n})\nconst direction = computed(() => props.component.localization?.direction ?? 'ltr')\nconst actionContext = computed(() => ({ token: props.component.token, component: 'page' }))\n\nprovideStandalone({ panel, page })\nprovidePageActionContext(actionContext.value)\n\n// Endpoints and strings follow the latest payload (they change per locale or path).\nwatch(\n () => props.component,\n (component) => {\n context.actions.setEndpoints({\n action: component.endpoints.action,\n modal: component.endpoints.modal,\n })\n\n // Inside `createAlfakit()` the panel feeds the shared translator; on a page without the\n // `alfakit` prop (the rest of the app) the component's own translations apply.\n if (!parent || !(inertiaPage.props as Record<string, unknown>).alfakit) {\n context.translator.setTranslations(component.translations ?? {})\n context.translator.setLocale(component.localization?.tag ?? 'en')\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\n// Toasts: use the layout's <AlfakitToaster /> when there is one, else the first component\n// on the page renders one (checked after every component mounted).\nconst ownsToaster = ref(false)\n\nonMounted(() => {\n ensureStandaloneRuntime()\n\n // Partial reloads (sorting, paging, inline edits) request this component's own prop.\n watch(\n () => findStandalonePropName(inertiaPage.props as Record<string, unknown>, props.component),\n (name, _old, onCleanup) => onCleanup(registerStandaloneProp(name ?? null)),\n { immediate: true },\n )\n\n // The watcher runs before the new payload renders: hand it over, or the response would\n // count as stale and lazy widgets (a calendar after its action) keep their old schema.\n watch(\n () => props.component.token,\n () => void state.loadLazy(props.component),\n { immediate: true },\n )\n\n if (parent) return\n\n let release: (() => void) | null = null\n let cancelled = false\n\n queueMicrotask(() => {\n if (cancelled || hasToaster()) return\n\n release = claimToaster()\n ownsToaster.value = true\n })\n\n onScopeDispose(() => {\n cancelled = true\n release?.()\n })\n})\n</script>\n\n<template>\n <component\n :is=\"parent ? 'div' : ConfigProvider\"\n :dir=\"parent ? undefined : direction\"\n :class=\"parent ? 'contents' : undefined\"\n >\n <TooltipProvider :delay-duration=\"0\">\n <div\n data-slot=\"standalone\"\n :data-alfakit-component=\"props.component.class\"\n :dir=\"direction\"\n :class=\"cn('flex flex-col gap-6', props.class)\"\n >\n <header\n v-if=\"page.heading || page.headerActions?.length\"\n data-slot=\"page-header\"\n class=\"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between\"\n >\n <div class=\"min-w-0\">\n <h2 v-if=\"page.heading\" class=\"text-xl font-semibold tracking-tight\">\n {{ page.heading }}\n </h2>\n <p v-if=\"page.subheading\" class=\"text-muted-foreground mt-1 text-sm\">\n {{ page.subheading }}\n </p>\n </div>\n <ActionList\n v-if=\"page.headerActions && page.headerActions.length > 0\"\n :actions=\"page.headerActions\"\n :context=\"actionContext\"\n align=\"end\"\n class=\"max-w-full shrink-0\"\n />\n </header>\n <slot name=\"header\" />\n <slot :blocks=\"page.content\" :page=\"props.component\">\n <ContentBlockRenderer v-for=\"block in page.content\" :key=\"block.key\" :block=\"block\" />\n </slot>\n <slot name=\"footer\" />\n </div>\n <ActionModals />\n <AlfakitToaster v-if=\"ownsToaster\" claimed />\n </TooltipProvider>\n </component>\n</template>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitToaster.js","names":["_sfc_main","AlfakitToaster_vue_vue_type_script_setup_true_lang_default","AlfakitToaster_default"],"sources":["../../src/standalone/AlfakitToaster.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { resolveToastPosition, type ToastPosition } from '@alfakit/core'\nimport { onMounted, onUnmounted } from 'vue'\nimport Toaster from '../components/ui/Toaster.vue'\nimport { useOptionalAlfakit } from '../context'\nimport { claimToaster, createStandaloneContext, ensureFlashToasts } from './runtime'\n\n/**\n * Shows notifications flashed by standalone components (`Notification::make()->send()`\n * from `submit()` or an action) as toasts. Place it once in your app layout; a page whose\n * layout has none gets one from its first `<AlfakitComponent>`.\n *\n * Flash data comes from the `flash` Inertia event after each visit and from the initial\n * page (already fired before the app mounted), so it works in any layout.\n */\nconst props = withDefaults(\n defineProps<{\n /** Where toasts appear; `start`/`end` follow the reading direction. */\n position?: ToastPosition\n dir?: 'ltr' | 'rtl'\n /**\n * Render vue-sonner's `<Toaster>` too (default). Pass `false` when your layout already\n * mounts one: flashed Alfakit notifications are then shown through it.\n */\n toaster?: boolean\n /** @internal Set by `<AlfakitComponent>` when it takes the toaster role. */\n claimed?: boolean\n }>(),\n { dir: 'ltr', toaster: true, claimed: false },\n)\n\n// Outside <AlfakitComponent> the flash reader needs a registry for custom toast views.\nconst context =\n useOptionalAlfakit() ?? createStandaloneContext({ action: '', modal: '' }, undefined, undefined)\n\nlet release: (() => void) | null = null\n\nonMounted(() => {\n if (!props.claimed) release = claimToaster()\n\n ensureFlashToasts(context.registry)\n})\n\nonUnmounted(() => release?.())\n</script>\n\n<template>\n <Toaster\n v-if=\"props.toaster\"\n :position=\"resolveToastPosition(props.position, props.dir)\"\n :dir=\"props.dir\"\n rich-colors\n close-button\n />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AlfakitToaster.js","names":["_sfc_main","AlfakitToaster_vue_vue_type_script_setup_true_lang_default","AlfakitToaster_default"],"sources":["../../src/standalone/AlfakitToaster.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { resolveToastPosition, STARTER_KIT_TOASTER_ID, type ToastPosition } from '@alfakit/core'\nimport { onMounted, onUnmounted } from 'vue'\nimport { setToasterId } from '../components/notifications/flash-toasts'\nimport Toaster from '../components/ui/Toaster.vue'\nimport { useOptionalAlfakit } from '../context'\nimport { claimToaster, createStandaloneContext, ensureFlashToasts } from './runtime'\n\n/**\n * Shows notifications flashed by standalone components (`Notification::make()->send()`\n * from `submit()` or an action) as toasts. Place it once in your app layout; a page whose\n * layout has none gets one from its first `<AlfakitComponent>`.\n *\n * Flash data comes from the `flash` Inertia event after each visit and from the initial\n * page (already fired before the app mounted), so it works in any layout.\n */\nconst props = withDefaults(\n defineProps<{\n /** Where toasts appear; `start`/`end` follow the reading direction. */\n position?: ToastPosition\n dir?: 'ltr' | 'rtl'\n /**\n * Render vue-sonner's `<Toaster>` too (default). Pass `false` when your layout already\n * mounts one: flashed Alfakit notifications are then shown through it.\n */\n toaster?: boolean\n /** @internal Set by `<AlfakitComponent>` when it takes the toaster role. */\n claimed?: boolean\n }>(),\n { dir: 'ltr', toaster: true, claimed: false },\n)\n\n// Outside <AlfakitComponent> the flash reader needs a registry for custom toast views.\nconst context =\n useOptionalAlfakit() ?? createStandaloneContext({ action: '', modal: '' }, undefined, undefined)\n\nlet release: (() => void) | null = null\n\nonMounted(() => {\n if (!props.claimed) release = claimToaster()\n\n // Our own toaster gets an id, so a `<Toaster />` the app's layout already mounts (the\n // starter kits have one) doesn't show every Alfakit toast a second time.\n if (props.toaster) setToasterId(STARTER_KIT_TOASTER_ID)\n\n ensureFlashToasts(context.registry)\n})\n\nonUnmounted(() => {\n release?.()\n\n if (props.toaster) setToasterId(undefined)\n})\n</script>\n\n<template>\n <Toaster\n v-if=\"props.toaster\"\n :id=\"STARTER_KIT_TOASTER_ID\"\n :position=\"resolveToastPosition(props.position, props.dir)\"\n :dir=\"props.dir\"\n rich-colors\n close-button\n />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitToaster.vue.d.ts","sourceRoot":"","sources":["../../src/standalone/AlfakitToaster.vue"],"names":[],"mappings":"AAyDA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAMxE;;;;;;;GAOG;AACH,KAAK,WAAW,GAAG;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC;;SARM,KAAK,GAAG,KAAK;aAKT,OAAO;aAEP,OAAO;;AAsErB,wBAOG"}
1
+ {"version":3,"file":"AlfakitToaster.vue.d.ts","sourceRoot":"","sources":["../../src/standalone/AlfakitToaster.vue"],"names":[],"mappings":"AAmEA,OAAO,EAAgD,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAOhG;;;;;;;GAOG;AACH,KAAK,WAAW,GAAG;IACf,uEAAuE;IACvE,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAC;;SARM,KAAK,GAAG,KAAK;aAKT,OAAO;aAEP,OAAO;;AAiFrB,wBAOG"}
@@ -1,10 +1,11 @@
1
1
  import { useOptionalAlfakit as e } from "../context.js";
2
- import { claimToaster as t, createStandaloneContext as n, ensureFlashToasts as r } from "./runtime.js";
3
- import i from "../components/ui/Toaster.js";
4
- import { resolveToastPosition as a } from "@alfakit/core";
5
- import { createBlock as o, createCommentVNode as s, defineComponent as c, onMounted as l, onUnmounted as u, openBlock as d, unref as f } from "vue";
2
+ import { setToasterId as t } from "../components/notifications/flash-toasts.js";
3
+ import { claimToaster as n, createStandaloneContext as r, ensureFlashToasts as i } from "./runtime.js";
4
+ import a from "../components/ui/Toaster.js";
5
+ import { STARTER_KIT_TOASTER_ID as o, resolveToastPosition as s } from "@alfakit/core";
6
+ import { createBlock as c, createCommentVNode as l, defineComponent as u, onMounted as d, onUnmounted as f, openBlock as p, unref as m } from "vue";
6
7
  //#region src/standalone/AlfakitToaster.vue?vue&type=script&setup=true&lang.ts
7
- var p = /*@__PURE__*/ c({
8
+ var h = /*@__PURE__*/ u({
8
9
  __name: "AlfakitToaster",
9
10
  props: {
10
11
  position: {},
@@ -18,23 +19,30 @@ var p = /*@__PURE__*/ c({
18
19
  default: !1
19
20
  }
20
21
  },
21
- setup(c) {
22
- let p = c, m = e() ?? n({
22
+ setup(u) {
23
+ let h = u, g = e() ?? r({
23
24
  action: "",
24
25
  modal: ""
25
- }, void 0, void 0), h = null;
26
- return l(() => {
27
- p.claimed || (h = t()), r(m.registry);
28
- }), u(() => h?.()), (e, t) => p.toaster ? (d(), o(i, {
26
+ }, void 0, void 0), _ = null;
27
+ return d(() => {
28
+ h.claimed || (_ = n()), h.toaster && t(o), i(g.registry);
29
+ }), f(() => {
30
+ _?.(), h.toaster && t(void 0);
31
+ }), (e, t) => h.toaster ? (p(), c(a, {
29
32
  key: 0,
30
- position: f(a)(p.position, p.dir),
31
- dir: p.dir,
33
+ id: m(o),
34
+ position: m(s)(h.position, h.dir),
35
+ dir: h.dir,
32
36
  "rich-colors": "",
33
37
  "close-button": ""
34
- }, null, 8, ["position", "dir"])) : s("", !0);
38
+ }, null, 8, [
39
+ "id",
40
+ "position",
41
+ "dir"
42
+ ])) : l("", !0);
35
43
  }
36
44
  });
37
45
  //#endregion
38
- export { p as default };
46
+ export { h as default };
39
47
 
40
48
  //# sourceMappingURL=AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitToaster.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Toaster","_unref","_createCommentVNode","Toaster_default","AlfakitToaster_vue_vue_type_script_setup_true_lang_default","props","__props","context","useOptionalAlfakit","createStandaloneContext","release","onMounted","claimToaster","ensureFlashToasts","onUnmounted","openBlock","createBlock","unref","resolveToastPosition","createCommentVNode"],"sources":["../../src/standalone/AlfakitToaster.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { resolveToastPosition, type ToastPosition } from '@alfakit/core'\nimport { onMounted, onUnmounted } from 'vue'\nimport Toaster from '../components/ui/Toaster.vue'\nimport { useOptionalAlfakit } from '../context'\nimport { claimToaster, createStandaloneContext, ensureFlashToasts } from './runtime'\n\n/**\n * Shows notifications flashed by standalone components (`Notification::make()->send()`\n * from `submit()` or an action) as toasts. Place it once in your app layout; a page whose\n * layout has none gets one from its first `<AlfakitComponent>`.\n *\n * Flash data comes from the `flash` Inertia event after each visit and from the initial\n * page (already fired before the app mounted), so it works in any layout.\n */\nconst props = withDefaults(\n defineProps<{\n /** Where toasts appear; `start`/`end` follow the reading direction. */\n position?: ToastPosition\n dir?: 'ltr' | 'rtl'\n /**\n * Render vue-sonner's `<Toaster>` too (default). Pass `false` when your layout already\n * mounts one: flashed Alfakit notifications are then shown through it.\n */\n toaster?: boolean\n /** @internal Set by `<AlfakitComponent>` when it takes the toaster role. */\n claimed?: boolean\n }>(),\n { dir: 'ltr', toaster: true, claimed: false },\n)\n\n// Outside <AlfakitComponent> the flash reader needs a registry for custom toast views.\nconst context =\n useOptionalAlfakit() ?? createStandaloneContext({ action: '', modal: '' }, undefined, undefined)\n\nlet release: (() => void) | null = null\n\nonMounted(() => {\n if (!props.claimed) release = claimToaster()\n\n ensureFlashToasts(context.registry)\n})\n\nonUnmounted(() => release?.())\n</script>\n\n<template>\n <Toaster\n v-if=\"props.toaster\"\n :position=\"resolveToastPosition(props.position, props.dir)\"\n :dir=\"props.dir\"\n rich-colors\n close-button\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAeA,IAAMO,IAAQC,GAiBRC,IACJC,EAAmB,KAAKC,EAAwB;GAAE,QAAQ;GAAI,OAAO;EAAG,GAAG,KAAA,GAAW,KAAA,CAAS,GAE7FC,IAA+B;SAEnCC,QAAgB;GAGd,AAFKN,EAAM,YAAS,IAAUO,EAAa,IAE3CC,EAAkBN,EAAQ,QAAQ;EACpC,CAAC,GAEDO,QAAkBJ,IAAU,CAAC,aAKnBL,EAAM,WADdP,EAAA,GAAAC,EAMEC,GAAA;;GAJC,UAAUC,EAAAiB,CAAA,CAAoB,CAACb,EAAM,UAAUA,EAAM,GAAG;GACxD,KAAKA,EAAM;GACZ,eAAA;GACA,gBAAA"}
1
+ {"version":3,"file":"AlfakitToaster.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","Toaster","_unref","_createCommentVNode","Toaster_default","AlfakitToaster_vue_vue_type_script_setup_true_lang_default","props","__props","context","useOptionalAlfakit","createStandaloneContext","release","onMounted","claimToaster","setToasterId","STARTER_KIT_TOASTER_ID","ensureFlashToasts","onUnmounted","openBlock","createBlock","unref","resolveToastPosition","createCommentVNode"],"sources":["../../src/standalone/AlfakitToaster.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { resolveToastPosition, STARTER_KIT_TOASTER_ID, type ToastPosition } from '@alfakit/core'\nimport { onMounted, onUnmounted } from 'vue'\nimport { setToasterId } from '../components/notifications/flash-toasts'\nimport Toaster from '../components/ui/Toaster.vue'\nimport { useOptionalAlfakit } from '../context'\nimport { claimToaster, createStandaloneContext, ensureFlashToasts } from './runtime'\n\n/**\n * Shows notifications flashed by standalone components (`Notification::make()->send()`\n * from `submit()` or an action) as toasts. Place it once in your app layout; a page whose\n * layout has none gets one from its first `<AlfakitComponent>`.\n *\n * Flash data comes from the `flash` Inertia event after each visit and from the initial\n * page (already fired before the app mounted), so it works in any layout.\n */\nconst props = withDefaults(\n defineProps<{\n /** Where toasts appear; `start`/`end` follow the reading direction. */\n position?: ToastPosition\n dir?: 'ltr' | 'rtl'\n /**\n * Render vue-sonner's `<Toaster>` too (default). Pass `false` when your layout already\n * mounts one: flashed Alfakit notifications are then shown through it.\n */\n toaster?: boolean\n /** @internal Set by `<AlfakitComponent>` when it takes the toaster role. */\n claimed?: boolean\n }>(),\n { dir: 'ltr', toaster: true, claimed: false },\n)\n\n// Outside <AlfakitComponent> the flash reader needs a registry for custom toast views.\nconst context =\n useOptionalAlfakit() ?? createStandaloneContext({ action: '', modal: '' }, undefined, undefined)\n\nlet release: (() => void) | null = null\n\nonMounted(() => {\n if (!props.claimed) release = claimToaster()\n\n // Our own toaster gets an id, so a `<Toaster />` the app's layout already mounts (the\n // starter kits have one) doesn't show every Alfakit toast a second time.\n if (props.toaster) setToasterId(STARTER_KIT_TOASTER_ID)\n\n ensureFlashToasts(context.registry)\n})\n\nonUnmounted(() => {\n release?.()\n\n if (props.toaster) setToasterId(undefined)\n})\n</script>\n\n<template>\n <Toaster\n v-if=\"props.toaster\"\n :id=\"STARTER_KIT_TOASTER_ID\"\n :position=\"resolveToastPosition(props.position, props.dir)\"\n :dir=\"props.dir\"\n rich-colors\n close-button\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAgBA,IAAMO,IAAQC,GAiBRC,IACJC,EAAmB,KAAKC,EAAwB;GAAE,QAAQ;GAAI,OAAO;EAAG,GAAG,KAAA,GAAW,KAAA,CAAS,GAE7FC,IAA+B;SAEnCC,QAAgB;GAOd,AANKN,EAAM,YAAS,IAAUO,EAAa,IAIvCP,EAAM,WAASQ,EAAaC,CAAsB,GAEtDC,EAAkBR,EAAQ,QAAQ;EACpC,CAAC,GAEDS,QAAkB;GAGhB,AAFAN,IAAU,GAENL,EAAM,WAASQ,EAAa,KAAA,CAAS;EAC3C,CAAC,aAKSR,EAAM,WADdP,EAAA,GAAAC,EAOEC,GAAA;;GALC,IAAIC,EAAAa,CAAA;GACJ,UAAUb,EAAAmB,CAAA,CAAoB,CAACf,EAAM,UAAUA,EAAM,GAAG;GACxD,KAAKA,EAAM;GACZ,eAAA;GACA,gBAAA"}
@@ -13,8 +13,17 @@
13
13
  * your own `:root`. Shared by the React, Vue and Svelte renderers (copied into each dist).
14
14
  */
15
15
 
16
+ @import './components.css';
17
+
16
18
  @custom-variant dark (&:is(.dark *));
17
19
 
20
+ /*
21
+ * Class lists that live in @alfakit/core (stacked-on-mobile tables, filter and column manager
22
+ * widths in `table.ts`, …): scan core's build too. Relative to this file in
23
+ * node_modules/@alfakit/<renderer>/dist, next to node_modules/@alfakit/core.
24
+ */
25
+ @source '../../core/dist';
26
+
18
27
  /*
19
28
  * Grid classes are composed at runtime from schema breakpoints (`columns`, `columnSpan`),
20
29
  * so force Tailwind to generate every variant the renderers can produce.
@@ -148,3 +157,48 @@
148
157
  content: attr(data-placeholder);
149
158
  @apply text-muted-foreground pointer-events-none float-left;
150
159
  }
160
+
161
+ /*
162
+ * "Developed by Alfa Six" (`[data-slot='credit']`) in the footer of panel pages. Starter-kit
163
+ * panels load this stylesheet instead of `themes.css`, so its rules are repeated here
164
+ * (keep them in step with the Credit section of themes.css).
165
+ */
166
+ [data-slot='credit'] {
167
+ display: flex;
168
+ justify-content: center;
169
+ padding: 0.75rem 1rem 1rem;
170
+ font-size: 0.75rem;
171
+ line-height: 1rem;
172
+ color: var(--muted-foreground);
173
+ }
174
+
175
+ [data-slot='credit'] a {
176
+ display: inline-flex;
177
+ align-items: center;
178
+ gap: 0.375rem;
179
+ color: inherit;
180
+ text-decoration: none;
181
+ transition: color 150ms;
182
+ }
183
+
184
+ [data-slot='credit'] svg {
185
+ width: auto;
186
+ height: 1.125rem;
187
+ flex-shrink: 0;
188
+ color: #073b78;
189
+ }
190
+
191
+ .dark [data-slot='credit'] svg {
192
+ color: #ffffff;
193
+ }
194
+
195
+ [data-slot='credit'] a:hover,
196
+ [data-slot='credit'] a:focus-visible {
197
+ color: var(--foreground);
198
+ text-decoration: underline;
199
+ text-underline-offset: 4px;
200
+ }
201
+
202
+ [data-slot='credit'] strong {
203
+ font-weight: 600;
204
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitStarterKitRoot.js","names":["_sfc_main","AlfakitStarterKitRoot_vue_vue_type_script_setup_true_lang_default","AlfakitStarterKitRoot_default"],"sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n STARTER_KIT_TOASTER_ID,\n installStarterKitRuntime,\n syncStarterKitPage,\n type AlfakitPageProps,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { onMounted, onUnmounted, watch } from 'vue'\nimport AlfakitRoot from '../AlfakitRoot.vue'\nimport { setToasterId, showToast } from '../components/notifications/flash-toasts'\nimport { provideAlfakit } from '../context'\nimport { starterKitContext, type StarterKitPageOptions } from './runtime'\n\n/**\n * The Inertia layout around every Alfakit page in starter kit mode, inside the host layout:\n * Alfakit's context, modals, toasts and the reading direction. It stays mounted while the\n * user moves between Alfakit pages.\n */\nconst props = defineProps<{ options?: StarterKitPageOptions }>()\nconst context = starterKitContext(props.options ?? {})\nconst page = usePage<AlfakitPageProps>()\n\nprovideAlfakit(context)\n\n// Endpoints follow the open page (synchronously, before children run actions).\nwatch(\n () => page.props.alfakit?.endpoints,\n (endpoints) => {\n if (endpoints) {\n context.actions.setEndpoints({ action: endpoints.action ?? '', modal: endpoints.modal ?? '' })\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\nonMounted(() => {\n installStarterKitRuntime(\n (notification) => showToast(notification),\n (key, replacements, fallback) => context.translator.t(key, replacements, fallback),\n )\n setToasterId(STARTER_KIT_TOASTER_ID)\n\n watch(\n () => page.props,\n (value) => syncStarterKitPage(value as AlfakitPageProps),\n { immediate: true },\n )\n})\n\nonUnmounted(() => {\n // A host page is open: its errors and toasts are the host's again.\n syncStarterKitPage(null)\n setToasterId(undefined)\n})\n</script>\n\n<template>\n <AlfakitRoot :toaster-id=\"STARTER_KIT_TOASTER_ID\">\n <slot />\n </AlfakitRoot>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AlfakitStarterKitRoot.js","names":["_sfc_main","AlfakitStarterKitRoot_vue_vue_type_script_setup_true_lang_default","AlfakitStarterKitRoot_default"],"sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n STARTER_KIT_TOASTER_ID,\n installStarterKitRuntime,\n syncStarterKitPage,\n type AlfakitPageProps,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { onMounted, onUnmounted, watch } from 'vue'\nimport AlfakitRoot from '../AlfakitRoot.vue'\nimport { setToasterId, showToast } from '../components/notifications/flash-toasts'\nimport { provideAlfakit } from '../context'\nimport { starterKitContext, type StarterKitPageOptions } from './runtime'\n\n/**\n * The Inertia layout around every Alfakit page in starter kit mode, inside the host layout:\n * Alfakit's context, modals, toasts and the reading direction. It stays mounted while the\n * user moves between Alfakit pages.\n */\nconst props = defineProps<{ options?: StarterKitPageOptions }>()\nconst context = starterKitContext(props.options ?? {})\nconst page = usePage<AlfakitPageProps>()\n\nprovideAlfakit(context)\n\n// Endpoints follow the open page (synchronously, before children run actions).\nwatch(\n () => page.props.alfakit?.endpoints,\n (endpoints) => {\n if (endpoints) {\n context.actions.setEndpoints({ action: endpoints.action ?? '', modal: endpoints.modal ?? '' })\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\nonMounted(() => {\n installStarterKitRuntime(\n (notification) => showToast(notification),\n (key, replacements, fallback) => context.translator.t(key, replacements, fallback),\n )\n setToasterId(STARTER_KIT_TOASTER_ID)\n\n watch(\n () => page.props,\n (value) => syncStarterKitPage(value as AlfakitPageProps),\n { immediate: true },\n )\n})\n\nonUnmounted(() => {\n // A host page is open: its errors and toasts are the host's again.\n syncStarterKitPage(null)\n setToasterId(undefined)\n})\n</script>\n\n<template>\n <!-- The reading direction and language of Alfakit's content only: the host layout around it\n (sidebar, header) and the app's own pages keep the document's. -->\n <div\n data-slot=\"starter-kit-root\"\n :dir=\"page.props.alfakit?.localization?.direction ?? 'ltr'\"\n :lang=\"page.props.alfakit?.localization?.tag\"\n class=\"contents\"\n >\n <AlfakitRoot :toaster-id=\"STARTER_KIT_TOASTER_ID\">\n <slot />\n </AlfakitRoot>\n </div>\n</template>\n"],"mappings":""}
@@ -7,9 +7,9 @@ import { type StarterKitPageOptions } from './runtime';
7
7
  type __VLS_Props = {
8
8
  options?: StarterKitPageOptions;
9
9
  };
10
- declare var __VLS_5: {};
10
+ declare var __VLS_4: {};
11
11
  type __VLS_Slots = {} & {
12
- default?: (props: typeof __VLS_5) => any;
12
+ default?: (props: typeof __VLS_4) => any;
13
13
  };
14
14
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
15
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitStarterKitRoot.vue.d.ts","sourceRoot":"","sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"names":[],"mappings":"AA2EA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEzE;;;;GAIG;AACH,KAAK,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC;AA4DvD,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAqB/C,QAAA,MAAM,eAAe,kSAMnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAQ1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"AlfakitStarterKitRoot.vue.d.ts","sourceRoot":"","sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"names":[],"mappings":"AAoFA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEzE;;;;GAIG;AACH,KAAK,WAAW,GAAG;IAAE,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAkEvD,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAqB/C,QAAA,MAAM,eAAe,kSAMnB,CAAC;wBACkB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;AAAzE,wBAA0E;AAQ1E,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -4,32 +4,37 @@ import r from "../AlfakitRoot.js";
4
4
  import { starterKitContext as i } from "./runtime.js";
5
5
  import { STARTER_KIT_TOASTER_ID as a, installStarterKitRuntime as o, syncStarterKitPage as s } from "@alfakit/core";
6
6
  import { usePage as c } from "@inertiajs/vue3";
7
- import { createBlock as l, defineComponent as u, onMounted as d, onUnmounted as f, openBlock as p, renderSlot as m, unref as h, watch as g, withCtx as _ } from "vue";
7
+ import { createElementBlock as l, createVNode as u, defineComponent as d, onMounted as f, onUnmounted as p, openBlock as m, renderSlot as h, unref as g, watch as _, withCtx as v } from "vue";
8
8
  //#region src/starter-kit/AlfakitStarterKitRoot.vue?vue&type=script&setup=true&lang.ts
9
- var v = /*@__PURE__*/ u({
9
+ var y = ["dir", "lang"], b = /*@__PURE__*/ d({
10
10
  __name: "AlfakitStarterKitRoot",
11
11
  props: { options: {} },
12
- setup(u) {
13
- let v = i(u.options ?? {}), y = c();
14
- return e(v), g(() => y.props.alfakit?.endpoints, (e) => {
15
- e && v.actions.setEndpoints({
12
+ setup(d) {
13
+ let b = i(d.options ?? {}), x = c();
14
+ return e(b), _(() => x.props.alfakit?.endpoints, (e) => {
15
+ e && b.actions.setEndpoints({
16
16
  action: e.action ?? "",
17
17
  modal: e.modal ?? ""
18
18
  });
19
19
  }, {
20
20
  immediate: !0,
21
21
  flush: "sync"
22
- }), d(() => {
23
- o((e) => n(e), (e, t, n) => v.translator.t(e, t, n)), t(a), g(() => y.props, (e) => s(e), { immediate: !0 });
24
22
  }), f(() => {
23
+ o((e) => n(e), (e, t, n) => b.translator.t(e, t, n)), t(a), _(() => x.props, (e) => s(e), { immediate: !0 });
24
+ }), p(() => {
25
25
  s(null), t(void 0);
26
- }), (e, t) => (p(), l(r, { "toaster-id": h(a) }, {
27
- default: _(() => [m(e.$slots, "default")]),
26
+ }), (e, t) => (m(), l("div", {
27
+ "data-slot": "starter-kit-root",
28
+ dir: g(x).props.alfakit?.localization?.direction ?? "ltr",
29
+ lang: g(x).props.alfakit?.localization?.tag,
30
+ class: "contents"
31
+ }, [u(r, { "toaster-id": g(a) }, {
32
+ default: v(() => [h(e.$slots, "default")]),
28
33
  _: 3
29
- }, 8, ["toaster-id"]));
34
+ }, 8, ["toaster-id"])], 8, y));
30
35
  }
31
36
  });
32
37
  //#endregion
33
- export { v as default };
38
+ export { b as default };
34
39
 
35
40
  //# sourceMappingURL=AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createBlock","AlfakitRoot","_unref","_withCtx","_renderSlot","AlfakitRoot_default","AlfakitStarterKitRoot_vue_vue_type_script_setup_true_lang_default","context","starterKitContext","__props","page","usePage","provideAlfakit","watch","endpoints","onMounted","installStarterKitRuntime","showToast","notification","key","replacements","fallback","setToasterId","STARTER_KIT_TOASTER_ID","syncStarterKitPage","value","onUnmounted","openBlock","createBlock","unref","withCtx","renderSlot","_ctx"],"sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n STARTER_KIT_TOASTER_ID,\n installStarterKitRuntime,\n syncStarterKitPage,\n type AlfakitPageProps,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { onMounted, onUnmounted, watch } from 'vue'\nimport AlfakitRoot from '../AlfakitRoot.vue'\nimport { setToasterId, showToast } from '../components/notifications/flash-toasts'\nimport { provideAlfakit } from '../context'\nimport { starterKitContext, type StarterKitPageOptions } from './runtime'\n\n/**\n * The Inertia layout around every Alfakit page in starter kit mode, inside the host layout:\n * Alfakit's context, modals, toasts and the reading direction. It stays mounted while the\n * user moves between Alfakit pages.\n */\nconst props = defineProps<{ options?: StarterKitPageOptions }>()\nconst context = starterKitContext(props.options ?? {})\nconst page = usePage<AlfakitPageProps>()\n\nprovideAlfakit(context)\n\n// Endpoints follow the open page (synchronously, before children run actions).\nwatch(\n () => page.props.alfakit?.endpoints,\n (endpoints) => {\n if (endpoints) {\n context.actions.setEndpoints({ action: endpoints.action ?? '', modal: endpoints.modal ?? '' })\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\nonMounted(() => {\n installStarterKitRuntime(\n (notification) => showToast(notification),\n (key, replacements, fallback) => context.translator.t(key, replacements, fallback),\n )\n setToasterId(STARTER_KIT_TOASTER_ID)\n\n watch(\n () => page.props,\n (value) => syncStarterKitPage(value as AlfakitPageProps),\n { immediate: true },\n )\n})\n\nonUnmounted(() => {\n // A host page is open: its errors and toasts are the host's again.\n syncStarterKitPage(null)\n setToasterId(undefined)\n})\n</script>\n\n<template>\n <AlfakitRoot :toaster-id=\"STARTER_KIT_TOASTER_ID\">\n <slot />\n </AlfakitRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;EAoBA,IAAMS,IAAUC,EAAkBV,EAAM,WAAW,CAAC,CAAC,GAC/CY,IAAOC,EAA0B;SAEvCC,EAAeL,CAAO,GAGtBM,QACQH,EAAK,MAAM,SAAS,YACzB,MAAc;GACb,AAAII,KACFP,EAAQ,QAAQ,aAAa;IAAE,QAAQO,EAAU,UAAU;IAAI,OAAOA,EAAU,SAAS;GAAG,CAAC;EAEjG,GACA;GAAE,WAAW;GAAM,OAAO;EAAO,CACnC,GAEAC,QAAgB;GAOd,AANAC,GACG,MAAiBC,EAAUC,CAAY,IACvC,GAAK,GAAc,MAAaX,EAAQ,WAAW,EAAEY,GAAKC,GAAcC,CAAQ,CACnF,GACAC,EAAaC,CAAsB,GAEnCV,QACQH,EAAK,QACV,MAAUc,EAAmBC,CAAyB,GACvD,EAAE,WAAW,GAAK,CACpB;EACF,CAAC,GAEDC,QAAkB;GAGhB,AADAF,EAAmB,IAAI,GACvBF,EAAa,KAAA,CAAS;EACxB,CAAC,cAICvB,EAAA,GAAAC,EAEcC,GAAA,EAFA,cAAYC,EAAAqB,CAAA,EAAsB,GAAA;GAC9C,SAAApB,QAAQ,CAARC,EAAQ4B,EAAA,QAAA,SAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js","names":["props","_openBlock","_createElementBlock","_unref","_createVNode","AlfakitRoot","_withCtx","_renderSlot","AlfakitRoot_default","_hoisted_1","AlfakitStarterKitRoot_vue_vue_type_script_setup_true_lang_default","context","starterKitContext","__props","page","usePage","provideAlfakit","watch","endpoints","onMounted","installStarterKitRuntime","showToast","notification","key","replacements","fallback","setToasterId","STARTER_KIT_TOASTER_ID","syncStarterKitPage","value","onUnmounted","openBlock","createElementBlock","unref","createVNode","withCtx","renderSlot","_ctx"],"sources":["../../src/starter-kit/AlfakitStarterKitRoot.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n STARTER_KIT_TOASTER_ID,\n installStarterKitRuntime,\n syncStarterKitPage,\n type AlfakitPageProps,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport { onMounted, onUnmounted, watch } from 'vue'\nimport AlfakitRoot from '../AlfakitRoot.vue'\nimport { setToasterId, showToast } from '../components/notifications/flash-toasts'\nimport { provideAlfakit } from '../context'\nimport { starterKitContext, type StarterKitPageOptions } from './runtime'\n\n/**\n * The Inertia layout around every Alfakit page in starter kit mode, inside the host layout:\n * Alfakit's context, modals, toasts and the reading direction. It stays mounted while the\n * user moves between Alfakit pages.\n */\nconst props = defineProps<{ options?: StarterKitPageOptions }>()\nconst context = starterKitContext(props.options ?? {})\nconst page = usePage<AlfakitPageProps>()\n\nprovideAlfakit(context)\n\n// Endpoints follow the open page (synchronously, before children run actions).\nwatch(\n () => page.props.alfakit?.endpoints,\n (endpoints) => {\n if (endpoints) {\n context.actions.setEndpoints({ action: endpoints.action ?? '', modal: endpoints.modal ?? '' })\n }\n },\n { immediate: true, flush: 'sync' },\n)\n\nonMounted(() => {\n installStarterKitRuntime(\n (notification) => showToast(notification),\n (key, replacements, fallback) => context.translator.t(key, replacements, fallback),\n )\n setToasterId(STARTER_KIT_TOASTER_ID)\n\n watch(\n () => page.props,\n (value) => syncStarterKitPage(value as AlfakitPageProps),\n { immediate: true },\n )\n})\n\nonUnmounted(() => {\n // A host page is open: its errors and toasts are the host's again.\n syncStarterKitPage(null)\n setToasterId(undefined)\n})\n</script>\n\n<template>\n <!-- The reading direction and language of Alfakit's content only: the host layout around it\n (sidebar, header) and the app's own pages keep the document's. -->\n <div\n data-slot=\"starter-kit-root\"\n :dir=\"page.props.alfakit?.localization?.direction ?? 'ltr'\"\n :lang=\"page.props.alfakit?.localization?.tag\"\n class=\"contents\"\n >\n <AlfakitRoot :toaster-id=\"STARTER_KIT_TOASTER_ID\">\n <slot />\n </AlfakitRoot>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;EAoBA,IAAMW,IAAUC,EAAkBZ,EAAM,WAAW,CAAC,CAAC,GAC/Cc,IAAOC,EAA0B;SAEvCC,EAAeL,CAAO,GAGtBM,QACQH,EAAK,MAAM,SAAS,YACzB,MAAc;GACb,AAAII,KACFP,EAAQ,QAAQ,aAAa;IAAE,QAAQO,EAAU,UAAU;IAAI,OAAOA,EAAU,SAAS;GAAG,CAAC;EAEjG,GACA;GAAE,WAAW;GAAM,OAAO;EAAO,CACnC,GAEAC,QAAgB;GAOd,AANAC,GACG,MAAiBC,EAAUC,CAAY,IACvC,GAAK,GAAc,MAAaX,EAAQ,WAAW,EAAEY,GAAKC,GAAcC,CAAQ,CACnF,GACAC,EAAaC,CAAsB,GAEnCV,QACQH,EAAK,QACV,MAAUc,EAAmBC,CAAyB,GACvD,EAAE,WAAW,GAAK,CACpB;EACF,CAAC,GAEDC,QAAkB;GAGhB,AADAF,EAAmB,IAAI,GACvBF,EAAa,KAAA,CAAS;EACxB,CAAC,cAMCzB,EAAA,GAAAC,EASM,OAAA;GARJ,aAAU;GACT,KAAKC,EAAAW,CAAA,CAAI,CAAC,MAAM,SAAS,cAAc,aAAS;GAChD,MAAMX,EAAAW,CAAA,CAAI,CAAC,MAAM,SAAS,cAAc;GACzC,OAAM;EAENV,GAAAA,CAAAA,EAEcC,GAAA,EAFA,cAAYF,EAAAwB,CAAA,EAAsB,GAAA;GAC9C,SAAArB,QAAQ,CAARC,EAAQ8B,EAAA,QAAA,SAAA,CAAA,CAAA"}