Tabs
Tabs switches multiple panels by selectable buttons.
Overview
Copy
import { Tab } from "@camome/core/Tab";
const items = [ { id: 1, label: "React", panel: "React is an awesome framework", }, { id: 2, label: "Vue", panel: "Vue is an awesome framework", }, { id: 3, label: "Svelte", panel: "Svelte is an awesome framework", },];
export default function Default() { return ( <Tab.Group> <Tab.List> {items.map((item) => ( <Tab key={item.id} active={item.id === 1}> {item.label} </Tab> ))} </Tab.List> <Tab.Panel>{items[0].panel}</Tab.Panel> </Tab.Group> );}
Default.parameters = { layout: "padded",};
Usage with Headless UI
Copy
import { Tab as HeadlessTab } from "@headlessui/react";import clsx from "clsx";
import { tabClassNames } from "@camome/core/Tab";
const { group, list, tab, tabActive, panel } = tabClassNames;
const items = [ { id: 1, label: "React", panel: "React is an awesome framework", }, { id: 2, label: "Vue", panel: "Vue is an awesome framework", }, { id: 3, label: "Svelte", panel: "Svelte is an awesome framework", },];
export default function WithHeadlessUI() { return ( <HeadlessTab.Group as="div" className={group}> <HeadlessTab.List className={list}> {items.map((item) => ( <HeadlessTab key={item.id} className={({ selected }) => clsx(tab, selected && tabActive)} > {item.label} </HeadlessTab> ))} </HeadlessTab.List> <HeadlessTab.Panels className={panel}> {items.map((item) => ( <HeadlessTab.Panel key={item.id}>{item.panel}</HeadlessTab.Panel> ))} </HeadlessTab.Panels> </HeadlessTab.Group> );}
WithHeadlessUI.parameters = { layout: "padded",};