@sanity/form-toolkit 2.2.3 → 3.0.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 (63) hide show
  1. package/LICENSE +2 -1
  2. package/dist/_chunks-es/{create-handler.mjs → create-handler.js} +45 -17
  3. package/dist/_chunks-es/create-handler.js.map +1 -0
  4. package/dist/form-renderer/index.d.ts +53 -64
  5. package/dist/form-renderer/index.d.ts.map +1 -0
  6. package/dist/form-renderer/index.js +123 -108
  7. package/dist/form-renderer/index.js.map +1 -1
  8. package/dist/form-schema/index.d.ts +7 -11
  9. package/dist/form-schema/index.d.ts.map +1 -0
  10. package/dist/form-schema/index.js +181 -181
  11. package/dist/form-schema/index.js.map +1 -1
  12. package/dist/formium/index.d.ts +4 -7
  13. package/dist/formium/index.d.ts.map +1 -0
  14. package/dist/formium/index.js +35 -25
  15. package/dist/formium/index.js.map +1 -1
  16. package/dist/hubspot/index.d.ts +52 -48
  17. package/dist/hubspot/index.d.ts.map +1 -0
  18. package/dist/hubspot/index.js +52 -26
  19. package/dist/hubspot/index.js.map +1 -1
  20. package/dist/mailchimp/index.d.ts +56 -42
  21. package/dist/mailchimp/index.d.ts.map +1 -0
  22. package/dist/mailchimp/index.js +55 -37
  23. package/dist/mailchimp/index.js.map +1 -1
  24. package/package.json +36 -107
  25. package/dist/_chunks-cjs/create-handler.js +0 -68
  26. package/dist/_chunks-cjs/create-handler.js.map +0 -1
  27. package/dist/_chunks-es/create-handler.mjs.map +0 -1
  28. package/dist/form-renderer/index.d.mts +0 -66
  29. package/dist/form-renderer/index.mjs +0 -128
  30. package/dist/form-renderer/index.mjs.map +0 -1
  31. package/dist/form-schema/index.d.mts +0 -28
  32. package/dist/form-schema/index.mjs +0 -230
  33. package/dist/form-schema/index.mjs.map +0 -1
  34. package/dist/formium/index.d.mts +0 -20
  35. package/dist/formium/index.mjs +0 -30
  36. package/dist/formium/index.mjs.map +0 -1
  37. package/dist/hubspot/index.d.mts +0 -49
  38. package/dist/hubspot/index.mjs +0 -48
  39. package/dist/hubspot/index.mjs.map +0 -1
  40. package/dist/mailchimp/index.d.mts +0 -45
  41. package/dist/mailchimp/index.mjs +0 -49
  42. package/dist/mailchimp/index.mjs.map +0 -1
  43. package/sanity.json +0 -8
  44. package/src/form-renderer/components/default-field.tsx +0 -123
  45. package/src/form-renderer/components/form-renderer.tsx +0 -62
  46. package/src/form-renderer/components/types.ts +0 -51
  47. package/src/form-renderer/index.ts +0 -4
  48. package/src/form-schema/components/validation-type.tsx +0 -14
  49. package/src/form-schema/index.ts +0 -35
  50. package/src/form-schema/schema-types/form-field.ts +0 -224
  51. package/src/form-schema/schema-types/form.ts +0 -52
  52. package/src/form-schema/schema-types/index.ts +0 -9
  53. package/src/formium/index.ts +0 -52
  54. package/src/hubspot/components/option.tsx +0 -17
  55. package/src/hubspot/create-handler.ts +0 -6
  56. package/src/hubspot/fetch-hubspot-data.ts +0 -33
  57. package/src/hubspot/index.ts +0 -52
  58. package/src/index.ts +0 -19
  59. package/src/mailchimp/components/option.tsx +0 -30
  60. package/src/mailchimp/create-handler.ts +0 -39
  61. package/src/mailchimp/index.ts +0 -43
  62. package/src/shared/create-handler.ts +0 -109
  63. package/v2-incompatible.js +0 -11
@@ -1,230 +0,0 @@
1
- import { defineType, defineField, useFormValue, definePlugin } from "sanity";
2
- import { FaWpforms } from "react-icons/fa";
3
- import { LuTextCursorInput } from "react-icons/lu";
4
- const formType = (fields) => defineType({
5
- name: "form",
6
- title: "Form",
7
- type: "document",
8
- icon: FaWpforms,
9
- fields: [
10
- defineField({
11
- name: "title",
12
- title: "Form Title",
13
- type: "string",
14
- description: "Internal title for the form",
15
- validation: (Rule) => Rule.required()
16
- }),
17
- defineField({
18
- name: "id",
19
- title: "Form ID",
20
- type: "slug",
21
- options: {
22
- source: "title"
23
- }
24
- // validation: (Rule) => Rule.required(),
25
- }),
26
- defineField({
27
- name: "fields",
28
- title: "Form Fields",
29
- type: "array",
30
- of: [{ type: "formField" }, ...fields]
31
- }),
32
- defineField({
33
- name: "submitButton",
34
- title: "Submit Button",
35
- type: "object",
36
- fields: [
37
- defineField({
38
- name: "text",
39
- title: "Button Text",
40
- type: "string",
41
- initialValue: "Submit"
42
- })
43
- ]
44
- })
45
- ]
46
- }), ValidationType = (props) => {
47
- const { type } = useFormValue([...props.path.slice(0, 2)]);
48
- return type && props.schemaType?.options && (props.schemaType.options.list = validationTypesByFieldType[type]), props.renderDefault(props);
49
- }, validationTypesByFieldType = {
50
- checkbox: ["minSelectedCount", "maxSelectedCount"],
51
- color: [],
52
- date: ["minDate", "maxDate"],
53
- "datetime-local": ["minDate", "maxDate"],
54
- email: ["pattern"],
55
- file: ["maxSize", "fileType"],
56
- hidden: [],
57
- number: ["min", "max"],
58
- // password: ['minLength', 'pattern'],
59
- radio: [],
60
- range: ["min", "max", "step"],
61
- select: [],
62
- tel: ["pattern"],
63
- text: ["minLength", "maxLength", "pattern"],
64
- textarea: ["minLength", "maxLength"],
65
- time: [],
66
- url: ["pattern"]
67
- }, formFieldType = defineType({
68
- name: "formField",
69
- title: "Form Field",
70
- type: "object",
71
- icon: LuTextCursorInput,
72
- fields: [
73
- defineField({
74
- name: "type",
75
- title: "Field Type",
76
- type: "string",
77
- options: {
78
- list: Object.keys(validationTypesByFieldType).map((type) => ({ title: ((fieldType) => {
79
- switch (fieldType) {
80
- case "datetime-local":
81
- return "Date & Time";
82
- case "textarea":
83
- return "Text Area";
84
- case "tel":
85
- return "Phone Number";
86
- default:
87
- return fieldType.charAt(0).toUpperCase() + fieldType.slice(1);
88
- }
89
- })(type), value: type }))
90
- }
91
- }),
92
- defineField({
93
- name: "label",
94
- title: "Field Label",
95
- type: "string"
96
- }),
97
- defineField({
98
- name: "name",
99
- title: "Field Name",
100
- type: "string",
101
- description: "Must start with a letter and contain only letters, numbers, underscores, or hyphens. Must be unique within the form.",
102
- validation: (Rule) => Rule.required().custom((name, context) => name ? /^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name) ? (context.document?.fields?.map((field) => field.name) || []).filter((n) => n === name).length > 1 ? "Field name must be unique across all form fields" : [
103
- "action",
104
- "method",
105
- "target",
106
- "enctype",
107
- "accept-charset",
108
- "autocomplete",
109
- "novalidate",
110
- "rel",
111
- "submit",
112
- "reset"
113
- ].includes(name.toLowerCase()) ? "This name is reserved for HTML form attributes. Please choose a different name." : !0 : "Field name must start with a letter and contain only letters, numbers, underscores, or hyphens" : "Required")
114
- }),
115
- defineField({
116
- name: "required",
117
- title: "Required",
118
- type: "boolean",
119
- initialValue: !1
120
- }),
121
- defineField({
122
- name: "validation",
123
- title: "Validation Rules",
124
- type: "array",
125
- hidden: ({ parent }) => {
126
- if (!parent?.type) return !0;
127
- const validationTypes = validationTypesByFieldType[parent.type];
128
- return !validationTypes || validationTypes.length === 0;
129
- },
130
- of: [
131
- {
132
- type: "object",
133
- fields: [
134
- defineField({
135
- name: "type",
136
- title: "Validation Type",
137
- type: "string",
138
- options: {
139
- // TODO: I think this needs to be a custom input component?
140
- // list: ({parent}) => (parent?.type ? validationTypesByFieldType[parent.type] : []),
141
- list: []
142
- },
143
- components: {
144
- input: ValidationType
145
- }
146
- }),
147
- defineField({
148
- name: "value",
149
- title: "Value",
150
- type: "string"
151
- }),
152
- defineField({
153
- name: "message",
154
- title: "Error Message",
155
- type: "string"
156
- })
157
- ],
158
- preview: {
159
- select: {
160
- title: "type",
161
- subtitle: "value"
162
- }
163
- }
164
- }
165
- ]
166
- }),
167
- defineField({
168
- name: "choices",
169
- title: "Choices",
170
- type: "array",
171
- hidden: ({ parent }) => !["select", "radio", "checkbox"].includes(parent?.type),
172
- of: [
173
- {
174
- type: "object",
175
- fields: [
176
- defineField({
177
- name: "label",
178
- title: "Label",
179
- type: "string"
180
- }),
181
- defineField({
182
- name: "value",
183
- title: "Value",
184
- type: "string"
185
- })
186
- ]
187
- }
188
- ]
189
- }),
190
- defineField({
191
- name: "options",
192
- title: "Field Options",
193
- type: "object",
194
- hidden: ({ parent }) => ["select", "radio", "checkbox", "file"].includes(parent?.type),
195
- fields: [
196
- defineField({
197
- name: "placeholder",
198
- title: "Placeholder",
199
- type: "string"
200
- }),
201
- defineField({
202
- name: "defaultValue",
203
- title: "Default Value",
204
- type: "string"
205
- })
206
- ]
207
- })
208
- ],
209
- preview: {
210
- select: {
211
- label: "label",
212
- name: "name",
213
- type: "type"
214
- },
215
- prepare({ label, name, type }) {
216
- return {
217
- title: label || name,
218
- subtitle: type
219
- };
220
- }
221
- }
222
- }), schema = (fields) => ({ types: [formType(fields), formFieldType] }), formSchema = definePlugin((options) => ({
223
- name: "form-toolkit_form-schema",
224
- schema: schema(options?.fields ?? [])
225
- // plugins: [structureTool({defaultDocumentNode})],
226
- }));
227
- export {
228
- formSchema
229
- };
230
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/form-schema/schema-types/form.ts","../../src/form-schema/components/validation-type.tsx","../../src/form-schema/schema-types/form-field.ts","../../src/form-schema/schema-types/index.ts","../../src/form-schema/index.ts"],"sourcesContent":["import {FaWpforms} from 'react-icons/fa'\nimport {defineField, defineType, type SchemaTypeDefinition} from 'sanity'\n\nimport type {FieldsOption} from '..'\n\nexport const formType = (fields: FieldsOption): SchemaTypeDefinition => {\n // const fieldsOf =\n // fields && fields.length ? [{type: 'formField'}, ...fields] : [{type: 'formField'}]\n return defineType({\n name: 'form',\n title: 'Form',\n type: 'document',\n icon: FaWpforms,\n fields: [\n defineField({\n name: 'title',\n title: 'Form Title',\n type: 'string',\n description: 'Internal title for the form',\n validation: (Rule) => Rule.required(),\n }),\n defineField({\n name: 'id',\n title: 'Form ID',\n type: 'slug',\n options: {\n source: 'title',\n },\n // validation: (Rule) => Rule.required(),\n }),\n defineField({\n name: 'fields',\n title: 'Form Fields',\n type: 'array',\n of: [{type: 'formField'}, ...fields],\n }),\n defineField({\n name: 'submitButton',\n title: 'Submit Button',\n type: 'object',\n fields: [\n defineField({\n name: 'text',\n title: 'Button Text',\n type: 'string',\n initialValue: 'Submit',\n }),\n ],\n }),\n ],\n })\n}\n","import type {StringInputProps} from 'sanity'\nimport {useFormValue} from 'sanity'\n\nimport type {FormField} from '../../form-renderer/components/types'\nimport {validationTypesByFieldType} from '../schema-types/form-field'\n\nexport const ValidationType = (props: StringInputProps) => {\n const {type} = useFormValue([...props.path.slice(0, 2)]) as FormField\n if (!type) return props.renderDefault(props)\n if (props.schemaType?.options) {\n props.schemaType.options.list = validationTypesByFieldType[type]\n }\n return props.renderDefault(props)\n}\n","import {LuTextCursorInput} from 'react-icons/lu'\nimport {defineField, defineType} from 'sanity'\n\nimport {ValidationType} from '../components/validation-type'\ninterface ValidationContextDocument {\n fields?: Array<{\n name: string\n type?: string\n }>\n}\n\n// Validation options by field type\nexport const validationTypesByFieldType: Record<string, string[]> = {\n checkbox: ['minSelectedCount', 'maxSelectedCount'],\n color: [],\n date: ['minDate', 'maxDate'],\n 'datetime-local': ['minDate', 'maxDate'],\n email: ['pattern'],\n file: ['maxSize', 'fileType'],\n hidden: [],\n number: ['min', 'max'],\n // password: ['minLength', 'pattern'],\n radio: [],\n range: ['min', 'max', 'step'],\n select: [],\n tel: ['pattern'],\n text: ['minLength', 'maxLength', 'pattern'],\n textarea: ['minLength', 'maxLength'],\n time: [],\n url: ['pattern'],\n}\nexport const formFieldType = defineType({\n name: 'formField',\n title: 'Form Field',\n type: 'object',\n icon: LuTextCursorInput,\n fields: [\n defineField({\n name: 'type',\n title: 'Field Type',\n type: 'string',\n options: {\n list: Object.keys(validationTypesByFieldType).map((type) => {\n const title = (fieldType: string) => {\n switch (fieldType) {\n case 'datetime-local':\n return 'Date & Time'\n case 'textarea':\n return 'Text Area'\n case 'tel':\n return 'Phone Number'\n default:\n return fieldType.charAt(0).toUpperCase() + fieldType.slice(1)\n }\n }\n return {title: title(type), value: type}\n }),\n },\n }),\n defineField({\n name: 'label',\n title: 'Field Label',\n type: 'string',\n }),\n defineField({\n name: 'name',\n title: 'Field Name',\n type: 'string',\n description:\n 'Must start with a letter and contain only letters, numbers, underscores, or hyphens. Must be unique within the form.',\n validation: (Rule) =>\n Rule.required().custom((name, context) => {\n if (!name) {\n return 'Required'\n }\n // Check format (HTML ID/name rules)\n if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)) {\n return 'Field name must start with a letter and contain only letters, numbers, underscores, or hyphens'\n }\n\n // Check uniqueness across all fields\n const doc = context.document as ValidationContextDocument\n const allFieldNames = doc?.fields?.map((field) => field.name) || []\n\n // Count occurrences of this name\n const nameCount = allFieldNames.filter((n) => n === name).length\n\n // If we find more than one occurrence (including current field), it's not unique\n if (nameCount > 1) {\n return 'Field name must be unique across all form fields'\n }\n\n // Check for reserved HTML form attributes\n const reservedNames = [\n 'action',\n 'method',\n 'target',\n 'enctype',\n 'accept-charset',\n 'autocomplete',\n 'novalidate',\n 'rel',\n 'submit',\n 'reset',\n ]\n if (reservedNames.includes(name.toLowerCase())) {\n return 'This name is reserved for HTML form attributes. Please choose a different name.'\n }\n\n return true\n }),\n }),\n defineField({\n name: 'required',\n title: 'Required',\n type: 'boolean',\n initialValue: false,\n }),\n defineField({\n name: 'validation',\n title: 'Validation Rules',\n type: 'array',\n hidden: ({parent}) => {\n if (!parent?.type) return true\n const validationTypes = validationTypesByFieldType[parent.type]\n return !validationTypes || validationTypes.length === 0\n },\n of: [\n {\n type: 'object',\n fields: [\n defineField({\n name: 'type',\n title: 'Validation Type',\n type: 'string',\n options: {\n // TODO: I think this needs to be a custom input component?\n // list: ({parent}) => (parent?.type ? validationTypesByFieldType[parent.type] : []),\n list: [],\n },\n components: {\n input: ValidationType,\n },\n }),\n defineField({\n name: 'value',\n title: 'Value',\n type: 'string',\n }),\n defineField({\n name: 'message',\n title: 'Error Message',\n type: 'string',\n }),\n ],\n preview: {\n select: {\n title: 'type',\n subtitle: 'value',\n },\n },\n },\n ],\n }),\n defineField({\n name: 'choices',\n title: 'Choices',\n type: 'array',\n hidden: ({parent}) => {\n return !['select', 'radio', 'checkbox'].includes(parent?.type)\n },\n of: [\n {\n type: 'object',\n fields: [\n defineField({\n name: 'label',\n title: 'Label',\n type: 'string',\n }),\n defineField({\n name: 'value',\n title: 'Value',\n type: 'string',\n }),\n ],\n },\n ],\n }),\n defineField({\n name: 'options',\n title: 'Field Options',\n type: 'object',\n hidden: ({parent}) => {\n return ['select', 'radio', 'checkbox', 'file'].includes(parent?.type)\n },\n fields: [\n defineField({\n name: 'placeholder',\n title: 'Placeholder',\n type: 'string',\n }),\n defineField({\n name: 'defaultValue',\n title: 'Default Value',\n type: 'string',\n }),\n ],\n }),\n ],\n preview: {\n select: {\n label: 'label',\n name: 'name',\n type: 'type',\n },\n prepare({label, name, type}) {\n return {\n title: label || name,\n subtitle: type,\n }\n },\n },\n})\n","import type {SchemaTypeDefinition} from 'sanity'\n\nimport type {FieldsOption} from '..'\nimport {formType} from './form'\nimport {formFieldType} from './form-field'\n\nexport const schema = (fields: FieldsOption): {types: SchemaTypeDefinition[]} => {\n return {types: [formType(fields), formFieldType]}\n}\n","import {definePlugin, type FieldDefinition} from 'sanity'\n\n// import {structureTool} from 'sanity/structure'\n// import {FormRenderer} from './components/form-renderer'\nimport {schema} from './schema-types'\n// import {defaultDocumentNode} from './structure'\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {formSchema} from '@sanity/form-toolkit'\n *\n * export default defineConfig({\n * // ...\n * plugins: [formSchema()],\n * })\n * ```\n */\nexport type FieldsOption = Array<FieldDefinition>\ninterface FormSchemaPluginOptions {\n /**\n * Array of field definitions to be used in the form schema.\n */\n fields?: FieldsOption\n}\n\nexport const formSchema = definePlugin((options: FormSchemaPluginOptions | undefined) => {\n return {\n name: 'form-toolkit_form-schema',\n schema: schema(options?.fields ?? []),\n // plugins: [structureTool({defaultDocumentNode})],\n }\n})\n"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import {Plugin as Plugin_2} from 'sanity'
2
-
3
- /**
4
- * Usage in `sanity.config.ts` (or .js)
5
- *
6
- * ```ts
7
- * import {defineConfig} from 'sanity'
8
- * import {formiumInput} from 'sanity-plugin-form-toolkit'
9
- *
10
- * export default defineConfig({
11
- * // ...
12
- * plugins: [formiumInput()],
13
- * })
14
- * ```
15
- */
16
- export declare const formiumInput: Plugin_2<void | FormiumInputConfig>
17
-
18
- declare interface FormiumInputConfig {}
19
-
20
- export {}
@@ -1,30 +0,0 @@
1
- import { createClient } from "@formium/client";
2
- import { asyncList } from "@sanity/sanity-plugin-async-list";
3
- import { definePlugin } from "sanity";
4
- const formiumInput = definePlugin(() => ({
5
- name: "sanity-plugin-form-toolkit_formium-input",
6
- plugins: [
7
- asyncList({
8
- schemaType: "formiumInput",
9
- secrets: {
10
- keys: [
11
- { key: "projectId", title: "Project ID" },
12
- { key: "token", title: "Token" }
13
- ]
14
- },
15
- loader: async ({ secrets }) => {
16
- const formium = createClient(secrets?.projectId || "", {
17
- apiToken: secrets?.token
18
- }), { data } = await formium.findForms();
19
- return data && data.length ? data.map(({ name, id }) => ({
20
- title: name,
21
- value: id
22
- })) : [];
23
- }
24
- })
25
- ]
26
- }));
27
- export {
28
- formiumInput
29
- };
30
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/formium/index.ts"],"sourcesContent":["import {createClient, type Form} from '@formium/client'\nimport {asyncList} from '@sanity/sanity-plugin-async-list'\nimport {definePlugin} from 'sanity'\n\ninterface FormiumInputConfig {\n /* nothing here yet */\n}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {formiumInput} from 'sanity-plugin-form-toolkit'\n *\n * export default defineConfig({\n * // ...\n * plugins: [formiumInput()],\n * })\n * ```\n */\n// Is Formium dead? All attempts to use the API come back with an expired cert https://github.com/formium/formium/issues/77\nexport const formiumInput = definePlugin<FormiumInputConfig | void>(() => {\n return {\n name: 'sanity-plugin-form-toolkit_formium-input',\n plugins: [\n asyncList({\n schemaType: 'formiumInput',\n secrets: {\n keys: [\n {key: 'projectId', title: 'Project ID'},\n {key: 'token', title: 'Token'},\n ],\n },\n loader: async ({secrets}) => {\n const formium = createClient(secrets?.projectId || '', {\n apiToken: secrets?.token,\n })\n const {data}: {data: Form[]} = await formium.findForms()\n return data && data.length\n ? data.map(({name, id}) => {\n return {\n title: name,\n value: id,\n }\n })\n : []\n },\n }),\n ],\n }\n})\n"],"names":[],"mappings":";;;AAsBa,MAAA,eAAe,aAAwC,OAC3D;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,IACP,UAAU;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,QACP,MAAM;AAAA,UACJ,EAAC,KAAK,aAAa,OAAO,aAAY;AAAA,UACtC,EAAC,KAAK,SAAS,OAAO,QAAO;AAAA,QAAA;AAAA,MAEjC;AAAA,MACA,QAAQ,OAAO,EAAC,cAAa;AAC3B,cAAM,UAAU,aAAa,SAAS,aAAa,IAAI;AAAA,UACrD,UAAU,SAAS;AAAA,QACpB,CAAA,GACK,EAAC,SAAwB,MAAM,QAAQ,UAAU;AAChD,eAAA,QAAQ,KAAK,SAChB,KAAK,IAAI,CAAC,EAAC,MAAM,UACR;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,QACT,EACD,IACD,CAAC;AAAA,MAAA;AAAA,IAER,CAAA;AAAA,EAAA;AAEL,EACD;"}
@@ -1,49 +0,0 @@
1
- import {EventHandler} from 'h3'
2
- import {EventHandlerRequest} from 'h3'
3
- import {IncomingMessage} from 'http'
4
- import {Plugin as Plugin_2} from 'sanity'
5
- import {ServerResponse} from 'http'
6
-
7
- export declare function fetchHubSpotData({token}: {token: string}): Promise<MappedResult[] | null>
8
-
9
- declare type HubSpotForm = {
10
- id: string
11
- name: string
12
- [key: string]: unknown
13
- }
14
-
15
- export declare const hubSpotHandler: ({token}: {token: string}) =>
16
- | ((req: IncomingMessage, res: ServerResponse) => Promise<void>)
17
- | EventHandler<EventHandlerRequest, Promise<unknown>>
18
- | {
19
- GET: ({request}: {request: Request}) => Promise<Response>
20
- loader?: undefined
21
- get?: undefined
22
- }
23
- | {
24
- loader: ({request}: {request: Request}) => Promise<Response>
25
- GET?: undefined
26
- get?: undefined
27
- }
28
- | {
29
- get: ({request}: {request: Request}) => Promise<{
30
- body: string
31
- headers: {
32
- 'Content-Type': string
33
- }
34
- }>
35
- GET?: undefined
36
- loader?: undefined
37
- }
38
-
39
- export declare const hubSpotInput: Plugin_2<HubSpotInputConfig>
40
-
41
- declare interface HubSpotInputConfig {
42
- url: string | URL
43
- }
44
-
45
- declare type MappedResult = HubSpotForm & {
46
- value: string
47
- }
48
-
49
- export {}
@@ -1,48 +0,0 @@
1
- import { asyncList } from "@sanity/sanity-plugin-async-list";
2
- import { definePlugin } from "sanity";
3
- import { jsxs, jsx } from "react/jsx-runtime";
4
- import { Card, Text } from "@sanity/ui";
5
- import { createHandler } from "../_chunks-es/create-handler.mjs";
6
- const Option = (option) => /* @__PURE__ */ jsxs(Card, { "data-as": "button", padding: 3, radius: 2, tone: "inherit", children: [
7
- /* @__PURE__ */ jsx(Text, { size: 2, textOverflow: "ellipsis", children: option.name }),
8
- /* @__PURE__ */ jsx(Card, { paddingTop: 2, tone: "inherit", style: { background: "inherit" }, children: /* @__PURE__ */ jsx(Text, { size: 1, textOverflow: "ellipsis", children: `ID: ${option.value}` }) })
9
- ] });
10
- async function fetchHubSpotData({ token }) {
11
- try {
12
- const apiResponse = await fetch("https://api.hubapi.com/marketing/v3/forms/?limit=9999", {
13
- headers: {
14
- Authorization: `Bearer ${token}`
15
- }
16
- });
17
- if (!apiResponse.ok)
18
- return console.error(`Failed to fetch data: ${apiResponse.statusText}`), null;
19
- const { results } = await apiResponse.json();
20
- return results.map((result) => ({
21
- ...result,
22
- value: result.id
23
- }));
24
- } catch (e) {
25
- return console.error(e), null;
26
- }
27
- }
28
- const hubSpotHandler = ({ token }) => createHandler(() => fetchHubSpotData({ token })), hubSpotInput = definePlugin((options) => ({
29
- name: "sanity-plugin-form-toolkit_hubspot-input",
30
- plugins: [
31
- asyncList({
32
- schemaType: "hubSpotForm",
33
- loader: async () => await (await fetch(options.url)).json(),
34
- autocompleteProps: {
35
- renderOption: (option) => Option(option),
36
- renderValue(value, option) {
37
- return option?.name ?? value;
38
- }
39
- }
40
- })
41
- ]
42
- }));
43
- export {
44
- fetchHubSpotData,
45
- hubSpotHandler,
46
- hubSpotInput
47
- };
48
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/hubspot/components/option.tsx","../../src/hubspot/fetch-hubspot-data.ts","../../src/hubspot/create-handler.ts","../../src/hubspot/index.ts"],"sourcesContent":["import {Card, Text} from '@sanity/ui'\nimport type {ReactElement} from 'react'\n\nexport const Option = (option: {value: string; name: string}): ReactElement => {\n return (\n <Card data-as=\"button\" padding={3} radius={2} tone=\"inherit\">\n <Text size={2} textOverflow=\"ellipsis\">\n {option.name}\n </Text>\n <Card paddingTop={2} tone=\"inherit\" style={{background: 'inherit'}}>\n <Text size={1} textOverflow=\"ellipsis\">\n {`ID: ${option.value}`}\n </Text>\n </Card>\n </Card>\n )\n}\n","type HubSpotForm = {\n id: string\n name: string\n [key: string]: unknown // Additional properties from the API response\n}\n\ntype MappedResult = HubSpotForm & {\n value: string\n}\nexport async function fetchHubSpotData({token}: {token: string}): Promise<MappedResult[] | null> {\n try {\n const apiResponse = await fetch('https://api.hubapi.com/marketing/v3/forms/?limit=9999', {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n\n if (!apiResponse.ok) {\n console.error(`Failed to fetch data: ${apiResponse.statusText}`)\n return null\n }\n\n const {results}: {results: HubSpotForm[]} = await apiResponse.json()\n\n return results.map((result) => ({\n ...result,\n value: result.id,\n }))\n } catch (e: unknown) {\n console.error(e)\n return null // Explicitly return null on error\n }\n}\n","import createHandler from '../shared/create-handler'\nimport {fetchHubSpotData} from './fetch-hubspot-data'\n\nexport const hubSpotHandler = ({token}: {token: string}) => {\n return createHandler(() => fetchHubSpotData({token}))\n}\n","import {asyncList} from '@sanity/sanity-plugin-async-list'\nimport {definePlugin} from 'sanity'\n\nimport {Option} from './components/option'\nimport {hubSpotHandler} from './create-handler'\nimport {fetchHubSpotData} from './fetch-hubspot-data'\ninterface HubSpotInputConfig {\n url: string | URL\n}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {hubSpotInput} from '@sanity/form-toolkit/hubspot'\n *\n * export default defineConfig({\n * // ...\n * plugins: [\n * hubSpotInput({\n * url: 'http://localhost:3000/api/hubspot'\n * })\n * ],\n * })\n * ```\n */\n\ntype ExtendedOption = {value: string; name: string}\nexport {fetchHubSpotData, hubSpotHandler}\nexport const hubSpotInput = definePlugin<HubSpotInputConfig>((options) => {\n return {\n name: 'sanity-plugin-form-toolkit_hubspot-input',\n plugins: [\n asyncList({\n schemaType: 'hubSpotForm',\n loader: async () => {\n const data = await fetch(options.url)\n const body = await data.json()\n return body\n },\n autocompleteProps: {\n renderOption: (option) => Option(option as ExtendedOption),\n renderValue(value, option) {\n // @ts-expect-error can't extend default type?\n return option?.name ?? value\n },\n },\n }),\n ],\n }\n})\n"],"names":[],"mappings":";;;;;AAGO,MAAM,SAAS,CAAC,WAEnB,qBAAC,MAAK,EAAA,WAAQ,UAAS,SAAS,GAAG,QAAQ,GAAG,MAAK,WACjD,UAAA;AAAA,EAAA,oBAAC,QAAK,MAAM,GAAG,cAAa,YACzB,iBAAO,MACV;AAAA,EACA,oBAAC,QAAK,YAAY,GAAG,MAAK,WAAU,OAAO,EAAC,YAAY,UAAA,GACtD,UAAC,oBAAA,MAAA,EAAK,MAAM,GAAG,cAAa,YACzB,UAAO,OAAA,OAAO,KAAK,GACtB,CAAA,EACF,CAAA;AAAA,GACF;ACLkB,eAAA,iBAAiB,EAAC,SAAyD;AAC3F,MAAA;AACI,UAAA,cAAc,MAAM,MAAM,yDAAyD;AAAA,MACvF,SAAS;AAAA,QACP,eAAe,UAAU,KAAK;AAAA,MAAA;AAAA,IAChC,CACD;AAED,QAAI,CAAC,YAAY;AACf,aAAA,QAAQ,MAAM,yBAAyB,YAAY,UAAU,EAAE,GACxD;AAGT,UAAM,EAAC,QAAA,IAAqC,MAAM,YAAY,KAAK;AAE5D,WAAA,QAAQ,IAAI,CAAC,YAAY;AAAA,MAC9B,GAAG;AAAA,MACH,OAAO,OAAO;AAAA,IAAA,EACd;AAAA,WACK,GAAY;AACX,WAAA,QAAA,MAAM,CAAC,GACR;AAAA,EAAA;AAEX;AC7Ba,MAAA,iBAAiB,CAAC,EAAC,MAAK,MAC5B,cAAc,MAAM,iBAAiB,EAAC,OAAM,CAAC,GC0BzC,eAAe,aAAiC,CAAC,aACrD;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,IACP,UAAU;AAAA,MACR,YAAY;AAAA,MACZ,QAAQ,YAEO,OADA,MAAM,MAAM,QAAQ,GAAG,GACZ,KAAK;AAAA,MAG/B,mBAAmB;AAAA,QACjB,cAAc,CAAC,WAAW,OAAO,MAAwB;AAAA,QACzD,YAAY,OAAO,QAAQ;AAEzB,iBAAO,QAAQ,QAAQ;AAAA,QAAA;AAAA,MACzB;AAAA,IAEH,CAAA;AAAA,EAAA;AAEL,EACD;"}
@@ -1,45 +0,0 @@
1
- import {EventHandler} from 'h3'
2
- import {EventHandlerRequest} from 'h3'
3
- import {IncomingMessage} from 'http'
4
- import {Plugin as Plugin_2} from 'sanity'
5
- import {ServerResponse} from 'http'
6
-
7
- export declare function fetchMailchimpData({
8
- key,
9
- server,
10
- }: {
11
- key: string
12
- server: string
13
- }): Promise<unknown>
14
-
15
- export declare const mailchimpHandler: (keys: {key: string; server: string}) =>
16
- | ((req: IncomingMessage, res: ServerResponse) => Promise<void>)
17
- | EventHandler<EventHandlerRequest, Promise<unknown>>
18
- | {
19
- GET: ({request}: {request: Request}) => Promise<Response>
20
- loader?: undefined
21
- get?: undefined
22
- }
23
- | {
24
- loader: ({request}: {request: Request}) => Promise<Response>
25
- GET?: undefined
26
- get?: undefined
27
- }
28
- | {
29
- get: ({request}: {request: Request}) => Promise<{
30
- body: string
31
- headers: {
32
- 'Content-Type': string
33
- }
34
- }>
35
- GET?: undefined
36
- loader?: undefined
37
- }
38
-
39
- export declare const mailchimpInput: Plugin_2<MailchimpInputConfig>
40
-
41
- declare interface MailchimpInputConfig {
42
- url: string | URL
43
- }
44
-
45
- export {}
@@ -1,49 +0,0 @@
1
- import { asyncList } from "@sanity/sanity-plugin-async-list";
2
- import { definePlugin } from "sanity";
3
- import { jsxs, jsx } from "react/jsx-runtime";
4
- import { Card, Text } from "@sanity/ui";
5
- import mailchimp from "@mailchimp/mailchimp_marketing";
6
- import { createHandler } from "../_chunks-es/create-handler.mjs";
7
- const Option = (option) => /* @__PURE__ */ jsxs(Card, { "data-as": "button", padding: 3, radius: 2, tone: "inherit", children: [
8
- /* @__PURE__ */ jsx(Text, { size: 2, textOverflow: "ellipsis", children: `${option.form.header.text ? `${option.form.header.text} - ` : ""}${option.value}` }),
9
- /* @__PURE__ */ jsx(Card, { paddingTop: 2, tone: "inherit", style: { background: "inherit" }, children: /* @__PURE__ */ jsx(Text, { size: 1, textOverflow: "ellipsis", children: `${option.list.name} - ${option.list.stats.member_count} member${option.list.stats.member_count == 1 ? "" : "s"}` }) })
10
- ] });
11
- async function fetchMailchimpData({
12
- key,
13
- server
14
- }) {
15
- mailchimp.setConfig({
16
- apiKey: key,
17
- server
18
- });
19
- const signupForms = [], { lists } = await mailchimp.lists.getAllLists();
20
- for (const list of lists) {
21
- const { signup_forms } = await mailchimp.lists.getListSignupForms(list.id);
22
- for (const form of signup_forms)
23
- signupForms.push({
24
- list,
25
- form,
26
- value: form.signup_form_url
27
- });
28
- }
29
- return signupForms;
30
- }
31
- const mailchimpHandler = (keys) => createHandler(() => fetchMailchimpData(keys)), mailchimpInput = definePlugin((options) => ({
32
- name: "sanity-plugin-form-toolkit_mailchimp-input",
33
- plugins: [
34
- asyncList({
35
- schemaType: "mailchimpForm",
36
- loader: async () => await (await fetch(options.url)).json(),
37
- autocompleteProps: {
38
- //@ts-expect-error incorrect typing on props?
39
- renderOption: (option) => Option(option)
40
- }
41
- })
42
- ]
43
- }));
44
- export {
45
- fetchMailchimpData,
46
- mailchimpHandler,
47
- mailchimpInput
48
- };
49
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/mailchimp/components/option.tsx","../../src/mailchimp/create-handler.ts","../../src/mailchimp/index.ts"],"sourcesContent":["import {Card, Text} from '@sanity/ui'\nimport type {ReactElement} from 'react'\n\nexport const Option = (option: {\n value: string\n form: {\n header: {\n text?: string\n }\n }\n list: {\n name: string\n stats: {\n member_count: number\n }\n }\n}): ReactElement => {\n return (\n <Card data-as=\"button\" padding={3} radius={2} tone=\"inherit\">\n <Text size={2} textOverflow=\"ellipsis\">\n {`${option.form.header.text ? `${option.form.header.text} - ` : ``}${option.value}`}\n </Text>\n <Card paddingTop={2} tone=\"inherit\" style={{background: 'inherit'}}>\n <Text size={1} textOverflow=\"ellipsis\">\n {`${option.list.name} - ${option.list.stats.member_count} member${option.list.stats.member_count == 1 ? '' : 's'}`}\n </Text>\n </Card>\n </Card>\n )\n}\n","import mailchimp from '@mailchimp/mailchimp_marketing'\n\nimport createHandler from '../shared/create-handler'\n\n// Fetch from Mailchimp's API\nexport async function fetchMailchimpData({\n key,\n server,\n}: {\n key: string\n server: string\n}): Promise<unknown> {\n mailchimp.setConfig({\n apiKey: key,\n server: server,\n })\n const signupForms = []\n // @ts-expect-error bad typing for mailchimp\n const {lists} = await mailchimp.lists.getAllLists()\n for (const list of lists) {\n // @ts-expect-error bad typing for mailchimp\n // eslint-disable-next-line camelcase\n const {signup_forms} = await mailchimp.lists.getListSignupForms(list.id)\n // eslint-disable-next-line camelcase\n for (const form of signup_forms) {\n signupForms.push({\n list,\n form,\n value: form.signup_form_url,\n })\n }\n }\n return signupForms\n}\n\n// Create the Mailchimp handler for a specific key and server\nexport const mailchimpHandler = (keys: {key: string; server: string}) => {\n return createHandler(() => fetchMailchimpData(keys))\n}\n","import {asyncList} from '@sanity/sanity-plugin-async-list'\nimport {definePlugin} from 'sanity'\n\nimport {Option} from './components/option'\nimport {mailchimpHandler} from './create-handler'\nimport {fetchMailchimpData} from './create-handler'\ninterface MailchimpInputConfig {\n url: string | URL\n}\n\n/**\n * Usage in `sanity.config.ts` (or .js)\n *\n * ```ts\n * import {defineConfig} from 'sanity'\n * import {mailchimpInput} from '@sanity/form-toolkit/mailchimp'\n *\n * export default defineConfig({\n * // ...\n * plugins: [mailchimpInput()],\n * })\n * ```\n */\nexport {fetchMailchimpData, mailchimpHandler}\nexport const mailchimpInput = definePlugin<MailchimpInputConfig>((options) => {\n return {\n name: 'sanity-plugin-form-toolkit_mailchimp-input',\n plugins: [\n asyncList({\n schemaType: 'mailchimpForm',\n loader: async () => {\n const data = await fetch(options.url)\n const body = await data.json()\n return body\n },\n autocompleteProps: {\n //@ts-expect-error incorrect typing on props?\n renderOption: (option) => Option(option),\n },\n }),\n ],\n }\n})\n"],"names":[],"mappings":";;;;;;AAGO,MAAM,SAAS,CAAC,WAenB,qBAAC,MAAK,EAAA,WAAQ,UAAS,SAAS,GAAG,QAAQ,GAAG,MAAK,WACjD,UAAA;AAAA,EAAC,oBAAA,MAAA,EAAK,MAAM,GAAG,cAAa,YACzB,UAAG,GAAA,OAAO,KAAK,OAAO,OAAO,GAAG,OAAO,KAAK,OAAO,IAAI,QAAQ,EAAE,GAAG,OAAO,KAAK,GACnF,CAAA;AAAA,EACC,oBAAA,MAAA,EAAK,YAAY,GAAG,MAAK,WAAU,OAAO,EAAC,YAAY,aACtD,UAAA,oBAAC,MAAK,EAAA,MAAM,GAAG,cAAa,YACzB,UAAG,GAAA,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,YAAY,UAAU,OAAO,KAAK,MAAM,gBAAgB,IAAI,KAAK,GAAG,IAClH,EACF,CAAA;AAAA,GACF;ACtBJ,eAAsB,mBAAmB;AAAA,EACvC;AAAA,EACA;AACF,GAGqB;AACnB,YAAU,UAAU;AAAA,IAClB,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AACK,QAAA,cAAc,CAAA,GAEd,EAAC,MAAS,IAAA,MAAM,UAAU,MAAM,YAAY;AAClD,aAAW,QAAQ,OAAO;AAGlB,UAAA,EAAC,iBAAgB,MAAM,UAAU,MAAM,mBAAmB,KAAK,EAAE;AAEvE,eAAW,QAAQ;AACjB,kBAAY,KAAK;AAAA,QACf;AAAA,QACA;AAAA,QACA,OAAO,KAAK;AAAA,MAAA,CACb;AAAA,EAAA;AAGE,SAAA;AACT;AAGO,MAAM,mBAAmB,CAAC,SACxB,cAAc,MAAM,mBAAmB,IAAI,CAAC,GCbxC,iBAAiB,aAAmC,CAAC,aACzD;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,IACP,UAAU;AAAA,MACR,YAAY;AAAA,MACZ,QAAQ,YAEO,OADA,MAAM,MAAM,QAAQ,GAAG,GACZ,KAAK;AAAA,MAG/B,mBAAmB;AAAA;AAAA,QAEjB,cAAc,CAAC,WAAW,OAAO,MAAM;AAAA,MAAA;AAAA,IAE1C,CAAA;AAAA,EAAA;AAEL,EACD;"}
package/sanity.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "parts": [
3
- {
4
- "implements": "part:@sanity/base/sanity-root",
5
- "path": "./v2-incompatible.js"
6
- }
7
- ]
8
- }