@sanity/form-toolkit 2.2.3 → 3.0.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.
- package/LICENSE +2 -1
- package/dist/_chunks-es/{create-handler.mjs → create-handler.js} +45 -17
- package/dist/_chunks-es/create-handler.js.map +1 -0
- package/dist/form-renderer/index.d.ts +53 -64
- package/dist/form-renderer/index.d.ts.map +1 -0
- package/dist/form-renderer/index.js +123 -108
- package/dist/form-renderer/index.js.map +1 -1
- package/dist/form-schema/index.d.ts +7 -11
- package/dist/form-schema/index.d.ts.map +1 -0
- package/dist/form-schema/index.js +181 -181
- package/dist/form-schema/index.js.map +1 -1
- package/dist/formium/index.d.ts +4 -7
- package/dist/formium/index.d.ts.map +1 -0
- package/dist/formium/index.js +35 -25
- package/dist/formium/index.js.map +1 -1
- package/dist/hubspot/index.d.ts +52 -48
- package/dist/hubspot/index.d.ts.map +1 -0
- package/dist/hubspot/index.js +52 -26
- package/dist/hubspot/index.js.map +1 -1
- package/dist/mailchimp/index.d.ts +56 -42
- package/dist/mailchimp/index.d.ts.map +1 -0
- package/dist/mailchimp/index.js +55 -37
- package/dist/mailchimp/index.js.map +1 -1
- package/package.json +38 -109
- package/dist/_chunks-cjs/create-handler.js +0 -68
- package/dist/_chunks-cjs/create-handler.js.map +0 -1
- package/dist/_chunks-es/create-handler.mjs.map +0 -1
- package/dist/form-renderer/index.d.mts +0 -66
- package/dist/form-renderer/index.mjs +0 -128
- package/dist/form-renderer/index.mjs.map +0 -1
- package/dist/form-schema/index.d.mts +0 -28
- package/dist/form-schema/index.mjs +0 -230
- package/dist/form-schema/index.mjs.map +0 -1
- package/dist/formium/index.d.mts +0 -20
- package/dist/formium/index.mjs +0 -30
- package/dist/formium/index.mjs.map +0 -1
- package/dist/hubspot/index.d.mts +0 -49
- package/dist/hubspot/index.mjs +0 -48
- package/dist/hubspot/index.mjs.map +0 -1
- package/dist/mailchimp/index.d.mts +0 -45
- package/dist/mailchimp/index.mjs +0 -49
- package/dist/mailchimp/index.mjs.map +0 -1
- package/sanity.json +0 -8
- package/src/form-renderer/components/default-field.tsx +0 -123
- package/src/form-renderer/components/form-renderer.tsx +0 -62
- package/src/form-renderer/components/types.ts +0 -51
- package/src/form-renderer/index.ts +0 -4
- package/src/form-schema/components/validation-type.tsx +0 -14
- package/src/form-schema/index.ts +0 -35
- package/src/form-schema/schema-types/form-field.ts +0 -224
- package/src/form-schema/schema-types/form.ts +0 -52
- package/src/form-schema/schema-types/index.ts +0 -9
- package/src/formium/index.ts +0 -52
- package/src/hubspot/components/option.tsx +0 -17
- package/src/hubspot/create-handler.ts +0 -6
- package/src/hubspot/fetch-hubspot-data.ts +0 -33
- package/src/hubspot/index.ts +0 -52
- package/src/index.ts +0 -19
- package/src/mailchimp/components/option.tsx +0 -30
- package/src/mailchimp/create-handler.ts +0 -39
- package/src/mailchimp/index.ts +0 -43
- package/src/shared/create-handler.ts +0 -109
- package/v2-incompatible.js +0 -11
package/package.json
CHANGED
|
@@ -1,135 +1,64 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanity/form-toolkit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Tool kit for integrating forms with a Sanity Studio",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sanity",
|
|
7
7
|
"sanity-plugin"
|
|
8
8
|
],
|
|
9
|
-
"homepage": "https://github.com/sanity-io/form-toolkit#readme",
|
|
9
|
+
"homepage": "https://github.com/sanity-io/plugins/tree/main/plugins/@sanity/form-toolkit#readme",
|
|
10
10
|
"bugs": {
|
|
11
|
-
"url": "https://github.com/sanity-io/
|
|
11
|
+
"url": "https://github.com/sanity-io/plugins/issues"
|
|
12
12
|
},
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Sanity.io <hello@sanity.io>",
|
|
13
15
|
"repository": {
|
|
14
16
|
"type": "git",
|
|
15
|
-
"url": "git+ssh://git@github.com/sanity-io/
|
|
16
|
-
|
|
17
|
-
"license": "MIT",
|
|
18
|
-
"author": "Chris LaRocque <chris.larocque@sanity.io>",
|
|
19
|
-
"sideEffects": false,
|
|
20
|
-
"type": "commonjs",
|
|
21
|
-
"exports": {
|
|
22
|
-
"./formium": {
|
|
23
|
-
"source": "./src/formium/index.ts",
|
|
24
|
-
"import": "./dist/formium/index.mjs",
|
|
25
|
-
"default": "./dist/formium/index.js"
|
|
26
|
-
},
|
|
27
|
-
"./hubspot": {
|
|
28
|
-
"source": "./src/hubspot/index.ts",
|
|
29
|
-
"import": "./dist/hubspot/index.mjs",
|
|
30
|
-
"default": "./dist/hubspot/index.js"
|
|
31
|
-
},
|
|
32
|
-
"./mailchimp": {
|
|
33
|
-
"source": "./src/mailchimp/index.ts",
|
|
34
|
-
"import": "./dist/mailchimp/index.mjs",
|
|
35
|
-
"default": "./dist/mailchimp/index.js"
|
|
36
|
-
},
|
|
37
|
-
"./form-schema": {
|
|
38
|
-
"source": "./src/form-schema/index.ts",
|
|
39
|
-
"import": "./dist/form-schema/index.mjs",
|
|
40
|
-
"default": "./dist/form-schema/index.js"
|
|
41
|
-
},
|
|
42
|
-
"./form-renderer": {
|
|
43
|
-
"source": "./src/form-renderer/index.ts",
|
|
44
|
-
"import": "./dist/form-renderer/index.mjs",
|
|
45
|
-
"default": "./dist/form-renderer/index.js"
|
|
46
|
-
},
|
|
47
|
-
"./package.json": "./package.json"
|
|
48
|
-
},
|
|
49
|
-
"main": "./dist/index.js",
|
|
50
|
-
"typesVersions": {
|
|
51
|
-
"*": {
|
|
52
|
-
"formium": [
|
|
53
|
-
"./dist/formium/index.d.ts"
|
|
54
|
-
],
|
|
55
|
-
"hubspot": [
|
|
56
|
-
"./dist/hubspot/index.d.ts"
|
|
57
|
-
],
|
|
58
|
-
"mailchimp": [
|
|
59
|
-
"./dist/mailchimp/index.d.ts"
|
|
60
|
-
],
|
|
61
|
-
"form-schema": [
|
|
62
|
-
"./dist/form-schema/index.d.ts"
|
|
63
|
-
],
|
|
64
|
-
"form-renderer": [
|
|
65
|
-
"./dist/form-renderer/index.d.ts"
|
|
66
|
-
]
|
|
67
|
-
}
|
|
17
|
+
"url": "git+ssh://git@github.com/sanity-io/plugins.git",
|
|
18
|
+
"directory": "plugins/@sanity/form-toolkit"
|
|
68
19
|
},
|
|
69
20
|
"files": [
|
|
70
|
-
"dist"
|
|
71
|
-
"sanity.json",
|
|
72
|
-
"src",
|
|
73
|
-
"v2-incompatible.js"
|
|
21
|
+
"dist"
|
|
74
22
|
],
|
|
75
|
-
"
|
|
76
|
-
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
23
|
+
"type": "module",
|
|
24
|
+
"exports": {
|
|
25
|
+
"./formium": "./dist/formium/index.js",
|
|
26
|
+
"./hubspot": "./dist/hubspot/index.js",
|
|
27
|
+
"./mailchimp": "./dist/mailchimp/index.js",
|
|
28
|
+
"./form-schema": "./dist/form-schema/index.js",
|
|
29
|
+
"./form-renderer": "./dist/form-renderer/index.js",
|
|
30
|
+
"./package.json": "./package.json"
|
|
83
31
|
},
|
|
84
32
|
"dependencies": {
|
|
85
33
|
"@formium/client": "^0.1.4",
|
|
86
34
|
"@mailchimp/mailchimp_marketing": "^3.0.80",
|
|
87
|
-
"@sanity/
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"@sanity/
|
|
91
|
-
"h3": "^1.13.0",
|
|
92
|
-
"react-hook-form": "^7.54.2",
|
|
93
|
-
"react-icons": "^5.4.0",
|
|
94
|
-
"react-rx": "^4.1.11"
|
|
35
|
+
"@sanity/ui": "^3.2.0",
|
|
36
|
+
"h3": "^1.15.11",
|
|
37
|
+
"react-icons": "^5.6.0",
|
|
38
|
+
"@sanity/sanity-plugin-async-list": "^2.0.1"
|
|
95
39
|
},
|
|
96
40
|
"devDependencies": {
|
|
97
|
-
"@
|
|
98
|
-
"@
|
|
99
|
-
"@
|
|
100
|
-
"@
|
|
101
|
-
"@
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"eslint-config-sanity": "^7.1.3",
|
|
109
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
110
|
-
"eslint-plugin-react": "^7.37.2",
|
|
111
|
-
"eslint-plugin-react-hooks": "^5.1.0",
|
|
112
|
-
"husky": "^9.1.7",
|
|
113
|
-
"lint-staged": "^15.4.1",
|
|
114
|
-
"prettier": "^3.4.2",
|
|
115
|
-
"prettier-plugin-packagejson": "^2.5.6",
|
|
116
|
-
"react": "^18",
|
|
117
|
-
"react-dom": "^18",
|
|
118
|
-
"sanity": "^3.66.1",
|
|
119
|
-
"styled-components": "^6.1.13",
|
|
120
|
-
"typescript": "^5.7.2"
|
|
41
|
+
"@sanity/pkg-utils": "^10.5.7",
|
|
42
|
+
"@types/mailchimp__mailchimp_marketing": "^3.0.22",
|
|
43
|
+
"@types/node": "^24.13.2",
|
|
44
|
+
"@types/react": "^19.2.17",
|
|
45
|
+
"@types/react-dom": "^19.2.3",
|
|
46
|
+
"babel-plugin-react-compiler": "^1.0.0",
|
|
47
|
+
"react": "^19.2.7",
|
|
48
|
+
"react-dom": "^19.2.7",
|
|
49
|
+
"sanity": "^6.1.0",
|
|
50
|
+
"@repo/package.config": "0.0.0",
|
|
51
|
+
"@repo/tsconfig": "0.0.0"
|
|
121
52
|
},
|
|
122
53
|
"peerDependencies": {
|
|
123
|
-
"react": "^
|
|
124
|
-
"
|
|
54
|
+
"react": "^19.2",
|
|
55
|
+
"react-dom": "^19.2",
|
|
56
|
+
"sanity": "^5 || ^6.0.0-0"
|
|
125
57
|
},
|
|
126
58
|
"engines": {
|
|
127
|
-
"node": ">=
|
|
59
|
+
"node": ">=20.19 <22 || >=22.12"
|
|
128
60
|
},
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
},
|
|
132
|
-
"publishConfig": {
|
|
133
|
-
"access": "public"
|
|
61
|
+
"scripts": {
|
|
62
|
+
"build": "pkg build --strict --check --clean"
|
|
134
63
|
}
|
|
135
|
-
}
|
|
64
|
+
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var h3 = require("h3");
|
|
3
|
-
const detectFramework = () => {
|
|
4
|
-
if (process.env.NEXT_RUNTIME)
|
|
5
|
-
return "nextjs";
|
|
6
|
-
if (process.env.NUXT_ENV)
|
|
7
|
-
return "nuxt";
|
|
8
|
-
if (process.env.SVELTEKIT_ENV)
|
|
9
|
-
return "sveltekit";
|
|
10
|
-
if (process.env.REMIX_ENV)
|
|
11
|
-
return "remix";
|
|
12
|
-
if (process.env.ASTRO_ENV)
|
|
13
|
-
return "astro";
|
|
14
|
-
throw new Error("Unable to detect framework.");
|
|
15
|
-
}, createHandler = (handlerFunc) => {
|
|
16
|
-
const framework = detectFramework(), handlerLogic = async ({
|
|
17
|
-
// eslint-disable-next-line
|
|
18
|
-
req,
|
|
19
|
-
res
|
|
20
|
-
}) => {
|
|
21
|
-
try {
|
|
22
|
-
const data = await handlerFunc();
|
|
23
|
-
return res && (res.writeHead(200, { "Content-Type": "application/json" }), res.end(JSON.stringify(data))), data;
|
|
24
|
-
} catch (error) {
|
|
25
|
-
return error instanceof Error ? (res && (res.writeHead(500, { "Content-Type": "application/json" }), res.end(JSON.stringify({ error: error.message }))), { error: error.message }) : (res && (res.writeHead(500, { "Content-Type": "application/json" }), res.end(JSON.stringify({ error: "An unexpected error occurred" }))), { error: "An unexpected error occurred" });
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
if (framework === "nextjs")
|
|
29
|
-
return async (req, res) => {
|
|
30
|
-
res.setHeader("Access-Control-Allow-Origin", "*"), res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"), res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization"), await handlerLogic({ req, res });
|
|
31
|
-
};
|
|
32
|
-
if (framework === "nuxt")
|
|
33
|
-
return h3.defineEventHandler(async (event) => {
|
|
34
|
-
const req = event.node.req, res = event.node.res;
|
|
35
|
-
return handlerLogic({ req, res });
|
|
36
|
-
});
|
|
37
|
-
if (framework === "sveltekit")
|
|
38
|
-
return {
|
|
39
|
-
GET: async ({ request }) => {
|
|
40
|
-
const result = await handlerLogic({ req: request });
|
|
41
|
-
return new Response(JSON.stringify(result), {
|
|
42
|
-
headers: { "Content-Type": "application/json" }
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
if (framework === "remix")
|
|
47
|
-
return {
|
|
48
|
-
loader: async ({ request }) => {
|
|
49
|
-
const result = await handlerLogic({ req: request });
|
|
50
|
-
return new Response(JSON.stringify(result), {
|
|
51
|
-
headers: { "Content-Type": "application/json" }
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
if (framework === "astro")
|
|
56
|
-
return {
|
|
57
|
-
get: async ({ request }) => {
|
|
58
|
-
const result = await handlerLogic({ req: request });
|
|
59
|
-
return {
|
|
60
|
-
body: JSON.stringify(result),
|
|
61
|
-
headers: { "Content-Type": "application/json" }
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
throw new Error(`Unsupported framework: ${framework}`);
|
|
66
|
-
};
|
|
67
|
-
exports.createHandler = createHandler;
|
|
68
|
-
//# sourceMappingURL=create-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-handler.js","sources":["../../src/shared/create-handler.ts"],"sourcesContent":["import {defineEventHandler, type H3Event} from 'h3' // For Nuxt.js/Nitro\nimport type {IncomingMessage, ServerResponse} from 'http'\n\n// Utility function to detect the framework at runtime\nconst detectFramework = (): string => {\n if (process.env.NEXT_RUNTIME) {\n return 'nextjs'\n } else if (process.env.NUXT_ENV) {\n return 'nuxt'\n } else if (process.env.SVELTEKIT_ENV) {\n return 'sveltekit'\n } else if (process.env.REMIX_ENV) {\n return 'remix'\n } else if (process.env.ASTRO_ENV) {\n return 'astro'\n }\n throw new Error('Unable to detect framework.')\n}\n\n// Create a generic handler with predefined logic\nconst createHandler = (handlerFunc: () => Promise<unknown>) => {\n const framework = detectFramework()\n\n // Handler logic to fetch Mailchimp data\n const handlerLogic = async ({\n // eslint-disable-next-line\n req,\n res,\n }: {\n req: IncomingMessage | Request\n res?: ServerResponse\n }): Promise<unknown> => {\n try {\n const data = await handlerFunc()\n\n if (res) {\n // Send response directly for frameworks like Next.js and Nuxt.js\n res.writeHead(200, {'Content-Type': 'application/json'})\n res.end(JSON.stringify(data))\n }\n\n // Return the response for frameworks like SvelteKit, Remix, and Astro\n return data\n } catch (error) {\n if (error instanceof Error) {\n if (res) {\n res.writeHead(500, {'Content-Type': 'application/json'})\n res.end(JSON.stringify({error: error.message}))\n }\n return {error: error.message}\n }\n // Handle non-Error types (e.g., strings, objects)\n if (res) {\n res.writeHead(500, {'Content-Type': 'application/json'})\n res.end(JSON.stringify({error: 'An unexpected error occurred'}))\n }\n return {error: 'An unexpected error occurred'}\n }\n }\n\n // Framework-specific implementations\n if (framework === 'nextjs') {\n return async (req: IncomingMessage, res: ServerResponse) => {\n // Set CORS headers\n res.setHeader('Access-Control-Allow-Origin', '*') // Allow all origins\n res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') // Allowed HTTP methods\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization') // Allowed headers\n\n await handlerLogic({req, res})\n }\n } else if (framework === 'nuxt') {\n return defineEventHandler(async (event: H3Event) => {\n const req = event.node.req\n const res = event.node.res\n return handlerLogic({req, res})\n })\n } else if (framework === 'sveltekit') {\n return {\n GET: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return new Response(JSON.stringify(result), {\n headers: {'Content-Type': 'application/json'},\n })\n },\n }\n } else if (framework === 'remix') {\n return {\n loader: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return new Response(JSON.stringify(result), {\n headers: {'Content-Type': 'application/json'},\n })\n },\n }\n } else if (framework === 'astro') {\n return {\n get: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return {\n body: JSON.stringify(result),\n headers: {'Content-Type': 'application/json'},\n }\n },\n }\n }\n throw new Error(`Unsupported framework: ${framework}`)\n}\n\nexport default createHandler\n"],"names":["defineEventHandler"],"mappings":";;AAIA,MAAM,kBAAkB,MAAc;AACpC,MAAI,QAAQ,IAAI;AACP,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AAEH,QAAA,IAAI,MAAM,6BAA6B;AAC/C,GAGM,gBAAgB,CAAC,gBAAwC;AAC7D,QAAM,YAAY,mBAGZ,eAAe,OAAO;AAAA;AAAA,IAE1B;AAAA,IACA;AAAA,EAAA,MAIsB;AAClB,QAAA;AACI,YAAA,OAAO,MAAM,YAAY;AAE/B,aAAI,QAEF,IAAI,UAAU,KAAK,EAAC,gBAAgB,mBAAA,CAAmB,GACvD,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAIvB;AAAA,aACA,OAAO;AACV,aAAA,iBAAiB,SACf,QACF,IAAI,UAAU,KAAK,EAAC,gBAAgB,oBAAmB,GACvD,IAAI,IAAI,KAAK,UAAU,EAAC,OAAO,MAAM,QAAQ,CAAA,CAAC,IAEzC,EAAC,OAAO,MAAM,QAAO,MAG1B,QACF,IAAI,UAAU,KAAK,EAAC,gBAAgB,mBAAmB,CAAA,GACvD,IAAI,IAAI,KAAK,UAAU,EAAC,OAAO,+BAAA,CAA+B,CAAC,IAE1D,EAAC,OAAO;IAA8B;AAAA,EAEjD;AAGA,MAAI,cAAc;AACT,WAAA,OAAO,KAAsB,QAAwB;AAE1D,UAAI,UAAU,+BAA+B,GAAG,GAChD,IAAI,UAAU,gCAAgC,iCAAiC,GAC/E,IAAI,UAAU,gCAAgC,6BAA6B,GAE3E,MAAM,aAAa,EAAC,KAAK,KAAI;AAAA,IAC/B;AACK,MAAI,cAAc;AAChB,WAAAA,GAAAA,mBAAmB,OAAO,UAAmB;AAClD,YAAM,MAAM,MAAM,KAAK,KACjB,MAAM,MAAM,KAAK;AACvB,aAAO,aAAa,EAAC,KAAK,KAAI;AAAA,IAAA,CAC/B;AACI,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,KAAK,OAAO,EAAC,cAAiC;AAC5C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AAChD,eAAO,IAAI,SAAS,KAAK,UAAU,MAAM,GAAG;AAAA,UAC1C,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAAA,CAC7C;AAAA,MAAA;AAAA,IAEL;AACK,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,QAAQ,OAAO,EAAC,cAAiC;AAC/C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AAChD,eAAO,IAAI,SAAS,KAAK,UAAU,MAAM,GAAG;AAAA,UAC1C,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAAA,CAC7C;AAAA,MAAA;AAAA,IAEL;AACK,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,KAAK,OAAO,EAAC,cAAiC;AAC5C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AACzC,eAAA;AAAA,UACL,MAAM,KAAK,UAAU,MAAM;AAAA,UAC3B,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAC9C;AAAA,MAAA;AAAA,IAEJ;AAEF,QAAM,IAAI,MAAM,0BAA0B,SAAS,EAAE;AACvD;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-handler.mjs","sources":["../../src/shared/create-handler.ts"],"sourcesContent":["import {defineEventHandler, type H3Event} from 'h3' // For Nuxt.js/Nitro\nimport type {IncomingMessage, ServerResponse} from 'http'\n\n// Utility function to detect the framework at runtime\nconst detectFramework = (): string => {\n if (process.env.NEXT_RUNTIME) {\n return 'nextjs'\n } else if (process.env.NUXT_ENV) {\n return 'nuxt'\n } else if (process.env.SVELTEKIT_ENV) {\n return 'sveltekit'\n } else if (process.env.REMIX_ENV) {\n return 'remix'\n } else if (process.env.ASTRO_ENV) {\n return 'astro'\n }\n throw new Error('Unable to detect framework.')\n}\n\n// Create a generic handler with predefined logic\nconst createHandler = (handlerFunc: () => Promise<unknown>) => {\n const framework = detectFramework()\n\n // Handler logic to fetch Mailchimp data\n const handlerLogic = async ({\n // eslint-disable-next-line\n req,\n res,\n }: {\n req: IncomingMessage | Request\n res?: ServerResponse\n }): Promise<unknown> => {\n try {\n const data = await handlerFunc()\n\n if (res) {\n // Send response directly for frameworks like Next.js and Nuxt.js\n res.writeHead(200, {'Content-Type': 'application/json'})\n res.end(JSON.stringify(data))\n }\n\n // Return the response for frameworks like SvelteKit, Remix, and Astro\n return data\n } catch (error) {\n if (error instanceof Error) {\n if (res) {\n res.writeHead(500, {'Content-Type': 'application/json'})\n res.end(JSON.stringify({error: error.message}))\n }\n return {error: error.message}\n }\n // Handle non-Error types (e.g., strings, objects)\n if (res) {\n res.writeHead(500, {'Content-Type': 'application/json'})\n res.end(JSON.stringify({error: 'An unexpected error occurred'}))\n }\n return {error: 'An unexpected error occurred'}\n }\n }\n\n // Framework-specific implementations\n if (framework === 'nextjs') {\n return async (req: IncomingMessage, res: ServerResponse) => {\n // Set CORS headers\n res.setHeader('Access-Control-Allow-Origin', '*') // Allow all origins\n res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') // Allowed HTTP methods\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization') // Allowed headers\n\n await handlerLogic({req, res})\n }\n } else if (framework === 'nuxt') {\n return defineEventHandler(async (event: H3Event) => {\n const req = event.node.req\n const res = event.node.res\n return handlerLogic({req, res})\n })\n } else if (framework === 'sveltekit') {\n return {\n GET: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return new Response(JSON.stringify(result), {\n headers: {'Content-Type': 'application/json'},\n })\n },\n }\n } else if (framework === 'remix') {\n return {\n loader: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return new Response(JSON.stringify(result), {\n headers: {'Content-Type': 'application/json'},\n })\n },\n }\n } else if (framework === 'astro') {\n return {\n get: async ({request}: {request: Request}) => {\n const result = await handlerLogic({req: request})\n return {\n body: JSON.stringify(result),\n headers: {'Content-Type': 'application/json'},\n }\n },\n }\n }\n throw new Error(`Unsupported framework: ${framework}`)\n}\n\nexport default createHandler\n"],"names":[],"mappings":";AAIA,MAAM,kBAAkB,MAAc;AACpC,MAAI,QAAQ,IAAI;AACP,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AACF,MAAI,QAAQ,IAAI;AACd,WAAA;AAEH,QAAA,IAAI,MAAM,6BAA6B;AAC/C,GAGM,gBAAgB,CAAC,gBAAwC;AAC7D,QAAM,YAAY,mBAGZ,eAAe,OAAO;AAAA;AAAA,IAE1B;AAAA,IACA;AAAA,EAAA,MAIsB;AAClB,QAAA;AACI,YAAA,OAAO,MAAM,YAAY;AAE/B,aAAI,QAEF,IAAI,UAAU,KAAK,EAAC,gBAAgB,mBAAA,CAAmB,GACvD,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAIvB;AAAA,aACA,OAAO;AACV,aAAA,iBAAiB,SACf,QACF,IAAI,UAAU,KAAK,EAAC,gBAAgB,oBAAmB,GACvD,IAAI,IAAI,KAAK,UAAU,EAAC,OAAO,MAAM,QAAQ,CAAA,CAAC,IAEzC,EAAC,OAAO,MAAM,QAAO,MAG1B,QACF,IAAI,UAAU,KAAK,EAAC,gBAAgB,mBAAmB,CAAA,GACvD,IAAI,IAAI,KAAK,UAAU,EAAC,OAAO,+BAAA,CAA+B,CAAC,IAE1D,EAAC,OAAO;IAA8B;AAAA,EAEjD;AAGA,MAAI,cAAc;AACT,WAAA,OAAO,KAAsB,QAAwB;AAE1D,UAAI,UAAU,+BAA+B,GAAG,GAChD,IAAI,UAAU,gCAAgC,iCAAiC,GAC/E,IAAI,UAAU,gCAAgC,6BAA6B,GAE3E,MAAM,aAAa,EAAC,KAAK,KAAI;AAAA,IAC/B;AACK,MAAI,cAAc;AAChB,WAAA,mBAAmB,OAAO,UAAmB;AAClD,YAAM,MAAM,MAAM,KAAK,KACjB,MAAM,MAAM,KAAK;AACvB,aAAO,aAAa,EAAC,KAAK,KAAI;AAAA,IAAA,CAC/B;AACI,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,KAAK,OAAO,EAAC,cAAiC;AAC5C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AAChD,eAAO,IAAI,SAAS,KAAK,UAAU,MAAM,GAAG;AAAA,UAC1C,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAAA,CAC7C;AAAA,MAAA;AAAA,IAEL;AACK,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,QAAQ,OAAO,EAAC,cAAiC;AAC/C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AAChD,eAAO,IAAI,SAAS,KAAK,UAAU,MAAM,GAAG;AAAA,UAC1C,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAAA,CAC7C;AAAA,MAAA;AAAA,IAEL;AACK,MAAI,cAAc;AAChB,WAAA;AAAA,MACL,KAAK,OAAO,EAAC,cAAiC;AAC5C,cAAM,SAAS,MAAM,aAAa,EAAC,KAAK,SAAQ;AACzC,eAAA;AAAA,UACL,MAAM,KAAK,UAAU,MAAM;AAAA,UAC3B,SAAS,EAAC,gBAAgB,mBAAkB;AAAA,QAC9C;AAAA,MAAA;AAAA,IAEJ;AAEF,QAAM,IAAI,MAAM,0BAA0B,SAAS,EAAE;AACvD;"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type {ComponentType} from 'react'
|
|
2
|
-
import type {FC} from 'react'
|
|
3
|
-
import type {HTMLProps} from 'react'
|
|
4
|
-
|
|
5
|
-
declare type FieldChoice = {
|
|
6
|
-
label: string
|
|
7
|
-
value: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
declare interface FieldComponentProps {
|
|
11
|
-
field: FormField
|
|
12
|
-
fieldState: FieldState
|
|
13
|
-
error?: string
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
declare type FieldOptions = {
|
|
17
|
-
placeholder?: string
|
|
18
|
-
defaultValue?: string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
declare interface FieldState {
|
|
22
|
-
value?: string | number | readonly string[]
|
|
23
|
-
onChange: (value: unknown) => void
|
|
24
|
-
onBlur?: () => void
|
|
25
|
-
ref?: unknown
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export declare type FormDataProps = {
|
|
29
|
-
title: string
|
|
30
|
-
id: {
|
|
31
|
-
current: string
|
|
32
|
-
}
|
|
33
|
-
fields?: FormField[]
|
|
34
|
-
submitButton?: {
|
|
35
|
-
text: string
|
|
36
|
-
position: 'left' | 'center' | 'right'
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
declare type FormField = {
|
|
41
|
-
type: string
|
|
42
|
-
label?: string
|
|
43
|
-
name: string
|
|
44
|
-
required?: boolean
|
|
45
|
-
validation?: ValidationRule[]
|
|
46
|
-
options?: FieldOptions
|
|
47
|
-
choices?: FieldChoice[]
|
|
48
|
-
_key?: string
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export declare const FormRenderer: FC<FormRendererProps>
|
|
52
|
-
|
|
53
|
-
declare interface FormRendererProps extends HTMLProps<HTMLFormElement> {
|
|
54
|
-
formData?: FormDataProps
|
|
55
|
-
getFieldState?: (fieldName: string) => FieldState
|
|
56
|
-
getFieldError?: (fieldName: string) => string | undefined
|
|
57
|
-
fieldComponents?: Record<string, ComponentType<FieldComponentProps>>
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
declare type ValidationRule = {
|
|
61
|
-
type: string
|
|
62
|
-
value: string
|
|
63
|
-
message: string
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export {}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
-
const DefaultField = ({ field, fieldState, error }) => {
|
|
3
|
-
const { type, label, name, options = {}, choices = [], validation = [] } = field;
|
|
4
|
-
if (!type || !name) return null;
|
|
5
|
-
const validationRules = validation.reduce((acc, v) => (acc[v.type] = v.value, acc), {}), { value, onChange, onBlur, ref } = fieldState, handleChange = (e) => {
|
|
6
|
-
onChange(e.target.value);
|
|
7
|
-
}, handleCheckboxChange = (e, choiceValue) => {
|
|
8
|
-
if (Array.isArray(value)) {
|
|
9
|
-
const newValue = e.target.checked ? [...value, choiceValue] : value.filter((v) => v !== choiceValue);
|
|
10
|
-
onChange(newValue);
|
|
11
|
-
} else
|
|
12
|
-
onChange(e.target.checked ? choiceValue : "");
|
|
13
|
-
}, renderInput = () => {
|
|
14
|
-
switch (type) {
|
|
15
|
-
case "submit":
|
|
16
|
-
return /* @__PURE__ */ jsx("button", { type: "submit", children: label || "Submit" });
|
|
17
|
-
case "textarea":
|
|
18
|
-
return /* @__PURE__ */ jsx(
|
|
19
|
-
"textarea",
|
|
20
|
-
{
|
|
21
|
-
ref,
|
|
22
|
-
name,
|
|
23
|
-
onChange: handleChange,
|
|
24
|
-
onBlur,
|
|
25
|
-
placeholder: options.placeholder,
|
|
26
|
-
...validationRules,
|
|
27
|
-
value: value ?? ""
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
case "select":
|
|
31
|
-
return /* @__PURE__ */ jsx(
|
|
32
|
-
"select",
|
|
33
|
-
{
|
|
34
|
-
ref,
|
|
35
|
-
name,
|
|
36
|
-
value: value ?? "",
|
|
37
|
-
onChange: handleChange,
|
|
38
|
-
...validationRules,
|
|
39
|
-
onBlur,
|
|
40
|
-
children: choices?.map((choice, i) => /* @__PURE__ */ jsx("option", { value: choice.value, children: choice.label }, i))
|
|
41
|
-
}
|
|
42
|
-
);
|
|
43
|
-
case "radio":
|
|
44
|
-
return choices?.map((choice, i) => /* @__PURE__ */ jsxs("label", { children: [
|
|
45
|
-
/* @__PURE__ */ jsx(
|
|
46
|
-
"input",
|
|
47
|
-
{
|
|
48
|
-
type: "radio",
|
|
49
|
-
name,
|
|
50
|
-
ref,
|
|
51
|
-
value: choice.value,
|
|
52
|
-
checked: value === choice.value,
|
|
53
|
-
onChange: handleChange,
|
|
54
|
-
onBlur,
|
|
55
|
-
...validationRules
|
|
56
|
-
}
|
|
57
|
-
),
|
|
58
|
-
choice.label
|
|
59
|
-
] }, i));
|
|
60
|
-
case "checkbox":
|
|
61
|
-
return choices?.map((choice, i) => /* @__PURE__ */ jsxs("label", { children: [
|
|
62
|
-
/* @__PURE__ */ jsx(
|
|
63
|
-
"input",
|
|
64
|
-
{
|
|
65
|
-
type: "checkbox",
|
|
66
|
-
name,
|
|
67
|
-
ref,
|
|
68
|
-
value: choice.value,
|
|
69
|
-
checked: Array.isArray(value) ? value.includes(choice.value) : value === choice.value,
|
|
70
|
-
onChange: (e) => handleCheckboxChange(e, choice.value),
|
|
71
|
-
onBlur,
|
|
72
|
-
...validationRules
|
|
73
|
-
}
|
|
74
|
-
),
|
|
75
|
-
choice.label
|
|
76
|
-
] }, i));
|
|
77
|
-
default:
|
|
78
|
-
return /* @__PURE__ */ jsx(
|
|
79
|
-
"input",
|
|
80
|
-
{
|
|
81
|
-
type,
|
|
82
|
-
ref,
|
|
83
|
-
name,
|
|
84
|
-
value: value ?? options.defaultValue ?? "",
|
|
85
|
-
onChange: handleChange,
|
|
86
|
-
...validationRules,
|
|
87
|
-
onBlur,
|
|
88
|
-
placeholder: options.placeholder
|
|
89
|
-
}
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
94
|
-
label && !["hidden", "submit"].includes(type) && /* @__PURE__ */ jsx("label", { htmlFor: name, children: label }),
|
|
95
|
-
renderInput(),
|
|
96
|
-
error && /* @__PURE__ */ jsx("span", { className: "error", children: error })
|
|
97
|
-
] });
|
|
98
|
-
}, FormRenderer = (props) => {
|
|
99
|
-
const {
|
|
100
|
-
formData,
|
|
101
|
-
getFieldState = (name) => ({
|
|
102
|
-
value: void 0,
|
|
103
|
-
onChange: () => {
|
|
104
|
-
},
|
|
105
|
-
name
|
|
106
|
-
// Pass name to field for native form handling
|
|
107
|
-
}),
|
|
108
|
-
getFieldError,
|
|
109
|
-
fieldComponents = {},
|
|
110
|
-
children
|
|
111
|
-
} = props, renderField = (field) => {
|
|
112
|
-
const CustomComponent = fieldComponents[field.type], fieldState = getFieldState(field.name), error = getFieldError?.(field.name);
|
|
113
|
-
return CustomComponent ? /* @__PURE__ */ jsx(CustomComponent, { field, fieldState, error }) : /* @__PURE__ */ jsx(DefaultField, { field, fieldState, error });
|
|
114
|
-
}, elProps = Object.assign({}, props);
|
|
115
|
-
return delete elProps.formData, delete elProps.getFieldState, delete elProps.getFieldError, delete elProps.fieldComponents, /* @__PURE__ */ jsxs("form", { ...elProps, id: elProps.id ?? formData?.id?.current, children: [
|
|
116
|
-
formData?.fields?.map((field) => /* @__PURE__ */ jsx("div", { className: "form-field", children: renderField(field) }, field._key)),
|
|
117
|
-
children,
|
|
118
|
-
renderField({
|
|
119
|
-
type: "submit",
|
|
120
|
-
name: "submit",
|
|
121
|
-
label: formData?.submitButton?.text || "Submit"
|
|
122
|
-
})
|
|
123
|
-
] });
|
|
124
|
-
};
|
|
125
|
-
export {
|
|
126
|
-
FormRenderer
|
|
127
|
-
};
|
|
128
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/form-renderer/components/default-field.tsx","../../src/form-renderer/components/form-renderer.tsx"],"sourcesContent":["import type {ChangeEvent, FC, LegacyRef} from 'react'\n\nimport type {FieldComponentProps} from './types'\n\nexport const DefaultField: FC<FieldComponentProps> = ({field, fieldState, error}) => {\n const {type, label, name, options = {}, choices = [], validation = []} = field\n if (!type || !name) return null\n const validationRules = validation.reduce((acc: Record<string, string>, v) => {\n acc[v.type] = v.value\n return acc\n }, {})\n const {value, onChange, onBlur, ref} = fieldState\n\n const handleChange = (\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>,\n ) => {\n onChange(e.target.value)\n }\n\n const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>, choiceValue: string) => {\n if (Array.isArray(value)) {\n const newValue = e.target.checked\n ? [...value, choiceValue]\n : value.filter((v: string) => v !== choiceValue)\n onChange(newValue)\n } else {\n onChange(e.target.checked ? choiceValue : '')\n }\n }\n\n const renderInput = () => {\n switch (type) {\n case 'submit':\n return <button type=\"submit\">{label || 'Submit'}</button>\n case 'textarea':\n return (\n <textarea\n ref={ref as LegacyRef<HTMLTextAreaElement>}\n name={name}\n onChange={handleChange}\n onBlur={onBlur}\n placeholder={options.placeholder}\n {...validationRules}\n value={value ?? ''}\n />\n )\n\n case 'select':\n return (\n <select\n ref={ref as LegacyRef<HTMLSelectElement>}\n name={name}\n value={value ?? ''}\n onChange={handleChange}\n {...validationRules}\n onBlur={onBlur}\n >\n {choices?.map((choice, i) => (\n <option key={i} value={choice.value}>\n {choice.label}\n </option>\n ))}\n </select>\n )\n\n case 'radio':\n return choices?.map((choice, i) => (\n <label key={i}>\n <input\n type=\"radio\"\n name={name}\n ref={ref as LegacyRef<HTMLInputElement>}\n value={choice.value}\n checked={value === choice.value}\n onChange={handleChange}\n onBlur={onBlur}\n {...validationRules}\n />\n {choice.label}\n </label>\n ))\n\n case 'checkbox':\n return choices?.map((choice, i) => (\n <label key={i}>\n <input\n type=\"checkbox\"\n name={name}\n ref={ref as LegacyRef<HTMLInputElement>}\n value={choice.value}\n checked={Array.isArray(value) ? value.includes(choice.value) : value === choice.value}\n onChange={(e) => handleCheckboxChange(e, choice.value)}\n onBlur={onBlur}\n {...validationRules}\n />\n {choice.label}\n </label>\n ))\n\n default:\n return (\n <input\n type={type}\n ref={ref as LegacyRef<HTMLInputElement>}\n name={name}\n value={value ?? options.defaultValue ?? ''}\n onChange={handleChange}\n {...validationRules}\n onBlur={onBlur}\n placeholder={options.placeholder}\n />\n )\n }\n }\n\n return (\n <>\n {label && !['hidden', 'submit'].includes(type) && <label htmlFor={name}>{label}</label>}\n {renderInput()}\n {error && <span className=\"error\">{error}</span>}\n </>\n )\n}\n","import type {ComponentType, FC, HTMLProps} from 'react'\n\nimport {DefaultField} from './default-field'\nimport type {FieldComponentProps, FieldState, FormDataProps, FormField} from './types'\n\ninterface FormRendererProps extends HTMLProps<HTMLFormElement> {\n formData?: FormDataProps\n // Function to get field state for a given field name\n getFieldState?: (fieldName: string) => FieldState\n // Function to get field error for a given field name\n getFieldError?: (fieldName: string) => string | undefined\n // Override default field components\n fieldComponents?: Record<string, ComponentType<FieldComponentProps>>\n}\n\nexport const FormRenderer: FC<FormRendererProps> = (props) => {\n const {\n formData,\n getFieldState = (name) => ({\n value: undefined,\n onChange: () => {},\n name, // Pass name to field for native form handling\n }),\n getFieldError,\n fieldComponents = {},\n children,\n } = props\n const renderField = (field: FormField) => {\n const CustomComponent = fieldComponents[field.type]\n const fieldState = getFieldState(field.name)\n const error = getFieldError?.(field.name)\n\n if (CustomComponent) {\n return <CustomComponent field={field} fieldState={fieldState} error={error} />\n }\n\n return <DefaultField field={field} fieldState={fieldState} error={error} />\n }\n const elProps = Object.assign({}, props)\n delete elProps.formData\n delete elProps.getFieldState\n delete elProps.getFieldError\n delete elProps.fieldComponents\n\n return (\n <form {...elProps} id={elProps.id ?? formData?.id?.current}>\n {formData?.fields?.map((field) => (\n <div key={field._key} className=\"form-field\">\n {renderField(field)}\n </div>\n ))}\n\n {children}\n\n {renderField({\n type: 'submit',\n name: 'submit',\n label: formData?.submitButton?.text || 'Submit',\n })}\n </form>\n )\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {FieldDefinition} from 'sanity'
|
|
2
|
-
import {Plugin as Plugin_2} from 'sanity'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Usage in `sanity.config.ts` (or .js)
|
|
6
|
-
*
|
|
7
|
-
* ```ts
|
|
8
|
-
* import {defineConfig} from 'sanity'
|
|
9
|
-
* import {formSchema} from '@sanity/form-toolkit'
|
|
10
|
-
*
|
|
11
|
-
* export default defineConfig({
|
|
12
|
-
* // ...
|
|
13
|
-
* plugins: [formSchema()],
|
|
14
|
-
* })
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare type FieldsOption = Array<FieldDefinition>
|
|
18
|
-
|
|
19
|
-
export declare const formSchema: Plugin_2<FormSchemaPluginOptions | undefined>
|
|
20
|
-
|
|
21
|
-
declare interface FormSchemaPluginOptions {
|
|
22
|
-
/**
|
|
23
|
-
* Array of field definitions to be used in the form schema.
|
|
24
|
-
*/
|
|
25
|
-
fields?: FieldsOption
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export {}
|