الآخر

Cheat Sheet: Headless UI في صفحة

One-page recall for choosing a headless base and owning your animation
🎯 الهدف: تفتكر الـ stack والاختيار والـ animation والتقييم من غير ما ترجع للفصول.

الـ Stack

npm ولا registry؟npm للـ versioning المركزي · shadcn registry لنفسك أو لتيم صغير
Behavior و a11yBase UI (default) · React Aria (RTL و تواريخ)
StylingTailwind v4 + CSS variables · cva · tailwind-merge + clsx
Buildtsdown (ESM + CJS + d.ts + unbundle) · أو Vite library mode + vite-plugin-dts
reactpeerDependencies، مش bundle
DocsStorybook + addon-a11y + interaction tests
TestsVitest + Testing Library · Chromatic أو Playwright screenshots
نشرpnpm workspaces + Turborepo · Changesets · GitHub Actions

المكتبات

Base UIheadless بجد · render prop · shadcn بيستخدمها · لسه جديدة
React Ariaأقوى a11y و RTL و date picker · verbose و bundle أكبر
Radixناضجة · تطوير أبطأ · RTL أضعف
rc-*مش headless · rc-motion · استخدمها لـ TreeSelect أو Cascader بس
جداول و lists طويلةTanStack Table + TanStack Virtual
HybridBase UI أساس + DatePicker من React Aria · API واحد موحّد

الـ Animation

Base UIdata-starting-style · data-ending-style · keepMounted · --transform-origin
Radixdata-state=open/closed · forceMount
React Ariadata-entering · data-exiting · isEntering / isExiting
Drawer في RTL[dir=rtl] اعكس translateX
tokens--motion-duration و --motion-ease كـ CSS variables
reduced motion@media (prefers-reduced-motion: reduce) → duration 0
Motionمش جوه الـ lib · المستخدم يجيبها بـ render prop
ToastBase UI Toast headless · Sonner هتحكمك بحركتها

التقييم من ١٠٠

المعيارBase UIReact AriaRadixrc-*
حرية الـ styling والـ design system95959055
التحكم في الـ animation92888855
الـ Accessibility88988860
الـ RTL والـ i18n82977875
تغطية الـ components82907592
الـ DX وسهولة الاستخدام90728870
الـ ecosystem ومستقبل الصيانة90887070
الإجمالي88878060