React 19 · ٨ ك.ب مضغوطة · بلا اعتماديات

الهيكل
تحت أداتك.

أشرطة أيقونات على الأطراف، ومناطق قابلة لتغيير الحجم حول مركزٍ يخصّك أنت، وتخطيط يبقى بعد إعادة التحميل. بلا واجهة في الأسفل، وقابل لإعادة التلوين في الأعلى.

شاهد الأمثلة
حيّ الآن. اسحب الفواصل بين الأسطح، أو انقر أيقونة في الشريط أو اسحبها إلى نصف آخر، أو غيّر حجم النافذة.

أربع طرق للبدء

كل مثال يعمل في متصفحك وشيفرته كاملة أمامك. ابدأ بالأقرب إلى حاجتك.

الحد الأدنى

أصغر هيكل يعمل فعلًا: عمودان وشريط سفلي ومركز، مع ترويسة من صنعك تتحكم بها.

import { Panels, Panel } from '@pasquelin/panels'
import '@pasquelin/panels/styles.css'

<Panels<PanelId>>
  <Panel<PanelId> id="files" zone="left" title="Files">
    <FileTree />
  </Panel>

  <Panel<PanelId> id="notes" zone="right" opens={380}>
    <Notes />
  </Panel>

  <Panels.Center>
    <YourApp />
  </Panels.Center>
</Panels>

نصيحة. اللوحات التي تتشارك المنطقة والنصف تتناوب، والشريط ينقلك بينها. امنح إحداها النصف الثانوي لتظهر أسفل الأولى بدل أن تحلّ محلّها. وهنا يمكن سحب أيقونات الشريط من نصف إلى آخر.

افتح الحد الأدنى

React Router

المركز مخرج توجيه. التنقل يغيّر الوسط وحده — تحتفظ الأعمدة بعرضها وتبقى اللوحات المفتوحة مفتوحة.

function Layout() {
  return (
    <Panels<PanelId>>
      <Panel<PanelId> id="sites" zone="left" title="Sites">
        <SiteList />
      </Panel>

      <Panels.Center>
        <Outlet />
      </Panels.Center>
    </Panels>
  )
}

نصيحة. صرّح باللوحات في مسار التخطيط، فوق المخرج. لو صُرّح بها في كل صفحة لأُزيلت مع كل تنقل وفقدت ما تحمله.

افتح React Router

ألسنة المستندات

المركز يحمل المستندات عبر Dockview — ألسنة تُسحب وتُقسَّم — بينما تبقى اللوحات على الأطراف.

import { DockviewCenter } from '@pasquelin/panels/dockview'

<Panels.Center>
  <DockviewCenter
    documents={{ editor: Editor }}
    empty={NothingOpen}
    onReady={setApi}
  />
</Panels.Center>

نصيحة. استوردها من مدخل dockview كي لا يقع وزنها إلا على المشاريع التي تريد الألسنة. اللوحة لا تدخل المركز أبدًا: للمستند اسم، وللّوحة أيقونة.

افتح ألسنة المستندات

إعادة التلوين

الهيكل نفسه بأربع لوحات ألوان. الألوان ونصف القطر وعرض الشريط وارتفاع الترويسة — كلها خصائص مخصّصة.

.pnl-root {
  --pnl-chassis: #2e2b26;
  --pnl-panel: #1b1916;
  --pnl-accent: #d99a2b;
  --pnl-radius: 12px;
  --pnl-rail: 60px;
}

نصيحة. اضبط لون التمييز على أي عنصر أعلى، فيرث الهيكل هويتك بدل أن يفرض هويته. تريد أبعد من ذلك؟ كل قطعة مُصدَّرة وقابلة للاستبدال وحدها.

افتح إعادة التلوين

الواجهة كاملة

ليست كبيرة، وهذا هو المقصود. ستة أمور تكفي.

التصريح

اللوحة واصف: أين تُعلَّق، وما اسمها، وما الذي ترسمه.

<Panel id="files" zone="left" title="Files" icon={<Icon />}>
  <FileTree />
</Panel>
التحكم

خطّاف واحد لكل ترويسة أو اختصار أو قائمة تحتاج التأثير في اللوحات.

const { reveal, close, toggle, isShown } = usePanels<PanelId>()
إعادة الترتيب

خاصية واحدة، فيسحب القارئ أيقونة من الشريط إلى النصف الآخر. ويُحفَظ المكان الذي يختاره مع بقية التخطيط.

<Panels<PanelId> draggablePanels>
التحكم من خارج React

أنشئ المخزن بنفسك، فيستطيع مقبس أو قائمة نظام أو عامل خلفي فتح لوحة.

const store = createPanelsStore<PanelId>()
socket.on('alert', () => store.getState().show('alerts'))
إعادة التلوين

كل قيمة خاصية مخصّصة. اضبط لون التمييز فتتبعه الأشرطة.

.pnl-root {
  --pnl-panel: #101418;
  --pnl-accent: #47965c;
  --pnl-radius: 10px;
}
أو خذ المنطق وحده

المكوّنات مبنية على خطّافات لا ترسم شيئًا. ارسم إطارك أنت فوقها.

const zone = useZone('left')
useContainerFit(ref)