{"_id":"@emeryld/ui-schema-tsx","_rev":"7-c54f915bcd2fff29dbc3cb695777d58e","name":"@emeryld/ui-schema-tsx","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.1":{"name":"@emeryld/ui-schema-tsx","version":"0.1.1","_id":"@emeryld/ui-schema-tsx@0.1.1","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"c18e10e319b330ae3b99f01bc050fc889ca22b81","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.1.tgz","fileCount":8,"integrity":"sha512-uuIyeM+ZfaLN4ue6yw9Wnllwp+uK0aRPQwPyfg9HV50Oa3r56zjDI3QKmHQhEcO+F2Gu6kvifYzlSSU9XrRflQ==","signatures":[{"sig":"MEUCIQC58F8uoSs+q7YHoyHZMOCz9hI0POlFvDKykBpohAFqBQIgZIuMIGwUJ8BNL7DLXThEZ2bqlK7GH6ZCl3HPP4nJl0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108269},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/e0174191990c014edb2466a7a0e91828/emeryld-ui-schema-tsx-0.1.1.tgz","_integrity":"sha512-uuIyeM+ZfaLN4ue6yw9Wnllwp+uK0aRPQwPyfg9HV50Oa3r56zjDI3QKmHQhEcO+F2Gu6kvifYzlSSU9XrRflQ==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.1","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.1_1777669914554_0.8136051701976184","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@emeryld/ui-schema-tsx","version":"0.1.2","_id":"@emeryld/ui-schema-tsx@0.1.2","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"29b714f2614229edc3c709c9023983f640b5be77","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.2.tgz","fileCount":8,"integrity":"sha512-jUtKAm6hO/bFsO62G5RhsF6F4lJPMm5nmtqz8mwRpPOTLyd5YIih/VtLAB9+RagSfDm9jZbYfeKmDNKhsPX5Dg==","signatures":[{"sig":"MEUCIHyuOz69pgdg1i5rF0swExbqP1qdMipGRZILZW0qaHcPAiEAxQznhQ8oHpx+eoREvBpex3mJ92O9jgtzne0ov3gXXYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120874},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.2.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/3f0ee9dc6fc94e328c158c135774b8fe/emeryld-ui-schema-tsx-0.1.2.tgz","_integrity":"sha512-jUtKAm6hO/bFsO62G5RhsF6F4lJPMm5nmtqz8mwRpPOTLyd5YIih/VtLAB9+RagSfDm9jZbYfeKmDNKhsPX5Dg==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.1","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.2_1777670758998_0.6195738128736177","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@emeryld/ui-schema-tsx","version":"0.1.3","_id":"@emeryld/ui-schema-tsx@0.1.3","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"e03b6de4a12fa27f5c562f66184190ac8c72675a","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.3.tgz","fileCount":8,"integrity":"sha512-1bVdNhYQpXByak7hVjQ6ld8UCds6jDpkMYvmq/DQ9ZjVnXXUifRzS+hbMxM/Vznfm0IO+k9lnIPAzuhFrSmh4Q==","signatures":[{"sig":"MEUCIQC7pr0ZIrEzRvrmOVq9GavtbbB3+GtjgzonpHAAmhNqmgIgCsLPkVmZI1INMf/ugV0MrjiEyTf2pgzjrkTHuVJWOII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121498},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.3.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/de3938c6024f6fa5b6e927fdaab9617b/emeryld-ui-schema-tsx-0.1.3.tgz","_integrity":"sha512-1bVdNhYQpXByak7hVjQ6ld8UCds6jDpkMYvmq/DQ9ZjVnXXUifRzS+hbMxM/Vznfm0IO+k9lnIPAzuhFrSmh4Q==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.2","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.3_1777671162078_0.16785217427702648","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@emeryld/ui-schema-tsx","version":"0.1.4","_id":"@emeryld/ui-schema-tsx@0.1.4","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"eac6fde051d184b8c3ccb235917f00e3f3fe0f56","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.4.tgz","fileCount":8,"integrity":"sha512-N9ZJ6sOjEIoGtkusHJxh964TIu9aN8dTbWBYpN42kQo9WrCCghczQXFwBsLQdblv2AdY7PVBM6fM5IYLxq8V/g==","signatures":[{"sig":"MEQCIDeF2OOSgavZ/ZOZliLSwuFPGSPzxdIEGlr/fN0cp7TwAiBAMhTEne3E03MzixI5JVjZK9tv+zHF7CldqYTS5POlHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116807},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.4.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/24f66efd7850defda53dcf5a4acb45bc/emeryld-ui-schema-tsx-0.1.4.tgz","_integrity":"sha512-N9ZJ6sOjEIoGtkusHJxh964TIu9aN8dTbWBYpN42kQo9WrCCghczQXFwBsLQdblv2AdY7PVBM6fM5IYLxq8V/g==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.2","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.4_1777672922650_0.31468872223601463","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@emeryld/ui-schema-tsx","version":"0.1.5","_id":"@emeryld/ui-schema-tsx@0.1.5","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"6af6d66d12c210cb610dc405979dfb2ad8a2bd04","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.5.tgz","fileCount":8,"integrity":"sha512-E/DiHWr8drY8/vR3EIu5g+2B7AO+5yRnsMoInCrJv0DCUIprwTYtLVgicB8JBpMOvUCQO0Ch5ZkkVzbhTd5TRA==","signatures":[{"sig":"MEQCIGxcSDXrMn/+ive2vB4PQMPmXpT+bKXpqPexbUeRUa6bAiAq6dWRdfCA6Pa2Xd4NrfBsQ7VJBwDaKwqLoxMNFMW53A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117105},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.5.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/1c376f428096bd49cdcdc94854c716fd/emeryld-ui-schema-tsx-0.1.5.tgz","_integrity":"sha512-E/DiHWr8drY8/vR3EIu5g+2B7AO+5yRnsMoInCrJv0DCUIprwTYtLVgicB8JBpMOvUCQO0Ch5ZkkVzbhTd5TRA==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.2","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.5_1777674530674_0.7075616649535714","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@emeryld/ui-schema-tsx","version":"0.1.6","_id":"@emeryld/ui-schema-tsx@0.1.6","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"dist":{"shasum":"9658434c3e321c6a39d8c109ef3d90d041f12882","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.6.tgz","fileCount":8,"integrity":"sha512-ksK87VIkkuvimTHzm+iM6hVf1TDGZTraKPRpnZjmGTAOcexOltVteFGx/gLzDc6AY7ZHxnXAErSaRyLwaPzxrA==","signatures":[{"sig":"MEQCIFOkcm08RUO1ORgTz4cOUKD/RcAXkAIaEMhHnGorDsmkAiBIEeF0LQUBWkM78gPT57PO0CxedGSoWykACRgZMGD1UQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122940},"main":"dist/index.cjs","type":"module","_from":"file:emeryld-ui-schema-tsx-0.1.6.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"private":false,"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/31f8baa3312a9484110e2977f0c9887d/emeryld-ui-schema-tsx-0.1.6.tgz","_integrity":"sha512-ksK87VIkkuvimTHzm+iM6hVf1TDGZTraKPRpnZjmGTAOcexOltVteFGx/gLzDc6AY7ZHxnXAErSaRyLwaPzxrA==","_npmVersion":"10.9.4","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"22.22.0","dependencies":{"@emeryld/ui":"0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.4.2","tsup":"^8.5.1","jsdom":"^26.1.0","react":"^19.2.5","vitest":"^3.2.4","react-dom":"^19.2.5","typescript":"^5.9.3","@types/node":"^24.12.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"zod":"^4.0.0","react":"^19.0.0","react-dom":"^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ui-schema-tsx_0.1.6_1777674821175_0.9743609270140556","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@emeryld/ui-schema-tsx","version":"0.1.7","private":false,"type":"module","sideEffects":["**/*.css"],"main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"peerDependencies":{"react":"^19.0.0","react-dom":"^19.0.0","zod":"^4.0.0"},"dependencies":{"@emeryld/ui":"^0.2.8"},"devDependencies":{"@testing-library/react":"^16.3.2","@testing-library/user-event":"^14.6.1","@types/node":"^24.12.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","jsdom":"^26.1.0","react":"^19.2.6","react-dom":"^19.2.6","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^3.2.4","zod":"^4.4.3","@emeryld/ui":"0.2.8"},"scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.json --noEmit","test":"vitest run"},"_id":"@emeryld/ui-schema-tsx@0.1.7","description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","_integrity":"sha512-zlF1XsIEtPbLiICiSJfi01I5DC0tpsqKdQNUvTy2n9XaTXTZowirVlb7GRtpCyAb3XZiFEwGocc32jcvAid1UQ==","_resolved":"/private/var/folders/5x/zf5c1y3x3fb758ncq40308m80000gn/T/b975b89e9d3aae811006fd1ff81cf229/emeryld-ui-schema-tsx-0.1.7.tgz","_from":"file:emeryld-ui-schema-tsx-0.1.7.tgz","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-zlF1XsIEtPbLiICiSJfi01I5DC0tpsqKdQNUvTy2n9XaTXTZowirVlb7GRtpCyAb3XZiFEwGocc32jcvAid1UQ==","shasum":"6290cc227a3ca57873964049fef6d0c5b096f8ad","tarball":"https://registry.npmjs.org/@emeryld/ui-schema-tsx/-/ui-schema-tsx-0.1.7.tgz","fileCount":9,"unpackedSize":193360,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICVOM08wXAolKE40RQ4BOiX5B/v5p6GbapwQOwQXj7B/AiBuQeOee54BRfxcHaP/MPJf0PnC68GmA6lIP6mkFMivtg=="}]},"_npmUser":{"name":"emeryld","email":"karambiri.emery@gmail.com"},"directories":{},"maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ui-schema-tsx_0.1.7_1778497441939_0.6474800289533802"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-01T21:11:54.388Z","modified":"2026-05-11T11:04:02.174Z","0.1.1":"2026-05-01T21:11:54.699Z","0.1.2":"2026-05-01T21:25:59.146Z","0.1.3":"2026-05-01T21:32:42.224Z","0.1.4":"2026-05-01T22:02:02.810Z","0.1.5":"2026-05-01T22:28:50.956Z","0.1.6":"2026-05-01T22:33:41.377Z","0.1.7":"2026-05-11T11:04:02.081Z"},"description":"Standalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.","maintainers":[{"name":"emeryld","email":"karambiri.emery@gmail.com"}],"readme":"# @emeryld/ui-schema-tsx\n\nStandalone React DOM + TypeScript package for rendering and editing Zod v4 object schemas.\n\n## Install\n\n```bash\npnpm add @emeryld/ui-schema-tsx react react-dom zod\n```\n\n## CSS\n\n```ts\nimport '@emeryld/ui-schema-tsx/styles.css'\n```\n\n## Basic usage\n\n```tsx\nimport { SchemaTSX, useSchemaState } from '@emeryld/ui-schema-tsx'\nimport { z } from 'zod'\n\nconst schema = z.object({\n  name: z.string(),\n  age: z.number(),\n  active: z.boolean(),\n})\n\nconst { value, setValue, reset, errors } = useSchemaState(\n  schema,\n  { age: 18 },\n  {\n    onValidationChange: ({ key, errors, valid }) => {\n      console.log(key, errors, valid)\n    },\n  },\n)\n\n<SchemaTSX\n  schema={schema}\n  value={value}\n  onChange={(nextValue) => setValue(nextValue)}\n  onFieldChange={(key, nextValue) => console.log(key, nextValue)}\n  onValueClick={({ rawString, key, value }) => console.log(rawString, key, value)}\n  onValidationChange={(result) => console.log(result)}\n/>\n```\n\n## Derived schemas and memoization\n\n`SchemaTSX` and `useSchemaState` are resilient to derived-schema identity churn (for example inline `schema.omit(...)`).\nFor better performance, still memoize derived schemas in consumers:\n\n```tsx\nconst formSchema = useMemo(() => schema.omit({ hidden: true }), [schema])\n```\n\nYou can also pass `undefined` as schema; in that case `value` defaults to `undefined` and validation is treated as valid with no errors.\n\n## Custom registry factory\n\n```tsx\nimport { createSchemaTSXFactory } from '@emeryld/ui-schema-tsx'\n\nconst schemaTSX = createSchemaTSXFactory({\n  variants: {\n    string: {\n      textInput: StringTextInput,\n      textarea: StringTextarea,\n    },\n    number: {\n      textInput: NumberTextInput,\n      slider: NumberSlider,\n    },\n  },\n})\n\nexport const SchemaTSX = schemaTSX.SchemaTSX\n```\n\n## Display map\n\n```tsx\ndisplay={{\n  name: { variant: 'textarea', props: { label: 'Name' } },\n  age: { variant: 'slider', props: { minValue: 0, maxValue: 100 } },\n  status: { variant: 'select', props: {} },\n}}\n```\n\n## Variant conventions\n\nUse component variants to change UX behavior, and wrapper variants to style element containers.\n\n- Wrapper variants define styling of elements inside a component (for example pills in a pill selector, or menu items in a dropdown).\n- Component variants define the interaction pattern/UX (for example toggle vs checkbox, or dropdown vs pill selector).\n- This separation is the expected API direction everywhere, even where older components still mix the two.\n\nExamples of expected shape:\n\n- Dropdown should not own style variants. It should expose optional:\n  - `boxWrapperVariant` (default: `card`)\n  - `menuItemWrapperVariant` (default: `flat`)\n- Button variants should represent button UX/shape (`circle`, `rectangular`, etc.), while visual styles should come from wrapper variants and wrapper background color.\n\n## Enum options shape\n\nEnum variants receive options as:\n\n```ts\nArray<{ value: string; label: string }>\n```\n\n## Value handling\n\nInteractible controls use a controlled value contract:\n\n- `value`\n- `onChange`\n\nAll interactive variants/components should use this pattern consistently.\n\n## Optional and nullable markers\n\n- `?` optional\n- `−` nullable\n- `*` required\n- nullable takes precedence when both wrappers exist\n- markers are shown in editable mode by default\n\n## Intersection and TrayFolder behavior\n\n`ZodIntersection` is handled explicitly. Initial values are created per side and deep-merged for plain objects. Object intersections are rendered using a tray-folder style object variant, with fallback support exported as `TrayFolder`.\n\n## createInitialSchemaValue\n\n```tsx\nimport { createInitialSchemaValue } from '@emeryld/ui-schema-tsx'\n\nconst initialValue = createInitialSchemaValue(schema)\n```\n\nIt first tries `schema.safeParse(undefined)` (to respect defaults/prefaults/catch/transforms), then falls back to structural generation.\n","readmeFilename":"README.md"}