コンテンツにスキップ
Vantage
English
Esc
navigateopen⌘Jpreview
このページの内容

Button

The button, with six variants and eight sizes.

The component you’ll reach for most. variant carries the meaning, size the scale.

export const client = "only";

import { Button } from "@squadbase/vantage/ui";
import { Download } from "lucide-react";

export default function Example() {
  return (
    <div className="flex w-[26rem] flex-col gap-3">
      <div className="flex flex-wrap items-center gap-2">
        <Button>default</Button>
        <Button variant="secondary">secondary</Button>
        <Button variant="outline">outline</Button>
        <Button variant="ghost">ghost</Button>
        <Button variant="destructive">destructive</Button>
        <Button variant="link">link</Button>
      </div>
      <div className="flex flex-wrap items-center gap-2">
        <Button size="xs">xs</Button>
        <Button size="sm">sm</Button>
        <Button>default</Button>
        <Button size="lg">lg</Button>
        <Button size="icon" variant="outline" aria-label="ダウンロード">
          <Download />
        </Button>
      </div>
      <div className="flex flex-wrap items-center gap-2">
        <Button disabled>disabled</Button>
        <Button variant="outline">
          <Download />
          アイコン付き
        </Button>
      </div>
    </div>
  );
}
import { Button, buttonVariants } from "@squadbase/vantage/ui";
PropType
variant?"default" | "secondary" | "outline" | "ghost" | "destructive" | "link"

Look and meaning.

Type"default" | "secondary" | "outline" | "ghost" | "destructive" | "link"
Default"default"
size?"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg"

Height and padding. The `icon` sizes are square.

Type"default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg"
Default"default"
render?ReactElement

Render as a different element (Radix's `asChild`).

TypeReactElement

Drop an icon in as a child and its size and spacing are handled. For icon-only buttons always pass size="icon" and an aria-label.

Pass an element to render — Base UI has no asChild.

import { Link } from "@squadbase/vantage/router";

<Button render={<Link to="/sales" />}>View sales</Button>;

When you only want the class string, call buttonVariants({ variant, size }).

Pending state

<Button disabled={isPending}>
  {isPending && <Spinner />}
  Save
</Button>

このページは役に立ちましたか?