文档目录
标签页
130×24 原版 tab / tab_selected / highlighted 标签页。
工作台 / 熔炉 / 箱子…
import { useState } from "react";
import { Tabs, TabsList, TabsPanel, TabsTab } from "./index";
const CATEGORIES = ["方块", "物品", "红石"] as const;
/**
* Tabs 预览用例:配方书分类
*/
export function TabsDemo() {
const [category, setCategory] = useState("方块");
return (
<Tabs onValueChange={setCategory} value={category}>
<TabsList aria-label="配方分类">
{CATEGORIES.map(name => (
<TabsTab key={name} value={name}>
{name}
</TabsTab>
))}
</TabsList>
<TabsPanel value="方块">工作台 / 熔炉 / 箱子…</TabsPanel>
<TabsPanel value="物品">火把 / 梯子 / 栅栏…</TabsPanel>
<TabsPanel value="红石">中继器 / 比较器 / 活塞…</TabsPanel>
</Tabs>
);
}
安装
CLI 拷贝
$npx shadcn add @tennantite/tabsnpm 直装
$pnpm add @tennantite/uinpm 方式安装编译产物;需要改造源码请用上方的 CLI 拷贝安装。
用法
npm 导入
import { Tabs, TabsList, TabsPanel, TabsTab } from "@tennantite/ui";CLI 拷贝导入
import { Tabs, TabsList, TabsPanel, TabsTab } from "@/components/tennantite/tabs";import { useState } from "react";
import { Tabs, TabsList, TabsPanel, TabsTab } from "./index";
const CATEGORIES = ["方块", "物品", "红石"] as const;
/**
* Tabs 预览用例:配方书分类
*/
export function TabsDemo() {
const [category, setCategory] = useState("方块");
return (
<Tabs onValueChange={setCategory} value={category}>
<TabsList aria-label="配方分类">
{CATEGORIES.map(name => (
<TabsTab key={name} value={name}>
{name}
</TabsTab>
))}
</TabsList>
<TabsPanel value="方块">工作台 / 熔炉 / 箱子…</TabsPanel>
<TabsPanel value="物品">火把 / 梯子 / 栅栏…</TabsPanel>
<TabsPanel value="红石">中继器 / 比较器 / 活塞…</TabsPanel>
</Tabs>
);
}API Reference
| Prop | Type | Default | 描述 |
|---|---|---|---|
| variant | "panel" | "plain" | "plain" | 面板外观:panel 自带窗口面板纹理 / plain 无纹理无内边距(嵌在已有面板内时用)。仅 TabsPanel。 |
源码
packages/ui/src/primitives/tabs/index.tsxnpm 包保留源码目录,可直接复制改造。