import type { HTMLAttributes, ReactNode } from 'react';
type PlatformOverlayBadgePlacement =
| 'topLeft'
| 'topRight'
| 'bottomLeft'
| 'bottomRight';
type PlatformOverlayBadgeOffset = 'default' | 'tight';
type PlatformOverlayBadgeSize = 'default' | 'compact';
type PlatformOverlayBadgeTone = 'light' | 'muted';
type PlatformOverlayBadgeProps = Omit<
HTMLAttributes,
'children'
> & {
children: ReactNode;
placement?: PlatformOverlayBadgePlacement;
offset?: PlatformOverlayBadgeOffset;
size?: PlatformOverlayBadgeSize;
tone?: PlatformOverlayBadgeTone;
};
const PLATFORM_OVERLAY_BADGE_PLACEMENT_CLASS: Record<
PlatformOverlayBadgeOffset,
Record
> = {
default: {
topLeft: 'left-3 top-3',
topRight: 'right-3 top-3',
bottomLeft: 'bottom-3 left-3',
bottomRight: 'bottom-3 right-3',
},
tight: {
topLeft: 'left-2 top-2',
topRight: 'right-2 top-2',
bottomLeft: 'bottom-2 left-2',
bottomRight: 'bottom-2 right-2',
},
};
const PLATFORM_OVERLAY_BADGE_SIZE_CLASS: Record<
PlatformOverlayBadgeSize,
string
> = {
default: 'px-3 py-1 tracking-[0.18em] shadow-[0_8px_20px_rgba(0,0,0,0.22)]',
compact: 'px-2 py-0.5 tracking-normal shadow-sm',
};
const PLATFORM_OVERLAY_BADGE_TONE_CLASS: Record<
PlatformOverlayBadgeTone,
string
> = {
light: 'border-white/40 bg-white/88 text-zinc-900',
muted:
'border-[var(--platform-subpanel-border)] bg-[var(--platform-subpanel-fill)] text-[var(--platform-text-soft)]',
};
/**
* 平台媒体悬浮标签。
* 统一承接预览图、素材图和舞台画面上的非交互短标签。
*/
export function PlatformOverlayBadge({
children,
placement = 'topLeft',
offset = 'default',
size = 'default',
tone = 'light',
className,
...spanProps
}: PlatformOverlayBadgeProps) {
return (
{children}
);
}