import type { ComponentType, DragEventHandler, MouseEventHandler, PointerEventHandler, ReactNode, } from 'react'; import { PlatformIconButton, type PlatformIconButtonVariant, } from '../common/PlatformIconButton'; import { PlatformMediaFrame } from '../common/PlatformMediaFrame'; type IconComponent = ComponentType<{ className?: string }>; export type EditorIconButtonProps = { label: string; title?: string; icon: IconComponent; className?: string; type?: 'button' | 'submit'; disabled?: boolean; pressed?: boolean; expanded?: boolean; variant?: PlatformIconButtonVariant; onClick?: () => void; }; export function EditorIconButton({ label, title = label, icon: Icon, className, type = 'button', disabled, pressed, expanded, variant, onClick, }: EditorIconButtonProps) { return ( } /> ); } export type SidebarMediaItemProps = { title: string; detail: string; imageSrc: string; objectKey?: string | null; imageAlt: string; selected?: boolean; primaryLabel: string; onPrimaryClick: () => void; thumbnailClassName: string; metaClassName: string; rowClassName: string; primaryClassName?: string; actions?: ReactNode; titleNode?: ReactNode; previewNode?: ReactNode; previewOverlay?: ReactNode; footerNode?: ReactNode; draggable?: boolean; onDragStart?: DragEventHandler; onDragEnd?: DragEventHandler; onDragOver?: DragEventHandler; onDrop?: DragEventHandler; onPointerDown?: PointerEventHandler; onPointerEnter?: PointerEventHandler; onContextMenu?: MouseEventHandler; }; export function SidebarMediaItem({ title, detail, imageSrc, objectKey, imageAlt, selected = false, primaryLabel, onPrimaryClick, thumbnailClassName, metaClassName, rowClassName, primaryClassName, actions, titleNode, previewNode, previewOverlay, footerNode, draggable, onDragStart, onDragEnd, onDragOver, onDrop, onPointerDown, onPointerEnter, onContextMenu, }: SidebarMediaItemProps) { return ( {previewNode ?? ( )} {titleNode ?? {title}} {detail} {footerNode} {actions} ); }