{"_id":"@bnomei/emdash-fields","_rev":"4-57146f9d1d50222027080c8da3c934c9","name":"@bnomei/emdash-fields","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@bnomei/emdash-fields","version":"0.1.0","keywords":["astro","cms","emdash","emdash-plugin","field-widget","forms","json","react","typescript"],"author":{"url":"https://bnomei.com","name":"Bruno Meilick","email":"b@bnomei.com"},"license":"MIT","_id":"@bnomei/emdash-fields@0.1.0","maintainers":[{"name":"bnomei","email":"b@bnomei.com"}],"homepage":"https://github.com/bnomei/emdash-fields#readme","bugs":{"url":"https://github.com/bnomei/emdash-fields/issues"},"dist":{"shasum":"1f3628ef2e95e587edcc02d67a3a8d1a23f216ca","tarball":"https://registry.npmjs.org/@bnomei/emdash-fields/-/emdash-fields-0.1.0.tgz","fileCount":9,"integrity":"sha512-JwHC2uVpuMQZLe5MpDS4Ls6knOoEIbeZ/ZvSHmBOQIYd8qbxHWWAGRORwMPGsJ17pLGxE/+3dRATnNzV230FtA==","signatures":[{"sig":"MEUCIDFntM14peUteHXyp1kdZK9+oqGwdJw6bAXvDnExNdg1AiEAq95cTg/dPZdOpum6vq65+kwqaxnP4pCg0POXQaX93cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139550},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./admin":{"types":"./dist/admin.d.mts","import":"./dist/admin.mjs"}},"gitHead":"40d08cf2e37528d7d99decf4793af5ba6a49a216","scripts":{"build":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json","check":"vp check .","prepack":"npm run build","typecheck":"tsc --noEmit","pack:check":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json --publint","types:check":"attw --pack . --profile esm-only --no-summary","prepublishOnly":"npm run check && npm run typecheck && npm run pack:check && npm run types:check"},"_npmUser":{"name":"bnomei","email":"b@bnomei.com"},"repository":{"url":"git+https://github.com/bnomei/emdash-fields.git","type":"git"},"_npmVersion":"11.16.0","description":"Structured JSON fields for EmDash, including object, structure, link, and choices editors.","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","emdash":"^0.19.0","publint":"^0.3.21","react-dom":"^19.2.7","vite-plus":"^0.1.24","typescript":"^6.0.3","@types/react":"^19.2.17","@cloudflare/kumo":"^2.5.2","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.3","@phosphor-icons/react":"^2.1.10"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","emdash":">=0.17.0","react-dom":"^18.0.0 || ^19.0.0","@cloudflare/kumo":"^2.5.0","@phosphor-icons/react":"^2.1.10"},"_npmOperationalInternal":{"tmp":"tmp/emdash-fields_0.1.0_1781300877685_0.37533502627372206","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bnomei/emdash-fields","version":"0.1.1","keywords":["astro","cms","emdash","emdash-plugin","field-widget","forms","json","react","typescript"],"author":{"url":"https://bnomei.com","name":"Bruno Meilick","email":"b@bnomei.com"},"license":"MIT","_id":"@bnomei/emdash-fields@0.1.1","maintainers":[{"name":"bnomei","email":"b@bnomei.com"}],"homepage":"https://github.com/bnomei/emdash-fields#readme","bugs":{"url":"https://github.com/bnomei/emdash-fields/issues"},"dist":{"shasum":"480c51e17d1c0dbf3ad4c21c9f0f5015489297cb","tarball":"https://registry.npmjs.org/@bnomei/emdash-fields/-/emdash-fields-0.1.1.tgz","fileCount":9,"integrity":"sha512-t45f8euRCCvNSCDeNR40dRV+cV9tS7fVdgcKdsiN5ktd8ezDFcrLF3Kmnxh147D4rlOyhUQ9mhBwddaqk/hZ3g==","signatures":[{"sig":"MEUCIFiRhTSInnthIt9F9rOdyByzXi6GwVln5nokzxFwRPubAiEA8m1Nt1R+i4/UL9Y/pn2Qu+exzbGSkdXbeTqLJQTZ6yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144657},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./admin":{"types":"./dist/admin.d.mts","import":"./dist/admin.mjs"}},"gitHead":"bb50890a9993f7e509142407253ef0a7dce95ffb","scripts":{"test":"npm run build && node --test test/*.test.mjs tests/*.test.mjs","build":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json","check":"vp check .","prepack":"npm run build","typecheck":"tsc --noEmit","pack:check":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json --publint","types:check":"attw --pack . --profile esm-only --no-summary","prepublishOnly":"npm run check && npm run typecheck && npm test && npm run pack:check && npm run types:check"},"_npmUser":{"name":"bnomei","email":"b@bnomei.com"},"repository":{"url":"git+https://github.com/bnomei/emdash-fields.git","type":"git"},"_npmVersion":"11.16.0","description":"Structured JSON fields for EmDash, including object, structure, link, and choices editors.","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","emdash":"^0.19.0","publint":"^0.3.21","react-dom":"^19.2.7","vite-plus":"^0.1.24","typescript":"^6.0.3","@types/react":"^19.2.17","@cloudflare/kumo":"^2.5.2","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.3","@phosphor-icons/react":"^2.1.10"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","emdash":">=0.17.0","react-dom":"^18.0.0 || ^19.0.0","@cloudflare/kumo":"^2.5.0","@phosphor-icons/react":"^2.1.10"},"_npmOperationalInternal":{"tmp":"tmp/emdash-fields_0.1.1_1781806384607_0.6405953867915242","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bnomei/emdash-fields","version":"0.2.0","keywords":["astro","cms","emdash","emdash-plugin","field-widget","forms","json","react","typescript"],"author":{"url":"https://bnomei.com","name":"Bruno Meilick","email":"b@bnomei.com"},"license":"MIT","_id":"@bnomei/emdash-fields@0.2.0","maintainers":[{"name":"bnomei","email":"b@bnomei.com"}],"homepage":"https://github.com/bnomei/emdash-fields#readme","bugs":{"url":"https://github.com/bnomei/emdash-fields/issues"},"dist":{"shasum":"5c75e0cd0dc310fe1fa6619944ca44f66803c1c3","tarball":"https://registry.npmjs.org/@bnomei/emdash-fields/-/emdash-fields-0.2.0.tgz","fileCount":10,"integrity":"sha512-kPgkshsANCSYR2MLV1uQXx86ZofLAvifrxPS0/8uqoUvNZ6vPqEDR4wm5BbTDG6csyqnO82AgzCFmY2hDW2tBg==","signatures":[{"sig":"MEQCICxN/2agxu76cENBe0Jz6XgK4sXAXDrxsFjzb+wDgMaSAiAfmJ8P6p0Oq4VUHNAsDjbpoUUN59xpbUbTNysttBHOIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154064},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=22.12.0"},"exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./admin":{"types":"./dist/admin.d.mts","import":"./dist/admin.mjs"}},"gitHead":"2da604722e14f066611e14c7b9cbd4eba00f5bc6","scripts":{"test":"npm run build && node --test test/*.test.mjs tests/*.test.mjs","build":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json","check":"vp check .","prepack":"npm run build","typecheck":"tsc --noEmit","pack:check":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json --publint","types:check":"attw --pack . --profile esm-only --no-summary","prepublishOnly":"npm run check && npm run typecheck && npm test && npm run pack:check && npm run types:check"},"_npmUser":{"name":"bnomei","email":"b@bnomei.com"},"repository":{"url":"git+https://github.com/bnomei/emdash-fields.git","type":"git"},"_npmVersion":"11.16.0","description":"Structured JSON fields for EmDash, including object, structure, link, and choices editors.","directories":{},"sideEffects":false,"_nodeVersion":"26.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","emdash":"^0.19.0","publint":"^0.3.21","react-dom":"^19.2.7","vite-plus":"^0.1.24","typescript":"^6.0.3","@types/react":"^19.2.17","@cloudflare/kumo":"^2.5.2","@types/react-dom":"^19.2.3","@arethetypeswrong/cli":"^0.18.3","@phosphor-icons/react":"^2.1.10"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","emdash":">=0.17.0","react-dom":"^18.0.0 || ^19.0.0","@cloudflare/kumo":"^2.5.0","@phosphor-icons/react":"^2.1.10"},"_npmOperationalInternal":{"tmp":"tmp/emdash-fields_0.2.0_1781814787598_0.5342845167267294","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@bnomei/emdash-fields","version":"0.2.1","description":"Structured JSON fields for EmDash, including object, structure, link, and choices editors.","keywords":["astro","cms","emdash","emdash-plugin","field-widget","forms","json","react","typescript"],"homepage":"https://github.com/bnomei/emdash-fields#readme","bugs":{"url":"https://github.com/bnomei/emdash-fields/issues"},"license":"MIT","author":{"name":"Bruno Meilick","email":"b@bnomei.com","url":"https://bnomei.com"},"repository":{"type":"git","url":"git+https://github.com/bnomei/emdash-fields.git"},"type":"module","sideEffects":false,"main":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"},"./admin":{"types":"./dist/admin.d.mts","import":"./dist/admin.mjs"}},"publishConfig":{"access":"public"},"scripts":{"build":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json","check":"vp check .","pack:check":"vp pack src/index.ts src/admin.tsx --format esm --dts --clean --tsconfig tsconfig.json --publint","prepack":"npm run build","prepublishOnly":"npm run check && npm run typecheck && npm test && npm run pack:check && npm run types:check","types:check":"attw --pack . --profile esm-only --no-summary","typecheck":"tsc --noEmit","test":"npm run build && node --test test/*.test.mjs tests/*.test.mjs"},"devDependencies":{"@arethetypeswrong/cli":"^0.18.3","@cloudflare/kumo":"^2.5.2","@phosphor-icons/react":"^2.1.10","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","emdash":"^0.19.0","publint":"^0.3.21","react":"^19.2.7","react-dom":"^19.2.7","typescript":"^6.0.3","vite-plus":"^0.1.24"},"peerDependencies":{"@cloudflare/kumo":"^2.5.0","@phosphor-icons/react":"^2.1.10","emdash":">=0.17.0","react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"engines":{"node":">=22.12.0"},"gitHead":"0362416446f3faf555d4dc1f79436b19d18b5110","_id":"@bnomei/emdash-fields@0.2.1","_nodeVersion":"26.4.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-PzmflKDkxQQ3Z+04TdMPpmS+eOvZNjAPHyfcv2LNyB7lPIQIYoLfn5ohsAUmCUfMwQI6AL6dfFnuwdfkjoHq4w==","shasum":"cbec2024d6bee1083171ba0394baa683116921d3","tarball":"https://registry.npmjs.org/@bnomei/emdash-fields/-/emdash-fields-0.2.1.tgz","fileCount":10,"unpackedSize":171434,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFRm82pddZ/YNYYbhu5bNLq+rhnPrPGWCGmlVcpKsUFSAiEAojvcuOw1k5JJhY0n6kIXGaaNxImS325CppVI5WSxvgY="}]},"_npmUser":{"name":"bnomei","email":"b@bnomei.com"},"directories":{},"maintainers":[{"name":"bnomei","email":"b@bnomei.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emdash-fields_0.2.1_1782736853730_0.3089058333522905"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T21:47:57.531Z","modified":"2026-06-29T12:40:53.994Z","0.1.0":"2026-06-12T21:47:57.841Z","0.1.1":"2026-06-18T18:13:04.792Z","0.2.0":"2026-06-18T20:33:07.732Z","0.2.1":"2026-06-29T12:40:53.886Z"},"bugs":{"url":"https://github.com/bnomei/emdash-fields/issues"},"author":{"name":"Bruno Meilick","email":"b@bnomei.com","url":"https://bnomei.com"},"license":"MIT","homepage":"https://github.com/bnomei/emdash-fields#readme","keywords":["astro","cms","emdash","emdash-plugin","field-widget","forms","json","react","typescript"],"repository":{"type":"git","url":"git+https://github.com/bnomei/emdash-fields.git"},"description":"Structured JSON fields for EmDash, including object, structure, link, and choices editors.","maintainers":[{"name":"bnomei","email":"b@bnomei.com"}],"readme":"# @bnomei/emdash-fields\n\n[![npm version](https://img.shields.io/npm/v/@bnomei/emdash-fields.svg)](https://www.npmjs.com/package/@bnomei/emdash-fields)\n[![npm downloads](https://img.shields.io/npm/dm/@bnomei/emdash-fields.svg)](https://www.npmjs.com/package/@bnomei/emdash-fields)\n[![license](https://img.shields.io/npm/l/@bnomei/emdash-fields.svg)](https://www.npmjs.com/package/@bnomei/emdash-fields)\n[![types](https://img.shields.io/badge/types-included-blue.svg)](./package.json)\n[![source](https://img.shields.io/badge/source-GitHub-181717.svg?logo=github)](https://github.com/bnomei/emdash-fields)\n\nStructured JSON fields for EmDash.\n\n`@bnomei/emdash-fields` is a native EmDash plugin for JSON-backed\nfield controls that need a real editor but do not need a full block or layout\nbuilder. It registers reusable object, structure, link, and choices widgets,\nstores plain JSON values, and exports TypeScript option/value types for schema\ndefinitions and frontend renderers.\n\nUse it for compact content models such as CTAs, specs, settings, card metadata,\nbutton groups, and link objects. Editors get focused form controls; developers\nget predictable JSON without plugin-specific wrappers.\n\n## What It Provides\n\n- Native EmDash plugin factory: `fieldsPlugin()`.\n- JSON field widgets: `fields:object`, `fields:structure`, `fields:link`, and\n  `fields:choices`.\n- Plain JSON stored values without plugin-specific wrappers.\n- Admin UI built with [Kumo UI](https://kumo-ui.com/) with full light and dark\n  mode support.\n- TypeScript helper types such as `LinkValue`, `ObjectOptions`,\n  `StructureOptions`, and `ChoicesOptions`.\n\n## Why Use It\n\nEmDash already covers scalar fields, rich text, media, references, and raw JSON.\nFields adds the missing middle layer: structured JSON values with a purpose-built\nadmin UI.\n\n- Use `object` for one structured object, such as a CTA or settings group.\n- Use `structure` for repeatable structured rows, such as specs, links, stats, or\n  feature bullets.\n- Use `link` for a typed link value with text and target metadata.\n- Use `choices` when radio or checkbox-style choices are clearer than a\n  select box.\n- Use `choices` with `orientation: \"horizontal\"` and `columns` when choice\n  cards should sit side by side and wrap after a fixed count.\n\nFor larger page composition, pair it with `@bnomei/emdash-blocks` and\n`@bnomei/emdash-bento`.\n\n## Install\n\n```sh\nnpm install @bnomei/emdash-fields\n```\n\nRegister the plugin in `astro.config.mjs`:\n\n```js\nimport emdash from \"emdash/astro\";\nimport { fieldsPlugin } from \"@bnomei/emdash-fields\";\n\nexport default {\n  integrations: [\n    emdash({\n      plugins: [fieldsPlugin()],\n    }),\n  ],\n};\n```\n\n## Widgets\n\nThe plugin currently provides these widgets for `json` fields:\n\n- `fields:object`: a configured object editor.\n- `fields:structure`: a repeatable structured data editor.\n- `fields:link`: a typed link editor.\n- `fields:choices`: radio or checkbox-style option groups.\n\n## Subfield Types\n\nFields widgets attach to a normal EmDash schema field whose top-level `type` is\n`json`. For `object` and `structure` widgets, the nested `options.fields[].type`\nvalue chooses the editor control for that JSON property.\n\nThose nested `type` values use familiar EmDash field-type names for simple\nscalar inputs. They only describe the subfield inside the JSON widget; they do\nnot create nested EmDash schema fields. If omitted, the subfield defaults to\n`text`.\n\nSupported subfield types:\n\n| Type       | Editor control                  | Stored value                      |\n| ---------- | ------------------------------- | --------------------------------- |\n| `text`     | Single-line text input          | String                            |\n| `textarea` | Multi-line text area            | String                            |\n| `number`   | Number input                    | Number, or `undefined` when empty |\n| `integer`  | Number input with integer steps | Number, or `undefined` when empty |\n| `boolean`  | Checkbox                        | Boolean                           |\n| `select`   | Select menu                     | Selected string value             |\n| `url`      | URL input                       | String                            |\n\nUse `select` with `options`, either as strings or `{ \"value\", \"label\" }`\nobjects:\n\n```json\n{\n  \"key\": \"tone\",\n  \"label\": \"Tone\",\n  \"type\": \"select\",\n  \"options\": [\"Calm\", \"Bold\", \"Technical\"]\n}\n```\n\nFor richer EmDash field types such as rich text, media, references, or repeaters,\nmodel them as normal EmDash fields or use a block/layout builder instead of\nnested Fields subfields.\n\n## Examples\n\nObject field:\n\n```json\n{\n  \"slug\": \"cta\",\n  \"label\": \"CTA\",\n  \"type\": \"json\",\n  \"widget\": \"fields:object\",\n  \"options\": {\n    \"fields\": [\n      { \"key\": \"headline\", \"label\": \"Headline\", \"type\": \"text\" },\n      { \"key\": \"text\", \"label\": \"Text\", \"type\": \"textarea\" }\n    ]\n  }\n}\n```\n\nLink field:\n\n```json\n{\n  \"slug\": \"primary_link\",\n  \"label\": \"Primary Link\",\n  \"type\": \"json\",\n  \"widget\": \"fields:link\"\n}\n```\n\nStructure field:\n\n```json\n{\n  \"slug\": \"specs\",\n  \"label\": \"Specs\",\n  \"type\": \"json\",\n  \"widget\": \"fields:structure\",\n  \"options\": {\n    \"itemLabel\": \"Spec\",\n    \"fields\": [\n      { \"key\": \"label\", \"label\": \"Label\", \"type\": \"text\" },\n      { \"key\": \"value\", \"label\": \"Value\", \"type\": \"text\" }\n    ]\n  }\n}\n```\n\nThe structure widget also accepts `min` and `max` row counts. These constrain\nthe interactive controls — the Add button is disabled at `max` and the Remove\nbutton is disabled at `min` — guiding editors back within bounds. They are not\nenforced on externally supplied values: a stored array outside the limits is\nshown as-is rather than silently trimmed (which would drop data) or padded with\nempty rows (which would dirty the entry on open).\n\nChoices with horizontal cards:\n\n```json\n{\n  \"slug\": \"demo_mode\",\n  \"label\": \"Demo mode\",\n  \"type\": \"json\",\n  \"widget\": \"fields:choices\",\n  \"options\": {\n    \"orientation\": \"horizontal\",\n    \"columns\": 3,\n    \"choices\": [\n      {\n        \"value\": \"workers-ai\",\n        \"label\": \"Workers AI\",\n        \"description\": \"Run inference from Workers.\",\n        \"icon\": \"AI\"\n      },\n      {\n        \"value\": \"vectorize\",\n        \"label\": \"Vectorize\",\n        \"description\": \"Store embeddings for retrieval.\",\n        \"icon\": \"V\"\n      },\n      {\n        \"value\": \"ai-gateway\",\n        \"label\": \"AI Gateway\",\n        \"description\": \"Observe and control model traffic.\",\n        \"icon\": \"AG\"\n      }\n    ]\n  }\n}\n```\n\n### Choice Icons\n\nChoice icons should be either schema-safe strings or code-defined React elements:\n\n- Short plain strings such as `\"AI\"`, `\"V\"`, or `\"✓\"` render as compact text\n  tokens. These are the safest choice for JSON, YAML, or other serialized schema\n  configuration.\n- String image sources render as decorative images when they start with `http:`,\n  `https:`, `/`, `./`, `../`, or `data:image/`. Prefer project-owned assets such\n  as `/icons/ai.svg` or `./icons/vectorize.svg` when the schema is serialized.\n- React icon elements are supported only when choices are defined in TypeScript or\n  JavaScript code, for example `icon: <BrainIcon size={16} weight=\"duotone\" />`.\n  Do not place JSX, component names, functions, or object literals in serialized\n  schema files.\n\nSchema-safe icon examples:\n\n```json\n{ \"value\": \"workers-ai\", \"label\": \"Workers AI\", \"icon\": \"AI\" }\n{ \"value\": \"vectorize\", \"label\": \"Vectorize\", \"icon\": \"/icons/vectorize.svg\" }\n{ \"value\": \"gateway\", \"label\": \"AI Gateway\", \"icon\": \"./icons/gateway.svg\" }\n```\n\nAvoid ambiguous or unsafe serialized values such as `\"BrainIcon\"` when it is meant\nto reference a component, raw `<svg>...</svg>` markup, JavaScript expressions, or\nnon-image `data:` URLs.\n\n## Stored Values\n\nAll widgets store plain JSON values. They do not add plugin-specific wrappers, so frontend templates can read the field value directly.\n\nThe package exports TypeScript helper types such as `LinkValue`, `ObjectOptions`, `StructureOptions`, `FieldsChoice`, and `ChoicesOptions`.\n\n## Package Surface\n\n- ESM entry: `@bnomei/emdash-fields`.\n- Admin entry: `@bnomei/emdash-fields/admin`, including the widget\n  components and pure value helpers used by those widgets.\n- Type declarations are included from `dist/`.\n- Peer dependencies: `emdash` `>=0.17.0`, `react` `^18.0.0 || ^19.0.0`,\n  `react-dom` `^18.0.0 || ^19.0.0`, `@cloudflare/kumo` `^2.5.0`, and `@phosphor-icons/react`\n  `^2.1.10`.\n\n## Status\n\nThis package ships as a native EmDash plugin because the widgets are trusted React admin field widgets. Package exports point at `vp pack`-built `dist/` JavaScript and declarations.\n\n## Related Packages\n\n- `@bnomei/emdash-blocks` provides ordered block-list editing.\n- `@bnomei/emdash-bento` provides row and column layout editing\n  with nested blocks.\n\n## License\n\nMIT.\n\n## Screenshot\n\n![Fields screenshot](./screenshot.png)\n","readmeFilename":"README.md"}