strapi-plugin-form-builder-cms 1.0.0-alpha.1

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.
@@ -0,0 +1,248 @@
1
+ declare const _default: {
2
+ register: ({ strapi }: {
3
+ strapi: import('@strapi/types/dist/core').Strapi;
4
+ }) => void;
5
+ bootstrap: ({ strapi }: {
6
+ strapi: import('@strapi/types/dist/core').Strapi;
7
+ }) => void;
8
+ destroy: ({ strapi }: {
9
+ strapi: import('@strapi/types/dist/core').Strapi;
10
+ }) => void;
11
+ config: {
12
+ default: {};
13
+ validator(): void;
14
+ };
15
+ controllers: {
16
+ form: {
17
+ find(ctx: any): Promise<void>;
18
+ findOne(ctx: any): Promise<any>;
19
+ create(ctx: any): Promise<void>;
20
+ update(ctx: any): Promise<any>;
21
+ delete(ctx: any): Promise<void>;
22
+ duplicate(ctx: any): Promise<any>;
23
+ getPublicSchema(ctx: any): Promise<any>;
24
+ getPublicSchemaById(ctx: any): Promise<any>;
25
+ serveEmbed(ctx: any): Promise<void>;
26
+ servePublicPage(ctx: any): Promise<any>;
27
+ };
28
+ submission: {
29
+ submit(ctx: any): Promise<any>;
30
+ find(ctx: any): Promise<void>;
31
+ findOne(ctx: any): Promise<any>;
32
+ updateStatus(ctx: any): Promise<void>;
33
+ delete(ctx: any): Promise<void>;
34
+ export(ctx: any): Promise<void>;
35
+ stats(ctx: any): Promise<void>;
36
+ };
37
+ };
38
+ routes: {
39
+ "content-api": {
40
+ type: string;
41
+ routes: {
42
+ method: string;
43
+ path: string;
44
+ handler: string;
45
+ config: {
46
+ auth: boolean;
47
+ policies: any[];
48
+ };
49
+ }[];
50
+ };
51
+ admin: {
52
+ type: string;
53
+ routes: {
54
+ method: string;
55
+ path: string;
56
+ handler: string;
57
+ }[];
58
+ };
59
+ };
60
+ services: {
61
+ form: ({ strapi }: {
62
+ strapi: any;
63
+ }) => {
64
+ find(): Promise<any>;
65
+ findOne(id: number): Promise<any>;
66
+ findBySlug(slug: string): Promise<any>;
67
+ create(data: any): Promise<any>;
68
+ update(id: number, data: any): Promise<any>;
69
+ delete(id: number): Promise<any>;
70
+ duplicate(id: number): Promise<any>;
71
+ getPublicSchemaById(id: number): Promise<{
72
+ data: {
73
+ id: any;
74
+ title: any;
75
+ slug: any;
76
+ description: any;
77
+ fields: any;
78
+ settings: any;
79
+ };
80
+ }>;
81
+ getPublicSchema(slug: string): Promise<{
82
+ data: {
83
+ id: any;
84
+ title: any;
85
+ slug: any;
86
+ description: any;
87
+ fields: any;
88
+ conditionalLogic: any;
89
+ settings: any;
90
+ };
91
+ }>;
92
+ };
93
+ submission: ({ strapi }: {
94
+ strapi: any;
95
+ }) => {
96
+ submit(slug: string, body: Record<string, any>, meta: {
97
+ ip: string;
98
+ userAgent: string;
99
+ }): Promise<{
100
+ success: boolean;
101
+ successMessage: any;
102
+ }>;
103
+ find(formId: number, query?: any): Promise<{
104
+ results: any;
105
+ pagination: {
106
+ page: number;
107
+ pageSize: number;
108
+ total: any;
109
+ pageCount: number;
110
+ };
111
+ }>;
112
+ findOne(id: number): Promise<any>;
113
+ updateStatus(id: number, status: string): Promise<any>;
114
+ delete(id: number): Promise<any>;
115
+ export(formId: number, format?: string): Promise<any>;
116
+ getStats(formId: number): Promise<{
117
+ total: any;
118
+ byStatus: Record<string, number>;
119
+ }>;
120
+ };
121
+ validation: () => {
122
+ validate(fields: import('./services/validation').FormField[], data: Record<string, any>): import('./services/validation').ValidationResult;
123
+ runRule(rule: import('./services/validation').ValidationRule, value: any, field: import('./services/validation').FormField, allData: Record<string, any>): string | null;
124
+ isEmpty(value: any): boolean;
125
+ };
126
+ };
127
+ contentTypes: {
128
+ form: {
129
+ schema: {
130
+ kind: string;
131
+ collectionName: string;
132
+ info: {
133
+ singularName: string;
134
+ pluralName: string;
135
+ displayName: string;
136
+ description: string;
137
+ };
138
+ options: {
139
+ draftAndPublish: boolean;
140
+ };
141
+ pluginOptions: {
142
+ "content-manager": {
143
+ visible: boolean;
144
+ };
145
+ "content-type-builder": {
146
+ visible: boolean;
147
+ };
148
+ };
149
+ attributes: {
150
+ title: {
151
+ type: string;
152
+ required: boolean;
153
+ maxLength: number;
154
+ };
155
+ slug: {
156
+ type: string;
157
+ targetField: string;
158
+ required: boolean;
159
+ };
160
+ description: {
161
+ type: string;
162
+ };
163
+ fields: {
164
+ type: string;
165
+ required: boolean;
166
+ default: any[];
167
+ };
168
+ conditionalLogic: {
169
+ type: string;
170
+ default: any[];
171
+ };
172
+ settings: {
173
+ type: string;
174
+ default: {
175
+ submitButtonText: string;
176
+ successMessage: string;
177
+ enableHoneypot: boolean;
178
+ enableRateLimit: boolean;
179
+ maxSubmissionsPerHour: number;
180
+ notificationEmails: any[];
181
+ redirectUrl: string;
182
+ customCss: string;
183
+ };
184
+ };
185
+ submissions: {
186
+ type: string;
187
+ relation: string;
188
+ target: string;
189
+ mappedBy: string;
190
+ };
191
+ };
192
+ };
193
+ };
194
+ 'form-submission': {
195
+ schema: {
196
+ kind: string;
197
+ collectionName: string;
198
+ info: {
199
+ singularName: string;
200
+ pluralName: string;
201
+ displayName: string;
202
+ description: string;
203
+ };
204
+ options: {
205
+ draftAndPublish: boolean;
206
+ };
207
+ pluginOptions: {
208
+ "content-manager": {
209
+ visible: boolean;
210
+ };
211
+ "content-type-builder": {
212
+ visible: boolean;
213
+ };
214
+ };
215
+ attributes: {
216
+ form: {
217
+ type: string;
218
+ relation: string;
219
+ target: string;
220
+ inversedBy: string;
221
+ };
222
+ data: {
223
+ type: string;
224
+ required: boolean;
225
+ };
226
+ metadata: {
227
+ type: string;
228
+ default: {};
229
+ };
230
+ ipAddress: {
231
+ type: string;
232
+ };
233
+ userAgent: {
234
+ type: string;
235
+ };
236
+ status: {
237
+ type: string;
238
+ enum: string[];
239
+ default: string;
240
+ };
241
+ };
242
+ };
243
+ };
244
+ };
245
+ policies: {};
246
+ middlewares: {};
247
+ };
248
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "strapi-plugin-form-builder-cms",
3
+ "version": "1.0.0-alpha.1",
4
+ "description": "Visual drag-and-drop form builder plugin for Strapi 5. Create, publish and embed forms on any website.",
5
+ "keywords": [
6
+ "strapi",
7
+ "strapi-plugin",
8
+ "form-builder",
9
+ "forms",
10
+ "drag-and-drop",
11
+ "cms"
12
+ ],
13
+ "license": "MIT",
14
+ "author": "dev.cluna <dev.cluna@gmail.com>",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/devCluna/strapi-plugin-form-builder-cms.git"
18
+ },
19
+ "bugs": {
20
+ "url": "https://github.com/devCluna/strapi-plugin-form-builder-cms/issues"
21
+ },
22
+ "homepage": "https://github.com/devCluna/strapi-plugin-form-builder-cms#readme",
23
+ "type": "commonjs",
24
+ "exports": {
25
+ "./package.json": "./package.json",
26
+ "./strapi-admin": {
27
+ "types": "./dist/admin/src/index.d.ts",
28
+ "source": "./admin/src/index.ts",
29
+ "import": "./dist/admin/index.mjs",
30
+ "require": "./dist/admin/index.js",
31
+ "default": "./dist/admin/index.js"
32
+ },
33
+ "./strapi-server": {
34
+ "types": "./dist/server/src/index.d.ts",
35
+ "source": "./server/src/index.ts",
36
+ "import": "./dist/server/index.mjs",
37
+ "require": "./dist/server/index.js",
38
+ "default": "./dist/server/index.js"
39
+ }
40
+ },
41
+ "files": [
42
+ "dist"
43
+ ],
44
+ "scripts": {
45
+ "build": "strapi-plugin build",
46
+ "watch": "strapi-plugin watch",
47
+ "watch:link": "strapi-plugin watch:link",
48
+ "verify": "strapi-plugin verify",
49
+ "test:ts:front": "npx tsc -p admin/tsconfig.json --noEmit",
50
+ "test:ts:back": "npx tsc -p server/tsconfig.json --noEmit"
51
+ },
52
+ "dependencies": {
53
+ "@dnd-kit/core": "^6.3.1",
54
+ "@dnd-kit/sortable": "^10.0.0",
55
+ "@dnd-kit/utilities": "^3.2.2",
56
+ "uuid": "^13.0.0"
57
+ },
58
+ "devDependencies": {
59
+ "@strapi/design-system": "^2.0.0-rc.30",
60
+ "@strapi/icons": "^2.0.0-rc.30",
61
+ "@strapi/sdk-plugin": "^6.0.1",
62
+ "@strapi/strapi": "^5.40.0",
63
+ "@strapi/typescript-utils": "^5.40.0",
64
+ "@types/react": "^19.2.14",
65
+ "@types/react-dom": "^19.2.3",
66
+ "@types/uuid": "^10.0.0",
67
+ "prettier": "^3.8.1",
68
+ "react": "^18.3.1",
69
+ "react-dom": "^18.3.1",
70
+ "react-intl": "^6.8.9",
71
+ "react-router-dom": "^6.30.3",
72
+ "styled-components": "^6.3.12",
73
+ "typescript": "^5.8.3"
74
+ },
75
+ "peerDependencies": {
76
+ "@strapi/design-system": "^2.0.0-rc.30",
77
+ "@strapi/icons": "^2.0.0-rc.30",
78
+ "@strapi/sdk-plugin": "^6.0.1",
79
+ "@strapi/strapi": "^5.40.0",
80
+ "react": "^18.3.1",
81
+ "react-dom": "^18.3.1",
82
+ "react-intl": "^6.8.9",
83
+ "react-router-dom": "^6.30.3",
84
+ "styled-components": "^6.3.12"
85
+ },
86
+ "strapi": {
87
+ "kind": "plugin",
88
+ "name": "strapi-plugin-form-builder-cms",
89
+ "displayName": "Form Builder CMS",
90
+ "description": "Visual drag-and-drop form builder plugin for Strapi 5"
91
+ }
92
+ }