import { Slot } from "@radix-ui/react-slot"; import { cn } from "@/lib/utils"; import { ReactNode } from "react"; type ButtonProps = { variant?: "primary" | "secondary" | "success" | "warning" | "danger" | "muted" | "info"; size?: "sm" | "md" | "lg"; asChild?: boolean; children: ReactNode; isLoading?: boolean; icon?: ReactNode; // ← ★ アイコン追加 iconPosition?: "left" | "right"; // ← ★ 位置も制御可能 } & React.ButtonHTMLAttributes; export function Button({ variant = "primary", size = "md", asChild, children, isLoading, icon, iconPosition = "left", className, ...props }: ButtonProps) { const Comp = asChild ? Slot : "button"; return ( {isLoading && ( )} {!isLoading && icon && iconPosition === "left" && {icon}} {children} {!isLoading && icon && iconPosition === "right" && {icon}} ); }