import { X } from 'lucide-react'; import type { ButtonHTMLAttributes, MouseEvent as ReactMouseEvent, ReactNode, } from 'react'; type PlatformModalCloseButtonVariant = | 'profile' | 'profileCompact' | 'floating' | 'floatingPlain' | 'platformIcon' | 'pixel' | 'editorDark'; type PlatformModalCloseButtonPlacement = 'absolute' | 'inline'; type PlatformModalCloseButtonProps = Omit< ButtonHTMLAttributes, 'children' > & { label: string; variant?: PlatformModalCloseButtonVariant; icon?: ReactNode; placement?: PlatformModalCloseButtonPlacement; stopPropagation?: boolean; }; const PLATFORM_MODAL_CLOSE_BUTTON_CLASS_BY_VARIANT: Record< PlatformModalCloseButtonVariant, string > = { profile: 'platform-modal-close flex h-9 w-9 items-center justify-center rounded-full', profileCompact: 'platform-profile-icon-button flex h-8 w-8 items-center justify-center rounded-full', floating: 'absolute right-3 top-3 z-10 flex h-8 w-8 items-center justify-center rounded-full bg-white/80 text-[#ff4056] shadow-sm', floatingPlain: 'absolute right-3 top-2 z-10 flex h-8 w-8 items-center justify-center rounded-full text-[#ff4056]', platformIcon: 'platform-icon-button disabled:cursor-not-allowed disabled:opacity-45', pixel: 'flex h-9 w-9 items-center justify-center rounded-full border border-white/10 bg-black/30 p-0 text-zinc-400 shadow-[0_8px_18px_rgba(0,0,0,0.28)] transition-colors hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-amber-200/70 disabled:cursor-not-allowed disabled:opacity-45', editorDark: 'platform-modal-close-button--editor-dark rounded-full border border-white/10 bg-white/5 p-2 text-zinc-300 transition hover:bg-white/10 hover:text-white', }; const PLATFORM_MODAL_CLOSE_BUTTON_PIXEL_PLACEMENT_CLASS_BY_PLACEMENT: Record< PlatformModalCloseButtonPlacement, string > = { absolute: 'absolute right-4 top-3 sm:right-5 sm:top-4', inline: 'relative shrink-0', }; /** * 平台弹窗关闭按钮。 * 收口个人中心和平台浮层里重复的关闭 aria、尺寸和视觉样式。 */ export function PlatformModalCloseButton({ label, variant = 'profile', icon = , className, type = 'button', placement = 'absolute', stopPropagation = false, onClick, title, ...buttonProps }: PlatformModalCloseButtonProps) { const handleClick = (event: ReactMouseEvent) => { if (stopPropagation) { event.preventDefault(); event.stopPropagation(); } onClick?.(event); }; return ( ); }