json-ui-lite-rn 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +230 -0
  2. package/lib/commonjs/GenUINode.js +113 -0
  3. package/lib/commonjs/GenUINode.js.map +1 -0
  4. package/lib/commonjs/GenerativeUIView.js +116 -0
  5. package/lib/commonjs/GenerativeUIView.js.map +1 -0
  6. package/lib/commonjs/index.js +78 -0
  7. package/lib/commonjs/index.js.map +1 -0
  8. package/lib/commonjs/package.json +1 -0
  9. package/lib/commonjs/parseGenUIProps.js +53 -0
  10. package/lib/commonjs/parseGenUIProps.js.map +1 -0
  11. package/lib/commonjs/prompt.js +27 -0
  12. package/lib/commonjs/prompt.js.map +1 -0
  13. package/lib/commonjs/registry.js +70 -0
  14. package/lib/commonjs/registry.js.map +1 -0
  15. package/lib/commonjs/tools.js +386 -0
  16. package/lib/commonjs/tools.js.map +1 -0
  17. package/lib/module/GenUINode.js +108 -0
  18. package/lib/module/GenUINode.js.map +1 -0
  19. package/lib/module/GenerativeUIView.js +111 -0
  20. package/lib/module/GenerativeUIView.js.map +1 -0
  21. package/lib/module/index.js +9 -0
  22. package/lib/module/index.js.map +1 -0
  23. package/lib/module/parseGenUIProps.js +49 -0
  24. package/lib/module/parseGenUIProps.js.map +1 -0
  25. package/lib/module/prompt.js +23 -0
  26. package/lib/module/prompt.js.map +1 -0
  27. package/lib/module/registry.js +66 -0
  28. package/lib/module/registry.js.map +1 -0
  29. package/lib/module/tools.js +383 -0
  30. package/lib/module/tools.js.map +1 -0
  31. package/lib/typescript/GenUINode.d.ts +12 -0
  32. package/lib/typescript/GenUINode.d.ts.map +1 -0
  33. package/lib/typescript/GenerativeUIView.d.ts +23 -0
  34. package/lib/typescript/GenerativeUIView.d.ts.map +1 -0
  35. package/lib/typescript/index.d.ts +8 -0
  36. package/lib/typescript/index.d.ts.map +1 -0
  37. package/lib/typescript/parseGenUIProps.d.ts +20 -0
  38. package/lib/typescript/parseGenUIProps.d.ts.map +1 -0
  39. package/lib/typescript/prompt.d.ts +12 -0
  40. package/lib/typescript/prompt.d.ts.map +1 -0
  41. package/lib/typescript/registry.d.ts +36 -0
  42. package/lib/typescript/registry.d.ts.map +1 -0
  43. package/lib/typescript/tools.d.ts +119 -0
  44. package/lib/typescript/tools.d.ts.map +1 -0
  45. package/package.json +56 -0
  46. package/src/GenUINode.tsx +115 -0
  47. package/src/GenerativeUIView.tsx +137 -0
  48. package/src/index.ts +25 -0
  49. package/src/parseGenUIProps.ts +59 -0
  50. package/src/prompt.ts +49 -0
  51. package/src/registry.ts +73 -0
  52. package/src/tools.ts +392 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["tool","z","DEFAULT_GEN_UI_ROOT_ID","GEN_UI_NODE_HINTS","GEN_UI_NODE_NAMES_THAT_SUPPORT_CHILDREN","smartParse","props","JSON","parse","defaultCreateId","Date","now","toString","Math","random","slice","cloneSpec","spec","elements","Object","fromEntries","entries","map","id","element","children","mutationQueue","Promise","resolve","withMutationLock","run","release","pending","previous","then","createGenUITools","contextId","getSpec","updateSpec","createId","rootId","nodeHints","nodeNamesThatSupportChildren","toolWrapper","_","execute","cachedSpec","readSpec","commitSpec","getUIRootNode","description","inputSchema","object","root","type","getUINode","string","optional","describe","node","nodeId","childId","getUILayout","nodes","parentByChild","parentId","keys","getAvailableUINodes","name","setUINodeProps","replace","boolean","propsArg","parsedProps","success","message","current","nextProps","deleteUINode","key","includes","filter","addUINode","console","warn","newId","parent","push","reorderUINodes","offset","number","findParentId","nodeParentId","currentChildren","nodeIndex","indexOf","fromIndex","toIndex","appliedOffset","childIds","maxIndex","length","min","max","splice"],"sourceRoot":"../../src","sources":["tools.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { GenUIStylesConfig } from './parseGenUIProps';
3
+ import { type JsonUISpec } from './registry';
4
+ export type GenUINodeProps = {
5
+ nodeId: string;
6
+ elements: JsonUISpec['elements'];
7
+ styles: GenUIStylesConfig;
8
+ /** When provided by GenerativeUIView, used to render children so custom types are handled at any depth. */
9
+ GenUINodeComponent?: React.ComponentType<GenUINodeProps>;
10
+ };
11
+ export declare function GenUINode({ nodeId, elements, styles: styleValidators, GenUINodeComponent, }: GenUINodeProps): React.JSX.Element | null;
12
+ //# sourceMappingURL=GenUINode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenUINode.d.ts","sourceRoot":"","sources":["../../src/GenUINode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;IAChC,MAAM,EAAE,iBAAiB,CAAA;IACzB,2GAA2G;IAC3G,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;CACzD,CAAA;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAQ,EACR,MAAM,EAAE,eAAe,EACvB,kBAAkB,GACnB,EAAE,cAAc,4BA6DhB"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import type { GenUINodeProps } from './GenUINode';
3
+ import type { GenUIStylesConfig } from './parseGenUIProps';
4
+ import { GEN_UI_STYLES, type JsonUISpec } from './registry';
5
+ export type GenerativeUIViewProps = {
6
+ /** Normalized spec (root + elements with root node "root"). */
7
+ spec: JsonUISpec | null | undefined;
8
+ loading?: boolean;
9
+ /** Show expandable JSON payload for the current UI spec. */
10
+ showCollapsibleJSON?: boolean;
11
+ /**
12
+ * Override or extend style validators (zod schemas) for node props.
13
+ * Merged with default GEN_UI_STYLES and passed to GenUINode.
14
+ */
15
+ styles?: Partial<typeof GEN_UI_STYLES> & GenUIStylesConfig;
16
+ /**
17
+ * Custom node renderer. Receives nodeId, elements, styles (same as default GenUINode).
18
+ * Use for custom component types; delegate to default GenUINode for others.
19
+ */
20
+ GenUINodeComponent?: React.ComponentType<GenUINodeProps>;
21
+ };
22
+ export declare function GenerativeUIView({ spec, loading, showCollapsibleJSON, styles: stylesOverride, GenUINodeComponent, }: GenerativeUIViewProps): React.JSX.Element;
23
+ //# sourceMappingURL=GenerativeUIView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerativeUIView.d.ts","sourceRoot":"","sources":["../../src/GenerativeUIView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAE3D,MAAM,MAAM,qBAAqB,GAAG;IAClC,+DAA+D;IAC/D,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,aAAa,CAAC,GAAG,iBAAiB,CAAA;IAC1D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;CACzD,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,OAAO,EACP,mBAAmB,EACnB,MAAM,EAAE,cAAc,EACtB,kBAAkB,GACnB,EAAE,qBAAqB,qBAuDvB"}
@@ -0,0 +1,8 @@
1
+ export { GenerativeUIView, type GenerativeUIViewProps, } from './GenerativeUIView';
2
+ export { GenUINode, type GenUINodeProps } from './GenUINode';
3
+ export { type GenUIStylesConfig, type ParsedGenUIProps, parseGenUIElementProps, type ParseGenUIElementPropsOptions, } from './parseGenUIProps';
4
+ export { buildGenUISystemPrompt, type BuildGenUISystemPromptOptions, } from './prompt';
5
+ export type { JsonUIElement, JsonUISpec } from './registry';
6
+ export { DEFAULT_GEN_UI_ROOT_ID, GEN_UI_NODE_HINTS, GEN_UI_NODE_NAMES, GEN_UI_NODE_NAMES_THAT_SUPPORT_CHILDREN, GEN_UI_STYLE_HINTS, GEN_UI_STYLES, } from './registry';
7
+ export { type CreateGenTUIoolsOptions, createGenUITools } from './tools';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,uCAAuC,EACvC,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { z } from 'zod';
2
+ import type { JsonUIElement } from './registry';
3
+ export type GenUIStylesConfig = Record<string, z.ZodTypeAny>;
4
+ export type ParsedGenUIProps = {
5
+ baseStyle: Record<string, unknown>;
6
+ text: string | undefined;
7
+ label: string | undefined;
8
+ props: Record<string, unknown>;
9
+ };
10
+ export type ParseGenUIElementPropsOptions = {
11
+ nodeId?: string;
12
+ type?: string;
13
+ };
14
+ /**
15
+ * Parses a JSON UI element's props into a baseStyle object (validated by style validators)
16
+ * and common fields (text, label). Use this in custom GenUINode implementations to reuse
17
+ * the same style and prop parsing as the default renderer.
18
+ */
19
+ export declare function parseGenUIElementProps(element: JsonUIElement, styleValidators: GenUIStylesConfig, options?: ParseGenUIElementPropsOptions): ParsedGenUIProps;
20
+ //# sourceMappingURL=parseGenUIProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseGenUIProps.d.ts","sourceRoot":"","sources":["../../src/parseGenUIProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,eAAe,EAAE,iBAAiB,EAClC,OAAO,CAAC,EAAE,6BAA6B,GACtC,gBAAgB,CA+BlB"}
@@ -0,0 +1,12 @@
1
+ type StyleHints = Record<string, {
2
+ type: 'number' | 'string';
3
+ description?: string;
4
+ }>;
5
+ export type BuildGenUISystemPromptOptions = {
6
+ additionalInstructions?: string;
7
+ requireLayoutReadBeforeAddingNodes?: boolean;
8
+ styleHints?: StyleHints;
9
+ };
10
+ export declare function buildGenUISystemPrompt({ additionalInstructions, requireLayoutReadBeforeAddingNodes, styleHints, }?: BuildGenUISystemPromptOptions): string;
11
+ export {};
12
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,MAAM,CACtB,MAAM,EACN;IACE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CACF,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kCAAkC,CAAC,EAAE,OAAO,CAAA;IAC5C,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB,CAAA;AAED,wBAAgB,sBAAsB,CAAC,EACrC,sBAAsB,EACtB,kCAAyC,EACzC,UAA+B,GAChC,GAAE,6BAAkC,UA4BpC"}
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ export type JsonUIElement = {
3
+ type: string;
4
+ props: Record<string, unknown>;
5
+ children?: string[];
6
+ };
7
+ export type JsonUISpec = {
8
+ root: string;
9
+ elements: Record<string, JsonUIElement>;
10
+ };
11
+ export declare const DEFAULT_GEN_UI_ROOT_ID = "root";
12
+ export declare const GEN_UI_NODE_NAMES: {
13
+ readonly Text: "Text";
14
+ readonly Paragraph: "Paragraph";
15
+ readonly Label: "Label";
16
+ readonly Heading: "Heading";
17
+ readonly Button: "Button";
18
+ readonly TextInput: "TextInput";
19
+ };
20
+ export declare const GEN_UI_NODE_NAMES_THAT_SUPPORT_CHILDREN: string[];
21
+ export declare const GEN_UI_NODE_HINTS: Record<keyof typeof GEN_UI_NODE_NAMES, string>;
22
+ export declare const GEN_UI_STYLES: {
23
+ flex: z.ZodNumber;
24
+ padding: z.ZodNumber;
25
+ gap: z.ZodNumber;
26
+ backgroundColor: z.ZodString;
27
+ color: z.ZodString;
28
+ fontSize: z.ZodNumber;
29
+ fontWeight: z.ZodString;
30
+ textAlign: z.ZodString;
31
+ };
32
+ export declare const GEN_UI_STYLE_HINTS: Record<keyof typeof GEN_UI_STYLES, {
33
+ type: 'number' | 'string';
34
+ description?: string;
35
+ }>;
36
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,sBAAsB,SAAS,CAAA;AAE5C,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAA;AAEV,eAAO,MAAM,uCAAuC,EAAE,MAAM,EAAO,CAAA;AAEnE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,OAAO,iBAAiB,EAAE,MAAM,CAS1E,CAAA;AAEH,eAAO,MAAM,aAAa;;;;;;;;;CASzB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,MAAM,OAAO,aAAa,EAC1B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBpD,CAAA"}
@@ -0,0 +1,119 @@
1
+ import { type JsonUISpec } from './registry';
2
+ export type CreateGenTUIoolsOptions<TSpec extends JsonUISpec = JsonUISpec> = {
3
+ contextId: string;
4
+ getSpec: (contextId: string) => TSpec | null;
5
+ updateSpec: (contextId: string, spec: TSpec | null) => void;
6
+ createId?: () => string;
7
+ rootId?: string;
8
+ nodeHints?: Record<string, string>;
9
+ nodeNamesThatSupportChildren?: readonly string[];
10
+ toolWrapper?: <TArgs, TResult>(toolName: string, execute: (args: TArgs) => Promise<TResult>) => (args: TArgs) => Promise<TResult>;
11
+ };
12
+ /**
13
+ * Creates generative UI tools that read/update a JSON UI spec.
14
+ */
15
+ export declare function createGenUITools<TSpec extends JsonUISpec = JsonUISpec>({ contextId, getSpec, updateSpec, createId, rootId, nodeHints, nodeNamesThatSupportChildren, toolWrapper, }: CreateGenTUIoolsOptions<TSpec>): {
16
+ getUIRootNode: import("ai").Tool<Record<string, never>, {
17
+ root: null;
18
+ } | {
19
+ root: {
20
+ id: string;
21
+ type: string;
22
+ props: Record<string, unknown>;
23
+ children: {
24
+ id: string;
25
+ type: string;
26
+ }[];
27
+ };
28
+ }>;
29
+ getUINode: import("ai").Tool<{
30
+ id?: string | undefined;
31
+ }, {
32
+ node: null;
33
+ } | {
34
+ node: {
35
+ id: string;
36
+ type: string;
37
+ props: Record<string, unknown>;
38
+ children: {
39
+ id: string;
40
+ type: string;
41
+ }[];
42
+ };
43
+ }>;
44
+ getUILayout: import("ai").Tool<Record<string, never>, {
45
+ root: null;
46
+ nodes: never[];
47
+ } | {
48
+ root: string;
49
+ nodes: {
50
+ id: string;
51
+ type: string;
52
+ parentId: string | null;
53
+ children: string[];
54
+ props: string[];
55
+ }[];
56
+ }>;
57
+ getAvailableUINodes: import("ai").Tool<Record<string, never>, {
58
+ nodes: {
59
+ name: string;
60
+ props: string;
61
+ }[];
62
+ }>;
63
+ setUINodeProps: import("ai").Tool<{
64
+ id: string;
65
+ props: string;
66
+ replace?: boolean | undefined;
67
+ }, {
68
+ success: boolean;
69
+ message: string;
70
+ } | {
71
+ success: boolean;
72
+ message?: undefined;
73
+ }>;
74
+ deleteUINode: import("ai").Tool<{
75
+ id: string;
76
+ }, {
77
+ success: boolean;
78
+ message: string;
79
+ } | {
80
+ success: boolean;
81
+ message?: undefined;
82
+ }>;
83
+ addUINode: import("ai").Tool<{
84
+ type: string;
85
+ parentId?: string | undefined;
86
+ props?: string | undefined;
87
+ }, {
88
+ success: boolean;
89
+ message: string;
90
+ id?: undefined;
91
+ } | {
92
+ success: boolean;
93
+ id: string;
94
+ message?: undefined;
95
+ }>;
96
+ reorderUINodes: import("ai").Tool<{
97
+ nodeId: string;
98
+ offset: number;
99
+ }, {
100
+ success: boolean;
101
+ message: string;
102
+ parentId?: undefined;
103
+ nodeId?: undefined;
104
+ fromIndex?: undefined;
105
+ toIndex?: undefined;
106
+ appliedOffset?: undefined;
107
+ childIds?: undefined;
108
+ } | {
109
+ success: boolean;
110
+ parentId: string;
111
+ nodeId: string;
112
+ fromIndex: number;
113
+ toIndex: number;
114
+ appliedOffset: number;
115
+ childIds: string[];
116
+ message?: undefined;
117
+ }>;
118
+ };
119
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA;AAcnB,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,IAAI;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAA;IAC5C,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KACvC,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvC,CAAA;AAmCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,EACtE,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAA0B,EAC1B,MAA+B,EAC/B,SAA6B,EAC7B,4BAAsE,EACtE,WAAqC,GACtC,EAAE,uBAAuB,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsThC"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "json-ui-lite-rn",
3
+ "version": "0.12.0",
4
+ "description": "Lightweight JSON UI generation for React Native based on tool calling, compatible with Vercel AI SDK",
5
+ "main": "lib/commonjs/index",
6
+ "module": "lib/module/index",
7
+ "types": "lib/typescript/index.d.ts",
8
+ "react-native": "src/index",
9
+ "source": "src/index",
10
+ "files": [
11
+ "src",
12
+ "lib",
13
+ "!**/__tests__",
14
+ "!**/__fixtures__",
15
+ "!**/__mocks__",
16
+ "!**/.*",
17
+ "README.md"
18
+ ],
19
+ "author": "artus9033 <artus9033@gmail.com>",
20
+ "scripts": {
21
+ "clean": "del-cli lib",
22
+ "typecheck": "tsc --noEmit",
23
+ "prepare": "bob build"
24
+ },
25
+ "dependencies": {
26
+ "ai": "^6.0.0",
27
+ "zod": "^4.0.0"
28
+ },
29
+ "peerDependencies": {
30
+ "react": "*",
31
+ "react-native": "*"
32
+ },
33
+ "react-native-builder-bob": {
34
+ "source": "src",
35
+ "output": "lib",
36
+ "targets": [
37
+ "commonjs",
38
+ "module",
39
+ [
40
+ "typescript",
41
+ {
42
+ "project": "tsconfig.build.json"
43
+ }
44
+ ]
45
+ ]
46
+ },
47
+ "keywords": [
48
+ "react-native",
49
+ "ui",
50
+ "generative",
51
+ "llm",
52
+ "ai",
53
+ "sdk",
54
+ "on-device"
55
+ ]
56
+ }
@@ -0,0 +1,115 @@
1
+ import React from 'react'
2
+ import { Pressable, StyleSheet, Text, TextInput, View } from 'react-native'
3
+
4
+ import type { GenUIStylesConfig } from './parseGenUIProps'
5
+ import { parseGenUIElementProps } from './parseGenUIProps'
6
+ import { GEN_UI_NODE_NAMES, type JsonUISpec } from './registry'
7
+
8
+ export type GenUINodeProps = {
9
+ nodeId: string
10
+ elements: JsonUISpec['elements']
11
+ styles: GenUIStylesConfig
12
+ /** When provided by GenerativeUIView, used to render children so custom types are handled at any depth. */
13
+ GenUINodeComponent?: React.ComponentType<GenUINodeProps>
14
+ }
15
+
16
+ export function GenUINode({
17
+ nodeId,
18
+ elements,
19
+ styles: styleValidators,
20
+ GenUINodeComponent,
21
+ }: GenUINodeProps) {
22
+ const element = elements[nodeId]
23
+ if (!element) return null
24
+
25
+ const { type, props, children = [] } = element
26
+ const { baseStyle, text, label } = parseGenUIElementProps(
27
+ element,
28
+ styleValidators,
29
+ { nodeId, type }
30
+ )
31
+
32
+ const ChildRenderer = GenUINodeComponent ?? GenUINode
33
+ const childProps: Omit<GenUINodeProps, 'nodeId'> = {
34
+ elements,
35
+ styles: styleValidators,
36
+ GenUINodeComponent,
37
+ }
38
+
39
+ switch (type) {
40
+ case 'Container':
41
+ return (
42
+ <View style={[styles.container, baseStyle]}>
43
+ {children.map((id) => (
44
+ <ChildRenderer key={id} {...childProps} nodeId={id} />
45
+ ))}
46
+ </View>
47
+ )
48
+
49
+ case GEN_UI_NODE_NAMES.Text:
50
+ case GEN_UI_NODE_NAMES.Paragraph:
51
+ case GEN_UI_NODE_NAMES.Label:
52
+ case GEN_UI_NODE_NAMES.Heading:
53
+ return <Text style={[styles.text, baseStyle]}>{text ?? label ?? ''}</Text>
54
+
55
+ case GEN_UI_NODE_NAMES.Button:
56
+ return (
57
+ <Pressable style={[styles.button, baseStyle]}>
58
+ <Text style={[styles.buttonText, baseStyle]}>
59
+ {label ?? text ?? ''}
60
+ </Text>
61
+ </Pressable>
62
+ )
63
+
64
+ case GEN_UI_NODE_NAMES.TextInput:
65
+ return (
66
+ <TextInput
67
+ placeholder={props?.placeholder as string}
68
+ style={[styles.textInput, baseStyle]}
69
+ onChangeText={() => {}}
70
+ />
71
+ )
72
+
73
+ default:
74
+ return (
75
+ <View style={[styles.container, baseStyle]}>
76
+ {children.map((id) => (
77
+ <ChildRenderer key={id} {...childProps} nodeId={id} />
78
+ ))}
79
+ </View>
80
+ )
81
+ }
82
+ }
83
+
84
+ const styles = StyleSheet.create({
85
+ container: {
86
+ gap: 8,
87
+ flex: 1,
88
+ },
89
+ text: {
90
+ fontSize: 16,
91
+ color: '#111827',
92
+ flex: 1,
93
+ },
94
+ button: {
95
+ paddingHorizontal: 16,
96
+ paddingVertical: 10,
97
+ backgroundColor: '#3b82f6',
98
+ borderRadius: 8,
99
+ alignSelf: 'flex-start',
100
+ flex: 1,
101
+ },
102
+ buttonText: {
103
+ flex: 1,
104
+ color: 'white',
105
+ },
106
+ textInput: {
107
+ borderWidth: 1,
108
+ borderColor: '#e0e0e0',
109
+ borderRadius: 8,
110
+ padding: 8,
111
+ fontSize: 16,
112
+ color: '#111827',
113
+ flex: 1,
114
+ },
115
+ })
@@ -0,0 +1,137 @@
1
+ import React from 'react'
2
+ import { Pressable, StyleSheet, Text, View } from 'react-native'
3
+
4
+ import type { GenUINodeProps } from './GenUINode'
5
+ import { GenUINode } from './GenUINode'
6
+ import type { GenUIStylesConfig } from './parseGenUIProps'
7
+ import { GEN_UI_STYLES, type JsonUISpec } from './registry'
8
+
9
+ export type GenerativeUIViewProps = {
10
+ /** Normalized spec (root + elements with root node "root"). */
11
+ spec: JsonUISpec | null | undefined
12
+ loading?: boolean
13
+ /** Show expandable JSON payload for the current UI spec. */
14
+ showCollapsibleJSON?: boolean
15
+ /**
16
+ * Override or extend style validators (zod schemas) for node props.
17
+ * Merged with default GEN_UI_STYLES and passed to GenUINode.
18
+ */
19
+ styles?: Partial<typeof GEN_UI_STYLES> & GenUIStylesConfig
20
+ /**
21
+ * Custom node renderer. Receives nodeId, elements, styles (same as default GenUINode).
22
+ * Use for custom component types; delegate to default GenUINode for others.
23
+ */
24
+ GenUINodeComponent?: React.ComponentType<GenUINodeProps>
25
+ }
26
+
27
+ export function GenerativeUIView({
28
+ spec,
29
+ loading,
30
+ showCollapsibleJSON,
31
+ styles: stylesOverride,
32
+ GenUINodeComponent,
33
+ }: GenerativeUIViewProps) {
34
+ const [expanded, setExpanded] = React.useState(false)
35
+ const normalized = React.useMemo(() => {
36
+ if (!spec?.root || !spec.elements) return null
37
+ const rootElement = spec.elements[spec.root]
38
+ if (!rootElement) return null
39
+ return spec
40
+ }, [spec])
41
+
42
+ const styleValidators: GenUIStylesConfig = React.useMemo(
43
+ () => ({ ...GEN_UI_STYLES, ...stylesOverride }),
44
+ [stylesOverride]
45
+ )
46
+
47
+ if (!normalized) {
48
+ return (
49
+ <View style={styles.placeholder}>
50
+ <Text style={styles.placeholderText}>
51
+ {loading
52
+ ? 'Loading…'
53
+ : 'Use tools getGenUIRootNode, addNode, etc. to build the UI.'}
54
+ </Text>
55
+ </View>
56
+ )
57
+ }
58
+
59
+ const NodeRenderer = GenUINodeComponent ?? GenUINode
60
+ return (
61
+ <View style={styles.wrapper}>
62
+ <NodeRenderer
63
+ nodeId={normalized.root}
64
+ elements={normalized.elements}
65
+ styles={styleValidators}
66
+ GenUINodeComponent={GenUINodeComponent}
67
+ />
68
+ {showCollapsibleJSON ? (
69
+ <View style={styles.jsonPanel}>
70
+ <Pressable
71
+ onPress={() => setExpanded((prev) => !prev)}
72
+ style={styles.jsonHeader}
73
+ >
74
+ <Text style={styles.jsonHeaderText}>UI JSON</Text>
75
+ <Text style={styles.jsonHeaderIcon}>
76
+ {expanded ? '[-]' : '[+]'}
77
+ </Text>
78
+ </Pressable>
79
+ {expanded ? (
80
+ <Text selectable style={styles.jsonText}>
81
+ {JSON.stringify(normalized, null, 2)}
82
+ </Text>
83
+ ) : null}
84
+ </View>
85
+ ) : null}
86
+ </View>
87
+ )
88
+ }
89
+
90
+ const styles = StyleSheet.create({
91
+ wrapper: {
92
+ flex: 1,
93
+ justifyContent: 'center',
94
+ gap: 8,
95
+ },
96
+ jsonPanel: {
97
+ borderWidth: 1,
98
+ borderColor: '#e5e7eb',
99
+ borderRadius: 12,
100
+ paddingHorizontal: 12,
101
+ paddingVertical: 10,
102
+ backgroundColor: '#f9fafb',
103
+ },
104
+ jsonHeader: {
105
+ flexDirection: 'row',
106
+ justifyContent: 'space-between',
107
+ alignItems: 'center',
108
+ gap: 8,
109
+ },
110
+ jsonHeaderText: {
111
+ fontSize: 13,
112
+ color: '#4b5563',
113
+ fontWeight: '600',
114
+ },
115
+ jsonHeaderIcon: {
116
+ fontSize: 12,
117
+ color: '#9ca3af',
118
+ fontWeight: '600',
119
+ },
120
+ jsonText: {
121
+ marginTop: 8,
122
+ fontSize: 12,
123
+ lineHeight: 18,
124
+ color: '#374151',
125
+ fontFamily: 'Menlo',
126
+ },
127
+ placeholder: {
128
+ flex: 1,
129
+ justifyContent: 'center',
130
+ padding: 24,
131
+ },
132
+ placeholderText: {
133
+ fontSize: 15,
134
+ color: '#6b7280',
135
+ textAlign: 'center',
136
+ },
137
+ })
package/src/index.ts ADDED
@@ -0,0 +1,25 @@
1
+ export {
2
+ GenerativeUIView,
3
+ type GenerativeUIViewProps,
4
+ } from './GenerativeUIView'
5
+ export { GenUINode, type GenUINodeProps } from './GenUINode'
6
+ export {
7
+ type GenUIStylesConfig,
8
+ type ParsedGenUIProps,
9
+ parseGenUIElementProps,
10
+ type ParseGenUIElementPropsOptions,
11
+ } from './parseGenUIProps'
12
+ export {
13
+ buildGenUISystemPrompt,
14
+ type BuildGenUISystemPromptOptions,
15
+ } from './prompt'
16
+ export type { JsonUIElement, JsonUISpec } from './registry'
17
+ export {
18
+ DEFAULT_GEN_UI_ROOT_ID,
19
+ GEN_UI_NODE_HINTS,
20
+ GEN_UI_NODE_NAMES,
21
+ GEN_UI_NODE_NAMES_THAT_SUPPORT_CHILDREN,
22
+ GEN_UI_STYLE_HINTS,
23
+ GEN_UI_STYLES,
24
+ } from './registry'
25
+ export { type CreateGenTUIoolsOptions, createGenUITools } from './tools'