@servicetitan/json-render-react 0.4.0-ANV-5236-1290426 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,7 +46,7 @@ For lists where users can add/remove items (todos, carts, etc.), use pushState a
46
46
 
47
47
  IMPORTANT: State paths use RFC 6901 JSON Pointer syntax (e.g. "/todos/0/title"). Do NOT use JavaScript-style dot notation (e.g. "/todos.length" is WRONG). To generate unique IDs for new items, use "$id" instead of trying to read array length.
48
48
 
49
- AVAILABLE COMPONENTS (22):
49
+ AVAILABLE COMPONENTS (21):
50
50
 
51
51
  - Text: { content: string, variant?: "headline" | "body" | "eyebrow", size?: "small" | "medium" | "large" | "xlarge", subdued?: boolean } - Display text. variant: headline=bold title, eyebrow=small uppercase label, body=default (default variant). size: small | medium (default) | large | xlarge — applies to headline and body only (ignored for eyebrow). subdued: deemphasized secondary text (body only). Use eyebrow+headline pairs for KPI/stat labels above values.
52
52
  - Card: { title?: string, description?: string, background?: "strong" | "stronger", padding?: "0" | "xsmall" | "small" | "medium" | "large" } - White surface that groups a logical section of related content. title: optional headline rendered at the top of the card. description: optional subdued line below the title. Children render below the header and are stacked vertically with consistent spacing — you do not need to wrap them in a Flex. Prefer the built-in title/description over standalone Text children for the heading. background: strong | stronger for nested/elevated surfaces. padding: 0 | xsmall | small | medium (default) | large. Do not nest a Card inside another Card. [accepts children]
@@ -54,7 +54,6 @@ AVAILABLE COMPONENTS (22):
54
54
  - Grid: { templateColumns?: string, gap?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "8" | "12" | "half", bordered?: boolean } - CSS Grid layout. templateColumns: CSS grid-template-columns value — "repeat(3, 1fr)" for equal columns, "200px 1fr" for fixed+flex two-column (e.g. key-value tables), "1fr 1fr 80px" for multi-column tables. Children flow into grid cells left-to-right, top-to-bottom. gap (spacing token, ~4px per step): 1=4px 2=8px … 6=24px 8=32px 12=48px (default 2). bordered: true renders a bordered table with row separators and cell padding — use for key-value and data tables. [accepts children]
55
55
  - Alert: { title: string, status?: "info" | "success" | "warning" | "danger", dismissible?: boolean, aiMark?: boolean } - Inline notification banner with a required title. status: info (default) | success | warning | danger — danger for errors, warning for cautions, success for confirmations. Put the main message in the alert's children (rendered below the title). dismissible: true adds a close button that emits a "close" event. [accepts children] [events: close]
56
56
  - Divider: { vertical?: boolean, spacing?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "8" | "12" | "half", alignContent?: "start" | "center" | "end" } - Horizontal (default) or vertical rule that separates content sections. vertical: true for a vertical separator between side-by-side content. spacing (space around the divider, ~4px per step): 0 (default) | half | 1–6 | 8 | 12. alignContent: alignment of any divider content (start | center | end). Place between logical sections — not as a top/bottom border of a container.
57
- - EmailCard: { to: Array<{ name: string, email: string }>, cc?: Array<{ name: string, email: string }>, contactOptions?: Array<{ name: string, email: string }>, subject?: string, body?: string, attachments?: Array<{ name: string, id: string }>, attachmentOptions?: Array<{ name: string, id: string }>, forms?: Array<{ name: string, id: string }>, formOptions?: Array<{ name: string, id: string }>, errorTitle?: string, errorMessage?: string, retryLabel?: string, sendLabel?: string, discardLabel?: string, disabled?: boolean } - Agent-drafted outbound email for user review before send. Use instead of stacking separate Input/Textarea fields when the agent is composing an email with recipients, subject, body, file attachments, and completed forms. EmailCard is a standalone root — do NOT wrap it in Card or Flex. Title is always "Draft Email". Shows editable fields with full-width Send email (primary) and Dismiss (ghost) actions. Contacts (to, cc) are objects with both name and email — never bare email strings. Example: { "name": "Johnson Residence", "email": "billing@johnsonresidence.com" }. To is required — at least one recipient before send. Users can type a new email address and press Enter to add a recipient not in contactOptions. Attachments and forms are objects with name (display label) and id (stable entity id the host uses on send). Example attachment: { "name": "AR Aging Detail.pdf", "id": "file-4821-aging" }. contactOptions supplies the typeahead search pool for To/CC; when omitted, selected contacts are used as the only suggestions. attachmentOptions / formOptions supply MultiSelectField choices; when omitted, the current attachments/forms arrays define the option set. Set errorTitle and/or errorMessage to show a danger Alert above the form (defaults title to "Unable to complete your request"); wire on.retry for the Alert retry action. Wire on.send / on.discard for primary actions; on.toChange / on.ccChange / on.attachmentsChange / on.formsChange when the host must react to incremental edits. Bind to, cc, subject, body, attachments, and forms with $bindState (e.g. `/to`, `/cc`, `/subject`, `/body`, `/attachments`, `/forms`) — seed initial values in spec `state`; the renderer writes user edits to those paths. Read the full draft via getSnapshot() in on.send. [events: send, discard, retry, toChange, ccChange, attachmentsChange, formsChange]
58
57
  - Icon: { name: "check-circle" | "in-progress" | "radio-button-unchecked", size?: "small" | "medium" | "large" | "xlarge", color?: string } - Small status icon. name (only these three are available): check-circle=completed/success checkmark, in-progress=partial circle (active/working), radio-button-unchecked=empty circle (pending/not started). size: small | medium (default) | large | xlarge. color: any CSS color (defaults to the current text color). Commonly paired with status Text in lists and checklists.
59
58
  - Chip: { label: string, size?: "small" | "medium", color?: string, icon?: "check-circle" | "in-progress" | "radio-button-unchecked", removable?: boolean } - Inline label pill for metadata, tags, or categories — use for job statuses, not notification counts (use a Button/Link badge prop for those). size: small | medium (default). color: any CSS color. icon: optional leading status icon. removable: true adds a close button that emits a "close" event (ignored when size=small). [events: close]
60
59
  - Link: { label: string, href: string, appearance?: "primary" | "secondary", target?: "_blank" | "_self", ghost?: boolean, badge?: string } - Inline navigation link (renders an <a>). Emits a "press" event when clicked — handle navigation in on.press; href and target are inputs for the host/router rather than native browser navigation. href: destination URL for the host/router. appearance: primary (default) | secondary. target: _blank marks the link as external (shows external-link icon) and lets the host open a new tab if desired. ghost: quieter styling (primary only). badge: optional notification count shown as a superscript (e.g. "5"); use an empty string for a dot-only indicator. [events: press]
@@ -297,16 +296,6 @@ LINECHART
297
296
  - series optionally names which keys to plot (inferred from the data keys if omitted, max 6). theme: "monochrome" (1–2 series) | "categorical" (3–6 series). showLegend (default true for 2+ series); showDots toggles point markers; unit sets the tooltip suffix.
298
297
  - Do NOT wrap in Card or Flex — use as the root element.
299
298
 
300
- EMAIL CARD
301
- - Use EmailCard when the agent drafts an outbound email for user review (AR invoice follow-ups, aging notices, etc.) — prefer it over stacking separate Input/Textarea/Listbox children. EmailCard is a standalone root — do NOT wrap it in Card or Flex.
302
- - Contacts (to, cc) are objects with both name and email: { name, email }. Never emit bare email strings. To is required (at least one recipient).
303
- - Attachments and forms are objects with name (display label) and id (stable entity id for the host on send): { name, id }.
304
- - Shows editable fields with full-width Send email (primary) and Dismiss (ghost) actions.
305
- - Set errorTitle and/or errorMessage to show a danger Alert with Retry; wire on.retry when the host can re-attempt the failed operation.
306
- - contactOptions supplies the typeahead pool for To/CC; users can press Enter to add a typed email address as a new recipient. attachmentOptions and formOptions supply MultiSelectField choices.
307
- - Wire on.send / on.discard / on.retry for actions; on.toChange / on.ccChange / on.attachmentsChange / on.formsChange when the host must react to incremental edits.
308
- - Bind `to`, `cc`, `subject`, `body`, `attachments`, and `forms` with $bindState (e.g. `/to`, `/subject`, `/body`). Seed all editable values in spec `state`; the renderer writes user edits to those paths. Read the full draft via `getSnapshot()` in on.send — do not rely on static props for the send payload.
309
-
310
299
  GUIDANCECARD
311
300
  - Use when Atlas proposes suggested changes to an estimate or invoice inline in chat. GuidanceCard is a standalone root — do NOT wrap it in Card or Flex.
312
301
  - state: default (selectable diffs + apply/edit/dismiss actions) | accepted (collapsible accepted summary) | rejected | skipped (collapsible read-only summaries). Default is default.
@@ -17,7 +17,6 @@
17
17
  "Grid",
18
18
  "Alert",
19
19
  "Divider",
20
- "EmailCard",
21
20
  "Icon",
22
21
  "Chip",
23
22
  "Link",
@@ -46,7 +46,7 @@ For lists where users can add/remove items (todos, carts, etc.), use pushState a
46
46
 
47
47
  IMPORTANT: State paths use RFC 6901 JSON Pointer syntax (e.g. "/todos/0/title"). Do NOT use JavaScript-style dot notation (e.g. "/todos.length" is WRONG). To generate unique IDs for new items, use "$id" instead of trying to read array length.
48
48
 
49
- AVAILABLE COMPONENTS (23):
49
+ AVAILABLE COMPONENTS (22):
50
50
 
51
51
  - Text: { content: string, variant?: "headline" | "body" | "eyebrow", size?: "small" | "medium" | "large" | "xlarge", subdued?: boolean } - Display text. variant: headline=bold title, eyebrow=small uppercase label, body=default (default variant). size: small | medium (default) | large | xlarge — applies to headline and body only (ignored for eyebrow). subdued: deemphasized secondary text (body only). Use eyebrow+headline pairs for KPI/stat labels above values.
52
52
  - Card: { title?: string, description?: string, background?: "strong" | "stronger", padding?: "0" | "xsmall" | "small" | "medium" | "large" } - White surface that groups a logical section of related content. title: optional headline rendered at the top of the card. description: optional subdued line below the title. Children render below the header and are stacked vertically with consistent spacing — you do not need to wrap them in a Flex. Prefer the built-in title/description over standalone Text children for the heading. background: strong | stronger for nested/elevated surfaces. padding: 0 | xsmall | small | medium (default) | large. Do not nest a Card inside another Card. [accepts children]
@@ -54,7 +54,6 @@ AVAILABLE COMPONENTS (23):
54
54
  - Grid: { templateColumns?: string, gap?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "8" | "12" | "half", bordered?: boolean } - CSS Grid layout. templateColumns: CSS grid-template-columns value — "repeat(3, 1fr)" for equal columns, "200px 1fr" for fixed+flex two-column (e.g. key-value tables), "1fr 1fr 80px" for multi-column tables. Children flow into grid cells left-to-right, top-to-bottom. gap (spacing token, ~4px per step): 1=4px 2=8px … 6=24px 8=32px 12=48px (default 2). bordered: true renders a bordered table with row separators and cell padding — use for key-value and data tables. [accepts children]
55
55
  - Alert: { title: string, status?: "info" | "success" | "warning" | "danger", dismissible?: boolean, aiMark?: boolean } - Inline notification banner with a required title. status: info (default) | success | warning | danger — danger for errors, warning for cautions, success for confirmations. Put the main message in the alert's children (rendered below the title). dismissible: true adds a close button that emits a "close" event. [accepts children] [events: close]
56
56
  - Divider: { vertical?: boolean, spacing?: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "8" | "12" | "half", alignContent?: "start" | "center" | "end" } - Horizontal (default) or vertical rule that separates content sections. vertical: true for a vertical separator between side-by-side content. spacing (space around the divider, ~4px per step): 0 (default) | half | 1–6 | 8 | 12. alignContent: alignment of any divider content (start | center | end). Place between logical sections — not as a top/bottom border of a container.
57
- - EmailCard: { to: Array<{ name: string, email: string }>, cc?: Array<{ name: string, email: string }>, contactOptions?: Array<{ name: string, email: string }>, subject?: string, body?: string, attachments?: Array<{ name: string, id: string }>, attachmentOptions?: Array<{ name: string, id: string }>, forms?: Array<{ name: string, id: string }>, formOptions?: Array<{ name: string, id: string }>, errorTitle?: string, errorMessage?: string, retryLabel?: string, sendLabel?: string, discardLabel?: string, disabled?: boolean } - Agent-drafted outbound email for user review before send. Use instead of stacking separate Input/Textarea fields when the agent is composing an email with recipients, subject, body, file attachments, and completed forms. EmailCard is a standalone root — do NOT wrap it in Card or Flex. Title is always "Draft Email". Shows editable fields with full-width Send email (primary) and Dismiss (ghost) actions. Contacts (to, cc) are objects with both name and email — never bare email strings. Example: { "name": "Johnson Residence", "email": "billing@johnsonresidence.com" }. To is required — at least one recipient before send. Users can type a new email address and press Enter to add a recipient not in contactOptions. Attachments and forms are objects with name (display label) and id (stable entity id the host uses on send). Example attachment: { "name": "AR Aging Detail.pdf", "id": "file-4821-aging" }. contactOptions supplies the typeahead search pool for To/CC; when omitted, selected contacts are used as the only suggestions. attachmentOptions / formOptions supply MultiSelectField choices; when omitted, the current attachments/forms arrays define the option set. Set errorTitle and/or errorMessage to show a danger Alert above the form (defaults title to "Unable to complete your request"); wire on.retry for the Alert retry action. Wire on.send / on.discard for primary actions; on.toChange / on.ccChange / on.attachmentsChange / on.formsChange when the host must react to incremental edits. Bind to, cc, subject, body, attachments, and forms with $bindState (e.g. `/to`, `/cc`, `/subject`, `/body`, `/attachments`, `/forms`) — seed initial values in spec `state`; the renderer writes user edits to those paths. Read the full draft via getSnapshot() in on.send. [events: send, discard, retry, toChange, ccChange, attachmentsChange, formsChange]
58
57
  - Icon: { name: "check-circle" | "in-progress" | "radio-button-unchecked", size?: "small" | "medium" | "large" | "xlarge", color?: string } - Small status icon. name (only these three are available): check-circle=completed/success checkmark, in-progress=partial circle (active/working), radio-button-unchecked=empty circle (pending/not started). size: small | medium (default) | large | xlarge. color: any CSS color (defaults to the current text color). Commonly paired with status Text in lists and checklists.
59
58
  - Chip: { label: string, size?: "small" | "medium", color?: string, icon?: "check-circle" | "in-progress" | "radio-button-unchecked", removable?: boolean } - Inline label pill for metadata, tags, or categories — use for job statuses, not notification counts (use a Button/Link badge prop for those). size: small | medium (default). color: any CSS color. icon: optional leading status icon. removable: true adds a close button that emits a "close" event (ignored when size=small). [events: close]
60
59
  - Link: { label: string, href: string, appearance?: "primary" | "secondary", target?: "_blank" | "_self", ghost?: boolean, badge?: string } - Inline navigation link (renders an <a>). Emits a "press" event when clicked — handle navigation in on.press; href and target are inputs for the host/router rather than native browser navigation. href: destination URL for the host/router. appearance: primary (default) | secondary. target: _blank marks the link as external (shows external-link icon) and lets the host open a new tab if desired. ghost: quieter styling (primary only). badge: optional notification count shown as a superscript (e.g. "5"); use an empty string for a dot-only indicator. [events: press]
@@ -298,16 +297,6 @@ LINECHART
298
297
  - series optionally names which keys to plot (inferred from the data keys if omitted, max 6). theme: "monochrome" (1–2 series) | "categorical" (3–6 series). showLegend (default true for 2+ series); showDots toggles point markers; unit sets the tooltip suffix.
299
298
  - Do NOT wrap in Card or Flex — use as the root element.
300
299
 
301
- EMAIL CARD
302
- - Use EmailCard when the agent drafts an outbound email for user review (AR invoice follow-ups, aging notices, etc.) — prefer it over stacking separate Input/Textarea/Listbox children. EmailCard is a standalone root — do NOT wrap it in Card or Flex.
303
- - Contacts (to, cc) are objects with both name and email: { name, email }. Never emit bare email strings. To is required (at least one recipient).
304
- - Attachments and forms are objects with name (display label) and id (stable entity id for the host on send): { name, id }.
305
- - Shows editable fields with full-width Send email (primary) and Dismiss (ghost) actions.
306
- - Set errorTitle and/or errorMessage to show a danger Alert with Retry; wire on.retry when the host can re-attempt the failed operation.
307
- - contactOptions supplies the typeahead pool for To/CC; users can press Enter to add a typed email address as a new recipient. attachmentOptions and formOptions supply MultiSelectField choices.
308
- - Wire on.send / on.discard / on.retry for actions; on.toChange / on.ccChange / on.attachmentsChange / on.formsChange when the host must react to incremental edits.
309
- - Bind `to`, `cc`, `subject`, `body`, `attachments`, and `forms` with $bindState (e.g. `/to`, `/subject`, `/body`). Seed all editable values in spec `state`; the renderer writes user edits to those paths. Read the full draft via `getSnapshot()` in on.send — do not rely on static props for the send payload.
310
-
311
300
  GUIDANCECARD
312
301
  - Use when Atlas proposes suggested changes to an estimate or invoice inline in chat. GuidanceCard is a standalone root — do NOT wrap it in Card or Flex.
313
302
  - state: default (selectable diffs + apply/edit/dismiss actions) | accepted (collapsible accepted summary) | rejected | skipped (collapsible read-only summaries). Default is default.
@@ -17,7 +17,6 @@
17
17
  "Grid",
18
18
  "Alert",
19
19
  "Divider",
20
- "EmailCard",
21
20
  "Icon",
22
21
  "Chip",
23
22
  "Link",
@@ -28,8 +28,8 @@ export declare const catalog: import('@json-render/core').Catalog<{
28
28
  props: import('zod').ZodObject<{
29
29
  content: import('zod').ZodString;
30
30
  variant: import('zod').ZodOptional<import('zod').ZodEnum<{
31
- body: "body";
32
31
  headline: "headline";
32
+ body: "body";
33
33
  eyebrow: "eyebrow";
34
34
  }>>;
35
35
  size: import('zod').ZodOptional<import('zod').ZodEnum<{
@@ -176,49 +176,6 @@ export declare const catalog: import('@json-render/core').Catalog<{
176
176
  slots: never[];
177
177
  description: string;
178
178
  };
179
- EmailCard: {
180
- props: import('zod').ZodObject<{
181
- to: import('zod').ZodArray<import('zod').ZodObject<{
182
- name: import('zod').ZodString;
183
- email: import('zod').ZodString;
184
- }, import('zod/v4/core').$strip>>;
185
- cc: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
186
- name: import('zod').ZodString;
187
- email: import('zod').ZodString;
188
- }, import('zod/v4/core').$strip>>>;
189
- contactOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
190
- name: import('zod').ZodString;
191
- email: import('zod').ZodString;
192
- }, import('zod/v4/core').$strip>>>;
193
- subject: import('zod').ZodOptional<import('zod').ZodString>;
194
- body: import('zod').ZodOptional<import('zod').ZodString>;
195
- attachments: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
196
- name: import('zod').ZodString;
197
- id: import('zod').ZodString;
198
- }, import('zod/v4/core').$strip>>>;
199
- attachmentOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
200
- name: import('zod').ZodString;
201
- id: import('zod').ZodString;
202
- }, import('zod/v4/core').$strip>>>;
203
- forms: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
204
- name: import('zod').ZodString;
205
- id: import('zod').ZodString;
206
- }, import('zod/v4/core').$strip>>>;
207
- formOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
208
- name: import('zod').ZodString;
209
- id: import('zod').ZodString;
210
- }, import('zod/v4/core').$strip>>>;
211
- errorTitle: import('zod').ZodOptional<import('zod').ZodString>;
212
- errorMessage: import('zod').ZodOptional<import('zod').ZodString>;
213
- retryLabel: import('zod').ZodOptional<import('zod').ZodString>;
214
- sendLabel: import('zod').ZodOptional<import('zod').ZodString>;
215
- discardLabel: import('zod').ZodOptional<import('zod').ZodString>;
216
- disabled: import('zod').ZodOptional<import('zod').ZodBoolean>;
217
- }, import('zod/v4/core').$strip>;
218
- slots: never[];
219
- events: string[];
220
- description: string;
221
- };
222
179
  Icon: {
223
180
  props: import('zod').ZodObject<{
224
181
  name: import('zod').ZodEnum<{
@@ -381,9 +338,9 @@ export declare const catalog: import('@json-render/core').Catalog<{
381
338
  type: import('zod').ZodOptional<import('zod').ZodEnum<{
382
339
  number: "number";
383
340
  url: "url";
384
- email: "email";
385
341
  text: "text";
386
342
  password: "password";
343
+ email: "email";
387
344
  tel: "tel";
388
345
  }>>;
389
346
  value: import('zod').ZodOptional<import('zod').ZodString>;
@@ -6,9 +6,9 @@ export declare const inputCatalog: {
6
6
  type: z.ZodOptional<z.ZodEnum<{
7
7
  number: "number";
8
8
  url: "url";
9
- email: "email";
10
9
  text: "text";
11
10
  password: "password";
11
+ email: "email";
12
12
  tel: "tel";
13
13
  }>>;
14
14
  value: z.ZodOptional<z.ZodString>;
@@ -3,8 +3,8 @@ export declare const baseComponents: {
3
3
  props: import('zod').ZodObject<{
4
4
  content: import('zod').ZodString;
5
5
  variant: import('zod').ZodOptional<import('zod').ZodEnum<{
6
- body: "body";
7
6
  headline: "headline";
7
+ body: "body";
8
8
  eyebrow: "eyebrow";
9
9
  }>>;
10
10
  size: import('zod').ZodOptional<import('zod').ZodEnum<{
@@ -151,49 +151,6 @@ export declare const baseComponents: {
151
151
  slots: never[];
152
152
  description: string;
153
153
  };
154
- EmailCard: {
155
- props: import('zod').ZodObject<{
156
- to: import('zod').ZodArray<import('zod').ZodObject<{
157
- name: import('zod').ZodString;
158
- email: import('zod').ZodString;
159
- }, import('zod/v4/core').$strip>>;
160
- cc: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
161
- name: import('zod').ZodString;
162
- email: import('zod').ZodString;
163
- }, import('zod/v4/core').$strip>>>;
164
- contactOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
165
- name: import('zod').ZodString;
166
- email: import('zod').ZodString;
167
- }, import('zod/v4/core').$strip>>>;
168
- subject: import('zod').ZodOptional<import('zod').ZodString>;
169
- body: import('zod').ZodOptional<import('zod').ZodString>;
170
- attachments: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
171
- name: import('zod').ZodString;
172
- id: import('zod').ZodString;
173
- }, import('zod/v4/core').$strip>>>;
174
- attachmentOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
175
- name: import('zod').ZodString;
176
- id: import('zod').ZodString;
177
- }, import('zod/v4/core').$strip>>>;
178
- forms: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
179
- name: import('zod').ZodString;
180
- id: import('zod').ZodString;
181
- }, import('zod/v4/core').$strip>>>;
182
- formOptions: import('zod').ZodOptional<import('zod').ZodArray<import('zod').ZodObject<{
183
- name: import('zod').ZodString;
184
- id: import('zod').ZodString;
185
- }, import('zod/v4/core').$strip>>>;
186
- errorTitle: import('zod').ZodOptional<import('zod').ZodString>;
187
- errorMessage: import('zod').ZodOptional<import('zod').ZodString>;
188
- retryLabel: import('zod').ZodOptional<import('zod').ZodString>;
189
- sendLabel: import('zod').ZodOptional<import('zod').ZodString>;
190
- discardLabel: import('zod').ZodOptional<import('zod').ZodString>;
191
- disabled: import('zod').ZodOptional<import('zod').ZodBoolean>;
192
- }, import('zod/v4/core').$strip>;
193
- slots: never[];
194
- events: string[];
195
- description: string;
196
- };
197
154
  Icon: {
198
155
  props: import('zod').ZodObject<{
199
156
  name: import('zod').ZodEnum<{
@@ -356,9 +313,9 @@ export declare const baseComponents: {
356
313
  type: import('zod').ZodOptional<import('zod').ZodEnum<{
357
314
  number: "number";
358
315
  url: "url";
359
- email: "email";
360
316
  text: "text";
361
317
  password: "password";
318
+ email: "email";
362
319
  tel: "tel";
363
320
  }>>;
364
321
  value: import('zod').ZodOptional<import('zod').ZodString>;
@@ -3,8 +3,8 @@ export declare const textCatalog: {
3
3
  props: z.ZodObject<{
4
4
  content: z.ZodString;
5
5
  variant: z.ZodOptional<z.ZodEnum<{
6
- body: "body";
7
6
  headline: "headline";
7
+ body: "body";
8
8
  eyebrow: "eyebrow";
9
9
  }>>;
10
10
  size: z.ZodOptional<z.ZodEnum<{