@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,99 @@
1
+ 'use strict';
2
+
3
+ const db = require('@btst/db');
4
+
5
+ const formBuilderSchema = db.createDbPlugin("form-builder", {
6
+ form: {
7
+ modelName: "form",
8
+ fields: {
9
+ name: {
10
+ type: "string",
11
+ required: true
12
+ },
13
+ slug: {
14
+ type: "string",
15
+ required: true,
16
+ unique: true
17
+ },
18
+ description: {
19
+ type: "string",
20
+ required: false
21
+ },
22
+ // JSON Schema stored as string (includes steps, fieldType, stepGroup, etc.)
23
+ schema: {
24
+ type: "string",
25
+ required: true
26
+ },
27
+ // Optional custom success message after submission
28
+ successMessage: {
29
+ type: "string",
30
+ required: false
31
+ },
32
+ // Optional redirect URL after submission
33
+ redirectUrl: {
34
+ type: "string",
35
+ required: false
36
+ },
37
+ // Form status: active, inactive, archived
38
+ status: {
39
+ type: "string",
40
+ defaultValue: "active"
41
+ },
42
+ // User who created the form
43
+ createdBy: {
44
+ type: "string",
45
+ required: false
46
+ },
47
+ createdAt: {
48
+ type: "date",
49
+ defaultValue: () => /* @__PURE__ */ new Date()
50
+ },
51
+ updatedAt: {
52
+ type: "date",
53
+ defaultValue: () => /* @__PURE__ */ new Date()
54
+ }
55
+ }
56
+ },
57
+ formSubmission: {
58
+ modelName: "formSubmission",
59
+ fields: {
60
+ formId: {
61
+ type: "string",
62
+ required: true,
63
+ // Database reference for efficient joins
64
+ references: {
65
+ model: "form",
66
+ field: "id",
67
+ onDelete: "cascade"
68
+ }
69
+ },
70
+ // Submitted data as JSON string
71
+ data: {
72
+ type: "string",
73
+ required: true
74
+ },
75
+ // Submission timestamp
76
+ submittedAt: {
77
+ type: "date",
78
+ defaultValue: () => /* @__PURE__ */ new Date()
79
+ },
80
+ // Optional user ID if authenticated
81
+ submittedBy: {
82
+ type: "string",
83
+ required: false
84
+ },
85
+ // IP address for rate limiting and spam protection
86
+ ipAddress: {
87
+ type: "string",
88
+ required: false
89
+ },
90
+ // User agent for analytics
91
+ userAgent: {
92
+ type: "string",
93
+ required: false
94
+ }
95
+ }
96
+ }
97
+ });
98
+
99
+ exports.formBuilderSchema = formBuilderSchema;
@@ -0,0 +1,97 @@
1
+ import { createDbPlugin } from '@btst/db';
2
+
3
+ const formBuilderSchema = createDbPlugin("form-builder", {
4
+ form: {
5
+ modelName: "form",
6
+ fields: {
7
+ name: {
8
+ type: "string",
9
+ required: true
10
+ },
11
+ slug: {
12
+ type: "string",
13
+ required: true,
14
+ unique: true
15
+ },
16
+ description: {
17
+ type: "string",
18
+ required: false
19
+ },
20
+ // JSON Schema stored as string (includes steps, fieldType, stepGroup, etc.)
21
+ schema: {
22
+ type: "string",
23
+ required: true
24
+ },
25
+ // Optional custom success message after submission
26
+ successMessage: {
27
+ type: "string",
28
+ required: false
29
+ },
30
+ // Optional redirect URL after submission
31
+ redirectUrl: {
32
+ type: "string",
33
+ required: false
34
+ },
35
+ // Form status: active, inactive, archived
36
+ status: {
37
+ type: "string",
38
+ defaultValue: "active"
39
+ },
40
+ // User who created the form
41
+ createdBy: {
42
+ type: "string",
43
+ required: false
44
+ },
45
+ createdAt: {
46
+ type: "date",
47
+ defaultValue: () => /* @__PURE__ */ new Date()
48
+ },
49
+ updatedAt: {
50
+ type: "date",
51
+ defaultValue: () => /* @__PURE__ */ new Date()
52
+ }
53
+ }
54
+ },
55
+ formSubmission: {
56
+ modelName: "formSubmission",
57
+ fields: {
58
+ formId: {
59
+ type: "string",
60
+ required: true,
61
+ // Database reference for efficient joins
62
+ references: {
63
+ model: "form",
64
+ field: "id",
65
+ onDelete: "cascade"
66
+ }
67
+ },
68
+ // Submitted data as JSON string
69
+ data: {
70
+ type: "string",
71
+ required: true
72
+ },
73
+ // Submission timestamp
74
+ submittedAt: {
75
+ type: "date",
76
+ defaultValue: () => /* @__PURE__ */ new Date()
77
+ },
78
+ // Optional user ID if authenticated
79
+ submittedBy: {
80
+ type: "string",
81
+ required: false
82
+ },
83
+ // IP address for rate limiting and spam protection
84
+ ipAddress: {
85
+ type: "string",
86
+ required: false
87
+ },
88
+ // User agent for analytics
89
+ userAgent: {
90
+ type: "string",
91
+ required: false
92
+ }
93
+ }
94
+ }
95
+ });
96
+
97
+ export { formBuilderSchema };
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ const z = require('zod');
4
+
5
+ const listFormsQuerySchema = z.z.object({
6
+ status: z.z.enum(["active", "inactive", "archived"]).optional(),
7
+ limit: z.z.coerce.number().min(1).max(100).optional().default(20),
8
+ offset: z.z.coerce.number().min(0).optional().default(0)
9
+ });
10
+ const createFormSchema = z.z.object({
11
+ name: z.z.string().min(1, "Name is required"),
12
+ slug: z.z.string().min(1, "Slug is required"),
13
+ description: z.z.string().optional(),
14
+ schema: z.z.string().min(1, "Schema is required"),
15
+ successMessage: z.z.string().optional(),
16
+ redirectUrl: z.z.string().url().optional().or(z.z.literal("")),
17
+ status: z.z.enum(["active", "inactive", "archived"]).optional().default("active")
18
+ });
19
+ const updateFormSchema = z.z.object({
20
+ name: z.z.string().min(1, "Name is required").optional(),
21
+ slug: z.z.string().min(1, "Slug is required").optional(),
22
+ description: z.z.string().optional(),
23
+ schema: z.z.string().min(1, "Schema is required").optional(),
24
+ successMessage: z.z.string().optional(),
25
+ redirectUrl: z.z.string().url().optional().or(z.z.literal("")),
26
+ status: z.z.enum(["active", "inactive", "archived"]).optional()
27
+ });
28
+ const formResponseSchema = z.z.object({
29
+ id: z.z.string(),
30
+ name: z.z.string(),
31
+ slug: z.z.string(),
32
+ description: z.z.string().nullable().optional(),
33
+ schema: z.z.string(),
34
+ successMessage: z.z.string().nullable().optional(),
35
+ redirectUrl: z.z.string().nullable().optional(),
36
+ status: z.z.string(),
37
+ createdBy: z.z.string().nullable().optional(),
38
+ createdAt: z.z.string(),
39
+ updatedAt: z.z.string()
40
+ });
41
+ z.z.object({
42
+ items: z.z.array(formResponseSchema),
43
+ total: z.z.number(),
44
+ limit: z.z.number(),
45
+ offset: z.z.number()
46
+ });
47
+ const listSubmissionsQuerySchema = z.z.object({
48
+ limit: z.z.coerce.number().min(1).max(100).optional().default(20),
49
+ offset: z.z.coerce.number().min(0).optional().default(0)
50
+ });
51
+ z.z.object({
52
+ // Use passthrough object for dynamic form data validation
53
+ data: z.z.object({}).passthrough()
54
+ });
55
+ const formSubmissionResponseSchema = z.z.object({
56
+ id: z.z.string(),
57
+ formId: z.z.string(),
58
+ data: z.z.string(),
59
+ submittedAt: z.z.string(),
60
+ submittedBy: z.z.string().nullable().optional(),
61
+ ipAddress: z.z.string().nullable().optional(),
62
+ userAgent: z.z.string().nullable().optional()
63
+ });
64
+ const formSubmissionWithDataResponseSchema = formSubmissionResponseSchema.extend({
65
+ // Use passthrough object for dynamic parsed data
66
+ parsedData: z.z.object({}).passthrough(),
67
+ form: formResponseSchema.optional()
68
+ });
69
+ z.z.object({
70
+ items: z.z.array(formSubmissionWithDataResponseSchema),
71
+ total: z.z.number(),
72
+ limit: z.z.number(),
73
+ offset: z.z.number()
74
+ });
75
+
76
+ exports.createFormSchema = createFormSchema;
77
+ exports.formResponseSchema = formResponseSchema;
78
+ exports.formSubmissionResponseSchema = formSubmissionResponseSchema;
79
+ exports.formSubmissionWithDataResponseSchema = formSubmissionWithDataResponseSchema;
80
+ exports.listFormsQuerySchema = listFormsQuerySchema;
81
+ exports.listSubmissionsQuerySchema = listSubmissionsQuerySchema;
82
+ exports.updateFormSchema = updateFormSchema;
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+
3
+ const listFormsQuerySchema = z.object({
4
+ status: z.enum(["active", "inactive", "archived"]).optional(),
5
+ limit: z.coerce.number().min(1).max(100).optional().default(20),
6
+ offset: z.coerce.number().min(0).optional().default(0)
7
+ });
8
+ const createFormSchema = z.object({
9
+ name: z.string().min(1, "Name is required"),
10
+ slug: z.string().min(1, "Slug is required"),
11
+ description: z.string().optional(),
12
+ schema: z.string().min(1, "Schema is required"),
13
+ successMessage: z.string().optional(),
14
+ redirectUrl: z.string().url().optional().or(z.literal("")),
15
+ status: z.enum(["active", "inactive", "archived"]).optional().default("active")
16
+ });
17
+ const updateFormSchema = z.object({
18
+ name: z.string().min(1, "Name is required").optional(),
19
+ slug: z.string().min(1, "Slug is required").optional(),
20
+ description: z.string().optional(),
21
+ schema: z.string().min(1, "Schema is required").optional(),
22
+ successMessage: z.string().optional(),
23
+ redirectUrl: z.string().url().optional().or(z.literal("")),
24
+ status: z.enum(["active", "inactive", "archived"]).optional()
25
+ });
26
+ const formResponseSchema = z.object({
27
+ id: z.string(),
28
+ name: z.string(),
29
+ slug: z.string(),
30
+ description: z.string().nullable().optional(),
31
+ schema: z.string(),
32
+ successMessage: z.string().nullable().optional(),
33
+ redirectUrl: z.string().nullable().optional(),
34
+ status: z.string(),
35
+ createdBy: z.string().nullable().optional(),
36
+ createdAt: z.string(),
37
+ updatedAt: z.string()
38
+ });
39
+ z.object({
40
+ items: z.array(formResponseSchema),
41
+ total: z.number(),
42
+ limit: z.number(),
43
+ offset: z.number()
44
+ });
45
+ const listSubmissionsQuerySchema = z.object({
46
+ limit: z.coerce.number().min(1).max(100).optional().default(20),
47
+ offset: z.coerce.number().min(0).optional().default(0)
48
+ });
49
+ z.object({
50
+ // Use passthrough object for dynamic form data validation
51
+ data: z.object({}).passthrough()
52
+ });
53
+ const formSubmissionResponseSchema = z.object({
54
+ id: z.string(),
55
+ formId: z.string(),
56
+ data: z.string(),
57
+ submittedAt: z.string(),
58
+ submittedBy: z.string().nullable().optional(),
59
+ ipAddress: z.string().nullable().optional(),
60
+ userAgent: z.string().nullable().optional()
61
+ });
62
+ const formSubmissionWithDataResponseSchema = formSubmissionResponseSchema.extend({
63
+ // Use passthrough object for dynamic parsed data
64
+ parsedData: z.object({}).passthrough(),
65
+ form: formResponseSchema.optional()
66
+ });
67
+ z.object({
68
+ items: z.array(formSubmissionWithDataResponseSchema),
69
+ total: z.number(),
70
+ limit: z.number(),
71
+ offset: z.number()
72
+ });
73
+
74
+ export { createFormSchema, formResponseSchema, formSubmissionResponseSchema, formSubmissionWithDataResponseSchema, listFormsQuerySchema, listSubmissionsQuerySchema, updateFormSchema };
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ require('clsx');
4
+ require('tailwind-merge');
5
+ const slug = require('slug');
6
+
7
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
8
+
9
+ const slug__default = /*#__PURE__*/_interopDefaultCompat(slug);
10
+
11
+ function slugify(text, locale = "en") {
12
+ return slug__default(text, { lower: true, locale });
13
+ }
14
+ function extractIpAddress(headers) {
15
+ if (!headers) return void 0;
16
+ const forwardedFor = headers.get("x-forwarded-for");
17
+ if (forwardedFor) {
18
+ return forwardedFor.split(",")[0]?.trim();
19
+ }
20
+ const realIp = headers.get("x-real-ip");
21
+ if (realIp) {
22
+ return realIp.trim();
23
+ }
24
+ const cfConnectingIp = headers.get("cf-connecting-ip");
25
+ if (cfConnectingIp) {
26
+ return cfConnectingIp.trim();
27
+ }
28
+ return void 0;
29
+ }
30
+ function extractUserAgent(headers) {
31
+ if (!headers) return void 0;
32
+ return headers.get("user-agent") || void 0;
33
+ }
34
+
35
+ exports.extractIpAddress = extractIpAddress;
36
+ exports.extractUserAgent = extractUserAgent;
37
+ exports.slugify = slugify;
@@ -0,0 +1,29 @@
1
+ import 'clsx';
2
+ import 'tailwind-merge';
3
+ import slug from 'slug';
4
+
5
+ function slugify(text, locale = "en") {
6
+ return slug(text, { lower: true, locale });
7
+ }
8
+ function extractIpAddress(headers) {
9
+ if (!headers) return void 0;
10
+ const forwardedFor = headers.get("x-forwarded-for");
11
+ if (forwardedFor) {
12
+ return forwardedFor.split(",")[0]?.trim();
13
+ }
14
+ const realIp = headers.get("x-real-ip");
15
+ if (realIp) {
16
+ return realIp.trim();
17
+ }
18
+ const cfConnectingIp = headers.get("cf-connecting-ip");
19
+ if (cfConnectingIp) {
20
+ return cfConnectingIp.trim();
21
+ }
22
+ return void 0;
23
+ }
24
+ function extractUserAgent(headers) {
25
+ if (!headers) return void 0;
26
+ return headers.get("user-agent") || void 0;
27
+ }
28
+
29
+ export { extractIpAddress, extractUserAgent, slugify };
@@ -1,13 +1,11 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- Object.defineProperty(exports, '__esModule', { value: true });
5
-
6
4
  const jsxRuntime = require('react/jsx-runtime');
7
5
  const form = require('../form.cjs');
8
6
  const React = require('react');
9
7
  const reactHookForm = require('react-hook-form');
10
- const button = require('../button.cjs');
8
+ require('../button.cjs');
11
9
  const utils$1 = require('../../lib/utils.cjs');
12
10
  const zod = require('@hookform/resolvers/zod');
13
11
  const object = require('./fields/object.cjs');
@@ -17,13 +15,6 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
17
15
 
18
16
  const React__default = /*#__PURE__*/_interopDefaultCompat(React);
19
17
 
20
- function AutoFormSubmit({
21
- children,
22
- className,
23
- disabled
24
- }) {
25
- return /* @__PURE__ */ jsxRuntime.jsx(button.Button, { type: "submit", disabled, className, children: children ?? "Submit" });
26
- }
27
18
  function AutoForm({
28
19
  formSchema,
29
20
  values: valuesProp,
@@ -83,5 +74,4 @@ function AutoForm({
83
74
  ) }) });
84
75
  }
85
76
 
86
- exports.AutoFormSubmit = AutoFormSubmit;
87
- exports.default = AutoForm;
77
+ module.exports = AutoForm;
@@ -3,19 +3,12 @@ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { Form } from '../form.mjs';
4
4
  import React__default from 'react';
5
5
  import { useForm } from 'react-hook-form';
6
- import { Button } from '../button.mjs';
6
+ import '../button.mjs';
7
7
  import { cn } from '../../lib/utils.mjs';
8
8
  import { zodResolver } from '@hookform/resolvers/zod';
9
9
  import AutoFormObject from './fields/object.mjs';
10
10
  import { getObjectFormSchema, getDefaultValues } from './utils.mjs';
11
11
 
12
- function AutoFormSubmit({
13
- children,
14
- className,
15
- disabled
16
- }) {
17
- return /* @__PURE__ */ jsx(Button, { type: "submit", disabled, className, children: children ?? "Submit" });
18
- }
19
12
  function AutoForm({
20
13
  formSchema,
21
14
  values: valuesProp,
@@ -75,4 +68,4 @@ function AutoForm({
75
68
  ) }) });
76
69
  }
77
70
 
78
- export { AutoFormSubmit, AutoForm as default };
71
+ export { AutoForm as default };