Skip to content
Redpanda UI
Esc
↑↓navigate↵open⌘Jpreview
Made by imskyleen
Edit on GitHub

Code Tabs

A tabs component that displays code for different languages/CLI commands.

Installation

bash
npx shadcn@latest add @redpanda/code-tabs
bash
pnpm dlx shadcn@latest add @redpanda/code-tabs
bash
yarn dlx shadcn@latest add @redpanda/code-tabs
bash
bunx shadcn@latest add @redpanda/code-tabs
bash
nubx shadcn@latest add @redpanda/code-tabs
bash
aube dlx shadcn@latest add @redpanda/code-tabs

Usage

tsx
<CodeTabs codes={codes} />

If you want to toggle between light and dark themes, you can use the theme prop.

tsx
<CodeTabs codes={codes} theme="dark" />

Use defaultValue for an initial selection or value and onValueChange for controlled selection. Controlled tabs only change after the parent accepts the new item ID. Copy always uses the selected item’s original source, not its highlighted HTML.

The code viewer owns its compact header and panels; it does not inherit generic Tabs sizing. Its single visual variant is standard. If highlighting cannot load or a language is unsupported, the original source remains readable and copyable as plain text.

When to use

Use this decision tree to determine when to use the Code Tabs component:

Examples

Install Tabs

Props

PropType
codes?Record<string, string>

The codes to display in the tabs

TypeRecord<string, string>
lang?string

The language of the code

Typestring
Defaultbash
themes?Record<string, string>

The shiki themes to display in the tabs

TypeRecord<string, string>
Default{ light: 'github-light-high-contrast', dark: 'github-dark-default' }
copyButton?boolean

Whether to show the copy button.

Typeboolean
Defaulttrue
onCopy?(content: string) => void

The function to call when copy is successful.

Type(content: string) => void
variant?'standard'

The visual variant of the code tabs

Type'standard'
Defaultstandard

Credits

  • We use Base UI for the underlying tabs component.
  • We take our inspiration from Shadcn UI for the tabs style.
  • The embedded copy button’s animation is powered by Motion.

Recent changes

  • patchv1.2.0Pin shipped dependency floors to the version we develop against. Registry items now declare ranges like `^5.1.9` (the actual installed version) instead of collapsing to `^5.0.0`, so consumers start on the known-tested baseline while caret semantics still allow any compatible release within the same major.#133
  • minorv1.1.0Theme docs refresh, readability pass on semantic foregrounds, and consumer-facing Base UI regression fixes.#121
  • minorv1.0.0Post-Base-UI polish. Public API unchanged.#116
  • majorv1.0.0Migrate every Radix-based primitive to `@base-ui/react@^1.4.0` (Base UI).#114
  • minorv0.3.0Add theme-provider component to the registry with documentation and tests. Includes playground type improvements (export RegistryItem, remove as-const boilerplate) and docs site dark mode border color fix.#109
See full history →

Last updated on

Was this page helpful?