Documentation
Button
Vanilla-geometry stone-textured button with default / success / ghost variants.
import { useState } from "react";
import { Button } from "./index";
/**
* Button 预览用例(规格 §10:story / 示例可运行)
*/
export function ButtonDemo() {
const [count, setCount] = useState(0);
return (
<div className="flex flex-wrap items-center gap-4">
<Button className="w-100" onClick={() => setCount(c => c + 1)}>
默认(已点
{count}
{" "}
次)
</Button>
<Button className="w-100" variant="success">Success</Button>
<Button className="w-60" variant="ghost">Ghost</Button>
<Button className="w-100" disabled>Disabled</Button>
</div>
);
}
Install
CLI copy
$npx shadcn add @tennantite/buttonnpm install
$pnpm add @tennantite/uinpm installs the compiled package; use the CLI copy above to adapt the source.
Usage
npm import
import { Button } from "@tennantite/ui";CLI copy import
import { Button } from "@/components/tennantite/button";import { useState } from "react";
import { Button } from "./index";
/**
* Button 预览用例(规格 §10:story / 示例可运行)
*/
export function ButtonDemo() {
const [count, setCount] = useState(0);
return (
<div className="flex flex-wrap items-center gap-4">
<Button className="w-100" onClick={() => setCount(c => c + 1)}>
默认(已点
{count}
{" "}
次)
</Button>
<Button className="w-100" variant="success">Success</Button>
<Button className="w-60" variant="ghost">Ghost</Button>
<Button className="w-100" disabled>Disabled</Button>
</div>
);
}API Reference
| Prop | Type | Description |
|---|---|---|
| variant | "default" | "ghost" | "realms" | "success" | Visual variant: default stone / success primary-action green / ghost transparent. |
Source
packages/ui/src/primitives/button/index.tsxThe npm package keeps the source tree, so you can copy and adapt it directly.