@01.software/sdk 0.2.9-dev.260311.926a6d4 → 0.2.9-dev.260312.8c43a16

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 (64) hide show
  1. package/README.md +95 -62
  2. package/dist/auth.cjs +3 -1
  3. package/dist/auth.cjs.map +1 -1
  4. package/dist/auth.d.cts +1 -1
  5. package/dist/auth.d.ts +1 -1
  6. package/dist/auth.js +3 -1
  7. package/dist/auth.js.map +1 -1
  8. package/dist/index.cjs +172 -91
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +17 -35
  11. package/dist/index.d.ts +17 -35
  12. package/dist/index.js +177 -92
  13. package/dist/index.js.map +1 -1
  14. package/dist/{payload-types-BjvBwB8Z.d.cts → payload-types-BUwpb306.d.cts} +295 -1384
  15. package/dist/{payload-types-BjvBwB8Z.d.ts → payload-types-BUwpb306.d.ts} +295 -1384
  16. package/dist/{components → ui}/code-block.cjs +11 -8
  17. package/dist/ui/code-block.cjs.map +1 -0
  18. package/dist/{components → ui}/code-block.js +11 -8
  19. package/dist/ui/code-block.js.map +1 -0
  20. package/dist/{components → ui}/flow.cjs +117 -69
  21. package/dist/ui/flow.cjs.map +1 -0
  22. package/dist/{components → ui}/flow.js +114 -66
  23. package/dist/ui/flow.js.map +1 -0
  24. package/dist/{components → ui}/form.cjs +6 -6
  25. package/dist/ui/form.cjs.map +1 -0
  26. package/dist/{components → ui}/form.d.cts +1 -1
  27. package/dist/{components → ui}/form.d.ts +1 -1
  28. package/dist/{components → ui}/form.js +3 -3
  29. package/dist/ui/form.js.map +1 -0
  30. package/dist/{components → ui}/image.cjs +2 -2
  31. package/dist/ui/image.cjs.map +1 -0
  32. package/dist/{components → ui}/image.js +2 -2
  33. package/dist/ui/image.js.map +1 -0
  34. package/dist/{components → ui}/rich-text.cjs +6 -6
  35. package/dist/ui/rich-text.cjs.map +1 -0
  36. package/dist/{components → ui}/rich-text.js +3 -3
  37. package/dist/ui/rich-text.js.map +1 -0
  38. package/dist/{webhook-_LdLdjGa.d.ts → webhook-BUcDo2Ny.d.cts} +2 -2
  39. package/dist/{webhook-CszIpUKn.d.cts → webhook-D8Bp97bF.d.ts} +2 -2
  40. package/dist/webhook.cjs +7 -5
  41. package/dist/webhook.cjs.map +1 -1
  42. package/dist/webhook.d.cts +2 -2
  43. package/dist/webhook.d.ts +2 -2
  44. package/dist/webhook.js +7 -5
  45. package/dist/webhook.js.map +1 -1
  46. package/package.json +29 -28
  47. package/dist/components/code-block.cjs.map +0 -1
  48. package/dist/components/code-block.js.map +0 -1
  49. package/dist/components/flow.cjs.map +0 -1
  50. package/dist/components/flow.js.map +0 -1
  51. package/dist/components/form.cjs.map +0 -1
  52. package/dist/components/form.js.map +0 -1
  53. package/dist/components/image.cjs.map +0 -1
  54. package/dist/components/image.js.map +0 -1
  55. package/dist/components/rich-text.cjs.map +0 -1
  56. package/dist/components/rich-text.js.map +0 -1
  57. /package/dist/{components → ui}/code-block.d.cts +0 -0
  58. /package/dist/{components → ui}/code-block.d.ts +0 -0
  59. /package/dist/{components → ui}/flow.d.cts +0 -0
  60. /package/dist/{components → ui}/flow.d.ts +0 -0
  61. /package/dist/{components → ui}/image.d.cts +0 -0
  62. /package/dist/{components → ui}/image.d.ts +0 -0
  63. /package/dist/{components → ui}/rich-text.d.cts +0 -0
  64. /package/dist/{components → ui}/rich-text.d.ts +0 -0
@@ -36,7 +36,7 @@ var __async = (__this, __arguments, generator) => {
36
36
  });
37
37
  };
38
38
 
39
- // src/components/FlowRenderer/index.tsx
39
+ // src/ui/Flow/index.tsx
40
40
  import React from "react";
41
41
  import {
42
42
  ReactFlow,
@@ -45,7 +45,7 @@ import {
45
45
  MarkerType
46
46
  } from "@xyflow/react";
47
47
 
48
- // src/components/FlowRenderer/types.ts
48
+ // src/ui/Flow/types.ts
49
49
  function isDynamicNode(node) {
50
50
  return node.type === "dynamic";
51
51
  }
@@ -53,7 +53,7 @@ function isFrameNode(node) {
53
53
  return node.type === "frame";
54
54
  }
55
55
 
56
- // src/components/FlowRenderer/built-in-node-types.ts
56
+ // src/ui/Flow/built-in-node-types.ts
57
57
  var BUILT_IN_NODE_TYPES = [
58
58
  {
59
59
  slug: "text",
@@ -76,7 +76,7 @@ var BUILT_IN_NODE_TYPES = [
76
76
  }
77
77
  ];
78
78
 
79
- // src/components/FlowRenderer/built-in-edge-types.ts
79
+ // src/ui/Flow/built-in-edge-types.ts
80
80
  var BUILT_IN_EDGE_TYPES = [
81
81
  {
82
82
  slug: "default",
@@ -91,7 +91,7 @@ var BUILT_IN_EDGE_TYPES = [
91
91
  }
92
92
  ];
93
93
 
94
- // src/components/FlowRenderer/useFlow.ts
94
+ // src/ui/Flow/useFlow.ts
95
95
  import { useQuery } from "@tanstack/react-query";
96
96
  import { useMemo } from "react";
97
97
  function toNodeTypeDef(doc) {
@@ -100,7 +100,10 @@ function toNodeTypeDef(doc) {
100
100
  slug: String((_a = doc.slug) != null ? _a : ""),
101
101
  name: String((_b = doc.title) != null ? _b : ""),
102
102
  color: String((_c = doc.color) != null ? _c : "#e5e7eb"),
103
- defaultSize: (_d = doc.defaultSize) != null ? _d : { width: 200, height: 200 },
103
+ defaultSize: (_d = doc.defaultSize) != null ? _d : {
104
+ width: 200,
105
+ height: 200
106
+ },
104
107
  fields: Array.isArray(doc.fields) ? doc.fields : [],
105
108
  transparentBackground: Boolean(doc.transparentBackground)
106
109
  };
@@ -124,38 +127,47 @@ function useFlow(options) {
124
127
  const { client, slug, id, enabled = true } = options;
125
128
  const hasIdentifier = !!(slug || id);
126
129
  const identifier = (_a = id != null ? id : slug) != null ? _a : "";
127
- const flowQuery = useQuery({
128
- queryKey: ["flows", identifier],
129
- queryFn: () => __async(null, null, function* () {
130
- if (id) {
131
- return client.from("flows").findById(id);
132
- }
133
- const result = yield client.from("flows").find({
134
- where: { slug: { equals: slug } },
135
- limit: 1
136
- });
137
- const doc = result.docs[0];
138
- if (!doc) throw new Error(`Flow not found: ${slug}`);
139
- return doc;
140
- }),
141
- enabled: enabled && hasIdentifier
142
- }, client.queryClient);
143
- const nodeTypesQuery = useQuery({
144
- queryKey: ["flow-node-types"],
145
- queryFn: () => __async(null, null, function* () {
146
- const result = yield client.from("flow-node-types").find({ limit: 100 });
147
- return result.docs;
148
- }),
149
- enabled
150
- }, client.queryClient);
151
- const edgeTypesQuery = useQuery({
152
- queryKey: ["flow-edge-types"],
153
- queryFn: () => __async(null, null, function* () {
154
- const result = yield client.from("flow-edge-types").find({ limit: 100 });
155
- return result.docs;
156
- }),
157
- enabled
158
- }, client.queryClient);
130
+ const flowQuery = useQuery(
131
+ {
132
+ queryKey: ["flows", identifier],
133
+ queryFn: () => __async(null, null, function* () {
134
+ if (id) {
135
+ return client.from("flows").findById(id);
136
+ }
137
+ const result = yield client.from("flows").find({
138
+ where: { slug: { equals: slug } },
139
+ limit: 1
140
+ });
141
+ const doc = result.docs[0];
142
+ if (!doc) throw new Error(`Flow not found: ${slug}`);
143
+ return doc;
144
+ }),
145
+ enabled: enabled && hasIdentifier
146
+ },
147
+ client.queryClient
148
+ );
149
+ const nodeTypesQuery = useQuery(
150
+ {
151
+ queryKey: ["flow-node-types"],
152
+ queryFn: () => __async(null, null, function* () {
153
+ const result = yield client.from("flow-node-types").find({ limit: 100 });
154
+ return result.docs;
155
+ }),
156
+ enabled
157
+ },
158
+ client.queryClient
159
+ );
160
+ const edgeTypesQuery = useQuery(
161
+ {
162
+ queryKey: ["flow-edge-types"],
163
+ queryFn: () => __async(null, null, function* () {
164
+ const result = yield client.from("flow-edge-types").find({ limit: 100 });
165
+ return result.docs;
166
+ }),
167
+ enabled
168
+ },
169
+ client.queryClient
170
+ );
159
171
  const nodeTypeDefs = useMemo(() => {
160
172
  var _a2;
161
173
  const apiDefs = ((_a2 = nodeTypesQuery.data) != null ? _a2 : []).map(toNodeTypeDef);
@@ -182,7 +194,7 @@ function useFlow(options) {
182
194
  };
183
195
  }
184
196
 
185
- // src/components/FlowRenderer/index.tsx
197
+ // src/ui/Flow/index.tsx
186
198
  function sanitizeUrl(url) {
187
199
  if (!url) return url;
188
200
  try {
@@ -233,14 +245,39 @@ function renderFieldValue(key, val, fieldDef) {
233
245
  }
234
246
  function DefaultDynamicNode({ data }) {
235
247
  const d = data;
236
- return /* @__PURE__ */ React.createElement("div", { style: { width: "100%", height: "100%", display: "flex", flexDirection: "column" } }, d.fields && Object.entries(d.fields).filter(([, v]) => v != null && v !== "").map(([key, val]) => renderFieldValue(key, val)));
248
+ return /* @__PURE__ */ React.createElement(
249
+ "div",
250
+ {
251
+ style: {
252
+ width: "100%",
253
+ height: "100%",
254
+ display: "flex",
255
+ flexDirection: "column"
256
+ }
257
+ },
258
+ d.fields && Object.entries(d.fields).filter(([, v]) => v != null && v !== "").map(([key, val]) => renderFieldValue(key, val))
259
+ );
237
260
  }
238
- function EnhancedDynamicNode({ data, typeDef }) {
239
- return /* @__PURE__ */ React.createElement("div", { style: { width: "100%", height: "100%", display: "flex", flexDirection: "column" } }, typeDef.fields.map((f) => {
240
- const val = data.fields[f.name];
241
- if (val == null || val === "") return null;
242
- return renderFieldValue(f.name, val, f);
243
- }));
261
+ function EnhancedDynamicNode({
262
+ data,
263
+ typeDef
264
+ }) {
265
+ return /* @__PURE__ */ React.createElement(
266
+ "div",
267
+ {
268
+ style: {
269
+ width: "100%",
270
+ height: "100%",
271
+ display: "flex",
272
+ flexDirection: "column"
273
+ }
274
+ },
275
+ typeDef.fields.map((f) => {
276
+ const val = data.fields[f.name];
277
+ if (val == null || val === "") return null;
278
+ return renderFieldValue(f.name, val, f);
279
+ })
280
+ );
244
281
  }
245
282
  function DefaultFrameNode({ data }) {
246
283
  var _a, _b, _c, _d;
@@ -328,13 +365,17 @@ function applyEdgeStyles(edges, edgeTypeDefsMap) {
328
365
  if (!styled.markerStart) {
329
366
  const startType = toMarkerType(def.markerStart);
330
367
  if (startType) {
331
- styled.markerStart = __spreadValues({ type: startType }, def.color ? { color: def.color } : void 0);
368
+ styled.markerStart = __spreadValues({
369
+ type: startType
370
+ }, def.color ? { color: def.color } : void 0);
332
371
  }
333
372
  }
334
373
  if (!styled.markerEnd) {
335
374
  const endType = toMarkerType(def.markerEnd);
336
375
  if (endType) {
337
- styled.markerEnd = __spreadValues({ type: endType }, def.color ? { color: def.color } : void 0);
376
+ styled.markerEnd = __spreadValues({
377
+ type: endType
378
+ }, def.color ? { color: def.color } : void 0);
338
379
  }
339
380
  }
340
381
  return styled;
@@ -375,26 +416,33 @@ function FlowRenderer({
375
416
  );
376
417
  if (!data) return null;
377
418
  const defaultViewport = !fitView && data.viewport ? data.viewport : void 0;
378
- return /* @__PURE__ */ React.createElement(ReactFlowProvider, null, /* @__PURE__ */ React.createElement("div", { className, style: __spreadValues({ width: "100%", height: "100%" }, style) }, /* @__PURE__ */ React.createElement(
379
- ReactFlow,
419
+ return /* @__PURE__ */ React.createElement(ReactFlowProvider, null, /* @__PURE__ */ React.createElement(
420
+ "div",
380
421
  {
381
- nodes: (_a = data.nodes) != null ? _a : [],
382
- edges: styledEdges,
383
- nodeTypes,
384
- defaultViewport,
385
- fitView,
386
- onNodeClick,
387
- onEdgeClick,
388
- nodesDraggable: interactive ? void 0 : false,
389
- nodesConnectable: false,
390
- elementsSelectable: interactive || !!onNodeClick || !!onEdgeClick,
391
- panOnDrag: interactive,
392
- zoomOnScroll: interactive,
393
- zoomOnPinch: interactive,
394
- zoomOnDoubleClick: false
422
+ className,
423
+ style: __spreadValues({ width: "100%", height: "100%" }, style)
395
424
  },
396
- background && /* @__PURE__ */ React.createElement(Background, null)
397
- )));
425
+ /* @__PURE__ */ React.createElement(
426
+ ReactFlow,
427
+ {
428
+ nodes: (_a = data.nodes) != null ? _a : [],
429
+ edges: styledEdges,
430
+ nodeTypes,
431
+ defaultViewport,
432
+ fitView,
433
+ onNodeClick,
434
+ onEdgeClick,
435
+ nodesDraggable: interactive ? void 0 : false,
436
+ nodesConnectable: false,
437
+ elementsSelectable: interactive || !!onNodeClick || !!onEdgeClick,
438
+ panOnDrag: interactive,
439
+ zoomOnScroll: interactive,
440
+ zoomOnPinch: interactive,
441
+ zoomOnDoubleClick: false
442
+ },
443
+ background && /* @__PURE__ */ React.createElement(Background, null)
444
+ )
445
+ ));
398
446
  }
399
447
  export {
400
448
  BUILT_IN_EDGE_TYPES,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/Flow/index.tsx","../../src/ui/Flow/types.ts","../../src/ui/Flow/built-in-node-types.ts","../../src/ui/Flow/built-in-edge-types.ts","../../src/ui/Flow/useFlow.ts"],"sourcesContent":["'use client'\n\nimport React from 'react'\nimport {\n ReactFlow,\n ReactFlowProvider,\n Background,\n MarkerType,\n type NodeTypes,\n type NodeProps,\n type Edge,\n} from '@xyflow/react'\nimport type {\n CanvasData,\n DynamicNodeData,\n DynamicNodeSlotProps,\n EdgeTypeDef,\n FlowEdge,\n FlowNode,\n FrameNodeData,\n NodeTypeDef,\n NodeTypeFieldDef,\n} from './types'\n\nexport type {\n CanvasData,\n DynamicNodeSlotProps,\n FlowNode,\n FlowEdge,\n FlowViewport,\n FlowNodePosition,\n FlowNodeData,\n DynamicNodeData,\n FrameNodeData,\n NodeTypeDef,\n NodeTypeFieldDef,\n EdgeTypeDef,\n} from './types'\nexport { isDynamicNode, isFrameNode } from './types'\nexport { BUILT_IN_NODE_TYPES } from './built-in-node-types'\nexport { BUILT_IN_EDGE_TYPES } from './built-in-edge-types'\nexport { useFlow } from './useFlow'\nexport type { SDKClient, UseFlowOptions, UseFlowResult } from './useFlow'\n\n// ── Helpers ──\n\nfunction sanitizeUrl(url: string | undefined): string | undefined {\n if (!url) return url\n try {\n const parsed = new URL(url)\n if (parsed.protocol === 'http:' || parsed.protocol === 'https:') return url\n return undefined\n } catch {\n return undefined\n }\n}\n\nfunction toMarkerType(value: string): MarkerType | undefined {\n if (value === 'arrow') return MarkerType.Arrow\n if (value === 'arrowclosed') return MarkerType.ArrowClosed\n return undefined\n}\n\n// ── Field renderer (type-aware, matching console style) ──\n\nfunction renderFieldValue(\n key: string,\n val: unknown,\n fieldDef?: NodeTypeFieldDef,\n): React.ReactNode {\n if (val == null || val === '') return null\n\n const fieldType = fieldDef?.fieldType\n\n // Image field — image only, no decoration\n if (\n fieldType === 'image' ||\n (typeof val === 'object' && val !== null && 'url' in val)\n ) {\n const imgUrl =\n typeof val === 'string' ? val : (val as { url?: string })?.url\n const safeUrl = sanitizeUrl(imgUrl)\n if (!safeUrl) return null\n return (\n <img\n key={key}\n src={safeUrl}\n alt=\"\"\n draggable={false}\n style={{ flex: 1, minHeight: 0, width: '100%', objectFit: 'contain' }}\n />\n )\n }\n\n // All other fields — text only\n return (\n <div\n key={key}\n style={{\n fontSize: 11,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n overflow: 'hidden',\n flexShrink: 0,\n }}\n >\n {String(val)}\n </div>\n )\n}\n\n// ── Default dynamic node renderer (no typeDef) ──\n\nfunction DefaultDynamicNode({ data }: NodeProps) {\n const d = data as unknown as DynamicNodeData\n return (\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {d.fields &&\n Object.entries(d.fields)\n .filter(([, v]) => v != null && v !== '')\n .map(([key, val]) => renderFieldValue(key, val))}\n </div>\n )\n}\n\n// ── Enhanced dynamic node renderer (with NodeTypeDef) ──\n\nfunction EnhancedDynamicNode({\n data,\n typeDef,\n}: {\n data: DynamicNodeData\n typeDef: NodeTypeDef\n}) {\n return (\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {typeDef.fields.map((f) => {\n const val = data.fields[f.name]\n if (val == null || val === '') return null\n return renderFieldValue(f.name, val, f)\n })}\n </div>\n )\n}\n\n// ── Default frame node renderer ──\n\nfunction DefaultFrameNode({ data }: NodeProps) {\n const d = data as unknown as FrameNodeData\n const baseColor = d.color ?? 'rgba(128,128,128,0.15)'\n const padding = d.padding ?? 20\n const borderStyle = d.borderStyle ?? 'dashed'\n const opacity = d.opacity ?? 0.15\n\n // Apply opacity to rgba colors\n const bgColor = (() => {\n const m = baseColor.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/)\n if (m) return `rgba(${m[1]},${m[2]},${m[3]},${opacity})`\n return baseColor\n })()\n\n return (\n <div\n style={{\n backgroundColor: bgColor,\n padding,\n width: '100%',\n height: '100%',\n border:\n borderStyle === 'none'\n ? 'none'\n : `2px ${borderStyle} rgba(128,128,128,0.3)`,\n }}\n >\n <div\n style={{\n fontSize: 11,\n fontWeight: 600,\n color: 'rgba(128,128,128,0.6)',\n userSelect: 'none',\n }}\n >\n {d.label}\n </div>\n </div>\n )\n}\n\n// ── Node types builder ──\n\nfunction createNodeTypes(\n nodeRenderers?: Record<string, React.ComponentType<DynamicNodeSlotProps>>,\n nodeTypeDefsMap?: Map<string, NodeTypeDef>,\n): NodeTypes {\n const types: NodeTypes = {} as NodeTypes\n\n // Dynamic node type\n types.dynamic = ((props: NodeProps) => {\n const d = props.data as unknown as DynamicNodeData\n const typeDef = nodeTypeDefsMap?.get(d.nodeTypeSlug)\n const CustomRenderer = nodeRenderers?.[d.nodeTypeSlug]\n if (CustomRenderer) {\n return (\n <CustomRenderer\n id={props.id}\n nodeTypeSlug={d.nodeTypeSlug}\n label={d.label}\n fields={d.fields}\n nodeTypeDef={typeDef}\n />\n )\n }\n if (typeDef) {\n return <EnhancedDynamicNode data={d} typeDef={typeDef} />\n }\n return <DefaultDynamicNode {...props} />\n }) as NodeTypes[string]\n\n // Frame node type\n types.frame = DefaultFrameNode as NodeTypes[string]\n\n return types\n}\n\n// ── Edge style resolver ──\n\nconst EDGE_TYPE_MAP: Record<string, string> = {\n step: 'step',\n smoothstep: 'smoothstep',\n bezier: 'default',\n default: 'default',\n}\n\nfunction applyEdgeStyles(\n edges: FlowEdge[],\n edgeTypeDefsMap?: Map<string, EdgeTypeDef>,\n): Edge[] {\n if (!edgeTypeDefsMap?.size) return edges as unknown as Edge[]\n\n return edges.map((edge) => {\n const slug = edge.edgeTypeSlug\n if (!slug) return edge as unknown as Edge\n\n const def = edgeTypeDefsMap.get(slug)\n if (!def) return edge as unknown as Edge\n\n const styled: Edge = { ...(edge as unknown as Edge) }\n\n // Edge type (line style) — canvas value takes precedence\n if (!styled.type && def.lineStyle) {\n styled.type = EDGE_TYPE_MAP[def.lineStyle] ?? 'default'\n }\n\n // Visual style — canvas style merged with def as fallback\n styled.style = {\n ...(def.color ? { stroke: def.color } : undefined),\n ...(def.strokeWidth ? { strokeWidth: def.strokeWidth } : undefined),\n ...edge.style,\n }\n\n // Animation — canvas value takes precedence\n if (styled.animated == null && def.animated) styled.animated = true\n\n // Markers — canvas value takes precedence over def\n if (!styled.markerStart) {\n const startType = toMarkerType(def.markerStart)\n if (startType) {\n styled.markerStart = {\n type: startType,\n ...(def.color ? { color: def.color } : undefined),\n }\n }\n }\n if (!styled.markerEnd) {\n const endType = toMarkerType(def.markerEnd)\n if (endType) {\n styled.markerEnd = {\n type: endType,\n ...(def.color ? { color: def.color } : undefined),\n }\n }\n }\n\n return styled\n })\n}\n\n// ── FlowRenderer ──\n\n/**\n * Renders a Flow canvas in read-only mode.\n *\n * Requires `@xyflow/react` peer dependency and its CSS:\n * ```ts\n * import '@xyflow/react/dist/style.css'\n * ```\n */\nexport interface FlowRendererProps {\n /** Canvas data from Flow document's `canvas` field */\n data: CanvasData\n /** Container className */\n className?: string\n /** Container style */\n style?: React.CSSProperties\n /** Custom renderers by node type slug (e.g., `{ 'product-card': MyProductCard }`) */\n nodeRenderers?: Record<string, React.ComponentType<DynamicNodeSlotProps>>\n /** Node type definitions for enhanced rendering (field-type-aware display) */\n nodeTypeDefs?: NodeTypeDef[]\n /** Edge type definitions for styled edges (color, stroke, markers, animation) */\n edgeTypeDefs?: EdgeTypeDef[]\n /** Show background pattern (default: true) */\n background?: boolean\n /** Allow user interaction - pan, zoom (default: false for read-only display) */\n interactive?: boolean\n /** Fit view on mount (default: true) */\n fitView?: boolean\n /** Called when a node is clicked */\n onNodeClick?: (event: React.MouseEvent, node: FlowNode) => void\n /** Called when an edge is clicked */\n onEdgeClick?: (event: React.MouseEvent, edge: FlowEdge) => void\n}\n\nexport function FlowRenderer({\n data,\n className,\n style,\n nodeRenderers,\n nodeTypeDefs,\n edgeTypeDefs,\n background = true,\n interactive = false,\n fitView = true,\n onNodeClick,\n onEdgeClick,\n}: FlowRendererProps) {\n const nodeTypeDefsMap = React.useMemo(() => {\n if (!nodeTypeDefs?.length) return undefined\n return new Map(nodeTypeDefs.map((d) => [d.slug, d]))\n }, [nodeTypeDefs])\n\n const edgeTypeDefsMap = React.useMemo(() => {\n if (!edgeTypeDefs?.length) return undefined\n return new Map(edgeTypeDefs.map((d) => [d.slug, d]))\n }, [edgeTypeDefs])\n\n const nodeTypes = React.useMemo(\n () => createNodeTypes(nodeRenderers, nodeTypeDefsMap),\n [nodeRenderers, nodeTypeDefsMap],\n )\n\n const styledEdges = React.useMemo(\n () => applyEdgeStyles(data?.edges ?? [], edgeTypeDefsMap),\n [data?.edges, edgeTypeDefsMap],\n )\n\n if (!data) return null\n\n const defaultViewport = !fitView && data.viewport ? data.viewport : undefined\n\n return (\n <ReactFlowProvider>\n <div\n className={className}\n style={{ width: '100%', height: '100%', ...style }}\n >\n <ReactFlow\n nodes={\n (data.nodes ?? []) as unknown as Parameters<\n typeof ReactFlow\n >[0]['nodes']\n }\n edges={styledEdges}\n nodeTypes={nodeTypes}\n defaultViewport={defaultViewport}\n fitView={fitView}\n onNodeClick={\n onNodeClick as Parameters<typeof ReactFlow>[0]['onNodeClick']\n }\n onEdgeClick={\n onEdgeClick as Parameters<typeof ReactFlow>[0]['onEdgeClick']\n }\n nodesDraggable={interactive ? undefined : false}\n nodesConnectable={false}\n elementsSelectable={interactive || !!onNodeClick || !!onEdgeClick}\n panOnDrag={interactive}\n zoomOnScroll={interactive}\n zoomOnPinch={interactive}\n zoomOnDoubleClick={false}\n >\n {background && <Background />}\n </ReactFlow>\n </div>\n </ReactFlowProvider>\n )\n}\n","import type React from 'react'\n\n// ── Dynamic node data ──\n\nexport interface DynamicNodeData {\n nodeTypeSlug: string\n label: string\n fields: Record<string, unknown>\n}\n\nexport type FlowNodeData = DynamicNodeData & Record<string, unknown>\n\n// ── Canvas types (mirrors @xyflow/react but standalone) ──\n\nexport interface FlowNodePosition {\n x: number\n y: number\n}\n\nexport interface FlowNode {\n id: string\n type?: string\n position: FlowNodePosition\n data: FlowNodeData\n style?: React.CSSProperties\n width?: number\n height?: number\n measured?: { width?: number; height?: number }\n draggable?: boolean\n selectable?: boolean\n [key: string]: unknown\n}\n\nexport interface FlowEdge {\n id: string\n source: string\n target: string\n sourceHandle?: string | null\n targetHandle?: string | null\n type?: string\n style?: React.CSSProperties\n animated?: boolean\n markerStart?: unknown\n markerEnd?: unknown\n edgeTypeSlug?: string\n fields?: Record<string, unknown>\n [key: string]: unknown\n}\n\nexport interface FlowViewport {\n x: number\n y: number\n zoom: number\n}\n\nexport interface CanvasData {\n nodes: FlowNode[]\n edges: FlowEdge[]\n viewport: FlowViewport\n}\n\n// ── Node type definitions (mirrors console's NodeTypeDef) ──\n\nexport interface NodeTypeFieldDef {\n name: string\n label: string\n fieldType:\n | 'text'\n | 'textarea'\n | 'number'\n | 'url'\n | 'color'\n | 'image'\n | 'select'\n | 'toggle'\n options?: { label: string; value: string }[]\n defaultValue?: string\n required?: boolean\n}\n\nexport interface NodeTypeDef {\n slug: string\n name: string\n color: string\n defaultSize: { width: number; height: number }\n fields: NodeTypeFieldDef[]\n transparentBackground?: boolean\n}\n\n// ── Edge type definitions (mirrors console's EdgeTypeDef) ──\n\nexport interface EdgeTypeDef {\n slug: string\n name: string\n color: string\n strokeWidth: number\n animated: boolean\n lineStyle: string\n markerStart: string\n markerEnd: string\n fields: NodeTypeFieldDef[]\n}\n\n// ── Type guards ──\n\nexport function isDynamicNode(\n node: FlowNode,\n): node is FlowNode & { data: DynamicNodeData } {\n return node.type === 'dynamic'\n}\n\nexport function isFrameNode(\n node: FlowNode,\n): node is FlowNode & { data: FrameNodeData } {\n return node.type === 'frame'\n}\n\n// ── Component slot props ──\n\nexport interface DynamicNodeSlotProps {\n id: string\n nodeTypeSlug: string\n label: string\n fields: Record<string, unknown>\n nodeTypeDef?: NodeTypeDef\n}\n\n// ── Frame node data ──\n\nexport interface FrameNodeData {\n label: string\n color?: string\n padding?: number\n borderStyle?: 'dashed' | 'solid' | 'none'\n opacity?: number\n}\n","import type { NodeTypeDef } from './types'\n\nexport const BUILT_IN_NODE_TYPES: NodeTypeDef[] = [\n {\n slug: 'text',\n name: 'Text',\n color: '#e5e7eb',\n defaultSize: { width: 200, height: 200 },\n fields: [{ name: 'body', label: 'Body', fieldType: 'textarea' }],\n },\n {\n slug: 'image',\n name: 'Image',\n color: '#e5e7eb',\n transparentBackground: true,\n defaultSize: { width: 200, height: 200 },\n fields: [\n { name: 'image', label: 'Image', fieldType: 'image' },\n { name: 'alt', label: 'Alt Text', fieldType: 'text' },\n { name: 'caption', label: 'Caption', fieldType: 'text' },\n ],\n },\n]\n","import type { EdgeTypeDef } from './types'\n\nexport const BUILT_IN_EDGE_TYPES: EdgeTypeDef[] = [\n {\n slug: 'default',\n name: 'Default',\n color: '',\n strokeWidth: 2,\n animated: false,\n lineStyle: 'default',\n markerStart: 'none',\n markerEnd: 'arrow',\n fields: [],\n },\n]\n","'use client'\n\nimport { useQuery, type QueryClient } from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport type { CanvasData, NodeTypeDef, EdgeTypeDef } from './types'\nimport { BUILT_IN_NODE_TYPES } from './built-in-node-types'\nimport { BUILT_IN_EDGE_TYPES } from './built-in-edge-types'\n\n// ── Client interface ──\n// Structurally compatible with both BrowserClient and ServerClient.\n// Lists only the collections useFlow actually queries so the generic\n// `from<T extends PublicCollection>` on the real clients satisfies this.\n\ntype FlowCollection = 'flows' | 'flow-node-types' | 'flow-edge-types'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyFn = (...args: any[]) => any\n\nexport interface SDKClient {\n from(collection: FlowCollection): {\n find: AnyFn\n findById: AnyFn\n }\n queryClient: QueryClient\n}\n\n// ── Options & Result ──\n\nexport interface UseFlowOptions {\n /** SDK client instance (BrowserClient or ServerClient) */\n client: SDKClient\n /** Flow slug (URL-friendly identifier) */\n slug?: string\n /** Flow document ID (UUID) */\n id?: string\n /** Enable/disable data fetching (default: true) */\n enabled?: boolean\n}\n\nexport interface UseFlowResult {\n data: CanvasData | undefined\n nodeTypeDefs: NodeTypeDef[]\n edgeTypeDefs: EdgeTypeDef[]\n flow: Record<string, unknown> | undefined\n isLoading: boolean\n error: Error | null\n}\n\n// ── Helpers ──\n\nfunction toNodeTypeDef(doc: Record<string, unknown>): NodeTypeDef {\n return {\n slug: String(doc.slug ?? ''),\n name: String(doc.title ?? ''),\n color: String(doc.color ?? '#e5e7eb'),\n defaultSize: (doc.defaultSize as NodeTypeDef['defaultSize']) ?? {\n width: 200,\n height: 200,\n },\n fields: Array.isArray(doc.fields)\n ? (doc.fields as NodeTypeDef['fields'])\n : [],\n transparentBackground: Boolean(doc.transparentBackground),\n }\n}\n\nfunction toEdgeTypeDef(doc: Record<string, unknown>): EdgeTypeDef {\n return {\n slug: String(doc.slug ?? ''),\n name: String(doc.title ?? ''),\n color: String(doc.color ?? ''),\n strokeWidth: (doc.strokeWidth as number) ?? 2,\n animated: (doc.animated as boolean) ?? false,\n lineStyle: String(doc.lineStyle ?? 'default'),\n markerStart: String(doc.markerStart ?? 'none'),\n markerEnd: String(doc.markerEnd ?? 'arrow'),\n fields: Array.isArray(doc.fields)\n ? (doc.fields as EdgeTypeDef['fields'])\n : [],\n }\n}\n\n// ── Hook ──\n\nexport function useFlow(options: UseFlowOptions): UseFlowResult {\n const { client, slug, id, enabled = true } = options\n const hasIdentifier = !!(slug || id)\n const identifier = id ?? slug ?? ''\n\n // Fetch flow document\n const flowQuery = useQuery<Record<string, unknown>>(\n {\n queryKey: ['flows', identifier],\n queryFn: async () => {\n if (id) {\n return client.from('flows').findById(id)\n }\n const result = await client.from('flows').find({\n where: { slug: { equals: slug } },\n limit: 1,\n })\n const doc = result.docs[0]\n if (!doc) throw new Error(`Flow not found: ${slug}`)\n return doc\n },\n enabled: enabled && hasIdentifier,\n },\n client.queryClient,\n )\n\n // Fetch tenant's custom node types\n const nodeTypesQuery = useQuery<Record<string, unknown>[]>(\n {\n queryKey: ['flow-node-types'],\n queryFn: async () => {\n const result = await client.from('flow-node-types').find({ limit: 100 })\n return result.docs\n },\n enabled,\n },\n client.queryClient,\n )\n\n // Fetch tenant's custom edge types\n const edgeTypesQuery = useQuery<Record<string, unknown>[]>(\n {\n queryKey: ['flow-edge-types'],\n queryFn: async () => {\n const result = await client.from('flow-edge-types').find({ limit: 100 })\n return result.docs\n },\n enabled,\n },\n client.queryClient,\n )\n\n // Merge built-in + API node types\n const nodeTypeDefs = useMemo<NodeTypeDef[]>(() => {\n const apiDefs = (nodeTypesQuery.data ?? []).map(toNodeTypeDef)\n const builtInSlugs = new Set(BUILT_IN_NODE_TYPES.map((t) => t.slug))\n const customDefs = apiDefs.filter((d) => !builtInSlugs.has(d.slug))\n return [...BUILT_IN_NODE_TYPES, ...customDefs]\n }, [nodeTypesQuery.data])\n\n // Merge built-in + API edge types\n const edgeTypeDefs = useMemo<EdgeTypeDef[]>(() => {\n const apiDefs = (edgeTypesQuery.data ?? []).map(toEdgeTypeDef)\n const builtInSlugs = new Set(BUILT_IN_EDGE_TYPES.map((t) => t.slug))\n const customDefs = apiDefs.filter((d) => !builtInSlugs.has(d.slug))\n return [...BUILT_IN_EDGE_TYPES, ...customDefs]\n }, [edgeTypesQuery.data])\n\n const flow = flowQuery.data\n const canvas = flow?.canvas as CanvasData | undefined\n\n return {\n data: canvas,\n nodeTypeDefs,\n edgeTypeDefs,\n flow,\n isLoading:\n flowQuery.isLoading ||\n nodeTypesQuery.isLoading ||\n edgeTypesQuery.isLoading,\n error:\n (flowQuery.error as Error | null) ??\n (nodeTypesQuery.error as Error | null) ??\n (edgeTypesQuery.error as Error | null),\n }\n}\n"],"mappings":"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","names":["_a","_a"]}
@@ -65,16 +65,16 @@ var __async = (__this, __arguments, generator) => {
65
65
  });
66
66
  };
67
67
 
68
- // src/components/FormRenderer/index.tsx
69
- var FormRenderer_exports = {};
70
- __export(FormRenderer_exports, {
68
+ // src/ui/Form/index.tsx
69
+ var Form_exports = {};
70
+ __export(Form_exports, {
71
71
  FormRenderer: () => FormRenderer,
72
72
  toSubmissionData: () => toSubmissionData
73
73
  });
74
- module.exports = __toCommonJS(FormRenderer_exports);
74
+ module.exports = __toCommonJS(Form_exports);
75
75
  var import_react = __toESM(require("react"), 1);
76
76
 
77
- // src/components/FormRenderer/countries.ts
77
+ // src/ui/Form/countries.ts
78
78
  var COUNTRIES = [
79
79
  { value: "AF", label: "Afghanistan" },
80
80
  { value: "AX", label: "\xC5land Islands" },
@@ -377,7 +377,7 @@ var US_STATES = [
377
377
  { value: "DC", label: "District of Columbia" }
378
378
  ];
379
379
 
380
- // src/components/FormRenderer/index.tsx
380
+ // src/ui/Form/index.tsx
381
381
  function toSubmissionData(values) {
382
382
  return Object.entries(values).map(([field, value]) => ({
383
383
  field,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/Form/index.tsx","../../src/ui/Form/countries.ts"],"sourcesContent":["'use client'\n\nimport React, { useState, useCallback, useEffect, useRef } from 'react'\nimport type { Form } from '../../payload-types'\nimport type { RichTextData } from '../RichText'\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"],"mappings":"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","names":["_a","React"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { F as Form } from '../payload-types-BjvBwB8Z.cjs';
2
+ import { F as Form } from '../payload-types-BUwpb306.cjs';
3
3
  import { RichTextData } from './rich-text.cjs';
4
4
  import '@payloadcms/richtext-lexical';
5
5
  import '@payloadcms/richtext-lexical/lexical';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { F as Form } from '../payload-types-BjvBwB8Z.js';
2
+ import { F as Form } from '../payload-types-BUwpb306.js';
3
3
  import { RichTextData } from './rich-text.js';
4
4
  import '@payloadcms/richtext-lexical';
5
5
  import '@payloadcms/richtext-lexical/lexical';
@@ -39,10 +39,10 @@ var __async = (__this, __arguments, generator) => {
39
39
  });
40
40
  };
41
41
 
42
- // src/components/FormRenderer/index.tsx
42
+ // src/ui/Form/index.tsx
43
43
  import React, { useState, useCallback, useEffect, useRef } from "react";
44
44
 
45
- // src/components/FormRenderer/countries.ts
45
+ // src/ui/Form/countries.ts
46
46
  var COUNTRIES = [
47
47
  { value: "AF", label: "Afghanistan" },
48
48
  { value: "AX", label: "\xC5land Islands" },
@@ -345,7 +345,7 @@ var US_STATES = [
345
345
  { value: "DC", label: "District of Columbia" }
346
346
  ];
347
347
 
348
- // src/components/FormRenderer/index.tsx
348
+ // src/ui/Form/index.tsx
349
349
  function toSubmissionData(values) {
350
350
  return Object.entries(values).map(([field, value]) => ({
351
351
  field,
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/Form/index.tsx","../../src/ui/Form/countries.ts"],"sourcesContent":["'use client'\n\nimport React, { useState, useCallback, useEffect, useRef } from 'react'\nimport type { Form } from '../../payload-types'\nimport type { RichTextData } from '../RichText'\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"],"mappings":"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","names":["_a"]}
@@ -45,7 +45,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
45
45
  ));
46
46
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
47
47
 
48
- // src/components/Image/index.tsx
48
+ // src/ui/Image/index.tsx
49
49
  var Image_exports = {};
50
50
  __export(Image_exports, {
51
51
  Image: () => Image
@@ -97,7 +97,7 @@ function getImagePlaceholderStyle(image, options) {
97
97
  return {};
98
98
  }
99
99
 
100
- // src/components/Image/index.tsx
100
+ // src/ui/Image/index.tsx
101
101
  function Image({
102
102
  image,
103
103
  width,