@btst/stack 1.5.2 → 1.6.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 (201) hide show
  1. package/dist/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.2.0/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.cjs +68 -0
  2. package/dist/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@19.2.0/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.mjs +60 -0
  3. package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.cjs +3937 -0
  4. package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.mjs +3907 -0
  5. package/dist/node_modules/.pnpm/@dnd-kit_modifiers@9.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.cjs +30 -0
  6. package/dist/node_modules/.pnpm/@dnd-kit_modifiers@9.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.mjs +28 -0
  7. package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +675 -0
  8. package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.mjs +661 -0
  9. package/dist/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.0/node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs +358 -0
  10. package/dist/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@19.2.0/node_modules/@dnd-kit/utilities/dist/utilities.esm.mjs +332 -0
  11. package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.13_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react@1_865f042350eb43f3338b0fffb33f6246/node_modules/@radix-ui/react-tabs/dist/index.cjs +211 -0
  12. package/dist/node_modules/.pnpm/@radix-ui_react-tabs@1.1.13_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react@1_865f042350eb43f3338b0fffb33f6246/node_modules/@radix-ui/react-tabs/dist/index.mjs +188 -0
  13. package/dist/packages/better-stack/src/plugins/cms/api/plugin.cjs +3 -2
  14. package/dist/packages/better-stack/src/plugins/cms/api/plugin.mjs +3 -2
  15. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.cjs +15 -15
  16. package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.mjs +16 -16
  17. package/dist/packages/better-stack/src/plugins/form-builder/api/plugin.cjs +588 -0
  18. package/dist/packages/better-stack/src/plugins/form-builder/api/plugin.mjs +586 -0
  19. package/dist/packages/better-stack/src/plugins/form-builder/client/components/forms/form-renderer.cjs +131 -0
  20. package/dist/packages/better-stack/src/plugins/form-builder/client/components/forms/form-renderer.mjs +129 -0
  21. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-builder-skeleton.cjs +32 -0
  22. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-builder-skeleton.mjs +30 -0
  23. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-list-skeleton.cjs +21 -0
  24. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/form-list-skeleton.mjs +19 -0
  25. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/submissions-skeleton.cjs +34 -0
  26. package/dist/packages/better-stack/src/plugins/form-builder/client/components/loading/submissions-skeleton.mjs +32 -0
  27. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/404-page.cjs +20 -0
  28. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/404-page.mjs +18 -0
  29. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.cjs +19 -0
  30. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.cjs +186 -0
  31. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.internal.mjs +184 -0
  32. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-builder-page.mjs +17 -0
  33. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.cjs +19 -0
  34. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.cjs +165 -0
  35. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.internal.mjs +163 -0
  36. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/form-list-page.mjs +17 -0
  37. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.cjs +19 -0
  38. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +177 -0
  39. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +175 -0
  40. package/dist/packages/better-stack/src/plugins/form-builder/client/components/pages/submissions-page.mjs +17 -0
  41. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/default-error.cjs +17 -0
  42. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/default-error.mjs +15 -0
  43. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/empty-state.cjs +16 -0
  44. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/empty-state.mjs +14 -0
  45. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/page-wrapper.cjs +27 -0
  46. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/page-wrapper.mjs +25 -0
  47. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/pagination.cjs +39 -0
  48. package/dist/packages/better-stack/src/plugins/form-builder/client/components/shared/pagination.mjs +37 -0
  49. package/dist/packages/better-stack/src/plugins/form-builder/client/hooks/form-builder-hooks.cjs +551 -0
  50. package/dist/packages/better-stack/src/plugins/form-builder/client/hooks/form-builder-hooks.mjs +537 -0
  51. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-common.cjs +36 -0
  52. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-common.mjs +34 -0
  53. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-editor.cjs +19 -0
  54. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-editor.mjs +17 -0
  55. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-list.cjs +21 -0
  56. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-list.mjs +19 -0
  57. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-submissions.cjs +19 -0
  58. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-submissions.mjs +17 -0
  59. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-toasts.cjs +14 -0
  60. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/form-builder-toasts.mjs +12 -0
  61. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/index.cjs +17 -0
  62. package/dist/packages/better-stack/src/plugins/form-builder/client/localization/index.mjs +15 -0
  63. package/dist/packages/better-stack/src/plugins/form-builder/client/plugin.cjs +278 -0
  64. package/dist/packages/better-stack/src/plugins/form-builder/client/plugin.mjs +276 -0
  65. package/dist/packages/better-stack/src/plugins/form-builder/db.cjs +99 -0
  66. package/dist/packages/better-stack/src/plugins/form-builder/db.mjs +97 -0
  67. package/dist/packages/better-stack/src/plugins/form-builder/schemas.cjs +82 -0
  68. package/dist/packages/better-stack/src/plugins/form-builder/schemas.mjs +74 -0
  69. package/dist/packages/better-stack/src/plugins/form-builder/utils.cjs +37 -0
  70. package/dist/packages/better-stack/src/plugins/form-builder/utils.mjs +29 -0
  71. package/dist/packages/ui/src/components/auto-form/index.cjs +2 -12
  72. package/dist/packages/ui/src/components/auto-form/index.mjs +2 -9
  73. package/dist/packages/ui/src/components/auto-form/stepped-auto-form.cjs +377 -0
  74. package/dist/packages/ui/src/components/auto-form/stepped-auto-form.mjs +368 -0
  75. package/dist/packages/ui/src/components/auto-form/utils.cjs +1 -56
  76. package/dist/packages/ui/src/components/auto-form/utils.mjs +2 -56
  77. package/dist/packages/ui/src/components/form-builder/canvas.cjs +111 -0
  78. package/dist/packages/ui/src/components/form-builder/canvas.mjs +109 -0
  79. package/dist/packages/ui/src/components/form-builder/components/index.cjs +570 -0
  80. package/dist/packages/ui/src/components/form-builder/components/index.mjs +553 -0
  81. package/dist/packages/ui/src/components/form-builder/edit-field-dialog.cjs +131 -0
  82. package/dist/packages/ui/src/components/form-builder/edit-field-dialog.mjs +129 -0
  83. package/dist/packages/ui/src/components/form-builder/form-preview.cjs +73 -0
  84. package/dist/packages/ui/src/components/form-builder/form-preview.mjs +71 -0
  85. package/dist/packages/ui/src/components/form-builder/index.cjs +353 -0
  86. package/dist/packages/ui/src/components/form-builder/index.mjs +344 -0
  87. package/dist/packages/ui/src/components/form-builder/nested-field-editor-dialog.cjs +263 -0
  88. package/dist/packages/ui/src/components/form-builder/nested-field-editor-dialog.mjs +261 -0
  89. package/dist/packages/ui/src/components/form-builder/palette.cjs +52 -0
  90. package/dist/packages/ui/src/components/form-builder/palette.mjs +49 -0
  91. package/dist/packages/ui/src/components/form-builder/schema-utils.cjs +120 -0
  92. package/dist/packages/ui/src/components/form-builder/schema-utils.mjs +114 -0
  93. package/dist/packages/ui/src/components/form-builder/sortable-field.cjs +151 -0
  94. package/dist/packages/ui/src/components/form-builder/sortable-field.mjs +148 -0
  95. package/dist/packages/ui/src/components/form-builder/step-tabs.cjs +180 -0
  96. package/dist/packages/ui/src/components/form-builder/step-tabs.mjs +178 -0
  97. package/dist/packages/ui/src/components/form-builder/types.cjs +7 -0
  98. package/dist/packages/ui/src/components/form-builder/types.mjs +5 -0
  99. package/dist/packages/ui/src/components/form-builder/validation-schemas.cjs +67 -0
  100. package/dist/packages/ui/src/components/form-builder/validation-schemas.mjs +56 -0
  101. package/dist/packages/ui/src/components/tabs.cjs +70 -0
  102. package/dist/packages/ui/src/components/tabs.mjs +65 -0
  103. package/dist/packages/ui/src/lib/schema-converter.cjs +130 -0
  104. package/dist/packages/ui/src/lib/schema-converter.mjs +124 -0
  105. package/dist/plugins/blog/api/index.d.cts +1 -1
  106. package/dist/plugins/blog/api/index.d.mts +1 -1
  107. package/dist/plugins/blog/api/index.d.ts +1 -1
  108. package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
  109. package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
  110. package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
  111. package/dist/plugins/blog/client/index.d.cts +1 -1
  112. package/dist/plugins/blog/client/index.d.mts +1 -1
  113. package/dist/plugins/blog/client/index.d.ts +1 -1
  114. package/dist/plugins/blog/query-keys.d.cts +2 -2
  115. package/dist/plugins/blog/query-keys.d.mts +2 -2
  116. package/dist/plugins/blog/query-keys.d.ts +2 -2
  117. package/dist/plugins/cms/client/index.cjs +6 -0
  118. package/dist/plugins/cms/client/index.d.cts +6 -113
  119. package/dist/plugins/cms/client/index.d.mts +6 -113
  120. package/dist/plugins/cms/client/index.d.ts +6 -113
  121. package/dist/plugins/cms/client/index.mjs +1 -0
  122. package/dist/plugins/form-builder/api/index.cjs +7 -0
  123. package/dist/plugins/form-builder/api/index.d.cts +141 -0
  124. package/dist/plugins/form-builder/api/index.d.mts +141 -0
  125. package/dist/plugins/form-builder/api/index.d.ts +141 -0
  126. package/dist/plugins/form-builder/api/index.mjs +1 -0
  127. package/dist/plugins/form-builder/client/components/index.cjs +29 -0
  128. package/dist/plugins/form-builder/client/components/index.d.cts +93 -0
  129. package/dist/plugins/form-builder/client/components/index.d.mts +93 -0
  130. package/dist/plugins/form-builder/client/components/index.d.ts +93 -0
  131. package/dist/plugins/form-builder/client/components/index.mjs +18 -0
  132. package/dist/plugins/form-builder/client/hooks/index.cjs +19 -0
  133. package/dist/plugins/form-builder/client/hooks/index.d.cts +154 -0
  134. package/dist/plugins/form-builder/client/hooks/index.d.mts +154 -0
  135. package/dist/plugins/form-builder/client/hooks/index.d.ts +154 -0
  136. package/dist/plugins/form-builder/client/hooks/index.mjs +1 -0
  137. package/dist/plugins/form-builder/client/index.cjs +13 -0
  138. package/dist/plugins/form-builder/client/index.d.cts +381 -0
  139. package/dist/plugins/form-builder/client/index.d.mts +381 -0
  140. package/dist/plugins/form-builder/client/index.d.ts +381 -0
  141. package/dist/plugins/form-builder/client/index.mjs +2 -0
  142. package/dist/plugins/form-builder/client.css +3 -0
  143. package/dist/plugins/form-builder/query-keys.cjs +143 -0
  144. package/dist/plugins/form-builder/query-keys.d.cts +74 -0
  145. package/dist/plugins/form-builder/query-keys.d.mts +74 -0
  146. package/dist/plugins/form-builder/query-keys.d.ts +74 -0
  147. package/dist/plugins/form-builder/query-keys.mjs +141 -0
  148. package/dist/plugins/form-builder/style.css +19 -0
  149. package/dist/shared/stack.AX5nZ6A3.d.cts +86 -0
  150. package/dist/shared/stack.AX5nZ6A3.d.mts +86 -0
  151. package/dist/shared/stack.AX5nZ6A3.d.ts +86 -0
  152. package/dist/shared/stack.BIh2AXaW.d.cts +123 -0
  153. package/dist/shared/stack.BIh2AXaW.d.mts +123 -0
  154. package/dist/shared/stack.BIh2AXaW.d.ts +123 -0
  155. package/dist/shared/stack.DzH_wcvr.d.cts +195 -0
  156. package/dist/shared/stack.DzH_wcvr.d.mts +195 -0
  157. package/dist/shared/stack.DzH_wcvr.d.ts +195 -0
  158. package/package.json +54 -1
  159. package/src/plugins/cms/api/plugin.ts +9 -4
  160. package/src/plugins/cms/client/components/forms/content-form.tsx +23 -25
  161. package/src/plugins/cms/client/index.ts +11 -0
  162. package/src/plugins/form-builder/api/index.ts +1 -0
  163. package/src/plugins/form-builder/api/plugin.ts +776 -0
  164. package/src/plugins/form-builder/client/components/forms/form-renderer.tsx +253 -0
  165. package/src/plugins/form-builder/client/components/index.tsx +24 -0
  166. package/src/plugins/form-builder/client/components/loading/form-builder-skeleton.tsx +42 -0
  167. package/src/plugins/form-builder/client/components/loading/form-list-skeleton.tsx +25 -0
  168. package/src/plugins/form-builder/client/components/loading/index.tsx +3 -0
  169. package/src/plugins/form-builder/client/components/loading/submissions-skeleton.tsx +40 -0
  170. package/src/plugins/form-builder/client/components/pages/404-page.tsx +28 -0
  171. package/src/plugins/form-builder/client/components/pages/form-builder-page.internal.tsx +253 -0
  172. package/src/plugins/form-builder/client/components/pages/form-builder-page.tsx +26 -0
  173. package/src/plugins/form-builder/client/components/pages/form-list-page.internal.tsx +231 -0
  174. package/src/plugins/form-builder/client/components/pages/form-list-page.tsx +22 -0
  175. package/src/plugins/form-builder/client/components/pages/submissions-page.internal.tsx +268 -0
  176. package/src/plugins/form-builder/client/components/pages/submissions-page.tsx +26 -0
  177. package/src/plugins/form-builder/client/components/shared/default-error.tsx +30 -0
  178. package/src/plugins/form-builder/client/components/shared/empty-state.tsx +26 -0
  179. package/src/plugins/form-builder/client/components/shared/page-wrapper.tsx +32 -0
  180. package/src/plugins/form-builder/client/components/shared/pagination.tsx +52 -0
  181. package/src/plugins/form-builder/client/hooks/form-builder-hooks.tsx +799 -0
  182. package/src/plugins/form-builder/client/hooks/index.tsx +1 -0
  183. package/src/plugins/form-builder/client/index.ts +22 -0
  184. package/src/plugins/form-builder/client/localization/form-builder-common.ts +36 -0
  185. package/src/plugins/form-builder/client/localization/form-builder-editor.ts +18 -0
  186. package/src/plugins/form-builder/client/localization/form-builder-list.ts +17 -0
  187. package/src/plugins/form-builder/client/localization/form-builder-submissions.ts +17 -0
  188. package/src/plugins/form-builder/client/localization/form-builder-toasts.ts +10 -0
  189. package/src/plugins/form-builder/client/localization/index.ts +15 -0
  190. package/src/plugins/form-builder/client/overrides.ts +146 -0
  191. package/src/plugins/form-builder/client/plugin.tsx +488 -0
  192. package/src/plugins/form-builder/client.css +3 -0
  193. package/src/plugins/form-builder/db.ts +99 -0
  194. package/src/plugins/form-builder/query-keys.ts +198 -0
  195. package/src/plugins/form-builder/schemas.ts +122 -0
  196. package/src/plugins/form-builder/style.css +19 -0
  197. package/src/plugins/form-builder/types.ts +317 -0
  198. package/src/plugins/form-builder/utils.ts +63 -0
  199. package/dist/shared/{stack.DLhzx1-D.d.cts → stack.CcI4sYJP.d.cts} +1 -1
  200. package/dist/shared/{stack.DLhzx1-D.d.mts → stack.CcI4sYJP.d.mts} +1 -1
  201. package/dist/shared/{stack.DLhzx1-D.d.ts → stack.CcI4sYJP.d.ts} +1 -1
@@ -0,0 +1,381 @@
1
+ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
2
+ import * as react from 'react';
3
+ import { ComponentType } from 'react';
4
+ import * as _btst_yar from '@btst/yar';
5
+ import { QueryClient } from '@tanstack/react-query';
6
+ import { A as AutoFormInputComponentProps } from '../../../shared/stack.BIh2AXaW.cjs';
7
+ export { b as FormSchemaMetadata, F as FormStep, f as formSchemaToZod, a as getStepGroupMap, g as getSteps, h as hasSteps, z as zodToFormSchema } from '../../../shared/stack.AX5nZ6A3.cjs';
8
+ import 'react-hook-form';
9
+ import 'zod';
10
+ import 'react/jsx-runtime';
11
+
12
+ /**
13
+ * Context passed to loader hooks
14
+ */
15
+ interface LoaderContext {
16
+ /** Current route path */
17
+ path: string;
18
+ /** Route parameters (e.g., { id: "123" }) */
19
+ params?: Record<string, string>;
20
+ /** Whether rendering on server (true) or client (false) */
21
+ isSSR: boolean;
22
+ /** Base URL for API calls */
23
+ apiBaseURL: string;
24
+ /** Path where the API is mounted */
25
+ apiBasePath: string;
26
+ /** Optional headers for the request */
27
+ headers?: Headers;
28
+ /** Additional context properties */
29
+ [key: string]: unknown;
30
+ }
31
+ /**
32
+ * Hooks for Form Builder client plugin
33
+ * All hooks are optional and allow consumers to customize behavior
34
+ */
35
+ interface FormBuilderClientHooks {
36
+ /**
37
+ * Called before loading the form list page. Return false to cancel loading.
38
+ * @param context - Loader context with path, params, etc.
39
+ */
40
+ beforeLoadFormList?: (context: LoaderContext) => Promise<boolean> | boolean;
41
+ /**
42
+ * Called after the form list is loaded.
43
+ * @param context - Loader context
44
+ */
45
+ afterLoadFormList?: (context: LoaderContext) => Promise<void> | void;
46
+ /**
47
+ * Called before loading the form builder page. Return false to cancel loading.
48
+ * @param id - The form ID (undefined for new forms)
49
+ * @param context - Loader context
50
+ */
51
+ beforeLoadFormBuilder?: (id: string | undefined, context: LoaderContext) => Promise<boolean> | boolean;
52
+ /**
53
+ * Called after the form builder is loaded.
54
+ * @param id - The form ID (undefined for new forms)
55
+ * @param context - Loader context
56
+ */
57
+ afterLoadFormBuilder?: (id: string | undefined, context: LoaderContext) => Promise<void> | void;
58
+ /**
59
+ * Called before loading the submissions page. Return false to cancel loading.
60
+ * @param formId - The form ID
61
+ * @param context - Loader context
62
+ */
63
+ beforeLoadSubmissions?: (formId: string, context: LoaderContext) => Promise<boolean> | boolean;
64
+ /**
65
+ * Called after the submissions page is loaded.
66
+ * @param formId - The form ID
67
+ * @param context - Loader context
68
+ */
69
+ afterLoadSubmissions?: (formId: string, context: LoaderContext) => Promise<void> | void;
70
+ /**
71
+ * Called when a loading error occurs.
72
+ * Use this for redirects on authorization failures.
73
+ * @param error - The error that occurred
74
+ * @param context - Loader context
75
+ */
76
+ onLoadError?: (error: Error, context: LoaderContext) => Promise<void> | void;
77
+ }
78
+ /**
79
+ * Configuration for Form Builder client plugin
80
+ */
81
+ interface FormBuilderClientConfig {
82
+ /** Base URL for API calls (e.g., "http://localhost:3000") */
83
+ apiBaseURL: string;
84
+ /** Path where the API is mounted (e.g., "/api/data") */
85
+ apiBasePath: string;
86
+ /** Base URL of your site */
87
+ siteBaseURL: string;
88
+ /** Path where pages are mounted (e.g., "/pages") */
89
+ siteBasePath: string;
90
+ /** React Query client instance for caching */
91
+ queryClient: QueryClient;
92
+ /** Optional headers for SSR (e.g., forwarding cookies) */
93
+ headers?: Headers;
94
+ /** Optional hooks for customizing behavior (authorization, redirects, etc.) */
95
+ hooks?: FormBuilderClientHooks;
96
+ }
97
+ /**
98
+ * Form Builder client plugin
99
+ * Provides routes and components for the Form Builder admin interface
100
+ */
101
+ declare const formBuilderClientPlugin: (config: FormBuilderClientConfig) => _btst_stack_plugins_client.ClientPlugin<Record<string, never>, {
102
+ formList: {
103
+ (inputCtx_0?: _btst_yar.InputContext<"/forms", _btst_yar.RouteOptions> | undefined): {
104
+ PageComponent?: react.ComponentType<unknown> | undefined;
105
+ LoadingComponent?: react.ComponentType<unknown> | undefined;
106
+ ErrorComponent?: react.ComponentType<unknown> | undefined;
107
+ loader?: (() => Promise<void>) | undefined;
108
+ meta?: (() => ({
109
+ title: string;
110
+ name?: undefined;
111
+ content?: undefined;
112
+ } | {
113
+ name: string;
114
+ content: string;
115
+ title?: undefined;
116
+ })[]) | undefined;
117
+ extra?: (() => any) | undefined;
118
+ };
119
+ options: _btst_yar.RouteOptions | undefined;
120
+ path: "/forms";
121
+ meta: _btst_yar.RouteMeta | undefined;
122
+ };
123
+ newForm: {
124
+ (inputCtx_0?: _btst_yar.InputContext<"/forms/new", _btst_yar.RouteOptions> | undefined): {
125
+ PageComponent?: react.ComponentType<unknown> | undefined;
126
+ LoadingComponent?: react.ComponentType<unknown> | undefined;
127
+ ErrorComponent?: react.ComponentType<unknown> | undefined;
128
+ loader?: (() => Promise<void>) | undefined;
129
+ meta?: (() => ({
130
+ title: string;
131
+ name?: undefined;
132
+ content?: undefined;
133
+ } | {
134
+ name: string;
135
+ content: string;
136
+ title?: undefined;
137
+ })[]) | undefined;
138
+ extra?: (() => any) | undefined;
139
+ };
140
+ options: _btst_yar.RouteOptions | undefined;
141
+ path: "/forms/new";
142
+ meta: _btst_yar.RouteMeta | undefined;
143
+ };
144
+ editForm: {
145
+ (inputCtx_0: _btst_yar.InputContext<"/forms/:id/edit", _btst_yar.RouteOptions>): {
146
+ PageComponent?: react.ComponentType<unknown> | undefined;
147
+ LoadingComponent?: react.ComponentType<unknown> | undefined;
148
+ ErrorComponent?: react.ComponentType<unknown> | undefined;
149
+ loader?: (() => Promise<void>) | undefined;
150
+ meta?: (() => ({
151
+ title: string;
152
+ name?: undefined;
153
+ content?: undefined;
154
+ } | {
155
+ name: string;
156
+ content: string;
157
+ title?: undefined;
158
+ })[]) | undefined;
159
+ extra?: (() => any) | undefined;
160
+ };
161
+ options: _btst_yar.RouteOptions | undefined;
162
+ path: "/forms/:id/edit";
163
+ meta: _btst_yar.RouteMeta | undefined;
164
+ };
165
+ submissions: {
166
+ (inputCtx_0: _btst_yar.InputContext<"/forms/:id/submissions", _btst_yar.RouteOptions>): {
167
+ PageComponent?: react.ComponentType<unknown> | undefined;
168
+ LoadingComponent?: react.ComponentType<unknown> | undefined;
169
+ ErrorComponent?: react.ComponentType<unknown> | undefined;
170
+ loader?: (() => Promise<void>) | undefined;
171
+ meta?: (() => ({
172
+ title: string;
173
+ name?: undefined;
174
+ content?: undefined;
175
+ } | {
176
+ name: string;
177
+ content: string;
178
+ title?: undefined;
179
+ })[]) | undefined;
180
+ extra?: (() => any) | undefined;
181
+ };
182
+ options: _btst_yar.RouteOptions | undefined;
183
+ path: "/forms/:id/submissions";
184
+ meta: _btst_yar.RouteMeta | undefined;
185
+ };
186
+ }>;
187
+
188
+ declare const FORM_BUILDER_LOCALIZATION: {
189
+ FORM_BUILDER_SUBMISSIONS_TITLE: string;
190
+ FORM_BUILDER_SUBMISSIONS_SUBTITLE: string;
191
+ FORM_BUILDER_SUBMISSIONS_EMPTY: string;
192
+ FORM_BUILDER_SUBMISSIONS_EMPTY_DESCRIPTION: string;
193
+ FORM_BUILDER_SUBMISSIONS_COLUMN_ID: string;
194
+ FORM_BUILDER_SUBMISSIONS_COLUMN_DATA: string;
195
+ FORM_BUILDER_SUBMISSIONS_COLUMN_SUBMITTED_AT: string;
196
+ FORM_BUILDER_SUBMISSIONS_COLUMN_IP_ADDRESS: string;
197
+ FORM_BUILDER_SUBMISSIONS_COLUMN_ACTIONS: string;
198
+ FORM_BUILDER_SUBMISSIONS_ACTION_VIEW: string;
199
+ FORM_BUILDER_SUBMISSIONS_ACTION_DELETE: string;
200
+ FORM_BUILDER_SUBMISSIONS_DELETE_CONFIRM: string;
201
+ FORM_BUILDER_SUBMISSIONS_BACK_TO_FORM: string;
202
+ FORM_BUILDER_EDITOR_TITLE_NEW: string;
203
+ FORM_BUILDER_EDITOR_TITLE_EDIT: string;
204
+ FORM_BUILDER_EDITOR_SLUG_AUTO: string;
205
+ FORM_BUILDER_EDITOR_SLUG_MANUAL: string;
206
+ FORM_BUILDER_EDITOR_DELETE_CONFIRM: string;
207
+ FORM_BUILDER_EDITOR_UNSAVED_CHANGES: string;
208
+ FORM_BUILDER_EDITOR_NAME_PLACEHOLDER: string;
209
+ FORM_BUILDER_EDITOR_SLUG_PLACEHOLDER: string;
210
+ FORM_BUILDER_EDITOR_DESCRIPTION_PLACEHOLDER: string;
211
+ FORM_BUILDER_EDITOR_SUCCESS_MESSAGE_LABEL: string;
212
+ FORM_BUILDER_EDITOR_SUCCESS_MESSAGE_PLACEHOLDER: string;
213
+ FORM_BUILDER_EDITOR_REDIRECT_URL_LABEL: string;
214
+ FORM_BUILDER_EDITOR_REDIRECT_URL_PLACEHOLDER: string;
215
+ FORM_BUILDER_LIST_TITLE: string;
216
+ FORM_BUILDER_LIST_SUBTITLE: string;
217
+ FORM_BUILDER_LIST_EMPTY: string;
218
+ FORM_BUILDER_LIST_EMPTY_DESCRIPTION: string;
219
+ FORM_BUILDER_LIST_COLUMN_NAME: string;
220
+ FORM_BUILDER_LIST_COLUMN_SLUG: string;
221
+ FORM_BUILDER_LIST_COLUMN_STATUS: string;
222
+ FORM_BUILDER_LIST_COLUMN_CREATED: string;
223
+ FORM_BUILDER_LIST_COLUMN_ACTIONS: string;
224
+ FORM_BUILDER_LIST_ACTION_EDIT: string;
225
+ FORM_BUILDER_LIST_ACTION_DELETE: string;
226
+ FORM_BUILDER_LIST_ACTION_SUBMISSIONS: string;
227
+ FORM_BUILDER_LIST_PAGINATION_SHOWING: string;
228
+ FORM_BUILDER_LIST_PAGINATION_PREVIOUS: string;
229
+ FORM_BUILDER_LIST_PAGINATION_NEXT: string;
230
+ FORM_BUILDER_TOAST_CREATE_SUCCESS: string;
231
+ FORM_BUILDER_TOAST_UPDATE_SUCCESS: string;
232
+ FORM_BUILDER_TOAST_DELETE_SUCCESS: string;
233
+ FORM_BUILDER_TOAST_SUBMIT_SUCCESS: string;
234
+ FORM_BUILDER_TOAST_ERROR: string;
235
+ FORM_BUILDER_TOAST_VALIDATION_ERROR: string;
236
+ FORM_BUILDER_TOAST_DUPLICATE_SLUG: string;
237
+ FORM_BUILDER_TOAST_SUBMISSION_DELETED: string;
238
+ FORM_BUILDER_BUTTON_SAVE: string;
239
+ FORM_BUILDER_BUTTON_CANCEL: string;
240
+ FORM_BUILDER_BUTTON_DELETE: string;
241
+ FORM_BUILDER_BUTTON_CREATE: string;
242
+ FORM_BUILDER_BUTTON_BACK: string;
243
+ FORM_BUILDER_BUTTON_NEW_FORM: string;
244
+ FORM_BUILDER_BUTTON_SUBMIT: string;
245
+ FORM_BUILDER_LABEL_NAME: string;
246
+ FORM_BUILDER_LABEL_SLUG: string;
247
+ FORM_BUILDER_LABEL_SLUG_DESCRIPTION: string;
248
+ FORM_BUILDER_LABEL_DESCRIPTION: string;
249
+ FORM_BUILDER_LABEL_STATUS: string;
250
+ FORM_BUILDER_LABEL_CREATED_AT: string;
251
+ FORM_BUILDER_LABEL_UPDATED_AT: string;
252
+ FORM_BUILDER_LABEL_ACTIONS: string;
253
+ FORM_BUILDER_STATUS_LOADING: string;
254
+ FORM_BUILDER_STATUS_SAVING: string;
255
+ FORM_BUILDER_STATUS_DELETING: string;
256
+ FORM_BUILDER_STATUS_ACTIVE: string;
257
+ FORM_BUILDER_STATUS_INACTIVE: string;
258
+ FORM_BUILDER_STATUS_ARCHIVED: string;
259
+ FORM_BUILDER_ERROR_GENERIC: string;
260
+ FORM_BUILDER_ERROR_NOT_FOUND: string;
261
+ FORM_BUILDER_ERROR_VALIDATION: string;
262
+ FORM_BUILDER_ATTRIBUTION: string;
263
+ };
264
+ type FormBuilderLocalization = typeof FORM_BUILDER_LOCALIZATION;
265
+
266
+ /**
267
+ * Context passed to lifecycle hooks
268
+ */
269
+ interface RouteContext {
270
+ /** Current route path */
271
+ path: string;
272
+ /** Route parameters (e.g., { id: "123" }) */
273
+ params?: Record<string, string>;
274
+ /** Whether rendering on server (true) or client (false) */
275
+ isSSR: boolean;
276
+ /** Additional context properties */
277
+ [key: string]: unknown;
278
+ }
279
+ /**
280
+ * Overridable components and functions for the Form Builder plugin
281
+ *
282
+ * External consumers can provide their own implementations of these
283
+ * to customize the behavior for their framework (Next.js, React Router, etc.)
284
+ */
285
+ interface FormBuilderPluginOverrides {
286
+ /**
287
+ * Link component for navigation
288
+ */
289
+ Link?: ComponentType<React.ComponentProps<"a"> & Record<string, unknown>>;
290
+ /**
291
+ * Navigation function for programmatic navigation
292
+ */
293
+ navigate: (path: string) => void | Promise<void>;
294
+ /**
295
+ * Refresh function to invalidate server-side cache (e.g., Next.js router.refresh())
296
+ */
297
+ refresh?: () => void | Promise<void>;
298
+ /**
299
+ * Custom field components for AutoForm fields.
300
+ *
301
+ * These map field type names to React components. Use these to:
302
+ * - Override built-in field types (checkbox, date, select, radio, switch, textarea, file, number, fallback)
303
+ * - Add custom field types for your forms
304
+ *
305
+ * @example
306
+ * ```tsx
307
+ * fieldComponents: {
308
+ * // Override the file type with custom S3 upload
309
+ * file: ({ field, label, isRequired }) => (
310
+ * <MyS3Upload
311
+ * value={field.value}
312
+ * onChange={field.onChange}
313
+ * label={label}
314
+ * required={isRequired}
315
+ * />
316
+ * ),
317
+ * // Add a custom rich text editor
318
+ * richText: ({ field, label }) => (
319
+ * <MyRichTextEditor value={field.value} onChange={field.onChange} />
320
+ * ),
321
+ * }
322
+ * ```
323
+ */
324
+ fieldComponents?: Record<string, ComponentType<AutoFormInputComponentProps>>;
325
+ /**
326
+ * Localization object for the Form Builder plugin
327
+ */
328
+ localization?: FormBuilderLocalization;
329
+ /**
330
+ * API base URL
331
+ */
332
+ apiBaseURL: string;
333
+ /**
334
+ * API base path
335
+ */
336
+ apiBasePath: string;
337
+ /**
338
+ * Whether to show the attribution
339
+ */
340
+ showAttribution?: boolean;
341
+ /**
342
+ * Optional headers to pass with API requests (e.g., for SSR auth)
343
+ */
344
+ headers?: HeadersInit;
345
+ /**
346
+ * Called when a route is rendered
347
+ * @param routeName - Name of the route (e.g., 'formList', 'formBuilder', 'submissions')
348
+ * @param context - Route context with path, params, etc.
349
+ */
350
+ onRouteRender?: (routeName: string, context: RouteContext) => void | Promise<void>;
351
+ /**
352
+ * Called when a route encounters an error
353
+ * @param routeName - Name of the route
354
+ * @param error - The error that occurred
355
+ * @param context - Route context
356
+ */
357
+ onRouteError?: (routeName: string, error: Error, context: RouteContext) => void | Promise<void>;
358
+ /**
359
+ * Called before the form list page is rendered
360
+ * Return false to prevent rendering (e.g., for authorization)
361
+ * @param context - Route context
362
+ */
363
+ onBeforeFormListRendered?: (context: RouteContext) => boolean;
364
+ /**
365
+ * Called before the form builder page is rendered
366
+ * Return false to prevent rendering (e.g., for authorization)
367
+ * @param id - The form ID (null for new forms)
368
+ * @param context - Route context
369
+ */
370
+ onBeforeFormBuilderRendered?: (id: string | null, context: RouteContext) => boolean;
371
+ /**
372
+ * Called before the submissions page is rendered
373
+ * Return false to prevent rendering (e.g., for authorization)
374
+ * @param formId - The form ID
375
+ * @param context - Route context
376
+ */
377
+ onBeforeSubmissionsRendered?: (formId: string, context: RouteContext) => boolean;
378
+ }
379
+
380
+ export { AutoFormInputComponentProps, formBuilderClientPlugin };
381
+ export type { FormBuilderClientConfig, FormBuilderClientHooks, FormBuilderLocalization, FormBuilderPluginOverrides, LoaderContext, RouteContext };