https://github.com/neetozone/neeto-atoms
Why Shadcn
AI-friendly — AI tools generate correct shadcn/Radix code natively
Accessibility built-in — keyboard navigation, focus management, and ARIA handled by Radix
Tailwind-native — all 15 products already on Tailwind 4
RTL support — components automatically adapt for Arabic, Hebrew, and Persian
Active ecosystem — strongest community momentum in React UI today
Migration Challenges
~27% of NeetoUI components have no direct shadcn equivalent
Prop names, variant names, and composition patterns all change
Formik layer — 13 form components, completely different underlying library
Table — resize, reorder, virtual scroll, bulk select have no shadcn equivalent
NeetoUI and
@neeto/atomswill coexist during migration
NeetoUI vs Shadcn
NeetoUI |
Shadcn |
Status |
|---|---|---|
ProgressBar |
Progress |
✅ Direct swap |
Spinner |
Spinner |
✅ Direct swap |
Kbd |
Kbd |
✅ Direct swap |
Select (async / multi / creatable) |
— |
❌ No equivalent |
DatePicker (timezone / time) |
— |
❌ Needs re-evaluation (Calendar now has timezone prop) |
TimePicker |
— |
❌ No equivalent |
ColorPicker |
— |
❌ No equivalent |
MultiEmailInput |
— |
❌ No equivalent |
TreeSelect / Tree |
— |
❌ No equivalent |
Table (advanced) |
— |
❌ No equivalent |
Stepper |
— |
❌ No equivalent |
Formik layer (13 components) |
Form (react-hook-form) |
❌ Different library |
Button |
Button |
🟡 Prop changes |
Input |
Input |
🟡 Prop changes |
Textarea |
Textarea |
🟡 Prop changes |
Label |
Label |
🟡 Prop changes |
Checkbox |
Checkbox |
🟡 Prop changes |
Radio |
RadioGroup |
🟡 Prop changes |
Switch |
Switch |
🟡 Prop changes |
Slider |
Slider |
🟡 Prop changes |
Select (basic) |
Select |
🟡 Prop changes |
Select (searchable) |
Combobox |
🟡 No async / creatable |
Modal |
Dialog |
🟡 No size variants, API changes |
Pane |
Sheet |
🟡 No size variants, API changes |
Tooltip |
Tooltip |
🟡 No theme, no interactive mode |
Dropdown |
DropdownMenu |
🟡 No hover trigger |
Popover |
Popover |
🟡 API changes |
Accordion |
Accordion |
🟡 API changes |
Tab |
Tabs |
🟡 No size variants |
Pagination |
Pagination |
🟡 No URL integration |
Avatar |
Avatar |
🟡 API changes |
Tag / Badge |
Badge |
🟡 Missing success / warning / info variants |
Callout |
Alert |
🟡 Missing warning / success variants |
Toastr |
Sonner |
🟡 No Axios / i18n support |
DatePicker (basic / range) |
Calendar + Popover |
🟡 No year/quarter picker |
Table (basic) |
Table |
🟡 Plain HTML only |
Typography |
— |
🟡 Utility classes only |
NoData |
Empty |
🟡 Limited |
Biggest Efforts
Component |
Effort |
|---|---|
Table |
Resize, reorder, freeze, virtual scroll — full rebuild |
Formik layer |
13 components, entirely different form library |
Select |
Async / multi / creatable — no shadcn equivalent |
TimePicker |
No shadcn equivalent |
ColorPicker / MultiEmailInput / TreeSelect |
No shadcn equivalent |
Next Steps
Publish
@neeto/atomsto npmPilot on the simplest products first
Migrate simple components across all 15 products
Evaluate complex components separately (Table, Formik, DatePicker timezone)
Deprecate
@neeto/uionce all products fully migrated