UNPKG

@hakuna-matata-ui/tabs

Version:

Accessible Tabs component for React and Chakra UI

131 lines (108 loc) 2.52 kB
# @hakuna-matata-ui/tabs An accessible tabs component. The `Tab` and `TabPanel` elements are associated by their order in the tree. None of the components are empty wrappers, each is associated with a real DOM element in the document, giving you maximum control over styling and composition. ## Installation ```sh yarn add @hakuna-matata-ui/tabs # or npm i @hakuna-matata-ui/tabs ``` ## Import components ```jsx import { Tabs, TabList, TabPanels, Tab, TabPanel, } from "@hakuna-matata-ui/react" ``` ## Usage ```jsx <Tabs> <TabList> <Tab>One</Tab> <Tab>Two</Tab> <Tab>Three</Tab> </TabList> <TabPanels> <TabPanel> <p>one!</p> </TabPanel> <TabPanel> <p>two!</p> </TabPanel> <TabPanel> <p>three!</p> </TabPanel> </TabPanels> </Tabs> ``` ### Tab variants and color schemes Tabs come in 6 different variants to style the tabs: `line`,`enclosed`, `enclosed-colored`, `soft-rounded`, `solid-rounded`. Each variant comes it different color schemes. ```jsx <Tabs variant="enclosed" colorScheme="red"> <TabList> <Tab>One</Tab> <Tab>Two</Tab> </TabList> <TabPanels> <TabPanel> <p>one!</p> </TabPanel> <TabPanel> <p>two!</p> </TabPanel> </TabPanels> </Tabs> ``` ### Manually Activated Tabs By default, `Tabs` are activated automatically. This means when you use the arrow keys to change tabs, the tab is activated and focused. The content of a `TabPanel` should ideally be preloaded. However, if switching to a tab panel causes a network request and possibly a page refresh, there might be some notable latency and this might affect the experience for keyboard and screen reader users. In this scenario, you should use a manually activated tab, it moves focus without activating the tabs. With focus on a specifc tab, users can activate a tab by pressing <kbd>Space</kbd> or <kbd>Enter</kbd>. ```jsx <Tabs isManual variant="enclosed"> <TabList> <Tab>One</Tab> <Tab>Two</Tab> </TabList> <TabPanels> <TabPanel> <p>one!</p> </TabPanel> <TabPanel> <p>two!</p> </TabPanel> </TabPanels> </Tabs> ``` ### Tab sizes You can change the size of the tab by passing `size` prop. We support 3 sizes `sm`, `md`, `lg` ```jsx <Tabs size="md" variant="enclosed"> <TabList> <Tab>One</Tab> <Tab>Two</Tab> </TabList> <TabPanels> <TabPanel> <p>one!</p> </TabPanel> <TabPanel> <p>two!</p> </TabPanel> </TabPanels> </Tabs> ```