@questpie/admin 1.1.1 → 3.0.0
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/README.md +256 -488
- package/dist/augmentation.d.mts +414 -0
- package/dist/client/blocks/block-renderer.d.mts +45 -0
- package/dist/client/blocks/block-renderer.mjs +105 -0
- package/dist/client/blocks/index.d.mts +2 -0
- package/dist/client/blocks/types.d.mts +68 -0
- package/dist/client/blocks/types.mjs +19 -0
- package/dist/client/builder/admin-types.d.mts +40 -0
- package/dist/client/builder/admin.d.mts +110 -0
- package/dist/client/builder/admin.mjs +151 -0
- package/dist/client/builder/field/field.d.mts +51 -0
- package/dist/client/builder/field/field.mjs +37 -0
- package/dist/client/builder/index.d.mts +31 -0
- package/dist/client/builder/page/page.d.mts +24 -0
- package/dist/client/builder/page/page.mjs +31 -0
- package/dist/client/builder/registry.d.mts +50 -0
- package/dist/client/builder/types/action-registry.mjs +276 -0
- package/dist/client/builder/types/action-types.d.mts +226 -0
- package/dist/client/builder/types/collection-types.mjs +10 -0
- package/dist/client/builder/types/common.d.mts +46 -0
- package/dist/client/builder/types/field-types.d.mts +592 -0
- package/dist/client/builder/types/field-types.mjs +18 -0
- package/dist/client/builder/types/ui-config.d.mts +158 -0
- package/dist/client/builder/types/widget-types.d.mts +562 -0
- package/dist/client/builder/validation.d.mts +33 -0
- package/dist/client/builder/validation.mjs +227 -0
- package/dist/client/builder/view/view.d.mts +49 -0
- package/dist/client/builder/view/view.mjs +27 -0
- package/dist/client/builder/widget/widget.d.mts +27 -0
- package/dist/client/builder/widget/widget.mjs +21 -0
- package/dist/client/components/actions/action-button.mjs +245 -0
- package/dist/client/components/actions/action-dialog.mjs +559 -0
- package/dist/client/components/actions/confirmation-dialog.mjs +201 -0
- package/dist/client/components/actions/header-actions.mjs +210 -0
- package/dist/client/components/admin-link.d.mts +66 -0
- package/dist/client/components/admin-link.mjs +171 -0
- package/dist/client/components/auth/auth-guard.d.mts +50 -0
- package/dist/client/components/auth/auth-guard.mjs +60 -0
- package/dist/client/components/auth/auth-loading.d.mts +35 -0
- package/dist/client/components/auth/auth-loading.mjs +55 -0
- package/dist/client/components/blocks/block-canvas.mjs +159 -0
- package/dist/client/components/blocks/block-editor-context.mjs +125 -0
- package/dist/client/components/blocks/block-editor-layout.mjs +199 -0
- package/dist/client/components/blocks/block-editor-provider.mjs +235 -0
- package/dist/client/components/blocks/block-fields-renderer.mjs +240 -0
- package/dist/client/components/blocks/block-insert-button.mjs +189 -0
- package/dist/client/components/blocks/block-item-menu.mjs +363 -0
- package/dist/client/components/blocks/block-item.mjs +434 -0
- package/dist/client/components/blocks/block-library-sidebar.mjs +285 -0
- package/dist/client/components/blocks/block-tree.mjs +103 -0
- package/dist/client/components/blocks/block-type-icon.mjs +95 -0
- package/dist/client/components/blocks/utils/tree-utils.mjs +185 -0
- package/dist/client/components/component-renderer.d.mts +114 -0
- package/dist/client/components/component-renderer.mjs +258 -0
- package/dist/client/components/error-boundary.mjs +144 -0
- package/dist/client/components/fields/array-field.mjs +506 -0
- package/dist/client/components/fields/asset-preview-field.mjs +159 -0
- package/dist/client/components/fields/blocks-field/blocks-field.mjs +209 -0
- package/dist/client/components/fields/boolean-field.mjs +77 -0
- package/dist/client/components/fields/date-field.mjs +76 -0
- package/dist/client/components/fields/datetime-field.mjs +74 -0
- package/dist/client/components/fields/email-field.mjs +67 -0
- package/dist/client/components/fields/field-utils.mjs +64 -0
- package/dist/client/components/fields/field-wrapper.mjs +124 -0
- package/dist/client/components/fields/json-field.mjs +461 -0
- package/dist/client/components/fields/locale-badge.mjs +25 -0
- package/dist/client/components/fields/number-field.mjs +73 -0
- package/dist/client/components/fields/object-array-field.mjs +707 -0
- package/dist/client/components/fields/object-field.mjs +686 -0
- package/dist/client/components/fields/relation/displays/cards-display.mjs +254 -0
- package/dist/client/components/fields/relation/displays/chips-display.mjs +173 -0
- package/dist/client/components/fields/relation/displays/grid-display.mjs +209 -0
- package/dist/client/components/fields/relation/displays/list-display.mjs +247 -0
- package/dist/client/components/fields/relation/displays/table-display.mjs +309 -0
- package/dist/client/components/fields/relation/displays/types.mjs +72 -0
- package/dist/client/components/fields/relation/relation-items-display.mjs +143 -0
- package/dist/client/components/fields/relation-field.mjs +161 -0
- package/dist/client/components/fields/relation-picker.mjs +296 -0
- package/dist/client/components/fields/relation-select.mjs +232 -0
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +105 -0
- package/dist/client/components/fields/rich-text-editor/extensions.mjs +144 -0
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +221 -0
- package/dist/client/components/fields/rich-text-editor/index.mjs +520 -0
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs +85 -0
- package/dist/client/components/fields/rich-text-editor/presets.mjs +123 -0
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +188 -0
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs +433 -0
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs +541 -0
- package/dist/client/components/fields/rich-text-editor/types.mjs +30 -0
- package/dist/client/components/fields/rich-text-editor/utils.mjs +50 -0
- package/dist/client/components/fields/rich-text-field.mjs +64 -0
- package/dist/client/components/fields/select-field.mjs +88 -0
- package/dist/client/components/fields/text-field.mjs +72 -0
- package/dist/client/components/fields/textarea-field.mjs +71 -0
- package/dist/client/components/fields/time-field.mjs +67 -0
- package/dist/client/components/fields/upload-field.mjs +621 -0
- package/dist/client/components/filter-builder/columns-tab.mjs +325 -0
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +456 -0
- package/dist/client/components/filter-builder/filters-tab.mjs +663 -0
- package/dist/client/components/filter-builder/saved-views-tab.mjs +278 -0
- package/dist/client/components/history-sidebar.mjs +496 -0
- package/dist/client/components/layout/field-layout-renderer.mjs +301 -0
- package/dist/client/components/locale-switcher.mjs +251 -0
- package/dist/client/components/media/media-grid.mjs +314 -0
- package/dist/client/components/media/media-picker-dialog.mjs +563 -0
- package/dist/client/components/preview/live-preview-mode.mjs +503 -0
- package/dist/client/components/preview/preview-pane.mjs +388 -0
- package/dist/client/components/primitives/asset-preview.mjs +771 -0
- package/dist/client/components/primitives/checkbox-input.mjs +59 -0
- package/dist/client/components/primitives/date-input.mjs +461 -0
- package/dist/client/components/primitives/dropzone.mjs +368 -0
- package/dist/client/components/primitives/number-input.mjs +117 -0
- package/dist/client/components/primitives/select-multi.mjs +590 -0
- package/dist/client/components/primitives/select-single.mjs +473 -0
- package/dist/client/components/primitives/text-input.mjs +45 -0
- package/dist/client/components/primitives/textarea-input.mjs +43 -0
- package/dist/client/components/primitives/time-input.mjs +145 -0
- package/dist/client/components/primitives/toggle-input.mjs +51 -0
- package/dist/client/components/primitives/types.mjs +12 -0
- package/dist/client/components/sheets/resource-sheet.mjs +86 -0
- package/dist/client/components/ui/accordion.mjs +169 -0
- package/dist/client/components/ui/alert.mjs +85 -0
- package/dist/client/components/ui/badge.mjs +76 -0
- package/dist/client/components/ui/button.mjs +84 -0
- package/dist/client/components/ui/card.mjs +206 -0
- package/dist/client/components/ui/checkbox.mjs +82 -0
- package/dist/client/components/ui/command.mjs +239 -0
- package/dist/client/components/ui/dialog.mjs +296 -0
- package/dist/client/components/ui/drawer.mjs +278 -0
- package/dist/client/components/ui/dropdown-menu.mjs +315 -0
- package/dist/client/components/ui/empty-state.mjs +99 -0
- package/dist/client/components/ui/field.mjs +354 -0
- package/dist/client/components/ui/input-group.mjs +201 -0
- package/dist/client/components/ui/input.mjs +46 -0
- package/dist/client/components/ui/kbd.mjs +53 -0
- package/dist/client/components/ui/label.mjs +45 -0
- package/dist/client/components/ui/popover.mjs +176 -0
- package/dist/client/components/ui/responsive-dialog.mjs +308 -0
- package/dist/client/components/ui/search-input.mjs +139 -0
- package/dist/client/components/ui/select.mjs +325 -0
- package/dist/client/components/ui/separator.mjs +47 -0
- package/dist/client/components/ui/sheet.mjs +280 -0
- package/dist/client/components/ui/sidebar.mjs +774 -0
- package/dist/client/components/ui/skeleton.mjs +40 -0
- package/dist/client/components/ui/sonner.d.mts +13 -0
- package/dist/client/components/ui/sonner.mjs +85 -0
- package/dist/client/components/ui/spinner.mjs +52 -0
- package/dist/client/components/ui/switch.mjs +58 -0
- package/dist/client/components/ui/table.mjs +276 -0
- package/dist/client/components/ui/tabs.mjs +160 -0
- package/dist/client/components/ui/textarea.mjs +40 -0
- package/dist/client/components/ui/toolbar.mjs +136 -0
- package/dist/client/components/ui/tooltip.mjs +146 -0
- package/dist/client/components/widgets/chart-widget.mjs +582 -0
- package/dist/client/components/widgets/progress-widget.mjs +200 -0
- package/dist/client/components/widgets/quick-actions-widget.mjs +209 -0
- package/dist/client/components/widgets/recent-items-widget.mjs +196 -0
- package/dist/client/components/widgets/stats-widget.mjs +261 -0
- package/dist/client/components/widgets/table-widget.mjs +273 -0
- package/dist/client/components/widgets/timeline-widget.mjs +279 -0
- package/dist/client/components/widgets/value-widget.mjs +312 -0
- package/dist/client/components/widgets/widget-skeletons.mjs +427 -0
- package/dist/client/contexts/breadcrumb-context.mjs +60 -0
- package/dist/client/contexts/focus-context.d.mts +87 -0
- package/dist/client/contexts/focus-context.mjs +250 -0
- package/dist/client/hooks/typed-hooks.d.mts +110 -0
- package/dist/client/hooks/typed-hooks.mjs +888 -0
- package/dist/client/hooks/use-action.mjs +329 -0
- package/dist/client/hooks/use-admin-config.mjs +69 -0
- package/dist/client/hooks/use-admin-preferences.mjs +171 -0
- package/dist/client/hooks/use-admin-routes.mjs +130 -0
- package/dist/client/hooks/use-audit-history.mjs +157 -0
- package/dist/client/hooks/use-auth.d.mts +97 -0
- package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +9 -10
- package/dist/client/hooks/use-collection-fields.mjs +71 -0
- package/dist/client/hooks/use-collection-meta.mjs +153 -0
- package/dist/client/hooks/use-collection-schema.mjs +90 -0
- package/dist/client/hooks/use-collection-validation.mjs +88 -0
- package/dist/client/hooks/use-collection.d.mts +96 -0
- package/dist/client/hooks/use-collection.mjs +673 -0
- package/dist/client/hooks/use-current-user.d.mts +60 -0
- package/dist/client/hooks/use-current-user.mjs +79 -0
- package/dist/client/hooks/use-field-hooks.mjs +199 -0
- package/dist/client/hooks/use-field-options.d.mts +57 -0
- package/dist/client/hooks/use-field-options.mjs +269 -0
- package/dist/client/hooks/use-global-fields.mjs +58 -0
- package/dist/client/hooks/use-global-meta.mjs +105 -0
- package/dist/client/hooks/use-global-schema.mjs +53 -0
- package/dist/client/hooks/use-global.d.mts +51 -0
- package/dist/client/hooks/use-global.mjs +284 -0
- package/dist/client/hooks/use-locks.mjs +452 -0
- package/dist/client/hooks/use-media-query.d.mts +22 -0
- package/dist/client/hooks/use-media-query.mjs +81 -0
- package/dist/client/hooks/use-prefill-params.mjs +47 -0
- package/dist/client/hooks/use-questpie-query-options.mjs +50 -0
- package/dist/client/hooks/use-reactive-fields.d.mts +78 -0
- package/dist/client/hooks/use-reactive-fields.mjs +201 -0
- package/dist/client/hooks/use-realtime-highlight.mjs +158 -0
- package/dist/client/hooks/use-saved-views.mjs +140 -0
- package/dist/client/hooks/use-search-param-toggle.d.mts +12 -0
- package/dist/client/hooks/use-search-param-toggle.mjs +115 -0
- package/dist/client/hooks/use-search.mjs +258 -0
- package/dist/client/hooks/use-server-actions.mjs +191 -0
- package/dist/client/hooks/use-server-validation.mjs +291 -0
- package/dist/client/hooks/use-server-widget-data.d.mts +25 -0
- package/dist/client/hooks/use-server-widget-data.mjs +65 -0
- package/dist/client/hooks/use-setup-status.d.mts +38 -0
- package/dist/client/hooks/use-setup-status.mjs +62 -0
- package/dist/client/hooks/use-sidebar-search-param.d.mts +9 -0
- package/dist/client/hooks/use-sidebar-search-param.mjs +104 -0
- package/dist/client/hooks/use-transition-stage.mjs +125 -0
- package/dist/client/hooks/use-upload-collection.mjs +31 -0
- package/dist/client/hooks/use-upload.mjs +209 -0
- package/dist/client/hooks/use-validation-error-map.mjs +57 -0
- package/dist/client/hooks/use-view-state.mjs +479 -0
- package/dist/client/i18n/hooks.mjs +284 -0
- package/dist/client/i18n/intl-cache.mjs +64 -0
- package/dist/client/i18n/messages.mjs +6 -0
- package/dist/client/i18n/simple.d.mts +21 -0
- package/dist/client/i18n/simple.mjs +156 -0
- package/dist/client/i18n/types.d.mts +109 -0
- package/dist/client/lib/cookies.mjs +9 -0
- package/dist/client/lib/events.mjs +5 -0
- package/dist/client/lib/render-profiler.mjs +51 -0
- package/dist/client/lib/utils.mjs +23 -0
- package/dist/client/preview/block-scope-context.d.mts +73 -0
- package/dist/client/preview/block-scope-context.mjs +116 -0
- package/dist/client/preview/index.d.mts +5 -0
- package/dist/client/preview/preview-banner.d.mts +45 -0
- package/dist/client/preview/preview-banner.mjs +134 -0
- package/dist/client/preview/preview-field.d.mts +107 -0
- package/dist/client/preview/preview-field.mjs +227 -0
- package/dist/client/preview/types.d.mts +114 -0
- package/dist/client/preview/types.mjs +20 -0
- package/dist/client/preview/use-collection-preview.d.mts +70 -0
- package/dist/client/preview/use-collection-preview.mjs +163 -0
- package/dist/client/runtime/content-locales-provider.d.mts +1 -0
- package/dist/client/runtime/content-locales-provider.mjs +136 -0
- package/dist/client/runtime/index.d.mts +5 -0
- package/dist/client/runtime/index.mjs +6 -0
- package/dist/client/runtime/locale-scope.d.mts +2 -0
- package/dist/client/runtime/locale-scope.mjs +108 -0
- package/dist/client/runtime/provider.d.mts +203 -0
- package/dist/client/runtime/provider.mjs +393 -0
- package/dist/client/runtime/routes.d.mts +49 -0
- package/dist/client/runtime/routes.mjs +91 -0
- package/dist/client/runtime/translations-provider.mjs +242 -0
- package/dist/client/scope/index.d.mts +3 -0
- package/dist/client/scope/picker.d.mts +53 -0
- package/dist/client/scope/picker.mjs +395 -0
- package/dist/client/scope/provider.d.mts +103 -0
- package/dist/client/scope/provider.mjs +167 -0
- package/dist/client/scope/types.d.mts +111 -0
- package/dist/client/styles/index.css +344 -188
- package/dist/client/utils/auto-expand-fields.mjs +83 -0
- package/dist/client/utils/build-field-definitions-from-schema.mjs +259 -0
- package/dist/client/utils/dependency-tracker.mjs +61 -0
- package/dist/client/utils/detect-relations.mjs +45 -0
- package/dist/client/utils/locale-to-flag.d.mts +119 -0
- package/dist/client/utils/locale-to-flag.mjs +129 -0
- package/dist/client/utils/routes.mjs +195 -0
- package/dist/client/views/auth/accept-invite-form.d.mts +72 -0
- package/dist/client/views/auth/accept-invite-form.mjs +473 -0
- package/dist/client/views/auth/auth-layout.d.mts +43 -0
- package/dist/client/views/auth/auth-layout.mjs +116 -0
- package/dist/client/views/auth/forgot-password-form.d.mts +58 -0
- package/dist/client/views/auth/forgot-password-form.mjs +386 -0
- package/dist/client/views/auth/invite-form.mjs +497 -0
- package/dist/client/views/auth/login-form.d.mts +75 -0
- package/dist/client/views/auth/login-form.mjs +387 -0
- package/dist/client/views/auth/reset-password-form.d.mts +65 -0
- package/dist/client/views/auth/reset-password-form.mjs +515 -0
- package/dist/client/views/auth/setup-form.d.mts +60 -0
- package/dist/client/views/auth/setup-form.mjs +526 -0
- package/dist/client/views/collection/auto-form-fields.mjs +873 -0
- package/dist/client/views/collection/bulk-action-toolbar.mjs +480 -0
- package/dist/client/views/collection/cells/complex-cells.mjs +746 -0
- package/dist/client/views/collection/cells/primitive-cells.mjs +395 -0
- package/dist/client/views/collection/cells/relation-cells.mjs +260 -0
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +509 -0
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs +125 -0
- package/dist/client/views/collection/cells/shared/relation-chip.mjs +121 -0
- package/dist/client/views/collection/cells/upload-cells.mjs +28 -0
- package/dist/client/views/collection/columns/build-columns.mjs +195 -0
- package/dist/client/views/collection/columns/column-defaults.mjs +123 -0
- package/dist/client/views/collection/field-context.mjs +126 -0
- package/dist/client/views/collection/field-renderer.mjs +368 -0
- package/dist/client/views/collection/form-view.mjs +1566 -0
- package/dist/client/views/collection/table-view.mjs +832 -0
- package/dist/client/views/collection/view-skeletons.mjs +215 -0
- package/dist/client/views/common/global-search.mjs +700 -0
- package/dist/client/views/dashboard/dashboard-grid.mjs +881 -0
- package/dist/client/views/dashboard/dashboard-widget.mjs +265 -0
- package/dist/client/views/dashboard/widget-card.mjs +372 -0
- package/dist/client/views/globals/global-form-view.mjs +1306 -0
- package/dist/client/views/layout/admin-layout-provider.d.mts +137 -0
- package/dist/client/views/layout/admin-layout-provider.mjs +193 -0
- package/dist/client/views/layout/admin-layout.d.mts +133 -0
- package/dist/client/views/layout/admin-layout.mjs +302 -0
- package/dist/client/views/layout/admin-router.d.mts +93 -0
- package/dist/client/views/layout/admin-router.mjs +1254 -0
- package/dist/client/views/layout/admin-sidebar.d.mts +99 -0
- package/dist/client/views/layout/admin-sidebar.mjs +1379 -0
- package/dist/client/views/layout/admin-topbar.mjs +236 -0
- package/dist/client/views/pages/accept-invite-page.d.mts +66 -0
- package/dist/client/views/pages/accept-invite-page.mjs +349 -0
- package/dist/client/views/pages/dashboard-page.d.mts +43 -0
- package/dist/client/views/pages/dashboard-page.mjs +84 -0
- package/dist/client/views/pages/forgot-password-page.d.mts +56 -0
- package/dist/client/views/pages/forgot-password-page.mjs +152 -0
- package/dist/client/views/pages/invite-page.d.mts +70 -0
- package/dist/client/views/pages/invite-page.mjs +161 -0
- package/dist/client/views/pages/login-page.d.mts +69 -0
- package/dist/client/views/pages/login-page.mjs +193 -0
- package/dist/client/views/pages/reset-password-page.d.mts +63 -0
- package/dist/client/views/pages/reset-password-page.mjs +257 -0
- package/dist/client/views/pages/setup-page.d.mts +61 -0
- package/dist/client/views/pages/setup-page.mjs +156 -0
- package/dist/client-module.d.mts +3 -0
- package/dist/client-module.mjs +3 -0
- package/dist/client.d.mts +99 -3
- package/dist/client.mjs +52 -12
- package/dist/components/rich-text/index.d.mts +1 -0
- package/dist/components/rich-text/rich-text-renderer.d.mts +103 -0
- package/dist/components/rich-text/rich-text-renderer.mjs +237 -0
- package/dist/index.d.mts +59 -3
- package/dist/index.mjs +52 -12
- package/dist/plugin.d.mts +2 -0
- package/dist/plugin.mjs +3 -0
- package/dist/server/adapters/nextjs.d.mts +120 -0
- package/dist/server/adapters/nextjs.mjs +110 -0
- package/dist/server/adapters/tanstack.d.mts +132 -0
- package/dist/server/adapters/tanstack.mjs +89 -0
- package/dist/server/augmentation/actions.d.mts +279 -0
- package/dist/server/augmentation/common.d.mts +76 -0
- package/dist/server/augmentation/dashboard.d.mts +547 -0
- package/dist/server/augmentation/form-layout.d.mts +303 -0
- package/dist/server/augmentation/index.d.mts +44 -0
- package/dist/server/augmentation/index.mjs +10 -0
- package/dist/server/augmentation/sidebar.d.mts +181 -0
- package/dist/server/augmentation/views.d.mts +237 -0
- package/dist/server/augmentation.d.mts +7 -0
- package/dist/server/block/index.d.mts +4 -0
- package/dist/server/codegen/admin-client-template.mjs +93 -0
- package/dist/server/codegen/projection-validator.mjs +67 -0
- package/dist/server/fields/blocks.d.mts +71 -0
- package/dist/server/fields/blocks.mjs +151 -0
- package/dist/server/fields/index.d.mts +15 -0
- package/dist/server/fields/index.mjs +15 -0
- package/dist/server/fields/rich-text.d.mts +68 -0
- package/dist/server/fields/rich-text.mjs +147 -0
- package/dist/server/i18n/index.mjs +43 -0
- package/dist/server/i18n/messages/cs.mjs +461 -0
- package/dist/server/i18n/messages/de.mjs +461 -0
- package/dist/server/i18n/messages/en.mjs +707 -0
- package/dist/server/i18n/messages/es.mjs +461 -0
- package/dist/server/i18n/messages/fr.mjs +461 -0
- package/dist/server/i18n/messages/index.mjs +23 -0
- package/dist/server/i18n/messages/pl.mjs +461 -0
- package/dist/server/i18n/messages/pt.mjs +464 -0
- package/dist/server/i18n/messages/sk.mjs +689 -0
- package/dist/server/modules/admin/.generated/module.d.mts +52 -0
- package/dist/server/modules/admin/.generated/module.mjs +78 -0
- package/dist/server/modules/admin/.generated/registries.d.mts +22 -0
- package/dist/server/modules/admin/auth-helpers.d.mts +142 -0
- package/dist/server/modules/admin/auth-helpers.mjs +107 -0
- package/dist/server/modules/admin/block/block-builder.d.mts +383 -0
- package/dist/server/modules/admin/block/block-builder.mjs +315 -0
- package/dist/server/modules/admin/block/index.d.mts +3 -0
- package/dist/server/modules/admin/block/introspection.d.mts +89 -0
- package/dist/server/modules/admin/block/introspection.mjs +100 -0
- package/dist/server/modules/admin/block/prefetch.d.mts +78 -0
- package/dist/server/modules/admin/block/prefetch.mjs +241 -0
- package/dist/server/modules/admin/client/.generated/module.d.mts +94 -0
- package/dist/server/modules/admin/client/.generated/module.mjs +91 -0
- package/dist/server/modules/admin/client/components/badge.d.mts +1 -0
- package/dist/server/modules/admin/client/components/icon.d.mts +1 -0
- package/dist/server/modules/admin/client/fields/array.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/array.mjs +12 -0
- package/dist/server/modules/admin/client/fields/assetPreview.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/assetPreview.mjs +18 -0
- package/dist/server/modules/admin/client/fields/blocks.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/blocks.mjs +12 -0
- package/dist/server/modules/admin/client/fields/boolean.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/boolean.mjs +12 -0
- package/dist/server/modules/admin/client/fields/date.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/date.mjs +12 -0
- package/dist/server/modules/admin/client/fields/datetime.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/datetime.mjs +12 -0
- package/dist/server/modules/admin/client/fields/email.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/email.mjs +12 -0
- package/dist/server/modules/admin/client/fields/json.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/json.mjs +11 -0
- package/dist/server/modules/admin/client/fields/number.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/number.mjs +12 -0
- package/dist/server/modules/admin/client/fields/object.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/object.mjs +12 -0
- package/dist/server/modules/admin/client/fields/relation.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/relation.mjs +12 -0
- package/dist/server/modules/admin/client/fields/richText.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/richText.mjs +11 -0
- package/dist/server/modules/admin/client/fields/select.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/select.mjs +12 -0
- package/dist/server/modules/admin/client/fields/text.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/text.mjs +12 -0
- package/dist/server/modules/admin/client/fields/textarea.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/textarea.mjs +12 -0
- package/dist/server/modules/admin/client/fields/time.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/time.mjs +12 -0
- package/dist/server/modules/admin/client/fields/upload.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/upload.mjs +12 -0
- package/dist/server/modules/admin/client/fields/url.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/url.mjs +12 -0
- package/dist/server/modules/admin/client/index.d.mts +1 -0
- package/dist/server/modules/admin/client/pages/dashboard.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/dashboard.mjs +11 -0
- package/dist/server/modules/admin/client/pages/forgotPassword.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/forgotPassword.mjs +11 -0
- package/dist/server/modules/admin/client/pages/login.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/login.mjs +11 -0
- package/dist/server/modules/admin/client/pages/resetPassword.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/resetPassword.mjs +11 -0
- package/dist/server/modules/admin/client/pages/setup.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/setup.mjs +11 -0
- package/dist/server/modules/admin/client/views/collection-form.mjs +10 -0
- package/dist/server/modules/admin/client/views/collection-table.mjs +10 -0
- package/dist/server/modules/admin/client/views/global-form.mjs +10 -0
- package/dist/server/modules/admin/client/widgets/chart.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/chart.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/progress.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/progress.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/quickActions.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/quickActions.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/recentItems.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/recentItems.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/stats.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/stats.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/table.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/table.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/timeline.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/timeline.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/value.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/value.mjs +7 -0
- package/dist/server/modules/admin/collections/account.d.mts +77 -0
- package/dist/server/modules/admin/collections/account.mjs +23 -0
- package/dist/server/modules/admin/collections/admin-locks.d.mts +90 -0
- package/dist/server/modules/admin/collections/admin-locks.mjs +16 -0
- package/dist/server/modules/admin/collections/admin-preferences.d.mts +69 -0
- package/dist/server/modules/admin/collections/admin-preferences.mjs +16 -0
- package/dist/server/modules/admin/collections/admin-saved-views.d.mts +83 -0
- package/dist/server/modules/admin/collections/admin-saved-views.mjs +16 -0
- package/dist/server/modules/admin/collections/apikey.d.mts +99 -0
- package/dist/server/modules/admin/collections/apikey.mjs +15 -0
- package/dist/server/modules/admin/collections/assets.d.mts +72 -0
- package/dist/server/modules/admin/collections/assets.mjs +71 -0
- package/dist/server/modules/admin/collections/session.d.mts +69 -0
- package/dist/server/modules/admin/collections/session.mjs +15 -0
- package/dist/server/modules/admin/collections/user.d.mts +85 -0
- package/dist/server/modules/admin/collections/user.mjs +204 -0
- package/dist/server/modules/admin/collections/verification.d.mts +63 -0
- package/dist/server/modules/admin/collections/verification.mjs +15 -0
- package/dist/server/modules/admin/components/badge.d.mts +10 -0
- package/dist/server/modules/admin/components/badge.mjs +10 -0
- package/dist/server/modules/admin/components/icon.d.mts +9 -0
- package/dist/server/modules/admin/components/icon.mjs +11 -0
- package/dist/server/modules/admin/config/admin.mjs +34 -0
- package/dist/server/modules/admin/dto/admin-config.dto.mjs +102 -0
- package/dist/server/modules/admin/factories.mjs +172 -0
- package/dist/server/modules/admin/index.d.mts +1093 -0
- package/dist/server/modules/admin/index.mjs +26 -0
- package/dist/server/modules/admin/modules.mjs +11 -0
- package/dist/server/modules/admin/plugin.mjs +13 -0
- package/dist/server/modules/admin/routes/admin-config.d.mts +28 -0
- package/dist/server/modules/admin/routes/admin-config.mjs +552 -0
- package/dist/server/modules/admin/routes/execute-action.d.mts +92 -0
- package/dist/server/modules/admin/routes/execute-action.mjs +433 -0
- package/dist/server/modules/admin/routes/locales.d.mts +18 -0
- package/dist/server/modules/admin/routes/locales.mjs +69 -0
- package/dist/server/modules/admin/routes/preview.d.mts +80 -0
- package/dist/server/modules/admin/routes/preview.mjs +230 -0
- package/dist/server/modules/admin/routes/reactive.d.mts +74 -0
- package/dist/server/modules/admin/routes/reactive.mjs +350 -0
- package/dist/server/modules/admin/routes/route-helpers.d.mts +23 -0
- package/dist/server/modules/admin/routes/route-helpers.mjs +76 -0
- package/dist/server/modules/admin/routes/setup.d.mts +63 -0
- package/dist/server/modules/admin/routes/setup.mjs +114 -0
- package/dist/server/modules/admin/routes/translations.d.mts +26 -0
- package/dist/server/modules/admin/routes/translations.mjs +114 -0
- package/dist/server/modules/admin/routes/widget-data.d.mts +32 -0
- package/dist/server/modules/admin/routes/widget-data.mjs +62 -0
- package/dist/server/modules/admin/views/form.d.mts +8 -0
- package/dist/server/modules/admin/views/form.mjs +7 -0
- package/dist/server/modules/admin/views/global-form.d.mts +8 -0
- package/dist/server/modules/admin/views/global-form.mjs +7 -0
- package/dist/server/modules/admin/views/table.d.mts +8 -0
- package/dist/server/modules/admin/views/table.mjs +7 -0
- package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +37 -0
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +55 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +99 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.mjs +38 -0
- package/dist/server/modules/audit/.generated/module.d.mts +60 -0
- package/dist/server/modules/audit/.generated/module.mjs +30 -0
- package/dist/server/modules/audit/collections/audit-log.d.mts +214 -0
- package/dist/server/modules/audit/collections/audit-log.mjs +107 -0
- package/dist/server/modules/audit/config/admin.mjs +21 -0
- package/dist/server/modules/audit/config/app.mjs +262 -0
- package/dist/server/modules/audit/index.d.mts +2 -0
- package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +13 -0
- package/dist/server/modules/audit/jobs/audit-cleanup.mjs +28 -0
- package/dist/server/plugin.d.mts +26 -0
- package/dist/server/plugin.mjs +385 -0
- package/dist/server/proxy-factories.d.mts +85 -0
- package/dist/server/proxy-factories.mjs +302 -0
- package/dist/server/registry-helpers.d.mts +83 -0
- package/dist/server/registry-helpers.mjs +104 -0
- package/dist/server.d.mts +33 -250
- package/dist/server.mjs +22 -832
- package/dist/shared/preview-utils.d.mts +53 -0
- package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -3
- package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
- package/dist/shared.d.mts +3 -57
- package/dist/shared.mjs +1 -1
- package/package.json +56 -51
- package/skills/questpie-admin/SKILL.md +397 -0
- package/skills/questpie-admin/blocks/SKILL.md +305 -0
- package/skills/questpie-admin/custom-ui/SKILL.md +307 -0
- package/skills/questpie-admin/views/SKILL.md +442 -0
- package/dist/auth-layout-M8K8_q5R.mjs +0 -181
- package/dist/auth-layout-M8K8_q5R.mjs.map +0 -1
- package/dist/bulk-upload-dialog-D7w7W1Hl.mjs +0 -273
- package/dist/bulk-upload-dialog-D7w7W1Hl.mjs.map +0 -1
- package/dist/card-BKHjBQfw.mjs +0 -58
- package/dist/card-BKHjBQfw.mjs.map +0 -1
- package/dist/client-D1DqawtP.d.mts +0 -13403
- package/dist/client-D1DqawtP.d.mts.map +0 -1
- package/dist/client-njX1rZmi.mjs +0 -22612
- package/dist/client-njX1rZmi.mjs.map +0 -1
- package/dist/content-locales-provider-BXvuIgfg.mjs +0 -1650
- package/dist/content-locales-provider-BXvuIgfg.mjs.map +0 -1
- package/dist/dashboard-page-B4PGEdc2.mjs +0 -2500
- package/dist/dashboard-page-B4PGEdc2.mjs.map +0 -1
- package/dist/dashboard-page-mCY0pgZv.mjs +0 -3
- package/dist/dropzone-Do3awXKd.mjs +0 -634
- package/dist/dropzone-Do3awXKd.mjs.map +0 -1
- package/dist/forgot-password-page-Bcp-An4Y.mjs +0 -221
- package/dist/forgot-password-page-Bcp-An4Y.mjs.map +0 -1
- package/dist/forgot-password-page-CEwsdLwn.mjs +0 -3
- package/dist/index-B4H3amCD.d.mts +0 -2753
- package/dist/index-B4H3amCD.d.mts.map +0 -1
- package/dist/login-page-BUnpCbCa.mjs +0 -3
- package/dist/login-page-CP4gA-dl.mjs +0 -298
- package/dist/login-page-CP4gA-dl.mjs.map +0 -1
- package/dist/preview-utils-BKQ9-TMa.mjs.map +0 -1
- package/dist/reset-password-page-BqfDmLxA.mjs +0 -281
- package/dist/reset-password-page-BqfDmLxA.mjs.map +0 -1
- package/dist/reset-password-page-CufHz3h3.mjs +0 -3
- package/dist/runtime-6VZM878K.mjs +0 -69
- package/dist/runtime-6VZM878K.mjs.map +0 -1
- package/dist/saved-views.types-BMsz5mCy.d.mts.map +0 -1
- package/dist/server.d.mts.map +0 -1
- package/dist/server.mjs.map +0 -1
- package/dist/setup-page-BNNzt_Z6.mjs +0 -3
- package/dist/setup-page-YAP_fzqh.mjs +0 -264
- package/dist/setup-page-YAP_fzqh.mjs.map +0 -1
- package/dist/shared.d.mts.map +0 -1
- package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { DynamicI18nText, IconComponent } from "./common.mjs";
|
|
2
|
+
import { ComponentReference } from "../../../server/augmentation/common.mjs";
|
|
3
|
+
import "../../../server/augmentation.mjs";
|
|
4
|
+
import { WidgetConfig } from "./widget-types.mjs";
|
|
5
|
+
|
|
6
|
+
//#region src/client/builder/types/ui-config.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Dashboard action item - simplified action for dashboard header
|
|
10
|
+
*/
|
|
11
|
+
interface DashboardAction {
|
|
12
|
+
/** Unique action ID */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Action label */
|
|
15
|
+
label: DynamicI18nText;
|
|
16
|
+
/** Action icon */
|
|
17
|
+
icon?: IconComponent | ComponentReference;
|
|
18
|
+
/** Link URL */
|
|
19
|
+
href?: string;
|
|
20
|
+
/** Click handler */
|
|
21
|
+
onClick?: () => void;
|
|
22
|
+
/** Visual variant */
|
|
23
|
+
variant?: "default" | "primary" | "secondary" | "outline" | "ghost";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Widget card visual variant
|
|
27
|
+
*/
|
|
28
|
+
type WidgetCardVariant = "default" | "compact" | "featured";
|
|
29
|
+
/**
|
|
30
|
+
* Dashboard layout item - can be a widget, section, or tabs
|
|
31
|
+
*/
|
|
32
|
+
type DashboardLayoutItem = WidgetConfig | DashboardSection | DashboardTabs;
|
|
33
|
+
/**
|
|
34
|
+
* Dashboard section - groups widgets together
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* {
|
|
39
|
+
* type: "section",
|
|
40
|
+
* label: { en: "Sales Overview", sk: "Prehľad predaja" },
|
|
41
|
+
* layout: "grid",
|
|
42
|
+
* columns: 3,
|
|
43
|
+
* items: [
|
|
44
|
+
* { type: "stats", ... },
|
|
45
|
+
* { type: "chart", ... },
|
|
46
|
+
* ]
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
interface DashboardSection {
|
|
51
|
+
type: "section";
|
|
52
|
+
/** Section label */
|
|
53
|
+
label?: DynamicI18nText;
|
|
54
|
+
/** Section description */
|
|
55
|
+
description?: DynamicI18nText;
|
|
56
|
+
/** Section icon */
|
|
57
|
+
icon?: IconComponent | ComponentReference;
|
|
58
|
+
/** Wrapper style */
|
|
59
|
+
wrapper?: "flat" | "card" | "collapsible";
|
|
60
|
+
/** Whether collapsed by default (for collapsible wrapper) */
|
|
61
|
+
defaultCollapsed?: boolean;
|
|
62
|
+
/** Layout mode */
|
|
63
|
+
layout?: "grid" | "stack";
|
|
64
|
+
/** Grid columns (for grid layout) */
|
|
65
|
+
columns?: number;
|
|
66
|
+
/** Gap between items */
|
|
67
|
+
gap?: number;
|
|
68
|
+
/** Section items */
|
|
69
|
+
items: DashboardLayoutItem[];
|
|
70
|
+
/** Custom CSS class */
|
|
71
|
+
className?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Dashboard tabs - tabbed widget groups
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* {
|
|
79
|
+
* type: "tabs",
|
|
80
|
+
* tabs: [
|
|
81
|
+
* {
|
|
82
|
+
* id: "overview",
|
|
83
|
+
* label: { en: "Overview", sk: "Prehľad" },
|
|
84
|
+
* items: [...widgets]
|
|
85
|
+
* },
|
|
86
|
+
* {
|
|
87
|
+
* id: "analytics",
|
|
88
|
+
* label: { en: "Analytics", sk: "Analytika" },
|
|
89
|
+
* items: [...widgets]
|
|
90
|
+
* }
|
|
91
|
+
* ]
|
|
92
|
+
* }
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
interface DashboardTabs {
|
|
96
|
+
type: "tabs";
|
|
97
|
+
/** Tab configurations */
|
|
98
|
+
tabs: DashboardTabConfig[];
|
|
99
|
+
/** Default active tab ID */
|
|
100
|
+
defaultTab?: string;
|
|
101
|
+
/** Tabs visual variant */
|
|
102
|
+
variant?: "default" | "line" | "pills";
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Single tab configuration
|
|
106
|
+
*/
|
|
107
|
+
interface DashboardTabConfig {
|
|
108
|
+
/** Unique tab ID */
|
|
109
|
+
id: string;
|
|
110
|
+
/** Tab label */
|
|
111
|
+
label: DynamicI18nText;
|
|
112
|
+
/** Tab icon */
|
|
113
|
+
icon?: IconComponent | ComponentReference;
|
|
114
|
+
/** Tab items (widgets or sections) */
|
|
115
|
+
items: DashboardLayoutItem[];
|
|
116
|
+
/** Badge text (e.g., count) */
|
|
117
|
+
badge?: string | number;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Dashboard configuration
|
|
121
|
+
*/
|
|
122
|
+
interface DashboardConfig {
|
|
123
|
+
/** Dashboard layout mode */
|
|
124
|
+
layout?: "grid" | "list";
|
|
125
|
+
/** Dashboard title - supports inline translations */
|
|
126
|
+
title?: DynamicI18nText;
|
|
127
|
+
/** Dashboard description - supports inline translations */
|
|
128
|
+
description?: DynamicI18nText;
|
|
129
|
+
/** Grid columns (default: 4) */
|
|
130
|
+
columns?: number;
|
|
131
|
+
/** Gap between widgets */
|
|
132
|
+
gap?: number;
|
|
133
|
+
/** Dashboard items - widgets, sections, or tabs */
|
|
134
|
+
items?: DashboardLayoutItem[];
|
|
135
|
+
/**
|
|
136
|
+
* @deprecated Use `items` instead
|
|
137
|
+
*/
|
|
138
|
+
widgets?: WidgetConfig[];
|
|
139
|
+
/** Default widget card variant */
|
|
140
|
+
defaultCardVariant?: WidgetCardVariant;
|
|
141
|
+
/** Show refresh button in header */
|
|
142
|
+
showRefresh?: boolean;
|
|
143
|
+
/** Auto-refresh interval in milliseconds */
|
|
144
|
+
refreshInterval?: number;
|
|
145
|
+
/** Enable realtime invalidation for dashboard widgets by default */
|
|
146
|
+
realtime?: boolean;
|
|
147
|
+
/** Header actions (buttons in dashboard header) */
|
|
148
|
+
actions?: DashboardAction[];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Locale configuration
|
|
152
|
+
*/
|
|
153
|
+
interface LocaleConfig {
|
|
154
|
+
default?: string;
|
|
155
|
+
supported?: string[];
|
|
156
|
+
}
|
|
157
|
+
//#endregion
|
|
158
|
+
export { DashboardAction, DashboardConfig, DashboardLayoutItem, DashboardSection, DashboardTabConfig, DashboardTabs, LocaleConfig };
|
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
import { I18nText } from "../../i18n/types.mjs";
|
|
2
|
+
import { IconComponent, MaybeLazyComponent } from "./common.mjs";
|
|
3
|
+
import { ComponentReference } from "../../../server/augmentation/common.mjs";
|
|
4
|
+
import "../../../server/augmentation.mjs";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/client/builder/types/widget-types.d.ts
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Widget card visual variant
|
|
11
|
+
*/
|
|
12
|
+
type WidgetCardVariant = "default" | "compact" | "featured";
|
|
13
|
+
/**
|
|
14
|
+
* Base widget configuration shared by all widget types
|
|
15
|
+
*/
|
|
16
|
+
interface BaseWidgetConfig {
|
|
17
|
+
/**
|
|
18
|
+
* Widget ID
|
|
19
|
+
*/
|
|
20
|
+
id: string;
|
|
21
|
+
/**
|
|
22
|
+
* Widget title
|
|
23
|
+
*/
|
|
24
|
+
title?: I18nText;
|
|
25
|
+
/**
|
|
26
|
+
* Widget description
|
|
27
|
+
*/
|
|
28
|
+
description?: I18nText;
|
|
29
|
+
/**
|
|
30
|
+
* Widget icon
|
|
31
|
+
*/
|
|
32
|
+
icon?: IconComponent | ComponentReference | string;
|
|
33
|
+
/**
|
|
34
|
+
* Card visual variant
|
|
35
|
+
*/
|
|
36
|
+
cardVariant?: WidgetCardVariant;
|
|
37
|
+
/**
|
|
38
|
+
* Widget size
|
|
39
|
+
*/
|
|
40
|
+
size?: "small" | "medium" | "large" | "full";
|
|
41
|
+
/**
|
|
42
|
+
* Column span (1-12)
|
|
43
|
+
*/
|
|
44
|
+
span?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Grid position (for dashboard layouts)
|
|
47
|
+
*/
|
|
48
|
+
position?: {
|
|
49
|
+
x?: number;
|
|
50
|
+
y?: number;
|
|
51
|
+
w?: number;
|
|
52
|
+
h?: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Data source configuration
|
|
56
|
+
*/
|
|
57
|
+
dataSource?: WidgetDataSource;
|
|
58
|
+
/**
|
|
59
|
+
* Widget-specific options
|
|
60
|
+
*/
|
|
61
|
+
options?: Record<string, any>;
|
|
62
|
+
/**
|
|
63
|
+
* Refresh interval in milliseconds
|
|
64
|
+
*/
|
|
65
|
+
refreshInterval?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Enable realtime invalidation for widget data queries.
|
|
68
|
+
* Falls back to AdminProvider realtime config when undefined.
|
|
69
|
+
*/
|
|
70
|
+
realtime?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Header actions
|
|
73
|
+
*/
|
|
74
|
+
actions?: WidgetAction[];
|
|
75
|
+
/**
|
|
76
|
+
* Custom CSS class
|
|
77
|
+
*/
|
|
78
|
+
className?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Indicates server has a loader for this widget (set by getAdminConfig).
|
|
81
|
+
* When true, the widget loads data via the fetchWidgetData RPC endpoint
|
|
82
|
+
* instead of calling a client-side loader.
|
|
83
|
+
*/
|
|
84
|
+
hasLoader?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Date filter presets for time-based filtering
|
|
88
|
+
*/
|
|
89
|
+
type DateFilterPreset = "today" | "yesterday" | "thisWeek" | "lastWeek" | "thisMonth" | "lastMonth" | "last7days" | "last30days" | "last90days" | "thisYear" | "lastYear";
|
|
90
|
+
/**
|
|
91
|
+
* Date filter configuration
|
|
92
|
+
*/
|
|
93
|
+
interface DateFilterConfig {
|
|
94
|
+
/**
|
|
95
|
+
* Field name to filter on (e.g., "createdAt", "scheduledAt")
|
|
96
|
+
*/
|
|
97
|
+
field: string;
|
|
98
|
+
/**
|
|
99
|
+
* Preset time range
|
|
100
|
+
*/
|
|
101
|
+
range: DateFilterPreset;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Stats widget configuration
|
|
105
|
+
*/
|
|
106
|
+
interface StatsWidgetConfig extends BaseWidgetConfig {
|
|
107
|
+
type: "stats";
|
|
108
|
+
collection: string;
|
|
109
|
+
label?: I18nText;
|
|
110
|
+
/**
|
|
111
|
+
* Static filter (evaluated at build time)
|
|
112
|
+
*/
|
|
113
|
+
filter?: Record<string, any>;
|
|
114
|
+
/**
|
|
115
|
+
* Dynamic filter function (evaluated at render time)
|
|
116
|
+
* Use this for filters that depend on current date/time
|
|
117
|
+
*/
|
|
118
|
+
filterFn?: () => Record<string, any>;
|
|
119
|
+
/**
|
|
120
|
+
* Date filter preset (evaluated at render time)
|
|
121
|
+
* Shorthand for common date-based filters
|
|
122
|
+
*/
|
|
123
|
+
dateFilter?: DateFilterConfig;
|
|
124
|
+
variant?: "default" | "primary" | "success" | "warning" | "danger";
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Chart widget configuration
|
|
128
|
+
*/
|
|
129
|
+
interface ChartWidgetConfig extends BaseWidgetConfig {
|
|
130
|
+
type: "chart";
|
|
131
|
+
collection: string;
|
|
132
|
+
field: string;
|
|
133
|
+
chartType?: "line" | "bar" | "area" | "pie";
|
|
134
|
+
timeRange?: "7d" | "30d" | "90d" | "1y";
|
|
135
|
+
label?: I18nText;
|
|
136
|
+
color?: string;
|
|
137
|
+
showGrid?: boolean;
|
|
138
|
+
aggregation?: "count" | "sum" | "average";
|
|
139
|
+
valueField?: string;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Recent items widget configuration
|
|
143
|
+
*/
|
|
144
|
+
interface RecentItemsWidgetConfig extends BaseWidgetConfig {
|
|
145
|
+
type: "recentItems";
|
|
146
|
+
collection: string;
|
|
147
|
+
limit?: number;
|
|
148
|
+
titleField?: string;
|
|
149
|
+
dateField?: string;
|
|
150
|
+
subtitleFields?: string[];
|
|
151
|
+
label?: I18nText;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Quick action item configuration
|
|
155
|
+
*/
|
|
156
|
+
interface QuickActionItem {
|
|
157
|
+
/** Action label */
|
|
158
|
+
label: I18nText;
|
|
159
|
+
/** Action icon */
|
|
160
|
+
icon?: IconComponent | ComponentReference | string;
|
|
161
|
+
/** Link URL */
|
|
162
|
+
href?: string;
|
|
163
|
+
/** Click handler */
|
|
164
|
+
onClick?: () => void;
|
|
165
|
+
/** Visual variant */
|
|
166
|
+
variant?: "default" | "primary" | "secondary" | "outline";
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Quick actions widget configuration
|
|
170
|
+
*/
|
|
171
|
+
interface QuickActionsWidgetConfig extends BaseWidgetConfig {
|
|
172
|
+
type: "quickActions";
|
|
173
|
+
/** List of quick action items */
|
|
174
|
+
quickActions: Array<string | QuickActionItem>;
|
|
175
|
+
/** Layout variant */
|
|
176
|
+
layout?: "grid" | "list";
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Custom widget configuration
|
|
180
|
+
*/
|
|
181
|
+
interface CustomWidgetConfig extends BaseWidgetConfig {
|
|
182
|
+
type: "custom";
|
|
183
|
+
component: MaybeLazyComponent<WidgetComponentProps>;
|
|
184
|
+
config?: Record<string, any>;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* ClassNames for styling value widget parts
|
|
188
|
+
*/
|
|
189
|
+
interface ValueWidgetClassNames {
|
|
190
|
+
/** Card container */
|
|
191
|
+
root?: string;
|
|
192
|
+
/** Header wrapper */
|
|
193
|
+
header?: string;
|
|
194
|
+
/** Label text */
|
|
195
|
+
label?: string;
|
|
196
|
+
/** Main icon */
|
|
197
|
+
icon?: ComponentReference | string;
|
|
198
|
+
/** Content wrapper */
|
|
199
|
+
content?: string;
|
|
200
|
+
/** Main value display */
|
|
201
|
+
value?: string;
|
|
202
|
+
/** Trend wrapper + text */
|
|
203
|
+
trend?: string;
|
|
204
|
+
/** Trend icon */
|
|
205
|
+
trendIcon?: string;
|
|
206
|
+
/** Subtitle text */
|
|
207
|
+
subtitle?: string;
|
|
208
|
+
/** Footer text */
|
|
209
|
+
footer?: string;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Trend indicator configuration
|
|
213
|
+
*/
|
|
214
|
+
interface ValueWidgetTrend {
|
|
215
|
+
/** Trend value (e.g., "+15.3%", "-5%") */
|
|
216
|
+
value: string;
|
|
217
|
+
/** Optional trend icon */
|
|
218
|
+
icon?: IconComponent | ComponentReference;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Result returned by loader
|
|
222
|
+
*/
|
|
223
|
+
interface ValueWidgetResult {
|
|
224
|
+
/** Main value to display */
|
|
225
|
+
value: number | string;
|
|
226
|
+
/** Formatted value (if not provided, value.toLocaleString() is used) */
|
|
227
|
+
formatted?: string;
|
|
228
|
+
/** Label/title - supports i18n objects */
|
|
229
|
+
label?: I18nText | string;
|
|
230
|
+
/** Subtitle text - supports i18n objects */
|
|
231
|
+
subtitle?: I18nText | string;
|
|
232
|
+
/** Footer text - supports i18n objects */
|
|
233
|
+
footer?: I18nText | string;
|
|
234
|
+
/** Main icon */
|
|
235
|
+
icon?: IconComponent | ComponentReference;
|
|
236
|
+
/** Trend indicator */
|
|
237
|
+
trend?: ValueWidgetTrend;
|
|
238
|
+
/** Tailwind classes for each part */
|
|
239
|
+
classNames?: ValueWidgetClassNames;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Value widget configuration
|
|
243
|
+
*
|
|
244
|
+
* Flexible widget that fetches data via async function and supports
|
|
245
|
+
* full customization through Tailwind classes.
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```tsx
|
|
249
|
+
* {
|
|
250
|
+
* type: "value",
|
|
251
|
+
* loader: async (client) => {
|
|
252
|
+
* const count = await client.collections.appointments.count({
|
|
253
|
+
* where: { status: "pending" }
|
|
254
|
+
* });
|
|
255
|
+
* return {
|
|
256
|
+
* value: count,
|
|
257
|
+
* label: "Pending",
|
|
258
|
+
* icon: Clock,
|
|
259
|
+
* classNames: {
|
|
260
|
+
* root: count > 10 ? "border-red-300 bg-red-50" : "",
|
|
261
|
+
* value: count > 10 ? "text-red-600" : "",
|
|
262
|
+
* },
|
|
263
|
+
* };
|
|
264
|
+
* },
|
|
265
|
+
* }
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
interface ValueWidgetConfig extends BaseWidgetConfig {
|
|
269
|
+
type: "value";
|
|
270
|
+
/**
|
|
271
|
+
* Async function to fetch and transform data.
|
|
272
|
+
* Receives the Questpie client and returns widget display data.
|
|
273
|
+
* Optional when hasLoader is true (server provides the data).
|
|
274
|
+
*/
|
|
275
|
+
loader?: (client: any) => Promise<ValueWidgetResult>;
|
|
276
|
+
/**
|
|
277
|
+
* Refresh interval in milliseconds
|
|
278
|
+
* If set, the widget will refetch data at this interval
|
|
279
|
+
*/
|
|
280
|
+
refreshInterval?: number;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Table column configuration with overrides
|
|
284
|
+
*/
|
|
285
|
+
interface TableWidgetColumnConfig {
|
|
286
|
+
/** Column key (field name) */
|
|
287
|
+
key: string;
|
|
288
|
+
/** Override column header label (defaults to field label) */
|
|
289
|
+
label?: I18nText;
|
|
290
|
+
/** Column width */
|
|
291
|
+
width?: number | string;
|
|
292
|
+
/** Text alignment */
|
|
293
|
+
align?: "left" | "center" | "right";
|
|
294
|
+
/** Custom cell renderer (overrides field's cell) */
|
|
295
|
+
render?: (value: any, row: any) => React.ReactNode;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Table column - can be a simple field key string or full config object
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```ts
|
|
302
|
+
* // Simple - just field keys, uses field definitions automatically
|
|
303
|
+
* columns: ["name", "status", "createdAt"]
|
|
304
|
+
*
|
|
305
|
+
* // With overrides
|
|
306
|
+
* columns: [
|
|
307
|
+
* "name",
|
|
308
|
+
* { key: "price", align: "right" },
|
|
309
|
+
* { key: "rating", render: (v) => `${v}/5` },
|
|
310
|
+
* ]
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
type TableWidgetColumn = string | TableWidgetColumnConfig;
|
|
314
|
+
/**
|
|
315
|
+
* Table widget configuration - displays a mini table
|
|
316
|
+
*
|
|
317
|
+
* Columns can be simple field keys (strings) or objects with overrides.
|
|
318
|
+
* Field definitions (label, cell renderer) are automatically pulled
|
|
319
|
+
* from the collection's admin config.
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```ts
|
|
323
|
+
* {
|
|
324
|
+
* type: "table",
|
|
325
|
+
* id: "recent-orders",
|
|
326
|
+
* title: "Recent Orders",
|
|
327
|
+
* collection: "orders",
|
|
328
|
+
* // Simple - field keys only, auto-uses field labels and cells
|
|
329
|
+
* columns: ["orderNumber", "customer", "total", "status"],
|
|
330
|
+
* limit: 5,
|
|
331
|
+
* }
|
|
332
|
+
*
|
|
333
|
+
* // With overrides
|
|
334
|
+
* {
|
|
335
|
+
* type: "table",
|
|
336
|
+
* collection: "reviews",
|
|
337
|
+
* columns: [
|
|
338
|
+
* "customer",
|
|
339
|
+
* { key: "rating", render: (v) => `${v}/5` },
|
|
340
|
+
* "comment",
|
|
341
|
+
* ],
|
|
342
|
+
* }
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
interface TableWidgetConfig extends BaseWidgetConfig {
|
|
346
|
+
type: "table";
|
|
347
|
+
/** Collection to fetch from */
|
|
348
|
+
collection: string;
|
|
349
|
+
/** Columns to display - field keys or config objects */
|
|
350
|
+
columns: TableWidgetColumn[];
|
|
351
|
+
/** Number of rows to show */
|
|
352
|
+
limit?: number;
|
|
353
|
+
/** Sort field */
|
|
354
|
+
sortBy?: string;
|
|
355
|
+
/** Sort direction */
|
|
356
|
+
sortOrder?: "asc" | "desc";
|
|
357
|
+
/** Filter */
|
|
358
|
+
filter?: Record<string, any>;
|
|
359
|
+
/** Show row actions */
|
|
360
|
+
showActions?: boolean;
|
|
361
|
+
/** Link rows to detail */
|
|
362
|
+
linkToDetail?: boolean;
|
|
363
|
+
/** Empty state message */
|
|
364
|
+
emptyMessage?: I18nText;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Timeline item configuration
|
|
368
|
+
*/
|
|
369
|
+
interface TimelineItem {
|
|
370
|
+
/** Item ID */
|
|
371
|
+
id: string;
|
|
372
|
+
/** Title */
|
|
373
|
+
title: string;
|
|
374
|
+
/** Description */
|
|
375
|
+
description?: string;
|
|
376
|
+
/** Timestamp */
|
|
377
|
+
timestamp: Date | string;
|
|
378
|
+
/** Icon */
|
|
379
|
+
icon?: IconComponent | ComponentReference;
|
|
380
|
+
/** Status/color variant */
|
|
381
|
+
variant?: "default" | "success" | "warning" | "error" | "info";
|
|
382
|
+
/** Link URL */
|
|
383
|
+
href?: string;
|
|
384
|
+
/** Additional metadata */
|
|
385
|
+
meta?: Record<string, any>;
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Timeline widget configuration - displays activity/event timeline
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* ```ts
|
|
392
|
+
* {
|
|
393
|
+
* type: "timeline",
|
|
394
|
+
* id: "recent-activity",
|
|
395
|
+
* title: "Recent Activity",
|
|
396
|
+
* loader: async (client) => {
|
|
397
|
+
* const activities = await client.collections.activities.findMany({
|
|
398
|
+
* limit: 10,
|
|
399
|
+
* orderBy: { createdAt: "desc" }
|
|
400
|
+
* });
|
|
401
|
+
* return activities.map(a => ({
|
|
402
|
+
* id: a.id,
|
|
403
|
+
* title: a.action,
|
|
404
|
+
* description: a.description,
|
|
405
|
+
* timestamp: a.createdAt,
|
|
406
|
+
* variant: a.type === "error" ? "error" : "default"
|
|
407
|
+
* }));
|
|
408
|
+
* }
|
|
409
|
+
* }
|
|
410
|
+
* ```
|
|
411
|
+
*/
|
|
412
|
+
interface TimelineWidgetConfig extends BaseWidgetConfig {
|
|
413
|
+
type: "timeline";
|
|
414
|
+
/** Async function to fetch timeline items. Optional when hasLoader is true. */
|
|
415
|
+
loader?: (client: any) => Promise<TimelineItem[]>;
|
|
416
|
+
/** Max items to show */
|
|
417
|
+
maxItems?: number;
|
|
418
|
+
/** Show timestamps */
|
|
419
|
+
showTimestamps?: boolean;
|
|
420
|
+
/** Timestamp format */
|
|
421
|
+
timestampFormat?: "relative" | "absolute" | "datetime";
|
|
422
|
+
/** Empty state message */
|
|
423
|
+
emptyMessage?: I18nText;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Progress widget configuration - displays progress towards a goal
|
|
427
|
+
*
|
|
428
|
+
* @example
|
|
429
|
+
* ```ts
|
|
430
|
+
* {
|
|
431
|
+
* type: "progress",
|
|
432
|
+
* id: "monthly-sales",
|
|
433
|
+
* title: "Monthly Sales Goal",
|
|
434
|
+
* loader: async (client) => ({
|
|
435
|
+
* current: 75000,
|
|
436
|
+
* target: 100000,
|
|
437
|
+
* label: "$75,000 / $100,000"
|
|
438
|
+
* })
|
|
439
|
+
* }
|
|
440
|
+
* ```
|
|
441
|
+
*/
|
|
442
|
+
interface ProgressWidgetConfig extends BaseWidgetConfig {
|
|
443
|
+
type: "progress";
|
|
444
|
+
/** Async function to fetch progress data. Optional when hasLoader is true. */
|
|
445
|
+
loader?: (client: any) => Promise<{
|
|
446
|
+
current: number;
|
|
447
|
+
target: number;
|
|
448
|
+
label?: string;
|
|
449
|
+
subtitle?: string;
|
|
450
|
+
}>;
|
|
451
|
+
/** Progress bar color */
|
|
452
|
+
color?: string;
|
|
453
|
+
/** Show percentage */
|
|
454
|
+
showPercentage?: boolean;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Widget configuration - discriminated union of all widget types
|
|
458
|
+
*/
|
|
459
|
+
type WidgetConfig = StatsWidgetConfig | ChartWidgetConfig | RecentItemsWidgetConfig | QuickActionsWidgetConfig | CustomWidgetConfig | ValueWidgetConfig | TableWidgetConfig | TimelineWidgetConfig | ProgressWidgetConfig;
|
|
460
|
+
/**
|
|
461
|
+
* Generic widget configuration (for unknown/custom types registered at runtime)
|
|
462
|
+
* This is kept separate from WidgetConfig to allow proper type narrowing
|
|
463
|
+
*/
|
|
464
|
+
interface GenericWidgetConfig extends BaseWidgetConfig {
|
|
465
|
+
type: string;
|
|
466
|
+
component?: MaybeLazyComponent<WidgetComponentProps>;
|
|
467
|
+
actions?: WidgetAction[];
|
|
468
|
+
[key: string]: any;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Any widget config (union of known configs and generic)
|
|
472
|
+
*/
|
|
473
|
+
type AnyWidgetConfig = WidgetConfig | GenericWidgetConfig;
|
|
474
|
+
/**
|
|
475
|
+
* Props passed to widget components
|
|
476
|
+
*/
|
|
477
|
+
interface WidgetComponentProps<TData = any> {
|
|
478
|
+
/**
|
|
479
|
+
* Widget configuration
|
|
480
|
+
*/
|
|
481
|
+
config: WidgetConfig | Record<string, any>;
|
|
482
|
+
/**
|
|
483
|
+
* Widget data (from data source)
|
|
484
|
+
*/
|
|
485
|
+
data?: TData;
|
|
486
|
+
/**
|
|
487
|
+
* Loading state
|
|
488
|
+
*/
|
|
489
|
+
isLoading?: boolean;
|
|
490
|
+
/**
|
|
491
|
+
* Error state
|
|
492
|
+
*/
|
|
493
|
+
error?: Error | null;
|
|
494
|
+
/**
|
|
495
|
+
* Refresh data
|
|
496
|
+
*/
|
|
497
|
+
onRefresh?: () => void;
|
|
498
|
+
/**
|
|
499
|
+
* Column span for grid layout
|
|
500
|
+
*/
|
|
501
|
+
span?: number;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Widget data source configuration
|
|
505
|
+
*/
|
|
506
|
+
interface WidgetDataSource {
|
|
507
|
+
/**
|
|
508
|
+
* Data source type
|
|
509
|
+
*/
|
|
510
|
+
type: "collection" | "global" | "function" | "custom";
|
|
511
|
+
/**
|
|
512
|
+
* Collection name (for collection type)
|
|
513
|
+
*/
|
|
514
|
+
collection?: string;
|
|
515
|
+
/**
|
|
516
|
+
* Global name (for global type)
|
|
517
|
+
*/
|
|
518
|
+
global?: string;
|
|
519
|
+
/**
|
|
520
|
+
* Function name (for function type)
|
|
521
|
+
*/
|
|
522
|
+
function?: string;
|
|
523
|
+
/**
|
|
524
|
+
* Query options
|
|
525
|
+
*/
|
|
526
|
+
query?: Record<string, any>;
|
|
527
|
+
/**
|
|
528
|
+
* Custom data fetcher
|
|
529
|
+
*/
|
|
530
|
+
fetcher?: () => Promise<any>;
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Widget action configuration
|
|
534
|
+
*/
|
|
535
|
+
interface WidgetAction {
|
|
536
|
+
/**
|
|
537
|
+
* Action ID
|
|
538
|
+
*/
|
|
539
|
+
id: string;
|
|
540
|
+
/**
|
|
541
|
+
* Action label
|
|
542
|
+
*/
|
|
543
|
+
label: string;
|
|
544
|
+
/**
|
|
545
|
+
* Action icon
|
|
546
|
+
*/
|
|
547
|
+
icon?: IconComponent | ComponentReference | string;
|
|
548
|
+
/**
|
|
549
|
+
* Action handler
|
|
550
|
+
*/
|
|
551
|
+
onClick?: () => void;
|
|
552
|
+
/**
|
|
553
|
+
* Link target
|
|
554
|
+
*/
|
|
555
|
+
href?: string;
|
|
556
|
+
/**
|
|
557
|
+
* Variant
|
|
558
|
+
*/
|
|
559
|
+
variant?: "default" | "primary" | "secondary" | "destructive";
|
|
560
|
+
}
|
|
561
|
+
//#endregion
|
|
562
|
+
export { AnyWidgetConfig, BaseWidgetConfig, ChartWidgetConfig, CustomWidgetConfig, ProgressWidgetConfig, QuickActionsWidgetConfig, RecentItemsWidgetConfig, StatsWidgetConfig, TableWidgetConfig, TimelineWidgetConfig, ValueWidgetConfig, WidgetAction, WidgetCardVariant, WidgetComponentProps, WidgetConfig };
|