React 19 · gzip के बाद 8 kB · कोई निर्भरता नहीं

आपके औज़ार के
नीचे का ढाँचा।

किनारों पर आइकन रेल, बीच में आपका अपना केंद्र, और चारों ओर आकार बदलने योग्य क्षेत्र — और एक लेआउट जो पेज दोबारा लोड होने पर भी बना रहता है। नीचे कोई रेंडरिंग नहीं, ऊपर पूरी तरह से रंगने योग्य।

उदाहरण देखें
यह जीवंत है। सतहों के बीच की जगह खींचें, रेल का कोई आइकन दबाएँ या उसे दूसरे आधे हिस्से में खींचें, या विंडो का आकार बदलें।

शुरू करने के चार रास्ते

हर उदाहरण आपके ब्राउज़र में चलता है और उसका पूरा कोड सामने है। जो आपकी ज़रूरत के सबसे करीब हो, वहीं से शुरू करें।

न्यूनतम

सबसे छोटा ढाँचा जो सचमुच काम करता है। दो कॉलम, एक पट्टी, एक केंद्र — और आपका अपना हेडर जो इसे चलाता है।

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>

सुझाव। एक ही क्षेत्र और एक ही आधे हिस्से को साझा करने वाले पैनल बारी-बारी दिखते हैं; रेल उनके बीच बदलती है। दूसरे को secondary हिस्सा दें तो वह पहले के नीचे दिखेगा। यहाँ रेल के आइकन एक आधे हिस्से से दूसरे में खींचे भी जा सकते हैं।

न्यूनतम खोलें

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;
}

सुझाव। किसी भी ऊपरी तत्व पर एक्सेंट टोकन सेट करें और ढाँचा अपनी पहचान थोपने के बजाय आपकी पहचान अपना लेगा। और आगे जाना है? हर हिस्सा निर्यात किया गया है और अलग से बदला जा सकता है।

नया रंग-रूप खोलें

पूरा API

बहुत कुछ नहीं है, और यही बात है। जानने लायक छह चीज़ें।

घोषित करें

पैनल एक विवरण है: वह कहाँ लगेगा, उसका नाम क्या है, वह क्या दिखाता है।

<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)