Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

62 lines
1.4 KiB
TypeScript

import * as React from "react";
import { Button as UISystemButton, buttonVariants } from "@tutti-os/ui-system";
import { cn } from "../../lib/utils";
type UISystemButtonProps = React.ComponentProps<typeof UISystemButton>;
type LegacyButtonSize =
| UISystemButtonProps["size"]
| "mini"
| "md"
| "max"
| "iconClose";
export interface ButtonProps extends Omit<UISystemButtonProps, "size"> {
size?: LegacyButtonSize;
}
function resolveButtonSize(
size: LegacyButtonSize | undefined
): UISystemButtonProps["size"] {
switch (size) {
case "mini":
return "xs";
case "md":
return "default";
case "max":
return "lg";
case "iconClose":
return "icon-sm";
default:
return size;
}
}
function resolveButtonClassName(
size: LegacyButtonSize | undefined,
className: string | undefined
): string | undefined {
if (size !== "iconClose") {
return className;
}
return cn(
"h-[28px] w-[28px] min-h-[28px] min-w-[28px] shrink-0 rounded-[4px] p-0 [&_svg]:size-[14px]",
className
);
}
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
({ className, size, ...props }, ref) => (
<UISystemButton
ref={ref}
className={resolveButtonClassName(size, className)}
size={resolveButtonSize(size)}
{...props}
/>
)
);
Button.displayName = "Button";
export { Button, buttonVariants };