OGANIKO Design System
Component catalogue
Components, patterns and tokens · demos, parameters & provenance
Switch Account, Delivery, and Notes on the same page — one section shows at a time, without a new screen or an accordion.
Meadow Farm oils for the Marsh household. Cold-pressed rapeseed, monthly — unaltered, not cooked or added to.
Named day for the River lane drop. Morning slots leave the farm by noon.
Driver window 07:30–11:00. Oils stay sealed — nothing cooked or added on the van.
A note for the packer and the driver. It stays with this subscription.
Bottled the evening before Wednesday. The Wednesday box is packed on top so the glass stays upright.
Cold-pressed rapeseed for the Marsh kitchen. One bottle a month, unaltered.
The same oil in a larger bottle. Still cold-pressed, still nothing added.
Six 500ml bottles for the farm-shop shelf. Glass stays upright in the crate.
Wednesday morning · farm gate cooler · 500ml rapeseed.
Wednesday morning again, unless you move it before Tuesday noon.
Billing opens after the first Wednesday delivery. Until then this tab stays unavailable.
Invoices for the oils subscription.
| Name | Type | Default | Description |
|---|---|---|---|
label | string | — | Accessible name for the tablist |
tabs | TabItem[] | — | id, label, panel, optional disabled |
value | string | — | Controlled selected tab id |
defaultValue | string | first enabled | Uncontrolled initial tab |
variant | string | line | line | pill |
size | string | md | sm | md |
| Item | Detail |
|---|---|
| Inspiration | 21st.dev / shadcn Tabs pattern (principles only — not a dump) |
| Scout approved | Phil Parry, 2026-09-23 |
| Maturity | experimental |
| Binding | components/tabs/tabs.css + components/tabs/react/Tabs.tsx |
| Catalogue CSS | catalogue/components/tabs.css (mirror — http.server roots at catalogue/) |
components/tabs/tabs.css
▾
<div class="og-tabs og-tabs--line og-tabs--md">
<div class="og-tabs__list" role="tablist" aria-label="Oils subscription">
<button type="button" role="tab" aria-selected="true" aria-controls="panel-account">Account</button>
<button type="button" role="tab" aria-selected="false" aria-controls="panel-delivery">Delivery</button>
</div>
<div role="tabpanel" id="panel-account">…</div>
<div role="tabpanel" id="panel-delivery" hidden>…</div>
</div>