{"_id":"@abeedoo/radish-components","_rev":"4-77276468bec8bd3a6c63c5e6aaad4dae","name":"@abeedoo/radish-components","dist-tags":{"latest":"0.5.0"},"versions":{"0.4.0":{"name":"@abeedoo/radish-components","version":"0.4.0","_id":"@abeedoo/radish-components@0.4.0","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"dist":{"shasum":"4e8e82c2156b218ba5c44679474857eb9a13ce39","tarball":"https://registry.npmjs.org/@abeedoo/radish-components/-/radish-components-0.4.0.tgz","fileCount":231,"integrity":"sha512-Voml3l09y3dhyOjigWbL2j0oFd4Mabex7XGqHXzR4XbDcC6Cp9vldIEZjHjTEw5sWUqHlNxTmNychv9ugi5Y9w==","signatures":[{"sig":"MEQCIEkGH7tPopODnSOS30AovgjXjhro67AMT3iul1cHBrNxAiByr2+4wRFkh1jc7wgSKdnvBtBEFmqNWc9XS0ExoUCxHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225706},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./theme":"./dist/theme.css","./toast":{"types":"./dist/stores/toast.d.ts","default":"./dist/stores/toast.js"},"./theme.css":"./dist/theme.css"},"gitHead":"a01179a57b4d4af40fde8ceadd4fbb66ec9373c0","scripts":{"dev":"svelte-package -i src/lib -w","build":"svelte-package -i src/lib"},"_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"_npmVersion":"10.9.3","description":"Svelte 5 + DaisyUI v5 component library","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","svelte":"^5.0.0","typescript":"^5.4.0","@sveltejs/package":"^2.0.0","@sveltejs/vite-plugin-svelte":"^4.0.0"},"peerDependencies":{"svelte":"^5.0.0","daisyui":"^5.0.0","tailwindcss":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/radish-components_0.4.0_1778726903843_0.7541333836336419","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@abeedoo/radish-components","version":"0.4.1","_id":"@abeedoo/radish-components@0.4.1","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"dist":{"shasum":"9af9487778a777f1571950569b721f085af1a21e","tarball":"https://registry.npmjs.org/@abeedoo/radish-components/-/radish-components-0.4.1.tgz","fileCount":231,"integrity":"sha512-B0dx+/aytvT3Ut0nG6cE7Lig2MxS78bO4IDQeg1IGyzj8sNZyOqO52FCO0aRyUqeQXLm0RcCPIJ+I9pWzqVtxg==","signatures":[{"sig":"MEUCIQDKmL6YnQq0wEypXhjHMY3m0P4i+8I8uy5gQHpS3x9ThAIgVEb3bwJu2QqxEXKrfl5JmispAVv62f1OmApjavbTAgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225722},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./theme":"./dist/theme.css","./toast":{"types":"./dist/stores/toast.d.ts","default":"./dist/stores/toast.js"},"./theme.css":"./dist/theme.css"},"gitHead":"2b447349aa5d046cdf70affc09f8985f116d328f","scripts":{"dev":"svelte-package -i src/lib -w","build":"svelte-package -i src/lib"},"_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"_npmVersion":"10.9.3","description":"Svelte 5 + DaisyUI v5 component library","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","svelte":"^5.0.0","typescript":"^5.4.0","@sveltejs/package":"^2.0.0","@sveltejs/vite-plugin-svelte":"^4.0.0"},"peerDependencies":{"svelte":"^5.0.0","daisyui":"^5.0.0","tailwindcss":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/radish-components_0.4.1_1778727181780_0.07603206226704673","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@abeedoo/radish-components","version":"0.4.2","_id":"@abeedoo/radish-components@0.4.2","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"dist":{"shasum":"258262f63e31f6e58a23e78aee1e84f2e56ea5c5","tarball":"https://registry.npmjs.org/@abeedoo/radish-components/-/radish-components-0.4.2.tgz","fileCount":231,"integrity":"sha512-8L/8lBFt1c3d86ftVCBNT6aPaU8mICUF6PeizUaNSagYeFiSNhZBt0ZPpd16i+HiFLbFsTspO/qXK80t2makpw==","signatures":[{"sig":"MEUCIQC2UAqjvhqSxRjKYt+dNy4NNqq4jSgHp/QrhOqpDJ1vBQIgTAjrM7+EF85Ab3YY3jAy6skaTHxzj9JEyaJzWVE6a2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225905},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./theme":"./dist/theme.css","./toast":{"types":"./dist/stores/toast.d.ts","default":"./dist/stores/toast.js"},"./theme.css":"./dist/theme.css"},"gitHead":"9b8afedaeed63a2f127d9e82d24b70fb2b90908e","scripts":{"dev":"svelte-package -i src/lib -w","build":"svelte-package -i src/lib"},"_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"_npmVersion":"10.9.3","description":"Svelte 5 + DaisyUI v5 component library","directories":{},"_nodeVersion":"22.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","svelte":"^5.0.0","typescript":"^5.4.0","@sveltejs/package":"^2.0.0","@sveltejs/vite-plugin-svelte":"^4.0.0"},"peerDependencies":{"svelte":"^5.0.0","daisyui":"^5.0.0","tailwindcss":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/radish-components_0.4.2_1778727341285_0.8800233566546158","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@abeedoo/radish-components","version":"0.5.0","description":"Svelte 5 + DaisyUI v5 component library — 70+ components with TypeScript, runes, and snippets","type":"module","svelte":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"},"./toast":{"types":"./dist/stores/toast.d.ts","default":"./dist/stores/toast.js"},"./theme":"./dist/theme.css","./theme.css":"./dist/theme.css"},"scripts":{"build":"svelte-package -i src/lib","dev":"svelte-package -i src/lib -w","prepublishOnly":"npm run build"},"repository":{"type":"git","url":"git+https://github.com/abeedoolabs/radish-components.git"},"homepage":"https://components.radishplatform.com","bugs":{"url":"https://github.com/abeedoolabs/radish-components/issues"},"keywords":["svelte","svelte5","daisyui","tailwindcss","components","ui","design-system"],"author":{"name":"Clifford Meece","email":"clifford@abeedoo.com"},"license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"peerDependencies":{"svelte":"^5.0.0","tailwindcss":"^4.0.0","daisyui":"^5.0.0"},"devDependencies":{"@sveltejs/package":"^2.0.0","@sveltejs/vite-plugin-svelte":"^4.0.0","svelte":"^5.0.0","typescript":"^5.4.0","vite":"^5.4.0"},"gitHead":"96f671d52ac3d4f086a65e31e8ae14a76d021f85","_id":"@abeedoo/radish-components@0.5.0","_nodeVersion":"22.18.0","_npmVersion":"11.14.1","dist":{"integrity":"sha512-dxmo2nznmFmxgbVdZg3L+bpFnwnw6E6FtuhOvp+gDO7nIxAJc0gIshDLM0FOZB3MrEgVR10Y4Qf9wFpqEjIA7w==","shasum":"0f93099c6c9e1571f338f9303594a534b52ed99a","tarball":"https://registry.npmjs.org/@abeedoo/radish-components/-/radish-components-0.5.0.tgz","fileCount":235,"unpackedSize":260580,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC8K9H16BcjvRD49uM991axvd/NvwsiL9Em72il+F40qAIhAOHaWfCB6Hh44V70X48G7eXpGyHKXJ0KDAoB9sdFySm1"}]},"_npmUser":{"name":"meecect","email":"clifford.meece@me.com"},"directories":{},"maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/radish-components_0.5.0_1779221815321_0.1170971567138388"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-14T02:48:23.782Z","modified":"2026-05-19T20:16:55.725Z","0.4.0":"2026-05-14T02:48:24.026Z","0.4.1":"2026-05-14T02:53:01.923Z","0.4.2":"2026-05-14T02:55:41.434Z","0.5.0":"2026-05-19T20:16:55.497Z"},"description":"Svelte 5 + DaisyUI v5 component library — 70+ components with TypeScript, runes, and snippets","maintainers":[{"name":"meecect","email":"clifford.meece@me.com"}],"readme":"# @abeedoo/radish-components\n\nSvelte 5 component library wrapping DaisyUI v5. 70+ components with TypeScript, runes, snippets, and rest-props forwarding.\n\n**[Live Playground & Docs](https://components.radishplatform.com)**\n\n## Install\n\n```bash\nnpm install @abeedoo/radish-components\n```\n\n**Peer dependencies** — your project needs these installed:\n\n```bash\nnpm install svelte@^5 tailwindcss@^4 daisyui@^5\n```\n\n## Setup\n\n### 1. Tailwind CSS + DaisyUI\n\nYour `app.css` (or equivalent):\n\n```css\n@import \"tailwindcss\";\n@plugin \"daisyui\" {\n  themes: all;\n}\n```\n\n### 2. Content scanning\n\nIf using `@tailwindcss/vite`, add a `@source` directive so Tailwind picks up classes from the library:\n\n```css\n@import \"tailwindcss\";\n@source \"../node_modules/@abeedoo/radish-components/dist/**/*.svelte\";\n@plugin \"daisyui\" {\n  themes: all;\n}\n```\n\n### 3. Import and use\n\n```svelte\n<script>\n  import { Button, Card, Modal, toast } from '@abeedoo/radish-components';\n</script>\n\n<Button variant=\"primary\" onclick={() => toast.success('Hello!')}>\n  Click me\n</Button>\n```\n\n## Components\n\n### Actions\n- **Button** — variants, sizes, outline, loading, disabled, link mode\n- **Dropdown** — details or popover mode, position, alignment, hover\n- **Swap** — toggle between two states with rotate/flip animation\n- **ThemeController** — theme switcher\n\n### Data Display\n- **Accordion** + **AccordionItem** — collapsible sections, exclusive mode\n- **Avatar** + **AvatarGroup** — image, placeholder, online status\n- **Badge** — variants, sizes, auto-preset for common statuses\n- **Carousel** — snap positions, vertical mode\n- **Collapse** — single collapsible section\n- **Countdown** — animated digit\n- **Kbd** — keyboard key display\n- **List** + **ListItem** — structured list\n- **Stat** + **StatGroup** — label, value, description, figure\n- **Status** — online/offline indicator dot\n- **Table** — simple wrapper with zebra, pin rows/cols\n- **Timeline** + **TimelineItem** — vertical/horizontal timeline\n\n### Data Input\n- **Checkbox** — with label, indeterminate, variants, sizes\n- **FileInput** — styled file picker\n- **FormField** — label + input/select/textarea + error + help text\n- **Radio** — radio buttons with group binding\n- **Range** — slider with min/max/step\n- **Rating** — star rating with half-star support\n- **Select** — styled select with options\n- **TextInput** — text/email/password/number/url/date inputs\n- **Textarea** — auto-resize option\n- **Toggle** — switch toggle with label\n\n### Feedback\n- **Alert** — info, success, warning, error with auto-icons\n- **Loading** — spinner, dots, ring, ball, bars, infinity\n- **Progress** — determinate/indeterminate progress bar\n- **RadialProgress** — circular progress\n- **Skeleton** — content placeholder\n- **Toast** — toast notifications (mount once in root layout)\n- **Tooltip** — directional tooltips with variants\n\n### Layout\n- **Card** — title, description, headerActions snippet, compact, flat\n- **Divider** — horizontal/vertical with text\n- **Drawer** — sidebar drawer with overlay\n- **Footer** — page footer\n- **Hero** — hero section\n- **Stack** — stacked cards effect\n\n### Navigation\n- **Breadcrumbs** — link trail\n- **Dock** + **DockItem** — bottom navigation bar\n- **Link** — styled anchor with variants\n- **Menu** + **MenuItem** + **MenuTitle** — vertical/horizontal menus\n- **Navbar** — top navigation with start/center/end\n- **Pagination** — page numbers with prev/next\n- **Steps** + **Step** — progress steps with variants\n\n### Composites\n- **ConfirmDialog** — delete/action confirmation modal\n- **DataTable** — sortable, searchable, selectable, paginated data table\n- **EmptyState** — icon + message + optional action\n- **Icon** — 70+ inline SVG feather-style icons\n- **JsonLd** — schema.org structured data (productLd, articleLd, breadcrumbLd, etc.)\n- **Modal** — dialog with sizes, footer snippet, backdrop control\n- **PageHeader** — title, subtitle, breadcrumbs, action buttons\n- **Tabs** — tabbed content panels with variants\n\n### Stores\n- **toast** — `toast.success()`, `toast.error()`, `toast.warning()`, `toast.info()`\n\n## Patterns\n\n### Event handlers\n\nAll interactive components forward rest props, so any DOM event handler works:\n\n```svelte\n<Button variant=\"primary\" onclick={() => save()} onmouseover={highlight}>\n  Save\n</Button>\n\n<TextInput bind:value={email} onfocus={() => clearError()} />\n```\n\n### Bindable values\n\nInput components support two-way binding:\n\n```svelte\n<TextInput bind:value={name} />\n<Checkbox bind:checked={agreed} />\n<Toggle bind:checked={darkMode} />\n<Select bind:value={role} options={roleOptions} />\n<Rating bind:value={stars} />\n<Range bind:value={volume} />\n```\n\n### Snippets for composition\n\nComponents use Svelte 5 snippets for flexible content:\n\n```svelte\n<Card title=\"Users\">\n  {#snippet headerActions()}\n    <Button size=\"sm\" variant=\"primary\">Add User</Button>\n  {/snippet}\n  <p>Card content here.</p>\n</Card>\n\n<Modal bind:open={showModal} title=\"Edit\">\n  <p>Modal body.</p>\n  {#snippet footer()}\n    <Button variant=\"ghost\" onclick={() => showModal = false}>Cancel</Button>\n    <Button variant=\"primary\" onclick={save}>Save</Button>\n  {/snippet}\n</Modal>\n```\n\n### DataTable\n\n```svelte\n<DataTable\n  items={users}\n  columns={[\n    { key: 'name', label: 'Name', sortable: true },\n    { key: 'email', label: 'Email', sortable: true },\n    { key: 'role', label: 'Role' }\n  ]}\n  actions={[\n    { label: 'Edit', icon: 'edit', onClick: (item) => editUser(item) },\n    { label: 'Delete', icon: 'trash', variant: 'error', onClick: (item) => deleteUser(item) }\n  ]}\n  searchable\n  onSearch={(term) => goto(`?q=${term}`)}\n  selectable\n  bind:selectedItems\n  onRowClick={(item) => goto(`/users/${item.id}`)}\n  page={data.page}\n  totalPages={data.totalPages}\n  onPageChange={(p) => goto(`?page=${p}`)}\n/>\n```\n\n### Toast notifications\n\nMount `<Toast />` once in your root layout, then call from anywhere:\n\n```svelte\n<!-- +layout.svelte -->\n<script>\n  import { Toast } from '@abeedoo/radish-components';\n</script>\n<Toast />\n{@render children()}\n\n<!-- any component -->\n<script>\n  import { toast } from '@abeedoo/radish-components';\n\n  function handleSave() {\n    try {\n      await save();\n      toast.success('Saved successfully');\n    } catch (err) {\n      toast.error('Failed to save');\n    }\n  }\n</script>\n```\n\n## Development\n\n```bash\n# Build the package\ncd packages/components\nnpm run build\n\n# Run the playground/docs site\ncd packages/components/browser\nnpm run dev\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://components.radishplatform.com","keywords":["svelte","svelte5","daisyui","tailwindcss","components","ui","design-system"],"repository":{"type":"git","url":"git+https://github.com/abeedoolabs/radish-components.git"},"author":{"name":"Clifford Meece","email":"clifford@abeedoo.com"},"bugs":{"url":"https://github.com/abeedoolabs/radish-components/issues"},"license":"MIT"}