@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,592 @@
|
|
|
1
|
+
import { I18nText } from "../../i18n/types.mjs";
|
|
2
|
+
import { BaseFieldProps, DynamicI18nText, IconComponent, MaybeLazyComponent } from "./common.mjs";
|
|
3
|
+
import { ComponentReference } from "../../../server/augmentation/common.mjs";
|
|
4
|
+
import "../../../server/augmentation.mjs";
|
|
5
|
+
import { ActionDefinition } from "./action-types.mjs";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
|
|
8
|
+
//#region src/client/builder/types/field-types.d.ts
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Validation configuration for fields
|
|
12
|
+
*
|
|
13
|
+
* These options are used to generate Zod schemas for client-side validation.
|
|
14
|
+
*/
|
|
15
|
+
interface FieldValidationConfig {
|
|
16
|
+
/**
|
|
17
|
+
* Minimum length for strings
|
|
18
|
+
*/
|
|
19
|
+
minLength?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Maximum length for strings
|
|
22
|
+
*/
|
|
23
|
+
maxLength?: number;
|
|
24
|
+
/**
|
|
25
|
+
* Minimum value for numbers
|
|
26
|
+
*/
|
|
27
|
+
min?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Maximum value for numbers
|
|
30
|
+
*/
|
|
31
|
+
max?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Regex pattern for strings
|
|
34
|
+
*/
|
|
35
|
+
pattern?: RegExp | string;
|
|
36
|
+
/**
|
|
37
|
+
* Custom error message for pattern validation
|
|
38
|
+
*/
|
|
39
|
+
patternMessage?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Email validation (for text fields)
|
|
42
|
+
*/
|
|
43
|
+
email?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* URL validation (for text fields)
|
|
46
|
+
*/
|
|
47
|
+
url?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Custom validation function
|
|
50
|
+
* @returns Error message if invalid, undefined if valid
|
|
51
|
+
*/
|
|
52
|
+
validate?: (value: any, formValues: Record<string, any>) => string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Custom Zod refinement
|
|
55
|
+
*/
|
|
56
|
+
refine?: (schema: z.ZodTypeAny) => z.ZodTypeAny;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Props passed to field components
|
|
60
|
+
*
|
|
61
|
+
* @typeParam TValue - Type of the field value
|
|
62
|
+
*/
|
|
63
|
+
interface FieldComponentProps<TValue = any> extends BaseFieldProps {
|
|
64
|
+
/**
|
|
65
|
+
* Field value (typed)
|
|
66
|
+
*/
|
|
67
|
+
value: TValue;
|
|
68
|
+
/**
|
|
69
|
+
* Change handler (typed)
|
|
70
|
+
* Optional to support read-only/preview modes
|
|
71
|
+
*/
|
|
72
|
+
onChange?: (value: TValue) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Field configuration options
|
|
75
|
+
*/
|
|
76
|
+
config?: FieldUIConfig;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Context provided to field hooks (onChange, etc.)
|
|
80
|
+
*/
|
|
81
|
+
interface FieldHookContext {
|
|
82
|
+
/**
|
|
83
|
+
* Set value of any field in the form
|
|
84
|
+
*/
|
|
85
|
+
setValue: (name: string, value: any) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Get current values of all fields
|
|
88
|
+
*/
|
|
89
|
+
getValues: () => Record<string, any>;
|
|
90
|
+
/**
|
|
91
|
+
* Get value of a specific field
|
|
92
|
+
*/
|
|
93
|
+
getValue: (name: string) => any;
|
|
94
|
+
/**
|
|
95
|
+
* Current field name
|
|
96
|
+
*/
|
|
97
|
+
fieldName: string;
|
|
98
|
+
/**
|
|
99
|
+
* Current locale (for localized fields)
|
|
100
|
+
*/
|
|
101
|
+
locale?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Field UI configuration (per-field overrides in collection config)
|
|
105
|
+
*/
|
|
106
|
+
interface FieldUIConfig {
|
|
107
|
+
/**
|
|
108
|
+
* Display label
|
|
109
|
+
*/
|
|
110
|
+
label?: DynamicI18nText;
|
|
111
|
+
/**
|
|
112
|
+
* Description text
|
|
113
|
+
*/
|
|
114
|
+
description?: DynamicI18nText;
|
|
115
|
+
/**
|
|
116
|
+
* Placeholder text
|
|
117
|
+
*/
|
|
118
|
+
placeholder?: DynamicI18nText;
|
|
119
|
+
/**
|
|
120
|
+
* Field type override
|
|
121
|
+
*/
|
|
122
|
+
type?: string;
|
|
123
|
+
/**
|
|
124
|
+
* Whether field is required
|
|
125
|
+
*/
|
|
126
|
+
required?: boolean | ((values: Record<string, any>) => boolean);
|
|
127
|
+
/**
|
|
128
|
+
* Whether field is read-only
|
|
129
|
+
*/
|
|
130
|
+
readOnly?: boolean | ((values: Record<string, any>) => boolean);
|
|
131
|
+
/**
|
|
132
|
+
* Whether field is disabled (grayed out, can be dynamic)
|
|
133
|
+
*/
|
|
134
|
+
disabled?: boolean | ((values: Record<string, any>) => boolean);
|
|
135
|
+
/**
|
|
136
|
+
* Whether field is hidden (can be dynamic based on form values).
|
|
137
|
+
* Hidden fields are not rendered. Default is false (visible).
|
|
138
|
+
*
|
|
139
|
+
* Note: undefined/false = visible, true = hidden.
|
|
140
|
+
* This follows JavaScript falsy semantics for better DX.
|
|
141
|
+
*/
|
|
142
|
+
hidden?: boolean | ((values: Record<string, any>) => boolean);
|
|
143
|
+
/**
|
|
144
|
+
* Whether field is localized
|
|
145
|
+
*/
|
|
146
|
+
localized?: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Validation configuration for client-side validation
|
|
149
|
+
*/
|
|
150
|
+
validation?: FieldValidationConfig;
|
|
151
|
+
/**
|
|
152
|
+
* Custom field component
|
|
153
|
+
*/
|
|
154
|
+
component?: MaybeLazyComponent<FieldComponentProps>;
|
|
155
|
+
/**
|
|
156
|
+
* Additional options for field type
|
|
157
|
+
*/
|
|
158
|
+
options?: SelectOption[] | ((values: Record<string, any>) => SelectOption[]);
|
|
159
|
+
/**
|
|
160
|
+
* Relation configuration
|
|
161
|
+
*/
|
|
162
|
+
relation?: RelationFieldConfig;
|
|
163
|
+
/**
|
|
164
|
+
* Embedded collection configuration
|
|
165
|
+
*/
|
|
166
|
+
embedded?: EmbeddedFieldConfig;
|
|
167
|
+
/**
|
|
168
|
+
* Rich text configuration
|
|
169
|
+
*/
|
|
170
|
+
richText?: RichTextConfig;
|
|
171
|
+
/**
|
|
172
|
+
* Array field configuration
|
|
173
|
+
*/
|
|
174
|
+
array?: ArrayFieldConfig;
|
|
175
|
+
/**
|
|
176
|
+
* Compute field value from other fields (proxy-tracked dependencies).
|
|
177
|
+
* Makes the field read-only and virtual (not submitted to backend).
|
|
178
|
+
*
|
|
179
|
+
* Dependencies are automatically detected via Proxy tracking.
|
|
180
|
+
* Works in both forms (reactive) and tables (static).
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```ts
|
|
184
|
+
* pricePerMinute: r.number({
|
|
185
|
+
* label: "Price/Minute",
|
|
186
|
+
* compute: (values) => values.price / values.duration,
|
|
187
|
+
* })
|
|
188
|
+
*
|
|
189
|
+
* fullName: r.text({
|
|
190
|
+
* compute: (values) => `${values.firstName} ${values.lastName}`,
|
|
191
|
+
* })
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
compute?: (values: Record<string, any>) => any;
|
|
195
|
+
/**
|
|
196
|
+
* Called when field value changes.
|
|
197
|
+
* Use for side effects like updating other fields.
|
|
198
|
+
* Can be async for API calls.
|
|
199
|
+
*
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* onChange: async (value, { setValue }) => {
|
|
203
|
+
* // Auto-generate slug from title
|
|
204
|
+
* setValue('slug', slugify(value));
|
|
205
|
+
* }
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
onChange?: (value: any, ctx: FieldHookContext) => void | Promise<void>;
|
|
209
|
+
/**
|
|
210
|
+
* Dynamic default value for new records.
|
|
211
|
+
* Can be a static value, sync function, or async function.
|
|
212
|
+
* Only evaluated when creating new records (not on edit).
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```ts
|
|
216
|
+
* // Static
|
|
217
|
+
* defaultValue: "draft"
|
|
218
|
+
*
|
|
219
|
+
* // Based on other fields
|
|
220
|
+
* defaultValue: (values) => values.type === "post" ? "draft" : "published"
|
|
221
|
+
*
|
|
222
|
+
* // Async (fetch from API)
|
|
223
|
+
* defaultValue: async (values) => {
|
|
224
|
+
* const settings = await fetchSettings();
|
|
225
|
+
* return settings.defaultStatus;
|
|
226
|
+
* }
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
defaultValue?: any | ((values: Record<string, any>) => any) | ((values: Record<string, any>) => Promise<any>);
|
|
230
|
+
/**
|
|
231
|
+
* Async options loader for select-type fields.
|
|
232
|
+
* Dependencies are automatically detected via Proxy tracking.
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```ts
|
|
236
|
+
* subcategory: r.select({
|
|
237
|
+
* loadOptions: async (values) => {
|
|
238
|
+
* // Automatically re-fetches when values.category changes
|
|
239
|
+
* return fetchSubcategories(values.category);
|
|
240
|
+
* },
|
|
241
|
+
* })
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
loadOptions?: (values: Record<string, any>) => Promise<SelectOption[]>;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Select field option
|
|
248
|
+
*/
|
|
249
|
+
interface SelectOption {
|
|
250
|
+
label: I18nText;
|
|
251
|
+
value: string | number | boolean;
|
|
252
|
+
disabled?: boolean;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Relation field configuration
|
|
256
|
+
*/
|
|
257
|
+
interface RelationFieldConfig {
|
|
258
|
+
/**
|
|
259
|
+
* Target collection name
|
|
260
|
+
*/
|
|
261
|
+
targetCollection: string;
|
|
262
|
+
/**
|
|
263
|
+
* Display mode
|
|
264
|
+
*/
|
|
265
|
+
mode?: "inline" | "picker" | "create";
|
|
266
|
+
/**
|
|
267
|
+
* Whether multiple items can be selected
|
|
268
|
+
*/
|
|
269
|
+
multiple?: boolean;
|
|
270
|
+
/**
|
|
271
|
+
* Whether items can be reordered
|
|
272
|
+
*/
|
|
273
|
+
orderable?: boolean;
|
|
274
|
+
/**
|
|
275
|
+
* Filter for relation options
|
|
276
|
+
*/
|
|
277
|
+
filter?: (values: Record<string, any>) => Record<string, any>;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Embedded collection configuration
|
|
281
|
+
*/
|
|
282
|
+
interface EmbeddedFieldConfig {
|
|
283
|
+
/**
|
|
284
|
+
* Target collection name
|
|
285
|
+
*/
|
|
286
|
+
collection: string;
|
|
287
|
+
/**
|
|
288
|
+
* Display mode
|
|
289
|
+
*/
|
|
290
|
+
mode?: "inline" | "modal" | "drawer";
|
|
291
|
+
/**
|
|
292
|
+
* Whether items can be reordered
|
|
293
|
+
*/
|
|
294
|
+
orderable?: boolean;
|
|
295
|
+
/**
|
|
296
|
+
* Function to generate row labels
|
|
297
|
+
*/
|
|
298
|
+
rowLabel?: (item: any) => string;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Rich text editor configuration
|
|
302
|
+
*/
|
|
303
|
+
interface RichTextConfig {
|
|
304
|
+
/**
|
|
305
|
+
* Enable image uploads
|
|
306
|
+
*/
|
|
307
|
+
enableImages?: boolean;
|
|
308
|
+
/**
|
|
309
|
+
* Show character count
|
|
310
|
+
*/
|
|
311
|
+
showCharacterCount?: boolean;
|
|
312
|
+
/**
|
|
313
|
+
* Maximum characters
|
|
314
|
+
*/
|
|
315
|
+
maxCharacters?: number;
|
|
316
|
+
/**
|
|
317
|
+
* Feature toggles
|
|
318
|
+
*/
|
|
319
|
+
features?: {
|
|
320
|
+
slashCommands?: boolean;
|
|
321
|
+
tableControls?: boolean;
|
|
322
|
+
bubbleMenu?: boolean;
|
|
323
|
+
};
|
|
324
|
+
/**
|
|
325
|
+
* Image upload handler
|
|
326
|
+
*/
|
|
327
|
+
onImageUpload?: (file: File) => Promise<string>;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Array field configuration
|
|
331
|
+
*/
|
|
332
|
+
interface ArrayFieldConfig {
|
|
333
|
+
/**
|
|
334
|
+
* Placeholder text for items
|
|
335
|
+
*/
|
|
336
|
+
placeholder?: string;
|
|
337
|
+
/**
|
|
338
|
+
* Type of items in array
|
|
339
|
+
*/
|
|
340
|
+
itemType?: string;
|
|
341
|
+
/**
|
|
342
|
+
* Options for select-type items
|
|
343
|
+
*/
|
|
344
|
+
options?: SelectOption[];
|
|
345
|
+
/**
|
|
346
|
+
* Whether items can be reordered
|
|
347
|
+
*/
|
|
348
|
+
orderable?: boolean;
|
|
349
|
+
/**
|
|
350
|
+
* Minimum items
|
|
351
|
+
*/
|
|
352
|
+
minItems?: number;
|
|
353
|
+
/**
|
|
354
|
+
* Maximum items
|
|
355
|
+
*/
|
|
356
|
+
maxItems?: number;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Layout mode - controls spatial arrangement of fields
|
|
360
|
+
* Mirrors ObjectFieldLayout from field components
|
|
361
|
+
*
|
|
362
|
+
* - `"stack"` - Vertical layout, each field on its own line
|
|
363
|
+
* - `"inline"` - Horizontal flexbox, fields side-by-side with wrapping
|
|
364
|
+
* - `"grid"` - CSS Grid with configurable columns
|
|
365
|
+
*
|
|
366
|
+
* @see ObjectFieldLayout in field-types.ts for detailed visual examples
|
|
367
|
+
*/
|
|
368
|
+
type LayoutMode = "stack" | "inline" | "grid";
|
|
369
|
+
/**
|
|
370
|
+
* Wrapper mode - controls container visual appearance
|
|
371
|
+
* Mirrors ObjectFieldWrapper from field components
|
|
372
|
+
*
|
|
373
|
+
* - `"flat"` - No visual container, fields render directly
|
|
374
|
+
* - `"collapsible"` - Accordion-style expandable container
|
|
375
|
+
*
|
|
376
|
+
* @see ObjectFieldWrapper in field-types.ts for detailed visual examples
|
|
377
|
+
*/
|
|
378
|
+
type WrapperMode = "flat" | "collapsible";
|
|
379
|
+
/**
|
|
380
|
+
* Section layout - universal container for grouping fields
|
|
381
|
+
*
|
|
382
|
+
* Mirrors object field API exactly:
|
|
383
|
+
* - wrapper: visual container style (flat | collapsible)
|
|
384
|
+
* - layout: field arrangement (stack | inline | grid)
|
|
385
|
+
* - columns: for grid layout
|
|
386
|
+
* - defaultCollapsed: for collapsible wrapper
|
|
387
|
+
*
|
|
388
|
+
* @example Simple section with label
|
|
389
|
+
* ```ts
|
|
390
|
+
* {
|
|
391
|
+
* type: 'section',
|
|
392
|
+
* label: 'Contact Information',
|
|
393
|
+
* fields: [f.name, f.email, f.phone]
|
|
394
|
+
* }
|
|
395
|
+
* ```
|
|
396
|
+
*
|
|
397
|
+
* @example Grid layout (acts as "row")
|
|
398
|
+
* ```ts
|
|
399
|
+
* {
|
|
400
|
+
* type: 'section',
|
|
401
|
+
* layout: 'grid',
|
|
402
|
+
* columns: 2,
|
|
403
|
+
* fields: [f.firstName, f.lastName]
|
|
404
|
+
* }
|
|
405
|
+
* ```
|
|
406
|
+
*
|
|
407
|
+
* @example Collapsible section
|
|
408
|
+
* ```ts
|
|
409
|
+
* {
|
|
410
|
+
* type: 'section',
|
|
411
|
+
* label: 'Advanced Settings',
|
|
412
|
+
* wrapper: 'collapsible',
|
|
413
|
+
* defaultCollapsed: true,
|
|
414
|
+
* fields: [f.apiKey, f.webhookUrl]
|
|
415
|
+
* }
|
|
416
|
+
* ```
|
|
417
|
+
*
|
|
418
|
+
* @example Collapsible + Grid
|
|
419
|
+
* ```ts
|
|
420
|
+
* {
|
|
421
|
+
* type: 'section',
|
|
422
|
+
* label: 'Address',
|
|
423
|
+
* wrapper: 'collapsible',
|
|
424
|
+
* layout: 'grid',
|
|
425
|
+
* columns: 2,
|
|
426
|
+
* fields: [f.street, f.city, f.zip, f.country]
|
|
427
|
+
* }
|
|
428
|
+
* ```
|
|
429
|
+
*/
|
|
430
|
+
interface SectionLayout<TData = any> {
|
|
431
|
+
type: "section";
|
|
432
|
+
label?: DynamicI18nText;
|
|
433
|
+
description?: DynamicI18nText;
|
|
434
|
+
wrapper?: WrapperMode;
|
|
435
|
+
defaultCollapsed?: boolean;
|
|
436
|
+
layout?: LayoutMode;
|
|
437
|
+
columns?: number;
|
|
438
|
+
gap?: number;
|
|
439
|
+
fields: FieldLayoutItem<TData>[];
|
|
440
|
+
hidden?: boolean | ((values: Record<string, any>) => boolean);
|
|
441
|
+
className?: string;
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Tab configuration for tabbed forms
|
|
445
|
+
*/
|
|
446
|
+
interface TabConfig<TData = any> {
|
|
447
|
+
id: string;
|
|
448
|
+
label: DynamicI18nText;
|
|
449
|
+
icon?: IconComponent | ComponentReference;
|
|
450
|
+
fields: FieldLayoutItem<TData>[];
|
|
451
|
+
hidden?: boolean | ((values: Record<string, any>) => boolean);
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Tabs layout container for tabbed forms.
|
|
455
|
+
*/
|
|
456
|
+
interface TabsLayout<TData = any> {
|
|
457
|
+
type: "tabs";
|
|
458
|
+
tabs: TabConfig<TData>[];
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Context passed to reactive handlers.
|
|
462
|
+
*/
|
|
463
|
+
interface FieldReactiveContext<TData = any> {
|
|
464
|
+
data: TData;
|
|
465
|
+
sibling: Record<string, any>;
|
|
466
|
+
ctx?: Record<string, any>;
|
|
467
|
+
prev?: {
|
|
468
|
+
data: TData;
|
|
469
|
+
sibling: Record<string, any>;
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Reactive handler config (short function form or object form).
|
|
474
|
+
*/
|
|
475
|
+
type FieldReactiveHandlerConfig<TData = any, TReturn = any> = ((ctx: FieldReactiveContext<TData>) => TReturn | Promise<TReturn>) | {
|
|
476
|
+
handler: (ctx: FieldReactiveContext<TData>) => TReturn | Promise<TReturn>;
|
|
477
|
+
deps?: string[] | ((ctx: {
|
|
478
|
+
data: TData;
|
|
479
|
+
}) => any[]);
|
|
480
|
+
debounce?: number;
|
|
481
|
+
};
|
|
482
|
+
/**
|
|
483
|
+
* Serialized reactive config from server introspection.
|
|
484
|
+
*/
|
|
485
|
+
interface SerializedReactiveDepsConfig {
|
|
486
|
+
deps: string[];
|
|
487
|
+
debounce?: number;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Reactive field config for form layout.
|
|
491
|
+
* Handlers are executed server-side; deps tracked for client reactivity.
|
|
492
|
+
*/
|
|
493
|
+
interface FieldReactiveConfig<TData = any> {
|
|
494
|
+
/** Hide field conditionally */
|
|
495
|
+
hidden?: boolean | FieldReactiveHandlerConfig<TData, boolean> | SerializedReactiveDepsConfig;
|
|
496
|
+
/** Make field read-only conditionally */
|
|
497
|
+
readOnly?: boolean | FieldReactiveHandlerConfig<TData, boolean> | SerializedReactiveDepsConfig;
|
|
498
|
+
/** Disable field conditionally */
|
|
499
|
+
disabled?: boolean | FieldReactiveHandlerConfig<TData, boolean> | SerializedReactiveDepsConfig;
|
|
500
|
+
/** Auto-compute field value */
|
|
501
|
+
compute?: FieldReactiveHandlerConfig<TData, any> | SerializedReactiveDepsConfig;
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Field layout item with optional reactive config
|
|
505
|
+
*/
|
|
506
|
+
interface FieldLayoutItemWithReactive<TData = any> extends FieldReactiveConfig<TData> {
|
|
507
|
+
field: string;
|
|
508
|
+
className?: string;
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Field layout item - can be a simple field name, field with config, section, or tabs
|
|
512
|
+
*
|
|
513
|
+
* @example
|
|
514
|
+
* ```ts
|
|
515
|
+
* fields: [
|
|
516
|
+
* f.name, // simple field reference
|
|
517
|
+
* { field: f.email, className: 'col-span-2' }, // with className
|
|
518
|
+
* { field: f.slug, compute: { handler: ({ data }) => slugify(data.name), deps: ['name'] } }, // with compute
|
|
519
|
+
* { field: f.reason, hidden: ({ data }) => data.status !== 'cancelled' }, // with hidden
|
|
520
|
+
* { type: 'section', layout: 'grid', columns: 2, fields: [...] }, // section
|
|
521
|
+
* { type: 'tabs', tabs: [...] } // tabs
|
|
522
|
+
* ]
|
|
523
|
+
* ```
|
|
524
|
+
*/
|
|
525
|
+
type FieldLayoutItem<TData = any> = string | FieldLayoutItemWithReactive<TData> | SectionLayout<TData> | TabsLayout<TData>;
|
|
526
|
+
/**
|
|
527
|
+
* Form sidebar configuration
|
|
528
|
+
* Uses `fields` array (same structure as main form)
|
|
529
|
+
*/
|
|
530
|
+
interface FormSidebarConfig<TData = any> {
|
|
531
|
+
position?: "left" | "right";
|
|
532
|
+
fields: FieldLayoutItem<TData>[];
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Form view configuration
|
|
536
|
+
* Uses `fields` array for main content
|
|
537
|
+
*
|
|
538
|
+
* @example
|
|
539
|
+
* ```ts
|
|
540
|
+
* .form(({ v, f }) => v.collectionForm({
|
|
541
|
+
* sidebar: {
|
|
542
|
+
* position: 'right',
|
|
543
|
+
* fields: [f.status, f.publishedAt]
|
|
544
|
+
* },
|
|
545
|
+
* fields: [
|
|
546
|
+
* { type: 'section', layout: 'grid', columns: 2, fields: [f.name, f.email] },
|
|
547
|
+
* { type: 'section', label: 'Content', fields: [f.body] }
|
|
548
|
+
* ]
|
|
549
|
+
* }))
|
|
550
|
+
* ```
|
|
551
|
+
*/
|
|
552
|
+
interface FormViewConfig<TData = any> {
|
|
553
|
+
fields: FieldLayoutItem<TData>[];
|
|
554
|
+
sidebar?: FormSidebarConfig<TData>;
|
|
555
|
+
actions?: FormViewActionsConfig;
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Actions configuration for form views
|
|
559
|
+
*
|
|
560
|
+
* @example
|
|
561
|
+
* ```ts
|
|
562
|
+
* actions: {
|
|
563
|
+
* primary: [a.action({ id: "publish", label: "Publish" })], // Buttons next to Save
|
|
564
|
+
* secondary: [a.action({ id: "delete", label: "Delete" })], // In dropdown menu (...)
|
|
565
|
+
* }
|
|
566
|
+
* ```
|
|
567
|
+
*/
|
|
568
|
+
interface FormViewActionsConfig<TItem = any> {
|
|
569
|
+
/** Actions shown as buttons (next to Save) */
|
|
570
|
+
primary?: ActionDefinition<TItem>[];
|
|
571
|
+
/** Actions shown in dropdown menu (...) */
|
|
572
|
+
secondary?: ActionDefinition<TItem>[];
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Registry for custom field and widget components
|
|
576
|
+
*/
|
|
577
|
+
interface ComponentRegistry {
|
|
578
|
+
/**
|
|
579
|
+
* Custom field components by type
|
|
580
|
+
*/
|
|
581
|
+
fields?: Record<string, MaybeLazyComponent<FieldComponentProps>>;
|
|
582
|
+
/**
|
|
583
|
+
* Custom widget components by type
|
|
584
|
+
*/
|
|
585
|
+
widgets?: Record<string, MaybeLazyComponent<any>>;
|
|
586
|
+
/**
|
|
587
|
+
* Custom named components (for component prop on fields)
|
|
588
|
+
*/
|
|
589
|
+
custom?: Record<string, MaybeLazyComponent<any>>;
|
|
590
|
+
}
|
|
591
|
+
//#endregion
|
|
592
|
+
export { ComponentRegistry, FieldComponentProps, FieldLayoutItem, FormSidebarConfig, FormViewConfig, SectionLayout, TabConfig, TabsLayout };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/client/builder/types/field-types.ts
|
|
2
|
+
/**
|
|
3
|
+
* Helper to check if item is a field reference (string or object with field)
|
|
4
|
+
*/
|
|
5
|
+
function isFieldReference(item) {
|
|
6
|
+
return typeof item === "string" || "field" in item && !("type" in item);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Helper to get field name from layout item
|
|
10
|
+
*/
|
|
11
|
+
function getFieldName(item) {
|
|
12
|
+
if (typeof item === "string") return item;
|
|
13
|
+
if ("field" in item && typeof item.field === "string") return item.field;
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getFieldName, isFieldReference };
|