جدول بيانات ومربع تحرير وسرد ومنتقي تاريخ ورافع ملفات جاهزة لـ React، تندمج في أي نظام تصميم: shadcn/ui أو MUI أو Chakra أو Ant Design أو نظامك الخاص.

كل جزء فيها slot قابل للاستبدال؛ وما لا تستبدله يبقى مكتمل المظهر.

npm i slotsmith
1042لينا بارك3تم الشحن
1043عمر حداد1قيد التجهيز
1044صوفيا رييس5تم الشحن
1045يوكي تاناكا2مدفوع
1046أمير ناصر4قيد التجهيز

بدّل نظام التصميم، واحتفظ بالجدول

الجدول نفسه في بعض أنظمة التصميم المعروفة، ويعمل نظامك بالطريقة نفسها. لا يتغيّر إلا الخاصية components.

Lena ParkEngineerPlatformActive2021-03-08
Omar HaddadDesignerProductActive2020-11-16
Sofia ReyesEngineerPaymentsAway2022-01-24
Yuki TanakaManagerPlatformActive2019-06-03
Amir NasserAnalystGrowthActive2023-02-13

landing/swap-fallback.tsx

import { DataTable } from "slotsmith/data-table";
import { columns, people } from "../shared/people";

export default function Swap() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      defaultPagination={{ pageIndex: 0, pageSize: 5 }}
    />
  );
}
import { DataTable } from "slotsmith/data-table";
import { shadcnComponents } from "../adapters/data-table/shadcn"; سطر متغيّر
import { columns, people } from "../shared/people";

export default function Swap() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      defaultPagination={{ pageIndex: 0, pageSize: 5 }}
      components={shadcnComponents} سطر متغيّر
    />
  );
}
import { DataTable } from "slotsmith/data-table";
import { muiComponents } from "../adapters/data-table/mui"; سطر متغيّر
import { columns, people } from "../shared/people";

export default function Swap() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      defaultPagination={{ pageIndex: 0, pageSize: 5 }}
      components={muiComponents} سطر متغيّر
    />
  );
}
import { DataTable } from "slotsmith/data-table";
import { chakraComponents } from "../adapters/data-table/chakra"; سطر متغيّر
import { columns, people } from "../shared/people";

export default function Swap() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      defaultPagination={{ pageIndex: 0, pageSize: 5 }}
      components={chakraComponents} سطر متغيّر
    />
  );
}
import { DataTable } from "slotsmith/data-table";
import { antdComponents } from "../adapters/data-table/antd"; سطر متغيّر
import { columns, people } from "../shared/people";

export default function Swap() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      defaultPagination={{ pageIndex: 0, pageSize: 5 }}
      components={antdComponents} سطر متغيّر
    />
  );
}

نوعان من الأجزاء

كل جزء في كل مكوّن من أحد نوعين، والنوع يحدّد ما يستقبله البديل الذي تضعه مكانه.

<Row>أجزاء العناصر

جزء العنصر يرسم عنصر DOM واحدًا. يستقبل خصائص DOM عادية، والحالة في سمات data-*، لذا يحلّ محلّه العنصر الأساسي من أي مكتبة كما هو.

import TableRow from "@mui/material/TableRow";
import { DataTable } from "slotsmith/data-table";
import { columns, people } from "../shared/people";

// Row is an element part: TableRow takes the <tr> props as is.
export default function ElementPart() {
  return (
    <DataTable
      data={people}
      columns={columns}
      components={{ Row: TableRow }}
    />
  );
}

{Checkbox}أجزاء الأدوات

جزء الأداة يُخبَر بما هو صحيح: checked وindeterminate وonCheckedChange. وتكفي بضعة أسطر لتحويل ذلك إلى خصائص مكوّنك.

import Checkbox from "@mui/material/Checkbox";
import { DataTable, type CheckboxSlotProps } from "slotsmith/data-table";
import { columns, people } from "../shared/people";

// Checkbox is a widget part: told what is true, it maps
// that to MUI's own props.
function MuiCheckbox(props: CheckboxSlotProps) {
  return (
    <Checkbox
      checked={props.checked}
      indeterminate={props.indeterminate}
      disabled={props.disabled}
      onChange={(_, checked) => props.onCheckedChange(checked)}
      slotProps={{ input: { "aria-label": props["aria-label"] } }}
    />
  );
}

export default function WidgetPart() {
  return (
    <DataTable
      data={people}
      columns={columns}
      enableRowSelection
      components={{ Checkbox: MuiCheckbox }}
    />
  );
}
ما يستقبله كل نوع من الأجزاء
النوعيستقبلبديل عن
أجزاء العناصر<Root><Table><Row><Cell>خصائص DOM عادية، والحالة في سمات data-*العناصر الأساسية من أي مكتبة، دون تعديل، مثل عناصر shadcn/ui وMUI وChakra
أجزاء الأدوات{Checkbox}{Pagination}{Empty}خصائص دلالية (checked وpageIndex وsetPageSize)مكوّناتك، عبر محوّل من بضعة أسطر

اقرأ الأدلة

أربعة مكوّنات

كل لوحة هي المكوّن نفسه بأجزائه المدمجة. افتح أيًّا منها لتقرأ أدلته وواجهته البرمجية.

جدول البيانات

جدول يدعم الفرز والتحديد والترقيم وبيانات الخادم والصفوف الشجرية والصفوف الافتراضية وإعادة ترتيب الصفوف.

الموعد
إطلاق الإصدار 2لينا3 أكتوبر
إصلاح التصديرعمر6 أكتوبر
مراجعة النماذجصوفيا9 أكتوبر
خطة الربع الرابعيوكي14 أكتوبر

الإكمال التلقائي

قائمة بحث وقائمة اختيار في مكوّن واحد.

رافع الملفات

منتقي ملفات مع الرفع والبطاقات والتحقق من الصحة وتعديل السجلات والقوائم الافتراضية.

اسحب وأفلِت، أو تصفّح

منتقي التاريخ

منتقي تواريخ لليوم الواحد والنطاقات والتواريخ المتعددة، مع حدود وأيام محظورة وإعدادات جاهزة.

يعمل مع ما لديك

احتفظ بنظام التصميم وطبقة البيانات لديك، أيًّا كانا. هذه بعض المكتبات المعروفة، وكل اسم يفتح الصفحة التي تعرضه وهو يعمل.

اللغات والكتابة من اليمين إلى اليسار

كل تسمية تأتي من حزمة لغة. بدّل اللغة: تتغيّر التسميات، وينعكس الجدول للكتابة من اليمين إلى اليسار.

لينا باركبرلينمدفوع
عمر حدادعمّانتم الشحن
صوفيا رييسمدريدقيد التجهيز
يوكي تاناكاأوساكامدفوع
أمير ناصرطهرانتم الشحن

اقرأ دليل اللغات

الاستخدام مع وكلاء الذكاء الاصطناعي

slotsmith-ai خادم MCP. يعطي وكيلَ البرمجة لديك كل خاصية وكل جزء وكل تسمية، وينسخ محوّلات جاهزة إلى مشروعك. يضيفه Claude Code بأمر واحد، ويقرأه Cursor من .cursor/mcp.json، ويقرأه VS Code من .vscode/mcp.json.

claude mcp add slotsmith -- npx -y slotsmith-ai mcp

اقرأ دليل أدوات الذكاء الاصطناعي

الاختبارات والحجم والترخيص

{ tests: 1761, suites: 20, gzip: "38.5 KB", license: "ISC", react: ">=18" }

الأسئلة الشائعة

هل تعمل slotsmith مع App Router في Next.js؟

نعم. تبدأ كل نقطة دخول بالتوجيه "use client"، لذا يمكنك استيراد المكوّن مباشرة في ملف Server Component. يُعرض على الخادم ثم يُفعَّل في المتصفح.

اطّلع عليه في التوثيق

هل أحتاج إلى Tailwind؟

لا. يأتي كل مكوّن بملف CSS عادي تُضبط ألوانه بخصائص CSS المخصّصة. لا تحتاج إلى Tailwind إلا إذا كان نظام التصميم لديك يستخدمه.

اطّلع عليه في التوثيق

هل تعمل مع نظام التصميم الذي أستخدمه؟

نعم. كل جزء منفذ (slot): مرّر زر نظامك أو مربع الاختيار أو القائمة المنسدلة فيحلّ محلّ البديل الافتراضي. تعرض صفحات المحوّلات shadcn/ui وMUI وChakra وAnt Design وRadix Themes أمثلةً على ذلك.

اطّلع عليه في التوثيق

كم يضيف مكوّن واحد إلى حجم الحزمة؟

لكل مكوّن نقطة دخول خاصة به. حجم نقطة دخول جدول البيانات 38.5 KB بعد ضغط gzip، دون احتساب React وTanStack Table اللتين يستوردهما، فلا تعتمد slotsmith على أي حزمة أخرى. تسرد صفحة الثقة كل نقاط الدخول.

اطّلع عليه في التوثيق

هل تعمل مع React 18؟

نعم. نطاق الاعتمادية النظيرة هو react >=18، لذا يعمل الإصداران React 18 وReact 19.

اطّلع عليه في التوثيق

ما الترخيص؟

ISC. يمكنك استخدام slotsmith في المشاريع التجارية والمغلقة المصدر.

اطّلع عليه في التوثيق

ثبّت slotsmith

npm i slotsmith