@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,414 @@
1
+ import { ReactiveConfig } from "questpie";
2
+
3
+ //#region src/augmentation.d.ts
4
+
5
+ /**
6
+ * Common admin options shared by all fields.
7
+ * Each field-specific admin meta extends this.
8
+ *
9
+ * Supports reactive configurations for dynamic field states:
10
+ * - `hidden`, `readOnly`, `disabled` can be boolean or reactive function
11
+ * - `compute` can auto-generate field values based on other fields
12
+ */
13
+ interface BaseAdminMeta {
14
+ /**
15
+ * Field width in form (CSS value or number for pixels).
16
+ * @example "100%" | 400 | "50%"
17
+ */
18
+ width?: string | number;
19
+ /**
20
+ * Column span in grid layout (1-12).
21
+ * @default 12
22
+ */
23
+ colspan?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
24
+ /**
25
+ * Field group for form organization.
26
+ */
27
+ group?: string;
28
+ /**
29
+ * Display order within group.
30
+ */
31
+ order?: number;
32
+ /**
33
+ * Hide the field conditionally.
34
+ * - `true`: Always hidden
35
+ * - Function/config: Evaluated on server based on form data
36
+ *
37
+ * @example Static
38
+ * ```ts
39
+ * hidden: true
40
+ * ```
41
+ *
42
+ * @example Reactive (short syntax)
43
+ * ```ts
44
+ * hidden: ({ data }) => !data.showAdvanced
45
+ * ```
46
+ *
47
+ * @example Reactive (full syntax with deps)
48
+ * ```ts
49
+ * hidden: {
50
+ * handler: ({ data }) => !data.showAdvanced,
51
+ * deps: ['showAdvanced'],
52
+ * }
53
+ * ```
54
+ */
55
+ hidden?: boolean | ReactiveConfig<boolean>;
56
+ /**
57
+ * Make field read-only conditionally.
58
+ * - `true`: Always read-only
59
+ * - Function/config: Evaluated on server based on form data
60
+ *
61
+ * @example Reactive
62
+ * ```ts
63
+ * readOnly: ({ data }) => data.status === 'published'
64
+ * ```
65
+ */
66
+ readOnly?: boolean | ReactiveConfig<boolean>;
67
+ /**
68
+ * Disable the field conditionally.
69
+ * - `true`: Always disabled
70
+ * - Function/config: Evaluated on server based on form data
71
+ *
72
+ * @example Reactive
73
+ * ```ts
74
+ * disabled: ({ data }) => data.isLocked
75
+ * ```
76
+ */
77
+ disabled?: boolean | ReactiveConfig<boolean>;
78
+ /**
79
+ * Compute field value automatically based on other fields.
80
+ * Handler should return the computed value or undefined to keep current.
81
+ * Return null to reset field to null/default.
82
+ *
83
+ * @example Auto-generate slug from title
84
+ * ```ts
85
+ * compute: ({ data }) => slugify(data.title)
86
+ * ```
87
+ *
88
+ * @example With debounce and explicit deps
89
+ * ```ts
90
+ * compute: {
91
+ * handler: ({ data }) => slugify(data.title),
92
+ * deps: ['title'],
93
+ * debounce: 300,
94
+ * }
95
+ * ```
96
+ *
97
+ * @example Reset on parent change
98
+ * ```ts
99
+ * compute: ({ data, prev }) => {
100
+ * if (data.category !== prev.data.category) {
101
+ * return null; // Reset when category changes
102
+ * }
103
+ * }
104
+ * ```
105
+ */
106
+ compute?: ReactiveConfig<any>;
107
+ /**
108
+ * Show this field in list view columns.
109
+ */
110
+ showInList?: boolean;
111
+ /**
112
+ * Column width in list view.
113
+ */
114
+ listWidth?: string | number;
115
+ /**
116
+ * Enable sorting by this field.
117
+ */
118
+ sortable?: boolean;
119
+ /**
120
+ * Enable filtering by this field.
121
+ */
122
+ filterable?: boolean;
123
+ }
124
+ /**
125
+ * Text field admin options
126
+ */
127
+ interface TextFieldAdminMeta extends BaseAdminMeta {
128
+ placeholder?: string;
129
+ showCounter?: boolean;
130
+ prefix?: string;
131
+ suffix?: string;
132
+ inputType?: "text" | "email" | "url" | "tel" | "search" | "password";
133
+ }
134
+ /**
135
+ * Email field admin options
136
+ */
137
+ interface EmailFieldAdminMeta extends BaseAdminMeta {
138
+ placeholder?: string;
139
+ /** Show domain hint (e.g., "@company.com") */
140
+ domainHint?: string;
141
+ }
142
+ /**
143
+ * URL field admin options
144
+ */
145
+ interface UrlFieldAdminMeta extends BaseAdminMeta {
146
+ placeholder?: string;
147
+ /** Show protocol dropdown (http/https) */
148
+ showProtocolDropdown?: boolean;
149
+ /** Default protocol if not provided */
150
+ defaultProtocol?: "http" | "https";
151
+ }
152
+ /**
153
+ * Textarea field admin options
154
+ */
155
+ interface TextareaFieldAdminMeta extends BaseAdminMeta {
156
+ placeholder?: string;
157
+ rows?: number;
158
+ autoResize?: boolean;
159
+ richText?: boolean;
160
+ showCounter?: boolean;
161
+ }
162
+ /**
163
+ * Number field admin options
164
+ */
165
+ interface NumberFieldAdminMeta extends BaseAdminMeta {
166
+ placeholder?: string;
167
+ showButtons?: boolean;
168
+ step?: number;
169
+ }
170
+ /**
171
+ * Boolean field admin options
172
+ */
173
+ interface BooleanFieldAdminMeta extends BaseAdminMeta {
174
+ displayAs?: "checkbox" | "switch";
175
+ }
176
+ /**
177
+ * Date field admin options
178
+ */
179
+ interface DateFieldAdminMeta extends BaseAdminMeta {
180
+ placeholder?: string;
181
+ }
182
+ /**
183
+ * Time field admin options
184
+ */
185
+ interface TimeFieldAdminMeta extends BaseAdminMeta {
186
+ placeholder?: string;
187
+ }
188
+ /**
189
+ * Select field admin options
190
+ */
191
+ interface SelectFieldAdminMeta extends BaseAdminMeta {
192
+ displayAs?: "dropdown" | "radio" | "checkbox" | "buttons";
193
+ searchable?: boolean;
194
+ creatable?: boolean;
195
+ clearable?: boolean;
196
+ }
197
+ /**
198
+ * Relation field admin options
199
+ */
200
+ interface RelationFieldAdminMeta extends BaseAdminMeta {
201
+ displayAs?: "select" | "table" | "cards" | "list";
202
+ displayFields?: string[];
203
+ titleField?: string;
204
+ allowCreate?: boolean;
205
+ allowEdit?: boolean;
206
+ preload?: boolean;
207
+ maxItems?: number;
208
+ /**
209
+ * List table cell rendering for relation values.
210
+ * - "chip": default text chip
211
+ * - "avatarChip": chip with avatar image + label
212
+ */
213
+ listCell?: {
214
+ display?: "chip" | "avatarChip";
215
+ /** Dot-path on related record (e.g. "image" or "avatar.url") */
216
+ avatarField?: string;
217
+ /** Dot-path for display label override (e.g. "fullName") */
218
+ labelField?: string;
219
+ };
220
+ }
221
+ /**
222
+ * Object field admin options
223
+ */
224
+ interface ObjectFieldAdminMeta extends BaseAdminMeta {
225
+ /** Visual wrapper mode */
226
+ wrapper?: "flat" | "collapsible";
227
+ /** Field arrangement mode */
228
+ layout?: "stack" | "inline" | "grid";
229
+ /** Number of columns (for grid layout) */
230
+ columns?: number;
231
+ /** Default collapsed state (for collapsible wrapper) */
232
+ defaultCollapsed?: boolean;
233
+ }
234
+ /**
235
+ * Array field admin options
236
+ */
237
+ interface ArrayFieldAdminMeta extends BaseAdminMeta {
238
+ /** Enable drag-and-drop reordering */
239
+ orderable?: boolean;
240
+ /** Minimum number of items */
241
+ minItems?: number;
242
+ /** Maximum number of items */
243
+ maxItems?: number;
244
+ /** Item editing mode */
245
+ mode?: "inline" | "modal" | "drawer";
246
+ /** Field arrangement mode for items */
247
+ layout?: "stack" | "inline" | "grid";
248
+ /** Number of columns (for grid layout) */
249
+ columns?: number;
250
+ /** Label for array items */
251
+ itemLabel?: string;
252
+ }
253
+ /**
254
+ * JSON field admin options
255
+ */
256
+ interface JsonFieldAdminMeta extends BaseAdminMeta {
257
+ /** Show as code editor */
258
+ codeEditor?: boolean;
259
+ }
260
+ /**
261
+ * Upload field admin options
262
+ */
263
+ interface UploadFieldAdminMeta extends BaseAdminMeta {
264
+ /** Accepted file types */
265
+ accept?: string | string[];
266
+ /** Dropzone placeholder text */
267
+ dropzoneText?: string;
268
+ /** Show file preview */
269
+ showPreview?: boolean;
270
+ /** Allow editing uploaded files */
271
+ editable?: boolean;
272
+ /** Preview display variant */
273
+ previewVariant?: "card" | "compact" | "thumbnail";
274
+ /** Allow multiple file uploads */
275
+ multiple?: boolean;
276
+ /** Maximum number of files */
277
+ maxItems?: number;
278
+ /** Enable drag-and-drop reordering */
279
+ orderable?: boolean;
280
+ /** Layout for multiple files */
281
+ layout?: "grid" | "list";
282
+ }
283
+ /**
284
+ * Rich text field admin options
285
+ */
286
+ interface RichTextFieldAdminMeta extends BaseAdminMeta {
287
+ /** Placeholder text when editor is empty */
288
+ placeholder?: string;
289
+ /** Show character count */
290
+ showCharacterCount?: boolean;
291
+ /** Maximum characters allowed */
292
+ maxCharacters?: number;
293
+ /** Minimum characters required */
294
+ minCharacters?: number;
295
+ /** Enable image uploads within editor */
296
+ enableImages?: boolean;
297
+ /** Collection to use for image uploads */
298
+ imageCollection?: string;
299
+ /** Enable media library integration */
300
+ enableMediaLibrary?: boolean;
301
+ }
302
+ /**
303
+ * Blocks field admin options
304
+ */
305
+ interface BlocksFieldAdminMeta extends BaseAdminMeta {
306
+ /** Label for add block button */
307
+ addLabel?: string;
308
+ /** Message shown when no blocks present */
309
+ emptyMessage?: string;
310
+ /** Maximum number of blocks allowed */
311
+ maxBlocks?: number;
312
+ /** Minimum number of blocks required */
313
+ minBlocks?: number;
314
+ /** Enable drag & drop reordering */
315
+ sortable?: boolean;
316
+ /** Show block type selector as dropdown or grid */
317
+ selectorDisplayAs?: "dropdown" | "grid";
318
+ /** Default collapsed state for blocks */
319
+ defaultCollapsed?: boolean;
320
+ }
321
+ type AnyAdminMeta = TextFieldAdminMeta | TextareaFieldAdminMeta | EmailFieldAdminMeta | UrlFieldAdminMeta | NumberFieldAdminMeta | BooleanFieldAdminMeta | DateFieldAdminMeta | TimeFieldAdminMeta | SelectFieldAdminMeta | RelationFieldAdminMeta | ObjectFieldAdminMeta | ArrayFieldAdminMeta | JsonFieldAdminMeta | UploadFieldAdminMeta | RichTextFieldAdminMeta | BlocksFieldAdminMeta;
322
+ /**
323
+ * Base widget admin meta (common options for all widgets)
324
+ */
325
+ interface BaseWidgetAdminMeta {
326
+ /** Default grid span */
327
+ span?: number;
328
+ /** Default refresh interval */
329
+ refreshInterval?: number;
330
+ }
331
+ /**
332
+ * Registry interface for widget types.
333
+ * Users can augment this to add custom widget type configs.
334
+ *
335
+ * @example
336
+ * ```ts
337
+ * declare module "@questpie/admin" {
338
+ * interface WidgetTypeRegistry {
339
+ * myCustomWidget: { loader: (client: any) => Promise<MyData> };
340
+ * }
341
+ * }
342
+ * ```
343
+ */
344
+ interface WidgetTypeRegistry {
345
+ stats: {};
346
+ chart: {};
347
+ recentItems: {};
348
+ quickActions: {};
349
+ value: {};
350
+ table: {};
351
+ timeline: {};
352
+ progress: {};
353
+ }
354
+ declare global {
355
+ namespace Questpie {
356
+ interface TextFieldMeta {
357
+ admin?: TextFieldAdminMeta;
358
+ }
359
+ interface EmailFieldMeta {
360
+ admin?: EmailFieldAdminMeta;
361
+ }
362
+ interface UrlFieldMeta {
363
+ admin?: UrlFieldAdminMeta;
364
+ }
365
+ interface TextareaFieldMeta {
366
+ admin?: TextareaFieldAdminMeta;
367
+ }
368
+ interface NumberFieldMeta {
369
+ admin?: NumberFieldAdminMeta;
370
+ }
371
+ interface BooleanFieldMeta {
372
+ admin?: BooleanFieldAdminMeta;
373
+ }
374
+ interface DateFieldMeta {
375
+ admin?: DateFieldAdminMeta;
376
+ }
377
+ interface DatetimeFieldMeta {
378
+ admin?: DateFieldAdminMeta;
379
+ }
380
+ interface TimeFieldMeta {
381
+ admin?: TimeFieldAdminMeta;
382
+ }
383
+ interface SelectFieldMeta {
384
+ admin?: SelectFieldAdminMeta;
385
+ }
386
+ interface RelationFieldMeta {
387
+ admin?: RelationFieldAdminMeta;
388
+ }
389
+ interface ObjectFieldMeta {
390
+ admin?: ObjectFieldAdminMeta;
391
+ }
392
+ interface ArrayFieldMeta {
393
+ admin?: ArrayFieldAdminMeta;
394
+ }
395
+ interface JsonFieldMeta {
396
+ admin?: JsonFieldAdminMeta;
397
+ }
398
+ interface UploadFieldMeta {
399
+ admin?: UploadFieldAdminMeta;
400
+ }
401
+ }
402
+ }
403
+ declare module "./server/fields/rich-text.js" {
404
+ interface RichTextFieldMeta {
405
+ admin?: RichTextFieldAdminMeta;
406
+ }
407
+ }
408
+ declare module "./server/fields/blocks.js" {
409
+ interface BlocksFieldMeta {
410
+ admin?: BlocksFieldAdminMeta;
411
+ }
412
+ }
413
+ //#endregion
414
+ export { AnyAdminMeta, ArrayFieldAdminMeta, BaseAdminMeta, BaseWidgetAdminMeta, BooleanFieldAdminMeta, DateFieldAdminMeta, JsonFieldAdminMeta, NumberFieldAdminMeta, ObjectFieldAdminMeta, RelationFieldAdminMeta, SelectFieldAdminMeta, TextFieldAdminMeta, TextareaFieldAdminMeta, TimeFieldAdminMeta, UploadFieldAdminMeta, WidgetTypeRegistry };
@@ -0,0 +1,45 @@
1
+ import { BlockContent } from "./types.mjs";
2
+ import * as React from "react";
3
+ import * as react_jsx_runtime23 from "react/jsx-runtime";
4
+
5
+ //#region src/client/blocks/block-renderer.d.ts
6
+
7
+ /**
8
+ * Block renderer function type.
9
+ * Consumers provide their own renderers mapped by block type.
10
+ */
11
+ type BlockRendererFn = (props: any) => React.ReactNode;
12
+ /**
13
+ * Props for BlockRenderer component.
14
+ */
15
+ type BlockRendererProps = {
16
+ /** Block content from API (tree + values) */
17
+ content: BlockContent;
18
+ /** Block renderers mapped by type */
19
+ renderers: Record<string, BlockRendererFn>;
20
+ /** Prefetched data by block ID (optional, for SSR) */
21
+ data?: Record<string, unknown>;
22
+ /** Currently selected block ID (for editor mode) */
23
+ selectedBlockId?: string | null;
24
+ /** Block click handler (for editor mode) */
25
+ onBlockClick?: (blockId: string) => void;
26
+ /** Custom class name for the container */
27
+ className?: string;
28
+ };
29
+ /**
30
+ * Renders a tree of blocks.
31
+ *
32
+ * Iterates through the block tree and renders each block using its
33
+ * registered renderer component. Layout blocks receive their rendered
34
+ * children as the `children` prop.
35
+ */
36
+ declare function BlockRenderer({
37
+ content,
38
+ renderers,
39
+ data,
40
+ selectedBlockId,
41
+ onBlockClick,
42
+ className
43
+ }: BlockRendererProps): react_jsx_runtime23.JSX.Element | null;
44
+ //#endregion
45
+ export { BlockRenderer, BlockRendererProps };
@@ -0,0 +1,105 @@
1
+ import { BlockScopeProvider } from "../preview/block-scope-context.mjs";
2
+ import { c } from "react/compiler-runtime";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/client/blocks/block-renderer.tsx
6
+ const EMPTY_DATA = {};
7
+ /**
8
+ * Renders a tree of blocks.
9
+ *
10
+ * Iterates through the block tree and renders each block using its
11
+ * registered renderer component. Layout blocks receive their rendered
12
+ * children as the `children` prop.
13
+ */
14
+ function BlockRenderer(t0) {
15
+ const $ = c(11);
16
+ const { content, renderers, data, onBlockClick, className } = t0;
17
+ const resolvedData = data ?? EMPTY_DATA;
18
+ let t1;
19
+ let t2;
20
+ let t3;
21
+ if ($[0] !== className || $[1] !== content || $[2] !== onBlockClick || $[3] !== renderers || $[4] !== resolvedData) {
22
+ t3 = Symbol.for("react.early_return_sentinel");
23
+ bb0: {
24
+ function renderBlock(node) {
25
+ const renderFn = renderers[node.type];
26
+ if (!renderFn) {
27
+ if (process.env.NODE_ENV !== "production") console.warn(`[BlockRenderer] No renderer found for block type "${node.type}"`);
28
+ return null;
29
+ }
30
+ const values = content._values[node.id] || {};
31
+ const blockData = resolvedData[node.id];
32
+ const renderedChildren = node.children.length > 0 ? node.children.map(renderBlock) : void 0;
33
+ const handleClick = onBlockClick ? (e) => {
34
+ e.stopPropagation();
35
+ onBlockClick(node.id);
36
+ } : void 0;
37
+ const BlockComponent = renderFn;
38
+ const blockElement = /* @__PURE__ */ jsx(BlockScopeProvider, {
39
+ blockId: node.id,
40
+ basePath: "content._values",
41
+ children: /* @__PURE__ */ jsx(BlockComponent, {
42
+ id: node.id,
43
+ type: node.type,
44
+ values,
45
+ data: blockData,
46
+ children: renderedChildren
47
+ })
48
+ });
49
+ if (handleClick) return /* @__PURE__ */ jsx("div", {
50
+ "data-block-id": node.id,
51
+ "data-block-type": node.type,
52
+ onClick: handleClick,
53
+ onKeyDown: (e_0) => {
54
+ if (e_0.key === "Enter" || e_0.key === " ") {
55
+ e_0.preventDefault();
56
+ onBlockClick?.(node.id);
57
+ }
58
+ },
59
+ role: "button",
60
+ tabIndex: 0,
61
+ className: "cursor-pointer",
62
+ children: blockElement
63
+ }, node.id);
64
+ return /* @__PURE__ */ jsx("div", {
65
+ "data-block-id": node.id,
66
+ "data-block-type": node.type,
67
+ children: blockElement
68
+ }, node.id);
69
+ }
70
+ if (!content?._tree?.length) {
71
+ t3 = null;
72
+ break bb0;
73
+ }
74
+ t1 = className;
75
+ t2 = content._tree.map(renderBlock);
76
+ }
77
+ $[0] = className;
78
+ $[1] = content;
79
+ $[2] = onBlockClick;
80
+ $[3] = renderers;
81
+ $[4] = resolvedData;
82
+ $[5] = t1;
83
+ $[6] = t2;
84
+ $[7] = t3;
85
+ } else {
86
+ t1 = $[5];
87
+ t2 = $[6];
88
+ t3 = $[7];
89
+ }
90
+ if (t3 !== Symbol.for("react.early_return_sentinel")) return t3;
91
+ let t4;
92
+ if ($[8] !== t1 || $[9] !== t2) {
93
+ t4 = /* @__PURE__ */ jsx("div", {
94
+ className: t1,
95
+ children: t2
96
+ });
97
+ $[8] = t1;
98
+ $[9] = t2;
99
+ $[10] = t4;
100
+ } else t4 = $[10];
101
+ return t4;
102
+ }
103
+
104
+ //#endregion
105
+ export { BlockRenderer };
@@ -0,0 +1,2 @@
1
+ import { BlockCategory, BlockContent, BlockNode, BlockRendererProps, EMPTY_BLOCK_CONTENT, isBlockContent } from "./types.mjs";
2
+ import { BlockRenderer, BlockRendererProps as BlockRendererProps$1 } from "./block-renderer.mjs";
@@ -0,0 +1,68 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/client/blocks/types.d.ts
4
+
5
+ /**
6
+ * Block node in the tree structure.
7
+ * Represents a single block instance with its position and children.
8
+ */
9
+ type BlockNode = {
10
+ /** Unique block instance ID (UUID) */
11
+ id: string;
12
+ /** Block type name (e.g., "hero", "columns", "text") */
13
+ type: string;
14
+ /** Child blocks (for layout blocks that accept children) */
15
+ children: BlockNode[];
16
+ };
17
+ /**
18
+ * Block content structure stored in JSONB.
19
+ * This is the shape of data stored in the database and passed to BlockRenderer.
20
+ *
21
+ * After server-side prefetch (afterRead hook), `_data` is populated with:
22
+ * - Auto-expanded relation/upload fields
23
+ * - Manual prefetch data from `.blocks()` registration
24
+ */
25
+ type BlockContent = {
26
+ /** Block tree with hierarchy and order */
27
+ _tree: BlockNode[];
28
+ /** Block values indexed by block ID */
29
+ _values: Record<string, Record<string, unknown>>;
30
+ /** Prefetched data from server (populated by afterRead hook) */
31
+ _data?: Record<string, Record<string, unknown>>;
32
+ };
33
+ /**
34
+ * Block category for organization in the block picker.
35
+ * Categories help users find blocks quickly when adding new content.
36
+ */
37
+ type BlockCategory = "layout" | "content" | "media" | "sections" | "interactive" | (string & {});
38
+ /**
39
+ * Props passed to block renderer components.
40
+ * Each block receives these props when being rendered.
41
+ *
42
+ * @template TValues - Block field values type (inferred from `.fields()`)
43
+ * @template TData - Prefetch data type (inferred from `.prefetch()`)
44
+ */
45
+ type BlockRendererProps<TValues = Record<string, unknown>, TData = Record<string, unknown>> = {
46
+ /** Block instance ID */
47
+ id: string;
48
+ /** Block field values (merged with i18n for current locale) */
49
+ values: TValues;
50
+ /** Data from server prefetch (populated via afterRead hook into _data[blockId]) */
51
+ data?: TData;
52
+ /** Rendered child blocks (for layout blocks) */
53
+ children?: React.ReactNode;
54
+ /** Whether this block is currently selected in the editor */
55
+ isSelected?: boolean;
56
+ /** Whether rendering in preview mode */
57
+ isPreview?: boolean;
58
+ };
59
+ /**
60
+ * Empty block content for initialization.
61
+ */
62
+ declare const EMPTY_BLOCK_CONTENT: BlockContent;
63
+ /**
64
+ * Check if a value is a valid BlockContent structure.
65
+ */
66
+ declare function isBlockContent(value: unknown): value is BlockContent;
67
+ //#endregion
68
+ export { BlockCategory, BlockContent, BlockNode, BlockRendererProps, EMPTY_BLOCK_CONTENT, isBlockContent };
@@ -0,0 +1,19 @@
1
+ //#region src/client/blocks/types.ts
2
+ /**
3
+ * Empty block content for initialization.
4
+ */
5
+ const EMPTY_BLOCK_CONTENT = {
6
+ _tree: [],
7
+ _values: {}
8
+ };
9
+ /**
10
+ * Check if a value is a valid BlockContent structure.
11
+ */
12
+ function isBlockContent(value) {
13
+ if (value == null || typeof value !== "object") return false;
14
+ const obj = value;
15
+ return Array.isArray(obj._tree) && typeof obj._values === "object" && obj._values !== null;
16
+ }
17
+
18
+ //#endregion
19
+ export { EMPTY_BLOCK_CONTENT, isBlockContent };
@@ -0,0 +1,40 @@
1
+ import { SimpleMessages } from "../i18n/simple.mjs";
2
+ import { MaybeLazyComponent } from "./types/common.mjs";
3
+ import { FieldDefinition } from "./field/field.mjs";
4
+ import { PageDefinition } from "./page/page.mjs";
5
+ import { LocaleConfig } from "./types/ui-config.mjs";
6
+ import { ViewDefinition } from "./view/view.mjs";
7
+ import { WidgetDefinition } from "./widget/widget.mjs";
8
+
9
+ //#region src/client/builder/admin-types.d.ts
10
+
11
+ /**
12
+ * Translations map: locale -> key -> message
13
+ */
14
+ type TranslationsMap = Record<string, SimpleMessages>;
15
+ type FieldDefinitionMap = Record<string, FieldDefinition>;
16
+ type ViewDefinitionMap = Record<string, ViewDefinition>;
17
+ type PageDefinitionMap = Record<string, PageDefinition>;
18
+ type WidgetDefinitionMap = Record<string, WidgetDefinition>;
19
+ type ComponentDefinitionMap = Record<string, MaybeLazyComponent<any>>;
20
+ type BlockDefinitionMap = Record<string, never>;
21
+ /**
22
+ * Admin state — flat map of all admin registrations.
23
+ *
24
+ * Pure data: maps names to components. All config flows from server introspection.
25
+ *
26
+ * TApp: Backend Questpie app type — provides collection/global names for autocomplete
27
+ */
28
+ interface AdminState<TApp = any, TFields extends FieldDefinitionMap = FieldDefinitionMap, TComponents extends ComponentDefinitionMap = ComponentDefinitionMap, TViews extends ViewDefinitionMap = ViewDefinitionMap, TPages extends PageDefinitionMap = PageDefinitionMap, TWidgets extends WidgetDefinitionMap = WidgetDefinitionMap, TBlocks extends BlockDefinitionMap = BlockDefinitionMap, TTranslations extends TranslationsMap = TranslationsMap> {
29
+ "~app": TApp;
30
+ fields: TFields;
31
+ components: TComponents;
32
+ views: TViews;
33
+ pages: TPages;
34
+ widgets: TWidgets;
35
+ blocks: TBlocks;
36
+ translations: TTranslations;
37
+ locale: LocaleConfig;
38
+ }
39
+ //#endregion
40
+ export { AdminState, BlockDefinitionMap, ComponentDefinitionMap, FieldDefinitionMap, PageDefinitionMap, TranslationsMap, ViewDefinitionMap, WidgetDefinitionMap };