UNPKG

@restnfeel/agentc-starter-kit

Version:

한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템

26 lines (23 loc) 1.72 kB
"use client"; import { jsxs, jsx } from 'react/jsx-runtime'; import { forwardRef } from 'react'; import { cn } from '../../utils/cn.js'; const Button = forwardRef(({ className, variant = "primary", size = "md", loading, children, disabled, ...props }, ref) => { const baseClasses = "inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none"; const variants = { primary: "bg-blue-600 text-white hover:bg-blue-700", secondary: "bg-gray-200 text-gray-900 hover:bg-gray-300", outline: "border border-gray-300 bg-white text-gray-700 hover:bg-gray-50", destructive: "bg-red-600 text-white hover:bg-red-700", ghost: "hover:bg-gray-100 text-gray-700", }; const sizes = { sm: "h-8 px-3 text-sm", md: "h-10 px-4 py-2", lg: "h-12 px-6 text-lg", }; return (jsxs("button", { className: cn(baseClasses, variants[variant], sizes[size], className), ref: ref, disabled: disabled || loading, ...props, children: [loading && (jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] })), children] })); }); Button.displayName = "Button"; export { Button }; //# sourceMappingURL=Button.js.map