@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,158 @@
1
+ import { DynamicI18nText, IconComponent } from "./common.mjs";
2
+ import { ComponentReference } from "../../../server/augmentation/common.mjs";
3
+ import "../../../server/augmentation.mjs";
4
+ import { WidgetConfig } from "./widget-types.mjs";
5
+
6
+ //#region src/client/builder/types/ui-config.d.ts
7
+
8
+ /**
9
+ * Dashboard action item - simplified action for dashboard header
10
+ */
11
+ interface DashboardAction {
12
+ /** Unique action ID */
13
+ id: string;
14
+ /** Action label */
15
+ label: DynamicI18nText;
16
+ /** Action icon */
17
+ icon?: IconComponent | ComponentReference;
18
+ /** Link URL */
19
+ href?: string;
20
+ /** Click handler */
21
+ onClick?: () => void;
22
+ /** Visual variant */
23
+ variant?: "default" | "primary" | "secondary" | "outline" | "ghost";
24
+ }
25
+ /**
26
+ * Widget card visual variant
27
+ */
28
+ type WidgetCardVariant = "default" | "compact" | "featured";
29
+ /**
30
+ * Dashboard layout item - can be a widget, section, or tabs
31
+ */
32
+ type DashboardLayoutItem = WidgetConfig | DashboardSection | DashboardTabs;
33
+ /**
34
+ * Dashboard section - groups widgets together
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * {
39
+ * type: "section",
40
+ * label: { en: "Sales Overview", sk: "Prehľad predaja" },
41
+ * layout: "grid",
42
+ * columns: 3,
43
+ * items: [
44
+ * { type: "stats", ... },
45
+ * { type: "chart", ... },
46
+ * ]
47
+ * }
48
+ * ```
49
+ */
50
+ interface DashboardSection {
51
+ type: "section";
52
+ /** Section label */
53
+ label?: DynamicI18nText;
54
+ /** Section description */
55
+ description?: DynamicI18nText;
56
+ /** Section icon */
57
+ icon?: IconComponent | ComponentReference;
58
+ /** Wrapper style */
59
+ wrapper?: "flat" | "card" | "collapsible";
60
+ /** Whether collapsed by default (for collapsible wrapper) */
61
+ defaultCollapsed?: boolean;
62
+ /** Layout mode */
63
+ layout?: "grid" | "stack";
64
+ /** Grid columns (for grid layout) */
65
+ columns?: number;
66
+ /** Gap between items */
67
+ gap?: number;
68
+ /** Section items */
69
+ items: DashboardLayoutItem[];
70
+ /** Custom CSS class */
71
+ className?: string;
72
+ }
73
+ /**
74
+ * Dashboard tabs - tabbed widget groups
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * {
79
+ * type: "tabs",
80
+ * tabs: [
81
+ * {
82
+ * id: "overview",
83
+ * label: { en: "Overview", sk: "Prehľad" },
84
+ * items: [...widgets]
85
+ * },
86
+ * {
87
+ * id: "analytics",
88
+ * label: { en: "Analytics", sk: "Analytika" },
89
+ * items: [...widgets]
90
+ * }
91
+ * ]
92
+ * }
93
+ * ```
94
+ */
95
+ interface DashboardTabs {
96
+ type: "tabs";
97
+ /** Tab configurations */
98
+ tabs: DashboardTabConfig[];
99
+ /** Default active tab ID */
100
+ defaultTab?: string;
101
+ /** Tabs visual variant */
102
+ variant?: "default" | "line" | "pills";
103
+ }
104
+ /**
105
+ * Single tab configuration
106
+ */
107
+ interface DashboardTabConfig {
108
+ /** Unique tab ID */
109
+ id: string;
110
+ /** Tab label */
111
+ label: DynamicI18nText;
112
+ /** Tab icon */
113
+ icon?: IconComponent | ComponentReference;
114
+ /** Tab items (widgets or sections) */
115
+ items: DashboardLayoutItem[];
116
+ /** Badge text (e.g., count) */
117
+ badge?: string | number;
118
+ }
119
+ /**
120
+ * Dashboard configuration
121
+ */
122
+ interface DashboardConfig {
123
+ /** Dashboard layout mode */
124
+ layout?: "grid" | "list";
125
+ /** Dashboard title - supports inline translations */
126
+ title?: DynamicI18nText;
127
+ /** Dashboard description - supports inline translations */
128
+ description?: DynamicI18nText;
129
+ /** Grid columns (default: 4) */
130
+ columns?: number;
131
+ /** Gap between widgets */
132
+ gap?: number;
133
+ /** Dashboard items - widgets, sections, or tabs */
134
+ items?: DashboardLayoutItem[];
135
+ /**
136
+ * @deprecated Use `items` instead
137
+ */
138
+ widgets?: WidgetConfig[];
139
+ /** Default widget card variant */
140
+ defaultCardVariant?: WidgetCardVariant;
141
+ /** Show refresh button in header */
142
+ showRefresh?: boolean;
143
+ /** Auto-refresh interval in milliseconds */
144
+ refreshInterval?: number;
145
+ /** Enable realtime invalidation for dashboard widgets by default */
146
+ realtime?: boolean;
147
+ /** Header actions (buttons in dashboard header) */
148
+ actions?: DashboardAction[];
149
+ }
150
+ /**
151
+ * Locale configuration
152
+ */
153
+ interface LocaleConfig {
154
+ default?: string;
155
+ supported?: string[];
156
+ }
157
+ //#endregion
158
+ export { DashboardAction, DashboardConfig, DashboardLayoutItem, DashboardSection, DashboardTabConfig, DashboardTabs, LocaleConfig };
@@ -0,0 +1,562 @@
1
+ import { I18nText } from "../../i18n/types.mjs";
2
+ import { IconComponent, MaybeLazyComponent } from "./common.mjs";
3
+ import { ComponentReference } from "../../../server/augmentation/common.mjs";
4
+ import "../../../server/augmentation.mjs";
5
+ import * as React from "react";
6
+
7
+ //#region src/client/builder/types/widget-types.d.ts
8
+
9
+ /**
10
+ * Widget card visual variant
11
+ */
12
+ type WidgetCardVariant = "default" | "compact" | "featured";
13
+ /**
14
+ * Base widget configuration shared by all widget types
15
+ */
16
+ interface BaseWidgetConfig {
17
+ /**
18
+ * Widget ID
19
+ */
20
+ id: string;
21
+ /**
22
+ * Widget title
23
+ */
24
+ title?: I18nText;
25
+ /**
26
+ * Widget description
27
+ */
28
+ description?: I18nText;
29
+ /**
30
+ * Widget icon
31
+ */
32
+ icon?: IconComponent | ComponentReference | string;
33
+ /**
34
+ * Card visual variant
35
+ */
36
+ cardVariant?: WidgetCardVariant;
37
+ /**
38
+ * Widget size
39
+ */
40
+ size?: "small" | "medium" | "large" | "full";
41
+ /**
42
+ * Column span (1-12)
43
+ */
44
+ span?: number;
45
+ /**
46
+ * Grid position (for dashboard layouts)
47
+ */
48
+ position?: {
49
+ x?: number;
50
+ y?: number;
51
+ w?: number;
52
+ h?: number;
53
+ };
54
+ /**
55
+ * Data source configuration
56
+ */
57
+ dataSource?: WidgetDataSource;
58
+ /**
59
+ * Widget-specific options
60
+ */
61
+ options?: Record<string, any>;
62
+ /**
63
+ * Refresh interval in milliseconds
64
+ */
65
+ refreshInterval?: number;
66
+ /**
67
+ * Enable realtime invalidation for widget data queries.
68
+ * Falls back to AdminProvider realtime config when undefined.
69
+ */
70
+ realtime?: boolean;
71
+ /**
72
+ * Header actions
73
+ */
74
+ actions?: WidgetAction[];
75
+ /**
76
+ * Custom CSS class
77
+ */
78
+ className?: string;
79
+ /**
80
+ * Indicates server has a loader for this widget (set by getAdminConfig).
81
+ * When true, the widget loads data via the fetchWidgetData RPC endpoint
82
+ * instead of calling a client-side loader.
83
+ */
84
+ hasLoader?: boolean;
85
+ }
86
+ /**
87
+ * Date filter presets for time-based filtering
88
+ */
89
+ type DateFilterPreset = "today" | "yesterday" | "thisWeek" | "lastWeek" | "thisMonth" | "lastMonth" | "last7days" | "last30days" | "last90days" | "thisYear" | "lastYear";
90
+ /**
91
+ * Date filter configuration
92
+ */
93
+ interface DateFilterConfig {
94
+ /**
95
+ * Field name to filter on (e.g., "createdAt", "scheduledAt")
96
+ */
97
+ field: string;
98
+ /**
99
+ * Preset time range
100
+ */
101
+ range: DateFilterPreset;
102
+ }
103
+ /**
104
+ * Stats widget configuration
105
+ */
106
+ interface StatsWidgetConfig extends BaseWidgetConfig {
107
+ type: "stats";
108
+ collection: string;
109
+ label?: I18nText;
110
+ /**
111
+ * Static filter (evaluated at build time)
112
+ */
113
+ filter?: Record<string, any>;
114
+ /**
115
+ * Dynamic filter function (evaluated at render time)
116
+ * Use this for filters that depend on current date/time
117
+ */
118
+ filterFn?: () => Record<string, any>;
119
+ /**
120
+ * Date filter preset (evaluated at render time)
121
+ * Shorthand for common date-based filters
122
+ */
123
+ dateFilter?: DateFilterConfig;
124
+ variant?: "default" | "primary" | "success" | "warning" | "danger";
125
+ }
126
+ /**
127
+ * Chart widget configuration
128
+ */
129
+ interface ChartWidgetConfig extends BaseWidgetConfig {
130
+ type: "chart";
131
+ collection: string;
132
+ field: string;
133
+ chartType?: "line" | "bar" | "area" | "pie";
134
+ timeRange?: "7d" | "30d" | "90d" | "1y";
135
+ label?: I18nText;
136
+ color?: string;
137
+ showGrid?: boolean;
138
+ aggregation?: "count" | "sum" | "average";
139
+ valueField?: string;
140
+ }
141
+ /**
142
+ * Recent items widget configuration
143
+ */
144
+ interface RecentItemsWidgetConfig extends BaseWidgetConfig {
145
+ type: "recentItems";
146
+ collection: string;
147
+ limit?: number;
148
+ titleField?: string;
149
+ dateField?: string;
150
+ subtitleFields?: string[];
151
+ label?: I18nText;
152
+ }
153
+ /**
154
+ * Quick action item configuration
155
+ */
156
+ interface QuickActionItem {
157
+ /** Action label */
158
+ label: I18nText;
159
+ /** Action icon */
160
+ icon?: IconComponent | ComponentReference | string;
161
+ /** Link URL */
162
+ href?: string;
163
+ /** Click handler */
164
+ onClick?: () => void;
165
+ /** Visual variant */
166
+ variant?: "default" | "primary" | "secondary" | "outline";
167
+ }
168
+ /**
169
+ * Quick actions widget configuration
170
+ */
171
+ interface QuickActionsWidgetConfig extends BaseWidgetConfig {
172
+ type: "quickActions";
173
+ /** List of quick action items */
174
+ quickActions: Array<string | QuickActionItem>;
175
+ /** Layout variant */
176
+ layout?: "grid" | "list";
177
+ }
178
+ /**
179
+ * Custom widget configuration
180
+ */
181
+ interface CustomWidgetConfig extends BaseWidgetConfig {
182
+ type: "custom";
183
+ component: MaybeLazyComponent<WidgetComponentProps>;
184
+ config?: Record<string, any>;
185
+ }
186
+ /**
187
+ * ClassNames for styling value widget parts
188
+ */
189
+ interface ValueWidgetClassNames {
190
+ /** Card container */
191
+ root?: string;
192
+ /** Header wrapper */
193
+ header?: string;
194
+ /** Label text */
195
+ label?: string;
196
+ /** Main icon */
197
+ icon?: ComponentReference | string;
198
+ /** Content wrapper */
199
+ content?: string;
200
+ /** Main value display */
201
+ value?: string;
202
+ /** Trend wrapper + text */
203
+ trend?: string;
204
+ /** Trend icon */
205
+ trendIcon?: string;
206
+ /** Subtitle text */
207
+ subtitle?: string;
208
+ /** Footer text */
209
+ footer?: string;
210
+ }
211
+ /**
212
+ * Trend indicator configuration
213
+ */
214
+ interface ValueWidgetTrend {
215
+ /** Trend value (e.g., "+15.3%", "-5%") */
216
+ value: string;
217
+ /** Optional trend icon */
218
+ icon?: IconComponent | ComponentReference;
219
+ }
220
+ /**
221
+ * Result returned by loader
222
+ */
223
+ interface ValueWidgetResult {
224
+ /** Main value to display */
225
+ value: number | string;
226
+ /** Formatted value (if not provided, value.toLocaleString() is used) */
227
+ formatted?: string;
228
+ /** Label/title - supports i18n objects */
229
+ label?: I18nText | string;
230
+ /** Subtitle text - supports i18n objects */
231
+ subtitle?: I18nText | string;
232
+ /** Footer text - supports i18n objects */
233
+ footer?: I18nText | string;
234
+ /** Main icon */
235
+ icon?: IconComponent | ComponentReference;
236
+ /** Trend indicator */
237
+ trend?: ValueWidgetTrend;
238
+ /** Tailwind classes for each part */
239
+ classNames?: ValueWidgetClassNames;
240
+ }
241
+ /**
242
+ * Value widget configuration
243
+ *
244
+ * Flexible widget that fetches data via async function and supports
245
+ * full customization through Tailwind classes.
246
+ *
247
+ * @example
248
+ * ```tsx
249
+ * {
250
+ * type: "value",
251
+ * loader: async (client) => {
252
+ * const count = await client.collections.appointments.count({
253
+ * where: { status: "pending" }
254
+ * });
255
+ * return {
256
+ * value: count,
257
+ * label: "Pending",
258
+ * icon: Clock,
259
+ * classNames: {
260
+ * root: count > 10 ? "border-red-300 bg-red-50" : "",
261
+ * value: count > 10 ? "text-red-600" : "",
262
+ * },
263
+ * };
264
+ * },
265
+ * }
266
+ * ```
267
+ */
268
+ interface ValueWidgetConfig extends BaseWidgetConfig {
269
+ type: "value";
270
+ /**
271
+ * Async function to fetch and transform data.
272
+ * Receives the Questpie client and returns widget display data.
273
+ * Optional when hasLoader is true (server provides the data).
274
+ */
275
+ loader?: (client: any) => Promise<ValueWidgetResult>;
276
+ /**
277
+ * Refresh interval in milliseconds
278
+ * If set, the widget will refetch data at this interval
279
+ */
280
+ refreshInterval?: number;
281
+ }
282
+ /**
283
+ * Table column configuration with overrides
284
+ */
285
+ interface TableWidgetColumnConfig {
286
+ /** Column key (field name) */
287
+ key: string;
288
+ /** Override column header label (defaults to field label) */
289
+ label?: I18nText;
290
+ /** Column width */
291
+ width?: number | string;
292
+ /** Text alignment */
293
+ align?: "left" | "center" | "right";
294
+ /** Custom cell renderer (overrides field's cell) */
295
+ render?: (value: any, row: any) => React.ReactNode;
296
+ }
297
+ /**
298
+ * Table column - can be a simple field key string or full config object
299
+ *
300
+ * @example
301
+ * ```ts
302
+ * // Simple - just field keys, uses field definitions automatically
303
+ * columns: ["name", "status", "createdAt"]
304
+ *
305
+ * // With overrides
306
+ * columns: [
307
+ * "name",
308
+ * { key: "price", align: "right" },
309
+ * { key: "rating", render: (v) => `${v}/5` },
310
+ * ]
311
+ * ```
312
+ */
313
+ type TableWidgetColumn = string | TableWidgetColumnConfig;
314
+ /**
315
+ * Table widget configuration - displays a mini table
316
+ *
317
+ * Columns can be simple field keys (strings) or objects with overrides.
318
+ * Field definitions (label, cell renderer) are automatically pulled
319
+ * from the collection's admin config.
320
+ *
321
+ * @example
322
+ * ```ts
323
+ * {
324
+ * type: "table",
325
+ * id: "recent-orders",
326
+ * title: "Recent Orders",
327
+ * collection: "orders",
328
+ * // Simple - field keys only, auto-uses field labels and cells
329
+ * columns: ["orderNumber", "customer", "total", "status"],
330
+ * limit: 5,
331
+ * }
332
+ *
333
+ * // With overrides
334
+ * {
335
+ * type: "table",
336
+ * collection: "reviews",
337
+ * columns: [
338
+ * "customer",
339
+ * { key: "rating", render: (v) => `${v}/5` },
340
+ * "comment",
341
+ * ],
342
+ * }
343
+ * ```
344
+ */
345
+ interface TableWidgetConfig extends BaseWidgetConfig {
346
+ type: "table";
347
+ /** Collection to fetch from */
348
+ collection: string;
349
+ /** Columns to display - field keys or config objects */
350
+ columns: TableWidgetColumn[];
351
+ /** Number of rows to show */
352
+ limit?: number;
353
+ /** Sort field */
354
+ sortBy?: string;
355
+ /** Sort direction */
356
+ sortOrder?: "asc" | "desc";
357
+ /** Filter */
358
+ filter?: Record<string, any>;
359
+ /** Show row actions */
360
+ showActions?: boolean;
361
+ /** Link rows to detail */
362
+ linkToDetail?: boolean;
363
+ /** Empty state message */
364
+ emptyMessage?: I18nText;
365
+ }
366
+ /**
367
+ * Timeline item configuration
368
+ */
369
+ interface TimelineItem {
370
+ /** Item ID */
371
+ id: string;
372
+ /** Title */
373
+ title: string;
374
+ /** Description */
375
+ description?: string;
376
+ /** Timestamp */
377
+ timestamp: Date | string;
378
+ /** Icon */
379
+ icon?: IconComponent | ComponentReference;
380
+ /** Status/color variant */
381
+ variant?: "default" | "success" | "warning" | "error" | "info";
382
+ /** Link URL */
383
+ href?: string;
384
+ /** Additional metadata */
385
+ meta?: Record<string, any>;
386
+ }
387
+ /**
388
+ * Timeline widget configuration - displays activity/event timeline
389
+ *
390
+ * @example
391
+ * ```ts
392
+ * {
393
+ * type: "timeline",
394
+ * id: "recent-activity",
395
+ * title: "Recent Activity",
396
+ * loader: async (client) => {
397
+ * const activities = await client.collections.activities.findMany({
398
+ * limit: 10,
399
+ * orderBy: { createdAt: "desc" }
400
+ * });
401
+ * return activities.map(a => ({
402
+ * id: a.id,
403
+ * title: a.action,
404
+ * description: a.description,
405
+ * timestamp: a.createdAt,
406
+ * variant: a.type === "error" ? "error" : "default"
407
+ * }));
408
+ * }
409
+ * }
410
+ * ```
411
+ */
412
+ interface TimelineWidgetConfig extends BaseWidgetConfig {
413
+ type: "timeline";
414
+ /** Async function to fetch timeline items. Optional when hasLoader is true. */
415
+ loader?: (client: any) => Promise<TimelineItem[]>;
416
+ /** Max items to show */
417
+ maxItems?: number;
418
+ /** Show timestamps */
419
+ showTimestamps?: boolean;
420
+ /** Timestamp format */
421
+ timestampFormat?: "relative" | "absolute" | "datetime";
422
+ /** Empty state message */
423
+ emptyMessage?: I18nText;
424
+ }
425
+ /**
426
+ * Progress widget configuration - displays progress towards a goal
427
+ *
428
+ * @example
429
+ * ```ts
430
+ * {
431
+ * type: "progress",
432
+ * id: "monthly-sales",
433
+ * title: "Monthly Sales Goal",
434
+ * loader: async (client) => ({
435
+ * current: 75000,
436
+ * target: 100000,
437
+ * label: "$75,000 / $100,000"
438
+ * })
439
+ * }
440
+ * ```
441
+ */
442
+ interface ProgressWidgetConfig extends BaseWidgetConfig {
443
+ type: "progress";
444
+ /** Async function to fetch progress data. Optional when hasLoader is true. */
445
+ loader?: (client: any) => Promise<{
446
+ current: number;
447
+ target: number;
448
+ label?: string;
449
+ subtitle?: string;
450
+ }>;
451
+ /** Progress bar color */
452
+ color?: string;
453
+ /** Show percentage */
454
+ showPercentage?: boolean;
455
+ }
456
+ /**
457
+ * Widget configuration - discriminated union of all widget types
458
+ */
459
+ type WidgetConfig = StatsWidgetConfig | ChartWidgetConfig | RecentItemsWidgetConfig | QuickActionsWidgetConfig | CustomWidgetConfig | ValueWidgetConfig | TableWidgetConfig | TimelineWidgetConfig | ProgressWidgetConfig;
460
+ /**
461
+ * Generic widget configuration (for unknown/custom types registered at runtime)
462
+ * This is kept separate from WidgetConfig to allow proper type narrowing
463
+ */
464
+ interface GenericWidgetConfig extends BaseWidgetConfig {
465
+ type: string;
466
+ component?: MaybeLazyComponent<WidgetComponentProps>;
467
+ actions?: WidgetAction[];
468
+ [key: string]: any;
469
+ }
470
+ /**
471
+ * Any widget config (union of known configs and generic)
472
+ */
473
+ type AnyWidgetConfig = WidgetConfig | GenericWidgetConfig;
474
+ /**
475
+ * Props passed to widget components
476
+ */
477
+ interface WidgetComponentProps<TData = any> {
478
+ /**
479
+ * Widget configuration
480
+ */
481
+ config: WidgetConfig | Record<string, any>;
482
+ /**
483
+ * Widget data (from data source)
484
+ */
485
+ data?: TData;
486
+ /**
487
+ * Loading state
488
+ */
489
+ isLoading?: boolean;
490
+ /**
491
+ * Error state
492
+ */
493
+ error?: Error | null;
494
+ /**
495
+ * Refresh data
496
+ */
497
+ onRefresh?: () => void;
498
+ /**
499
+ * Column span for grid layout
500
+ */
501
+ span?: number;
502
+ }
503
+ /**
504
+ * Widget data source configuration
505
+ */
506
+ interface WidgetDataSource {
507
+ /**
508
+ * Data source type
509
+ */
510
+ type: "collection" | "global" | "function" | "custom";
511
+ /**
512
+ * Collection name (for collection type)
513
+ */
514
+ collection?: string;
515
+ /**
516
+ * Global name (for global type)
517
+ */
518
+ global?: string;
519
+ /**
520
+ * Function name (for function type)
521
+ */
522
+ function?: string;
523
+ /**
524
+ * Query options
525
+ */
526
+ query?: Record<string, any>;
527
+ /**
528
+ * Custom data fetcher
529
+ */
530
+ fetcher?: () => Promise<any>;
531
+ }
532
+ /**
533
+ * Widget action configuration
534
+ */
535
+ interface WidgetAction {
536
+ /**
537
+ * Action ID
538
+ */
539
+ id: string;
540
+ /**
541
+ * Action label
542
+ */
543
+ label: string;
544
+ /**
545
+ * Action icon
546
+ */
547
+ icon?: IconComponent | ComponentReference | string;
548
+ /**
549
+ * Action handler
550
+ */
551
+ onClick?: () => void;
552
+ /**
553
+ * Link target
554
+ */
555
+ href?: string;
556
+ /**
557
+ * Variant
558
+ */
559
+ variant?: "default" | "primary" | "secondary" | "destructive";
560
+ }
561
+ //#endregion
562
+ export { AnyWidgetConfig, BaseWidgetConfig, ChartWidgetConfig, CustomWidgetConfig, ProgressWidgetConfig, QuickActionsWidgetConfig, RecentItemsWidgetConfig, StatsWidgetConfig, TableWidgetConfig, TimelineWidgetConfig, ValueWidgetConfig, WidgetAction, WidgetCardVariant, WidgetComponentProps, WidgetConfig };