{"_id":"@asnewyla/unstyled-textarea","name":"@asnewyla/unstyled-textarea","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@asnewyla/unstyled-textarea","version":"0.2.0","description":"Unstyled multi-line text input (textarea) primitive with accessibility","license":"MIT","repository":{"type":"git","url":"git+https://github.com/xavierDelaFuente/xd-components.git","directory":"packages/unstyled-textarea"},"publishConfig":{"access":"public"},"main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./test-utils":{"types":"./dist/test-utils.d.ts","import":"./dist/test-utils.mjs","require":"./dist/test-utils.js"}},"sideEffects":false,"keywords":["react","textarea","unstyled","accessible"],"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.5.0"},"peerDependenciesMeta":{"@testing-library/react":{"optional":true},"@testing-library/user-event":{"optional":true}},"devDependencies":{"react":"^18.3.0","react-dom":"^18.3.0","tsup":"^8.1.0","vitest":"^2.0.0","@vitest/coverage-v8":"^2.0.0","@testing-library/react":"^16.0.0","@testing-library/user-event":"^14.5.0","@testing-library/jest-dom":"^6.4.0","jsdom":"^24.0.0","typescript":"^5.5.0"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","type-check":"tsc --noEmit"},"_nodeVersion":"24.19.0","_id":"@asnewyla/unstyled-textarea@0.2.0","dist":{"integrity":"sha512-CIyTQPy0Mdn2KawhNv8oBCOlScHk62YstF3oToqKNksLPak/Qpygbhzuxffo8g1Huc+/xWZVOXtk1cMiNwTV3A==","shasum":"0ac26d561ca01f94abbd2427bc992d379a1316b5","tarball":"https://registry.npmjs.org/@asnewyla/unstyled-textarea/-/unstyled-textarea-0.2.0.tgz","fileCount":15,"unpackedSize":15470,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCOVdGGXMM1gJQ9DMjU6vpPaParYxxb2tjbtvtS2VkfjAIhAJDHIVE/hRqqy49pxP7FYNw09yRG3sUq8lWs0mlCe7Et"}]},"_npmUser":{"name":"asnewyla","email":"asnewyla@gmail.com"},"directories":{},"maintainers":[{"name":"asnewyla","email":"asnewyla@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unstyled-textarea_0.2.0_1788128077757_0.32641797561578234"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T22:14:37.522Z","0.2.0":"2026-08-30T22:14:37.906Z","modified":"2026-08-30T22:14:38.131Z"},"maintainers":[{"name":"asnewyla","email":"asnewyla@gmail.com"}],"description":"Unstyled multi-line text input (textarea) primitive with accessibility","keywords":["react","textarea","unstyled","accessible"],"repository":{"type":"git","url":"git+https://github.com/xavierDelaFuente/xd-components.git","directory":"packages/unstyled-textarea"},"license":"MIT","readme":"# @asnewyla/unstyled-textarea\n\nUnstyled, accessible multi-line text input (textarea) primitive. Handles\nfocus and invalid-state tracking without imposing any visual styling — the\nbase layer under `@asnewyla/textarea`.\n\n## Install\n\n```bash\nnpm install @asnewyla/unstyled-textarea\n```\n\n## Usage\n\n```tsx\nimport { UnstyledTextarea } from '@asnewyla/unstyled-textarea';\n\n// Uncontrolled\n<UnstyledTextarea aria-label=\"Bio\" defaultValue=\"\" />\n\n// Controlled\n<UnstyledTextarea\n  aria-label=\"Bio\"\n  value={bio}\n  onChange={(e) => setBio(e.target.value)}\n/>\n\n// Invalid state\n<UnstyledTextarea aria-label=\"Bio\" invalid />\n\n// Any native textarea attribute passes straight through\n<UnstyledTextarea aria-label=\"Bio\" rows={6} placeholder=\"Tell us about yourself\" />\n```\n\n### Props\n\n| Prop | Type | Default |\n|---|---|---|\n| `value` / `defaultValue` | `string` | — |\n| `onChange` | `(event: React.ChangeEvent<HTMLTextAreaElement>) => void` | — |\n| `disabled` | `boolean` | `false` |\n| `invalid` | `boolean` | `false` |\n\nUncontrolled by default, same as a native `<textarea>` — pass `value` +\n`onChange` to control it yourself. No internal value tracking beyond\nthat — text content is visually self-evident, the same reasoning\n`@asnewyla/unstyled-input` uses.\n\nResizing is plain native `<textarea>` behavior (`rows`, `resize` via CSS,\nthe browser's own resize handle) — no auto-grow-to-content built in.\n\nState is exposed via `data-focused`, `data-disabled`, and\n`data-invalid`/`aria-invalid` — style off these attributes in\n`@asnewyla/textarea` (or your own styled wrapper), same `data-*`\nconvention every `@asnewyla/*` primitive uses. No explicit `role` is set;\na native `<textarea>` already carries the implicit `textbox` role.\n\n## License\n\nMIT\n","readmeFilename":"","_rev":"1-8a03c4aafa4cb32a97f1ad4f447eb2d3"}