@questpie/admin 1.1.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +256 -488
- package/dist/augmentation.d.mts +414 -0
- package/dist/client/blocks/block-renderer.d.mts +45 -0
- package/dist/client/blocks/block-renderer.mjs +105 -0
- package/dist/client/blocks/index.d.mts +2 -0
- package/dist/client/blocks/types.d.mts +68 -0
- package/dist/client/blocks/types.mjs +19 -0
- package/dist/client/builder/admin-types.d.mts +40 -0
- package/dist/client/builder/admin.d.mts +110 -0
- package/dist/client/builder/admin.mjs +151 -0
- package/dist/client/builder/field/field.d.mts +51 -0
- package/dist/client/builder/field/field.mjs +37 -0
- package/dist/client/builder/index.d.mts +31 -0
- package/dist/client/builder/page/page.d.mts +24 -0
- package/dist/client/builder/page/page.mjs +31 -0
- package/dist/client/builder/registry.d.mts +50 -0
- package/dist/client/builder/types/action-registry.mjs +276 -0
- package/dist/client/builder/types/action-types.d.mts +226 -0
- package/dist/client/builder/types/collection-types.mjs +10 -0
- package/dist/client/builder/types/common.d.mts +46 -0
- package/dist/client/builder/types/field-types.d.mts +592 -0
- package/dist/client/builder/types/field-types.mjs +18 -0
- package/dist/client/builder/types/ui-config.d.mts +158 -0
- package/dist/client/builder/types/widget-types.d.mts +562 -0
- package/dist/client/builder/validation.d.mts +33 -0
- package/dist/client/builder/validation.mjs +227 -0
- package/dist/client/builder/view/view.d.mts +49 -0
- package/dist/client/builder/view/view.mjs +27 -0
- package/dist/client/builder/widget/widget.d.mts +27 -0
- package/dist/client/builder/widget/widget.mjs +21 -0
- package/dist/client/components/actions/action-button.mjs +245 -0
- package/dist/client/components/actions/action-dialog.mjs +559 -0
- package/dist/client/components/actions/confirmation-dialog.mjs +201 -0
- package/dist/client/components/actions/header-actions.mjs +210 -0
- package/dist/client/components/admin-link.d.mts +66 -0
- package/dist/client/components/admin-link.mjs +171 -0
- package/dist/client/components/auth/auth-guard.d.mts +50 -0
- package/dist/client/components/auth/auth-guard.mjs +60 -0
- package/dist/client/components/auth/auth-loading.d.mts +35 -0
- package/dist/client/components/auth/auth-loading.mjs +55 -0
- package/dist/client/components/blocks/block-canvas.mjs +159 -0
- package/dist/client/components/blocks/block-editor-context.mjs +125 -0
- package/dist/client/components/blocks/block-editor-layout.mjs +199 -0
- package/dist/client/components/blocks/block-editor-provider.mjs +235 -0
- package/dist/client/components/blocks/block-fields-renderer.mjs +240 -0
- package/dist/client/components/blocks/block-insert-button.mjs +189 -0
- package/dist/client/components/blocks/block-item-menu.mjs +363 -0
- package/dist/client/components/blocks/block-item.mjs +434 -0
- package/dist/client/components/blocks/block-library-sidebar.mjs +285 -0
- package/dist/client/components/blocks/block-tree.mjs +103 -0
- package/dist/client/components/blocks/block-type-icon.mjs +95 -0
- package/dist/client/components/blocks/utils/tree-utils.mjs +185 -0
- package/dist/client/components/component-renderer.d.mts +114 -0
- package/dist/client/components/component-renderer.mjs +258 -0
- package/dist/client/components/error-boundary.mjs +144 -0
- package/dist/client/components/fields/array-field.mjs +506 -0
- package/dist/client/components/fields/asset-preview-field.mjs +159 -0
- package/dist/client/components/fields/blocks-field/blocks-field.mjs +209 -0
- package/dist/client/components/fields/boolean-field.mjs +77 -0
- package/dist/client/components/fields/date-field.mjs +76 -0
- package/dist/client/components/fields/datetime-field.mjs +74 -0
- package/dist/client/components/fields/email-field.mjs +67 -0
- package/dist/client/components/fields/field-utils.mjs +64 -0
- package/dist/client/components/fields/field-wrapper.mjs +124 -0
- package/dist/client/components/fields/json-field.mjs +461 -0
- package/dist/client/components/fields/locale-badge.mjs +25 -0
- package/dist/client/components/fields/number-field.mjs +73 -0
- package/dist/client/components/fields/object-array-field.mjs +707 -0
- package/dist/client/components/fields/object-field.mjs +686 -0
- package/dist/client/components/fields/relation/displays/cards-display.mjs +254 -0
- package/dist/client/components/fields/relation/displays/chips-display.mjs +173 -0
- package/dist/client/components/fields/relation/displays/grid-display.mjs +209 -0
- package/dist/client/components/fields/relation/displays/list-display.mjs +247 -0
- package/dist/client/components/fields/relation/displays/table-display.mjs +309 -0
- package/dist/client/components/fields/relation/displays/types.mjs +72 -0
- package/dist/client/components/fields/relation/relation-items-display.mjs +143 -0
- package/dist/client/components/fields/relation-field.mjs +161 -0
- package/dist/client/components/fields/relation-picker.mjs +296 -0
- package/dist/client/components/fields/relation-select.mjs +232 -0
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +105 -0
- package/dist/client/components/fields/rich-text-editor/extensions.mjs +144 -0
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +221 -0
- package/dist/client/components/fields/rich-text-editor/index.mjs +520 -0
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs +85 -0
- package/dist/client/components/fields/rich-text-editor/presets.mjs +123 -0
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +188 -0
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs +433 -0
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs +541 -0
- package/dist/client/components/fields/rich-text-editor/types.mjs +30 -0
- package/dist/client/components/fields/rich-text-editor/utils.mjs +50 -0
- package/dist/client/components/fields/rich-text-field.mjs +64 -0
- package/dist/client/components/fields/select-field.mjs +88 -0
- package/dist/client/components/fields/text-field.mjs +72 -0
- package/dist/client/components/fields/textarea-field.mjs +71 -0
- package/dist/client/components/fields/time-field.mjs +67 -0
- package/dist/client/components/fields/upload-field.mjs +621 -0
- package/dist/client/components/filter-builder/columns-tab.mjs +325 -0
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +456 -0
- package/dist/client/components/filter-builder/filters-tab.mjs +663 -0
- package/dist/client/components/filter-builder/saved-views-tab.mjs +278 -0
- package/dist/client/components/history-sidebar.mjs +496 -0
- package/dist/client/components/layout/field-layout-renderer.mjs +301 -0
- package/dist/client/components/locale-switcher.mjs +251 -0
- package/dist/client/components/media/media-grid.mjs +314 -0
- package/dist/client/components/media/media-picker-dialog.mjs +563 -0
- package/dist/client/components/preview/live-preview-mode.mjs +503 -0
- package/dist/client/components/preview/preview-pane.mjs +388 -0
- package/dist/client/components/primitives/asset-preview.mjs +771 -0
- package/dist/client/components/primitives/checkbox-input.mjs +59 -0
- package/dist/client/components/primitives/date-input.mjs +461 -0
- package/dist/client/components/primitives/dropzone.mjs +368 -0
- package/dist/client/components/primitives/number-input.mjs +117 -0
- package/dist/client/components/primitives/select-multi.mjs +590 -0
- package/dist/client/components/primitives/select-single.mjs +473 -0
- package/dist/client/components/primitives/text-input.mjs +45 -0
- package/dist/client/components/primitives/textarea-input.mjs +43 -0
- package/dist/client/components/primitives/time-input.mjs +145 -0
- package/dist/client/components/primitives/toggle-input.mjs +51 -0
- package/dist/client/components/primitives/types.mjs +12 -0
- package/dist/client/components/sheets/resource-sheet.mjs +86 -0
- package/dist/client/components/ui/accordion.mjs +169 -0
- package/dist/client/components/ui/alert.mjs +85 -0
- package/dist/client/components/ui/badge.mjs +76 -0
- package/dist/client/components/ui/button.mjs +84 -0
- package/dist/client/components/ui/card.mjs +206 -0
- package/dist/client/components/ui/checkbox.mjs +82 -0
- package/dist/client/components/ui/command.mjs +239 -0
- package/dist/client/components/ui/dialog.mjs +296 -0
- package/dist/client/components/ui/drawer.mjs +278 -0
- package/dist/client/components/ui/dropdown-menu.mjs +315 -0
- package/dist/client/components/ui/empty-state.mjs +99 -0
- package/dist/client/components/ui/field.mjs +354 -0
- package/dist/client/components/ui/input-group.mjs +201 -0
- package/dist/client/components/ui/input.mjs +46 -0
- package/dist/client/components/ui/kbd.mjs +53 -0
- package/dist/client/components/ui/label.mjs +45 -0
- package/dist/client/components/ui/popover.mjs +176 -0
- package/dist/client/components/ui/responsive-dialog.mjs +308 -0
- package/dist/client/components/ui/search-input.mjs +139 -0
- package/dist/client/components/ui/select.mjs +325 -0
- package/dist/client/components/ui/separator.mjs +47 -0
- package/dist/client/components/ui/sheet.mjs +280 -0
- package/dist/client/components/ui/sidebar.mjs +774 -0
- package/dist/client/components/ui/skeleton.mjs +40 -0
- package/dist/client/components/ui/sonner.d.mts +13 -0
- package/dist/client/components/ui/sonner.mjs +85 -0
- package/dist/client/components/ui/spinner.mjs +52 -0
- package/dist/client/components/ui/switch.mjs +58 -0
- package/dist/client/components/ui/table.mjs +276 -0
- package/dist/client/components/ui/tabs.mjs +160 -0
- package/dist/client/components/ui/textarea.mjs +40 -0
- package/dist/client/components/ui/toolbar.mjs +136 -0
- package/dist/client/components/ui/tooltip.mjs +146 -0
- package/dist/client/components/widgets/chart-widget.mjs +582 -0
- package/dist/client/components/widgets/progress-widget.mjs +200 -0
- package/dist/client/components/widgets/quick-actions-widget.mjs +209 -0
- package/dist/client/components/widgets/recent-items-widget.mjs +196 -0
- package/dist/client/components/widgets/stats-widget.mjs +261 -0
- package/dist/client/components/widgets/table-widget.mjs +273 -0
- package/dist/client/components/widgets/timeline-widget.mjs +279 -0
- package/dist/client/components/widgets/value-widget.mjs +312 -0
- package/dist/client/components/widgets/widget-skeletons.mjs +427 -0
- package/dist/client/contexts/breadcrumb-context.mjs +60 -0
- package/dist/client/contexts/focus-context.d.mts +87 -0
- package/dist/client/contexts/focus-context.mjs +250 -0
- package/dist/client/hooks/typed-hooks.d.mts +110 -0
- package/dist/client/hooks/typed-hooks.mjs +888 -0
- package/dist/client/hooks/use-action.mjs +329 -0
- package/dist/client/hooks/use-admin-config.mjs +69 -0
- package/dist/client/hooks/use-admin-preferences.mjs +171 -0
- package/dist/client/hooks/use-admin-routes.mjs +130 -0
- package/dist/client/hooks/use-audit-history.mjs +157 -0
- package/dist/client/hooks/use-auth.d.mts +97 -0
- package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +9 -10
- package/dist/client/hooks/use-collection-fields.mjs +71 -0
- package/dist/client/hooks/use-collection-meta.mjs +153 -0
- package/dist/client/hooks/use-collection-schema.mjs +90 -0
- package/dist/client/hooks/use-collection-validation.mjs +88 -0
- package/dist/client/hooks/use-collection.d.mts +96 -0
- package/dist/client/hooks/use-collection.mjs +673 -0
- package/dist/client/hooks/use-current-user.d.mts +60 -0
- package/dist/client/hooks/use-current-user.mjs +79 -0
- package/dist/client/hooks/use-field-hooks.mjs +199 -0
- package/dist/client/hooks/use-field-options.d.mts +57 -0
- package/dist/client/hooks/use-field-options.mjs +269 -0
- package/dist/client/hooks/use-global-fields.mjs +58 -0
- package/dist/client/hooks/use-global-meta.mjs +105 -0
- package/dist/client/hooks/use-global-schema.mjs +53 -0
- package/dist/client/hooks/use-global.d.mts +51 -0
- package/dist/client/hooks/use-global.mjs +284 -0
- package/dist/client/hooks/use-locks.mjs +452 -0
- package/dist/client/hooks/use-media-query.d.mts +22 -0
- package/dist/client/hooks/use-media-query.mjs +81 -0
- package/dist/client/hooks/use-prefill-params.mjs +47 -0
- package/dist/client/hooks/use-questpie-query-options.mjs +50 -0
- package/dist/client/hooks/use-reactive-fields.d.mts +78 -0
- package/dist/client/hooks/use-reactive-fields.mjs +201 -0
- package/dist/client/hooks/use-realtime-highlight.mjs +158 -0
- package/dist/client/hooks/use-saved-views.mjs +140 -0
- package/dist/client/hooks/use-search-param-toggle.d.mts +12 -0
- package/dist/client/hooks/use-search-param-toggle.mjs +115 -0
- package/dist/client/hooks/use-search.mjs +258 -0
- package/dist/client/hooks/use-server-actions.mjs +191 -0
- package/dist/client/hooks/use-server-validation.mjs +291 -0
- package/dist/client/hooks/use-server-widget-data.d.mts +25 -0
- package/dist/client/hooks/use-server-widget-data.mjs +65 -0
- package/dist/client/hooks/use-setup-status.d.mts +38 -0
- package/dist/client/hooks/use-setup-status.mjs +62 -0
- package/dist/client/hooks/use-sidebar-search-param.d.mts +9 -0
- package/dist/client/hooks/use-sidebar-search-param.mjs +104 -0
- package/dist/client/hooks/use-transition-stage.mjs +125 -0
- package/dist/client/hooks/use-upload-collection.mjs +31 -0
- package/dist/client/hooks/use-upload.mjs +209 -0
- package/dist/client/hooks/use-validation-error-map.mjs +57 -0
- package/dist/client/hooks/use-view-state.mjs +479 -0
- package/dist/client/i18n/hooks.mjs +284 -0
- package/dist/client/i18n/intl-cache.mjs +64 -0
- package/dist/client/i18n/messages.mjs +6 -0
- package/dist/client/i18n/simple.d.mts +21 -0
- package/dist/client/i18n/simple.mjs +156 -0
- package/dist/client/i18n/types.d.mts +109 -0
- package/dist/client/lib/cookies.mjs +9 -0
- package/dist/client/lib/events.mjs +5 -0
- package/dist/client/lib/render-profiler.mjs +51 -0
- package/dist/client/lib/utils.mjs +23 -0
- package/dist/client/preview/block-scope-context.d.mts +73 -0
- package/dist/client/preview/block-scope-context.mjs +116 -0
- package/dist/client/preview/index.d.mts +5 -0
- package/dist/client/preview/preview-banner.d.mts +45 -0
- package/dist/client/preview/preview-banner.mjs +134 -0
- package/dist/client/preview/preview-field.d.mts +107 -0
- package/dist/client/preview/preview-field.mjs +227 -0
- package/dist/client/preview/types.d.mts +114 -0
- package/dist/client/preview/types.mjs +20 -0
- package/dist/client/preview/use-collection-preview.d.mts +70 -0
- package/dist/client/preview/use-collection-preview.mjs +163 -0
- package/dist/client/runtime/content-locales-provider.d.mts +1 -0
- package/dist/client/runtime/content-locales-provider.mjs +136 -0
- package/dist/client/runtime/index.d.mts +5 -0
- package/dist/client/runtime/index.mjs +6 -0
- package/dist/client/runtime/locale-scope.d.mts +2 -0
- package/dist/client/runtime/locale-scope.mjs +108 -0
- package/dist/client/runtime/provider.d.mts +203 -0
- package/dist/client/runtime/provider.mjs +393 -0
- package/dist/client/runtime/routes.d.mts +49 -0
- package/dist/client/runtime/routes.mjs +91 -0
- package/dist/client/runtime/translations-provider.mjs +242 -0
- package/dist/client/scope/index.d.mts +3 -0
- package/dist/client/scope/picker.d.mts +53 -0
- package/dist/client/scope/picker.mjs +395 -0
- package/dist/client/scope/provider.d.mts +103 -0
- package/dist/client/scope/provider.mjs +167 -0
- package/dist/client/scope/types.d.mts +111 -0
- package/dist/client/styles/index.css +344 -188
- package/dist/client/utils/auto-expand-fields.mjs +83 -0
- package/dist/client/utils/build-field-definitions-from-schema.mjs +259 -0
- package/dist/client/utils/dependency-tracker.mjs +61 -0
- package/dist/client/utils/detect-relations.mjs +45 -0
- package/dist/client/utils/locale-to-flag.d.mts +119 -0
- package/dist/client/utils/locale-to-flag.mjs +129 -0
- package/dist/client/utils/routes.mjs +195 -0
- package/dist/client/views/auth/accept-invite-form.d.mts +72 -0
- package/dist/client/views/auth/accept-invite-form.mjs +473 -0
- package/dist/client/views/auth/auth-layout.d.mts +43 -0
- package/dist/client/views/auth/auth-layout.mjs +116 -0
- package/dist/client/views/auth/forgot-password-form.d.mts +58 -0
- package/dist/client/views/auth/forgot-password-form.mjs +386 -0
- package/dist/client/views/auth/invite-form.mjs +497 -0
- package/dist/client/views/auth/login-form.d.mts +75 -0
- package/dist/client/views/auth/login-form.mjs +387 -0
- package/dist/client/views/auth/reset-password-form.d.mts +65 -0
- package/dist/client/views/auth/reset-password-form.mjs +515 -0
- package/dist/client/views/auth/setup-form.d.mts +60 -0
- package/dist/client/views/auth/setup-form.mjs +526 -0
- package/dist/client/views/collection/auto-form-fields.mjs +873 -0
- package/dist/client/views/collection/bulk-action-toolbar.mjs +480 -0
- package/dist/client/views/collection/cells/complex-cells.mjs +746 -0
- package/dist/client/views/collection/cells/primitive-cells.mjs +395 -0
- package/dist/client/views/collection/cells/relation-cells.mjs +260 -0
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +509 -0
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs +125 -0
- package/dist/client/views/collection/cells/shared/relation-chip.mjs +121 -0
- package/dist/client/views/collection/cells/upload-cells.mjs +28 -0
- package/dist/client/views/collection/columns/build-columns.mjs +195 -0
- package/dist/client/views/collection/columns/column-defaults.mjs +123 -0
- package/dist/client/views/collection/field-context.mjs +126 -0
- package/dist/client/views/collection/field-renderer.mjs +368 -0
- package/dist/client/views/collection/form-view.mjs +1566 -0
- package/dist/client/views/collection/table-view.mjs +832 -0
- package/dist/client/views/collection/view-skeletons.mjs +215 -0
- package/dist/client/views/common/global-search.mjs +700 -0
- package/dist/client/views/dashboard/dashboard-grid.mjs +881 -0
- package/dist/client/views/dashboard/dashboard-widget.mjs +265 -0
- package/dist/client/views/dashboard/widget-card.mjs +372 -0
- package/dist/client/views/globals/global-form-view.mjs +1306 -0
- package/dist/client/views/layout/admin-layout-provider.d.mts +137 -0
- package/dist/client/views/layout/admin-layout-provider.mjs +193 -0
- package/dist/client/views/layout/admin-layout.d.mts +133 -0
- package/dist/client/views/layout/admin-layout.mjs +302 -0
- package/dist/client/views/layout/admin-router.d.mts +93 -0
- package/dist/client/views/layout/admin-router.mjs +1254 -0
- package/dist/client/views/layout/admin-sidebar.d.mts +99 -0
- package/dist/client/views/layout/admin-sidebar.mjs +1379 -0
- package/dist/client/views/layout/admin-topbar.mjs +236 -0
- package/dist/client/views/pages/accept-invite-page.d.mts +66 -0
- package/dist/client/views/pages/accept-invite-page.mjs +349 -0
- package/dist/client/views/pages/dashboard-page.d.mts +43 -0
- package/dist/client/views/pages/dashboard-page.mjs +84 -0
- package/dist/client/views/pages/forgot-password-page.d.mts +56 -0
- package/dist/client/views/pages/forgot-password-page.mjs +152 -0
- package/dist/client/views/pages/invite-page.d.mts +70 -0
- package/dist/client/views/pages/invite-page.mjs +161 -0
- package/dist/client/views/pages/login-page.d.mts +69 -0
- package/dist/client/views/pages/login-page.mjs +193 -0
- package/dist/client/views/pages/reset-password-page.d.mts +63 -0
- package/dist/client/views/pages/reset-password-page.mjs +257 -0
- package/dist/client/views/pages/setup-page.d.mts +61 -0
- package/dist/client/views/pages/setup-page.mjs +156 -0
- package/dist/client-module.d.mts +3 -0
- package/dist/client-module.mjs +3 -0
- package/dist/client.d.mts +99 -3
- package/dist/client.mjs +52 -12
- package/dist/components/rich-text/index.d.mts +1 -0
- package/dist/components/rich-text/rich-text-renderer.d.mts +103 -0
- package/dist/components/rich-text/rich-text-renderer.mjs +237 -0
- package/dist/index.d.mts +59 -3
- package/dist/index.mjs +52 -12
- package/dist/plugin.d.mts +2 -0
- package/dist/plugin.mjs +3 -0
- package/dist/server/adapters/nextjs.d.mts +120 -0
- package/dist/server/adapters/nextjs.mjs +110 -0
- package/dist/server/adapters/tanstack.d.mts +132 -0
- package/dist/server/adapters/tanstack.mjs +89 -0
- package/dist/server/augmentation/actions.d.mts +279 -0
- package/dist/server/augmentation/common.d.mts +76 -0
- package/dist/server/augmentation/dashboard.d.mts +547 -0
- package/dist/server/augmentation/form-layout.d.mts +303 -0
- package/dist/server/augmentation/index.d.mts +44 -0
- package/dist/server/augmentation/index.mjs +10 -0
- package/dist/server/augmentation/sidebar.d.mts +181 -0
- package/dist/server/augmentation/views.d.mts +237 -0
- package/dist/server/augmentation.d.mts +7 -0
- package/dist/server/block/index.d.mts +4 -0
- package/dist/server/codegen/admin-client-template.mjs +93 -0
- package/dist/server/codegen/projection-validator.mjs +67 -0
- package/dist/server/fields/blocks.d.mts +71 -0
- package/dist/server/fields/blocks.mjs +151 -0
- package/dist/server/fields/index.d.mts +15 -0
- package/dist/server/fields/index.mjs +15 -0
- package/dist/server/fields/rich-text.d.mts +68 -0
- package/dist/server/fields/rich-text.mjs +147 -0
- package/dist/server/i18n/index.mjs +43 -0
- package/dist/server/i18n/messages/cs.mjs +461 -0
- package/dist/server/i18n/messages/de.mjs +461 -0
- package/dist/server/i18n/messages/en.mjs +707 -0
- package/dist/server/i18n/messages/es.mjs +461 -0
- package/dist/server/i18n/messages/fr.mjs +461 -0
- package/dist/server/i18n/messages/index.mjs +23 -0
- package/dist/server/i18n/messages/pl.mjs +461 -0
- package/dist/server/i18n/messages/pt.mjs +464 -0
- package/dist/server/i18n/messages/sk.mjs +689 -0
- package/dist/server/modules/admin/.generated/module.d.mts +52 -0
- package/dist/server/modules/admin/.generated/module.mjs +78 -0
- package/dist/server/modules/admin/.generated/registries.d.mts +22 -0
- package/dist/server/modules/admin/auth-helpers.d.mts +142 -0
- package/dist/server/modules/admin/auth-helpers.mjs +107 -0
- package/dist/server/modules/admin/block/block-builder.d.mts +383 -0
- package/dist/server/modules/admin/block/block-builder.mjs +315 -0
- package/dist/server/modules/admin/block/index.d.mts +3 -0
- package/dist/server/modules/admin/block/introspection.d.mts +89 -0
- package/dist/server/modules/admin/block/introspection.mjs +100 -0
- package/dist/server/modules/admin/block/prefetch.d.mts +78 -0
- package/dist/server/modules/admin/block/prefetch.mjs +241 -0
- package/dist/server/modules/admin/client/.generated/module.d.mts +94 -0
- package/dist/server/modules/admin/client/.generated/module.mjs +91 -0
- package/dist/server/modules/admin/client/components/badge.d.mts +1 -0
- package/dist/server/modules/admin/client/components/icon.d.mts +1 -0
- package/dist/server/modules/admin/client/fields/array.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/array.mjs +12 -0
- package/dist/server/modules/admin/client/fields/assetPreview.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/assetPreview.mjs +18 -0
- package/dist/server/modules/admin/client/fields/blocks.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/blocks.mjs +12 -0
- package/dist/server/modules/admin/client/fields/boolean.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/boolean.mjs +12 -0
- package/dist/server/modules/admin/client/fields/date.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/date.mjs +12 -0
- package/dist/server/modules/admin/client/fields/datetime.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/datetime.mjs +12 -0
- package/dist/server/modules/admin/client/fields/email.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/email.mjs +12 -0
- package/dist/server/modules/admin/client/fields/json.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/json.mjs +11 -0
- package/dist/server/modules/admin/client/fields/number.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/number.mjs +12 -0
- package/dist/server/modules/admin/client/fields/object.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/object.mjs +12 -0
- package/dist/server/modules/admin/client/fields/relation.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/relation.mjs +12 -0
- package/dist/server/modules/admin/client/fields/richText.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/richText.mjs +11 -0
- package/dist/server/modules/admin/client/fields/select.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/select.mjs +12 -0
- package/dist/server/modules/admin/client/fields/text.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/text.mjs +12 -0
- package/dist/server/modules/admin/client/fields/textarea.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/textarea.mjs +12 -0
- package/dist/server/modules/admin/client/fields/time.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/time.mjs +12 -0
- package/dist/server/modules/admin/client/fields/upload.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/upload.mjs +12 -0
- package/dist/server/modules/admin/client/fields/url.d.mts +6 -0
- package/dist/server/modules/admin/client/fields/url.mjs +12 -0
- package/dist/server/modules/admin/client/index.d.mts +1 -0
- package/dist/server/modules/admin/client/pages/dashboard.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/dashboard.mjs +11 -0
- package/dist/server/modules/admin/client/pages/forgotPassword.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/forgotPassword.mjs +11 -0
- package/dist/server/modules/admin/client/pages/login.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/login.mjs +11 -0
- package/dist/server/modules/admin/client/pages/resetPassword.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/resetPassword.mjs +11 -0
- package/dist/server/modules/admin/client/pages/setup.d.mts +6 -0
- package/dist/server/modules/admin/client/pages/setup.mjs +11 -0
- package/dist/server/modules/admin/client/views/collection-form.mjs +10 -0
- package/dist/server/modules/admin/client/views/collection-table.mjs +10 -0
- package/dist/server/modules/admin/client/views/global-form.mjs +10 -0
- package/dist/server/modules/admin/client/widgets/chart.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/chart.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/progress.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/progress.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/quickActions.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/quickActions.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/recentItems.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/recentItems.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/stats.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/stats.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/table.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/table.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/timeline.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/timeline.mjs +7 -0
- package/dist/server/modules/admin/client/widgets/value.d.mts +6 -0
- package/dist/server/modules/admin/client/widgets/value.mjs +7 -0
- package/dist/server/modules/admin/collections/account.d.mts +77 -0
- package/dist/server/modules/admin/collections/account.mjs +23 -0
- package/dist/server/modules/admin/collections/admin-locks.d.mts +90 -0
- package/dist/server/modules/admin/collections/admin-locks.mjs +16 -0
- package/dist/server/modules/admin/collections/admin-preferences.d.mts +69 -0
- package/dist/server/modules/admin/collections/admin-preferences.mjs +16 -0
- package/dist/server/modules/admin/collections/admin-saved-views.d.mts +83 -0
- package/dist/server/modules/admin/collections/admin-saved-views.mjs +16 -0
- package/dist/server/modules/admin/collections/apikey.d.mts +99 -0
- package/dist/server/modules/admin/collections/apikey.mjs +15 -0
- package/dist/server/modules/admin/collections/assets.d.mts +72 -0
- package/dist/server/modules/admin/collections/assets.mjs +71 -0
- package/dist/server/modules/admin/collections/session.d.mts +69 -0
- package/dist/server/modules/admin/collections/session.mjs +15 -0
- package/dist/server/modules/admin/collections/user.d.mts +85 -0
- package/dist/server/modules/admin/collections/user.mjs +204 -0
- package/dist/server/modules/admin/collections/verification.d.mts +63 -0
- package/dist/server/modules/admin/collections/verification.mjs +15 -0
- package/dist/server/modules/admin/components/badge.d.mts +10 -0
- package/dist/server/modules/admin/components/badge.mjs +10 -0
- package/dist/server/modules/admin/components/icon.d.mts +9 -0
- package/dist/server/modules/admin/components/icon.mjs +11 -0
- package/dist/server/modules/admin/config/admin.mjs +34 -0
- package/dist/server/modules/admin/dto/admin-config.dto.mjs +102 -0
- package/dist/server/modules/admin/factories.mjs +172 -0
- package/dist/server/modules/admin/index.d.mts +1093 -0
- package/dist/server/modules/admin/index.mjs +26 -0
- package/dist/server/modules/admin/modules.mjs +11 -0
- package/dist/server/modules/admin/plugin.mjs +13 -0
- package/dist/server/modules/admin/routes/admin-config.d.mts +28 -0
- package/dist/server/modules/admin/routes/admin-config.mjs +552 -0
- package/dist/server/modules/admin/routes/execute-action.d.mts +92 -0
- package/dist/server/modules/admin/routes/execute-action.mjs +433 -0
- package/dist/server/modules/admin/routes/locales.d.mts +18 -0
- package/dist/server/modules/admin/routes/locales.mjs +69 -0
- package/dist/server/modules/admin/routes/preview.d.mts +80 -0
- package/dist/server/modules/admin/routes/preview.mjs +230 -0
- package/dist/server/modules/admin/routes/reactive.d.mts +74 -0
- package/dist/server/modules/admin/routes/reactive.mjs +350 -0
- package/dist/server/modules/admin/routes/route-helpers.d.mts +23 -0
- package/dist/server/modules/admin/routes/route-helpers.mjs +76 -0
- package/dist/server/modules/admin/routes/setup.d.mts +63 -0
- package/dist/server/modules/admin/routes/setup.mjs +114 -0
- package/dist/server/modules/admin/routes/translations.d.mts +26 -0
- package/dist/server/modules/admin/routes/translations.mjs +114 -0
- package/dist/server/modules/admin/routes/widget-data.d.mts +32 -0
- package/dist/server/modules/admin/routes/widget-data.mjs +62 -0
- package/dist/server/modules/admin/views/form.d.mts +8 -0
- package/dist/server/modules/admin/views/form.mjs +7 -0
- package/dist/server/modules/admin/views/global-form.d.mts +8 -0
- package/dist/server/modules/admin/views/global-form.mjs +7 -0
- package/dist/server/modules/admin/views/table.d.mts +8 -0
- package/dist/server/modules/admin/views/table.mjs +7 -0
- package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +37 -0
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +55 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +99 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.mjs +38 -0
- package/dist/server/modules/audit/.generated/module.d.mts +60 -0
- package/dist/server/modules/audit/.generated/module.mjs +30 -0
- package/dist/server/modules/audit/collections/audit-log.d.mts +214 -0
- package/dist/server/modules/audit/collections/audit-log.mjs +107 -0
- package/dist/server/modules/audit/config/admin.mjs +21 -0
- package/dist/server/modules/audit/config/app.mjs +262 -0
- package/dist/server/modules/audit/index.d.mts +2 -0
- package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +13 -0
- package/dist/server/modules/audit/jobs/audit-cleanup.mjs +28 -0
- package/dist/server/plugin.d.mts +26 -0
- package/dist/server/plugin.mjs +385 -0
- package/dist/server/proxy-factories.d.mts +85 -0
- package/dist/server/proxy-factories.mjs +302 -0
- package/dist/server/registry-helpers.d.mts +83 -0
- package/dist/server/registry-helpers.mjs +104 -0
- package/dist/server.d.mts +33 -250
- package/dist/server.mjs +22 -832
- package/dist/shared/preview-utils.d.mts +53 -0
- package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -3
- package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
- package/dist/shared.d.mts +3 -57
- package/dist/shared.mjs +1 -1
- package/package.json +56 -51
- package/skills/questpie-admin/SKILL.md +397 -0
- package/skills/questpie-admin/blocks/SKILL.md +305 -0
- package/skills/questpie-admin/custom-ui/SKILL.md +307 -0
- package/skills/questpie-admin/views/SKILL.md +442 -0
- package/dist/auth-layout-M8K8_q5R.mjs +0 -181
- package/dist/auth-layout-M8K8_q5R.mjs.map +0 -1
- package/dist/bulk-upload-dialog-D7w7W1Hl.mjs +0 -273
- package/dist/bulk-upload-dialog-D7w7W1Hl.mjs.map +0 -1
- package/dist/card-BKHjBQfw.mjs +0 -58
- package/dist/card-BKHjBQfw.mjs.map +0 -1
- package/dist/client-D1DqawtP.d.mts +0 -13403
- package/dist/client-D1DqawtP.d.mts.map +0 -1
- package/dist/client-njX1rZmi.mjs +0 -22612
- package/dist/client-njX1rZmi.mjs.map +0 -1
- package/dist/content-locales-provider-BXvuIgfg.mjs +0 -1650
- package/dist/content-locales-provider-BXvuIgfg.mjs.map +0 -1
- package/dist/dashboard-page-B4PGEdc2.mjs +0 -2500
- package/dist/dashboard-page-B4PGEdc2.mjs.map +0 -1
- package/dist/dashboard-page-mCY0pgZv.mjs +0 -3
- package/dist/dropzone-Do3awXKd.mjs +0 -634
- package/dist/dropzone-Do3awXKd.mjs.map +0 -1
- package/dist/forgot-password-page-Bcp-An4Y.mjs +0 -221
- package/dist/forgot-password-page-Bcp-An4Y.mjs.map +0 -1
- package/dist/forgot-password-page-CEwsdLwn.mjs +0 -3
- package/dist/index-B4H3amCD.d.mts +0 -2753
- package/dist/index-B4H3amCD.d.mts.map +0 -1
- package/dist/login-page-BUnpCbCa.mjs +0 -3
- package/dist/login-page-CP4gA-dl.mjs +0 -298
- package/dist/login-page-CP4gA-dl.mjs.map +0 -1
- package/dist/preview-utils-BKQ9-TMa.mjs.map +0 -1
- package/dist/reset-password-page-BqfDmLxA.mjs +0 -281
- package/dist/reset-password-page-BqfDmLxA.mjs.map +0 -1
- package/dist/reset-password-page-CufHz3h3.mjs +0 -3
- package/dist/runtime-6VZM878K.mjs +0 -69
- package/dist/runtime-6VZM878K.mjs.map +0 -1
- package/dist/saved-views.types-BMsz5mCy.d.mts.map +0 -1
- package/dist/server.d.mts.map +0 -1
- package/dist/server.mjs.map +0 -1
- package/dist/setup-page-BNNzt_Z6.mjs +0 -3
- package/dist/setup-page-YAP_fzqh.mjs +0 -264
- package/dist/setup-page-YAP_fzqh.mjs.map +0 -1
- package/dist/shared.d.mts.map +0 -1
- package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Questpie } from "questpie";
|
|
2
|
+
|
|
3
|
+
//#region src/server/adapters/tanstack.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Options for TanStack auth guard
|
|
7
|
+
*/
|
|
8
|
+
interface TanStackAuthGuardOptions {
|
|
9
|
+
/**
|
|
10
|
+
* The app instance with auth configured
|
|
11
|
+
*/
|
|
12
|
+
app: Questpie<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Path to redirect to when not authenticated
|
|
15
|
+
* @default "/admin/login"
|
|
16
|
+
*/
|
|
17
|
+
loginPath?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Required role for access
|
|
20
|
+
* @default "admin"
|
|
21
|
+
*/
|
|
22
|
+
requiredRole?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Query parameter name for redirect URL
|
|
25
|
+
* @default "redirect"
|
|
26
|
+
*/
|
|
27
|
+
redirectParam?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Context passed to TanStack Router beforeLoad
|
|
31
|
+
*/
|
|
32
|
+
interface BeforeLoadContext {
|
|
33
|
+
context: {
|
|
34
|
+
request: Request;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
};
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a TanStack Router beforeLoad guard for admin authentication.
|
|
41
|
+
*
|
|
42
|
+
* Returns a function that can be used as beforeLoad in route definitions.
|
|
43
|
+
* Throws a redirect Response when authentication fails.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { createFileRoute } from "@tanstack/react-router";
|
|
48
|
+
* import { createTanStackAuthGuard } from "@questpie/admin/server/adapters/tanstack";
|
|
49
|
+
* import { app } from "@/questpie/server/app";
|
|
50
|
+
*
|
|
51
|
+
* export const Route = createFileRoute("/admin")({
|
|
52
|
+
* beforeLoad: createTanStackAuthGuard({
|
|
53
|
+
* app,
|
|
54
|
+
* loginPath: "/admin/login",
|
|
55
|
+
* requiredRole: "admin",
|
|
56
|
+
* }),
|
|
57
|
+
* component: AdminLayout,
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example With custom context
|
|
62
|
+
* ```ts
|
|
63
|
+
* export const Route = createFileRoute("/admin")({
|
|
64
|
+
* beforeLoad: async (ctx) => {
|
|
65
|
+
* // Run auth guard
|
|
66
|
+
* await createTanStackAuthGuard({ app })(ctx);
|
|
67
|
+
*
|
|
68
|
+
* // Add additional context
|
|
69
|
+
* return { user: ctx.context.user };
|
|
70
|
+
* },
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function createTanStackAuthGuard({
|
|
75
|
+
app,
|
|
76
|
+
loginPath,
|
|
77
|
+
requiredRole,
|
|
78
|
+
redirectParam
|
|
79
|
+
}: TanStackAuthGuardOptions): ({
|
|
80
|
+
context
|
|
81
|
+
}: BeforeLoadContext) => Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Create a TanStack Router loader that injects the admin session into context.
|
|
84
|
+
*
|
|
85
|
+
* Use this when you need access to the session in your components.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* import { createTanStackSessionLoader } from "@questpie/admin/server/adapters/tanstack";
|
|
90
|
+
*
|
|
91
|
+
* export const Route = createFileRoute("/admin")({
|
|
92
|
+
* loader: createTanStackSessionLoader({ app }),
|
|
93
|
+
* component: AdminLayout,
|
|
94
|
+
* });
|
|
95
|
+
*
|
|
96
|
+
* function AdminLayout() {
|
|
97
|
+
* const { session } = Route.useLoaderData();
|
|
98
|
+
* return <div>Hello {session?.user?.name}</div>;
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
declare function createTanStackSessionLoader({
|
|
103
|
+
app
|
|
104
|
+
}: {
|
|
105
|
+
app: Questpie<any>;
|
|
106
|
+
}): ({
|
|
107
|
+
context
|
|
108
|
+
}: BeforeLoadContext) => Promise<{
|
|
109
|
+
session: {
|
|
110
|
+
session: {
|
|
111
|
+
id: string;
|
|
112
|
+
createdAt: Date;
|
|
113
|
+
updatedAt: Date;
|
|
114
|
+
userId: string;
|
|
115
|
+
expiresAt: Date;
|
|
116
|
+
token: string;
|
|
117
|
+
ipAddress?: string | null | undefined | undefined;
|
|
118
|
+
userAgent?: string | null | undefined | undefined;
|
|
119
|
+
};
|
|
120
|
+
user: {
|
|
121
|
+
id: string;
|
|
122
|
+
createdAt: Date;
|
|
123
|
+
updatedAt: Date;
|
|
124
|
+
email: string;
|
|
125
|
+
emailVerified: boolean;
|
|
126
|
+
name: string;
|
|
127
|
+
image?: string | null | undefined | undefined;
|
|
128
|
+
};
|
|
129
|
+
} | null;
|
|
130
|
+
}>;
|
|
131
|
+
//#endregion
|
|
132
|
+
export { BeforeLoadContext, TanStackAuthGuardOptions, createTanStackAuthGuard, createTanStackSessionLoader };
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { requireAdminAuth } from "../modules/admin/auth-helpers.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/server/adapters/tanstack.ts
|
|
4
|
+
/**
|
|
5
|
+
* Create a TanStack Router beforeLoad guard for admin authentication.
|
|
6
|
+
*
|
|
7
|
+
* Returns a function that can be used as beforeLoad in route definitions.
|
|
8
|
+
* Throws a redirect Response when authentication fails.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { createFileRoute } from "@tanstack/react-router";
|
|
13
|
+
* import { createTanStackAuthGuard } from "@questpie/admin/server/adapters/tanstack";
|
|
14
|
+
* import { app } from "@/questpie/server/app";
|
|
15
|
+
*
|
|
16
|
+
* export const Route = createFileRoute("/admin")({
|
|
17
|
+
* beforeLoad: createTanStackAuthGuard({
|
|
18
|
+
* app,
|
|
19
|
+
* loginPath: "/admin/login",
|
|
20
|
+
* requiredRole: "admin",
|
|
21
|
+
* }),
|
|
22
|
+
* component: AdminLayout,
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example With custom context
|
|
27
|
+
* ```ts
|
|
28
|
+
* export const Route = createFileRoute("/admin")({
|
|
29
|
+
* beforeLoad: async (ctx) => {
|
|
30
|
+
* // Run auth guard
|
|
31
|
+
* await createTanStackAuthGuard({ app })(ctx);
|
|
32
|
+
*
|
|
33
|
+
* // Add additional context
|
|
34
|
+
* return { user: ctx.context.user };
|
|
35
|
+
* },
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
function createTanStackAuthGuard({ app, loginPath = "/admin/login", requiredRole = "admin", redirectParam = "redirect" }) {
|
|
40
|
+
return async function beforeLoad({ context }) {
|
|
41
|
+
const request = context.request;
|
|
42
|
+
if (!request) {
|
|
43
|
+
console.warn("createTanStackAuthGuard: No request in context. Make sure you're using TanStack Start with SSR enabled.");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const redirect = await requireAdminAuth({
|
|
47
|
+
request,
|
|
48
|
+
app,
|
|
49
|
+
loginPath,
|
|
50
|
+
requiredRole,
|
|
51
|
+
redirectParam
|
|
52
|
+
});
|
|
53
|
+
if (redirect) throw redirect;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a TanStack Router loader that injects the admin session into context.
|
|
58
|
+
*
|
|
59
|
+
* Use this when you need access to the session in your components.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* import { createTanStackSessionLoader } from "@questpie/admin/server/adapters/tanstack";
|
|
64
|
+
*
|
|
65
|
+
* export const Route = createFileRoute("/admin")({
|
|
66
|
+
* loader: createTanStackSessionLoader({ app }),
|
|
67
|
+
* component: AdminLayout,
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* function AdminLayout() {
|
|
71
|
+
* const { session } = Route.useLoaderData();
|
|
72
|
+
* return <div>Hello {session?.user?.name}</div>;
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
function createTanStackSessionLoader({ app }) {
|
|
77
|
+
return async function loader({ context }) {
|
|
78
|
+
const request = context.request;
|
|
79
|
+
if (!request || !app.auth) return { session: null };
|
|
80
|
+
try {
|
|
81
|
+
return { session: await app.auth.api.getSession({ headers: request.headers }) ?? null };
|
|
82
|
+
} catch {
|
|
83
|
+
return { session: null };
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
export { createTanStackAuthGuard, createTanStackSessionLoader };
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { ComponentReference } from "./common.mjs";
|
|
2
|
+
import { ComponentFactory } from "./views.mjs";
|
|
3
|
+
import { I18nText } from "questpie/shared";
|
|
4
|
+
|
|
5
|
+
//#region src/server/augmentation/actions.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Action result types returned from action handlers.
|
|
9
|
+
*/
|
|
10
|
+
type ServerActionResult = ServerActionSuccess | ServerActionError | ServerActionRedirect | ServerActionDownload;
|
|
11
|
+
/**
|
|
12
|
+
* Successful action result
|
|
13
|
+
*/
|
|
14
|
+
interface ServerActionSuccess {
|
|
15
|
+
type: "success";
|
|
16
|
+
/** Toast notification to show */
|
|
17
|
+
toast?: {
|
|
18
|
+
message: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Side effects to trigger */
|
|
22
|
+
effects?: ServerActionEffects;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Error action result
|
|
26
|
+
*/
|
|
27
|
+
interface ServerActionError {
|
|
28
|
+
type: "error";
|
|
29
|
+
/** Toast notification to show */
|
|
30
|
+
toast?: {
|
|
31
|
+
message: string;
|
|
32
|
+
title?: string;
|
|
33
|
+
};
|
|
34
|
+
/** Field-level errors */
|
|
35
|
+
errors?: Record<string, string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Redirect action result
|
|
39
|
+
*/
|
|
40
|
+
interface ServerActionRedirect {
|
|
41
|
+
type: "redirect";
|
|
42
|
+
/** URL to redirect to */
|
|
43
|
+
url: string;
|
|
44
|
+
/** Open in new tab */
|
|
45
|
+
external?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Download action result
|
|
49
|
+
*/
|
|
50
|
+
interface ServerActionDownload {
|
|
51
|
+
type: "download";
|
|
52
|
+
/** File data */
|
|
53
|
+
file: {
|
|
54
|
+
name: string;
|
|
55
|
+
content: string | Uint8Array;
|
|
56
|
+
mimeType: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Action side effects
|
|
61
|
+
*/
|
|
62
|
+
interface ServerActionEffects {
|
|
63
|
+
/** Close the action modal */
|
|
64
|
+
closeModal?: boolean;
|
|
65
|
+
/** Invalidate queries (true = all, string[] = specific collections) */
|
|
66
|
+
invalidate?: boolean | string[];
|
|
67
|
+
/** Redirect after success */
|
|
68
|
+
redirect?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Action handler context
|
|
72
|
+
*/
|
|
73
|
+
interface ServerActionContext<TData = Record<string, unknown>> {
|
|
74
|
+
/** Form data submitted */
|
|
75
|
+
data: TData;
|
|
76
|
+
/** Item ID (for single-item actions) */
|
|
77
|
+
itemId?: string;
|
|
78
|
+
/** Item IDs (for bulk actions) */
|
|
79
|
+
itemIds?: string[];
|
|
80
|
+
/** Auth instance (Better Auth API) */
|
|
81
|
+
auth: any;
|
|
82
|
+
/** Collection CRUD APIs */
|
|
83
|
+
collections: any;
|
|
84
|
+
/** Global CRUD APIs */
|
|
85
|
+
globals: any;
|
|
86
|
+
/** Database client */
|
|
87
|
+
db: unknown;
|
|
88
|
+
/** Current user session */
|
|
89
|
+
session?: unknown;
|
|
90
|
+
/** Current locale */
|
|
91
|
+
locale?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Action handler function type
|
|
95
|
+
*/
|
|
96
|
+
type ServerActionHandler<TData = Record<string, unknown>> = (ctx: ServerActionContext<TData>) => Promise<ServerActionResult> | ServerActionResult;
|
|
97
|
+
/**
|
|
98
|
+
* Server-side action form field definition.
|
|
99
|
+
* Can be either a field definition from the registry or a simple config object.
|
|
100
|
+
*/
|
|
101
|
+
type ServerActionFormField = ServerActionFormFieldConfig | ServerActionFormFieldDefinition;
|
|
102
|
+
/**
|
|
103
|
+
* Simple field config for action forms (when not using field registry)
|
|
104
|
+
*/
|
|
105
|
+
interface ServerActionFormFieldConfig {
|
|
106
|
+
/** Field type */
|
|
107
|
+
type: string;
|
|
108
|
+
/** Field label */
|
|
109
|
+
label?: I18nText;
|
|
110
|
+
/** Field description */
|
|
111
|
+
description?: I18nText;
|
|
112
|
+
/** Whether field is required */
|
|
113
|
+
required?: boolean;
|
|
114
|
+
/** Default value */
|
|
115
|
+
default?: unknown;
|
|
116
|
+
/** Field-specific options */
|
|
117
|
+
options?: unknown;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Field definition from field registry (has getMetadata method)
|
|
121
|
+
*/
|
|
122
|
+
interface ServerActionFormFieldDefinition {
|
|
123
|
+
/** Field definition state */
|
|
124
|
+
state: {
|
|
125
|
+
type?: string;
|
|
126
|
+
config?: {
|
|
127
|
+
label?: I18nText;
|
|
128
|
+
description?: I18nText;
|
|
129
|
+
required?: boolean;
|
|
130
|
+
[key: string]: unknown;
|
|
131
|
+
};
|
|
132
|
+
/** @deprecated Use state.config.label instead */
|
|
133
|
+
label?: I18nText;
|
|
134
|
+
/** @deprecated Use state.config.description instead */
|
|
135
|
+
description?: I18nText;
|
|
136
|
+
/** @deprecated Use state.config.required instead */
|
|
137
|
+
required?: boolean;
|
|
138
|
+
};
|
|
139
|
+
/** Get metadata for introspection */
|
|
140
|
+
getMetadata(): {
|
|
141
|
+
type: string;
|
|
142
|
+
label?: I18nText;
|
|
143
|
+
description?: I18nText;
|
|
144
|
+
required?: boolean;
|
|
145
|
+
};
|
|
146
|
+
/** Generate Zod schema for validation */
|
|
147
|
+
toZodSchema(): unknown;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Server-side action form configuration
|
|
151
|
+
*/
|
|
152
|
+
interface ServerActionForm {
|
|
153
|
+
/** Form dialog title */
|
|
154
|
+
title: I18nText;
|
|
155
|
+
/** Form dialog description */
|
|
156
|
+
description?: I18nText;
|
|
157
|
+
/** Form fields */
|
|
158
|
+
fields: Record<string, ServerActionFormField>;
|
|
159
|
+
/** Submit button label */
|
|
160
|
+
submitLabel?: I18nText;
|
|
161
|
+
/** Cancel button label */
|
|
162
|
+
cancelLabel?: I18nText;
|
|
163
|
+
/** Dialog width */
|
|
164
|
+
width?: "sm" | "md" | "lg" | "xl";
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Server-side action definition
|
|
168
|
+
*/
|
|
169
|
+
interface ServerActionDefinition<TData = Record<string, unknown>> {
|
|
170
|
+
/** Unique action ID */
|
|
171
|
+
id: string;
|
|
172
|
+
/** Display label */
|
|
173
|
+
label: I18nText;
|
|
174
|
+
/** Action description */
|
|
175
|
+
description?: I18nText;
|
|
176
|
+
/** Icon reference */
|
|
177
|
+
icon?: ComponentReference;
|
|
178
|
+
/** Button variant */
|
|
179
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | "ghost";
|
|
180
|
+
/** Where the action appears */
|
|
181
|
+
scope?: "single" | "bulk" | "header" | "row";
|
|
182
|
+
/** Form configuration (for actions with input) */
|
|
183
|
+
form?: ServerActionForm;
|
|
184
|
+
/** Confirmation dialog */
|
|
185
|
+
confirmation?: {
|
|
186
|
+
title: I18nText;
|
|
187
|
+
description?: I18nText;
|
|
188
|
+
confirmLabel?: I18nText;
|
|
189
|
+
cancelLabel?: I18nText;
|
|
190
|
+
destructive?: boolean;
|
|
191
|
+
};
|
|
192
|
+
/** Action handler (runs on server) */
|
|
193
|
+
handler: ServerActionHandler<TData>;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Built-in action types
|
|
197
|
+
*/
|
|
198
|
+
type BuiltinActionType = "create" | "save" | "delete" | "deleteMany" | "restore" | "restoreMany" | "duplicate";
|
|
199
|
+
/**
|
|
200
|
+
* Server-side actions configuration for a collection
|
|
201
|
+
*/
|
|
202
|
+
interface ServerActionsConfig {
|
|
203
|
+
/** Built-in actions to enable */
|
|
204
|
+
builtin?: BuiltinActionType[];
|
|
205
|
+
/** Custom actions */
|
|
206
|
+
custom?: ServerActionDefinition[];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Context for actions config function.
|
|
210
|
+
*
|
|
211
|
+
* Uses the same field registry as collections, so you can use `f.text()`, `f.select()` etc.
|
|
212
|
+
* for action form fields.
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* ```ts
|
|
216
|
+
* .actions(({ a, c, f }) => ({
|
|
217
|
+
* custom: [
|
|
218
|
+
* a.action({
|
|
219
|
+
* id: "send-email",
|
|
220
|
+
* label: { en: "Send Email" },
|
|
221
|
+
* form: {
|
|
222
|
+
* title: { en: "Send Email" },
|
|
223
|
+
* fields: {
|
|
224
|
+
* subject: f.text({ label: { en: "Subject" }, required: true }),
|
|
225
|
+
* message: f.textarea({ label: { en: "Message" } }),
|
|
226
|
+
* priority: f.select({
|
|
227
|
+
* label: { en: "Priority" },
|
|
228
|
+
* options: [
|
|
229
|
+
* { value: "low", label: { en: "Low" } },
|
|
230
|
+
* { value: "high", label: { en: "High" } },
|
|
231
|
+
* ],
|
|
232
|
+
* }),
|
|
233
|
+
* },
|
|
234
|
+
* },
|
|
235
|
+
* handler: async ({ data }) => {
|
|
236
|
+
* // data.subject, data.message, data.priority are typed
|
|
237
|
+
* return { type: "success" };
|
|
238
|
+
* },
|
|
239
|
+
* }),
|
|
240
|
+
* ],
|
|
241
|
+
* }))
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
interface ActionsConfigContext<_TFields extends Record<string, unknown> = Record<string, unknown>, TComponents extends Record<string, any> | string = string> {
|
|
245
|
+
/** Action builders */
|
|
246
|
+
a: {
|
|
247
|
+
/** Enable create action */
|
|
248
|
+
create: () => BuiltinActionType;
|
|
249
|
+
/** Enable save action */
|
|
250
|
+
save: () => BuiltinActionType;
|
|
251
|
+
/** Enable delete action */
|
|
252
|
+
delete: () => BuiltinActionType;
|
|
253
|
+
/** Enable delete many action */
|
|
254
|
+
deleteMany: () => BuiltinActionType;
|
|
255
|
+
/** Enable restore action */
|
|
256
|
+
restore: () => BuiltinActionType;
|
|
257
|
+
/** Enable restore many action */
|
|
258
|
+
restoreMany: () => BuiltinActionType;
|
|
259
|
+
/** Enable duplicate action */
|
|
260
|
+
duplicate: () => BuiltinActionType;
|
|
261
|
+
/** Define a custom action */
|
|
262
|
+
action: <TData = Record<string, unknown>>(def: Omit<ServerActionDefinition<TData>, "scope"> & {
|
|
263
|
+
scope?: "single" | "row";
|
|
264
|
+
}) => ServerActionDefinition<TData>;
|
|
265
|
+
/** Define a bulk action */
|
|
266
|
+
bulkAction: <TData = Record<string, unknown>>(def: Omit<ServerActionDefinition<TData>, "scope">) => ServerActionDefinition<TData>;
|
|
267
|
+
/** Define a header action */
|
|
268
|
+
headerAction: <TData = Record<string, unknown>>(def: Omit<ServerActionDefinition<TData>, "scope">) => ServerActionDefinition<TData>;
|
|
269
|
+
};
|
|
270
|
+
/** Component helpers (from registered component registry) */
|
|
271
|
+
c: ComponentFactory<TComponents>;
|
|
272
|
+
/**
|
|
273
|
+
* Field proxy from field registry.
|
|
274
|
+
* Use the same field types as in collections: f.text(), f.select(), etc.
|
|
275
|
+
*/
|
|
276
|
+
f: Record<string, (config?: Record<string, unknown>) => ServerActionFormField>;
|
|
277
|
+
}
|
|
278
|
+
//#endregion
|
|
279
|
+
export { ActionsConfigContext, BuiltinActionType, ServerActionContext, ServerActionDefinition, ServerActionDownload, ServerActionEffects, ServerActionError, ServerActionForm, ServerActionFormField, ServerActionFormFieldConfig, ServerActionFormFieldDefinition, ServerActionHandler, ServerActionRedirect, ServerActionResult, ServerActionSuccess, ServerActionsConfig };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
//#region src/server/augmentation/common.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Common Admin Types
|
|
4
|
+
*
|
|
5
|
+
* Base types used across admin augmentation: component references,
|
|
6
|
+
* component type registry, locale configuration, and action references.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Admin locale configuration for UI language support.
|
|
10
|
+
* Separate from content locales - UI can have different languages than content.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* .adminLocale({
|
|
15
|
+
* locales: ["en", "sk"], // UI available in 2 languages
|
|
16
|
+
* defaultLocale: "en",
|
|
17
|
+
* })
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
interface AdminLocaleConfig {
|
|
21
|
+
/** Available UI locales for admin interface */
|
|
22
|
+
locales: string[];
|
|
23
|
+
/** Default UI locale */
|
|
24
|
+
defaultLocale: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reference to a server-registered component.
|
|
28
|
+
* Used for icons, badges, and other UI elements defined on server.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* { type: "icon", props: { name: "ph:users" } }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
interface ComponentReference<TType extends string = string, TProps extends Record<string, unknown> = Record<string, unknown>> {
|
|
36
|
+
type: TType;
|
|
37
|
+
props: TProps;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Open augmentation point for component type names.
|
|
41
|
+
* Codegen augments this interface from module-contributed component maps,
|
|
42
|
+
* so user code gets autocomplete for valid component type names.
|
|
43
|
+
*
|
|
44
|
+
* When no modules are loaded (empty registry), `ComponentType` falls back to `string`.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* // Generated by codegen:
|
|
49
|
+
* declare module "@questpie/admin/server" {
|
|
50
|
+
* interface ComponentTypeRegistry extends Record<_ComponentsNames_Strict, {}> {}
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* // Third-party plugin can extend:
|
|
54
|
+
* declare module "@questpie/admin/server" {
|
|
55
|
+
* interface ComponentTypeRegistry {
|
|
56
|
+
* avatar: {};
|
|
57
|
+
* statusBadge: {};
|
|
58
|
+
* }
|
|
59
|
+
* }
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
interface ComponentTypeRegistry {}
|
|
63
|
+
/**
|
|
64
|
+
* Union of all registered component type names.
|
|
65
|
+
* Falls back to `string` when no types are registered (empty ComponentTypeRegistry).
|
|
66
|
+
*/
|
|
67
|
+
type ComponentType = [keyof ComponentTypeRegistry] extends [never] ? string : keyof ComponentTypeRegistry;
|
|
68
|
+
/**
|
|
69
|
+
* Reference to an action
|
|
70
|
+
*/
|
|
71
|
+
type ActionReference = string | {
|
|
72
|
+
type: string;
|
|
73
|
+
config?: unknown;
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
export { ActionReference, AdminLocaleConfig, ComponentReference, ComponentType, ComponentTypeRegistry };
|