SidePanel

Sivupaneeli

Sisältöä kaventava paneeli; molemmat puolet jäävät käytettäviksi.

Käyttöpaikat

Suoraan: palvelu tuo osan itse. Välillisesti: osa tulee mukaan toisen paketin osan kautta, ja sen muutos näkyy palvelussa silti. Laskettu julkaisun yhteydessä 23.10.2026.

TP-IAM

Sisältö kapenee paneelin viereltä, ja molemmat puolet pysyvät käytettävinä.

Esimerkki valitulla teemalla ja sävyllä; vaihda ne yläpalkista.

Käyttö

Paketin README:n luku sellaisenaan.

SidePanel — sisältöä kaventava sivupalkki

Layout-elementti, ei overlay. Ottaa oman tilansa vierestä ja jättää molemmat puolet käytettäviksi.

import {
  SidePanel, SidePanelHeader, SidePanelTitle,
  SidePanelBody, SidePanelFooter,
} from "@karkkainen/ui";

<div className="flex min-h-0 flex-1">
  {/* min-w-0 on PAKOLLINEN — ilman sitä flex ei anna sisällön kaventua */}
  <main className="min-w-0 flex-1 overflow-y-auto">…taulukko…</main>

  <SidePanel open={open} onClose={() => setOpen(false)} size="sm">
    <SidePanelHeader>
      <SidePanelTitle>Toimittajan tiedot</SidePanelTitle>
    </SidePanelHeader>
    <SidePanelBody>…</SidePanelBody>
    <SidePanelFooter>…</SidePanelFooter>
  </SidePanel>
</div>
PropsiArvotOletus
openpakollinen—
onClosekun annettu, piirtää sulkupainikkeen—
sizesm · default · lgdefault
sideright · leftright

Kapealla näytöllä (< md) paneeli menee sisällön päälle — inline-paneeli puristaisi sisältöalueen käyttökelvottoman kapeaksi puhelimessa.

Ei hookkeja eikä globaaleja kuuntelijoita: sulkeminen on kutsujan vastuulla, joten paneelin tila voi tulla myös URL:sta ilman asiakaspuolen tilaa.

Dialog, Sheet vai SidePanel?

KysymysDialogSheetSidePanel
Näkyykö tausta?Ei — tummennettuKylläKyllä — vieressä
Voiko taustaa käyttää samalla?EiEiKyllä
Vieikö tilaa sisällöltä?EiEiKyllä — kaventaa
Kuinka kauan käyttäjä viipyy?SekuntejaMinuuttejaKoko työskentelyn ajan
EsimerkkiPoiston vahvistusDetaljit, suodattimet, lokiTarkastelupaneeli, syöttö taulukon rinnalla

Nyrkkisääntö: jos käyttäjän on tarkoitus *lukea tai klikata taustaa* paneelin ollessa auki, se on SidePanel. Muuten Sheet.

Neljä tyypillistä käyttötapausta (kaikki klikattavina demo-sivustolla):

  1. Detaljinäkymä listan rinnalla — operaattori käy listaa läpi rivi riviltä. Oma sivu veisi listan pois ja pakottaisi takaisin-napin joka kerta. *Jos sisältö ansaitsee oman URL:n ja jaettavan linkin, tee siitä sivu.*
  2. Suodattimet suurelle taulukolle — suodattaminen on iteratiivista: säädä, katso tulos, säädä uudelleen. Dialogi peittäisi juuri sen mitä ollaan säätämässä.
  3. Lomake joka ei mahdu dialogiin — kiinteä footer pitää tallennuksen näkyvissä.
  4. Tapahtumaloki — luettavaa, ei muokattavaa; ei footeria.

Vasen reuna on varattu navigaatiolle. Käytä oikeaa, ellei sinulla ole erityistä syytä.

Tuonti ja lähde

import { SidePanel, SidePanelHeader, SidePanelBody, SidePanelFooter, SidePanelTitle, SidePanelDescription } from "@karkkainen/ui";
  • src/components/side-panel.tsx