@reforma/components 0.1.6 → 0.2.1

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 (129) hide show
  1. package/dist/Scrollable/Scrollable.d.ts +1 -2
  2. package/dist/Scrollable/Scrollable.d.ts.map +1 -1
  3. package/dist/Scrollable/Scrollable.js +45 -38
  4. package/dist/Scrollable/Scrollable.js.map +1 -1
  5. package/dist/Scrollable/useScrollChrome.d.ts +1 -2
  6. package/dist/Scrollable/useScrollChrome.d.ts.map +1 -1
  7. package/dist/Scrollable/useScrollChrome.js +125 -110
  8. package/dist/Scrollable/useScrollChrome.js.map +1 -1
  9. package/dist/chat/ComposerBanner/ComposerBanner.d.ts +2 -1
  10. package/dist/chat/ComposerBanner/ComposerBanner.d.ts.map +1 -1
  11. package/dist/chat/ComposerBanner/ComposerBanner.js +37 -29
  12. package/dist/chat/ComposerBanner/ComposerBanner.js.map +1 -1
  13. package/dist/chat/ComposerBanner/ComposerBanner.module.css +1 -1
  14. package/dist/chat/ComposerBanner/ComposerBanner.module.css.js +5 -3
  15. package/dist/chat/ComposerBanner/ComposerBanner.module.css.js.map +1 -1
  16. package/dist/chat/Tool/agent/AgentTool.d.ts.map +1 -1
  17. package/dist/chat/Tool/agent/AgentTool.js +89 -90
  18. package/dist/chat/Tool/agent/AgentTool.js.map +1 -1
  19. package/dist/chat/Tool/edit/EditTool.js +1 -1
  20. package/dist/chat/Tool/edit/EditTool.js.map +1 -1
  21. package/dist/node_modules/zod/v4/classic/errors.js +38 -0
  22. package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
  23. package/dist/node_modules/zod/v4/classic/parse.js +21 -0
  24. package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
  25. package/dist/node_modules/zod/v4/classic/schemas.js +822 -0
  26. package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
  27. package/dist/node_modules/zod/v4/core/api.js +561 -0
  28. package/dist/node_modules/zod/v4/core/api.js.map +1 -0
  29. package/dist/node_modules/zod/v4/core/checks.js +262 -0
  30. package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
  31. package/dist/node_modules/zod/v4/core/core.js +97 -0
  32. package/dist/node_modules/zod/v4/core/core.js.map +1 -0
  33. package/dist/node_modules/zod/v4/core/doc.js +35 -0
  34. package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
  35. package/dist/node_modules/zod/v4/core/errors.js +79 -0
  36. package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
  37. package/dist/node_modules/zod/v4/core/json-schema-processors.js +308 -0
  38. package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
  39. package/dist/node_modules/zod/v4/core/memoizer.js +203 -0
  40. package/dist/node_modules/zod/v4/core/memoizer.js.map +1 -0
  41. package/dist/node_modules/zod/v4/core/parse.js +113 -0
  42. package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
  43. package/dist/node_modules/zod/v4/core/regexes.js +59 -0
  44. package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
  45. package/dist/node_modules/zod/v4/core/registries.js +41 -0
  46. package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
  47. package/dist/node_modules/zod/v4/core/schemas.js +1104 -0
  48. package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
  49. package/dist/node_modules/zod/v4/core/to-json-schema.js +380 -0
  50. package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
  51. package/dist/node_modules/zod/v4/core/util.js +465 -0
  52. package/dist/node_modules/zod/v4/core/util.js.map +1 -0
  53. package/dist/node_modules/zod/v4/core/versions.js +9 -0
  54. package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
  55. package/dist/node_modules/zod/v4/locales/en.js +97 -0
  56. package/dist/node_modules/zod/v4/locales/en.js.map +1 -0
  57. package/dist/openui/actions.d.ts +16 -0
  58. package/dist/openui/actions.d.ts.map +1 -0
  59. package/dist/openui/actions.js +58 -0
  60. package/dist/openui/actions.js.map +1 -0
  61. package/dist/openui/components/controls.d.ts +34 -0
  62. package/dist/openui/components/controls.d.ts.map +1 -0
  63. package/dist/openui/components/controls.js +40 -0
  64. package/dist/openui/components/controls.js.map +1 -0
  65. package/dist/openui/components/layout.d.ts +74 -0
  66. package/dist/openui/components/layout.d.ts.map +1 -0
  67. package/dist/openui/components/layout.js +154 -0
  68. package/dist/openui/components/layout.js.map +1 -0
  69. package/dist/openui/components/list.d.ts +17 -0
  70. package/dist/openui/components/list.d.ts.map +1 -0
  71. package/dist/openui/components/list.js +96 -0
  72. package/dist/openui/components/list.js.map +1 -0
  73. package/dist/openui/components/svg.d.ts +100 -0
  74. package/dist/openui/components/svg.d.ts.map +1 -0
  75. package/dist/openui/components/svg.js +246 -0
  76. package/dist/openui/components/svg.js.map +1 -0
  77. package/dist/openui/components/table.d.ts +6 -0
  78. package/dist/openui/components/table.d.ts.map +1 -0
  79. package/dist/openui/components/table.js +54 -0
  80. package/dist/openui/components/table.js.map +1 -0
  81. package/dist/openui/components/text.d.ts +89 -0
  82. package/dist/openui/components/text.d.ts.map +1 -0
  83. package/dist/openui/components/text.js +181 -0
  84. package/dist/openui/components/text.js.map +1 -0
  85. package/dist/openui/functions/colors.d.ts +12 -0
  86. package/dist/openui/functions/colors.d.ts.map +1 -0
  87. package/dist/openui/functions/colors.js +32 -0
  88. package/dist/openui/functions/colors.js.map +1 -0
  89. package/dist/openui/functions/data.d.ts +170 -0
  90. package/dist/openui/functions/data.d.ts.map +1 -0
  91. package/dist/openui/functions/data.js +308 -0
  92. package/dist/openui/functions/data.js.map +1 -0
  93. package/dist/openui/functions/dates.d.ts +57 -0
  94. package/dist/openui/functions/dates.d.ts.map +1 -0
  95. package/dist/openui/functions/dates.js +184 -0
  96. package/dist/openui/functions/dates.js.map +1 -0
  97. package/dist/openui/functions/index.d.ts +136 -0
  98. package/dist/openui/functions/index.d.ts.map +1 -0
  99. package/dist/openui/functions/index.js +11 -0
  100. package/dist/openui/functions/index.js.map +1 -0
  101. package/dist/openui/functions/lists.d.ts +102 -0
  102. package/dist/openui/functions/lists.d.ts.map +1 -0
  103. package/dist/openui/functions/lists.js +305 -0
  104. package/dist/openui/functions/lists.js.map +1 -0
  105. package/dist/openui/functions/numbers.d.ts +72 -0
  106. package/dist/openui/functions/numbers.d.ts.map +1 -0
  107. package/dist/openui/functions/numbers.js +201 -0
  108. package/dist/openui/functions/numbers.js.map +1 -0
  109. package/dist/openui/functions/shared.d.ts +28 -0
  110. package/dist/openui/functions/shared.d.ts.map +1 -0
  111. package/dist/openui/functions/shared.js +69 -0
  112. package/dist/openui/functions/shared.js.map +1 -0
  113. package/dist/openui/functions/text.d.ts +97 -0
  114. package/dist/openui/functions/text.d.ts.map +1 -0
  115. package/dist/openui/functions/text.js +223 -0
  116. package/dist/openui/functions/text.js.map +1 -0
  117. package/dist/openui/index.d.ts +5 -0
  118. package/dist/openui/index.d.ts.map +1 -0
  119. package/dist/openui/index.js +14 -0
  120. package/dist/openui/index.js.map +1 -0
  121. package/dist/openui/library.d.ts +8 -0
  122. package/dist/openui/library.d.ts.map +1 -0
  123. package/dist/openui/library.js +37 -0
  124. package/dist/openui/library.js.map +1 -0
  125. package/dist/openui/schema.d.ts +36 -0
  126. package/dist/openui/schema.d.ts.map +1 -0
  127. package/dist/openui/schema.js +24 -0
  128. package/dist/openui/schema.js.map +1 -0
  129. package/package.json +4 -2
@@ -0,0 +1,96 @@
1
+ import { defineComponent as c } from "@openuidev/react-lang";
2
+ import { Box as i } from "../../Box/Box.js";
3
+ import { Text as t } from "../../Text/Text.js";
4
+ import { children as h } from "../schema.js";
5
+ import { jsx as n, jsxs as a } from "react/jsx-runtime";
6
+ import { object as s, boolean as p, enum as f, array as b, union as g, string as r, any as y } from "../../node_modules/zod/v4/classic/schemas.js";
7
+ const S = c({
8
+ name: "ListItem",
9
+ props: s({
10
+ title: r(),
11
+ description: r().optional(),
12
+ marker: r().optional(),
13
+ children: h.optional()
14
+ }),
15
+ description: "marker replaces the bullet or number, e.g. a time or an emoji.",
16
+ component: ({
17
+ props: e,
18
+ renderNode: l
19
+ }) => /* @__PURE__ */ a(i, {
20
+ direction: "column",
21
+ gap: "xs",
22
+ fullWidth: !0,
23
+ children: [/* @__PURE__ */ a(t, {
24
+ variant: "md",
25
+ bold: !0,
26
+ children: [e.marker ? `${e.marker} ` : "", e.title]
27
+ }), e.description ? /* @__PURE__ */ n(t, {
28
+ variant: "sm",
29
+ color: "secondary",
30
+ children: e.description
31
+ }) : null, e.children != null ? l(e.children) : null]
32
+ })
33
+ }), I = c({
34
+ name: "List",
35
+ props: s({
36
+ items: b(g([r(), y()])),
37
+ marker: f(["bullet", "number", "none"]).optional(),
38
+ timeline: p().optional()
39
+ }),
40
+ description: "List. marker: bullet (default), number, or none.",
41
+ component: ({
42
+ props: e,
43
+ renderNode: l
44
+ }) => {
45
+ const o = e.marker ?? "bullet", u = o !== "none";
46
+ return /* @__PURE__ */ n(i, {
47
+ as: "ol",
48
+ direction: "column",
49
+ gap: "md",
50
+ fullWidth: !0,
51
+ style: {
52
+ listStyle: "none",
53
+ padding: 0,
54
+ margin: 0,
55
+ borderLeft: e.timeline ? "2px solid var(--color-surface-border)" : void 0,
56
+ paddingInlineStart: e.timeline ? "var(--spacing-md)" : void 0
57
+ },
58
+ children: e.items.map((m, d) => /* @__PURE__ */ a(i, {
59
+ as: "li",
60
+ direction: "row",
61
+ gap: "sm",
62
+ align: "start",
63
+ fullWidth: !0,
64
+ style: {
65
+ listStyle: "none"
66
+ },
67
+ children: [u ? /* @__PURE__ */ n(t, {
68
+ variant: "md",
69
+ color: "secondary",
70
+ style: {
71
+ flexShrink: 0,
72
+ minWidth: o === "number" ? "1.5em" : "0.75em",
73
+ lineHeight: "var(--leading-md)"
74
+ },
75
+ children: o === "number" ? `${d + 1}.` : "•"
76
+ }) : null, /* @__PURE__ */ n(i, {
77
+ direction: "column",
78
+ gap: "xs",
79
+ fullWidth: !0,
80
+ style: {
81
+ minWidth: 0
82
+ },
83
+ children: typeof m == "string" ? /* @__PURE__ */ n(t, {
84
+ variant: "md",
85
+ children: m
86
+ }) : l(m)
87
+ })]
88
+ }, d))
89
+ });
90
+ }
91
+ });
92
+ export {
93
+ I as List,
94
+ S as ListItem
95
+ };
96
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sources":["../../../src/openui/components/list.tsx"],"sourcesContent":["import { defineComponent } from '@openuidev/react-lang';\nimport { z } from 'zod/v4';\n\nimport { Box } from '../../Box';\nimport { Text } from '../../Text';\nimport { children } from '../schema';\n\nexport const ListItem = defineComponent({\n name: 'ListItem',\n props: z.object({\n title: z.string(),\n description: z.string().optional(),\n marker: z.string().optional(),\n children: children.optional(),\n }),\n description: 'marker replaces the bullet or number, e.g. a time or an emoji.',\n component: ({ props, renderNode }) => (\n <Box direction=\"column\" gap=\"xs\" fullWidth>\n <Text variant=\"md\" bold>\n {props.marker ? `${props.marker} ` : ''}\n {props.title}\n </Text>\n {props.description ? (\n <Text variant=\"sm\" color=\"secondary\">{props.description}</Text>\n ) : null}\n {props.children != null ? renderNode(props.children) : null}\n </Box>\n ),\n});\n\nexport const List = defineComponent({\n name: 'List',\n props: z.object({\n items: z.array(z.union([z.string(), z.any()])),\n marker: z.enum(['bullet', 'number', 'none']).optional(),\n timeline: z.boolean().optional(),\n }),\n description: 'List. marker: bullet (default), number, or none.',\n component: ({ props, renderNode }) => {\n // Box is flex — native list-style markers never paint. Draw our own or stay flush.\n const marker = props.marker ?? 'bullet';\n const showMarker = marker !== 'none';\n\n return (\n <Box\n as=\"ol\"\n direction=\"column\"\n gap=\"md\"\n fullWidth\n style={{\n listStyle: 'none',\n padding: 0,\n margin: 0,\n borderLeft: props.timeline ? '2px solid var(--color-surface-border)' : undefined,\n paddingInlineStart: props.timeline ? 'var(--spacing-md)' : undefined,\n }}\n >\n {props.items.map((item, index) => (\n <Box\n as=\"li\"\n key={ index }\n direction=\"row\"\n gap=\"sm\"\n align=\"start\"\n fullWidth\n style={{ listStyle: 'none' }}\n >\n {showMarker ? (\n <Text\n variant=\"md\"\n color=\"secondary\"\n style={{\n flexShrink: 0,\n minWidth: marker === 'number' ? '1.5em' : '0.75em',\n lineHeight: 'var(--leading-md)',\n }}\n >\n {marker === 'number' ? `${index + 1}.` : '•'}\n </Text>\n ) : null}\n <Box direction=\"column\" gap=\"xs\" fullWidth style={{ minWidth: 0 }}>\n {typeof item === 'string'\n ? <Text variant=\"md\">{item}</Text>\n : renderNode(item)}\n </Box>\n </Box>\n ))}\n </Box>\n );\n },\n});\n"],"names":["ListItem","defineComponent","z.object","z.string","children","props","renderNode","Box","_jsxs","Text","List","z.array","z.union","z.any","z.enum","z.boolean","marker","showMarker","item","index","_jsx"],"mappings":";;;;;;AAMO,MAAMA,IAAWC,EAAgB;AAAA,EACtC,MAAM;AAAA,EACN,OAAOC,EAAS;AAAA,IACd,OAAOC,EAAE;AAAA,IACT,aAAaA,EAAE,EAAS,SAAA;AAAA,IACxB,QAAQA,EAAE,EAAS,SAAA;AAAA,IACnB,UAAUC,EAAS,SAAA;AAAA,EAAS,CAC7B;AAAA,EACD,aAAa;AAAA,EACb,WAAW,CAAC;AAAA,IACV,OAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,wBACuBC,GAAK;AAAA,IAC5B,WAAW;AAAA,IACX,KAAK;AAAA,IACL,WAAW;AAAA,IACX,UAAU,CAAcC,gBAAAA,EAAMC,GAAM;AAAA,MAClC,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU,CAACJ,EAAM,SAAS,GAAGA,EAAM,MAAM,MAAM,IAAIA,EAAM,KAAK;AAAA,IAAA,CAC/D,GAAGA,EAAM,gCAAgCI,GAAM;AAAA,MAC9C,SAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAUJ,EAAM;AAAA,IAAA,CACjB,IAAI,MAAMA,EAAM,YAAY,OAAOC,EAAWD,EAAM,QAAQ,IAAI,IAAI;AAAA,EAAA,CACtE;AACH,CAAC,GACYK,IAAOT,EAAgB;AAAA,EAClC,MAAM;AAAA,EACN,OAAOC,EAAS;AAAA,IACd,OAAOS,EAAQC,EAAQ,CAACT,EAAE,GAAUU,EAAE,CAAK,CAAC,CAAC;AAAA,IAC7C,QAAQC,EAAO,CAAC,UAAU,UAAU,MAAM,CAAC,EAAE,SAAA;AAAA,IAC7C,UAAUC,EAAE,EAAU,SAAA;AAAA,EAAS,CAChC;AAAA,EACD,aAAa;AAAA,EACb,WAAW,CAAC;AAAA,IACV,OAAAV;AAAA,IACA,YAAAC;AAAA,EAAA,MACI;AAEJ,UAAMU,IAASX,EAAM,UAAU,UACzBY,IAAaD,MAAW;AAC9B,6BAAyBT,GAAK;AAAA,MAC5B,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,KAAK;AAAA,MACL,WAAW;AAAA,MACX,OAAO;AAAA,QACL,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,YAAYF,EAAM,WAAW,0CAA0C;AAAA,QACvE,oBAAoBA,EAAM,WAAW,sBAAsB;AAAA,MAAA;AAAA,MAE7D,UAAUA,EAAM,MAAM,IAAI,CAACa,GAAMC,wBAA6BZ,GAAK;AAAA,QACjE,IAAI;AAAA,QACJ,WAAW;AAAA,QACX,KAAK;AAAA,QACL,OAAO;AAAA,QACP,WAAW;AAAA,QACX,OAAO;AAAA,UACL,WAAW;AAAA,QAAA;AAAA,QAEb,UAAU,CAACU,IAA0BG,gBAAAA,EAAKX,GAAM;AAAA,UAC9C,SAAS;AAAA,UACT,OAAO;AAAA,UACP,OAAO;AAAA,YACL,YAAY;AAAA,YACZ,UAAUO,MAAW,WAAW,UAAU;AAAA,YAC1C,YAAY;AAAA,UAAA;AAAA,UAEd,UAAUA,MAAW,WAAW,GAAGG,IAAQ,CAAC,MAAM;AAAA,QAAA,CACnD,IAAI,MAAmBC,gBAAAA,EAAKb,GAAK;AAAA,UAChC,WAAW;AAAA,UACX,KAAK;AAAA,UACL,WAAW;AAAA,UACX,OAAO;AAAA,YACL,UAAU;AAAA,UAAA;AAAA,UAEZ,UAAU,OAAOW,KAAS,6BAA6BT,GAAM;AAAA,YAC3D,SAAS;AAAA,YACT,UAAUS;AAAA,UAAA,CACX,IAAIZ,EAAWY,CAAI;AAAA,QAAA,CACrB,CAAC;AAAA,MAAA,GACDC,CAAK,CAAC;AAAA,IAAA,CACV;AAAA,EACH;AACF,CAAC;"}
@@ -0,0 +1,100 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const Svg: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
3
+ children: z.ZodAny;
4
+ viewBox: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>>;
6
+ export declare const G: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
7
+ children: z.ZodAny;
8
+ }, z.core.$strip>>;
9
+ export declare const Rect: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
10
+ x: z.ZodNumber;
11
+ y: z.ZodNumber;
12
+ width: z.ZodNumber;
13
+ height: z.ZodNumber;
14
+ fill: z.ZodOptional<z.ZodString>;
15
+ stroke: z.ZodOptional<z.ZodString>;
16
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
17
+ }, z.core.$strip>>;
18
+ export declare const Circle: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
19
+ cx: z.ZodNumber;
20
+ cy: z.ZodNumber;
21
+ r: z.ZodNumber;
22
+ fill: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>>;
24
+ export declare const Line: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
25
+ x1: z.ZodNumber;
26
+ y1: z.ZodNumber;
27
+ x2: z.ZodNumber;
28
+ y2: z.ZodNumber;
29
+ stroke: z.ZodOptional<z.ZodString>;
30
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
31
+ }, z.core.$strip>>;
32
+ export declare const Path: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
33
+ d: z.ZodString;
34
+ fill: z.ZodOptional<z.ZodString>;
35
+ stroke: z.ZodOptional<z.ZodString>;
36
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
37
+ }, z.core.$strip>>;
38
+ export declare const Polygon: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
39
+ points: z.ZodString;
40
+ fill: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>>;
42
+ export declare const SvgText: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
43
+ text: z.ZodString;
44
+ x: z.ZodNumber;
45
+ y: z.ZodNumber;
46
+ size: z.ZodOptional<z.ZodNumber>;
47
+ color: z.ZodOptional<z.ZodString>;
48
+ anchor: z.ZodOptional<z.ZodEnum<{
49
+ end: "end";
50
+ middle: "middle";
51
+ start: "start";
52
+ }>>;
53
+ }, z.core.$strip>>;
54
+ /** Bundle for createLibrary — not a React component. */
55
+ export declare const svgComponents: (import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
56
+ children: z.ZodAny;
57
+ viewBox: z.ZodOptional<z.ZodString>;
58
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
59
+ children: z.ZodAny;
60
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
61
+ x: z.ZodNumber;
62
+ y: z.ZodNumber;
63
+ width: z.ZodNumber;
64
+ height: z.ZodNumber;
65
+ fill: z.ZodOptional<z.ZodString>;
66
+ stroke: z.ZodOptional<z.ZodString>;
67
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
68
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
69
+ cx: z.ZodNumber;
70
+ cy: z.ZodNumber;
71
+ r: z.ZodNumber;
72
+ fill: z.ZodOptional<z.ZodString>;
73
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
74
+ x1: z.ZodNumber;
75
+ y1: z.ZodNumber;
76
+ x2: z.ZodNumber;
77
+ y2: z.ZodNumber;
78
+ stroke: z.ZodOptional<z.ZodString>;
79
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
80
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
81
+ d: z.ZodString;
82
+ fill: z.ZodOptional<z.ZodString>;
83
+ stroke: z.ZodOptional<z.ZodString>;
84
+ strokeWidth: z.ZodOptional<z.ZodNumber>;
85
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
86
+ points: z.ZodString;
87
+ fill: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>> | import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
89
+ text: z.ZodString;
90
+ x: z.ZodNumber;
91
+ y: z.ZodNumber;
92
+ size: z.ZodOptional<z.ZodNumber>;
93
+ color: z.ZodOptional<z.ZodString>;
94
+ anchor: z.ZodOptional<z.ZodEnum<{
95
+ end: "end";
96
+ middle: "middle";
97
+ start: "start";
98
+ }>>;
99
+ }, z.core.$strip>>)[];
100
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../../../src/openui/components/svg.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AA2E3B,eAAO,MAAM,GAAG;;;kBAwBd,CAAC;AAEH,eAAO,MAAM,CAAC;;kBAKZ,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;kBA2Bf,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;kBAuBjB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;kBAqBf,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;kBAiBf,CAAC;AAEH,eAAO,MAAM,OAAO;;;kBAUlB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;kBAkClB,CAAC;AAEH,wDAAwD;AAExD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAAuD,CAAC"}
@@ -0,0 +1,246 @@
1
+ import { defineComponent as i } from "@openuidev/react-lang";
2
+ import { children as f } from "../schema.js";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ import { object as l, string as r, number as o, enum as m } from "../../node_modules/zod/v4/classic/schemas.js";
5
+ function c(t) {
6
+ switch (t) {
7
+ case "muted":
8
+ case "faint":
9
+ return "var(--color-text-secondary)";
10
+ case "primary":
11
+ case "info":
12
+ return "var(--color-primary)";
13
+ case "success":
14
+ return "var(--color-success)";
15
+ case "warning":
16
+ return "var(--color-warning)";
17
+ case "danger":
18
+ return "var(--color-danger)";
19
+ case "surface":
20
+ return "var(--color-surface)";
21
+ default:
22
+ return "var(--color-text)";
23
+ }
24
+ }
25
+ function u(t) {
26
+ return /^[\dIVXLCDMivxlcdm]{1,4}$/.test(t.trim());
27
+ }
28
+ function x(t) {
29
+ if (t == null)
30
+ return !1;
31
+ const e = t.trim().toLowerCase();
32
+ return e === "surface" || e === "faint" || e === "white" || /^#?(fff|ffffff|f{6}|f{3})$/i.test(e);
33
+ }
34
+ function s(t) {
35
+ if (x(t))
36
+ return {
37
+ fill: "var(--color-surface)",
38
+ stroke: "var(--color-text-secondary)",
39
+ strokeWidth: 2
40
+ };
41
+ switch (t) {
42
+ case "muted":
43
+ return {
44
+ fill: "var(--color-surface)",
45
+ stroke: "var(--color-text-secondary)",
46
+ strokeWidth: 2
47
+ };
48
+ case "primary":
49
+ case "info":
50
+ return {
51
+ fill: "var(--color-primary)"
52
+ };
53
+ case "success":
54
+ return {
55
+ fill: "var(--color-success)"
56
+ };
57
+ case "warning":
58
+ return {
59
+ fill: "var(--color-warning)"
60
+ };
61
+ case "danger":
62
+ return {
63
+ fill: "var(--color-danger)"
64
+ };
65
+ default:
66
+ return {
67
+ fill: c(t)
68
+ };
69
+ }
70
+ }
71
+ const k = i({
72
+ name: "Svg",
73
+ props: l({
74
+ children: f,
75
+ viewBox: r().optional()
76
+ }),
77
+ description: 'SVG root, width-capped. Prefer viewBox like "0 0 400 80" for a timeline.',
78
+ component: ({
79
+ props: t,
80
+ renderNode: e
81
+ }) => /* @__PURE__ */ n("svg", {
82
+ viewBox: t.viewBox ?? "0 0 400 120",
83
+ width: "100%",
84
+ preserveAspectRatio: "xMidYMid meet",
85
+ style: {
86
+ display: "block",
87
+ marginInline: "auto",
88
+ // Small viewBoxes must not explode to card width (giant step numbers).
89
+ maxWidth: 420
90
+ },
91
+ fill: "none",
92
+ xmlns: "http://www.w3.org/2000/svg",
93
+ children: e(t.children)
94
+ })
95
+ }), v = i({
96
+ name: "G",
97
+ props: l({
98
+ children: f
99
+ }),
100
+ description: "SVG group.",
101
+ component: ({
102
+ props: t,
103
+ renderNode: e
104
+ }) => /* @__PURE__ */ n("g", {
105
+ children: e(t.children)
106
+ })
107
+ }), y = i({
108
+ name: "Rect",
109
+ props: l({
110
+ x: o(),
111
+ y: o(),
112
+ width: o(),
113
+ height: o(),
114
+ fill: r().optional(),
115
+ stroke: r().optional(),
116
+ strokeWidth: o().optional()
117
+ }),
118
+ description: "Rectangle.",
119
+ component: ({
120
+ props: t
121
+ }) => {
122
+ const e = s(t.fill ?? "muted");
123
+ return /* @__PURE__ */ n("rect", {
124
+ x: t.x,
125
+ y: t.y,
126
+ width: t.width,
127
+ height: t.height,
128
+ fill: e.fill,
129
+ stroke: t.stroke ? c(t.stroke) : e.stroke,
130
+ strokeWidth: t.strokeWidth ?? e.strokeWidth ?? 1
131
+ });
132
+ }
133
+ }), g = i({
134
+ name: "Circle",
135
+ props: l({
136
+ cx: o(),
137
+ cy: o(),
138
+ r: o(),
139
+ fill: r().optional()
140
+ }),
141
+ description: "Circle.",
142
+ component: ({
143
+ props: t
144
+ }) => {
145
+ const e = s(t.fill ?? "primary");
146
+ return /* @__PURE__ */ n("circle", {
147
+ cx: t.cx,
148
+ cy: t.cy,
149
+ r: t.r,
150
+ fill: e.fill,
151
+ stroke: e.stroke,
152
+ strokeWidth: e.strokeWidth
153
+ });
154
+ }
155
+ }), w = i({
156
+ name: "Line",
157
+ props: l({
158
+ x1: o(),
159
+ y1: o(),
160
+ x2: o(),
161
+ y2: o(),
162
+ stroke: r().optional(),
163
+ strokeWidth: o().optional()
164
+ }),
165
+ description: "Line.",
166
+ component: ({
167
+ props: t
168
+ }) => /* @__PURE__ */ n("line", {
169
+ x1: t.x1,
170
+ y1: t.y1,
171
+ x2: t.x2,
172
+ y2: t.y2,
173
+ stroke: c(t.stroke),
174
+ strokeWidth: t.strokeWidth ?? 2
175
+ })
176
+ }), p = i({
177
+ name: "Path",
178
+ props: l({
179
+ d: r(),
180
+ fill: r().optional(),
181
+ stroke: r().optional(),
182
+ strokeWidth: o().optional()
183
+ }),
184
+ description: "SVG path.",
185
+ component: ({
186
+ props: t
187
+ }) => /* @__PURE__ */ n("path", {
188
+ d: t.d,
189
+ fill: t.fill ? s(t.fill).fill : "none",
190
+ stroke: t.stroke ? c(t.stroke) : void 0,
191
+ strokeWidth: t.strokeWidth
192
+ })
193
+ }), W = i({
194
+ name: "Polygon",
195
+ props: l({
196
+ points: r(),
197
+ fill: r().optional()
198
+ }),
199
+ description: "Polygon (arrow heads, etc.).",
200
+ component: ({
201
+ props: t
202
+ }) => /* @__PURE__ */ n("polygon", {
203
+ points: t.points,
204
+ fill: s(t.fill ?? "ink").fill
205
+ })
206
+ }), S = i({
207
+ name: "SvgText",
208
+ props: l({
209
+ text: r(),
210
+ x: o(),
211
+ y: o(),
212
+ size: o().optional(),
213
+ color: r().optional(),
214
+ anchor: m(["start", "middle", "end"]).optional()
215
+ }),
216
+ description: "SVG text label.",
217
+ component: ({
218
+ props: t
219
+ }) => {
220
+ const e = typeof t.color == "string" ? t.color : void 0, h = u(t.text), d = e === "surface" || e === "faint" || e === "white", a = d && h;
221
+ return /* @__PURE__ */ n("text", {
222
+ x: t.x,
223
+ y: t.y,
224
+ fontSize: t.size ?? 12,
225
+ fontWeight: 600,
226
+ fill: a ? "var(--color-surface)" : d ? "var(--color-text-secondary)" : c(e),
227
+ stroke: a ? "var(--color-text)" : void 0,
228
+ strokeWidth: a ? 2.75 : void 0,
229
+ paintOrder: a ? "stroke fill" : void 0,
230
+ textAnchor: t.anchor ?? "middle",
231
+ children: t.text
232
+ });
233
+ }
234
+ }), V = [k, v, y, g, w, p, W, S];
235
+ export {
236
+ g as Circle,
237
+ v as G,
238
+ w as Line,
239
+ p as Path,
240
+ W as Polygon,
241
+ y as Rect,
242
+ k as Svg,
243
+ S as SvgText,
244
+ V as svgComponents
245
+ };
246
+ //# sourceMappingURL=svg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.js","sources":["../../../src/openui/components/svg.tsx"],"sourcesContent":["import { defineComponent } from '@openuidev/react-lang';\nimport { z } from 'zod/v4';\n\nimport { children } from '../schema';\n\n/** Stroke / shape-adjacent paint. */\nfunction ink(color: string | undefined): string {\n switch (color) {\n case 'muted':\n case 'faint':\n return 'var(--color-text-secondary)';\n case 'primary':\n case 'info':\n return 'var(--color-primary)';\n case 'success':\n return 'var(--color-success)';\n case 'warning':\n return 'var(--color-warning)';\n case 'danger':\n return 'var(--color-danger)';\n case 'surface':\n return 'var(--color-surface)';\n default:\n return 'var(--color-text)';\n }\n}\n\nfunction isStepIndex(text: string): boolean {\n return /^[\\dIVXLCDMivxlcdm]{1,4}$/.test(text.trim());\n}\n\nfunction isNearWhite(color: string | undefined): boolean {\n if (color == null) {\n return false;\n }\n\n const t = color.trim().toLowerCase();\n\n return t === 'surface' || t === 'faint' || t === 'white'\n || /^#?(fff|ffffff|f{6}|f{3})$/i.test(t);\n}\n\n/**\n * Inactive / future nodes must stay visible on a white card. Never paint a\n * bare page-surface fill — that is white-on-white with inverse SvgText.\n */\nfunction shapeFill(color: string | undefined): { fill: string; stroke?: string; strokeWidth?: number } {\n if (isNearWhite(color)) {\n return {\n fill: 'var(--color-surface)',\n stroke: 'var(--color-text-secondary)',\n strokeWidth: 2,\n };\n }\n\n switch (color) {\n case 'muted':\n return {\n fill: 'var(--color-surface)',\n stroke: 'var(--color-text-secondary)',\n strokeWidth: 2,\n };\n case 'primary':\n case 'info':\n return { fill: 'var(--color-primary)' };\n case 'success':\n return { fill: 'var(--color-success)' };\n case 'warning':\n return { fill: 'var(--color-warning)' };\n case 'danger':\n return { fill: 'var(--color-danger)' };\n default:\n return { fill: ink(color) };\n }\n}\n\nexport const Svg = defineComponent({\n name: 'Svg',\n props: z.object({\n children,\n viewBox: z.string().optional(),\n }),\n description: 'SVG root, width-capped. Prefer viewBox like \"0 0 400 80\" for a timeline.',\n component: ({ props, renderNode }) => (\n <svg\n viewBox={ props.viewBox ?? '0 0 400 120' }\n width=\"100%\"\n preserveAspectRatio=\"xMidYMid meet\"\n style={{\n display: 'block',\n marginInline: 'auto',\n // Small viewBoxes must not explode to card width (giant step numbers).\n maxWidth: 420,\n }}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {renderNode(props.children)}\n </svg>\n ),\n});\n\nexport const G = defineComponent({\n name: 'G',\n props: z.object({ children }),\n description: 'SVG group.',\n component: ({ props, renderNode }) => <g>{renderNode(props.children)}</g>,\n});\n\nexport const Rect = defineComponent({\n name: 'Rect',\n props: z.object({\n x: z.number(),\n y: z.number(),\n width: z.number(),\n height: z.number(),\n fill: z.string().optional(),\n stroke: z.string().optional(),\n strokeWidth: z.number().optional(),\n }),\n description: 'Rectangle.',\n component: ({ props }) => {\n const paint = shapeFill(props.fill ?? 'muted');\n\n return (\n <rect\n x={ props.x }\n y={ props.y }\n width={ props.width }\n height={ props.height }\n fill={ paint.fill }\n stroke={ props.stroke ? ink(props.stroke) : paint.stroke }\n strokeWidth={ props.strokeWidth ?? paint.strokeWidth ?? 1 }\n />\n );\n },\n});\n\nexport const Circle = defineComponent({\n name: 'Circle',\n props: z.object({\n cx: z.number(),\n cy: z.number(),\n r: z.number(),\n fill: z.string().optional(),\n }),\n description: 'Circle.',\n component: ({ props }) => {\n const paint = shapeFill(props.fill ?? 'primary');\n\n return (\n <circle\n cx={ props.cx }\n cy={ props.cy }\n r={ props.r }\n fill={ paint.fill }\n stroke={ paint.stroke }\n strokeWidth={ paint.strokeWidth }\n />\n );\n },\n});\n\nexport const Line = defineComponent({\n name: 'Line',\n props: z.object({\n x1: z.number(),\n y1: z.number(),\n x2: z.number(),\n y2: z.number(),\n stroke: z.string().optional(),\n strokeWidth: z.number().optional(),\n }),\n description: 'Line.',\n component: ({ props }) => (\n <line\n x1={ props.x1 }\n y1={ props.y1 }\n x2={ props.x2 }\n y2={ props.y2 }\n stroke={ ink(props.stroke) }\n strokeWidth={ props.strokeWidth ?? 2 }\n />\n ),\n});\n\nexport const Path = defineComponent({\n name: 'Path',\n props: z.object({\n d: z.string(),\n fill: z.string().optional(),\n stroke: z.string().optional(),\n strokeWidth: z.number().optional(),\n }),\n description: 'SVG path.',\n component: ({ props }) => (\n <path\n d={ props.d }\n fill={ props.fill ? shapeFill(props.fill).fill : 'none' }\n stroke={ props.stroke ? ink(props.stroke) : undefined }\n strokeWidth={ props.strokeWidth }\n />\n ),\n});\n\nexport const Polygon = defineComponent({\n name: 'Polygon',\n props: z.object({\n points: z.string(),\n fill: z.string().optional(),\n }),\n description: 'Polygon (arrow heads, etc.).',\n component: ({ props }) => (\n <polygon points={ props.points } fill={ shapeFill(props.fill ?? 'ink').fill } />\n ),\n});\n\nexport const SvgText = defineComponent({\n name: 'SvgText',\n props: z.object({\n text: z.string(),\n x: z.number(),\n y: z.number(),\n size: z.number().optional(),\n color: z.string().optional(),\n anchor: z.enum(['start', 'middle', 'end']).optional(),\n }),\n description: 'SVG text label.',\n component: ({ props }) => {\n const color = typeof props.color === 'string' ? props.color : undefined;\n const step = isStepIndex(props.text);\n const inverse = color === 'surface' || color === 'faint' || color === 'white';\n // White glyph + dark halo: readable on both filled (dark) and hollow (light) nodes.\n const halo = inverse && step;\n\n return (\n <text\n x={ props.x }\n y={ props.y }\n fontSize={ props.size ?? 12 }\n fontWeight={ 600 }\n fill={ halo ? 'var(--color-surface)' : inverse ? 'var(--color-text-secondary)' : ink(color) }\n stroke={ halo ? 'var(--color-text)' : undefined }\n strokeWidth={ halo ? 2.75 : undefined }\n paintOrder={ halo ? 'stroke fill' : undefined }\n textAnchor={ props.anchor ?? 'middle' }\n >\n {props.text}\n </text>\n );\n },\n});\n\n/** Bundle for createLibrary — not a React component. */\n// eslint-disable-next-line react-refresh/only-export-components -- library registration list\nexport const svgComponents = [Svg, G, Rect, Circle, Line, Path, Polygon, SvgText];\n"],"names":["ink","color","isStepIndex","text","isNearWhite","t","shapeFill","Svg","defineComponent","z.object","children","z.string","props","renderNode","G","Rect","z.number","paint","Circle","Line","Path","Polygon","SvgText","z.enum","step","inverse","halo","svgComponents"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const Table: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
3
+ columns: z.ZodArray<z.ZodString>;
4
+ rows: z.ZodArray<z.ZodArray<z.ZodAny>>;
5
+ }, z.core.$strip>>;
6
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/openui/components/table.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAW3B,eAAO,MAAM,KAAK;;;kBAgDhB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { defineComponent as m } from "@openuidev/react-lang";
2
+ import { Text as s } from "../../Text/Text.js";
3
+ import { jsxs as c, jsx as r } from "react/jsx-runtime";
4
+ import { object as p, array as o, any as h, string as f } from "../../node_modules/zod/v4/classic/schemas.js";
5
+ const i = {
6
+ padding: "var(--spacing-sm) var(--spacing-md)",
7
+ borderBottom: "1px solid var(--color-surface-border)",
8
+ verticalAlign: "middle"
9
+ }, x = m({
10
+ name: "Table",
11
+ props: p({
12
+ columns: o(f()),
13
+ rows: o(o(h()))
14
+ }),
15
+ description: "Each row lists its cells in column order; a cell may be a component.",
16
+ component: ({
17
+ props: n,
18
+ renderNode: a
19
+ }) => /* @__PURE__ */ c("table", {
20
+ style: {
21
+ width: "100%",
22
+ borderCollapse: "collapse",
23
+ fontSize: "var(--text-md)",
24
+ lineHeight: "var(--leading-md)"
25
+ },
26
+ children: [/* @__PURE__ */ r("thead", {
27
+ children: /* @__PURE__ */ r("tr", {
28
+ children: n.columns.map((e) => /* @__PURE__ */ r("th", {
29
+ style: {
30
+ ...i,
31
+ textAlign: "left",
32
+ color: "var(--color-text-secondary)",
33
+ fontWeight: 600
34
+ },
35
+ children: e
36
+ }, e))
37
+ })
38
+ }), /* @__PURE__ */ r("tbody", {
39
+ children: n.rows.map((e, l) => /* @__PURE__ */ r("tr", {
40
+ children: e.map((t, d) => /* @__PURE__ */ r("td", {
41
+ style: i,
42
+ children: typeof t == "string" || typeof t == "number" ? /* @__PURE__ */ r(s, {
43
+ variant: "md",
44
+ children: String(t)
45
+ }) : a(t)
46
+ }, d))
47
+ }, l))
48
+ })]
49
+ })
50
+ });
51
+ export {
52
+ x as Table
53
+ };
54
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sources":["../../../src/openui/components/table.tsx"],"sourcesContent":["import { defineComponent } from '@openuidev/react-lang';\nimport { z } from 'zod/v4';\n\nimport { Text } from '../../Text';\n\n/** Roomier cells — same pad on header and body so the header is not a stub row. */\nconst cellPad = {\n padding: 'var(--spacing-sm) var(--spacing-md)',\n borderBottom: '1px solid var(--color-surface-border)',\n verticalAlign: 'middle' as const,\n};\n\nexport const Table = defineComponent({\n name: 'Table',\n props: z.object({\n columns: z.array(z.string()),\n rows: z.array(z.array(z.any())),\n }),\n description: 'Each row lists its cells in column order; a cell may be a component.',\n component: ({ props, renderNode }) => (\n <table\n style={{\n width: '100%',\n borderCollapse: 'collapse',\n fontSize: 'var(--text-md)',\n lineHeight: 'var(--leading-md)',\n }}\n >\n <thead>\n <tr>\n {props.columns.map(col => (\n <th\n key={ col }\n style={{\n ...cellPad,\n textAlign: 'left',\n color: 'var(--color-text-secondary)',\n fontWeight: 600,\n }}\n >\n {col}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {props.rows.map((row, ri) => (\n <tr key={ ri }>\n {row.map((cell, ci) => (\n <td key={ ci } style={ cellPad }>\n {typeof cell === 'string' || typeof cell === 'number'\n ? <Text variant=\"md\">{String(cell)}</Text>\n : renderNode(cell)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n ),\n});\n"],"names":["cellPad","Table","defineComponent","z.object","z.array","z.string","z.any","props","renderNode","_jsx","col","row","ri","cell","ci","Text"],"mappings":";;;;AAMA,MAAMA,IAAU;AAAA,EACd,SAAS;AAAA,EACT,cAAc;AAAA,EACd,eAAe;AACjB,GACaC,IAAQC,EAAgB;AAAA,EACnC,MAAM;AAAA,EACN,OAAOC,EAAS;AAAA,IACd,SAASC,EAAQC,GAAU;AAAA,IAC3B,MAAMD,EAAQA,EAAQE,GAAO,CAAC;AAAA,EAAA,CAC/B;AAAA,EACD,aAAa;AAAA,EACb,WAAW,CAAC;AAAA,IACV,OAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,wBACuB,SAAS;AAAA,IAChC,OAAO;AAAA,MACL,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,YAAY;AAAA,IAAA;AAAA,IAEd,UAAU,CAAcC,gBAAAA,EAAK,SAAS;AAAA,MACpC,4BAA4B,MAAM;AAAA,QAChC,UAAUF,EAAM,QAAQ,IAAI,CAAAG,wBAAyB,MAAM;AAAA,UACzD,OAAO;AAAA,YACL,GAAGV;AAAA,YACH,WAAW;AAAA,YACX,OAAO;AAAA,YACP,YAAY;AAAA,UAAA;AAAA,UAEd,UAAUU;AAAA,QAAA,GACTA,CAAG,CAAC;AAAA,MAAA,CACR;AAAA,IAAA,CACF,GAAgBD,gBAAAA,EAAK,SAAS;AAAA,MAC7B,UAAUF,EAAM,KAAK,IAAI,CAACI,GAAKC,wBAAyB,MAAM;AAAA,QAC5D,UAAUD,EAAI,IAAI,CAACE,GAAMC,wBAAyB,MAAM;AAAA,UACtD,OAAOd;AAAA,UACP,UAAU,OAAOa,KAAS,YAAY,OAAOA,KAAS,6BAA6BE,GAAM;AAAA,YACvF,SAAS;AAAA,YACT,UAAU,OAAOF,CAAI;AAAA,UAAA,CACtB,IAAIL,EAAWK,CAAI;AAAA,QAAA,GACnBC,CAAE,CAAC;AAAA,MAAA,GACLF,CAAE,CAAC;AAAA,IAAA,CACP,CAAC;AAAA,EAAA,CACH;AACH,CAAC;"}
@@ -0,0 +1,89 @@
1
+ import { z } from 'zod/v4';
2
+ export declare const Title: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
3
+ text: z.ZodString;
4
+ size: z.ZodOptional<z.ZodEnum<{
5
+ "2xl": "2xl";
6
+ "3xl": "3xl";
7
+ lg: "lg";
8
+ md: "md";
9
+ sm: "sm";
10
+ xl: "xl";
11
+ }>>;
12
+ color: z.ZodOptional<z.ZodEnum<{
13
+ danger: "danger";
14
+ faint: "faint";
15
+ info: "info";
16
+ ink: "ink";
17
+ muted: "muted";
18
+ primary: "primary";
19
+ success: "success";
20
+ surface: "surface";
21
+ warning: "warning";
22
+ }>>;
23
+ }, z.core.$strip>>;
24
+ export declare const Text: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
25
+ text: z.ZodUnion<readonly [z.ZodString, z.ZodAny]>;
26
+ size: z.ZodOptional<z.ZodEnum<{
27
+ lg: "lg";
28
+ md: "md";
29
+ sm: "sm";
30
+ xs: "xs";
31
+ }>>;
32
+ color: z.ZodOptional<z.ZodEnum<{
33
+ danger: "danger";
34
+ faint: "faint";
35
+ info: "info";
36
+ ink: "ink";
37
+ muted: "muted";
38
+ primary: "primary";
39
+ success: "success";
40
+ surface: "surface";
41
+ warning: "warning";
42
+ }>>;
43
+ weight: z.ZodOptional<z.ZodEnum<{
44
+ medium: "medium";
45
+ normal: "normal";
46
+ semibold: "semibold";
47
+ }>>;
48
+ italic: z.ZodOptional<z.ZodBoolean>;
49
+ lineThrough: z.ZodOptional<z.ZodBoolean>;
50
+ tabularNums: z.ZodOptional<z.ZodBoolean>;
51
+ maxLines: z.ZodOptional<z.ZodNumber>;
52
+ }, z.core.$strip>>;
53
+ export declare const Caption: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
54
+ text: z.ZodString;
55
+ color: z.ZodOptional<z.ZodEnum<{
56
+ danger: "danger";
57
+ faint: "faint";
58
+ info: "info";
59
+ ink: "ink";
60
+ muted: "muted";
61
+ primary: "primary";
62
+ success: "success";
63
+ surface: "surface";
64
+ warning: "warning";
65
+ }>>;
66
+ }, z.core.$strip>>;
67
+ export declare const Label: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
68
+ text: z.ZodString;
69
+ }, z.core.$strip>>;
70
+ export declare const Badge: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
71
+ text: z.ZodString;
72
+ color: z.ZodOptional<z.ZodEnum<{
73
+ danger: "danger";
74
+ info: "info";
75
+ neutral: "neutral";
76
+ pink: "pink";
77
+ purple: "purple";
78
+ success: "success";
79
+ warning: "warning";
80
+ }>>;
81
+ }, z.core.$strip>>;
82
+ export declare const Link: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
83
+ text: z.ZodString;
84
+ url: z.ZodString;
85
+ }, z.core.$strip>>;
86
+ export declare const Markdown: import("@openuidev/react-lang").DefinedComponent<z.ZodObject<{
87
+ text: z.ZodString;
88
+ }, z.core.$strip>>;
89
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/openui/components/text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AA2C3B,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;kBAiBhB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2Cf,CAAC;AAEH,eAAO,MAAM,OAAO;;;;;;;;;;;;;kBAYlB,CAAC;AAEH,eAAO,MAAM,KAAK;;kBAShB,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;kBAwBhB,CAAC;AAEH,eAAO,MAAM,IAAI;;;kBAgBf,CAAC;AAEH,eAAO,MAAM,QAAQ;;kBAOnB,CAAC"}