跳到主要内容
Tennantite
EN
文档目录

下拉选择

石纹触发器 + 窗口面板下拉列表(Base UI Select)。

安装

CLI 拷贝

$npx shadcn add @tennantite/select

npm 直装

$pnpm add @tennantite/ui

npm 方式安装编译产物;需要改造源码请用上方的 CLI 拷贝安装。

用法

npm 导入

import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "@tennantite/ui";

CLI 拷贝导入

import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "@/components/tennantite/select";
import { useState } from "react";

import { Select, SelectIcon, SelectItem, SelectList, SelectPopup, SelectTrigger, SelectValue } from "./index";

const GAMEMODES = ["生存", "创造", "冒险", "旁观"] as const;

/**
 * Select 预览用例:游戏模式选择
*/
export function SelectDemo() {
  const [mode, setMode] = useState<null | string>("生存");

  return (
    <div className="flex flex-col gap-8">
      <Select<string> onValueChange={setMode} value={mode}>
        <SelectTrigger aria-label="游戏模式">
          <SelectValue />
          <SelectIcon />
        </SelectTrigger>
        <SelectPopup aria-label="游戏模式选项">
          <SelectList>
            {GAMEMODES.map(name => (
              <SelectItem key={name} value={name}>
                {name}
              </SelectItem>
            ))}
          </SelectList>
        </SelectPopup>
      </Select>
    </div>
  );
}

API Reference

PropType描述
classNamestring追加到触发器与根元素的类名。

源码

packages/ui/src/primitives/select/index.tsx

npm 包保留源码目录,可直接复制改造。