import React from 'react'; import { Button } from './ui/button'; import { cn } from '../lib/utils'; import { Send, Check, X } from 'lucide-react'; type ToolbarLabelBreakpoint = 'md' | 'lg'; interface FeedbackButtonProps { onClick: () => void; disabled?: boolean; isLoading?: boolean; label?: string; shortLabel?: string; loadingLabel?: string; shortLoadingLabel?: string; title?: string; labelBreakpoint?: ToolbarLabelBreakpoint; } export const FeedbackButton: React.FC = ({ onClick, disabled = false, isLoading = false, label = 'Send Feedback', shortLabel, loadingLabel = 'Sending...', shortLoadingLabel, title = 'Send Feedback', labelBreakpoint = 'md', }) => ( ); export interface ApproveButtonProps { onClick: () => void; disabled?: boolean; isLoading?: boolean; label?: string; loadingLabel?: string; mobileLabel?: string; mobileLoadingLabel?: string; title?: string; /** Kept for plan mode (packages/editor AppHeader) — the softened "you have * annotations" treatment. The old platform-mode `muted` prop died with * PR6 (DecisionControl owns the self-approval mute now). */ dimmed?: boolean; labelBreakpoint?: ToolbarLabelBreakpoint; } export const ApproveButton: React.FC = ({ onClick, disabled = false, isLoading = false, label = 'Approve', loadingLabel = 'Approving...', mobileLabel = 'OK', mobileLoadingLabel = '...', title, dimmed = false, labelBreakpoint = 'md', }) => ( ); interface ExitButtonProps { onClick: () => void; disabled?: boolean; isLoading?: boolean; title?: string; labelBreakpoint?: ToolbarLabelBreakpoint; /** `'ghost'` renders the icon-only ghost-X form that sits beside the * decision control. Default `'pill'` keeps every existing caller * byte-identical. */ appearance?: 'pill' | 'ghost'; } export const ExitButton: React.FC = ({ onClick, disabled = false, isLoading = false, title = 'Close session without sending feedback', labelBreakpoint = 'md', appearance = 'pill', }) => appearance === 'ghost' ? ( ) : ( );