From eb54d726d73a79323a3017d6edd1c67b8a08cc35 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sun, 18 May 2025 22:34:19 +0100 Subject: [PATCH] Add docs for tabs Signed-off-by: Charles de Dreuille --- .../src/app/(docs)/components/tabs/page.mdx | 92 +++++++++++++++++++ .../src/app/(docs)/components/tabs/props.ts | 61 ++++++++++++ canon-docs/src/snippets/stories-snippets.tsx | 8 ++ canon-docs/src/utils/data.ts | 5 + packages/canon/report.api.md | 10 +- .../src/components/Tabs/Tabs.stories.tsx | 18 ++-- packages/canon/src/components/Tabs/Tabs.tsx | 3 +- packages/canon/src/components/Tabs/index.ts | 2 + packages/canon/src/components/Tabs/types.ts | 25 +++++ 9 files changed, 211 insertions(+), 13 deletions(-) create mode 100644 canon-docs/src/app/(docs)/components/tabs/page.mdx create mode 100644 canon-docs/src/app/(docs)/components/tabs/props.ts create mode 100644 packages/canon/src/components/Tabs/types.ts diff --git a/canon-docs/src/app/(docs)/components/tabs/page.mdx b/canon-docs/src/app/(docs)/components/tabs/page.mdx new file mode 100644 index 0000000000..478608d718 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/tabs/page.mdx @@ -0,0 +1,92 @@ +import { PropsTable } from '@/components/PropsTable'; +import { TabsSnippet } from '@/snippets/stories-snippets'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; +import { + tabsRootPropDefs, + tabsListPropDefs, + tabsTabPropDefs, + tabsPanelPropDefs, +} from './props'; +import { BaseUI } from '@/components/HeadlessBanners/BaseUI'; + +# Tabs + +A component for toggling between related panels on the same page. + +} + code={` + + Tab 1 + Tab 2 + Tab 3 With long title + + Content for Tab 1 + Content for Tab 2 + Content for Tab 3 + `} +/> + + + + Usage + Theming + + + + + Tab 1 + Tab 2 + Tab 3 + + Content for Tab 1 + Content for Tab 2 + Content for Tab 3 + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + - `canon-TabsRoot` + - `canon-TabsList` + - `canon-TabsTab` + - `canon-TabsPanel` + - `canon-TabsIndicator` + + + +## API reference + + + +### Tabs.Root + +Groups the tabs and the corresponding panels. Renders a `
` element. + + + +### Tabs.List + +Groups the individual tab buttons. Renders a `
` element. + + + +### Tabs.Tab + +An individual interactive tab button that toggles the corresponding panel. Renders a `