@questpie/admin 1.1.1 → 2.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 +245 -474
- package/dist/_virtual/rolldown_runtime.mjs +18 -0
- package/dist/augmentation.d.mts +315 -0
- package/dist/augmentation.d.mts.map +1 -0
- package/dist/client/blocks/block-registry.d.mts +199 -0
- package/dist/client/blocks/block-registry.d.mts.map +1 -0
- package/dist/client/blocks/block-registry.mjs +88 -0
- package/dist/client/blocks/block-registry.mjs.map +1 -0
- package/dist/client/blocks/block-renderer.d.mts +52 -0
- package/dist/client/blocks/block-renderer.d.mts.map +1 -0
- package/dist/client/blocks/block-renderer.mjs +71 -0
- package/dist/client/blocks/block-renderer.mjs.map +1 -0
- package/dist/client/blocks/index.d.mts +4 -0
- package/dist/client/blocks/prefetch.d.mts +45 -0
- package/dist/client/blocks/prefetch.d.mts.map +1 -0
- package/dist/client/blocks/prefetch.mjs +26 -0
- package/dist/client/blocks/prefetch.mjs.map +1 -0
- package/dist/client/blocks/types.d.mts +69 -0
- package/dist/client/blocks/types.d.mts.map +1 -0
- package/dist/client/blocks/types.mjs +20 -0
- package/dist/client/blocks/types.mjs.map +1 -0
- package/dist/client/builder/admin-builder.d.mts +112 -0
- package/dist/client/builder/admin-builder.d.mts.map +1 -0
- package/dist/client/builder/admin-builder.mjs +185 -0
- package/dist/client/builder/admin-builder.mjs.map +1 -0
- package/dist/client/builder/admin-types.d.mts +73 -0
- package/dist/client/builder/admin-types.d.mts.map +1 -0
- package/dist/client/builder/admin.d.mts +121 -0
- package/dist/client/builder/admin.d.mts.map +1 -0
- package/dist/client/builder/admin.mjs +160 -0
- package/dist/client/builder/admin.mjs.map +1 -0
- package/dist/client/builder/defaults/components.mjs +20 -0
- package/dist/client/builder/defaults/components.mjs.map +1 -0
- package/dist/client/builder/defaults/core.d.mts +354 -0
- package/dist/client/builder/defaults/core.d.mts.map +1 -0
- package/dist/client/builder/defaults/core.mjs +49 -0
- package/dist/client/builder/defaults/core.mjs.map +1 -0
- package/dist/client/builder/defaults/fields.mjs +328 -0
- package/dist/client/builder/defaults/fields.mjs.map +1 -0
- package/dist/client/builder/defaults/pages.mjs +58 -0
- package/dist/client/builder/defaults/pages.mjs.map +1 -0
- package/dist/client/builder/defaults/starter.d.mts +351 -0
- package/dist/client/builder/defaults/starter.d.mts.map +1 -0
- package/dist/client/builder/defaults/starter.mjs +28 -0
- package/dist/client/builder/defaults/starter.mjs.map +1 -0
- package/dist/client/builder/defaults/views.mjs +27 -0
- package/dist/client/builder/defaults/views.mjs.map +1 -0
- package/dist/client/builder/defaults/widgets.mjs +31 -0
- package/dist/client/builder/defaults/widgets.mjs.map +1 -0
- package/dist/client/builder/field/field.d.mts +229 -0
- package/dist/client/builder/field/field.d.mts.map +1 -0
- package/dist/client/builder/field/field.mjs +83 -0
- package/dist/client/builder/field/field.mjs.map +1 -0
- package/dist/client/builder/index.d.mts +36 -0
- package/dist/client/builder/index.d.mts.map +1 -0
- package/dist/client/builder/page/page.d.mts +36 -0
- package/dist/client/builder/page/page.d.mts.map +1 -0
- package/dist/client/builder/page/page.mjs +27 -0
- package/dist/client/builder/page/page.mjs.map +1 -0
- package/dist/client/builder/proxies.d.mts +2 -0
- package/dist/client/builder/proxies.mjs +24 -0
- package/dist/client/builder/proxies.mjs.map +1 -0
- package/dist/client/builder/qa.d.mts +50 -0
- package/dist/client/builder/qa.d.mts.map +1 -0
- package/dist/client/builder/qa.mjs +42 -0
- package/dist/client/builder/qa.mjs.map +1 -0
- package/dist/client/builder/registry.d.mts +70 -0
- package/dist/client/builder/registry.d.mts.map +1 -0
- package/dist/client/builder/types/action-registry.d.mts +2 -0
- package/dist/client/builder/types/action-registry.mjs +142 -0
- package/dist/client/builder/types/action-registry.mjs.map +1 -0
- package/dist/client/builder/types/action-types.d.mts +253 -0
- package/dist/client/builder/types/action-types.d.mts.map +1 -0
- package/dist/client/builder/types/collection-types.d.mts +199 -0
- package/dist/client/builder/types/collection-types.d.mts.map +1 -0
- package/dist/client/builder/types/collection-types.mjs +11 -0
- package/dist/client/builder/types/collection-types.mjs.map +1 -0
- package/dist/client/builder/types/common.d.mts +60 -0
- package/dist/client/builder/types/common.d.mts.map +1 -0
- package/dist/client/builder/types/field-types.d.mts +593 -0
- package/dist/client/builder/types/field-types.d.mts.map +1 -0
- package/dist/client/builder/types/field-types.mjs +19 -0
- package/dist/client/builder/types/field-types.mjs.map +1 -0
- package/dist/client/builder/types/global-types.d.mts +22 -0
- package/dist/client/builder/types/global-types.d.mts.map +1 -0
- package/dist/client/builder/types/ui-config.d.mts +160 -0
- package/dist/client/builder/types/ui-config.d.mts.map +1 -0
- package/dist/client/builder/types/views.d.mts +89 -0
- package/dist/client/builder/types/views.d.mts.map +1 -0
- package/dist/client/builder/types/widget-types.d.mts +563 -0
- package/dist/client/builder/types/widget-types.d.mts.map +1 -0
- package/dist/client/builder/validation.d.mts +3 -0
- package/dist/client/builder/validation.mjs +208 -0
- package/dist/client/builder/validation.mjs.map +1 -0
- package/dist/client/builder/view/view.d.mts +129 -0
- package/dist/client/builder/view/view.d.mts.map +1 -0
- package/dist/client/builder/view/view.mjs +109 -0
- package/dist/client/builder/view/view.mjs.map +1 -0
- package/dist/client/builder/widget/widget.d.mts +33 -0
- package/dist/client/builder/widget/widget.d.mts.map +1 -0
- package/dist/client/builder/widget/widget.mjs +26 -0
- package/dist/client/builder/widget/widget.mjs.map +1 -0
- package/dist/client/components/actions/action-button.d.mts +2 -0
- package/dist/client/components/actions/action-button.mjs +135 -0
- package/dist/client/components/actions/action-button.mjs.map +1 -0
- package/dist/client/components/actions/action-dialog.d.mts +2 -0
- package/dist/client/components/actions/action-dialog.mjs +264 -0
- package/dist/client/components/actions/action-dialog.mjs.map +1 -0
- package/dist/client/components/actions/confirmation-dialog.d.mts +2 -0
- package/dist/client/components/actions/confirmation-dialog.mjs +82 -0
- package/dist/client/components/actions/confirmation-dialog.mjs.map +1 -0
- package/dist/client/components/actions/header-actions.d.mts +2 -0
- package/dist/client/components/actions/header-actions.mjs +117 -0
- package/dist/client/components/actions/header-actions.mjs.map +1 -0
- package/dist/client/components/actions/index.d.mts +4 -0
- package/dist/client/components/admin-link.d.mts +67 -0
- package/dist/client/components/admin-link.d.mts.map +1 -0
- package/dist/client/components/admin-link.mjs +92 -0
- package/dist/client/components/admin-link.mjs.map +1 -0
- package/dist/client/components/auth/auth-guard.d.mts +51 -0
- package/dist/client/components/auth/auth-guard.d.mts.map +1 -0
- package/dist/client/components/auth/auth-guard.mjs +60 -0
- package/dist/client/components/auth/auth-guard.mjs.map +1 -0
- package/dist/client/components/auth/auth-loading.d.mts +36 -0
- package/dist/client/components/auth/auth-loading.d.mts.map +1 -0
- package/dist/client/components/auth/auth-loading.mjs +27 -0
- package/dist/client/components/auth/auth-loading.mjs.map +1 -0
- package/dist/client/components/auth/index.d.mts +2 -0
- package/dist/client/components/blocks/block-canvas.mjs +90 -0
- package/dist/client/components/blocks/block-canvas.mjs.map +1 -0
- package/dist/client/components/blocks/block-editor-context.mjs +58 -0
- package/dist/client/components/blocks/block-editor-context.mjs.map +1 -0
- package/dist/client/components/blocks/block-editor-layout.mjs +82 -0
- package/dist/client/components/blocks/block-editor-layout.mjs.map +1 -0
- package/dist/client/components/blocks/block-editor-provider.mjs +155 -0
- package/dist/client/components/blocks/block-editor-provider.mjs.map +1 -0
- package/dist/client/components/blocks/block-fields-renderer.mjs +70 -0
- package/dist/client/components/blocks/block-fields-renderer.mjs.map +1 -0
- package/dist/client/components/blocks/block-insert-button.mjs +72 -0
- package/dist/client/components/blocks/block-insert-button.mjs.map +1 -0
- package/dist/client/components/blocks/block-item-menu.mjs +161 -0
- package/dist/client/components/blocks/block-item-menu.mjs.map +1 -0
- package/dist/client/components/blocks/block-item.mjs +187 -0
- package/dist/client/components/blocks/block-item.mjs.map +1 -0
- package/dist/client/components/blocks/block-library-sidebar.mjs +190 -0
- package/dist/client/components/blocks/block-library-sidebar.mjs.map +1 -0
- package/dist/client/components/blocks/block-tree.mjs +45 -0
- package/dist/client/components/blocks/block-tree.mjs.map +1 -0
- package/dist/client/components/blocks/block-type-icon.mjs +50 -0
- package/dist/client/components/blocks/block-type-icon.mjs.map +1 -0
- package/dist/client/components/blocks/utils/tree-utils.mjs +186 -0
- package/dist/client/components/blocks/utils/tree-utils.mjs.map +1 -0
- package/dist/client/components/component-renderer.d.mts +125 -0
- package/dist/client/components/component-renderer.d.mts.map +1 -0
- package/dist/client/components/component-renderer.mjs +145 -0
- package/dist/client/components/component-renderer.mjs.map +1 -0
- package/dist/client/components/error-boundary.mjs +92 -0
- package/dist/client/components/error-boundary.mjs.map +1 -0
- package/dist/client/components/fields/array-field.d.mts +44 -0
- package/dist/client/components/fields/array-field.d.mts.map +1 -0
- package/dist/client/components/fields/array-field.mjs +231 -0
- package/dist/client/components/fields/array-field.mjs.map +1 -0
- package/dist/client/components/fields/asset-preview-field.d.mts +52 -0
- package/dist/client/components/fields/asset-preview-field.d.mts.map +1 -0
- package/dist/client/components/fields/asset-preview-field.mjs +60 -0
- package/dist/client/components/fields/asset-preview-field.mjs.map +1 -0
- package/dist/client/components/fields/blocks-field/blocks-field.d.mts +41 -0
- package/dist/client/components/fields/blocks-field/blocks-field.d.mts.map +1 -0
- package/dist/client/components/fields/blocks-field/blocks-field.mjs +101 -0
- package/dist/client/components/fields/blocks-field/blocks-field.mjs.map +1 -0
- package/dist/client/components/fields/blocks-field/index.d.mts +1 -0
- package/dist/client/components/fields/boolean-field.d.mts +30 -0
- package/dist/client/components/fields/boolean-field.d.mts.map +1 -0
- package/dist/client/components/fields/boolean-field.mjs +47 -0
- package/dist/client/components/fields/boolean-field.mjs.map +1 -0
- package/dist/client/components/fields/custom-field.d.mts +3 -0
- package/dist/client/components/fields/date-field.d.mts +22 -0
- package/dist/client/components/fields/date-field.d.mts.map +1 -0
- package/dist/client/components/fields/date-field.mjs +42 -0
- package/dist/client/components/fields/date-field.mjs.map +1 -0
- package/dist/client/components/fields/datetime-field.d.mts +23 -0
- package/dist/client/components/fields/datetime-field.d.mts.map +1 -0
- package/dist/client/components/fields/datetime-field.mjs +43 -0
- package/dist/client/components/fields/datetime-field.mjs.map +1 -0
- package/dist/client/components/fields/email-field.d.mts +19 -0
- package/dist/client/components/fields/email-field.d.mts.map +1 -0
- package/dist/client/components/fields/email-field.mjs +38 -0
- package/dist/client/components/fields/email-field.mjs.map +1 -0
- package/dist/client/components/fields/embedded-collection.d.mts +3 -0
- package/dist/client/components/fields/field-types.d.mts +571 -0
- package/dist/client/components/fields/field-types.d.mts.map +1 -0
- package/dist/client/components/fields/field-utils.d.mts +1 -0
- package/dist/client/components/fields/field-utils.mjs +65 -0
- package/dist/client/components/fields/field-utils.mjs.map +1 -0
- package/dist/client/components/fields/field-wrapper.d.mts +3 -0
- package/dist/client/components/fields/field-wrapper.mjs +49 -0
- package/dist/client/components/fields/field-wrapper.mjs.map +1 -0
- package/dist/client/components/fields/index.d.mts +33 -0
- package/dist/client/components/fields/json-field.d.mts +84 -0
- package/dist/client/components/fields/json-field.d.mts.map +1 -0
- package/dist/client/components/fields/json-field.mjs +248 -0
- package/dist/client/components/fields/json-field.mjs.map +1 -0
- package/dist/client/components/fields/locale-badge.d.mts +1 -0
- package/dist/client/components/fields/locale-badge.mjs +17 -0
- package/dist/client/components/fields/locale-badge.mjs.map +1 -0
- package/dist/client/components/fields/number-field.d.mts +23 -0
- package/dist/client/components/fields/number-field.d.mts.map +1 -0
- package/dist/client/components/fields/number-field.mjs +40 -0
- package/dist/client/components/fields/number-field.mjs.map +1 -0
- package/dist/client/components/fields/object-array-field.d.mts +2 -0
- package/dist/client/components/fields/object-array-field.mjs +313 -0
- package/dist/client/components/fields/object-array-field.mjs.map +1 -0
- package/dist/client/components/fields/object-field.d.mts +32 -0
- package/dist/client/components/fields/object-field.d.mts.map +1 -0
- package/dist/client/components/fields/object-field.mjs +128 -0
- package/dist/client/components/fields/object-field.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/cards-display.d.mts +2 -0
- package/dist/client/components/fields/relation/displays/cards-display.mjs +140 -0
- package/dist/client/components/fields/relation/displays/cards-display.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/chips-display.d.mts +2 -0
- package/dist/client/components/fields/relation/displays/chips-display.mjs +100 -0
- package/dist/client/components/fields/relation/displays/chips-display.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/grid-display.d.mts +2 -0
- package/dist/client/components/fields/relation/displays/grid-display.mjs +114 -0
- package/dist/client/components/fields/relation/displays/grid-display.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/index.d.mts +6 -0
- package/dist/client/components/fields/relation/displays/list-display.d.mts +2 -0
- package/dist/client/components/fields/relation/displays/list-display.mjs +128 -0
- package/dist/client/components/fields/relation/displays/list-display.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/table-display.d.mts +2 -0
- package/dist/client/components/fields/relation/displays/table-display.mjs +134 -0
- package/dist/client/components/fields/relation/displays/table-display.mjs.map +1 -0
- package/dist/client/components/fields/relation/displays/types.d.mts +22 -0
- package/dist/client/components/fields/relation/displays/types.d.mts.map +1 -0
- package/dist/client/components/fields/relation/displays/types.mjs +73 -0
- package/dist/client/components/fields/relation/displays/types.mjs.map +1 -0
- package/dist/client/components/fields/relation/index.d.mts +3 -0
- package/dist/client/components/fields/relation/relation-items-display.d.mts +5 -0
- package/dist/client/components/fields/relation/relation-items-display.mjs +47 -0
- package/dist/client/components/fields/relation/relation-items-display.mjs.map +1 -0
- package/dist/client/components/fields/relation-field.d.mts +134 -0
- package/dist/client/components/fields/relation-field.d.mts.map +1 -0
- package/dist/client/components/fields/relation-field.mjs +106 -0
- package/dist/client/components/fields/relation-field.mjs.map +1 -0
- package/dist/client/components/fields/relation-picker.d.mts +4 -0
- package/dist/client/components/fields/relation-picker.mjs +301 -0
- package/dist/client/components/fields/relation-picker.mjs.map +1 -0
- package/dist/client/components/fields/relation-select.d.mts +3 -0
- package/dist/client/components/fields/relation-select.mjs +219 -0
- package/dist/client/components/fields/relation-select.mjs.map +1 -0
- package/dist/client/components/fields/reverse-relation-field.d.mts +2 -0
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +56 -0
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/extensions.mjs +118 -0
- package/dist/client/components/fields/rich-text-editor/extensions.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +196 -0
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/index.d.mts +4 -0
- package/dist/client/components/fields/rich-text-editor/index.mjs +187 -0
- package/dist/client/components/fields/rich-text-editor/index.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs +86 -0
- package/dist/client/components/fields/rich-text-editor/link-popover.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/presets.d.mts +11 -0
- package/dist/client/components/fields/rich-text-editor/presets.d.mts.map +1 -0
- package/dist/client/components/fields/rich-text-editor/presets.mjs +124 -0
- package/dist/client/components/fields/rich-text-editor/presets.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +145 -0
- package/dist/client/components/fields/rich-text-editor/slash-commands.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs +124 -0
- package/dist/client/components/fields/rich-text-editor/table-controls.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs +280 -0
- package/dist/client/components/fields/rich-text-editor/toolbar.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/types.d.mts +78 -0
- package/dist/client/components/fields/rich-text-editor/types.d.mts.map +1 -0
- package/dist/client/components/fields/rich-text-editor/types.mjs +31 -0
- package/dist/client/components/fields/rich-text-editor/types.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/utils.mjs +51 -0
- package/dist/client/components/fields/rich-text-editor/utils.mjs.map +1 -0
- package/dist/client/components/fields/rich-text-editor/variants.d.mts +2 -0
- package/dist/client/components/fields/rich-text-field.d.mts +14 -0
- package/dist/client/components/fields/rich-text-field.d.mts.map +1 -0
- package/dist/client/components/fields/rich-text-field.mjs +26 -0
- package/dist/client/components/fields/rich-text-field.mjs.map +1 -0
- package/dist/client/components/fields/select-field.d.mts +25 -0
- package/dist/client/components/fields/select-field.d.mts.map +1 -0
- package/dist/client/components/fields/select-field.mjs +53 -0
- package/dist/client/components/fields/select-field.mjs.map +1 -0
- package/dist/client/components/fields/status-field.d.mts +2 -0
- package/dist/client/components/fields/text-field.d.mts +22 -0
- package/dist/client/components/fields/text-field.d.mts.map +1 -0
- package/dist/client/components/fields/text-field.mjs +39 -0
- package/dist/client/components/fields/text-field.mjs.map +1 -0
- package/dist/client/components/fields/textarea-field.d.mts +22 -0
- package/dist/client/components/fields/textarea-field.d.mts.map +1 -0
- package/dist/client/components/fields/textarea-field.mjs +39 -0
- package/dist/client/components/fields/textarea-field.mjs.map +1 -0
- package/dist/client/components/fields/time-field.d.mts +20 -0
- package/dist/client/components/fields/time-field.d.mts.map +1 -0
- package/dist/client/components/fields/time-field.mjs +39 -0
- package/dist/client/components/fields/time-field.mjs.map +1 -0
- package/dist/client/components/fields/upload-field.d.mts +97 -0
- package/dist/client/components/fields/upload-field.d.mts.map +1 -0
- package/dist/client/components/fields/upload-field.mjs +497 -0
- package/dist/client/components/fields/upload-field.mjs.map +1 -0
- package/dist/client/components/filter-builder/columns-tab.d.mts +1 -0
- package/dist/client/components/filter-builder/columns-tab.mjs +131 -0
- package/dist/client/components/filter-builder/columns-tab.mjs.map +1 -0
- package/dist/client/components/filter-builder/filter-builder-sheet.d.mts +1 -0
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs +157 -0
- package/dist/client/components/filter-builder/filter-builder-sheet.mjs.map +1 -0
- package/dist/client/components/filter-builder/filters-tab.d.mts +1 -0
- package/dist/client/components/filter-builder/filters-tab.mjs +380 -0
- package/dist/client/components/filter-builder/filters-tab.mjs.map +1 -0
- package/dist/client/components/filter-builder/index.d.mts +5 -0
- package/dist/client/components/filter-builder/saved-views-tab.d.mts +1 -0
- package/dist/client/components/filter-builder/saved-views-tab.mjs +125 -0
- package/dist/client/components/filter-builder/saved-views-tab.mjs.map +1 -0
- package/dist/client/components/index.d.mts +80 -0
- package/dist/client/components/locale-switcher.d.mts +2 -0
- package/dist/client/components/locale-switcher.mjs +128 -0
- package/dist/client/components/locale-switcher.mjs.map +1 -0
- package/dist/client/components/media/media-grid.mjs +139 -0
- package/dist/client/components/media/media-grid.mjs.map +1 -0
- package/dist/client/components/media/media-picker-dialog.mjs +255 -0
- package/dist/client/components/media/media-picker-dialog.mjs.map +1 -0
- package/dist/client/components/preview/live-preview-mode.mjs +211 -0
- package/dist/client/components/preview/live-preview-mode.mjs.map +1 -0
- package/dist/client/components/preview/preview-pane.mjs +179 -0
- package/dist/client/components/preview/preview-pane.mjs.map +1 -0
- package/dist/client/components/primitives/asset-preview.mjs +363 -0
- package/dist/client/components/primitives/asset-preview.mjs.map +1 -0
- package/dist/client/components/primitives/checkbox-input.mjs +33 -0
- package/dist/client/components/primitives/checkbox-input.mjs.map +1 -0
- package/dist/client/components/primitives/date-input.mjs +218 -0
- package/dist/client/components/primitives/date-input.mjs.map +1 -0
- package/dist/client/components/primitives/dropzone.mjs +239 -0
- package/dist/client/components/primitives/dropzone.mjs.map +1 -0
- package/dist/client/components/primitives/number-input.mjs +113 -0
- package/dist/client/components/primitives/number-input.mjs.map +1 -0
- package/dist/client/components/primitives/select-multi.mjs +256 -0
- package/dist/client/components/primitives/select-multi.mjs.map +1 -0
- package/dist/client/components/primitives/select-single.mjs +183 -0
- package/dist/client/components/primitives/select-single.mjs.map +1 -0
- package/dist/client/components/primitives/text-input.mjs +40 -0
- package/dist/client/components/primitives/text-input.mjs.map +1 -0
- package/dist/client/components/primitives/textarea-input.mjs +38 -0
- package/dist/client/components/primitives/textarea-input.mjs.map +1 -0
- package/dist/client/components/primitives/time-input.mjs +72 -0
- package/dist/client/components/primitives/time-input.mjs.map +1 -0
- package/dist/client/components/primitives/toggle-input.mjs +31 -0
- package/dist/client/components/primitives/toggle-input.mjs.map +1 -0
- package/dist/client/components/primitives/types.d.mts +14 -0
- package/dist/client/components/primitives/types.d.mts.map +1 -0
- package/dist/client/components/primitives/types.mjs +13 -0
- package/dist/client/components/primitives/types.mjs.map +1 -0
- package/dist/client/components/sheets/index.d.mts +1 -0
- package/dist/client/components/sheets/resource-sheet.d.mts +1 -0
- package/dist/client/components/sheets/resource-sheet.mjs +78 -0
- package/dist/client/components/sheets/resource-sheet.mjs.map +1 -0
- package/dist/client/components/ui/accordion.d.mts +2 -0
- package/dist/client/components/ui/accordion.mjs +50 -0
- package/dist/client/components/ui/accordion.mjs.map +1 -0
- package/dist/client/components/ui/alert.mjs +32 -0
- package/dist/client/components/ui/alert.mjs.map +1 -0
- package/dist/client/components/ui/avatar.d.mts +3 -0
- package/dist/client/components/ui/badge.d.mts +3 -0
- package/dist/client/components/ui/badge.mjs +35 -0
- package/dist/client/components/ui/badge.mjs.map +1 -0
- package/dist/client/components/ui/button.d.mts +3 -0
- package/dist/client/components/ui/button.mjs +49 -0
- package/dist/client/components/ui/button.mjs.map +1 -0
- package/dist/client/components/ui/card.d.mts +2 -0
- package/dist/{card-BKHjBQfw.mjs → client/components/ui/card.mjs} +3 -10
- package/dist/{card-BKHjBQfw.mjs.map → client/components/ui/card.mjs.map} +1 -1
- package/dist/client/components/ui/checkbox.d.mts +2 -0
- package/dist/client/components/ui/checkbox.mjs +27 -0
- package/dist/client/components/ui/checkbox.mjs.map +1 -0
- package/dist/client/components/ui/combobox.d.mts +3 -0
- package/dist/client/components/ui/command.mjs +69 -0
- package/dist/client/components/ui/command.mjs.map +1 -0
- package/dist/client/components/ui/dialog.d.mts +3 -0
- package/dist/client/components/ui/dialog.mjs +83 -0
- package/dist/client/components/ui/dialog.mjs.map +1 -0
- package/dist/client/components/ui/drawer.mjs +75 -0
- package/dist/client/components/ui/drawer.mjs.map +1 -0
- package/dist/client/components/ui/dropdown-menu.d.mts +3 -0
- package/dist/client/components/ui/dropdown-menu.mjs +89 -0
- package/dist/client/components/ui/dropdown-menu.mjs.map +1 -0
- package/dist/client/components/ui/empty-state.mjs +53 -0
- package/dist/client/components/ui/empty-state.mjs.map +1 -0
- package/dist/client/components/ui/field.d.mts +3 -0
- package/dist/client/components/ui/field.mjs +78 -0
- package/dist/client/components/ui/field.mjs.map +1 -0
- package/dist/client/components/ui/input-group.d.mts +4 -0
- package/dist/client/components/ui/input-group.mjs +68 -0
- package/dist/client/components/ui/input-group.mjs.map +1 -0
- package/dist/client/components/ui/input.d.mts +2 -0
- package/dist/client/components/ui/input.mjs +17 -0
- package/dist/client/components/ui/input.mjs.map +1 -0
- package/dist/client/components/ui/kbd.mjs +24 -0
- package/dist/client/components/ui/kbd.mjs.map +1 -0
- package/dist/client/components/ui/label.d.mts +2 -0
- package/dist/client/components/ui/label.mjs +15 -0
- package/dist/client/components/ui/label.mjs.map +1 -0
- package/dist/client/components/ui/popover.d.mts +3 -0
- package/dist/client/components/ui/popover.mjs +49 -0
- package/dist/client/components/ui/popover.mjs.map +1 -0
- package/dist/client/components/ui/responsive-dialog.mjs +102 -0
- package/dist/client/components/ui/responsive-dialog.mjs.map +1 -0
- package/dist/client/components/ui/scroll-area.d.mts +2 -0
- package/dist/client/components/ui/search-input.mjs +74 -0
- package/dist/client/components/ui/search-input.mjs.map +1 -0
- package/dist/client/components/ui/select.d.mts +3 -0
- package/dist/client/components/ui/select.mjs +85 -0
- package/dist/client/components/ui/select.mjs.map +1 -0
- package/dist/client/components/ui/separator.d.mts +2 -0
- package/dist/client/components/ui/separator.mjs +17 -0
- package/dist/client/components/ui/separator.mjs.map +1 -0
- package/dist/client/components/ui/sheet.d.mts +3 -0
- package/dist/client/components/ui/sheet.mjs +78 -0
- package/dist/client/components/ui/sheet.mjs.map +1 -0
- package/dist/client/components/ui/sidebar.d.mts +8 -0
- package/dist/client/components/ui/sidebar.mjs +256 -0
- package/dist/client/components/ui/sidebar.mjs.map +1 -0
- package/dist/client/components/ui/skeleton.d.mts +1 -0
- package/dist/client/components/ui/skeleton.mjs +15 -0
- package/dist/client/components/ui/skeleton.mjs.map +1 -0
- package/dist/client/components/ui/sonner.d.mts +14 -0
- package/dist/client/components/ui/sonner.d.mts.map +1 -0
- package/dist/client/components/ui/sonner.mjs +55 -0
- package/dist/client/components/ui/sonner.mjs.map +1 -0
- package/dist/client/components/ui/spinner.d.mts +1 -0
- package/dist/client/components/ui/spinner.mjs +18 -0
- package/dist/client/components/ui/spinner.mjs.map +1 -0
- package/dist/client/components/ui/switch.d.mts +2 -0
- package/dist/client/components/ui/switch.mjs +23 -0
- package/dist/client/components/ui/switch.mjs.map +1 -0
- package/dist/client/components/ui/table.d.mts +2 -0
- package/dist/client/components/ui/table.mjs +66 -0
- package/dist/client/components/ui/table.mjs.map +1 -0
- package/dist/client/components/ui/tabs.d.mts +3 -0
- package/dist/client/components/ui/tabs.mjs +49 -0
- package/dist/client/components/ui/tabs.mjs.map +1 -0
- package/dist/client/components/ui/textarea.d.mts +2 -0
- package/dist/client/components/ui/textarea.mjs +15 -0
- package/dist/client/components/ui/textarea.mjs.map +1 -0
- package/dist/client/components/ui/toolbar.mjs +54 -0
- package/dist/client/components/ui/toolbar.mjs.map +1 -0
- package/dist/client/components/ui/tooltip.d.mts +2 -0
- package/dist/client/components/ui/tooltip.mjs +45 -0
- package/dist/client/components/ui/tooltip.mjs.map +1 -0
- package/dist/client/components/widgets/chart-widget.d.mts +57 -0
- package/dist/client/components/widgets/chart-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/chart-widget.mjs +282 -0
- package/dist/client/components/widgets/chart-widget.mjs.map +1 -0
- package/dist/client/components/widgets/progress-widget.d.mts +41 -0
- package/dist/client/components/widgets/progress-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/progress-widget.mjs +110 -0
- package/dist/client/components/widgets/progress-widget.mjs.map +1 -0
- package/dist/client/components/widgets/quick-actions-widget.d.mts +29 -0
- package/dist/client/components/widgets/quick-actions-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/quick-actions-widget.mjs +121 -0
- package/dist/client/components/widgets/quick-actions-widget.mjs.map +1 -0
- package/dist/client/components/widgets/recent-items-widget.d.mts +51 -0
- package/dist/client/components/widgets/recent-items-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/recent-items-widget.mjs +101 -0
- package/dist/client/components/widgets/recent-items-widget.mjs.map +1 -0
- package/dist/client/components/widgets/stats-widget.d.mts +55 -0
- package/dist/client/components/widgets/stats-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/stats-widget.mjs +150 -0
- package/dist/client/components/widgets/stats-widget.mjs.map +1 -0
- package/dist/client/components/widgets/table-widget.d.mts +31 -0
- package/dist/client/components/widgets/table-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/table-widget.mjs +139 -0
- package/dist/client/components/widgets/table-widget.mjs.map +1 -0
- package/dist/client/components/widgets/timeline-widget.d.mts +51 -0
- package/dist/client/components/widgets/timeline-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/timeline-widget.mjs +168 -0
- package/dist/client/components/widgets/timeline-widget.mjs.map +1 -0
- package/dist/client/components/widgets/value-widget.d.mts +39 -0
- package/dist/client/components/widgets/value-widget.d.mts.map +1 -0
- package/dist/client/components/widgets/value-widget.mjs +111 -0
- package/dist/client/components/widgets/value-widget.mjs.map +1 -0
- package/dist/client/components/widgets/widget-skeletons.mjs +145 -0
- package/dist/client/components/widgets/widget-skeletons.mjs.map +1 -0
- package/dist/client/context/focus-context.d.mts +88 -0
- package/dist/client/context/focus-context.d.mts.map +1 -0
- package/dist/client/context/focus-context.mjs +178 -0
- package/dist/client/context/focus-context.mjs.map +1 -0
- package/dist/client/contexts/breadcrumb-context.mjs +32 -0
- package/dist/client/contexts/breadcrumb-context.mjs.map +1 -0
- package/dist/client/hooks/typed-hooks.d.mts +84 -0
- package/dist/client/hooks/typed-hooks.d.mts.map +1 -0
- package/dist/client/hooks/typed-hooks.mjs +272 -0
- package/dist/client/hooks/typed-hooks.mjs.map +1 -0
- package/dist/client/hooks/use-action.mjs +201 -0
- package/dist/client/hooks/use-action.mjs.map +1 -0
- package/dist/client/hooks/use-admin-config.mjs +40 -0
- package/dist/client/hooks/use-admin-config.mjs.map +1 -0
- package/dist/client/hooks/use-admin-preferences.mjs +68 -0
- package/dist/client/hooks/use-admin-preferences.mjs.map +1 -0
- package/dist/client/hooks/use-admin-routes.mjs +97 -0
- package/dist/client/hooks/use-admin-routes.mjs.map +1 -0
- package/dist/client/hooks/use-auth.d.mts +98 -0
- package/dist/client/hooks/use-auth.d.mts.map +1 -0
- package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +3 -3
- package/dist/client/hooks/use-auth.mjs.map +1 -0
- package/dist/client/hooks/use-collection-fields.mjs +32 -0
- package/dist/client/hooks/use-collection-fields.mjs.map +1 -0
- package/dist/client/hooks/use-collection-meta.mjs +121 -0
- package/dist/client/hooks/use-collection-meta.mjs.map +1 -0
- package/dist/client/hooks/use-collection-schema.mjs +67 -0
- package/dist/client/hooks/use-collection-schema.mjs.map +1 -0
- package/dist/client/hooks/use-collection-validation.mjs +74 -0
- package/dist/client/hooks/use-collection-validation.mjs.map +1 -0
- package/dist/client/hooks/use-collection.d.mts +86 -0
- package/dist/client/hooks/use-collection.d.mts.map +1 -0
- package/dist/client/hooks/use-collection.mjs +214 -0
- package/dist/client/hooks/use-collection.mjs.map +1 -0
- package/dist/client/hooks/use-current-user.d.mts +57 -0
- package/dist/client/hooks/use-current-user.d.mts.map +1 -0
- package/dist/client/hooks/use-current-user.mjs +79 -0
- package/dist/client/hooks/use-current-user.mjs.map +1 -0
- package/dist/client/hooks/use-field-hooks.mjs +191 -0
- package/dist/client/hooks/use-field-hooks.mjs.map +1 -0
- package/dist/client/hooks/use-field-options.d.mts +90 -0
- package/dist/client/hooks/use-field-options.d.mts.map +1 -0
- package/dist/client/hooks/use-field-options.mjs +184 -0
- package/dist/client/hooks/use-field-options.mjs.map +1 -0
- package/dist/client/hooks/use-global-fields.mjs +27 -0
- package/dist/client/hooks/use-global-fields.mjs.map +1 -0
- package/dist/client/hooks/use-global-meta.mjs +59 -0
- package/dist/client/hooks/use-global-meta.mjs.map +1 -0
- package/dist/client/hooks/use-global-schema.mjs +33 -0
- package/dist/client/hooks/use-global-schema.mjs.map +1 -0
- package/dist/client/hooks/use-global.d.mts +40 -0
- package/dist/client/hooks/use-global.d.mts.map +1 -0
- package/dist/client/hooks/use-global.mjs +74 -0
- package/dist/client/hooks/use-global.mjs.map +1 -0
- package/dist/client/hooks/use-locks.mjs +245 -0
- package/dist/client/hooks/use-locks.mjs.map +1 -0
- package/dist/client/hooks/use-media-query.d.mts +23 -0
- package/dist/client/hooks/use-media-query.d.mts.map +1 -0
- package/dist/client/hooks/use-media-query.mjs +62 -0
- package/dist/client/hooks/use-media-query.mjs.map +1 -0
- package/dist/client/hooks/use-prefill-params.mjs +47 -0
- package/dist/client/hooks/use-prefill-params.mjs.map +1 -0
- package/dist/client/hooks/use-questpie-query-options.mjs +28 -0
- package/dist/client/hooks/use-questpie-query-options.mjs.map +1 -0
- package/dist/client/hooks/use-reactive-fields.d.mts +75 -0
- package/dist/client/hooks/use-reactive-fields.d.mts.map +1 -0
- package/dist/client/hooks/use-reactive-fields.mjs +164 -0
- package/dist/client/hooks/use-reactive-fields.mjs.map +1 -0
- package/dist/client/hooks/use-realtime-highlight.mjs +96 -0
- package/dist/client/hooks/use-realtime-highlight.mjs.map +1 -0
- package/dist/client/hooks/use-saved-views.mjs +65 -0
- package/dist/client/hooks/use-saved-views.mjs.map +1 -0
- package/dist/client/hooks/use-search.mjs +147 -0
- package/dist/client/hooks/use-search.mjs.map +1 -0
- package/dist/client/hooks/use-server-validation.mjs +199 -0
- package/dist/client/hooks/use-server-validation.mjs.map +1 -0
- package/dist/client/hooks/use-server-widget-data.d.mts +26 -0
- package/dist/client/hooks/use-server-widget-data.d.mts.map +1 -0
- package/dist/client/hooks/use-server-widget-data.mjs +40 -0
- package/dist/client/hooks/use-server-widget-data.mjs.map +1 -0
- package/dist/client/hooks/use-setup-status.d.mts +39 -0
- package/dist/client/hooks/use-setup-status.d.mts.map +1 -0
- package/dist/client/hooks/use-setup-status.mjs +50 -0
- package/dist/client/hooks/use-setup-status.mjs.map +1 -0
- package/dist/client/hooks/use-upload-collection.mjs +32 -0
- package/dist/client/hooks/use-upload-collection.mjs.map +1 -0
- package/dist/client/hooks/use-upload.d.mts +23 -0
- package/dist/client/hooks/use-upload.d.mts.map +1 -0
- package/dist/client/hooks/use-upload.mjs +145 -0
- package/dist/client/hooks/use-upload.mjs.map +1 -0
- package/dist/client/hooks/use-validation-error-map.mjs +53 -0
- package/dist/client/hooks/use-validation-error-map.mjs.map +1 -0
- package/dist/client/hooks/use-view-state.mjs +261 -0
- package/dist/client/hooks/use-view-state.mjs.map +1 -0
- package/dist/client/i18n/hooks.mjs +160 -0
- package/dist/client/i18n/hooks.mjs.map +1 -0
- package/dist/client/i18n/intl-cache.mjs +65 -0
- package/dist/client/i18n/intl-cache.mjs.map +1 -0
- package/dist/client/i18n/messages.mjs +7 -0
- package/dist/client/i18n/messages.mjs.map +1 -0
- package/dist/client/i18n/simple.d.mts +22 -0
- package/dist/client/i18n/simple.d.mts.map +1 -0
- package/dist/client/i18n/simple.mjs +157 -0
- package/dist/client/i18n/simple.mjs.map +1 -0
- package/dist/client/i18n/types.d.mts +110 -0
- package/dist/client/i18n/types.d.mts.map +1 -0
- package/dist/client/lib/utils.d.mts +1 -0
- package/dist/client/lib/utils.mjs +28 -0
- package/dist/client/lib/utils.mjs.map +1 -0
- package/dist/client/preview/block-scope-context.d.mts +74 -0
- package/dist/client/preview/block-scope-context.d.mts.map +1 -0
- package/dist/client/preview/block-scope-context.mjs +93 -0
- package/dist/client/preview/block-scope-context.mjs.map +1 -0
- package/dist/client/preview/index.d.mts +5 -0
- package/dist/client/preview/preview-banner.d.mts +46 -0
- package/dist/client/preview/preview-banner.d.mts.map +1 -0
- package/dist/client/preview/preview-banner.mjs +95 -0
- package/dist/client/preview/preview-banner.mjs.map +1 -0
- package/dist/client/preview/preview-field.d.mts +108 -0
- package/dist/client/preview/preview-field.d.mts.map +1 -0
- package/dist/client/preview/preview-field.mjs +125 -0
- package/dist/client/preview/preview-field.mjs.map +1 -0
- package/dist/client/preview/types.d.mts +115 -0
- package/dist/client/preview/types.d.mts.map +1 -0
- package/dist/client/preview/types.mjs +21 -0
- package/dist/client/preview/types.mjs.map +1 -0
- package/dist/client/preview/use-collection-preview.d.mts +71 -0
- package/dist/client/preview/use-collection-preview.d.mts.map +1 -0
- package/dist/client/preview/use-collection-preview.mjs +114 -0
- package/dist/client/preview/use-collection-preview.mjs.map +1 -0
- package/dist/client/runtime/content-locales-provider.d.mts +1 -0
- package/dist/client/runtime/content-locales-provider.mjs +85 -0
- package/dist/client/runtime/content-locales-provider.mjs.map +1 -0
- package/dist/client/runtime/index.d.mts +7 -0
- package/dist/client/runtime/index.mjs +8 -0
- package/dist/client/runtime/locale-scope.d.mts +2 -0
- package/dist/{runtime-6VZM878K.mjs → client/runtime/locale-scope.mjs} +3 -4
- package/dist/client/runtime/locale-scope.mjs.map +1 -0
- package/dist/client/runtime/provider.d.mts +10107 -0
- package/dist/client/runtime/provider.d.mts.map +1 -0
- package/dist/client/runtime/provider.mjs +229 -0
- package/dist/client/runtime/provider.mjs.map +1 -0
- package/dist/client/runtime/routes.d.mts +49 -0
- package/dist/client/runtime/routes.d.mts.map +1 -0
- package/dist/client/runtime/routes.mjs +107 -0
- package/dist/client/runtime/routes.mjs.map +1 -0
- package/dist/client/runtime/translations-provider.d.mts +2 -0
- package/dist/client/runtime/translations-provider.mjs +181 -0
- package/dist/client/runtime/translations-provider.mjs.map +1 -0
- package/dist/client/scope/index.d.mts +3 -0
- package/dist/client/scope/picker.d.mts +54 -0
- package/dist/client/scope/picker.d.mts.map +1 -0
- package/dist/client/scope/picker.mjs +161 -0
- package/dist/client/scope/picker.mjs.map +1 -0
- package/dist/client/scope/provider.d.mts +104 -0
- package/dist/client/scope/provider.d.mts.map +1 -0
- package/dist/client/scope/provider.mjs +159 -0
- package/dist/client/scope/provider.mjs.map +1 -0
- package/dist/client/scope/types.d.mts +112 -0
- package/dist/client/scope/types.d.mts.map +1 -0
- package/dist/client/styles/index.css +80 -0
- package/dist/client/utils/auto-expand-fields.mjs +65 -0
- package/dist/client/utils/auto-expand-fields.mjs.map +1 -0
- package/dist/client/utils/build-field-definitions-from-schema.mjs +256 -0
- package/dist/client/utils/build-field-definitions-from-schema.mjs.map +1 -0
- package/dist/client/utils/detect-relations.mjs +46 -0
- package/dist/client/utils/detect-relations.mjs.map +1 -0
- package/dist/client/utils/locale-to-flag.d.mts +118 -0
- package/dist/client/utils/locale-to-flag.d.mts.map +1 -0
- package/dist/client/utils/locale-to-flag.mjs +130 -0
- package/dist/client/utils/locale-to-flag.mjs.map +1 -0
- package/dist/client/utils/routes.mjs +196 -0
- package/dist/client/utils/routes.mjs.map +1 -0
- package/dist/client/views/auth/accept-invite-form.d.mts +73 -0
- package/dist/client/views/auth/accept-invite-form.d.mts.map +1 -0
- package/dist/client/views/auth/accept-invite-form.mjs +180 -0
- package/dist/client/views/auth/accept-invite-form.mjs.map +1 -0
- package/dist/client/views/auth/auth-layout.d.mts +44 -0
- package/dist/client/views/auth/auth-layout.d.mts.map +1 -0
- package/dist/client/views/auth/auth-layout.mjs +53 -0
- package/dist/client/views/auth/auth-layout.mjs.map +1 -0
- package/dist/client/views/auth/forgot-password-form.d.mts +59 -0
- package/dist/client/views/auth/forgot-password-form.d.mts.map +1 -0
- package/dist/{forgot-password-page-Bcp-An4Y.mjs → client/views/auth/forgot-password-form.mjs} +22 -89
- package/dist/client/views/auth/forgot-password-form.mjs.map +1 -0
- package/dist/client/views/auth/index.d.mts +7 -0
- package/dist/client/views/auth/invite-form.d.mts +1 -0
- package/dist/client/views/auth/invite-form.mjs +155 -0
- package/dist/client/views/auth/invite-form.mjs.map +1 -0
- package/dist/client/views/auth/login-form.d.mts +76 -0
- package/dist/client/views/auth/login-form.d.mts.map +1 -0
- package/dist/client/views/auth/login-form.mjs +167 -0
- package/dist/client/views/auth/login-form.mjs.map +1 -0
- package/dist/client/views/auth/reset-password-form.d.mts +66 -0
- package/dist/client/views/auth/reset-password-form.d.mts.map +1 -0
- package/dist/client/views/auth/reset-password-form.mjs +188 -0
- package/dist/client/views/auth/reset-password-form.mjs.map +1 -0
- package/dist/client/views/auth/setup-form.d.mts +61 -0
- package/dist/client/views/auth/setup-form.d.mts.map +1 -0
- package/dist/{setup-page-YAP_fzqh.mjs → client/views/auth/setup-form.mjs} +46 -124
- package/dist/client/views/auth/setup-form.mjs.map +1 -0
- package/dist/client/views/collection/auto-form-fields.d.mts +4 -0
- package/dist/client/views/collection/auto-form-fields.mjs +453 -0
- package/dist/client/views/collection/auto-form-fields.mjs.map +1 -0
- package/dist/client/views/collection/bulk-action-toolbar.mjs +291 -0
- package/dist/client/views/collection/bulk-action-toolbar.mjs.map +1 -0
- package/dist/client/views/collection/cells/complex-cells.d.mts +46 -0
- package/dist/client/views/collection/cells/complex-cells.d.mts.map +1 -0
- package/dist/client/views/collection/cells/complex-cells.mjs +327 -0
- package/dist/client/views/collection/cells/complex-cells.mjs.map +1 -0
- package/dist/client/views/collection/cells/index.d.mts +7 -0
- package/dist/client/views/collection/cells/primitive-cells.d.mts +76 -0
- package/dist/client/views/collection/cells/primitive-cells.d.mts.map +1 -0
- package/dist/client/views/collection/cells/primitive-cells.mjs +165 -0
- package/dist/client/views/collection/cells/primitive-cells.mjs.map +1 -0
- package/dist/client/views/collection/cells/relation-cells.d.mts +21 -0
- package/dist/client/views/collection/cells/relation-cells.d.mts.map +1 -0
- package/dist/client/views/collection/cells/relation-cells.mjs +105 -0
- package/dist/client/views/collection/cells/relation-cells.mjs.map +1 -0
- package/dist/client/views/collection/cells/shared/asset-thumbnail.d.mts +1 -0
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +189 -0
- package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs.map +1 -0
- package/dist/client/views/collection/cells/shared/cell-helpers.d.mts +2 -0
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs +78 -0
- package/dist/client/views/collection/cells/shared/cell-helpers.mjs.map +1 -0
- package/dist/client/views/collection/cells/shared/relation-chip.d.mts +1 -0
- package/dist/client/views/collection/cells/shared/relation-chip.mjs +37 -0
- package/dist/client/views/collection/cells/shared/relation-chip.mjs.map +1 -0
- package/dist/client/views/collection/cells/upload-cells.d.mts +25 -0
- package/dist/client/views/collection/cells/upload-cells.d.mts.map +1 -0
- package/dist/client/views/collection/cells/upload-cells.mjs +20 -0
- package/dist/client/views/collection/cells/upload-cells.mjs.map +1 -0
- package/dist/client/views/collection/columns/build-columns.d.mts +2 -0
- package/dist/client/views/collection/columns/build-columns.mjs +156 -0
- package/dist/client/views/collection/columns/build-columns.mjs.map +1 -0
- package/dist/client/views/collection/columns/column-defaults.d.mts +2 -0
- package/dist/client/views/collection/columns/column-defaults.mjs +108 -0
- package/dist/client/views/collection/columns/column-defaults.mjs.map +1 -0
- package/dist/client/views/collection/columns/index.d.mts +3 -0
- package/dist/client/views/collection/columns/types.d.mts +2 -0
- package/dist/client/views/collection/field-context.mjs +127 -0
- package/dist/client/views/collection/field-context.mjs.map +1 -0
- package/dist/client/views/collection/field-renderer.mjs +171 -0
- package/dist/client/views/collection/field-renderer.mjs.map +1 -0
- package/dist/client/views/collection/form-view.d.mts +112 -0
- package/dist/client/views/collection/form-view.d.mts.map +1 -0
- package/dist/client/views/collection/form-view.mjs +903 -0
- package/dist/client/views/collection/form-view.mjs.map +1 -0
- package/dist/client/views/collection/index.d.mts +9 -0
- package/dist/client/views/collection/table-view.d.mts +102 -0
- package/dist/client/views/collection/table-view.d.mts.map +1 -0
- package/dist/client/views/collection/table-view.mjs +695 -0
- package/dist/client/views/collection/table-view.mjs.map +1 -0
- package/dist/client/views/collection/view-skeletons.mjs +121 -0
- package/dist/client/views/collection/view-skeletons.mjs.map +1 -0
- package/dist/client/views/common/global-search.d.mts +1 -0
- package/dist/client/views/common/global-search.mjs +376 -0
- package/dist/client/views/common/global-search.mjs.map +1 -0
- package/dist/client/views/common/index.d.mts +1 -0
- package/dist/client/views/dashboard/dashboard-grid.mjs +385 -0
- package/dist/client/views/dashboard/dashboard-grid.mjs.map +1 -0
- package/dist/client/views/dashboard/dashboard-widget.mjs +178 -0
- package/dist/client/views/dashboard/dashboard-widget.mjs.map +1 -0
- package/dist/client/views/dashboard/widget-card.mjs +159 -0
- package/dist/client/views/dashboard/widget-card.mjs.map +1 -0
- package/dist/client/views/globals/global-form-view.d.mts +74 -0
- package/dist/client/views/globals/global-form-view.d.mts.map +1 -0
- package/dist/client/views/globals/global-form-view.mjs +181 -0
- package/dist/client/views/globals/global-form-view.mjs.map +1 -0
- package/dist/client/views/index.d.mts +28 -0
- package/dist/client/views/layout/admin-layout-provider.d.mts +140 -0
- package/dist/client/views/layout/admin-layout-provider.d.mts.map +1 -0
- package/dist/client/views/layout/admin-layout-provider.mjs +90 -0
- package/dist/client/views/layout/admin-layout-provider.mjs.map +1 -0
- package/dist/client/views/layout/admin-layout.d.mts +151 -0
- package/dist/client/views/layout/admin-layout.d.mts.map +1 -0
- package/dist/client/views/layout/admin-layout.mjs +144 -0
- package/dist/client/views/layout/admin-layout.mjs.map +1 -0
- package/dist/client/views/layout/admin-root.d.mts +7 -0
- package/dist/client/views/layout/admin-router.d.mts +125 -0
- package/dist/client/views/layout/admin-router.d.mts.map +1 -0
- package/dist/client/views/layout/admin-router.mjs +594 -0
- package/dist/client/views/layout/admin-router.mjs.map +1 -0
- package/dist/client/views/layout/admin-sidebar.d.mts +105 -0
- package/dist/client/views/layout/admin-sidebar.d.mts.map +1 -0
- package/dist/client/views/layout/admin-sidebar.mjs +550 -0
- package/dist/client/views/layout/admin-sidebar.mjs.map +1 -0
- package/dist/client/views/layout/admin-topbar.mjs +128 -0
- package/dist/client/views/layout/admin-topbar.mjs.map +1 -0
- package/dist/client/views/layout/index.d.mts +5 -0
- package/dist/client/views/pages/accept-invite-page.d.mts +67 -0
- package/dist/client/views/pages/accept-invite-page.d.mts.map +1 -0
- package/dist/client/views/pages/accept-invite-page.mjs +143 -0
- package/dist/client/views/pages/accept-invite-page.mjs.map +1 -0
- package/dist/client/views/pages/dashboard-page.d.mts +52 -0
- package/dist/client/views/pages/dashboard-page.d.mts.map +1 -0
- package/dist/client/views/pages/dashboard-page.mjs +45 -0
- package/dist/client/views/pages/dashboard-page.mjs.map +1 -0
- package/dist/client/views/pages/forgot-password-page.d.mts +59 -0
- package/dist/client/views/pages/forgot-password-page.d.mts.map +1 -0
- package/dist/client/views/pages/forgot-password-page.mjs +80 -0
- package/dist/client/views/pages/forgot-password-page.mjs.map +1 -0
- package/dist/client/views/pages/index.d.mts +7 -0
- package/dist/client/views/pages/invite-page.d.mts +71 -0
- package/dist/client/views/pages/invite-page.d.mts.map +1 -0
- package/dist/client/views/pages/invite-page.mjs +86 -0
- package/dist/client/views/pages/invite-page.mjs.map +1 -0
- package/dist/client/views/pages/login-page.d.mts +76 -0
- package/dist/client/views/pages/login-page.d.mts.map +1 -0
- package/dist/client/views/pages/login-page.mjs +98 -0
- package/dist/client/views/pages/login-page.mjs.map +1 -0
- package/dist/client/views/pages/reset-password-page.d.mts +66 -0
- package/dist/client/views/pages/reset-password-page.d.mts.map +1 -0
- package/dist/client/views/pages/reset-password-page.mjs +105 -0
- package/dist/client/views/pages/reset-password-page.mjs.map +1 -0
- package/dist/client/views/pages/setup-page.d.mts +64 -0
- package/dist/client/views/pages/setup-page.d.mts.map +1 -0
- package/dist/client/views/pages/setup-page.mjs +91 -0
- package/dist/client/views/pages/setup-page.mjs.map +1 -0
- package/dist/client.d.mts +92 -3
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +54 -12
- package/dist/components/rich-text/index.d.mts +1 -0
- package/dist/components/rich-text/rich-text-renderer.d.mts +104 -0
- package/dist/components/rich-text/rich-text-renderer.d.mts.map +1 -0
- package/dist/components/rich-text/rich-text-renderer.mjs +210 -0
- package/dist/components/rich-text/rich-text-renderer.mjs.map +1 -0
- package/dist/index.d.mts +62 -3
- package/dist/index.mjs +54 -12
- package/dist/server/adapters/nextjs.d.mts +121 -0
- package/dist/server/adapters/nextjs.d.mts.map +1 -0
- package/dist/server/adapters/nextjs.mjs +111 -0
- package/dist/server/adapters/nextjs.mjs.map +1 -0
- package/dist/server/adapters/tanstack.d.mts +133 -0
- package/dist/server/adapters/tanstack.d.mts.map +1 -0
- package/dist/server/adapters/tanstack.mjs +90 -0
- package/dist/server/adapters/tanstack.mjs.map +1 -0
- package/dist/server/augmentation.d.mts +1523 -0
- package/dist/server/augmentation.d.mts.map +1 -0
- package/dist/server/auth-helpers.d.mts +143 -0
- package/dist/server/auth-helpers.d.mts.map +1 -0
- package/dist/server/auth-helpers.mjs +108 -0
- package/dist/server/auth-helpers.mjs.map +1 -0
- package/dist/server/block/block-builder.d.mts +319 -0
- package/dist/server/block/block-builder.d.mts.map +1 -0
- package/dist/server/block/block-builder.mjs +217 -0
- package/dist/server/block/block-builder.mjs.map +1 -0
- package/dist/server/block/index.d.mts +3 -0
- package/dist/server/block/introspection.d.mts +84 -0
- package/dist/server/block/introspection.d.mts.map +1 -0
- package/dist/server/block/introspection.mjs +89 -0
- package/dist/server/block/introspection.mjs.map +1 -0
- package/dist/server/block/prefetch.d.mts +78 -0
- package/dist/server/block/prefetch.d.mts.map +1 -0
- package/dist/server/block/prefetch.mjs +240 -0
- package/dist/server/block/prefetch.mjs.map +1 -0
- package/dist/server/fields/blocks.d.mts +139 -0
- package/dist/server/fields/blocks.d.mts.map +1 -0
- package/dist/server/fields/blocks.mjs +192 -0
- package/dist/server/fields/blocks.mjs.map +1 -0
- package/dist/server/fields/index.d.mts +48 -0
- package/dist/server/fields/index.d.mts.map +1 -0
- package/dist/server/fields/index.mjs +16 -0
- package/dist/server/fields/index.mjs.map +1 -0
- package/dist/server/fields/rich-text.d.mts +135 -0
- package/dist/server/fields/rich-text.d.mts.map +1 -0
- package/dist/server/fields/rich-text.mjs +188 -0
- package/dist/server/fields/rich-text.mjs.map +1 -0
- package/dist/server/i18n/index.d.mts +16 -0
- package/dist/server/i18n/index.d.mts.map +1 -0
- package/dist/server/i18n/index.mjs +44 -0
- package/dist/server/i18n/index.mjs.map +1 -0
- package/dist/server/i18n/messages/cs.mjs +461 -0
- package/dist/server/i18n/messages/cs.mjs.map +1 -0
- package/dist/server/i18n/messages/de.mjs +461 -0
- package/dist/server/i18n/messages/de.mjs.map +1 -0
- package/dist/server/i18n/messages/en.mjs +493 -0
- package/dist/server/i18n/messages/en.mjs.map +1 -0
- package/dist/server/i18n/messages/es.mjs +461 -0
- package/dist/server/i18n/messages/es.mjs.map +1 -0
- package/dist/server/i18n/messages/fr.mjs +461 -0
- package/dist/server/i18n/messages/fr.mjs.map +1 -0
- package/dist/server/i18n/messages/index.mjs +24 -0
- package/dist/server/i18n/messages/index.mjs.map +1 -0
- package/dist/server/i18n/messages/pl.mjs +461 -0
- package/dist/server/i18n/messages/pl.mjs.map +1 -0
- package/dist/server/i18n/messages/pt.mjs +464 -0
- package/dist/server/i18n/messages/pt.mjs.map +1 -0
- package/dist/server/i18n/messages/sk.mjs +490 -0
- package/dist/server/i18n/messages/sk.mjs.map +1 -0
- package/dist/server/index.d.mts +20 -0
- package/dist/server/modules/admin/functions/admin-config.mjs +348 -0
- package/dist/server/modules/admin/functions/admin-config.mjs.map +1 -0
- package/dist/server/modules/admin/functions/execute-action.d.mts +107 -0
- package/dist/server/modules/admin/functions/execute-action.d.mts.map +1 -0
- package/dist/server/modules/admin/functions/execute-action.mjs +331 -0
- package/dist/server/modules/admin/functions/execute-action.mjs.map +1 -0
- package/dist/server/modules/admin/functions/locales.mjs +80 -0
- package/dist/server/modules/admin/functions/locales.mjs.map +1 -0
- package/dist/server/modules/admin/functions/preview.d.mts +70 -0
- package/dist/server/modules/admin/functions/preview.d.mts.map +1 -0
- package/dist/server/modules/admin/functions/preview.mjs +243 -0
- package/dist/server/modules/admin/functions/preview.mjs.map +1 -0
- package/dist/server/modules/admin/functions/reactive.d.mts +99 -0
- package/dist/server/modules/admin/functions/reactive.d.mts.map +1 -0
- package/dist/server/modules/admin/functions/reactive.mjs +378 -0
- package/dist/server/modules/admin/functions/reactive.mjs.map +1 -0
- package/dist/server/modules/admin/functions/setup.d.mts +84 -0
- package/dist/server/modules/admin/functions/setup.d.mts.map +1 -0
- package/dist/server/modules/admin/functions/setup.mjs +131 -0
- package/dist/server/modules/admin/functions/setup.mjs.map +1 -0
- package/dist/server/modules/admin/functions/translations.mjs +125 -0
- package/dist/server/modules/admin/functions/translations.mjs.map +1 -0
- package/dist/server/modules/admin/functions/widget-data.d.mts +33 -0
- package/dist/server/modules/admin/functions/widget-data.d.mts.map +1 -0
- package/dist/server/modules/admin/functions/widget-data.mjs +70 -0
- package/dist/server/modules/admin/functions/widget-data.mjs.map +1 -0
- package/dist/server/modules/admin/index.d.mts +16879 -0
- package/dist/server/modules/admin/index.d.mts.map +1 -0
- package/dist/server/modules/admin/index.mjs +249 -0
- package/dist/server/modules/admin/index.mjs.map +1 -0
- package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.d.mts +3 -0
- package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.mjs +48 -0
- package/dist/server/modules/admin-preferences/collections/admin-preferences.collection.mjs.map +1 -0
- package/dist/server/modules/admin-preferences/collections/locks.collection.d.mts +3 -0
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +79 -0
- package/dist/server/modules/admin-preferences/collections/locks.collection.mjs.map +1 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts +1490 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.d.mts.map +1 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs +57 -0
- package/dist/server/modules/admin-preferences/collections/saved-views.collection.mjs.map +1 -0
- package/dist/server/patch.d.mts +100 -0
- package/dist/server/patch.d.mts.map +1 -0
- package/dist/server/patch.mjs +1062 -0
- package/dist/server/patch.mjs.map +1 -0
- package/dist/server.d.mts +21 -250
- package/dist/server.mjs +19 -832
- package/dist/shared/preview-utils.d.mts +54 -0
- package/dist/shared/preview-utils.d.mts.map +1 -0
- package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -2
- package/dist/shared/preview-utils.mjs.map +1 -0
- package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
- package/dist/shared/types/saved-views.types.d.mts.map +1 -0
- package/dist/shared.d.mts +3 -57
- package/dist/shared.mjs +1 -1
- package/package.json +12 -17
- 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/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.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.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.map +0 -1
- package/dist/shared.d.mts.map +0 -1
- package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-view.mjs","names":["configs: Record<string, FieldReactiveSchema>","React","configFormActions: FormViewActionsConfig | undefined","formActions: FormViewActionsConfig | undefined","actionQueryClient: ActionQueryClient","actionHelpers: ActionHelpers","actionContext: ActionContext"],"sources":["../../../../src/client/views/collection/form-view.tsx"],"sourcesContent":["/**\n * Form View - Default edit view component\n *\n * Renders collection item edit/create form with sections, tabs, validation.\n * This is the default edit view registered in the admin view registry.\n */\n\nimport { Icon } from \"@iconify/react\";\nimport { createQuestpieQueryOptions } from \"@questpie/tanstack-query\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport type { CollectionSchema, FieldReactiveSchema } from \"questpie/client\";\nimport { QuestpieClientError } from \"questpie/client\";\nimport * as React from \"react\";\nimport { FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { toast } from \"sonner\";\nimport { getDefaultFormActions } from \"../../builder/types/action-registry\";\nimport type {\n\tActionContext,\n\tActionDefinition,\n\tActionHelpers,\n\tActionQueryClient,\n} from \"../../builder/types/action-types\";\nimport type {\n\tCollectionBuilderState,\n\tPreviewConfig,\n} from \"../../builder/types/collection-types\";\nimport type {\n\tComponentRegistry,\n\tFormViewActionsConfig,\n\tFormViewConfig,\n} from \"../../builder/types/field-types\";\nimport { ActionButton } from \"../../components/actions/action-button\";\nimport { ActionDialog } from \"../../components/actions/action-dialog\";\nimport { ConfirmationDialog } from \"../../components/actions/confirmation-dialog\";\nimport { resolveIconElement } from \"../../components/component-renderer\";\nimport { LocaleSwitcher } from \"../../components/locale-switcher\";\nimport {\n\tLivePreviewMode,\n\tuseLivePreviewContext,\n} from \"../../components/preview/live-preview-mode\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport {\n\tDialog,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n} from \"../../components/ui/dialog\";\nimport {\n\tDropdownMenu,\n\tDropdownMenuContent,\n\tDropdownMenuItem,\n\tDropdownMenuSeparator,\n\tDropdownMenuTrigger,\n} from \"../../components/ui/dropdown-menu\";\nimport {\n\tuseAdminConfig,\n\tuseCollectionValidation,\n\tusePreferServerValidation,\n} from \"../../hooks\";\nimport {\n\tuseCollectionCreate,\n\tuseCollectionDelete,\n\tuseCollectionItem,\n\tuseCollectionUpdate,\n} from \"../../hooks/use-collection\";\nimport { useCollectionFields } from \"../../hooks/use-collection-fields\";\nimport { getLockUser, LOCK_DURATION_MS, useLock } from \"../../hooks/use-locks\";\nimport { useReactiveFields } from \"../../hooks/use-reactive-fields\";\nimport { useResolveText, useTranslation } from \"../../i18n/hooks\";\nimport {\n\tselectAdmin,\n\tselectBasePath,\n\tselectClient,\n\tselectNavigate,\n\tuseAdminStore,\n\tuseSafeContentLocales,\n\tuseScopedLocale,\n} from \"../../runtime\";\nimport {\n\tdetectManyToManyRelations,\n\thasManyToManyRelations,\n} from \"../../utils/detect-relations\";\n\nimport { AutoFormFields } from \"./auto-form-fields\";\nimport { FormViewSkeleton } from \"./view-skeletons\";\n\n// ============================================================================\n// Constants\n// ============================================================================\n\n/** Query key prefix for CMS queries (used for cache invalidation) */\nconst QUERY_KEY_PREFIX = [\"questpie\", \"collections\"] as const;\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Extract reactive configs from collection schema fields.\n * Used to determine which fields have server-side reactive behaviors.\n */\nfunction extractReactiveConfigs(\n\tschema: CollectionSchema | undefined,\n): Record<string, FieldReactiveSchema> {\n\tif (!schema?.fields) return {};\n\n\tconst configs: Record<string, FieldReactiveSchema> = {};\n\n\tfor (const [fieldName, fieldDef] of Object.entries(schema.fields)) {\n\t\tif (fieldDef.reactive) {\n\t\t\tconfigs[fieldName] = fieldDef.reactive;\n\t\t}\n\t}\n\n\treturn configs;\n}\n\n/**\n * Component that manages reactive field states.\n * Must be rendered inside FormProvider to access form context.\n */\nfunction ReactiveFieldsManager({\n\tcollection,\n\tmode = \"collection\",\n\treactiveConfigs,\n\tenabled,\n}: {\n\tcollection: string;\n\tmode?: \"collection\" | \"global\";\n\treactiveConfigs: Record<string, FieldReactiveSchema>;\n\tenabled: boolean;\n}) {\n\t// This hook handles:\n\t// 1. Watching form values for changes to reactive dependencies\n\t// 2. Calling server /reactive endpoint to execute handlers\n\t// 3. Setting computed values via form.setValue\n\tuseReactiveFields({\n\t\tcollection,\n\t\tmode,\n\t\treactiveConfigs,\n\t\tenabled: enabled && Object.keys(reactiveConfigs).length > 0,\n\t\tdebounce: 300,\n\t});\n\n\treturn null;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Form view configuration from registry.\n *\n * Re-exports FormViewConfig for type consistency between builder and component.\n */\nexport type FormViewRegistryConfig = FormViewConfig;\n\n/**\n * Props for FormView component\n */\nexport interface FormViewProps {\n\t/**\n\t * Collection name\n\t */\n\tcollection: string;\n\n\t/**\n\t * Item ID (undefined for create, string for edit)\n\t */\n\tid?: string;\n\n\t/**\n\t * Collection configuration from admin builder\n\t * Accepts CollectionBuilderState or any compatible config object\n\t */\n\tconfig?: Partial<CollectionBuilderState> | Record<string, any>;\n\n\t/**\n\t * View-specific configuration from registry\n\t */\n\tviewConfig?: FormViewRegistryConfig;\n\n\t/**\n\t * Navigate function for routing\n\t */\n\tnavigate: (path: string) => void;\n\n\t/**\n\t * Base path for admin routes (e.g., \"/admin\")\n\t */\n\tbasePath?: string;\n\n\t/**\n\t * Default values for create mode (from URL prefill params)\n\t */\n\tdefaultValues?: Record<string, any>;\n\n\t/**\n\t * Component registry for custom field types\n\t */\n\tregistry?: ComponentRegistry;\n\n\t/**\n\t * All collections config (for embedded collections)\n\t */\n\tallCollectionsConfig?: Record<\n\t\tstring,\n\t\tPartial<CollectionBuilderState> | Record<string, any>\n\t>;\n\n\t/**\n\t * Show metadata (ID, created/updated dates)\n\t * @default true\n\t */\n\tshowMeta?: boolean;\n\n\t/**\n\t * Custom header actions (in addition to default Save button)\n\t */\n\theaderActions?: React.ReactNode;\n\n\t/**\n\t * Callback on successful save\n\t */\n\tonSuccess?: (data: any) => void;\n\n\t/**\n\t * Callback on error\n\t */\n\tonError?: (error: Error) => void;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * FormView - Default form-based edit/create view for collections\n *\n * Features:\n * - Auto-generates form fields from collection config\n * - Supports tabs, sections, and sidebar layout\n * - Auto-detects M:N relations\n * - Keyboard shortcut (Cmd+S) to save\n * - Field-level validation errors from API\n *\n * @example\n * ```tsx\n * // Used automatically via registry when navigating to /admin/collections/:name/:id\n * // Can also be used directly:\n * <FormView\n * collection=\"posts\"\n * id=\"123\"\n * config={postsConfig}\n * navigate={navigate}\n * basePath=\"/admin\"\n * />\n * ```\n */\nexport default function FormView({\n\tcollection,\n\tid,\n\tconfig,\n\tviewConfig,\n\tnavigate,\n\tbasePath = \"/admin\",\n\tdefaultValues: defaultValuesProp,\n\tregistry,\n\tallCollectionsConfig,\n\tshowMeta = true,\n\theaderActions,\n\tonSuccess,\n\tonError,\n}: FormViewProps): React.ReactElement {\n\tconst { t } = useTranslation();\n\tconst resolveText = useResolveText();\n\tconst admin = useAdminStore(selectAdmin);\n\tconst { data: adminConfig } = useAdminConfig();\n\tconst isEditMode = !!id;\n\tconst { fields: resolvedFields, schema } = useCollectionFields(collection, {\n\t\tfallbackFields: (config as any)?.fields,\n\t});\n\tconst resolvedFormConfig = React.useMemo(\n\t\t() =>\n\t\t\tviewConfig ??\n\t\t\t(config?.form as any)?.[\"~config\"] ??\n\t\t\t(config?.form as any) ??\n\t\t\t(schema?.admin?.form as any),\n\t\t[viewConfig, config?.form, schema?.admin?.form],\n\t);\n\tconst formConfigBridge = React.useMemo(() => {\n\t\tif (!resolvedFormConfig) return config;\n\n\t\treturn {\n\t\t\t...(config ?? {}),\n\t\t\tform: resolvedFormConfig,\n\t\t};\n\t}, [config, resolvedFormConfig]);\n\n\t// Extract reactive configs from schema for server-side reactive handlers\n\tconst reactiveConfigs = React.useMemo(\n\t\t() => extractReactiveConfigs(schema),\n\t\t[schema],\n\t);\n\n\t// Try to get preview context (will be null if not in LivePreviewMode)\n\tconst previewContext = useLivePreviewContext();\n\n\t// Preview configuration from introspected schema (server-side .preview() config)\n\t// Note: url function cannot be serialized, so we use hasUrlBuilder flag + RPC\n\tconst schemaPreview = schema?.admin?.preview;\n\tconst hasPreview =\n\t\t!!schemaPreview?.hasUrlBuilder && schemaPreview?.enabled !== false;\n\n\t// Check URL for ?preview=true on mount\n\tconst [isLivePreviewOpen, setIsLivePreviewOpen] = React.useState(() => {\n\t\tif (typeof window === \"undefined\") return false;\n\t\tconst params = new URLSearchParams(window.location.search);\n\t\treturn params.get(\"preview\") === \"true\" && hasPreview;\n\t});\n\n\t// Sync preview state with URL\n\tReact.useEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst url = new URL(window.location.href);\n\t\tif (isLivePreviewOpen) {\n\t\t\turl.searchParams.set(\"preview\", \"true\");\n\t\t} else {\n\t\t\turl.searchParams.delete(\"preview\");\n\t\t}\n\n\t\t// Update URL without navigation\n\t\twindow.history.replaceState({}, \"\", url.toString());\n\t}, [isLivePreviewOpen]);\n\n\t// Auto-detect M:N relations that need to be included when fetching\n\tconst withRelations = React.useMemo(\n\t\t() => detectManyToManyRelations({ fields: resolvedFields, schema }),\n\t\t[resolvedFields, schema],\n\t);\n\n\t// Fetch item if in edit mode (include relations if specified)\n\tconst { data: item, isLoading } = useCollectionItem(\n\t\tcollection as any,\n\t\tid ?? \"\",\n\t\thasManyToManyRelations(withRelations)\n\t\t\t? { with: withRelations, localeFallback: false }\n\t\t\t: { localeFallback: false },\n\t\t{ enabled: isEditMode },\n\t);\n\n\t// Document locking - acquire lock when editing, show blocked state if someone else is editing\n\tconst {\n\t\tisBlocked,\n\t\tblockedBy,\n\t\tisOpenElsewhere,\n\t\trefresh: refreshLock,\n\t} = useLock({\n\t\tresourceType: \"collection\",\n\t\tresource: collection,\n\t\tresourceId: id ?? \"\",\n\t\tautoAcquire: isEditMode,\n\t});\n\tconst blockedByUser = blockedBy ? getLockUser(blockedBy) : null;\n\n\t// Transform loaded item - convert relation arrays of objects to arrays of IDs\n\t// Backend returns: { services: [{ id: \"...\", name: \"...\" }] }\n\t// Form needs: { services: [\"id1\", \"id2\"] }\n\tconst transformedItem = React.useMemo(() => {\n\t\tif (!item || !hasManyToManyRelations(withRelations)) return item;\n\n\t\tconst result = { ...item } as any;\n\t\tfor (const key of Object.keys(withRelations)) {\n\t\t\tconst value = result[key];\n\t\t\tif (\n\t\t\t\tArray.isArray(value) &&\n\t\t\t\tvalue.length > 0 &&\n\t\t\t\ttypeof value[0] === \"object\" &&\n\t\t\t\tvalue[0]?.id\n\t\t\t) {\n\t\t\t\t// Transform array of objects to array of IDs\n\t\t\t\tresult[key] = value.map((v: any) => v.id);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}, [item, withRelations]);\n\n\t// Mutations\n\tconst createMutation = useCollectionCreate(collection as any);\n\tconst updateMutation = useCollectionUpdate(collection as any);\n\tconst deleteMutation = useCollectionDelete(collection as any);\n\n\t// Get validation resolver - prefer server validation (AJV with JSON Schema) over client validation\n\tconst clientResolver = useCollectionValidation(collection);\n\tconst resolver = usePreferServerValidation(\n\t\tcollection,\n\t\t{ mode: isEditMode ? \"update\" : \"create\" },\n\t\tclientResolver,\n\t);\n\n\tconst form = useForm({\n\t\tdefaultValues: (transformedItem ?? defaultValuesProp ?? {}) as any,\n\t\tresolver,\n\t});\n\n\t// Autosave state\n\tconst [isSaving, setIsSaving] = React.useState(false);\n\tconst [lastSaved, setLastSaved] = React.useState<Date | null>(null);\n\tconst autoSaveTimerRef = React.useRef<NodeJS.Timeout | null>(null);\n\n\t// Get autosave config from collection config\n\tconst autoSaveConfig = React.useMemo(() => {\n\t\tconst cfg = (config as any)?.autoSave;\n\t\tif (!cfg) return { enabled: false, debounce: 500 };\n\t\treturn {\n\t\t\tenabled: cfg.enabled !== false,\n\t\t\tdebounce: cfg.debounce ?? 500,\n\t\t\tindicator: cfg.indicator !== false,\n\t\t\tpreventNavigation: cfg.preventNavigation !== false,\n\t\t};\n\t}, [config]);\n\n\t// Track content locale changes to warn about unsaved changes\n\t// Uses scoped locale (isolated in ResourceSheet) or global locale\n\tconst {\n\t\tlocale: contentLocale,\n\t\tsetLocale: setContentLocale,\n\t\tisScoped,\n\t} = useScopedLocale();\n\tconst contentLocales = useSafeContentLocales();\n\tconst localeOptions = contentLocales?.locales ?? [];\n\tconst prevLocaleRef = React.useRef(contentLocale);\n\tconst [localeChangeDialog, setLocaleChangeDialog] = React.useState<{\n\t\topen: boolean;\n\t\tpendingLocale: string | null;\n\t}>({ open: false, pendingLocale: null });\n\tconst localeChangeSnapshotRef = React.useRef<Record<string, any> | null>(\n\t\tnull,\n\t);\n\tconst skipItemResetRef = React.useRef(false);\n\n\t// Detect locale change and show confirmation dialog if form is dirty\n\tReact.useEffect(() => {\n\t\tif (!isEditMode) {\n\t\t\tprevLocaleRef.current = contentLocale;\n\t\t\treturn;\n\t\t}\n\t\tif (prevLocaleRef.current !== contentLocale) {\n\t\t\tif (form.formState.isDirty && !localeChangeDialog.open) {\n\t\t\t\t// Store the new locale and revert to previous locale\n\t\t\t\t// The dialog will decide whether to apply or discard\n\t\t\t\tskipItemResetRef.current = true;\n\t\t\t\tlocaleChangeSnapshotRef.current = form.getValues();\n\t\t\t\tsetLocaleChangeDialog({ open: true, pendingLocale: contentLocale });\n\t\t\t\tsetContentLocale(prevLocaleRef.current);\n\t\t\t} else {\n\t\t\t\t// No dirty form, allow locale change\n\t\t\t\tprevLocaleRef.current = contentLocale;\n\t\t\t\tskipItemResetRef.current = false;\n\t\t\t}\n\t\t}\n\t}, [\n\t\tcontentLocale,\n\t\tform.formState.isDirty,\n\t\tform.getValues,\n\t\tsetContentLocale,\n\t\tlocaleChangeDialog.open,\n\t\tisEditMode,\n\t]);\n\n\t// Reset form when item loads\n\tReact.useEffect(() => {\n\t\tif (skipItemResetRef.current) return;\n\t\tif (transformedItem) {\n\t\t\tform.reset(transformedItem as any);\n\t\t} else if (defaultValuesProp) {\n\t\t\tform.reset(defaultValuesProp as any);\n\t\t}\n\t}, [form, transformedItem, defaultValuesProp]);\n\n\t// Handle locale change confirmation\n\tconst handleLocaleChangeConfirm = React.useCallback(() => {\n\t\tskipItemResetRef.current = false;\n\t\tlocaleChangeSnapshotRef.current = null;\n\t\tif (localeChangeDialog.pendingLocale) {\n\t\t\tprevLocaleRef.current = localeChangeDialog.pendingLocale;\n\t\t\tsetContentLocale(localeChangeDialog.pendingLocale);\n\t\t}\n\t\tsetLocaleChangeDialog({ open: false, pendingLocale: null });\n\t}, [localeChangeDialog.pendingLocale, setContentLocale]);\n\n\tconst handleLocaleChangeCancel = React.useCallback(() => {\n\t\tskipItemResetRef.current = false;\n\t\tif (localeChangeSnapshotRef.current) {\n\t\t\tform.reset(localeChangeSnapshotRef.current, {\n\t\t\t\tkeepDirty: true,\n\t\t\t\tkeepDirtyValues: true,\n\t\t\t\tkeepErrors: true,\n\t\t\t\tkeepTouched: true,\n\t\t\t});\n\t\t}\n\t\tlocaleChangeSnapshotRef.current = null;\n\t\tsetLocaleChangeDialog({ open: false, pendingLocale: null });\n\t}, [form]);\n\n\tconst onSubmit = React.useEffectEvent(async (data: any) => {\n\t\tconst savePromise = async () => {\n\t\t\tif (isEditMode) {\n\t\t\t\treturn await updateMutation.mutateAsync({\n\t\t\t\t\tid: id!,\n\t\t\t\t\tdata,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn await createMutation.mutateAsync(data);\n\t\t\t}\n\t\t};\n\n\t\ttoast.promise(savePromise(), {\n\t\t\tloading: isEditMode ? t(\"toast.saving\") : t(\"toast.creating\"),\n\t\t\tsuccess: (result) => {\n\t\t\t\t// Call onSuccess callback if provided\n\t\t\t\tif (onSuccess) {\n\t\t\t\t\tonSuccess(result);\n\t\t\t\t} else {\n\t\t\t\t\tif (isEditMode) {\n\t\t\t\t\t\tform.reset(result as any);\n\n\t\t\t\t\t\t// Trigger preview refresh after successful save\n\t\t\t\t\t\tif (previewContext) {\n\t\t\t\t\t\t\tpreviewContext.triggerPreviewRefresh();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (result?.id) {\n\t\t\t\t\t\tnavigate(`${basePath}/collections/${collection}/${result.id}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnavigate(`${basePath}/collections/${collection}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn isEditMode ? t(\"toast.saveSuccess\") : t(\"toast.createSuccess\");\n\t\t\t},\n\t\t\terror: (error) => {\n\t\t\t\t// Handle field-level validation errors from the API\n\t\t\t\tif (\n\t\t\t\t\terror instanceof QuestpieClientError &&\n\t\t\t\t\terror.fieldErrors &&\n\t\t\t\t\terror.fieldErrors.length > 0\n\t\t\t\t) {\n\t\t\t\t\tfor (const fieldError of error.fieldErrors) {\n\t\t\t\t\t\tform.setError(fieldError.path as any, {\n\t\t\t\t\t\t\ttype: \"server\",\n\t\t\t\t\t\t\tmessage: fieldError.message,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn t(\"toast.validationFailed\");\n\t\t\t\t}\n\n\t\t\t\t// Handle generic errors\n\t\t\t\tconst message =\n\t\t\t\t\terror instanceof Error ? error.message : t(\"error.unknown\");\n\t\t\t\tonError?.(error instanceof Error ? error : new Error(message));\n\t\t\t\treturn `${t(\"toast.saveFailed\")}: ${message}`;\n\t\t\t},\n\t\t});\n\t});\n\n\t// Autosave logic - debounced save on form changes\n\tReact.useEffect(() => {\n\t\t// Clear existing timer\n\t\tif (autoSaveTimerRef.current) {\n\t\t\tclearTimeout(autoSaveTimerRef.current);\n\t\t}\n\n\t\t// Don't autosave if:\n\t\t// - Autosave is disabled\n\t\t// - Form is not dirty\n\t\t// - Form is already submitting\n\t\t// - Not in edit mode (don't autosave on create)\n\t\tif (\n\t\t\t!autoSaveConfig.enabled ||\n\t\t\t!form.formState.isDirty ||\n\t\t\tform.formState.isSubmitting ||\n\t\t\t!isEditMode\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Start debounce timer\n\t\tautoSaveTimerRef.current = setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tsetIsSaving(true);\n\t\t\t\tawait form.handleSubmit(async (data) => {\n\t\t\t\t\t// Silent save (no toast)\n\t\t\t\t\tconst result = await updateMutation.mutateAsync({\n\t\t\t\t\t\tid: id!,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t});\n\n\t\t\t\t\t// Reset form to mark as not dirty\n\t\t\t\t\tform.reset(result as any);\n\n\t\t\t\t\t// Trigger preview refresh after successful save\n\t\t\t\t\tif (previewContext) {\n\t\t\t\t\t\tpreviewContext.triggerPreviewRefresh();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update last saved timestamp\n\t\t\t\t\tsetLastSaved(new Date());\n\t\t\t\t\tsetIsSaving(false);\n\t\t\t\t})();\n\t\t\t} catch (error) {\n\t\t\t\tsetIsSaving(false);\n\t\t\t\t// Silently fail autosave (user can still manually save)\n\t\t\t\tconsole.error(\"Autosave failed:\", error);\n\t\t\t}\n\t\t}, autoSaveConfig.debounce);\n\n\t\treturn () => {\n\t\t\tif (autoSaveTimerRef.current) {\n\t\t\t\tclearTimeout(autoSaveTimerRef.current);\n\t\t\t}\n\t\t};\n\t}, [\n\t\tform.formState.isDirty,\n\t\tform.formState.isSubmitting,\n\t\tform,\n\t\tautoSaveConfig.enabled,\n\t\tautoSaveConfig.debounce,\n\t\tisEditMode,\n\t\tupdateMutation,\n\t\tresolvedFields,\n\t\tadminConfig?.blocks,\n\t\tid,\n\t\tpreviewContext,\n\t\tadmin,\n\t]);\n\n\t// Prevent navigation when there are unsaved changes\n\tReact.useEffect(() => {\n\t\tif (!autoSaveConfig.preventNavigation || !autoSaveConfig.enabled) return;\n\n\t\tconst handleBeforeUnload = (e: BeforeUnloadEvent) => {\n\t\t\tif (form.formState.isDirty) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.returnValue = \"\";\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"beforeunload\", handleBeforeUnload);\n\t\treturn () => window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n\t}, [\n\t\tform.formState.isDirty,\n\t\tautoSaveConfig.preventNavigation,\n\t\tautoSaveConfig.enabled,\n\t]);\n\n\t// Keyboard shortcut: Cmd+S to save\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\tif ((e.metaKey || e.ctrlKey) && e.key === \"s\") {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tform.handleSubmit(onSubmit, (errors) => {\n\t\t\t\t\tconsole.warn(\"[FormView] Validation errors:\", errors);\n\t\t\t\t\ttoast.error(t(\"toast.validationFailed\"));\n\t\t\t\t})();\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => document.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [form, onSubmit]);\n\n\tconst isSubmitting =\n\t\tcreateMutation.isPending ||\n\t\tupdateMutation.isPending ||\n\t\tform.formState.isSubmitting;\n\n\t// ========================================================================\n\t// Form Actions\n\t// ========================================================================\n\n\t// Get form actions from config or use defaults (only for edit mode)\n\tconst configFormActions: FormViewActionsConfig | undefined = (\n\t\tresolvedFormConfig as any\n\t)?.actions;\n\n\t// Use defaults if no actions defined and in edit mode\n\t// In create mode, we don't show duplicate/delete actions\n\tconst formActions: FormViewActionsConfig | undefined = React.useMemo(() => {\n\t\tif (configFormActions) return configFormActions;\n\t\tif (!isEditMode) return { primary: [], secondary: [] };\n\t\treturn getDefaultFormActions();\n\t}, [configFormActions, isEditMode]);\n\n\t// Dialog state for form actions\n\tconst [dialogAction, setDialogAction] =\n\t\tReact.useState<ActionDefinition | null>(null);\n\tconst [confirmAction, setConfirmAction] =\n\t\tReact.useState<ActionDefinition | null>(null);\n\tconst [actionLoading, setActionLoading] = React.useState(false);\n\n\t// Navigation and query client from store/hooks\n\tconst storeNavigate = useAdminStore(selectNavigate);\n\tconst storeBasePath = useAdminStore(selectBasePath);\n\tconst client = useAdminStore(selectClient);\n\tconst queryClient = useQueryClient();\n\n\t// Create query options proxy for key building (same as use-collection hooks)\n\tconst queryOpts = React.useMemo(\n\t\t() =>\n\t\t\tcreateQuestpieQueryOptions(client as any, {\n\t\t\t\tkeyPrefix: QUERY_KEY_PREFIX,\n\t\t\t\tlocale: contentLocale,\n\t\t\t}),\n\t\t[client, contentLocale],\n\t);\n\n\t// Wrapped query client for action context\n\tconst actionQueryClient: ActionQueryClient = React.useMemo(\n\t\t() => ({\n\t\t\tinvalidateQueries: (filters) => queryClient.invalidateQueries(filters),\n\t\t\trefetchQueries: (filters) => queryClient.refetchQueries(filters),\n\t\t\tresetQueries: (filters) => queryClient.resetQueries(filters),\n\t\t}),\n\t\t[queryClient],\n\t);\n\n\t// Action helpers\n\tconst actionHelpers: ActionHelpers = React.useMemo(\n\t\t() => ({\n\t\t\tnavigate: storeNavigate,\n\t\t\ttoast: {\n\t\t\t\tsuccess: toast.success,\n\t\t\t\terror: toast.error,\n\t\t\t\tinfo: toast.info,\n\t\t\t\twarning: toast.warning,\n\t\t\t},\n\t\t\tt,\n\t\t\tinvalidateCollection: async (targetCollection?: string) => {\n\t\t\t\tconst col = targetCollection || collection;\n\t\t\t\t// Invalidate list and count queries for the collection\n\t\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\"collections\", col, \"find\", contentLocale]),\n\t\t\t\t});\n\t\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\"collections\", col, \"count\", contentLocale]),\n\t\t\t\t});\n\t\t\t},\n\t\t\tinvalidateItem: async (itemId: string, targetCollection?: string) => {\n\t\t\t\tconst col = targetCollection || collection;\n\t\t\t\t// Invalidate findOne query for specific item\n\t\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\n\t\t\t\t\t\t\"collections\",\n\t\t\t\t\t\tcol,\n\t\t\t\t\t\t\"findOne\",\n\t\t\t\t\t\tcontentLocale,\n\t\t\t\t\t\t{ id: itemId },\n\t\t\t\t\t]),\n\t\t\t\t});\n\t\t\t\t// Also invalidate list queries since item data changed\n\t\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\"collections\", col, \"find\", contentLocale]),\n\t\t\t\t});\n\t\t\t},\n\t\t\tinvalidateAll: async () => {\n\t\t\t\t// Invalidate all CMS queries\n\t\t\t\tawait queryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [...QUERY_KEY_PREFIX],\n\t\t\t\t});\n\t\t\t},\n\t\t\trefresh: () => {\n\t\t\t\t// Invalidate current collection queries (better than page reload)\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\n\t\t\t\t\t\t\"collections\",\n\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\"find\",\n\t\t\t\t\t\tcontentLocale,\n\t\t\t\t\t]),\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: queryOpts.key([\n\t\t\t\t\t\t\"collections\",\n\t\t\t\t\t\tcollection,\n\t\t\t\t\t\t\"count\",\n\t\t\t\t\t\tcontentLocale,\n\t\t\t\t\t]),\n\t\t\t\t});\n\t\t\t},\n\t\t\tcloseDialog: () => {\n\t\t\t\tsetDialogAction(null);\n\t\t\t\tsetConfirmAction(null);\n\t\t\t},\n\t\t\tbasePath: storeBasePath || basePath,\n\t\t}),\n\t\t[\n\t\t\tstoreNavigate,\n\t\t\tstoreBasePath,\n\t\t\tbasePath,\n\t\t\tqueryClient,\n\t\t\tqueryOpts,\n\t\t\tcollection,\n\t\t\tcontentLocale,\n\t\t\tt,\n\t\t],\n\t);\n\n\t// Action context for visibility/disabled checks\n\tconst actionContext: ActionContext = React.useMemo(\n\t\t() => ({\n\t\t\titem: transformedItem,\n\t\t\tcollection,\n\t\t\thelpers: actionHelpers,\n\t\t\tqueryClient: actionQueryClient,\n\t\t}),\n\t\t[transformedItem, collection, actionHelpers, actionQueryClient],\n\t);\n\n\t// Filter visible actions\n\tconst filterVisibleActions = React.useCallback(\n\t\t(actions: ActionDefinition[] | undefined) => {\n\t\t\tif (!actions) return [];\n\t\t\treturn actions.filter((action) => {\n\t\t\t\tif (action.visible === undefined) return true;\n\t\t\t\tif (typeof action.visible === \"function\") {\n\t\t\t\t\treturn action.visible(actionContext);\n\t\t\t\t}\n\t\t\t\treturn action.visible;\n\t\t\t});\n\t\t},\n\t\t[actionContext],\n\t);\n\n\tconst visiblePrimaryActions = React.useMemo(\n\t\t() => filterVisibleActions(formActions?.primary),\n\t\t[formActions?.primary, filterVisibleActions],\n\t);\n\n\tconst visibleSecondaryActions = React.useMemo(\n\t\t() => filterVisibleActions(formActions?.secondary),\n\t\t[formActions?.secondary, filterVisibleActions],\n\t);\n\n\t// Group secondary by variant\n\tconst regularSecondary = visibleSecondaryActions.filter(\n\t\t(a) => a.variant !== \"destructive\",\n\t);\n\tconst destructiveSecondary = visibleSecondaryActions.filter(\n\t\t(a) => a.variant === \"destructive\",\n\t);\n\n\t// Execute action\n\tconst executeAction = React.useCallback(\n\t\tasync (action: ActionDefinition) => {\n\t\t\tconst { handler } = action;\n\t\t\tconst actionLabel = resolveText(action.label, action.id);\n\n\t\t\tswitch (handler.type) {\n\t\t\t\tcase \"navigate\": {\n\t\t\t\t\tconst path =\n\t\t\t\t\t\ttypeof handler.path === \"function\"\n\t\t\t\t\t\t\t? handler.path(transformedItem)\n\t\t\t\t\t\t\t: handler.path;\n\t\t\t\t\tstoreNavigate(path);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"api\": {\n\t\t\t\t\t// For DELETE operations, use the deleteMutation hook\n\t\t\t\t\tif (handler.method === \"DELETE\") {\n\t\t\t\t\t\tconst itemId = transformedItem?.id || id;\n\t\t\t\t\t\tif (!itemId) {\n\t\t\t\t\t\t\ttoast.error(t(\"toast.deleteFailed\"));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsetActionLoading(true);\n\t\t\t\t\t\ttoast.promise(\n\t\t\t\t\t\t\tdeleteMutation.mutateAsync(itemId).finally(() => {\n\t\t\t\t\t\t\t\tsetActionLoading(false);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tloading: t(\"toast.deleting\"),\n\t\t\t\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\t\t\t\t// Navigate back to list on delete\n\t\t\t\t\t\t\t\t\tnavigate(`${basePath}/collections/${collection}`);\n\t\t\t\t\t\t\t\t\treturn t(\"toast.deleteSuccess\");\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\terror: (err) => err.message || t(\"toast.deleteFailed\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// For other API operations, make a fetch request\n\t\t\t\t\t\t// (This is a fallback - most actions should use custom handlers)\n\t\t\t\t\t\tconst endpoint = handler.endpoint.replace(\n\t\t\t\t\t\t\t\"{id}\",\n\t\t\t\t\t\t\tString(transformedItem?.id || id),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetActionLoading(true);\n\t\t\t\t\t\tconst apiPromise = async () => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t// Build the URL using CMS API path\n\t\t\t\t\t\t\t\tconst url = `${storeBasePath}/${collection}/${endpoint}`;\n\t\t\t\t\t\t\t\tconst response = await fetch(url, {\n\t\t\t\t\t\t\t\t\tmethod: handler.method || \"POST\",\n\t\t\t\t\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\t\t\t\t\tbody: handler.body\n\t\t\t\t\t\t\t\t\t\t? JSON.stringify(handler.body(actionContext))\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\t\t\tconst error = await response.json().catch(() => ({}));\n\t\t\t\t\t\t\t\t\tthrow new Error(error.message || t(\"toast.actionFailed\"));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn response.json();\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\tsetActionLoading(false);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ttoast.promise(apiPromise(), {\n\t\t\t\t\t\t\tloading: `${actionLabel}...`,\n\t\t\t\t\t\t\tsuccess: t(\"toast.actionSuccess\"),\n\t\t\t\t\t\t\terror: (err) => err.message || t(\"toast.actionFailed\"),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst customPromise = handler.fn(actionContext);\n\t\t\t\t\t// Only use toast.promise if it returns a promise\n\t\t\t\t\tif (customPromise instanceof Promise) {\n\t\t\t\t\t\tsetActionLoading(true);\n\t\t\t\t\t\ttoast.promise(\n\t\t\t\t\t\t\tcustomPromise.finally(() => setActionLoading(false)),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tloading: `${actionLabel}...`,\n\t\t\t\t\t\t\t\tsuccess: t(\"toast.actionSuccess\"),\n\t\t\t\t\t\t\t\terror: (err) => err.message || t(\"toast.actionFailed\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetConfirmAction(null);\n\t\t},\n\t\t[\n\t\t\ttransformedItem,\n\t\t\tid,\n\t\t\tactionContext,\n\t\t\tstoreNavigate,\n\t\t\tstoreBasePath,\n\t\t\tdeleteMutation,\n\t\t\tcollection,\n\t\t\tbasePath,\n\t\t\tnavigate,\n\t\t\tt,\n\t\t\tresolveText,\n\t\t],\n\t);\n\n\t// Handle action click\n\tconst handleActionClick = React.useCallback(\n\t\t(action: ActionDefinition) => {\n\t\t\tif (action.confirmation) {\n\t\t\t\tsetConfirmAction(action);\n\t\t\t} else if (\n\t\t\t\taction.handler.type === \"dialog\" ||\n\t\t\t\taction.handler.type === \"form\"\n\t\t\t) {\n\t\t\t\tsetDialogAction(action);\n\t\t\t} else {\n\t\t\t\t// Execute immediately\n\t\t\t\texecuteAction(action);\n\t\t\t}\n\t\t},\n\t\t[executeAction],\n\t);\n\n\t// Handle confirmation\n\tconst handleConfirm = React.useCallback(async () => {\n\t\tif (confirmAction) {\n\t\t\tawait executeAction(confirmAction);\n\t\t}\n\t}, [confirmAction, executeAction]);\n\n\t// Format date helper\n\tconst formatDate = (date: string | Date) => {\n\t\treturn new Date(date).toLocaleDateString(undefined, {\n\t\t\tyear: \"numeric\",\n\t\t\tmonth: \"short\",\n\t\t\tday: \"numeric\",\n\t\t\thour: \"2-digit\",\n\t\t\tminute: \"2-digit\",\n\t\t});\n\t};\n\n\t// Format time ago helper\n\tconst formatTimeAgo = (date: Date) => {\n\t\tconst seconds = Math.floor((Date.now() - date.getTime()) / 1000);\n\t\tif (seconds < 10) return t(\"autosave.justNow\");\n\t\tif (seconds < 60) return t(\"autosave.secondsAgo\", { count: seconds });\n\t\tconst minutes = Math.floor(seconds / 60);\n\t\tif (minutes < 60) return t(\"autosave.minutesAgo\", { count: minutes });\n\t\tconst hours = Math.floor(minutes / 60);\n\t\treturn t(\"autosave.hoursAgo\", { count: hours });\n\t};\n\n\t// Re-render every 10 seconds to update \"time ago\" display\n\tconst [, forceUpdate] = React.useReducer((x) => x + 1, 0);\n\tReact.useEffect(() => {\n\t\tif (!lastSaved || !autoSaveConfig.indicator) return;\n\t\tconst interval = setInterval(forceUpdate, 10000);\n\t\treturn () => clearInterval(interval);\n\t}, [lastSaved, autoSaveConfig.indicator]);\n\n\t// Watch form values for preview updates\n\t// Using useWatch hook (React way) instead of form.watch() method\n\t// This is more performant as it's a proper React subscription\n\tconst watchedValues = useWatch({ control: form.control });\n\n\t// Refresh lock on form activity (debounced) - keeps lock alive while user is editing\n\tconst lockRefreshTimerRef = React.useRef<NodeJS.Timeout | null>(null);\n\tReact.useEffect(() => {\n\t\tif (!isEditMode || isBlocked) return;\n\n\t\t// Debounce lock refresh - only refresh after user stops typing for 1s\n\t\tif (lockRefreshTimerRef.current) {\n\t\t\tclearTimeout(lockRefreshTimerRef.current);\n\t\t}\n\t\tlockRefreshTimerRef.current = setTimeout(() => {\n\t\t\trefreshLock();\n\t\t}, 1000);\n\n\t\treturn () => {\n\t\t\tif (lockRefreshTimerRef.current) {\n\t\t\t\tclearTimeout(lockRefreshTimerRef.current);\n\t\t\t}\n\t\t};\n\t}, [watchedValues, isEditMode, isBlocked, refreshLock]);\n\n\t// Generate preview URL via server RPC (url function runs server-side)\n\t// Must be after useWatch for reactive updates to form values\n\tconst [previewUrl, setPreviewUrl] = React.useState<string | null>(null);\n\n\tReact.useEffect(() => {\n\t\tif (!hasPreview || !client) {\n\t\t\tsetPreviewUrl(null);\n\t\t\treturn;\n\t\t}\n\n\t\t// Debounce the RPC call to avoid too many requests\n\t\tconst timeoutId = setTimeout(async () => {\n\t\t\ttry {\n\t\t\t\tconst formValues = (watchedValues ?? {}) as Record<string, unknown>;\n\t\t\t\t// Type assertion needed - getPreviewUrl is dynamically registered via adminModule\n\t\t\t\tconst rpc = (client as any).rpc;\n\t\t\t\tconst result = await rpc.getPreviewUrl({\n\t\t\t\t\tcollection,\n\t\t\t\t\trecord: formValues,\n\t\t\t\t\tlocale: contentLocale,\n\t\t\t\t});\n\t\t\t\tsetPreviewUrl(result?.url ?? null);\n\t\t\t} catch {\n\t\t\t\tsetPreviewUrl(null);\n\t\t\t}\n\t\t}, 300);\n\n\t\treturn () => clearTimeout(timeoutId);\n\t}, [hasPreview, client, collection, watchedValues, contentLocale]);\n\n\t// Show skeleton until form data is ready (edit mode only)\n\t// This prevents race conditions where form fields render before data is loaded\n\tif (isEditMode && isLoading) {\n\t\treturn <FormViewSkeleton />;\n\t}\n\n\tconst collectionLabel = resolveText(\n\t\t(config as any)?.label ?? schema?.admin?.config?.label,\n\t\tcollection,\n\t);\n\t// In edit mode, show item's _title; in new mode, show \"New {collection}\"\n\tconst title = isEditMode\n\t\t? (item as any)?._title ||\n\t\t\titem?.id ||\n\t\t\tt(\"collection.edit\", { name: collectionLabel })\n\t\t: t(\"collection.new\", { name: collectionLabel });\n\n\t// Form content - extracted for reuse in both layouts\n\tconst formContent = (\n\t\t<>\n\t\t\t{/* Lock banner - show when someone else is editing */}\n\t\t\t{isBlocked && blockedByUser && (\n\t\t\t\t<div className=\"flex items-center gap-3 p-3 mb-4 rounded-lg bg-warning/10 border border-warning/30\">\n\t\t\t\t\t{blockedByUser.image ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={blockedByUser.image}\n\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\tclassName=\"size-8 rounded-full\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className=\"size-8 rounded-full bg-warning/20 flex items-center justify-center\">\n\t\t\t\t\t\t\t<Icon icon=\"ph:user\" className=\"size-4 text-warning\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"flex-1 min-w-0\">\n\t\t\t\t\t\t<p className=\"text-sm font-medium text-warning\">\n\t\t\t\t\t\t\t{t(\"lock.blockedTitle\", {\n\t\t\t\t\t\t\t\tname: blockedByUser.name ?? blockedByUser.email,\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p className=\"text-xs text-warning/80\">\n\t\t\t\t\t\t\t{t(\"lock.blockedDescription\")}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Icon icon=\"ph:lock-simple\" className=\"size-5 text-warning\" />\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* Warning banner - show when same user has document open elsewhere */}\n\t\t\t{isOpenElsewhere && (\n\t\t\t\t<div className=\"flex items-center gap-3 p-3 mb-4 rounded-lg bg-info/10 border border-info/30\">\n\t\t\t\t\t<Icon icon=\"ph:browser\" className=\"size-5 text-info\" />\n\t\t\t\t\t<p className=\"text-sm text-info\">{t(\"lock.openElsewhere\")}</p>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<FormProvider {...form}>\n\t\t\t\t{/* Manage server-side reactive field behaviors (compute, hidden, etc.) */}\n\t\t\t\t<ReactiveFieldsManager\n\t\t\t\t\tcollection={collection}\n\t\t\t\t\treactiveConfigs={reactiveConfigs}\n\t\t\t\t\tenabled={!isBlocked && !isSubmitting}\n\t\t\t\t/>\n\t\t\t\t<form\n\t\t\t\t\tonSubmit={(e) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (isBlocked) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\ttoast.error(t(\"lock.cannotSave\"));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tform.handleSubmit(onSubmit, (errors) => {\n\t\t\t\t\t\t\tconsole.warn(\"[FormView] Validation errors:\", errors);\n\t\t\t\t\t\t\ttoast.error(t(\"toast.validationFailed\"), {\n\t\t\t\t\t\t\t\tdescription: t(\"toast.validationDescription\"),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t})(e);\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"space-y-4\"\n\t\t\t\t>\n\t\t\t\t\t{/* Header - Title, Meta & Actions */}\n\t\t\t\t\t<div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-3 flex-wrap\">\n\t\t\t\t\t\t\t\t<h1 className=\"text-2xl md:text-3xl font-extrabold tracking-tight truncate\">\n\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t\t\t{localeOptions.length > 0 && (\n\t\t\t\t\t\t\t\t\t<LocaleSwitcher\n\t\t\t\t\t\t\t\t\t\tlocales={localeOptions}\n\t\t\t\t\t\t\t\t\t\tvalue={contentLocale}\n\t\t\t\t\t\t\t\t\t\tonChange={setContentLocale}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t{/* Autosave status indicator */}\n\t\t\t\t\t\t\t\t{autoSaveConfig.indicator &&\n\t\t\t\t\t\t\t\t\tautoSaveConfig.enabled &&\n\t\t\t\t\t\t\t\t\tisEditMode && (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{isSaving && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"secondary\" className=\"gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon=\"ph:spinner-gap\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-3 animate-spin\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"autosave.saving\")}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{!isSaving && form.formState.isDirty && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant=\"outline\" className=\"gap-1.5\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ticon=\"ph:clock-counter-clockwise\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-3\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"autosave.unsavedChanges\")}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{!isSaving && !form.formState.isDirty && lastSaved && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"gap-1.5 text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:check\" className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"autosave.saved\")} {formatTimeAgo(lastSaved)}\n\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/* Metadata - horizontal scroll on mobile */}\n\t\t\t\t\t\t\t{showMeta && item && (\n\t\t\t\t\t\t\t\t<div className=\"mt-1 overflow-x-auto no-scrollbar\">\n\t\t\t\t\t\t\t\t\t<p className=\"text-xs text-muted-foreground font-mono flex items-center gap-2 whitespace-nowrap\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"opacity-60\">{t(\"form.id\")}:</span>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"hover:text-foreground transition-colors cursor-pointer\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(String(item.id)).then(\n\t\t\t\t\t\t\t\t\t\t\t\t\t() => toast.success(t(\"toast.idCopied\")),\n\t\t\t\t\t\t\t\t\t\t\t\t\t() => toast.error(t(\"toast.copyFailed\")),\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\ttitle={t(\"common.copy\")}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{item.id}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t{item.createdAt && (\n\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"opacity-40\">·</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"opacity-60\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.created\")}{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formatDate(item.createdAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{item.updatedAt && (\n\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"opacity-40\">·</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"opacity-60\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"form.updated\")}{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{formatDate(item.updatedAt)}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div className=\"flex items-center gap-2 shrink-0 w-auto\">\n\t\t\t\t\t\t\t{headerActions}\n\n\t\t\t\t\t\t\t{/* Live Preview button */}\n\t\t\t\t\t\t\t{hasPreview && (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\tclassName=\"size-9\"\n\t\t\t\t\t\t\t\t\tonClick={() => setIsLivePreviewOpen(true)}\n\t\t\t\t\t\t\t\t\ttitle={t(\"preview.livePreview\")}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:eye\" className=\"size-4\" />\n\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">{t(\"preview.livePreview\")}</span>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* Primary form actions as buttons */}\n\t\t\t\t\t\t\t{visiblePrimaryActions.map((action) => (\n\t\t\t\t\t\t\t\t<ActionButton\n\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\taction={action}\n\t\t\t\t\t\t\t\t\tcollection={collection}\n\t\t\t\t\t\t\t\t\thelpers={actionHelpers}\n\t\t\t\t\t\t\t\t\tonOpenDialog={(a) => setDialogAction(a)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t\t{/* Save button */}\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t\tdisabled={isSubmitting || !form.formState.isDirty}\n\t\t\t\t\t\t\t\tclassName=\"gap-2\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{isSubmitting ? (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon=\"ph:spinner-gap\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-4 animate-spin\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{t(\"common.loading\")}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:check\" width={16} height={16} />\n\t\t\t\t\t\t\t\t\t\t{t(\"common.save\")}\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Button>\n\n\t\t\t\t\t\t\t{/* Secondary form actions in dropdown */}\n\t\t\t\t\t\t\t{visibleSecondaryActions.length > 0 && (\n\t\t\t\t\t\t\t\t<DropdownMenu>\n\t\t\t\t\t\t\t\t\t<DropdownMenuTrigger\n\t\t\t\t\t\t\t\t\t\trender={\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-9\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"ph:dots-three-vertical\" className=\"size-4\" />\n\t\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">{t(\"common.moreActions\")}</span>\n\t\t\t\t\t\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t\t\t\t\t\t<DropdownMenuContent align=\"end\">\n\t\t\t\t\t\t\t\t\t\t{regularSecondary.map((action) => {\n\t\t\t\t\t\t\t\t\t\t\tconst iconElement = resolveIconElement(action.icon, {\n\t\t\t\t\t\t\t\t\t\t\t\tclassName: \"mr-2 size-4\",\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick(action)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={actionLoading}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{iconElement}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{resolveText(action.label)}\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t\t\t\t\t{regularSecondary.length > 0 &&\n\t\t\t\t\t\t\t\t\t\t\tdestructiveSecondary.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuSeparator />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t{destructiveSecondary.map((action) => {\n\t\t\t\t\t\t\t\t\t\t\tconst iconElement = resolveIconElement(action.icon, {\n\t\t\t\t\t\t\t\t\t\t\t\tclassName: \"mr-2 size-4\",\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={action.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick(action)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={actionLoading}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{iconElement}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{resolveText(action.label)}\n\t\t\t\t\t\t\t\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</DropdownMenuContent>\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Main Content - Form Fields */}\n\t\t\t\t\t<AutoFormFields\n\t\t\t\t\t\tcollection={collection as any}\n\t\t\t\t\t\tconfig={formConfigBridge}\n\t\t\t\t\t\tregistry={registry}\n\t\t\t\t\t\tallCollectionsConfig={allCollectionsConfig}\n\t\t\t\t\t/>\n\t\t\t\t</form>\n\t\t\t</FormProvider>\n\n\t\t\t{/* Locale Change Confirmation Dialog */}\n\t\t\t<Dialog\n\t\t\t\topen={localeChangeDialog.open}\n\t\t\t\tonOpenChange={(open) => {\n\t\t\t\t\tif (!open) handleLocaleChangeCancel();\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<DialogContent showCloseButton={false}>\n\t\t\t\t\t<DialogHeader>\n\t\t\t\t\t\t<DialogTitle className=\"flex items-center gap-2\">\n\t\t\t\t\t\t\t<Icon icon=\"ph:warning-fill\" className=\"size-5 text-warning\" />\n\t\t\t\t\t\t\t{t(\"confirm.localeChange\")}\n\t\t\t\t\t\t</DialogTitle>\n\t\t\t\t\t\t<DialogDescription>\n\t\t\t\t\t\t\t{t(\"confirm.localeChangeDescription\")}\n\t\t\t\t\t\t</DialogDescription>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t\t<DialogFooter>\n\t\t\t\t\t\t<Button variant=\"outline\" onClick={handleLocaleChangeCancel}>\n\t\t\t\t\t\t\t{t(\"confirm.localeChangeStay\")}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button variant=\"destructive\" onClick={handleLocaleChangeConfirm}>\n\t\t\t\t\t\t\t{t(\"confirm.localeChangeDiscard\")}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</DialogFooter>\n\t\t\t\t</DialogContent>\n\t\t\t</Dialog>\n\n\t\t\t{/* Action Confirmation Dialog */}\n\t\t\t{confirmAction?.confirmation && (\n\t\t\t\t<ConfirmationDialog\n\t\t\t\t\topen={!!confirmAction}\n\t\t\t\t\tonOpenChange={(open) => !open && setConfirmAction(null)}\n\t\t\t\t\tconfig={confirmAction.confirmation}\n\t\t\t\t\tonConfirm={handleConfirm}\n\t\t\t\t\tloading={actionLoading}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{/* Action Dialog (for form/dialog handlers) */}\n\t\t\t{dialogAction && (\n\t\t\t\t<ActionDialog\n\t\t\t\t\topen={!!dialogAction}\n\t\t\t\t\tonOpenChange={(open) => !open && setDialogAction(null)}\n\t\t\t\t\taction={dialogAction}\n\t\t\t\t\tcollection={collection}\n\t\t\t\t\titem={transformedItem}\n\t\t\t\t\thelpers={actionHelpers}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"w-full\">{formContent}</div>\n\n\t\t\t{/* Live Preview Mode */}\n\t\t\t{hasPreview && previewUrl && (\n\t\t\t\t<LivePreviewMode\n\t\t\t\t\topen={isLivePreviewOpen}\n\t\t\t\t\tonClose={() => setIsLivePreviewOpen(false)}\n\t\t\t\t\tcollection={collection}\n\t\t\t\t\titemId={id}\n\t\t\t\t\tconfig={config}\n\t\t\t\t\tallCollectionsConfig={allCollectionsConfig}\n\t\t\t\t\tregistry={registry}\n\t\t\t\t\tpreviewUrl={previewUrl}\n\t\t\t\t\tonSuccess={onSuccess}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "./auto-form-fields.mjs";
|
|
2
|
+
import { ArrayCell, JsonCell, ObjectCell } from "./cells/complex-cells.mjs";
|
|
3
|
+
import { BooleanCell, DateCell, DateTimeCell, EmailCell, NumberCell, RichTextCell, SelectCell, TextCell, TimeCell } from "./cells/primitive-cells.mjs";
|
|
4
|
+
import { RelationCell } from "./cells/relation-cells.mjs";
|
|
5
|
+
import { UploadCell } from "./cells/upload-cells.mjs";
|
|
6
|
+
import "./cells/index.mjs";
|
|
7
|
+
import "./columns/index.mjs";
|
|
8
|
+
import { FormView, FormViewProps, FormViewRegistryConfig } from "./form-view.mjs";
|
|
9
|
+
import { TableView, TableViewConfig, TableViewProps } from "./table-view.mjs";
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ActionsConfig } from "../../builder/types/action-types.mjs";
|
|
2
|
+
import { CollectionBuilderState, ListViewConfig } from "../../builder/types/collection-types.mjs";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/client/views/collection/table-view.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Table view configuration from registry.
|
|
9
|
+
*
|
|
10
|
+
* Re-exports ListViewConfig for type consistency between builder and component.
|
|
11
|
+
*/
|
|
12
|
+
type TableViewConfig = ListViewConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Props for TableView component
|
|
15
|
+
*/
|
|
16
|
+
interface TableViewProps {
|
|
17
|
+
/**
|
|
18
|
+
* Collection name
|
|
19
|
+
*/
|
|
20
|
+
collection: string;
|
|
21
|
+
/**
|
|
22
|
+
* Collection configuration from admin builder
|
|
23
|
+
* Accepts CollectionBuilderState or any compatible config object
|
|
24
|
+
*/
|
|
25
|
+
config?: Partial<CollectionBuilderState> | Record<string, any>;
|
|
26
|
+
/**
|
|
27
|
+
* View-specific configuration from registry
|
|
28
|
+
*/
|
|
29
|
+
viewConfig?: TableViewConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Navigate function for routing
|
|
32
|
+
*/
|
|
33
|
+
navigate: (path: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Base path for admin routes (e.g., "/admin")
|
|
36
|
+
*/
|
|
37
|
+
basePath?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Show search functionality
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
42
|
+
showSearch?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Show filter functionality
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
showFilters?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Show toolbar
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
showToolbar?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Enable realtime invalidation for this table.
|
|
55
|
+
* Falls back to AdminProvider realtime config when undefined.
|
|
56
|
+
*/
|
|
57
|
+
realtime?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Custom header actions (in addition to configured actions)
|
|
60
|
+
* @deprecated Use actions config instead
|
|
61
|
+
*/
|
|
62
|
+
headerActions?: React$1.ReactNode;
|
|
63
|
+
/**
|
|
64
|
+
* Custom empty state
|
|
65
|
+
*/
|
|
66
|
+
emptyState?: React$1.ReactNode;
|
|
67
|
+
/**
|
|
68
|
+
* Actions configuration (header, row, bulk)
|
|
69
|
+
* If not provided, defaults will be used
|
|
70
|
+
*/
|
|
71
|
+
actionsConfig?: ActionsConfig;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* TableView - Default table-based list view for collections
|
|
75
|
+
*
|
|
76
|
+
* Uses Suspense for data loading to eliminate race conditions.
|
|
77
|
+
* Critical data (collectionMeta, user session, preferences) is loaded
|
|
78
|
+
* before rendering, ensuring stable initial state.
|
|
79
|
+
*
|
|
80
|
+
* Features:
|
|
81
|
+
* - Auto-generates columns from collection config
|
|
82
|
+
* - Search and filter functionality
|
|
83
|
+
* - Sortable columns
|
|
84
|
+
* - Saved views support
|
|
85
|
+
* - Auto-expands upload/relation fields
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```tsx
|
|
89
|
+
* // Used automatically via registry when navigating to /admin/collections/:name
|
|
90
|
+
* // Can also be used directly:
|
|
91
|
+
* <TableView
|
|
92
|
+
* collection="posts"
|
|
93
|
+
* config={postsConfig}
|
|
94
|
+
* navigate={navigate}
|
|
95
|
+
* basePath="/admin"
|
|
96
|
+
* />
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
declare function TableView(props: TableViewProps): React$1.ReactElement;
|
|
100
|
+
//#endregion
|
|
101
|
+
export { TableView, TableViewConfig, TableViewProps };
|
|
102
|
+
//# sourceMappingURL=table-view.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-view.d.mts","names":[],"sources":["../../../../src/client/views/collection/table-view.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;AAoM8B,KA5FlB,eAAA,GAAkB,cA4FA;AAC7B;;;UAnEgB,cAAA;;;;;;;;;WAUP,QAAQ,0BAA0B;;;;eAK9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwCG,OAAA,CAAM;;;;eAKT,OAAA,CAAM;;;;;kBAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiCO,SAAA,QAAiB,iBAAiB,OAAA,CAAM"}
|