@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
package/dist/themes.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@import './components.css';
|
|
2
|
+
|
|
1
3
|
/*
|
|
2
4
|
* Alfakit themes. Shared by every renderer and imported by their `styles.css`.
|
|
3
5
|
*
|
|
@@ -285,7 +287,7 @@
|
|
|
285
287
|
--secondary: oklch(0.967 0.003 264.542);
|
|
286
288
|
--secondary-foreground: oklch(0.21 0.034 264.665);
|
|
287
289
|
--muted: oklch(0.967 0.003 264.542);
|
|
288
|
-
--muted-foreground: oklch(0.
|
|
290
|
+
--muted-foreground: oklch(0.535 0.027 264.364);
|
|
289
291
|
--accent: oklch(0.967 0.003 264.542);
|
|
290
292
|
--accent-foreground: oklch(0.21 0.034 264.665);
|
|
291
293
|
--border: oklch(0.928 0.006 264.531);
|
|
@@ -676,6 +678,11 @@
|
|
|
676
678
|
color: var(--primary);
|
|
677
679
|
}
|
|
678
680
|
|
|
681
|
+
/* The schema inspector's round button (dev tools) sits above the bar, not on its last item. */
|
|
682
|
+
:root[data-mobile='bottom'] [data-slot='dev-tools-toggle'] {
|
|
683
|
+
bottom: calc(var(--alfakit-bottom-nav-height) + env(safe-area-inset-bottom, 0px) + 1rem);
|
|
684
|
+
}
|
|
685
|
+
|
|
679
686
|
/* Room for the bar, sticky actions sit right above it. */
|
|
680
687
|
:root[data-mobile='bottom'] [data-slot='content'] {
|
|
681
688
|
padding-bottom: calc(
|
|
@@ -1004,337 +1011,3 @@
|
|
|
1004
1011
|
box-shadow: none;
|
|
1005
1012
|
outline: none;
|
|
1006
1013
|
}
|
|
1007
|
-
|
|
1008
|
-
/* ------------------------------------------------------------------ Charts */
|
|
1009
|
-
|
|
1010
|
-
/*
|
|
1011
|
-
* Chart.js paints axes, legends and tooltips on the canvas, so chart widgets read these
|
|
1012
|
-
* properties from <html> (re-read when the theme or dark mode changes). Colours take any
|
|
1013
|
-
* CSS colour; the widths and radius are unitless numbers. Override them in a theme:
|
|
1014
|
-
* :root[data-alfakit-theme~='acme'] { --chart-tooltip-bg: oklch(0.2 0 0); }
|
|
1015
|
-
* Stat sparklines (`[data-slot='stat-chart']`) use the `--stat-chart-*` properties.
|
|
1016
|
-
*/
|
|
1017
|
-
:root {
|
|
1018
|
-
--chart-text: var(--muted-foreground);
|
|
1019
|
-
--chart-grid: var(--border);
|
|
1020
|
-
--chart-legend-foreground: var(--muted-foreground);
|
|
1021
|
-
--chart-tooltip-bg: var(--popover);
|
|
1022
|
-
--chart-tooltip-foreground: var(--popover-foreground);
|
|
1023
|
-
--chart-tooltip-border: var(--border);
|
|
1024
|
-
--chart-tooltip-border-width: 1;
|
|
1025
|
-
--chart-tooltip-radius: 6;
|
|
1026
|
-
--stat-chart-stroke-width: 2;
|
|
1027
|
-
--stat-chart-fill-opacity: 0.12;
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
/*
|
|
1031
|
-
* RichEditor `grid` column blocks and `lead` / `small` text, in the editor and in rendered
|
|
1032
|
-
* content (`RichContentRenderer`). Columns stack on small screens. Stored as
|
|
1033
|
-
* `<div data-type="grid" class="alfakit-grid alfakit-grid-cols-2"><div data-type="gridColumn">`
|
|
1034
|
-
* and `<p class="alfakit-lead">`; copy these rules when showing content outside a panel.
|
|
1035
|
-
*/
|
|
1036
|
-
:where(.alfakit-grid) {
|
|
1037
|
-
display: grid;
|
|
1038
|
-
gap: 1rem;
|
|
1039
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1040
|
-
margin-block: 0.5rem;
|
|
1041
|
-
}
|
|
1042
|
-
:where(.alfakit-grid-column) {
|
|
1043
|
-
min-width: 0;
|
|
1044
|
-
}
|
|
1045
|
-
:where(.alfakit-grid-column) > :first-child {
|
|
1046
|
-
margin-block-start: 0;
|
|
1047
|
-
}
|
|
1048
|
-
@media (min-width: 768px) {
|
|
1049
|
-
:where(.alfakit-grid-cols-2) {
|
|
1050
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1051
|
-
}
|
|
1052
|
-
:where(.alfakit-grid-cols-3) {
|
|
1053
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1054
|
-
}
|
|
1055
|
-
:where(.alfakit-grid-cols-4) {
|
|
1056
|
-
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
1057
|
-
}
|
|
1058
|
-
:where(.alfakit-grid-cols-5) {
|
|
1059
|
-
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
1060
|
-
}
|
|
1061
|
-
:where(.alfakit-grid-cols-6) {
|
|
1062
|
-
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
1063
|
-
}
|
|
1064
|
-
}
|
|
1065
|
-
:where([contenteditable] .alfakit-grid-column) {
|
|
1066
|
-
border: 1px dashed var(--border);
|
|
1067
|
-
border-radius: 0.375rem;
|
|
1068
|
-
padding: 0.25rem 0.5rem;
|
|
1069
|
-
}
|
|
1070
|
-
:where(.alfakit-lead) {
|
|
1071
|
-
font-size: 1.125em;
|
|
1072
|
-
line-height: 1.6;
|
|
1073
|
-
}
|
|
1074
|
-
:where(.alfakit-prose small) {
|
|
1075
|
-
font-size: 0.8125em;
|
|
1076
|
-
}
|
|
1077
|
-
|
|
1078
|
-
/* ---------------------------------------------------------- Calendar and tree */
|
|
1079
|
-
|
|
1080
|
-
/*
|
|
1081
|
-
* The calendar widget (alfasix/alfakit-calendar) draws FullCalendar inside
|
|
1082
|
-
* `[data-slot="calendar"]`; FullCalendar reads these `--fc-*` variables, so every theme's
|
|
1083
|
-
* tokens (and dark mode) apply. Override them on the slot to restyle one calendar.
|
|
1084
|
-
*/
|
|
1085
|
-
:where(.fc[data-slot='calendar']) {
|
|
1086
|
-
--fc-small-font-size: 0.75rem;
|
|
1087
|
-
--fc-page-bg-color: var(--card);
|
|
1088
|
-
--fc-neutral-bg-color: var(--muted);
|
|
1089
|
-
--fc-neutral-text-color: var(--muted-foreground);
|
|
1090
|
-
--fc-border-color: var(--border);
|
|
1091
|
-
--fc-button-text-color: var(--foreground);
|
|
1092
|
-
--fc-button-bg-color: var(--background);
|
|
1093
|
-
--fc-button-border-color: var(--border);
|
|
1094
|
-
--fc-button-hover-bg-color: var(--accent);
|
|
1095
|
-
--fc-button-hover-border-color: var(--border);
|
|
1096
|
-
--fc-button-active-bg-color: var(--secondary);
|
|
1097
|
-
--fc-button-active-border-color: var(--border);
|
|
1098
|
-
--fc-event-bg-color: var(--primary);
|
|
1099
|
-
--fc-event-border-color: var(--primary);
|
|
1100
|
-
--fc-event-text-color: var(--primary-foreground);
|
|
1101
|
-
--fc-event-selected-overlay-color: color-mix(in oklab, var(--foreground) 25%, transparent);
|
|
1102
|
-
--fc-more-link-bg-color: var(--muted);
|
|
1103
|
-
--fc-more-link-text-color: var(--foreground);
|
|
1104
|
-
--fc-non-business-color: color-mix(in oklab, var(--muted) 60%, transparent);
|
|
1105
|
-
--fc-bg-event-color: var(--primary);
|
|
1106
|
-
--fc-bg-event-opacity: 0.2;
|
|
1107
|
-
--fc-highlight-color: color-mix(in oklab, var(--primary) 15%, transparent);
|
|
1108
|
-
--fc-today-bg-color: color-mix(in oklab, var(--primary) 6%, transparent);
|
|
1109
|
-
--fc-now-indicator-color: var(--destructive);
|
|
1110
|
-
--fc-list-event-hover-bg-color: var(--accent);
|
|
1111
|
-
color: var(--card-foreground);
|
|
1112
|
-
}
|
|
1113
|
-
/*
|
|
1114
|
-
* FullCalendar puts its `fc` class on the slot element itself and injects its own CSS
|
|
1115
|
-
* (`.fc .fc-button`, two classes), so these rules are plain selectors anchored on
|
|
1116
|
-
* `.fc[data-slot='calendar']` (three) rather than `:where()`, which would always lose.
|
|
1117
|
-
* Restyle one calendar with a more specific selector or with the `--fc-*` variables.
|
|
1118
|
-
*/
|
|
1119
|
-
.fc[data-slot='calendar'] .fc-toolbar-title {
|
|
1120
|
-
font-size: 1.125rem;
|
|
1121
|
-
font-weight: 600;
|
|
1122
|
-
line-height: 1.75rem;
|
|
1123
|
-
color: var(--foreground);
|
|
1124
|
-
}
|
|
1125
|
-
.fc[data-slot='calendar'] .fc-button {
|
|
1126
|
-
display: inline-flex;
|
|
1127
|
-
align-items: center;
|
|
1128
|
-
justify-content: center;
|
|
1129
|
-
min-height: 2.25rem;
|
|
1130
|
-
padding: 0.375rem 0.75rem;
|
|
1131
|
-
border-radius: var(--radius);
|
|
1132
|
-
font-size: 0.875rem;
|
|
1133
|
-
font-weight: 500;
|
|
1134
|
-
line-height: 1.25rem;
|
|
1135
|
-
box-shadow: none;
|
|
1136
|
-
text-transform: capitalize;
|
|
1137
|
-
}
|
|
1138
|
-
.fc[data-slot='calendar'] .fc-button .fc-icon {
|
|
1139
|
-
font-size: 1.125rem;
|
|
1140
|
-
}
|
|
1141
|
-
.fc[data-slot='calendar'] .fc-button-group > .fc-button:not(:first-child) {
|
|
1142
|
-
border-start-start-radius: 0;
|
|
1143
|
-
border-end-start-radius: 0;
|
|
1144
|
-
}
|
|
1145
|
-
.fc[data-slot='calendar'] .fc-button-group > .fc-button:not(:last-child) {
|
|
1146
|
-
border-start-end-radius: 0;
|
|
1147
|
-
border-end-end-radius: 0;
|
|
1148
|
-
}
|
|
1149
|
-
.fc[data-slot='calendar'] .fc-button-primary:disabled {
|
|
1150
|
-
opacity: 0.5;
|
|
1151
|
-
}
|
|
1152
|
-
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled).fc-button-active,
|
|
1153
|
-
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled):active {
|
|
1154
|
-
color: var(--secondary-foreground);
|
|
1155
|
-
}
|
|
1156
|
-
.fc[data-slot='calendar'] .fc-button-primary:focus,
|
|
1157
|
-
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled).fc-button-active:focus,
|
|
1158
|
-
.fc[data-slot='calendar'] .fc-button-primary:not(:disabled):active:focus {
|
|
1159
|
-
box-shadow: none;
|
|
1160
|
-
}
|
|
1161
|
-
.fc[data-slot='calendar'] .fc-button:focus-visible {
|
|
1162
|
-
outline: 2px solid var(--ring);
|
|
1163
|
-
outline-offset: 2px;
|
|
1164
|
-
z-index: 2;
|
|
1165
|
-
}
|
|
1166
|
-
.fc[data-slot='calendar'] a {
|
|
1167
|
-
color: inherit;
|
|
1168
|
-
}
|
|
1169
|
-
.fc[data-slot='calendar'] .fc-daygrid-day-number,
|
|
1170
|
-
.fc[data-slot='calendar'] .fc-col-header-cell-cushion {
|
|
1171
|
-
text-decoration: none;
|
|
1172
|
-
}
|
|
1173
|
-
.fc[data-slot='calendar'] .fc-col-header-cell-cushion {
|
|
1174
|
-
padding-block: 0.375rem;
|
|
1175
|
-
font-size: 0.75rem;
|
|
1176
|
-
font-weight: 500;
|
|
1177
|
-
color: var(--muted-foreground);
|
|
1178
|
-
}
|
|
1179
|
-
.fc[data-slot='calendar'] .fc-daygrid-day-number {
|
|
1180
|
-
font-size: 0.875rem;
|
|
1181
|
-
}
|
|
1182
|
-
.fc[data-slot='calendar'] .fc-day-other .fc-daygrid-day-number {
|
|
1183
|
-
color: var(--muted-foreground);
|
|
1184
|
-
}
|
|
1185
|
-
/* Today: a tinted cell (`--fc-today-bg-color`) and the date in a primary pill. */
|
|
1186
|
-
.fc[data-slot='calendar'] .fc-daygrid-day.fc-day-today .fc-daygrid-day-number {
|
|
1187
|
-
display: inline-flex;
|
|
1188
|
-
align-items: center;
|
|
1189
|
-
justify-content: center;
|
|
1190
|
-
min-width: 1.75rem;
|
|
1191
|
-
height: 1.75rem;
|
|
1192
|
-
margin: 0.25rem;
|
|
1193
|
-
padding: 0 0.375rem;
|
|
1194
|
-
border-radius: 9999px;
|
|
1195
|
-
background: var(--primary);
|
|
1196
|
-
color: var(--primary-foreground);
|
|
1197
|
-
font-weight: 600;
|
|
1198
|
-
}
|
|
1199
|
-
.fc[data-slot='calendar'] .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion {
|
|
1200
|
-
color: var(--primary);
|
|
1201
|
-
font-weight: 600;
|
|
1202
|
-
}
|
|
1203
|
-
.fc[data-slot='calendar'] .fc-event {
|
|
1204
|
-
border-radius: min(var(--radius), 0.375rem);
|
|
1205
|
-
}
|
|
1206
|
-
.fc[data-slot='calendar'] .fc-daygrid-event,
|
|
1207
|
-
.fc[data-slot='calendar'] .fc-timegrid-event .fc-event-main,
|
|
1208
|
-
.fc[data-slot='calendar'] .fc-list-event td {
|
|
1209
|
-
font-size: 0.75rem;
|
|
1210
|
-
}
|
|
1211
|
-
.fc[data-slot='calendar'] .fc-daygrid-dot-event:hover,
|
|
1212
|
-
.fc[data-slot='calendar'] .fc-daygrid-dot-event.fc-event-mirror {
|
|
1213
|
-
background: var(--accent);
|
|
1214
|
-
}
|
|
1215
|
-
.fc[data-slot='calendar'] .fc-list-day-cushion,
|
|
1216
|
-
.fc[data-slot='calendar'] .fc-popover-header {
|
|
1217
|
-
color: var(--foreground);
|
|
1218
|
-
}
|
|
1219
|
-
.fc[data-slot='calendar'] .fc-popover {
|
|
1220
|
-
border-radius: var(--radius);
|
|
1221
|
-
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
|
|
1222
|
-
overflow: hidden;
|
|
1223
|
-
}
|
|
1224
|
-
.fc[data-slot='calendar'] .fc-timegrid-slot-label,
|
|
1225
|
-
.fc[data-slot='calendar'] .fc-timegrid-axis,
|
|
1226
|
-
.fc[data-slot='calendar'] .fc-list-event-time {
|
|
1227
|
-
color: var(--muted-foreground);
|
|
1228
|
-
font-size: 0.75rem;
|
|
1229
|
-
}
|
|
1230
|
-
/*
|
|
1231
|
-
* The list view hides its column headers for screen readers with `left: -10000px`. Right to
|
|
1232
|
-
* left that is scrollable overflow: the whole page gains a 10 000 px horizontal scroll and the
|
|
1233
|
-
* top bar slides under the sidebar. Clip it in place instead (still read by screen readers).
|
|
1234
|
-
*/
|
|
1235
|
-
.fc[data-slot='calendar'] .fc-list-table thead {
|
|
1236
|
-
left: auto;
|
|
1237
|
-
inset-inline-start: 0;
|
|
1238
|
-
width: 1px;
|
|
1239
|
-
height: 1px;
|
|
1240
|
-
overflow: hidden;
|
|
1241
|
-
clip-path: inset(50%);
|
|
1242
|
-
white-space: nowrap;
|
|
1243
|
-
}
|
|
1244
|
-
|
|
1245
|
-
/*
|
|
1246
|
-
* Fields contain what they position. Headless switches, checkboxes and radios render a
|
|
1247
|
-
* visually hidden native input beside the control, absolutely positioned (and shifted by
|
|
1248
|
-
* -100%); without a positioned field it lands at the page edge and, right to left, widens
|
|
1249
|
-
* the page on phones.
|
|
1250
|
-
*/
|
|
1251
|
-
:where([data-slot='field']) {
|
|
1252
|
-
position: relative;
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
/*
|
|
1256
|
-
* Narrow screens: FullCalendar keeps its header toolbar on one row, wider than a phone.
|
|
1257
|
-
* Its chunks (navigation, title, views) wrap instead, and the title shrinks. Flex gaps and
|
|
1258
|
-
* `justify-content` follow the writing direction, so this works right to left too. (Plain
|
|
1259
|
-
* selectors: FullCalendar injects its own CSS, which would beat `:where()`; the slot is
|
|
1260
|
-
* the `.fc` element itself.)
|
|
1261
|
-
*/
|
|
1262
|
-
@media (max-width: 39.99rem) {
|
|
1263
|
-
[data-slot='calendar'] .fc-toolbar.fc-header-toolbar {
|
|
1264
|
-
flex-wrap: wrap;
|
|
1265
|
-
gap: 0.5rem;
|
|
1266
|
-
}
|
|
1267
|
-
[data-slot='calendar'] .fc-toolbar .fc-toolbar-chunk {
|
|
1268
|
-
display: flex;
|
|
1269
|
-
flex-wrap: wrap;
|
|
1270
|
-
align-items: center;
|
|
1271
|
-
gap: 0.25rem;
|
|
1272
|
-
min-width: 0;
|
|
1273
|
-
}
|
|
1274
|
-
[data-slot='calendar'] .fc-toolbar .fc-toolbar-title {
|
|
1275
|
-
font-size: 1rem;
|
|
1276
|
-
overflow-wrap: anywhere;
|
|
1277
|
-
}
|
|
1278
|
-
[data-slot='calendar'] .fc-toolbar .fc-button {
|
|
1279
|
-
font-size: 0.8125rem;
|
|
1280
|
-
}
|
|
1281
|
-
}
|
|
1282
|
-
|
|
1283
|
-
/*
|
|
1284
|
-
* The tree (alfasix/alfakit-tree): the drop indicator while dragging. Rows carry
|
|
1285
|
-
* `data-drop="before|after|inside"`; lines are drawn above or below the row, so they
|
|
1286
|
-
* need no direction.
|
|
1287
|
-
*/
|
|
1288
|
-
:where([data-slot='tree-item'][data-drop='before']) {
|
|
1289
|
-
box-shadow: inset 0 2px 0 0 var(--primary);
|
|
1290
|
-
}
|
|
1291
|
-
:where([data-slot='tree-item'][data-drop='after']) {
|
|
1292
|
-
box-shadow: inset 0 -2px 0 0 var(--primary);
|
|
1293
|
-
}
|
|
1294
|
-
:where([data-slot='tree-item'][data-drop='inside']) {
|
|
1295
|
-
background-color: color-mix(in oklab, var(--primary) 10%, transparent);
|
|
1296
|
-
outline: 1px dashed var(--primary);
|
|
1297
|
-
outline-offset: -1px;
|
|
1298
|
-
}
|
|
1299
|
-
|
|
1300
|
-
/*
|
|
1301
|
-
* The Kanban board (alfasix/alfakit-kanban). A card being dragged leaves a dashed
|
|
1302
|
-
* placeholder (`data-picked="pointer"`) while a copy follows the pointer
|
|
1303
|
-
* (`data-slot="kanban-ghost"`); a card picked up with the keyboard is lifted
|
|
1304
|
-
* (`data-picked="keyboard"`). A list the picked card may not enter has `data-refused`.
|
|
1305
|
-
*/
|
|
1306
|
-
:where([data-slot='kanban-card'][data-picked='pointer']) {
|
|
1307
|
-
opacity: 0.45;
|
|
1308
|
-
}
|
|
1309
|
-
:where([data-slot='kanban-card'][data-picked='pointer'] > [data-slot='kanban-card-body']) {
|
|
1310
|
-
border-style: dashed;
|
|
1311
|
-
box-shadow: none;
|
|
1312
|
-
}
|
|
1313
|
-
:where([data-slot='kanban-card'][data-picked='keyboard'] > [data-slot='kanban-card-body']) {
|
|
1314
|
-
outline: 2px solid var(--primary);
|
|
1315
|
-
outline-offset: 2px;
|
|
1316
|
-
box-shadow: 0 10px 24px -12px color-mix(in oklab, var(--foreground) 45%, transparent);
|
|
1317
|
-
}
|
|
1318
|
-
:where([data-slot='kanban-card'][data-saving]) {
|
|
1319
|
-
opacity: 0.7;
|
|
1320
|
-
}
|
|
1321
|
-
:where([data-slot='kanban-ghost']) {
|
|
1322
|
-
cursor: grabbing;
|
|
1323
|
-
list-style: none;
|
|
1324
|
-
box-shadow: 0 18px 40px -16px color-mix(in oklab, var(--foreground) 55%, transparent);
|
|
1325
|
-
}
|
|
1326
|
-
:where([data-slot='kanban-dropzone'][data-refused]) {
|
|
1327
|
-
background-color: color-mix(in oklab, var(--destructive) 8%, transparent);
|
|
1328
|
-
outline: 1px dashed var(--destructive);
|
|
1329
|
-
outline-offset: -1px;
|
|
1330
|
-
}
|
|
1331
|
-
:where(body[data-kanban-dragging]) {
|
|
1332
|
-
cursor: grabbing;
|
|
1333
|
-
user-select: none;
|
|
1334
|
-
-webkit-user-select: none;
|
|
1335
|
-
}
|
|
1336
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1337
|
-
:where([data-slot='kanban-card'] > [data-slot='kanban-card-body']) {
|
|
1338
|
-
transition: none;
|
|
1339
|
-
}
|
|
1340
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alfakit/vue",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Vue 3 + shadcn-vue renderer for Alfakit, the Laravel admin panel builder by Alfa Six.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Alfa Six (https://alfasixbh.com)",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"reka-ui": "^2.11.0",
|
|
97
97
|
"tailwind-merge": "^3.7.0",
|
|
98
98
|
"vue-sonner": "^2.0.9",
|
|
99
|
-
"@alfakit/core": "0.1.
|
|
99
|
+
"@alfakit/core": "0.1.6"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
102
|
"@inertiajs/vue3": "^3.0.0",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"provenance": true
|
|
120
120
|
},
|
|
121
121
|
"scripts": {
|
|
122
|
-
"build": "vite build && vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json && cp src/styles.css dist/styles.css && cp ../core/themes.css dist/themes.css && cp ../core/standalone.css dist/standalone.css && node ../../scripts/eject-manifest.mjs .",
|
|
122
|
+
"build": "vite build && vue-tsc --declaration --emitDeclarationOnly -p tsconfig.build.json && cp src/styles.css dist/styles.css && cp ../core/themes.css dist/themes.css && cp ../core/components.css dist/components.css && cp ../core/standalone.css dist/standalone.css && node ../../scripts/eject-manifest.mjs .",
|
|
123
123
|
"dev": "vite build --watch",
|
|
124
124
|
"typecheck": "vue-tsc --noEmit",
|
|
125
125
|
"test": "vitest run"
|
package/src/AlfakitRoot.vue
CHANGED
|
@@ -52,7 +52,15 @@ watch(
|
|
|
52
52
|
{ immediate: true, flush: 'sync' },
|
|
53
53
|
)
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
// Starter kit mode: the host app owns `<html lang dir>` (its own pages and layout are not
|
|
56
|
+
// mirrored); `AlfakitStarterKitRoot` puts the direction on Alfakit's own root element.
|
|
57
|
+
watch(
|
|
58
|
+
localization,
|
|
59
|
+
(value) => {
|
|
60
|
+
if (panel.value?.starterKit !== true) applyDocumentLocale(value)
|
|
61
|
+
},
|
|
62
|
+
{ immediate: true },
|
|
63
|
+
)
|
|
56
64
|
watch(panel, (value) => applyPanelTheme(value), { immediate: true })
|
|
57
65
|
</script>
|
|
58
66
|
|
|
@@ -4,6 +4,8 @@ import {
|
|
|
4
4
|
bindsKeyBindings,
|
|
5
5
|
formatKeyBinding,
|
|
6
6
|
iconButtonSize,
|
|
7
|
+
isActionLoading,
|
|
8
|
+
isActionProcessing,
|
|
7
9
|
registerKeyBindings,
|
|
8
10
|
resolveActionSize,
|
|
9
11
|
} from '@alfakit/core'
|
|
@@ -47,9 +49,12 @@ const props = withDefaults(defineProps<ActionButtonProps>(), {
|
|
|
47
49
|
})
|
|
48
50
|
|
|
49
51
|
const runner = useActionRunner()
|
|
50
|
-
|
|
52
|
+
// Only this run (this record's button), not the same action in every table row.
|
|
53
|
+
const loading = useStoreSelector(runner.store, (state) =>
|
|
54
|
+
isActionLoading(state, props.action, props.context),
|
|
55
|
+
)
|
|
51
56
|
const processing = useStoreSelector(runner.store, (state) =>
|
|
52
|
-
state
|
|
57
|
+
isActionProcessing(state, props.action, props.context),
|
|
53
58
|
)
|
|
54
59
|
|
|
55
60
|
const variant = computed(
|
|
@@ -87,7 +92,7 @@ function buttonClasses(action: ActionSchema, kind: ActionSchema['variant']): str
|
|
|
87
92
|
return colorClass(ghostButtonColorClasses, color, 'gray')
|
|
88
93
|
case 'link':
|
|
89
94
|
return cn(
|
|
90
|
-
'h-auto p-0 underline-offset-4 hover:underline',
|
|
95
|
+
'h-auto p-0 underline-offset-4 hover:underline has-[>svg]:px-0',
|
|
91
96
|
colorClass(textColorClasses, color, 'primary'),
|
|
92
97
|
)
|
|
93
98
|
case 'icon-button':
|
|
@@ -278,9 +283,12 @@ const disabledTooltip = computed(() => Boolean(props.action.disabled && tooltip.
|
|
|
278
283
|
</TooltipTrigger>
|
|
279
284
|
<TooltipContent>
|
|
280
285
|
{{ tooltip }}
|
|
281
|
-
<kbd
|
|
282
|
-
|
|
283
|
-
|
|
286
|
+
<kbd
|
|
287
|
+
v-if="shortcut"
|
|
288
|
+
dir="ltr"
|
|
289
|
+
class="ms-2 rounded border border-white/20 px-1 font-mono text-[10px]"
|
|
290
|
+
>{{ formatKeyBinding(shortcut) }}</kbd
|
|
291
|
+
>
|
|
284
292
|
</TooltipContent>
|
|
285
293
|
</Tooltip>
|
|
286
294
|
<template v-else>
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
registerKeyBindings,
|
|
14
14
|
resolveActionSize,
|
|
15
15
|
} from '@alfakit/core'
|
|
16
|
-
import { computed, watchEffect } from 'vue'
|
|
16
|
+
import { computed, useTemplateRef, watchEffect } from 'vue'
|
|
17
17
|
import { useActionRunner, useT } from '../../context'
|
|
18
18
|
import { colorClass, ghostButtonColorClasses, outlineButtonColorClasses } from '../../lib/colors'
|
|
19
19
|
import { Icon } from '../../lib/icons'
|
|
@@ -40,6 +40,16 @@ const props = withDefaults(
|
|
|
40
40
|
{ size: 'default' },
|
|
41
41
|
)
|
|
42
42
|
|
|
43
|
+
// With a tooltip, the menu's trigger sits inside the tooltip's popper, so reka-ui hands the
|
|
44
|
+
// trigger to the tooltip as its anchor and the menu would open off screen (at its unpositioned
|
|
45
|
+
// `translate(0, -200%)`): anchor the menu to the button explicitly.
|
|
46
|
+
const tooltipTrigger = useTemplateRef<{ $el?: Element }>('tooltipTrigger')
|
|
47
|
+
const tooltipTriggerElement = computed(() =>
|
|
48
|
+
props.group.tooltip && tooltipTrigger.value?.$el instanceof Element
|
|
49
|
+
? tooltipTrigger.value.$el
|
|
50
|
+
: undefined,
|
|
51
|
+
)
|
|
52
|
+
|
|
43
53
|
/** `dropdownWidth()`: widths of the dropdown, spelled out for Tailwind. */
|
|
44
54
|
const DROPDOWN_WIDTHS: Record<string, string> = {
|
|
45
55
|
'3xs': 'w-3xs',
|
|
@@ -155,6 +165,7 @@ watchEffect((onCleanup) => {
|
|
|
155
165
|
<TooltipTrigger as-child>
|
|
156
166
|
<DropdownMenuTrigger as-child>
|
|
157
167
|
<Button
|
|
168
|
+
ref="tooltipTrigger"
|
|
158
169
|
type="button"
|
|
159
170
|
:variant="props.group.variant === 'button' ? 'outline' : 'ghost'"
|
|
160
171
|
:size="buttonSize"
|
|
@@ -189,6 +200,7 @@ watchEffect((onCleanup) => {
|
|
|
189
200
|
</Button>
|
|
190
201
|
</DropdownMenuTrigger>
|
|
191
202
|
<DropdownMenuContent
|
|
203
|
+
:reference="tooltipTriggerElement"
|
|
192
204
|
:side="placement.side"
|
|
193
205
|
:align="placement.align"
|
|
194
206
|
:side-offset="props.group.dropdownOffset ?? undefined"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { OpenModal } from '@alfakit/core'
|
|
3
3
|
import {
|
|
4
4
|
actionFormComponent,
|
|
5
|
+
formIdPrefix,
|
|
5
6
|
actionFormParams,
|
|
6
7
|
confirmModalClose,
|
|
7
8
|
FormStore,
|
|
@@ -103,6 +104,8 @@ const form = (() => {
|
|
|
103
104
|
return new FormStore(schema.value.form, {
|
|
104
105
|
token: context.token,
|
|
105
106
|
component: actionFormComponent(action, context),
|
|
107
|
+
// Own field ids: the modal opens over a form whose fields may share names.
|
|
108
|
+
idPrefix: formIdPrefix(actionFormComponent(action, context)),
|
|
106
109
|
record: context.record ?? null,
|
|
107
110
|
refreshUrl: panel.value.endpoints.schemaRefresh,
|
|
108
111
|
optionsUrl: panel.value.endpoints.schemaOptions,
|
|
@@ -195,6 +198,15 @@ const passwordError = computed(() => props.modal.errors[PASSWORD_CONFIRMATION_IN
|
|
|
195
198
|
const footerContext = nestedActionContext(context, action)
|
|
196
199
|
|
|
197
200
|
const run = (createAnother: boolean) => {
|
|
201
|
+
// A click that blurred a live field started a refresh: send the state it returns.
|
|
202
|
+
if (form) {
|
|
203
|
+
form.whenSettled(() => execute(createAnother))
|
|
204
|
+
} else {
|
|
205
|
+
execute(createAnother)
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const execute = (createAnother: boolean) => {
|
|
198
210
|
const values = form?.state.values ?? {}
|
|
199
211
|
const options = {
|
|
200
212
|
...(schema.value.passwordConfirmation ? { password: password.value } : {}),
|
|
@@ -513,7 +525,6 @@ const hasBody = computed(() =>
|
|
|
513
525
|
</Button>
|
|
514
526
|
</div>
|
|
515
527
|
</DialogFooter>
|
|
516
|
-
<span class="sr-only">{{ t('close', {}, 'Close') }}</span>
|
|
517
528
|
</DialogContent>
|
|
518
529
|
</Dialog>
|
|
519
530
|
</template>
|
|
@@ -11,7 +11,11 @@ import { CopilotPanel, preloadCopilotPanel } from './copilot-lazy'
|
|
|
11
11
|
* a chat slide-over. Questions, tools and actions run on the server; proposed actions
|
|
12
12
|
* run only when the user confirms them in the chat.
|
|
13
13
|
*/
|
|
14
|
-
const props = defineProps<{
|
|
14
|
+
const props = defineProps<{
|
|
15
|
+
component: AiCopilotSchema
|
|
16
|
+
/** Open once mounted (starter kit header: clicked or `mod+j` before its code loaded). */
|
|
17
|
+
autoOpen?: boolean
|
|
18
|
+
}>()
|
|
15
19
|
const t = useT()
|
|
16
20
|
// One controller per panel: Inertia visits pass new props objects.
|
|
17
21
|
const controller = new CopilotController(props.component)
|
|
@@ -25,6 +29,8 @@ const unsubscribe = controller.subscribe((next) => {
|
|
|
25
29
|
if (next.open) mounted.value = true
|
|
26
30
|
})
|
|
27
31
|
|
|
32
|
+
if (props.autoOpen && props.component.canUse !== false) controller.open()
|
|
33
|
+
|
|
28
34
|
let unregister: (() => void) | undefined
|
|
29
35
|
|
|
30
36
|
watch(
|
|
@@ -65,6 +65,12 @@ const status = computed(() =>
|
|
|
65
65
|
? props.component.changedStatus
|
|
66
66
|
: props.component.status,
|
|
67
67
|
)
|
|
68
|
+
// "Publish changes" appears as soon as an autosave makes the draft differ.
|
|
69
|
+
const actions = computed(() =>
|
|
70
|
+
snapshot.value.hasChanges && props.component.changedActions
|
|
71
|
+
? props.component.changedActions
|
|
72
|
+
: props.component.actions,
|
|
73
|
+
)
|
|
68
74
|
/** Badge colours of the status (the server's `PageState` colours). */
|
|
69
75
|
const STATUS_COLORS: Record<string, string> = {
|
|
70
76
|
gray: 'border-border bg-muted text-foreground',
|
|
@@ -227,8 +233,8 @@ onBeforeUnmount(() => {
|
|
|
227
233
|
: t('cms.live_preview', {}, 'Live preview')
|
|
228
234
|
}}
|
|
229
235
|
</Button>
|
|
230
|
-
<div v-if="
|
|
231
|
-
<ActionList :actions="
|
|
236
|
+
<div v-if="actions?.length" @pointerdown.capture="autosave?.flush()">
|
|
237
|
+
<ActionList :actions="actions" :context="actionContext" size="sm" />
|
|
232
238
|
</div>
|
|
233
239
|
</div>
|
|
234
240
|
<section
|
|
@@ -56,7 +56,7 @@ const registry = useOptionalRegistry()
|
|
|
56
56
|
const form = useOptionalFormStore()
|
|
57
57
|
const context = useFieldActionContext(() => props.component)
|
|
58
58
|
const runItemAction = useRunItemAction(context)
|
|
59
|
-
const fallbacks = useItemActionFallbacks()
|
|
59
|
+
const fallbacks = useItemActionFallbacks('builder')
|
|
60
60
|
const serverItemOf = (index: number) => {
|
|
61
61
|
const server = props.component.items[index]
|
|
62
62
|
|
|
@@ -195,6 +195,19 @@ const onDrop = (index: number) => {
|
|
|
195
195
|
}
|
|
196
196
|
const setAllCollapsed = (value: boolean) => {
|
|
197
197
|
collapsed.value = Object.fromEntries(items.value.map((_, index) => [index, value]))
|
|
198
|
+
if (value) refreshSummaries(items.value.map((_, index) => index))
|
|
199
|
+
}
|
|
200
|
+
// Summaries are made on the server: collapsing items whose block has one brings them up
|
|
201
|
+
// to date with the edits.
|
|
202
|
+
const refreshSummaries = (indexes: number[]) => {
|
|
203
|
+
if (indexes.some((index) => blockOf(items.value[index]?.type ?? '')?.summary)) {
|
|
204
|
+
void form?.refresh(props.component.statePath)
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const toggleCollapsed = (index: number) => {
|
|
208
|
+
const collapse = !isCollapsed(index)
|
|
209
|
+
collapsed.value = { ...collapsed.value, [index]: collapse }
|
|
210
|
+
if (collapse) refreshSummaries([index])
|
|
198
211
|
}
|
|
199
212
|
|
|
200
213
|
// Previews (`blockPreviews()`): server HTML or a registered `builder-preview:{name}`.
|
|
@@ -356,7 +369,7 @@ const previewIsButton = computed(() => !props.component.interactivePreviews && !
|
|
|
356
369
|
@move="moves.moveWithButton"
|
|
357
370
|
@clone="cloneItem(index)"
|
|
358
371
|
@delete="removeItem(index)"
|
|
359
|
-
@toggle="
|
|
372
|
+
@toggle="toggleCollapsed(index)"
|
|
360
373
|
>
|
|
361
374
|
<Button
|
|
362
375
|
v-if="hasPreview(index) && !locked"
|
|
@@ -210,7 +210,7 @@ const removeTag = (event: Event, key: string) => {
|
|
|
210
210
|
)
|
|
211
211
|
"
|
|
212
212
|
>
|
|
213
|
-
<span class="flex flex-1 flex-wrap items-center gap-1 text-start">
|
|
213
|
+
<span class="flex min-w-0 flex-1 flex-wrap items-center gap-1 text-start">
|
|
214
214
|
<span v-if="selected.length === 0" class="text-muted-foreground">{{
|
|
215
215
|
props.component.placeholder ?? t('select_option', {}, 'Select an option')
|
|
216
216
|
}}</span>
|