MEDAApache-2.0 · TypeScript أولاً
الواجهة التي بُني بها Medal.
Meda هي الواجهة المشتركة والعناصر الأساسية خلف تطبيقات Medal — التنقّل واللوحات وعناصر تسجيل الدخول والوصفات وجسور السمات ولوحة الأوامر وتخطيط مساحة العمل. تُنشر باسم @medalsocial/meda.
ثبّت، ثم نسّق، ثم اعرض الواجهة.
bashالتثبيتpnpm add @medalsocial/meda lucide-react @dnd-kit/core @dnd-kit/sortable @dnd-kit/utilities @xyflow/react
التبعيات المرافقة
تتوقّع Meda وجود react بإصدار 19 أو أحدث وreact-dom بإصدار 19 أو أحدث، إضافة إلى الحزم النظيرة المطلوبة lucide-react و@dnd-kit/core و@dnd-kit/sortable و@dnd-kit/utilities و@xyflow/react في مشروعك (أما next-themes وreact-markdown و@react-three/fiber فاختيارية). تُشحن الحزمة مع ملف styles.css يحوي رموز التصميم؛ استورده مرة واحدة في ملف الأنماط الرئيسي وضع تخصيصاتك بعده، كي تفوز التعريفات المتساوية في الأولوية بترتيب المصدر.
cssإعداد Tailwind CSS v4@import 'tailwindcss'; @import '@medalsocial/meda/styles.css'; :root { /* Overrides go after the Meda import so they win by source order. */ --color-brand-500: oklch(0.62 0.18 245); }
tsxعرض الواجهةimport { AppShell, MedaShellProvider } from '@medalsocial/meda/shell'; import { Inbox } from 'lucide-react'; export function App() { const workspace = { id: 'workspace', name: 'Workspace' }; const apps = [{ id: 'inbox', label: 'Inbox', icon: Inbox }]; return ( <MedaShellProvider workspace={workspace} apps={apps}> <AppShell variant="workspace" iconRail={{ mainItems: [{ id: 'inbox', label: 'Inbox', icon: Inbox, to: '/inbox' }] }} > {/* your app */} </AppShell> </MedaShellProvider> ); }
الواجهة نفسها التي نشغّلها
تشغّل Meda تطبيقات Medal ذاتها، فما تحصل عليه من أشرطة تنقّل ولوحة أوامر وتخطيط لمساحة العمل هو ما نشغّله في الإنتاج — لا مجرد عيّنة تجريبية.