@questpie/admin 3.0.3 → 3.0.5

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 (253) hide show
  1. package/README.md +34 -5
  2. package/dist/client/blocks/block-renderer.d.mts +2 -2
  3. package/dist/client/blocks/block-renderer.mjs +4 -1
  4. package/dist/client/builder/types/action-types.d.mts +31 -3
  5. package/dist/client/builder/types/collection-types.d.mts +140 -0
  6. package/dist/client/builder/types/ui-config.d.mts +16 -2
  7. package/dist/client/builder/types/views.d.mts +57 -0
  8. package/dist/client/builder/types/widget-types.d.mts +5 -0
  9. package/dist/client/components/actions/action-button.mjs +137 -199
  10. package/dist/client/components/actions/action-dialog.mjs +198 -156
  11. package/dist/client/components/actions/confirmation-dialog.mjs +2 -2
  12. package/dist/client/components/actions/header-actions.mjs +52 -53
  13. package/dist/client/components/admin-link.d.mts +2 -2
  14. package/dist/client/components/auth/auth-loading.mjs +41 -18
  15. package/dist/client/components/blocks/block-editor-layout.mjs +2 -2
  16. package/dist/client/components/blocks/block-fields-renderer.mjs +64 -28
  17. package/dist/client/components/blocks/block-insert-button.mjs +4 -4
  18. package/dist/client/components/blocks/block-item.mjs +2 -2
  19. package/dist/client/components/blocks/block-library-sidebar.mjs +91 -63
  20. package/dist/client/components/component-renderer.mjs +1 -1
  21. package/dist/client/components/fields/array-field.mjs +14 -14
  22. package/dist/client/components/fields/asset-preview-field.mjs +1 -1
  23. package/dist/client/components/fields/blocks-field/blocks-field.mjs +84 -104
  24. package/dist/client/components/fields/json-field.mjs +2 -2
  25. package/dist/client/components/fields/object-array-field.mjs +22 -22
  26. package/dist/client/components/fields/object-field.mjs +5 -5
  27. package/dist/client/components/fields/relation/displays/cards-display.mjs +16 -9
  28. package/dist/client/components/fields/relation/displays/chips-display.mjs +15 -12
  29. package/dist/client/components/fields/relation/displays/grid-display.mjs +15 -11
  30. package/dist/client/components/fields/relation/displays/list-display.mjs +33 -20
  31. package/dist/client/components/fields/relation/displays/table-display.mjs +62 -93
  32. package/dist/client/components/fields/relation/relation-items-display.mjs +1 -1
  33. package/dist/client/components/fields/relation-picker.mjs +7 -6
  34. package/dist/client/components/fields/relation-select.mjs +71 -47
  35. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +392 -82
  36. package/dist/client/components/fields/rich-text-editor/extensions.mjs +54 -23
  37. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +24 -50
  38. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +66 -0
  39. package/dist/client/components/fields/rich-text-editor/index.d.mts +38 -0
  40. package/dist/client/components/fields/rich-text-editor/index.mjs +637 -376
  41. package/dist/client/components/fields/rich-text-editor/link-utils.mjs +26 -0
  42. package/dist/client/components/fields/rich-text-editor/presets.d.mts +10 -0
  43. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +27 -6
  44. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +464 -346
  45. package/dist/client/components/fields/rich-text-editor/types.d.mts +77 -0
  46. package/dist/client/components/fields/upload-field.mjs +45 -49
  47. package/dist/client/components/filter-builder/columns-tab.mjs +69 -62
  48. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +473 -308
  49. package/dist/client/components/filter-builder/filters-tab.mjs +109 -82
  50. package/dist/client/components/filter-builder/saved-views-tab.mjs +300 -198
  51. package/dist/client/components/history-sidebar.mjs +850 -340
  52. package/dist/client/components/layout/field-layout-renderer.mjs +6 -5
  53. package/dist/client/components/locale-switcher.mjs +8 -8
  54. package/dist/client/components/media/media-grid.mjs +106 -86
  55. package/dist/client/components/media/media-picker-dialog.mjs +242 -230
  56. package/dist/client/components/preview/live-preview-mode.mjs +1 -1
  57. package/dist/client/components/primitives/asset-preview.mjs +37 -22
  58. package/dist/client/components/primitives/date-input.mjs +212 -249
  59. package/dist/client/components/primitives/dropzone.mjs +192 -159
  60. package/dist/client/components/primitives/field-select-control.mjs +93 -0
  61. package/dist/client/components/primitives/select-multi.mjs +406 -365
  62. package/dist/client/components/primitives/select-single.mjs +391 -323
  63. package/dist/client/components/primitives/time-input.mjs +2 -2
  64. package/dist/client/components/sheets/resource-sheet.mjs +2 -0
  65. package/dist/client/components/ui/accordion.mjs +4 -4
  66. package/dist/client/components/ui/alert.mjs +3 -3
  67. package/dist/client/components/ui/badge.mjs +4 -4
  68. package/dist/client/components/ui/button.mjs +47 -37
  69. package/dist/client/components/ui/card.mjs +2 -2
  70. package/dist/client/components/ui/checkbox.mjs +1 -1
  71. package/dist/client/components/ui/command.mjs +5 -5
  72. package/dist/client/components/ui/dialog.mjs +3 -3
  73. package/dist/client/components/ui/drawer.mjs +1 -1
  74. package/dist/client/components/ui/dropdown-menu.mjs +157 -15
  75. package/dist/client/components/ui/empty-state.mjs +88 -59
  76. package/dist/client/components/ui/field.mjs +2 -2
  77. package/dist/client/components/ui/input-group.mjs +3 -3
  78. package/dist/client/components/ui/input.mjs +1 -1
  79. package/dist/client/components/ui/kbd.mjs +1 -1
  80. package/dist/client/components/ui/label.mjs +1 -1
  81. package/dist/client/components/ui/popover.mjs +19 -11
  82. package/dist/client/components/ui/scroll-fade.mjs +170 -0
  83. package/dist/client/components/ui/search-input.mjs +1 -1
  84. package/dist/client/components/ui/select.mjs +129 -27
  85. package/dist/client/components/ui/sheet.mjs +54 -34
  86. package/dist/client/components/ui/sidebar.mjs +15 -14
  87. package/dist/client/components/ui/skeleton.mjs +28 -12
  88. package/dist/client/components/ui/switch.mjs +2 -2
  89. package/dist/client/components/ui/table.mjs +82 -74
  90. package/dist/client/components/ui/tabs.mjs +26 -31
  91. package/dist/client/components/ui/textarea.mjs +1 -1
  92. package/dist/client/components/ui/tooltip.mjs +1 -1
  93. package/dist/client/components/widgets/chart-widget.mjs +154 -100
  94. package/dist/client/components/widgets/progress-widget.mjs +63 -36
  95. package/dist/client/components/widgets/quick-actions-widget.mjs +207 -115
  96. package/dist/client/components/widgets/recent-items-widget.mjs +147 -103
  97. package/dist/client/components/widgets/stats-widget.mjs +91 -72
  98. package/dist/client/components/widgets/table-widget.mjs +161 -247
  99. package/dist/client/components/widgets/timeline-widget.mjs +119 -78
  100. package/dist/client/components/widgets/value-widget.mjs +286 -157
  101. package/dist/client/components/widgets/widget-empty-state.mjs +88 -0
  102. package/dist/client/components/widgets/widget-skeletons.mjs +53 -20
  103. package/dist/client/contexts/focus-context.d.mts +2 -2
  104. package/dist/client/hooks/use-action.mjs +63 -55
  105. package/dist/client/hooks/use-audit-history.mjs +1 -65
  106. package/dist/client/hooks/use-collection-validation.mjs +36 -23
  107. package/dist/client/hooks/use-collection.mjs +96 -1
  108. package/dist/client/hooks/use-saved-views.mjs +70 -49
  109. package/dist/client/hooks/use-server-actions.mjs +70 -46
  110. package/dist/client/hooks/use-server-validation.mjs +156 -41
  111. package/dist/client/hooks/use-server-widget-data.mjs +1 -1
  112. package/dist/client/hooks/use-setup-status.d.mts +3 -3
  113. package/dist/client/hooks/use-setup-status.mjs +2 -2
  114. package/dist/client/hooks/use-transition-stage.mjs +2 -10
  115. package/dist/client/hooks/use-validation-error-map.mjs +31 -13
  116. package/dist/client/hooks/use-view-state.mjs +238 -174
  117. package/dist/client/i18n/date-locale.mjs +33 -0
  118. package/dist/client/i18n/hooks.mjs +17 -1
  119. package/dist/client/lib/utils.mjs +3 -2
  120. package/dist/client/preview/block-scope-context.d.mts +2 -2
  121. package/dist/client/preview/preview-banner.d.mts +2 -2
  122. package/dist/client/preview/preview-banner.mjs +75 -46
  123. package/dist/client/preview/preview-field.d.mts +4 -4
  124. package/dist/client/preview/preview-field.mjs +2 -2
  125. package/dist/client/runtime/provider.mjs +8 -1
  126. package/dist/client/runtime/translations-provider.mjs +1 -1
  127. package/dist/client/scope/picker.d.mts +2 -2
  128. package/dist/client/scope/provider.d.mts +2 -2
  129. package/dist/client/styles/base.css +1022 -0
  130. package/dist/client/styles/index.css +3 -589
  131. package/dist/client/utils/auto-expand-fields.mjs +4 -2
  132. package/dist/client/utils/keyboard-shortcuts.mjs +26 -0
  133. package/dist/client/utils/use-lazy-component.mjs +80 -0
  134. package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
  135. package/dist/client/views/auth/auth-layout.d.mts +17 -10
  136. package/dist/client/views/auth/auth-layout.mjs +291 -80
  137. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  138. package/dist/client/views/auth/forgot-password-form.mjs +2 -2
  139. package/dist/client/views/auth/login-form.d.mts +2 -2
  140. package/dist/client/views/auth/login-form.mjs +1 -1
  141. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  142. package/dist/client/views/auth/reset-password-form.mjs +2 -2
  143. package/dist/client/views/auth/setup-form.d.mts +2 -2
  144. package/dist/client/views/collection/auto-form-fields.mjs +11 -9
  145. package/dist/client/views/collection/bulk-action-toolbar.mjs +173 -138
  146. package/dist/client/views/collection/cells/complex-cells.mjs +22 -22
  147. package/dist/client/views/collection/cells/primitive-cells.mjs +1 -1
  148. package/dist/client/views/collection/cells/relation-cells.mjs +147 -129
  149. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +224 -278
  150. package/dist/client/views/collection/cells/shared/relation-chip.mjs +64 -36
  151. package/dist/client/views/collection/cells/upload-cells.mjs +199 -9
  152. package/dist/client/views/collection/columns/build-columns.mjs +29 -9
  153. package/dist/client/views/collection/columns/column-defaults.mjs +2 -2
  154. package/dist/client/views/collection/field-renderer.mjs +50 -89
  155. package/dist/client/views/collection/form-view.mjs +237 -227
  156. package/dist/client/views/collection/table-view.mjs +1167 -234
  157. package/dist/client/views/collection/view-skeletons.mjs +222 -79
  158. package/dist/client/views/common/global-search.mjs +29 -18
  159. package/dist/client/views/dashboard/dashboard-grid.mjs +678 -501
  160. package/dist/client/views/dashboard/dashboard-widget.mjs +6 -3
  161. package/dist/client/views/dashboard/widget-card.mjs +23 -14
  162. package/dist/client/views/globals/global-form-view.mjs +634 -589
  163. package/dist/client/views/layout/admin-layout-provider.mjs +67 -70
  164. package/dist/client/views/layout/admin-layout.d.mts +3 -6
  165. package/dist/client/views/layout/admin-layout.mjs +152 -155
  166. package/dist/client/views/layout/admin-router.mjs +936 -616
  167. package/dist/client/views/layout/admin-sidebar.d.mts +38 -1
  168. package/dist/client/views/layout/admin-sidebar.mjs +762 -592
  169. package/dist/client/views/layout/admin-theme.d.mts +10 -0
  170. package/dist/client/views/layout/admin-theme.mjs +84 -0
  171. package/dist/client/views/layout/admin-view-layout.mjs +161 -0
  172. package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
  173. package/dist/client/views/pages/accept-invite-page.mjs +49 -26
  174. package/dist/client/views/pages/dashboard-page.d.mts +2 -2
  175. package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
  176. package/dist/client/views/pages/forgot-password-page.mjs +2 -19
  177. package/dist/client/views/pages/invite-page.d.mts +2 -2
  178. package/dist/client/views/pages/invite-page.mjs +2 -19
  179. package/dist/client/views/pages/login-page.d.mts +3 -3
  180. package/dist/client/views/pages/login-page.mjs +4 -21
  181. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  182. package/dist/client/views/pages/reset-password-page.mjs +3 -20
  183. package/dist/client/views/pages/setup-page.d.mts +2 -2
  184. package/dist/client/views/pages/setup-page.mjs +70 -71
  185. package/dist/client.d.mts +6 -2
  186. package/dist/client.mjs +2 -1
  187. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  188. package/dist/index.d.mts +6 -2
  189. package/dist/index.mjs +2 -1
  190. package/dist/server/augmentation/dashboard.d.mts +67 -3
  191. package/dist/server/augmentation/form-layout.d.mts +21 -0
  192. package/dist/server/augmentation/index.d.mts +1 -1
  193. package/dist/server/codegen/admin-client-template.mjs +4 -0
  194. package/dist/server/fields/blocks.d.mts +1 -1
  195. package/dist/server/fields/blocks.mjs +12 -0
  196. package/dist/server/fields/rich-text.d.mts +1 -1
  197. package/dist/server/fields/rich-text.mjs +8 -0
  198. package/dist/server/i18n/index.mjs +29 -7
  199. package/dist/server/i18n/messages/cs.mjs +414 -1
  200. package/dist/server/i18n/messages/de.mjs +412 -1
  201. package/dist/server/i18n/messages/en.mjs +166 -1
  202. package/dist/server/i18n/messages/es.mjs +412 -1
  203. package/dist/server/i18n/messages/fr.mjs +412 -1
  204. package/dist/server/i18n/messages/pl.mjs +416 -1
  205. package/dist/server/i18n/messages/pt.mjs +409 -1
  206. package/dist/server/i18n/messages/sk.mjs +216 -2
  207. package/dist/server/modules/admin/block/introspection.mjs +4 -1
  208. package/dist/server/modules/admin/block/prefetch.mjs +12 -2
  209. package/dist/server/modules/admin/collections/account.d.mts +2 -2
  210. package/dist/server/modules/admin/collections/admin-locks.d.mts +2 -2
  211. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  212. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  213. package/dist/server/modules/admin/collections/apikey.d.mts +42 -42
  214. package/dist/server/modules/admin/collections/assets.d.mts +20 -20
  215. package/dist/server/modules/admin/collections/assets.mjs +0 -1
  216. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  217. package/dist/server/modules/admin/collections/user.d.mts +40 -28
  218. package/dist/server/modules/admin/collections/user.mjs +40 -9
  219. package/dist/server/modules/admin/collections/verification.d.mts +36 -36
  220. package/dist/server/modules/admin/dto/admin-config.dto.mjs +2 -0
  221. package/dist/server/modules/admin/factories.mjs +7 -18
  222. package/dist/server/modules/admin/index.d.mts +1 -1
  223. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  224. package/dist/server/modules/admin/routes/admin-config.mjs +34 -16
  225. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  226. package/dist/server/modules/admin/routes/execute-action.mjs +67 -28
  227. package/dist/server/modules/admin/routes/i18n-helpers.mjs +34 -0
  228. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  229. package/dist/server/modules/admin/routes/preview.mjs +25 -17
  230. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  231. package/dist/server/modules/admin/routes/route-helpers.mjs +1 -1
  232. package/dist/server/modules/admin/routes/setup.d.mts +10 -10
  233. package/dist/server/modules/admin/routes/setup.mjs +16 -13
  234. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  235. package/dist/server/modules/admin/routes/translations.mjs +5 -1
  236. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +1 -1
  237. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +2 -2
  238. package/dist/server/modules/audit/.generated/module.d.mts +1 -1
  239. package/dist/server/modules/audit/.generated/module.mjs +1 -1
  240. package/dist/server/modules/audit/collections/audit-log.d.mts +2 -2
  241. package/dist/server/modules/audit/collections/audit-log.mjs +1 -1
  242. package/dist/server/modules/audit/config/app.mjs +99 -42
  243. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +1 -1
  244. package/dist/server/plugin.mjs +4 -2
  245. package/dist/server/proxy-factories.d.mts +4 -3
  246. package/dist/server/proxy-factories.mjs +34 -8
  247. package/dist/shared/types/saved-views.types.d.mts +2 -0
  248. package/package.json +6 -4
  249. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +0 -85
  250. package/dist/client/components/ui/spinner.mjs +0 -52
  251. package/dist/client/components/ui/toolbar.mjs +0 -136
  252. package/dist/client/contexts/breadcrumb-context.mjs +0 -60
  253. package/dist/client/views/layout/admin-topbar.mjs +0 -236
@@ -1,5 +1,6 @@
1
+ import { useTranslation } from "../../i18n/hooks.mjs";
1
2
  import { selectBasePath, selectBrandName, selectClient, selectNavigate, useAdminStore } from "../../runtime/provider.mjs";
2
- import { AuthLayout } from "../auth/auth-layout.mjs";
3
+ import { AuthDefaultLogo, AuthLayout } from "../auth/auth-layout.mjs";
3
4
  import { SetupForm } from "../auth/setup-form.mjs";
4
5
  import { c } from "react/compiler-runtime";
5
6
  import * as React from "react";
@@ -28,19 +29,18 @@ import { jsx, jsxs } from "react/jsx-runtime";
28
29
  * ```
29
30
  */
30
31
  function SetupPage(t0) {
31
- const $ = c(24);
32
- const { title: t1, description: t2, logo, redirectTo, loginPath, showLoginLink: t3 } = t0;
33
- const title = t1 === void 0 ? "Welcome" : t1;
34
- const description = t2 === void 0 ? "Create your admin account to get started" : t2;
35
- const showLoginLink = t3 === void 0 ? true : t3;
32
+ const $ = c(32);
33
+ const { title, description, logo, redirectTo, loginPath, showLoginLink: t1 } = t0;
34
+ const showLoginLink = t1 === void 0 ? true : t1;
35
+ const { t } = useTranslation();
36
36
  const client = useAdminStore(selectClient);
37
37
  const navigate = useAdminStore(selectNavigate);
38
38
  const basePath = useAdminStore(selectBasePath);
39
39
  const brandName = useAdminStore(selectBrandName);
40
40
  const [error, setError] = React.useState(null);
41
- let t4;
42
- if ($[0] !== basePath || $[1] !== client || $[2] !== navigate || $[3] !== redirectTo) {
43
- t4 = async (values) => {
41
+ let t2;
42
+ if ($[0] !== basePath || $[1] !== client || $[2] !== navigate || $[3] !== redirectTo || $[4] !== t) {
43
+ t2 = async (values) => {
44
44
  setError(null);
45
45
  const successRedirect = redirectTo !== void 0 ? redirectTo : `${basePath}/login`;
46
46
  try {
@@ -51,106 +51,105 @@ function SetupPage(t0) {
51
51
  });
52
52
  if (!result.success) {
53
53
  if (result.error) setError(result.error);
54
- else setError("Failed to create admin account");
54
+ else setError(t("error.failedToCreateAdminAccount"));
55
55
  return;
56
56
  }
57
57
  navigate(successRedirect);
58
- } catch (t5$1) {
59
- const err = t5$1;
58
+ } catch (t3$1) {
59
+ const err = t3$1;
60
60
  if (err instanceof Error) setError(err.message);
61
- else setError("An error occurred");
61
+ else setError(t("error.anErrorOccurred"));
62
62
  }
63
63
  };
64
64
  $[0] = basePath;
65
65
  $[1] = client;
66
66
  $[2] = navigate;
67
67
  $[3] = redirectTo;
68
- $[4] = t4;
69
- } else t4 = $[4];
70
- const handleSubmit = t4;
71
- let t5;
72
- if ($[5] !== basePath || $[6] !== loginPath || $[7] !== navigate) {
73
- t5 = () => {
68
+ $[4] = t;
69
+ $[5] = t2;
70
+ } else t2 = $[5];
71
+ const handleSubmit = t2;
72
+ let t3;
73
+ if ($[6] !== basePath || $[7] !== loginPath || $[8] !== navigate) {
74
+ t3 = () => {
74
75
  navigate(loginPath ?? `${basePath}/login`);
75
76
  };
76
- $[5] = basePath;
77
- $[6] = loginPath;
78
- $[7] = navigate;
79
- $[8] = t5;
80
- } else t5 = $[8];
81
- const handleLoginClick = t5;
77
+ $[6] = basePath;
78
+ $[7] = loginPath;
79
+ $[8] = navigate;
80
+ $[9] = t3;
81
+ } else t3 = $[9];
82
+ const handleLoginClick = t3;
83
+ let t4;
84
+ if ($[10] !== t || $[11] !== title) {
85
+ t4 = title ?? t("auth.createFirstAdmin");
86
+ $[10] = t;
87
+ $[11] = title;
88
+ $[12] = t4;
89
+ } else t4 = $[12];
90
+ let t5;
91
+ if ($[13] !== description || $[14] !== t) {
92
+ t5 = description ?? t("auth.createAccountDescription");
93
+ $[13] = description;
94
+ $[14] = t;
95
+ $[15] = t5;
96
+ } else t5 = $[15];
82
97
  let t6;
83
- if ($[9] !== brandName || $[10] !== logo) {
84
- t6 = logo ?? /* @__PURE__ */ jsx(DefaultLogo, { brandName });
85
- $[9] = brandName;
86
- $[10] = logo;
87
- $[11] = t6;
88
- } else t6 = $[11];
98
+ if ($[16] !== brandName || $[17] !== logo) {
99
+ t6 = logo ?? /* @__PURE__ */ jsx(AuthDefaultLogo, { brandName });
100
+ $[16] = brandName;
101
+ $[17] = logo;
102
+ $[18] = t6;
103
+ } else t6 = $[18];
89
104
  let t7;
90
- if ($[12] !== handleLoginClick || $[13] !== showLoginLink) {
105
+ if ($[19] !== handleLoginClick || $[20] !== showLoginLink || $[21] !== t) {
91
106
  t7 = showLoginLink && /* @__PURE__ */ jsxs("p", {
92
107
  className: "text-muted-foreground text-center text-xs",
93
108
  children: [
94
- "Already have an account?",
109
+ t("auth.alreadyHaveAccount"),
95
110
  " ",
96
111
  /* @__PURE__ */ jsx("button", {
97
112
  type: "button",
98
113
  onClick: handleLoginClick,
99
- className: "text-primary hover:underline",
100
- children: "Sign in"
114
+ className: "text-foreground underline-offset-4 hover:underline",
115
+ children: t("auth.signIn")
101
116
  })
102
117
  ]
103
118
  });
104
- $[12] = handleLoginClick;
105
- $[13] = showLoginLink;
106
- $[14] = t7;
107
- } else t7 = $[14];
119
+ $[19] = handleLoginClick;
120
+ $[20] = showLoginLink;
121
+ $[21] = t;
122
+ $[22] = t7;
123
+ } else t7 = $[22];
108
124
  let t8;
109
- if ($[15] !== error || $[16] !== handleSubmit) {
125
+ if ($[23] !== error || $[24] !== handleSubmit) {
110
126
  t8 = /* @__PURE__ */ jsx(SetupForm, {
111
127
  onSubmit: handleSubmit,
112
128
  error
113
129
  });
114
- $[15] = error;
115
- $[16] = handleSubmit;
116
- $[17] = t8;
117
- } else t8 = $[17];
130
+ $[23] = error;
131
+ $[24] = handleSubmit;
132
+ $[25] = t8;
133
+ } else t8 = $[25];
118
134
  let t9;
119
- if ($[18] !== description || $[19] !== t6 || $[20] !== t7 || $[21] !== t8 || $[22] !== title) {
135
+ if ($[26] !== t4 || $[27] !== t5 || $[28] !== t6 || $[29] !== t7 || $[30] !== t8) {
120
136
  t9 = /* @__PURE__ */ jsx(AuthLayout, {
121
- title,
122
- description,
137
+ title: t4,
138
+ description: t5,
123
139
  logo: t6,
124
140
  className: "qa-setup-page",
125
141
  footer: t7,
126
142
  children: t8
127
143
  });
128
- $[18] = description;
129
- $[19] = t6;
130
- $[20] = t7;
131
- $[21] = t8;
132
- $[22] = title;
133
- $[23] = t9;
134
- } else t9 = $[23];
144
+ $[26] = t4;
145
+ $[27] = t5;
146
+ $[28] = t6;
147
+ $[29] = t7;
148
+ $[30] = t8;
149
+ $[31] = t9;
150
+ } else t9 = $[31];
135
151
  return t9;
136
152
  }
137
- function DefaultLogo(t0) {
138
- const $ = c(2);
139
- const { brandName } = t0;
140
- let t1;
141
- if ($[0] !== brandName) {
142
- t1 = /* @__PURE__ */ jsx("div", {
143
- className: "text-center",
144
- children: /* @__PURE__ */ jsx("h1", {
145
- className: "text-xl font-bold",
146
- children: brandName
147
- })
148
- });
149
- $[0] = brandName;
150
- $[1] = t1;
151
- } else t1 = $[1];
152
- return t1;
153
- }
154
153
 
155
154
  //#endregion
156
155
  export { SetupPage };
package/dist/client.d.mts CHANGED
@@ -11,6 +11,7 @@ import { createAdminAuthClient, useAuthClient } from "./client/hooks/use-auth.mj
11
11
  import { ComponentRegistry, FieldComponentProps, FormViewConfig } from "./client/builder/types/field-types.mjs";
12
12
  import { AdminProvider, AdminProviderProps, AdminState, AdminStore, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore } from "./client/runtime/provider.mjs";
13
13
  import { useShallow } from "./client/runtime/index.mjs";
14
+ import { AdminSidebarBrandProps, AdminSidebarNavItemProps } from "./client/views/layout/admin-sidebar.mjs";
14
15
  import { AdminLayout } from "./client/views/layout/admin-layout.mjs";
15
16
  import { AdminLayoutProvider } from "./client/views/layout/admin-layout-provider.mjs";
16
17
  import { AdminRouter, AdminRouterProps } from "./client/views/layout/admin-router.mjs";
@@ -19,6 +20,8 @@ import { BlockRenderer, BlockRendererProps } from "./client/blocks/block-rendere
19
20
  import "./client/blocks/index.mjs";
20
21
  import { RichTextRenderer, RichTextStyles, TipTapDoc, TipTapNode } from "./components/rich-text/rich-text-renderer.mjs";
21
22
  import "./components/rich-text/index.mjs";
23
+ import { RichTextEditorProps } from "./client/components/fields/rich-text-editor/types.mjs";
24
+ import { RichTextEditor } from "./client/components/fields/rich-text-editor/index.mjs";
22
25
  import { BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
23
26
  import { PreviewBanner, PreviewBannerProps } from "./client/preview/preview-banner.mjs";
24
27
  import { PreviewField, PreviewFieldProps, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
@@ -29,7 +32,7 @@ import { AuthGuard } from "./client/components/auth/auth-guard.mjs";
29
32
  import { AuthLoading } from "./client/components/auth/auth-loading.mjs";
30
33
  import { Badge, BadgeProps, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, IconifyIcon, IconifyIconProps, createIconRenderer, isComponentReference, resolveIconElement } from "./client/components/component-renderer.mjs";
31
34
  import { AcceptInviteForm } from "./client/views/auth/accept-invite-form.mjs";
32
- import { AuthLayout } from "./client/views/auth/auth-layout.mjs";
35
+ import { AuthLayout, AuthLayoutProps } from "./client/views/auth/auth-layout.mjs";
33
36
  import { ForgotPasswordForm } from "./client/views/auth/forgot-password-form.mjs";
34
37
  import { LoginForm } from "./client/views/auth/login-form.mjs";
35
38
  import { ResetPasswordForm } from "./client/views/auth/reset-password-form.mjs";
@@ -53,6 +56,7 @@ import { SetupStatus, useSetupStatus } from "./client/hooks/use-setup-status.mjs
53
56
  import { useSidebarSearchParam } from "./client/hooks/use-sidebar-search-param.mjs";
54
57
  import { AdminLink } from "./client/components/admin-link.mjs";
55
58
  import { FlagConfig, getCountryCode, getFlagConfig, getFlagUrl } from "./client/utils/locale-to-flag.mjs";
59
+ import { CollectionFormViewProps, CollectionListViewProps, GlobalFormViewProps } from "./client/builder/types/views.mjs";
56
60
  import { buildValidationSchema, buildZodFromIntrospection, createFormSchema } from "./client/builder/validation.mjs";
57
61
  import { FocusContextValue, FocusProvider, FocusProviderProps, FocusState, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
58
62
  import { ScopeContextValue, ScopeOption, ScopePickerProps, ScopeProviderProps } from "./client/scope/types.mjs";
@@ -96,4 +100,4 @@ type CollectionFieldKeys<TApp extends QuestpieApp, TCollectionName extends strin
96
100
  select: infer TSelect;
97
101
  } ? keyof TSelect : never : never : never;
98
102
  //#endregion
99
- export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, type AdminProviderProps, AdminRouter, type AdminRouterProps, type AdminState, type AdminStore, type AdminToPreviewMessage, AnyQuestpieClient, type AnyWidgetConfig, type AppAdmin, AuthGuard, AuthLayout, AuthLoading, Badge, type BadgeProps, type BaseFieldProps, type BaseWidgetAdminMeta, type BaseWidgetConfig, type BlockCategory, type BlockClickedMessage, type BlockContent, type BlockNode, BlockRenderer, type BlockRendererProps as BlockRendererComponentProps, type BlockRendererProps$1 as BlockRendererProps, type BlockScopeContextValue, BlockScopeProvider, type BlockScopeProviderProps, type ChartWidgetConfig, CollectionFieldKeys, CollectionItem, CollectionNames, type ComponentRegistry, ComponentRenderer, type ComponentRendererProps, type ComponentRendererRegistry, type CustomWidgetConfig, DashboardPage, EMPTY_BLOCK_CONTENT, type FieldClickedMessage, type FieldComponentProps, type FieldDefinition, type FieldInstance, type FlagConfig, type FocusContextValue, type FocusFieldMessage, FocusProvider, type FocusProviderProps, type FocusState, ForgotPasswordForm, ForgotPasswordPage, type FormViewConfig, type FormViewDefinition, GlobalNames, type I18nContext, type I18nText, type IconComponent, IconifyIcon, type IconifyIconProps, type InferAdminCMS, InvitePage, type ListViewDefinition, LoginForm, LoginPage, type MaybeLazyComponent, type OptionItem, PreviewBanner, type PreviewBannerProps, type PreviewConfig, PreviewField, type PreviewFieldProps, PreviewProvider, type PreviewReadyMessage, type PreviewRefreshMessage, type PreviewToAdminMessage, type ProgressWidgetConfig, type QuickActionsWidgetConfig, type ReactiveFieldResult, type ReactiveFieldState, type RecentItemsWidgetConfig, type RefreshCompleteMessage, ResetPasswordForm, ResetPasswordPage, RichTextRenderer, type RichTextStyles, type ScopeContextValue, type ScopeOption, ScopePicker, type ScopePickerProps, ScopeProvider, type ScopeProviderProps, type SelectBlockMessage, SetupForm, type SetupFormValues, SetupPage, type SetupPageProps, type SetupStatus, StandalonePreviewField, type StatsWidgetConfig, type TableWidgetConfig, type TimelineWidgetConfig, type TipTapDoc, type TipTapNode, type TypedHooks, type UseCollectionPreviewOptions, type UseCollectionPreviewResult, type UseFieldOptionsOptions, type UseFieldOptionsResult, type UseReactiveFieldsOptions, type UseReactiveFieldsResult, type ValueWidgetConfig, type ViewDefinition, type ViewKind, type WidgetComponentProps, type WidgetConfig, type WidgetDefinition, type WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
103
+ export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, type AdminProviderProps, AdminRouter, type AdminRouterProps, type AdminSidebarBrandProps, type AdminSidebarNavItemProps, type AdminState, type AdminStore, type AdminToPreviewMessage, AnyQuestpieClient, type AnyWidgetConfig, type AppAdmin, AuthGuard, AuthLayout, type AuthLayoutProps, AuthLoading, Badge, type BadgeProps, type BaseFieldProps, type BaseWidgetAdminMeta, type BaseWidgetConfig, type BlockCategory, type BlockClickedMessage, type BlockContent, type BlockNode, BlockRenderer, type BlockRendererProps as BlockRendererComponentProps, type BlockRendererProps$1 as BlockRendererProps, type BlockScopeContextValue, BlockScopeProvider, type BlockScopeProviderProps, type ChartWidgetConfig, CollectionFieldKeys, type CollectionFormViewProps, CollectionItem, type CollectionListViewProps, CollectionNames, type ComponentRegistry, ComponentRenderer, type ComponentRendererProps, type ComponentRendererRegistry, type CustomWidgetConfig, DashboardPage, EMPTY_BLOCK_CONTENT, type FieldClickedMessage, type FieldComponentProps, type FieldDefinition, type FieldInstance, type FlagConfig, type FocusContextValue, type FocusFieldMessage, FocusProvider, type FocusProviderProps, type FocusState, ForgotPasswordForm, ForgotPasswordPage, type FormViewConfig, type FormViewDefinition, type GlobalFormViewProps, GlobalNames, type I18nContext, type I18nText, type IconComponent, IconifyIcon, type IconifyIconProps, type InferAdminCMS, InvitePage, type ListViewDefinition, LoginForm, LoginPage, type MaybeLazyComponent, type OptionItem, PreviewBanner, type PreviewBannerProps, type PreviewConfig, PreviewField, type PreviewFieldProps, PreviewProvider, type PreviewReadyMessage, type PreviewRefreshMessage, type PreviewToAdminMessage, type ProgressWidgetConfig, type QuickActionsWidgetConfig, type ReactiveFieldResult, type ReactiveFieldState, type RecentItemsWidgetConfig, type RefreshCompleteMessage, ResetPasswordForm, ResetPasswordPage, RichTextEditor, type RichTextEditorProps, RichTextRenderer, type RichTextStyles, type ScopeContextValue, type ScopeOption, ScopePicker, type ScopePickerProps, ScopeProvider, type ScopeProviderProps, type SelectBlockMessage, SetupForm, type SetupFormValues, SetupPage, type SetupPageProps, type SetupStatus, StandalonePreviewField, type StatsWidgetConfig, type TableWidgetConfig, type TimelineWidgetConfig, type TipTapDoc, type TipTapNode, type TypedHooks, type UseCollectionPreviewOptions, type UseCollectionPreviewResult, type UseFieldOptionsOptions, type UseFieldOptionsResult, type UseReactiveFieldsOptions, type UseReactiveFieldsResult, type ValueWidgetConfig, type ViewDefinition, type ViewKind, type WidgetComponentProps, type WidgetConfig, type WidgetDefinition, type WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
package/dist/client.mjs CHANGED
@@ -28,6 +28,7 @@ import { AdminRouter } from "./client/views/layout/admin-router.mjs";
28
28
  import { BlockScopeProvider, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
29
29
  import { BlockRenderer } from "./client/blocks/block-renderer.mjs";
30
30
  import { RichTextRenderer } from "./components/rich-text/rich-text-renderer.mjs";
31
+ import { RichTextEditor } from "./client/components/fields/rich-text-editor/index.mjs";
31
32
  import { PreviewBanner } from "./client/preview/preview-banner.mjs";
32
33
  import { PreviewField, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
33
34
  import { useCollectionPreview } from "./client/preview/use-collection-preview.mjs";
@@ -50,4 +51,4 @@ import { useServerWidgetData } from "./client/hooks/use-server-widget-data.mjs";
50
51
  import { ScopeProvider, createScopedFetch, useScope, useScopeSafe, useScopedFetch } from "./client/scope/provider.mjs";
51
52
  import { ScopePicker } from "./client/scope/picker.mjs";
52
53
 
53
- export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminRouter, AuthGuard, AuthLayout, AuthLoading, Badge, BlockRenderer, BlockScopeProvider, ComponentRenderer, DashboardPage, EMPTY_BLOCK_CONTENT, FocusProvider, ForgotPasswordForm, ForgotPasswordPage, IconifyIcon, InvitePage, LoginForm, LoginPage, PreviewBanner, PreviewField, PreviewProvider, ResetPasswordForm, ResetPasswordPage, RichTextRenderer, ScopePicker, ScopeProvider, SetupForm, SetupPage, StandalonePreviewField, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
54
+ export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminRouter, AuthGuard, AuthLayout, AuthLoading, Badge, BlockRenderer, BlockScopeProvider, ComponentRenderer, DashboardPage, EMPTY_BLOCK_CONTENT, FocusProvider, ForgotPasswordForm, ForgotPasswordPage, IconifyIcon, InvitePage, LoginForm, LoginPage, PreviewBanner, PreviewField, PreviewProvider, ResetPasswordForm, ResetPasswordPage, RichTextEditor, RichTextRenderer, ScopePicker, ScopeProvider, SetupForm, SetupPage, StandalonePreviewField, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime18 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime20 from "react/jsx-runtime";
2
2
 
3
3
  //#region src/components/rich-text/rich-text-renderer.d.ts
4
4
  /**
@@ -98,6 +98,6 @@ declare function RichTextRenderer({
98
98
  content,
99
99
  styles: customStyles,
100
100
  className
101
- }: RichTextRendererProps): react_jsx_runtime18.JSX.Element | null;
101
+ }: RichTextRendererProps): react_jsx_runtime20.JSX.Element | null;
102
102
  //#endregion
103
103
  export { RichTextRenderer, RichTextStyles, TipTapDoc, TipTapNode };
package/dist/index.d.mts CHANGED
@@ -11,12 +11,15 @@ import { createAdminAuthClient, useAuthClient } from "./client/hooks/use-auth.mj
11
11
  import { ComponentRegistry, FieldComponentProps, FormViewConfig } from "./client/builder/types/field-types.mjs";
12
12
  import { AdminProvider, AdminProviderProps, AdminState, AdminStore, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore } from "./client/runtime/provider.mjs";
13
13
  import { useShallow } from "./client/runtime/index.mjs";
14
+ import { AdminSidebarBrandProps, AdminSidebarNavItemProps } from "./client/views/layout/admin-sidebar.mjs";
14
15
  import { AdminLayout } from "./client/views/layout/admin-layout.mjs";
15
16
  import { AdminLayoutProvider } from "./client/views/layout/admin-layout-provider.mjs";
16
17
  import { AdminRouter, AdminRouterProps } from "./client/views/layout/admin-router.mjs";
17
18
  import { BlockCategory, BlockContent, BlockNode, BlockRendererProps as BlockRendererProps$1, EMPTY_BLOCK_CONTENT, isBlockContent } from "./client/blocks/types.mjs";
18
19
  import { BlockRenderer, BlockRendererProps } from "./client/blocks/block-renderer.mjs";
19
20
  import { RichTextRenderer, RichTextStyles, TipTapDoc, TipTapNode } from "./components/rich-text/rich-text-renderer.mjs";
21
+ import { RichTextEditorProps } from "./client/components/fields/rich-text-editor/types.mjs";
22
+ import { RichTextEditor } from "./client/components/fields/rich-text-editor/index.mjs";
20
23
  import { BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
21
24
  import { PreviewBanner, PreviewBannerProps } from "./client/preview/preview-banner.mjs";
22
25
  import { PreviewField, PreviewFieldProps, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
@@ -26,7 +29,7 @@ import { AuthGuard } from "./client/components/auth/auth-guard.mjs";
26
29
  import { AuthLoading } from "./client/components/auth/auth-loading.mjs";
27
30
  import { Badge, BadgeProps, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, IconifyIcon, IconifyIconProps, createIconRenderer, isComponentReference, resolveIconElement } from "./client/components/component-renderer.mjs";
28
31
  import { AcceptInviteForm } from "./client/views/auth/accept-invite-form.mjs";
29
- import { AuthLayout } from "./client/views/auth/auth-layout.mjs";
32
+ import { AuthLayout, AuthLayoutProps } from "./client/views/auth/auth-layout.mjs";
30
33
  import { ForgotPasswordForm } from "./client/views/auth/forgot-password-form.mjs";
31
34
  import { LoginForm } from "./client/views/auth/login-form.mjs";
32
35
  import { ResetPasswordForm } from "./client/views/auth/reset-password-form.mjs";
@@ -50,10 +53,11 @@ import { SetupStatus, useSetupStatus } from "./client/hooks/use-setup-status.mjs
50
53
  import { useSidebarSearchParam } from "./client/hooks/use-sidebar-search-param.mjs";
51
54
  import { AdminLink } from "./client/components/admin-link.mjs";
52
55
  import { FlagConfig, getCountryCode, getFlagConfig, getFlagUrl } from "./client/utils/locale-to-flag.mjs";
56
+ import { CollectionFormViewProps, CollectionListViewProps, GlobalFormViewProps } from "./client/builder/types/views.mjs";
53
57
  import { buildValidationSchema, buildZodFromIntrospection, createFormSchema } from "./client/builder/validation.mjs";
54
58
  import { FocusContextValue, FocusProvider, FocusProviderProps, FocusState, parsePreviewFieldPath, scrollFieldIntoView, useFocus, useFocusOptional, useIsBlockFocused, useIsFieldFocused } from "./client/contexts/focus-context.mjs";
55
59
  import { ScopeContextValue, ScopeOption, ScopePickerProps, ScopeProviderProps } from "./client/scope/types.mjs";
56
60
  import { ScopePicker } from "./client/scope/picker.mjs";
57
61
  import { ScopeProvider, createScopedFetch, useScope, useScopeSafe, useScopedFetch } from "./client/scope/provider.mjs";
58
62
  import { AnyQuestpieClient, CollectionFieldKeys, CollectionItem, CollectionNames, GlobalNames } from "./client.mjs";
59
- export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminProviderProps, AdminRouter, AdminRouterProps, AdminState, AdminStore, AdminToPreviewMessage, type AnyAdminMeta, AnyQuestpieClient, AnyWidgetConfig, AppAdmin, type ArrayFieldAdminMeta, AuthGuard, AuthLayout, AuthLoading, Badge, BadgeProps, type BaseAdminMeta, BaseFieldProps, BaseWidgetAdminMeta, BaseWidgetConfig, BlockCategory, BlockClickedMessage, BlockContent, BlockNode, BlockRenderer, BlockRendererProps as BlockRendererComponentProps, BlockRendererProps$1 as BlockRendererProps, BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, type BooleanFieldAdminMeta, ChartWidgetConfig, CollectionFieldKeys, CollectionItem, CollectionNames, ComponentRegistry, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, CustomWidgetConfig, DashboardPage, type DateFieldAdminMeta, EMPTY_BLOCK_CONTENT, FieldClickedMessage, FieldComponentProps, FieldDefinition, FieldInstance, FlagConfig, FocusContextValue, FocusFieldMessage, FocusProvider, FocusProviderProps, FocusState, ForgotPasswordForm, ForgotPasswordPage, FormViewConfig, FormViewDefinition, GlobalNames, I18nContext, I18nText, IconComponent, IconifyIcon, IconifyIconProps, InferAdminCMS, InvitePage, type JsonFieldAdminMeta, ListViewDefinition, LoginForm, LoginPage, MaybeLazyComponent, type NumberFieldAdminMeta, type ObjectFieldAdminMeta, OptionItem, PreviewBanner, PreviewBannerProps, PreviewConfig, PreviewField, PreviewFieldProps, PreviewProvider, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, ProgressWidgetConfig, QuickActionsWidgetConfig, ReactiveFieldResult, ReactiveFieldState, RecentItemsWidgetConfig, RefreshCompleteMessage, type RelationFieldAdminMeta, ResetPasswordForm, ResetPasswordPage, RichTextRenderer, RichTextStyles, ScopeContextValue, ScopeOption, ScopePicker, ScopePickerProps, ScopeProvider, ScopeProviderProps, SelectBlockMessage, type SelectFieldAdminMeta, SetupForm, SetupFormValues, SetupPage, SetupPageProps, SetupStatus, StandalonePreviewField, StatsWidgetConfig, TableWidgetConfig, type TextFieldAdminMeta, type TextareaFieldAdminMeta, type TimeFieldAdminMeta, TimelineWidgetConfig, TipTapDoc, TipTapNode, TypedHooks, type UploadFieldAdminMeta, UseCollectionPreviewOptions, UseCollectionPreviewResult, UseFieldOptionsOptions, UseFieldOptionsResult, UseReactiveFieldsOptions, UseReactiveFieldsResult, ValueWidgetConfig, ViewDefinition, ViewKind, WidgetComponentProps, WidgetConfig, WidgetDefinition, WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
63
+ export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminProviderProps, AdminRouter, AdminRouterProps, AdminSidebarBrandProps, AdminSidebarNavItemProps, AdminState, AdminStore, AdminToPreviewMessage, type AnyAdminMeta, AnyQuestpieClient, AnyWidgetConfig, AppAdmin, type ArrayFieldAdminMeta, AuthGuard, AuthLayout, AuthLayoutProps, AuthLoading, Badge, BadgeProps, type BaseAdminMeta, BaseFieldProps, BaseWidgetAdminMeta, BaseWidgetConfig, BlockCategory, BlockClickedMessage, BlockContent, BlockNode, BlockRenderer, BlockRendererProps as BlockRendererComponentProps, BlockRendererProps$1 as BlockRendererProps, BlockScopeContextValue, BlockScopeProvider, BlockScopeProviderProps, type BooleanFieldAdminMeta, ChartWidgetConfig, CollectionFieldKeys, CollectionFormViewProps, CollectionItem, CollectionListViewProps, CollectionNames, ComponentRegistry, ComponentRenderer, ComponentRendererProps, ComponentRendererRegistry, CustomWidgetConfig, DashboardPage, type DateFieldAdminMeta, EMPTY_BLOCK_CONTENT, FieldClickedMessage, FieldComponentProps, FieldDefinition, FieldInstance, FlagConfig, FocusContextValue, FocusFieldMessage, FocusProvider, FocusProviderProps, FocusState, ForgotPasswordForm, ForgotPasswordPage, FormViewConfig, FormViewDefinition, GlobalFormViewProps, GlobalNames, I18nContext, I18nText, IconComponent, IconifyIcon, IconifyIconProps, InferAdminCMS, InvitePage, type JsonFieldAdminMeta, ListViewDefinition, LoginForm, LoginPage, MaybeLazyComponent, type NumberFieldAdminMeta, type ObjectFieldAdminMeta, OptionItem, PreviewBanner, PreviewBannerProps, PreviewConfig, PreviewField, PreviewFieldProps, PreviewProvider, PreviewReadyMessage, PreviewRefreshMessage, PreviewToAdminMessage, ProgressWidgetConfig, QuickActionsWidgetConfig, ReactiveFieldResult, ReactiveFieldState, RecentItemsWidgetConfig, RefreshCompleteMessage, type RelationFieldAdminMeta, ResetPasswordForm, ResetPasswordPage, RichTextEditor, RichTextEditorProps, RichTextRenderer, RichTextStyles, ScopeContextValue, ScopeOption, ScopePicker, ScopePickerProps, ScopeProvider, ScopeProviderProps, SelectBlockMessage, type SelectFieldAdminMeta, SetupForm, SetupFormValues, SetupPage, SetupPageProps, SetupStatus, StandalonePreviewField, StatsWidgetConfig, TableWidgetConfig, type TextFieldAdminMeta, type TextareaFieldAdminMeta, type TimeFieldAdminMeta, TimelineWidgetConfig, TipTapDoc, TipTapNode, TypedHooks, type UploadFieldAdminMeta, UseCollectionPreviewOptions, UseCollectionPreviewResult, UseFieldOptionsOptions, UseFieldOptionsResult, UseReactiveFieldsOptions, UseReactiveFieldsResult, ValueWidgetConfig, ViewDefinition, ViewKind, WidgetComponentProps, WidgetConfig, WidgetDefinition, WidgetTypeRegistry, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
package/dist/index.mjs CHANGED
@@ -28,6 +28,7 @@ import { AdminRouter } from "./client/views/layout/admin-router.mjs";
28
28
  import { BlockScopeProvider, useBlockScope, useResolveFieldPath } from "./client/preview/block-scope-context.mjs";
29
29
  import { BlockRenderer } from "./client/blocks/block-renderer.mjs";
30
30
  import { RichTextRenderer } from "./components/rich-text/rich-text-renderer.mjs";
31
+ import { RichTextEditor } from "./client/components/fields/rich-text-editor/index.mjs";
31
32
  import { PreviewBanner } from "./client/preview/preview-banner.mjs";
32
33
  import { PreviewField, PreviewProvider, StandalonePreviewField, usePreviewContext } from "./client/preview/preview-field.mjs";
33
34
  import { useCollectionPreview } from "./client/preview/use-collection-preview.mjs";
@@ -50,4 +51,4 @@ import { useServerWidgetData } from "./client/hooks/use-server-widget-data.mjs";
50
51
  import { ScopeProvider, createScopedFetch, useScope, useScopeSafe, useScopedFetch } from "./client/scope/provider.mjs";
51
52
  import { ScopePicker } from "./client/scope/picker.mjs";
52
53
 
53
- export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminRouter, AuthGuard, AuthLayout, AuthLoading, Badge, BlockRenderer, BlockScopeProvider, ComponentRenderer, DashboardPage, EMPTY_BLOCK_CONTENT, FocusProvider, ForgotPasswordForm, ForgotPasswordPage, IconifyIcon, InvitePage, LoginForm, LoginPage, PreviewBanner, PreviewField, PreviewProvider, ResetPasswordForm, ResetPasswordPage, RichTextRenderer, ScopePicker, ScopeProvider, SetupForm, SetupPage, StandalonePreviewField, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
54
+ export { AcceptInviteForm, AcceptInvitePage, Admin, AdminLayout, AdminLayoutProvider, AdminLink, AdminProvider, AdminRouter, AuthGuard, AuthLayout, AuthLoading, Badge, BlockRenderer, BlockScopeProvider, ComponentRenderer, DashboardPage, EMPTY_BLOCK_CONTENT, FocusProvider, ForgotPasswordForm, ForgotPasswordPage, IconifyIcon, InvitePage, LoginForm, LoginPage, PreviewBanner, PreviewField, PreviewProvider, ResetPasswordForm, ResetPasswordPage, RichTextEditor, RichTextRenderer, ScopePicker, ScopeProvider, SetupForm, SetupPage, StandalonePreviewField, buildValidationSchema, buildZodFromIntrospection, configureField, createAdminAuthClient, createFormSchema, createIconRenderer, createScopedFetch, createTypedHooks, field, getCountryCode, getFlagConfig, getFlagUrl, isAdminToPreviewMessage, isBlockContent, isComponentReference, isPreviewToAdminMessage, parsePreviewFieldPath, resolveIconElement, scrollFieldIntoView, selectAdmin, selectBasePath, selectClient, selectNavigate, useAdminStore, useAuthClient, useBlockScope, useCollectionCreate, useCollectionDelete, useCollectionItem, useCollectionList, useCollectionPreview, useCollectionRestore, useCollectionRevertVersion, useCollectionUpdate, useCollectionVersions, useCurrentUser, useFieldOptions, useFocus, useFocusOptional, useGlobal, useGlobalRevertVersion, useGlobalUpdate, useGlobalVersions, useIsBlockFocused, useIsDesktop, useIsFieldFocused, useIsMobile, useMediaQuery, usePreviewContext, useReactiveFields, useResolveFieldPath, useScope, useScopeSafe, useScopedFetch, useSearchParamToggle, useServerWidgetData, useSetupStatus, useShallow, useSidebarSearchParam, view, widget };
@@ -46,6 +46,8 @@ interface ServerStatsWidget {
46
46
  filter?: Record<string, unknown>;
47
47
  /** Grid span (1-4) */
48
48
  span?: number;
49
+ /** Grid row span. span=2 + rowSpan=2 renders as a 2x2 tile. */
50
+ rowSpan?: number;
49
51
  /** Optional server-side data loader (overrides collection count) */
50
52
  loader?: (ctx: WidgetFetchContext) => Promise<{
51
53
  count: number;
@@ -76,6 +78,8 @@ interface ServerChartWidget {
76
78
  filter?: Record<string, unknown>;
77
79
  /** Grid span (1-4) */
78
80
  span?: number;
81
+ /** Grid row span. */
82
+ rowSpan?: number;
79
83
  /** Optional server-side data loader (overrides collection query) */
80
84
  loader?: (ctx: WidgetFetchContext) => Promise<Array<{
81
85
  name: string;
@@ -103,6 +107,8 @@ interface ServerRecentItemsWidget {
103
107
  filter?: Record<string, unknown>;
104
108
  /** Grid span (1-4) */
105
109
  span?: number;
110
+ /** Grid row span. */
111
+ rowSpan?: number;
106
112
  /** Optional server-side data loader */
107
113
  loader?: (ctx: WidgetFetchContext) => Promise<unknown>;
108
114
  /** Per-widget access rule */
@@ -119,8 +125,12 @@ interface ServerQuickActionsWidget {
119
125
  label?: I18nText;
120
126
  /** Actions to display */
121
127
  actions: ServerQuickAction[];
128
+ /** Layout variant */
129
+ layout?: "grid" | "list";
122
130
  /** Grid span (1-4) */
123
131
  span?: number;
132
+ /** Grid row span. */
133
+ rowSpan?: number;
124
134
  /** Per-widget access rule */
125
135
  access?: WidgetAccessRule;
126
136
  }
@@ -132,6 +142,8 @@ interface ServerQuickAction {
132
142
  label: I18nText;
133
143
  /** Action icon */
134
144
  icon?: ComponentReference;
145
+ /** Visual variant */
146
+ variant?: "default" | "primary" | "secondary" | "outline";
135
147
  /** Action to perform */
136
148
  action: {
137
149
  type: "create";
@@ -160,6 +172,8 @@ interface ServerCustomWidget {
160
172
  props?: Record<string, unknown>;
161
173
  /** Grid span (1-4) */
162
174
  span?: number;
175
+ /** Grid row span. */
176
+ rowSpan?: number;
163
177
  /** Optional server-side data loader */
164
178
  loader?: (ctx: WidgetFetchContext) => Promise<unknown>;
165
179
  /** Per-widget access rule */
@@ -176,8 +190,12 @@ interface ServerValueWidget {
176
190
  label?: I18nText;
177
191
  /** Icon reference */
178
192
  icon?: ComponentReference;
193
+ /** Card visual variant */
194
+ cardVariant?: "default" | "compact" | "featured";
179
195
  /** Grid span (1-4) */
180
196
  span?: number;
197
+ /** Grid row span. */
198
+ rowSpan?: number;
181
199
  /** Auto-refresh interval in milliseconds */
182
200
  refreshInterval?: number;
183
201
  /** Server-side data loader (required) */
@@ -223,6 +241,8 @@ interface ServerTableWidget {
223
241
  filter?: Record<string, unknown>;
224
242
  /** Grid span (1-4) */
225
243
  span?: number;
244
+ /** Grid row span. */
245
+ rowSpan?: number;
226
246
  /** Optional server-side data loader */
227
247
  loader?: (ctx: WidgetFetchContext) => Promise<unknown>;
228
248
  /** Per-widget access rule */
@@ -247,6 +267,8 @@ interface ServerTimelineWidget {
247
267
  emptyMessage?: I18nText;
248
268
  /** Grid span (1-4) */
249
269
  span?: number;
270
+ /** Grid row span. */
271
+ rowSpan?: number;
250
272
  /** Server-side data loader (required) */
251
273
  loader: (ctx: WidgetFetchContext) => Promise<Array<{
252
274
  id: string;
@@ -275,6 +297,8 @@ interface ServerProgressWidget {
275
297
  showPercentage?: boolean;
276
298
  /** Grid span (1-4) */
277
299
  span?: number;
300
+ /** Grid row span. */
301
+ rowSpan?: number;
278
302
  /** Server-side data loader (required) */
279
303
  loader: (ctx: WidgetFetchContext) => Promise<{
280
304
  current: number;
@@ -290,6 +314,8 @@ interface ServerProgressWidget {
290
314
  */
291
315
  interface ServerDashboardSection {
292
316
  type: "section";
317
+ /** Stable section ID, useful for keyed updates and contributions */
318
+ id?: string;
293
319
  /** Section label */
294
320
  label?: I18nText;
295
321
  /** Section description */
@@ -300,22 +326,32 @@ interface ServerDashboardSection {
300
326
  layout?: "grid" | "stack";
301
327
  /** Grid columns */
302
328
  columns?: number;
329
+ /** Fixed row height for widgets in this section */
330
+ rowHeight?: number | string;
331
+ /** Gap between items */
332
+ gap?: number;
303
333
  /** Wrapper style */
304
334
  wrapper?: "flat" | "card" | "collapsible";
305
335
  /** Default collapsed (for collapsible) */
306
336
  defaultCollapsed?: boolean;
307
337
  /** Section items */
308
338
  items: ServerDashboardItem[];
339
+ /** Custom CSS class */
340
+ className?: string;
309
341
  }
310
342
  /**
311
343
  * Dashboard tabs - tabbed sections
312
344
  */
313
345
  interface ServerDashboardTabs {
314
346
  type: "tabs";
347
+ /** Stable tabs group ID */
348
+ id?: string;
315
349
  /** Tabs configuration */
316
350
  tabs: ServerDashboardTab[];
317
351
  /** Default active tab ID */
318
352
  defaultTab?: string;
353
+ /** Custom CSS class */
354
+ className?: string;
319
355
  }
320
356
  /**
321
357
  * Single tab configuration
@@ -329,6 +365,14 @@ interface ServerDashboardTab {
329
365
  icon?: ComponentReference;
330
366
  /** Tab items */
331
367
  items: ServerDashboardItem[];
368
+ /** Grid columns for this tab */
369
+ columns?: number;
370
+ /** Fixed row height for widgets in this tab */
371
+ rowHeight?: number | string;
372
+ /** Gap between tab items */
373
+ gap?: number;
374
+ /** Badge text */
375
+ badge?: string | number;
332
376
  }
333
377
  /**
334
378
  * Dashboard layout item
@@ -361,6 +405,8 @@ interface ServerDashboardConfig {
361
405
  actions?: ServerDashboardAction[];
362
406
  /** Grid columns (default: 4) */
363
407
  columns?: number;
408
+ /** Fixed row height for dashboard widgets */
409
+ rowHeight?: number | string;
364
410
  /** Gap between widgets */
365
411
  gap?: number;
366
412
  /** Dashboard items */
@@ -480,10 +526,22 @@ interface DashboardSectionDef {
480
526
  id: string;
481
527
  /** Section title. */
482
528
  label?: I18nText;
529
+ /** Section description. */
530
+ description?: I18nText;
483
531
  /** Layout mode. */
484
- layout?: "grid";
532
+ layout?: "grid" | "stack";
485
533
  /** Grid columns for this section. */
486
534
  columns?: number;
535
+ /** Fixed row height for widgets in this section. */
536
+ rowHeight?: number | string;
537
+ /** Gap between section items. */
538
+ gap?: number;
539
+ /** Wrapper style. */
540
+ wrapper?: "flat" | "card" | "collapsible";
541
+ /** Default collapsed state for collapsible sections. */
542
+ defaultCollapsed?: boolean;
543
+ /** Custom CSS class. */
544
+ className?: string;
487
545
  }
488
546
  /**
489
547
  * Dashboard item (widget) definition for contributions.
@@ -502,6 +560,8 @@ interface DashboardItemDef {
502
560
  label?: I18nText;
503
561
  /** Grid span (1-4). */
504
562
  span?: number;
563
+ /** Grid row span. */
564
+ rowSpan?: number;
505
565
  /** Refresh interval in ms. */
506
566
  refreshInterval?: number;
507
567
  /** Widget-specific config (collection, filter, loader, chartType, etc.) */
@@ -519,14 +579,18 @@ interface DashboardContribution {
519
579
  description?: I18nText;
520
580
  /** Grid columns — last module/user wins. */
521
581
  columns?: number;
582
+ /** Fixed widget row height — last module/user wins. */
583
+ rowHeight?: number | string;
584
+ /** Widget gap — last module/user wins. */
585
+ gap?: number;
522
586
  /** Enable realtime — last module/user wins. */
523
587
  realtime?: boolean;
524
588
  /** Quick actions — concatenated from all modules. */
525
589
  actions?: ServerDashboardAction[];
526
590
  /** Section definitions — merged by id across modules. */
527
591
  sections?: DashboardSectionDef[];
528
- /** Widget items — appended to sections by sectionId. */
529
- items?: DashboardItemDef[];
592
+ /** Widget items — appended to sections by sectionId, or direct layout items. */
593
+ items?: Array<DashboardItemDef | ServerDashboardItem>;
530
594
  }
531
595
  /**
532
596
  * Context for dashboard callbacks on module() and config().
@@ -86,10 +86,31 @@ interface ListViewConfig {
86
86
  field: string;
87
87
  direction: "asc" | "desc";
88
88
  };
89
+ /**
90
+ * Enables reorder mode for this list.
91
+ * Requires a numeric field named `order` on the collection.
92
+ */
93
+ orderable?: boolean | {
94
+ /** Direction used when rendering the ordered list */
95
+ direction?: "asc" | "desc";
96
+ /** Gap between generated order values when writes are enabled */
97
+ step?: number;
98
+ };
89
99
  /** Searchable fields */
90
100
  searchable?: string[];
91
101
  /** Filterable fields */
92
102
  filterable?: string[];
103
+ /** Client-side grouping options for the current fetched page */
104
+ grouping?: {
105
+ /** Fields users can group by */
106
+ fields: string[];
107
+ /** Initial grouping field */
108
+ defaultField?: string;
109
+ /** Whether groups start collapsed */
110
+ defaultCollapsed?: boolean;
111
+ /** Show page-local item counts in group headers */
112
+ showCounts?: boolean;
113
+ };
93
114
  /** Actions configuration */
94
115
  actions?: {
95
116
  header?: {
@@ -27,7 +27,7 @@ import { ActionsConfigContext, BuiltinActionType, ServerActionContext, ServerAct
27
27
  */
28
28
  interface AdminConfigInput {
29
29
  sidebar?: SidebarContribution;
30
- dashboard?: DashboardContribution;
30
+ dashboard?: DashboardContribution | ServerDashboardConfig;
31
31
  branding?: ServerBrandingConfig;
32
32
  locale?: AdminLocaleConfig;
33
33
  }
@@ -78,9 +78,13 @@ function generateCategoryEntries(files, catDecl) {
78
78
  const keyProp = catDecl?.keyFromProperty;
79
79
  return files.map((f) => {
80
80
  if (keyProp) return `[${f.varName}.${keyProp}]: ${f.varName}`;
81
+ if (catDecl?.keyFromSource === "basename") return `${JSON.stringify(getSourceBasename(f))}: ${f.varName}`;
81
82
  return `${JSON.stringify(f.key)}: ${f.varName}`;
82
83
  }).join(", ");
83
84
  }
85
+ function getSourceBasename(file) {
86
+ return (file.source.replaceAll("\\", "/").split("/").pop() ?? file.key).replace(/\.[^.]+$/, "");
87
+ }
84
88
  /**
85
89
  * Generate an import line for a discovered file.
86
90
  */
@@ -1,5 +1,5 @@
1
1
  import { DefaultFieldState, Field } from "questpie";
2
- import { PgJsonbBuilder } from "drizzle-orm/pg-core";
2
+ import { PgJsonbBuilder } from "questpie/drizzle-pg-core";
3
3
 
4
4
  //#region src/server/fields/blocks.d.ts
5
5