@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.
- package/CHANGELOG.md +16 -0
- package/dist/AlfakitRoot.js.map +1 -1
- package/dist/AlfakitRoot.vue.d.ts.map +1 -1
- package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/AlfakitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionButton.js.map +1 -1
- package/dist/components/actions/ActionButton.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js +160 -159
- package/dist/components/actions/ActionButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionGroupMenu.js.map +1 -1
- package/dist/components/actions/ActionGroupMenu.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js +69 -65
- package/dist/components/actions/ActionGroupMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/actions/ActionModal.js.map +1 -1
- package/dist/components/actions/ActionModal.vue.d.ts.map +1 -1
- package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js +221 -219
- package/dist/components/actions/ActionModal.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ai/AiCopilot.js.map +1 -1
- package/dist/components/ai/AiCopilot.vue.d.ts +2 -0
- package/dist/components/ai/AiCopilot.vue.d.ts.map +1 -1
- package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/ai/AiCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js +19 -19
- package/dist/components/cms/CmsPage.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cms/LivePreview.js.map +1 -1
- package/dist/components/cms/LivePreview.vue.d.ts.map +1 -1
- package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js +83 -83
- package/dist/components/cms/LivePreview.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/BuilderField.js.map +1 -1
- package/dist/components/fields/BuilderField.vue.d.ts.map +1 -1
- package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js +162 -157
- package/dist/components/fields/BuilderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ColorPickerField.js.map +1 -1
- package/dist/components/fields/ColorPickerField.vue.d.ts.map +1 -1
- package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/fields/ColorPickerField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ComboboxSelect.js.map +1 -1
- package/dist/components/fields/ComboboxSelect.vue.d.ts.map +1 -1
- package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/fields/ComboboxSelect.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/FileUploadField.js.map +1 -1
- package/dist/components/fields/FileUploadField.vue.d.ts.map +1 -1
- package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js +183 -183
- package/dist/components/fields/FileUploadField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ImageEditorDialog.js.map +1 -1
- package/dist/components/fields/ImageEditorDialog.vue.d.ts.map +1 -1
- package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js +46 -46
- package/dist/components/fields/ImageEditorDialog.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/KeyValueField.js.map +1 -1
- package/dist/components/fields/KeyValueField.vue.d.ts.map +1 -1
- package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js +66 -66
- package/dist/components/fields/KeyValueField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/ModalTablePicker.js.map +1 -1
- package/dist/components/fields/ModalTablePicker.vue.d.ts.map +1 -1
- package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js +113 -113
- package/dist/components/fields/ModalTablePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/OneTimeCodeInputField.js.map +1 -1
- package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/components/fields/OneTimeCodeInputField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/RepeaterField.js.map +1 -1
- package/dist/components/fields/RepeaterField.vue.d.ts.map +1 -1
- package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js +12 -12
- package/dist/components/fields/RepeaterField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/RichEditorInput.js.map +1 -1
- package/dist/components/fields/RichEditorInput.vue.d.ts.map +1 -1
- package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js +166 -165
- package/dist/components/fields/RichEditorInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/SelectField.js.map +1 -1
- package/dist/components/fields/SelectField.vue.d.ts.map +1 -1
- package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/fields/SelectField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/SliderField.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/TableColumnHeaders.js.map +1 -1
- package/dist/components/fields/TableColumnHeaders.vue.d.ts.map +1 -1
- package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js +6 -3
- package/dist/components/fields/TableColumnHeaders.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/fields/item-actions.d.ts +2 -2
- package/dist/components/fields/item-actions.d.ts.map +1 -1
- package/dist/components/fields/item-actions.js +31 -31
- package/dist/components/fields/item-actions.js.map +1 -1
- package/dist/components/file-manager/FileManagerView.js.map +1 -1
- package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/file-manager/FileManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/FormBlock.js.map +1 -1
- package/dist/components/form/FormBlock.vue.d.ts.map +1 -1
- package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js +81 -77
- package/dist/components/form/FormBlock.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/form/form-context.js +25 -25
- package/dist/components/form/form-context.js.map +1 -1
- package/dist/components/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/kanban/KanbanBoard.vue.d.ts.map +1 -1
- package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js +5 -2
- package/dist/components/kanban/KanbanBoard.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.js.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.vue.d.ts.map +1 -1
- package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js +64 -64
- package/dist/components/kanban/KanbanColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/FusedGroupComponent.js.map +1 -1
- package/dist/components/layout/FusedGroupComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/layout/FusedGroupComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/SectionComponent.js.map +1 -1
- package/dist/components/layout/SectionComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js +23 -23
- package/dist/components/layout/SectionComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/TabsComponent.js.map +1 -1
- package/dist/components/layout/TabsComponent.vue.d.ts.map +1 -1
- package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js +76 -55
- package/dist/components/layout/TabsComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/notifications/NotificationsMenu.js.map +1 -1
- package/dist/components/notifications/NotificationsMenu.vue.d.ts.map +1 -1
- package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js +44 -42
- package/dist/components/notifications/NotificationsMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/components/panel/DebugPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/GlobalSearch.js.map +1 -1
- package/dist/components/panel/GlobalSearch.vue.d.ts.map +1 -1
- package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/panel/GlobalSearch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.js.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.vue.d.ts.map +1 -1
- package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js +102 -96
- package/dist/components/panel/GlobalSearchPalette.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js +10 -10
- package/dist/components/panel/NavGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/components/panel/NavGroupFlyout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/components/panel/NavItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js +10 -10
- package/dist/components/panel/NavSubItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/ShortcutKeys.js.map +1 -1
- package/dist/components/panel/ShortcutKeys.vue.d.ts.map +1 -1
- package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js +4 -1
- package/dist/components/panel/ShortcutKeys.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/TenantMenu.js.map +1 -1
- package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js +37 -37
- package/dist/components/panel/TenantMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js +11 -11
- package/dist/components/panel/Topbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/realtime/use-live-updates.d.ts.map +1 -1
- package/dist/components/realtime/use-live-updates.js +24 -23
- package/dist/components/realtime/use-live-updates.js.map +1 -1
- package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/table/BooleanCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ColumnHeader.js.map +1 -1
- package/dist/components/table/ColumnHeader.vue.d.ts.map +1 -1
- package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js +55 -49
- package/dist/components/table/ColumnHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ColumnManager.js.map +1 -1
- package/dist/components/table/ColumnManager.vue.d.ts.map +1 -1
- package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/table/ColumnManager.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/ContentLayoutSort.js.map +1 -1
- package/dist/components/table/ContentLayoutSort.vue.d.ts.map +1 -1
- package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/table/ContentLayoutSort.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/GroupHeaderRow.js.map +1 -1
- package/dist/components/table/GroupHeaderRow.vue.d.ts.map +1 -1
- package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js +55 -34
- package/dist/components/table/GroupHeaderRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/SelectCell.js.map +1 -1
- package/dist/components/table/SelectCell.vue.d.ts.map +1 -1
- package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js +26 -20
- package/dist/components/table/SelectCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/table/SelectComboboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TableCellContent.js.map +1 -1
- package/dist/components/table/TableCellContent.vue.d.ts.map +1 -1
- package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/components/table/TableCellContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TablePagination.js.map +1 -1
- package/dist/components/table/TablePagination.vue.d.ts.map +1 -1
- package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js +87 -87
- package/dist/components/table/TablePagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/TextInputCell.js.map +1 -1
- package/dist/components/table/TextInputCell.vue.d.ts.map +1 -1
- package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js +40 -34
- package/dist/components/table/TextInputCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/cell-update.d.ts +6 -0
- package/dist/components/table/cell-update.d.ts.map +1 -1
- package/dist/components/table/cell-update.js.map +1 -1
- package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/translation-manager/TranslationManagerView.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/CommandAutoHighlight.js +7 -0
- package/dist/components/ui/CommandAutoHighlight.js.map +1 -0
- package/dist/components/ui/CommandAutoHighlight.vue.d.ts +21 -0
- package/dist/components/ui/CommandAutoHighlight.vue.d.ts.map +1 -0
- package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js +18 -0
- package/dist/components/ui/CommandAutoHighlight.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/ui/DialogContent.js.map +1 -1
- package/dist/components/ui/DialogContent.vue.d.ts.map +1 -1
- package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/ui/DialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/PopoverContent.js.map +1 -1
- package/dist/components/ui/PopoverContent.vue.d.ts.map +1 -1
- package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js +9 -8
- package/dist/components/ui/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/SheetContent.js.map +1 -1
- package/dist/components/ui/SheetContent.vue.d.ts.map +1 -1
- package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js +13 -12
- package/dist/components/ui/SheetContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/ui/TooltipContent.js.map +1 -1
- package/dist/components/ui/TooltipContent.vue.d.ts.map +1 -1
- package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js +9 -8
- package/dist/components/ui/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components.css +347 -0
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +29 -26
- package/dist/context.js.map +1 -1
- package/dist/create-alfakit.d.ts.map +1 -1
- package/dist/create-alfakit.js +33 -31
- package/dist/create-alfakit.js.map +1 -1
- package/dist/eject-manifest.json +11 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +219 -217
- package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/layouts/AppLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/AuthLayout.vue_vue_type_script_setup_true_lang.js +9 -9
- package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js +8 -8
- package/dist/layouts/FullscreenLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js +15 -15
- package/dist/layouts/TopNavLayout.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/layouts/lazy-layouts.d.ts +10 -0
- package/dist/layouts/lazy-layouts.d.ts.map +1 -0
- package/dist/layouts/lazy-layouts.js +8 -0
- package/dist/layouts/lazy-layouts.js.map +1 -0
- package/dist/layouts/panel-layouts.d.ts +8 -0
- package/dist/layouts/panel-layouts.d.ts.map +1 -0
- package/dist/layouts/panel-layouts.js +15 -0
- package/dist/layouts/panel-layouts.js.map +1 -0
- package/dist/lib/lazy.d.ts.map +1 -1
- package/dist/lib/lazy.js +2 -2
- package/dist/lib/lazy.js.map +1 -1
- package/dist/pages/PageShell.js.map +1 -1
- package/dist/pages/PageShell.vue.d.ts.map +1 -1
- package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js +39 -42
- package/dist/pages/PageShell.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone/AlfakitComponent.js.map +1 -1
- package/dist/standalone/AlfakitComponent.vue.d.ts.map +1 -1
- package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js +56 -52
- package/dist/standalone/AlfakitComponent.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone/AlfakitToaster.js.map +1 -1
- package/dist/standalone/AlfakitToaster.vue.d.ts.map +1 -1
- package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js +23 -15
- package/dist/standalone/AlfakitToaster.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/standalone.css +54 -0
- package/dist/starter-kit/AlfakitStarterKitRoot.js.map +1 -1
- package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts +2 -2
- package/dist/starter-kit/AlfakitStarterKitRoot.vue.d.ts.map +1 -1
- package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js +17 -12
- package/dist/starter-kit/AlfakitStarterKitRoot.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/dashboard-widgets.d.ts +54 -0
- package/dist/starter-kit/dashboard-widgets.d.ts.map +1 -0
- package/dist/starter-kit/dashboard-widgets.js +54 -0
- package/dist/starter-kit/dashboard-widgets.js.map +1 -0
- package/dist/starter-kit/index.d.ts +2 -1
- package/dist/starter-kit/index.d.ts.map +1 -1
- package/dist/starter-kit/index.js +5 -4
- package/dist/starter-kit/runtime.d.ts +6 -0
- package/dist/starter-kit/runtime.d.ts.map +1 -1
- package/dist/starter-kit/runtime.js +19 -15
- package/dist/starter-kit/runtime.js.map +1 -1
- package/dist/starter-kit/starter-kit.d.ts.map +1 -1
- package/dist/starter-kit/starter-kit.js +8 -8
- package/dist/starter-kit/starter-kit.js.map +1 -1
- package/dist/starter-kit/widgets/CopilotTrigger.js +7 -0
- package/dist/starter-kit/widgets/CopilotTrigger.js.map +1 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts +12 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js +23 -0
- package/dist/starter-kit/widgets/CopilotTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.js +7 -0
- package/dist/starter-kit/widgets/LoadedCopilot.js.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts +8 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js +31 -0
- package/dist/starter-kit/widgets/LoadedCopilot.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/SearchTrigger.js.map +1 -1
- package/dist/starter-kit/widgets/SearchTrigger.vue.d.ts.map +1 -1
- package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/starter-kit/widgets/SearchTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js +7 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.js.map +1 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts +8 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue.d.ts.map +1 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/starter-kit/widgets/StarterKitImpersonationBanner.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/starter-kit/widgets/TenantChooser.js.map +1 -1
- package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/starter-kit/widgets/TenantChooser.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/starter-kit/widgets/index.d.ts +40 -9
- package/dist/starter-kit/widgets/index.d.ts.map +1 -1
- package/dist/starter-kit/widgets/index.js +21 -18
- package/dist/starter-kit/widgets/index.js.map +1 -1
- package/dist/starter-kit/widgets/loaded.d.ts +10 -0
- package/dist/starter-kit/widgets/loaded.d.ts.map +1 -0
- package/dist/starter-kit/widgets/loaded.js +5 -0
- package/dist/styles.css +9 -2
- package/dist/themes.css +8 -335
- package/package.json +3 -3
- package/src/AlfakitRoot.vue +9 -1
- package/src/components/actions/ActionButton.vue +14 -6
- package/src/components/actions/ActionGroupMenu.vue +13 -1
- package/src/components/actions/ActionModal.vue +12 -1
- package/src/components/ai/AiCopilot.vue +7 -1
- package/src/components/cms/LivePreview.vue +8 -2
- package/src/components/fields/BuilderField.vue +15 -2
- package/src/components/fields/ColorPickerField.vue +1 -0
- package/src/components/fields/ComboboxSelect.vue +1 -1
- package/src/components/fields/FileUploadField.vue +14 -11
- package/src/components/fields/ImageEditorDialog.vue +7 -3
- package/src/components/fields/KeyValueField.vue +3 -2
- package/src/components/fields/ModalTablePicker.vue +7 -2
- package/src/components/fields/OneTimeCodeInputField.vue +1 -1
- package/src/components/fields/RepeaterField.vue +2 -3
- package/src/components/fields/RichEditorInput.vue +3 -0
- package/src/components/fields/SelectField.vue +4 -2
- package/src/components/fields/TableColumnHeaders.vue +6 -1
- package/src/components/fields/item-actions.ts +31 -10
- package/src/components/file-manager/FileManagerView.vue +1 -1
- package/src/components/form/FormBlock.vue +26 -1
- package/src/components/form/form-context.ts +3 -3
- package/src/components/kanban/KanbanBoard.vue +15 -3
- package/src/components/kanban/KanbanColumnHeader.vue +6 -4
- package/src/components/layout/FusedGroupComponent.vue +1 -0
- package/src/components/layout/SectionComponent.vue +10 -4
- package/src/components/layout/TabsComponent.vue +61 -5
- package/src/components/notifications/NotificationsMenu.vue +11 -0
- package/src/components/panel/GlobalSearch.vue +1 -0
- package/src/components/panel/GlobalSearchPalette.vue +2 -0
- package/src/components/panel/ShortcutKeys.vue +1 -0
- package/src/components/panel/TenantMenu.vue +2 -2
- package/src/components/realtime/use-live-updates.ts +3 -1
- package/src/components/table/ColumnHeader.vue +23 -12
- package/src/components/table/ColumnManager.vue +12 -8
- package/src/components/table/ContentLayoutSort.vue +7 -1
- package/src/components/table/GroupHeaderRow.vue +27 -0
- package/src/components/table/SelectCell.vue +5 -2
- package/src/components/table/TableCellContent.vue +4 -2
- package/src/components/table/TablePagination.vue +12 -7
- package/src/components/table/TextInputCell.vue +11 -5
- package/src/components/table/cell-update.ts +6 -0
- package/src/components/ui/CommandAutoHighlight.vue +27 -0
- package/src/components/ui/DialogContent.vue +5 -1
- package/src/components/ui/PopoverContent.vue +5 -1
- package/src/components/ui/SheetContent.vue +5 -1
- package/src/components/ui/TooltipContent.vue +5 -1
- package/src/context.ts +10 -0
- package/src/create-alfakit.ts +5 -0
- package/src/index.ts +2 -0
- package/src/layouts/lazy-layouts.ts +14 -0
- package/src/layouts/panel-layouts.ts +17 -0
- package/src/lib/lazy.ts +11 -1
- package/src/pages/PageShell.vue +5 -6
- package/src/standalone/AlfakitComponent.vue +17 -6
- package/src/standalone/AlfakitToaster.vue +12 -2
- package/src/starter-kit/AlfakitStarterKitRoot.vue +12 -3
- package/src/starter-kit/dashboard-widgets.ts +93 -0
- package/src/starter-kit/index.ts +7 -1
- package/src/starter-kit/runtime.ts +17 -1
- package/src/starter-kit/starter-kit.ts +2 -1
- package/src/starter-kit/widgets/CopilotTrigger.vue +58 -0
- package/src/starter-kit/widgets/LoadedCopilot.vue +29 -0
- package/src/starter-kit/widgets/SearchTrigger.vue +1 -0
- package/src/starter-kit/widgets/StarterKitImpersonationBanner.vue +57 -0
- package/src/starter-kit/widgets/TenantChooser.vue +1 -1
- package/src/starter-kit/widgets/index.ts +56 -11
- package/src/starter-kit/widgets/loaded.ts +9 -0
- package/src/styles.css +9 -2
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Component styles shared by panels (themes.css) and by Alfakit outside panels
|
|
3
|
+
* (standalone.css, starter-kit panels): chart colours, RichEditor columns, the calendar,
|
|
4
|
+
* tree and Kanban plugins, and field positioning. They read the theme tokens (`--primary`,
|
|
5
|
+
* `--border`…), whichever stylesheet defines them. Copied into each renderer's dist.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/* ------------------------------------------------------------------ Charts */
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* Chart.js paints axes, legends and tooltips on the canvas, so chart widgets read these
|
|
12
|
+
* properties from <html> (re-read when the theme or dark mode changes). Colours take any
|
|
13
|
+
* CSS colour; the widths and radius are unitless numbers. Override them in a theme:
|
|
14
|
+
* :root[data-alfakit-theme~='acme'] { --chart-tooltip-bg: oklch(0.2 0 0); }
|
|
15
|
+
* Stat sparklines (`[data-slot='stat-chart']`) use the `--stat-chart-*` properties.
|
|
16
|
+
*/
|
|
17
|
+
:root {
|
|
18
|
+
--chart-text: var(--muted-foreground);
|
|
19
|
+
--chart-grid: var(--border);
|
|
20
|
+
--chart-legend-foreground: var(--muted-foreground);
|
|
21
|
+
--chart-tooltip-bg: var(--popover);
|
|
22
|
+
--chart-tooltip-foreground: var(--popover-foreground);
|
|
23
|
+
--chart-tooltip-border: var(--border);
|
|
24
|
+
--chart-tooltip-border-width: 1;
|
|
25
|
+
--chart-tooltip-radius: 6;
|
|
26
|
+
--stat-chart-stroke-width: 2;
|
|
27
|
+
--stat-chart-fill-opacity: 0.12;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/*
|
|
31
|
+
* RichEditor `grid` column blocks and `lead` / `small` text, in the editor and in rendered
|
|
32
|
+
* content (`RichContentRenderer`). Columns stack on small screens. Stored as
|
|
33
|
+
* `<div data-type="grid" class="alfakit-grid alfakit-grid-cols-2"><div data-type="gridColumn">`
|
|
34
|
+
* and `<p class="alfakit-lead">`; copy these rules when showing content outside a panel.
|
|
35
|
+
*/
|
|
36
|
+
:where(.alfakit-grid) {
|
|
37
|
+
display: grid;
|
|
38
|
+
gap: 1rem;
|
|
39
|
+
grid-template-columns: minmax(0, 1fr);
|
|
40
|
+
margin-block: 0.5rem;
|
|
41
|
+
}
|
|
42
|
+
:where(.alfakit-grid-column) {
|
|
43
|
+
min-width: 0;
|
|
44
|
+
}
|
|
45
|
+
:where(.alfakit-grid-column) > :first-child {
|
|
46
|
+
margin-block-start: 0;
|
|
47
|
+
}
|
|
48
|
+
@media (min-width: 768px) {
|
|
49
|
+
:where(.alfakit-grid-cols-2) {
|
|
50
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
51
|
+
}
|
|
52
|
+
:where(.alfakit-grid-cols-3) {
|
|
53
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
54
|
+
}
|
|
55
|
+
:where(.alfakit-grid-cols-4) {
|
|
56
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
57
|
+
}
|
|
58
|
+
:where(.alfakit-grid-cols-5) {
|
|
59
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
60
|
+
}
|
|
61
|
+
:where(.alfakit-grid-cols-6) {
|
|
62
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
:where([contenteditable] .alfakit-grid-column) {
|
|
66
|
+
border: 1px dashed var(--border);
|
|
67
|
+
border-radius: 0.375rem;
|
|
68
|
+
padding: 0.25rem 0.5rem;
|
|
69
|
+
}
|
|
70
|
+
:where(.alfakit-lead) {
|
|
71
|
+
font-size: 1.125em;
|
|
72
|
+
line-height: 1.6;
|
|
73
|
+
}
|
|
74
|
+
:where(.alfakit-prose small) {
|
|
75
|
+
font-size: 0.8125em;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* ---------------------------------------------------------- Calendar and tree */
|
|
79
|
+
|
|
80
|
+
/*
|
|
81
|
+
* The calendar widget (alfasix/alfakit-calendar) draws FullCalendar inside
|
|
82
|
+
* `[data-slot="calendar"]`; FullCalendar reads these `--fc-*` variables, so every theme's
|
|
83
|
+
* tokens (and dark mode) apply. Override them on the slot to restyle one calendar.
|
|
84
|
+
*/
|
|
85
|
+
:where(.fc[data-slot='calendar']) {
|
|
86
|
+
--fc-small-font-size: 0.75rem;
|
|
87
|
+
--fc-page-bg-color: var(--card);
|
|
88
|
+
--fc-neutral-bg-color: var(--muted);
|
|
89
|
+
--fc-neutral-text-color: var(--muted-foreground);
|
|
90
|
+
--fc-border-color: var(--border);
|
|
91
|
+
--fc-button-text-color: var(--foreground);
|
|
92
|
+
--fc-button-bg-color: var(--background);
|
|
93
|
+
--fc-button-border-color: var(--border);
|
|
94
|
+
--fc-button-hover-bg-color: var(--accent);
|
|
95
|
+
--fc-button-hover-border-color: var(--border);
|
|
96
|
+
--fc-button-active-bg-color: var(--secondary);
|
|
97
|
+
--fc-button-active-border-color: var(--border);
|
|
98
|
+
--fc-event-bg-color: var(--primary);
|
|
99
|
+
--fc-event-border-color: var(--primary);
|
|
100
|
+
--fc-event-text-color: var(--primary-foreground);
|
|
101
|
+
--fc-event-selected-overlay-color: color-mix(in oklab, var(--foreground) 25%, transparent);
|
|
102
|
+
--fc-more-link-bg-color: var(--muted);
|
|
103
|
+
--fc-more-link-text-color: var(--foreground);
|
|
104
|
+
--fc-non-business-color: color-mix(in oklab, var(--muted) 60%, transparent);
|
|
105
|
+
--fc-bg-event-color: var(--primary);
|
|
106
|
+
--fc-bg-event-opacity: 0.2;
|
|
107
|
+
--fc-highlight-color: color-mix(in oklab, var(--primary) 15%, transparent);
|
|
108
|
+
--fc-today-bg-color: color-mix(in oklab, var(--primary) 6%, transparent);
|
|
109
|
+
--fc-now-indicator-color: var(--destructive);
|
|
110
|
+
--fc-list-event-hover-bg-color: var(--accent);
|
|
111
|
+
color: var(--card-foreground);
|
|
112
|
+
}
|
|
113
|
+
/*
|
|
114
|
+
* FullCalendar puts its `fc` class on the slot element itself and injects its own CSS
|
|
115
|
+
* (`.fc .fc-button`, two classes), so these rules are plain selectors anchored on
|
|
116
|
+
* `.fc[data-slot='calendar']` (three) rather than `:where()`, which would always lose.
|
|
117
|
+
* Restyle one calendar with a more specific selector or with the `--fc-*` variables.
|
|
118
|
+
*/
|
|
119
|
+
.fc[data-slot='calendar'] .fc-toolbar-title {
|
|
120
|
+
font-size: 1.125rem;
|
|
121
|
+
font-weight: 600;
|
|
122
|
+
line-height: 1.75rem;
|
|
123
|
+
color: var(--foreground);
|
|
124
|
+
}
|
|
125
|
+
.fc[data-slot='calendar'] .fc-button {
|
|
126
|
+
display: inline-flex;
|
|
127
|
+
align-items: center;
|
|
128
|
+
justify-content: center;
|
|
129
|
+
min-height: 2.25rem;
|
|
130
|
+
padding: 0.375rem 0.75rem;
|
|
131
|
+
border-radius: var(--radius);
|
|
132
|
+
font-size: 0.875rem;
|
|
133
|
+
font-weight: 500;
|
|
134
|
+
line-height: 1.25rem;
|
|
135
|
+
box-shadow: none;
|
|
136
|
+
text-transform: capitalize;
|
|
137
|
+
}
|
|
138
|
+
.fc[data-slot='calendar'] .fc-button .fc-icon {
|
|
139
|
+
font-size: 1.125rem;
|
|
140
|
+
}
|
|
141
|
+
.fc[data-slot='calendar'] .fc-button-group > .fc-button:not(:first-child) {
|
|
142
|
+
border-start-start-radius: 0;
|
|
143
|
+
border-end-start-radius: 0;
|
|
144
|
+
}
|
|
145
|
+
.fc[data-slot='calendar'] .fc-button-group > .fc-button:not(:last-child) {
|
|
146
|
+
border-start-end-radius: 0;
|
|
147
|
+
border-end-end-radius: 0;
|
|
148
|
+
}
|
|
149
|
+
.fc[data-slot='calendar'] .fc-button-primary:disabled {
|
|
150
|
+
opacity: 0.5;
|
|
151
|
+
}
|
|
152
|
+
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled).fc-button-active,
|
|
153
|
+
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled):active {
|
|
154
|
+
color: var(--secondary-foreground);
|
|
155
|
+
}
|
|
156
|
+
.fc[data-slot='calendar'] .fc-button-primary:focus,
|
|
157
|
+
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled).fc-button-active:focus,
|
|
158
|
+
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled):active:focus {
|
|
159
|
+
box-shadow: none;
|
|
160
|
+
}
|
|
161
|
+
.fc[data-slot='calendar'] .fc-button:focus-visible {
|
|
162
|
+
outline: 2px solid var(--ring);
|
|
163
|
+
outline-offset: 2px;
|
|
164
|
+
z-index: 2;
|
|
165
|
+
}
|
|
166
|
+
.fc[data-slot='calendar'] a {
|
|
167
|
+
color: inherit;
|
|
168
|
+
}
|
|
169
|
+
.fc[data-slot='calendar'] .fc-daygrid-day-number,
|
|
170
|
+
.fc[data-slot='calendar'] .fc-col-header-cell-cushion {
|
|
171
|
+
text-decoration: none;
|
|
172
|
+
}
|
|
173
|
+
.fc[data-slot='calendar'] .fc-col-header-cell-cushion {
|
|
174
|
+
padding-block: 0.375rem;
|
|
175
|
+
font-size: 0.75rem;
|
|
176
|
+
font-weight: 500;
|
|
177
|
+
color: var(--muted-foreground);
|
|
178
|
+
}
|
|
179
|
+
.fc[data-slot='calendar'] .fc-daygrid-day-number {
|
|
180
|
+
font-size: 0.875rem;
|
|
181
|
+
}
|
|
182
|
+
.fc[data-slot='calendar'] .fc-day-other .fc-daygrid-day-number {
|
|
183
|
+
color: var(--muted-foreground);
|
|
184
|
+
}
|
|
185
|
+
/* Today: a tinted cell (`--fc-today-bg-color`) and the date in a primary pill. */
|
|
186
|
+
.fc[data-slot='calendar'] .fc-daygrid-day.fc-day-today .fc-daygrid-day-number {
|
|
187
|
+
display: inline-flex;
|
|
188
|
+
align-items: center;
|
|
189
|
+
justify-content: center;
|
|
190
|
+
min-width: 1.75rem;
|
|
191
|
+
height: 1.75rem;
|
|
192
|
+
margin: 0.25rem;
|
|
193
|
+
padding: 0 0.375rem;
|
|
194
|
+
border-radius: 9999px;
|
|
195
|
+
background: var(--primary);
|
|
196
|
+
color: var(--primary-foreground);
|
|
197
|
+
font-weight: 600;
|
|
198
|
+
}
|
|
199
|
+
.fc[data-slot='calendar'] .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion {
|
|
200
|
+
color: var(--primary);
|
|
201
|
+
font-weight: 600;
|
|
202
|
+
}
|
|
203
|
+
.fc[data-slot='calendar'] .fc-event {
|
|
204
|
+
border-radius: min(var(--radius), 0.375rem);
|
|
205
|
+
}
|
|
206
|
+
.fc[data-slot='calendar'] .fc-daygrid-event,
|
|
207
|
+
.fc[data-slot='calendar'] .fc-timegrid-event .fc-event-main,
|
|
208
|
+
.fc[data-slot='calendar'] .fc-list-event td {
|
|
209
|
+
font-size: 0.75rem;
|
|
210
|
+
}
|
|
211
|
+
/* Clipped titles keep their beginning and end with an ellipsis, also a Latin title in a
|
|
212
|
+
right-to-left calendar (its direction follows its own text). */
|
|
213
|
+
.fc[data-slot='calendar'] .fc-event-title {
|
|
214
|
+
text-overflow: ellipsis;
|
|
215
|
+
unicode-bidi: plaintext;
|
|
216
|
+
text-align: start;
|
|
217
|
+
}
|
|
218
|
+
.fc[data-slot='calendar'] .fc-daygrid-dot-event:hover,
|
|
219
|
+
.fc[data-slot='calendar'] .fc-daygrid-dot-event.fc-event-mirror {
|
|
220
|
+
background: var(--accent);
|
|
221
|
+
}
|
|
222
|
+
.fc[data-slot='calendar'] .fc-list-day-cushion,
|
|
223
|
+
.fc[data-slot='calendar'] .fc-popover-header {
|
|
224
|
+
color: var(--foreground);
|
|
225
|
+
}
|
|
226
|
+
.fc[data-slot='calendar'] .fc-popover {
|
|
227
|
+
border-radius: var(--radius);
|
|
228
|
+
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
229
|
+
overflow: hidden;
|
|
230
|
+
}
|
|
231
|
+
.fc[data-slot='calendar'] .fc-timegrid-slot-label,
|
|
232
|
+
.fc[data-slot='calendar'] .fc-timegrid-axis,
|
|
233
|
+
.fc[data-slot='calendar'] .fc-list-event-time {
|
|
234
|
+
color: var(--muted-foreground);
|
|
235
|
+
font-size: 0.75rem;
|
|
236
|
+
}
|
|
237
|
+
/*
|
|
238
|
+
* The list view hides its column headers for screen readers with `left: -10000px`. Right to
|
|
239
|
+
* left that is scrollable overflow: the whole page gains a 10 000 px horizontal scroll and the
|
|
240
|
+
* top bar slides under the sidebar. Clip it in place instead (still read by screen readers).
|
|
241
|
+
*/
|
|
242
|
+
.fc[data-slot='calendar'] .fc-list-table thead {
|
|
243
|
+
left: auto;
|
|
244
|
+
inset-inline-start: 0;
|
|
245
|
+
width: 1px;
|
|
246
|
+
height: 1px;
|
|
247
|
+
overflow: hidden;
|
|
248
|
+
clip-path: inset(50%);
|
|
249
|
+
white-space: nowrap;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/*
|
|
253
|
+
* Fields contain what they position. Headless switches, checkboxes and radios render a
|
|
254
|
+
* visually hidden native input beside the control, absolutely positioned (and shifted by
|
|
255
|
+
* -100%); without a positioned field it lands at the page edge and, right to left, widens
|
|
256
|
+
* the page on phones.
|
|
257
|
+
*/
|
|
258
|
+
:where([data-slot='field']) {
|
|
259
|
+
position: relative;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/*
|
|
263
|
+
* Narrow screens: FullCalendar keeps its header toolbar on one row, wider than a phone.
|
|
264
|
+
* Its chunks (navigation, title, views) wrap instead, and the title shrinks. Flex gaps and
|
|
265
|
+
* `justify-content` follow the writing direction, so this works right to left too. (Plain
|
|
266
|
+
* selectors: FullCalendar injects its own CSS, which would beat `:where()`; the slot is
|
|
267
|
+
* the `.fc` element itself.)
|
|
268
|
+
*/
|
|
269
|
+
@media (max-width: 39.99rem) {
|
|
270
|
+
[data-slot='calendar'] .fc-toolbar.fc-header-toolbar {
|
|
271
|
+
flex-wrap: wrap;
|
|
272
|
+
gap: 0.5rem;
|
|
273
|
+
}
|
|
274
|
+
[data-slot='calendar'] .fc-toolbar .fc-toolbar-chunk {
|
|
275
|
+
display: flex;
|
|
276
|
+
flex-wrap: wrap;
|
|
277
|
+
align-items: center;
|
|
278
|
+
gap: 0.25rem;
|
|
279
|
+
min-width: 0;
|
|
280
|
+
}
|
|
281
|
+
[data-slot='calendar'] .fc-toolbar .fc-toolbar-title {
|
|
282
|
+
font-size: 1rem;
|
|
283
|
+
overflow-wrap: anywhere;
|
|
284
|
+
}
|
|
285
|
+
[data-slot='calendar'] .fc-toolbar .fc-button {
|
|
286
|
+
font-size: 0.8125rem;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/*
|
|
291
|
+
* The tree (alfasix/alfakit-tree): the drop indicator while dragging. Rows carry
|
|
292
|
+
* `data-drop="before|after|inside"`; lines are drawn above or below the row, so they
|
|
293
|
+
* need no direction.
|
|
294
|
+
*/
|
|
295
|
+
:where([data-slot='tree-item'][data-drop='before']) {
|
|
296
|
+
box-shadow: inset 0 2px 0 0 var(--primary);
|
|
297
|
+
}
|
|
298
|
+
:where([data-slot='tree-item'][data-drop='after']) {
|
|
299
|
+
box-shadow: inset 0 -2px 0 0 var(--primary);
|
|
300
|
+
}
|
|
301
|
+
:where([data-slot='tree-item'][data-drop='inside']) {
|
|
302
|
+
background-color: color-mix(in oklab, var(--primary) 10%, transparent);
|
|
303
|
+
outline: 1px dashed var(--primary);
|
|
304
|
+
outline-offset: -1px;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/*
|
|
308
|
+
* The Kanban board (alfasix/alfakit-kanban). A card being dragged leaves a dashed
|
|
309
|
+
* placeholder (`data-picked="pointer"`) while a copy follows the pointer
|
|
310
|
+
* (`data-slot="kanban-ghost"`); a card picked up with the keyboard is lifted
|
|
311
|
+
* (`data-picked="keyboard"`). A list the picked card may not enter has `data-refused`.
|
|
312
|
+
*/
|
|
313
|
+
:where([data-slot='kanban-card'][data-picked='pointer']) {
|
|
314
|
+
opacity: 0.45;
|
|
315
|
+
}
|
|
316
|
+
:where([data-slot='kanban-card'][data-picked='pointer'] > [data-slot='kanban-card-body']) {
|
|
317
|
+
border-style: dashed;
|
|
318
|
+
box-shadow: none;
|
|
319
|
+
}
|
|
320
|
+
:where([data-slot='kanban-card'][data-picked='keyboard'] > [data-slot='kanban-card-body']) {
|
|
321
|
+
outline: 2px solid var(--primary);
|
|
322
|
+
outline-offset: 2px;
|
|
323
|
+
box-shadow: 0 10px 24px -12px color-mix(in oklab, var(--foreground) 45%, transparent);
|
|
324
|
+
}
|
|
325
|
+
:where([data-slot='kanban-card'][data-saving]) {
|
|
326
|
+
opacity: 0.7;
|
|
327
|
+
}
|
|
328
|
+
:where([data-slot='kanban-ghost']) {
|
|
329
|
+
cursor: grabbing;
|
|
330
|
+
list-style: none;
|
|
331
|
+
box-shadow: 0 18px 40px -16px color-mix(in oklab, var(--foreground) 55%, transparent);
|
|
332
|
+
}
|
|
333
|
+
:where([data-slot='kanban-dropzone'][data-refused]) {
|
|
334
|
+
background-color: color-mix(in oklab, var(--destructive) 8%, transparent);
|
|
335
|
+
outline: 1px dashed var(--destructive);
|
|
336
|
+
outline-offset: -1px;
|
|
337
|
+
}
|
|
338
|
+
:where(body[data-kanban-dragging]) {
|
|
339
|
+
cursor: grabbing;
|
|
340
|
+
user-select: none;
|
|
341
|
+
-webkit-user-select: none;
|
|
342
|
+
}
|
|
343
|
+
@media (prefers-reduced-motion: reduce) {
|
|
344
|
+
:where([data-slot='kanban-card'] > [data-slot='kanban-card-body']) {
|
|
345
|
+
transition: none;
|
|
346
|
+
}
|
|
347
|
+
}
|
package/dist/context.d.ts
CHANGED
|
@@ -12,6 +12,11 @@ export interface AlfakitContextValue {
|
|
|
12
12
|
* their own schemas by token.
|
|
13
13
|
*/
|
|
14
14
|
poll?: (target: string, interval: string | number | null | undefined) => () => void;
|
|
15
|
+
/**
|
|
16
|
+
* Fetches fresh schemas of components now (`live()` tables and widgets after a record
|
|
17
|
+
* change). Panels leave it out (a partial reload); components outside panels fetch theirs.
|
|
18
|
+
*/
|
|
19
|
+
refresh?: (targets: string[]) => Promise<void>;
|
|
15
20
|
}
|
|
16
21
|
export declare const ALFAKIT_KEY: InjectionKey<AlfakitContextValue>;
|
|
17
22
|
/**
|
|
@@ -29,6 +34,8 @@ export declare function useStandalone(): StandaloneContextValue | null;
|
|
|
29
34
|
export declare function useOptionalAlfakit(): AlfakitContextValue | null;
|
|
30
35
|
/** Poll a component (`table`, `widget:<id>`); the returned function stops it. */
|
|
31
36
|
export declare function usePollComponent(): NonNullable<AlfakitContextValue['poll']>;
|
|
37
|
+
/** How `live()` components refresh: their own fetch outside panels, else a partial reload. */
|
|
38
|
+
export declare function useRefreshComponents(): AlfakitContextValue['refresh'];
|
|
32
39
|
export declare function provideAlfakit(value: AlfakitContextValue): void;
|
|
33
40
|
export declare function useAlfakit(): AlfakitContextValue;
|
|
34
41
|
/** The shared `alfakit` prop (panel, navigation, user, endpoints…). */
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAGf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,KAAK,CAAA;AAGZ,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;AAEzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACnC,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAGf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,KAAK,CAAA;AAGZ,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;AAEzC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAA;IACzC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACnC,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,UAAU,CAAA;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAAK,MAAM,IAAI,CAAA;IACnF;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC/C;AAED,eAAO,MAAM,WAAW,EAAE,YAAY,CAAC,mBAAmB,CAAqB,CAAA;AAE/E;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IACvB,IAAI,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,sBAAsB,CAAgC,CAAA;AAEhG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAErE;AAED,wBAAgB,aAAa,IAAI,sBAAsB,GAAG,IAAI,CAE7D;AAED,wGAAwG;AACxG,wBAAgB,kBAAkB,IAAI,mBAAmB,GAAG,IAAI,CAE/D;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAE3E;AAED,8FAA8F;AAC9F,wBAAgB,oBAAoB,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAErE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAE/D;AAED,wBAAgB,UAAU,IAAI,mBAAmB,CAQhD;AAQD,uEAAuE;AACvE,wBAAgB,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,CAWnD;AAED,wBAAgB,aAAa,IAAI,WAAW,CAAC,UAAU,GAAG,SAAS,CAAC,CAKnE;AAED,wBAAgB,eAAe,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAE/D;AAQD,0EAA0E;AAC1E,wBAAgB,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAItC;AAED,yFAAyF;AACzF,wBAAgB,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,CAIhD;AASD,6EAA6E;AAC7E,wBAAgB,eAAe,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAOjE;AAED,wBAAgB,YAAY,IAAI,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,CAOzD;AAED,yGAAyG;AACzG,wBAAgB,YAAY,IAAI,WAAW,CAAC,eAAe,CAAC,CAoB3D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAgB,WAAW,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAE7D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAAC,YAAY,CAAC,GAAG,IAAI,CAE5E"}
|
package/dist/context.js
CHANGED
|
@@ -15,54 +15,57 @@ function f() {
|
|
|
15
15
|
function p() {
|
|
16
16
|
return o(c, null)?.poll ?? t;
|
|
17
17
|
}
|
|
18
|
-
function m(
|
|
18
|
+
function m() {
|
|
19
|
+
return o(c, null)?.refresh;
|
|
20
|
+
}
|
|
21
|
+
function h(e) {
|
|
19
22
|
s(c, e);
|
|
20
23
|
}
|
|
21
|
-
function
|
|
24
|
+
function g() {
|
|
22
25
|
let e = o(c, null);
|
|
23
26
|
if (!e) throw Error("Alfakit components must be rendered inside createAlfakit().");
|
|
24
27
|
return e;
|
|
25
28
|
}
|
|
26
|
-
function
|
|
29
|
+
function _() {
|
|
27
30
|
let e = i();
|
|
28
31
|
return a(() => e.props);
|
|
29
32
|
}
|
|
30
|
-
function _() {
|
|
31
|
-
let e = o(l, null), t = g();
|
|
32
|
-
return a(() => n(e?.panel.value ?? t.value.alfakit, t.value.alfakitNavigationBadges));
|
|
33
|
-
}
|
|
34
33
|
function v() {
|
|
35
|
-
let e = o(l, null), t =
|
|
36
|
-
return a(() => e?.
|
|
34
|
+
let e = o(l, null), t = _();
|
|
35
|
+
return a(() => n(e?.panel.value ?? t.value.alfakit, t.value.alfakitNavigationBadges));
|
|
37
36
|
}
|
|
38
37
|
function y() {
|
|
39
|
-
|
|
38
|
+
let e = o(l, null), t = _();
|
|
39
|
+
return a(() => e?.page.value ?? t.value.page);
|
|
40
40
|
}
|
|
41
41
|
function b() {
|
|
42
|
-
return
|
|
42
|
+
return _();
|
|
43
43
|
}
|
|
44
44
|
function x() {
|
|
45
|
-
|
|
46
|
-
return e.t.bind(e);
|
|
45
|
+
return o(c, null)?.translator ?? r;
|
|
47
46
|
}
|
|
48
47
|
function S() {
|
|
49
|
-
let e =
|
|
50
|
-
return e.
|
|
48
|
+
let e = x();
|
|
49
|
+
return e.t.bind(e);
|
|
51
50
|
}
|
|
52
51
|
function C() {
|
|
52
|
+
let e = x();
|
|
53
|
+
return e.choice.bind(e);
|
|
54
|
+
}
|
|
55
|
+
function w() {
|
|
53
56
|
let e = i();
|
|
54
57
|
return a(() => e.props);
|
|
55
58
|
}
|
|
56
|
-
function
|
|
57
|
-
let e = o(l, null), t =
|
|
59
|
+
function T() {
|
|
60
|
+
let e = o(l, null), t = w();
|
|
58
61
|
return a(() => (e?.panel.value ?? t.value?.alfakit)?.localization);
|
|
59
62
|
}
|
|
60
|
-
function
|
|
61
|
-
let e = o(l, null), t =
|
|
63
|
+
function E() {
|
|
64
|
+
let e = o(l, null), t = w();
|
|
62
65
|
return a(() => (e?.panel.value ?? t.value?.alfakit)?.localization?.direction ?? "ltr");
|
|
63
66
|
}
|
|
64
|
-
function
|
|
65
|
-
let t = o(l, null), n =
|
|
67
|
+
function D() {
|
|
68
|
+
let t = o(l, null), n = w(), r = a(() => {
|
|
66
69
|
let e = (t?.panel.value ?? n.value?.alfakit)?.localization;
|
|
67
70
|
return [
|
|
68
71
|
e?.tag ?? "en",
|
|
@@ -78,16 +81,16 @@ function E() {
|
|
|
78
81
|
}), i.formatter;
|
|
79
82
|
});
|
|
80
83
|
}
|
|
81
|
-
function D() {
|
|
82
|
-
return h().actions;
|
|
83
|
-
}
|
|
84
84
|
function O() {
|
|
85
|
-
return
|
|
85
|
+
return g().actions;
|
|
86
86
|
}
|
|
87
87
|
function k() {
|
|
88
|
+
return g().registry;
|
|
89
|
+
}
|
|
90
|
+
function A() {
|
|
88
91
|
return o(c, null)?.registry ?? null;
|
|
89
92
|
}
|
|
90
93
|
//#endregion
|
|
91
|
-
export { c as ALFAKIT_KEY, l as STANDALONE_KEY,
|
|
94
|
+
export { c as ALFAKIT_KEY, l as STANDALONE_KEY, h as provideAlfakit, u as provideStandalone, O as useActionRunner, g as useAlfakit, b as useAlfakitProps, C as useChoice, E as useDirection, D as useFormatter, T as useLocalization, f as useOptionalAlfakit, A as useOptionalRegistry, y as usePageSchema, v as usePanel, p as usePollComponent, m as useRefreshComponents, k as useRegistry, d as useStandalone, S as useT };
|
|
92
95
|
|
|
93
96
|
//# sourceMappingURL=context.js.map
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["globalTranslator","ALFAKIT_KEY","STANDALONE_KEY","provideStandalone","value","useStandalone","inject","useOptionalAlfakit","usePollComponent","pollComponent","provideAlfakit","useAlfakit","context","pageProps","page","usePage","computed","usePanel","standalone","props","resolvePanelNavigation","usePageSchema","useAlfakitProps","useTranslator","translator","useT","useChoice","optionalPageProps","useLocalization","useDirection","useFormatter","key","localization","cached","tag","currency","timezone","id","LocaleFormatter","useActionRunner","useRegistry","useOptionalRegistry"],"sources":["../src/context.ts"],"sourcesContent":["import {\n translator as globalTranslator,\n LocaleFormatter,\n pollComponent,\n resolvePanelNavigation,\n type ActionRunner,\n type AlfakitPageProps,\n type ComponentRegistry,\n type LocalizationSchema,\n type PageSchema,\n type PanelSchema,\n type Translator,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport {\n computed,\n inject,\n provide,\n type Component,\n type ComputedRef,\n type InjectionKey,\n type Ref,\n} from 'vue'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyComponent = Component<any>\n\nexport interface AlfakitContextValue {\n registry: ComponentRegistry<AnyComponent>\n pages: Record<string, AnyComponent>\n actions: ActionRunner\n translator: Translator\n /**\n * Polls a component (`table`, `widget:<id>`) and returns an unsubscribe. Panels use the\n * shared `pollComponent()` (an Inertia partial reload); components outside panels fetch\n * their own schemas by token.\n */\n poll?: (target: string, interval: string | number | null | undefined) => () => void\n}\n\nexport const ALFAKIT_KEY: InjectionKey<AlfakitContextValue> = Symbol('alfakit')\n\n/**\n * Outside panels there is no shared `alfakit` prop and no `page` prop: `<AlfakitComponent>`\n * provides both from its payload, and the composables below read them first.\n */\nexport interface StandaloneContextValue {\n panel: Ref<PanelSchema>\n page: Ref<PageSchema>\n}\n\nexport const STANDALONE_KEY: InjectionKey<StandaloneContextValue> = Symbol('alfakit.standalone')\n\nexport function provideStandalone(value: StandaloneContextValue): void {\n provide(STANDALONE_KEY, value)\n}\n\nexport function useStandalone(): StandaloneContextValue | null {\n return inject(STANDALONE_KEY, null)\n}\n\n/** The context the component renders in, or null outside `createAlfakit()` and `<AlfakitComponent>`. */\nexport function useOptionalAlfakit(): AlfakitContextValue | null {\n return inject(ALFAKIT_KEY, null)\n}\n\n/** Poll a component (`table`, `widget:<id>`); the returned function stops it. */\nexport function usePollComponent(): NonNullable<AlfakitContextValue['poll']> {\n return inject(ALFAKIT_KEY, null)?.poll ?? pollComponent\n}\n\nexport function provideAlfakit(value: AlfakitContextValue): void {\n provide(ALFAKIT_KEY, value)\n}\n\nexport function useAlfakit(): AlfakitContextValue {\n const context = inject(ALFAKIT_KEY, null)\n\n if (!context) {\n throw new Error('Alfakit components must be rendered inside createAlfakit().')\n }\n\n return context\n}\n\nfunction pageProps(): ComputedRef<AlfakitPageProps> {\n const page = usePage<AlfakitPageProps>()\n\n return computed(() => page.props)\n}\n\n/** The shared `alfakit` prop (panel, navigation, user, endpoints…). */\nexport function usePanel(): ComputedRef<PanelSchema> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = pageProps()\n\n // The navigation structure is a once prop; its active items and badges are merged in here.\n return computed(() =>\n resolvePanelNavigation(\n standalone?.panel.value ?? props.value.alfakit,\n props.value.alfakitNavigationBadges,\n ),\n )\n}\n\nexport function usePageSchema(): ComputedRef<PageSchema | undefined> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = pageProps()\n\n return computed(() => standalone?.page.value ?? props.value.page)\n}\n\nexport function useAlfakitProps(): ComputedRef<AlfakitPageProps> {\n return pageProps()\n}\n\nfunction useTranslator(): Translator {\n // Primitives may render outside createAlfakit() (tests, Storybook); fall back to the\n // shared translator so they still show their English defaults.\n return inject(ALFAKIT_KEY, null)?.translator ?? globalTranslator\n}\n\n/** `t('table.showing', { first: 1, last: 10, total: 42 }, 'Fallback')` */\nexport function useT(): Translator['t'] {\n const translator = useTranslator()\n\n return translator.t.bind(translator)\n}\n\n/** Plural-aware lines: `choice('table.selected', 3)` (Laravel `trans_choice` syntax). */\nexport function useChoice(): Translator['choice'] {\n const translator = useTranslator()\n\n return translator.choice.bind(translator)\n}\n\n/** The page's Inertia props; undefined when rendered outside an Inertia app (tests). */\nfunction optionalPageProps(): ComputedRef<AlfakitPageProps | undefined> {\n const page = usePage<AlfakitPageProps>()\n\n return computed(() => page.props as AlfakitPageProps | undefined)\n}\n\n/** The current language, direction, currency, timezone and language list. */\nexport function useLocalization(): ComputedRef<LocalizationSchema> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n\n return computed(\n () => (standalone?.panel.value ?? props.value?.alfakit)?.localization as LocalizationSchema,\n )\n}\n\nexport function useDirection(): ComputedRef<'ltr' | 'rtl'> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n\n return computed(\n () => (standalone?.panel.value ?? props.value?.alfakit)?.localization?.direction ?? 'ltr',\n )\n}\n\n/** `Intl` formatting in the user's locale: `format.value.money(12.5)`, `format.value.relative(date)`. */\nexport function useFormatter(): ComputedRef<LocaleFormatter> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n const key = computed(() => {\n const localization = (standalone?.panel.value ?? props.value?.alfakit)?.localization\n\n return [localization?.tag ?? 'en', localization?.currency ?? 'USD', localization?.timezone]\n })\n let cached: { key: string; formatter: LocaleFormatter } | null = null\n\n return computed(() => {\n const [tag, currency, timezone] = key.value\n const id = `${tag}|${currency}|${timezone ?? ''}`\n\n if (cached?.key !== id) {\n cached = { key: id, formatter: new LocaleFormatter(tag, currency, timezone) }\n }\n\n return cached.formatter\n })\n}\n\nexport function useActionRunner(): ActionRunner {\n return useAlfakit().actions\n}\n\nexport function useRegistry(): ComponentRegistry<AnyComponent> {\n return useAlfakit().registry\n}\n\n/**\n * The component registry when rendered inside `createAlfakit()`, otherwise null (primitives\n * rendered on their own in tests or Storybook).\n */\nexport function useOptionalRegistry(): ComponentRegistry<AnyComponent> | null {\n return inject(ALFAKIT_KEY, null)?.registry ?? null\n}\n"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"context.js","names":["globalTranslator","ALFAKIT_KEY","STANDALONE_KEY","provideStandalone","value","useStandalone","inject","useOptionalAlfakit","usePollComponent","pollComponent","useRefreshComponents","provideAlfakit","useAlfakit","context","pageProps","page","usePage","computed","usePanel","standalone","props","resolvePanelNavigation","usePageSchema","useAlfakitProps","useTranslator","translator","useT","useChoice","optionalPageProps","useLocalization","useDirection","useFormatter","key","localization","cached","tag","currency","timezone","id","LocaleFormatter","useActionRunner","useRegistry","useOptionalRegistry"],"sources":["../src/context.ts"],"sourcesContent":["import {\n translator as globalTranslator,\n LocaleFormatter,\n pollComponent,\n resolvePanelNavigation,\n type ActionRunner,\n type AlfakitPageProps,\n type ComponentRegistry,\n type LocalizationSchema,\n type PageSchema,\n type PanelSchema,\n type Translator,\n} from '@alfakit/core'\nimport { usePage } from '@inertiajs/vue3'\nimport {\n computed,\n inject,\n provide,\n type Component,\n type ComputedRef,\n type InjectionKey,\n type Ref,\n} from 'vue'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyComponent = Component<any>\n\nexport interface AlfakitContextValue {\n registry: ComponentRegistry<AnyComponent>\n pages: Record<string, AnyComponent>\n actions: ActionRunner\n translator: Translator\n /**\n * Polls a component (`table`, `widget:<id>`) and returns an unsubscribe. Panels use the\n * shared `pollComponent()` (an Inertia partial reload); components outside panels fetch\n * their own schemas by token.\n */\n poll?: (target: string, interval: string | number | null | undefined) => () => void\n /**\n * Fetches fresh schemas of components now (`live()` tables and widgets after a record\n * change). Panels leave it out (a partial reload); components outside panels fetch theirs.\n */\n refresh?: (targets: string[]) => Promise<void>\n}\n\nexport const ALFAKIT_KEY: InjectionKey<AlfakitContextValue> = Symbol('alfakit')\n\n/**\n * Outside panels there is no shared `alfakit` prop and no `page` prop: `<AlfakitComponent>`\n * provides both from its payload, and the composables below read them first.\n */\nexport interface StandaloneContextValue {\n panel: Ref<PanelSchema>\n page: Ref<PageSchema>\n}\n\nexport const STANDALONE_KEY: InjectionKey<StandaloneContextValue> = Symbol('alfakit.standalone')\n\nexport function provideStandalone(value: StandaloneContextValue): void {\n provide(STANDALONE_KEY, value)\n}\n\nexport function useStandalone(): StandaloneContextValue | null {\n return inject(STANDALONE_KEY, null)\n}\n\n/** The context the component renders in, or null outside `createAlfakit()` and `<AlfakitComponent>`. */\nexport function useOptionalAlfakit(): AlfakitContextValue | null {\n return inject(ALFAKIT_KEY, null)\n}\n\n/** Poll a component (`table`, `widget:<id>`); the returned function stops it. */\nexport function usePollComponent(): NonNullable<AlfakitContextValue['poll']> {\n return inject(ALFAKIT_KEY, null)?.poll ?? pollComponent\n}\n\n/** How `live()` components refresh: their own fetch outside panels, else a partial reload. */\nexport function useRefreshComponents(): AlfakitContextValue['refresh'] {\n return inject(ALFAKIT_KEY, null)?.refresh\n}\n\nexport function provideAlfakit(value: AlfakitContextValue): void {\n provide(ALFAKIT_KEY, value)\n}\n\nexport function useAlfakit(): AlfakitContextValue {\n const context = inject(ALFAKIT_KEY, null)\n\n if (!context) {\n throw new Error('Alfakit components must be rendered inside createAlfakit().')\n }\n\n return context\n}\n\nfunction pageProps(): ComputedRef<AlfakitPageProps> {\n const page = usePage<AlfakitPageProps>()\n\n return computed(() => page.props)\n}\n\n/** The shared `alfakit` prop (panel, navigation, user, endpoints…). */\nexport function usePanel(): ComputedRef<PanelSchema> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = pageProps()\n\n // The navigation structure is a once prop; its active items and badges are merged in here.\n return computed(() =>\n resolvePanelNavigation(\n standalone?.panel.value ?? props.value.alfakit,\n props.value.alfakitNavigationBadges,\n ),\n )\n}\n\nexport function usePageSchema(): ComputedRef<PageSchema | undefined> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = pageProps()\n\n return computed(() => standalone?.page.value ?? props.value.page)\n}\n\nexport function useAlfakitProps(): ComputedRef<AlfakitPageProps> {\n return pageProps()\n}\n\nfunction useTranslator(): Translator {\n // Primitives may render outside createAlfakit() (tests, Storybook); fall back to the\n // shared translator so they still show their English defaults.\n return inject(ALFAKIT_KEY, null)?.translator ?? globalTranslator\n}\n\n/** `t('table.showing', { first: 1, last: 10, total: 42 }, 'Fallback')` */\nexport function useT(): Translator['t'] {\n const translator = useTranslator()\n\n return translator.t.bind(translator)\n}\n\n/** Plural-aware lines: `choice('table.selected', 3)` (Laravel `trans_choice` syntax). */\nexport function useChoice(): Translator['choice'] {\n const translator = useTranslator()\n\n return translator.choice.bind(translator)\n}\n\n/** The page's Inertia props; undefined when rendered outside an Inertia app (tests). */\nfunction optionalPageProps(): ComputedRef<AlfakitPageProps | undefined> {\n const page = usePage<AlfakitPageProps>()\n\n return computed(() => page.props as AlfakitPageProps | undefined)\n}\n\n/** The current language, direction, currency, timezone and language list. */\nexport function useLocalization(): ComputedRef<LocalizationSchema> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n\n return computed(\n () => (standalone?.panel.value ?? props.value?.alfakit)?.localization as LocalizationSchema,\n )\n}\n\nexport function useDirection(): ComputedRef<'ltr' | 'rtl'> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n\n return computed(\n () => (standalone?.panel.value ?? props.value?.alfakit)?.localization?.direction ?? 'ltr',\n )\n}\n\n/** `Intl` formatting in the user's locale: `format.value.money(12.5)`, `format.value.relative(date)`. */\nexport function useFormatter(): ComputedRef<LocaleFormatter> {\n const standalone = inject(STANDALONE_KEY, null)\n const props = optionalPageProps()\n const key = computed(() => {\n const localization = (standalone?.panel.value ?? props.value?.alfakit)?.localization\n\n return [localization?.tag ?? 'en', localization?.currency ?? 'USD', localization?.timezone]\n })\n let cached: { key: string; formatter: LocaleFormatter } | null = null\n\n return computed(() => {\n const [tag, currency, timezone] = key.value\n const id = `${tag}|${currency}|${timezone ?? ''}`\n\n if (cached?.key !== id) {\n cached = { key: id, formatter: new LocaleFormatter(tag, currency, timezone) }\n }\n\n return cached.formatter\n })\n}\n\nexport function useActionRunner(): ActionRunner {\n return useAlfakit().actions\n}\n\nexport function useRegistry(): ComponentRegistry<AnyComponent> {\n return useAlfakit().registry\n}\n\n/**\n * The component registry when rendered inside `createAlfakit()`, otherwise null (primitives\n * rendered on their own in tests or Storybook).\n */\nexport function useOptionalRegistry(): ComponentRegistry<AnyComponent> | null {\n return inject(ALFAKIT_KEY, null)?.registry ?? null\n}\n"],"mappings":";;;;AA6CA,IAAaC,IAAiD,OAAO,SAAS,GAWjEC,IAAuD,OAAO,oBAAoB;AAE/F,SAAgBC,EAAkB,GAAqC;CACrE,EAAQD,GAAgBE,CAAK;AAC/B;AAEA,SAAgBC,IAA+C;CAC7D,OAAOC,EAAOJ,GAAgB,IAAI;AACpC;AAGA,SAAgBK,IAAiD;CAC/D,OAAOD,EAAOL,GAAa,IAAI;AACjC;AAGA,SAAgBO,IAA6D;CAC3E,OAAOF,EAAOL,GAAa,IAAI,CAAC,EAAE,QAAQQ;AAC5C;AAGA,SAAgBC,IAAuD;CACrE,OAAOJ,EAAOL,GAAa,IAAI,CAAC,EAAE;AACpC;AAEA,SAAgBU,EAAe,GAAkC;CAC/D,EAAQV,GAAaG,CAAK;AAC5B;AAEA,SAAgBQ,IAAkC;CAChD,IAAMC,IAAUP,EAAOL,GAAa,IAAI;CAExC,IAAI,CAACY,GACH,MAAU,MAAM,6DAA6D;CAG/E,OAAOA;AACT;AAEA,SAASC,IAA2C;CAClD,IAAMC,IAAOC,EAA0B;CAEvC,OAAOC,QAAeF,EAAK,KAAK;AAClC;AAGA,SAAgBG,IAAqC;CACnD,IAAMC,IAAab,EAAOJ,GAAgB,IAAI,GACxCkB,IAAQN,EAAU;CAGxB,OAAOG,QACLI,EACEF,GAAY,MAAM,SAASC,EAAM,MAAM,SACvCA,EAAM,MAAM,uBACd,CACF;AACF;AAEA,SAAgBE,IAAqD;CACnE,IAAMH,IAAab,EAAOJ,GAAgB,IAAI,GACxCkB,IAAQN,EAAU;CAExB,OAAOG,QAAeE,GAAY,KAAK,SAASC,EAAM,MAAM,IAAI;AAClE;AAEA,SAAgBG,IAAiD;CAC/D,OAAOT,EAAU;AACnB;AAEA,SAASU,IAA4B;CAGnC,OAAOlB,EAAOL,GAAa,IAAI,CAAC,EAAE,cAAcD;AAClD;AAGA,SAAgB0B,IAAwB;CACtC,IAAMD,IAAaD,EAAc;CAEjC,OAAOC,EAAW,EAAE,KAAKA,CAAU;AACrC;AAGA,SAAgBE,IAAkC;CAChD,IAAMF,IAAaD,EAAc;CAEjC,OAAOC,EAAW,OAAO,KAAKA,CAAU;AAC1C;AAGA,SAASG,IAA+D;CACtE,IAAMb,IAAOC,EAA0B;CAEvC,OAAOC,QAAeF,EAAK,KAAqC;AAClE;AAGA,SAAgBc,IAAmD;CACjE,IAAMV,IAAab,EAAOJ,GAAgB,IAAI,GACxCkB,IAAQQ,EAAkB;CAEhC,OAAOX,SACEE,GAAY,MAAM,SAASC,EAAM,OAAO,QAAA,EAAU,YAC3D;AACF;AAEA,SAAgBU,IAA2C;CACzD,IAAMX,IAAab,EAAOJ,GAAgB,IAAI,GACxCkB,IAAQQ,EAAkB;CAEhC,OAAOX,SACEE,GAAY,MAAM,SAASC,EAAM,OAAO,QAAA,EAAU,cAAc,aAAa,KACtF;AACF;AAGA,SAAgBW,IAA6C;CAC3D,IAAMZ,IAAab,EAAOJ,GAAgB,IAAI,GACxCkB,IAAQQ,EAAkB,GAC1BI,IAAMf,QAAe;EACzB,IAAMgB,KAAgBd,GAAY,MAAM,SAASC,EAAM,OAAO,QAAA,EAAU;EAExE,OAAO;GAACa,GAAc,OAAO;GAAMA,GAAc,YAAY;GAAOA,GAAc;EAAQ;CAC5F,CAAC,GACGC,IAA6D;CAEjE,OAAOjB,QAAe;EACpB,IAAM,CAACkB,GAAKC,GAAUC,KAAYL,EAAI,OAChCM,IAAK,GAAGH,EAAI,GAAGC,EAAS,GAAGC,KAAY;EAM7C,OAJIH,GAAQ,QAAQI,MAClB,IAAS;GAAE,KAAKA;GAAI,WAAW,IAAIC,EAAgBJ,GAAKC,GAAUC,CAAQ;EAAE,IAGvEH,EAAO;CAChB,CAAC;AACH;AAEA,SAAgBM,IAAgC;CAC9C,OAAO5B,EAAW,CAAC,CAAC;AACtB;AAEA,SAAgB6B,IAA+C;CAC7D,OAAO7B,EAAW,CAAC,CAAC;AACtB;AAMA,SAAgB8B,IAA8D;CAC5E,OAAOpC,EAAOL,GAAa,IAAI,CAAC,EAAE,YAAY;AAChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-alfakit.d.ts","sourceRoot":"","sources":["../src/create-alfakit.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"create-alfakit.d.ts","sourceRoot":"","sources":["../src/create-alfakit.ts"],"names":[],"mappings":"AAAA,OAAO,EAmBL,KAAK,cAAc,EAIpB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,KAAK,EAAE,GAAG,EAAmB,MAAM,KAAK,CAAA;AAG/C,OAAO,EAAyC,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAOpF,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,YAAY,CAAC;IACxE,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC7B;AAED,uFAAuF;AACvF,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,KAC1C,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAEnC;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,IAAI,GAAG,qBAAqB,CAAC,CAuJvC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrF"}
|
package/dist/create-alfakit.js
CHANGED
|
@@ -4,66 +4,68 @@ import { showToast as n } from "./components/notifications/flash-toasts.js";
|
|
|
4
4
|
import { discoverComponents as r } from "./lib/discovery.js";
|
|
5
5
|
import { builtInComponents as i, createDefaultRegistry as a } from "./registry.js";
|
|
6
6
|
import o from "./AlfakitRoot.js";
|
|
7
|
-
import s from "./
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
7
|
+
import { panelLayouts as s } from "./layouts/panel-layouts.js";
|
|
8
|
+
import c from "./pages/AlfakitPage.js";
|
|
9
|
+
import { ActionRunner as l, Translator as u, applyDocumentLocale as d, applyPanelTheme as f, configureCharts as p, configureRealtime as m, debugRecorder as h, documentNonce as g, effectiveErrorNotifications as _, initializeAppearance as v, installErrorNotifications as y, installPrefetchInvalidation as b, installSpaUrlExceptions as x, registerRichEditorExtensions as S, reloadOnExpiredPage as C, resolveRequestErrorNotification as w, setRequestErrorReporter as T, whenIdle as E } from "@alfakit/core";
|
|
10
|
+
import { createInertiaApp as D, router as O } from "@inertiajs/vue3";
|
|
10
11
|
//#region src/create-alfakit.ts
|
|
11
|
-
function
|
|
12
|
-
let
|
|
13
|
-
"Alfakit/Page":
|
|
14
|
-
...
|
|
15
|
-
...
|
|
16
|
-
},
|
|
17
|
-
t(),
|
|
18
|
-
let
|
|
19
|
-
let e = new
|
|
12
|
+
function k(E = {}) {
|
|
13
|
+
let k = r(E.discover), A = a().registerMany(s).registerMany(k.components).registerMany(E.components ?? {}), j = {
|
|
14
|
+
"Alfakit/Page": c,
|
|
15
|
+
...k.pages,
|
|
16
|
+
...E.pages
|
|
17
|
+
}, M = typeof window > "u";
|
|
18
|
+
t(), p(E), E.echo !== void 0 && !M && m(null, { echo: E.echo }), S(E.richEditorExtensions ?? {});
|
|
19
|
+
let N = null, P, F = () => {
|
|
20
|
+
let e = new u();
|
|
20
21
|
return {
|
|
21
|
-
registry:
|
|
22
|
-
pages:
|
|
22
|
+
registry: A,
|
|
23
|
+
pages: j,
|
|
23
24
|
translator: e,
|
|
24
|
-
actions: new
|
|
25
|
+
actions: new l({
|
|
25
26
|
endpoints: {
|
|
26
27
|
action: "",
|
|
27
28
|
modal: ""
|
|
28
29
|
},
|
|
29
30
|
onError: (t) => {
|
|
30
|
-
let r =
|
|
31
|
+
let r = w(t, P, (t, n, r) => e.t(t, n, r));
|
|
31
32
|
r && n(r);
|
|
32
33
|
}
|
|
33
34
|
})
|
|
34
35
|
};
|
|
35
|
-
},
|
|
36
|
+
}, I = M ? null : F(), L = (e, t, n) => {
|
|
36
37
|
let r = t.props, i = r.alfakit;
|
|
37
|
-
i && (e ===
|
|
38
|
+
i && (e === I && (N = i, P = _(i, r.page)), e.translator.setTranslations(i.translations ?? {}), e.translator.setLocale(i.localization?.tag ?? "en"), e.actions.setEndpoints({
|
|
38
39
|
action: i.endpoints.action ?? "",
|
|
39
40
|
modal: i.endpoints.modal ?? ""
|
|
40
|
-
}), n && (
|
|
41
|
+
}), n && (d(i.localization), f(i), h.setEnabled(r.alfakitDebug !== void 0)));
|
|
41
42
|
};
|
|
42
|
-
return
|
|
43
|
-
let t =
|
|
43
|
+
return I && (O.on("navigate", (e) => L(I, e.detail.page, !0)), C(), b(), x(() => N), y(() => ({ errorNotifications: P }), (e) => n(e)), T((e) => {
|
|
44
|
+
let t = w(e, P, (e, t, n) => I.translator.t(e, t, n));
|
|
44
45
|
t && n(t);
|
|
45
|
-
})),
|
|
46
|
+
})), D({
|
|
46
47
|
title: (e) => e,
|
|
47
|
-
progress:
|
|
48
|
+
progress: E.progress === void 0 ? { color: "var(--primary)" } : E.progress,
|
|
49
|
+
nonce: g(),
|
|
48
50
|
resolve: (e, t) => {
|
|
49
|
-
let n =
|
|
51
|
+
let n = j[e];
|
|
50
52
|
if (!n) throw Error(`Alfakit: page component "${e}" is not registered. Pass it to createAlfakit({ pages }).`);
|
|
51
|
-
let r = [i.preloadFor(t),
|
|
53
|
+
let r = [i.preloadFor(t), k.discovery.preloadFor(t)].filter((e) => e !== void 0), a = r.length > 0 ? Promise.all(r) : void 0;
|
|
52
54
|
return a ? a.then(() => n) : n;
|
|
53
55
|
},
|
|
54
56
|
layout: () => o,
|
|
55
57
|
withApp: (t, { page: n, ssr: r }) => {
|
|
56
|
-
let i =
|
|
57
|
-
|
|
58
|
+
let i = I ?? F();
|
|
59
|
+
L(i, n, !r);
|
|
58
60
|
let a = n.props.alfakit;
|
|
59
|
-
!r && a &&
|
|
61
|
+
!r && a && v(a), t.provide(e, i), E.withApp?.(t);
|
|
60
62
|
}
|
|
61
63
|
});
|
|
62
64
|
}
|
|
63
|
-
async function
|
|
64
|
-
await
|
|
65
|
+
async function A(e = {}) {
|
|
66
|
+
await k(e), E(() => void i.preloadAll());
|
|
65
67
|
}
|
|
66
68
|
//#endregion
|
|
67
|
-
export {
|
|
69
|
+
export { k as bootAlfakit, A as createAlfakit };
|
|
68
70
|
|
|
69
71
|
//# sourceMappingURL=create-alfakit.js.map
|