@copilotkit/react-core 2.0.0-rc.0 → 2.0.0-rc.10

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 (48) hide show
  1. package/dist/{MarkdownRendererContext-B4Us6mwL.d.cts → MarkdownRendererContext-CS35epe1.d.mts} +17 -33
  2. package/dist/MarkdownRendererContext-CS35epe1.d.mts.map +1 -0
  3. package/dist/{MarkdownRendererContext-CRKFzsEB.d.mts → MarkdownRendererContext-CfTh92vk.d.cts} +17 -33
  4. package/dist/MarkdownRendererContext-CfTh92vk.d.cts.map +1 -0
  5. package/dist/{MarkdownSurfaces-ChSlVYOk.mjs → MarkdownSurfaces-CimUSR3Y.mjs} +153 -76
  6. package/dist/MarkdownSurfaces-CimUSR3Y.mjs.map +1 -0
  7. package/dist/{MarkdownSurfaces-C2XZISKn.cjs → MarkdownSurfaces-DGDeUhbX.cjs} +175 -85
  8. package/dist/MarkdownSurfaces-DGDeUhbX.cjs.map +1 -0
  9. package/dist/context.cjs +20 -17
  10. package/dist/context.cjs.map +1 -1
  11. package/dist/context.d.cts +38 -98
  12. package/dist/context.d.cts.map +1 -1
  13. package/dist/context.d.mts +38 -98
  14. package/dist/context.d.mts.map +1 -1
  15. package/dist/context.mjs +20 -17
  16. package/dist/context.mjs.map +1 -1
  17. package/dist/generative-ui.cjs +564 -564
  18. package/dist/generative-ui.cjs.map +1 -1
  19. package/dist/generative-ui.d.cts +2137 -4178
  20. package/dist/generative-ui.d.cts.map +1 -1
  21. package/dist/generative-ui.d.mts +2137 -4178
  22. package/dist/generative-ui.d.mts.map +1 -1
  23. package/dist/generative-ui.mjs +69 -70
  24. package/dist/generative-ui.mjs.map +1 -1
  25. package/dist/headless.cjs +50 -76
  26. package/dist/headless.cjs.map +1 -1
  27. package/dist/headless.d.cts +78 -253
  28. package/dist/headless.d.cts.map +1 -1
  29. package/dist/headless.d.mts +56 -202
  30. package/dist/headless.d.mts.map +1 -1
  31. package/dist/headless.mjs +43 -74
  32. package/dist/headless.mjs.map +1 -1
  33. package/dist/index.cjs +1383 -1958
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +213 -538
  36. package/dist/index.d.cts.map +1 -1
  37. package/dist/index.d.mts +212 -537
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.mjs +1089 -1920
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/index.umd.js +1549 -2039
  42. package/dist/index.umd.js.map +1 -1
  43. package/package.json +20 -35
  44. package/dist/MarkdownRendererContext-B4Us6mwL.d.cts.map +0 -1
  45. package/dist/MarkdownRendererContext-CRKFzsEB.d.mts.map +0 -1
  46. package/dist/MarkdownSurfaces-C2XZISKn.cjs.map +0 -1
  47. package/dist/MarkdownSurfaces-ChSlVYOk.mjs.map +0 -1
  48. package/dist/index.css +0 -2
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
- const require_MarkdownSurfaces = require('./MarkdownSurfaces-C2XZISKn.cjs');
4
+ const require_MarkdownSurfaces = require('./MarkdownSurfaces-DGDeUhbX.cjs');
5
5
  let react = require("react");
6
6
  react = require_MarkdownSurfaces.__toESM(react);
7
7
  let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let _copilotkit_shared = require("@copilotkit/shared");
9
9
  let zod = require("zod");
10
+ zod = require_MarkdownSurfaces.__toESM(zod);
10
11
  let react_dom = require("react-dom");
11
12
 
12
13
  //#region src/generative-ui/refs.ts
@@ -33,7 +34,7 @@ const mark = (prefix, description) => description ? `${prefix} ${description}` :
33
34
  * description here, not with `.describe()`, which would replace the mark.
34
35
  */
35
36
  function child(description) {
36
- return zod.z.string().min(1).describe(mark(_copilotkit_shared.A2UI_COMPONENT_ID_MARK, description)).transform(toNode);
37
+ return zod.string().min(1).describe(mark(_copilotkit_shared.A2UI_COMPONENT_ID_MARK, description)).transform(toNode);
37
38
  }
38
39
  /**
39
40
  * A list of component ids, or a template `{ componentId, path }` that
@@ -42,9 +43,9 @@ function child(description) {
42
43
  * not with `.describe()`.
43
44
  */
44
45
  function childList(description) {
45
- return zod.z.union([zod.z.array(zod.z.string().min(1)), zod.z.object({
46
- componentId: zod.z.string().min(1),
47
- path: zod.z.string().min(1)
46
+ return zod.union([zod.array(zod.string().min(1)), zod.object({
47
+ componentId: zod.string().min(1),
48
+ path: zod.string().min(1)
48
49
  })]).describe(mark(_copilotkit_shared.A2UI_CHILD_LIST_MARK, description)).transform(toNode);
49
50
  }
50
51
 
@@ -586,27 +587,6 @@ const BORDER_COLORS = [
586
587
  "danger",
587
588
  "discovery"
588
589
  ];
589
- const BACKGROUNDS = [
590
- "surface",
591
- "surface-secondary",
592
- "surface-tertiary",
593
- "surface-elevated",
594
- "surface-elevated-secondary",
595
- "surface-inverted",
596
- "surface-soft",
597
- "info",
598
- "warning",
599
- "caution",
600
- "success",
601
- "danger",
602
- "discovery",
603
- "info-solid",
604
- "warning-solid",
605
- "caution-solid",
606
- "success-solid",
607
- "danger-solid",
608
- "discovery-solid"
609
- ];
610
590
  const RADIUS_PX = {
611
591
  "2xs": "2px",
612
592
  xs: "4px",
@@ -970,18 +950,18 @@ function useStandardStyles() {
970
950
  //#endregion
971
951
  //#region src/generative-ui/standard/layout.tsx
972
952
  /** A number is a count of 4px steps. A string is raw CSS. */
973
- const sizeValue = zod.z.union([zod.z.number(), zod.z.string()]);
953
+ const sizeValue = zod.union([zod.number(), zod.string()]);
974
954
  /** The A2UI `weight`: how much of the free space of a Row or Column to take. */
975
- const weightProp = zod.z.number().optional().describe("flex-grow in a Row or Column");
976
- const radiusValue = zod.z.union([
977
- zod.z.enum(RADII),
978
- zod.z.number(),
979
- zod.z.string(),
980
- zod.z.object({
981
- topLeft: zod.z.string().optional(),
982
- topRight: zod.z.string().optional(),
983
- bottomLeft: zod.z.string().optional(),
984
- bottomRight: zod.z.string().optional()
955
+ const weightProp = zod.number().optional().describe("flex-grow in a Row or Column");
956
+ const radiusValue = zod.union([
957
+ zod.enum(RADII),
958
+ zod.number(),
959
+ zod.string(),
960
+ zod.object({
961
+ topLeft: zod.string().optional(),
962
+ topRight: zod.string().optional(),
963
+ bottomLeft: zod.string().optional(),
964
+ bottomRight: zod.string().optional()
985
965
  })
986
966
  ]);
987
967
  /**
@@ -990,16 +970,16 @@ const radiusValue = zod.z.union([
990
970
  * are a slot, not a prop.
991
971
  */
992
972
  const layoutProps = {
993
- align: zod.z.enum(ALIGN).optional(),
994
- justify: zod.z.enum(JUSTIFY).optional(),
995
- wrap: zod.z.enum(WRAP).optional(),
973
+ align: zod.enum(ALIGN).optional(),
974
+ justify: zod.enum(JUSTIFY).optional(),
975
+ wrap: zod.enum(WRAP).optional(),
996
976
  gap: sizeValue.optional().describe("4px steps when a number"),
997
977
  rowGap: sizeValue.optional(),
998
978
  columnGap: sizeValue.optional(),
999
979
  padding: sizeValue.optional().describe("4px steps when a number"),
1000
- background: zod.z.string().optional().describe(`One of ${BACKGROUNDS.join("|")} or a CSS color. Leave it unset. Only one summary panel in a Card can use "surface-secondary"`),
1001
- border: zod.z.boolean().optional(),
1002
- borderColor: zod.z.enum(BORDER_COLORS).optional(),
980
+ background: zod.string().optional().describe("Leave it unset. A surface token such as surface, surface-secondary, info, success, warning, danger, discovery, or one with -solid, or a CSS color. Only one summary panel in a Card uses \"surface-secondary\""),
981
+ border: zod.boolean().optional(),
982
+ borderColor: zod.enum(BORDER_COLORS).optional(),
1003
983
  radius: radiusValue.optional(),
1004
984
  width: sizeValue.optional(),
1005
985
  height: sizeValue.optional(),
@@ -1007,22 +987,22 @@ const layoutProps = {
1007
987
  maxWidth: sizeValue.optional(),
1008
988
  minHeight: sizeValue.optional(),
1009
989
  maxHeight: sizeValue.optional(),
1010
- flex: zod.z.number().optional(),
990
+ flex: zod.number().optional(),
1011
991
  weight: weightProp,
1012
- aspectRatio: zod.z.string().optional(),
1013
- scrollable: zod.z.boolean().optional(),
1014
- clip: zod.z.boolean().optional(),
1015
- shadow: zod.z.boolean().optional(),
1016
- inline: zod.z.boolean().optional(),
1017
- role: zod.z.string().optional().describe("ARIA role"),
1018
- flush: zod.z.boolean().optional().describe("No padding"),
992
+ aspectRatio: zod.string().optional(),
993
+ scrollable: zod.boolean().optional(),
994
+ clip: zod.boolean().optional(),
995
+ shadow: zod.boolean().optional(),
996
+ inline: zod.boolean().optional(),
997
+ role: zod.string().optional().describe("ARIA role"),
998
+ flush: zod.boolean().optional().describe("No padding"),
1019
999
  minSize: sizeValue.optional().describe("Minimum width and height"),
1020
1000
  maxSize: sizeValue.optional().describe("Maximum width and height"),
1021
- disableAutoSpacing: zod.z.boolean().optional().describe("No default gap between children")
1001
+ disableAutoSpacing: zod.boolean().optional().describe("No default gap between children")
1022
1002
  };
1023
- const layoutSchema = zod.z.object(layoutProps);
1003
+ const layoutSchema = zod.object(layoutProps);
1024
1004
  /** The arguments of a click or visibility event: none. */
1025
- const NO_ARGS$3 = zod.z.object({});
1005
+ const NO_ARGS$3 = zod.object({});
1026
1006
  /**
1027
1007
  * The `onVisible` event of every container: sent once, the first time the
1028
1008
  * container scrolls into view.
@@ -1033,24 +1013,24 @@ const VISIBLE_EVENT = { onVisible: {
1033
1013
  } };
1034
1014
  /** The slot of every container: a list of children or a template. */
1035
1015
  const CHILDREN_SLOT = { children: "multiple" };
1036
- const boxSchema = zod.z.object({
1016
+ const boxSchema = zod.object({
1037
1017
  ...layoutProps,
1038
- direction: zod.z.enum(["col", "row"]).optional().describe("Default \"col\"")
1018
+ direction: zod.enum(["col", "row"]).optional().describe("Default \"col\"")
1039
1019
  });
1040
- const gridSchema = zod.z.object({
1020
+ const gridSchema = zod.object({
1041
1021
  ...layoutProps,
1042
- columns: zod.z.union([zod.z.number(), zod.z.string()]).optional().describe("Column count or CSS template. Default 2"),
1022
+ columns: zod.union([zod.number(), zod.string()]).optional().describe("Column count or CSS template. Default 2"),
1043
1023
  minChildWidth: sizeValue.optional(),
1044
- rows: zod.z.union([zod.z.number(), zod.z.string()]).optional()
1024
+ rows: zod.union([zod.number(), zod.string()]).optional()
1045
1025
  });
1046
- const gridItemSchema = zod.z.object({
1026
+ const gridItemSchema = zod.object({
1047
1027
  ...layoutProps,
1048
- span: zod.z.number().optional(),
1049
- rowSpan: zod.z.number().optional()
1028
+ span: zod.number().optional(),
1029
+ rowSpan: zod.number().optional()
1050
1030
  });
1051
- const cardSchema = zod.z.object({
1031
+ const cardSchema = zod.object({
1052
1032
  ...layoutProps,
1053
- variant: zod.z.enum([
1033
+ variant: zod.enum([
1054
1034
  "default",
1055
1035
  "outline",
1056
1036
  "section",
@@ -1058,44 +1038,44 @@ const cardSchema = zod.z.object({
1058
1038
  "elevated",
1059
1039
  "transparent"
1060
1040
  ]).optional(),
1061
- shadowStyle: zod.z.enum([
1041
+ shadowStyle: zod.enum([
1062
1042
  "none",
1063
1043
  "sm",
1064
1044
  "md"
1065
1045
  ]).optional().describe("Overrides the shadow of the variant"),
1066
- size: zod.z.enum([
1046
+ size: zod.enum([
1067
1047
  "sm",
1068
1048
  "md",
1069
1049
  "lg"
1070
1050
  ]).optional().describe("The padding preset: 8, 16 or 24px. Default \"md\"")
1071
1051
  });
1072
- const flowSchema = zod.z.object({
1052
+ const flowSchema = zod.object({
1073
1053
  ...layoutProps,
1074
- columns: zod.z.number().optional(),
1075
- rows: zod.z.number().optional(),
1076
- layout: zod.z.enum(["pack", "fixed"]).optional().describe("Default \"pack\"")
1054
+ columns: zod.number().optional(),
1055
+ rows: zod.number().optional(),
1056
+ layout: zod.enum(["pack", "fixed"]).optional().describe("Default \"pack\"")
1077
1057
  });
1078
- const flowItemSchema = zod.z.object({
1058
+ const flowItemSchema = zod.object({
1079
1059
  ...layoutProps,
1080
- span: zod.z.number().optional(),
1081
- rowSpan: zod.z.number().optional(),
1082
- aspectRatio: zod.z.string().optional().describe("Default \"1 / 1\""),
1083
- aspectMode: zod.z.enum(["soft", "fixed"]).optional()
1060
+ span: zod.number().optional(),
1061
+ rowSpan: zod.number().optional(),
1062
+ aspectRatio: zod.string().optional().describe("Default \"1 / 1\""),
1063
+ aspectMode: zod.enum(["soft", "fixed"]).optional()
1084
1064
  });
1085
- const carouselSchema = zod.z.object({
1065
+ const carouselSchema = zod.object({
1086
1066
  ...layoutProps,
1087
- label: zod.z.string().optional().describe("A short name of the carousel for screen readers"),
1088
- visibleItems: zod.z.number().optional(),
1089
- showArrows: zod.z.boolean().optional().describe("Default true"),
1090
- activeIndex: zod.z.number().optional().describe("The index of the slide in view. Bind it with { \"@path\": \"/x\" } to read or set it"),
1091
- previousLabel: zod.z.string().optional().describe("Default \"Previous\""),
1092
- nextLabel: zod.z.string().optional().describe("Default \"Next\""),
1093
- snap: zod.z.enum([
1067
+ label: zod.string().optional().describe("A short name of the carousel for screen readers"),
1068
+ visibleItems: zod.number().optional(),
1069
+ showArrows: zod.boolean().optional().describe("Default true"),
1070
+ activeIndex: zod.number().optional().describe("The index of the slide in view. Bind it with { \"@path\": \"/x\" } to read or set it"),
1071
+ previousLabel: zod.string().optional().describe("Default \"Previous\""),
1072
+ nextLabel: zod.string().optional().describe("Default \"Next\""),
1073
+ snap: zod.enum([
1094
1074
  "none",
1095
1075
  "proximity",
1096
1076
  "mandatory"
1097
1077
  ]).optional(),
1098
- snapAlign: zod.z.enum([
1078
+ snapAlign: zod.enum([
1099
1079
  "start",
1100
1080
  "center",
1101
1081
  "end"
@@ -1106,31 +1086,31 @@ const CAROUSEL_MEDIA_SIZES = [
1106
1086
  "md",
1107
1087
  "lg"
1108
1088
  ];
1109
- const carouselMediaItemSchema = zod.z.object({
1089
+ const carouselMediaItemSchema = zod.object({
1110
1090
  ...layoutProps,
1111
- url: zod.z.string().describe("Image URL"),
1112
- description: zod.z.string().optional().describe("What the image shows, for screen readers"),
1113
- size: zod.z.enum(CAROUSEL_MEDIA_SIZES).optional().describe("The width: \"sm\" 160px, \"md\" 240px, \"lg\" 320px. Default \"md\""),
1114
- aspectRatio: zod.z.string().optional().describe("Default \"4 / 3\""),
1115
- href: zod.z.string().optional().describe("Opens this URL in a new tab"),
1116
- lightbox: zod.z.boolean().optional().describe("Default true: a click opens all slides full-screen")
1091
+ url: zod.string().describe("Image URL"),
1092
+ description: zod.string().optional().describe("What the image shows, for screen readers"),
1093
+ size: zod.enum(CAROUSEL_MEDIA_SIZES).optional().describe("The width: \"sm\" 160px, \"md\" 240px, \"lg\" 320px. Default \"md\""),
1094
+ aspectRatio: zod.string().optional().describe("Default \"4 / 3\""),
1095
+ href: zod.string().optional().describe("Opens this URL in a new tab"),
1096
+ lightbox: zod.boolean().optional().describe("Default true: a click opens all slides full-screen")
1117
1097
  });
1118
- const spacerSchema = zod.z.object({ minSize: sizeValue.optional() });
1119
- const tabsSchema = zod.z.object({
1120
- tabs: zod.z.array(zod.z.object({
1121
- title: zod.z.string().describe("The tab title"),
1098
+ const spacerSchema = zod.object({ minSize: sizeValue.optional() });
1099
+ const tabsSchema = zod.object({
1100
+ tabs: zod.array(zod.object({
1101
+ title: zod.string().describe("The tab title"),
1122
1102
  child: child("The id of the panel component")
1123
1103
  })).describe("One entry per tab"),
1124
- selectedIndex: zod.z.number().optional().describe("The open tab. Default 0. Bind it with { \"@path\": \"/x\" } to read it"),
1104
+ selectedIndex: zod.number().optional().describe("The open tab. Default 0. Bind it with { \"@path\": \"/x\" } to read it"),
1125
1105
  weight: weightProp
1126
1106
  });
1127
- const dividerSchema = zod.z.object({
1128
- axis: zod.z.enum(["horizontal", "vertical"]).optional().describe("Default \"horizontal\""),
1107
+ const dividerSchema = zod.object({
1108
+ axis: zod.enum(["horizontal", "vertical"]).optional().describe("Default \"horizontal\""),
1129
1109
  weight: weightProp,
1130
- color: zod.z.enum(BORDER_COLORS).optional(),
1131
- size: zod.z.number().optional(),
1110
+ color: zod.enum(BORDER_COLORS).optional(),
1111
+ size: zod.number().optional(),
1132
1112
  spacing: sizeValue.optional(),
1133
- flush: zod.z.boolean().optional()
1113
+ flush: zod.boolean().optional()
1134
1114
  });
1135
1115
  const ALIGN_CSS$1 = {
1136
1116
  start: "flex-start",
@@ -1865,7 +1845,7 @@ const layoutComponents = {
1865
1845
  },
1866
1846
  Row: {
1867
1847
  component: Row,
1868
- description: "A horizontal flex container. For a label and value pair, use a Row with justify \"spaceBetween\": a Caption on the left and a Text with fontWeight \"medium\" on the right. Put buttons in a Row at the bottom of a Card: one Button with variant \"primary\", and the default or \"borderless\" for the others.",
1848
+ description: "A horizontal flex container. Label and value pair: justify \"spaceBetween\", a Caption left and a Text with fontWeight \"medium\" right. Buttons go in a Row at the bottom of a Card: one variant \"primary\", the others default or \"borderless\".",
1869
1849
  props: layoutSchema,
1870
1850
  events: VISIBLE_EVENT,
1871
1851
  slots: CHILDREN_SLOT
@@ -1886,7 +1866,7 @@ const layoutComponents = {
1886
1866
  },
1887
1867
  Card: {
1888
1868
  component: Card,
1889
- description: "A bordered, padded container, only for an interactive panel (controls, a form, a configurator). Tables, charts and text do not need one. Give it a Title and a Caption. Separate the groups in it with a Divider or the plain gap, never with a nested Card or a bordered Box. Variant \"section\" is a heading and content without a box. Variant \"outline\" always has a box. In markdown mode, a Card without controls renders as \"section\" unless it sets variant or border.",
1869
+ description: "A bordered panel, only for an interactive panel (controls, a form, a configurator); tables, charts and text need none. Give it a Title and a Caption. Separate groups with a Divider or the gap, never a nested Card or bordered Box. Variant \"section\": no box; \"outline\": always a box. In markdown mode, without controls it renders as \"section\" unless variant or border is set.",
1890
1870
  props: cardSchema,
1891
1871
  events: VISIBLE_EVENT,
1892
1872
  slots: {
@@ -1910,7 +1890,7 @@ const layoutComponents = {
1910
1890
  },
1911
1891
  Carousel: {
1912
1892
  component: Carousel,
1913
- description: "A row that scrolls horizontally and snaps to its slides, with previous and next arrows. Put CarouselItem or CarouselMediaItem children in it. Bind activeIndex with { \"@path\": \"/x\" } to read or set the slide in view.",
1893
+ description: "A horizontally scrolling row that snaps to its CarouselItem or CarouselMediaItem children, with arrows. Bind activeIndex to read or set the slide in view.",
1914
1894
  props: carouselSchema,
1915
1895
  events: VISIBLE_EVENT,
1916
1896
  slots: CHILDREN_SLOT,
@@ -1925,7 +1905,7 @@ const layoutComponents = {
1925
1905
  },
1926
1906
  CarouselMediaItem: {
1927
1907
  component: CarouselMediaItem,
1928
- description: "A slide of a Carousel with an image on top and its children (a Caption, a Text) under it. size \"sm\" is 160px, \"md\" 240px (default), \"lg\" 320px wide. A click on the image opens all slides full-screen, unless href or onClick is set.",
1908
+ description: "A Carousel slide: an image with its children (a Caption, a Text) under it. size \"sm\" 160px, \"md\" 240px (default), \"lg\" 320px wide. A click opens all slides full-screen, unless href or onClick is set.",
1929
1909
  props: carouselMediaItemSchema,
1930
1910
  events: {
1931
1911
  ...VISIBLE_EVENT,
@@ -2113,18 +2093,18 @@ function Markdown({ text, streaming = false }) {
2113
2093
 
2114
2094
  //#endregion
2115
2095
  //#region src/generative-ui/standard/media.tsx
2116
- const NO_ARGS$2 = zod.z.object({});
2117
- const colorProp$1 = zod.z.string().optional();
2096
+ const NO_ARGS$2 = zod.object({});
2097
+ const colorProp$1 = zod.string().optional();
2118
2098
  const ICON_SIZES = [
2119
2099
  "sm",
2120
2100
  "md",
2121
2101
  "lg",
2122
2102
  "xl"
2123
2103
  ];
2124
- const imageSchema = zod.z.object({
2125
- url: zod.z.string().describe("Image URL"),
2126
- description: zod.z.string().optional().describe("What the image shows, for screen readers. Leave it unset only for a decorative image"),
2127
- variant: zod.z.enum([
2104
+ const imageSchema = zod.object({
2105
+ url: zod.string().describe("Image URL"),
2106
+ description: zod.string().optional().describe("What the image shows, for screen readers. Leave it unset only for a decorative image"),
2107
+ variant: zod.enum([
2128
2108
  "icon",
2129
2109
  "avatar",
2130
2110
  "smallFeature",
@@ -2133,8 +2113,8 @@ const imageSchema = zod.z.object({
2133
2113
  "header"
2134
2114
  ]).optional().describe("The size: \"icon\" 24px, \"avatar\" 40px round, \"smallFeature\" 160px wide, \"largeFeature\" and \"header\" full width. Default \"mediumFeature\": the natural size"),
2135
2115
  weight: weightProp,
2136
- aspectRatio: zod.z.string().optional(),
2137
- fit: zod.z.enum([
2116
+ aspectRatio: zod.string().optional(),
2117
+ fit: zod.enum([
2138
2118
  "cover",
2139
2119
  "contain",
2140
2120
  "fill",
@@ -2148,128 +2128,128 @@ const imageSchema = zod.z.object({
2148
2128
  maxHeight: sizeValue.optional(),
2149
2129
  minWidth: sizeValue.optional(),
2150
2130
  minHeight: sizeValue.optional(),
2151
- background: zod.z.string().optional(),
2152
- frame: zod.z.boolean().optional(),
2153
- position: zod.z.string().optional().describe("CSS object-position, for example \"top\" or \"50% 20%\""),
2154
- hideOnFailure: zod.z.boolean().optional().describe("Default false"),
2155
- fallback: zod.z.string().optional().describe("Text shown in place of the image when it does not load"),
2156
- hoverZoom: zod.z.boolean().optional().describe("A slight zoom on hover"),
2157
- lightbox: zod.z.boolean().optional().describe("Default true: a click opens the image full-screen"),
2158
- actionOverlay: zod.z.object({
2159
- label: zod.z.string(),
2160
- icon: zod.z.string().optional().describe("Lucide icon name"),
2161
- href: zod.z.string().optional().describe("Opens this URL in a new tab")
2131
+ background: zod.string().optional(),
2132
+ frame: zod.boolean().optional(),
2133
+ position: zod.string().optional().describe("CSS object-position, for example \"top\" or \"50% 20%\""),
2134
+ hideOnFailure: zod.boolean().optional().describe("Default false"),
2135
+ fallback: zod.string().optional().describe("Text shown in place of the image when it does not load"),
2136
+ hoverZoom: zod.boolean().optional().describe("A slight zoom on hover"),
2137
+ lightbox: zod.boolean().optional().describe("Default true: a click opens the image full-screen"),
2138
+ actionOverlay: zod.object({
2139
+ label: zod.string(),
2140
+ icon: zod.string().optional().describe("Lucide icon name"),
2141
+ href: zod.string().optional().describe("Opens this URL in a new tab")
2162
2142
  }).optional().describe("A button over the bottom-right corner of the image. Without href, it sends onOverlayClick")
2163
2143
  });
2164
- const iconSchema = zod.z.object({
2165
- name: zod.z.union([zod.z.string(), zod.z.object({ svgPath: zod.z.string() })]).describe("A Lucide icon name in kebab-case (\"arrow-right\"), an A2UI icon name (\"arrowBack\"), or { \"svgPath\" } on a 24px grid"),
2166
- label: zod.z.string().optional().describe("What the icon means, for screen readers. Leave it unset when text next to the icon says the same"),
2167
- size: zod.z.union([zod.z.enum(ICON_SIZES), zod.z.number()]).optional().describe("Default \"md\""),
2144
+ const iconSchema = zod.object({
2145
+ name: zod.union([zod.string(), zod.object({ svgPath: zod.string() })]).describe("A Lucide icon name in kebab-case (\"arrow-right\"), an A2UI icon name (\"arrowBack\"), or { \"svgPath\" } on a 24px grid"),
2146
+ label: zod.string().optional().describe("What the icon means, for screen readers. Leave it unset when text next to the icon says the same"),
2147
+ size: zod.union([zod.enum(ICON_SIZES), zod.number()]).optional().describe("Default \"md\""),
2168
2148
  color: colorProp$1,
2169
- inline: zod.z.boolean().optional().describe("Default false"),
2170
- strokeWeight: zod.z.enum(WEIGHTS).optional().describe("The stroke width"),
2149
+ inline: zod.boolean().optional().describe("Default false"),
2150
+ strokeWeight: zod.enum(WEIGHTS).optional().describe("The stroke width"),
2171
2151
  weight: weightProp
2172
2152
  });
2173
- const faviconSchema = zod.z.object({
2174
- url: zod.z.string(),
2175
- alt: zod.z.string().optional(),
2176
- size: zod.z.number().optional().describe("Pixels. Default 16"),
2177
- inline: zod.z.boolean().optional().describe("Default false"),
2178
- frame: zod.z.boolean().optional().describe("Default false")
2153
+ const faviconSchema = zod.object({
2154
+ url: zod.string(),
2155
+ alt: zod.string().optional(),
2156
+ size: zod.number().optional().describe("Pixels. Default 16"),
2157
+ inline: zod.boolean().optional().describe("Default false"),
2158
+ frame: zod.boolean().optional().describe("Default false")
2179
2159
  });
2180
- const svgSchema = zod.z.object({
2181
- viewBox: zod.z.string().optional(),
2182
- label: zod.z.string().optional().describe("What the drawing shows, for screen readers. Leave it unset for a decorative drawing"),
2160
+ const svgSchema = zod.object({
2161
+ viewBox: zod.string().optional(),
2162
+ label: zod.string().optional().describe("What the drawing shows, for screen readers. Leave it unset for a decorative drawing"),
2183
2163
  width: sizeValue.optional(),
2184
2164
  height: sizeValue.optional(),
2185
2165
  size: sizeValue.optional(),
2186
2166
  color: colorProp$1.describe("Default \"prose\""),
2187
2167
  fill: colorProp$1.describe("Default \"currentColor\""),
2188
2168
  stroke: colorProp$1,
2189
- strokeWidth: zod.z.number().optional(),
2190
- strokeLinecap: zod.z.enum([
2169
+ strokeWidth: zod.number().optional(),
2170
+ strokeLinecap: zod.enum([
2191
2171
  "butt",
2192
2172
  "round",
2193
2173
  "square"
2194
2174
  ]).optional(),
2195
- strokeLinejoin: zod.z.enum([
2175
+ strokeLinejoin: zod.enum([
2196
2176
  "miter",
2197
2177
  "round",
2198
2178
  "bevel"
2199
2179
  ]).optional(),
2200
- preserveAspectRatio: zod.z.string().optional(),
2201
- paths: zod.z.array(zod.z.object({
2202
- d: zod.z.string(),
2180
+ preserveAspectRatio: zod.string().optional(),
2181
+ paths: zod.array(zod.object({
2182
+ d: zod.string(),
2203
2183
  fill: colorProp$1,
2204
2184
  stroke: colorProp$1,
2205
- strokeWidth: zod.z.number().optional()
2185
+ strokeWidth: zod.number().optional()
2206
2186
  })).optional(),
2207
- circles: zod.z.array(zod.z.object({
2208
- cx: zod.z.number(),
2209
- cy: zod.z.number(),
2210
- r: zod.z.number(),
2187
+ circles: zod.array(zod.object({
2188
+ cx: zod.number(),
2189
+ cy: zod.number(),
2190
+ r: zod.number(),
2211
2191
  fill: colorProp$1,
2212
2192
  stroke: colorProp$1
2213
2193
  })).optional(),
2214
- rects: zod.z.array(zod.z.object({
2215
- x: zod.z.number(),
2216
- y: zod.z.number(),
2217
- width: zod.z.number(),
2218
- height: zod.z.number(),
2219
- rx: zod.z.number().optional(),
2194
+ rects: zod.array(zod.object({
2195
+ x: zod.number(),
2196
+ y: zod.number(),
2197
+ width: zod.number(),
2198
+ height: zod.number(),
2199
+ rx: zod.number().optional(),
2220
2200
  fill: colorProp$1,
2221
2201
  stroke: colorProp$1
2222
2202
  })).optional(),
2223
- lines: zod.z.array(zod.z.object({
2224
- x1: zod.z.number(),
2225
- y1: zod.z.number(),
2226
- x2: zod.z.number(),
2227
- y2: zod.z.number(),
2203
+ lines: zod.array(zod.object({
2204
+ x1: zod.number(),
2205
+ y1: zod.number(),
2206
+ x2: zod.number(),
2207
+ y2: zod.number(),
2228
2208
  stroke: colorProp$1
2229
2209
  })).optional(),
2230
- texts: zod.z.array(zod.z.object({
2231
- x: zod.z.number(),
2232
- y: zod.z.number(),
2233
- text: zod.z.string(),
2234
- size: zod.z.number().optional(),
2210
+ texts: zod.array(zod.object({
2211
+ x: zod.number(),
2212
+ y: zod.number(),
2213
+ text: zod.string(),
2214
+ size: zod.number().optional(),
2235
2215
  fill: colorProp$1,
2236
- anchor: zod.z.enum([
2216
+ anchor: zod.enum([
2237
2217
  "start",
2238
2218
  "middle",
2239
2219
  "end"
2240
2220
  ]).optional()
2241
2221
  })).optional()
2242
2222
  });
2243
- const captionTrack = zod.z.object({
2244
- url: zod.z.string().describe("The URL of a WebVTT file"),
2245
- language: zod.z.string().optional().describe("BCP 47, for example \"en\""),
2246
- label: zod.z.string().optional().describe("Shown in the captions menu"),
2247
- kind: zod.z.enum([
2223
+ const captionTrack = zod.object({
2224
+ url: zod.string().describe("The URL of a WebVTT file"),
2225
+ language: zod.string().optional().describe("BCP 47, for example \"en\""),
2226
+ label: zod.string().optional().describe("Shown in the captions menu"),
2227
+ kind: zod.enum([
2248
2228
  "subtitles",
2249
2229
  "captions",
2250
2230
  "descriptions"
2251
2231
  ]).optional()
2252
2232
  });
2253
- const videoSchema = zod.z.object({
2254
- url: zod.z.string().describe("The URL of a video file, or of a YouTube video or short. A page on another video site shows as a link"),
2255
- posterUrl: zod.z.string().optional().describe("The image shown before the video plays"),
2256
- title: zod.z.string().optional().describe("Names the video for screen readers"),
2257
- captions: zod.z.array(captionTrack).optional().describe("Caption tracks of a video file"),
2258
- aspectRatio: zod.z.string().optional().describe("Default \"16 / 9\""),
2233
+ const videoSchema = zod.object({
2234
+ url: zod.string().describe("The URL of a video file, or of a YouTube video or short. A page on another video site shows as a link"),
2235
+ posterUrl: zod.string().optional().describe("The image shown before the video plays"),
2236
+ title: zod.string().optional().describe("Names the video for screen readers"),
2237
+ captions: zod.array(captionTrack).optional().describe("Caption tracks of a video file"),
2238
+ aspectRatio: zod.string().optional().describe("Default \"16 / 9\""),
2259
2239
  width: sizeValue.optional().describe("Default \"100%\""),
2260
2240
  maxWidth: sizeValue.optional().describe("Default \"100%\""),
2261
2241
  weight: weightProp
2262
2242
  });
2263
- const audioPlayerSchema = zod.z.object({
2264
- url: zod.z.string().describe("The URL of the audio file"),
2265
- description: zod.z.string().optional().describe("A title or summary of the audio, shown above the player"),
2243
+ const audioPlayerSchema = zod.object({
2244
+ url: zod.string().describe("The URL of the audio file"),
2245
+ description: zod.string().optional().describe("A title or summary of the audio, shown above the player"),
2266
2246
  weight: weightProp
2267
2247
  });
2268
- const htmlViewSchema = zod.z.object({
2269
- html: zod.z.string(),
2248
+ const htmlViewSchema = zod.object({
2249
+ html: zod.string(),
2270
2250
  height: sizeValue.optional().describe("Pixels when a number. Default 360"),
2271
2251
  width: sizeValue.optional().describe("Default \"100%\""),
2272
- title: zod.z.string().optional()
2252
+ title: zod.string().optional()
2273
2253
  });
2274
2254
  /** Pixels when a number, raw CSS when a string. */
2275
2255
  function px$1(value) {
@@ -2292,10 +2272,14 @@ const ICON_STROKE = {
2292
2272
  function kebabToPascal(name) {
2293
2273
  return name.split(/[-_\s]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
2294
2274
  }
2275
+ /** "ArrowRight" gives "arrow-right", as Lucide names its icon classes. */
2276
+ function pascalToKebab(name) {
2277
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
2278
+ }
2295
2279
  let lucidePromise = null;
2296
2280
  let lucideIcons = null;
2297
2281
  function loadLucideIcons() {
2298
- lucidePromise ??= import("lucide-react").then((module) => {
2282
+ lucidePromise ??= import("lucide").then((module) => {
2299
2283
  const icons = module.icons;
2300
2284
  lucideIcons = icons;
2301
2285
  return icons;
@@ -2303,9 +2287,9 @@ function loadLucideIcons() {
2303
2287
  return lucidePromise;
2304
2288
  }
2305
2289
  /**
2306
- * lucide-react has about 1,500 icons. A static import of its `icons` map
2307
- * puts all of them in every bundle and makes module load slow. So the map
2308
- * loads once, on first use, and the icons show when it is there.
2290
+ * Lucide has about 1,500 icons. A static import of its `icons` map puts all
2291
+ * of them in every bundle and makes module load slow. So the map loads once,
2292
+ * on first use, and the icons show when it is there.
2309
2293
  */
2310
2294
  function useLucideIcons() {
2311
2295
  const [icons, setIcons] = (0, react.useState)(lucideIcons);
@@ -2321,6 +2305,20 @@ function useLucideIcons() {
2321
2305
  }, []);
2322
2306
  return icons;
2323
2307
  }
2308
+ /** The icon for a kebab-case or PascalCase name, or `null` when there is none. */
2309
+ function findLucideIcon(icons, name) {
2310
+ const pascalName = kebabToPascal(name);
2311
+ const key = pascalName in icons ? pascalName : name in icons ? name : null;
2312
+ if (key === null) return null;
2313
+ const nodes = icons[key].map(([tag, attributes]) => ({
2314
+ tag,
2315
+ attributes
2316
+ }));
2317
+ return {
2318
+ lucideName: pascalToKebab(key),
2319
+ nodes
2320
+ };
2321
+ }
2324
2322
  /**
2325
2323
  * A lucide icon by kebab-case (or PascalCase) name. An unknown name renders
2326
2324
  * nothing. Without a `label`, the icon is hidden from screen readers.
@@ -2333,18 +2331,20 @@ function useLucideIcons() {
2333
2331
  function LucideIcon({ name, label, description, size = "md", color, weight, inline, style }) {
2334
2332
  const icons = useLucideIcons();
2335
2333
  if (!name || !icons) return null;
2336
- const IconComponent = icons[kebabToPascal(name)] ?? icons[name];
2337
- if (!IconComponent) return null;
2334
+ const icon = findLucideIcon(icons, name);
2335
+ if (!icon) return null;
2338
2336
  const pixels = typeof size === "number" ? size : inline ? "1em" : ICON_PX$1[size];
2339
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconComponent, {
2340
- ...label === void 0 ? { "aria-hidden": true } : {
2341
- role: "img",
2342
- "aria-label": label,
2343
- "aria-description": description
2344
- },
2337
+ const a11y = label === void 0 ? { "aria-hidden": true } : {
2338
+ role: "img",
2339
+ "aria-label": label,
2340
+ "aria-description": description
2341
+ };
2342
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_MarkdownSurfaces.IconSvg, {
2343
+ lucideName: icon.lucideName,
2344
+ nodes: icon.nodes,
2345
+ ...a11y,
2345
2346
  focusable: "false",
2346
- width: pixels,
2347
- height: pixels,
2347
+ size: pixels,
2348
2348
  color: textColor(color) ?? "currentColor",
2349
2349
  strokeWidth: weight ? ICON_STROKE[weight] : void 0,
2350
2350
  style: {
@@ -3000,7 +3000,7 @@ const mediaComponents = {
3000
3000
  },
3001
3001
  Video: {
3002
3002
  component: Video,
3003
- description: "A video player for a video file URL (with optional captions), or a YouTube link in privacy-enhanced mode: the poster shows first, and the player loads when the user presses play. A page on another video site shows as a link to it. Set title to name the video.",
3003
+ description: "A video file URL (optional captions) or a YouTube link, privacy-enhanced: the poster shows until play. Other video sites show as a link. Set title.",
3004
3004
  props: videoSchema
3005
3005
  },
3006
3006
  AudioPlayer: {
@@ -3023,33 +3023,33 @@ const mediaComponents = {
3023
3023
  * grids). Each one is a single component, so the model places it with one
3024
3024
  * object instead of eight primitives.
3025
3025
  */
3026
- const NO_ARGS$1 = zod.z.object({});
3027
- const text = (description) => zod.z.string().optional().describe(description);
3028
- const linkCardSchema = zod.z.object({
3029
- href: zod.z.string().describe("The URL (http, https)"),
3030
- title: zod.z.string().describe("The page title"),
3026
+ const NO_ARGS$1 = zod.object({});
3027
+ const text = (description) => zod.string().optional().describe(description);
3028
+ const linkCardSchema = zod.object({
3029
+ href: zod.string().describe("The URL (http, https)"),
3030
+ title: zod.string().describe("The page title"),
3031
3031
  description: text("One or two lines"),
3032
3032
  image: text("A thumbnail URL"),
3033
3033
  domain: text("Shown next to the favicon. Default: the host of href"),
3034
- favicon: zod.z.boolean().optional().describe("Default true")
3034
+ favicon: zod.boolean().optional().describe("Default true")
3035
3035
  });
3036
- const citationSchema = zod.z.object({
3037
- index: zod.z.number().optional().describe("The marker number. Default 1"),
3036
+ const citationSchema = zod.object({
3037
+ index: zod.number().optional().describe("The marker number. Default 1"),
3038
3038
  label: text("Marker text instead of the number, for example a domain"),
3039
3039
  title: text("The source title"),
3040
3040
  url: text("The source URL (http, https)"),
3041
3041
  snippet: text("The quoted passage, one or two lines"),
3042
3042
  source: text("The publisher or domain. Default: the host of url")
3043
3043
  });
3044
- const followUpItem = zod.z.union([zod.z.string(), zod.z.object({
3045
- label: zod.z.string(),
3044
+ const followUpItem = zod.union([zod.string(), zod.object({
3045
+ label: zod.string(),
3046
3046
  message: text("The text sent when the user clicks. Default: label")
3047
3047
  })]);
3048
- const followUpSchema = zod.z.object({
3049
- items: zod.z.array(followUpItem).optional().describe("Strings or { \"label\", \"message\"? }, or { \"@path\": \"/x\" }"),
3048
+ const followUpSchema = zod.object({
3049
+ items: zod.array(followUpItem).optional(),
3050
3050
  title: text("A caption above the pills")
3051
3051
  });
3052
- const followUpArgs = zod.z.object({ message: zod.z.string().describe("The message of the clicked pill") });
3052
+ const followUpArgs = zod.object({ message: zod.string().describe("The message of the clicked pill") });
3053
3053
  const BADGE_COLORS = [
3054
3054
  "secondary",
3055
3055
  "success",
@@ -3058,47 +3058,47 @@ const BADGE_COLORS = [
3058
3058
  "info",
3059
3059
  "discovery"
3060
3060
  ];
3061
- const cardAction = zod.z.object({
3062
- label: zod.z.string(),
3061
+ const cardAction = zod.object({
3062
+ label: zod.string(),
3063
3063
  href: text("Opens this URL in a new tab"),
3064
- variant: zod.z.enum([
3064
+ variant: zod.enum([
3065
3065
  "solid",
3066
3066
  "soft",
3067
3067
  "outline",
3068
3068
  "ghost"
3069
3069
  ]).optional()
3070
3070
  });
3071
- const entityCardSchema = zod.z.object({
3072
- title: zod.z.string().describe("The name"),
3071
+ const entityCardSchema = zod.object({
3072
+ title: zod.string().describe("The name"),
3073
3073
  subtitle: text("A second line, for example the brand or category"),
3074
3074
  description: text("Up to three lines"),
3075
3075
  image: text("An image URL"),
3076
- imageAspectRatio: zod.z.string().optional().describe("Default \"4 / 3\""),
3076
+ imageAspectRatio: zod.string().optional().describe("Default \"4 / 3\""),
3077
3077
  meta: text("A short fact line, for example \"$29 / month\" or \"Open until 22:00\""),
3078
- badge: zod.z.object({
3079
- label: zod.z.string(),
3080
- color: zod.z.enum(BADGE_COLORS).optional()
3078
+ badge: zod.object({
3079
+ label: zod.string(),
3080
+ color: zod.enum(BADGE_COLORS).optional()
3081
3081
  }).optional(),
3082
- rating: zod.z.number().optional().describe("0 to 5, shown as stars"),
3083
- ratingCount: zod.z.number().optional().describe("The number of ratings"),
3082
+ rating: zod.number().optional().describe("0 to 5, shown as stars"),
3083
+ ratingCount: zod.number().optional().describe("The number of ratings"),
3084
3084
  href: text("Opens this URL in a new tab when the user clicks the card"),
3085
- actions: zod.z.array(cardAction).max(3).optional().describe("Up to three buttons. A button without href sends onAction with its label"),
3086
- layout: zod.z.enum(["vertical", "horizontal"]).optional().describe("Default \"vertical\". \"horizontal\" puts the image on the left"),
3085
+ actions: zod.array(cardAction).max(3).optional().describe("Up to three buttons. A button without href sends onAction with its label"),
3086
+ layout: zod.enum(["vertical", "horizontal"]).optional().describe("Default \"vertical\". \"horizontal\" puts the image on the left"),
3087
3087
  width: sizeValue.optional()
3088
3088
  });
3089
- const entityActionArgs = zod.z.object({ label: zod.z.string().describe("The label of the clicked button") });
3090
- const gridImage = zod.z.object({
3091
- url: zod.z.string(),
3092
- description: zod.z.string().optional().describe("What the image shows"),
3093
- caption: zod.z.string().optional(),
3089
+ const entityActionArgs = zod.object({ label: zod.string().describe("The label of the clicked button") });
3090
+ const gridImage = zod.object({
3091
+ url: zod.string(),
3092
+ description: zod.string().optional().describe("What the image shows"),
3093
+ caption: zod.string().optional(),
3094
3094
  href: text("Opens this URL instead of the full-screen view")
3095
3095
  });
3096
- const imageGridSchema = zod.z.object({
3097
- images: zod.z.array(gridImage).optional().describe("A list of { \"url\", \"description\"?, \"caption\"?, \"href\"? }, or { \"@path\": \"/x\" }"),
3098
- columns: zod.z.number().optional().describe("Default 3"),
3099
- aspectRatio: zod.z.string().optional().describe("Default \"1 / 1\""),
3096
+ const imageGridSchema = zod.object({
3097
+ images: zod.array(gridImage).optional(),
3098
+ columns: zod.number().optional().describe("Default 3"),
3099
+ aspectRatio: zod.string().optional().describe("Default \"1 / 1\""),
3100
3100
  gap: sizeValue.optional().describe("Default 2"),
3101
- layout: zod.z.enum(["grid", "bento"]).optional().describe("Default \"grid\". \"bento\" makes the first image twice as large")
3101
+ layout: zod.enum(["grid", "bento"]).optional().describe("Default \"grid\". \"bento\" makes the first image twice as large")
3102
3102
  });
3103
3103
  function FaviconImage({ host, size = 16 }) {
3104
3104
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
@@ -3674,7 +3674,7 @@ function ImageGrid(props) {
3674
3674
  const compositeComponents = {
3675
3675
  LinkCard: {
3676
3676
  component: LinkCard,
3677
- description: "A preview card of a URL: the favicon and domain, the title, a description and a thumbnail. A click opens the link in a new tab, or sends onClick when it is bound. Use it for sources, articles and products that have a page.",
3677
+ description: "A preview of a URL: favicon and domain, title, description, thumbnail. A click opens it in a new tab, or sends onClick when bound. For sources, articles and products with a page.",
3678
3678
  props: linkCardSchema,
3679
3679
  events: { onClick: {
3680
3680
  description: "Sent when the user clicks the card, instead of the link.",
@@ -3683,12 +3683,12 @@ const compositeComponents = {
3683
3683
  },
3684
3684
  Citation: {
3685
3685
  component: Citation,
3686
- description: "An inline source marker ([1]) that shows the source on hover or click: the title, a snippet and a link. Put it inline after the sentence it supports, as a child of a Text or in a Row.",
3686
+ description: "An inline source marker ([1]) showing title, snippet and link on hover or click. Put it right after the sentence it supports, as a child of a Text or in a Row.",
3687
3687
  props: citationSchema
3688
3688
  },
3689
3689
  FollowUp: {
3690
3690
  component: FollowUp,
3691
- description: "Suggested next prompts as pills. A click sends the message of the pill as the next turn of the user, with no event binding needed. Put it at the end of a surface, with two to four short items.",
3691
+ description: "Suggested next prompts as pills; a click sends the pill's message as the user's next turn, no event needed. At the end of a surface, two to four short items.",
3692
3692
  props: followUpSchema,
3693
3693
  events: { onFollowUp: {
3694
3694
  description: "Sent when the user clicks a pill. The args carry the message of the pill.",
@@ -3697,7 +3697,7 @@ const compositeComponents = {
3697
3697
  },
3698
3698
  EntityCard: {
3699
3699
  component: EntityCard,
3700
- description: "A card for one thing (a product, place, person or listing): an image, title, subtitle, description, a price or meta line, a badge, a rating and up to three buttons. href opens a page, and onClick is sent when it is bound. Use a Grid of EntityCards for several things.",
3700
+ description: "A card for one product, place, person or listing: image, title, subtitle, description, a price or meta line, badge, rating and up to three buttons. href opens a page; onClick is sent when bound. Use a Grid of them for several things.",
3701
3701
  props: entityCardSchema,
3702
3702
  events: {
3703
3703
  onClick: {
@@ -3719,13 +3719,13 @@ const compositeComponents = {
3719
3719
 
3720
3720
  //#endregion
3721
3721
  //#region src/generative-ui/standard/Chart.tsx
3722
- const chartSeries = zod.z.union([zod.z.string(), zod.z.object({
3723
- key: zod.z.string(),
3724
- label: zod.z.string().optional(),
3725
- color: zod.z.string().optional().describe("A text color token or a CSS color")
3722
+ const chartSeries = zod.union([zod.string(), zod.object({
3723
+ key: zod.string(),
3724
+ label: zod.string().optional(),
3725
+ color: zod.string().optional().describe("A text color token or a CSS color")
3726
3726
  })]);
3727
- const chartSchema = zod.z.object({
3728
- chartType: zod.z.enum([
3727
+ const chartSchema = zod.object({
3728
+ chartType: zod.enum([
3729
3729
  "bar",
3730
3730
  "line",
3731
3731
  "area",
@@ -3733,38 +3733,38 @@ const chartSchema = zod.z.object({
3733
3733
  "pie",
3734
3734
  "donut"
3735
3735
  ]).optional().describe("Default \"bar\""),
3736
- data: zod.z.array(zod.z.record(zod.z.string(), zod.z.unknown())).optional().describe("A list of objects, or { \"@path\": \"/x\" }"),
3737
- xKey: zod.z.string().optional().describe("The field of the category axis"),
3738
- series: zod.z.array(chartSeries).optional().describe("The value fields: strings or { \"key\", \"label\"?, \"color\"? }. Default: every number field except xKey"),
3739
- stacked: zod.z.boolean().optional(),
3740
- layout: zod.z.enum(["vertical", "horizontal"]).optional().describe("\"horizontal\" draws the bars from left to right. Default \"vertical\""),
3741
- yAxis: zod.z.object({
3742
- label: zod.z.string().optional(),
3743
- min: zod.z.number().optional(),
3744
- max: zod.z.number().optional(),
3745
- width: zod.z.number().optional().describe("Pixels")
3746
- }).optional().describe("The value axis configuration object: {label?: string, min?: number, max?: number, width?: number}. Example: {label: \"Revenue (USD)\", min: 0, max: 100}. In horizontal charts, label, min and max apply to the horizontal value axis, and width sets the width of the category axis on the left."),
3747
- showDots: zod.z.boolean().optional().describe("Point markers on a line or area"),
3748
- barRadius: zod.z.number().optional().describe("The corner radius of a bar, in pixels"),
3749
- innerRadius: zod.z.union([zod.z.number(), zod.z.string()]).optional().describe("Pie and donut"),
3750
- outerRadius: zod.z.union([zod.z.number(), zod.z.string()]).optional().describe("Pie and donut"),
3751
- startAngle: zod.z.number().optional().describe("Pie and donut. Default 90"),
3752
- endAngle: zod.z.number().optional().describe("Pie and donut. Default -270"),
3753
- cornerRadius: zod.z.number().optional().describe("The corners of a slice"),
3754
- paddingAngle: zod.z.number().optional().describe("The gap between slices"),
3755
- showLabelLines: zod.z.boolean().optional().describe("Leader lines of the slice labels. Default true"),
3756
- height: zod.z.number().optional().describe("Pixels. Default 240"),
3757
- showLegend: zod.z.boolean().optional().describe("Default true"),
3758
- showGrid: zod.z.boolean().optional().describe("Default true"),
3759
- showTooltip: zod.z.boolean().optional().describe("Default true"),
3760
- showValueLabels: zod.z.boolean().optional(),
3761
- format: zod.z.enum([
3736
+ data: zod.array(zod.record(zod.string(), zod.unknown())).optional(),
3737
+ xKey: zod.string().optional().describe("The field of the category axis"),
3738
+ series: zod.array(chartSeries).optional().describe("Default: every number field except xKey"),
3739
+ stacked: zod.boolean().optional(),
3740
+ layout: zod.enum(["vertical", "horizontal"]).optional().describe("\"horizontal\" draws the bars from left to right. Default \"vertical\""),
3741
+ yAxis: zod.object({
3742
+ label: zod.string().optional(),
3743
+ min: zod.number().optional(),
3744
+ max: zod.number().optional(),
3745
+ width: zod.number().optional().describe("Pixels")
3746
+ }).optional().describe("Example: {label: \"Revenue (USD)\", min: 0, max: 100}. In a horizontal chart it is the horizontal axis, and width sets the category axis width"),
3747
+ showDots: zod.boolean().optional().describe("Point markers on a line or area"),
3748
+ barRadius: zod.number().optional().describe("The corner radius of a bar, in pixels"),
3749
+ innerRadius: zod.union([zod.number(), zod.string()]).optional().describe("Pie and donut"),
3750
+ outerRadius: zod.union([zod.number(), zod.string()]).optional().describe("Pie and donut"),
3751
+ startAngle: zod.number().optional().describe("Pie and donut. Default 90"),
3752
+ endAngle: zod.number().optional().describe("Pie and donut. Default -270"),
3753
+ cornerRadius: zod.number().optional().describe("The corners of a slice"),
3754
+ paddingAngle: zod.number().optional().describe("The gap between slices"),
3755
+ showLabelLines: zod.boolean().optional().describe("Leader lines of the slice labels. Default true"),
3756
+ height: zod.number().optional().describe("Pixels. Default 240"),
3757
+ showLegend: zod.boolean().optional().describe("Default true"),
3758
+ showGrid: zod.boolean().optional().describe("Default true"),
3759
+ showTooltip: zod.boolean().optional().describe("Default true"),
3760
+ showValueLabels: zod.boolean().optional(),
3761
+ format: zod.enum([
3762
3762
  "number",
3763
3763
  "currency",
3764
3764
  "percent"
3765
- ]).optional().describe("Number formatting. With \"percent\", data values and axis min/max are fractions: 0.4 displays as 40%. For 0% to 10%, use min: 0 and max: 0.1."),
3766
- currency: zod.z.string().optional().describe("ISO code. Default \"USD\""),
3767
- title: zod.z.string().optional()
3765
+ ]).optional().describe("With \"percent\", data values and axis min/max are fractions: 0.4 shows as 40%; for 0% to 10%, use min: 0 and max: 0.1."),
3766
+ currency: zod.string().optional().describe("ISO code. Default \"USD\""),
3767
+ title: zod.string().optional()
3768
3768
  });
3769
3769
  const DEFAULT_HEIGHT = 240;
3770
3770
  /** Hides an element on screen. Screen readers still read it. */
@@ -4168,22 +4168,22 @@ function Chart(props) {
4168
4168
 
4169
4169
  //#endregion
4170
4170
  //#region src/generative-ui/standard/Map.tsx
4171
- const mapMarker = zod.z.object({
4172
- label: zod.z.string(),
4173
- lat: zod.z.number(),
4174
- lng: zod.z.number(),
4175
- category: zod.z.string().optional(),
4176
- icon: zod.z.string().optional()
4171
+ const mapMarker = zod.object({
4172
+ label: zod.string(),
4173
+ lat: zod.number(),
4174
+ lng: zod.number(),
4175
+ category: zod.string().optional(),
4176
+ icon: zod.string().optional()
4177
4177
  });
4178
- const mapSchema = zod.z.object({
4179
- markers: zod.z.array(mapMarker).optional().describe("A list of places, or { \"@path\": \"/x\" }"),
4180
- route: zod.z.boolean().optional().describe("Draws a line through the markers in order"),
4181
- selected: zod.z.string().optional().describe("The label of the selected marker. Bind it with { \"@path\": \"/x\" } to read the choice of the user"),
4182
- height: zod.z.number().optional().describe("Pixels. Default 240"),
4183
- zoom: zod.z.number().optional().describe("With two or more markers, only the highest zoom of the fit"),
4184
- center: zod.z.object({
4185
- lat: zod.z.number(),
4186
- lng: zod.z.number()
4178
+ const mapSchema = zod.object({
4179
+ markers: zod.array(mapMarker).optional(),
4180
+ route: zod.boolean().optional().describe("Draws a line through the markers in order"),
4181
+ selected: zod.string().optional().describe("The label of the selected marker. Bind it with { \"@path\": \"/x\" } to read the choice of the user"),
4182
+ height: zod.number().optional().describe("Pixels. Default 240"),
4183
+ zoom: zod.number().optional().describe("With two or more markers, only the highest zoom of the fit"),
4184
+ center: zod.object({
4185
+ lat: zod.number(),
4186
+ lng: zod.number()
4187
4187
  }).optional()
4188
4188
  });
4189
4189
  /**
@@ -4482,7 +4482,7 @@ function MapView(props) {
4482
4482
 
4483
4483
  //#endregion
4484
4484
  //#region src/generative-ui/standard/data.tsx
4485
- const cellAlign = zod.z.enum([
4485
+ const cellAlign = zod.enum([
4486
4486
  "start",
4487
4487
  "center",
4488
4488
  "end"
@@ -4491,85 +4491,85 @@ const cellAlign = zod.z.enum([
4491
4491
  * A table cell or column header that shows another component. `id` is an
4492
4492
  * alias of `componentId`.
4493
4493
  */
4494
- const tableComponentCell = zod.z.union([zod.z.object({ componentId: zod.z.string() }), zod.z.object({ id: zod.z.string() })]);
4495
- const tableColumn = zod.z.union([
4496
- zod.z.string(),
4497
- zod.z.object({
4498
- label: zod.z.string(),
4494
+ const tableComponentCell = zod.union([zod.object({ componentId: zod.string() }), zod.object({ id: zod.string() })]);
4495
+ const tableColumn = zod.union([
4496
+ zod.string(),
4497
+ zod.object({
4498
+ label: zod.string(),
4499
4499
  align: cellAlign,
4500
4500
  width: sizeValue.optional(),
4501
- componentId: zod.z.string().optional()
4501
+ componentId: zod.string().optional()
4502
4502
  }),
4503
4503
  tableComponentCell
4504
4504
  ]);
4505
- const tableSchema = zod.z.object({
4506
- caption: zod.z.string().optional().describe("A short name of the table for screen readers. It is not shown"),
4507
- columns: zod.z.array(tableColumn).optional().describe("Strings, { \"label\", \"align\"?, \"width\"?, \"componentId\"? } or { \"componentId\" }, or { \"@path\": \"/x\" }. Default []"),
4508
- rows: zod.z.array(zod.z.array(zod.z.unknown())).optional().describe("A list of row lists, or { \"@path\": \"/x\" }. A cell is a string, a number, or { \"componentId\": \"<id>\" } to show a component. Default []"),
4509
- columnSizing: zod.z.enum(["auto", "equal"]).optional().describe("Default \"auto\""),
4510
- dividers: zod.z.boolean().optional().describe("Default true"),
4511
- stickyHeader: zod.z.boolean().optional().describe("Default false"),
4512
- emptyLabel: zod.z.string().optional().describe("Default \"No rows\"")
4505
+ const tableSchema = zod.object({
4506
+ caption: zod.string().optional().describe("A short name of the table for screen readers. It is not shown"),
4507
+ columns: zod.array(tableColumn).optional().describe("Default []"),
4508
+ rows: zod.array(zod.array(zod.unknown())).optional().describe("A list of row lists. A cell is a string, a number, or { \"componentId\": \"<id>\" } to show a component. Default []"),
4509
+ columnSizing: zod.enum(["auto", "equal"]).optional().describe("Default \"auto\""),
4510
+ dividers: zod.boolean().optional().describe("Default true"),
4511
+ stickyHeader: zod.boolean().optional().describe("Default false"),
4512
+ emptyLabel: zod.string().optional().describe("Default \"No rows\"")
4513
4513
  });
4514
- const tableSectionSchema = zod.z.object({
4515
- header: zod.z.boolean().optional().describe("Renders the rows as the header"),
4516
- rowDivider: zod.z.boolean().optional()
4514
+ const tableSectionSchema = zod.object({
4515
+ header: zod.boolean().optional().describe("Renders the rows as the header"),
4516
+ rowDivider: zod.boolean().optional()
4517
4517
  });
4518
- const tableRowSchema = zod.z.object({
4519
- header: zod.z.boolean().optional(),
4520
- label: zod.z.string().optional().describe("The text of a header cell at the start of the row"),
4521
- labelColSpan: zod.z.number().optional().describe("Columns the label cell spans")
4518
+ const tableRowSchema = zod.object({
4519
+ header: zod.boolean().optional(),
4520
+ label: zod.string().optional().describe("The text of a header cell at the start of the row"),
4521
+ labelColSpan: zod.number().optional().describe("Columns the label cell spans")
4522
4522
  });
4523
- const tableCellSchema = zod.z.object({
4524
- text: zod.z.union([zod.z.string(), zod.z.number()]).optional(),
4525
- header: zod.z.boolean().optional(),
4523
+ const tableCellSchema = zod.object({
4524
+ text: zod.union([zod.string(), zod.number()]).optional(),
4525
+ header: zod.boolean().optional(),
4526
4526
  align: cellAlign,
4527
4527
  vAlign: cellAlign.describe("Default \"start\""),
4528
- colSpan: zod.z.number().optional(),
4529
- rowSpan: zod.z.number().optional(),
4528
+ colSpan: zod.number().optional(),
4529
+ rowSpan: zod.number().optional(),
4530
4530
  width: sizeValue.optional(),
4531
4531
  padding: sizeValue.optional()
4532
4532
  });
4533
- const listItemValue = zod.z.union([zod.z.string(), zod.z.object({
4534
- label: zod.z.string(),
4535
- description: zod.z.string().optional(),
4536
- icon: zod.z.string().optional().describe("Lucide icon name"),
4537
- value: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Without an action: shown on the right of the label, for a key and value fact. With an action: the payload of the pick, not shown")
4533
+ const listItemValue = zod.union([zod.string(), zod.object({
4534
+ label: zod.string(),
4535
+ description: zod.string().optional(),
4536
+ icon: zod.string().optional().describe("Lucide icon name"),
4537
+ value: zod.union([zod.string(), zod.number()]).optional().describe("Without an action: shown on the right of the label, for a key and value fact. With an action: the payload of the pick, not shown")
4538
4538
  })]);
4539
- const listSchema = zod.z.object({
4540
- items: zod.z.array(listItemValue).optional().describe("Strings or { \"label\", \"value\"?, \"description\"?, \"icon\"? }, or { \"@path\": \"/x\" }"),
4541
- direction: zod.z.enum(["vertical", "horizontal"]).optional().describe("Default \"vertical\". \"horizontal\" scrolls sideways"),
4542
- align: zod.z.enum([
4539
+ const listSchema = zod.object({
4540
+ items: zod.array(listItemValue).optional(),
4541
+ direction: zod.enum(["vertical", "horizontal"]).optional().describe("Default \"vertical\". \"horizontal\" scrolls sideways"),
4542
+ align: zod.enum([
4543
4543
  "start",
4544
4544
  "center",
4545
4545
  "end",
4546
4546
  "stretch"
4547
4547
  ]).optional(),
4548
4548
  weight: weightProp,
4549
- marker: zod.z.enum([
4549
+ marker: zod.enum([
4550
4550
  "bullet",
4551
4551
  "number",
4552
4552
  "rich",
4553
4553
  "none"
4554
4554
  ]).optional().describe("Default \"bullet\""),
4555
- connector: zod.z.enum(["none", "solid"]).optional().describe("Default \"none\""),
4555
+ connector: zod.enum(["none", "solid"]).optional().describe("Default \"none\""),
4556
4556
  gap: sizeValue.optional(),
4557
- start: zod.z.number().optional().describe("The first number of marker \"number\""),
4558
- maxMarkerSize: zod.z.number().optional().describe("The width of the marker column in pixels")
4557
+ start: zod.number().optional().describe("The first number of marker \"number\""),
4558
+ maxMarkerSize: zod.number().optional().describe("The width of the marker column in pixels")
4559
4559
  });
4560
- const listItemSchema = zod.z.object({
4561
- label: zod.z.string().optional(),
4562
- value: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Without an action: shown on the right of the label, for a key and value fact"),
4563
- description: zod.z.string().optional(),
4564
- icon: zod.z.string().optional().describe("Lucide icon name"),
4565
- marker: zod.z.string().optional().describe("Shows this text as the marker"),
4566
- markerSize: zod.z.number().optional().describe("The width of the marker column in pixels"),
4567
- disabled: zod.z.boolean().optional().describe("Greys the item out and ignores its action")
4560
+ const listItemSchema = zod.object({
4561
+ label: zod.string().optional(),
4562
+ value: zod.union([zod.string(), zod.number()]).optional().describe("Without an action: shown on the right of the label, for a key and value fact"),
4563
+ description: zod.string().optional(),
4564
+ icon: zod.string().optional().describe("Lucide icon name"),
4565
+ marker: zod.string().optional().describe("Shows this text as the marker"),
4566
+ markerSize: zod.number().optional().describe("The width of the marker column in pixels"),
4567
+ disabled: zod.boolean().optional().describe("Greys the item out and ignores its action")
4568
4568
  });
4569
- const listSelection = zod.z.object({
4570
- index: zod.z.number(),
4571
- label: zod.z.string(),
4572
- value: zod.z.string().optional()
4569
+ const listSelection = zod.object({
4570
+ index: zod.number(),
4571
+ label: zod.string(),
4572
+ value: zod.string().optional()
4573
4573
  });
4574
4574
  const TableContext = (0, react.createContext)(null);
4575
4575
  const V_ALIGN = {
@@ -4991,7 +4991,7 @@ function ListItem(props) {
4991
4991
  const dataComponents = {
4992
4992
  Table: {
4993
4993
  component: Table,
4994
- description: "A data table. Put it in a plain Column, not in a Card. Give \"columns\" and \"rows\" (a list of row lists). Or give \"children\": TableSection or TableRow ids, or a template { \"componentId\", \"path\" } that repeats a TableRow for each item of a data list. To show a component (Badge, Button, Icon, Text) in a cell or a column header, set it to { \"componentId\": \"<id>\" } and put the id in \"cellComponents\".",
4994
+ description: "A data table, in a plain Column, not a Card. Give \"columns\" and \"rows\", or \"children\": TableSection or TableRow ids, or a template { \"componentId\", \"path\" } repeating a TableRow per item. A component in a cell or header (Badge, Button, Icon, Text): { \"componentId\": \"<id>\" }, with the id in \"cellComponents\".",
4995
4995
  props: tableSchema,
4996
4996
  slots: {
4997
4997
  children: "multiple",
@@ -5021,7 +5021,7 @@ const dataComponents = {
5021
5021
  },
5022
5022
  List: {
5023
5023
  component: List,
5024
- description: "A list in a Card or next to another component. A plain list of text is markdown, not a List. Give \"items\" (strings or { \"label\", \"value\"?, \"description\"?, \"icon\"? }); without an action, an item with a value is a key and value row, for facts like Price: $1,599. Or, when there are no items, give \"children\": ListItem ids or a template. With an \"action\", the user can pick an item: the event context gets \"index\", \"label\" and \"value\" of the item.",
5024
+ description: "A list in a Card or next to another component; a plain list of text is markdown. Give \"items\": an item with a value and no action is a key-value row (Price: $1,599). Or give \"children\": ListItem ids or a template. With \"action\" the user picks an item; the event context gets its index, label and value.",
5025
5025
  props: listSchema,
5026
5026
  events: { action: {
5027
5027
  description: "Runs when the user picks an item. The args are the index, label and value of the item.",
@@ -5035,7 +5035,7 @@ const dataComponents = {
5035
5035
  props: listItemSchema,
5036
5036
  events: { action: {
5037
5037
  description: "Runs when the user picks the item.",
5038
- parameters: zod.z.object({})
5038
+ parameters: zod.object({})
5039
5039
  } },
5040
5040
  slots: CHILDREN_SLOT
5041
5041
  },
@@ -5046,7 +5046,7 @@ const dataComponents = {
5046
5046
  },
5047
5047
  Map: {
5048
5048
  component: MapView,
5049
- description: "A map with markers. With \"route\", a line connects the markers in order. Bind \"selected\" to { \"@path\": \"/x\" } to get the label of the marker that the user picks. When maps are not available, it shows a list of the places.",
5049
+ description: "A map with markers; with \"route\" a line connects them in order. Bind \"selected\" to get the label of the marker the user picks. Without maps it shows a list of the places.",
5050
5050
  props: mapSchema,
5051
5051
  writable: ["selected"]
5052
5052
  }
@@ -5092,35 +5092,35 @@ const BUTTON_RESET = {
5092
5092
  textAlign: "inherit",
5093
5093
  cursor: "pointer"
5094
5094
  };
5095
- const pulseIndicatorSchema = zod.z.object({
5096
- label: zod.z.string().optional().describe("What the dot means, for screen readers. Leave it unset when text next to the dot says the same"),
5097
- color: zod.z.string().optional().describe("Text color token. Default \"success\""),
5098
- size: zod.z.number().optional().describe("Pixels. Default 12"),
5099
- pulseColor: zod.z.string().optional(),
5100
- duration: zod.z.number().optional().describe("Milliseconds. Default 1500"),
5101
- endScale: zod.z.number().optional().describe("Default 2.4"),
5102
- startOpacity: zod.z.number().optional().describe("Default 0.6")
5095
+ const pulseIndicatorSchema = zod.object({
5096
+ label: zod.string().optional().describe("What the dot means, for screen readers. Leave it unset when text next to the dot says the same"),
5097
+ color: zod.string().optional().describe("Text color token. Default \"success\""),
5098
+ size: zod.number().optional().describe("Pixels. Default 12"),
5099
+ pulseColor: zod.string().optional(),
5100
+ duration: zod.number().optional().describe("Milliseconds. Default 1500"),
5101
+ endScale: zod.number().optional().describe("Default 2.4"),
5102
+ startOpacity: zod.number().optional().describe("Default 0.6")
5103
5103
  });
5104
- const flashcardSchema = zod.z.object({
5105
- front: zod.z.string().optional().describe("The text on the front"),
5106
- back: zod.z.string().optional().describe("The text on the back"),
5107
- hint: zod.z.string().optional().describe("A small line under the front, for example \"Click to flip\"")
5104
+ const flashcardSchema = zod.object({
5105
+ front: zod.string().optional().describe("The text on the front"),
5106
+ back: zod.string().optional().describe("The text on the back"),
5107
+ hint: zod.string().optional().describe("A small line under the front, for example \"Click to flip\"")
5108
5108
  });
5109
- const popoverSchema = zod.z.object({
5110
- open: zod.z.boolean().optional().describe("Default false"),
5111
- showOnHover: zod.z.boolean().optional(),
5112
- hoverOpenDelay: zod.z.number().optional().describe("Milliseconds before a hover opens it. Default 0")
5109
+ const popoverSchema = zod.object({
5110
+ open: zod.boolean().optional().describe("Default false"),
5111
+ showOnHover: zod.boolean().optional(),
5112
+ hoverOpenDelay: zod.number().optional().describe("Milliseconds before a hover opens it. Default 0")
5113
5113
  });
5114
- const popoverTriggerSchema = zod.z.object({ block: zod.z.boolean().optional().describe("Full width") });
5115
- const popoverContentSchema = zod.z.object({
5116
- side: zod.z.enum([
5114
+ const popoverTriggerSchema = zod.object({ block: zod.boolean().optional().describe("Full width") });
5115
+ const popoverContentSchema = zod.object({
5116
+ side: zod.enum([
5117
5117
  "top",
5118
5118
  "bottom",
5119
5119
  "left",
5120
5120
  "right"
5121
5121
  ]).optional().describe("Default \"bottom\""),
5122
- sideOffset: zod.z.number().optional().describe("Pixels between the trigger and the content. Default 6"),
5123
- align: zod.z.enum([
5122
+ sideOffset: zod.number().optional().describe("Pixels between the trigger and the content. Default 6"),
5123
+ align: zod.enum([
5124
5124
  "start",
5125
5125
  "center",
5126
5126
  "end"
@@ -5384,9 +5384,9 @@ function PopoverContent(props) {
5384
5384
  children: props.children
5385
5385
  });
5386
5386
  }
5387
- const modalSchema = zod.z.object({
5388
- title: zod.z.string().optional().describe("The heading of the dialog"),
5389
- open: zod.z.boolean().optional().describe("Default false. Bind it with { \"@path\": \"/x\" } to read it"),
5387
+ const modalSchema = zod.object({
5388
+ title: zod.string().optional().describe("The heading of the dialog"),
5389
+ open: zod.boolean().optional().describe("Default false. Bind it with { \"@path\": \"/x\" } to read it"),
5390
5390
  maxWidth: sizeValue.optional().describe("Default 480"),
5391
5391
  weight: weightProp
5392
5392
  });
@@ -5602,7 +5602,7 @@ const feedbackComponents = {
5602
5602
  },
5603
5603
  Popover: {
5604
5604
  component: Popover,
5605
- description: "A small overlay next to a trigger. Put exactly two children in it: one PopoverTrigger, then one PopoverContent. A click on the trigger opens and closes the content. Escape or a click outside closes it.",
5605
+ description: "A small overlay: exactly two children, one PopoverTrigger then one PopoverContent. A click on the trigger toggles it; Escape or a click outside closes it.",
5606
5606
  props: popoverSchema,
5607
5607
  slots: CHILDREN_SLOT,
5608
5608
  writable: ["open"]
@@ -5640,20 +5640,20 @@ const feedbackComponents = {
5640
5640
  * The engine resolves the condition before the component renders, so a
5641
5641
  * component sees a boolean or a `ValidationResult`.
5642
5642
  */
5643
- const severity = zod.z.enum([
5643
+ const severity = zod.enum([
5644
5644
  "error",
5645
5645
  "warning",
5646
5646
  "info"
5647
5647
  ]);
5648
- const validationResult = zod.z.object({
5649
- valid: zod.z.boolean(),
5650
- message: zod.z.string().optional(),
5651
- code: zod.z.string().optional(),
5648
+ const validationResult = zod.object({
5649
+ valid: zod.boolean(),
5650
+ message: zod.string().optional(),
5651
+ code: zod.string().optional(),
5652
5652
  severity: severity.optional()
5653
- }).passthrough();
5654
- const checksProp = zod.z.array(zod.z.object({
5655
- condition: zod.z.union([zod.z.boolean(), validationResult]).optional().describe("A validator call, for example {\"@call\":\"required\",\"args\":{\"value\":{\"@path\":\"/x\"}}}, or a boolean binding"),
5656
- message: zod.z.string().optional().describe("Shown when the check fails, instead of the default message")
5653
+ }).loose();
5654
+ const checksProp = zod.array(zod.object({
5655
+ condition: zod.union([zod.boolean(), validationResult]).optional().describe("A validator call, for example {\"@call\":\"required\",\"args\":{\"value\":{\"@path\":\"/x\"}}}, or a boolean binding"),
5656
+ message: zod.string().optional().describe("Shown when the check fails, instead of the default message")
5657
5657
  })).optional().describe("Validation rules. The control shows the first failed one");
5658
5658
  /**
5659
5659
  * The failed check to show, or `undefined` when every check passes: the
@@ -5730,73 +5730,73 @@ async function copyText(text) {
5730
5730
  * The arguments of a click or submit event: none. The model adds values
5731
5731
  * with the `context` of its `{ "event": ... }` binding.
5732
5732
  */
5733
- const NO_ARGS = zod.z.object({});
5733
+ const NO_ARGS = zod.object({});
5734
5734
  /** A list of choices: plain strings or `{ value, label, description? }`. */
5735
- const optionList = zod.z.array(zod.z.union([zod.z.string(), zod.z.object({
5736
- value: zod.z.string(),
5737
- label: zod.z.string().optional(),
5738
- description: zod.z.string().optional()
5739
- })])).optional().describe("Strings or { \"value\", \"label\", \"description\"? }");
5735
+ const optionList = zod.array(zod.union([zod.string(), zod.object({
5736
+ value: zod.string(),
5737
+ label: zod.string().optional(),
5738
+ description: zod.string().optional()
5739
+ })])).optional();
5740
5740
  const SIZES = [
5741
5741
  "sm",
5742
5742
  "md",
5743
5743
  "lg",
5744
5744
  "xl"
5745
5745
  ];
5746
- const size = (fallback) => zod.z.enum(SIZES).optional().describe(`Default "${fallback}"`);
5747
- const pill = zod.z.boolean().optional().describe("Default true");
5748
- const fieldLabel = zod.z.string().optional().describe("The visible label of the field. Always set it");
5749
- const boundValue = zod.z.string().optional().describe("Bind it with { \"@path\": \"/x\" } to read what the user entered");
5750
- const buttonSchema = zod.z.object({
5751
- label: zod.z.string().optional().describe("The button text"),
5746
+ const size = (fallback) => zod.enum(SIZES).optional().describe(`Default "${fallback}"`);
5747
+ const pill = zod.boolean().optional().describe("Default true");
5748
+ const fieldLabel = zod.string().optional().describe("The visible label of the field. Always set it");
5749
+ const boundValue = zod.string().optional().describe("Bind it with { \"@path\": \"/x\" } to read what the user entered");
5750
+ const buttonSchema = zod.object({
5751
+ label: zod.string().optional().describe("The button text"),
5752
5752
  checks: checksProp,
5753
- text: zod.z.string().optional().describe("Same as label. Used when label is not set"),
5754
- variant: zod.z.enum([
5753
+ text: zod.string().optional().describe("Same as label. Used when label is not set"),
5754
+ variant: zod.enum([
5755
5755
  "default",
5756
5756
  "primary",
5757
5757
  "soft",
5758
5758
  "borderless"
5759
5759
  ]).optional().describe("Default \"default\": outlined. \"primary\" is filled, for the one main action. \"borderless\" has no box, like a link"),
5760
- color: zod.z.enum([
5760
+ color: zod.enum([
5761
5761
  "primary",
5762
5762
  "secondary",
5763
5763
  "danger"
5764
5764
  ]).optional().describe("Default \"primary\""),
5765
- size: zod.z.enum([
5765
+ size: zod.enum([
5766
5766
  "sm",
5767
5767
  "md",
5768
5768
  "lg"
5769
5769
  ]).optional().describe("Default \"lg\""),
5770
- block: zod.z.boolean().optional().describe("Full width"),
5770
+ block: zod.boolean().optional().describe("Full width"),
5771
5771
  weight: weightProp,
5772
5772
  pill,
5773
- disabled: zod.z.boolean().optional(),
5774
- loading: zod.z.boolean().optional(),
5775
- submit: zod.z.boolean().optional().describe("Submits the Form around it. The Form sends its onSubmit event"),
5776
- icon: zod.z.string().optional().describe("Lucide icon name"),
5777
- uniform: zod.z.boolean().optional().describe("A square button, for an icon"),
5778
- href: zod.z.string().optional().describe("Opens this URL in a new tab on click, instead of onClick"),
5779
- copy: zod.z.string().optional().describe("Copies this text to the clipboard on click and shows a check mark, instead of onClick")
5773
+ disabled: zod.boolean().optional(),
5774
+ loading: zod.boolean().optional(),
5775
+ submit: zod.boolean().optional().describe("Submits the Form around it. The Form sends its onSubmit event"),
5776
+ icon: zod.string().optional().describe("Lucide icon name"),
5777
+ uniform: zod.boolean().optional().describe("A square button, for an icon"),
5778
+ href: zod.string().optional().describe("Opens this URL in a new tab on click, instead of onClick"),
5779
+ copy: zod.string().optional().describe("Copies this text to the clipboard on click and shows a check mark, instead of onClick")
5780
5780
  });
5781
- const pressableSchema = zod.z.object({
5781
+ const pressableSchema = zod.object({
5782
5782
  ...layoutProps,
5783
- disabled: zod.z.boolean().optional(),
5784
- hoverBackground: zod.z.string().optional(),
5785
- href: zod.z.string().optional().describe("Opens this URL in a new tab on click, instead of onClick"),
5786
- tooltip: zod.z.string().optional().describe("Shown on hover"),
5787
- ariaPressed: zod.z.boolean().optional().describe("For a toggle"),
5788
- insetBorder: zod.z.boolean().optional().describe("A 1px border inside the box")
5783
+ disabled: zod.boolean().optional(),
5784
+ hoverBackground: zod.string().optional(),
5785
+ href: zod.string().optional().describe("Opens this URL in a new tab on click, instead of onClick"),
5786
+ tooltip: zod.string().optional().describe("Shown on hover"),
5787
+ ariaPressed: zod.boolean().optional().describe("For a toggle"),
5788
+ insetBorder: zod.boolean().optional().describe("A 1px border inside the box")
5789
5789
  });
5790
- const formSchema = zod.z.object({
5790
+ const formSchema = zod.object({
5791
5791
  ...layoutProps,
5792
- label: zod.z.string().optional().describe("A short name of the form for screen readers")
5792
+ label: zod.string().optional().describe("A short name of the form for screen readers")
5793
5793
  });
5794
- const textFieldSchema = zod.z.object({
5794
+ const textFieldSchema = zod.object({
5795
5795
  checks: checksProp,
5796
- value: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Bind it with { \"@path\": \"/x\" } to read what the user typed"),
5797
- placeholder: zod.z.string().optional(),
5796
+ value: zod.union([zod.string(), zod.number()]).optional().describe("Bind it with { \"@path\": \"/x\" } to read what the user typed"),
5797
+ placeholder: zod.string().optional(),
5798
5798
  label: fieldLabel,
5799
- variant: zod.z.enum([
5799
+ variant: zod.enum([
5800
5800
  "shortText",
5801
5801
  "longText",
5802
5802
  "number",
@@ -5806,140 +5806,140 @@ const textFieldSchema = zod.z.object({
5806
5806
  "tel"
5807
5807
  ]).optional().describe("Default \"shortText\". \"longText\" is a multi-line field, \"obscured\" a password"),
5808
5808
  weight: weightProp,
5809
- name: zod.z.string().optional(),
5810
- required: zod.z.boolean().optional(),
5811
- disabled: zod.z.boolean().optional(),
5812
- invalid: zod.z.boolean().optional(),
5809
+ name: zod.string().optional(),
5810
+ required: zod.boolean().optional(),
5811
+ disabled: zod.boolean().optional(),
5812
+ invalid: zod.boolean().optional(),
5813
5813
  size: size("xl"),
5814
5814
  pill,
5815
- autoSelect: zod.z.boolean().optional(),
5816
- mask: zod.z.string().optional()
5815
+ autoSelect: zod.boolean().optional(),
5816
+ mask: zod.string().optional()
5817
5817
  });
5818
- const textAreaSchema = zod.z.object({
5818
+ const textAreaSchema = zod.object({
5819
5819
  checks: checksProp,
5820
5820
  value: boundValue,
5821
- placeholder: zod.z.string().optional(),
5821
+ placeholder: zod.string().optional(),
5822
5822
  label: fieldLabel,
5823
5823
  weight: weightProp,
5824
- rows: zod.z.number().optional().describe("Default 3"),
5825
- maxRows: zod.z.number().optional(),
5826
- autoResize: zod.z.boolean().optional(),
5827
- name: zod.z.string().optional(),
5828
- required: zod.z.boolean().optional(),
5829
- disabled: zod.z.boolean().optional(),
5830
- invalid: zod.z.boolean().optional(),
5824
+ rows: zod.number().optional().describe("Default 3"),
5825
+ maxRows: zod.number().optional(),
5826
+ autoResize: zod.boolean().optional(),
5827
+ name: zod.string().optional(),
5828
+ required: zod.boolean().optional(),
5829
+ disabled: zod.boolean().optional(),
5830
+ invalid: zod.boolean().optional(),
5831
5831
  size: size("xl")
5832
5832
  });
5833
- const selectSchema = zod.z.object({
5833
+ const selectSchema = zod.object({
5834
5834
  checks: checksProp,
5835
5835
  value: boundValue,
5836
5836
  options: optionList,
5837
- placeholder: zod.z.string().optional(),
5837
+ placeholder: zod.string().optional(),
5838
5838
  label: fieldLabel,
5839
- name: zod.z.string().optional(),
5840
- required: zod.z.boolean().optional(),
5841
- disabled: zod.z.boolean().optional(),
5842
- clearable: zod.z.boolean().optional(),
5843
- clearLabel: zod.z.string().optional().describe("The label of the empty option"),
5844
- searchable: zod.z.boolean().optional(),
5845
- icon: zod.z.string().optional().describe("Lucide icon shown before the value"),
5846
- block: zod.z.boolean().optional().describe("Full width"),
5839
+ name: zod.string().optional(),
5840
+ required: zod.boolean().optional(),
5841
+ disabled: zod.boolean().optional(),
5842
+ clearable: zod.boolean().optional(),
5843
+ clearLabel: zod.string().optional().describe("The label of the empty option"),
5844
+ searchable: zod.boolean().optional(),
5845
+ icon: zod.string().optional().describe("Lucide icon shown before the value"),
5846
+ block: zod.boolean().optional().describe("Full width"),
5847
5847
  size: size("xl"),
5848
5848
  pill
5849
5849
  });
5850
- const checkBoxSchema = zod.z.object({
5850
+ const checkBoxSchema = zod.object({
5851
5851
  checks: checksProp,
5852
- value: zod.z.boolean().optional().describe("True when checked. Bind it with { \"@path\": \"/x\" } to read the state of the box"),
5853
- label: zod.z.string().optional().describe("The label text. Always set it"),
5854
- name: zod.z.string().optional(),
5852
+ value: zod.boolean().optional().describe("True when checked. Bind it with { \"@path\": \"/x\" } to read the state of the box"),
5853
+ label: zod.string().optional().describe("The label text. Always set it"),
5854
+ name: zod.string().optional(),
5855
5855
  weight: weightProp,
5856
- disabled: zod.z.boolean().optional(),
5857
- required: zod.z.boolean().optional(),
5858
- lineThrough: zod.z.boolean().optional().describe("Default false. Strikes the label when the box is checked"),
5859
- shape: zod.z.enum(["round", "square"]).optional().describe("Default \"round\"")
5856
+ disabled: zod.boolean().optional(),
5857
+ required: zod.boolean().optional(),
5858
+ lineThrough: zod.boolean().optional().describe("Default false. Strikes the label when the box is checked"),
5859
+ shape: zod.enum(["round", "square"]).optional().describe("Default \"round\"")
5860
5860
  });
5861
- const radioSchema = zod.z.object({
5862
- value: zod.z.string().optional(),
5863
- label: zod.z.string().optional(),
5864
- disabled: zod.z.boolean().optional(),
5865
- required: zod.z.boolean().optional()
5861
+ const radioSchema = zod.object({
5862
+ value: zod.string().optional(),
5863
+ label: zod.string().optional(),
5864
+ disabled: zod.boolean().optional(),
5865
+ required: zod.boolean().optional()
5866
5866
  });
5867
- const radioGroupSchema = zod.z.object({
5867
+ const radioGroupSchema = zod.object({
5868
5868
  checks: checksProp,
5869
5869
  value: boundValue,
5870
5870
  options: optionList,
5871
5871
  label: fieldLabel,
5872
- name: zod.z.string().optional(),
5873
- direction: zod.z.enum(["row", "col"]).optional().describe("Default \"row\""),
5874
- variant: zod.z.enum([
5872
+ name: zod.string().optional(),
5873
+ direction: zod.enum(["row", "col"]).optional().describe("Default \"row\""),
5874
+ variant: zod.enum([
5875
5875
  "list",
5876
5876
  "pills",
5877
5877
  "cards"
5878
5878
  ]).optional(),
5879
- disabled: zod.z.boolean().optional(),
5880
- required: zod.z.boolean().optional()
5879
+ disabled: zod.boolean().optional(),
5880
+ required: zod.boolean().optional()
5881
5881
  });
5882
- const sliderSchema = zod.z.object({
5882
+ const sliderSchema = zod.object({
5883
5883
  checks: checksProp,
5884
- value: zod.z.number().optional().describe("Bind it with { \"@path\": \"/x\" } to read the number"),
5885
- min: zod.z.number().optional().describe("Default 0"),
5886
- max: zod.z.number().optional().describe("Default 100"),
5887
- step: zod.z.number().optional().describe("Default 1"),
5888
- steps: zod.z.number().int().min(1).optional().describe("The number of equal divisions between min and max, instead of step"),
5884
+ value: zod.number().optional().describe("Bind it with { \"@path\": \"/x\" } to read the number"),
5885
+ min: zod.number().optional().describe("Default 0"),
5886
+ max: zod.number().optional().describe("Default 100"),
5887
+ step: zod.number().optional().describe("Default 1"),
5888
+ steps: zod.number().int().min(1).optional().describe("The number of equal divisions between min and max, instead of step"),
5889
5889
  label: fieldLabel,
5890
5890
  weight: weightProp,
5891
- unit: zod.z.string().optional().describe("Unit after the value, for example \"%\""),
5892
- marks: zod.z.array(zod.z.object({
5893
- value: zod.z.number(),
5894
- label: zod.z.string().optional()
5891
+ unit: zod.string().optional().describe("Unit after the value, for example \"%\""),
5892
+ marks: zod.array(zod.object({
5893
+ value: zod.number(),
5894
+ label: zod.string().optional()
5895
5895
  })).optional(),
5896
- sliderStyle: zod.z.enum(["continuous", "discrete"]).optional().describe("Default \"continuous\""),
5897
- disabled: zod.z.boolean().optional(),
5898
- name: zod.z.string().optional()
5896
+ sliderStyle: zod.enum(["continuous", "discrete"]).optional().describe("Default \"continuous\""),
5897
+ disabled: zod.boolean().optional(),
5898
+ name: zod.string().optional()
5899
5899
  });
5900
- const segmentedControlSchema = zod.z.object({
5900
+ const segmentedControlSchema = zod.object({
5901
5901
  checks: checksProp,
5902
5902
  value: boundValue,
5903
5903
  options: optionList,
5904
5904
  label: fieldLabel,
5905
- block: zod.z.boolean().optional().describe("Full width"),
5905
+ block: zod.boolean().optional().describe("Full width"),
5906
5906
  size: size("lg"),
5907
5907
  pill,
5908
- variant: zod.z.enum([
5908
+ variant: zod.enum([
5909
5909
  "solid",
5910
5910
  "soft",
5911
5911
  "outline",
5912
5912
  "ghost"
5913
5913
  ]).optional().describe("Default \"ghost\""),
5914
- disabled: zod.z.boolean().optional()
5914
+ disabled: zod.boolean().optional()
5915
5915
  });
5916
- const choicePickerSchema = zod.z.object({
5916
+ const choicePickerSchema = zod.object({
5917
5917
  checks: checksProp,
5918
- value: zod.z.array(zod.z.string()).optional().describe("The chosen option values. Bind it with { \"@path\": \"/x\" } to a string list"),
5918
+ value: zod.array(zod.string()).optional().describe("The chosen option values. Bind it with { \"@path\": \"/x\" } to a string list"),
5919
5919
  options: optionList,
5920
5920
  label: fieldLabel,
5921
- variant: zod.z.enum(["multipleSelection", "mutuallyExclusive"]).optional().describe("Default \"mutuallyExclusive\": the user picks one option"),
5922
- displayStyle: zod.z.enum(["checkbox", "chips"]).optional().describe("Default \"checkbox\". \"chips\" shows the options as pills"),
5923
- filterable: zod.z.boolean().optional().describe("Default false. Shows a field that filters the options"),
5921
+ variant: zod.enum(["multipleSelection", "mutuallyExclusive"]).optional().describe("Default \"mutuallyExclusive\": the user picks one option"),
5922
+ displayStyle: zod.enum(["checkbox", "chips"]).optional().describe("Default \"checkbox\". \"chips\" shows the options as pills"),
5923
+ filterable: zod.boolean().optional().describe("Default false. Shows a field that filters the options"),
5924
5924
  weight: weightProp,
5925
- disabled: zod.z.boolean().optional(),
5926
- required: zod.z.boolean().optional()
5925
+ disabled: zod.boolean().optional(),
5926
+ required: zod.boolean().optional()
5927
5927
  });
5928
- const dateTimeInputSchema = zod.z.object({
5928
+ const dateTimeInputSchema = zod.object({
5929
5929
  checks: checksProp,
5930
- value: zod.z.string().optional().describe("ISO 8601: \"YYYY-MM-DD\", \"HH:MM\" or \"YYYY-MM-DDTHH:MM\". Bind it with { \"@path\": \"/x\" }"),
5930
+ value: zod.string().optional().describe("ISO 8601: \"YYYY-MM-DD\", \"HH:MM\" or \"YYYY-MM-DDTHH:MM\". Bind it with { \"@path\": \"/x\" }"),
5931
5931
  label: fieldLabel,
5932
- enableDate: zod.z.boolean().optional().describe("The user picks a date. Default true unless only enableTime is set"),
5933
- enableTime: zod.z.boolean().optional().describe("The user picks a time"),
5934
- timeStep: zod.z.number().int().min(1).max(720).optional().describe("Minutes between the times the user can pick, e.g. 15 or 30. Shows the time as a list"),
5932
+ enableDate: zod.boolean().optional().describe("The user picks a date. Default true unless only enableTime is set"),
5933
+ enableTime: zod.boolean().optional().describe("The user picks a time"),
5934
+ timeStep: zod.number().int().min(1).max(720).optional().describe("Minutes between the times the user can pick, e.g. 15 or 30. Shows the time as a list"),
5935
5935
  weight: weightProp,
5936
- min: zod.z.string().optional().describe("The earliest value, ISO 8601"),
5937
- max: zod.z.string().optional().describe("The latest value, ISO 8601"),
5938
- placeholder: zod.z.string().optional(),
5939
- disabled: zod.z.boolean().optional(),
5940
- required: zod.z.boolean().optional(),
5941
- clearable: zod.z.boolean().optional(),
5942
- block: zod.z.boolean().optional().describe("Full width")
5936
+ min: zod.string().optional().describe("The earliest value, ISO 8601"),
5937
+ max: zod.string().optional().describe("The latest value, ISO 8601"),
5938
+ placeholder: zod.string().optional(),
5939
+ disabled: zod.boolean().optional(),
5940
+ required: zod.boolean().optional(),
5941
+ clearable: zod.boolean().optional(),
5942
+ block: zod.boolean().optional().describe("Full width")
5943
5943
  });
5944
5944
  /** The writable list of a control that keeps its state in `value`. */
5945
5945
  const VALUE_WRITABLE = ["value"];
@@ -7188,7 +7188,7 @@ function Slider(props) {
7188
7188
  const inputComponents = {
7189
7189
  Button: {
7190
7190
  component: Button,
7191
- description: "A button that sends its onClick event. With href it opens the URL, and with copy it copies the text, both without the agent. Use variant \"primary\" for the one main Button in a Row, and the default for the others. With submit true inside a Form, it submits the Form. The child or children render instead of the label. With checks, it is disabled while a check fails.",
7191
+ description: "Sends its onClick event; with href it opens the URL, with copy it copies the text. Variant \"primary\" for the one main Button in a Row. submit true submits the Form around it. Its children render instead of the label. With checks it is disabled while a check fails.",
7192
7192
  props: buttonSchema,
7193
7193
  events: { onClick: {
7194
7194
  description: "Sent when the user clicks the button.",
@@ -7214,7 +7214,7 @@ const inputComponents = {
7214
7214
  },
7215
7215
  Form: {
7216
7216
  component: Form,
7217
- description: "A layout container that is a form. It sends its onSubmit event when the user submits it (a Button with submit true, or Enter in a field). Put the values of its fields in the event context with { \"@path\": \"/x\" }.",
7217
+ description: "A layout container that is a form. It sends onSubmit when the user submits (a Button with submit true, or Enter in a field). Put its field values in the event context with { \"@path\": \"/x\" }.",
7218
7218
  props: formSchema,
7219
7219
  events: { onSubmit: {
7220
7220
  description: "Sent when the user submits the form.",
@@ -7271,13 +7271,13 @@ const inputComponents = {
7271
7271
  },
7272
7272
  ChoicePicker: {
7273
7273
  component: ChoicePicker,
7274
- description: "A list of options, as checkboxes or chips. The user picks one, or several with variant \"multipleSelection\". Bind value with { \"@path\": \"/x\" } to read the chosen values as a list. Give it a label.",
7274
+ description: "Options as checkboxes or chips: pick one, or several with variant \"multipleSelection\". Its value is the list of chosen values. Give it a label.",
7275
7275
  props: choicePickerSchema,
7276
7276
  writable: VALUE_WRITABLE
7277
7277
  },
7278
7278
  DateTimeInput: {
7279
7279
  component: DateTimeInput,
7280
- description: "A date picker, or a time picker with enableTime, or both. Set timeStep (minutes) to offer fixed times, e.g. 30 for a booking. The value is ISO 8601. Bind value with { \"@path\": \"/x\" } to read it. Give it a label.",
7280
+ description: "A date picker, a time picker with enableTime, or both. timeStep (minutes) offers fixed times, e.g. 30 for a booking. The value is ISO 8601. Give it a label.",
7281
7281
  props: dateTimeInputSchema,
7282
7282
  writable: VALUE_WRITABLE
7283
7283
  }
@@ -7285,9 +7285,9 @@ const inputComponents = {
7285
7285
 
7286
7286
  //#endregion
7287
7287
  //#region src/generative-ui/standard/text.tsx
7288
- const colorProp = zod.z.string().optional().describe(`One of ${TEXT_COLORS.join("|")} or a CSS color`);
7289
- const fontWeight = zod.z.enum(WEIGHTS).optional();
7290
- const textAlign = zod.z.enum([
7288
+ const colorProp = zod.string().optional().describe(`One of ${TEXT_COLORS.join("|")} or a CSS color`);
7289
+ const fontWeight = zod.enum(WEIGHTS).optional();
7290
+ const textAlign = zod.enum([
7291
7291
  "start",
7292
7292
  "center",
7293
7293
  "end"
@@ -7296,70 +7296,70 @@ const typographyProps = {
7296
7296
  color: colorProp,
7297
7297
  fontWeight,
7298
7298
  textAlign,
7299
- italic: zod.z.boolean().optional(),
7300
- truncate: zod.z.boolean().optional(),
7301
- maxLines: zod.z.number().optional(),
7302
- tabularNums: zod.z.boolean().optional(),
7299
+ italic: zod.boolean().optional(),
7300
+ truncate: zod.boolean().optional(),
7301
+ maxLines: zod.number().optional(),
7302
+ tabularNums: zod.boolean().optional(),
7303
7303
  width: sizeValue.optional()
7304
7304
  };
7305
- zod.z.object(typographyProps);
7306
- const titleSchema = zod.z.object({
7305
+ zod.object(typographyProps);
7306
+ const titleSchema = zod.object({
7307
7307
  ...typographyProps,
7308
- text: zod.z.string().describe("Heading text"),
7309
- size: zod.z.enum(TITLE_SIZES).optional().describe("Default \"md\""),
7310
- strong: zod.z.boolean().optional().describe("Default true")
7308
+ text: zod.string().describe("Heading text"),
7309
+ size: zod.enum(TITLE_SIZES).optional().describe("Default \"md\""),
7310
+ strong: zod.boolean().optional().describe("Default true")
7311
7311
  });
7312
- const textSchema = zod.z.object({
7312
+ const textSchema = zod.object({
7313
7313
  ...typographyProps,
7314
7314
  weight: weightProp,
7315
- text: zod.z.union([zod.z.string(), zod.z.number()]).optional().describe("Text with inline markdown. A bound number shows as text"),
7316
- size: zod.z.enum(TEXT_SIZES).optional().describe("Default \"md\""),
7315
+ text: zod.union([zod.string(), zod.number()]).optional().describe("Text with inline markdown. A bound number shows as text"),
7316
+ size: zod.enum(TEXT_SIZES).optional().describe("Default \"md\""),
7317
7317
  fontSize: sizeValue.optional().describe("Pixels when a number. Wins over size"),
7318
- lineHeight: zod.z.union([zod.z.number(), zod.z.string()]).optional().describe("A unitless ratio, or CSS"),
7319
- minLines: zod.z.number().optional().describe("Reserves the height of this many lines"),
7320
- strong: zod.z.boolean().optional().describe("Default false"),
7321
- underline: zod.z.boolean().optional(),
7322
- lineThrough: zod.z.boolean().optional(),
7323
- inline: zod.z.boolean().optional(),
7324
- preserveWhitespace: zod.z.boolean().optional(),
7325
- highlight: zod.z.union([zod.z.enum([
7318
+ lineHeight: zod.union([zod.number(), zod.string()]).optional().describe("A unitless ratio, or CSS"),
7319
+ minLines: zod.number().optional().describe("Reserves the height of this many lines"),
7320
+ strong: zod.boolean().optional().describe("Default false"),
7321
+ underline: zod.boolean().optional(),
7322
+ lineThrough: zod.boolean().optional(),
7323
+ inline: zod.boolean().optional(),
7324
+ preserveWhitespace: zod.boolean().optional(),
7325
+ highlight: zod.union([zod.enum([
7326
7326
  "green",
7327
7327
  "orange",
7328
7328
  "pink"
7329
- ]), zod.z.boolean()]).optional()
7329
+ ]), zod.boolean()]).optional()
7330
7330
  });
7331
- const captionSchema = zod.z.object({
7332
- text: zod.z.union([zod.z.string(), zod.z.number()]).describe("Caption text"),
7331
+ const captionSchema = zod.object({
7332
+ text: zod.union([zod.string(), zod.number()]).describe("Caption text"),
7333
7333
  color: colorProp,
7334
- size: zod.z.enum([
7334
+ size: zod.enum([
7335
7335
  "sm",
7336
7336
  "md",
7337
7337
  "lg"
7338
7338
  ]).optional().describe("Default \"lg\""),
7339
7339
  fontWeight: fontWeight.describe("Default \"normal\""),
7340
7340
  textAlign,
7341
- truncate: zod.z.boolean().optional(),
7342
- maxLines: zod.z.number().optional()
7341
+ truncate: zod.boolean().optional(),
7342
+ maxLines: zod.number().optional()
7343
7343
  });
7344
- const labelSchema = zod.z.object({
7345
- text: zod.z.union([zod.z.string(), zod.z.number()]).describe("Label text"),
7346
- htmlFor: zod.z.string().optional(),
7344
+ const labelSchema = zod.object({
7345
+ text: zod.union([zod.string(), zod.number()]).describe("Label text"),
7346
+ htmlFor: zod.string().optional(),
7347
7347
  color: colorProp,
7348
- size: zod.z.enum(TEXT_SIZES).optional().describe("Default \"sm\""),
7348
+ size: zod.enum(TEXT_SIZES).optional().describe("Default \"sm\""),
7349
7349
  fontWeight: fontWeight.describe("Default \"medium\""),
7350
7350
  textAlign,
7351
- truncate: zod.z.boolean().optional(),
7351
+ truncate: zod.boolean().optional(),
7352
7352
  width: sizeValue.optional()
7353
7353
  });
7354
- const boldSchema = zod.z.object({
7355
- text: zod.z.string(),
7354
+ const boldSchema = zod.object({
7355
+ text: zod.string(),
7356
7356
  fontWeight
7357
7357
  });
7358
- const inlineTextSchema = zod.z.object({ text: zod.z.string() });
7359
- const blockquoteSchema = zod.z.object({ text: zod.z.string().describe("The quoted text, with inline markdown") });
7360
- const badgeSchema = zod.z.object({
7361
- label: zod.z.string().describe("Badge text"),
7362
- color: zod.z.enum([
7358
+ const inlineTextSchema = zod.object({ text: zod.string() });
7359
+ const blockquoteSchema = zod.object({ text: zod.string().describe("The quoted text, with inline markdown") });
7360
+ const badgeSchema = zod.object({
7361
+ label: zod.string().describe("Badge text"),
7362
+ color: zod.enum([
7363
7363
  "secondary",
7364
7364
  "success",
7365
7365
  "danger",
@@ -7367,13 +7367,13 @@ const badgeSchema = zod.z.object({
7367
7367
  "info",
7368
7368
  "discovery"
7369
7369
  ]).optional().describe("Default \"secondary\""),
7370
- size: zod.z.enum([
7370
+ size: zod.enum([
7371
7371
  "sm",
7372
7372
  "md",
7373
7373
  "lg"
7374
7374
  ]).optional().describe("Default \"md\""),
7375
- pill: zod.z.boolean().optional().describe("Default true"),
7376
- variant: zod.z.enum([
7375
+ pill: zod.boolean().optional().describe("Default true"),
7376
+ variant: zod.enum([
7377
7377
  "soft",
7378
7378
  "solid",
7379
7379
  "outline"
@@ -7382,28 +7382,28 @@ const badgeSchema = zod.z.object({
7382
7382
  maxWidth: sizeValue.optional(),
7383
7383
  padding: sizeValue.optional()
7384
7384
  });
7385
- const codeSchema = zod.z.object({
7386
- text: zod.z.string().describe("Source code"),
7387
- language: zod.z.string().optional()
7385
+ const codeSchema = zod.object({
7386
+ text: zod.string().describe("Source code"),
7387
+ language: zod.string().optional()
7388
7388
  });
7389
- const markdownSchema = zod.z.object({
7390
- text: zod.z.string().describe("Markdown source"),
7391
- streaming: zod.z.boolean().optional().describe("Default false")
7389
+ const markdownSchema = zod.object({
7390
+ text: zod.string().describe("Markdown source"),
7391
+ streaming: zod.boolean().optional().describe("Default false")
7392
7392
  });
7393
- const mathSchema = zod.z.object({
7394
- value: zod.z.string().describe("TeX source"),
7395
- block: zod.z.boolean().optional().describe("Default false")
7393
+ const mathSchema = zod.object({
7394
+ value: zod.string().describe("TeX source"),
7395
+ block: zod.boolean().optional().describe("Default false")
7396
7396
  });
7397
- const shimmerSchema = zod.z.object({
7397
+ const shimmerSchema = zod.object({
7398
7398
  ...typographyProps,
7399
- text: zod.z.string(),
7400
- size: zod.z.enum(TEXT_SIZES).optional().describe("Default \"md\""),
7401
- lineThrough: zod.z.boolean().optional()
7399
+ text: zod.string(),
7400
+ size: zod.enum(TEXT_SIZES).optional().describe("Default \"md\""),
7401
+ lineThrough: zod.boolean().optional()
7402
7402
  });
7403
- const linkSchema = zod.z.object({
7404
- text: zod.z.string().describe("Link text"),
7405
- href: zod.z.string().describe("URL"),
7406
- title: zod.z.string().optional()
7403
+ const linkSchema = zod.object({
7404
+ text: zod.string().describe("Link text"),
7405
+ href: zod.string().describe("URL"),
7406
+ title: zod.string().optional()
7407
7407
  });
7408
7408
  const FOCUS_RING = "2px solid var(--a2ui-color-focus, #0285ff)";
7409
7409
  const TEXT_STYLE_ID = "a2ui-standard-text";
@@ -7780,12 +7780,12 @@ function Tooltip({ trigger, content }) {
7780
7780
  const textComponents = {
7781
7781
  Title: {
7782
7782
  component: Title,
7783
- description: "A heading inside a Card or next to another component. A heading alone is markdown outside the fence. Use size \"2xl\" at most once in a surface, and \"lg\" for section headings. Size \"sm\" is an h4, \"md\" and \"lg\" are an h3 (default \"md\"), \"xl\" and larger are an h2. It is bold unless strong is false.",
7783
+ description: "A heading in a Card or next to another component; a heading alone is markdown. Size \"2xl\" at most once per surface, \"lg\" for sections. \"sm\" is an h4, \"md\"/\"lg\" an h3 (default \"md\"), \"xl\" and up an h2. Bold unless strong is false.",
7784
7784
  props: titleSchema
7785
7785
  },
7786
7786
  Text: {
7787
7787
  component: Text,
7788
- description: "Body text inside a Card or next to another component. A paragraph alone is markdown outside the fence. Use color \"default\" or \"secondary\". `text` can have inline markdown: **bold**, *italic*, ~~strike~~, ++underline++, `code` and [link](https://example.com). The `children` ids render inline after the text, for example a Badge.",
7788
+ description: "Body text in a Card or next to another component; a paragraph alone is markdown outside the fence. Color \"default\" or \"secondary\". `text` takes inline markdown (**bold**, *italic*, ~~strike~~, ++underline++, `code`, [link](url)). `children` ids render inline after it, e.g. a Badge.",
7789
7789
  props: textSchema,
7790
7790
  slots: CHILDREN_SLOT
7791
7791
  },
@@ -7856,7 +7856,7 @@ const textComponents = {
7856
7856
  },
7857
7857
  Tooltip: {
7858
7858
  component: Tooltip,
7859
- description: "Shows `content` when the user points at `trigger` or moves keyboard focus to it. `trigger` is one child id: a Text, Icon or Badge, not a Button or Link. `content` is one child id of short text, for example a Text. Do not put links or buttons in `content`.",
7859
+ description: "Shows `content` when the user points at or focuses `trigger`. `trigger`: one child id, a Text, Icon or Badge (not a Button or Link). `content`: one child id of short text, no links or buttons.",
7860
7860
  slots: {
7861
7861
  trigger: "single",
7862
7862
  content: "single"