@questpie/admin 1.1.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/README.md +256 -488
  2. package/dist/augmentation.d.mts +414 -0
  3. package/dist/client/blocks/block-renderer.d.mts +45 -0
  4. package/dist/client/blocks/block-renderer.mjs +105 -0
  5. package/dist/client/blocks/index.d.mts +2 -0
  6. package/dist/client/blocks/types.d.mts +68 -0
  7. package/dist/client/blocks/types.mjs +19 -0
  8. package/dist/client/builder/admin-types.d.mts +40 -0
  9. package/dist/client/builder/admin.d.mts +110 -0
  10. package/dist/client/builder/admin.mjs +151 -0
  11. package/dist/client/builder/field/field.d.mts +51 -0
  12. package/dist/client/builder/field/field.mjs +37 -0
  13. package/dist/client/builder/index.d.mts +31 -0
  14. package/dist/client/builder/page/page.d.mts +24 -0
  15. package/dist/client/builder/page/page.mjs +31 -0
  16. package/dist/client/builder/registry.d.mts +50 -0
  17. package/dist/client/builder/types/action-registry.mjs +276 -0
  18. package/dist/client/builder/types/action-types.d.mts +226 -0
  19. package/dist/client/builder/types/collection-types.mjs +10 -0
  20. package/dist/client/builder/types/common.d.mts +46 -0
  21. package/dist/client/builder/types/field-types.d.mts +592 -0
  22. package/dist/client/builder/types/field-types.mjs +18 -0
  23. package/dist/client/builder/types/ui-config.d.mts +158 -0
  24. package/dist/client/builder/types/widget-types.d.mts +562 -0
  25. package/dist/client/builder/validation.d.mts +33 -0
  26. package/dist/client/builder/validation.mjs +227 -0
  27. package/dist/client/builder/view/view.d.mts +49 -0
  28. package/dist/client/builder/view/view.mjs +27 -0
  29. package/dist/client/builder/widget/widget.d.mts +27 -0
  30. package/dist/client/builder/widget/widget.mjs +21 -0
  31. package/dist/client/components/actions/action-button.mjs +245 -0
  32. package/dist/client/components/actions/action-dialog.mjs +559 -0
  33. package/dist/client/components/actions/confirmation-dialog.mjs +201 -0
  34. package/dist/client/components/actions/header-actions.mjs +210 -0
  35. package/dist/client/components/admin-link.d.mts +66 -0
  36. package/dist/client/components/admin-link.mjs +171 -0
  37. package/dist/client/components/auth/auth-guard.d.mts +50 -0
  38. package/dist/client/components/auth/auth-guard.mjs +60 -0
  39. package/dist/client/components/auth/auth-loading.d.mts +35 -0
  40. package/dist/client/components/auth/auth-loading.mjs +55 -0
  41. package/dist/client/components/blocks/block-canvas.mjs +159 -0
  42. package/dist/client/components/blocks/block-editor-context.mjs +125 -0
  43. package/dist/client/components/blocks/block-editor-layout.mjs +199 -0
  44. package/dist/client/components/blocks/block-editor-provider.mjs +235 -0
  45. package/dist/client/components/blocks/block-fields-renderer.mjs +240 -0
  46. package/dist/client/components/blocks/block-insert-button.mjs +189 -0
  47. package/dist/client/components/blocks/block-item-menu.mjs +363 -0
  48. package/dist/client/components/blocks/block-item.mjs +434 -0
  49. package/dist/client/components/blocks/block-library-sidebar.mjs +285 -0
  50. package/dist/client/components/blocks/block-tree.mjs +103 -0
  51. package/dist/client/components/blocks/block-type-icon.mjs +95 -0
  52. package/dist/client/components/blocks/utils/tree-utils.mjs +185 -0
  53. package/dist/client/components/component-renderer.d.mts +114 -0
  54. package/dist/client/components/component-renderer.mjs +258 -0
  55. package/dist/client/components/error-boundary.mjs +144 -0
  56. package/dist/client/components/fields/array-field.mjs +506 -0
  57. package/dist/client/components/fields/asset-preview-field.mjs +159 -0
  58. package/dist/client/components/fields/blocks-field/blocks-field.mjs +209 -0
  59. package/dist/client/components/fields/boolean-field.mjs +77 -0
  60. package/dist/client/components/fields/date-field.mjs +76 -0
  61. package/dist/client/components/fields/datetime-field.mjs +74 -0
  62. package/dist/client/components/fields/email-field.mjs +67 -0
  63. package/dist/client/components/fields/field-utils.mjs +64 -0
  64. package/dist/client/components/fields/field-wrapper.mjs +124 -0
  65. package/dist/client/components/fields/json-field.mjs +461 -0
  66. package/dist/client/components/fields/locale-badge.mjs +25 -0
  67. package/dist/client/components/fields/number-field.mjs +73 -0
  68. package/dist/client/components/fields/object-array-field.mjs +707 -0
  69. package/dist/client/components/fields/object-field.mjs +686 -0
  70. package/dist/client/components/fields/relation/displays/cards-display.mjs +254 -0
  71. package/dist/client/components/fields/relation/displays/chips-display.mjs +173 -0
  72. package/dist/client/components/fields/relation/displays/grid-display.mjs +209 -0
  73. package/dist/client/components/fields/relation/displays/list-display.mjs +247 -0
  74. package/dist/client/components/fields/relation/displays/table-display.mjs +309 -0
  75. package/dist/client/components/fields/relation/displays/types.mjs +72 -0
  76. package/dist/client/components/fields/relation/relation-items-display.mjs +143 -0
  77. package/dist/client/components/fields/relation-field.mjs +161 -0
  78. package/dist/client/components/fields/relation-picker.mjs +296 -0
  79. package/dist/client/components/fields/relation-select.mjs +232 -0
  80. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +105 -0
  81. package/dist/client/components/fields/rich-text-editor/extensions.mjs +144 -0
  82. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +221 -0
  83. package/dist/client/components/fields/rich-text-editor/index.mjs +520 -0
  84. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +85 -0
  85. package/dist/client/components/fields/rich-text-editor/presets.mjs +123 -0
  86. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +188 -0
  87. package/dist/client/components/fields/rich-text-editor/table-controls.mjs +433 -0
  88. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +541 -0
  89. package/dist/client/components/fields/rich-text-editor/types.mjs +30 -0
  90. package/dist/client/components/fields/rich-text-editor/utils.mjs +50 -0
  91. package/dist/client/components/fields/rich-text-field.mjs +64 -0
  92. package/dist/client/components/fields/select-field.mjs +88 -0
  93. package/dist/client/components/fields/text-field.mjs +72 -0
  94. package/dist/client/components/fields/textarea-field.mjs +71 -0
  95. package/dist/client/components/fields/time-field.mjs +67 -0
  96. package/dist/client/components/fields/upload-field.mjs +621 -0
  97. package/dist/client/components/filter-builder/columns-tab.mjs +325 -0
  98. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +456 -0
  99. package/dist/client/components/filter-builder/filters-tab.mjs +663 -0
  100. package/dist/client/components/filter-builder/saved-views-tab.mjs +278 -0
  101. package/dist/client/components/history-sidebar.mjs +496 -0
  102. package/dist/client/components/layout/field-layout-renderer.mjs +301 -0
  103. package/dist/client/components/locale-switcher.mjs +251 -0
  104. package/dist/client/components/media/media-grid.mjs +314 -0
  105. package/dist/client/components/media/media-picker-dialog.mjs +563 -0
  106. package/dist/client/components/preview/live-preview-mode.mjs +503 -0
  107. package/dist/client/components/preview/preview-pane.mjs +388 -0
  108. package/dist/client/components/primitives/asset-preview.mjs +771 -0
  109. package/dist/client/components/primitives/checkbox-input.mjs +59 -0
  110. package/dist/client/components/primitives/date-input.mjs +461 -0
  111. package/dist/client/components/primitives/dropzone.mjs +368 -0
  112. package/dist/client/components/primitives/number-input.mjs +117 -0
  113. package/dist/client/components/primitives/select-multi.mjs +590 -0
  114. package/dist/client/components/primitives/select-single.mjs +473 -0
  115. package/dist/client/components/primitives/text-input.mjs +45 -0
  116. package/dist/client/components/primitives/textarea-input.mjs +43 -0
  117. package/dist/client/components/primitives/time-input.mjs +145 -0
  118. package/dist/client/components/primitives/toggle-input.mjs +51 -0
  119. package/dist/client/components/primitives/types.mjs +12 -0
  120. package/dist/client/components/sheets/resource-sheet.mjs +86 -0
  121. package/dist/client/components/ui/accordion.mjs +169 -0
  122. package/dist/client/components/ui/alert.mjs +85 -0
  123. package/dist/client/components/ui/badge.mjs +76 -0
  124. package/dist/client/components/ui/button.mjs +84 -0
  125. package/dist/client/components/ui/card.mjs +206 -0
  126. package/dist/client/components/ui/checkbox.mjs +82 -0
  127. package/dist/client/components/ui/command.mjs +239 -0
  128. package/dist/client/components/ui/dialog.mjs +296 -0
  129. package/dist/client/components/ui/drawer.mjs +278 -0
  130. package/dist/client/components/ui/dropdown-menu.mjs +315 -0
  131. package/dist/client/components/ui/empty-state.mjs +99 -0
  132. package/dist/client/components/ui/field.mjs +354 -0
  133. package/dist/client/components/ui/input-group.mjs +201 -0
  134. package/dist/client/components/ui/input.mjs +46 -0
  135. package/dist/client/components/ui/kbd.mjs +53 -0
  136. package/dist/client/components/ui/label.mjs +45 -0
  137. package/dist/client/components/ui/popover.mjs +176 -0
  138. package/dist/client/components/ui/responsive-dialog.mjs +308 -0
  139. package/dist/client/components/ui/search-input.mjs +139 -0
  140. package/dist/client/components/ui/select.mjs +325 -0
  141. package/dist/client/components/ui/separator.mjs +47 -0
  142. package/dist/client/components/ui/sheet.mjs +280 -0
  143. package/dist/client/components/ui/sidebar.mjs +774 -0
  144. package/dist/client/components/ui/skeleton.mjs +40 -0
  145. package/dist/client/components/ui/sonner.d.mts +13 -0
  146. package/dist/client/components/ui/sonner.mjs +85 -0
  147. package/dist/client/components/ui/spinner.mjs +52 -0
  148. package/dist/client/components/ui/switch.mjs +58 -0
  149. package/dist/client/components/ui/table.mjs +276 -0
  150. package/dist/client/components/ui/tabs.mjs +160 -0
  151. package/dist/client/components/ui/textarea.mjs +40 -0
  152. package/dist/client/components/ui/toolbar.mjs +136 -0
  153. package/dist/client/components/ui/tooltip.mjs +146 -0
  154. package/dist/client/components/widgets/chart-widget.mjs +582 -0
  155. package/dist/client/components/widgets/progress-widget.mjs +200 -0
  156. package/dist/client/components/widgets/quick-actions-widget.mjs +209 -0
  157. package/dist/client/components/widgets/recent-items-widget.mjs +196 -0
  158. package/dist/client/components/widgets/stats-widget.mjs +261 -0
  159. package/dist/client/components/widgets/table-widget.mjs +273 -0
  160. package/dist/client/components/widgets/timeline-widget.mjs +279 -0
  161. package/dist/client/components/widgets/value-widget.mjs +312 -0
  162. package/dist/client/components/widgets/widget-skeletons.mjs +427 -0
  163. package/dist/client/contexts/breadcrumb-context.mjs +60 -0
  164. package/dist/client/contexts/focus-context.d.mts +87 -0
  165. package/dist/client/contexts/focus-context.mjs +250 -0
  166. package/dist/client/hooks/typed-hooks.d.mts +110 -0
  167. package/dist/client/hooks/typed-hooks.mjs +888 -0
  168. package/dist/client/hooks/use-action.mjs +329 -0
  169. package/dist/client/hooks/use-admin-config.mjs +69 -0
  170. package/dist/client/hooks/use-admin-preferences.mjs +171 -0
  171. package/dist/client/hooks/use-admin-routes.mjs +130 -0
  172. package/dist/client/hooks/use-audit-history.mjs +157 -0
  173. package/dist/client/hooks/use-auth.d.mts +97 -0
  174. package/dist/{use-auth-BoLmWtmU.mjs → client/hooks/use-auth.mjs} +9 -10
  175. package/dist/client/hooks/use-collection-fields.mjs +71 -0
  176. package/dist/client/hooks/use-collection-meta.mjs +153 -0
  177. package/dist/client/hooks/use-collection-schema.mjs +90 -0
  178. package/dist/client/hooks/use-collection-validation.mjs +88 -0
  179. package/dist/client/hooks/use-collection.d.mts +96 -0
  180. package/dist/client/hooks/use-collection.mjs +673 -0
  181. package/dist/client/hooks/use-current-user.d.mts +60 -0
  182. package/dist/client/hooks/use-current-user.mjs +79 -0
  183. package/dist/client/hooks/use-field-hooks.mjs +199 -0
  184. package/dist/client/hooks/use-field-options.d.mts +57 -0
  185. package/dist/client/hooks/use-field-options.mjs +269 -0
  186. package/dist/client/hooks/use-global-fields.mjs +58 -0
  187. package/dist/client/hooks/use-global-meta.mjs +105 -0
  188. package/dist/client/hooks/use-global-schema.mjs +53 -0
  189. package/dist/client/hooks/use-global.d.mts +51 -0
  190. package/dist/client/hooks/use-global.mjs +284 -0
  191. package/dist/client/hooks/use-locks.mjs +452 -0
  192. package/dist/client/hooks/use-media-query.d.mts +22 -0
  193. package/dist/client/hooks/use-media-query.mjs +81 -0
  194. package/dist/client/hooks/use-prefill-params.mjs +47 -0
  195. package/dist/client/hooks/use-questpie-query-options.mjs +50 -0
  196. package/dist/client/hooks/use-reactive-fields.d.mts +78 -0
  197. package/dist/client/hooks/use-reactive-fields.mjs +201 -0
  198. package/dist/client/hooks/use-realtime-highlight.mjs +158 -0
  199. package/dist/client/hooks/use-saved-views.mjs +140 -0
  200. package/dist/client/hooks/use-search-param-toggle.d.mts +12 -0
  201. package/dist/client/hooks/use-search-param-toggle.mjs +115 -0
  202. package/dist/client/hooks/use-search.mjs +258 -0
  203. package/dist/client/hooks/use-server-actions.mjs +191 -0
  204. package/dist/client/hooks/use-server-validation.mjs +291 -0
  205. package/dist/client/hooks/use-server-widget-data.d.mts +25 -0
  206. package/dist/client/hooks/use-server-widget-data.mjs +65 -0
  207. package/dist/client/hooks/use-setup-status.d.mts +38 -0
  208. package/dist/client/hooks/use-setup-status.mjs +62 -0
  209. package/dist/client/hooks/use-sidebar-search-param.d.mts +9 -0
  210. package/dist/client/hooks/use-sidebar-search-param.mjs +104 -0
  211. package/dist/client/hooks/use-transition-stage.mjs +125 -0
  212. package/dist/client/hooks/use-upload-collection.mjs +31 -0
  213. package/dist/client/hooks/use-upload.mjs +209 -0
  214. package/dist/client/hooks/use-validation-error-map.mjs +57 -0
  215. package/dist/client/hooks/use-view-state.mjs +479 -0
  216. package/dist/client/i18n/hooks.mjs +284 -0
  217. package/dist/client/i18n/intl-cache.mjs +64 -0
  218. package/dist/client/i18n/messages.mjs +6 -0
  219. package/dist/client/i18n/simple.d.mts +21 -0
  220. package/dist/client/i18n/simple.mjs +156 -0
  221. package/dist/client/i18n/types.d.mts +109 -0
  222. package/dist/client/lib/cookies.mjs +9 -0
  223. package/dist/client/lib/events.mjs +5 -0
  224. package/dist/client/lib/render-profiler.mjs +51 -0
  225. package/dist/client/lib/utils.mjs +23 -0
  226. package/dist/client/preview/block-scope-context.d.mts +73 -0
  227. package/dist/client/preview/block-scope-context.mjs +116 -0
  228. package/dist/client/preview/index.d.mts +5 -0
  229. package/dist/client/preview/preview-banner.d.mts +45 -0
  230. package/dist/client/preview/preview-banner.mjs +134 -0
  231. package/dist/client/preview/preview-field.d.mts +107 -0
  232. package/dist/client/preview/preview-field.mjs +227 -0
  233. package/dist/client/preview/types.d.mts +114 -0
  234. package/dist/client/preview/types.mjs +20 -0
  235. package/dist/client/preview/use-collection-preview.d.mts +70 -0
  236. package/dist/client/preview/use-collection-preview.mjs +163 -0
  237. package/dist/client/runtime/content-locales-provider.d.mts +1 -0
  238. package/dist/client/runtime/content-locales-provider.mjs +136 -0
  239. package/dist/client/runtime/index.d.mts +5 -0
  240. package/dist/client/runtime/index.mjs +6 -0
  241. package/dist/client/runtime/locale-scope.d.mts +2 -0
  242. package/dist/client/runtime/locale-scope.mjs +108 -0
  243. package/dist/client/runtime/provider.d.mts +203 -0
  244. package/dist/client/runtime/provider.mjs +393 -0
  245. package/dist/client/runtime/routes.d.mts +49 -0
  246. package/dist/client/runtime/routes.mjs +91 -0
  247. package/dist/client/runtime/translations-provider.mjs +242 -0
  248. package/dist/client/scope/index.d.mts +3 -0
  249. package/dist/client/scope/picker.d.mts +53 -0
  250. package/dist/client/scope/picker.mjs +395 -0
  251. package/dist/client/scope/provider.d.mts +103 -0
  252. package/dist/client/scope/provider.mjs +167 -0
  253. package/dist/client/scope/types.d.mts +111 -0
  254. package/dist/client/styles/index.css +344 -188
  255. package/dist/client/utils/auto-expand-fields.mjs +83 -0
  256. package/dist/client/utils/build-field-definitions-from-schema.mjs +259 -0
  257. package/dist/client/utils/dependency-tracker.mjs +61 -0
  258. package/dist/client/utils/detect-relations.mjs +45 -0
  259. package/dist/client/utils/locale-to-flag.d.mts +119 -0
  260. package/dist/client/utils/locale-to-flag.mjs +129 -0
  261. package/dist/client/utils/routes.mjs +195 -0
  262. package/dist/client/views/auth/accept-invite-form.d.mts +72 -0
  263. package/dist/client/views/auth/accept-invite-form.mjs +473 -0
  264. package/dist/client/views/auth/auth-layout.d.mts +43 -0
  265. package/dist/client/views/auth/auth-layout.mjs +116 -0
  266. package/dist/client/views/auth/forgot-password-form.d.mts +58 -0
  267. package/dist/client/views/auth/forgot-password-form.mjs +386 -0
  268. package/dist/client/views/auth/invite-form.mjs +497 -0
  269. package/dist/client/views/auth/login-form.d.mts +75 -0
  270. package/dist/client/views/auth/login-form.mjs +387 -0
  271. package/dist/client/views/auth/reset-password-form.d.mts +65 -0
  272. package/dist/client/views/auth/reset-password-form.mjs +515 -0
  273. package/dist/client/views/auth/setup-form.d.mts +60 -0
  274. package/dist/client/views/auth/setup-form.mjs +526 -0
  275. package/dist/client/views/collection/auto-form-fields.mjs +873 -0
  276. package/dist/client/views/collection/bulk-action-toolbar.mjs +480 -0
  277. package/dist/client/views/collection/cells/complex-cells.mjs +746 -0
  278. package/dist/client/views/collection/cells/primitive-cells.mjs +395 -0
  279. package/dist/client/views/collection/cells/relation-cells.mjs +260 -0
  280. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +509 -0
  281. package/dist/client/views/collection/cells/shared/cell-helpers.mjs +125 -0
  282. package/dist/client/views/collection/cells/shared/relation-chip.mjs +121 -0
  283. package/dist/client/views/collection/cells/upload-cells.mjs +28 -0
  284. package/dist/client/views/collection/columns/build-columns.mjs +195 -0
  285. package/dist/client/views/collection/columns/column-defaults.mjs +123 -0
  286. package/dist/client/views/collection/field-context.mjs +126 -0
  287. package/dist/client/views/collection/field-renderer.mjs +368 -0
  288. package/dist/client/views/collection/form-view.mjs +1566 -0
  289. package/dist/client/views/collection/table-view.mjs +832 -0
  290. package/dist/client/views/collection/view-skeletons.mjs +215 -0
  291. package/dist/client/views/common/global-search.mjs +700 -0
  292. package/dist/client/views/dashboard/dashboard-grid.mjs +881 -0
  293. package/dist/client/views/dashboard/dashboard-widget.mjs +265 -0
  294. package/dist/client/views/dashboard/widget-card.mjs +372 -0
  295. package/dist/client/views/globals/global-form-view.mjs +1306 -0
  296. package/dist/client/views/layout/admin-layout-provider.d.mts +137 -0
  297. package/dist/client/views/layout/admin-layout-provider.mjs +193 -0
  298. package/dist/client/views/layout/admin-layout.d.mts +133 -0
  299. package/dist/client/views/layout/admin-layout.mjs +302 -0
  300. package/dist/client/views/layout/admin-router.d.mts +93 -0
  301. package/dist/client/views/layout/admin-router.mjs +1254 -0
  302. package/dist/client/views/layout/admin-sidebar.d.mts +99 -0
  303. package/dist/client/views/layout/admin-sidebar.mjs +1379 -0
  304. package/dist/client/views/layout/admin-topbar.mjs +236 -0
  305. package/dist/client/views/pages/accept-invite-page.d.mts +66 -0
  306. package/dist/client/views/pages/accept-invite-page.mjs +349 -0
  307. package/dist/client/views/pages/dashboard-page.d.mts +43 -0
  308. package/dist/client/views/pages/dashboard-page.mjs +84 -0
  309. package/dist/client/views/pages/forgot-password-page.d.mts +56 -0
  310. package/dist/client/views/pages/forgot-password-page.mjs +152 -0
  311. package/dist/client/views/pages/invite-page.d.mts +70 -0
  312. package/dist/client/views/pages/invite-page.mjs +161 -0
  313. package/dist/client/views/pages/login-page.d.mts +69 -0
  314. package/dist/client/views/pages/login-page.mjs +193 -0
  315. package/dist/client/views/pages/reset-password-page.d.mts +63 -0
  316. package/dist/client/views/pages/reset-password-page.mjs +257 -0
  317. package/dist/client/views/pages/setup-page.d.mts +61 -0
  318. package/dist/client/views/pages/setup-page.mjs +156 -0
  319. package/dist/client-module.d.mts +3 -0
  320. package/dist/client-module.mjs +3 -0
  321. package/dist/client.d.mts +99 -3
  322. package/dist/client.mjs +52 -12
  323. package/dist/components/rich-text/index.d.mts +1 -0
  324. package/dist/components/rich-text/rich-text-renderer.d.mts +103 -0
  325. package/dist/components/rich-text/rich-text-renderer.mjs +237 -0
  326. package/dist/index.d.mts +59 -3
  327. package/dist/index.mjs +52 -12
  328. package/dist/plugin.d.mts +2 -0
  329. package/dist/plugin.mjs +3 -0
  330. package/dist/server/adapters/nextjs.d.mts +120 -0
  331. package/dist/server/adapters/nextjs.mjs +110 -0
  332. package/dist/server/adapters/tanstack.d.mts +132 -0
  333. package/dist/server/adapters/tanstack.mjs +89 -0
  334. package/dist/server/augmentation/actions.d.mts +279 -0
  335. package/dist/server/augmentation/common.d.mts +76 -0
  336. package/dist/server/augmentation/dashboard.d.mts +547 -0
  337. package/dist/server/augmentation/form-layout.d.mts +303 -0
  338. package/dist/server/augmentation/index.d.mts +44 -0
  339. package/dist/server/augmentation/index.mjs +10 -0
  340. package/dist/server/augmentation/sidebar.d.mts +181 -0
  341. package/dist/server/augmentation/views.d.mts +237 -0
  342. package/dist/server/augmentation.d.mts +7 -0
  343. package/dist/server/block/index.d.mts +4 -0
  344. package/dist/server/codegen/admin-client-template.mjs +93 -0
  345. package/dist/server/codegen/projection-validator.mjs +67 -0
  346. package/dist/server/fields/blocks.d.mts +71 -0
  347. package/dist/server/fields/blocks.mjs +151 -0
  348. package/dist/server/fields/index.d.mts +15 -0
  349. package/dist/server/fields/index.mjs +15 -0
  350. package/dist/server/fields/rich-text.d.mts +68 -0
  351. package/dist/server/fields/rich-text.mjs +147 -0
  352. package/dist/server/i18n/index.mjs +43 -0
  353. package/dist/server/i18n/messages/cs.mjs +461 -0
  354. package/dist/server/i18n/messages/de.mjs +461 -0
  355. package/dist/server/i18n/messages/en.mjs +707 -0
  356. package/dist/server/i18n/messages/es.mjs +461 -0
  357. package/dist/server/i18n/messages/fr.mjs +461 -0
  358. package/dist/server/i18n/messages/index.mjs +23 -0
  359. package/dist/server/i18n/messages/pl.mjs +461 -0
  360. package/dist/server/i18n/messages/pt.mjs +464 -0
  361. package/dist/server/i18n/messages/sk.mjs +689 -0
  362. package/dist/server/modules/admin/.generated/module.d.mts +52 -0
  363. package/dist/server/modules/admin/.generated/module.mjs +78 -0
  364. package/dist/server/modules/admin/.generated/registries.d.mts +22 -0
  365. package/dist/server/modules/admin/auth-helpers.d.mts +142 -0
  366. package/dist/server/modules/admin/auth-helpers.mjs +107 -0
  367. package/dist/server/modules/admin/block/block-builder.d.mts +383 -0
  368. package/dist/server/modules/admin/block/block-builder.mjs +315 -0
  369. package/dist/server/modules/admin/block/index.d.mts +3 -0
  370. package/dist/server/modules/admin/block/introspection.d.mts +89 -0
  371. package/dist/server/modules/admin/block/introspection.mjs +100 -0
  372. package/dist/server/modules/admin/block/prefetch.d.mts +78 -0
  373. package/dist/server/modules/admin/block/prefetch.mjs +241 -0
  374. package/dist/server/modules/admin/client/.generated/module.d.mts +94 -0
  375. package/dist/server/modules/admin/client/.generated/module.mjs +91 -0
  376. package/dist/server/modules/admin/client/components/badge.d.mts +1 -0
  377. package/dist/server/modules/admin/client/components/icon.d.mts +1 -0
  378. package/dist/server/modules/admin/client/fields/array.d.mts +6 -0
  379. package/dist/server/modules/admin/client/fields/array.mjs +12 -0
  380. package/dist/server/modules/admin/client/fields/assetPreview.d.mts +6 -0
  381. package/dist/server/modules/admin/client/fields/assetPreview.mjs +18 -0
  382. package/dist/server/modules/admin/client/fields/blocks.d.mts +6 -0
  383. package/dist/server/modules/admin/client/fields/blocks.mjs +12 -0
  384. package/dist/server/modules/admin/client/fields/boolean.d.mts +6 -0
  385. package/dist/server/modules/admin/client/fields/boolean.mjs +12 -0
  386. package/dist/server/modules/admin/client/fields/date.d.mts +6 -0
  387. package/dist/server/modules/admin/client/fields/date.mjs +12 -0
  388. package/dist/server/modules/admin/client/fields/datetime.d.mts +6 -0
  389. package/dist/server/modules/admin/client/fields/datetime.mjs +12 -0
  390. package/dist/server/modules/admin/client/fields/email.d.mts +6 -0
  391. package/dist/server/modules/admin/client/fields/email.mjs +12 -0
  392. package/dist/server/modules/admin/client/fields/json.d.mts +6 -0
  393. package/dist/server/modules/admin/client/fields/json.mjs +11 -0
  394. package/dist/server/modules/admin/client/fields/number.d.mts +6 -0
  395. package/dist/server/modules/admin/client/fields/number.mjs +12 -0
  396. package/dist/server/modules/admin/client/fields/object.d.mts +6 -0
  397. package/dist/server/modules/admin/client/fields/object.mjs +12 -0
  398. package/dist/server/modules/admin/client/fields/relation.d.mts +6 -0
  399. package/dist/server/modules/admin/client/fields/relation.mjs +12 -0
  400. package/dist/server/modules/admin/client/fields/richText.d.mts +6 -0
  401. package/dist/server/modules/admin/client/fields/richText.mjs +11 -0
  402. package/dist/server/modules/admin/client/fields/select.d.mts +6 -0
  403. package/dist/server/modules/admin/client/fields/select.mjs +12 -0
  404. package/dist/server/modules/admin/client/fields/text.d.mts +6 -0
  405. package/dist/server/modules/admin/client/fields/text.mjs +12 -0
  406. package/dist/server/modules/admin/client/fields/textarea.d.mts +6 -0
  407. package/dist/server/modules/admin/client/fields/textarea.mjs +12 -0
  408. package/dist/server/modules/admin/client/fields/time.d.mts +6 -0
  409. package/dist/server/modules/admin/client/fields/time.mjs +12 -0
  410. package/dist/server/modules/admin/client/fields/upload.d.mts +6 -0
  411. package/dist/server/modules/admin/client/fields/upload.mjs +12 -0
  412. package/dist/server/modules/admin/client/fields/url.d.mts +6 -0
  413. package/dist/server/modules/admin/client/fields/url.mjs +12 -0
  414. package/dist/server/modules/admin/client/index.d.mts +1 -0
  415. package/dist/server/modules/admin/client/pages/dashboard.d.mts +6 -0
  416. package/dist/server/modules/admin/client/pages/dashboard.mjs +11 -0
  417. package/dist/server/modules/admin/client/pages/forgotPassword.d.mts +6 -0
  418. package/dist/server/modules/admin/client/pages/forgotPassword.mjs +11 -0
  419. package/dist/server/modules/admin/client/pages/login.d.mts +6 -0
  420. package/dist/server/modules/admin/client/pages/login.mjs +11 -0
  421. package/dist/server/modules/admin/client/pages/resetPassword.d.mts +6 -0
  422. package/dist/server/modules/admin/client/pages/resetPassword.mjs +11 -0
  423. package/dist/server/modules/admin/client/pages/setup.d.mts +6 -0
  424. package/dist/server/modules/admin/client/pages/setup.mjs +11 -0
  425. package/dist/server/modules/admin/client/views/collection-form.mjs +10 -0
  426. package/dist/server/modules/admin/client/views/collection-table.mjs +10 -0
  427. package/dist/server/modules/admin/client/views/global-form.mjs +10 -0
  428. package/dist/server/modules/admin/client/widgets/chart.d.mts +6 -0
  429. package/dist/server/modules/admin/client/widgets/chart.mjs +7 -0
  430. package/dist/server/modules/admin/client/widgets/progress.d.mts +6 -0
  431. package/dist/server/modules/admin/client/widgets/progress.mjs +7 -0
  432. package/dist/server/modules/admin/client/widgets/quickActions.d.mts +6 -0
  433. package/dist/server/modules/admin/client/widgets/quickActions.mjs +7 -0
  434. package/dist/server/modules/admin/client/widgets/recentItems.d.mts +6 -0
  435. package/dist/server/modules/admin/client/widgets/recentItems.mjs +7 -0
  436. package/dist/server/modules/admin/client/widgets/stats.d.mts +6 -0
  437. package/dist/server/modules/admin/client/widgets/stats.mjs +7 -0
  438. package/dist/server/modules/admin/client/widgets/table.d.mts +6 -0
  439. package/dist/server/modules/admin/client/widgets/table.mjs +7 -0
  440. package/dist/server/modules/admin/client/widgets/timeline.d.mts +6 -0
  441. package/dist/server/modules/admin/client/widgets/timeline.mjs +7 -0
  442. package/dist/server/modules/admin/client/widgets/value.d.mts +6 -0
  443. package/dist/server/modules/admin/client/widgets/value.mjs +7 -0
  444. package/dist/server/modules/admin/collections/account.d.mts +77 -0
  445. package/dist/server/modules/admin/collections/account.mjs +23 -0
  446. package/dist/server/modules/admin/collections/admin-locks.d.mts +90 -0
  447. package/dist/server/modules/admin/collections/admin-locks.mjs +16 -0
  448. package/dist/server/modules/admin/collections/admin-preferences.d.mts +69 -0
  449. package/dist/server/modules/admin/collections/admin-preferences.mjs +16 -0
  450. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +83 -0
  451. package/dist/server/modules/admin/collections/admin-saved-views.mjs +16 -0
  452. package/dist/server/modules/admin/collections/apikey.d.mts +99 -0
  453. package/dist/server/modules/admin/collections/apikey.mjs +15 -0
  454. package/dist/server/modules/admin/collections/assets.d.mts +72 -0
  455. package/dist/server/modules/admin/collections/assets.mjs +71 -0
  456. package/dist/server/modules/admin/collections/session.d.mts +69 -0
  457. package/dist/server/modules/admin/collections/session.mjs +15 -0
  458. package/dist/server/modules/admin/collections/user.d.mts +85 -0
  459. package/dist/server/modules/admin/collections/user.mjs +204 -0
  460. package/dist/server/modules/admin/collections/verification.d.mts +63 -0
  461. package/dist/server/modules/admin/collections/verification.mjs +15 -0
  462. package/dist/server/modules/admin/components/badge.d.mts +10 -0
  463. package/dist/server/modules/admin/components/badge.mjs +10 -0
  464. package/dist/server/modules/admin/components/icon.d.mts +9 -0
  465. package/dist/server/modules/admin/components/icon.mjs +11 -0
  466. package/dist/server/modules/admin/config/admin.mjs +34 -0
  467. package/dist/server/modules/admin/dto/admin-config.dto.mjs +102 -0
  468. package/dist/server/modules/admin/factories.mjs +172 -0
  469. package/dist/server/modules/admin/index.d.mts +1093 -0
  470. package/dist/server/modules/admin/index.mjs +26 -0
  471. package/dist/server/modules/admin/modules.mjs +11 -0
  472. package/dist/server/modules/admin/plugin.mjs +13 -0
  473. package/dist/server/modules/admin/routes/admin-config.d.mts +28 -0
  474. package/dist/server/modules/admin/routes/admin-config.mjs +552 -0
  475. package/dist/server/modules/admin/routes/execute-action.d.mts +92 -0
  476. package/dist/server/modules/admin/routes/execute-action.mjs +433 -0
  477. package/dist/server/modules/admin/routes/locales.d.mts +18 -0
  478. package/dist/server/modules/admin/routes/locales.mjs +69 -0
  479. package/dist/server/modules/admin/routes/preview.d.mts +80 -0
  480. package/dist/server/modules/admin/routes/preview.mjs +230 -0
  481. package/dist/server/modules/admin/routes/reactive.d.mts +74 -0
  482. package/dist/server/modules/admin/routes/reactive.mjs +350 -0
  483. package/dist/server/modules/admin/routes/route-helpers.d.mts +23 -0
  484. package/dist/server/modules/admin/routes/route-helpers.mjs +76 -0
  485. package/dist/server/modules/admin/routes/setup.d.mts +63 -0
  486. package/dist/server/modules/admin/routes/setup.mjs +114 -0
  487. package/dist/server/modules/admin/routes/translations.d.mts +26 -0
  488. package/dist/server/modules/admin/routes/translations.mjs +114 -0
  489. package/dist/server/modules/admin/routes/widget-data.d.mts +32 -0
  490. package/dist/server/modules/admin/routes/widget-data.mjs +62 -0
  491. package/dist/server/modules/admin/views/form.d.mts +8 -0
  492. package/dist/server/modules/admin/views/form.mjs +7 -0
  493. package/dist/server/modules/admin/views/global-form.d.mts +8 -0
  494. package/dist/server/modules/admin/views/global-form.mjs +7 -0
  495. package/dist/server/modules/admin/views/table.d.mts +8 -0
  496. package/dist/server/modules/admin/views/table.mjs +7 -0
  497. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +37 -0
  498. package/dist/server/modules/admin-preferences/collections/locks.collection.mjs +55 -0
  499. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +99 -0
  500. package/dist/server/modules/admin-preferences/collections/saved-views.mjs +38 -0
  501. package/dist/server/modules/audit/.generated/module.d.mts +60 -0
  502. package/dist/server/modules/audit/.generated/module.mjs +30 -0
  503. package/dist/server/modules/audit/collections/audit-log.d.mts +214 -0
  504. package/dist/server/modules/audit/collections/audit-log.mjs +107 -0
  505. package/dist/server/modules/audit/config/admin.mjs +21 -0
  506. package/dist/server/modules/audit/config/app.mjs +262 -0
  507. package/dist/server/modules/audit/index.d.mts +2 -0
  508. package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +13 -0
  509. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +28 -0
  510. package/dist/server/plugin.d.mts +26 -0
  511. package/dist/server/plugin.mjs +385 -0
  512. package/dist/server/proxy-factories.d.mts +85 -0
  513. package/dist/server/proxy-factories.mjs +302 -0
  514. package/dist/server/registry-helpers.d.mts +83 -0
  515. package/dist/server/registry-helpers.mjs +104 -0
  516. package/dist/server.d.mts +33 -250
  517. package/dist/server.mjs +22 -832
  518. package/dist/shared/preview-utils.d.mts +53 -0
  519. package/dist/{preview-utils-BKQ9-TMa.mjs → shared/preview-utils.mjs} +2 -3
  520. package/dist/{saved-views.types-BMsz5mCy.d.mts → shared/types/saved-views.types.d.mts} +7 -2
  521. package/dist/shared.d.mts +3 -57
  522. package/dist/shared.mjs +1 -1
  523. package/package.json +56 -51
  524. package/skills/questpie-admin/SKILL.md +397 -0
  525. package/skills/questpie-admin/blocks/SKILL.md +305 -0
  526. package/skills/questpie-admin/custom-ui/SKILL.md +307 -0
  527. package/skills/questpie-admin/views/SKILL.md +442 -0
  528. package/dist/auth-layout-M8K8_q5R.mjs +0 -181
  529. package/dist/auth-layout-M8K8_q5R.mjs.map +0 -1
  530. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs +0 -273
  531. package/dist/bulk-upload-dialog-D7w7W1Hl.mjs.map +0 -1
  532. package/dist/card-BKHjBQfw.mjs +0 -58
  533. package/dist/card-BKHjBQfw.mjs.map +0 -1
  534. package/dist/client-D1DqawtP.d.mts +0 -13403
  535. package/dist/client-D1DqawtP.d.mts.map +0 -1
  536. package/dist/client-njX1rZmi.mjs +0 -22612
  537. package/dist/client-njX1rZmi.mjs.map +0 -1
  538. package/dist/content-locales-provider-BXvuIgfg.mjs +0 -1650
  539. package/dist/content-locales-provider-BXvuIgfg.mjs.map +0 -1
  540. package/dist/dashboard-page-B4PGEdc2.mjs +0 -2500
  541. package/dist/dashboard-page-B4PGEdc2.mjs.map +0 -1
  542. package/dist/dashboard-page-mCY0pgZv.mjs +0 -3
  543. package/dist/dropzone-Do3awXKd.mjs +0 -634
  544. package/dist/dropzone-Do3awXKd.mjs.map +0 -1
  545. package/dist/forgot-password-page-Bcp-An4Y.mjs +0 -221
  546. package/dist/forgot-password-page-Bcp-An4Y.mjs.map +0 -1
  547. package/dist/forgot-password-page-CEwsdLwn.mjs +0 -3
  548. package/dist/index-B4H3amCD.d.mts +0 -2753
  549. package/dist/index-B4H3amCD.d.mts.map +0 -1
  550. package/dist/login-page-BUnpCbCa.mjs +0 -3
  551. package/dist/login-page-CP4gA-dl.mjs +0 -298
  552. package/dist/login-page-CP4gA-dl.mjs.map +0 -1
  553. package/dist/preview-utils-BKQ9-TMa.mjs.map +0 -1
  554. package/dist/reset-password-page-BqfDmLxA.mjs +0 -281
  555. package/dist/reset-password-page-BqfDmLxA.mjs.map +0 -1
  556. package/dist/reset-password-page-CufHz3h3.mjs +0 -3
  557. package/dist/runtime-6VZM878K.mjs +0 -69
  558. package/dist/runtime-6VZM878K.mjs.map +0 -1
  559. package/dist/saved-views.types-BMsz5mCy.d.mts.map +0 -1
  560. package/dist/server.d.mts.map +0 -1
  561. package/dist/server.mjs.map +0 -1
  562. package/dist/setup-page-BNNzt_Z6.mjs +0 -3
  563. package/dist/setup-page-YAP_fzqh.mjs +0 -264
  564. package/dist/setup-page-YAP_fzqh.mjs.map +0 -1
  565. package/dist/shared.d.mts.map +0 -1
  566. package/dist/use-auth-BoLmWtmU.mjs.map +0 -1
@@ -0,0 +1,237 @@
1
+ import { ComponentReference } from "./common.mjs";
2
+ import { FormViewConfig, ListViewConfig } from "./form-layout.mjs";
3
+
4
+ //#region src/server/augmentation/views.d.ts
5
+
6
+ /**
7
+ * Open augmentation point for view kinds.
8
+ * Plugins extend this interface to register new view kinds.
9
+ *
10
+ * The admin plugin registers "list" and "form" by default.
11
+ * Third-party plugins can add new kinds (e.g., "dashboard", "kanban-board").
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Admin plugin declares:
16
+ * declare module "@questpie/admin/server" {
17
+ * interface ViewKindRegistry {
18
+ * list: {};
19
+ * edit: {};
20
+ * }
21
+ * }
22
+ *
23
+ * // Third-party plugin extends:
24
+ * declare module "@questpie/admin/server" {
25
+ * interface ViewKindRegistry {
26
+ * dashboard: {};
27
+ * }
28
+ * }
29
+ * ```
30
+ */
31
+ interface ViewKindRegistry {
32
+ list: {};
33
+ form: {};
34
+ }
35
+ /**
36
+ * Union of all registered view kind names.
37
+ * Derived from ViewKindRegistry — automatically extends when plugins
38
+ * augment the registry.
39
+ */
40
+ type ViewKind = keyof ViewKindRegistry;
41
+ /**
42
+ * Type-level filter that selects views matching a specific kind.
43
+ *
44
+ * Used by codegen to derive list/form view types from the unified `views` registry
45
+ * without needing separate `listViews`/`formViews` categories.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * type ListViews = FilterViewsByKind<AllViews, "list">;
50
+ * type FormViews = FilterViewsByKind<AllViews, "form">;
51
+ * ```
52
+ */
53
+ type FilterViewsByKind<TViews, TKind extends ViewKind> = { [K in keyof TViews as TViews[K] extends {
54
+ kind: TKind;
55
+ } ? K : never]: TViews[K] };
56
+ /**
57
+ * Unified view definition with `kind` discriminant.
58
+ *
59
+ * The `kind` field determines which builder extension this view is used in:
60
+ * - `"list"` → available in `.list()` callback
61
+ * - `"form"` → available in `.form()` callback
62
+ *
63
+ * Each view carries its own config — codegen extracts the type and
64
+ * introspection serializes the schema for the client.
65
+ */
66
+ interface ViewDefinition<TName extends string = string, TKind extends ViewKind = ViewKind, TConfig = unknown> {
67
+ type: "view";
68
+ name: TName;
69
+ kind: TKind;
70
+ /**
71
+ * Phantom type marker carrying the view's config type.
72
+ *
73
+ * Not used at runtime — only exists for TypeScript to extract
74
+ * per-view config in `ListViewFactory` / `EditViewFactory`.
75
+ * When a user calls `v.collectionTable({ columns: [...] })`, TypeScript
76
+ * infers the config shape from this phantom field.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * // views/kanban.ts
81
+ * export default view<KanbanConfig>("kanban", { kind: "list" });
82
+ * // → ViewDefinition<"kanban", "list", KanbanConfig>
83
+ * // → v.kanban({ groupBy: "status" }) type-checks against KanbanConfig
84
+ * ```
85
+ */
86
+ readonly "~config"?: TConfig;
87
+ [key: string]: unknown;
88
+ }
89
+ /**
90
+ * View definition for list views (table, cards, etc.)
91
+ * @deprecated Use ViewDefinition with kind: "list" instead.
92
+ */
93
+ interface ListViewDefinition<TName extends string = string> {
94
+ type: "listView";
95
+ name: TName;
96
+ }
97
+ /**
98
+ * View definition for edit views (form, wizard, etc.)
99
+ * @deprecated Use ViewDefinition with kind: "form" instead.
100
+ */
101
+ interface EditViewDefinition<TName extends string = string> {
102
+ type: "editView";
103
+ name: TName;
104
+ }
105
+ /**
106
+ * Component definition for reusable UI components.
107
+ *
108
+ * The `TProps` phantom type carries the input props type that
109
+ * `c.myComponent(props)` accepts in `.admin()` callbacks.
110
+ * When omitted, falls back to `Record<string, unknown> | string`.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * // components/icon.ts
115
+ * export default component<string | { name: string }>("icon");
116
+ * // → c.icon("ph:users") type-checks against string | { name: string }
117
+ *
118
+ * // components/rating.ts
119
+ * interface RatingProps { value: number; max?: number }
120
+ * export default component<RatingProps>("rating");
121
+ * // → c.rating({ value: 4, max: 5 }) type-checks against RatingProps
122
+ * ```
123
+ */
124
+ interface ComponentDefinition<TName extends string = string, TProps = unknown> {
125
+ type: "component";
126
+ name: TName;
127
+ /** Phantom type marker carrying the component's input props type. */
128
+ readonly "~props"?: TProps;
129
+ }
130
+ /**
131
+ * Extract the input props type from a ComponentDefinition.
132
+ * Falls back to `TFallback` when the component has `unknown` props.
133
+ */
134
+ type ExtractComponentProps<TComponent, TFallback = Record<string, unknown> | string> = TComponent extends ComponentDefinition<any, infer P> ? unknown extends P ? TFallback : P : TFallback;
135
+ /**
136
+ * Normalize component input props to output props for ComponentReference.
137
+ * Handles string shorthand: `string | X` → just `X` (the string is
138
+ * normalized to the object form at runtime by the proxy).
139
+ */
140
+ type NormalizeComponentOutput<TProps> = TProps extends string ? Record<string, unknown> : Exclude<TProps, string>;
141
+ /**
142
+ * Component factory API generated from registered components.
143
+ *
144
+ * Each key is a callable that accepts the **per-component props type** extracted
145
+ * from the ComponentDefinition's `~props` phantom field.
146
+ *
147
+ * Accepts either a components record (per-component typed props) or a string
148
+ * union (fallback: all components use `Record<string, unknown> | string`).
149
+ *
150
+ * Note: `c.icon("ph:users")` string shorthand is supported when the component
151
+ * definition includes `string` in its props union.
152
+ */
153
+ type ComponentFactory<TComponents extends Record<string, any> | string = string> = TComponents extends Record<string, any> ? { [K in keyof TComponents & string]: (props: ExtractComponentProps<TComponents[K]>) => ComponentReference<K, NormalizeComponentOutput<ExtractComponentProps<TComponents[K]>> extends Record<string, unknown> ? NormalizeComponentOutput<ExtractComponentProps<TComponents[K]>> : Record<string, unknown>> } : { [K in TComponents & string]: (props: Record<string, unknown> | string) => ComponentReference<K, Record<string, unknown>> };
154
+ /**
155
+ * Extract the config type from a ViewDefinition.
156
+ * Falls back to `TFallback` when the view has `unknown` config
157
+ * (i.e. was defined without a config type parameter).
158
+ */
159
+ type ExtractViewConfig<TView, TFallback = Record<string, unknown>> = TView extends ViewDefinition<any, any, infer C> ? unknown extends C ? TFallback : C : TFallback;
160
+ /**
161
+ * View factory API generated from registered list views.
162
+ *
163
+ * Each key is a callable that accepts the **per-view config type** extracted
164
+ * from the ViewDefinition's `~config` phantom field. When a view was defined
165
+ * with `view<ListViewConfig>("collection-table", { kind: "list" })`, calling `v.collectionTable()`
166
+ * type-checks against `Omit<ListViewConfig, "view">`. A custom
167
+ * `view<KanbanConfig>("kanban", ...)` would type-check against `KanbanConfig`.
168
+ *
169
+ * Accepts either a views record (per-view typed config) or a string union
170
+ * (fallback: all views use `ListViewConfig`).
171
+ */
172
+ type ListViewFactory<TListViews extends Record<string, any> | string = string> = TListViews extends Record<string, any> ? { [K in keyof TListViews & string]: (config: Omit<ExtractViewConfig<TListViews[K], ListViewConfig>, "view">) => ExtractViewConfig<TListViews[K], ListViewConfig> & {
173
+ view: K;
174
+ } } : { [K in TListViews & string]: (config: Omit<ListViewConfig, "view">) => ListViewConfig & {
175
+ view: K;
176
+ } };
177
+ /**
178
+ * View factory API generated from registered edit views.
179
+ *
180
+ * Same pattern as ListViewFactory but for edit views,
181
+ * with `FormViewConfig` as the fallback config type.
182
+ */
183
+ type EditViewFactory<TEditViews extends Record<string, any> | string = string> = TEditViews extends Record<string, any> ? { [K in keyof TEditViews & string]: (config: Omit<ExtractViewConfig<TEditViews[K], FormViewConfig>, "view">) => ExtractViewConfig<TEditViews[K], FormViewConfig> & {
184
+ view: K;
185
+ } } : { [K in TEditViews & string]: (config: Omit<FormViewConfig, "view">) => FormViewConfig & {
186
+ view: K;
187
+ } };
188
+ /**
189
+ * Context for list view config functions.
190
+ *
191
+ * `TListViews` can be either a views record (per-view typed config)
192
+ * or a string union (backward-compatible, all views use `ListViewConfig`).
193
+ */
194
+ interface ListViewConfigContext<TFields extends Record<string, any> = Record<string, any>, TListViews extends Record<string, any> | string = string> {
195
+ /** View factory — per-view typed config extracted from ViewDefinition */
196
+ v: ListViewFactory<TListViews>;
197
+ /** Field reference proxy - returns field names as strings */
198
+ f: { [K in keyof TFields]: K };
199
+ /** Action reference proxy */
200
+ a: {
201
+ create: string;
202
+ save: string;
203
+ delete: string;
204
+ deleteMany: string;
205
+ restore: string;
206
+ restoreMany: string;
207
+ duplicate: string;
208
+ export: string;
209
+ custom: (name: string, config?: unknown) => {
210
+ type: string;
211
+ config?: unknown;
212
+ };
213
+ };
214
+ }
215
+ /**
216
+ * Context for form view config functions.
217
+ *
218
+ * `TEditViews` can be either a views record (per-view typed config)
219
+ * or a string union (backward-compatible, all views use `FormViewConfig`).
220
+ */
221
+ interface FormViewConfigContext<TFields extends Record<string, any> = Record<string, any>, TEditViews extends Record<string, any> | string = string> {
222
+ /** View factory — per-view typed config extracted from ViewDefinition */
223
+ v: EditViewFactory<TEditViews>;
224
+ /** Field reference proxy - returns field names as strings */
225
+ f: { [K in keyof TFields]: K };
226
+ }
227
+ /**
228
+ * Context for admin config functions with component proxy.
229
+ *
230
+ * `TComponents` can be either a components record (per-component typed props)
231
+ * or a string union (backward-compatible, all components use `Record<string, unknown> | string`).
232
+ */
233
+ interface AdminConfigContext<TComponents extends Record<string, any> | string = string> {
234
+ c: ComponentFactory<TComponents>;
235
+ }
236
+ //#endregion
237
+ export { AdminConfigContext, ComponentDefinition, ComponentFactory, EditViewDefinition, EditViewFactory, FilterViewsByKind, FormViewConfigContext, ListViewConfigContext, ListViewDefinition, ListViewFactory, ViewDefinition, ViewKind, ViewKindRegistry };
@@ -0,0 +1,7 @@
1
+ import { ActionReference, AdminLocaleConfig, ComponentReference, ComponentType, ComponentTypeRegistry } from "./augmentation/common.mjs";
2
+ import { AdminBlockConfig, AdminCollectionConfig, AdminGlobalConfig, BlockCategoryConfig, FieldLayoutItem, FormFieldLayoutItem, FormReactiveConfig, FormReactiveContext, FormSectionLayout, FormSidebarConfig, FormTabConfig, FormTabsLayout, FormViewConfig, ListViewConfig, PreviewConfig } from "./augmentation/form-layout.mjs";
3
+ import { AdminConfigContext, ComponentDefinition, ComponentFactory, EditViewDefinition, EditViewFactory, FilterViewsByKind, FormViewConfigContext, ListViewConfigContext, ListViewDefinition, ListViewFactory, ViewDefinition, ViewKind, ViewKindRegistry } from "./augmentation/views.mjs";
4
+ import { DashboardActionFactory, DashboardActionProxy, DashboardCallback, DashboardCallbackContext, DashboardConfigContext, DashboardContribution, DashboardItemDef, DashboardProxy, DashboardSectionDef, ServerBrandingConfig, ServerChartWidget, ServerCustomWidget, ServerDashboardAction, ServerDashboardConfig, ServerDashboardItem, ServerDashboardSection, ServerDashboardTab, ServerDashboardTabs, ServerDashboardWidget, ServerProgressWidget, ServerQuickAction, ServerQuickActionsWidget, ServerRecentItemsWidget, ServerStatsWidget, ServerTableWidget, ServerTimelineWidget, ServerValueWidget, WidgetAccessRule, WidgetFetchContext } from "./augmentation/dashboard.mjs";
5
+ import { ServerSidebarCollectionItem, ServerSidebarConfig, ServerSidebarDividerItem, ServerSidebarGlobalItem, ServerSidebarItem, ServerSidebarLinkItem, ServerSidebarPageItem, ServerSidebarSection, SidebarCallback, SidebarCallbackContext, SidebarConfigContext, SidebarContribution, SidebarItemDef, SidebarProxy, SidebarSectionDef } from "./augmentation/sidebar.mjs";
6
+ import { ActionsConfigContext, BuiltinActionType, ServerActionContext, ServerActionDefinition, ServerActionDownload, ServerActionEffects, ServerActionError, ServerActionForm, ServerActionFormField, ServerActionFormFieldConfig, ServerActionFormFieldDefinition, ServerActionHandler, ServerActionRedirect, ServerActionResult, ServerActionSuccess, ServerActionsConfig } from "./augmentation/actions.mjs";
7
+ import { AdminConfigInput, adminConfig } from "./augmentation/index.mjs";
@@ -0,0 +1,4 @@
1
+ import { AnyBlockBuilder, AnyBlockDefinition, BlockBuilder, BlockBuilderState, BlockDefinition, BlockPrefetchContext, BlockPrefetchFn, BlockPrefetchWith, BlockPrefetchWithOptions, ExpandWithResult, ExpandedRecord, InferBlockData, InferBlockValues, block } from "../modules/admin/block/block-builder.mjs";
2
+ import { BlockSchema, getBlocksByCategory, introspectBlock, introspectBlocks } from "../modules/admin/block/introspection.mjs";
3
+ import { BlocksPrefetchContext, createBlocksPrefetchHook, processBlocksDocument, processDocumentBlocksPrefetch } from "../modules/admin/block/prefetch.mjs";
4
+ import "../modules/admin/block/index.mjs";
@@ -0,0 +1,93 @@
1
+ //#region src/server/codegen/admin-client-template.ts
2
+ /**
3
+ * Generate the admin client config file.
4
+ *
5
+ * Called by `runAllTargets()` for the `admin-client` target.
6
+ * Iterates `ctx.discovered.categories` generically — no hardcoded category names.
7
+ * Any plugin can add categories, any user can add files in any category.
8
+ */
9
+ function generateAdminClientTemplate(ctx) {
10
+ const lines = [];
11
+ const modulesFile = ctx.discovered.singles.get("modules") ?? null;
12
+ lines.push("/**");
13
+ lines.push(" * Admin Client Config");
14
+ lines.push(" *");
15
+ lines.push(" * Auto-generated by questpie codegen — do not edit.");
16
+ lines.push(" *");
17
+ lines.push(" * Pass this directly to <AdminLayoutProvider admin={admin} />");
18
+ lines.push(" */");
19
+ lines.push("");
20
+ if (modulesFile) lines.push(generateImportLine(modulesFile));
21
+ const categoryFiles = /* @__PURE__ */ new Map();
22
+ for (const [cat, fileMap] of ctx.discovered.categories) if (fileMap.size > 0) {
23
+ const sorted = [...fileMap.values()].sort((a, b) => a.key.localeCompare(b.key));
24
+ categoryFiles.set(cat, sorted);
25
+ for (const file of sorted) lines.push(generateImportLine(file));
26
+ }
27
+ const singleFiles = /* @__PURE__ */ new Map();
28
+ for (const [key, file] of ctx.discovered.singles) {
29
+ if (key === "modules") continue;
30
+ singleFiles.set(key, file);
31
+ lines.push(generateImportLine(file));
32
+ }
33
+ for (const imp of ctx.extraImports) lines.push(`import ${imp.name} from "${imp.path}";`);
34
+ lines.push("");
35
+ const hasAnyUserFiles = categoryFiles.size > 0 || singleFiles.size > 0;
36
+ const hasExtraCode = ctx.extraRuntimeCode.length > 0;
37
+ const allCategories = /* @__PURE__ */ new Set();
38
+ for (const cat of ctx.discovered.categories.keys()) allCategories.add(cat);
39
+ if (ctx.target.categories) for (const cat of Object.keys(ctx.target.categories)) allCategories.add(cat);
40
+ if (!hasAnyUserFiles && !hasExtraCode && !modulesFile) lines.push("const admin = {};");
41
+ else if (!hasAnyUserFiles && !hasExtraCode && modulesFile) lines.push(`const admin = ${modulesFile.varName};`);
42
+ else {
43
+ lines.push("const admin = {");
44
+ for (const cat of allCategories) {
45
+ const files = categoryFiles.get(cat);
46
+ const catDecl = ctx.target.categories?.[cat];
47
+ if (modulesFile && files && files.length > 0) {
48
+ const entries = generateCategoryEntries(files, catDecl);
49
+ lines.push(`\t${cat}: { ...${modulesFile.varName}.${cat}, ${entries} },`);
50
+ } else if (modulesFile && (!files || files.length === 0)) lines.push(`\t${cat}: { ...${modulesFile.varName}.${cat} },`);
51
+ else if (files && files.length > 0) {
52
+ const entries = generateCategoryEntries(files, catDecl);
53
+ lines.push(`\t${cat}: { ${entries} },`);
54
+ }
55
+ }
56
+ for (const [key, file] of singleFiles) lines.push(`\t${key}: ${file.varName},`);
57
+ for (const code of ctx.extraRuntimeCode) lines.push(`\t${code}`);
58
+ lines.push("};");
59
+ }
60
+ if (ctx.extraTypeDeclarations.length > 0) {
61
+ lines.push("");
62
+ for (const decl of ctx.extraTypeDeclarations) lines.push(decl);
63
+ }
64
+ lines.push("");
65
+ lines.push("export default admin;");
66
+ lines.push("");
67
+ return { code: lines.join("\n") };
68
+ }
69
+ /**
70
+ * Generate category entries string based on the category's key strategy.
71
+ *
72
+ * When `keyFromProperty` is set (e.g., views with `keyFromProperty: "name"`),
73
+ * uses runtime property as key: `[_view_kanban.name]: _view_kanban`.
74
+ *
75
+ * Otherwise uses the file-derived key: `"bookingCta": _block_bookingCta`.
76
+ */
77
+ function generateCategoryEntries(files, catDecl) {
78
+ const keyProp = catDecl?.keyFromProperty;
79
+ return files.map((f) => {
80
+ if (keyProp) return `[${f.varName}.${keyProp}]: ${f.varName}`;
81
+ return `${JSON.stringify(f.key)}: ${f.varName}`;
82
+ }).join(", ");
83
+ }
84
+ /**
85
+ * Generate an import line for a discovered file.
86
+ */
87
+ function generateImportLine(file) {
88
+ if (file.exportType === "named" && file.namedExportName) return `import { ${file.namedExportName} as ${file.varName} } from "${file.importPath}";`;
89
+ return `import ${file.varName} from "${file.importPath}";`;
90
+ }
91
+
92
+ //#endregion
93
+ export { generateAdminClientTemplate };
@@ -0,0 +1,67 @@
1
+ //#region src/server/codegen/projection-validator.ts
2
+ /**
3
+ * Category projections to validate between server and admin-client.
4
+ *
5
+ * Each entry describes a server-side category whose discovered keys
6
+ * must have a corresponding key in the admin-client target.
7
+ *
8
+ * `serverCategory` = category name in the "server" target discovery
9
+ * `clientCategory` = category name in the "admin-client" target discovery
10
+ * `suggestedDir` = where the user should create the missing file
11
+ */
12
+ const PROJECTION_CHECKS = [
13
+ {
14
+ serverCategory: "blocks",
15
+ clientCategory: "blocks",
16
+ suggestedDir: "questpie/admin/blocks",
17
+ label: "block renderer"
18
+ },
19
+ {
20
+ serverCategory: "views",
21
+ clientCategory: "views",
22
+ suggestedDir: "questpie/admin/views",
23
+ label: "view definition"
24
+ },
25
+ {
26
+ serverCategory: "components",
27
+ clientCategory: "components",
28
+ suggestedDir: "questpie/admin/components",
29
+ label: "component definition"
30
+ }
31
+ ];
32
+ /**
33
+ * Create a cross-target validator for admin projection checks.
34
+ *
35
+ * Compares discovered file keys between the "server" and "admin-client"
36
+ * targets. Any key present in the server target but missing from the
37
+ * admin-client target produces an error.
38
+ *
39
+ * @returns A `CrossTargetValidator` function
40
+ */
41
+ function createAdminProjectionValidator() {
42
+ return (targets) => {
43
+ const serverResult = targets.get("server");
44
+ const adminClientResult = targets.get("admin-client");
45
+ if (!serverResult || !adminClientResult) return [];
46
+ const errors = [];
47
+ for (const check of PROJECTION_CHECKS) {
48
+ const serverFiles = serverResult.discovered.categories.get(check.serverCategory);
49
+ const clientFiles = adminClientResult.discovered.categories.get(check.clientCategory);
50
+ if (!serverFiles || serverFiles.size === 0) continue;
51
+ const clientKeys = /* @__PURE__ */ new Set();
52
+ if (clientFiles) for (const key of clientFiles.keys()) clientKeys.add(key);
53
+ for (const [key, file] of serverFiles) if (!clientKeys.has(key)) errors.push({
54
+ severity: "error",
55
+ category: check.serverCategory,
56
+ key,
57
+ sourceTarget: "server",
58
+ consumerTarget: "admin-client",
59
+ message: `Server defines ${check.serverCategory}/${file.key} but no matching ${check.label} was found in the admin client. Create a file at ${check.suggestedDir}/${file.key}.tsx to fix this.`
60
+ });
61
+ }
62
+ return errors;
63
+ };
64
+ }
65
+
66
+ //#endregion
67
+ export { createAdminProjectionValidator };
@@ -0,0 +1,71 @@
1
+ import { DefaultFieldState, Field } from "questpie";
2
+ import { PgJsonbBuilder } from "drizzle-orm/pg-core";
3
+
4
+ //#region src/server/fields/blocks.d.ts
5
+
6
+ /**
7
+ * Block node in the tree structure.
8
+ * Each block has an id, type, and optional children.
9
+ */
10
+ interface BlockNode {
11
+ /** Unique identifier for this block instance */
12
+ id: string;
13
+ /** Block type name (e.g., "hero", "text", "image") */
14
+ type: string;
15
+ /** Nested child blocks */
16
+ children: BlockNode[];
17
+ }
18
+ /**
19
+ * Block field values.
20
+ * Maps field names to their values for a single block.
21
+ */
22
+ type BlockValues = Record<string, {}>;
23
+ /**
24
+ * Blocks document structure.
25
+ * Normalized format separating tree structure from values.
26
+ */
27
+ interface BlocksDocument {
28
+ /** Tree structure defining block hierarchy */
29
+ _tree: BlockNode[];
30
+ /** Map of block id to field values */
31
+ _values: Record<string, BlockValues>;
32
+ /** Prefetched data for blocks (populated by afterRead hook) */
33
+ _data?: Record<string, Record<string, {}>>;
34
+ }
35
+ /**
36
+ * Blocks field metadata - augmentable by external packages.
37
+ *
38
+ * @example Admin augmentation:
39
+ * ```ts
40
+ * declare module "@questpie/admin/server" {
41
+ * interface BlocksFieldMeta {
42
+ * admin?: {
43
+ * addLabel?: string;
44
+ * emptyMessage?: string;
45
+ * }
46
+ * }
47
+ * }
48
+ * ```
49
+ */
50
+ interface BlocksFieldMeta {
51
+ /** Phantom property to prevent interface collapse - enables module augmentation */
52
+ _?: never;
53
+ }
54
+ /**
55
+ * Blocks field factory.
56
+ * Creates a visual block editor field for page builder functionality.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * // In collection fields callback:
61
+ * sections: f.blocks().required()
62
+ * ```
63
+ */
64
+ type BlocksFieldState = DefaultFieldState & {
65
+ type: "blocks";
66
+ data: BlocksDocument;
67
+ column: PgJsonbBuilder;
68
+ };
69
+ declare function blocks(): Field<BlocksFieldState>;
70
+ //#endregion
71
+ export { BlockNode, BlockValues, BlocksDocument, BlocksFieldMeta, BlocksFieldState, blocks };
@@ -0,0 +1,151 @@
1
+ import { processBlocksDocument } from "../modules/admin/block/prefetch.mjs";
2
+ import { z } from "zod";
3
+ import { field, fieldType, getContext, isNotNull, isNull, jsonb, sql } from "questpie";
4
+
5
+ //#region src/server/fields/blocks.ts
6
+ /**
7
+ * Get operators for blocks field.
8
+ * Provides operators for querying block content.
9
+ */
10
+ function getBlocksOperators() {
11
+ return {
12
+ column: {
13
+ hasBlockType: (col, value) => sql`EXISTS (
14
+ SELECT 1 FROM jsonb_array_elements(${col}->'_tree') AS block
15
+ WHERE block->>'type' = ${value}
16
+ )`,
17
+ blockCount: (col, value) => {
18
+ const { op, count } = value;
19
+ const operator = op === "gte" ? ">=" : op === "lte" ? "<=" : "=";
20
+ return sql`jsonb_array_length(${col}->'_tree') ${sql.raw(operator)} ${count}`;
21
+ },
22
+ isEmpty: (col) => sql`(
23
+ ${col} IS NULL
24
+ OR ${col}->'_tree' IS NULL
25
+ OR jsonb_array_length(${col}->'_tree') = 0
26
+ )`,
27
+ isNotEmpty: (col) => sql`(
28
+ ${col} IS NOT NULL
29
+ AND ${col}->'_tree' IS NOT NULL
30
+ AND jsonb_array_length(${col}->'_tree') > 0
31
+ )`,
32
+ isNull: (col) => isNull(col),
33
+ isNotNull: (col) => isNotNull(col)
34
+ },
35
+ jsonb: {
36
+ hasBlockType: (col, value, ctx) => {
37
+ const path = ctx.jsonbPath?.join(",") ?? "";
38
+ return sql`EXISTS (
39
+ SELECT 1 FROM jsonb_array_elements(${col}#>'{${sql.raw(path)},_tree}') AS block
40
+ WHERE block->>'type' = ${value}
41
+ )`;
42
+ },
43
+ isEmpty: (col, _value, ctx) => {
44
+ const path = ctx.jsonbPath?.join(",") ?? "";
45
+ return sql`(
46
+ ${col}#>'{${sql.raw(path)}}' IS NULL
47
+ OR ${col}#>'{${sql.raw(path)},_tree}' IS NULL
48
+ OR jsonb_array_length(${col}#>'{${sql.raw(path)},_tree}') = 0
49
+ )`;
50
+ },
51
+ isNotEmpty: (col, _value, ctx) => {
52
+ const path = ctx.jsonbPath?.join(",") ?? "";
53
+ return sql`(
54
+ ${col}#>'{${sql.raw(path)}}' IS NOT NULL
55
+ AND ${col}#>'{${sql.raw(path)},_tree}' IS NOT NULL
56
+ AND jsonb_array_length(${col}#>'{${sql.raw(path)},_tree}') > 0
57
+ )`;
58
+ },
59
+ isNull: (col, _value, ctx) => {
60
+ const path = ctx.jsonbPath?.join(",") ?? "";
61
+ return sql`${col}#>'{${sql.raw(path)}}' IS NULL`;
62
+ },
63
+ isNotNull: (col, _value, ctx) => {
64
+ const path = ctx.jsonbPath?.join(",") ?? "";
65
+ return sql`${col}#>'{${sql.raw(path)}}' IS NOT NULL`;
66
+ }
67
+ }
68
+ };
69
+ }
70
+ /**
71
+ * Create a blocks field.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * sections: f.blocks().required()
76
+ * ```
77
+ */
78
+ /**
79
+ * Blocks field runtime state factory.
80
+ * Shared between the legacy `blocks()` function and the new `blocksFieldType`.
81
+ */
82
+ function createBlocksState() {
83
+ return {
84
+ type: "blocks",
85
+ columnFactory: (name) => jsonb(name),
86
+ schemaFactory: () => {
87
+ const blockNodeSchema = z.lazy(() => z.object({
88
+ id: z.string(),
89
+ type: z.string(),
90
+ children: z.array(blockNodeSchema).default([])
91
+ }));
92
+ return z.object({
93
+ _tree: z.array(blockNodeSchema),
94
+ _values: z.record(z.string(), z.record(z.string(), z.any()))
95
+ });
96
+ },
97
+ operatorSet: {
98
+ jsonbCast: null,
99
+ column: getBlocksOperators().column
100
+ },
101
+ metadataFactory: (state) => ({
102
+ type: "blocks",
103
+ label: state.label,
104
+ description: state.description,
105
+ required: state.notNull ?? false,
106
+ localized: state.localized ?? false,
107
+ readOnly: state.input === false ? true : void 0,
108
+ writeOnly: state.output === false ? true : void 0,
109
+ meta: state.extensions?.admin
110
+ }),
111
+ hooks: { afterRead: async (value) => {
112
+ if (!value || typeof value !== "object") return value;
113
+ const doc = value;
114
+ if (!doc._tree || !doc._values) return value;
115
+ try {
116
+ const { app, db, locale } = getContext();
117
+ const blockDefs = app.state?.blocks;
118
+ if (!blockDefs || Object.keys(blockDefs).length === 0) return value;
119
+ return await processBlocksDocument(doc, blockDefs, {
120
+ app,
121
+ db,
122
+ locale,
123
+ collections: app.collections,
124
+ globals: app.globals
125
+ });
126
+ } catch {
127
+ return value;
128
+ }
129
+ } },
130
+ notNull: false,
131
+ hasDefault: false,
132
+ localized: false,
133
+ virtual: false,
134
+ input: true,
135
+ output: true,
136
+ isArray: false
137
+ };
138
+ }
139
+ function blocks() {
140
+ return field(createBlocksState());
141
+ }
142
+ /**
143
+ * Blocks field type definition (v3 API).
144
+ *
145
+ * Use this with the `fieldType()` discovery system instead of the
146
+ * legacy `blocks()` factory function.
147
+ */
148
+ const blocksFieldType = fieldType("blocks", { create: createBlocksState });
149
+
150
+ //#endregion
151
+ export { blocks };
@@ -0,0 +1,15 @@
1
+ import { BlockNode, BlockValues, BlocksDocument, BlocksFieldMeta, BlocksFieldState, blocks } from "./blocks.mjs";
2
+ import { RichTextFeature, RichTextFieldMeta, RichTextFieldState, TipTapDocument, TipTapNode, richText } from "./rich-text.mjs";
3
+
4
+ //#region src/server/fields/index.d.ts
5
+
6
+ /**
7
+ * Admin field types to be registered with the field registry.
8
+ * These are V2 factory functions — callable in `.fields()` callbacks.
9
+ */
10
+ declare const adminFields: {
11
+ readonly richText: typeof richText;
12
+ readonly blocks: typeof blocks;
13
+ };
14
+ //#endregion
15
+ export { adminFields };
@@ -0,0 +1,15 @@
1
+ import { blocks } from "./blocks.mjs";
2
+ import { richText } from "./rich-text.mjs";
3
+
4
+ //#region src/server/fields/index.ts
5
+ /**
6
+ * Admin field types to be registered with the field registry.
7
+ * These are V2 factory functions — callable in `.fields()` callbacks.
8
+ */
9
+ const adminFields = {
10
+ richText,
11
+ blocks
12
+ };
13
+
14
+ //#endregion
15
+ export { adminFields };