@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,414 @@
|
|
|
1
|
+
import { ReactiveConfig } from "questpie";
|
|
2
|
+
|
|
3
|
+
//#region src/augmentation.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Common admin options shared by all fields.
|
|
7
|
+
* Each field-specific admin meta extends this.
|
|
8
|
+
*
|
|
9
|
+
* Supports reactive configurations for dynamic field states:
|
|
10
|
+
* - `hidden`, `readOnly`, `disabled` can be boolean or reactive function
|
|
11
|
+
* - `compute` can auto-generate field values based on other fields
|
|
12
|
+
*/
|
|
13
|
+
interface BaseAdminMeta {
|
|
14
|
+
/**
|
|
15
|
+
* Field width in form (CSS value or number for pixels).
|
|
16
|
+
* @example "100%" | 400 | "50%"
|
|
17
|
+
*/
|
|
18
|
+
width?: string | number;
|
|
19
|
+
/**
|
|
20
|
+
* Column span in grid layout (1-12).
|
|
21
|
+
* @default 12
|
|
22
|
+
*/
|
|
23
|
+
colspan?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
24
|
+
/**
|
|
25
|
+
* Field group for form organization.
|
|
26
|
+
*/
|
|
27
|
+
group?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Display order within group.
|
|
30
|
+
*/
|
|
31
|
+
order?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Hide the field conditionally.
|
|
34
|
+
* - `true`: Always hidden
|
|
35
|
+
* - Function/config: Evaluated on server based on form data
|
|
36
|
+
*
|
|
37
|
+
* @example Static
|
|
38
|
+
* ```ts
|
|
39
|
+
* hidden: true
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Reactive (short syntax)
|
|
43
|
+
* ```ts
|
|
44
|
+
* hidden: ({ data }) => !data.showAdvanced
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example Reactive (full syntax with deps)
|
|
48
|
+
* ```ts
|
|
49
|
+
* hidden: {
|
|
50
|
+
* handler: ({ data }) => !data.showAdvanced,
|
|
51
|
+
* deps: ['showAdvanced'],
|
|
52
|
+
* }
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
hidden?: boolean | ReactiveConfig<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* Make field read-only conditionally.
|
|
58
|
+
* - `true`: Always read-only
|
|
59
|
+
* - Function/config: Evaluated on server based on form data
|
|
60
|
+
*
|
|
61
|
+
* @example Reactive
|
|
62
|
+
* ```ts
|
|
63
|
+
* readOnly: ({ data }) => data.status === 'published'
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
readOnly?: boolean | ReactiveConfig<boolean>;
|
|
67
|
+
/**
|
|
68
|
+
* Disable the field conditionally.
|
|
69
|
+
* - `true`: Always disabled
|
|
70
|
+
* - Function/config: Evaluated on server based on form data
|
|
71
|
+
*
|
|
72
|
+
* @example Reactive
|
|
73
|
+
* ```ts
|
|
74
|
+
* disabled: ({ data }) => data.isLocked
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
disabled?: boolean | ReactiveConfig<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* Compute field value automatically based on other fields.
|
|
80
|
+
* Handler should return the computed value or undefined to keep current.
|
|
81
|
+
* Return null to reset field to null/default.
|
|
82
|
+
*
|
|
83
|
+
* @example Auto-generate slug from title
|
|
84
|
+
* ```ts
|
|
85
|
+
* compute: ({ data }) => slugify(data.title)
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @example With debounce and explicit deps
|
|
89
|
+
* ```ts
|
|
90
|
+
* compute: {
|
|
91
|
+
* handler: ({ data }) => slugify(data.title),
|
|
92
|
+
* deps: ['title'],
|
|
93
|
+
* debounce: 300,
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @example Reset on parent change
|
|
98
|
+
* ```ts
|
|
99
|
+
* compute: ({ data, prev }) => {
|
|
100
|
+
* if (data.category !== prev.data.category) {
|
|
101
|
+
* return null; // Reset when category changes
|
|
102
|
+
* }
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
compute?: ReactiveConfig<any>;
|
|
107
|
+
/**
|
|
108
|
+
* Show this field in list view columns.
|
|
109
|
+
*/
|
|
110
|
+
showInList?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Column width in list view.
|
|
113
|
+
*/
|
|
114
|
+
listWidth?: string | number;
|
|
115
|
+
/**
|
|
116
|
+
* Enable sorting by this field.
|
|
117
|
+
*/
|
|
118
|
+
sortable?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Enable filtering by this field.
|
|
121
|
+
*/
|
|
122
|
+
filterable?: boolean;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Text field admin options
|
|
126
|
+
*/
|
|
127
|
+
interface TextFieldAdminMeta extends BaseAdminMeta {
|
|
128
|
+
placeholder?: string;
|
|
129
|
+
showCounter?: boolean;
|
|
130
|
+
prefix?: string;
|
|
131
|
+
suffix?: string;
|
|
132
|
+
inputType?: "text" | "email" | "url" | "tel" | "search" | "password";
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Email field admin options
|
|
136
|
+
*/
|
|
137
|
+
interface EmailFieldAdminMeta extends BaseAdminMeta {
|
|
138
|
+
placeholder?: string;
|
|
139
|
+
/** Show domain hint (e.g., "@company.com") */
|
|
140
|
+
domainHint?: string;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* URL field admin options
|
|
144
|
+
*/
|
|
145
|
+
interface UrlFieldAdminMeta extends BaseAdminMeta {
|
|
146
|
+
placeholder?: string;
|
|
147
|
+
/** Show protocol dropdown (http/https) */
|
|
148
|
+
showProtocolDropdown?: boolean;
|
|
149
|
+
/** Default protocol if not provided */
|
|
150
|
+
defaultProtocol?: "http" | "https";
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Textarea field admin options
|
|
154
|
+
*/
|
|
155
|
+
interface TextareaFieldAdminMeta extends BaseAdminMeta {
|
|
156
|
+
placeholder?: string;
|
|
157
|
+
rows?: number;
|
|
158
|
+
autoResize?: boolean;
|
|
159
|
+
richText?: boolean;
|
|
160
|
+
showCounter?: boolean;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Number field admin options
|
|
164
|
+
*/
|
|
165
|
+
interface NumberFieldAdminMeta extends BaseAdminMeta {
|
|
166
|
+
placeholder?: string;
|
|
167
|
+
showButtons?: boolean;
|
|
168
|
+
step?: number;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Boolean field admin options
|
|
172
|
+
*/
|
|
173
|
+
interface BooleanFieldAdminMeta extends BaseAdminMeta {
|
|
174
|
+
displayAs?: "checkbox" | "switch";
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Date field admin options
|
|
178
|
+
*/
|
|
179
|
+
interface DateFieldAdminMeta extends BaseAdminMeta {
|
|
180
|
+
placeholder?: string;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Time field admin options
|
|
184
|
+
*/
|
|
185
|
+
interface TimeFieldAdminMeta extends BaseAdminMeta {
|
|
186
|
+
placeholder?: string;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Select field admin options
|
|
190
|
+
*/
|
|
191
|
+
interface SelectFieldAdminMeta extends BaseAdminMeta {
|
|
192
|
+
displayAs?: "dropdown" | "radio" | "checkbox" | "buttons";
|
|
193
|
+
searchable?: boolean;
|
|
194
|
+
creatable?: boolean;
|
|
195
|
+
clearable?: boolean;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Relation field admin options
|
|
199
|
+
*/
|
|
200
|
+
interface RelationFieldAdminMeta extends BaseAdminMeta {
|
|
201
|
+
displayAs?: "select" | "table" | "cards" | "list";
|
|
202
|
+
displayFields?: string[];
|
|
203
|
+
titleField?: string;
|
|
204
|
+
allowCreate?: boolean;
|
|
205
|
+
allowEdit?: boolean;
|
|
206
|
+
preload?: boolean;
|
|
207
|
+
maxItems?: number;
|
|
208
|
+
/**
|
|
209
|
+
* List table cell rendering for relation values.
|
|
210
|
+
* - "chip": default text chip
|
|
211
|
+
* - "avatarChip": chip with avatar image + label
|
|
212
|
+
*/
|
|
213
|
+
listCell?: {
|
|
214
|
+
display?: "chip" | "avatarChip";
|
|
215
|
+
/** Dot-path on related record (e.g. "image" or "avatar.url") */
|
|
216
|
+
avatarField?: string;
|
|
217
|
+
/** Dot-path for display label override (e.g. "fullName") */
|
|
218
|
+
labelField?: string;
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Object field admin options
|
|
223
|
+
*/
|
|
224
|
+
interface ObjectFieldAdminMeta extends BaseAdminMeta {
|
|
225
|
+
/** Visual wrapper mode */
|
|
226
|
+
wrapper?: "flat" | "collapsible";
|
|
227
|
+
/** Field arrangement mode */
|
|
228
|
+
layout?: "stack" | "inline" | "grid";
|
|
229
|
+
/** Number of columns (for grid layout) */
|
|
230
|
+
columns?: number;
|
|
231
|
+
/** Default collapsed state (for collapsible wrapper) */
|
|
232
|
+
defaultCollapsed?: boolean;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Array field admin options
|
|
236
|
+
*/
|
|
237
|
+
interface ArrayFieldAdminMeta extends BaseAdminMeta {
|
|
238
|
+
/** Enable drag-and-drop reordering */
|
|
239
|
+
orderable?: boolean;
|
|
240
|
+
/** Minimum number of items */
|
|
241
|
+
minItems?: number;
|
|
242
|
+
/** Maximum number of items */
|
|
243
|
+
maxItems?: number;
|
|
244
|
+
/** Item editing mode */
|
|
245
|
+
mode?: "inline" | "modal" | "drawer";
|
|
246
|
+
/** Field arrangement mode for items */
|
|
247
|
+
layout?: "stack" | "inline" | "grid";
|
|
248
|
+
/** Number of columns (for grid layout) */
|
|
249
|
+
columns?: number;
|
|
250
|
+
/** Label for array items */
|
|
251
|
+
itemLabel?: string;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* JSON field admin options
|
|
255
|
+
*/
|
|
256
|
+
interface JsonFieldAdminMeta extends BaseAdminMeta {
|
|
257
|
+
/** Show as code editor */
|
|
258
|
+
codeEditor?: boolean;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Upload field admin options
|
|
262
|
+
*/
|
|
263
|
+
interface UploadFieldAdminMeta extends BaseAdminMeta {
|
|
264
|
+
/** Accepted file types */
|
|
265
|
+
accept?: string | string[];
|
|
266
|
+
/** Dropzone placeholder text */
|
|
267
|
+
dropzoneText?: string;
|
|
268
|
+
/** Show file preview */
|
|
269
|
+
showPreview?: boolean;
|
|
270
|
+
/** Allow editing uploaded files */
|
|
271
|
+
editable?: boolean;
|
|
272
|
+
/** Preview display variant */
|
|
273
|
+
previewVariant?: "card" | "compact" | "thumbnail";
|
|
274
|
+
/** Allow multiple file uploads */
|
|
275
|
+
multiple?: boolean;
|
|
276
|
+
/** Maximum number of files */
|
|
277
|
+
maxItems?: number;
|
|
278
|
+
/** Enable drag-and-drop reordering */
|
|
279
|
+
orderable?: boolean;
|
|
280
|
+
/** Layout for multiple files */
|
|
281
|
+
layout?: "grid" | "list";
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Rich text field admin options
|
|
285
|
+
*/
|
|
286
|
+
interface RichTextFieldAdminMeta extends BaseAdminMeta {
|
|
287
|
+
/** Placeholder text when editor is empty */
|
|
288
|
+
placeholder?: string;
|
|
289
|
+
/** Show character count */
|
|
290
|
+
showCharacterCount?: boolean;
|
|
291
|
+
/** Maximum characters allowed */
|
|
292
|
+
maxCharacters?: number;
|
|
293
|
+
/** Minimum characters required */
|
|
294
|
+
minCharacters?: number;
|
|
295
|
+
/** Enable image uploads within editor */
|
|
296
|
+
enableImages?: boolean;
|
|
297
|
+
/** Collection to use for image uploads */
|
|
298
|
+
imageCollection?: string;
|
|
299
|
+
/** Enable media library integration */
|
|
300
|
+
enableMediaLibrary?: boolean;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Blocks field admin options
|
|
304
|
+
*/
|
|
305
|
+
interface BlocksFieldAdminMeta extends BaseAdminMeta {
|
|
306
|
+
/** Label for add block button */
|
|
307
|
+
addLabel?: string;
|
|
308
|
+
/** Message shown when no blocks present */
|
|
309
|
+
emptyMessage?: string;
|
|
310
|
+
/** Maximum number of blocks allowed */
|
|
311
|
+
maxBlocks?: number;
|
|
312
|
+
/** Minimum number of blocks required */
|
|
313
|
+
minBlocks?: number;
|
|
314
|
+
/** Enable drag & drop reordering */
|
|
315
|
+
sortable?: boolean;
|
|
316
|
+
/** Show block type selector as dropdown or grid */
|
|
317
|
+
selectorDisplayAs?: "dropdown" | "grid";
|
|
318
|
+
/** Default collapsed state for blocks */
|
|
319
|
+
defaultCollapsed?: boolean;
|
|
320
|
+
}
|
|
321
|
+
type AnyAdminMeta = TextFieldAdminMeta | TextareaFieldAdminMeta | EmailFieldAdminMeta | UrlFieldAdminMeta | NumberFieldAdminMeta | BooleanFieldAdminMeta | DateFieldAdminMeta | TimeFieldAdminMeta | SelectFieldAdminMeta | RelationFieldAdminMeta | ObjectFieldAdminMeta | ArrayFieldAdminMeta | JsonFieldAdminMeta | UploadFieldAdminMeta | RichTextFieldAdminMeta | BlocksFieldAdminMeta;
|
|
322
|
+
/**
|
|
323
|
+
* Base widget admin meta (common options for all widgets)
|
|
324
|
+
*/
|
|
325
|
+
interface BaseWidgetAdminMeta {
|
|
326
|
+
/** Default grid span */
|
|
327
|
+
span?: number;
|
|
328
|
+
/** Default refresh interval */
|
|
329
|
+
refreshInterval?: number;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Registry interface for widget types.
|
|
333
|
+
* Users can augment this to add custom widget type configs.
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```ts
|
|
337
|
+
* declare module "@questpie/admin" {
|
|
338
|
+
* interface WidgetTypeRegistry {
|
|
339
|
+
* myCustomWidget: { loader: (client: any) => Promise<MyData> };
|
|
340
|
+
* }
|
|
341
|
+
* }
|
|
342
|
+
* ```
|
|
343
|
+
*/
|
|
344
|
+
interface WidgetTypeRegistry {
|
|
345
|
+
stats: {};
|
|
346
|
+
chart: {};
|
|
347
|
+
recentItems: {};
|
|
348
|
+
quickActions: {};
|
|
349
|
+
value: {};
|
|
350
|
+
table: {};
|
|
351
|
+
timeline: {};
|
|
352
|
+
progress: {};
|
|
353
|
+
}
|
|
354
|
+
declare global {
|
|
355
|
+
namespace Questpie {
|
|
356
|
+
interface TextFieldMeta {
|
|
357
|
+
admin?: TextFieldAdminMeta;
|
|
358
|
+
}
|
|
359
|
+
interface EmailFieldMeta {
|
|
360
|
+
admin?: EmailFieldAdminMeta;
|
|
361
|
+
}
|
|
362
|
+
interface UrlFieldMeta {
|
|
363
|
+
admin?: UrlFieldAdminMeta;
|
|
364
|
+
}
|
|
365
|
+
interface TextareaFieldMeta {
|
|
366
|
+
admin?: TextareaFieldAdminMeta;
|
|
367
|
+
}
|
|
368
|
+
interface NumberFieldMeta {
|
|
369
|
+
admin?: NumberFieldAdminMeta;
|
|
370
|
+
}
|
|
371
|
+
interface BooleanFieldMeta {
|
|
372
|
+
admin?: BooleanFieldAdminMeta;
|
|
373
|
+
}
|
|
374
|
+
interface DateFieldMeta {
|
|
375
|
+
admin?: DateFieldAdminMeta;
|
|
376
|
+
}
|
|
377
|
+
interface DatetimeFieldMeta {
|
|
378
|
+
admin?: DateFieldAdminMeta;
|
|
379
|
+
}
|
|
380
|
+
interface TimeFieldMeta {
|
|
381
|
+
admin?: TimeFieldAdminMeta;
|
|
382
|
+
}
|
|
383
|
+
interface SelectFieldMeta {
|
|
384
|
+
admin?: SelectFieldAdminMeta;
|
|
385
|
+
}
|
|
386
|
+
interface RelationFieldMeta {
|
|
387
|
+
admin?: RelationFieldAdminMeta;
|
|
388
|
+
}
|
|
389
|
+
interface ObjectFieldMeta {
|
|
390
|
+
admin?: ObjectFieldAdminMeta;
|
|
391
|
+
}
|
|
392
|
+
interface ArrayFieldMeta {
|
|
393
|
+
admin?: ArrayFieldAdminMeta;
|
|
394
|
+
}
|
|
395
|
+
interface JsonFieldMeta {
|
|
396
|
+
admin?: JsonFieldAdminMeta;
|
|
397
|
+
}
|
|
398
|
+
interface UploadFieldMeta {
|
|
399
|
+
admin?: UploadFieldAdminMeta;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
declare module "./server/fields/rich-text.js" {
|
|
404
|
+
interface RichTextFieldMeta {
|
|
405
|
+
admin?: RichTextFieldAdminMeta;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
declare module "./server/fields/blocks.js" {
|
|
409
|
+
interface BlocksFieldMeta {
|
|
410
|
+
admin?: BlocksFieldAdminMeta;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
//#endregion
|
|
414
|
+
export { AnyAdminMeta, ArrayFieldAdminMeta, BaseAdminMeta, BaseWidgetAdminMeta, BooleanFieldAdminMeta, DateFieldAdminMeta, JsonFieldAdminMeta, NumberFieldAdminMeta, ObjectFieldAdminMeta, RelationFieldAdminMeta, SelectFieldAdminMeta, TextFieldAdminMeta, TextareaFieldAdminMeta, TimeFieldAdminMeta, UploadFieldAdminMeta, WidgetTypeRegistry };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BlockContent } from "./types.mjs";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as react_jsx_runtime23 from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/client/blocks/block-renderer.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Block renderer function type.
|
|
9
|
+
* Consumers provide their own renderers mapped by block type.
|
|
10
|
+
*/
|
|
11
|
+
type BlockRendererFn = (props: any) => React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Props for BlockRenderer component.
|
|
14
|
+
*/
|
|
15
|
+
type BlockRendererProps = {
|
|
16
|
+
/** Block content from API (tree + values) */
|
|
17
|
+
content: BlockContent;
|
|
18
|
+
/** Block renderers mapped by type */
|
|
19
|
+
renderers: Record<string, BlockRendererFn>;
|
|
20
|
+
/** Prefetched data by block ID (optional, for SSR) */
|
|
21
|
+
data?: Record<string, unknown>;
|
|
22
|
+
/** Currently selected block ID (for editor mode) */
|
|
23
|
+
selectedBlockId?: string | null;
|
|
24
|
+
/** Block click handler (for editor mode) */
|
|
25
|
+
onBlockClick?: (blockId: string) => void;
|
|
26
|
+
/** Custom class name for the container */
|
|
27
|
+
className?: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Renders a tree of blocks.
|
|
31
|
+
*
|
|
32
|
+
* Iterates through the block tree and renders each block using its
|
|
33
|
+
* registered renderer component. Layout blocks receive their rendered
|
|
34
|
+
* children as the `children` prop.
|
|
35
|
+
*/
|
|
36
|
+
declare function BlockRenderer({
|
|
37
|
+
content,
|
|
38
|
+
renderers,
|
|
39
|
+
data,
|
|
40
|
+
selectedBlockId,
|
|
41
|
+
onBlockClick,
|
|
42
|
+
className
|
|
43
|
+
}: BlockRendererProps): react_jsx_runtime23.JSX.Element | null;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { BlockRenderer, BlockRendererProps };
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { BlockScopeProvider } from "../preview/block-scope-context.mjs";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/client/blocks/block-renderer.tsx
|
|
6
|
+
const EMPTY_DATA = {};
|
|
7
|
+
/**
|
|
8
|
+
* Renders a tree of blocks.
|
|
9
|
+
*
|
|
10
|
+
* Iterates through the block tree and renders each block using its
|
|
11
|
+
* registered renderer component. Layout blocks receive their rendered
|
|
12
|
+
* children as the `children` prop.
|
|
13
|
+
*/
|
|
14
|
+
function BlockRenderer(t0) {
|
|
15
|
+
const $ = c(11);
|
|
16
|
+
const { content, renderers, data, onBlockClick, className } = t0;
|
|
17
|
+
const resolvedData = data ?? EMPTY_DATA;
|
|
18
|
+
let t1;
|
|
19
|
+
let t2;
|
|
20
|
+
let t3;
|
|
21
|
+
if ($[0] !== className || $[1] !== content || $[2] !== onBlockClick || $[3] !== renderers || $[4] !== resolvedData) {
|
|
22
|
+
t3 = Symbol.for("react.early_return_sentinel");
|
|
23
|
+
bb0: {
|
|
24
|
+
function renderBlock(node) {
|
|
25
|
+
const renderFn = renderers[node.type];
|
|
26
|
+
if (!renderFn) {
|
|
27
|
+
if (process.env.NODE_ENV !== "production") console.warn(`[BlockRenderer] No renderer found for block type "${node.type}"`);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const values = content._values[node.id] || {};
|
|
31
|
+
const blockData = resolvedData[node.id];
|
|
32
|
+
const renderedChildren = node.children.length > 0 ? node.children.map(renderBlock) : void 0;
|
|
33
|
+
const handleClick = onBlockClick ? (e) => {
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
onBlockClick(node.id);
|
|
36
|
+
} : void 0;
|
|
37
|
+
const BlockComponent = renderFn;
|
|
38
|
+
const blockElement = /* @__PURE__ */ jsx(BlockScopeProvider, {
|
|
39
|
+
blockId: node.id,
|
|
40
|
+
basePath: "content._values",
|
|
41
|
+
children: /* @__PURE__ */ jsx(BlockComponent, {
|
|
42
|
+
id: node.id,
|
|
43
|
+
type: node.type,
|
|
44
|
+
values,
|
|
45
|
+
data: blockData,
|
|
46
|
+
children: renderedChildren
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
if (handleClick) return /* @__PURE__ */ jsx("div", {
|
|
50
|
+
"data-block-id": node.id,
|
|
51
|
+
"data-block-type": node.type,
|
|
52
|
+
onClick: handleClick,
|
|
53
|
+
onKeyDown: (e_0) => {
|
|
54
|
+
if (e_0.key === "Enter" || e_0.key === " ") {
|
|
55
|
+
e_0.preventDefault();
|
|
56
|
+
onBlockClick?.(node.id);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
role: "button",
|
|
60
|
+
tabIndex: 0,
|
|
61
|
+
className: "cursor-pointer",
|
|
62
|
+
children: blockElement
|
|
63
|
+
}, node.id);
|
|
64
|
+
return /* @__PURE__ */ jsx("div", {
|
|
65
|
+
"data-block-id": node.id,
|
|
66
|
+
"data-block-type": node.type,
|
|
67
|
+
children: blockElement
|
|
68
|
+
}, node.id);
|
|
69
|
+
}
|
|
70
|
+
if (!content?._tree?.length) {
|
|
71
|
+
t3 = null;
|
|
72
|
+
break bb0;
|
|
73
|
+
}
|
|
74
|
+
t1 = className;
|
|
75
|
+
t2 = content._tree.map(renderBlock);
|
|
76
|
+
}
|
|
77
|
+
$[0] = className;
|
|
78
|
+
$[1] = content;
|
|
79
|
+
$[2] = onBlockClick;
|
|
80
|
+
$[3] = renderers;
|
|
81
|
+
$[4] = resolvedData;
|
|
82
|
+
$[5] = t1;
|
|
83
|
+
$[6] = t2;
|
|
84
|
+
$[7] = t3;
|
|
85
|
+
} else {
|
|
86
|
+
t1 = $[5];
|
|
87
|
+
t2 = $[6];
|
|
88
|
+
t3 = $[7];
|
|
89
|
+
}
|
|
90
|
+
if (t3 !== Symbol.for("react.early_return_sentinel")) return t3;
|
|
91
|
+
let t4;
|
|
92
|
+
if ($[8] !== t1 || $[9] !== t2) {
|
|
93
|
+
t4 = /* @__PURE__ */ jsx("div", {
|
|
94
|
+
className: t1,
|
|
95
|
+
children: t2
|
|
96
|
+
});
|
|
97
|
+
$[8] = t1;
|
|
98
|
+
$[9] = t2;
|
|
99
|
+
$[10] = t4;
|
|
100
|
+
} else t4 = $[10];
|
|
101
|
+
return t4;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { BlockRenderer };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/client/blocks/types.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Block node in the tree structure.
|
|
7
|
+
* Represents a single block instance with its position and children.
|
|
8
|
+
*/
|
|
9
|
+
type BlockNode = {
|
|
10
|
+
/** Unique block instance ID (UUID) */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Block type name (e.g., "hero", "columns", "text") */
|
|
13
|
+
type: string;
|
|
14
|
+
/** Child blocks (for layout blocks that accept children) */
|
|
15
|
+
children: BlockNode[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Block content structure stored in JSONB.
|
|
19
|
+
* This is the shape of data stored in the database and passed to BlockRenderer.
|
|
20
|
+
*
|
|
21
|
+
* After server-side prefetch (afterRead hook), `_data` is populated with:
|
|
22
|
+
* - Auto-expanded relation/upload fields
|
|
23
|
+
* - Manual prefetch data from `.blocks()` registration
|
|
24
|
+
*/
|
|
25
|
+
type BlockContent = {
|
|
26
|
+
/** Block tree with hierarchy and order */
|
|
27
|
+
_tree: BlockNode[];
|
|
28
|
+
/** Block values indexed by block ID */
|
|
29
|
+
_values: Record<string, Record<string, unknown>>;
|
|
30
|
+
/** Prefetched data from server (populated by afterRead hook) */
|
|
31
|
+
_data?: Record<string, Record<string, unknown>>;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Block category for organization in the block picker.
|
|
35
|
+
* Categories help users find blocks quickly when adding new content.
|
|
36
|
+
*/
|
|
37
|
+
type BlockCategory = "layout" | "content" | "media" | "sections" | "interactive" | (string & {});
|
|
38
|
+
/**
|
|
39
|
+
* Props passed to block renderer components.
|
|
40
|
+
* Each block receives these props when being rendered.
|
|
41
|
+
*
|
|
42
|
+
* @template TValues - Block field values type (inferred from `.fields()`)
|
|
43
|
+
* @template TData - Prefetch data type (inferred from `.prefetch()`)
|
|
44
|
+
*/
|
|
45
|
+
type BlockRendererProps<TValues = Record<string, unknown>, TData = Record<string, unknown>> = {
|
|
46
|
+
/** Block instance ID */
|
|
47
|
+
id: string;
|
|
48
|
+
/** Block field values (merged with i18n for current locale) */
|
|
49
|
+
values: TValues;
|
|
50
|
+
/** Data from server prefetch (populated via afterRead hook into _data[blockId]) */
|
|
51
|
+
data?: TData;
|
|
52
|
+
/** Rendered child blocks (for layout blocks) */
|
|
53
|
+
children?: React.ReactNode;
|
|
54
|
+
/** Whether this block is currently selected in the editor */
|
|
55
|
+
isSelected?: boolean;
|
|
56
|
+
/** Whether rendering in preview mode */
|
|
57
|
+
isPreview?: boolean;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Empty block content for initialization.
|
|
61
|
+
*/
|
|
62
|
+
declare const EMPTY_BLOCK_CONTENT: BlockContent;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a value is a valid BlockContent structure.
|
|
65
|
+
*/
|
|
66
|
+
declare function isBlockContent(value: unknown): value is BlockContent;
|
|
67
|
+
//#endregion
|
|
68
|
+
export { BlockCategory, BlockContent, BlockNode, BlockRendererProps, EMPTY_BLOCK_CONTENT, isBlockContent };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region src/client/blocks/types.ts
|
|
2
|
+
/**
|
|
3
|
+
* Empty block content for initialization.
|
|
4
|
+
*/
|
|
5
|
+
const EMPTY_BLOCK_CONTENT = {
|
|
6
|
+
_tree: [],
|
|
7
|
+
_values: {}
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Check if a value is a valid BlockContent structure.
|
|
11
|
+
*/
|
|
12
|
+
function isBlockContent(value) {
|
|
13
|
+
if (value == null || typeof value !== "object") return false;
|
|
14
|
+
const obj = value;
|
|
15
|
+
return Array.isArray(obj._tree) && typeof obj._values === "object" && obj._values !== null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { EMPTY_BLOCK_CONTENT, isBlockContent };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { SimpleMessages } from "../i18n/simple.mjs";
|
|
2
|
+
import { MaybeLazyComponent } from "./types/common.mjs";
|
|
3
|
+
import { FieldDefinition } from "./field/field.mjs";
|
|
4
|
+
import { PageDefinition } from "./page/page.mjs";
|
|
5
|
+
import { LocaleConfig } from "./types/ui-config.mjs";
|
|
6
|
+
import { ViewDefinition } from "./view/view.mjs";
|
|
7
|
+
import { WidgetDefinition } from "./widget/widget.mjs";
|
|
8
|
+
|
|
9
|
+
//#region src/client/builder/admin-types.d.ts
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Translations map: locale -> key -> message
|
|
13
|
+
*/
|
|
14
|
+
type TranslationsMap = Record<string, SimpleMessages>;
|
|
15
|
+
type FieldDefinitionMap = Record<string, FieldDefinition>;
|
|
16
|
+
type ViewDefinitionMap = Record<string, ViewDefinition>;
|
|
17
|
+
type PageDefinitionMap = Record<string, PageDefinition>;
|
|
18
|
+
type WidgetDefinitionMap = Record<string, WidgetDefinition>;
|
|
19
|
+
type ComponentDefinitionMap = Record<string, MaybeLazyComponent<any>>;
|
|
20
|
+
type BlockDefinitionMap = Record<string, never>;
|
|
21
|
+
/**
|
|
22
|
+
* Admin state — flat map of all admin registrations.
|
|
23
|
+
*
|
|
24
|
+
* Pure data: maps names to components. All config flows from server introspection.
|
|
25
|
+
*
|
|
26
|
+
* TApp: Backend Questpie app type — provides collection/global names for autocomplete
|
|
27
|
+
*/
|
|
28
|
+
interface AdminState<TApp = any, TFields extends FieldDefinitionMap = FieldDefinitionMap, TComponents extends ComponentDefinitionMap = ComponentDefinitionMap, TViews extends ViewDefinitionMap = ViewDefinitionMap, TPages extends PageDefinitionMap = PageDefinitionMap, TWidgets extends WidgetDefinitionMap = WidgetDefinitionMap, TBlocks extends BlockDefinitionMap = BlockDefinitionMap, TTranslations extends TranslationsMap = TranslationsMap> {
|
|
29
|
+
"~app": TApp;
|
|
30
|
+
fields: TFields;
|
|
31
|
+
components: TComponents;
|
|
32
|
+
views: TViews;
|
|
33
|
+
pages: TPages;
|
|
34
|
+
widgets: TWidgets;
|
|
35
|
+
blocks: TBlocks;
|
|
36
|
+
translations: TTranslations;
|
|
37
|
+
locale: LocaleConfig;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { AdminState, BlockDefinitionMap, ComponentDefinitionMap, FieldDefinitionMap, PageDefinitionMap, TranslationsMap, ViewDefinitionMap, WidgetDefinitionMap };
|