@questpie/admin 2.0.0 → 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 +119 -122
- package/dist/augmentation.d.mts +110 -11
- package/dist/client/blocks/block-renderer.d.mts +5 -12
- package/dist/client/blocks/block-renderer.mjs +89 -55
- package/dist/client/blocks/index.d.mts +2 -4
- package/dist/client/blocks/types.d.mts +3 -4
- package/dist/client/blocks/types.mjs +1 -2
- package/dist/client/builder/admin-types.d.mts +11 -44
- package/dist/client/builder/admin.d.mts +34 -45
- package/dist/client/builder/admin.mjs +35 -44
- package/dist/client/builder/field/field.d.mts +27 -205
- package/dist/client/builder/field/field.mjs +22 -68
- package/dist/client/builder/index.d.mts +23 -28
- package/dist/client/builder/page/page.d.mts +15 -27
- package/dist/client/builder/page/page.mjs +21 -17
- package/dist/client/builder/registry.d.mts +14 -34
- package/dist/client/builder/types/action-registry.mjs +148 -14
- package/dist/client/builder/types/action-types.d.mts +8 -35
- package/dist/client/builder/types/collection-types.mjs +1 -2
- package/dist/client/builder/types/common.d.mts +6 -20
- package/dist/client/builder/types/field-types.d.mts +4 -5
- package/dist/client/builder/types/field-types.mjs +1 -2
- package/dist/client/builder/types/ui-config.d.mts +3 -5
- package/dist/client/builder/types/widget-types.d.mts +19 -20
- package/dist/client/builder/validation.d.mts +33 -3
- package/dist/client/builder/validation.mjs +169 -150
- package/dist/client/builder/view/view.d.mts +26 -106
- package/dist/client/builder/view/view.mjs +14 -96
- package/dist/client/builder/widget/widget.d.mts +16 -22
- package/dist/client/builder/widget/widget.mjs +11 -16
- package/dist/client/components/actions/action-button.mjs +207 -97
- package/dist/client/components/actions/action-dialog.mjs +471 -176
- package/dist/client/components/actions/confirmation-dialog.mjs +166 -47
- package/dist/client/components/actions/header-actions.mjs +164 -71
- package/dist/client/components/admin-link.d.mts +8 -9
- package/dist/client/components/admin-link.mjs +127 -48
- package/dist/client/components/auth/auth-guard.d.mts +6 -7
- package/dist/client/components/auth/auth-guard.mjs +9 -9
- package/dist/client/components/auth/auth-loading.d.mts +3 -4
- package/dist/client/components/auth/auth-loading.mjs +38 -10
- package/dist/client/components/blocks/block-canvas.mjs +111 -42
- package/dist/client/components/blocks/block-editor-context.mjs +90 -23
- package/dist/client/components/blocks/block-editor-layout.mjs +176 -59
- package/dist/client/components/blocks/block-editor-provider.mjs +219 -139
- package/dist/client/components/blocks/block-fields-renderer.mjs +212 -42
- package/dist/client/components/blocks/block-insert-button.mjs +168 -51
- package/dist/client/components/blocks/block-item-menu.mjs +312 -110
- package/dist/client/components/blocks/block-item.mjs +372 -125
- package/dist/client/components/blocks/block-library-sidebar.mjs +209 -114
- package/dist/client/components/blocks/block-tree.mjs +73 -15
- package/dist/client/components/blocks/block-type-icon.mjs +65 -20
- package/dist/client/components/blocks/utils/tree-utils.mjs +1 -2
- package/dist/client/components/component-renderer.d.mts +11 -22
- package/dist/client/components/component-renderer.mjs +151 -38
- package/dist/client/components/error-boundary.mjs +77 -25
- package/dist/client/components/fields/array-field.mjs +474 -199
- package/dist/client/components/fields/asset-preview-field.mjs +143 -44
- package/dist/client/components/fields/blocks-field/blocks-field.mjs +143 -35
- package/dist/client/components/fields/boolean-field.mjs +62 -32
- package/dist/client/components/fields/date-field.mjs +46 -12
- package/dist/client/components/fields/datetime-field.mjs +42 -11
- package/dist/client/components/fields/email-field.mjs +57 -28
- package/dist/client/components/fields/field-utils.mjs +1 -2
- package/dist/client/components/fields/field-wrapper.mjs +107 -32
- package/dist/client/components/fields/json-field.mjs +323 -110
- package/dist/client/components/fields/locale-badge.mjs +16 -8
- package/dist/client/components/fields/number-field.mjs +63 -30
- package/dist/client/components/fields/object-array-field.mjs +666 -272
- package/dist/client/components/fields/object-field.mjs +656 -98
- package/dist/client/components/fields/relation/displays/cards-display.mjs +225 -111
- package/dist/client/components/fields/relation/displays/chips-display.mjs +150 -77
- package/dist/client/components/fields/relation/displays/grid-display.mjs +186 -91
- package/dist/client/components/fields/relation/displays/list-display.mjs +230 -111
- package/dist/client/components/fields/relation/displays/table-display.mjs +241 -66
- package/dist/client/components/fields/relation/displays/types.mjs +2 -3
- package/dist/client/components/fields/relation/relation-items-display.mjs +131 -35
- package/dist/client/components/fields/relation-field.mjs +70 -15
- package/dist/client/components/fields/relation-picker.mjs +93 -98
- package/dist/client/components/fields/relation-select.mjs +42 -29
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +90 -41
- package/dist/client/components/fields/rich-text-editor/extensions.mjs +33 -7
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +48 -23
- package/dist/client/components/fields/rich-text-editor/index.mjs +491 -158
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs +13 -14
- package/dist/client/components/fields/rich-text-editor/presets.mjs +1 -2
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +96 -53
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs +416 -107
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs +476 -215
- package/dist/client/components/fields/rich-text-editor/types.mjs +1 -2
- package/dist/client/components/fields/rich-text-editor/utils.mjs +1 -2
- package/dist/client/components/fields/rich-text-field.mjs +55 -17
- package/dist/client/components/fields/select-field.mjs +79 -44
- package/dist/client/components/fields/text-field.mjs +62 -29
- package/dist/client/components/fields/textarea-field.mjs +61 -29
- package/dist/client/components/fields/time-field.mjs +39 -11
- package/dist/client/components/fields/upload-field.mjs +253 -129
- package/dist/client/components/filter-builder/columns-tab.mjs +287 -93
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +437 -138
- package/dist/client/components/filter-builder/filters-tab.mjs +409 -126
- package/dist/client/components/filter-builder/saved-views-tab.mjs +259 -106
- 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 +231 -108
- package/dist/client/components/media/media-grid.mjs +259 -84
- package/dist/client/components/media/media-picker-dialog.mjs +500 -192
- package/dist/client/components/preview/live-preview-mode.mjs +416 -124
- package/dist/client/components/preview/preview-pane.mjs +353 -144
- package/dist/client/components/primitives/asset-preview.mjs +665 -257
- package/dist/client/components/primitives/checkbox-input.mjs +37 -11
- package/dist/client/components/primitives/date-input.mjs +392 -149
- package/dist/client/components/primitives/dropzone.mjs +314 -185
- package/dist/client/components/primitives/number-input.mjs +14 -10
- package/dist/client/components/primitives/select-multi.mjs +519 -185
- package/dist/client/components/primitives/select-single.mjs +416 -126
- package/dist/client/components/primitives/text-input.mjs +10 -5
- package/dist/client/components/primitives/textarea-input.mjs +10 -5
- package/dist/client/components/primitives/time-input.mjs +118 -45
- package/dist/client/components/primitives/toggle-input.mjs +31 -11
- package/dist/client/components/primitives/types.mjs +1 -2
- package/dist/client/components/sheets/resource-sheet.mjs +72 -64
- package/dist/client/components/ui/accordion.mjs +156 -37
- package/dist/client/components/ui/alert.mjs +70 -17
- package/dist/client/components/ui/badge.mjs +57 -16
- package/dist/client/components/ui/button.mjs +49 -14
- package/dist/client/components/ui/card.mjs +194 -39
- package/dist/client/components/ui/checkbox.mjs +71 -16
- package/dist/client/components/ui/command.mjs +220 -50
- package/dist/client/components/ui/dialog.mjs +265 -52
- package/dist/client/components/ui/drawer.mjs +260 -57
- package/dist/client/components/ui/dropdown-menu.mjs +293 -67
- package/dist/client/components/ui/empty-state.mjs +72 -26
- package/dist/client/components/ui/field.mjs +332 -56
- package/dist/client/components/ui/input-group.mjs +174 -41
- package/dist/client/components/ui/input.mjs +38 -9
- package/dist/client/components/ui/kbd.mjs +37 -8
- package/dist/client/components/ui/label.mjs +38 -8
- package/dist/client/components/ui/popover.mjs +162 -35
- package/dist/client/components/ui/responsive-dialog.mjs +277 -71
- package/dist/client/components/ui/search-input.mjs +101 -36
- package/dist/client/components/ui/select.mjs +297 -57
- package/dist/client/components/ui/separator.mjs +39 -9
- package/dist/client/components/ui/sheet.mjs +253 -51
- package/dist/client/components/ui/sidebar.mjs +700 -182
- package/dist/client/components/ui/skeleton.mjs +33 -8
- package/dist/client/components/ui/sonner.d.mts +2 -3
- package/dist/client/components/ui/sonner.mjs +45 -15
- package/dist/client/components/ui/spinner.mjs +44 -10
- package/dist/client/components/ui/switch.mjs +47 -12
- package/dist/client/components/ui/table.mjs +260 -50
- package/dist/client/components/ui/tabs.mjs +140 -29
- package/dist/client/components/ui/textarea.mjs +33 -8
- package/dist/client/components/ui/toolbar.mjs +105 -23
- package/dist/client/components/ui/tooltip.mjs +130 -29
- package/dist/client/components/widgets/chart-widget.mjs +456 -156
- package/dist/client/components/widgets/progress-widget.mjs +150 -60
- package/dist/client/components/widgets/quick-actions-widget.mjs +175 -87
- package/dist/client/components/widgets/recent-items-widget.mjs +157 -62
- package/dist/client/components/widgets/stats-widget.mjs +153 -42
- package/dist/client/components/widgets/table-widget.mjs +198 -64
- package/dist/client/components/widgets/timeline-widget.mjs +193 -82
- package/dist/client/components/widgets/value-widget.mjs +257 -56
- package/dist/client/components/widgets/widget-skeletons.mjs +390 -108
- package/dist/client/contexts/breadcrumb-context.mjs +44 -16
- package/dist/client/{context → contexts}/focus-context.d.mts +6 -7
- package/dist/client/{context → contexts}/focus-context.mjs +134 -62
- package/dist/client/hooks/typed-hooks.d.mts +38 -12
- package/dist/client/hooks/typed-hooks.mjs +758 -142
- package/dist/client/hooks/use-action.mjs +197 -69
- package/dist/client/hooks/use-admin-config.mjs +39 -10
- package/dist/client/hooks/use-admin-preferences.mjs +118 -15
- package/dist/client/hooks/use-admin-routes.mjs +60 -27
- package/dist/client/hooks/use-audit-history.mjs +157 -0
- package/dist/client/hooks/use-auth.d.mts +14 -15
- package/dist/client/hooks/use-auth.mjs +8 -9
- package/dist/client/hooks/use-collection-fields.mjs +58 -19
- package/dist/client/hooks/use-collection-meta.mjs +45 -13
- package/dist/client/hooks/use-collection-schema.mjs +34 -11
- package/dist/client/hooks/use-collection-validation.mjs +39 -25
- package/dist/client/hooks/use-collection.d.mts +18 -8
- package/dist/client/hooks/use-collection.mjs +560 -101
- package/dist/client/hooks/use-current-user.d.mts +6 -3
- package/dist/client/hooks/use-current-user.mjs +2 -2
- package/dist/client/hooks/use-field-hooks.mjs +73 -65
- package/dist/client/hooks/use-field-options.d.mts +1 -34
- package/dist/client/hooks/use-field-options.mjs +233 -148
- package/dist/client/hooks/use-global-fields.mjs +47 -16
- package/dist/client/hooks/use-global-meta.mjs +57 -11
- package/dist/client/hooks/use-global-schema.mjs +31 -11
- package/dist/client/hooks/use-global.d.mts +13 -2
- package/dist/client/hooks/use-global.mjs +244 -34
- package/dist/client/hooks/use-locks.mjs +331 -124
- package/dist/client/hooks/use-media-query.d.mts +1 -2
- package/dist/client/hooks/use-media-query.mjs +38 -19
- package/dist/client/hooks/use-prefill-params.mjs +2 -2
- package/dist/client/hooks/use-questpie-query-options.mjs +33 -11
- package/dist/client/hooks/use-reactive-fields.d.mts +6 -3
- package/dist/client/hooks/use-reactive-fields.mjs +130 -93
- package/dist/client/hooks/use-realtime-highlight.mjs +115 -53
- package/dist/client/hooks/use-saved-views.mjs +109 -34
- 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 +147 -36
- package/dist/client/hooks/use-server-actions.mjs +191 -0
- package/dist/client/hooks/use-server-validation.mjs +164 -72
- package/dist/client/hooks/use-server-widget-data.d.mts +2 -3
- package/dist/client/hooks/use-server-widget-data.mjs +36 -11
- package/dist/client/hooks/use-setup-status.d.mts +3 -4
- package/dist/client/hooks/use-setup-status.mjs +28 -16
- 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 +1 -2
- package/dist/client/hooks/use-upload.mjs +189 -125
- package/dist/client/hooks/use-validation-error-map.mjs +10 -6
- package/dist/client/hooks/use-view-state.mjs +380 -162
- package/dist/client/i18n/hooks.mjs +191 -67
- package/dist/client/i18n/intl-cache.mjs +1 -2
- package/dist/client/i18n/messages.mjs +1 -2
- package/dist/client/i18n/simple.d.mts +1 -2
- package/dist/client/i18n/simple.mjs +1 -2
- package/dist/client/i18n/types.d.mts +1 -2
- 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 +1 -6
- package/dist/client/preview/block-scope-context.d.mts +5 -6
- package/dist/client/preview/block-scope-context.mjs +50 -27
- package/dist/client/preview/index.d.mts +2 -2
- package/dist/client/preview/preview-banner.d.mts +3 -4
- package/dist/client/preview/preview-banner.mjs +74 -35
- package/dist/client/preview/preview-field.d.mts +9 -10
- package/dist/client/preview/preview-field.mjs +163 -61
- package/dist/client/preview/types.d.mts +1 -2
- package/dist/client/preview/types.mjs +1 -2
- package/dist/client/preview/use-collection-preview.d.mts +1 -2
- package/dist/client/preview/use-collection-preview.mjs +105 -56
- package/dist/client/runtime/content-locales-provider.mjs +87 -36
- package/dist/client/runtime/index.d.mts +1 -3
- package/dist/client/runtime/index.mjs +1 -3
- package/dist/client/runtime/locale-scope.mjs +69 -29
- package/dist/client/runtime/provider.d.mts +18 -9922
- package/dist/client/runtime/provider.mjs +250 -86
- package/dist/client/runtime/routes.d.mts +7 -7
- package/dist/client/runtime/routes.mjs +4 -20
- package/dist/client/runtime/translations-provider.mjs +114 -53
- package/dist/client/scope/picker.d.mts +3 -4
- package/dist/client/scope/picker.mjs +324 -90
- package/dist/client/scope/provider.d.mts +4 -5
- package/dist/client/scope/provider.mjs +30 -22
- package/dist/client/scope/types.d.mts +1 -2
- package/dist/client/styles/index.css +301 -225
- package/dist/client/utils/auto-expand-fields.mjs +23 -5
- package/dist/client/utils/build-field-definitions-from-schema.mjs +10 -7
- package/dist/client/utils/dependency-tracker.mjs +61 -0
- package/dist/client/utils/detect-relations.mjs +1 -2
- package/dist/client/utils/locale-to-flag.d.mts +8 -7
- package/dist/client/utils/locale-to-flag.mjs +1 -2
- package/dist/client/utils/routes.mjs +1 -2
- package/dist/client/views/auth/accept-invite-form.d.mts +3 -4
- package/dist/client/views/auth/accept-invite-form.mjs +414 -121
- package/dist/client/views/auth/auth-layout.d.mts +7 -8
- package/dist/client/views/auth/auth-layout.mjs +93 -30
- package/dist/client/views/auth/forgot-password-form.d.mts +4 -5
- package/dist/client/views/auth/forgot-password-form.mjs +332 -100
- package/dist/client/views/auth/invite-form.mjs +447 -105
- package/dist/client/views/auth/login-form.d.mts +4 -5
- package/dist/client/views/auth/login-form.mjs +340 -120
- package/dist/client/views/auth/reset-password-form.d.mts +4 -5
- package/dist/client/views/auth/reset-password-form.mjs +458 -131
- package/dist/client/views/auth/setup-form.d.mts +4 -5
- package/dist/client/views/auth/setup-form.mjs +481 -141
- package/dist/client/views/collection/auto-form-fields.mjs +686 -266
- package/dist/client/views/collection/bulk-action-toolbar.mjs +392 -203
- package/dist/client/views/collection/cells/complex-cells.mjs +635 -216
- package/dist/client/views/collection/cells/primitive-cells.mjs +332 -102
- package/dist/client/views/collection/cells/relation-cells.mjs +227 -72
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +456 -136
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs +49 -2
- package/dist/client/views/collection/cells/shared/relation-chip.mjs +109 -25
- package/dist/client/views/collection/cells/upload-cells.mjs +16 -8
- package/dist/client/views/collection/columns/build-columns.mjs +51 -12
- package/dist/client/views/collection/columns/column-defaults.mjs +17 -2
- package/dist/client/views/collection/field-context.mjs +10 -11
- package/dist/client/views/collection/field-renderer.mjs +237 -40
- package/dist/client/views/collection/form-view.mjs +1108 -445
- package/dist/client/views/collection/table-view.mjs +300 -163
- package/dist/client/views/collection/view-skeletons.mjs +181 -87
- package/dist/client/views/common/global-search.mjs +557 -233
- package/dist/client/views/dashboard/dashboard-grid.mjs +707 -211
- package/dist/client/views/dashboard/dashboard-widget.mjs +145 -58
- package/dist/client/views/dashboard/widget-card.mjs +315 -102
- package/dist/client/views/globals/global-form-view.mjs +1256 -131
- package/dist/client/views/layout/admin-layout-provider.d.mts +18 -21
- package/dist/client/views/layout/admin-layout-provider.mjs +135 -32
- package/dist/client/views/layout/admin-layout.d.mts +14 -32
- package/dist/client/views/layout/admin-layout.mjs +254 -96
- package/dist/client/views/layout/admin-router.d.mts +10 -42
- package/dist/client/views/layout/admin-router.mjs +1086 -426
- package/dist/client/views/layout/admin-sidebar.d.mts +10 -16
- package/dist/client/views/layout/admin-sidebar.mjs +1211 -382
- package/dist/client/views/layout/admin-topbar.mjs +220 -112
- package/dist/client/views/pages/accept-invite-page.d.mts +5 -6
- package/dist/client/views/pages/accept-invite-page.mjs +302 -96
- package/dist/client/views/pages/dashboard-page.d.mts +7 -16
- package/dist/client/views/pages/dashboard-page.mjs +62 -23
- package/dist/client/views/pages/forgot-password-page.d.mts +7 -10
- package/dist/client/views/pages/forgot-password-page.mjs +112 -40
- package/dist/client/views/pages/invite-page.d.mts +6 -7
- package/dist/client/views/pages/invite-page.mjs +121 -46
- package/dist/client/views/pages/login-page.d.mts +8 -15
- package/dist/client/views/pages/login-page.mjs +152 -57
- package/dist/client/views/pages/reset-password-page.d.mts +7 -10
- package/dist/client/views/pages/reset-password-page.mjs +209 -57
- package/dist/client/views/pages/setup-page.d.mts +7 -10
- package/dist/client/views/pages/setup-page.mjs +108 -43
- package/dist/client-module.d.mts +3 -0
- package/dist/client-module.mjs +3 -0
- package/dist/client.d.mts +55 -48
- package/dist/client.mjs +26 -28
- package/dist/components/rich-text/rich-text-renderer.d.mts +3 -4
- package/dist/components/rich-text/rich-text-renderer.mjs +97 -70
- package/dist/index.d.mts +36 -39
- package/dist/index.mjs +26 -28
- package/dist/plugin.d.mts +2 -0
- package/dist/plugin.mjs +3 -0
- package/dist/server/adapters/nextjs.d.mts +13 -14
- package/dist/server/adapters/nextjs.mjs +12 -13
- package/dist/server/adapters/tanstack.d.mts +10 -11
- package/dist/server/adapters/tanstack.mjs +11 -12
- 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 -1523
- package/dist/server/block/index.d.mts +4 -3
- 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 +10 -78
- package/dist/server/fields/blocks.mjs +74 -115
- package/dist/server/fields/index.d.mts +6 -39
- package/dist/server/fields/index.mjs +6 -7
- package/dist/server/fields/rich-text.d.mts +10 -77
- package/dist/server/fields/rich-text.mjs +59 -100
- package/dist/server/i18n/index.mjs +8 -9
- package/dist/server/i18n/messages/cs.mjs +3 -3
- package/dist/server/i18n/messages/de.mjs +3 -3
- package/dist/server/i18n/messages/en.mjs +217 -3
- package/dist/server/i18n/messages/es.mjs +3 -3
- package/dist/server/i18n/messages/fr.mjs +3 -3
- package/dist/server/i18n/messages/index.mjs +1 -2
- package/dist/server/i18n/messages/pl.mjs +3 -3
- package/dist/server/i18n/messages/pt.mjs +3 -3
- package/dist/server/i18n/messages/sk.mjs +202 -3
- 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/{auth-helpers.d.mts → modules/admin/auth-helpers.d.mts} +13 -14
- package/dist/server/{auth-helpers.mjs → modules/admin/auth-helpers.mjs} +15 -16
- package/dist/server/{block → modules/admin/block}/block-builder.d.mts +96 -32
- package/dist/server/{block → modules/admin/block}/block-builder.mjs +113 -15
- package/dist/server/modules/admin/block/index.d.mts +3 -0
- package/dist/server/{block → modules/admin/block}/introspection.d.mts +10 -5
- package/dist/server/{block → modules/admin/block}/introspection.mjs +18 -7
- package/dist/server/{block → modules/admin/block}/prefetch.d.mts +17 -17
- package/dist/server/{block → modules/admin/block}/prefetch.mjs +17 -16
- 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 +1060 -16846
- package/dist/server/modules/admin/index.mjs +17 -240
- 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/{functions → routes}/execute-action.d.mts +17 -32
- package/dist/server/modules/admin/{functions → routes}/execute-action.mjs +146 -44
- 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/{functions → routes}/preview.d.mts +25 -15
- package/dist/server/modules/admin/{functions → routes}/preview.mjs +84 -97
- package/dist/server/modules/admin/{functions → routes}/reactive.d.mts +19 -44
- package/dist/server/modules/admin/{functions → routes}/reactive.mjs +89 -117
- 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/{functions → routes}/setup.d.mts +11 -32
- 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.collection.mjs → admin-preferences.mjs} +13 -24
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +18 -42
- 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 +30 -18
- package/dist/server.mjs +19 -16
- package/dist/shared/preview-utils.d.mts +2 -3
- package/dist/shared/preview-utils.mjs +2 -3
- package/dist/shared/types/saved-views.types.d.mts +2 -2
- package/package.json +50 -40
- 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/_virtual/rolldown_runtime.mjs +0 -18
- package/dist/augmentation.d.mts.map +0 -1
- package/dist/client/blocks/block-registry.d.mts +0 -199
- package/dist/client/blocks/block-registry.d.mts.map +0 -1
- package/dist/client/blocks/block-registry.mjs +0 -88
- package/dist/client/blocks/block-registry.mjs.map +0 -1
- package/dist/client/blocks/block-renderer.d.mts.map +0 -1
- package/dist/client/blocks/block-renderer.mjs.map +0 -1
- package/dist/client/blocks/prefetch.d.mts +0 -45
- package/dist/client/blocks/prefetch.d.mts.map +0 -1
- package/dist/client/blocks/prefetch.mjs +0 -26
- package/dist/client/blocks/prefetch.mjs.map +0 -1
- package/dist/client/blocks/types.d.mts.map +0 -1
- package/dist/client/blocks/types.mjs.map +0 -1
- package/dist/client/builder/admin-builder.d.mts +0 -112
- package/dist/client/builder/admin-builder.d.mts.map +0 -1
- package/dist/client/builder/admin-builder.mjs +0 -185
- package/dist/client/builder/admin-builder.mjs.map +0 -1
- package/dist/client/builder/admin-types.d.mts.map +0 -1
- package/dist/client/builder/admin.d.mts.map +0 -1
- package/dist/client/builder/admin.mjs.map +0 -1
- package/dist/client/builder/defaults/components.mjs +0 -20
- package/dist/client/builder/defaults/components.mjs.map +0 -1
- package/dist/client/builder/defaults/core.d.mts +0 -354
- package/dist/client/builder/defaults/core.d.mts.map +0 -1
- package/dist/client/builder/defaults/core.mjs +0 -49
- package/dist/client/builder/defaults/core.mjs.map +0 -1
- package/dist/client/builder/defaults/fields.mjs +0 -328
- package/dist/client/builder/defaults/fields.mjs.map +0 -1
- package/dist/client/builder/defaults/pages.mjs +0 -58
- package/dist/client/builder/defaults/pages.mjs.map +0 -1
- package/dist/client/builder/defaults/starter.d.mts +0 -351
- package/dist/client/builder/defaults/starter.d.mts.map +0 -1
- package/dist/client/builder/defaults/starter.mjs +0 -28
- package/dist/client/builder/defaults/starter.mjs.map +0 -1
- package/dist/client/builder/defaults/views.mjs +0 -27
- package/dist/client/builder/defaults/views.mjs.map +0 -1
- package/dist/client/builder/defaults/widgets.mjs +0 -31
- package/dist/client/builder/defaults/widgets.mjs.map +0 -1
- package/dist/client/builder/field/field.d.mts.map +0 -1
- package/dist/client/builder/field/field.mjs.map +0 -1
- package/dist/client/builder/index.d.mts.map +0 -1
- package/dist/client/builder/page/page.d.mts.map +0 -1
- package/dist/client/builder/page/page.mjs.map +0 -1
- package/dist/client/builder/proxies.d.mts +0 -2
- package/dist/client/builder/proxies.mjs +0 -24
- package/dist/client/builder/proxies.mjs.map +0 -1
- package/dist/client/builder/qa.d.mts +0 -50
- package/dist/client/builder/qa.d.mts.map +0 -1
- package/dist/client/builder/qa.mjs +0 -42
- package/dist/client/builder/qa.mjs.map +0 -1
- package/dist/client/builder/registry.d.mts.map +0 -1
- package/dist/client/builder/types/action-registry.d.mts +0 -2
- package/dist/client/builder/types/action-registry.mjs.map +0 -1
- package/dist/client/builder/types/action-types.d.mts.map +0 -1
- package/dist/client/builder/types/collection-types.d.mts +0 -199
- package/dist/client/builder/types/collection-types.d.mts.map +0 -1
- package/dist/client/builder/types/collection-types.mjs.map +0 -1
- package/dist/client/builder/types/common.d.mts.map +0 -1
- package/dist/client/builder/types/field-types.d.mts.map +0 -1
- package/dist/client/builder/types/field-types.mjs.map +0 -1
- package/dist/client/builder/types/global-types.d.mts +0 -22
- package/dist/client/builder/types/global-types.d.mts.map +0 -1
- package/dist/client/builder/types/ui-config.d.mts.map +0 -1
- package/dist/client/builder/types/views.d.mts +0 -89
- package/dist/client/builder/types/views.d.mts.map +0 -1
- package/dist/client/builder/types/widget-types.d.mts.map +0 -1
- package/dist/client/builder/validation.mjs.map +0 -1
- package/dist/client/builder/view/view.d.mts.map +0 -1
- package/dist/client/builder/view/view.mjs.map +0 -1
- package/dist/client/builder/widget/widget.d.mts.map +0 -1
- package/dist/client/builder/widget/widget.mjs.map +0 -1
- package/dist/client/components/actions/action-button.d.mts +0 -2
- package/dist/client/components/actions/action-button.mjs.map +0 -1
- package/dist/client/components/actions/action-dialog.d.mts +0 -2
- package/dist/client/components/actions/action-dialog.mjs.map +0 -1
- package/dist/client/components/actions/confirmation-dialog.d.mts +0 -2
- package/dist/client/components/actions/confirmation-dialog.mjs.map +0 -1
- package/dist/client/components/actions/header-actions.d.mts +0 -2
- package/dist/client/components/actions/header-actions.mjs.map +0 -1
- package/dist/client/components/actions/index.d.mts +0 -4
- package/dist/client/components/admin-link.d.mts.map +0 -1
- package/dist/client/components/admin-link.mjs.map +0 -1
- package/dist/client/components/auth/auth-guard.d.mts.map +0 -1
- package/dist/client/components/auth/auth-guard.mjs.map +0 -1
- package/dist/client/components/auth/auth-loading.d.mts.map +0 -1
- package/dist/client/components/auth/auth-loading.mjs.map +0 -1
- package/dist/client/components/auth/index.d.mts +0 -2
- package/dist/client/components/blocks/block-canvas.mjs.map +0 -1
- package/dist/client/components/blocks/block-editor-context.mjs.map +0 -1
- package/dist/client/components/blocks/block-editor-layout.mjs.map +0 -1
- package/dist/client/components/blocks/block-editor-provider.mjs.map +0 -1
- package/dist/client/components/blocks/block-fields-renderer.mjs.map +0 -1
- package/dist/client/components/blocks/block-insert-button.mjs.map +0 -1
- package/dist/client/components/blocks/block-item-menu.mjs.map +0 -1
- package/dist/client/components/blocks/block-item.mjs.map +0 -1
- package/dist/client/components/blocks/block-library-sidebar.mjs.map +0 -1
- package/dist/client/components/blocks/block-tree.mjs.map +0 -1
- package/dist/client/components/blocks/block-type-icon.mjs.map +0 -1
- package/dist/client/components/blocks/utils/tree-utils.mjs.map +0 -1
- package/dist/client/components/component-renderer.d.mts.map +0 -1
- package/dist/client/components/component-renderer.mjs.map +0 -1
- package/dist/client/components/error-boundary.mjs.map +0 -1
- package/dist/client/components/fields/array-field.d.mts +0 -44
- package/dist/client/components/fields/array-field.d.mts.map +0 -1
- package/dist/client/components/fields/array-field.mjs.map +0 -1
- package/dist/client/components/fields/asset-preview-field.d.mts +0 -52
- package/dist/client/components/fields/asset-preview-field.d.mts.map +0 -1
- package/dist/client/components/fields/asset-preview-field.mjs.map +0 -1
- package/dist/client/components/fields/blocks-field/blocks-field.d.mts +0 -41
- package/dist/client/components/fields/blocks-field/blocks-field.d.mts.map +0 -1
- package/dist/client/components/fields/blocks-field/blocks-field.mjs.map +0 -1
- package/dist/client/components/fields/blocks-field/index.d.mts +0 -1
- package/dist/client/components/fields/boolean-field.d.mts +0 -30
- package/dist/client/components/fields/boolean-field.d.mts.map +0 -1
- package/dist/client/components/fields/boolean-field.mjs.map +0 -1
- package/dist/client/components/fields/custom-field.d.mts +0 -3
- package/dist/client/components/fields/date-field.d.mts +0 -22
- package/dist/client/components/fields/date-field.d.mts.map +0 -1
- package/dist/client/components/fields/date-field.mjs.map +0 -1
- package/dist/client/components/fields/datetime-field.d.mts +0 -23
- package/dist/client/components/fields/datetime-field.d.mts.map +0 -1
- package/dist/client/components/fields/datetime-field.mjs.map +0 -1
- package/dist/client/components/fields/email-field.d.mts +0 -19
- package/dist/client/components/fields/email-field.d.mts.map +0 -1
- package/dist/client/components/fields/email-field.mjs.map +0 -1
- package/dist/client/components/fields/embedded-collection.d.mts +0 -3
- package/dist/client/components/fields/field-types.d.mts +0 -571
- package/dist/client/components/fields/field-types.d.mts.map +0 -1
- package/dist/client/components/fields/field-utils.d.mts +0 -1
- package/dist/client/components/fields/field-utils.mjs.map +0 -1
- package/dist/client/components/fields/field-wrapper.d.mts +0 -3
- package/dist/client/components/fields/field-wrapper.mjs.map +0 -1
- package/dist/client/components/fields/index.d.mts +0 -33
- package/dist/client/components/fields/json-field.d.mts +0 -84
- package/dist/client/components/fields/json-field.d.mts.map +0 -1
- package/dist/client/components/fields/json-field.mjs.map +0 -1
- package/dist/client/components/fields/locale-badge.d.mts +0 -1
- package/dist/client/components/fields/locale-badge.mjs.map +0 -1
- package/dist/client/components/fields/number-field.d.mts +0 -23
- package/dist/client/components/fields/number-field.d.mts.map +0 -1
- package/dist/client/components/fields/number-field.mjs.map +0 -1
- package/dist/client/components/fields/object-array-field.d.mts +0 -2
- package/dist/client/components/fields/object-array-field.mjs.map +0 -1
- package/dist/client/components/fields/object-field.d.mts +0 -32
- package/dist/client/components/fields/object-field.d.mts.map +0 -1
- package/dist/client/components/fields/object-field.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/cards-display.d.mts +0 -2
- package/dist/client/components/fields/relation/displays/cards-display.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/chips-display.d.mts +0 -2
- package/dist/client/components/fields/relation/displays/chips-display.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/grid-display.d.mts +0 -2
- package/dist/client/components/fields/relation/displays/grid-display.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/index.d.mts +0 -6
- package/dist/client/components/fields/relation/displays/list-display.d.mts +0 -2
- package/dist/client/components/fields/relation/displays/list-display.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/table-display.d.mts +0 -2
- package/dist/client/components/fields/relation/displays/table-display.mjs.map +0 -1
- package/dist/client/components/fields/relation/displays/types.d.mts +0 -22
- package/dist/client/components/fields/relation/displays/types.d.mts.map +0 -1
- package/dist/client/components/fields/relation/displays/types.mjs.map +0 -1
- package/dist/client/components/fields/relation/index.d.mts +0 -3
- package/dist/client/components/fields/relation/relation-items-display.d.mts +0 -5
- package/dist/client/components/fields/relation/relation-items-display.mjs.map +0 -1
- package/dist/client/components/fields/relation-field.d.mts +0 -134
- package/dist/client/components/fields/relation-field.d.mts.map +0 -1
- package/dist/client/components/fields/relation-field.mjs.map +0 -1
- package/dist/client/components/fields/relation-picker.d.mts +0 -4
- package/dist/client/components/fields/relation-picker.mjs.map +0 -1
- package/dist/client/components/fields/relation-select.d.mts +0 -3
- package/dist/client/components/fields/relation-select.mjs.map +0 -1
- package/dist/client/components/fields/reverse-relation-field.d.mts +0 -2
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/extensions.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/index.d.mts +0 -4
- package/dist/client/components/fields/rich-text-editor/index.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/presets.d.mts +0 -11
- package/dist/client/components/fields/rich-text-editor/presets.d.mts.map +0 -1
- package/dist/client/components/fields/rich-text-editor/presets.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/types.d.mts +0 -78
- package/dist/client/components/fields/rich-text-editor/types.d.mts.map +0 -1
- package/dist/client/components/fields/rich-text-editor/types.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/utils.mjs.map +0 -1
- package/dist/client/components/fields/rich-text-editor/variants.d.mts +0 -2
- package/dist/client/components/fields/rich-text-field.d.mts +0 -14
- package/dist/client/components/fields/rich-text-field.d.mts.map +0 -1
- package/dist/client/components/fields/rich-text-field.mjs.map +0 -1
- package/dist/client/components/fields/select-field.d.mts +0 -25
- package/dist/client/components/fields/select-field.d.mts.map +0 -1
- package/dist/client/components/fields/select-field.mjs.map +0 -1
- package/dist/client/components/fields/status-field.d.mts +0 -2
- package/dist/client/components/fields/text-field.d.mts +0 -22
- package/dist/client/components/fields/text-field.d.mts.map +0 -1
- package/dist/client/components/fields/text-field.mjs.map +0 -1
- package/dist/client/components/fields/textarea-field.d.mts +0 -22
- package/dist/client/components/fields/textarea-field.d.mts.map +0 -1
- package/dist/client/components/fields/textarea-field.mjs.map +0 -1
- package/dist/client/components/fields/time-field.d.mts +0 -20
- package/dist/client/components/fields/time-field.d.mts.map +0 -1
- package/dist/client/components/fields/time-field.mjs.map +0 -1
- package/dist/client/components/fields/upload-field.d.mts +0 -97
- package/dist/client/components/fields/upload-field.d.mts.map +0 -1
- package/dist/client/components/fields/upload-field.mjs.map +0 -1
- package/dist/client/components/filter-builder/columns-tab.d.mts +0 -1
- package/dist/client/components/filter-builder/columns-tab.mjs.map +0 -1
- package/dist/client/components/filter-builder/filter-builder-sheet.d.mts +0 -1
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs.map +0 -1
- package/dist/client/components/filter-builder/filters-tab.d.mts +0 -1
- package/dist/client/components/filter-builder/filters-tab.mjs.map +0 -1
- package/dist/client/components/filter-builder/index.d.mts +0 -5
- package/dist/client/components/filter-builder/saved-views-tab.d.mts +0 -1
- package/dist/client/components/filter-builder/saved-views-tab.mjs.map +0 -1
- package/dist/client/components/index.d.mts +0 -80
- package/dist/client/components/locale-switcher.d.mts +0 -2
- package/dist/client/components/locale-switcher.mjs.map +0 -1
- package/dist/client/components/media/media-grid.mjs.map +0 -1
- package/dist/client/components/media/media-picker-dialog.mjs.map +0 -1
- package/dist/client/components/preview/live-preview-mode.mjs.map +0 -1
- package/dist/client/components/preview/preview-pane.mjs.map +0 -1
- package/dist/client/components/primitives/asset-preview.mjs.map +0 -1
- package/dist/client/components/primitives/checkbox-input.mjs.map +0 -1
- package/dist/client/components/primitives/date-input.mjs.map +0 -1
- package/dist/client/components/primitives/dropzone.mjs.map +0 -1
- package/dist/client/components/primitives/number-input.mjs.map +0 -1
- package/dist/client/components/primitives/select-multi.mjs.map +0 -1
- package/dist/client/components/primitives/select-single.mjs.map +0 -1
- package/dist/client/components/primitives/text-input.mjs.map +0 -1
- package/dist/client/components/primitives/textarea-input.mjs.map +0 -1
- package/dist/client/components/primitives/time-input.mjs.map +0 -1
- package/dist/client/components/primitives/toggle-input.mjs.map +0 -1
- package/dist/client/components/primitives/types.d.mts +0 -14
- package/dist/client/components/primitives/types.d.mts.map +0 -1
- package/dist/client/components/primitives/types.mjs.map +0 -1
- package/dist/client/components/sheets/index.d.mts +0 -1
- package/dist/client/components/sheets/resource-sheet.d.mts +0 -1
- package/dist/client/components/sheets/resource-sheet.mjs.map +0 -1
- package/dist/client/components/ui/accordion.d.mts +0 -2
- package/dist/client/components/ui/accordion.mjs.map +0 -1
- package/dist/client/components/ui/alert.mjs.map +0 -1
- package/dist/client/components/ui/avatar.d.mts +0 -3
- package/dist/client/components/ui/badge.d.mts +0 -3
- package/dist/client/components/ui/badge.mjs.map +0 -1
- package/dist/client/components/ui/button.d.mts +0 -3
- package/dist/client/components/ui/button.mjs.map +0 -1
- package/dist/client/components/ui/card.d.mts +0 -2
- package/dist/client/components/ui/card.mjs.map +0 -1
- package/dist/client/components/ui/checkbox.d.mts +0 -2
- package/dist/client/components/ui/checkbox.mjs.map +0 -1
- package/dist/client/components/ui/combobox.d.mts +0 -3
- package/dist/client/components/ui/command.mjs.map +0 -1
- package/dist/client/components/ui/dialog.d.mts +0 -3
- package/dist/client/components/ui/dialog.mjs.map +0 -1
- package/dist/client/components/ui/drawer.mjs.map +0 -1
- package/dist/client/components/ui/dropdown-menu.d.mts +0 -3
- package/dist/client/components/ui/dropdown-menu.mjs.map +0 -1
- package/dist/client/components/ui/empty-state.mjs.map +0 -1
- package/dist/client/components/ui/field.d.mts +0 -3
- package/dist/client/components/ui/field.mjs.map +0 -1
- package/dist/client/components/ui/input-group.d.mts +0 -4
- package/dist/client/components/ui/input-group.mjs.map +0 -1
- package/dist/client/components/ui/input.d.mts +0 -2
- package/dist/client/components/ui/input.mjs.map +0 -1
- package/dist/client/components/ui/kbd.mjs.map +0 -1
- package/dist/client/components/ui/label.d.mts +0 -2
- package/dist/client/components/ui/label.mjs.map +0 -1
- package/dist/client/components/ui/popover.d.mts +0 -3
- package/dist/client/components/ui/popover.mjs.map +0 -1
- package/dist/client/components/ui/responsive-dialog.mjs.map +0 -1
- package/dist/client/components/ui/scroll-area.d.mts +0 -2
- package/dist/client/components/ui/search-input.mjs.map +0 -1
- package/dist/client/components/ui/select.d.mts +0 -3
- package/dist/client/components/ui/select.mjs.map +0 -1
- package/dist/client/components/ui/separator.d.mts +0 -2
- package/dist/client/components/ui/separator.mjs.map +0 -1
- package/dist/client/components/ui/sheet.d.mts +0 -3
- package/dist/client/components/ui/sheet.mjs.map +0 -1
- package/dist/client/components/ui/sidebar.d.mts +0 -8
- package/dist/client/components/ui/sidebar.mjs.map +0 -1
- package/dist/client/components/ui/skeleton.d.mts +0 -1
- package/dist/client/components/ui/skeleton.mjs.map +0 -1
- package/dist/client/components/ui/sonner.d.mts.map +0 -1
- package/dist/client/components/ui/sonner.mjs.map +0 -1
- package/dist/client/components/ui/spinner.d.mts +0 -1
- package/dist/client/components/ui/spinner.mjs.map +0 -1
- package/dist/client/components/ui/switch.d.mts +0 -2
- package/dist/client/components/ui/switch.mjs.map +0 -1
- package/dist/client/components/ui/table.d.mts +0 -2
- package/dist/client/components/ui/table.mjs.map +0 -1
- package/dist/client/components/ui/tabs.d.mts +0 -3
- package/dist/client/components/ui/tabs.mjs.map +0 -1
- package/dist/client/components/ui/textarea.d.mts +0 -2
- package/dist/client/components/ui/textarea.mjs.map +0 -1
- package/dist/client/components/ui/toolbar.mjs.map +0 -1
- package/dist/client/components/ui/tooltip.d.mts +0 -2
- package/dist/client/components/ui/tooltip.mjs.map +0 -1
- package/dist/client/components/widgets/chart-widget.d.mts +0 -57
- package/dist/client/components/widgets/chart-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/chart-widget.mjs.map +0 -1
- package/dist/client/components/widgets/progress-widget.d.mts +0 -41
- package/dist/client/components/widgets/progress-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/progress-widget.mjs.map +0 -1
- package/dist/client/components/widgets/quick-actions-widget.d.mts +0 -29
- package/dist/client/components/widgets/quick-actions-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/quick-actions-widget.mjs.map +0 -1
- package/dist/client/components/widgets/recent-items-widget.d.mts +0 -51
- package/dist/client/components/widgets/recent-items-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/recent-items-widget.mjs.map +0 -1
- package/dist/client/components/widgets/stats-widget.d.mts +0 -55
- package/dist/client/components/widgets/stats-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/stats-widget.mjs.map +0 -1
- package/dist/client/components/widgets/table-widget.d.mts +0 -31
- package/dist/client/components/widgets/table-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/table-widget.mjs.map +0 -1
- package/dist/client/components/widgets/timeline-widget.d.mts +0 -51
- package/dist/client/components/widgets/timeline-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/timeline-widget.mjs.map +0 -1
- package/dist/client/components/widgets/value-widget.d.mts +0 -39
- package/dist/client/components/widgets/value-widget.d.mts.map +0 -1
- package/dist/client/components/widgets/value-widget.mjs.map +0 -1
- package/dist/client/components/widgets/widget-skeletons.mjs.map +0 -1
- package/dist/client/context/focus-context.d.mts.map +0 -1
- package/dist/client/context/focus-context.mjs.map +0 -1
- package/dist/client/contexts/breadcrumb-context.mjs.map +0 -1
- package/dist/client/hooks/typed-hooks.d.mts.map +0 -1
- package/dist/client/hooks/typed-hooks.mjs.map +0 -1
- package/dist/client/hooks/use-action.mjs.map +0 -1
- package/dist/client/hooks/use-admin-config.mjs.map +0 -1
- package/dist/client/hooks/use-admin-preferences.mjs.map +0 -1
- package/dist/client/hooks/use-admin-routes.mjs.map +0 -1
- package/dist/client/hooks/use-auth.d.mts.map +0 -1
- package/dist/client/hooks/use-auth.mjs.map +0 -1
- package/dist/client/hooks/use-collection-fields.mjs.map +0 -1
- package/dist/client/hooks/use-collection-meta.mjs.map +0 -1
- package/dist/client/hooks/use-collection-schema.mjs.map +0 -1
- package/dist/client/hooks/use-collection-validation.mjs.map +0 -1
- package/dist/client/hooks/use-collection.d.mts.map +0 -1
- package/dist/client/hooks/use-collection.mjs.map +0 -1
- package/dist/client/hooks/use-current-user.d.mts.map +0 -1
- package/dist/client/hooks/use-current-user.mjs.map +0 -1
- package/dist/client/hooks/use-field-hooks.mjs.map +0 -1
- package/dist/client/hooks/use-field-options.d.mts.map +0 -1
- package/dist/client/hooks/use-field-options.mjs.map +0 -1
- package/dist/client/hooks/use-global-fields.mjs.map +0 -1
- package/dist/client/hooks/use-global-meta.mjs.map +0 -1
- package/dist/client/hooks/use-global-schema.mjs.map +0 -1
- package/dist/client/hooks/use-global.d.mts.map +0 -1
- package/dist/client/hooks/use-global.mjs.map +0 -1
- package/dist/client/hooks/use-locks.mjs.map +0 -1
- package/dist/client/hooks/use-media-query.d.mts.map +0 -1
- package/dist/client/hooks/use-media-query.mjs.map +0 -1
- package/dist/client/hooks/use-prefill-params.mjs.map +0 -1
- package/dist/client/hooks/use-questpie-query-options.mjs.map +0 -1
- package/dist/client/hooks/use-reactive-fields.d.mts.map +0 -1
- package/dist/client/hooks/use-reactive-fields.mjs.map +0 -1
- package/dist/client/hooks/use-realtime-highlight.mjs.map +0 -1
- package/dist/client/hooks/use-saved-views.mjs.map +0 -1
- package/dist/client/hooks/use-search.mjs.map +0 -1
- package/dist/client/hooks/use-server-validation.mjs.map +0 -1
- package/dist/client/hooks/use-server-widget-data.d.mts.map +0 -1
- package/dist/client/hooks/use-server-widget-data.mjs.map +0 -1
- package/dist/client/hooks/use-setup-status.d.mts.map +0 -1
- package/dist/client/hooks/use-setup-status.mjs.map +0 -1
- package/dist/client/hooks/use-upload-collection.mjs.map +0 -1
- package/dist/client/hooks/use-upload.d.mts +0 -23
- package/dist/client/hooks/use-upload.d.mts.map +0 -1
- package/dist/client/hooks/use-upload.mjs.map +0 -1
- package/dist/client/hooks/use-validation-error-map.mjs.map +0 -1
- package/dist/client/hooks/use-view-state.mjs.map +0 -1
- package/dist/client/i18n/hooks.mjs.map +0 -1
- package/dist/client/i18n/intl-cache.mjs.map +0 -1
- package/dist/client/i18n/messages.mjs.map +0 -1
- package/dist/client/i18n/simple.d.mts.map +0 -1
- package/dist/client/i18n/simple.mjs.map +0 -1
- package/dist/client/i18n/types.d.mts.map +0 -1
- package/dist/client/lib/utils.d.mts +0 -1
- package/dist/client/lib/utils.mjs.map +0 -1
- package/dist/client/preview/block-scope-context.d.mts.map +0 -1
- package/dist/client/preview/block-scope-context.mjs.map +0 -1
- package/dist/client/preview/preview-banner.d.mts.map +0 -1
- package/dist/client/preview/preview-banner.mjs.map +0 -1
- package/dist/client/preview/preview-field.d.mts.map +0 -1
- package/dist/client/preview/preview-field.mjs.map +0 -1
- package/dist/client/preview/types.d.mts.map +0 -1
- package/dist/client/preview/types.mjs.map +0 -1
- package/dist/client/preview/use-collection-preview.d.mts.map +0 -1
- package/dist/client/preview/use-collection-preview.mjs.map +0 -1
- package/dist/client/runtime/content-locales-provider.mjs.map +0 -1
- package/dist/client/runtime/locale-scope.mjs.map +0 -1
- package/dist/client/runtime/provider.d.mts.map +0 -1
- package/dist/client/runtime/provider.mjs.map +0 -1
- package/dist/client/runtime/routes.d.mts.map +0 -1
- package/dist/client/runtime/routes.mjs.map +0 -1
- package/dist/client/runtime/translations-provider.d.mts +0 -2
- package/dist/client/runtime/translations-provider.mjs.map +0 -1
- package/dist/client/scope/picker.d.mts.map +0 -1
- package/dist/client/scope/picker.mjs.map +0 -1
- package/dist/client/scope/provider.d.mts.map +0 -1
- package/dist/client/scope/provider.mjs.map +0 -1
- package/dist/client/scope/types.d.mts.map +0 -1
- package/dist/client/utils/auto-expand-fields.mjs.map +0 -1
- package/dist/client/utils/build-field-definitions-from-schema.mjs.map +0 -1
- package/dist/client/utils/detect-relations.mjs.map +0 -1
- package/dist/client/utils/locale-to-flag.d.mts.map +0 -1
- package/dist/client/utils/locale-to-flag.mjs.map +0 -1
- package/dist/client/utils/routes.mjs.map +0 -1
- package/dist/client/views/auth/accept-invite-form.d.mts.map +0 -1
- package/dist/client/views/auth/accept-invite-form.mjs.map +0 -1
- package/dist/client/views/auth/auth-layout.d.mts.map +0 -1
- package/dist/client/views/auth/auth-layout.mjs.map +0 -1
- package/dist/client/views/auth/forgot-password-form.d.mts.map +0 -1
- package/dist/client/views/auth/forgot-password-form.mjs.map +0 -1
- package/dist/client/views/auth/index.d.mts +0 -7
- package/dist/client/views/auth/invite-form.d.mts +0 -1
- package/dist/client/views/auth/invite-form.mjs.map +0 -1
- package/dist/client/views/auth/login-form.d.mts.map +0 -1
- package/dist/client/views/auth/login-form.mjs.map +0 -1
- package/dist/client/views/auth/reset-password-form.d.mts.map +0 -1
- package/dist/client/views/auth/reset-password-form.mjs.map +0 -1
- package/dist/client/views/auth/setup-form.d.mts.map +0 -1
- package/dist/client/views/auth/setup-form.mjs.map +0 -1
- package/dist/client/views/collection/auto-form-fields.d.mts +0 -4
- package/dist/client/views/collection/auto-form-fields.mjs.map +0 -1
- package/dist/client/views/collection/bulk-action-toolbar.mjs.map +0 -1
- package/dist/client/views/collection/cells/complex-cells.d.mts +0 -46
- package/dist/client/views/collection/cells/complex-cells.d.mts.map +0 -1
- package/dist/client/views/collection/cells/complex-cells.mjs.map +0 -1
- package/dist/client/views/collection/cells/index.d.mts +0 -7
- package/dist/client/views/collection/cells/primitive-cells.d.mts +0 -76
- package/dist/client/views/collection/cells/primitive-cells.d.mts.map +0 -1
- package/dist/client/views/collection/cells/primitive-cells.mjs.map +0 -1
- package/dist/client/views/collection/cells/relation-cells.d.mts +0 -21
- package/dist/client/views/collection/cells/relation-cells.d.mts.map +0 -1
- package/dist/client/views/collection/cells/relation-cells.mjs.map +0 -1
- package/dist/client/views/collection/cells/shared/asset-thumbnail.d.mts +0 -1
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs.map +0 -1
- package/dist/client/views/collection/cells/shared/cell-helpers.d.mts +0 -2
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs.map +0 -1
- package/dist/client/views/collection/cells/shared/relation-chip.d.mts +0 -1
- package/dist/client/views/collection/cells/shared/relation-chip.mjs.map +0 -1
- package/dist/client/views/collection/cells/upload-cells.d.mts +0 -25
- package/dist/client/views/collection/cells/upload-cells.d.mts.map +0 -1
- package/dist/client/views/collection/cells/upload-cells.mjs.map +0 -1
- package/dist/client/views/collection/columns/build-columns.d.mts +0 -2
- package/dist/client/views/collection/columns/build-columns.mjs.map +0 -1
- package/dist/client/views/collection/columns/column-defaults.d.mts +0 -2
- package/dist/client/views/collection/columns/column-defaults.mjs.map +0 -1
- package/dist/client/views/collection/columns/index.d.mts +0 -3
- package/dist/client/views/collection/columns/types.d.mts +0 -2
- package/dist/client/views/collection/field-context.mjs.map +0 -1
- package/dist/client/views/collection/field-renderer.mjs.map +0 -1
- package/dist/client/views/collection/form-view.d.mts +0 -112
- package/dist/client/views/collection/form-view.d.mts.map +0 -1
- package/dist/client/views/collection/form-view.mjs.map +0 -1
- package/dist/client/views/collection/index.d.mts +0 -9
- package/dist/client/views/collection/table-view.d.mts +0 -102
- package/dist/client/views/collection/table-view.d.mts.map +0 -1
- package/dist/client/views/collection/table-view.mjs.map +0 -1
- package/dist/client/views/collection/view-skeletons.mjs.map +0 -1
- package/dist/client/views/common/global-search.d.mts +0 -1
- package/dist/client/views/common/global-search.mjs.map +0 -1
- package/dist/client/views/common/index.d.mts +0 -1
- package/dist/client/views/dashboard/dashboard-grid.mjs.map +0 -1
- package/dist/client/views/dashboard/dashboard-widget.mjs.map +0 -1
- package/dist/client/views/dashboard/widget-card.mjs.map +0 -1
- package/dist/client/views/globals/global-form-view.d.mts +0 -74
- package/dist/client/views/globals/global-form-view.d.mts.map +0 -1
- package/dist/client/views/globals/global-form-view.mjs.map +0 -1
- package/dist/client/views/index.d.mts +0 -28
- package/dist/client/views/layout/admin-layout-provider.d.mts.map +0 -1
- package/dist/client/views/layout/admin-layout-provider.mjs.map +0 -1
- package/dist/client/views/layout/admin-layout.d.mts.map +0 -1
- package/dist/client/views/layout/admin-layout.mjs.map +0 -1
- package/dist/client/views/layout/admin-root.d.mts +0 -7
- package/dist/client/views/layout/admin-router.d.mts.map +0 -1
- package/dist/client/views/layout/admin-router.mjs.map +0 -1
- package/dist/client/views/layout/admin-sidebar.d.mts.map +0 -1
- package/dist/client/views/layout/admin-sidebar.mjs.map +0 -1
- package/dist/client/views/layout/admin-topbar.mjs.map +0 -1
- package/dist/client/views/layout/index.d.mts +0 -5
- package/dist/client/views/pages/accept-invite-page.d.mts.map +0 -1
- package/dist/client/views/pages/accept-invite-page.mjs.map +0 -1
- package/dist/client/views/pages/dashboard-page.d.mts.map +0 -1
- package/dist/client/views/pages/dashboard-page.mjs.map +0 -1
- package/dist/client/views/pages/forgot-password-page.d.mts.map +0 -1
- package/dist/client/views/pages/forgot-password-page.mjs.map +0 -1
- package/dist/client/views/pages/index.d.mts +0 -7
- package/dist/client/views/pages/invite-page.d.mts.map +0 -1
- package/dist/client/views/pages/invite-page.mjs.map +0 -1
- package/dist/client/views/pages/login-page.d.mts.map +0 -1
- package/dist/client/views/pages/login-page.mjs.map +0 -1
- package/dist/client/views/pages/reset-password-page.d.mts.map +0 -1
- package/dist/client/views/pages/reset-password-page.mjs.map +0 -1
- package/dist/client/views/pages/setup-page.d.mts.map +0 -1
- package/dist/client/views/pages/setup-page.mjs.map +0 -1
- package/dist/client.d.mts.map +0 -1
- package/dist/components/rich-text/rich-text-renderer.d.mts.map +0 -1
- package/dist/components/rich-text/rich-text-renderer.mjs.map +0 -1
- package/dist/server/adapters/nextjs.d.mts.map +0 -1
- package/dist/server/adapters/nextjs.mjs.map +0 -1
- package/dist/server/adapters/tanstack.d.mts.map +0 -1
- package/dist/server/adapters/tanstack.mjs.map +0 -1
- package/dist/server/augmentation.d.mts.map +0 -1
- package/dist/server/auth-helpers.d.mts.map +0 -1
- package/dist/server/auth-helpers.mjs.map +0 -1
- package/dist/server/block/block-builder.d.mts.map +0 -1
- package/dist/server/block/block-builder.mjs.map +0 -1
- package/dist/server/block/introspection.d.mts.map +0 -1
- package/dist/server/block/introspection.mjs.map +0 -1
- package/dist/server/block/prefetch.d.mts.map +0 -1
- package/dist/server/block/prefetch.mjs.map +0 -1
- package/dist/server/fields/blocks.d.mts.map +0 -1
- package/dist/server/fields/blocks.mjs.map +0 -1
- package/dist/server/fields/index.d.mts.map +0 -1
- package/dist/server/fields/index.mjs.map +0 -1
- package/dist/server/fields/rich-text.d.mts.map +0 -1
- package/dist/server/fields/rich-text.mjs.map +0 -1
- package/dist/server/i18n/index.d.mts +0 -16
- package/dist/server/i18n/index.d.mts.map +0 -1
- package/dist/server/i18n/index.mjs.map +0 -1
- package/dist/server/i18n/messages/cs.mjs.map +0 -1
- package/dist/server/i18n/messages/de.mjs.map +0 -1
- package/dist/server/i18n/messages/en.mjs.map +0 -1
- package/dist/server/i18n/messages/es.mjs.map +0 -1
- package/dist/server/i18n/messages/fr.mjs.map +0 -1
- package/dist/server/i18n/messages/index.mjs.map +0 -1
- package/dist/server/i18n/messages/pl.mjs.map +0 -1
- package/dist/server/i18n/messages/pt.mjs.map +0 -1
- package/dist/server/i18n/messages/sk.mjs.map +0 -1
- package/dist/server/index.d.mts +0 -20
- package/dist/server/modules/admin/functions/admin-config.mjs +0 -348
- package/dist/server/modules/admin/functions/admin-config.mjs.map +0 -1
- package/dist/server/modules/admin/functions/execute-action.d.mts.map +0 -1
- package/dist/server/modules/admin/functions/execute-action.mjs.map +0 -1
- package/dist/server/modules/admin/functions/locales.mjs +0 -80
- package/dist/server/modules/admin/functions/locales.mjs.map +0 -1
- package/dist/server/modules/admin/functions/preview.d.mts.map +0 -1
- package/dist/server/modules/admin/functions/preview.mjs.map +0 -1
- package/dist/server/modules/admin/functions/reactive.d.mts.map +0 -1
- package/dist/server/modules/admin/functions/reactive.mjs.map +0 -1
- package/dist/server/modules/admin/functions/setup.d.mts.map +0 -1
- package/dist/server/modules/admin/functions/setup.mjs +0 -131
- package/dist/server/modules/admin/functions/setup.mjs.map +0 -1
- package/dist/server/modules/admin/functions/translations.mjs +0 -125
- package/dist/server/modules/admin/functions/translations.mjs.map +0 -1
- package/dist/server/modules/admin/functions/widget-data.d.mts +0 -33
- package/dist/server/modules/admin/functions/widget-data.d.mts.map +0 -1
- package/dist/server/modules/admin/functions/widget-data.mjs +0 -70
- package/dist/server/modules/admin/functions/widget-data.mjs.map +0 -1
- package/dist/server/modules/admin/index.d.mts.map +0 -1
- package/dist/server/modules/admin/index.mjs.map +0 -1
- package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.d.mts +0 -3
- package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.mjs.map +0 -1
- package/dist/server/modules/admin-preferences/collections/locks.collection.d.mts +0 -3
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs.map +0 -1
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts +0 -1490
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts.map +0 -1
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs +0 -57
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs.map +0 -1
- package/dist/server/patch.d.mts +0 -100
- package/dist/server/patch.d.mts.map +0 -1
- package/dist/server/patch.mjs +0 -1062
- package/dist/server/patch.mjs.map +0 -1
- package/dist/shared/preview-utils.d.mts.map +0 -1
- package/dist/shared/preview-utils.mjs.map +0 -1
- package/dist/shared/types/saved-views.types.d.mts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patch.mjs","names":["builtBlocks: Record<string, AnyBlockDefinition>","blockDef: AnyBlockDefinition","prefetchFn: BlockPrefetchFn | undefined","extensionState: Record<string, any>","adminState: Record<string, any>","fieldRegistry: Record<string, (config?: any) => any>","config"],"sources":["../../src/server/patch.ts"],"sourcesContent":["/**\n * Runtime Monkey Patching for Admin Builder Methods\n *\n * This module patches QuestpieBuilder, CollectionBuilder, and GlobalBuilder\n * with admin-specific methods when adminModule is used.\n *\n * The patches add these methods:\n * - QuestpieBuilder: listView(), editView(), component(), listViews(), editViews(), components()\n * - CollectionBuilder: admin(), list(), form(), preview()\n * - GlobalBuilder: admin(), form()\n *\n * Type augmentation is handled by ./augmentation.ts which extends the builder types.\n *\n * @internal This module is automatically imported by adminModule.\n */\n\nimport {\n\tCollectionBuilder,\n\tcreateFieldBuilder,\n\tcreateFieldDefinition,\n\tGlobalBuilder,\n\tQuestpieBuilder,\n} from \"questpie\";\nimport type {\n\tActionsConfigContext,\n\tAdminCollectionConfig,\n\tAdminGlobalConfig,\n\tAdminLocaleConfig,\n\tBuiltinActionType,\n\tComponentDefinition,\n\tDashboardActionFactory,\n\tDashboardConfigContext,\n\tEditViewDefinition,\n\tFormViewConfig,\n\tListViewConfig,\n\tListViewDefinition,\n\tPreviewConfig,\n\tServerActionDefinition,\n\tServerActionsConfig,\n\tServerDashboardAction,\n\tServerDashboardConfig,\n\tServerSidebarConfig,\n\tSidebarConfigContext,\n} from \"./augmentation.js\";\nimport {\n\ttype AnyBlockBuilder,\n\ttype AnyBlockDefinition,\n\tBlockBuilder,\n\ttype BlockPrefetchContext,\n\ttype BlockPrefetchFn,\n} from \"./block/block-builder.js\";\nimport { createBlocksPrefetchHook } from \"./block/prefetch.js\";\n\n/**\n * Input shape for `.blocks()` registration.\n * Supports two shapes:\n * - `AnyBlockBuilder` - Server block builder (defines fields, metadata, optional prefetch)\n * - `{ block: AnyBlockDefinition, prefetch?: BlockPrefetchFn }` - With manual server prefetch override\n */\ntype BlockInput =\n\t| AnyBlockBuilder\n\t| { block: AnyBlockDefinition; prefetch?: BlockPrefetchFn };\n\n// Track if patches have been applied to avoid double-patching\nlet patchesApplied = false;\n\n// ============================================================================\n// Proxy Factories\n// ============================================================================\n\n/**\n * Resolve registry source state.\n *\n * - Collection/Global builders: registry lives on `state[\"~questpieApp\"].state`\n * - QuestpieBuilder: registry lives on `state`\n */\nfunction getRegistrySourceState(\n\tbuilderState: Record<string, unknown>,\n): Record<string, unknown> {\n\tconst questpieApp = builderState[\"~questpieApp\"] as\n\t\t| { state?: Record<string, unknown> }\n\t\t| undefined;\n\n\tif (questpieApp?.state && typeof questpieApp.state === \"object\") {\n\t\treturn questpieApp.state;\n\t}\n\n\treturn builderState;\n}\n\n/**\n * Resolve registered component names from builder state.\n */\nfunction getRegisteredComponentNames(\n\tbuilderState: Record<string, unknown>,\n): string[] {\n\tconst sourceState = getRegistrySourceState(builderState);\n\tconst components = sourceState.components;\n\n\tif (!components || typeof components !== \"object\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(components as Record<string, unknown>);\n}\n\n/**\n * Normalize component props into a serializable object.\n *\n * Backward compatibility:\n * - `c.icon(\"ph:users\")` => `{ name: \"ph:users\" }`\n */\nfunction normalizeComponentProps(\n\tcomponentType: string,\n\tprops: unknown,\n): Record<string, unknown> {\n\tif (componentType === \"icon\" && typeof props === \"string\") {\n\t\treturn { name: props };\n\t}\n\n\tif (props === null || props === undefined) {\n\t\treturn {};\n\t}\n\n\tif (typeof props === \"object\") {\n\t\treturn props as Record<string, unknown>;\n\t}\n\n\treturn { value: props };\n}\n\n/**\n * Create a component proxy for registered component references.\n * Used in admin config functions (`.admin()`, `.actions()`, `.dashboard()`, `.sidebar()`).\n *\n * @example\n * ```ts\n * .admin(({ c }) => ({\n * icon: c.icon(\"ph:users\"),\n * badge: c.badge({ text: \"New\", color: \"green\" }),\n * }))\n * ```\n */\nfunction createComponentProxy(builderState: Record<string, unknown>) {\n\tconst componentNames = getRegisteredComponentNames(builderState);\n\tconst registeredComponentSet = new Set(componentNames);\n\n\treturn new Proxy({} as Record<string, (props?: unknown) => unknown>, {\n\t\tget: (_target, prop: string | symbol) => {\n\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (prop === \"then\") {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (registeredComponentSet.size === 0) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No components registered. Register components via .components() ` +\n\t\t\t\t\t\t`or use q.use(adminModule) defaults.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (!registeredComponentSet.has(prop)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Unknown component \"${prop}\". Register it via .components(). ` +\n\t\t\t\t\t\t`Available components: ${[...registeredComponentSet].sort().join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn (props?: unknown) => ({\n\t\t\t\ttype: prop,\n\t\t\t\tprops: normalizeComponentProps(prop, props),\n\t\t\t});\n\t\t},\n\t\thas: (_target, prop: string | symbol) => {\n\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn registeredComponentSet.has(prop);\n\t\t},\n\t\townKeys: () => [...registeredComponentSet],\n\t\tgetOwnPropertyDescriptor: (_target, prop: string | symbol) => {\n\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (!registeredComponentSet.has(prop)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\twritable: false,\n\t\t\t\tvalue: (props?: unknown) => ({\n\t\t\t\t\ttype: prop,\n\t\t\t\t\tprops: normalizeComponentProps(prop, props),\n\t\t\t\t}),\n\t\t\t};\n\t\t},\n\t});\n}\n\n/**\n * Create a field proxy for referencing collection fields.\n * Returns field names as strings for config objects.\n *\n * @example\n * ```ts\n * .list(({ f }) => ({\n * columns: [f.title, f.author, f.createdAt],\n * }))\n * ```\n */\nfunction createFieldProxy<TFields extends Record<string, any>>(\n\tfieldNames: string[],\n): TFields {\n\treturn new Proxy({} as TFields, {\n\t\tget: (_target, prop: string) => prop,\n\t\thas: (_target, prop: string) => fieldNames.includes(prop),\n\t\townKeys: () => fieldNames,\n\t\tgetOwnPropertyDescriptor: (_target, prop: string) => {\n\t\t\tif (fieldNames.includes(prop)) {\n\t\t\t\treturn { configurable: true, enumerable: true, value: prop };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t});\n}\n\n/**\n * Create a view proxy for defining view configurations.\n *\n * If the builder is bound to a Questpie app with registered views\n * (`.listViews()` / `.editViews()`), the proxy only allows those names.\n * If no registry is available (standalone builders), any view name is allowed.\n *\n * @example\n * ```ts\n * .list(({ v }) => v.table({\n * columns: [...],\n * defaultSort: { field: \"createdAt\", direction: \"desc\" },\n * }))\n * ```\n */\nfunction createViewProxy(\n\tkind: \"list\" | \"edit\",\n\tregisteredViews: string[] = [],\n) {\n\tconst registeredViewSet = new Set(registeredViews);\n\tconst hasRegistry = registeredViewSet.size > 0;\n\n\treturn new Proxy(\n\t\t{} as Record<string, (config: Record<string, unknown>) => unknown>,\n\t\t{\n\t\t\tget: (_target, prop: string | symbol) => {\n\t\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (prop === \"then\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tconst registerMethod = kind === \"list\" ? \"listViews\" : \"editViews\";\n\n\t\t\t\tif (!hasRegistry) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`No ${kind} views registered. Register them via .${registerMethod}() ` +\n\t\t\t\t\t\t\t`or use q.use(adminModule) defaults.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!registeredViewSet.has(prop)) {\n\t\t\t\t\tconst available = [...registeredViewSet].sort().join(\", \");\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Unknown ${kind} view \"${prop}\". Register it via .${registerMethod}(). ` +\n\t\t\t\t\t\t\t`Available ${kind} views: ${available || \"(none)\"}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn (config: Record<string, unknown> = {}) => ({\n\t\t\t\t\tview: prop,\n\t\t\t\t\t...config,\n\t\t\t\t});\n\t\t\t},\n\t\t\thas: (_target, prop: string | symbol) => {\n\t\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn hasRegistry && registeredViewSet.has(prop);\n\t\t\t},\n\t\t\townKeys: () => (hasRegistry ? [...registeredViewSet] : []),\n\t\t\tgetOwnPropertyDescriptor: (_target, prop: string | symbol) => {\n\t\t\t\tif (typeof prop !== \"string\") {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (hasRegistry && !registeredViewSet.has(prop)) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\tenumerable: hasRegistry,\n\t\t\t\t\twritable: false,\n\t\t\t\t\tvalue: (config: Record<string, unknown> = {}) => ({\n\t\t\t\t\t\tview: prop,\n\t\t\t\t\t\t...config,\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t},\n\t\t},\n\t);\n}\n\n/**\n * Resolve registered view names from a builder's parent Questpie app state.\n */\nfunction getRegisteredViewNames(\n\tbuilderState: Record<string, unknown>,\n\tkind: \"list\" | \"edit\",\n): string[] {\n\tconst sourceState = getRegistrySourceState(builderState);\n\tconst key = kind === \"list\" ? \"listViews\" : \"editViews\";\n\tconst views = sourceState[key];\n\n\tif (!views || typeof views !== \"object\") {\n\t\treturn [];\n\t}\n\n\treturn Object.keys(views as Record<string, unknown>);\n}\n\n/**\n * Validate a selected view name against registered view names.\n */\nfunction ensureRegisteredView(\n\tkind: \"list\" | \"edit\",\n\tviewName: unknown,\n\tregisteredViews: string[],\n): void {\n\tif (registeredViews.length === 0 || typeof viewName !== \"string\") {\n\t\treturn;\n\t}\n\n\tif (registeredViews.includes(viewName)) {\n\t\treturn;\n\t}\n\n\tconst registerMethod = kind === \"list\" ? \"listViews\" : \"editViews\";\n\tthrow new Error(\n\t\t`Unknown ${kind} view \"${viewName}\". Register it via .${registerMethod}(). ` +\n\t\t\t`Available ${kind} views: ${registeredViews.sort().join(\", \")}`,\n\t);\n}\n\n/**\n * Create an action proxy for referencing built-in and custom actions.\n *\n * @example\n * ```ts\n * .list(({ a }) => ({\n * actions: {\n * header: { primary: [a.create] },\n * bulk: [a.delete, a.export],\n * },\n * }))\n * ```\n */\nfunction createActionProxy() {\n\treturn {\n\t\t// Built-in actions\n\t\tcreate: \"create\",\n\t\tsave: \"save\",\n\t\tdelete: \"delete\",\n\t\tdeleteMany: \"deleteMany\",\n\t\tduplicate: \"duplicate\",\n\t\texport: \"export\",\n\n\t\t/**\n\t\t * Reference a custom action by name\n\t\t */\n\t\tcustom: (name: string, config?: unknown) => ({ type: name, config }),\n\t};\n}\n\n/**\n * Create action helpers for dashboard header actions.\n */\nfunction createDashboardActionProxy() {\n\tconst toCollectionCreatePath = (collection: string) =>\n\t\t`/admin/collections/${collection}/create`;\n\tconst toGlobalPath = (global: string) => `/admin/globals/${global}`;\n\n\treturn {\n\t\taction: (config: ServerDashboardAction) => config,\n\t\tlink: (config: ServerDashboardAction) => config,\n\t\tcreate: ({\n\t\t\tcollection,\n\t\t\t...config\n\t\t}: Omit<ServerDashboardAction, \"href\"> & { collection: string }) => ({\n\t\t\t...config,\n\t\t\thref: toCollectionCreatePath(collection),\n\t\t}),\n\t\tglobal: ({\n\t\t\tglobal,\n\t\t\t...config\n\t\t}: Omit<ServerDashboardAction, \"href\"> & { global: string }) => ({\n\t\t\t...config,\n\t\t\thref: toGlobalPath(global),\n\t\t}),\n\t} satisfies DashboardActionFactory;\n}\n\n/**\n * Create an actions config context for the .actions() method.\n * Provides builders for both built-in and custom actions.\n *\n * @example\n * ```ts\n * .actions(({ a, c, f }) => ({\n * builtin: [a.create(), a.delete(), a.deleteMany()],\n * custom: [\n * a.action({\n * id: \"send-email\",\n * label: { en: \"Send Email\" },\n * icon: c.icon(\"ph:envelope\"),\n * form: {\n * title: { en: \"Send Email\" },\n * fields: {\n * subject: f.text({ label: { en: \"Subject\" }, required: true }),\n * message: f.textarea({ label: { en: \"Message\" } }),\n * },\n * },\n * handler: async ({ data }) => {\n * return { type: \"success\", toast: { message: \"Email sent!\" } };\n * },\n * }),\n * ],\n * }))\n * ```\n */\nfunction createActionsConfigContext<\n\tTFields extends Record<string, unknown> = Record<string, unknown>,\n>(\n\tbuilderState: Record<string, unknown>,\n\tfieldRegistry: Record<string, (config?: any) => any>,\n): ActionsConfigContext<TFields> {\n\t// Create field proxy that uses the field registry\n\tconst fieldProxy = new Proxy(\n\t\t{} as Record<string, (config?: Record<string, unknown>) => any>,\n\t\t{\n\t\t\tget: (_target, prop: string) => {\n\t\t\t\tconst factory = fieldRegistry[prop];\n\t\t\t\tif (!factory) {\n\t\t\t\t\tconst available = Object.keys(fieldRegistry).sort();\n\t\t\t\t\tif (available.length === 0) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`No field types registered for action form fields. ` +\n\t\t\t\t\t\t\t\t`Register fields on the Questpie builder before using .actions().`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Unknown field type: \"${prop}\". ` +\n\t\t\t\t\t\t\t`Available types: ${available.join(\", \")}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (config?: Record<string, unknown>) => factory(config);\n\t\t\t},\n\t\t},\n\t);\n\n\treturn {\n\t\ta: {\n\t\t\tcreate: () => \"create\" as BuiltinActionType,\n\t\t\tsave: () => \"save\" as BuiltinActionType,\n\t\t\tdelete: () => \"delete\" as BuiltinActionType,\n\t\t\tdeleteMany: () => \"deleteMany\" as BuiltinActionType,\n\t\t\tduplicate: () => \"duplicate\" as BuiltinActionType,\n\t\t\taction: <TData = Record<string, unknown>>(\n\t\t\t\tdef: Omit<ServerActionDefinition<TData>, \"scope\"> & {\n\t\t\t\t\tscope?: \"single\" | \"row\";\n\t\t\t\t},\n\t\t\t) =>\n\t\t\t\t({\n\t\t\t\t\t...def,\n\t\t\t\t\tscope: def.scope ?? \"single\",\n\t\t\t\t}) as ServerActionDefinition<TData>,\n\t\t\tbulkAction: <TData = Record<string, unknown>>(\n\t\t\t\tdef: Omit<ServerActionDefinition<TData>, \"scope\">,\n\t\t\t) =>\n\t\t\t\t({\n\t\t\t\t\t...def,\n\t\t\t\t\tscope: \"bulk\",\n\t\t\t\t}) as ServerActionDefinition<TData>,\n\t\t\theaderAction: <TData = Record<string, unknown>>(\n\t\t\t\tdef: Omit<ServerActionDefinition<TData>, \"scope\">,\n\t\t\t) =>\n\t\t\t\t({\n\t\t\t\t\t...def,\n\t\t\t\t\tscope: \"header\",\n\t\t\t\t}) as ServerActionDefinition<TData>,\n\t\t},\n\t\tc: createComponentProxy(builderState) as any,\n\t\tf: fieldProxy,\n\t};\n}\n\n// ============================================================================\n// QuestpieBuilder Patches\n// ============================================================================\n\n/**\n * Patch QuestpieBuilder with admin methods\n */\nfunction patchQuestpieBuilder() {\n\tconst proto = QuestpieBuilder.prototype as any;\n\n\t/**\n\t * Create a list view definition.\n\t * Returns a definition object for use in .listViews()\n\t */\n\tproto.listView = <TName extends string>(\n\t\tname: TName,\n\t\tconfig: Record<string, unknown> = {},\n\t): ListViewDefinition<TName> => ({ type: \"listView\", name, ...config });\n\n\t/**\n\t * Create an edit view definition.\n\t * Returns a definition object for use in .editViews()\n\t */\n\tproto.editView = <TName extends string>(\n\t\tname: TName,\n\t\tconfig: Record<string, unknown> = {},\n\t): EditViewDefinition<TName> => ({ type: \"editView\", name, ...config });\n\n\t/**\n\t * Create a component definition.\n\t * Returns a definition object for use in .components()\n\t */\n\tproto.component = <TName extends string>(\n\t\tname: TName,\n\t\tconfig: Record<string, unknown> = {},\n\t): ComponentDefinition<TName> => ({ type: \"component\", name, ...config });\n\n\t/**\n\t * Register list views on the builder.\n\t * Merges with existing list views.\n\t */\n\tproto.listViews = function (\n\t\tviews: Record<string, ListViewDefinition>,\n\t): QuestpieBuilder<any> {\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tlistViews: { ...(this.state.listViews || {}), ...views },\n\t\t});\n\t};\n\n\t/**\n\t * Register edit views on the builder.\n\t * Merges with existing edit views.\n\t */\n\tproto.editViews = function (\n\t\tviews: Record<string, EditViewDefinition>,\n\t): QuestpieBuilder<any> {\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\teditViews: { ...(this.state.editViews || {}), ...views },\n\t\t});\n\t};\n\n\t/**\n\t * Register components on the builder.\n\t * Merges with existing components.\n\t */\n\tproto.components = function (\n\t\tcomponents: Record<string, ComponentDefinition>,\n\t): QuestpieBuilder<any> {\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tcomponents: { ...(this.state.components || {}), ...components },\n\t\t});\n\t};\n\n\t/**\n\t * Register block types for the visual block editor.\n\t * Blocks are built and stored on the state for use by blocks fields.\n\t *\n\t * Accepts three input shapes per block:\n\t * - **Server BlockBuilder** (legacy): `block(\"hero\").fields(...).prefetch(...)`\n\t * - **Client BlockDefinition**: `heroBlock` (auto-expansion handles relations)\n\t * - **With manual prefetch**: `{ block: heroBlock, prefetch: async ({ values, ctx }) => ({...}) }`\n\t *\n\t * Relation and upload fields are auto-expanded in the afterRead hook.\n\t * Use the `{ block, prefetch }` shape for custom data that can't be auto-expanded.\n\t *\n\t * @example\n\t * ```ts\n\t * import { heroBlock, textBlock } from \"./blocks\";\n\t *\n\t * const cms = q({ name: \"my-app\" })\n\t * .use(adminModule)\n\t * .blocks({\n\t * // Simple block - relations auto-expanded\n\t * hero: heroBlock,\n\t * text: textBlock,\n\t * // Block with manual prefetch for custom data\n\t * featuredPosts: {\n\t * block: featuredPostsBlock,\n\t * prefetch: async ({ values, ctx }) => {\n\t * const posts = await ctx.app.api.collections.posts.find({ limit: values.count });\n\t * return { posts: posts.docs };\n\t * },\n\t * },\n\t * })\n\t * .build({ ... });\n\t * ```\n\t */\n\tproto.blocks = function (\n\t\tblocks: Record<string, BlockInput>,\n\t): QuestpieBuilder<any> {\n\t\t// Build each block and store the definitions\n\t\tconst builtBlocks: Record<string, AnyBlockDefinition> = {};\n\n\t\tfor (const [name, blockInput] of Object.entries(blocks)) {\n\t\t\t// Shape 1: Server BlockBuilder (legacy - has .build() method on a class instance)\n\t\t\tif (\n\t\t\t\ttypeof (blockInput as any).build === \"function\" &&\n\t\t\t\ttypeof (blockInput as any).state?.name === \"string\"\n\t\t\t) {\n\t\t\t\tconst blockBuilder = blockInput as AnyBlockBuilder;\n\t\t\t\t// Resolve fields using the builder's field registry\n\t\t\t\tconst state = blockBuilder.state as any;\n\t\t\t\tif (state._fieldsFactory && this.state.fields) {\n\t\t\t\t\t// Create field builder proxy from registered field types\n\t\t\t\t\tconst fieldProxy = createFieldBuilder(this.state.fields);\n\n\t\t\t\t\t// Execute the fields factory to get field definitions\n\t\t\t\t\tconst fields = state._fieldsFactory(fieldProxy);\n\t\t\t\t\tstate.fields = fields;\n\t\t\t\t\tdelete state._fieldsFactory;\n\t\t\t\t}\n\n\t\t\t\tbuiltBlocks[name] = blockBuilder.build();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Shape 2: { block: AnyBlockDefinition, prefetch?: BlockPrefetchFn } wrapper\n\t\t\t// Allows overriding prefetch for a block\n\t\t\tlet blockDef: AnyBlockDefinition;\n\t\t\tlet prefetchFn: BlockPrefetchFn | undefined;\n\n\t\t\tif (\n\t\t\t\t\"block\" in (blockInput as any) &&\n\t\t\t\ttypeof (blockInput as any).block === \"object\" &&\n\t\t\t\t(blockInput as any).block !== null &&\n\t\t\t\t\"name\" in (blockInput as any).block\n\t\t\t) {\n\t\t\t\t// Shape 2: { block: AnyBlockDefinition, prefetch?: BlockPrefetchFn }\n\t\t\t\tconst wrapper = blockInput as {\n\t\t\t\t\tblock: AnyBlockDefinition;\n\t\t\t\t\tprefetch?: BlockPrefetchFn;\n\t\t\t\t};\n\t\t\t\tblockDef = wrapper.block;\n\t\t\t\tprefetchFn = wrapper.prefetch;\n\t\t\t} else {\n\t\t\t\t// Direct block definition (shouldn't happen with current types, but handle gracefully)\n\t\t\t\tblockDef = blockInput as unknown as AnyBlockDefinition;\n\t\t\t}\n\n\t\t\tconst blockName = blockDef.name || name;\n\t\t\tbuiltBlocks[name] = {\n\t\t\t\tname: blockName,\n\t\t\t\tstate: {\n\t\t\t\t\t...blockDef.state,\n\t\t\t\t\tprefetch: prefetchFn || blockDef.state.prefetch,\n\t\t\t\t},\n\t\t\t\tgetFieldMetadata: blockDef.getFieldMetadata.bind(blockDef),\n\t\t\t\texecutePrefetch: async (\n\t\t\t\t\tvalues: Record<string, unknown>,\n\t\t\t\t\tctx: BlockPrefetchContext,\n\t\t\t\t) => {\n\t\t\t\t\tif (prefetchFn) {\n\t\t\t\t\t\treturn prefetchFn({ values, ctx });\n\t\t\t\t\t}\n\t\t\t\t\treturn blockDef.executePrefetch(values, ctx);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tblocks: { ...(this.state.blocks || {}), ...builtBlocks },\n\t\t});\n\t};\n\n\t/**\n\t * Create a block builder bound to this Questpie builder.\n\t * The block has access to all registered field types from `.fields()`.\n\t *\n\t * @example\n\t * ```ts\n\t * const qb = q.use(adminModule);\n\t *\n\t * const heroBlock = qb.block(\"hero\")\n\t * .label({ en: \"Hero Section\" })\n\t * .icon(\"ph:image\")\n\t * .fields((f) => ({\n\t * title: f.text({ required: true }), // ✅ typed from builder's field registry\n\t * subtitle: f.text(),\n\t * }));\n\t *\n\t * const cms = qb\n\t * .blocks({ hero: heroBlock })\n\t * .build({ ... });\n\t * ```\n\t */\n\tproto.block = function (name: string) {\n\t\tconst registeredComponents = getRegisteredComponentNames(\n\t\t\tthis.state as Record<string, unknown>,\n\t\t);\n\n\t\treturn new BlockBuilder({\n\t\t\tname,\n\t\t\t\"~components\": registeredComponents,\n\t\t} as any);\n\t};\n\n\t/**\n\t * Configure the admin dashboard.\n\t * Widgets that need data (stats, chart, recentItems) are executed on server.\n\t *\n\t * @example\n\t * ```ts\n\t * .dashboard(({ d, c, a }) => d.dashboard({\n\t * title: { en: \"Dashboard\" },\n\t * actions: [\n\t * a.create({\n\t * id: \"new-user\",\n\t * collection: \"users\",\n\t * label: { en: \"New User\" },\n\t * icon: c.icon(\"ph:user-plus\"),\n\t * }),\n\t * ],\n\t * items: [\n\t * d.section({\n\t * label: { en: \"Overview\" },\n\t * items: [\n\t * d.stats({ collection: \"users\", label: { en: \"Total Users\" } }),\n\t * ],\n\t * }),\n\t * ],\n\t * }))\n\t * ```\n\t */\n\tproto.dashboard = function (\n\t\tconfigFn: (ctx: DashboardConfigContext) => ServerDashboardConfig,\n\t): QuestpieBuilder<any> {\n\t\tconst ctx: DashboardConfigContext = {\n\t\t\ta: createDashboardActionProxy(),\n\t\t\td: {\n\t\t\t\tdashboard: (config) => config,\n\t\t\t\tsection: (config) => ({ type: \"section\" as const, ...config }),\n\t\t\t\ttabs: (config) => ({ type: \"tabs\" as const, ...config }),\n\t\t\t\tstats: (config) => ({ type: \"stats\" as const, ...config }),\n\t\t\t\tchart: (config) => ({ type: \"chart\" as const, ...config }),\n\t\t\t\trecentItems: (config) => ({ type: \"recentItems\" as const, ...config }),\n\t\t\t\tquickActions: (config) => ({\n\t\t\t\t\ttype: \"quickActions\" as const,\n\t\t\t\t\t...config,\n\t\t\t\t}),\n\t\t\t\tcustom: (config) => ({ type: \"custom\" as const, ...config }),\n\t\t\t\tvalue: (config) => ({ type: \"value\" as const, ...config }),\n\t\t\t\ttable: (config) => ({ type: \"table\" as const, ...config }),\n\t\t\t\ttimeline: (config) => ({ type: \"timeline\" as const, ...config }),\n\t\t\t\tprogress: (config) => ({ type: \"progress\" as const, ...config }),\n\t\t\t},\n\t\t\tc: createComponentProxy(this.state as Record<string, unknown>) as any,\n\t\t};\n\n\t\tconst dashboard = configFn(ctx);\n\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tdashboard,\n\t\t});\n\t};\n\n\t/**\n\t * Configure the admin sidebar.\n\t * Sections can contain collections, globals, pages, links, and dividers.\n\t *\n\t * @example\n\t * ```ts\n\t * .sidebar(({ s, c }) => s.sidebar({\n\t * sections: [\n\t * s.section({\n\t * id: \"content\",\n\t * title: { en: \"Content\" },\n\t * icon: c.icon(\"ph:files\"),\n\t * items: [\n\t * { type: \"collection\", collection: \"posts\" },\n\t * { type: \"collection\", collection: \"pages\" },\n\t * ],\n\t * }),\n\t * ],\n\t * }))\n\t * ```\n\t */\n\tproto.sidebar = function (\n\t\tconfigFn: (ctx: SidebarConfigContext) => ServerSidebarConfig,\n\t): QuestpieBuilder<any> {\n\t\tconst ctx: SidebarConfigContext = {\n\t\t\ts: {\n\t\t\t\tsidebar: (config) => config,\n\t\t\t\tsection: (config) => ({ items: [], ...config }),\n\t\t\t},\n\t\t\tc: createComponentProxy(this.state as Record<string, unknown>) as any,\n\t\t};\n\n\t\tconst sidebar = configFn(ctx);\n\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tsidebar,\n\t\t});\n\t};\n\n\tproto.branding = function (config: {\n\t\tname?: unknown;\n\t\tlogo?: unknown;\n\t}): QuestpieBuilder<any> {\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tbranding: config,\n\t\t});\n\t};\n\n\t/**\n\t * Configure admin UI locales (separate from content locales).\n\t *\n\t * UI locales control the admin interface language.\n\t * Content locales (set via .locale()) control which languages content can be edited in.\n\t * These don't need to match - you can have 10 content languages but only 2 UI languages.\n\t *\n\t * @example\n\t * ```ts\n\t * const cms = q({ name: \"my-app\" })\n\t * .use(adminModule)\n\t * // Content can be in many languages\n\t * .locale({\n\t * locales: [{ code: \"en\" }, { code: \"sk\" }, { code: \"de\" }, ...],\n\t * defaultLocale: \"en\",\n\t * })\n\t * // But admin UI only in 2 languages\n\t * .adminLocale({\n\t * locales: [\"en\", \"sk\"],\n\t * defaultLocale: \"en\",\n\t * })\n\t * .build({ ... });\n\t * ```\n\t */\n\tproto.adminLocale = function (\n\t\tconfig: AdminLocaleConfig,\n\t): QuestpieBuilder<any> {\n\t\treturn new QuestpieBuilder({\n\t\t\t...this.state,\n\t\t\tadminLocale: config,\n\t\t});\n\t};\n\n\t/**\n\t * Patch .use() to propagate admin extension properties.\n\t *\n\t * The core .use() only merges hardcoded properties (collections, globals,\n\t * jobs, emailTemplates, fields, auth, locale, migrations, translations).\n\t * Admin extensions (sidebar, dashboard, branding, listViews, editViews,\n\t * components, blocks, adminLocale) would be lost without this patch.\n\t */\n\tconst originalUse = proto.use;\n\tproto.use = function (other: { readonly state: any }): QuestpieBuilder<any> {\n\t\tconst result = originalUse.call(this, other);\n\t\tconst otherState = other.state;\n\n\t\t// Core keys already handled by the original .use()\n\t\tconst coreKeys = new Set([\n\t\t\t\"name\",\n\t\t\t\"collections\",\n\t\t\t\"globals\",\n\t\t\t\"jobs\",\n\t\t\t\"emailTemplates\",\n\t\t\t\"fields\",\n\t\t\t\"auth\",\n\t\t\t\"locale\",\n\t\t\t\"migrations\",\n\t\t\t\"translations\",\n\t\t\t\"~messageKeys\",\n\t\t]);\n\n\t\tconst extensionState: Record<string, any> = {};\n\n\t\t// Carry over extension properties from this (base)\n\t\tfor (const key of Object.keys(this.state)) {\n\t\t\tif (!coreKeys.has(key) && this.state[key] !== undefined) {\n\t\t\t\textensionState[key] = this.state[key];\n\t\t\t}\n\t\t}\n\n\t\t// Carry over extension properties from other (overrides base for conflicts)\n\t\tfor (const key of Object.keys(otherState)) {\n\t\t\tif (!coreKeys.has(key) && otherState[key] !== undefined) {\n\t\t\t\textensionState[key] = otherState[key];\n\t\t\t}\n\t\t}\n\n\t\t// If there are extension properties, create a new builder with them\n\t\tif (Object.keys(extensionState).length > 0) {\n\t\t\treturn new QuestpieBuilder({\n\t\t\t\t...result.state,\n\t\t\t\t...extensionState,\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t/**\n\t * Patch .build() to inject block definitions into blocks-type field configs\n\t * before the real build, and to store admin extension state on the built\n\t * Questpie instance so getAdminConfig can read sidebar/dashboard/etc.\n\t */\n\tconst originalBuild = proto.build;\n\tproto.build = function (...args: any[]): any {\n\t\t// Inject _blockDefinitions into all blocks-type field configs\n\t\tconst blockDefs = this.state.blocks;\n\t\tif (blockDefs && Object.keys(blockDefs).length > 0) {\n\t\t\tinjectBlockDefinitions(this.state, blockDefs);\n\t\t\tinjectBlocksPrefetchHooks(this.state);\n\t\t\t// Validate allowedBlocks references\n\t\t\tvalidateAllowedBlocks(this.state, blockDefs);\n\t\t}\n\t\tconst instance = originalBuild.apply(this, args);\n\n\t\t// Store admin extension state on the built instance\n\t\t// so getAdminConfig can access sidebar, dashboard, branding, etc.\n\t\tconst extensionKeys = [\n\t\t\t\"sidebar\",\n\t\t\t\"dashboard\",\n\t\t\t\"branding\",\n\t\t\t\"blocks\",\n\t\t\t\"listViews\",\n\t\t\t\"editViews\",\n\t\t\t\"components\",\n\t\t\t\"adminLocale\",\n\t\t];\n\t\tconst adminState: Record<string, any> = {};\n\t\tfor (const key of extensionKeys) {\n\t\t\tif (this.state[key] !== undefined) {\n\t\t\t\tadminState[key] = this.state[key];\n\t\t\t}\n\t\t}\n\t\t(instance as any).state = adminState;\n\n\t\treturn instance;\n\t};\n}\n\n/**\n * Inject block definitions into all blocks-type field configs\n * in collections and globals. Enables per-block field validation.\n * @internal\n */\nfunction injectBlockDefinitions(\n\tstate: any,\n\tblockDefs: Record<string, AnyBlockDefinition>,\n): void {\n\t// Process collection field configs\n\tif (state.collections) {\n\t\tfor (const collection of Object.values(state.collections) as any[]) {\n\t\t\tconst fields = collection?.state?.fields;\n\t\t\tif (!fields) continue;\n\t\t\tfor (const fieldDef of Object.values(fields) as any[]) {\n\t\t\t\tif (fieldDef?.state?.config?.type === \"blocks\") {\n\t\t\t\t\tfieldDef.state.config._blockDefinitions = blockDefs;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Process global field configs\n\tif (state.globals) {\n\t\tfor (const global of Object.values(state.globals) as any[]) {\n\t\t\tconst fields = global?.state?.fields;\n\t\t\tif (!fields) continue;\n\t\t\tfor (const fieldDef of Object.values(fields) as any[]) {\n\t\t\t\tif (fieldDef?.state?.config?.type === \"blocks\") {\n\t\t\t\t\tfieldDef.state.config._blockDefinitions = blockDefs;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Auto-inject afterRead hook for blocks prefetch on collections/globals\n * that have at least one blocks-type field.\n *\n * This eliminates the need for manually adding:\n * ```ts\n * .hooks({ afterRead: createBlocksPrefetchHook() })\n * ```\n * @internal\n */\nfunction injectBlocksPrefetchHooks(state: any): void {\n\tconst prefetchHook = createBlocksPrefetchHook();\n\n\tconst injectIfHasBlocksField = (entity: any, name: string) => {\n\t\t// Use fieldDefinitions which has the field type info (state.type, not state.config.type)\n\t\tconst fieldDefinitions = entity?.state?.fieldDefinitions;\n\t\tif (!fieldDefinitions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasBlocksField = Object.values(fieldDefinitions).some(\n\t\t\t(fieldDef: any) => fieldDef?.state?.type === \"blocks\",\n\t\t);\n\t\tif (!hasBlocksField) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Append to existing afterRead hooks (don't overwrite)\n\t\tif (!entity.state.hooks) {\n\t\t\tentity.state.hooks = {};\n\t\t}\n\t\tconst existing = entity.state.hooks.afterRead;\n\t\tif (!existing) {\n\t\t\tentity.state.hooks.afterRead = prefetchHook;\n\t\t} else {\n\t\t\tconst existingArray = Array.isArray(existing) ? existing : [existing];\n\t\t\tentity.state.hooks.afterRead = [...existingArray, prefetchHook];\n\t\t}\n\t};\n\n\tif (state.collections) {\n\t\tfor (const [name, collection] of Object.entries(state.collections)) {\n\t\t\tinjectIfHasBlocksField(collection, name);\n\t\t}\n\t}\n\n\tif (state.globals) {\n\t\tfor (const [name, global] of Object.entries(state.globals)) {\n\t\t\tinjectIfHasBlocksField(global, name);\n\t\t}\n\t}\n}\n\n/**\n * Validate that all `allowedBlocks` entries reference registered block types.\n * Logs warnings in development for unknown block types.\n * @internal\n */\nfunction validateAllowedBlocks(\n\tstate: any,\n\tblockDefs: Record<string, AnyBlockDefinition>,\n): void {\n\tconst registeredNames = new Set(Object.keys(blockDefs));\n\n\tconst checkFields = (fields: any, context: string) => {\n\t\tif (!fields) return;\n\t\tfor (const [fieldName, fieldDef] of Object.entries(fields) as any[]) {\n\t\t\tconst config = fieldDef?.state?.config;\n\t\t\tif (config?.type === \"blocks\" && Array.isArray(config.allowedBlocks)) {\n\t\t\t\tfor (const blockType of config.allowedBlocks) {\n\t\t\t\t\tif (!registeredNames.has(blockType)) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`[admin] Unknown block type \"${blockType}\" in allowedBlocks ` +\n\t\t\t\t\t\t\t\t`for field \"${fieldName}\" in ${context}. ` +\n\t\t\t\t\t\t\t\t`Registered block types: ${[...registeredNames].join(\", \")}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Check collection field configs\n\tif (state.collections) {\n\t\tfor (const [name, collection] of Object.entries(\n\t\t\tstate.collections,\n\t\t) as any[]) {\n\t\t\tcheckFields(collection?.state?.fields, `collection \"${name}\"`);\n\t\t}\n\t}\n\n\t// Check global field configs\n\tif (state.globals) {\n\t\tfor (const [name, global] of Object.entries(state.globals) as any[]) {\n\t\t\tcheckFields(global?.state?.fields, `global \"${name}\"`);\n\t\t}\n\t}\n}\n\n// ============================================================================\n// CollectionBuilder Patches\n// ============================================================================\n\n/**\n * Patch CollectionBuilder with admin methods\n */\nfunction patchCollectionBuilder() {\n\tconst proto = CollectionBuilder.prototype as any;\n\n\t/**\n\t * Set admin metadata for the collection.\n\t * Defines how the collection appears in the admin sidebar and UI.\n\t *\n\t * @example\n\t * ```ts\n\t * .admin(({ c }) => ({\n\t * label: { en: \"Posts\", sk: \"Príspevky\" },\n\t * icon: c.icon(\"ph:article\"),\n\t * description: { en: \"Blog posts and articles\" },\n\t * }))\n\t * ```\n\t */\n\tproto.admin = function (\n\t\tconfigOrFn:\n\t\t\t| AdminCollectionConfig\n\t\t\t| ((ctx: {\n\t\t\t\t\tc: ReturnType<typeof createComponentProxy>;\n\t\t\t }) => AdminCollectionConfig),\n\t): CollectionBuilder<any> {\n\t\tconst config =\n\t\t\ttypeof configOrFn === \"function\"\n\t\t\t\t? configOrFn({ c: createComponentProxy(this.state as any) })\n\t\t\t\t: configOrFn;\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadmin: config,\n\t\t};\n\n\t\tconst newBuilder = new CollectionBuilder(newState);\n\t\t// Copy callback functions\n\t\tif (this._indexesFn) {\n\t\t\t(newBuilder as any)._indexesFn = this._indexesFn;\n\t\t}\n\t\treturn newBuilder;\n\t};\n\n\t/**\n\t * Configure list view for the collection.\n\t * Defines columns, sorting, filtering, and actions for the list page.\n\t *\n\t * @example\n\t * ```ts\n\t * .list(({ v, f, a }) => v.table({\n\t * columns: [f.title, f.author, f.status, f.createdAt],\n\t * defaultSort: { field: \"createdAt\", direction: \"desc\" },\n\t * searchable: [\"title\", \"content\"],\n\t * filterable: [\"status\", \"author\"],\n\t * actions: {\n\t * header: { primary: [a.create] },\n\t * row: [a.duplicate, a.delete],\n\t * bulk: [a.delete],\n\t * },\n\t * }))\n\t * ```\n\t */\n\tproto.list = function (\n\t\tconfigFn: (ctx: {\n\t\t\tv: ReturnType<typeof createViewProxy>;\n\t\t\tf: Record<string, string>;\n\t\t\ta: ReturnType<typeof createActionProxy>;\n\t\t}) => ListViewConfig,\n\t): CollectionBuilder<any> {\n\t\t// Get field names from state\n\t\tconst fieldNames = Object.keys(this.state.fields || {});\n\t\tconst registeredListViews = getRegisteredViewNames(\n\t\t\tthis.state as any,\n\t\t\t\"list\",\n\t\t);\n\n\t\tconst config = configFn({\n\t\t\tv: createViewProxy(\"list\", registeredListViews),\n\t\t\tf: createFieldProxy(fieldNames),\n\t\t\ta: createActionProxy(),\n\t\t});\n\t\tensureRegisteredView(\"list\", config.view, registeredListViews);\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadminList: config,\n\t\t};\n\n\t\tconst newBuilder = new CollectionBuilder(newState);\n\t\tif (this._indexesFn) {\n\t\t\t(newBuilder as any)._indexesFn = this._indexesFn;\n\t\t}\n\t\treturn newBuilder;\n\t};\n\n\t/**\n\t * Configure form view for the collection.\n\t * Defines field layout, sections, and tabs for create/edit pages.\n\t *\n\t * @example\n\t * ```ts\n\t * .form(({ v, f }) => v.form({\n\t * sections: [\n\t * {\n\t * label: { en: \"Basic Info\" },\n\t * fields: [f.title, f.slug, f.content],\n\t * },\n\t * {\n\t * label: { en: \"Publishing\" },\n\t * fields: [f.status, f.publishedAt, f.author],\n\t * collapsible: true,\n\t * },\n\t * ],\n\t * }))\n\t * ```\n\t */\n\tproto.form = function (\n\t\tconfigFn: (ctx: {\n\t\t\tv: ReturnType<typeof createViewProxy>;\n\t\t\tf: Record<string, string>;\n\t\t}) => FormViewConfig,\n\t): CollectionBuilder<any> {\n\t\tconst fieldNames = Object.keys(this.state.fields || {});\n\t\tconst registeredEditViews = getRegisteredViewNames(\n\t\t\tthis.state as any,\n\t\t\t\"edit\",\n\t\t);\n\n\t\tconst config = configFn({\n\t\t\tv: createViewProxy(\"edit\", registeredEditViews),\n\t\t\tf: createFieldProxy(fieldNames),\n\t\t});\n\t\tensureRegisteredView(\"edit\", config.view, registeredEditViews);\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadminForm: config,\n\t\t};\n\n\t\tconst newBuilder = new CollectionBuilder(newState);\n\t\tif (this._indexesFn) {\n\t\t\t(newBuilder as any)._indexesFn = this._indexesFn;\n\t\t}\n\t\treturn newBuilder;\n\t};\n\n\t/**\n\t * Configure preview for the collection.\n\t * Enables live preview panel in the edit page.\n\t *\n\t * @example\n\t * ```ts\n\t * .preview({\n\t * enabled: true,\n\t * url: ({ record, locale }) => `/preview/posts/${record.slug}?locale=${locale}`,\n\t * position: \"right\",\n\t * defaultWidth: 50,\n\t * })\n\t * ```\n\t */\n\tproto.preview = function (config: PreviewConfig): CollectionBuilder<any> {\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadminPreview: config,\n\t\t};\n\n\t\tconst newBuilder = new CollectionBuilder(newState);\n\t\tif (this._indexesFn) {\n\t\t\t(newBuilder as any)._indexesFn = this._indexesFn;\n\t\t}\n\t\treturn newBuilder;\n\t};\n\n\t/**\n\t * Configure actions for the collection.\n\t * Enables built-in actions (create, delete, etc.) and custom actions with forms.\n\t *\n\t * Form fields use the same field registry as collections. The field proxy `f`\n\t * is resolved at build time when the full field registry is available.\n\t *\n\t * @example\n\t * ```ts\n\t * .actions(({ a, c, f }) => ({\n\t * builtin: [a.create(), a.delete(), a.deleteMany(), a.duplicate()],\n\t * custom: [\n\t * a.action({\n\t * id: \"publish\",\n\t * label: { en: \"Publish\" },\n\t * icon: c.icon(\"ph:check-circle\"),\n\t * confirmation: {\n\t * title: { en: \"Publish this item?\" },\n\t * description: { en: \"This will make the item visible to the public.\" },\n\t * },\n\t * handler: async ({ itemId, app, db }) => {\n\t * // publish logic\n\t * return { type: \"success\", toast: { message: \"Published!\" } };\n\t * },\n\t * }),\n\t * a.action({\n\t * id: \"send-email\",\n\t * label: { en: \"Send Email\" },\n\t * icon: c.icon(\"ph:envelope\"),\n\t * form: {\n\t * title: { en: \"Send Email\" },\n\t * fields: {\n\t * subject: f.text({ label: { en: \"Subject\" }, required: true }),\n\t * message: f.textarea({ label: { en: \"Message\" } }),\n\t * },\n\t * },\n\t * handler: async ({ data }) => {\n\t * // send email logic - data.subject, data.message are typed\n\t * return { type: \"success\", toast: { message: \"Email sent!\" } };\n\t * },\n\t * }),\n\t * a.bulkAction({\n\t * id: \"bulk-publish\",\n\t * label: { en: \"Publish Selected\" },\n\t * handler: async ({ itemIds }) => {\n\t * // bulk publish logic\n\t * return { type: \"success\", toast: { message: `${itemIds?.length} items published!` } };\n\t * },\n\t * }),\n\t * ],\n\t * }))\n\t * ```\n\t */\n\tproto.actions = function (\n\t\tconfigFn: (\n\t\t\tctx: ActionsConfigContext<Record<string, unknown>>,\n\t\t) => ServerActionsConfig,\n\t): CollectionBuilder<any> {\n\t\t// Use the builder's registered field types for action form fields if available\n\t\tconst questpieApp = (this.state as any)[\"~questpieApp\"];\n\t\tconst builderFields = questpieApp?.state?.fields;\n\t\tconst fieldRegistry: Record<string, (config?: any) => any> = {};\n\n\t\tif (builderFields && Object.keys(builderFields).length > 0) {\n\t\t\t// Convert raw field defs into factory functions for the actions context\n\t\t\tfor (const [name, fieldDef] of Object.entries(builderFields)) {\n\t\t\t\tfieldRegistry[name] = (config?: any) =>\n\t\t\t\t\tcreateFieldDefinition(fieldDef as any, config);\n\t\t\t}\n\t\t}\n\n\t\tconst ctx = createActionsConfigContext(this.state as any, fieldRegistry);\n\t\tconst config = configFn(ctx);\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadminActions: config,\n\t\t};\n\n\t\tconst newBuilder = new CollectionBuilder(newState);\n\t\tif (this._indexesFn) {\n\t\t\t(newBuilder as any)._indexesFn = this._indexesFn;\n\t\t}\n\t\treturn newBuilder;\n\t};\n\n\t/**\n\t * Patch .merge() to propagate admin extension properties.\n\t *\n\t * The core .merge() only merges hardcoded collection properties (fields,\n\t * indexes, hooks, access, etc.). Admin extensions (admin, adminList,\n\t * adminForm, adminPreview, adminActions) would be lost without this patch.\n\t */\n\tconst originalMerge = proto.merge;\n\tproto.merge = function (\n\t\tother: CollectionBuilder<any>,\n\t): CollectionBuilder<any> {\n\t\tconst result = originalMerge.call(this, other);\n\n\t\t// Admin extension keys for collections (last-wins: other overrides this)\n\t\tconst adminKeys = [\n\t\t\t\"admin\",\n\t\t\t\"adminList\",\n\t\t\t\"adminForm\",\n\t\t\t\"adminPreview\",\n\t\t\t\"adminActions\",\n\t\t];\n\n\t\tfor (const key of adminKeys) {\n\t\t\tconst thisVal = (this.state as any)[key];\n\t\t\tconst otherVal = (other.state as any)[key];\n\n\t\t\tif (otherVal !== undefined) {\n\t\t\t\t(result.state as any)[key] = otherVal;\n\t\t\t} else if (thisVal !== undefined) {\n\t\t\t\t(result.state as any)[key] = thisVal;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\n// ============================================================================\n// GlobalBuilder Patches\n// ============================================================================\n\n/**\n * Patch GlobalBuilder with admin methods\n */\nfunction patchGlobalBuilder() {\n\tconst proto = GlobalBuilder.prototype as any;\n\n\t/**\n\t * Set admin metadata for the global.\n\t * Defines how the global appears in the admin sidebar and UI.\n\t *\n\t * @example\n\t * ```ts\n\t * .admin(({ c }) => ({\n\t * label: { en: \"Site Settings\", sk: \"Nastavenia stránky\" },\n\t * icon: c.icon(\"ph:gear\"),\n\t * }))\n\t * ```\n\t */\n\tproto.admin = function (\n\t\tconfigOrFn:\n\t\t\t| AdminGlobalConfig\n\t\t\t| ((ctx: {\n\t\t\t\t\tc: ReturnType<typeof createComponentProxy>;\n\t\t\t }) => AdminGlobalConfig),\n\t): GlobalBuilder<any> {\n\t\tconst config =\n\t\t\ttypeof configOrFn === \"function\"\n\t\t\t\t? configOrFn({ c: createComponentProxy(this.state as any) })\n\t\t\t\t: configOrFn;\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadmin: config,\n\t\t};\n\n\t\treturn new GlobalBuilder(newState);\n\t};\n\n\t/**\n\t * Configure form view for the global.\n\t * Defines field layout, sections, and tabs for the settings page.\n\t *\n\t * @example\n\t * ```ts\n\t * .form(({ v, f }) => v.form({\n\t * tabs: [\n\t * {\n\t * label: { en: \"General\" },\n\t * icon: c.icon(\"ph:gear\"),\n\t * sections: [\n\t * { fields: [f.siteName, f.siteDescription, f.logo] },\n\t * ],\n\t * },\n\t * {\n\t * label: { en: \"Social Media\" },\n\t * icon: c.icon(\"ph:share-network\"),\n\t * sections: [\n\t * { fields: [f.socialLinks] },\n\t * ],\n\t * },\n\t * ],\n\t * }))\n\t * ```\n\t */\n\tproto.form = function (\n\t\tconfigFn: (ctx: {\n\t\t\tv: ReturnType<typeof createViewProxy>;\n\t\t\tf: Record<string, string>;\n\t\t}) => FormViewConfig,\n\t): GlobalBuilder<any> {\n\t\tconst fieldNames = Object.keys(this.state.fields || {});\n\t\tconst registeredEditViews = getRegisteredViewNames(\n\t\t\tthis.state as any,\n\t\t\t\"edit\",\n\t\t);\n\n\t\tconst config = configFn({\n\t\t\tv: createViewProxy(\"edit\", registeredEditViews),\n\t\t\tf: createFieldProxy(fieldNames),\n\t\t});\n\t\tensureRegisteredView(\"edit\", config.view, registeredEditViews);\n\n\t\tconst newState = {\n\t\t\t...this.state,\n\t\t\tadminForm: config,\n\t\t};\n\n\t\treturn new GlobalBuilder(newState);\n\t};\n}\n\n// ============================================================================\n// Apply All Patches\n// ============================================================================\n\n/**\n * Apply all admin patches to builder prototypes.\n * This function is idempotent - calling it multiple times has no effect.\n *\n * Called automatically when adminModule is used via .use()\n */\nexport function applyAdminPatches(): void {\n\tif (patchesApplied) {\n\t\treturn;\n\t}\n\n\tpatchQuestpieBuilder();\n\tpatchCollectionBuilder();\n\tpatchGlobalBuilder();\n\n\tpatchesApplied = true;\n}\n\n/**\n * Check if admin patches have been applied.\n * Useful for debugging and testing.\n */\nexport function arePatchesApplied(): boolean {\n\treturn patchesApplied;\n}\n\n// Re-export proxy factories for external use if needed\nexport {\n\tcreateActionProxy,\n\tcreateComponentProxy,\n\tcreateFieldProxy,\n\tcreateViewProxy,\n};\n\n// Auto-apply patches on import (idempotent)\napplyAdminPatches();\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview-utils.d.mts","names":[],"sources":["../../src/shared/preview-utils.ts"],"sourcesContent":[],"mappings":";;AAeA;AAoBA;AAqBA;AAcA;;;;;;cAvDa,iBAAA;;;;;;;;;;;;;;;iBAoBG,WAAA;;;;;;;;;;;;;;;;;iBAqBA,qBAAA;;;;;;;iBAcA,gBAAA,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preview-utils.mjs","names":[],"sources":["../../src/shared/preview-utils.ts"],"sourcesContent":["/**\n * Preview Utilities - Browser-safe\n *\n * Utilities that can run in both browser and server environments.\n * No Node.js dependencies (crypto, etc.)\n */\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/**\n * Cookie name for draft mode.\n * Set by /api/preview route, checked by page loaders.\n */\nexport const DRAFT_MODE_COOKIE = \"__draft_mode\";\n\n// ============================================================================\n// Browser-Safe Utilities\n// ============================================================================\n\n/**\n * Check if draft mode is enabled from cookie header.\n *\n * @param cookieHeader - The Cookie header value from request\n * @returns true if draft mode cookie is present and set to \"true\"\n *\n * @example\n * ```ts\n * const isDraft = isDraftMode(request.headers.get(\"cookie\"));\n * const page = await cms.pages.findOne({\n * where: isDraft ? { slug } : { slug, isPublished: true }\n * });\n * ```\n */\nexport function isDraftMode(cookieHeader: string | null | undefined): boolean {\n if (!cookieHeader) return false;\n return cookieHeader.includes(`${DRAFT_MODE_COOKIE}=true`);\n}\n\n/**\n * Create Set-Cookie header value for draft mode.\n *\n * @param enabled - Whether to enable or disable draft mode\n * @param maxAge - Cookie max age in seconds (default: 1 hour)\n * @returns Set-Cookie header value\n *\n * @example\n * ```ts\n * // Enable draft mode\n * headers.set(\"Set-Cookie\", createDraftModeCookie(true));\n *\n * // Disable draft mode\n * headers.set(\"Set-Cookie\", createDraftModeCookie(false));\n * ```\n */\nexport function createDraftModeCookie(enabled: boolean, maxAge = 3600): string {\n if (enabled) {\n return `${DRAFT_MODE_COOKIE}=true; Path=/; Max-Age=${maxAge}; SameSite=Lax; HttpOnly`;\n }\n // Delete cookie by setting Max-Age=0\n return `${DRAFT_MODE_COOKIE}=; Path=/; Max-Age=0; SameSite=Lax; HttpOnly`;\n}\n\n/**\n * Get preview secret from environment variables.\n * Falls back to SECRET if PREVIEW_SECRET is not set.\n *\n * @returns The preview secret\n */\nexport function getPreviewSecret(): string {\n const secret =\n process.env.PREVIEW_SECRET || process.env.SECRET || \"dev-preview-secret\";\n\n if (\n process.env.NODE_ENV === \"production\" &&\n secret === \"dev-preview-secret\"\n ) {\n console.warn(\n \"[preview] Using default secret in production. Set PREVIEW_SECRET or SECRET env var.\",\n );\n }\n\n return secret;\n}\n"],"mappings":";;;;;;;;;;;AAeA,MAAa,oBAAoB;;;;;;;;;;;;;;;AAoBjC,SAAgB,YAAY,cAAkD;AAC5E,KAAI,CAAC,aAAc,QAAO;AAC1B,QAAO,aAAa,SAAS,GAAG,kBAAkB,OAAO;;;;;;;;;;;;;;;;;;AAmB3D,SAAgB,sBAAsB,SAAkB,SAAS,MAAc;AAC7E,KAAI,QACF,QAAO,GAAG,kBAAkB,yBAAyB,OAAO;AAG9D,QAAO,GAAG,kBAAkB;;;;;;;;AAS9B,SAAgB,mBAA2B;CACzC,MAAM,SACJ,QAAQ,IAAI,kBAAkB,QAAQ,IAAI,UAAU;AAEtD,KACE,QAAQ,IAAI,aAAa,gBACzB,WAAW,qBAEX,SAAQ,KACN,sFACD;AAGH,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"saved-views.types.d.mts","names":[],"sources":["../../../src/shared/types/saved-views.types.ts"],"sourcesContent":[],"mappings":";;AAUA;AAsBA;AAUA;AAUA;AAQA;;;;KAlDY,cAAA;;;;KAsBA,WAAA,+BAIT;;;;UAMc,UAAA;;;YAGN;SACH;;;;;UAMS,UAAA;;;;;;;UAQA,iBAAA;WACP;cACG"}
|