@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,302 @@
|
|
|
1
|
+
//#region src/server/proxy-factories.ts
|
|
2
|
+
/**
|
|
3
|
+
* Resolve registry source state.
|
|
4
|
+
*
|
|
5
|
+
* Collection/Global builders: registry lives on `state["~questpieApp"].state`.
|
|
6
|
+
*/
|
|
7
|
+
function getRegistrySourceState(builderState) {
|
|
8
|
+
const questpieApp = builderState["~questpieApp"];
|
|
9
|
+
if (questpieApp?.state && typeof questpieApp.state === "object") return questpieApp.state;
|
|
10
|
+
return builderState;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolve registered component names from builder state.
|
|
14
|
+
*/
|
|
15
|
+
function getRegisteredComponentNames(builderState) {
|
|
16
|
+
const components = getRegistrySourceState(builderState).components;
|
|
17
|
+
if (!components || typeof components !== "object") return [];
|
|
18
|
+
return Object.keys(components);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Normalize component props into a serializable object.
|
|
22
|
+
*/
|
|
23
|
+
function normalizeComponentProps(componentType, props) {
|
|
24
|
+
if (componentType === "icon" && typeof props === "string") return { name: props };
|
|
25
|
+
if (props === null || props === void 0) return {};
|
|
26
|
+
if (typeof props === "object") return props;
|
|
27
|
+
return { value: props };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert a view callback property name to a canonical view id.
|
|
31
|
+
*
|
|
32
|
+
* Examples:
|
|
33
|
+
* - `collectionTable` -> `collection-table`
|
|
34
|
+
* - `globalForm` -> `global-form`
|
|
35
|
+
* - `kanban` -> `kanban`
|
|
36
|
+
*/
|
|
37
|
+
function toViewId(name) {
|
|
38
|
+
return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a simple view proxy for builder callback contexts.
|
|
42
|
+
* Accessing any property returns a function that creates a view config object.
|
|
43
|
+
*
|
|
44
|
+
* Used as the `v` callback param:
|
|
45
|
+
* `v.collectionTable({ columns: [...] })` -> `{ view: "collection-table", columns: [...] }`.
|
|
46
|
+
*/
|
|
47
|
+
function createViewCallbackProxy() {
|
|
48
|
+
return new Proxy({}, { get: (_, prop) => {
|
|
49
|
+
return (config = {}) => ({
|
|
50
|
+
view: toViewId(String(prop)),
|
|
51
|
+
...config
|
|
52
|
+
});
|
|
53
|
+
} });
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create a simple component proxy for builder callback contexts.
|
|
57
|
+
* Accessing any property returns a function that creates a component reference.
|
|
58
|
+
*
|
|
59
|
+
* Used as the `c` callback param: `c.icon("ph:article")` → `{ type: "icon", props: { name: "ph:article" } }`.
|
|
60
|
+
*/
|
|
61
|
+
function createComponentCallbackProxy() {
|
|
62
|
+
return new Proxy({}, { get: (_, prop) => {
|
|
63
|
+
return (...args) => ({
|
|
64
|
+
type: String(prop),
|
|
65
|
+
props: typeof args[0] === "string" ? { name: args[0] } : args[0] ?? {}
|
|
66
|
+
});
|
|
67
|
+
} });
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a simple action proxy for builder callback contexts.
|
|
71
|
+
* Provides a `custom()` method and returns action names as strings for built-in actions.
|
|
72
|
+
*
|
|
73
|
+
* Used as the `a` callback param: `a.delete` → `"delete"`, `a.custom("archive", config)` → `{ id: "archive", ...config }`.
|
|
74
|
+
*/
|
|
75
|
+
function createActionCallbackProxy() {
|
|
76
|
+
return new Proxy({ custom: (name, config) => ({
|
|
77
|
+
id: name,
|
|
78
|
+
...config
|
|
79
|
+
}) }, { get: (target, prop) => {
|
|
80
|
+
return target[prop] ?? String(prop);
|
|
81
|
+
} });
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a component proxy for registered component references.
|
|
85
|
+
* Used in admin config functions (`.admin()`, `.actions()`, `.dashboard()`, `.sidebar()`).
|
|
86
|
+
*/
|
|
87
|
+
function createComponentProxy(builderState) {
|
|
88
|
+
const componentNames = getRegisteredComponentNames(builderState);
|
|
89
|
+
const registeredComponentSet = new Set(componentNames);
|
|
90
|
+
return new Proxy({}, {
|
|
91
|
+
get: (_target, prop) => {
|
|
92
|
+
if (typeof prop !== "string") return;
|
|
93
|
+
if (prop === "then") return;
|
|
94
|
+
if (registeredComponentSet.size > 0 && !registeredComponentSet.has(prop)) throw new Error(`Unknown component "${prop}". Register it via .components(). Available components: ${[...registeredComponentSet].sort().join(", ")}`);
|
|
95
|
+
return (props) => ({
|
|
96
|
+
type: prop,
|
|
97
|
+
props: normalizeComponentProps(prop, props)
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
has: (_target, prop) => {
|
|
101
|
+
if (typeof prop !== "string") return false;
|
|
102
|
+
return registeredComponentSet.has(prop);
|
|
103
|
+
},
|
|
104
|
+
ownKeys: () => [...registeredComponentSet],
|
|
105
|
+
getOwnPropertyDescriptor: (_target, prop) => {
|
|
106
|
+
if (typeof prop !== "string") return;
|
|
107
|
+
if (!registeredComponentSet.has(prop)) return;
|
|
108
|
+
return {
|
|
109
|
+
configurable: true,
|
|
110
|
+
enumerable: true,
|
|
111
|
+
writable: false,
|
|
112
|
+
value: (props) => ({
|
|
113
|
+
type: prop,
|
|
114
|
+
props: normalizeComponentProps(prop, props)
|
|
115
|
+
})
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a field proxy for referencing collection fields.
|
|
122
|
+
* Returns field names as strings for config objects.
|
|
123
|
+
*/
|
|
124
|
+
function createFieldProxy(fieldNames) {
|
|
125
|
+
return new Proxy({}, {
|
|
126
|
+
get: (_target, prop) => prop,
|
|
127
|
+
has: (_target, prop) => fieldNames.includes(prop),
|
|
128
|
+
ownKeys: () => fieldNames,
|
|
129
|
+
getOwnPropertyDescriptor: (_target, prop) => {
|
|
130
|
+
if (fieldNames.includes(prop)) return {
|
|
131
|
+
configurable: true,
|
|
132
|
+
enumerable: true,
|
|
133
|
+
value: prop
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a view proxy for defining view configurations.
|
|
140
|
+
*/
|
|
141
|
+
function createViewProxy(kind, registeredViews = []) {
|
|
142
|
+
const registeredViewSet = new Set(registeredViews);
|
|
143
|
+
const hasRegistry = registeredViewSet.size > 0;
|
|
144
|
+
return new Proxy({}, {
|
|
145
|
+
get: (_target, prop) => {
|
|
146
|
+
if (typeof prop !== "string") return;
|
|
147
|
+
if (prop === "then") return;
|
|
148
|
+
if (hasRegistry && !registeredViewSet.has(prop)) {
|
|
149
|
+
const registerMethod = kind === "list" ? "listViews" : "formViews";
|
|
150
|
+
const available = [...registeredViewSet].sort().join(", ");
|
|
151
|
+
throw new Error(`Unknown ${kind} view "${prop}". Register it via .${registerMethod}(). Available ${kind} views: ${available || "(none)"}`);
|
|
152
|
+
}
|
|
153
|
+
return (config = {}) => ({
|
|
154
|
+
view: toViewId(prop),
|
|
155
|
+
...config
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
has: (_target, prop) => {
|
|
159
|
+
if (typeof prop !== "string") return false;
|
|
160
|
+
return hasRegistry && registeredViewSet.has(prop);
|
|
161
|
+
},
|
|
162
|
+
ownKeys: () => hasRegistry ? [...registeredViewSet] : [],
|
|
163
|
+
getOwnPropertyDescriptor: (_target, prop) => {
|
|
164
|
+
if (typeof prop !== "string") return;
|
|
165
|
+
if (hasRegistry && !registeredViewSet.has(prop)) return;
|
|
166
|
+
return {
|
|
167
|
+
configurable: true,
|
|
168
|
+
enumerable: hasRegistry,
|
|
169
|
+
writable: false,
|
|
170
|
+
value: (config = {}) => ({
|
|
171
|
+
view: toViewId(prop),
|
|
172
|
+
...config
|
|
173
|
+
})
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create an action proxy for referencing built-in and custom actions.
|
|
180
|
+
*/
|
|
181
|
+
function createActionProxy() {
|
|
182
|
+
return {
|
|
183
|
+
create: "create",
|
|
184
|
+
save: "save",
|
|
185
|
+
delete: "delete",
|
|
186
|
+
deleteMany: "deleteMany",
|
|
187
|
+
restore: "restore",
|
|
188
|
+
restoreMany: "restoreMany",
|
|
189
|
+
duplicate: "duplicate",
|
|
190
|
+
export: "export",
|
|
191
|
+
custom: (name, config) => ({
|
|
192
|
+
type: name,
|
|
193
|
+
config
|
|
194
|
+
})
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Create a sidebar proxy for contribution callbacks.
|
|
199
|
+
*/
|
|
200
|
+
function createSidebarContributionProxy() {
|
|
201
|
+
return {
|
|
202
|
+
section: (def) => def,
|
|
203
|
+
item: (def) => def
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create a dashboard proxy for contribution callbacks.
|
|
208
|
+
*/
|
|
209
|
+
function createDashboardContributionProxy() {
|
|
210
|
+
return {
|
|
211
|
+
section: (def) => def,
|
|
212
|
+
stats: (def) => ({
|
|
213
|
+
...def,
|
|
214
|
+
type: "stats"
|
|
215
|
+
}),
|
|
216
|
+
value: (def) => ({
|
|
217
|
+
...def,
|
|
218
|
+
type: "value"
|
|
219
|
+
}),
|
|
220
|
+
progress: (def) => ({
|
|
221
|
+
...def,
|
|
222
|
+
type: "progress"
|
|
223
|
+
}),
|
|
224
|
+
chart: (def) => ({
|
|
225
|
+
...def,
|
|
226
|
+
type: "chart"
|
|
227
|
+
}),
|
|
228
|
+
recentItems: (def) => ({
|
|
229
|
+
...def,
|
|
230
|
+
type: "recentItems"
|
|
231
|
+
}),
|
|
232
|
+
timeline: (def) => ({
|
|
233
|
+
...def,
|
|
234
|
+
type: "timeline"
|
|
235
|
+
}),
|
|
236
|
+
table: (def) => ({
|
|
237
|
+
...def,
|
|
238
|
+
type: "table"
|
|
239
|
+
}),
|
|
240
|
+
custom: (def) => ({
|
|
241
|
+
...def,
|
|
242
|
+
type: "custom"
|
|
243
|
+
})
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Create action helpers for dashboard header actions.
|
|
248
|
+
*/
|
|
249
|
+
function createDashboardActionProxy() {
|
|
250
|
+
const toCollectionCreatePath = (collection) => `/admin/collections/${collection}/create`;
|
|
251
|
+
const toGlobalPath = (global) => `/admin/globals/${global}`;
|
|
252
|
+
return {
|
|
253
|
+
action: (config) => config,
|
|
254
|
+
link: (config) => config,
|
|
255
|
+
create: ({ collection, ...config }) => ({
|
|
256
|
+
...config,
|
|
257
|
+
href: toCollectionCreatePath(collection)
|
|
258
|
+
}),
|
|
259
|
+
global: ({ global, ...config }) => ({
|
|
260
|
+
...config,
|
|
261
|
+
href: toGlobalPath(global)
|
|
262
|
+
})
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Create a sidebar callback context for resolving sidebar contributions.
|
|
267
|
+
*/
|
|
268
|
+
function createSidebarCallbackContext() {
|
|
269
|
+
return {
|
|
270
|
+
s: createSidebarContributionProxy(),
|
|
271
|
+
c: createComponentProxy({})
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Create a dashboard callback context for resolving dashboard contributions.
|
|
276
|
+
*/
|
|
277
|
+
function createDashboardCallbackContext() {
|
|
278
|
+
return {
|
|
279
|
+
d: createDashboardContributionProxy(),
|
|
280
|
+
c: createComponentProxy({}),
|
|
281
|
+
a: createDashboardActionProxy()
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Resolve a sidebar callback or static value into a `SidebarContribution`.
|
|
286
|
+
*/
|
|
287
|
+
function resolveSidebarCallback(value) {
|
|
288
|
+
if (value == null) return void 0;
|
|
289
|
+
if (typeof value === "function") return value(createSidebarCallbackContext());
|
|
290
|
+
return value;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Resolve a dashboard callback or static value into a `DashboardContribution`.
|
|
294
|
+
*/
|
|
295
|
+
function resolveDashboardCallback(value) {
|
|
296
|
+
if (value == null) return void 0;
|
|
297
|
+
if (typeof value === "function") return value(createDashboardCallbackContext());
|
|
298
|
+
return value;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
//#endregion
|
|
302
|
+
export { createActionCallbackProxy, createActionProxy, createComponentCallbackProxy, createComponentProxy, createDashboardCallbackContext, createDashboardContributionProxy, createFieldProxy, createSidebarCallbackContext, createSidebarContributionProxy, createViewCallbackProxy, createViewProxy, resolveDashboardCallback, resolveSidebarCallback };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ComponentDefinition, EditViewDefinition, ListViewDefinition, ViewDefinition, ViewKind } from "./augmentation/views.mjs";
|
|
2
|
+
import "./augmentation.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/server/registry-helpers.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Create a view definition with a `kind` discriminant and typed config.
|
|
8
|
+
*
|
|
9
|
+
* `kind` determines which registry this view belongs to:
|
|
10
|
+
* - `"list"` → used in `.list()` callback via `v.myView()`
|
|
11
|
+
* - `"form"` → used in `.form()` callback via `v.myView()`
|
|
12
|
+
*
|
|
13
|
+
* The first generic parameter `TConfig` carries the config type that
|
|
14
|
+
* `v.myView(config)` will accept in `.list()` / `.form()` callbacks.
|
|
15
|
+
* When omitted, the view accepts `unknown` (no type checking on config).
|
|
16
|
+
*
|
|
17
|
+
* The `kind` field is plugin-extensible — plugins can register new view kinds
|
|
18
|
+
* via the `ViewKindRegistry` augmentation interface.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // views/table.ts — built-in list view with typed config
|
|
23
|
+
* export default view<ListViewConfig>("table", { kind: "list" });
|
|
24
|
+
*
|
|
25
|
+
* // views/kanban.ts — custom list view with its own config type
|
|
26
|
+
* interface KanbanConfig { groupBy: string; swimlanes?: boolean }
|
|
27
|
+
* export default view<KanbanConfig>("kanban", { kind: "list" });
|
|
28
|
+
*
|
|
29
|
+
* // views/wizard.ts — custom edit view
|
|
30
|
+
* interface WizardConfig { steps: { title: string; fields: string[] }[] }
|
|
31
|
+
* export default view<WizardConfig>("wizard", { kind: "form" });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare function view<TConfig = unknown, TName extends string = string, TKind extends ViewKind = ViewKind>(name: TName, config: {
|
|
35
|
+
kind: TKind;
|
|
36
|
+
} & Record<string, unknown>): ViewDefinition<TName, TKind, TConfig>;
|
|
37
|
+
/**
|
|
38
|
+
* Create a list view definition.
|
|
39
|
+
* @deprecated Use `view(name, { kind: "list", ... })` instead.
|
|
40
|
+
*/
|
|
41
|
+
declare function listView<TName extends string>(name: TName, config?: Record<string, unknown>): ListViewDefinition<TName>;
|
|
42
|
+
/**
|
|
43
|
+
* Create an edit view definition.
|
|
44
|
+
* @deprecated Use `view(name, { kind: "form", ... })` instead.
|
|
45
|
+
*/
|
|
46
|
+
declare function editView<TName extends string>(name: TName, config?: Record<string, unknown>): EditViewDefinition<TName>;
|
|
47
|
+
/**
|
|
48
|
+
* Create a component definition with typed props.
|
|
49
|
+
*
|
|
50
|
+
* The first generic parameter `TProps` carries the input props type that
|
|
51
|
+
* `c.myComponent(props)` will accept in `.admin()` callbacks.
|
|
52
|
+
* When omitted, the component accepts `Record<string, unknown> | string`.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* // components/icon.ts — string shorthand for icon name
|
|
57
|
+
* export default component<string | { name: string }>("icon");
|
|
58
|
+
*
|
|
59
|
+
* // components/rating.ts — typed props
|
|
60
|
+
* interface RatingProps { value: number; max?: number }
|
|
61
|
+
* export default component<RatingProps>("rating");
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
declare function component<TProps = unknown, TName extends string = string>(name: TName, config?: Record<string, unknown>): ComponentDefinition<TName, TProps>;
|
|
65
|
+
/**
|
|
66
|
+
* Filter a views record by kind, returning only views matching the specified kind.
|
|
67
|
+
*
|
|
68
|
+
* Used by codegen to derive `listViews`/`formViews` from the unified `views` category.
|
|
69
|
+
* Each view file defines `view("name", { kind: "list"|"form" })`. This function
|
|
70
|
+
* filters at module-definition time so the module exports separate registries.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* // Generated by codegen in .generated/module.ts:
|
|
75
|
+
* listViews: filterViewsByKind({ table: _view_table, form: _view_form }, "list"),
|
|
76
|
+
* formViews: filterViewsByKind({ table: _view_table, form: _view_form }, "form"),
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
declare function filterViewsByKind<TViews extends Record<string, ViewDefinition<string, ViewKind, any>>, TKind extends ViewKind>(views: TViews, kind: TKind): { [K in keyof TViews as TViews[K] extends {
|
|
80
|
+
kind: TKind;
|
|
81
|
+
} ? K : never]: TViews[K] };
|
|
82
|
+
//#endregion
|
|
83
|
+
export { component, editView, filterViewsByKind, listView, view };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
//#region src/server/registry-helpers.ts
|
|
2
|
+
/**
|
|
3
|
+
* Create a view definition with a `kind` discriminant and typed config.
|
|
4
|
+
*
|
|
5
|
+
* `kind` determines which registry this view belongs to:
|
|
6
|
+
* - `"list"` → used in `.list()` callback via `v.myView()`
|
|
7
|
+
* - `"form"` → used in `.form()` callback via `v.myView()`
|
|
8
|
+
*
|
|
9
|
+
* The first generic parameter `TConfig` carries the config type that
|
|
10
|
+
* `v.myView(config)` will accept in `.list()` / `.form()` callbacks.
|
|
11
|
+
* When omitted, the view accepts `unknown` (no type checking on config).
|
|
12
|
+
*
|
|
13
|
+
* The `kind` field is plugin-extensible — plugins can register new view kinds
|
|
14
|
+
* via the `ViewKindRegistry` augmentation interface.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* // views/table.ts — built-in list view with typed config
|
|
19
|
+
* export default view<ListViewConfig>("table", { kind: "list" });
|
|
20
|
+
*
|
|
21
|
+
* // views/kanban.ts — custom list view with its own config type
|
|
22
|
+
* interface KanbanConfig { groupBy: string; swimlanes?: boolean }
|
|
23
|
+
* export default view<KanbanConfig>("kanban", { kind: "list" });
|
|
24
|
+
*
|
|
25
|
+
* // views/wizard.ts — custom edit view
|
|
26
|
+
* interface WizardConfig { steps: { title: string; fields: string[] }[] }
|
|
27
|
+
* export default view<WizardConfig>("wizard", { kind: "form" });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
function view(name, config) {
|
|
31
|
+
return {
|
|
32
|
+
type: "view",
|
|
33
|
+
name,
|
|
34
|
+
...config
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a list view definition.
|
|
39
|
+
* @deprecated Use `view(name, { kind: "list", ... })` instead.
|
|
40
|
+
*/
|
|
41
|
+
function listView(name, config = {}) {
|
|
42
|
+
return {
|
|
43
|
+
type: "listView",
|
|
44
|
+
name,
|
|
45
|
+
...config
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create an edit view definition.
|
|
50
|
+
* @deprecated Use `view(name, { kind: "form", ... })` instead.
|
|
51
|
+
*/
|
|
52
|
+
function editView(name, config = {}) {
|
|
53
|
+
return {
|
|
54
|
+
type: "editView",
|
|
55
|
+
name,
|
|
56
|
+
...config
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a component definition with typed props.
|
|
61
|
+
*
|
|
62
|
+
* The first generic parameter `TProps` carries the input props type that
|
|
63
|
+
* `c.myComponent(props)` will accept in `.admin()` callbacks.
|
|
64
|
+
* When omitted, the component accepts `Record<string, unknown> | string`.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* // components/icon.ts — string shorthand for icon name
|
|
69
|
+
* export default component<string | { name: string }>("icon");
|
|
70
|
+
*
|
|
71
|
+
* // components/rating.ts — typed props
|
|
72
|
+
* interface RatingProps { value: number; max?: number }
|
|
73
|
+
* export default component<RatingProps>("rating");
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function component(name, config = {}) {
|
|
77
|
+
return {
|
|
78
|
+
type: "component",
|
|
79
|
+
name,
|
|
80
|
+
...config
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Filter a views record by kind, returning only views matching the specified kind.
|
|
85
|
+
*
|
|
86
|
+
* Used by codegen to derive `listViews`/`formViews` from the unified `views` category.
|
|
87
|
+
* Each view file defines `view("name", { kind: "list"|"form" })`. This function
|
|
88
|
+
* filters at module-definition time so the module exports separate registries.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```ts
|
|
92
|
+
* // Generated by codegen in .generated/module.ts:
|
|
93
|
+
* listViews: filterViewsByKind({ table: _view_table, form: _view_form }, "list"),
|
|
94
|
+
* formViews: filterViewsByKind({ table: _view_table, form: _view_form }, "form"),
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
function filterViewsByKind(views, kind) {
|
|
98
|
+
const result = {};
|
|
99
|
+
for (const [key, view$1] of Object.entries(views)) if (view$1.kind === kind) result[key] = view$1;
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
export { component, editView, filterViewsByKind, listView, view };
|