@01.software/sdk 0.2.1 → 0.2.3
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/dist/{auth-DHZs286d.d.ts → auth-C-9PVtsp.d.ts} +1 -1
- package/dist/{auth-E6a6eSB4.d.cts → auth-C7hwnGOb.d.cts} +1 -1
- package/dist/auth.d.cts +2 -2
- package/dist/auth.d.ts +2 -2
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +93 -6
- package/dist/components.d.ts +93 -6
- package/dist/components.js +20 -20
- package/dist/components.js.map +1 -1
- package/dist/image-TT8lTsk5.d.cts +82 -0
- package/dist/image-TT8lTsk5.d.ts +82 -0
- package/dist/index.cjs +0 -659
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -11
- package/dist/index.d.ts +7 -11
- package/dist/index.js +0 -653
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.cts +1 -1
- package/dist/metadata.d.ts +1 -1
- package/dist/{payload-types-CmDse9mQ.d.cts → payload-types-COjt2QTn.d.cts} +11 -11
- package/dist/{payload-types-CmDse9mQ.d.ts → payload-types-COjt2QTn.d.ts} +11 -11
- package/dist/{webhook-BpQ3M57n.d.cts → webhook-CxTZjVol.d.cts} +1 -1
- package/dist/{webhook-DNIikEHk.d.ts → webhook-DhK15oyO.d.ts} +1 -1
- package/dist/webhook.d.cts +2 -2
- package/dist/webhook.d.ts +2 -2
- package/package.json +18 -19
- package/dist/index-4y8p5Pjy.d.ts +0 -174
- package/dist/index-BIkaO8Go.d.cts +0 -174
package/dist/auth.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { J as JwtPayload, q as createApiKey, o as createServerToken, p as decodeServerToken, r as parseApiKey, v as verifyServerToken } from './auth-
|
|
1
|
+
export { J as JwtPayload, q as createApiKey, o as createServerToken, p as decodeServerToken, r as parseApiKey, v as verifyServerToken } from './auth-C7hwnGOb.cjs';
|
|
2
2
|
import 'payload';
|
|
3
|
-
import './payload-types-
|
|
3
|
+
import './payload-types-COjt2QTn.cjs';
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { J as JwtPayload, q as createApiKey, o as createServerToken, p as decodeServerToken, r as parseApiKey, v as verifyServerToken } from './auth-
|
|
1
|
+
export { J as JwtPayload, q as createApiKey, o as createServerToken, p as decodeServerToken, r as parseApiKey, v as verifyServerToken } from './auth-C-9PVtsp.js';
|
|
2
2
|
import 'payload';
|
|
3
|
-
import './payload-types-
|
|
3
|
+
import './payload-types-COjt2QTn.js';
|
package/dist/components.cjs
CHANGED
|
@@ -632,7 +632,7 @@ function FormRenderer({
|
|
|
632
632
|
}
|
|
633
633
|
|
|
634
634
|
// src/components/Image/index.tsx
|
|
635
|
-
var import_react4 = require("react");
|
|
635
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
636
636
|
|
|
637
637
|
// src/utils/image.ts
|
|
638
638
|
var IMAGE_SIZES = [384, 768, 1536];
|
|
@@ -740,7 +740,7 @@ function Image({
|
|
|
740
740
|
transition: "opacity 0.3s ease",
|
|
741
741
|
pointerEvents: "none"
|
|
742
742
|
});
|
|
743
|
-
return /* @__PURE__ */
|
|
743
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", { className, style: containerStyle }, hasLqip && /* @__PURE__ */ import_react4.default.createElement(
|
|
744
744
|
"img",
|
|
745
745
|
{
|
|
746
746
|
"aria-hidden": true,
|
|
@@ -748,7 +748,7 @@ function Image({
|
|
|
748
748
|
src: image.lqip,
|
|
749
749
|
style: lqipStyle
|
|
750
750
|
}
|
|
751
|
-
), /* @__PURE__ */
|
|
751
|
+
), /* @__PURE__ */ import_react4.default.createElement(
|
|
752
752
|
"img",
|
|
753
753
|
{
|
|
754
754
|
ref: imgRef,
|
package/dist/components.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/index.ts","../src/components/RichTextContent/index.tsx","../src/components/FormRenderer/index.tsx","../src/components/FormRenderer/countries.ts","../src/components/Image/index.tsx","../src/utils/image.ts"],"sourcesContent":["export * from './RichTextContent'\nexport * from './FormRenderer'\nexport * from './Image'\n","'use client'\n\nimport React from 'react'\nimport {\n SerializedBlockNode,\n SerializedLinkNode,\n} from '@payloadcms/richtext-lexical'\nimport {\n SerializedEditorState,\n SerializedLexicalNode,\n} from '@payloadcms/richtext-lexical/lexical'\nimport {\n defaultJSXConverters,\n JSXConverter,\n LinkJSXConverter,\n RichText,\n} from '@payloadcms/richtext-lexical/react'\n\nexport type RichTextData = SerializedEditorState<SerializedLexicalNode>\n\nexport interface RichTextContentProps {\n data: RichTextData\n className?: string\n internalDocToHref?: (args: { linkNode: SerializedLinkNode }) => string\n blocks?: {\n Iframe?: JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n url: string\n }>\n >\n Player?: JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n url: string\n }>\n >\n }\n}\n\nexport function RichTextContent({\n data,\n className,\n internalDocToHref,\n blocks,\n}: RichTextContentProps) {\n return (\n <RichText\n data={data}\n className={className}\n converters={{\n ...defaultJSXConverters,\n ...LinkJSXConverter({\n internalDocToHref,\n }),\n blocks: blocks\n ? (blocks as Record<\n string,\n JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n }>\n >\n >)\n : undefined,\n }}\n />\n )\n}\n","'use client'\n\nimport React, { useState, useCallback, useEffect, useRef } from 'react'\nimport type { Form } from '../../payload-types'\nimport type { RichTextData } from '../RichTextContent'\nimport { COUNTRIES, US_STATES } from './countries'\n\nexport type FormField = NonNullable<Form['fields']>[number]\nexport type InputField = Exclude<FormField, { blockType: 'message' }>\nexport type FormValues = Record<string, string | number | boolean>\nexport type SubmissionData = { field: string; value: string }[]\n\nexport function toSubmissionData(values: FormValues): SubmissionData {\n return Object.entries(values).map(([field, value]) => ({\n field,\n value: String(value),\n }))\n}\n\nexport interface FieldRenderContext {\n value: string | number | boolean\n onChange: (value: string | number | boolean) => void\n}\n\nexport interface FormRendererProps {\n form: Form\n onSubmit: (data: FormValues) => void | Promise<void>\n className?: string\n fieldClassName?: string\n buttonClassName?: string\n renderField?: (\n field: FormField,\n context: FieldRenderContext,\n defaultRender: React.ReactElement,\n ) => React.ReactElement\n renderMessage?: (data: RichTextData) => React.ReactElement\n renderButton?: (props: {\n isSubmitting: boolean\n label: string\n }) => React.ReactElement\n}\n\nfunction getInitialValues(fields: Form['fields']): FormValues {\n const values: FormValues = {}\n if (!fields) return values\n for (const field of fields) {\n if (field.blockType === 'message') continue\n if (field.blockType === 'checkbox') {\n values[field.name] = field.defaultValue ?? false\n } else if (\n field.blockType === 'number' ||\n field.blockType === 'text' ||\n field.blockType === 'textarea' ||\n field.blockType === 'select'\n ) {\n values[field.name] = field.defaultValue ?? ''\n } else {\n values[field.name] = ''\n }\n }\n return values\n}\n\nexport function FormRenderer({\n form,\n onSubmit,\n className,\n fieldClassName,\n buttonClassName,\n renderField,\n renderMessage,\n renderButton,\n}: FormRendererProps) {\n const [values, setValues] = useState<FormValues>(() =>\n getInitialValues(form.fields),\n )\n const [isSubmitting, setIsSubmitting] = useState(false)\n const submittingRef = useRef(false)\n\n useEffect(() => {\n setValues(getInitialValues(form.fields))\n // eslint-disable-next-line react-hooks/exhaustive-deps -- reset only on form identity change\n }, [form.id])\n\n const handleChange = useCallback(\n (name: string, value: string | number | boolean) => {\n setValues((prev) => ({ ...prev, [name]: value }))\n },\n [],\n )\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n if (submittingRef.current) return\n submittingRef.current = true\n setIsSubmitting(true)\n try {\n await onSubmit(values)\n } finally {\n submittingRef.current = false\n setIsSubmitting(false)\n }\n }\n\n const wrapField = (\n field: InputField,\n style: React.CSSProperties | undefined,\n input: React.ReactNode,\n ): React.ReactElement => {\n const context: FieldRenderContext = {\n value: values[field.name] ?? '',\n onChange: (v) => handleChange(field.name, v),\n }\n const el = (\n <div\n key={field.id ?? field.name}\n className={fieldClassName}\n style={style}\n >\n {field.label && <label htmlFor={field.name}>{field.label}</label>}\n {input}\n </div>\n )\n return renderField ? renderField(field, context, el) : el\n }\n\n const renderSelectField = (\n field: InputField,\n style: React.CSSProperties | undefined,\n options: readonly { value: string; label: string }[],\n placeholder?: string,\n ): React.ReactElement =>\n wrapField(\n field,\n style,\n <select\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n >\n <option value=\"\">{placeholder || 'Select…'}</option>\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>,\n )\n\n const renderFieldElement = (field: FormField): React.ReactElement | null => {\n const style =\n field.blockType !== 'message' && field.width\n ? { width: `${field.width}%` }\n : undefined\n\n switch (field.blockType) {\n case 'text':\n return wrapField(\n field,\n style,\n <input\n type=\"text\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n placeholder={field.placeholder ?? undefined}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'email':\n return wrapField(\n field,\n style,\n <input\n type=\"email\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'number':\n return wrapField(\n field,\n style,\n <input\n type=\"number\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => {\n const v = e.target.value\n if (v === '') return handleChange(field.name, '')\n const n = Number(v)\n if (Number.isFinite(n)) handleChange(field.name, n)\n }}\n />,\n )\n case 'textarea':\n return wrapField(\n field,\n style,\n <textarea\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'checkbox': {\n const context: FieldRenderContext = {\n value: values[field.name] ?? false,\n onChange: (v) => handleChange(field.name, v),\n }\n const el = (\n <div\n key={field.id ?? field.name}\n className={fieldClassName}\n style={style}\n >\n <label htmlFor={field.name}>\n <input\n type=\"checkbox\"\n id={field.name}\n name={field.name}\n checked={Boolean(values[field.name])}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.checked)}\n />\n {field.label && <span>{field.label}</span>}\n </label>\n </div>\n )\n return renderField ? renderField(field, context, el) : el\n }\n case 'select':\n return renderSelectField(\n field,\n style,\n field.options ?? [],\n field.placeholder ?? undefined,\n )\n case 'country':\n return renderSelectField(field, style, COUNTRIES)\n case 'state':\n return renderSelectField(field, style, US_STATES)\n case 'message':\n if (renderMessage && field.message) {\n return (\n <React.Fragment key={field.id ?? field.blockName ?? 'message'}>\n {renderMessage(field.message as RichTextData)}\n </React.Fragment>\n )\n }\n return null\n default:\n return null\n }\n }\n\n const buttonLabel = form.submitButtonLabel || 'Submit'\n\n return (\n <form onSubmit={handleSubmit} className={className}>\n {form.fields?.map((field) => renderFieldElement(field))}\n {renderButton ? (\n renderButton({ isSubmitting, label: buttonLabel })\n ) : (\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className={buttonClassName}\n >\n {buttonLabel}\n </button>\n )}\n </form>\n )\n}\n","/** ISO 3166-1 country list (code → name) */\nexport const COUNTRIES: readonly { value: string; label: string }[] = [\n { value: 'AF', label: 'Afghanistan' },\n { value: 'AX', label: 'Åland Islands' },\n { value: 'AL', label: 'Albania' },\n { value: 'DZ', label: 'Algeria' },\n { value: 'AS', label: 'American Samoa' },\n { value: 'AD', label: 'Andorra' },\n { value: 'AO', label: 'Angola' },\n { value: 'AI', label: 'Anguilla' },\n { value: 'AQ', label: 'Antarctica' },\n { value: 'AG', label: 'Antigua and Barbuda' },\n { value: 'AR', label: 'Argentina' },\n { value: 'AM', label: 'Armenia' },\n { value: 'AW', label: 'Aruba' },\n { value: 'AU', label: 'Australia' },\n { value: 'AT', label: 'Austria' },\n { value: 'AZ', label: 'Azerbaijan' },\n { value: 'BS', label: 'Bahamas' },\n { value: 'BH', label: 'Bahrain' },\n { value: 'BD', label: 'Bangladesh' },\n { value: 'BB', label: 'Barbados' },\n { value: 'BY', label: 'Belarus' },\n { value: 'BE', label: 'Belgium' },\n { value: 'BZ', label: 'Belize' },\n { value: 'BJ', label: 'Benin' },\n { value: 'BM', label: 'Bermuda' },\n { value: 'BT', label: 'Bhutan' },\n { value: 'BO', label: 'Bolivia' },\n { value: 'BA', label: 'Bosnia and Herzegovina' },\n { value: 'BW', label: 'Botswana' },\n { value: 'BV', label: 'Bouvet Island' },\n { value: 'BR', label: 'Brazil' },\n { value: 'IO', label: 'British Indian Ocean Territory' },\n { value: 'BN', label: 'Brunei Darussalam' },\n { value: 'BG', label: 'Bulgaria' },\n { value: 'BF', label: 'Burkina Faso' },\n { value: 'BI', label: 'Burundi' },\n { value: 'KH', label: 'Cambodia' },\n { value: 'CM', label: 'Cameroon' },\n { value: 'CA', label: 'Canada' },\n { value: 'CV', label: 'Cape Verde' },\n { value: 'KY', label: 'Cayman Islands' },\n { value: 'CF', label: 'Central African Republic' },\n { value: 'TD', label: 'Chad' },\n { value: 'CL', label: 'Chile' },\n { value: 'CN', label: 'China' },\n { value: 'CX', label: 'Christmas Island' },\n { value: 'CC', label: 'Cocos (Keeling) Islands' },\n { value: 'CO', label: 'Colombia' },\n { value: 'KM', label: 'Comoros' },\n { value: 'CG', label: 'Congo' },\n { value: 'CD', label: 'Congo, Democratic Republic' },\n { value: 'CK', label: 'Cook Islands' },\n { value: 'CR', label: 'Costa Rica' },\n { value: 'CI', label: \"Côte d'Ivoire\" },\n { value: 'HR', label: 'Croatia' },\n { value: 'CU', label: 'Cuba' },\n { value: 'CY', label: 'Cyprus' },\n { value: 'CZ', label: 'Czech Republic' },\n { value: 'DK', label: 'Denmark' },\n { value: 'DJ', label: 'Djibouti' },\n { value: 'DM', label: 'Dominica' },\n { value: 'DO', label: 'Dominican Republic' },\n { value: 'EC', label: 'Ecuador' },\n { value: 'EG', label: 'Egypt' },\n { value: 'SV', label: 'El Salvador' },\n { value: 'GQ', label: 'Equatorial Guinea' },\n { value: 'ER', label: 'Eritrea' },\n { value: 'EE', label: 'Estonia' },\n { value: 'ET', label: 'Ethiopia' },\n { value: 'FK', label: 'Falkland Islands' },\n { value: 'FO', label: 'Faroe Islands' },\n { value: 'FJ', label: 'Fiji' },\n { value: 'FI', label: 'Finland' },\n { value: 'FR', label: 'France' },\n { value: 'GF', label: 'French Guiana' },\n { value: 'PF', label: 'French Polynesia' },\n { value: 'TF', label: 'French Southern Territories' },\n { value: 'GA', label: 'Gabon' },\n { value: 'GM', label: 'Gambia' },\n { value: 'GE', label: 'Georgia' },\n { value: 'DE', label: 'Germany' },\n { value: 'GH', label: 'Ghana' },\n { value: 'GI', label: 'Gibraltar' },\n { value: 'GR', label: 'Greece' },\n { value: 'GL', label: 'Greenland' },\n { value: 'GD', label: 'Grenada' },\n { value: 'GP', label: 'Guadeloupe' },\n { value: 'GU', label: 'Guam' },\n { value: 'GT', label: 'Guatemala' },\n { value: 'GG', label: 'Guernsey' },\n { value: 'GN', label: 'Guinea' },\n { value: 'GW', label: 'Guinea-Bissau' },\n { value: 'GY', label: 'Guyana' },\n { value: 'HT', label: 'Haiti' },\n { value: 'VA', label: 'Holy See (Vatican)' },\n { value: 'HN', label: 'Honduras' },\n { value: 'HK', label: 'Hong Kong' },\n { value: 'HU', label: 'Hungary' },\n { value: 'IS', label: 'Iceland' },\n { value: 'IN', label: 'India' },\n { value: 'ID', label: 'Indonesia' },\n { value: 'IR', label: 'Iran' },\n { value: 'IQ', label: 'Iraq' },\n { value: 'IE', label: 'Ireland' },\n { value: 'IM', label: 'Isle of Man' },\n { value: 'IL', label: 'Israel' },\n { value: 'IT', label: 'Italy' },\n { value: 'JM', label: 'Jamaica' },\n { value: 'JP', label: 'Japan' },\n { value: 'JE', label: 'Jersey' },\n { value: 'JO', label: 'Jordan' },\n { value: 'KZ', label: 'Kazakhstan' },\n { value: 'KE', label: 'Kenya' },\n { value: 'KI', label: 'Kiribati' },\n { value: 'KP', label: 'Korea, North' },\n { value: 'KR', label: 'Korea, South' },\n { value: 'KW', label: 'Kuwait' },\n { value: 'KG', label: 'Kyrgyzstan' },\n { value: 'LA', label: 'Laos' },\n { value: 'LV', label: 'Latvia' },\n { value: 'LB', label: 'Lebanon' },\n { value: 'LS', label: 'Lesotho' },\n { value: 'LR', label: 'Liberia' },\n { value: 'LY', label: 'Libya' },\n { value: 'LI', label: 'Liechtenstein' },\n { value: 'LT', label: 'Lithuania' },\n { value: 'LU', label: 'Luxembourg' },\n { value: 'MO', label: 'Macao' },\n { value: 'MK', label: 'North Macedonia' },\n { value: 'MG', label: 'Madagascar' },\n { value: 'MW', label: 'Malawi' },\n { value: 'MY', label: 'Malaysia' },\n { value: 'MV', label: 'Maldives' },\n { value: 'ML', label: 'Mali' },\n { value: 'MT', label: 'Malta' },\n { value: 'MH', label: 'Marshall Islands' },\n { value: 'MQ', label: 'Martinique' },\n { value: 'MR', label: 'Mauritania' },\n { value: 'MU', label: 'Mauritius' },\n { value: 'YT', label: 'Mayotte' },\n { value: 'MX', label: 'Mexico' },\n { value: 'FM', label: 'Micronesia' },\n { value: 'MD', label: 'Moldova' },\n { value: 'MC', label: 'Monaco' },\n { value: 'MN', label: 'Mongolia' },\n { value: 'ME', label: 'Montenegro' },\n { value: 'MS', label: 'Montserrat' },\n { value: 'MA', label: 'Morocco' },\n { value: 'MZ', label: 'Mozambique' },\n { value: 'MM', label: 'Myanmar' },\n { value: 'NA', label: 'Namibia' },\n { value: 'NR', label: 'Nauru' },\n { value: 'NP', label: 'Nepal' },\n { value: 'NL', label: 'Netherlands' },\n { value: 'NC', label: 'New Caledonia' },\n { value: 'NZ', label: 'New Zealand' },\n { value: 'NI', label: 'Nicaragua' },\n { value: 'NE', label: 'Niger' },\n { value: 'NG', label: 'Nigeria' },\n { value: 'NU', label: 'Niue' },\n { value: 'NF', label: 'Norfolk Island' },\n { value: 'MP', label: 'Northern Mariana Islands' },\n { value: 'NO', label: 'Norway' },\n { value: 'OM', label: 'Oman' },\n { value: 'PK', label: 'Pakistan' },\n { value: 'PW', label: 'Palau' },\n { value: 'PS', label: 'Palestine' },\n { value: 'PA', label: 'Panama' },\n { value: 'PG', label: 'Papua New Guinea' },\n { value: 'PY', label: 'Paraguay' },\n { value: 'PE', label: 'Peru' },\n { value: 'PH', label: 'Philippines' },\n { value: 'PN', label: 'Pitcairn' },\n { value: 'PL', label: 'Poland' },\n { value: 'PT', label: 'Portugal' },\n { value: 'PR', label: 'Puerto Rico' },\n { value: 'QA', label: 'Qatar' },\n { value: 'RE', label: 'Réunion' },\n { value: 'RO', label: 'Romania' },\n { value: 'RU', label: 'Russian Federation' },\n { value: 'RW', label: 'Rwanda' },\n { value: 'BL', label: 'Saint Barthélemy' },\n { value: 'SH', label: 'Saint Helena' },\n { value: 'KN', label: 'Saint Kitts and Nevis' },\n { value: 'LC', label: 'Saint Lucia' },\n { value: 'MF', label: 'Saint Martin' },\n { value: 'PM', label: 'Saint Pierre and Miquelon' },\n { value: 'VC', label: 'Saint Vincent and the Grenadines' },\n { value: 'WS', label: 'Samoa' },\n { value: 'SM', label: 'San Marino' },\n { value: 'ST', label: 'Sao Tome and Principe' },\n { value: 'SA', label: 'Saudi Arabia' },\n { value: 'SN', label: 'Senegal' },\n { value: 'RS', label: 'Serbia' },\n { value: 'SC', label: 'Seychelles' },\n { value: 'SL', label: 'Sierra Leone' },\n { value: 'SG', label: 'Singapore' },\n { value: 'SX', label: 'Sint Maarten' },\n { value: 'SK', label: 'Slovakia' },\n { value: 'SI', label: 'Slovenia' },\n { value: 'SB', label: 'Solomon Islands' },\n { value: 'SO', label: 'Somalia' },\n { value: 'ZA', label: 'South Africa' },\n { value: 'GS', label: 'South Georgia' },\n { value: 'SS', label: 'South Sudan' },\n { value: 'ES', label: 'Spain' },\n { value: 'LK', label: 'Sri Lanka' },\n { value: 'SD', label: 'Sudan' },\n { value: 'SR', label: 'Suriname' },\n { value: 'SJ', label: 'Svalbard and Jan Mayen' },\n { value: 'SZ', label: 'Eswatini' },\n { value: 'SE', label: 'Sweden' },\n { value: 'CH', label: 'Switzerland' },\n { value: 'SY', label: 'Syria' },\n { value: 'TW', label: 'Taiwan' },\n { value: 'TJ', label: 'Tajikistan' },\n { value: 'TZ', label: 'Tanzania' },\n { value: 'TH', label: 'Thailand' },\n { value: 'TL', label: 'Timor-Leste' },\n { value: 'TG', label: 'Togo' },\n { value: 'TK', label: 'Tokelau' },\n { value: 'TO', label: 'Tonga' },\n { value: 'TT', label: 'Trinidad and Tobago' },\n { value: 'TN', label: 'Tunisia' },\n { value: 'TR', label: 'Turkey' },\n { value: 'TM', label: 'Turkmenistan' },\n { value: 'TC', label: 'Turks and Caicos Islands' },\n { value: 'TV', label: 'Tuvalu' },\n { value: 'UG', label: 'Uganda' },\n { value: 'UA', label: 'Ukraine' },\n { value: 'AE', label: 'United Arab Emirates' },\n { value: 'GB', label: 'United Kingdom' },\n { value: 'US', label: 'United States' },\n { value: 'UM', label: 'U.S. Minor Outlying Islands' },\n { value: 'UY', label: 'Uruguay' },\n { value: 'UZ', label: 'Uzbekistan' },\n { value: 'VU', label: 'Vanuatu' },\n { value: 'VE', label: 'Venezuela' },\n { value: 'VN', label: 'Vietnam' },\n { value: 'VG', label: 'Virgin Islands, British' },\n { value: 'VI', label: 'Virgin Islands, U.S.' },\n { value: 'WF', label: 'Wallis and Futuna' },\n { value: 'EH', label: 'Western Sahara' },\n { value: 'YE', label: 'Yemen' },\n { value: 'ZM', label: 'Zambia' },\n { value: 'ZW', label: 'Zimbabwe' },\n] as const\n\n/** US states (code → name) */\nexport const US_STATES: readonly { value: string; label: string }[] = [\n { value: 'AL', label: 'Alabama' },\n { value: 'AK', label: 'Alaska' },\n { value: 'AZ', label: 'Arizona' },\n { value: 'AR', label: 'Arkansas' },\n { value: 'CA', label: 'California' },\n { value: 'CO', label: 'Colorado' },\n { value: 'CT', label: 'Connecticut' },\n { value: 'DE', label: 'Delaware' },\n { value: 'FL', label: 'Florida' },\n { value: 'GA', label: 'Georgia' },\n { value: 'HI', label: 'Hawaii' },\n { value: 'ID', label: 'Idaho' },\n { value: 'IL', label: 'Illinois' },\n { value: 'IN', label: 'Indiana' },\n { value: 'IA', label: 'Iowa' },\n { value: 'KS', label: 'Kansas' },\n { value: 'KY', label: 'Kentucky' },\n { value: 'LA', label: 'Louisiana' },\n { value: 'ME', label: 'Maine' },\n { value: 'MD', label: 'Maryland' },\n { value: 'MA', label: 'Massachusetts' },\n { value: 'MI', label: 'Michigan' },\n { value: 'MN', label: 'Minnesota' },\n { value: 'MS', label: 'Mississippi' },\n { value: 'MO', label: 'Missouri' },\n { value: 'MT', label: 'Montana' },\n { value: 'NE', label: 'Nebraska' },\n { value: 'NV', label: 'Nevada' },\n { value: 'NH', label: 'New Hampshire' },\n { value: 'NJ', label: 'New Jersey' },\n { value: 'NM', label: 'New Mexico' },\n { value: 'NY', label: 'New York' },\n { value: 'NC', label: 'North Carolina' },\n { value: 'ND', label: 'North Dakota' },\n { value: 'OH', label: 'Ohio' },\n { value: 'OK', label: 'Oklahoma' },\n { value: 'OR', label: 'Oregon' },\n { value: 'PA', label: 'Pennsylvania' },\n { value: 'RI', label: 'Rhode Island' },\n { value: 'SC', label: 'South Carolina' },\n { value: 'SD', label: 'South Dakota' },\n { value: 'TN', label: 'Tennessee' },\n { value: 'TX', label: 'Texas' },\n { value: 'UT', label: 'Utah' },\n { value: 'VT', label: 'Vermont' },\n { value: 'VA', label: 'Virginia' },\n { value: 'WA', label: 'Washington' },\n { value: 'WV', label: 'West Virginia' },\n { value: 'WI', label: 'Wisconsin' },\n { value: 'WY', label: 'Wyoming' },\n { value: 'DC', label: 'District of Columbia' },\n] as const\n","'use client'\n\nimport { useCallback, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { ImageData } from '../../utils/image'\nimport { getImageSrcSet, getImagePlaceholderStyle } from '../../utils/image'\n\nexport interface ImageProps {\n /** Payload image document */\n image: ImageData\n /** Display width in CSS pixels (for selecting optimal srcset size) */\n width?: number\n /** Device pixel ratio (default: 1) */\n dpr?: number\n /** Placeholder strategy (default: 'blur') */\n placeholder?: 'blur' | 'color' | 'none'\n /** Container className */\n className?: string\n /** Container style */\n style?: CSSProperties\n /** Inner `<img>` className */\n imgClassName?: string\n /** Inner `<img>` style */\n imgStyle?: CSSProperties\n /** HTML sizes attribute */\n sizes?: string\n /** Loading strategy (default: 'lazy') */\n loading?: 'lazy' | 'eager'\n /** Callback when image finishes loading */\n onLoad?: () => void\n /** Object-fit for the image (default: 'cover') */\n objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}\n\n/**\n * Image component with blur-up / color placeholder support.\n *\n * Uses LQIP (Low Quality Image Placeholder) for a smooth blur-up effect,\n * falling back to palette color or no placeholder.\n */\nexport function Image({\n image,\n width,\n dpr = 1,\n placeholder = 'blur',\n className,\n style,\n imgClassName,\n imgStyle,\n sizes,\n loading = 'lazy',\n onLoad,\n objectFit = 'cover',\n}: ImageProps) {\n const [loaded, setLoaded] = useState(false)\n\n const aspectRatio =\n image.width && image.height ? `${image.width} / ${image.height}` : undefined\n\n const srcSet = getImageSrcSet(image)\n const src = image.url ?? undefined\n\n const placeholderStyle = getImagePlaceholderStyle(image, {\n type: placeholder,\n })\n const hasLqip = placeholder === 'blur' && !!image.lqip\n const hasColorPlaceholder =\n !hasLqip && Object.keys(placeholderStyle).length > 0\n\n // Callback ref: detect SSR-cached images that are already loaded\n const imgRef = useCallback(\n (node: HTMLImageElement | null) => {\n if (node && node.complete && node.naturalWidth > 0) {\n setLoaded(true)\n onLoad?.()\n }\n },\n [onLoad],\n )\n\n const handleLoad = useCallback(() => {\n setLoaded(true)\n onLoad?.()\n }, [onLoad])\n\n // Container styles\n const containerStyle: CSSProperties = {\n position: 'relative',\n overflow: 'hidden',\n ...(aspectRatio ? { aspectRatio } : {}),\n ...(hasColorPlaceholder ? placeholderStyle : {}),\n ...style,\n }\n\n // Shared img base styles\n const imgBase: CSSProperties = {\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit,\n }\n\n // Main image styles\n const mainImgStyle: CSSProperties = {\n ...imgBase,\n opacity: loaded ? 1 : 0,\n transition: 'opacity 0.3s ease',\n ...imgStyle,\n }\n\n // LQIP overlay styles\n const lqipStyle: CSSProperties = {\n ...imgBase,\n position: 'absolute',\n top: 0,\n left: 0,\n filter: 'blur(20px)',\n transform: 'scale(1.1)',\n opacity: loaded ? 0 : 1,\n transition: 'opacity 0.3s ease',\n pointerEvents: 'none',\n }\n\n return (\n <div className={className} style={containerStyle}>\n {hasLqip && (\n <img\n aria-hidden\n alt=\"\"\n src={image.lqip!}\n style={lqipStyle}\n />\n )}\n <img\n ref={imgRef}\n alt={image.alt ?? ''}\n src={src}\n srcSet={srcSet || undefined}\n sizes={sizes}\n width={width ? width * dpr : undefined}\n loading={loading}\n onLoad={handleLoad}\n className={imgClassName}\n style={mainImgStyle}\n />\n </div>\n )\n}\n","/** Palette colors extracted from an image */\nexport interface ImagePalette {\n vibrant?: string | null\n muted?: string | null\n darkVibrant?: string | null\n darkMuted?: string | null\n lightVibrant?: string | null\n lightMuted?: string | null\n}\n\n/** Common image data shape from Payload CMS upload collections */\nexport interface ImageData {\n url?: string | null\n width?: number | null\n height?: number | null\n alt?: string | null\n lqip?: string | null\n palette?: ImagePalette | null\n sizes?: Record<\n string,\n | {\n url?: string | null\n width?: number | null\n height?: number | null\n }\n | undefined\n >\n}\n\n/** Pre-generated image size breakpoints (px) */\nexport const IMAGE_SIZES = [384, 768, 1536] as const\n\n/**\n * Returns the optimal image URL for a given display width.\n *\n * Picks the smallest pre-generated size whose width >= displayWidth × dpr.\n * Falls back to the original URL when no matching size exists.\n *\n * @param image - Payload image document\n * @param displayWidth - CSS pixel width the image will be displayed at\n * @param dpr - Device pixel ratio (default: 1)\n * @returns URL string, or empty string if no URL is available\n */\nexport function getImageUrl(\n image: ImageData,\n displayWidth: number,\n dpr: number = 1,\n): string {\n const target = displayWidth * dpr\n const sizes = image.sizes\n\n if (sizes) {\n for (const size of IMAGE_SIZES) {\n if (size >= target) {\n const entry = sizes[String(size)]\n if (entry?.url) return entry.url\n }\n }\n }\n\n return image.url ?? ''\n}\n\n/**\n * Generates an HTML `srcset` attribute string from pre-generated sizes.\n *\n * Includes all available sizes plus the original image.\n * Example output: `\"url-384 384w, url-768 768w, url-1536 1536w, url-original 2000w\"`\n *\n * @param image - Payload image document\n * @returns srcset string, or empty string if no URLs are available\n */\nexport function getImageSrcSet(image: ImageData): string {\n const parts: string[] = []\n const sizes = image.sizes\n\n if (sizes) {\n for (const size of IMAGE_SIZES) {\n const entry = sizes[String(size)]\n if (entry?.url && entry.width) {\n parts.push(`${entry.url} ${entry.width}w`)\n }\n }\n }\n\n if (image.url && image.width) {\n parts.push(`${image.url} ${image.width}w`)\n }\n\n return parts.join(', ')\n}\n\n/**\n * Returns the LQIP (Low Quality Image Placeholder) data URL for an image.\n *\n * @param image - Payload image document\n * @returns LQIP data URL string, or undefined if not available\n */\nexport function getImageLqip(image: ImageData): string | undefined {\n return image.lqip ?? undefined\n}\n\n/**\n * Returns the extracted color palette for an image.\n *\n * @param image - Payload image document\n * @returns ImagePalette object, or undefined if not available\n */\nexport function getImagePalette(image: ImageData): ImagePalette | undefined {\n return image.palette ?? undefined\n}\n\n/** Options for `getImagePlaceholderStyle` */\nexport interface ImagePlaceholderOptions {\n /** Placeholder strategy (default: 'blur') */\n type?: 'blur' | 'color' | 'none'\n /** Which palette color to use for 'color' strategy (default: 'muted') */\n paletteColor?: keyof ImagePalette\n}\n\n/**\n * Returns inline CSS styles for an image placeholder.\n *\n * - `blur`: uses LQIP as background, falls back to palette color, then empty\n * - `color`: uses palette color as background, falls back to empty\n * - `none`: always returns empty\n *\n * @param image - Payload image document\n * @param options - Placeholder options\n * @returns CSS style object compatible with React CSSProperties\n */\nexport function getImagePlaceholderStyle(\n image: ImageData,\n options?: ImagePlaceholderOptions,\n): Record<string, string> {\n const type = options?.type ?? 'blur'\n const paletteColor = options?.paletteColor ?? 'muted'\n\n if (type === 'none') return {}\n\n const color = image.palette?.[paletteColor]\n\n if (type === 'blur') {\n const lqip = image.lqip\n if (lqip) {\n return {\n backgroundImage: `url(${lqip})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n }\n }\n // Cascade: fall back to color\n if (color) {\n return { backgroundColor: color }\n }\n return {}\n }\n\n // type === 'color'\n if (color) {\n return { backgroundColor: color }\n }\n return {}\n}\n"],"mappings":"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","names":["import_react","React","import_react","_a","React","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/index.ts","../src/components/RichTextContent/index.tsx","../src/components/FormRenderer/index.tsx","../src/components/FormRenderer/countries.ts","../src/components/Image/index.tsx","../src/utils/image.ts"],"sourcesContent":["export * from './RichTextContent'\nexport * from './FormRenderer'\nexport * from './Image'\n","'use client'\n\nimport React from 'react'\nimport {\n SerializedBlockNode,\n SerializedLinkNode,\n} from '@payloadcms/richtext-lexical'\nimport {\n SerializedEditorState,\n SerializedLexicalNode,\n} from '@payloadcms/richtext-lexical/lexical'\nimport {\n defaultJSXConverters,\n JSXConverter,\n LinkJSXConverter,\n RichText,\n} from '@payloadcms/richtext-lexical/react'\n\nexport type RichTextData = SerializedEditorState<SerializedLexicalNode>\n\nexport interface RichTextContentProps {\n data: RichTextData\n className?: string\n internalDocToHref?: (args: { linkNode: SerializedLinkNode }) => string\n blocks?: {\n Iframe?: JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n url: string\n }>\n >\n Player?: JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n url: string\n }>\n >\n }\n}\n\nexport function RichTextContent({\n data,\n className,\n internalDocToHref,\n blocks,\n}: RichTextContentProps) {\n return (\n <RichText\n data={data}\n className={className}\n converters={{\n ...defaultJSXConverters,\n ...LinkJSXConverter({\n internalDocToHref,\n }),\n blocks: blocks\n ? (blocks as Record<\n string,\n JSXConverter<\n SerializedBlockNode<{\n blockName?: string | null\n blockType: string\n }>\n >\n >)\n : undefined,\n }}\n />\n )\n}\n","'use client'\n\nimport React, { useState, useCallback, useEffect, useRef } from 'react'\nimport type { Form } from '../../payload-types'\nimport type { RichTextData } from '../RichTextContent'\nimport { COUNTRIES, US_STATES } from './countries'\n\nexport type FormField = NonNullable<Form['fields']>[number]\nexport type InputField = Exclude<FormField, { blockType: 'message' }>\nexport type FormValues = Record<string, string | number | boolean>\nexport type SubmissionData = { field: string; value: string }[]\n\nexport function toSubmissionData(values: FormValues): SubmissionData {\n return Object.entries(values).map(([field, value]) => ({\n field,\n value: String(value),\n }))\n}\n\nexport interface FieldRenderContext {\n value: string | number | boolean\n onChange: (value: string | number | boolean) => void\n}\n\nexport interface FormRendererProps {\n form: Form\n onSubmit: (data: FormValues) => void | Promise<void>\n className?: string\n fieldClassName?: string\n buttonClassName?: string\n renderField?: (\n field: FormField,\n context: FieldRenderContext,\n defaultRender: React.ReactElement,\n ) => React.ReactElement\n renderMessage?: (data: RichTextData) => React.ReactElement\n renderButton?: (props: {\n isSubmitting: boolean\n label: string\n }) => React.ReactElement\n}\n\nfunction getInitialValues(fields: Form['fields']): FormValues {\n const values: FormValues = {}\n if (!fields) return values\n for (const field of fields) {\n if (field.blockType === 'message') continue\n if (field.blockType === 'checkbox') {\n values[field.name] = field.defaultValue ?? false\n } else if (\n field.blockType === 'number' ||\n field.blockType === 'text' ||\n field.blockType === 'textarea' ||\n field.blockType === 'select'\n ) {\n values[field.name] = field.defaultValue ?? ''\n } else {\n values[field.name] = ''\n }\n }\n return values\n}\n\nexport function FormRenderer({\n form,\n onSubmit,\n className,\n fieldClassName,\n buttonClassName,\n renderField,\n renderMessage,\n renderButton,\n}: FormRendererProps) {\n const [values, setValues] = useState<FormValues>(() =>\n getInitialValues(form.fields),\n )\n const [isSubmitting, setIsSubmitting] = useState(false)\n const submittingRef = useRef(false)\n\n useEffect(() => {\n setValues(getInitialValues(form.fields))\n // eslint-disable-next-line react-hooks/exhaustive-deps -- reset only on form identity change\n }, [form.id])\n\n const handleChange = useCallback(\n (name: string, value: string | number | boolean) => {\n setValues((prev) => ({ ...prev, [name]: value }))\n },\n [],\n )\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault()\n if (submittingRef.current) return\n submittingRef.current = true\n setIsSubmitting(true)\n try {\n await onSubmit(values)\n } finally {\n submittingRef.current = false\n setIsSubmitting(false)\n }\n }\n\n const wrapField = (\n field: InputField,\n style: React.CSSProperties | undefined,\n input: React.ReactNode,\n ): React.ReactElement => {\n const context: FieldRenderContext = {\n value: values[field.name] ?? '',\n onChange: (v) => handleChange(field.name, v),\n }\n const el = (\n <div\n key={field.id ?? field.name}\n className={fieldClassName}\n style={style}\n >\n {field.label && <label htmlFor={field.name}>{field.label}</label>}\n {input}\n </div>\n )\n return renderField ? renderField(field, context, el) : el\n }\n\n const renderSelectField = (\n field: InputField,\n style: React.CSSProperties | undefined,\n options: readonly { value: string; label: string }[],\n placeholder?: string,\n ): React.ReactElement =>\n wrapField(\n field,\n style,\n <select\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n >\n <option value=\"\">{placeholder || 'Select…'}</option>\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>,\n )\n\n const renderFieldElement = (field: FormField): React.ReactElement | null => {\n const style =\n field.blockType !== 'message' && field.width\n ? { width: `${field.width}%` }\n : undefined\n\n switch (field.blockType) {\n case 'text':\n return wrapField(\n field,\n style,\n <input\n type=\"text\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n placeholder={field.placeholder ?? undefined}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'email':\n return wrapField(\n field,\n style,\n <input\n type=\"email\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'number':\n return wrapField(\n field,\n style,\n <input\n type=\"number\"\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => {\n const v = e.target.value\n if (v === '') return handleChange(field.name, '')\n const n = Number(v)\n if (Number.isFinite(n)) handleChange(field.name, n)\n }}\n />,\n )\n case 'textarea':\n return wrapField(\n field,\n style,\n <textarea\n id={field.name}\n name={field.name}\n value={String(values[field.name] ?? '')}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.value)}\n />,\n )\n case 'checkbox': {\n const context: FieldRenderContext = {\n value: values[field.name] ?? false,\n onChange: (v) => handleChange(field.name, v),\n }\n const el = (\n <div\n key={field.id ?? field.name}\n className={fieldClassName}\n style={style}\n >\n <label htmlFor={field.name}>\n <input\n type=\"checkbox\"\n id={field.name}\n name={field.name}\n checked={Boolean(values[field.name])}\n required={field.required ?? false}\n onChange={(e) => handleChange(field.name, e.target.checked)}\n />\n {field.label && <span>{field.label}</span>}\n </label>\n </div>\n )\n return renderField ? renderField(field, context, el) : el\n }\n case 'select':\n return renderSelectField(\n field,\n style,\n field.options ?? [],\n field.placeholder ?? undefined,\n )\n case 'country':\n return renderSelectField(field, style, COUNTRIES)\n case 'state':\n return renderSelectField(field, style, US_STATES)\n case 'message':\n if (renderMessage && field.message) {\n return (\n <React.Fragment key={field.id ?? field.blockName ?? 'message'}>\n {renderMessage(field.message as RichTextData)}\n </React.Fragment>\n )\n }\n return null\n default:\n return null\n }\n }\n\n const buttonLabel = form.submitButtonLabel || 'Submit'\n\n return (\n <form onSubmit={handleSubmit} className={className}>\n {form.fields?.map((field) => renderFieldElement(field))}\n {renderButton ? (\n renderButton({ isSubmitting, label: buttonLabel })\n ) : (\n <button\n type=\"submit\"\n disabled={isSubmitting}\n className={buttonClassName}\n >\n {buttonLabel}\n </button>\n )}\n </form>\n )\n}\n","/** ISO 3166-1 country list (code → name) */\nexport const COUNTRIES: readonly { value: string; label: string }[] = [\n { value: 'AF', label: 'Afghanistan' },\n { value: 'AX', label: 'Åland Islands' },\n { value: 'AL', label: 'Albania' },\n { value: 'DZ', label: 'Algeria' },\n { value: 'AS', label: 'American Samoa' },\n { value: 'AD', label: 'Andorra' },\n { value: 'AO', label: 'Angola' },\n { value: 'AI', label: 'Anguilla' },\n { value: 'AQ', label: 'Antarctica' },\n { value: 'AG', label: 'Antigua and Barbuda' },\n { value: 'AR', label: 'Argentina' },\n { value: 'AM', label: 'Armenia' },\n { value: 'AW', label: 'Aruba' },\n { value: 'AU', label: 'Australia' },\n { value: 'AT', label: 'Austria' },\n { value: 'AZ', label: 'Azerbaijan' },\n { value: 'BS', label: 'Bahamas' },\n { value: 'BH', label: 'Bahrain' },\n { value: 'BD', label: 'Bangladesh' },\n { value: 'BB', label: 'Barbados' },\n { value: 'BY', label: 'Belarus' },\n { value: 'BE', label: 'Belgium' },\n { value: 'BZ', label: 'Belize' },\n { value: 'BJ', label: 'Benin' },\n { value: 'BM', label: 'Bermuda' },\n { value: 'BT', label: 'Bhutan' },\n { value: 'BO', label: 'Bolivia' },\n { value: 'BA', label: 'Bosnia and Herzegovina' },\n { value: 'BW', label: 'Botswana' },\n { value: 'BV', label: 'Bouvet Island' },\n { value: 'BR', label: 'Brazil' },\n { value: 'IO', label: 'British Indian Ocean Territory' },\n { value: 'BN', label: 'Brunei Darussalam' },\n { value: 'BG', label: 'Bulgaria' },\n { value: 'BF', label: 'Burkina Faso' },\n { value: 'BI', label: 'Burundi' },\n { value: 'KH', label: 'Cambodia' },\n { value: 'CM', label: 'Cameroon' },\n { value: 'CA', label: 'Canada' },\n { value: 'CV', label: 'Cape Verde' },\n { value: 'KY', label: 'Cayman Islands' },\n { value: 'CF', label: 'Central African Republic' },\n { value: 'TD', label: 'Chad' },\n { value: 'CL', label: 'Chile' },\n { value: 'CN', label: 'China' },\n { value: 'CX', label: 'Christmas Island' },\n { value: 'CC', label: 'Cocos (Keeling) Islands' },\n { value: 'CO', label: 'Colombia' },\n { value: 'KM', label: 'Comoros' },\n { value: 'CG', label: 'Congo' },\n { value: 'CD', label: 'Congo, Democratic Republic' },\n { value: 'CK', label: 'Cook Islands' },\n { value: 'CR', label: 'Costa Rica' },\n { value: 'CI', label: \"Côte d'Ivoire\" },\n { value: 'HR', label: 'Croatia' },\n { value: 'CU', label: 'Cuba' },\n { value: 'CY', label: 'Cyprus' },\n { value: 'CZ', label: 'Czech Republic' },\n { value: 'DK', label: 'Denmark' },\n { value: 'DJ', label: 'Djibouti' },\n { value: 'DM', label: 'Dominica' },\n { value: 'DO', label: 'Dominican Republic' },\n { value: 'EC', label: 'Ecuador' },\n { value: 'EG', label: 'Egypt' },\n { value: 'SV', label: 'El Salvador' },\n { value: 'GQ', label: 'Equatorial Guinea' },\n { value: 'ER', label: 'Eritrea' },\n { value: 'EE', label: 'Estonia' },\n { value: 'ET', label: 'Ethiopia' },\n { value: 'FK', label: 'Falkland Islands' },\n { value: 'FO', label: 'Faroe Islands' },\n { value: 'FJ', label: 'Fiji' },\n { value: 'FI', label: 'Finland' },\n { value: 'FR', label: 'France' },\n { value: 'GF', label: 'French Guiana' },\n { value: 'PF', label: 'French Polynesia' },\n { value: 'TF', label: 'French Southern Territories' },\n { value: 'GA', label: 'Gabon' },\n { value: 'GM', label: 'Gambia' },\n { value: 'GE', label: 'Georgia' },\n { value: 'DE', label: 'Germany' },\n { value: 'GH', label: 'Ghana' },\n { value: 'GI', label: 'Gibraltar' },\n { value: 'GR', label: 'Greece' },\n { value: 'GL', label: 'Greenland' },\n { value: 'GD', label: 'Grenada' },\n { value: 'GP', label: 'Guadeloupe' },\n { value: 'GU', label: 'Guam' },\n { value: 'GT', label: 'Guatemala' },\n { value: 'GG', label: 'Guernsey' },\n { value: 'GN', label: 'Guinea' },\n { value: 'GW', label: 'Guinea-Bissau' },\n { value: 'GY', label: 'Guyana' },\n { value: 'HT', label: 'Haiti' },\n { value: 'VA', label: 'Holy See (Vatican)' },\n { value: 'HN', label: 'Honduras' },\n { value: 'HK', label: 'Hong Kong' },\n { value: 'HU', label: 'Hungary' },\n { value: 'IS', label: 'Iceland' },\n { value: 'IN', label: 'India' },\n { value: 'ID', label: 'Indonesia' },\n { value: 'IR', label: 'Iran' },\n { value: 'IQ', label: 'Iraq' },\n { value: 'IE', label: 'Ireland' },\n { value: 'IM', label: 'Isle of Man' },\n { value: 'IL', label: 'Israel' },\n { value: 'IT', label: 'Italy' },\n { value: 'JM', label: 'Jamaica' },\n { value: 'JP', label: 'Japan' },\n { value: 'JE', label: 'Jersey' },\n { value: 'JO', label: 'Jordan' },\n { value: 'KZ', label: 'Kazakhstan' },\n { value: 'KE', label: 'Kenya' },\n { value: 'KI', label: 'Kiribati' },\n { value: 'KP', label: 'Korea, North' },\n { value: 'KR', label: 'Korea, South' },\n { value: 'KW', label: 'Kuwait' },\n { value: 'KG', label: 'Kyrgyzstan' },\n { value: 'LA', label: 'Laos' },\n { value: 'LV', label: 'Latvia' },\n { value: 'LB', label: 'Lebanon' },\n { value: 'LS', label: 'Lesotho' },\n { value: 'LR', label: 'Liberia' },\n { value: 'LY', label: 'Libya' },\n { value: 'LI', label: 'Liechtenstein' },\n { value: 'LT', label: 'Lithuania' },\n { value: 'LU', label: 'Luxembourg' },\n { value: 'MO', label: 'Macao' },\n { value: 'MK', label: 'North Macedonia' },\n { value: 'MG', label: 'Madagascar' },\n { value: 'MW', label: 'Malawi' },\n { value: 'MY', label: 'Malaysia' },\n { value: 'MV', label: 'Maldives' },\n { value: 'ML', label: 'Mali' },\n { value: 'MT', label: 'Malta' },\n { value: 'MH', label: 'Marshall Islands' },\n { value: 'MQ', label: 'Martinique' },\n { value: 'MR', label: 'Mauritania' },\n { value: 'MU', label: 'Mauritius' },\n { value: 'YT', label: 'Mayotte' },\n { value: 'MX', label: 'Mexico' },\n { value: 'FM', label: 'Micronesia' },\n { value: 'MD', label: 'Moldova' },\n { value: 'MC', label: 'Monaco' },\n { value: 'MN', label: 'Mongolia' },\n { value: 'ME', label: 'Montenegro' },\n { value: 'MS', label: 'Montserrat' },\n { value: 'MA', label: 'Morocco' },\n { value: 'MZ', label: 'Mozambique' },\n { value: 'MM', label: 'Myanmar' },\n { value: 'NA', label: 'Namibia' },\n { value: 'NR', label: 'Nauru' },\n { value: 'NP', label: 'Nepal' },\n { value: 'NL', label: 'Netherlands' },\n { value: 'NC', label: 'New Caledonia' },\n { value: 'NZ', label: 'New Zealand' },\n { value: 'NI', label: 'Nicaragua' },\n { value: 'NE', label: 'Niger' },\n { value: 'NG', label: 'Nigeria' },\n { value: 'NU', label: 'Niue' },\n { value: 'NF', label: 'Norfolk Island' },\n { value: 'MP', label: 'Northern Mariana Islands' },\n { value: 'NO', label: 'Norway' },\n { value: 'OM', label: 'Oman' },\n { value: 'PK', label: 'Pakistan' },\n { value: 'PW', label: 'Palau' },\n { value: 'PS', label: 'Palestine' },\n { value: 'PA', label: 'Panama' },\n { value: 'PG', label: 'Papua New Guinea' },\n { value: 'PY', label: 'Paraguay' },\n { value: 'PE', label: 'Peru' },\n { value: 'PH', label: 'Philippines' },\n { value: 'PN', label: 'Pitcairn' },\n { value: 'PL', label: 'Poland' },\n { value: 'PT', label: 'Portugal' },\n { value: 'PR', label: 'Puerto Rico' },\n { value: 'QA', label: 'Qatar' },\n { value: 'RE', label: 'Réunion' },\n { value: 'RO', label: 'Romania' },\n { value: 'RU', label: 'Russian Federation' },\n { value: 'RW', label: 'Rwanda' },\n { value: 'BL', label: 'Saint Barthélemy' },\n { value: 'SH', label: 'Saint Helena' },\n { value: 'KN', label: 'Saint Kitts and Nevis' },\n { value: 'LC', label: 'Saint Lucia' },\n { value: 'MF', label: 'Saint Martin' },\n { value: 'PM', label: 'Saint Pierre and Miquelon' },\n { value: 'VC', label: 'Saint Vincent and the Grenadines' },\n { value: 'WS', label: 'Samoa' },\n { value: 'SM', label: 'San Marino' },\n { value: 'ST', label: 'Sao Tome and Principe' },\n { value: 'SA', label: 'Saudi Arabia' },\n { value: 'SN', label: 'Senegal' },\n { value: 'RS', label: 'Serbia' },\n { value: 'SC', label: 'Seychelles' },\n { value: 'SL', label: 'Sierra Leone' },\n { value: 'SG', label: 'Singapore' },\n { value: 'SX', label: 'Sint Maarten' },\n { value: 'SK', label: 'Slovakia' },\n { value: 'SI', label: 'Slovenia' },\n { value: 'SB', label: 'Solomon Islands' },\n { value: 'SO', label: 'Somalia' },\n { value: 'ZA', label: 'South Africa' },\n { value: 'GS', label: 'South Georgia' },\n { value: 'SS', label: 'South Sudan' },\n { value: 'ES', label: 'Spain' },\n { value: 'LK', label: 'Sri Lanka' },\n { value: 'SD', label: 'Sudan' },\n { value: 'SR', label: 'Suriname' },\n { value: 'SJ', label: 'Svalbard and Jan Mayen' },\n { value: 'SZ', label: 'Eswatini' },\n { value: 'SE', label: 'Sweden' },\n { value: 'CH', label: 'Switzerland' },\n { value: 'SY', label: 'Syria' },\n { value: 'TW', label: 'Taiwan' },\n { value: 'TJ', label: 'Tajikistan' },\n { value: 'TZ', label: 'Tanzania' },\n { value: 'TH', label: 'Thailand' },\n { value: 'TL', label: 'Timor-Leste' },\n { value: 'TG', label: 'Togo' },\n { value: 'TK', label: 'Tokelau' },\n { value: 'TO', label: 'Tonga' },\n { value: 'TT', label: 'Trinidad and Tobago' },\n { value: 'TN', label: 'Tunisia' },\n { value: 'TR', label: 'Turkey' },\n { value: 'TM', label: 'Turkmenistan' },\n { value: 'TC', label: 'Turks and Caicos Islands' },\n { value: 'TV', label: 'Tuvalu' },\n { value: 'UG', label: 'Uganda' },\n { value: 'UA', label: 'Ukraine' },\n { value: 'AE', label: 'United Arab Emirates' },\n { value: 'GB', label: 'United Kingdom' },\n { value: 'US', label: 'United States' },\n { value: 'UM', label: 'U.S. Minor Outlying Islands' },\n { value: 'UY', label: 'Uruguay' },\n { value: 'UZ', label: 'Uzbekistan' },\n { value: 'VU', label: 'Vanuatu' },\n { value: 'VE', label: 'Venezuela' },\n { value: 'VN', label: 'Vietnam' },\n { value: 'VG', label: 'Virgin Islands, British' },\n { value: 'VI', label: 'Virgin Islands, U.S.' },\n { value: 'WF', label: 'Wallis and Futuna' },\n { value: 'EH', label: 'Western Sahara' },\n { value: 'YE', label: 'Yemen' },\n { value: 'ZM', label: 'Zambia' },\n { value: 'ZW', label: 'Zimbabwe' },\n] as const\n\n/** US states (code → name) */\nexport const US_STATES: readonly { value: string; label: string }[] = [\n { value: 'AL', label: 'Alabama' },\n { value: 'AK', label: 'Alaska' },\n { value: 'AZ', label: 'Arizona' },\n { value: 'AR', label: 'Arkansas' },\n { value: 'CA', label: 'California' },\n { value: 'CO', label: 'Colorado' },\n { value: 'CT', label: 'Connecticut' },\n { value: 'DE', label: 'Delaware' },\n { value: 'FL', label: 'Florida' },\n { value: 'GA', label: 'Georgia' },\n { value: 'HI', label: 'Hawaii' },\n { value: 'ID', label: 'Idaho' },\n { value: 'IL', label: 'Illinois' },\n { value: 'IN', label: 'Indiana' },\n { value: 'IA', label: 'Iowa' },\n { value: 'KS', label: 'Kansas' },\n { value: 'KY', label: 'Kentucky' },\n { value: 'LA', label: 'Louisiana' },\n { value: 'ME', label: 'Maine' },\n { value: 'MD', label: 'Maryland' },\n { value: 'MA', label: 'Massachusetts' },\n { value: 'MI', label: 'Michigan' },\n { value: 'MN', label: 'Minnesota' },\n { value: 'MS', label: 'Mississippi' },\n { value: 'MO', label: 'Missouri' },\n { value: 'MT', label: 'Montana' },\n { value: 'NE', label: 'Nebraska' },\n { value: 'NV', label: 'Nevada' },\n { value: 'NH', label: 'New Hampshire' },\n { value: 'NJ', label: 'New Jersey' },\n { value: 'NM', label: 'New Mexico' },\n { value: 'NY', label: 'New York' },\n { value: 'NC', label: 'North Carolina' },\n { value: 'ND', label: 'North Dakota' },\n { value: 'OH', label: 'Ohio' },\n { value: 'OK', label: 'Oklahoma' },\n { value: 'OR', label: 'Oregon' },\n { value: 'PA', label: 'Pennsylvania' },\n { value: 'RI', label: 'Rhode Island' },\n { value: 'SC', label: 'South Carolina' },\n { value: 'SD', label: 'South Dakota' },\n { value: 'TN', label: 'Tennessee' },\n { value: 'TX', label: 'Texas' },\n { value: 'UT', label: 'Utah' },\n { value: 'VT', label: 'Vermont' },\n { value: 'VA', label: 'Virginia' },\n { value: 'WA', label: 'Washington' },\n { value: 'WV', label: 'West Virginia' },\n { value: 'WI', label: 'Wisconsin' },\n { value: 'WY', label: 'Wyoming' },\n { value: 'DC', label: 'District of Columbia' },\n] as const\n","'use client'\n\nimport React, { useCallback, useState } from 'react'\nimport type { CSSProperties } from 'react'\nimport type { ImageData } from '../../utils/image'\nimport { getImageSrcSet, getImagePlaceholderStyle } from '../../utils/image'\n\nexport interface ImageProps {\n /** Payload image document */\n image: ImageData\n /** Display width in CSS pixels (for selecting optimal srcset size) */\n width?: number\n /** Device pixel ratio (default: 1) */\n dpr?: number\n /** Placeholder strategy (default: 'blur') */\n placeholder?: 'blur' | 'color' | 'none'\n /** Container className */\n className?: string\n /** Container style */\n style?: CSSProperties\n /** Inner `<img>` className */\n imgClassName?: string\n /** Inner `<img>` style */\n imgStyle?: CSSProperties\n /** HTML sizes attribute */\n sizes?: string\n /** Loading strategy (default: 'lazy') */\n loading?: 'lazy' | 'eager'\n /** Callback when image finishes loading */\n onLoad?: () => void\n /** Object-fit for the image (default: 'cover') */\n objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n}\n\n/**\n * Image component with blur-up / color placeholder support.\n *\n * Uses LQIP (Low Quality Image Placeholder) for a smooth blur-up effect,\n * falling back to palette color or no placeholder.\n */\nexport function Image({\n image,\n width,\n dpr = 1,\n placeholder = 'blur',\n className,\n style,\n imgClassName,\n imgStyle,\n sizes,\n loading = 'lazy',\n onLoad,\n objectFit = 'cover',\n}: ImageProps) {\n const [loaded, setLoaded] = useState(false)\n\n const aspectRatio =\n image.width && image.height ? `${image.width} / ${image.height}` : undefined\n\n const srcSet = getImageSrcSet(image)\n const src = image.url ?? undefined\n\n const placeholderStyle = getImagePlaceholderStyle(image, {\n type: placeholder,\n })\n const hasLqip = placeholder === 'blur' && !!image.lqip\n const hasColorPlaceholder =\n !hasLqip && Object.keys(placeholderStyle).length > 0\n\n // Callback ref: detect SSR-cached images that are already loaded\n const imgRef = useCallback(\n (node: HTMLImageElement | null) => {\n if (node && node.complete && node.naturalWidth > 0) {\n setLoaded(true)\n onLoad?.()\n }\n },\n [onLoad],\n )\n\n const handleLoad = useCallback(() => {\n setLoaded(true)\n onLoad?.()\n }, [onLoad])\n\n // Container styles\n const containerStyle: CSSProperties = {\n position: 'relative',\n overflow: 'hidden',\n ...(aspectRatio ? { aspectRatio } : {}),\n ...(hasColorPlaceholder ? placeholderStyle : {}),\n ...style,\n }\n\n // Shared img base styles\n const imgBase: CSSProperties = {\n display: 'block',\n width: '100%',\n height: '100%',\n objectFit,\n }\n\n // Main image styles\n const mainImgStyle: CSSProperties = {\n ...imgBase,\n opacity: loaded ? 1 : 0,\n transition: 'opacity 0.3s ease',\n ...imgStyle,\n }\n\n // LQIP overlay styles\n const lqipStyle: CSSProperties = {\n ...imgBase,\n position: 'absolute',\n top: 0,\n left: 0,\n filter: 'blur(20px)',\n transform: 'scale(1.1)',\n opacity: loaded ? 0 : 1,\n transition: 'opacity 0.3s ease',\n pointerEvents: 'none',\n }\n\n return (\n <div className={className} style={containerStyle}>\n {hasLqip && (\n <img\n aria-hidden\n alt=\"\"\n src={image.lqip!}\n style={lqipStyle}\n />\n )}\n <img\n ref={imgRef}\n alt={image.alt ?? ''}\n src={src}\n srcSet={srcSet || undefined}\n sizes={sizes}\n width={width ? width * dpr : undefined}\n loading={loading}\n onLoad={handleLoad}\n className={imgClassName}\n style={mainImgStyle}\n />\n </div>\n )\n}\n","/** Palette colors extracted from an image */\nexport interface ImagePalette {\n vibrant?: string | null\n muted?: string | null\n darkVibrant?: string | null\n darkMuted?: string | null\n lightVibrant?: string | null\n lightMuted?: string | null\n}\n\n/** Common image data shape from Payload CMS upload collections */\nexport interface ImageData {\n url?: string | null\n width?: number | null\n height?: number | null\n alt?: string | null\n lqip?: string | null\n palette?: ImagePalette | null\n sizes?: Record<\n string,\n | {\n url?: string | null\n width?: number | null\n height?: number | null\n }\n | undefined\n >\n}\n\n/** Pre-generated image size breakpoints (px) */\nexport const IMAGE_SIZES = [384, 768, 1536] as const\n\n/**\n * Returns the optimal image URL for a given display width.\n *\n * Picks the smallest pre-generated size whose width >= displayWidth × dpr.\n * Falls back to the original URL when no matching size exists.\n *\n * @param image - Payload image document\n * @param displayWidth - CSS pixel width the image will be displayed at\n * @param dpr - Device pixel ratio (default: 1)\n * @returns URL string, or empty string if no URL is available\n */\nexport function getImageUrl(\n image: ImageData,\n displayWidth: number,\n dpr: number = 1,\n): string {\n const target = displayWidth * dpr\n const sizes = image.sizes\n\n if (sizes) {\n for (const size of IMAGE_SIZES) {\n if (size >= target) {\n const entry = sizes[String(size)]\n if (entry?.url) return entry.url\n }\n }\n }\n\n return image.url ?? ''\n}\n\n/**\n * Generates an HTML `srcset` attribute string from pre-generated sizes.\n *\n * Includes all available sizes plus the original image.\n * Example output: `\"url-384 384w, url-768 768w, url-1536 1536w, url-original 2000w\"`\n *\n * @param image - Payload image document\n * @returns srcset string, or empty string if no URLs are available\n */\nexport function getImageSrcSet(image: ImageData): string {\n const parts: string[] = []\n const sizes = image.sizes\n\n if (sizes) {\n for (const size of IMAGE_SIZES) {\n const entry = sizes[String(size)]\n if (entry?.url && entry.width) {\n parts.push(`${entry.url} ${entry.width}w`)\n }\n }\n }\n\n if (image.url && image.width) {\n parts.push(`${image.url} ${image.width}w`)\n }\n\n return parts.join(', ')\n}\n\n/**\n * Returns the LQIP (Low Quality Image Placeholder) data URL for an image.\n *\n * @param image - Payload image document\n * @returns LQIP data URL string, or undefined if not available\n */\nexport function getImageLqip(image: ImageData): string | undefined {\n return image.lqip ?? undefined\n}\n\n/**\n * Returns the extracted color palette for an image.\n *\n * @param image - Payload image document\n * @returns ImagePalette object, or undefined if not available\n */\nexport function getImagePalette(image: ImageData): ImagePalette | undefined {\n return image.palette ?? undefined\n}\n\n/** Options for `getImagePlaceholderStyle` */\nexport interface ImagePlaceholderOptions {\n /** Placeholder strategy (default: 'blur') */\n type?: 'blur' | 'color' | 'none'\n /** Which palette color to use for 'color' strategy (default: 'muted') */\n paletteColor?: keyof ImagePalette\n}\n\n/**\n * Returns inline CSS styles for an image placeholder.\n *\n * - `blur`: uses LQIP as background, falls back to palette color, then empty\n * - `color`: uses palette color as background, falls back to empty\n * - `none`: always returns empty\n *\n * @param image - Payload image document\n * @param options - Placeholder options\n * @returns CSS style object compatible with React CSSProperties\n */\nexport function getImagePlaceholderStyle(\n image: ImageData,\n options?: ImagePlaceholderOptions,\n): Record<string, string> {\n const type = options?.type ?? 'blur'\n const paletteColor = options?.paletteColor ?? 'muted'\n\n if (type === 'none') return {}\n\n const color = image.palette?.[paletteColor]\n\n if (type === 'blur') {\n const lqip = image.lqip\n if (lqip) {\n return {\n backgroundImage: `url(${lqip})`,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n }\n }\n // Cascade: fall back to color\n if (color) {\n return { backgroundColor: color }\n }\n return {}\n }\n\n // type === 'color'\n if (color) {\n return { backgroundColor: color }\n }\n return {}\n}\n"],"mappings":"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","names":["import_react","React","import_react","_a","React","import_react","React"]}
|
package/dist/components.d.cts
CHANGED
|
@@ -1,6 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
3
|
-
import '@payloadcms/richtext-lexical';
|
|
4
|
-
import '@payloadcms/richtext-lexical/
|
|
5
|
-
import '
|
|
6
|
-
import './
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { SerializedLinkNode, SerializedBlockNode } from '@payloadcms/richtext-lexical';
|
|
3
|
+
import { SerializedEditorState, SerializedLexicalNode } from '@payloadcms/richtext-lexical/lexical';
|
|
4
|
+
import { JSXConverter } from '@payloadcms/richtext-lexical/react';
|
|
5
|
+
import { F as Form } from './payload-types-COjt2QTn.cjs';
|
|
6
|
+
import { I as ImageData } from './image-TT8lTsk5.cjs';
|
|
7
|
+
|
|
8
|
+
type RichTextData = SerializedEditorState<SerializedLexicalNode>;
|
|
9
|
+
interface RichTextContentProps {
|
|
10
|
+
data: RichTextData;
|
|
11
|
+
className?: string;
|
|
12
|
+
internalDocToHref?: (args: {
|
|
13
|
+
linkNode: SerializedLinkNode;
|
|
14
|
+
}) => string;
|
|
15
|
+
blocks?: {
|
|
16
|
+
Iframe?: JSXConverter<SerializedBlockNode<{
|
|
17
|
+
blockName?: string | null;
|
|
18
|
+
blockType: string;
|
|
19
|
+
url: string;
|
|
20
|
+
}>>;
|
|
21
|
+
Player?: JSXConverter<SerializedBlockNode<{
|
|
22
|
+
blockName?: string | null;
|
|
23
|
+
blockType: string;
|
|
24
|
+
url: string;
|
|
25
|
+
}>>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
declare function RichTextContent({ data, className, internalDocToHref, blocks, }: RichTextContentProps): React.JSX.Element;
|
|
29
|
+
|
|
30
|
+
type FormField = NonNullable<Form['fields']>[number];
|
|
31
|
+
type InputField = Exclude<FormField, {
|
|
32
|
+
blockType: 'message';
|
|
33
|
+
}>;
|
|
34
|
+
type FormValues = Record<string, string | number | boolean>;
|
|
35
|
+
type SubmissionData = {
|
|
36
|
+
field: string;
|
|
37
|
+
value: string;
|
|
38
|
+
}[];
|
|
39
|
+
declare function toSubmissionData(values: FormValues): SubmissionData;
|
|
40
|
+
interface FieldRenderContext {
|
|
41
|
+
value: string | number | boolean;
|
|
42
|
+
onChange: (value: string | number | boolean) => void;
|
|
43
|
+
}
|
|
44
|
+
interface FormRendererProps {
|
|
45
|
+
form: Form;
|
|
46
|
+
onSubmit: (data: FormValues) => void | Promise<void>;
|
|
47
|
+
className?: string;
|
|
48
|
+
fieldClassName?: string;
|
|
49
|
+
buttonClassName?: string;
|
|
50
|
+
renderField?: (field: FormField, context: FieldRenderContext, defaultRender: React.ReactElement) => React.ReactElement;
|
|
51
|
+
renderMessage?: (data: RichTextData) => React.ReactElement;
|
|
52
|
+
renderButton?: (props: {
|
|
53
|
+
isSubmitting: boolean;
|
|
54
|
+
label: string;
|
|
55
|
+
}) => React.ReactElement;
|
|
56
|
+
}
|
|
57
|
+
declare function FormRenderer({ form, onSubmit, className, fieldClassName, buttonClassName, renderField, renderMessage, renderButton, }: FormRendererProps): React.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface ImageProps {
|
|
60
|
+
/** Payload image document */
|
|
61
|
+
image: ImageData;
|
|
62
|
+
/** Display width in CSS pixels (for selecting optimal srcset size) */
|
|
63
|
+
width?: number;
|
|
64
|
+
/** Device pixel ratio (default: 1) */
|
|
65
|
+
dpr?: number;
|
|
66
|
+
/** Placeholder strategy (default: 'blur') */
|
|
67
|
+
placeholder?: 'blur' | 'color' | 'none';
|
|
68
|
+
/** Container className */
|
|
69
|
+
className?: string;
|
|
70
|
+
/** Container style */
|
|
71
|
+
style?: CSSProperties;
|
|
72
|
+
/** Inner `<img>` className */
|
|
73
|
+
imgClassName?: string;
|
|
74
|
+
/** Inner `<img>` style */
|
|
75
|
+
imgStyle?: CSSProperties;
|
|
76
|
+
/** HTML sizes attribute */
|
|
77
|
+
sizes?: string;
|
|
78
|
+
/** Loading strategy (default: 'lazy') */
|
|
79
|
+
loading?: 'lazy' | 'eager';
|
|
80
|
+
/** Callback when image finishes loading */
|
|
81
|
+
onLoad?: () => void;
|
|
82
|
+
/** Object-fit for the image (default: 'cover') */
|
|
83
|
+
objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Image component with blur-up / color placeholder support.
|
|
87
|
+
*
|
|
88
|
+
* Uses LQIP (Low Quality Image Placeholder) for a smooth blur-up effect,
|
|
89
|
+
* falling back to palette color or no placeholder.
|
|
90
|
+
*/
|
|
91
|
+
declare function Image({ image, width, dpr, placeholder, className, style, imgClassName, imgStyle, sizes, loading, onLoad, objectFit, }: ImageProps): React.JSX.Element;
|
|
92
|
+
|
|
93
|
+
export { type FieldRenderContext, type FormField, FormRenderer, type FormRendererProps, type FormValues, Image, type ImageProps, type InputField, RichTextContent, type RichTextContentProps, type RichTextData, type SubmissionData, toSubmissionData };
|
package/dist/components.d.ts
CHANGED
|
@@ -1,6 +1,93 @@
|
|
|
1
|
-
|
|
2
|
-
import '
|
|
3
|
-
import '@payloadcms/richtext-lexical';
|
|
4
|
-
import '@payloadcms/richtext-lexical/
|
|
5
|
-
import '
|
|
6
|
-
import './
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import { SerializedLinkNode, SerializedBlockNode } from '@payloadcms/richtext-lexical';
|
|
3
|
+
import { SerializedEditorState, SerializedLexicalNode } from '@payloadcms/richtext-lexical/lexical';
|
|
4
|
+
import { JSXConverter } from '@payloadcms/richtext-lexical/react';
|
|
5
|
+
import { F as Form } from './payload-types-COjt2QTn.js';
|
|
6
|
+
import { I as ImageData } from './image-TT8lTsk5.js';
|
|
7
|
+
|
|
8
|
+
type RichTextData = SerializedEditorState<SerializedLexicalNode>;
|
|
9
|
+
interface RichTextContentProps {
|
|
10
|
+
data: RichTextData;
|
|
11
|
+
className?: string;
|
|
12
|
+
internalDocToHref?: (args: {
|
|
13
|
+
linkNode: SerializedLinkNode;
|
|
14
|
+
}) => string;
|
|
15
|
+
blocks?: {
|
|
16
|
+
Iframe?: JSXConverter<SerializedBlockNode<{
|
|
17
|
+
blockName?: string | null;
|
|
18
|
+
blockType: string;
|
|
19
|
+
url: string;
|
|
20
|
+
}>>;
|
|
21
|
+
Player?: JSXConverter<SerializedBlockNode<{
|
|
22
|
+
blockName?: string | null;
|
|
23
|
+
blockType: string;
|
|
24
|
+
url: string;
|
|
25
|
+
}>>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
declare function RichTextContent({ data, className, internalDocToHref, blocks, }: RichTextContentProps): React.JSX.Element;
|
|
29
|
+
|
|
30
|
+
type FormField = NonNullable<Form['fields']>[number];
|
|
31
|
+
type InputField = Exclude<FormField, {
|
|
32
|
+
blockType: 'message';
|
|
33
|
+
}>;
|
|
34
|
+
type FormValues = Record<string, string | number | boolean>;
|
|
35
|
+
type SubmissionData = {
|
|
36
|
+
field: string;
|
|
37
|
+
value: string;
|
|
38
|
+
}[];
|
|
39
|
+
declare function toSubmissionData(values: FormValues): SubmissionData;
|
|
40
|
+
interface FieldRenderContext {
|
|
41
|
+
value: string | number | boolean;
|
|
42
|
+
onChange: (value: string | number | boolean) => void;
|
|
43
|
+
}
|
|
44
|
+
interface FormRendererProps {
|
|
45
|
+
form: Form;
|
|
46
|
+
onSubmit: (data: FormValues) => void | Promise<void>;
|
|
47
|
+
className?: string;
|
|
48
|
+
fieldClassName?: string;
|
|
49
|
+
buttonClassName?: string;
|
|
50
|
+
renderField?: (field: FormField, context: FieldRenderContext, defaultRender: React.ReactElement) => React.ReactElement;
|
|
51
|
+
renderMessage?: (data: RichTextData) => React.ReactElement;
|
|
52
|
+
renderButton?: (props: {
|
|
53
|
+
isSubmitting: boolean;
|
|
54
|
+
label: string;
|
|
55
|
+
}) => React.ReactElement;
|
|
56
|
+
}
|
|
57
|
+
declare function FormRenderer({ form, onSubmit, className, fieldClassName, buttonClassName, renderField, renderMessage, renderButton, }: FormRendererProps): React.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface ImageProps {
|
|
60
|
+
/** Payload image document */
|
|
61
|
+
image: ImageData;
|
|
62
|
+
/** Display width in CSS pixels (for selecting optimal srcset size) */
|
|
63
|
+
width?: number;
|
|
64
|
+
/** Device pixel ratio (default: 1) */
|
|
65
|
+
dpr?: number;
|
|
66
|
+
/** Placeholder strategy (default: 'blur') */
|
|
67
|
+
placeholder?: 'blur' | 'color' | 'none';
|
|
68
|
+
/** Container className */
|
|
69
|
+
className?: string;
|
|
70
|
+
/** Container style */
|
|
71
|
+
style?: CSSProperties;
|
|
72
|
+
/** Inner `<img>` className */
|
|
73
|
+
imgClassName?: string;
|
|
74
|
+
/** Inner `<img>` style */
|
|
75
|
+
imgStyle?: CSSProperties;
|
|
76
|
+
/** HTML sizes attribute */
|
|
77
|
+
sizes?: string;
|
|
78
|
+
/** Loading strategy (default: 'lazy') */
|
|
79
|
+
loading?: 'lazy' | 'eager';
|
|
80
|
+
/** Callback when image finishes loading */
|
|
81
|
+
onLoad?: () => void;
|
|
82
|
+
/** Object-fit for the image (default: 'cover') */
|
|
83
|
+
objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Image component with blur-up / color placeholder support.
|
|
87
|
+
*
|
|
88
|
+
* Uses LQIP (Low Quality Image Placeholder) for a smooth blur-up effect,
|
|
89
|
+
* falling back to palette color or no placeholder.
|
|
90
|
+
*/
|
|
91
|
+
declare function Image({ image, width, dpr, placeholder, className, style, imgClassName, imgStyle, sizes, loading, onLoad, objectFit, }: ImageProps): React.JSX.Element;
|
|
92
|
+
|
|
93
|
+
export { type FieldRenderContext, type FormField, FormRenderer, type FormRendererProps, type FormValues, Image, type ImageProps, type InputField, RichTextContent, type RichTextContentProps, type RichTextData, type SubmissionData, toSubmissionData };
|