@json-render/react-native 0.5.2 → 0.6.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.
package/README.md CHANGED
@@ -141,6 +141,10 @@ function App({ spec }) {
141
141
  | `ListItem` | List row with title, subtitle, accessory |
142
142
  | `Modal` | Bottom sheet modal |
143
143
 
144
+ ## Visibility Conditions
145
+
146
+ Elements can use `visible` to show/hide based on state. Same syntax as [@json-render/react](../react/README.md#visibility-conditions): `{ "$state": "/path" }`, `{ "$state": "/path", "eq": value }`, `{ "$state": "/path", "not": true }`, or `[ cond1, cond2 ]` for AND.
147
+
144
148
  ## Pressable Component
145
149
 
146
150
  The `Pressable` component wraps children and triggers an action on press. It's essential for building interactive UIs like tab bars:
@@ -150,7 +154,7 @@ The `Pressable` component wraps children and triggers an action on press. It's e
150
154
  "type": "Pressable",
151
155
  "props": {
152
156
  "action": "setState",
153
- "actionParams": { "path": "/activeTab", "value": "home" }
157
+ "actionParams": { "statePath": "/activeTab", "value": "home" }
154
158
  },
155
159
  "children": ["home-tab-icon", "home-tab-label"]
156
160
  }
@@ -163,7 +167,7 @@ The `setState` action is handled automatically by `ActionProvider`. It updates t
163
167
  ```json
164
168
  {
165
169
  "action": "setState",
166
- "actionParams": { "path": "/activeTab", "value": "home" }
170
+ "actionParams": { "statePath": "/activeTab", "value": "home" }
167
171
  }
168
172
  ```
169
173
 
@@ -176,12 +180,12 @@ Any prop value can be a dynamic expression resolved at render time:
176
180
  "type": "Icon",
177
181
  "props": {
178
182
  "name": {
179
- "$cond": { "eq": [{ "path": "/activeTab" }, "home"] },
183
+ "$cond": { "$state": "/activeTab", "eq": "home" },
180
184
  "$then": "home",
181
185
  "$else": "home-outline"
182
186
  },
183
187
  "color": {
184
- "$cond": { "eq": [{ "path": "/activeTab" }, "home"] },
188
+ "$cond": { "$state": "/activeTab", "eq": "home" },
185
189
  "$then": "#007AFF",
186
190
  "$else": "#8E8E93"
187
191
  }
@@ -195,9 +199,9 @@ See [@json-render/core](../core/README.md) for full expression syntax.
195
199
 
196
200
  Combine `Pressable`, `setState`, visibility conditions, and dynamic props for functional tabs:
197
201
 
198
- 1. Each tab button is a `Pressable` with `action: "setState"` and `actionParams: { path: "/activeTab", value: "tabName" }`
202
+ 1. Each tab button is a `Pressable` with `action: "setState"` and `actionParams: { statePath: "/activeTab", value: "tabName" }`
199
203
  2. Tab icons/labels use `$cond` dynamic props for active/inactive styling
200
- 3. Tab content sections use `visible` conditions: `{ "eq": [{ "path": "/activeTab" }, "tabName"] }`
204
+ 3. Tab content sections use `visible` conditions: `{ "$state": "/activeTab", "eq": "tabName" }`
201
205
 
202
206
  ## AI Prompt Generation
203
207
 
@@ -214,8 +218,8 @@ const systemPrompt = catalog.prompt({
214
218
 
215
219
  | Hook | Purpose |
216
220
  |------|---------|
217
- | `useStateStore()` | Access data context (`data`, `get`, `set`) |
218
- | `useStateValue(path)` | Get single value from data |
221
+ | `useStateStore()` | Access state context (`state`, `get`, `set`, `update`) |
222
+ | `useStateValue(path)` | Get single value from state |
219
223
  | `useStateBinding(path)` | Two-way data binding (returns `[value, setValue]`) |
220
224
  | `useVisibility()` | Access visibility evaluation |
221
225
  | `useIsVisible(condition)` | Check if condition is met |
@@ -287,7 +287,6 @@ declare const standardComponentDefinitions: {
287
287
  props: z.ZodObject<{
288
288
  placeholder: z.ZodNullable<z.ZodString>;
289
289
  value: z.ZodNullable<z.ZodString>;
290
- statePath: z.ZodNullable<z.ZodString>;
291
290
  secureTextEntry: z.ZodNullable<z.ZodBoolean>;
292
291
  keyboardType: z.ZodNullable<z.ZodEnum<{
293
292
  default: "default";
@@ -306,14 +305,12 @@ declare const standardComponentDefinitions: {
306
305
  description: string;
307
306
  example: {
308
307
  placeholder: string;
309
- statePath: string;
310
308
  label: string;
311
309
  };
312
310
  };
313
311
  Switch: {
314
312
  props: z.ZodObject<{
315
- value: z.ZodNullable<z.ZodBoolean>;
316
- statePath: z.ZodNullable<z.ZodString>;
313
+ checked: z.ZodNullable<z.ZodBoolean>;
317
314
  label: z.ZodNullable<z.ZodString>;
318
315
  disabled: z.ZodNullable<z.ZodBoolean>;
319
316
  }, z.core.$strip>;
@@ -324,7 +321,6 @@ declare const standardComponentDefinitions: {
324
321
  Checkbox: {
325
322
  props: z.ZodObject<{
326
323
  checked: z.ZodNullable<z.ZodBoolean>;
327
- statePath: z.ZodNullable<z.ZodString>;
328
324
  label: z.ZodNullable<z.ZodString>;
329
325
  disabled: z.ZodNullable<z.ZodBoolean>;
330
326
  }, z.core.$strip>;
@@ -338,7 +334,6 @@ declare const standardComponentDefinitions: {
338
334
  max: z.ZodNullable<z.ZodNumber>;
339
335
  step: z.ZodNullable<z.ZodNumber>;
340
336
  value: z.ZodNullable<z.ZodNumber>;
341
- statePath: z.ZodNullable<z.ZodString>;
342
337
  label: z.ZodNullable<z.ZodString>;
343
338
  color: z.ZodNullable<z.ZodString>;
344
339
  }, z.core.$strip>;
@@ -349,7 +344,6 @@ declare const standardComponentDefinitions: {
349
344
  props: z.ZodObject<{
350
345
  placeholder: z.ZodNullable<z.ZodString>;
351
346
  value: z.ZodNullable<z.ZodString>;
352
- statePath: z.ZodNullable<z.ZodString>;
353
347
  }, z.core.$strip>;
354
348
  events: string[];
355
349
  slots: never[];
@@ -419,7 +413,6 @@ declare const standardComponentDefinitions: {
419
413
  fade: "fade";
420
414
  none: "none";
421
415
  }>>;
422
- statePath: z.ZodNullable<z.ZodString>;
423
416
  }, z.core.$strip>;
424
417
  slots: string[];
425
418
  description: string;
@@ -475,22 +468,22 @@ declare const standardActionDefinitions: {
475
468
  };
476
469
  setState: {
477
470
  params: z.ZodObject<{
478
- path: z.ZodString;
471
+ statePath: z.ZodString;
479
472
  value: z.ZodUnknown;
480
473
  }, z.core.$strip>;
481
474
  description: string;
482
475
  };
483
476
  pushState: {
484
477
  params: z.ZodObject<{
485
- path: z.ZodString;
478
+ statePath: z.ZodString;
486
479
  value: z.ZodUnknown;
487
- clearPath: z.ZodOptional<z.ZodString>;
480
+ clearStatePath: z.ZodOptional<z.ZodString>;
488
481
  }, z.core.$strip>;
489
482
  description: string;
490
483
  };
491
484
  removeState: {
492
485
  params: z.ZodObject<{
493
- path: z.ZodString;
486
+ statePath: z.ZodString;
494
487
  index: z.ZodNumber;
495
488
  }, z.core.$strip>;
496
489
  description: string;
package/dist/catalog.d.ts CHANGED
@@ -287,7 +287,6 @@ declare const standardComponentDefinitions: {
287
287
  props: z.ZodObject<{
288
288
  placeholder: z.ZodNullable<z.ZodString>;
289
289
  value: z.ZodNullable<z.ZodString>;
290
- statePath: z.ZodNullable<z.ZodString>;
291
290
  secureTextEntry: z.ZodNullable<z.ZodBoolean>;
292
291
  keyboardType: z.ZodNullable<z.ZodEnum<{
293
292
  default: "default";
@@ -306,14 +305,12 @@ declare const standardComponentDefinitions: {
306
305
  description: string;
307
306
  example: {
308
307
  placeholder: string;
309
- statePath: string;
310
308
  label: string;
311
309
  };
312
310
  };
313
311
  Switch: {
314
312
  props: z.ZodObject<{
315
- value: z.ZodNullable<z.ZodBoolean>;
316
- statePath: z.ZodNullable<z.ZodString>;
313
+ checked: z.ZodNullable<z.ZodBoolean>;
317
314
  label: z.ZodNullable<z.ZodString>;
318
315
  disabled: z.ZodNullable<z.ZodBoolean>;
319
316
  }, z.core.$strip>;
@@ -324,7 +321,6 @@ declare const standardComponentDefinitions: {
324
321
  Checkbox: {
325
322
  props: z.ZodObject<{
326
323
  checked: z.ZodNullable<z.ZodBoolean>;
327
- statePath: z.ZodNullable<z.ZodString>;
328
324
  label: z.ZodNullable<z.ZodString>;
329
325
  disabled: z.ZodNullable<z.ZodBoolean>;
330
326
  }, z.core.$strip>;
@@ -338,7 +334,6 @@ declare const standardComponentDefinitions: {
338
334
  max: z.ZodNullable<z.ZodNumber>;
339
335
  step: z.ZodNullable<z.ZodNumber>;
340
336
  value: z.ZodNullable<z.ZodNumber>;
341
- statePath: z.ZodNullable<z.ZodString>;
342
337
  label: z.ZodNullable<z.ZodString>;
343
338
  color: z.ZodNullable<z.ZodString>;
344
339
  }, z.core.$strip>;
@@ -349,7 +344,6 @@ declare const standardComponentDefinitions: {
349
344
  props: z.ZodObject<{
350
345
  placeholder: z.ZodNullable<z.ZodString>;
351
346
  value: z.ZodNullable<z.ZodString>;
352
- statePath: z.ZodNullable<z.ZodString>;
353
347
  }, z.core.$strip>;
354
348
  events: string[];
355
349
  slots: never[];
@@ -419,7 +413,6 @@ declare const standardComponentDefinitions: {
419
413
  fade: "fade";
420
414
  none: "none";
421
415
  }>>;
422
- statePath: z.ZodNullable<z.ZodString>;
423
416
  }, z.core.$strip>;
424
417
  slots: string[];
425
418
  description: string;
@@ -475,22 +468,22 @@ declare const standardActionDefinitions: {
475
468
  };
476
469
  setState: {
477
470
  params: z.ZodObject<{
478
- path: z.ZodString;
471
+ statePath: z.ZodString;
479
472
  value: z.ZodUnknown;
480
473
  }, z.core.$strip>;
481
474
  description: string;
482
475
  };
483
476
  pushState: {
484
477
  params: z.ZodObject<{
485
- path: z.ZodString;
478
+ statePath: z.ZodString;
486
479
  value: z.ZodUnknown;
487
- clearPath: z.ZodOptional<z.ZodString>;
480
+ clearStatePath: z.ZodOptional<z.ZodString>;
488
481
  }, z.core.$strip>;
489
482
  description: string;
490
483
  };
491
484
  removeState: {
492
485
  params: z.ZodObject<{
493
- path: z.ZodString;
486
+ statePath: z.ZodString;
494
487
  index: z.ZodNumber;
495
488
  }, z.core.$strip>;
496
489
  description: string;
package/dist/catalog.js CHANGED
@@ -228,7 +228,6 @@ var standardComponentDefinitions = {
228
228
  props: import_zod.z.object({
229
229
  placeholder: import_zod.z.string().nullable(),
230
230
  value: import_zod.z.string().nullable(),
231
- statePath: import_zod.z.string().nullable(),
232
231
  secureTextEntry: import_zod.z.boolean().nullable(),
233
232
  keyboardType: import_zod.z.enum(["default", "email-address", "numeric", "phone-pad", "url"]).nullable(),
234
233
  multiline: import_zod.z.boolean().nullable(),
@@ -238,34 +237,31 @@ var standardComponentDefinitions = {
238
237
  }),
239
238
  events: ["submit", "focus", "blur"],
240
239
  slots: [],
241
- description: "Text input field. Use statePath to bind to the state model for two-way binding. The value typed by the user is stored at the statePath.",
240
+ description: "Text input field. Use $bindState to bind to the state model for two-way binding. The value typed by the user is stored at the bound path.",
242
241
  example: {
243
242
  placeholder: "Enter text...",
244
- statePath: "/inputValue",
245
243
  label: "Name"
246
244
  }
247
245
  },
248
246
  Switch: {
249
247
  props: import_zod.z.object({
250
- value: import_zod.z.boolean().nullable(),
251
- statePath: import_zod.z.string().nullable(),
248
+ checked: import_zod.z.boolean().nullable(),
252
249
  label: import_zod.z.string().nullable(),
253
250
  disabled: import_zod.z.boolean().nullable()
254
251
  }),
255
252
  events: ["change"],
256
253
  slots: [],
257
- description: "Toggle switch. Use statePath to bind to the state model."
254
+ description: "Toggle switch. Use $bindState to bind to the state model."
258
255
  },
259
256
  Checkbox: {
260
257
  props: import_zod.z.object({
261
258
  checked: import_zod.z.boolean().nullable(),
262
- statePath: import_zod.z.string().nullable(),
263
259
  label: import_zod.z.string().nullable(),
264
260
  disabled: import_zod.z.boolean().nullable()
265
261
  }),
266
262
  events: ["change"],
267
263
  slots: [],
268
- description: "Checkbox for boolean selections. Use statePath to bind to the state model."
264
+ description: "Checkbox for boolean selections. Use $bindState to bind to the state model."
269
265
  },
270
266
  Slider: {
271
267
  props: import_zod.z.object({
@@ -273,18 +269,16 @@ var standardComponentDefinitions = {
273
269
  max: import_zod.z.number().nullable(),
274
270
  step: import_zod.z.number().nullable(),
275
271
  value: import_zod.z.number().nullable(),
276
- statePath: import_zod.z.string().nullable(),
277
272
  label: import_zod.z.string().nullable(),
278
273
  color: import_zod.z.string().nullable()
279
274
  }),
280
275
  slots: [],
281
- description: "Range slider for numeric values. Use statePath to bind to the state model."
276
+ description: "Range slider for numeric values. Use $bindState to bind to the state model."
282
277
  },
283
278
  SearchBar: {
284
279
  props: import_zod.z.object({
285
280
  placeholder: import_zod.z.string().nullable(),
286
- value: import_zod.z.string().nullable(),
287
- statePath: import_zod.z.string().nullable()
281
+ value: import_zod.z.string().nullable()
288
282
  }),
289
283
  events: ["submit"],
290
284
  slots: [],
@@ -348,11 +342,10 @@ var standardComponentDefinitions = {
348
342
  props: import_zod.z.object({
349
343
  visible: import_zod.z.boolean(),
350
344
  title: import_zod.z.string().nullable(),
351
- animationType: import_zod.z.enum(["slide", "fade", "none"]).nullable(),
352
- statePath: import_zod.z.string().nullable()
345
+ animationType: import_zod.z.enum(["slide", "fade", "none"]).nullable()
353
346
  }),
354
347
  slots: ["default"],
355
- description: "Modal overlay dialog. Use statePath to bind visibility to the state model."
348
+ description: "Modal overlay dialog. Use $bindState on visible to bind visibility to the state model."
356
349
  }
357
350
  };
358
351
  var standardActionDefinitions = {
@@ -397,22 +390,22 @@ var standardActionDefinitions = {
397
390
  },
398
391
  setState: {
399
392
  params: import_zod.z.object({
400
- path: import_zod.z.string(),
393
+ statePath: import_zod.z.string(),
401
394
  value: import_zod.z.unknown()
402
395
  }),
403
- description: "Update a value in the state model at the given path."
396
+ description: "Update a value in the state model at the given statePath."
404
397
  },
405
398
  pushState: {
406
399
  params: import_zod.z.object({
407
- path: import_zod.z.string(),
400
+ statePath: import_zod.z.string(),
408
401
  value: import_zod.z.unknown(),
409
- clearPath: import_zod.z.string().optional()
402
+ clearStatePath: import_zod.z.string().optional()
410
403
  }),
411
- description: 'Append an item to an array in the state model. The value can contain { path: "/statePath" } references to read from current state, and "$id" to auto-generate a unique ID. Use clearPath to reset another path after pushing (e.g. clear an input field). Example: { path: "/todos", value: { id: "$id", title: { path: "/newTodoText" }, completed: false }, clearPath: "/newTodoText" }.'
404
+ description: 'Append an item to an array in the state model. The value can contain { $state: "/statePath" } references to read from current state, and "$id" to auto-generate a unique ID. Use clearStatePath to reset another path after pushing (e.g. clear an input field). Example: { statePath: "/todos", value: { id: "$id", title: { $state: "/newTodoText" }, completed: false }, clearStatePath: "/newTodoText" }.'
412
405
  },
413
406
  removeState: {
414
407
  params: import_zod.z.object({
415
- path: import_zod.z.string(),
408
+ statePath: import_zod.z.string(),
416
409
  index: import_zod.z.number()
417
410
  }),
418
411
  description: "Remove an item from an array in the state model at the given index."
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/catalog.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// =============================================================================\n// Standard Component Definitions for React Native\n// =============================================================================\n\n/**\n * Standard component definitions for React Native catalogs.\n *\n * These can be used directly or extended with custom components.\n * All components are built using React Native core primitives only.\n */\nexport const standardComponentDefinitions = {\n // ==========================================================================\n // Layout Components\n // ==========================================================================\n\n Container: {\n props: z.object({\n padding: z.number().nullable(),\n paddingHorizontal: z.number().nullable(),\n paddingVertical: z.number().nullable(),\n margin: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n borderRadius: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Generic container wrapper. Use for grouping elements with padding, margin, and background color.\",\n example: { padding: 16, backgroundColor: \"#FFFFFF\" },\n },\n\n Row: {\n props: z.object({\n gap: z.number().nullable(),\n alignItems: z\n .enum([\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"])\n .nullable(),\n justifyContent: z\n .enum([\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .nullable(),\n flexWrap: z.enum([\"wrap\", \"nowrap\"]).nullable(),\n padding: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Horizontal flex layout. Use for placing elements side by side.\",\n example: { gap: 12, alignItems: \"center\" },\n },\n\n Column: {\n props: z.object({\n gap: z.number().nullable(),\n alignItems: z\n .enum([\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"])\n .nullable(),\n justifyContent: z\n .enum([\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .nullable(),\n padding: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Vertical flex layout. Use for stacking elements top to bottom.\",\n example: { gap: 12, padding: 16 },\n },\n\n ScrollContainer: {\n props: z.object({\n horizontal: z.boolean().nullable(),\n showsScrollIndicator: z.boolean().nullable(),\n padding: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Scrollable container. Use for content that may overflow the screen.\",\n },\n\n SafeArea: {\n props: z.object({\n backgroundColor: z.string().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Safe area container that respects device notches and system bars. Use as the outermost wrapper for screens.\",\n },\n\n Spacer: {\n props: z.object({\n size: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [],\n description:\n \"Empty space between elements. Set size for fixed spacing or flex for flexible spacing.\",\n },\n\n Pressable: {\n props: z.object({}),\n events: [\"press\", \"longPress\"],\n slots: [\"default\"],\n description:\n \"Touchable wrapper that triggers events on press. Wrap any element to make it tappable. Bind on.press to setState to update state for visibility-driven UIs like tabs.\",\n },\n\n Divider: {\n props: z.object({\n direction: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n color: z.string().nullable(),\n thickness: z.number().nullable(),\n margin: z.number().nullable(),\n }),\n slots: [],\n description: \"Thin line separator between content sections.\",\n },\n\n // ==========================================================================\n // Content Components\n // ==========================================================================\n\n Heading: {\n props: z.object({\n text: z.string(),\n level: z.enum([\"h1\", \"h2\", \"h3\", \"h4\"]).nullable(),\n color: z.string().nullable(),\n align: z.enum([\"left\", \"center\", \"right\"]).nullable(),\n }),\n slots: [],\n description:\n \"Heading text at various levels. h1 is largest, h4 is smallest.\",\n example: { text: \"Welcome\", level: \"h1\" },\n },\n\n Paragraph: {\n props: z.object({\n text: z.string(),\n color: z.string().nullable(),\n align: z.enum([\"left\", \"center\", \"right\"]).nullable(),\n numberOfLines: z.number().nullable(),\n fontSize: z.number().nullable(),\n }),\n slots: [],\n description:\n \"Body text paragraph. Use for descriptions and longer content.\",\n example: { text: \"This is a paragraph of body text.\" },\n },\n\n Label: {\n props: z.object({\n text: z.string(),\n color: z.string().nullable(),\n bold: z.boolean().nullable(),\n size: z.enum([\"xs\", \"sm\", \"md\"]).nullable(),\n }),\n slots: [],\n description:\n \"Small utility text. Use for captions, form labels, and secondary information.\",\n example: { text: \"Status\", size: \"sm\" },\n },\n\n Image: {\n props: z.object({\n src: z.string(),\n alt: z.string().nullable(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n resizeMode: z.enum([\"cover\", \"contain\", \"stretch\", \"center\"]).nullable(),\n borderRadius: z.number().nullable(),\n }),\n slots: [],\n description: \"Image display. Provide a source URL and optional dimensions.\",\n example: {\n src: \"https://picsum.photos/300/200\",\n alt: \"Photo\",\n width: 300,\n height: 200,\n },\n },\n\n Avatar: {\n props: z.object({\n src: z.string().nullable(),\n initials: z.string().nullable(),\n size: z.enum([\"sm\", \"md\", \"lg\", \"xl\"]).nullable(),\n backgroundColor: z.string().nullable(),\n }),\n slots: [],\n description:\n \"Circular avatar showing an image or initials. Use for user profiles and contacts.\",\n example: { initials: \"JD\", size: \"md\" },\n },\n\n Badge: {\n props: z.object({\n label: z.string(),\n variant: z\n .enum([\"default\", \"info\", \"success\", \"warning\", \"error\"])\n .nullable(),\n }),\n slots: [],\n description:\n \"Small colored indicator with a label. Use for status, counts, and categories.\",\n example: { label: \"New\", variant: \"info\" },\n },\n\n Chip: {\n props: z.object({\n label: z.string(),\n selected: z.boolean().nullable(),\n backgroundColor: z.string().nullable(),\n }),\n events: [\"press\", \"remove\"],\n slots: [],\n description:\n \"Tag or filter chip. Bind on.remove for removable chips, on.press for selectable chips.\",\n },\n\n // ==========================================================================\n // Input Components\n // ==========================================================================\n\n Button: {\n props: z.object({\n label: z.string(),\n variant: z\n .enum([\"primary\", \"secondary\", \"danger\", \"outline\", \"ghost\"])\n .nullable(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n disabled: z.boolean().nullable(),\n loading: z.boolean().nullable(),\n }),\n events: [\"press\"],\n slots: [],\n description:\n \"Pressable button with label. Set variant for styling. Bind on.press for the handler to call on press.\",\n example: { label: \"Submit\", variant: \"primary\" },\n },\n\n TextInput: {\n props: z.object({\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n statePath: z.string().nullable(),\n secureTextEntry: z.boolean().nullable(),\n keyboardType: z\n .enum([\"default\", \"email-address\", \"numeric\", \"phone-pad\", \"url\"])\n .nullable(),\n multiline: z.boolean().nullable(),\n numberOfLines: z.number().nullable(),\n label: z.string().nullable(),\n flex: z.number().nullable(),\n }),\n events: [\"submit\", \"focus\", \"blur\"],\n slots: [],\n description:\n \"Text input field. Use statePath to bind to the state model for two-way binding. The value typed by the user is stored at the statePath.\",\n example: {\n placeholder: \"Enter text...\",\n statePath: \"/inputValue\",\n label: \"Name\",\n },\n },\n\n Switch: {\n props: z.object({\n value: z.boolean().nullable(),\n statePath: z.string().nullable(),\n label: z.string().nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"change\"],\n slots: [],\n description: \"Toggle switch. Use statePath to bind to the state model.\",\n },\n\n Checkbox: {\n props: z.object({\n checked: z.boolean().nullable(),\n statePath: z.string().nullable(),\n label: z.string().nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"change\"],\n slots: [],\n description:\n \"Checkbox for boolean selections. Use statePath to bind to the state model.\",\n },\n\n Slider: {\n props: z.object({\n min: z.number().nullable(),\n max: z.number().nullable(),\n step: z.number().nullable(),\n value: z.number().nullable(),\n statePath: z.string().nullable(),\n label: z.string().nullable(),\n color: z.string().nullable(),\n }),\n slots: [],\n description:\n \"Range slider for numeric values. Use statePath to bind to the state model.\",\n },\n\n SearchBar: {\n props: z.object({\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n statePath: z.string().nullable(),\n }),\n events: [\"submit\"],\n slots: [],\n description:\n \"Search input with icon. Bind on.submit to trigger search on submit.\",\n },\n\n // ==========================================================================\n // Feedback Components\n // ==========================================================================\n\n Spinner: {\n props: z.object({\n size: z.enum([\"small\", \"large\"]).nullable(),\n color: z.string().nullable(),\n }),\n slots: [],\n description: \"Loading spinner indicator. Use while content is loading.\",\n },\n\n ProgressBar: {\n props: z.object({\n progress: z.number(),\n color: z.string().nullable(),\n trackColor: z.string().nullable(),\n height: z.number().nullable(),\n }),\n slots: [],\n description: \"Horizontal progress bar. Set progress from 0 to 1.\",\n },\n\n // ==========================================================================\n // Composite Components\n // ==========================================================================\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n subtitle: z.string().nullable(),\n padding: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n borderRadius: z.number().nullable(),\n elevated: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Elevated card container with optional title. Use for grouping related content.\",\n example: { title: \"Details\", padding: 16, elevated: true },\n },\n\n ListItem: {\n props: z.object({\n title: z.string(),\n subtitle: z.string().nullable(),\n leading: z.string().nullable(),\n trailing: z.string().nullable(),\n showChevron: z.boolean().nullable(),\n }),\n events: [\"press\"],\n slots: [],\n description:\n \"List row with title, subtitle, and optional leading/trailing text. Bind on.press for the press handler.\",\n example: {\n title: \"Settings\",\n subtitle: \"Manage your preferences\",\n showChevron: true,\n },\n },\n\n Modal: {\n props: z.object({\n visible: z.boolean(),\n title: z.string().nullable(),\n animationType: z.enum([\"slide\", \"fade\", \"none\"]).nullable(),\n statePath: z.string().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Modal overlay dialog. Use statePath to bind visibility to the state model.\",\n },\n};\n\n// =============================================================================\n// Standard Action Definitions for React Native\n// =============================================================================\n\n/**\n * Standard action definitions for React Native catalogs.\n *\n * These use React Native core APIs (Alert, Share, Linking) and\n * user-provided functions (navigate).\n */\nexport const standardActionDefinitions = {\n navigate: {\n params: z.object({\n screen: z.string(),\n params: z.record(z.string(), z.unknown()).nullable(),\n }),\n description:\n \"Navigate to a screen. Calls the user-provided navigation function.\",\n },\n\n goBack: {\n params: z.object({}),\n description: \"Navigate back to the previous screen.\",\n },\n\n showAlert: {\n params: z.object({\n title: z.string(),\n message: z.string().nullable(),\n buttons: z\n .array(\n z.object({\n text: z.string(),\n style: z.enum([\"default\", \"cancel\", \"destructive\"]).nullable(),\n action: z.string().nullable(),\n }),\n )\n .nullable(),\n }),\n description: \"Show a native alert dialog using Alert.alert().\",\n },\n\n share: {\n params: z.object({\n message: z.string(),\n url: z.string().nullable(),\n title: z.string().nullable(),\n }),\n description: \"Open the native share sheet using Share.share().\",\n },\n\n openURL: {\n params: z.object({\n url: z.string(),\n }),\n description: \"Open a URL in the default browser using Linking.openURL().\",\n },\n\n setState: {\n params: z.object({\n path: z.string(),\n value: z.unknown(),\n }),\n description: \"Update a value in the state model at the given path.\",\n },\n\n pushState: {\n params: z.object({\n path: z.string(),\n value: z.unknown(),\n clearPath: z.string().optional(),\n }),\n description:\n 'Append an item to an array in the state model. The value can contain { path: \"/statePath\" } references to read from current state, and \"$id\" to auto-generate a unique ID. Use clearPath to reset another path after pushing (e.g. clear an input field). Example: { path: \"/todos\", value: { id: \"$id\", title: { path: \"/newTodoText\" }, completed: false }, clearPath: \"/newTodoText\" }.',\n },\n\n removeState: {\n params: z.object({\n path: z.string(),\n index: z.number(),\n }),\n description:\n \"Remove an item from an array in the state model at the given index.\",\n },\n\n refresh: {\n params: z.object({\n target: z.string().nullable(),\n }),\n description:\n \"Trigger a data refresh. Optionally specify a target to refresh.\",\n },\n};\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Type for a component definition\n */\nexport type ComponentDefinition = {\n props: z.ZodType;\n slots: string[];\n events?: string[];\n description: string;\n};\n\n/**\n * Type for an action definition\n */\nexport type ActionDefinition = {\n params: z.ZodType;\n description: string;\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/catalog.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// =============================================================================\n// Standard Component Definitions for React Native\n// =============================================================================\n\n/**\n * Standard component definitions for React Native catalogs.\n *\n * These can be used directly or extended with custom components.\n * All components are built using React Native core primitives only.\n */\nexport const standardComponentDefinitions = {\n // ==========================================================================\n // Layout Components\n // ==========================================================================\n\n Container: {\n props: z.object({\n padding: z.number().nullable(),\n paddingHorizontal: z.number().nullable(),\n paddingVertical: z.number().nullable(),\n margin: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n borderRadius: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Generic container wrapper. Use for grouping elements with padding, margin, and background color.\",\n example: { padding: 16, backgroundColor: \"#FFFFFF\" },\n },\n\n Row: {\n props: z.object({\n gap: z.number().nullable(),\n alignItems: z\n .enum([\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"])\n .nullable(),\n justifyContent: z\n .enum([\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .nullable(),\n flexWrap: z.enum([\"wrap\", \"nowrap\"]).nullable(),\n padding: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Horizontal flex layout. Use for placing elements side by side.\",\n example: { gap: 12, alignItems: \"center\" },\n },\n\n Column: {\n props: z.object({\n gap: z.number().nullable(),\n alignItems: z\n .enum([\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"])\n .nullable(),\n justifyContent: z\n .enum([\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .nullable(),\n padding: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Vertical flex layout. Use for stacking elements top to bottom.\",\n example: { gap: 12, padding: 16 },\n },\n\n ScrollContainer: {\n props: z.object({\n horizontal: z.boolean().nullable(),\n showsScrollIndicator: z.boolean().nullable(),\n padding: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Scrollable container. Use for content that may overflow the screen.\",\n },\n\n SafeArea: {\n props: z.object({\n backgroundColor: z.string().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Safe area container that respects device notches and system bars. Use as the outermost wrapper for screens.\",\n },\n\n Spacer: {\n props: z.object({\n size: z.number().nullable(),\n flex: z.number().nullable(),\n }),\n slots: [],\n description:\n \"Empty space between elements. Set size for fixed spacing or flex for flexible spacing.\",\n },\n\n Pressable: {\n props: z.object({}),\n events: [\"press\", \"longPress\"],\n slots: [\"default\"],\n description:\n \"Touchable wrapper that triggers events on press. Wrap any element to make it tappable. Bind on.press to setState to update state for visibility-driven UIs like tabs.\",\n },\n\n Divider: {\n props: z.object({\n direction: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n color: z.string().nullable(),\n thickness: z.number().nullable(),\n margin: z.number().nullable(),\n }),\n slots: [],\n description: \"Thin line separator between content sections.\",\n },\n\n // ==========================================================================\n // Content Components\n // ==========================================================================\n\n Heading: {\n props: z.object({\n text: z.string(),\n level: z.enum([\"h1\", \"h2\", \"h3\", \"h4\"]).nullable(),\n color: z.string().nullable(),\n align: z.enum([\"left\", \"center\", \"right\"]).nullable(),\n }),\n slots: [],\n description:\n \"Heading text at various levels. h1 is largest, h4 is smallest.\",\n example: { text: \"Welcome\", level: \"h1\" },\n },\n\n Paragraph: {\n props: z.object({\n text: z.string(),\n color: z.string().nullable(),\n align: z.enum([\"left\", \"center\", \"right\"]).nullable(),\n numberOfLines: z.number().nullable(),\n fontSize: z.number().nullable(),\n }),\n slots: [],\n description:\n \"Body text paragraph. Use for descriptions and longer content.\",\n example: { text: \"This is a paragraph of body text.\" },\n },\n\n Label: {\n props: z.object({\n text: z.string(),\n color: z.string().nullable(),\n bold: z.boolean().nullable(),\n size: z.enum([\"xs\", \"sm\", \"md\"]).nullable(),\n }),\n slots: [],\n description:\n \"Small utility text. Use for captions, form labels, and secondary information.\",\n example: { text: \"Status\", size: \"sm\" },\n },\n\n Image: {\n props: z.object({\n src: z.string(),\n alt: z.string().nullable(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n resizeMode: z.enum([\"cover\", \"contain\", \"stretch\", \"center\"]).nullable(),\n borderRadius: z.number().nullable(),\n }),\n slots: [],\n description: \"Image display. Provide a source URL and optional dimensions.\",\n example: {\n src: \"https://picsum.photos/300/200\",\n alt: \"Photo\",\n width: 300,\n height: 200,\n },\n },\n\n Avatar: {\n props: z.object({\n src: z.string().nullable(),\n initials: z.string().nullable(),\n size: z.enum([\"sm\", \"md\", \"lg\", \"xl\"]).nullable(),\n backgroundColor: z.string().nullable(),\n }),\n slots: [],\n description:\n \"Circular avatar showing an image or initials. Use for user profiles and contacts.\",\n example: { initials: \"JD\", size: \"md\" },\n },\n\n Badge: {\n props: z.object({\n label: z.string(),\n variant: z\n .enum([\"default\", \"info\", \"success\", \"warning\", \"error\"])\n .nullable(),\n }),\n slots: [],\n description:\n \"Small colored indicator with a label. Use for status, counts, and categories.\",\n example: { label: \"New\", variant: \"info\" },\n },\n\n Chip: {\n props: z.object({\n label: z.string(),\n selected: z.boolean().nullable(),\n backgroundColor: z.string().nullable(),\n }),\n events: [\"press\", \"remove\"],\n slots: [],\n description:\n \"Tag or filter chip. Bind on.remove for removable chips, on.press for selectable chips.\",\n },\n\n // ==========================================================================\n // Input Components\n // ==========================================================================\n\n Button: {\n props: z.object({\n label: z.string(),\n variant: z\n .enum([\"primary\", \"secondary\", \"danger\", \"outline\", \"ghost\"])\n .nullable(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n disabled: z.boolean().nullable(),\n loading: z.boolean().nullable(),\n }),\n events: [\"press\"],\n slots: [],\n description:\n \"Pressable button with label. Set variant for styling. Bind on.press for the handler to call on press.\",\n example: { label: \"Submit\", variant: \"primary\" },\n },\n\n TextInput: {\n props: z.object({\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n secureTextEntry: z.boolean().nullable(),\n keyboardType: z\n .enum([\"default\", \"email-address\", \"numeric\", \"phone-pad\", \"url\"])\n .nullable(),\n multiline: z.boolean().nullable(),\n numberOfLines: z.number().nullable(),\n label: z.string().nullable(),\n flex: z.number().nullable(),\n }),\n events: [\"submit\", \"focus\", \"blur\"],\n slots: [],\n description:\n \"Text input field. Use $bindState to bind to the state model for two-way binding. The value typed by the user is stored at the bound path.\",\n example: {\n placeholder: \"Enter text...\",\n label: \"Name\",\n },\n },\n\n Switch: {\n props: z.object({\n checked: z.boolean().nullable(),\n label: z.string().nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"change\"],\n slots: [],\n description: \"Toggle switch. Use $bindState to bind to the state model.\",\n },\n\n Checkbox: {\n props: z.object({\n checked: z.boolean().nullable(),\n label: z.string().nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"change\"],\n slots: [],\n description:\n \"Checkbox for boolean selections. Use $bindState to bind to the state model.\",\n },\n\n Slider: {\n props: z.object({\n min: z.number().nullable(),\n max: z.number().nullable(),\n step: z.number().nullable(),\n value: z.number().nullable(),\n label: z.string().nullable(),\n color: z.string().nullable(),\n }),\n slots: [],\n description:\n \"Range slider for numeric values. Use $bindState to bind to the state model.\",\n },\n\n SearchBar: {\n props: z.object({\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n }),\n events: [\"submit\"],\n slots: [],\n description:\n \"Search input with icon. Bind on.submit to trigger search on submit.\",\n },\n\n // ==========================================================================\n // Feedback Components\n // ==========================================================================\n\n Spinner: {\n props: z.object({\n size: z.enum([\"small\", \"large\"]).nullable(),\n color: z.string().nullable(),\n }),\n slots: [],\n description: \"Loading spinner indicator. Use while content is loading.\",\n },\n\n ProgressBar: {\n props: z.object({\n progress: z.number(),\n color: z.string().nullable(),\n trackColor: z.string().nullable(),\n height: z.number().nullable(),\n }),\n slots: [],\n description: \"Horizontal progress bar. Set progress from 0 to 1.\",\n },\n\n // ==========================================================================\n // Composite Components\n // ==========================================================================\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n subtitle: z.string().nullable(),\n padding: z.number().nullable(),\n backgroundColor: z.string().nullable(),\n borderRadius: z.number().nullable(),\n elevated: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Elevated card container with optional title. Use for grouping related content.\",\n example: { title: \"Details\", padding: 16, elevated: true },\n },\n\n ListItem: {\n props: z.object({\n title: z.string(),\n subtitle: z.string().nullable(),\n leading: z.string().nullable(),\n trailing: z.string().nullable(),\n showChevron: z.boolean().nullable(),\n }),\n events: [\"press\"],\n slots: [],\n description:\n \"List row with title, subtitle, and optional leading/trailing text. Bind on.press for the press handler.\",\n example: {\n title: \"Settings\",\n subtitle: \"Manage your preferences\",\n showChevron: true,\n },\n },\n\n Modal: {\n props: z.object({\n visible: z.boolean(),\n title: z.string().nullable(),\n animationType: z.enum([\"slide\", \"fade\", \"none\"]).nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Modal overlay dialog. Use $bindState on visible to bind visibility to the state model.\",\n },\n};\n\n// =============================================================================\n// Standard Action Definitions for React Native\n// =============================================================================\n\n/**\n * Standard action definitions for React Native catalogs.\n *\n * These use React Native core APIs (Alert, Share, Linking) and\n * user-provided functions (navigate).\n */\nexport const standardActionDefinitions = {\n navigate: {\n params: z.object({\n screen: z.string(),\n params: z.record(z.string(), z.unknown()).nullable(),\n }),\n description:\n \"Navigate to a screen. Calls the user-provided navigation function.\",\n },\n\n goBack: {\n params: z.object({}),\n description: \"Navigate back to the previous screen.\",\n },\n\n showAlert: {\n params: z.object({\n title: z.string(),\n message: z.string().nullable(),\n buttons: z\n .array(\n z.object({\n text: z.string(),\n style: z.enum([\"default\", \"cancel\", \"destructive\"]).nullable(),\n action: z.string().nullable(),\n }),\n )\n .nullable(),\n }),\n description: \"Show a native alert dialog using Alert.alert().\",\n },\n\n share: {\n params: z.object({\n message: z.string(),\n url: z.string().nullable(),\n title: z.string().nullable(),\n }),\n description: \"Open the native share sheet using Share.share().\",\n },\n\n openURL: {\n params: z.object({\n url: z.string(),\n }),\n description: \"Open a URL in the default browser using Linking.openURL().\",\n },\n\n setState: {\n params: z.object({\n statePath: z.string(),\n value: z.unknown(),\n }),\n description: \"Update a value in the state model at the given statePath.\",\n },\n\n pushState: {\n params: z.object({\n statePath: z.string(),\n value: z.unknown(),\n clearStatePath: z.string().optional(),\n }),\n description:\n 'Append an item to an array in the state model. The value can contain { $state: \"/statePath\" } references to read from current state, and \"$id\" to auto-generate a unique ID. Use clearStatePath to reset another path after pushing (e.g. clear an input field). Example: { statePath: \"/todos\", value: { id: \"$id\", title: { $state: \"/newTodoText\" }, completed: false }, clearStatePath: \"/newTodoText\" }.',\n },\n\n removeState: {\n params: z.object({\n statePath: z.string(),\n index: z.number(),\n }),\n description:\n \"Remove an item from an array in the state model at the given index.\",\n },\n\n refresh: {\n params: z.object({\n target: z.string().nullable(),\n }),\n description:\n \"Trigger a data refresh. Optionally specify a target to refresh.\",\n },\n};\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Type for a component definition\n */\nexport type ComponentDefinition = {\n props: z.ZodType;\n slots: string[];\n events?: string[];\n description: string;\n};\n\n/**\n * Type for an action definition\n */\nexport type ActionDefinition = {\n params: z.ZodType;\n description: string;\n};\n"],"mappings":"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","names":[]}
package/dist/catalog.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  standardActionDefinitions,
3
3
  standardComponentDefinitions
4
- } from "./chunk-7PT5BNV7.mjs";
4
+ } from "./chunk-QYY3Q42V.mjs";
5
5
  export {
6
6
  standardActionDefinitions,
7
7
  standardComponentDefinitions
@@ -203,7 +203,6 @@ var standardComponentDefinitions = {
203
203
  props: z.object({
204
204
  placeholder: z.string().nullable(),
205
205
  value: z.string().nullable(),
206
- statePath: z.string().nullable(),
207
206
  secureTextEntry: z.boolean().nullable(),
208
207
  keyboardType: z.enum(["default", "email-address", "numeric", "phone-pad", "url"]).nullable(),
209
208
  multiline: z.boolean().nullable(),
@@ -213,34 +212,31 @@ var standardComponentDefinitions = {
213
212
  }),
214
213
  events: ["submit", "focus", "blur"],
215
214
  slots: [],
216
- description: "Text input field. Use statePath to bind to the state model for two-way binding. The value typed by the user is stored at the statePath.",
215
+ description: "Text input field. Use $bindState to bind to the state model for two-way binding. The value typed by the user is stored at the bound path.",
217
216
  example: {
218
217
  placeholder: "Enter text...",
219
- statePath: "/inputValue",
220
218
  label: "Name"
221
219
  }
222
220
  },
223
221
  Switch: {
224
222
  props: z.object({
225
- value: z.boolean().nullable(),
226
- statePath: z.string().nullable(),
223
+ checked: z.boolean().nullable(),
227
224
  label: z.string().nullable(),
228
225
  disabled: z.boolean().nullable()
229
226
  }),
230
227
  events: ["change"],
231
228
  slots: [],
232
- description: "Toggle switch. Use statePath to bind to the state model."
229
+ description: "Toggle switch. Use $bindState to bind to the state model."
233
230
  },
234
231
  Checkbox: {
235
232
  props: z.object({
236
233
  checked: z.boolean().nullable(),
237
- statePath: z.string().nullable(),
238
234
  label: z.string().nullable(),
239
235
  disabled: z.boolean().nullable()
240
236
  }),
241
237
  events: ["change"],
242
238
  slots: [],
243
- description: "Checkbox for boolean selections. Use statePath to bind to the state model."
239
+ description: "Checkbox for boolean selections. Use $bindState to bind to the state model."
244
240
  },
245
241
  Slider: {
246
242
  props: z.object({
@@ -248,18 +244,16 @@ var standardComponentDefinitions = {
248
244
  max: z.number().nullable(),
249
245
  step: z.number().nullable(),
250
246
  value: z.number().nullable(),
251
- statePath: z.string().nullable(),
252
247
  label: z.string().nullable(),
253
248
  color: z.string().nullable()
254
249
  }),
255
250
  slots: [],
256
- description: "Range slider for numeric values. Use statePath to bind to the state model."
251
+ description: "Range slider for numeric values. Use $bindState to bind to the state model."
257
252
  },
258
253
  SearchBar: {
259
254
  props: z.object({
260
255
  placeholder: z.string().nullable(),
261
- value: z.string().nullable(),
262
- statePath: z.string().nullable()
256
+ value: z.string().nullable()
263
257
  }),
264
258
  events: ["submit"],
265
259
  slots: [],
@@ -323,11 +317,10 @@ var standardComponentDefinitions = {
323
317
  props: z.object({
324
318
  visible: z.boolean(),
325
319
  title: z.string().nullable(),
326
- animationType: z.enum(["slide", "fade", "none"]).nullable(),
327
- statePath: z.string().nullable()
320
+ animationType: z.enum(["slide", "fade", "none"]).nullable()
328
321
  }),
329
322
  slots: ["default"],
330
- description: "Modal overlay dialog. Use statePath to bind visibility to the state model."
323
+ description: "Modal overlay dialog. Use $bindState on visible to bind visibility to the state model."
331
324
  }
332
325
  };
333
326
  var standardActionDefinitions = {
@@ -372,22 +365,22 @@ var standardActionDefinitions = {
372
365
  },
373
366
  setState: {
374
367
  params: z.object({
375
- path: z.string(),
368
+ statePath: z.string(),
376
369
  value: z.unknown()
377
370
  }),
378
- description: "Update a value in the state model at the given path."
371
+ description: "Update a value in the state model at the given statePath."
379
372
  },
380
373
  pushState: {
381
374
  params: z.object({
382
- path: z.string(),
375
+ statePath: z.string(),
383
376
  value: z.unknown(),
384
- clearPath: z.string().optional()
377
+ clearStatePath: z.string().optional()
385
378
  }),
386
- description: 'Append an item to an array in the state model. The value can contain { path: "/statePath" } references to read from current state, and "$id" to auto-generate a unique ID. Use clearPath to reset another path after pushing (e.g. clear an input field). Example: { path: "/todos", value: { id: "$id", title: { path: "/newTodoText" }, completed: false }, clearPath: "/newTodoText" }.'
379
+ description: 'Append an item to an array in the state model. The value can contain { $state: "/statePath" } references to read from current state, and "$id" to auto-generate a unique ID. Use clearStatePath to reset another path after pushing (e.g. clear an input field). Example: { statePath: "/todos", value: { id: "$id", title: { $state: "/newTodoText" }, completed: false }, clearStatePath: "/newTodoText" }.'
387
380
  },
388
381
  removeState: {
389
382
  params: z.object({
390
- path: z.string(),
383
+ statePath: z.string(),
391
384
  index: z.number()
392
385
  }),
393
386
  description: "Remove an item from an array in the state model at the given index."
@@ -404,4 +397,4 @@ export {
404
397
  standardComponentDefinitions,
405
398
  standardActionDefinitions
406
399
  };
407
- //# sourceMappingURL=chunk-7PT5BNV7.mjs.map
400
+ //# sourceMappingURL=chunk-QYY3Q42V.mjs.map