@hxdhxd/harmony-flow-ui 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -5
- package/dist/index.cjs +322 -294
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +347 -183
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +321 -293
- package/dist/index.js.map +1 -1
- package/package.json +15 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/tokens.ts","../src/theme/ThemeProvider.tsx","../src/components/Button.tsx","../src/components/SplitButton.tsx","../src/foundations/Icon.tsx","../src/overlays/useOverlay.ts","../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/SegmentedControl.tsx","../src/components/Card.tsx","../src/components/Modal.tsx","../src/components/Toast.tsx","../src/components/Content.tsx","../src/components/Accordion.tsx","../src/components/Dropdown.tsx","../src/components/IconButton.tsx","../src/components/AdvancedUtility.tsx","../src/components/Editors.tsx","../src/components/AIInteraction.tsx","../src/components/AIAdvanced.tsx","../src/components/Collaboration.tsx","../src/components/Assets.tsx","../src/components/Scheduling.tsx","../src/foundations/Typography.tsx","../src/navigation/types.ts","../src/navigation/FloatingNav.tsx","../src/navigation/Sidebar.tsx","../src/navigation/Breadcrumb.tsx","../src/navigation/Menu.tsx","../src/navigation/MobileNavigation.tsx","../src/navigation/Scrollspy.tsx","../src/navigation/ShrinkNav.tsx","../src/navigation/Tabs.tsx","../src/navigation/Steps.tsx","../src/navigation/CommandPalette.tsx","../src/layout/Layout.tsx","../src/layout/Skeleton.tsx","../src/feedback/Loading.tsx","../src/forms/Select.tsx","../src/forms/MultiSelect.tsx","../src/forms/ChoiceGroup.tsx","../src/forms/ValidatedInput.tsx","../src/forms/Textarea.tsx","../src/forms/Choice.tsx","../src/forms/Advanced.tsx","../src/forms/Form.tsx","../src/forms/Upload.tsx","../src/forms/Combobox.tsx","../src/forms/NumberInput.tsx","../src/forms/NextBatch.tsx","../src/feedback/Drawer.tsx","../src/feedback/Popover.tsx","../src/feedback/Status.tsx","../src/feedback/Essentials.tsx","../src/data-display/DataDisplay.tsx","../src/data-display/Collections.tsx","../src/data-display/Insight.tsx","../src/data-display/EmptyState.tsx","../src/data-display/DataGrid.tsx","../src/data-display/Tree.tsx","../src/layout/AuthLayout.tsx","../src/layout/Hero.tsx","../src/layout/ResizablePanel.tsx","../src/feedback/NotificationCenter.tsx","../src/data-display/VirtualList.tsx","../src/data-display/DeveloperView.tsx","../src/forms/QueryBuilder.tsx","../src/data-display/WorkflowViews.tsx","../src/forms/FilterBuilder.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nexport interface ThemeTokens {\n colorPrimary: string;\n colorPrimaryHover: string;\n colorBackground: string;\n colorSurface: string;\n colorText: string;\n colorTextMuted: string;\n colorBorder: string;\n radiusMd: string;\n radiusLg: string;\n shadowElevated: string;\n motionDuration: string;\n}\n\nexport const defaultTheme: ThemeTokens = {\n colorPrimary: '#0a7cff',\n colorPrimaryHover: '#006fe8',\n colorBackground: '#f5faff',\n colorSurface: '#ffffff',\n colorText: '#142033',\n colorTextMuted: '#66758c',\n colorBorder: '#dce9f7',\n radiusMd: '14px',\n radiusLg: '24px',\n shadowElevated: '0 18px 48px rgba(41, 106, 168, 0.16)',\n motionDuration: '180ms',\n};\nexport const darkTheme: ThemeTokens = { ...defaultTheme, colorPrimary: '#58a9ff', colorPrimaryHover: '#7cbbff', colorBackground: '#0d1724', colorSurface: '#152337', colorText: '#f4f8fc', colorTextMuted: '#a9bad0', colorBorder: '#30445b', shadowElevated: '0 20px 54px rgba(0,0,0,.46)' };\nexport const highContrastTheme: ThemeTokens = { ...defaultTheme, colorPrimary: '#005fcc', colorPrimaryHover: '#004a9f', colorBackground: '#ffffff', colorSurface: '#ffffff', colorText: '#000000', colorTextMuted: '#303030', colorBorder: '#000000', shadowElevated: '0 0 0 2px #000000', motionDuration: '0ms' };\n\nconst tokenVariables: Record<keyof ThemeTokens, string> = {\n colorPrimary: '--hf-color-primary',\n colorPrimaryHover: '--hf-color-primary-hover',\n colorBackground: '--hf-color-background',\n colorSurface: '--hf-color-surface',\n colorText: '--hf-color-text',\n colorTextMuted: '--hf-color-text-muted',\n colorBorder: '--hf-color-border',\n radiusMd: '--hf-radius-md',\n radiusLg: '--hf-radius-lg',\n shadowElevated: '--hf-shadow-elevated',\n motionDuration: '--hf-motion-duration',\n};\n\nexport function tokensToStyle(tokens: Partial<ThemeTokens>): CSSProperties {\n return Object.fromEntries(\n Object.entries(tokens).map(([key, value]) => [tokenVariables[key as keyof ThemeTokens], value]),\n ) as CSSProperties;\n}\n","import type { HTMLAttributes, PropsWithChildren } from 'react';\nimport { darkTheme, defaultTheme, highContrastTheme, tokensToStyle, type ThemeTokens } from './tokens';\n\nexport interface ThemeProviderProps extends HTMLAttributes<HTMLDivElement> {\n tokens?: Partial<ThemeTokens>;\n mode?: 'light' | 'dark' | 'high-contrast';\n}\n\nexport function ThemeProvider({ children, tokens, mode = 'light', className = '', style, ...props }: PropsWithChildren<ThemeProviderProps>) {\n const mergedTokens = { ...(mode === 'dark' ? darkTheme : mode === 'high-contrast' ? highContrastTheme : defaultTheme), ...tokens };\n return (\n <div\n className={`hf-theme hf-theme--${mode} ${className}`.trim()}\n style={{ ...tokensToStyle(mergedTokens), ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'quiet' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n shape?: 'rounded' | 'pill' | 'square';\n fullWidth?: boolean;\n loading?: boolean;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n iconOnly?: boolean;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { children, className = '', variant = 'primary', size = 'md', shape = 'pill', fullWidth = false, loading = false, leadingIcon, trailingIcon, iconOnly = false, disabled, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n className={`hf-button hf-button--${variant} hf-button--${size} hf-button--${shape} ${fullWidth ? 'hf-button--full' : ''} ${iconOnly ? 'hf-button--icon' : ''} ${className}`.trim()}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? <span className=\"hf-spinner\" aria-hidden=\"true\" /> : leadingIcon}\n {!iconOnly && <span>{loading ? '处理中' : children}</span>}\n {!loading && trailingIcon}\n </button>\n );\n});\n","import { useState, type ReactNode } from 'react';\nimport { Button, type ButtonProps } from './Button';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface SplitButtonOption { key: string; label: ReactNode; disabled?: boolean; danger?: boolean }\nexport interface SplitButtonProps extends Pick<ButtonProps, 'variant' | 'size' | 'disabled'> { label: ReactNode; options: readonly SplitButtonOption[]; onPrimaryAction: () => void; onOptionSelect: (key: string) => void }\nexport function SplitButton({ label, options, onPrimaryAction, onOptionSelect, variant = 'primary', size = 'md', disabled }: SplitButtonProps) {\n const [open, setOpen] = useState(false); const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div className=\"hf-split-button\" ref={ref}><Button variant={variant} size={size} shape=\"rounded\" disabled={disabled} onClick={onPrimaryAction}>{label}</Button><Button variant={variant} size={size} shape=\"rounded\" disabled={disabled} iconOnly leadingIcon={<Icon name=\"chevron-down\" size={16} />} aria-label=\"更多操作\" aria-expanded={open} onClick={() => setOpen(!open)} />{open && <div className=\"hf-split-button__menu\" role=\"menu\">{options.map((option) => <button role=\"menuitem\" type=\"button\" key={option.key} disabled={option.disabled} className={option.danger ? 'is-danger' : ''} onClick={() => { onOptionSelect(option.key); setOpen(false); }}>{option.label}</button>)}</div>}</div>;\n}\n","import type { SVGAttributes } from 'react';\n\nexport type IconName = 'check' | 'close' | 'info' | 'warning' | 'error' | 'search' | 'chevron-down' | 'arrow-right' | 'user' | 'inbox';\nexport interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, 'children'> { name: IconName; size?: number; label?: string; }\n\nconst paths: Record<IconName, string> = {\n check: 'M5 12.5 9.2 17 19 7', close: 'm7 7 10 10M17 7 7 17', info: 'M12 11v6M12 7.5h.01',\n warning: 'M12 4 3.5 19h17L12 4Zm0 5v4.5m0 2.5h.01', error: 'M8 8l8 8m0-8-8 8',\n search: 'm20 20-4.5-4.5m2.5-4A7 7 0 1 1 4 11a7 7 0 0 1 14 0Z', 'chevron-down': 'm7 10 5 5 5-5',\n 'arrow-right': 'M5 12h14m-5-5 5 5-5 5', user: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm7 8a7 7 0 0 0-14 0',\n inbox: 'M4 5h16v13H4V5Zm0 9h4l2 2h4l2-2h4',\n};\n\nexport function Icon({ name, size = 20, label, className = '', ...props }: IconProps) {\n return <svg className={`hf-icon ${className}`} width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" role={label ? 'img' : undefined} aria-label={label} aria-hidden={label ? undefined : true} {...props}><path d={paths[name]} /></svg>;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\nconst focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\ninterface LayerEntry { id: symbol }\n\nconst layerStack: LayerEntry[] = [];\nlet scrollLockCount = 0;\nlet previousBodyOverflow = '';\n\nexport interface DismissibleLayerOptions {\n modal?: boolean;\n closeOnOutside?: boolean;\n trapFocus?: boolean;\n lockScroll?: boolean;\n autoFocus?: boolean;\n restoreFocus?: boolean;\n}\n\nfunction isTopLayer(id: symbol) { return layerStack.at(-1)?.id === id; }\nfunction addLayer(id: symbol) { layerStack.push({ id }); }\nfunction removeLayer(id: symbol) {\n const index = layerStack.findIndex((layer) => layer.id === id);\n if (index >= 0) layerStack.splice(index, 1);\n}\n\nfunction lockBodyScroll() {\n if (scrollLockCount === 0) {\n previousBodyOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n scrollLockCount += 1;\n}\n\nfunction unlockBodyScroll() {\n scrollLockCount = Math.max(0, scrollLockCount - 1);\n if (scrollLockCount === 0) document.body.style.overflow = previousBodyOverflow;\n}\n\nfunction focusInitialElement(root: HTMLElement) {\n const target = root.querySelector<HTMLElement>('[data-autofocus], [autofocus]')\n ?? root.querySelector<HTMLElement>(focusableSelector)\n ?? root;\n target.focus();\n}\n\nfunction trapTabKey(event: KeyboardEvent, root: HTMLElement) {\n const nodes = [...root.querySelectorAll<HTMLElement>(focusableSelector)]\n .filter((node) => !node.hasAttribute('disabled') && node.getAttribute('aria-hidden') !== 'true');\n if (!nodes.length) {\n event.preventDefault();\n root.focus();\n return;\n }\n const first = nodes[0]!;\n const last = nodes[nodes.length - 1]!;\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n}\n\nexport function useDismissibleLayer<T extends HTMLElement>(\n open: boolean,\n onClose: () => void,\n modalOrOptions: boolean | DismissibleLayerOptions = false,\n): RefObject<T | null> {\n const ref = useRef<T>(null);\n const idRef = useRef(Symbol('dismissible-layer'));\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n\n const options = typeof modalOrOptions === 'boolean' ? { modal: modalOrOptions } : modalOrOptions;\n const modal = options.modal ?? false;\n const closeOnOutside = options.closeOnOutside ?? !modal;\n const trapFocus = options.trapFocus ?? modal;\n const lockScroll = options.lockScroll ?? modal;\n const autoFocus = options.autoFocus ?? true;\n const restoreFocus = options.restoreFocus ?? true;\n\n useEffect(() => {\n if (!open) return undefined;\n const id = idRef.current;\n const previousFocus = document.activeElement as HTMLElement | null;\n addLayer(id);\n if (lockScroll) lockBodyScroll();\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!isTopLayer(id) || !closeOnOutside) return;\n if (!ref.current?.contains(event.target as Node)) closeRef.current();\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isTopLayer(id)) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current();\n } else if (event.key === 'Tab' && trapFocus && ref.current) {\n trapTabKey(event, ref.current);\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n const animationFrame = autoFocus\n ? requestAnimationFrame(() => ref.current && focusInitialElement(ref.current))\n : undefined;\n\n return () => {\n if (animationFrame !== undefined) cancelAnimationFrame(animationFrame);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n removeLayer(id);\n if (lockScroll) unlockBodyScroll();\n if (restoreFocus && previousFocus?.isConnected) previousFocus.focus();\n };\n }, [autoFocus, closeOnOutside, lockScroll, modal, open, restoreFocus, trapFocus]);\n\n return ref;\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode } from 'react';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix'> {\n label?: string;\n hint?: string;\n error?: string;\n prefix?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className = '', id, label, hint, error, prefix, disabled, ...props },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const descriptionId = `${inputId}-description`;\n return (\n <label className={`hf-field ${className}`.trim()} htmlFor={inputId}>\n {label && <span className=\"hf-field__label\">{label}</span>}\n <span className={`hf-input-shell ${error ? 'hf-input-shell--error' : ''}`}>\n {prefix && <span className=\"hf-input-shell__prefix\" aria-hidden=\"true\">{prefix}</span>}\n <input\n ref={ref}\n id={inputId}\n className=\"hf-input\"\n disabled={disabled}\n aria-invalid={Boolean(error)}\n aria-describedby={hint || error ? descriptionId : undefined}\n {...props}\n />\n </span>\n {(error || hint) && (\n <span id={descriptionId} className={`hf-field__hint ${error ? 'hf-field__hint--error' : ''}`}>\n {error ?? hint}\n </span>\n )}\n </label>\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label: string;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className = '', ...props },\n ref,\n) {\n return (\n <label className={`hf-switch ${className}`.trim()}>\n <input ref={ref} className=\"hf-switch__input\" type=\"checkbox\" role=\"switch\" {...props} />\n <span className=\"hf-switch__track\" aria-hidden=\"true\"><span className=\"hf-switch__thumb\" /></span>\n <span className=\"hf-switch__label\">{label}</span>\n </label>\n );\n});\n","import { useId } from 'react';\n\nexport interface SegmentOption<T extends string> { label: string; value: T }\nexport interface SegmentedControlProps<T extends string> {\n label: string;\n options: readonly SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n className?: string;\n}\n\nexport function SegmentedControl<T extends string>({ label, options, value, onChange, className = '' }: SegmentedControlProps<T>) {\n const name = useId();\n return (\n <fieldset className={`hf-segmented ${className}`.trim()} aria-label={label}>\n <legend className=\"hf-sr-only\">{label}</legend>\n {options.map((option) => (\n <label key={option.value} className=\"hf-segmented__option\">\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={() => onChange(option.value)}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </fieldset>\n );\n}\n","import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n title?: string;\n eyebrow?: string;\n action?: ReactNode;\n interactive?: boolean;\n}\n\nexport function Card({ children, title, eyebrow, action, interactive = false, className = '', ...props }: PropsWithChildren<CardProps>) {\n return (\n <article className={`hf-card ${interactive ? 'hf-card--interactive' : ''} ${className}`.trim()} {...props}>\n {(eyebrow || title || action) && (\n <header className=\"hf-card__header\">\n <div>\n {eyebrow && <p className=\"hf-card__eyebrow\">{eyebrow}</p>}\n {title && <h3 className=\"hf-card__title\">{title}</h3>}\n </div>\n {action}\n </header>\n )}\n <div className=\"hf-card__body\">{children}</div>\n </article>\n );\n}\n","import { useId, type PropsWithChildren, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface ModalProps {\n open: boolean;\n title: string;\n children: ReactNode;\n onClose: () => void;\n footer?: ReactNode;\n}\n\nexport function Modal({ open, title, children, onClose, footer }: PropsWithChildren<ModalProps>) {\n const titleId = useId();\n const dialogRef = useDismissibleLayer<HTMLDivElement>(open, onClose, true);\n\n if (!open) return null;\n return createPortal(\n <div className=\"hf-modal-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onClose()}>\n <div ref={dialogRef} className=\"hf-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId} tabIndex={-1}>\n <header className=\"hf-modal__header\">\n <h2 id={titleId}>{title}</h2>\n <Button variant=\"quiet\" size=\"sm\" onClick={onClose} aria-label=\"关闭弹窗\">×</Button>\n </header>\n <div className=\"hf-modal__body\">{children}</div>\n {footer && <footer className=\"hf-modal__footer\">{footer}</footer>}\n </div>\n </div>,\n document.body,\n );\n}\n","import { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface ToastProps {\n open: boolean;\n message: string;\n tone?: 'success' | 'info' | 'error';\n duration?: number;\n onClose: () => void;\n}\n\nexport function Toast({ open, message, tone = 'info', duration = 2600, onClose }: ToastProps) {\n useEffect(() => {\n if (!open || duration <= 0) return;\n const timer = window.setTimeout(onClose, duration);\n return () => window.clearTimeout(timer);\n }, [duration, onClose, open]);\n if (!open) return null;\n return createPortal(\n <div className={`hf-toast hf-toast--${tone}`} role={tone === 'error' ? 'alert' : 'status'}>\n <span className=\"hf-toast__mark\" aria-hidden=\"true\" />\n {message}\n </div>,\n document.body,\n );\n}\n","import type { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport function Divider({ orientation = 'horizontal', label, className = '' }: { orientation?: 'horizontal' | 'vertical'; label?: ReactNode; className?: string }) { return <div className={`hf-divider hf-divider--${orientation}${label ? ' hf-divider--labelled' : ''} ${className}`} role=\"separator\" aria-orientation={orientation}>{label && <span>{label}</span>}</div>; }\nexport function Link({ external, className = '', children, ...props }: AnchorHTMLAttributes<HTMLAnchorElement> & { external?: boolean }) { return <a className={`hf-link ${className}`} target={external ? '_blank' : props.target} rel={external ? 'noreferrer' : props.rel} {...props}>{children}{external && <span aria-hidden=\"true\">↗</span>}</a>; }\n\ntype Tone = 'neutral' | 'primary' | 'success' | 'warning' | 'danger';\nexport function Badge({ tone = 'neutral', dot, className = '', ...props }: HTMLAttributes<HTMLSpanElement> & { tone?: Tone; dot?: boolean }) { return <span className={`hf-badge hf-tone--${tone} ${className}`} {...props}>{dot && <i aria-hidden=\"true\" />}{props.children}</span>; }\nexport function Tag({ tone = 'neutral', onRemove, removeLabel = '移除标签', className = '', children, ...props }: HTMLAttributes<HTMLSpanElement> & { tone?: Tone; onRemove?: () => void; removeLabel?: string }) { return <span className={`hf-tag hf-tone--${tone} ${className}`} {...props}>{children}{onRemove && <button type=\"button\" aria-label={removeLabel} onClick={onRemove}><Icon name=\"close\" size={14} /></button>}</span>; }\n\nexport function Avatar({ src, name, alt = '', size = 'md', status, className = '' }: { src?: string; name: string; alt?: string; size?: 'sm' | 'md' | 'lg'; status?: 'online' | 'busy' | 'away'; className?: string }) {\n const initials = name.trim().split(/\\s+/).slice(0, 2).map((part) => part[0]).join('').toUpperCase();\n return <span className={`hf-avatar hf-avatar--${size} ${className}`} title={name}>{src ? <img src={src} alt={alt || name} /> : <span aria-hidden=\"true\">{initials}</span>}{status && <i className={`hf-avatar__status hf-avatar__status--${status}`} aria-label={{ online: '在线', busy: '忙碌', away: '离开' }[status]} />}</span>;\n}\n","import { useState, type ReactNode } from 'react';\nexport interface AccordionItem { key: string; title: ReactNode; content: ReactNode; disabled?: boolean }\nexport interface AccordionProps { items: readonly AccordionItem[]; value?: readonly string[]; defaultValue?: readonly string[]; onChange?: (keys: string[]) => void; multiple?: boolean }\nexport function Accordion({ items, value, defaultValue = [], onChange, multiple = false }: AccordionProps) {\n const [inner, setInner] = useState<string[]>([...defaultValue]); const active = value ? [...value] : inner;\n const toggle = (key: string) => { const next = active.includes(key) ? active.filter((item) => item !== key) : multiple ? [...active, key] : [key]; if (!value) setInner(next); onChange?.(next); };\n return <div className=\"hf-accordion\">{items.map((item) => { const open = active.includes(item.key); return <section className={open ? 'is-open' : ''} key={item.key}><h3><button type=\"button\" aria-expanded={open} disabled={item.disabled} onClick={() => toggle(item.key)}><span>{item.title}</span><span aria-hidden=\"true\">⌄</span></button></h3>{open && <div className=\"hf-accordion__panel\">{item.content}</div>}</section>; })}</div>;\n}\n","import { cloneElement, useState, type ReactElement, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface DropdownItem { key: string; label: ReactNode; icon?: ReactNode; description?: ReactNode; disabled?: boolean; danger?: boolean; separatorBefore?: boolean }\nexport interface DropdownProps { trigger: ReactElement; items: readonly DropdownItem[]; onSelect: (key: string) => void; placement?: 'left' | 'right'; label?: string }\nexport function Dropdown({ trigger, items, onSelect, placement = 'left', label = '操作菜单' }: DropdownProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLSpanElement>(open, () => setOpen(false)); return <span className=\"hf-dropdown\" ref={root}>{cloneElement(trigger, { onClick: () => setOpen((value) => !value), 'aria-expanded': open, 'aria-haspopup': 'menu' } as object)}{open && <div className={`hf-dropdown__menu hf-dropdown__menu--${placement}`} role=\"menu\" aria-label={label}>{items.map((item) => <button type=\"button\" role=\"menuitem\" className={`${item.danger ? 'is-danger' : ''}${item.separatorBefore ? ' has-separator' : ''}`} disabled={item.disabled} key={item.key} onClick={() => { onSelect(item.key); setOpen(false); }}>{item.icon}<span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span></button>)}</div>}</span>; }\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { label: string; icon: ReactNode; variant?: 'primary' | 'secondary' | 'quiet' | 'danger'; size?: 'sm' | 'md' | 'lg' }\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton({ label, icon, variant = 'quiet', size = 'md', className = '', ...props }, ref) { return <button ref={ref} className={`hf-button hf-button--${variant} hf-button--${size} hf-button--square hf-button--icon ${className}`.trim()} aria-label={label} title={label} {...props}>{icon}</button>; });\n","import { useState, type HTMLAttributes, type MouseEvent, type PropsWithChildren } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport type { DropdownItem } from './Dropdown';\n\nexport function ButtonGroup({ children, orientation = 'horizontal', attached = true, className = '', ...props }: PropsWithChildren<HTMLAttributes<HTMLDivElement> & { orientation?: 'horizontal' | 'vertical'; attached?: boolean }>) { return <div role=\"group\" className={`hf-button-group hf-button-group--${orientation}${attached ? ' is-attached' : ''} ${className}`.trim()} {...props}>{children}</div>; }\n\nexport interface ColorPickerProps { value: string; onChange: (value: string) => void; label?: string; presets?: readonly string[]; disabled?: boolean }\nexport function ColorPicker({ value, onChange, label, presets = ['#0a7cff','#19a989','#7657e6','#f0a11a','#e5484d'], disabled }: ColorPickerProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false)); return <div className=\"hf-field hf-color-picker\" ref={root}>{label && <span className=\"hf-field__label\">{label}</span>}<button type=\"button\" className=\"hf-color-picker__trigger\" disabled={disabled} aria-expanded={open} onClick={() => setOpen(!open)}><span style={{ background: value }} /><code>{value.toUpperCase()}</code><span aria-hidden=\"true\">⌄</span></button>{open && <div className=\"hf-color-picker__panel\"><input type=\"color\" aria-label=\"选择颜色\" value={value} onChange={(event) => onChange(event.target.value)} /><div>{presets.map((color) => <button type=\"button\" aria-label={`选择颜色 ${color}`} aria-pressed={value.toLowerCase() === color.toLowerCase()} style={{ background: color }} key={color} onClick={() => onChange(color)} />)}</div><input aria-label=\"颜色值\" value={value} onChange={(event) => /^#[0-9a-f]{0,6}$/i.test(event.target.value) && onChange(event.target.value)} /></div>}</div>; }\n\nexport interface ContextMenuProps { items: readonly DropdownItem[]; onSelect: (key: string) => void; label?: string }\nexport function ContextMenu({ items, onSelect, label = '上下文菜单', children }: PropsWithChildren<ContextMenuProps>) { const [position, setPosition] = useState<{ x: number; y: number }>(); const root = useDismissibleLayer<HTMLDivElement>(Boolean(position), () => setPosition(undefined)); const open = (event: MouseEvent) => { event.preventDefault(); setPosition({ x: event.clientX, y: event.clientY }); }; return <div className=\"hf-context-target\" onContextMenu={open}>{children}{position && <div ref={root} className=\"hf-context-menu\" role=\"menu\" aria-label={label} style={{ left: position.x, top: position.y }}>{items.map((item) => <button type=\"button\" role=\"menuitem\" disabled={item.disabled} className={item.danger ? 'is-danger' : ''} key={item.key} onClick={() => { onSelect(item.key); setPosition(undefined); }}>{item.icon}<span>{item.label}</span></button>)}</div>}</div>; }\n","import { useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react';\n\nexport interface RichTextEditorProps { value: string; onChange: (html: string) => void; label?: string; placeholder?: string; disabled?: boolean }\nexport function RichTextEditor({ value, onChange, label, placeholder = '输入内容…', disabled }: RichTextEditorProps) {\n const editor = useRef<HTMLDivElement>(null);\n useEffect(() => { if (editor.current && editor.current.innerHTML !== value) editor.current.innerHTML = value; }, [value]);\n const format = (command: 'bold' | 'italic' | 'insertUnorderedList') => { editor.current?.focus(); document.execCommand(command); onChange(editor.current?.innerHTML ?? ''); };\n return <div className=\"hf-rich-editor\"><div className=\"hf-rich-editor__header\">{label && <strong>{label}</strong>}<div role=\"toolbar\" aria-label=\"文本格式\"><button type=\"button\" aria-label=\"粗体\" disabled={disabled} onClick={() => format('bold')}><b>B</b></button><button type=\"button\" aria-label=\"斜体\" disabled={disabled} onClick={() => format('italic')}><i>I</i></button><button type=\"button\" aria-label=\"无序列表\" disabled={disabled} onClick={() => format('insertUnorderedList')}>• 列表</button></div></div><div ref={editor} className=\"hf-rich-editor__content\" contentEditable={!disabled} role=\"textbox\" aria-multiline=\"true\" aria-label={label ?? '富文本编辑器'} data-placeholder={placeholder} onInput={(event) => onChange(event.currentTarget.innerHTML)} /></div>;\n}\n\nexport interface MentionOption { value: string; label: string; description?: string }\nexport interface MentionInputProps { value: string; onChange: (value: string) => void; options: readonly MentionOption[]; label?: string; placeholder?: string; disabled?: boolean }\nexport function MentionInput({ value, onChange, options, label, placeholder = '输入 @ 提及成员', disabled }: MentionInputProps) {\n const [active, setActive] = useState(0); const match = value.match(/(?:^|\\s)@([^\\s@]*)$/); const query = match?.[1]?.toLowerCase();\n const results = useMemo(() => query === undefined ? [] : options.filter((item) => `${item.label} ${item.value}`.toLowerCase().includes(query)).slice(0, 6), [options, query]);\n useEffect(() => setActive(0), [query]);\n const choose = (item: MentionOption) => { if (!match) return; onChange(`${value.slice(0, match.index!)}${match[0].startsWith(' ') ? ' ' : ''}@${item.label} `); };\n const keyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => { if (!results.length) return; if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setActive((index) => (index + (event.key === 'ArrowDown' ? 1 : -1) + results.length) % results.length); } else if (event.key === 'Enter' || event.key === 'Tab') { event.preventDefault(); choose(results[active]!); } else if (event.key === 'Escape') { event.preventDefault(); onChange(`${value} `); } };\n return <label className=\"hf-field hf-mention-input\">{label && <span className=\"hf-field__label\">{label}</span>}<textarea value={value} placeholder={placeholder} disabled={disabled} aria-autocomplete=\"list\" aria-expanded={Boolean(results.length)} onChange={(event) => onChange(event.target.value)} onKeyDown={keyDown} />{results.length > 0 && <div className=\"hf-mention-input__menu\" role=\"listbox\">{results.map((item, index) => <button type=\"button\" role=\"option\" aria-selected={index === active} key={item.value} onMouseDown={(event) => event.preventDefault()} onClick={() => choose(item)}><span>@{item.label}</span>{item.description && <small>{item.description}</small>}</button>)}</div>}</label>;\n}\n\nexport interface CodeEditorProps { value: string; onChange: (value: string) => void; language?: string; label?: string; readOnly?: boolean; height?: number }\nexport function CodeEditor({ value, onChange, language = 'text', label = '代码编辑器', readOnly, height = 260 }: CodeEditorProps) { const lines = value.split('\\n').length; return <div className=\"hf-code-editor\"><header><strong>{label}</strong><span>{language}</span></header><div style={{ height }}><pre aria-hidden=\"true\">{Array.from({ length: lines }, (_, index) => `${index + 1}\\n`)}</pre><textarea spellCheck={false} readOnly={readOnly} aria-label={label} value={value} onChange={(event) => onChange(event.target.value)} onKeyDown={(event) => { if (event.key === 'Tab' && !readOnly) { event.preventDefault(); const input = event.currentTarget; const next = `${value.slice(0, input.selectionStart)} ${value.slice(input.selectionEnd)}`; onChange(next); requestAnimationFrame(() => input.setSelectionRange(input.selectionStart + 2, input.selectionStart + 2)); } }} /></div></div>; }\n","import { useState, type FormEvent, type KeyboardEvent, type ReactNode } from 'react';\n\nexport interface ChatMessageProps { role: 'user' | 'assistant' | 'system'; children: ReactNode; avatar?: ReactNode; name?: ReactNode; timestamp?: ReactNode; actions?: ReactNode; streaming?: boolean; error?: ReactNode }\nexport function ChatMessage({ role, children, avatar, name, timestamp, actions, streaming, error }: ChatMessageProps) { return <article className={`hf-chat-message hf-chat-message--${role}`} aria-live={streaming ? 'polite' : undefined}><div className=\"hf-chat-message__avatar\" aria-hidden=\"true\">{avatar ?? (role === 'assistant' ? 'AI' : role === 'system' ? 'S' : 'U')}</div><div className=\"hf-chat-message__body\"><header>{name && <strong>{name}</strong>}{timestamp && <time>{timestamp}</time>}</header><div className=\"hf-chat-message__content\">{children}{streaming && <span className=\"hf-chat-message__cursor\" aria-label=\"正在生成\" />}</div>{error && <div className=\"hf-chat-message__error\" role=\"alert\">{error}</div>}{actions && <footer>{actions}</footer>}</div></article>; }\n\nexport interface ChatAttachment { id: string; name: string; size?: string; icon?: ReactNode }\nexport interface ChatComposerProps { value: string; onChange: (value: string) => void; onSend: (value: string) => void; attachments?: readonly ChatAttachment[]; onRemoveAttachment?: (id: string) => void; onAttach?: () => void; placeholder?: string; disabled?: boolean; sending?: boolean; footer?: ReactNode; maxLength?: number }\nexport function ChatComposer({ value, onChange, onSend, attachments = [], onRemoveAttachment, onAttach, placeholder = '输入消息,Enter 发送,Shift + Enter 换行', disabled, sending, footer, maxLength }: ChatComposerProps) { const send = () => { const content = value.trim(); if (content && !disabled && !sending) onSend(content); }; const submit = (event: FormEvent) => { event.preventDefault(); send(); }; const keyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => { if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) { event.preventDefault(); send(); } }; return <form className=\"hf-chat-composer\" onSubmit={submit}>{attachments.length > 0 && <div className=\"hf-chat-composer__attachments\">{attachments.map((item) => <span key={item.id}>{item.icon}<strong>{item.name}</strong>{item.size && <small>{item.size}</small>}{onRemoveAttachment && <button type=\"button\" aria-label={`移除附件 ${item.name}`} onClick={() => onRemoveAttachment(item.id)}>×</button>}</span>)}</div>}<textarea aria-label=\"消息内容\" value={value} maxLength={maxLength} disabled={disabled} placeholder={placeholder} onChange={(event) => onChange(event.target.value)} onKeyDown={keyDown} /><footer><div>{onAttach && <button type=\"button\" className=\"hf-chat-composer__attach\" aria-label=\"添加附件\" disabled={disabled} onClick={onAttach}>+</button>}{footer}</div>{maxLength && <small>{value.length}/{maxLength}</small>}<button type=\"submit\" className=\"hf-chat-composer__send\" disabled={disabled || sending || !value.trim()}>{sending ? <span className=\"hf-spinner\" /> : '↑'}<span className=\"hf-sr-only\">发送消息</span></button></footer></form>; }\n\nexport interface PromptSuggestion { id: string; title: ReactNode; description?: ReactNode; icon?: ReactNode; prompt?: string }\nexport interface PromptSuggestionsProps { items: readonly PromptSuggestion[]; onSelect: (item: PromptSuggestion) => void; title?: ReactNode; columns?: 1 | 2 | 3 }\nexport function PromptSuggestions({ items, onSelect, title, columns = 2 }: PromptSuggestionsProps) { return <section className={`hf-prompt-suggestions hf-prompt-suggestions--${columns}`}>{title && <header>{title}</header>}<div>{items.map((item) => <button type=\"button\" key={item.id} onClick={() => onSelect(item)}>{item.icon && <span>{item.icon}</span>}<strong>{item.title}</strong>{item.description && <small>{item.description}</small>}<i aria-hidden=\"true\">→</i></button>)}</div></section>; }\n\nexport type ToolCallStatus = 'queued' | 'running' | 'success' | 'error' | 'cancelled';\nexport interface ToolCallCardProps { name: ReactNode; status: ToolCallStatus; description?: ReactNode; input?: ReactNode; output?: ReactNode; duration?: ReactNode; icon?: ReactNode; defaultExpanded?: boolean; onRetry?: () => void; onCancel?: () => void }\nconst toolStatusLabel: Record<ToolCallStatus, string> = { queued: '等待中', running: '执行中', success: '已完成', error: '执行失败', cancelled: '已取消' };\nexport function ToolCallCard({ name, status, description, input, output, duration, icon, defaultExpanded = false, onRetry, onCancel }: ToolCallCardProps) { const [open, setOpen] = useState(defaultExpanded); return <section className={`hf-tool-call is-${status}`}><button type=\"button\" className=\"hf-tool-call__summary\" aria-expanded={open} onClick={() => setOpen(!open)}><span className=\"hf-tool-call__icon\">{status === 'running' ? <span className=\"hf-spinner\" /> : icon ?? '◇'}</span><span><strong>{name}</strong>{description && <small>{description}</small>}</span><i>{toolStatusLabel[status]}</i>{duration && <time>{duration}</time>}<b aria-hidden=\"true\">⌄</b></button>{open && <div className=\"hf-tool-call__detail\">{input && <section><strong>输入</strong><div>{input}</div></section>}{output && <section><strong>输出</strong><div>{output}</div></section>}{(status === 'error' && onRetry) || (status === 'running' && onCancel) ? <footer>{status === 'error' && onRetry && <button type=\"button\" onClick={onRetry}>重新执行</button>}{status === 'running' && onCancel && <button type=\"button\" onClick={onCancel}>停止执行</button>}</footer> : null}</div>}</section>; }\n\nexport interface CitationItem { id: string; title: ReactNode; url?: string; source?: ReactNode; excerpt?: ReactNode; favicon?: ReactNode }\nexport interface CitationListProps { items: readonly CitationItem[]; title?: ReactNode; onSelect?: (item: CitationItem) => void }\nexport function CitationList({ items, title = '参考来源', onSelect }: CitationListProps) { return <section className=\"hf-citation-list\"><header><strong>{title}</strong><span>{items.length}</span></header><ol>{items.map((item, index) => <li key={item.id}><a href={item.url} target={item.url ? '_blank' : undefined} rel={item.url ? 'noreferrer' : undefined} onClick={(event) => { if (!item.url) event.preventDefault(); onSelect?.(item); }}><span>{item.favicon ?? index + 1}</span><div><strong>{item.title}</strong>{item.source && <small>{item.source}</small>}{item.excerpt && <p>{item.excerpt}</p>}</div><i aria-hidden=\"true\">↗</i></a></li>)}</ol></section>; }\n\nexport type AgentRunStatus = ToolCallStatus;\nexport interface AgentRunStep { id: string; title: ReactNode; status: AgentRunStatus; description?: ReactNode; timestamp?: ReactNode; detail?: ReactNode }\nexport interface AgentRunTimelineProps { steps: readonly AgentRunStep[]; activeId?: string; onSelect?: (id: string) => void; label?: string }\nexport function AgentRunTimeline({ steps, activeId, onSelect, label = 'Agent 执行过程' }: AgentRunTimelineProps) { return <ol className=\"hf-agent-run\" aria-label={label}>{steps.map((step) => <li key={step.id} className={`is-${step.status}${activeId === step.id ? ' is-active' : ''}`}><button type=\"button\" aria-pressed={activeId === step.id} onClick={() => onSelect?.(step.id)}><span>{step.status === 'success' ? '✓' : step.status === 'error' ? '!' : step.status === 'running' ? <i className=\"hf-spinner\" /> : '·'}</span><div><header><strong>{step.title}</strong>{step.timestamp && <time>{step.timestamp}</time>}</header>{step.description && <p>{step.description}</p>}{step.detail && <div>{step.detail}</div>}</div></button></li>)}</ol>; }\n","import { Fragment, useMemo, useState, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nfunction inlineMarkdown(text: string): ReactNode[] { const pattern = /(\\*\\*[^*]+\\*\\*|`[^`]+`|\\[[^\\]]+\\]\\(https?:\\/\\/[^\\s)]+\\))/g; return text.split(pattern).filter(Boolean).map((part, index) => { if (part.startsWith('**') && part.endsWith('**')) return <strong key={index}>{part.slice(2, -2)}</strong>; if (part.startsWith('`') && part.endsWith('`')) return <code key={index}>{part.slice(1, -1)}</code>; const link = part.match(/^\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)$/); return link ? <a key={index} href={link[2]} target=\"_blank\" rel=\"noreferrer\">{link[1]}</a> : <Fragment key={index}>{part}</Fragment>; }); }\nexport interface MarkdownContentProps { content: string; className?: string }\nexport function MarkdownContent({ content, className = '' }: MarkdownContentProps) { const blocks = useMemo(() => { const lines = content.split('\\n'); const result: ReactNode[] = []; let code: string[] | undefined, language = ''; let list: string[] = []; const flushList = () => { if (list.length) result.push(<ul key={`list-${result.length}`}>{list.map((item, index) => <li key={index}>{inlineMarkdown(item)}</li>)}</ul>); list = []; }; lines.forEach((line) => { if (line.startsWith('```')) { if (code) { result.push(<CodeBlock key={`code-${result.length}`} code={code.join('\\n')} language={language} />); code = undefined; language = ''; } else { flushList(); code = []; language = line.slice(3).trim(); } return; } if (code) { code.push(line); return; } if (line.startsWith('- ')) { list.push(line.slice(2)); return; } flushList(); if (!line.trim()) return; const heading = line.match(/^(#{1,3})\\s+(.+)$/); if (heading) { const Tag = `h${heading[1]!.length}` as 'h1' | 'h2' | 'h3'; result.push(<Tag key={result.length}>{inlineMarkdown(heading[2]!)}</Tag>); } else if (line.startsWith('> ')) result.push(<blockquote key={result.length}>{inlineMarkdown(line.slice(2))}</blockquote>); else result.push(<p key={result.length}>{inlineMarkdown(line)}</p>); }); flushList(); if (code) result.push(<CodeBlock key=\"code-last\" code={code.join('\\n')} language={language} />); return result; }, [content]); return <div className={`hf-markdown ${className}`.trim()}>{blocks}</div>; }\n\nexport interface CodeBlockProps { code: string; language?: string; filename?: ReactNode; wrap?: boolean; showLineNumbers?: boolean; onCopy?: (code: string) => void }\nexport function CodeBlock({ code, language = 'text', filename, wrap, showLineNumbers = true, onCopy }: CodeBlockProps) { const [copied, setCopied] = useState(false); const lines = code.split('\\n'); const copy = async () => { try { await navigator.clipboard.writeText(code); } catch { /* Consumers can provide a fallback through onCopy. */ } onCopy?.(code); setCopied(true); window.setTimeout(() => setCopied(false), 1500); }; return <section className={`hf-code-block${wrap ? ' is-wrapped' : ''}`}><header><span>{filename ?? language}</span><button type=\"button\" onClick={copy}>{copied ? '已复制' : '复制代码'}</button></header><div>{showLineNumbers && <pre aria-hidden=\"true\">{lines.map((_, index) => `${index + 1}\\n`)}</pre>}<pre><code>{code}</code></pre></div></section>; }\n\nexport interface VoiceInputProps { state?: 'idle' | 'listening' | 'processing' | 'error'; duration?: string; level?: number; disabled?: boolean; onStart?: () => void; onStop?: () => void; onCancel?: () => void; error?: ReactNode }\nexport function VoiceInput({ state = 'idle', duration = '00:00', level = 0.45, disabled, onStart, onStop, onCancel, error }: VoiceInputProps) { const active = state === 'listening'; return <div className={`hf-voice-input is-${state}`} role=\"status\" aria-label={active ? '正在录音' : state === 'processing' ? '正在识别语音' : '语音输入'}><button type=\"button\" className=\"hf-voice-input__main\" disabled={disabled || state === 'processing'} onClick={active ? onStop : onStart}>{state === 'processing' ? <span className=\"hf-spinner\" /> : active ? '■' : '●'}</button><div><div className=\"hf-voice-input__wave\" aria-hidden=\"true\">{Array.from({ length: 18 }, (_, index) => <i key={index} style={{ height: `${Math.max(12, ((index * 17) % 75) * level + 12)}%` }} />)}</div><span>{active ? duration : state === 'processing' ? '正在转换文字…' : error ?? '点击开始语音输入'}</span></div>{(active || state === 'error') && onCancel && <button type=\"button\" className=\"hf-voice-input__cancel\" onClick={onCancel}>取消</button>}</div>; }\n\nexport interface ModelOption { id: string; name: ReactNode; description?: ReactNode; icon?: ReactNode; tags?: readonly string[]; disabled?: boolean }\nexport interface ModelSelectorProps { models: readonly ModelOption[]; value: string; onChange: (id: string) => void; label?: string; disabled?: boolean }\nexport function ModelSelector({ models, value, onChange, label = '选择模型', disabled }: ModelSelectorProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false)); const selected = models.find((item) => item.id === value); return <div className=\"hf-model-selector\" ref={root}><button type=\"button\" className=\"hf-model-selector__trigger\" disabled={disabled} aria-expanded={open} onClick={() => setOpen(!open)}><span>{selected?.icon ?? '✦'}</span><span><strong>{selected?.name ?? label}</strong>{selected?.description && <small>{selected.description}</small>}</span><i aria-hidden=\"true\">⌄</i></button>{open && <div className=\"hf-model-selector__menu\" role=\"listbox\" aria-label={label}>{models.map((model) => <button type=\"button\" role=\"option\" aria-selected={model.id === value} disabled={model.disabled} key={model.id} onClick={() => { onChange(model.id); setOpen(false); }}><span>{model.icon ?? '✦'}</span><span><strong>{model.name}</strong>{model.description && <small>{model.description}</small>}{model.tags?.length ? <i>{model.tags.map((tag) => <b key={tag}>{tag}</b>)}</i> : null}</span>{model.id === value && <em>✓</em>}</button>)}</div>}</div>; }\n\nexport interface ConversationBranchProps { current: number; total: number; onChange: (index: number) => void; label?: ReactNode }\nexport function ConversationBranch({ current, total, onChange, label = '回答分支' }: ConversationBranchProps) { const safeTotal = Math.max(1, total), safeCurrent = Math.min(safeTotal - 1, Math.max(0, current)); return <nav className=\"hf-conversation-branch\" aria-label={String(label)}><button type=\"button\" aria-label=\"上一个分支\" disabled={safeCurrent === 0} onClick={() => onChange(safeCurrent - 1)}>‹</button><span>{safeCurrent + 1} / {safeTotal}</span><button type=\"button\" aria-label=\"下一个分支\" disabled={safeCurrent >= safeTotal - 1} onClick={() => onChange(safeCurrent + 1)}>›</button></nav>; }\n\nexport interface TokenUsageProps { used: number; limit: number; input?: number; output?: number; cached?: number; label?: ReactNode; compact?: boolean }\nexport function TokenUsage({ used, limit, input, output, cached, label = '上下文用量', compact }: TokenUsageProps) { const percent = Math.max(0, Math.min(100, limit ? used / limit * 100 : 0)); return <section className={`hf-token-usage${compact ? ' is-compact' : ''}`}><div className=\"hf-token-usage__ring\" role=\"progressbar\" aria-label={String(label)} aria-valuemin={0} aria-valuemax={limit} aria-valuenow={used} style={{ '--hf-token-percent': `${percent * 3.6}deg` } as React.CSSProperties}><span>{Math.round(percent)}%</span></div><div><header><strong>{label}</strong><span>{used.toLocaleString()} / {limit.toLocaleString()}</span></header>{!compact && <div className=\"hf-token-usage__details\">{input !== undefined && <span><i />输入 {input.toLocaleString()}</span>}{output !== undefined && <span><i />输出 {output.toLocaleString()}</span>}{cached !== undefined && <span><i />缓存 {cached.toLocaleString()}</span>}</div>}</div></section>; }\n","import { useState, type ReactNode } from 'react';\nimport { Avatar } from './Content';\n\nexport type PresenceStatus = 'online' | 'away' | 'busy' | 'offline';\nconst presenceLabel: Record<PresenceStatus, string> = { online: '在线', away: '离开', busy: '忙碌', offline: '离线' };\nexport interface PresenceProps { status: PresenceStatus; label?: ReactNode; showLabel?: boolean; pulse?: boolean }\nexport function Presence({ status, label, showLabel = true, pulse = true }: PresenceProps) { return <span className={`hf-presence is-${status}${pulse && status === 'online' ? ' is-pulsing' : ''}`} role=\"status\"><i aria-hidden=\"true\" /><span>{label ?? (showLabel ? presenceLabel[status] : <span className=\"hf-sr-only\">{presenceLabel[status]}</span>)}</span></span>; }\n\nexport interface AvatarGroupItem { id: string; name: string; src?: string; status?: Exclude<PresenceStatus, 'offline'> }\nexport interface AvatarGroupProps { items: readonly AvatarGroupItem[]; max?: number; size?: 'sm' | 'md' | 'lg'; onMore?: () => void; label?: string }\nexport function AvatarGroup({ items, max = 4, size = 'md', onMore, label = '协作成员' }: AvatarGroupProps) { const shown = items.slice(0, max), remaining = Math.max(0, items.length - shown.length); return <div className={`hf-avatar-group hf-avatar-group--${size}`} aria-label={label}>{shown.map((item) => <Avatar key={item.id} src={item.src} name={item.name} size={size} status={item.status} />)}{remaining > 0 && <button type=\"button\" aria-label={`查看其余 ${remaining} 位成员`} onClick={onMore}>+{remaining}</button>}</div>; }\n\nexport interface CommentItem { id: string; author: { name: string; avatar?: string }; content: ReactNode; timestamp?: ReactNode; edited?: boolean; reactions?: readonly { emoji: string; count: number; active?: boolean }[]; replies?: readonly CommentItem[] }\nexport interface CommentThreadProps { comments: readonly CommentItem[]; onReply?: (id: string, content: string) => void; onReact?: (id: string, emoji: string) => void; onDelete?: (id: string) => void; empty?: ReactNode }\nfunction Comment({ item, onReply, onReact, onDelete, depth = 0 }: { item: CommentItem; onReply?: CommentThreadProps['onReply']; onReact?: CommentThreadProps['onReact']; onDelete?: CommentThreadProps['onDelete']; depth?: number }) { const [replying, setReplying] = useState(false), [value, setValue] = useState(''); return <article className=\"hf-comment\" style={{ '--hf-comment-depth': Math.min(depth, 3) } as React.CSSProperties}><Avatar src={item.author.avatar} name={item.author.name} size=\"sm\" /><div><header><strong>{item.author.name}</strong>{item.timestamp && <time>{item.timestamp}</time>}{item.edited && <small>已编辑</small>}</header><div className=\"hf-comment__content\">{item.content}</div><footer>{item.reactions?.map((reaction) => <button type=\"button\" className={reaction.active ? 'is-active' : ''} aria-pressed={reaction.active} key={reaction.emoji} onClick={() => onReact?.(item.id, reaction.emoji)}>{reaction.emoji} {reaction.count}</button>)}{onReply && <button type=\"button\" onClick={() => setReplying(!replying)}>回复</button>}{onDelete && <button type=\"button\" onClick={() => onDelete(item.id)}>删除</button>}</footer>{replying && <form className=\"hf-comment__reply\" onSubmit={(event) => { event.preventDefault(); if (value.trim()) { onReply?.(item.id, value.trim()); setValue(''); setReplying(false); } }}><textarea autoFocus aria-label={`回复 ${item.author.name}`} value={value} onChange={(event) => setValue(event.target.value)} /><div><button type=\"button\" onClick={() => setReplying(false)}>取消</button><button type=\"submit\" disabled={!value.trim()}>发送回复</button></div></form>}{item.replies?.map((reply) => <Comment key={reply.id} item={reply} onReply={onReply} onReact={onReact} onDelete={onDelete} depth={depth + 1} />)}</div></article>; }\nexport function CommentThread({ comments, onReply, onReact, onDelete, empty = '暂无评论,开始讨论吧' }: CommentThreadProps) { return <section className=\"hf-comment-thread\" aria-label=\"评论讨论\">{comments.length ? comments.map((item) => <Comment key={item.id} item={item} onReply={onReply} onReact={onReact} onDelete={onDelete} />) : <div className=\"hf-comment-thread__empty\">{empty}</div>}</section>; }\n\nexport interface ActivityItem { id: string; actor: ReactNode; action: ReactNode; target?: ReactNode; timestamp?: ReactNode; avatar?: ReactNode; icon?: ReactNode; detail?: ReactNode }\nexport interface ActivityFeedProps { items: readonly ActivityItem[]; grouped?: boolean; empty?: ReactNode }\nexport function ActivityFeed({ items, grouped, empty = '暂无动态' }: ActivityFeedProps) { if (!items.length) return <div className=\"hf-activity-feed__empty\">{empty}</div>; return <ol className={`hf-activity-feed${grouped ? ' is-grouped' : ''}`}>{items.map((item) => <li key={item.id}><span className=\"hf-activity-feed__marker\">{item.avatar ?? item.icon ?? '•'}</span><div><p><strong>{item.actor}</strong> {item.action} {item.target && <b>{item.target}</b>}</p>{item.timestamp && <time>{item.timestamp}</time>}{item.detail && <div>{item.detail}</div>}</div></li>)}</ol>; }\n\nexport type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'skipped';\nexport interface ApprovalStep { id: string; title: ReactNode; approver?: ReactNode; status: ApprovalStatus; timestamp?: ReactNode; comment?: ReactNode }\nexport interface ApprovalFlowProps { steps: readonly ApprovalStep[]; currentId?: string; onApprove?: (id: string) => void; onReject?: (id: string) => void; orientation?: 'horizontal' | 'vertical' }\nexport function ApprovalFlow({ steps, currentId, onApprove, onReject, orientation = 'vertical' }: ApprovalFlowProps) { return <ol className={`hf-approval-flow hf-approval-flow--${orientation}`}>{steps.map((step, index) => <li className={`is-${step.status}${currentId === step.id ? ' is-current' : ''}`} key={step.id}><span>{step.status === 'approved' ? '✓' : step.status === 'rejected' ? '×' : index + 1}</span><div><header><strong>{step.title}</strong><i>{({ pending: '待审批', approved: '已通过', rejected: '已拒绝', skipped: '已跳过' } as const)[step.status]}</i></header>{step.approver && <p>{step.approver}</p>}{step.comment && <blockquote>{step.comment}</blockquote>}{step.timestamp && <time>{step.timestamp}</time>}{step.status === 'pending' && currentId === step.id && (onApprove || onReject) && <footer>{onReject && <button type=\"button\" onClick={() => onReject(step.id)}>拒绝</button>}{onApprove && <button type=\"button\" onClick={() => onApprove(step.id)}>通过</button>}</footer>}</div></li>)}</ol>; }\n\nexport interface AuditEvent { id: string; timestamp: ReactNode; actor: ReactNode; action: ReactNode; resource?: ReactNode; result?: 'success' | 'failure' | 'warning'; ip?: ReactNode; detail?: ReactNode }\nexport interface AuditLogProps { events: readonly AuditEvent[]; onSelect?: (id: string) => void; empty?: ReactNode; caption?: string }\nexport function AuditLog({ events, onSelect, empty = '暂无审计记录', caption = '审计日志' }: AuditLogProps) { return <div className=\"hf-audit-log\"><table><caption>{caption}</caption><thead><tr><th>时间</th><th>操作者</th><th>操作</th><th>资源</th><th>结果</th><th>IP</th></tr></thead><tbody>{events.map((event) => <tr key={event.id} tabIndex={onSelect ? 0 : undefined} onClick={() => onSelect?.(event.id)} onKeyDown={(key) => { if (onSelect && (key.key === 'Enter' || key.key === ' ')) { key.preventDefault(); onSelect(event.id); } }}><td>{event.timestamp}</td><td>{event.actor}</td><td><strong>{event.action}</strong>{event.detail && <small>{event.detail}</small>}</td><td>{event.resource ?? '—'}</td><td><span className={`is-${event.result ?? 'success'}`}>{event.result === 'failure' ? '失败' : event.result === 'warning' ? '警告' : '成功'}</span></td><td><code>{event.ip ?? '—'}</code></td></tr>)}{!events.length && <tr><td colSpan={6} className=\"hf-audit-log__empty\">{empty}</td></tr>}</tbody></table></div>; }\n","import { useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { Avatar } from './Content';\n\nexport interface FileItem { id: string; name: ReactNode; type: 'folder' | 'file'; children?: readonly FileItem[]; size?: ReactNode; modified?: ReactNode; icon?: ReactNode }\ntype VisibleFileItem = { item: FileItem; level: number; parentId?: string };\n\nexport function FileExplorer({ items, selectedId, onSelect, empty = '暂无文件' }: { items: readonly FileItem[]; selectedId?: string; onSelect?: (id: string) => void; empty?: ReactNode }) {\n const [open, setOpen] = useState<readonly string[]>([]);\n const itemRefs = useRef(new Map<string, HTMLButtonElement>());\n const visible = useMemo(() => {\n const result: VisibleFileItem[] = [];\n const visit = (nodes: readonly FileItem[], level: number, parentId?: string) => nodes.forEach((item) => {\n result.push({ item, level, parentId });\n if (item.children?.length && open.includes(item.id)) visit(item.children, level + 1, item.id);\n });\n visit(items, 1);\n return result;\n }, [items, open]);\n const toggle = (id: string) => setOpen((value) => value.includes(id) ? value.filter((key) => key !== id) : [...value, id]);\n const focusAt = (index: number) => itemRefs.current.get(visible[Math.max(0, Math.min(visible.length - 1, index))]?.item.id ?? '')?.focus();\n const onKeyDown = (event: KeyboardEvent<HTMLButtonElement>, entry: VisibleFileItem, index: number) => {\n const expandable = Boolean(entry.item.children?.length);\n if (event.key === 'ArrowDown') focusAt(index + 1);\n else if (event.key === 'ArrowUp') focusAt(index - 1);\n else if (event.key === 'Home') focusAt(0);\n else if (event.key === 'End') focusAt(visible.length - 1);\n else if (event.key === 'ArrowRight' && expandable) open.includes(entry.item.id) ? focusAt(index + 1) : toggle(entry.item.id);\n else if (event.key === 'ArrowLeft') {\n if (expandable && open.includes(entry.item.id)) toggle(entry.item.id);\n else if (entry.parentId) itemRefs.current.get(entry.parentId)?.focus();\n else return;\n } else return;\n event.preventDefault();\n };\n return <div className=\"hf-file-explorer\" role=\"tree\" aria-label=\"文件目录\">\n {items.length ? <ul role=\"none\">{visible.map((entry, index) => {\n const { item, level } = entry; const expandable = Boolean(item.children?.length); const expanded = expandable && open.includes(item.id);\n return <li key={item.id} role=\"none\">\n <div className={selectedId === item.id ? 'is-selected' : ''} style={{ paddingLeft: (level - 1) * 18 + 7 }}>\n <span className=\"hf-file-explorer__toggle\" aria-hidden=\"true\">{expandable ? (expanded ? '⌄' : '›') : ''}</span>\n <button type=\"button\" role=\"treeitem\" aria-level={level} aria-selected={selectedId === item.id} aria-expanded={expandable ? expanded : undefined} ref={(node) => { if (node) itemRefs.current.set(item.id, node); else itemRefs.current.delete(item.id); }} onClick={() => { if (expandable) toggle(item.id); onSelect?.(item.id); }} onKeyDown={(event) => onKeyDown(event, entry, index)}>{item.icon ?? (item.type === 'folder' ? '▰' : '▤')}<span><strong>{item.name}</strong>{item.modified && <small>{item.modified}</small>}</span>{item.size && <i>{item.size}</i>}</button>\n </div>\n </li>;\n })}</ul> : <div>{empty}</div>}\n </div>;\n}\n\nexport function FilePreview({ name, type, children, size, modified, actions, empty = '选择文件后在此预览' }: { name?: ReactNode; type?: string; children?: ReactNode; size?: ReactNode; modified?: ReactNode; actions?: ReactNode; empty?: ReactNode }) { return <section className=\"hf-file-preview\">{name ? <><header><div><strong>{name}</strong><span>{[type, size, modified].filter(Boolean).join(' · ')}</span></div>{actions}</header><div className=\"hf-file-preview__body\">{children}</div></> : <div className=\"hf-file-preview__empty\">▤<span>{empty}</span></div>}</section>; }\n\nexport interface VersionItem { id: string; version: string; author: { name: string; avatar?: string }; timestamp: ReactNode; description?: ReactNode; current?: boolean; tags?: readonly string[] }\nexport function VersionHistory({ versions, selectedId, onSelect, onRestore }: { versions: readonly VersionItem[]; selectedId?: string; onSelect?: (id: string) => void; onRestore?: (id: string) => void }) { return <ol className=\"hf-version-history\">{versions.map((item) => <li className={`${item.current ? 'is-current' : ''}${selectedId === item.id ? ' is-selected' : ''}`} key={item.id}><button type=\"button\" onClick={() => onSelect?.(item.id)}><span /><div><header><strong>{item.version}</strong>{item.current && <i>当前版本</i>}<time>{item.timestamp}</time></header><p><Avatar name={item.author.name} src={item.author.avatar} size=\"sm\" />{item.author.name}</p>{item.description && <div>{item.description}</div>}{item.tags?.map((tag) => <small key={tag}>{tag}</small>)}</div></button>{onRestore && !item.current && <button type=\"button\" onClick={() => onRestore(item.id)}>恢复</button>}</li>)}</ol>; }\n\nexport type PermissionLevel = 'none' | 'view' | 'comment' | 'edit' | 'admin';\nexport interface PermissionSubject { id: string; name: ReactNode; description?: ReactNode; avatar?: ReactNode }\nexport interface PermissionResource { id: string; name: ReactNode }\nexport function PermissionMatrix({ subjects, resources, value, onChange, disabled }: { subjects: readonly PermissionSubject[]; resources: readonly PermissionResource[]; value: Readonly<Record<string, Readonly<Record<string, PermissionLevel>>>>; onChange: (subjectId: string, resourceId: string, level: PermissionLevel) => void; disabled?: boolean }) { return <div className=\"hf-permission-matrix\"><table><thead><tr><th>成员或角色</th>{resources.map((item) => <th key={item.id}>{item.name}</th>)}</tr></thead><tbody>{subjects.map((subject) => <tr key={subject.id}><th><span>{subject.avatar}</span><div><strong>{subject.name}</strong>{subject.description && <small>{subject.description}</small>}</div></th>{resources.map((resource) => <td key={resource.id}><select aria-label={`${String(subject.name)} 对 ${String(resource.name)} 的权限`} disabled={disabled} value={value[subject.id]?.[resource.id] ?? 'none'} onChange={(event) => onChange(subject.id, resource.id, event.target.value as PermissionLevel)}><option value=\"none\">无权限</option><option value=\"view\">查看</option><option value=\"comment\">评论</option><option value=\"edit\">编辑</option><option value=\"admin\">管理</option></select></td>)}</tr>)}</tbody></table></div>; }\n\nexport interface MemberOption { id: string; name: string; avatar?: string; description?: ReactNode }\nexport function MemberPicker({ members, value, onChange, label = '添加成员', disabled }: { members: readonly MemberOption[]; value: readonly string[]; onChange: (ids: string[]) => void; label?: string; disabled?: boolean }) { const [query, setQuery] = useState(''); const results = useMemo(() => members.filter((item) => !value.includes(item.id) && `${item.name} ${String(item.description ?? '')}`.toLowerCase().includes(query.toLowerCase())), [members, query, value]); return <div className=\"hf-member-picker\"><div>{value.map((id) => { const item = members.find((member) => member.id === id); return item && <span key={id}><Avatar name={item.name} src={item.avatar} size=\"sm\" />{item.name}<button type=\"button\" disabled={disabled} aria-label={`移除 ${item.name}`} onClick={() => onChange(value.filter((key) => key !== id))}>×</button></span>; })}</div><input aria-label={label} value={query} disabled={disabled} placeholder={label} onChange={(event) => setQuery(event.target.value)} />{query && <div className=\"hf-member-picker__menu\">{results.map((item) => <button type=\"button\" key={item.id} onClick={() => { onChange([...value, item.id]); setQuery(''); }}><Avatar name={item.name} src={item.avatar} size=\"sm\" /><span><strong>{item.name}</strong>{item.description && <small>{item.description}</small>}</span></button>)}{!results.length && <p>没有匹配成员</p>}</div>}</div>; }\n\nexport type ShareScope = 'restricted' | 'organization' | 'public';\nexport function SharePanel({ scope, onScopeChange, members, onCopyLink, linkCopied, footer }: { scope: ShareScope; onScopeChange: (scope: ShareScope) => void; members?: ReactNode; onCopyLink?: () => void; linkCopied?: boolean; footer?: ReactNode }) { return <section className=\"hf-share-panel\"><header><strong>共享设置</strong><span>控制谁可以访问此内容</span></header><div className=\"hf-share-panel__scope\">{(['restricted','organization','public'] as const).map((item) => <label key={item}><input type=\"radio\" name=\"hf-share-scope\" checked={scope === item} onChange={() => onScopeChange(item)} /><span><strong>{{ restricted: '仅受邀成员', organization: '组织内成员', public: '拥有链接的任何人' }[item]}</strong><small>{{ restricted: '只有列表中的成员可以访问', organization: '同一组织成员均可访问', public: '无需登录即可访问' }[item]}</small></span></label>)}</div>{members && <div className=\"hf-share-panel__members\">{members}</div>}<footer><button type=\"button\" onClick={onCopyLink}>{linkCopied ? '链接已复制' : '复制链接'}</button>{footer}</footer></section>; }\n","import type { ReactNode } from \"react\";\nexport interface ScheduleEvent {\n id: string;\n title: ReactNode;\n start: string;\n end: string;\n color?: string;\n resourceId?: string;\n}\nexport function EventCard({\n event,\n onClick,\n}: {\n event: ScheduleEvent;\n onClick?: (id: string) => void;\n}) {\n return (\n <button\n type=\"button\"\n className=\"hf-event-card\"\n onClick={() => onClick?.(event.id)}\n >\n <strong>{event.title}</strong>\n <time>\n {event.start}–{event.end}\n </time>\n </button>\n );\n}\nexport function Scheduler({\n days,\n events,\n onEventClick,\n}: {\n days: readonly string[];\n events: readonly ScheduleEvent[];\n onEventClick?: (id: string) => void;\n}) {\n return (\n <div className=\"hf-scheduler\">\n {days.map((day) => (\n <section key={day}>\n <strong>{day}</strong>\n {events\n .filter((e) => e.start.startsWith(day))\n .map((e) => (\n <EventCard key={e.id} event={e} onClick={onEventClick} />\n ))}\n </section>\n ))}\n </div>\n );\n}\nexport interface CalendarResource {\n id: string;\n name: ReactNode;\n}\nexport function ResourceCalendar({\n resources,\n events,\n}: {\n resources: readonly CalendarResource[];\n events: readonly ScheduleEvent[];\n}) {\n return (\n <div className=\"hf-resource-calendar\">\n {resources.map((r) => (\n <section key={r.id}>\n <strong>{r.name}</strong>\n {events\n .filter((e) => e.resourceId === r.id)\n .map((e) => (\n <EventCard key={e.id} event={e} />\n ))}\n </section>\n ))}\n </div>\n );\n}\nexport interface RecurrenceValue {\n frequency: \"none\" | \"daily\" | \"weekly\" | \"monthly\";\n interval: number;\n end?: string;\n}\nexport function RecurrenceEditor({\n value,\n onChange,\n}: {\n value: RecurrenceValue;\n onChange: (v: RecurrenceValue) => void;\n}) {\n return (\n <div className=\"hf-recurrence\">\n <select\n aria-label=\"重复频率\"\n value={value.frequency}\n onChange={(e) =>\n onChange({\n ...value,\n frequency: e.target.value as RecurrenceValue[\"frequency\"],\n })\n }\n >\n <option value=\"none\">不重复</option>\n <option value=\"daily\">每天</option>\n <option value=\"weekly\">每周</option>\n <option value=\"monthly\">每月</option>\n </select>\n <input\n aria-label=\"重复间隔\"\n type=\"number\"\n min={1}\n value={value.interval}\n onChange={(e) => onChange({ ...value, interval: +e.target.value })}\n />\n </div>\n );\n}\nexport interface TimezoneOption {\n value: string;\n label: string;\n offset: string;\n}\nexport function TimezoneSelect({\n options,\n value,\n onChange,\n}: {\n options: readonly TimezoneOption[];\n value: string;\n onChange: (v: string) => void;\n}) {\n return (\n <select\n aria-label=\"时区\"\n className=\"hf-timezone\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n >\n {options.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label} ({o.offset})\n </option>\n ))}\n </select>\n );\n}\nexport type AvailabilityState =\n | \"available\"\n | \"busy\"\n | \"tentative\"\n | \"unavailable\";\nexport function AvailabilityGrid({\n people,\n slots,\n value,\n}: {\n people: readonly { id: string; name: ReactNode }[];\n slots: readonly string[];\n value: Readonly<Record<string, Readonly<Record<string, AvailabilityState>>>>;\n}) {\n return (\n <div className=\"hf-availability\">\n <table>\n <thead>\n <tr>\n <th>成员</th>\n {slots.map((s) => (\n <th key={s}>{s}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {people.map((p) => (\n <tr key={p.id}>\n <th>{p.name}</th>\n {slots.map((s) => (\n <td key={s}>\n <i className={`is-${value[p.id]?.[s] ?? \"unavailable\"}`} />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { ElementType, HTMLAttributes } from 'react';\n\nexport type TypographyVariant = 'display' | 'h1' | 'h2' | 'h3' | 'body' | 'body-sm' | 'caption' | 'code';\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> { as?: 'h1' | 'h2' | 'h3' | 'h4' | 'p' | 'span' | 'code'; variant?: TypographyVariant; muted?: boolean; truncate?: boolean; }\n\nexport function Typography({ as, variant = 'body', muted, truncate, className = '', ...props }: TypographyProps) {\n const defaults: Partial<Record<TypographyVariant, ElementType>> = { display: 'h1', h1: 'h1', h2: 'h2', h3: 'h3', code: 'code' };\n const Tag: ElementType = as ?? defaults[variant] ?? 'p';\n return <Tag className={`hf-typography hf-typography--${variant}${muted ? ' is-muted' : ''}${truncate ? ' is-truncated' : ''} ${className}`} {...props} />;\n}\n","import type { ReactNode } from 'react';\n\nexport interface NavigationItem {\n key: string;\n label: string;\n href?: string;\n icon?: ReactNode;\n description?: string;\n children?: readonly NavigationItem[];\n}\n\nexport interface NavigationSelectionProps {\n activeKey?: string;\n onItemSelect?: (item: NavigationItem) => void;\n}\n\nexport function activateNavigationItem(item: NavigationItem, onItemSelect?: (item: NavigationItem) => void) {\n onItemSelect?.(item);\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface FloatingNavProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n action?: ReactNode;\n}\n\nexport function FloatingNav({ brand, items, action, activeKey, onItemSelect, className = '', ...props }: FloatingNavProps) {\n return (\n <nav className={`hf-floating-nav ${className}`.trim()} aria-label=\"主导航\" {...props}>\n <div className=\"hf-floating-nav__brand\">{brand}</div>\n <div className=\"hf-floating-nav__items\">\n {items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => activateNavigationItem(item, onItemSelect)}>{item.label}</a>)}\n </div>\n {action && <div className=\"hf-floating-nav__action\">{action}</div>}\n </nav>\n );\n}\n","import { useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand?: ReactNode;\n items: readonly NavigationItem[];\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n appearance?: 'flush' | 'floating' | 'inset';\n}\n\nexport function Sidebar({ brand, items, activeKey, collapsed, defaultCollapsed = false, onCollapsedChange, onItemSelect, appearance = 'flush', className = '', ...props }: SidebarProps) {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const isCollapsed = collapsed ?? internalCollapsed;\n const toggle = () => {\n const next = !isCollapsed;\n if (collapsed === undefined) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n };\n return (\n <aside className={`hf-sidebar hf-sidebar--${appearance} ${isCollapsed ? 'hf-sidebar--collapsed' : ''} ${className}`.trim()} {...props}>\n <div className=\"hf-sidebar__top\">{brand && <div className=\"hf-sidebar__brand\">{brand}</div>}<button type=\"button\" onClick={toggle} aria-label={isCollapsed ? '展开侧边栏' : '收起侧边栏'} aria-expanded={!isCollapsed}>‹</button></div>\n <nav aria-label=\"侧边导航\">\n {items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} title={isCollapsed ? item.label : undefined} onClick={() => activateNavigationItem(item, onItemSelect)}><span className=\"hf-sidebar__icon\">{item.icon ?? item.label.slice(0, 1)}</span><span className=\"hf-sidebar__label\">{item.label}</span></a>)}\n </nav>\n </aside>\n );\n}\n","import type { HTMLAttributes } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n items: readonly NavigationItem[];\n separator?: string;\n}\n\nexport function Breadcrumb({ items, separator = '/', onItemSelect, className = '', ...props }: BreadcrumbProps) {\n return (\n <nav className={`hf-breadcrumb ${className}`.trim()} aria-label=\"面包屑\" {...props}>\n <ol>{items.map((item, index) => {\n const current = index === items.length - 1;\n return <li key={item.key}>{current ? <span aria-current=\"page\">{item.label}</span> : <a href={item.href ?? '#'} onClick={() => activateNavigationItem(item, onItemSelect)}>{item.label}</a>}{!current && <i aria-hidden=\"true\">{separator}</i>}</li>;\n })}</ol>\n </nav>\n );\n}\n","import { useState, type HTMLAttributes } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\ninterface BaseMenuProps extends HTMLAttributes<HTMLDivElement>, NavigationSelectionProps {\n label: string;\n items: readonly NavigationItem[];\n}\n\nexport function DropdownMenu({ label, items, activeKey, onItemSelect, className = '', ...props }: BaseMenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div ref={ref} className={`hf-menu ${className}`.trim()} {...props}><button type=\"button\" aria-expanded={open} aria-haspopup=\"menu\" onClick={() => setOpen((value) => !value)}>{label}<span aria-hidden=\"true\">⌄</span></button>{open && <div className=\"hf-menu__panel\" role=\"menu\">{items.map((item) => <a key={item.key} role=\"menuitem\" href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}>{item.label}</a>)}</div>}</div>;\n}\n\nexport function MegaMenu({ label, items, onItemSelect, className = '', ...props }: BaseMenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div ref={ref} className={`hf-menu hf-mega-menu ${className}`.trim()} {...props}><button type=\"button\" aria-expanded={open} aria-haspopup=\"menu\" onClick={() => setOpen((value) => !value)}>{label}<span aria-hidden=\"true\">⌄</span></button>{open && <div className=\"hf-mega-menu__panel\" role=\"menu\">{items.map((group) => <section key={group.key}><h3>{group.label}</h3>{group.children?.map((item) => <a key={item.key} role=\"menuitem\" href={item.href ?? '#'} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}><span>{item.icon}</span><span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span></a>)}</section>)}</div>}</div>;\n}\n","import { useId, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface MobileNavigationProps extends HTMLAttributes<HTMLDivElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n mode?: 'drawer' | 'fullscreen';\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function MobileNavigation({ brand, items, mode = 'drawer', activeKey, open, onOpenChange, onItemSelect, className = '', ...props }: MobileNavigationProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = open ?? internalOpen;\n const panelId = useId();\n const setOpen = (next: boolean) => {\n if (open === undefined) setInternalOpen(next);\n onOpenChange?.(next);\n };\n const panelRef = useDismissibleLayer<HTMLElement>(isOpen, () => setOpen(false), true);\n return (\n <div className={`hf-mobile-nav ${className}`.trim()} {...props}>\n <div className=\"hf-mobile-nav__bar\"><div>{brand}</div><button type=\"button\" aria-label=\"打开导航\" aria-expanded={isOpen} aria-controls={panelId} onClick={() => setOpen(true)}><i /><i /><i /></button></div>\n {isOpen && <div className={`hf-mobile-nav__backdrop hf-mobile-nav__backdrop--${mode}`} onMouseDown={(event) => event.target === event.currentTarget && setOpen(false)}>\n <nav ref={panelRef} id={panelId} className=\"hf-mobile-nav__panel\" aria-label=\"移动导航\" tabIndex={-1}>\n <header><div>{brand}</div><button type=\"button\" aria-label=\"关闭导航\" onClick={() => setOpen(false)}>×</button></header>\n <div className=\"hf-mobile-nav__links\">{items.map((item, index) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} style={{ '--hf-nav-index': index } as React.CSSProperties} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}><span>{item.label}</span>{item.description && <small>{item.description}</small>}</a>)}</div>\n </nav>\n </div>}\n </div>\n );\n}\n","import { useEffect, useState, type HTMLAttributes } from 'react';\nimport type { NavigationItem, NavigationSelectionProps } from './types';\n\nexport interface ScrollspyProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n items: readonly NavigationItem[];\n rootMargin?: string;\n}\n\nexport function Scrollspy({ items, activeKey, onItemSelect, rootMargin = '-20% 0px -65%', className = '', ...props }: ScrollspyProps) {\n const [observedKey, setObservedKey] = useState(items[0]?.key);\n const currentKey = activeKey ?? observedKey;\n useEffect(() => {\n if (activeKey || !('IntersectionObserver' in window)) return;\n const observer = new IntersectionObserver((entries) => {\n const visible = entries.find((entry) => entry.isIntersecting);\n if (visible?.target.id) setObservedKey(visible.target.id);\n }, { rootMargin });\n items.forEach((item) => { const section = document.getElementById(item.key); if (section) observer.observe(section); });\n return () => observer.disconnect();\n }, [activeKey, items, rootMargin]);\n return <nav className={`hf-scrollspy ${className}`.trim()} aria-label=\"页内导航\" {...props}>{items.map((item) => <a key={item.key} href={item.href ?? `#${item.key}`} aria-current={currentKey === item.key ? 'location' : undefined} onClick={() => onItemSelect?.(item)}>{item.label}</a>)}</nav>;\n}\n","import { useEffect, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport type { NavigationItem, NavigationSelectionProps } from './types';\n\nexport interface ShrinkNavProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n threshold?: number;\n action?: ReactNode;\n}\n\nexport function ShrinkNav({ brand, items, threshold = 48, action, activeKey, onItemSelect, className = '', ...props }: ShrinkNavProps) {\n const [compact, setCompact] = useState(false);\n useEffect(() => {\n let frame = 0;\n const update = () => { cancelAnimationFrame(frame); frame = requestAnimationFrame(() => setCompact(window.scrollY > threshold)); };\n update();\n window.addEventListener('scroll', update, { passive: true });\n return () => { cancelAnimationFrame(frame); window.removeEventListener('scroll', update); };\n }, [threshold]);\n return <nav className={`hf-shrink-nav ${compact ? 'hf-shrink-nav--compact' : ''} ${className}`.trim()} aria-label=\"滚动导航\" {...props}><div className=\"hf-shrink-nav__brand\">{brand}</div><div className=\"hf-shrink-nav__items\">{items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => onItemSelect?.(item)}>{item.label}</a>)}</div>{action}</nav>;\n}\n","import { useId, type KeyboardEvent, type ReactNode } from 'react';\nexport interface TabItem<T extends string = string> { key: T; label: ReactNode; content: ReactNode; badge?: ReactNode; disabled?: boolean; icon?: ReactNode }\nexport interface TabsProps<T extends string = string> { items: readonly TabItem<T>[]; value: T; onChange: (value: T) => void; variant?: 'line' | 'card' | 'pill' | 'underline' | 'vertical' | 'scroll'; label?: string }\nexport function Tabs<T extends string>({ items, value, onChange, variant = 'line', label = '内容标签' }: TabsProps<T>) {\n const id = useId(); const active = items.find((item) => item.key === value) ?? items[0];\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; event.preventDefault(); const enabled = items.filter((item) => !item.disabled); const current = enabled.findIndex((item) => item.key === value); const offset = event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -1 : 1; const next = enabled[(current + offset + enabled.length) % enabled.length]; if (next) onChange(next.key); };\n return <div className={`hf-tabs hf-tabs--${variant}`}><div role=\"tablist\" aria-label={label} onKeyDown={onKeyDown}>{items.map((item) => <button type=\"button\" role=\"tab\" id={`${id}-${item.key}`} aria-controls={`${id}-${item.key}-panel`} aria-selected={item.key === value} tabIndex={item.key === value ? 0 : -1} disabled={item.disabled} key={item.key} onClick={() => onChange(item.key)}>{item.icon}<span>{item.label}</span>{item.badge && <small>{item.badge}</small>}</button>)}</div>{active && <div role=\"tabpanel\" id={`${id}-${active.key}-panel`} aria-labelledby={`${id}-${active.key}`} tabIndex={0}>{active.content}</div>}</div>;\n}\n","import type { ReactNode } from 'react';\nexport interface StepItem { key: string; title: ReactNode; description?: ReactNode; disabled?: boolean; optional?: boolean }\nexport interface StepsProps { items: readonly StepItem[]; current: string; onChange?: (key: string) => void; orientation?: 'horizontal' | 'vertical' }\nexport function Steps({ items, current, onChange, orientation = 'horizontal' }: StepsProps) { const currentIndex = Math.max(0, items.findIndex((item) => item.key === current)); return <ol className={`hf-steps hf-steps--${orientation}`}>{items.map((item, index) => { const state = index < currentIndex ? 'complete' : index === currentIndex ? 'current' : 'upcoming'; return <li className={`is-${state}`} aria-current={state === 'current' ? 'step' : undefined} key={item.key}><button type=\"button\" disabled={item.disabled || !onChange} onClick={() => onChange?.(item.key)}><span>{state === 'complete' ? '✓' : index + 1}</span><span><strong>{item.title}</strong>{item.optional && <small>可选</small>}{item.description && <small>{item.description}</small>}</span></button></li>; })}</ol>; }\n","import { useEffect, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface CommandItem { key: string; label: string; description?: string; group?: string; shortcut?: string; icon?: ReactNode; disabled?: boolean }\nexport interface CommandPaletteProps { open: boolean; onOpenChange: (open: boolean) => void; items: readonly CommandItem[]; onSelect: (key: string) => void; placeholder?: string }\nexport function CommandPalette({ open, onOpenChange, items, onSelect, placeholder = '输入命令或搜索…' }: CommandPaletteProps) {\n const [query, setQuery] = useState(''); const [active, setActive] = useState(0); const enabled = useMemo(() => items.filter((item) => !item.disabled && `${item.label} ${item.description ?? ''} ${item.group ?? ''}`.toLowerCase().includes(query.toLowerCase())), [items, query]); const dialogRef = useDismissibleLayer<HTMLDivElement>(open, () => onOpenChange(false), true);\n useEffect(() => { if (!open) { setQuery(''); setActive(0); } }, [open]);\n const keydown = (event: KeyboardEvent<HTMLInputElement>) => { if (!enabled.length) return; if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setActive((current) => (current + (event.key === 'ArrowDown' ? 1 : -1) + enabled.length) % enabled.length); } else if (event.key === 'Home' || event.key === 'End') { event.preventDefault(); setActive(event.key === 'Home' ? 0 : enabled.length - 1); } else if (event.key === 'Enter') { event.preventDefault(); const item = enabled[active]; if (item) { onSelect(item.key); onOpenChange(false); } } };\n if (!open) return null;\n return createPortal(<div className=\"hf-command-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onOpenChange(false)}><div ref={dialogRef} tabIndex={-1} className=\"hf-command\" role=\"dialog\" aria-modal=\"true\" aria-label=\"命令面板\"><div className=\"hf-command__search\"><span aria-hidden=\"true\">⌕</span><input autoFocus role=\"combobox\" aria-expanded=\"true\" aria-controls=\"hf-command-list\" value={query} placeholder={placeholder} onChange={(event) => { setQuery(event.target.value); setActive(0); }} onKeyDown={keydown} /><kbd>Esc</kbd></div><div id=\"hf-command-list\" className=\"hf-command__list\" role=\"listbox\">{enabled.map((item, index) => <button type=\"button\" role=\"option\" aria-selected={index === active} key={item.key} onPointerMove={() => setActive(index)} onClick={() => { onSelect(item.key); onOpenChange(false); }}>{item.icon}<span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span>{item.shortcut && <kbd>{item.shortcut}</kbd>}</button>)}{!enabled.length && <div className=\"hf-command__empty\">没有匹配命令</div>}</div></div></div>, document.body);\n}\n","import type { CSSProperties, HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n columns?: number | 'auto';\n minItemWidth?: number;\n gap?: number;\n}\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> { size?: 'sm' | 'md' | 'lg' | 'full'; padding?: number; }\nexport function Container({ size = 'lg', padding = 24, className = '', style, ...props }: PropsWithChildren<ContainerProps>) {\n return <div className={`hf-container hf-container--${size} ${className}`.trim()} style={{ '--hf-container-padding': `${padding}px`, ...style } as CSSProperties} {...props} />;\n}\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> { direction?: 'row' | 'column'; gap?: number; align?: CSSProperties['alignItems']; justify?: CSSProperties['justifyContent']; wrap?: boolean; }\nexport function Stack({ direction = 'column', gap = 12, align, justify, wrap = false, className = '', style, ...props }: PropsWithChildren<StackProps>) {\n return <div className={`hf-stack hf-stack--${direction} ${className}`.trim()} style={{ '--hf-stack-gap': `${gap}px`, alignItems: align, justifyContent: justify, flexWrap: wrap ? 'wrap' : undefined, ...style } as CSSProperties} {...props} />;\n}\n\nexport function Grid({ columns = 'auto', minItemWidth = 240, gap = 16, className = '', style, ...props }: PropsWithChildren<GridProps>) {\n const gridStyle = {\n '--hf-grid-columns': columns === 'auto' ? `repeat(auto-fit, minmax(min(100%, ${minItemWidth}px), 1fr))` : `repeat(${columns}, minmax(0, 1fr))`,\n '--hf-grid-gap': `${gap}px`,\n ...style,\n } as CSSProperties;\n return <div className={`hf-grid ${className}`.trim()} style={gridStyle} {...props} />;\n}\n\nexport interface MasonryProps extends HTMLAttributes<HTMLDivElement> {\n columns?: number;\n minColumnWidth?: number;\n gap?: number;\n}\n\nexport function Masonry({ columns, minColumnWidth = 260, gap = 16, className = '', style, children, ...props }: PropsWithChildren<MasonryProps>) {\n const masonryStyle = {\n '--hf-masonry-columns': columns ?? 'auto',\n '--hf-masonry-width': `${minColumnWidth}px`,\n '--hf-masonry-gap': `${gap}px`,\n ...style,\n } as CSSProperties;\n return <div className={`hf-masonry ${className}`.trim()} style={masonryStyle} {...props}>{children}</div>;\n}\n\nexport interface PageLayoutProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'single' | 'sidebar-left' | 'sidebar-right' | 'split' | 'dashboard' | 'full-screen';\n sidebar?: ReactNode;\n header?: ReactNode;\n sidebarWidth?: number;\n}\n\nexport function PageLayout({ variant = 'single', sidebar, header, sidebarWidth = 280, className = '', style, children, ...props }: PropsWithChildren<PageLayoutProps>) {\n const layoutStyle = { '--hf-layout-sidebar': `${sidebarWidth}px`, ...style } as CSSProperties;\n return <div className={`hf-page-layout hf-page-layout--${variant} ${className}`.trim()} style={layoutStyle} {...props}>{header && <header className=\"hf-page-layout__header\">{header}</header>}{sidebar && <aside className=\"hf-page-layout__sidebar\">{sidebar}</aside>}<main className=\"hf-page-layout__main\">{children}</main></div>;\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n width?: number | string;\n height?: number | string;\n radius?: number | string;\n circle?: boolean;\n animated?: boolean;\n}\n\nexport function Skeleton({ width = '100%', height = 16, radius, circle, animated = true, className = '', style, ...props }: SkeletonProps) {\n const value = (input: number | string) => typeof input === 'number' ? `${input}px` : input;\n return <span aria-hidden=\"true\" className={`hf-skeleton ${animated ? 'is-animated' : ''} ${circle ? 'is-circle' : ''} ${className}`.trim()} style={{ width: value(width), height: value(height), borderRadius: radius ? value(radius) : undefined, ...style } as CSSProperties} {...props} />;\n}\n","import type { CSSProperties, HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport function Spinner({ label = '正在加载', size = 20, className = '' }: { label?: string; size?: number; className?: string }) {\n return <span className={`hf-loading-spinner ${className}`.trim()} role=\"status\" aria-label={label} style={{ '--hf-loading-size': `${size}px` } as CSSProperties} />;\n}\n\nexport function LoadingDots({ label = '正在加载' }: { label?: string }) {\n return <span className=\"hf-loading-dots\" role=\"status\" aria-label={label}><i /><i /><i /></span>;\n}\n\nexport function ProgressBar({ value, label, indeterminate = false, className = '' }: { value?: number; label?: ReactNode; indeterminate?: boolean; className?: string }) {\n const percent = Math.min(100, Math.max(0, value ?? 0));\n return <div className={`hf-progress ${indeterminate ? 'is-indeterminate' : ''} ${className}`.trim()}>{label && <div className=\"hf-progress__label\"><span>{label}</span>{!indeterminate && <strong>{percent}%</strong>}</div>}<div className=\"hf-progress__track\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={100} aria-valuenow={indeterminate ? undefined : percent}><i style={{ '--hf-progress': `${percent}%` } as CSSProperties} /></div></div>;\n}\n\nexport function ProgressRing({ value, size = 72, label }: { value: number; size?: number; label?: string }) {\n const percent = Math.min(100, Math.max(0, value));\n return <span className=\"hf-progress-ring\" role=\"progressbar\" aria-label={label} aria-valuemin={0} aria-valuemax={100} aria-valuenow={percent} style={{ '--hf-ring-value': `${percent * 3.6}deg`, '--hf-ring-size': `${size}px` } as CSSProperties}><strong>{percent}%</strong></span>;\n}\n\nexport interface LoadingOverlayProps extends HTMLAttributes<HTMLDivElement> { active?: boolean; label?: string }\nexport function LoadingOverlay({ active = true, label = '正在准备内容', className = '', children, ...props }: PropsWithChildren<LoadingOverlayProps>) {\n return <div className={`hf-loading-overlay ${className}`.trim()} aria-busy={active} {...props}>{children}{active && <div className=\"hf-loading-overlay__veil\" role=\"status\"><Spinner label={label} size={28} /><span>{label}</span></div>}</div>;\n}\n","import { forwardRef, useEffect, useId, useRef, useState, type ChangeEvent, type KeyboardEvent, type ReactNode, type SelectHTMLAttributes } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface SelectOption { label: ReactNode; value: string; disabled?: boolean }\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'children'> { label?: string; hint?: string; error?: string; options: readonly SelectOption[]; placeholder?: string }\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { id, label, hint, error, options, placeholder, className = '', value, defaultValue, onChange, disabled, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }, forwardedRef,\n) {\n const generatedId = useId(); const inputId = id ?? generatedId; const triggerId = `${inputId}-trigger`; const listboxId = `${inputId}-listbox`; const descriptionId = `${inputId}-description`;\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const nativeRef = useRef<HTMLSelectElement | null>(null);\n const [innerValue, setInnerValue] = useState(() => String(defaultValue ?? (placeholder ? '' : options.find((option) => !option.disabled)?.value ?? '')));\n const selectedValue = value === undefined ? innerValue : String(value); const selectedOption = options.find((option) => option.value === selectedValue);\n const enabledIndices = options.map((option, index) => option.disabled ? -1 : index).filter((index) => index >= 0); const selectedIndex = options.findIndex((option) => option.value === selectedValue);\n const [activeIndex, setActiveIndex] = useState(selectedIndex >= 0 ? selectedIndex : enabledIndices[0] ?? -1);\n const assignRef = (node: HTMLSelectElement | null) => { nativeRef.current = node; if (typeof forwardedRef === 'function') forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; };\n const handleNativeChange = (event: ChangeEvent<HTMLSelectElement>) => { if (value === undefined) setInnerValue(event.currentTarget.value); onChange?.(event); };\n const choose = (nextValue: string) => { const native = nativeRef.current; if (!native) return; Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set?.call(native, nextValue); native.dispatchEvent(new Event('change', { bubbles: true })); if (value === undefined) setInnerValue(nextValue); setOpen(false); window.requestAnimationFrame(() => document.getElementById(triggerId)?.focus()); };\n useEffect(() => { if (selectedIndex >= 0) setActiveIndex(selectedIndex); }, [selectedIndex]);\n const move = (direction: 1 | -1) => { if (!enabledIndices.length) return; const current = enabledIndices.indexOf(activeIndex); const next = current < 0 ? 0 : (current + direction + enabledIndices.length) % enabledIndices.length; setActiveIndex(enabledIndices[next]!); };\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); if (!open) setOpen(true); move(event.key === 'ArrowDown' ? 1 : -1); }\n else if ((event.key === 'Enter' || event.key === ' ') && open) { event.preventDefault(); const option = options[activeIndex]; if (option && !option.disabled) choose(option.value); }\n else if (event.key === 'Escape' && open) { event.preventDefault(); setOpen(false); }\n else if (event.key === 'Home' && open && enabledIndices.length) { event.preventDefault(); setActiveIndex(enabledIndices[0]!); }\n else if (event.key === 'End' && open && enabledIndices.length) { event.preventDefault(); setActiveIndex(enabledIndices[enabledIndices.length - 1]!); }\n else if (event.key === 'Tab') setOpen(false);\n };\n return <div className={`hf-field ${className}`.trim()} ref={rootRef}>\n {label && <label className=\"hf-field__label\" htmlFor={triggerId}>{label}</label>}\n <div className={`hf-select-shell ${open ? 'hf-select-shell--open' : ''} ${error ? 'hf-select-shell--error' : ''}`}>\n <select ref={assignRef} id={inputId} className=\"hf-select-native\" tabIndex={-1} aria-hidden=\"true\" value={selectedValue} disabled={disabled} onChange={handleNativeChange} {...props}>{placeholder && <option value=\"\" disabled>{placeholder}</option>}{options.map((option) => <option key={option.value} value={option.value} disabled={option.disabled}>{typeof option.label === 'string' ? option.label : option.value}</option>)}</select>\n <button id={triggerId} type=\"button\" className=\"hf-select\" disabled={disabled} aria-label={ariaLabel} aria-labelledby={ariaLabelledBy} aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listboxId : undefined} aria-activedescendant={open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : undefined} aria-invalid={Boolean(error)} aria-describedby={hint || error ? descriptionId : undefined} onClick={() => { setActiveIndex(selectedIndex >= 0 ? selectedIndex : enabledIndices[0] ?? -1); setOpen((current) => !current); }} onKeyDown={handleKeyDown}><span className={!selectedOption ? 'hf-select__placeholder' : ''}>{selectedOption?.label ?? placeholder ?? '请选择'}</span><svg className=\"hf-select__chevron\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\"><path d={open ? 'm4.5 9.75 3.5-3.5 3.5 3.5' : 'm4.5 6.25 3.5 3.5 3.5-3.5'} stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg></button>\n {open && <div id={listboxId} className=\"hf-select-menu\" role=\"listbox\" aria-labelledby={triggerId}>{options.map((option, index) => <button id={`${listboxId}-option-${index}`} type=\"button\" role=\"option\" aria-selected={option.value === selectedValue} disabled={option.disabled} className={index === activeIndex ? 'is-active' : ''} key={option.value} onPointerMove={() => !option.disabled && setActiveIndex(index)} onClick={() => choose(option.value)}><span>{option.label}</span>{option.value === selectedValue && <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\"><path d=\"m3.5 8 3 3 6-6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>}</button>)}</div>}\n </div>\n {(error || hint) && <span id={descriptionId} className={`hf-field__hint ${error ? 'hf-field__hint--error' : ''}`}>{error ?? hint}</span>}\n </div>;\n});\n","import { useId, useState, type ReactNode } from 'react';\nimport type { SelectOption } from './Select';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface MultiSelectProps { label?: string; options: readonly SelectOption[]; value: readonly string[]; onChange: (value: string[]) => void; placeholder?: string; max?: number; hint?: ReactNode; disabled?: boolean }\nexport function MultiSelect({ label, options, value, onChange, placeholder = '请选择', max, hint, disabled }: MultiSelectProps) {\n const [open, setOpen] = useState(false); const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const listId = useId();\n const toggle = (next: string) => { const selected = value.includes(next); if (!selected && max && value.length >= max) return; onChange(selected ? value.filter((item) => item !== next) : [...value, next]); };\n return <div className=\"hf-field hf-multiselect\" ref={rootRef}>{label && <span className=\"hf-field__label\">{label}</span>}<div className=\"hf-multiselect__trigger\" role=\"combobox\" tabIndex={disabled ? -1 : 0} aria-disabled={disabled} aria-expanded={open} aria-controls={listId} onClick={() => !disabled && setOpen(!open)} onKeyDown={(event) => { if (!disabled && (event.key === 'Enter' || event.key === ' ')) { event.preventDefault(); setOpen(!open); } }}><span>{value.length ? value.map((item) => { const option = options.find((candidate) => candidate.value === item); return <i key={item}>{option?.label}<button type=\"button\" aria-label={`移除 ${String(option?.label)}`} onClick={(event) => { event.stopPropagation(); toggle(item); }}>×</button></i>; }) : <em>{placeholder}</em>}</span><Icon name=\"chevron-down\" size={16} className=\"hf-multiselect__chevron\" /></div>{open && <div id={listId} className=\"hf-multiselect__menu\" role=\"listbox\" aria-multiselectable=\"true\">{options.map((option) => <button type=\"button\" role=\"option\" aria-selected={value.includes(option.value)} key={option.value} disabled={option.disabled} onClick={() => toggle(option.value)}><span>{option.label}</span><i>{value.includes(option.value) ? '✓' : ''}</i></button>)}</div>}{hint && <span className=\"hf-field__hint\">{hint}</span>}</div>;\n}\n","import { useId, type ReactNode } from 'react';\n\nexport interface ChoiceOption<T extends string = string> {\n label: ReactNode;\n value: T;\n description?: ReactNode;\n disabled?: boolean;\n}\n\ninterface ChoiceGroupProps<T extends string> {\n label?: string;\n options: readonly ChoiceOption<T>[];\n value?: T | T[];\n defaultValue?: T | T[];\n onChange?: (value: T | T[]) => void;\n type?: 'radio' | 'checkbox';\n direction?: 'row' | 'column';\n disabled?: boolean;\n name?: string;\n}\n\nexport function ChoiceGroup<T extends string>({ label, options, value, defaultValue, onChange, type = 'radio', direction = 'column', disabled, name }: ChoiceGroupProps<T>) {\n const id = useId();\n const groupName = name ?? id;\n const values = Array.isArray(value) ? value : value ? [value] : undefined;\n const defaults = Array.isArray(defaultValue) ? defaultValue : defaultValue ? [defaultValue] : [];\n return <fieldset className={`hf-choice-group hf-choice-group--${direction}`} disabled={disabled}>\n {label && <legend>{label}</legend>}\n {options.map((option) => {\n const checked = values?.includes(option.value);\n return <label className=\"hf-choice\" key={option.value}>\n <input type={type} name={type === 'radio' ? groupName : `${groupName}-${option.value}`} value={option.value} checked={checked} defaultChecked={values ? undefined : defaults.includes(option.value)} disabled={option.disabled} onChange={(event) => {\n if (type === 'radio') onChange?.(option.value);\n else {\n const next = new Set(values ?? defaults);\n event.currentTarget.checked ? next.add(option.value) : next.delete(option.value);\n onChange?.([...next]);\n }\n }} />\n <span className=\"hf-choice__control\" aria-hidden=\"true\" />\n <span className=\"hf-choice__copy\"><strong>{option.label}</strong>{option.description && <small>{option.description}</small>}</span>\n </label>;\n })}\n </fieldset>;\n}\n\nexport function RadioGroup<T extends string>(props: Omit<ChoiceGroupProps<T>, 'type' | 'value' | 'defaultValue' | 'onChange'> & { value?: T; defaultValue?: T; onChange?: (value: T) => void }) {\n return <ChoiceGroup {...props} type=\"radio\" onChange={(next) => props.onChange?.(next as T)} />;\n}\n\nexport function CheckboxGroup<T extends string>(props: Omit<ChoiceGroupProps<T>, 'type' | 'value' | 'defaultValue' | 'onChange'> & { value?: T[]; defaultValue?: T[]; onChange?: (value: T[]) => void }) {\n return <ChoiceGroup {...props} type=\"checkbox\" onChange={(next) => props.onChange?.(next as T[])} />;\n}\n","import { useState, type FormEvent } from 'react';\nimport { Input, type InputProps } from '../components/Input';\n\nexport interface ValidationRule {\n validate: (value: string) => boolean;\n message: string;\n}\n\nexport interface ValidatedInputProps extends Omit<InputProps, 'error' | 'onChange' | 'onBlur'> {\n value: string;\n rules: readonly ValidationRule[];\n validateOn?: 'blur' | 'change';\n onChange: (value: string) => void;\n onValidityChange?: (valid: boolean) => void;\n}\n\nexport function validateValue(value: string, rules: readonly ValidationRule[]) {\n return rules.find((rule) => !rule.validate(value))?.message;\n}\n\nexport function ValidatedInput({ value, rules, validateOn = 'blur', onChange, onValidityChange, ...props }: ValidatedInputProps) {\n const [touched, setTouched] = useState(false);\n const error = touched ? validateValue(value, rules) : undefined;\n const update = (next: string) => {\n onChange(next);\n if (validateOn === 'change') setTouched(true);\n onValidityChange?.(!validateValue(next, rules));\n };\n return <Input {...props} value={value} error={error} onChange={(event) => update(event.target.value)} onBlur={() => setTouched(true)} />;\n}\n\nexport function validateForm(event: FormEvent<HTMLFormElement>) {\n if (!event.currentTarget.checkValidity()) {\n event.preventDefault();\n event.currentTarget.reportValidity();\n return false;\n }\n return true;\n}\n","import { forwardRef, useId, type TextareaHTMLAttributes, type ReactNode } from 'react';\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> { label?: ReactNode; hint?: ReactNode; error?: ReactNode; resize?: 'none' | 'vertical' | 'both'; }\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea({ label, hint, error, resize = 'vertical', id, className = '', ...props }, ref) {\n const generated = useId(); const fieldId = id ?? generated; const message = error ?? hint; const messageId = message ? `${fieldId}-message` : undefined;\n return <label className=\"hf-field\" htmlFor={fieldId}>{label && <span className=\"hf-field__label\">{label}</span>}<textarea ref={ref} id={fieldId} className={`hf-textarea hf-textarea--${resize}${error ? ' hf-textarea--error' : ''} ${className}`} aria-invalid={error ? true : undefined} aria-describedby={messageId} {...props} />{message && <span id={messageId} className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{message}</span>}</label>;\n});\n","import { forwardRef, useEffect, useRef, type InputHTMLAttributes, type ReactNode } from 'react';\ntype BaseProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & { label: ReactNode; description?: ReactNode };\nexport const Checkbox = forwardRef<HTMLInputElement, BaseProps & { indeterminate?: boolean }>(function Checkbox({ label, description, indeterminate, className = '', ...props }, forwardedRef) {\n const local = useRef<HTMLInputElement>(null); useEffect(() => { if (local.current) local.current.indeterminate = Boolean(indeterminate); }, [indeterminate]);\n const setRef = (node: HTMLInputElement | null) => { local.current = node; if (typeof forwardedRef === 'function') forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; };\n return <label className={`hf-choice-control ${className}`}><input ref={setRef} type=\"checkbox\" {...props} /><span className=\"hf-choice-control__mark\"><IconCheck /></span><span><strong>{label}</strong>{description && <small>{description}</small>}</span></label>;\n});\nexport const Radio = forwardRef<HTMLInputElement, BaseProps>(function Radio({ label, description, className = '', ...props }, ref) { return <label className={`hf-choice-control hf-choice-control--radio ${className}`}><input ref={ref} type=\"radio\" {...props} /><span className=\"hf-choice-control__mark\"><i /></span><span><strong>{label}</strong>{description && <small>{description}</small>}</span></label>; });\nfunction IconCheck() { return <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"m3.5 8 3 3 6-6\" /></svg>; }\n","import {\n useState,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nconst iso = (date: Date) =>\n `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n\nexport interface CalendarProps {\n value?: string;\n onChange?: (value: string) => void;\n min?: string;\n max?: string;\n className?: string;\n}\n\nexport function Calendar({ value, onChange, min, max, className = '' }: CalendarProps) {\n const initial = value ? new Date(`${value}T00:00:00`) : new Date();\n const [view, setView] = useState(new Date(initial.getFullYear(), initial.getMonth(), 1));\n const first = view.getDay();\n const days = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells = Array.from(\n { length: Math.ceil((first + days) / 7) * 7 },\n (_, index) => index - first + 1,\n );\n\n return (\n <div className={`hf-calendar ${className}`}>\n <header>\n <button\n type=\"button\"\n aria-label=\"上个月\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1))}\n >\n <Icon name=\"chevron-down\" className=\"hf-calendar__prev\" />\n </button>\n <strong>{view.getFullYear()} 年 {view.getMonth() + 1} 月</strong>\n <button\n type=\"button\"\n aria-label=\"下个月\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1))}\n >\n <Icon name=\"chevron-down\" className=\"hf-calendar__next\" />\n </button>\n </header>\n <div className=\"hf-calendar__week\">\n {'日一二三四五六'.split('').map((day) => <span key={day}>{day}</span>)}\n </div>\n <div className=\"hf-calendar__days\">\n {cells.map((day, index) => {\n if (day < 1 || day > days) return <span key={index} />;\n const date = iso(new Date(view.getFullYear(), view.getMonth(), day));\n const disabled = Boolean((min && date < min) || (max && date > max));\n const stateClass = date === value ? 'is-selected' : date === iso(new Date()) ? 'is-today' : '';\n return (\n <button\n type=\"button\"\n key={date}\n disabled={disabled}\n className={stateClass}\n aria-pressed={date === value}\n onClick={() => onChange?.(date)}\n >\n {day}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport interface DatePickerProps {\n label?: ReactNode;\n value?: string;\n onChange: (value: string) => void;\n placeholder?: string;\n min?: string;\n max?: string;\n error?: ReactNode;\n}\n\nexport function DatePicker({\n label,\n value,\n onChange,\n placeholder = '选择日期',\n min,\n max,\n error,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), {\n autoFocus: false,\n });\n return (\n <div ref={rootRef} className=\"hf-field hf-date-picker\">\n {label && <span className=\"hf-field__label\">{label}</span>}\n <button\n type=\"button\"\n className={`hf-picker-trigger${error ? ' is-error' : ''}`}\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n <span className={value ? '' : 'is-placeholder'}>{value || placeholder}</span>\n <Icon name=\"chevron-down\" size={16} />\n </button>\n {open && (\n <div className=\"hf-date-picker__panel\">\n <Calendar\n value={value}\n min={min}\n max={max}\n onChange={(next) => {\n onChange(next);\n setOpen(false);\n }}\n />\n </div>\n )}\n {error && <span className=\"hf-field__hint hf-field__hint--error\">{error}</span>}\n </div>\n );\n}\n\nexport interface TimePickerProps {\n label?: ReactNode;\n value?: string;\n onChange: (value: string) => void;\n step?: number;\n}\n\nexport function TimePicker({ label, value, onChange, step = 30 }: TimePickerProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), {\n autoFocus: false,\n });\n const times = Array.from({ length: Math.ceil(1440 / step) }, (_, index) => {\n const minutes = index * step;\n return `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;\n });\n return (\n <div ref={rootRef} className=\"hf-field hf-time-picker\">\n {label && <span className=\"hf-field__label\">{label}</span>}\n <button\n type=\"button\"\n className=\"hf-picker-trigger\"\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n <span className={value ? '' : 'is-placeholder'}>{value || '选择时间'}</span>\n <Icon name=\"chevron-down\" size={16} />\n </button>\n {open && (\n <div className=\"hf-time-picker__panel\" role=\"listbox\">\n {times.map((time) => (\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={time === value}\n key={time}\n onClick={() => {\n onChange(time);\n setOpen(false);\n }}\n >\n {time}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n label?: ReactNode;\n value: number;\n onChange: (value: number) => void;\n showValue?: boolean;\n}\n\nexport function Slider({\n label,\n value,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n showValue = true,\n ...props\n}: SliderProps) {\n const percent = (value - Number(min)) / (Number(max) - Number(min)) * 100;\n return (\n <label className=\"hf-slider\">\n <span>{label}{showValue && <strong>{value}</strong>}</span>\n <input\n type=\"range\"\n value={value}\n min={min}\n max={max}\n step={step}\n style={{ '--hf-slider-value': `${percent}%` } as CSSProperties}\n onChange={(event) => onChange(Number(event.target.value))}\n {...props}\n />\n </label>\n );\n}\n","import {\n createContext,\n useContext,\n type FormHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\n\nconst FormContext = createContext<{ disabled?: boolean }>({});\n\nexport interface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n layout?: 'vertical' | 'horizontal';\n disabled?: boolean;\n}\n\nexport function Form({\n layout = 'vertical',\n disabled,\n className = '',\n children,\n ...props\n}: FormProps) {\n return (\n <FormContext.Provider value={{ disabled }}>\n <form\n className={`hf-form hf-form--${layout} ${className}`.trim()}\n aria-disabled={disabled || undefined}\n {...props}\n >\n <fieldset className=\"hf-form__fieldset\" disabled={disabled}>\n {children}\n </fieldset>\n </form>\n </FormContext.Provider>\n );\n}\n\nexport interface FormItemProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n required?: boolean;\n hint?: ReactNode;\n error?: ReactNode;\n children: ReactNode;\n}\n\nexport function FormItem({\n label,\n required,\n hint,\n error,\n children,\n className = '',\n ...props\n}: FormItemProps) {\n const { disabled } = useContext(FormContext);\n return (\n <div\n className={`hf-form-item${error ? ' is-error' : ''} ${className}`.trim()}\n aria-disabled={disabled || undefined}\n {...props}\n >\n {label && (\n <div className=\"hf-form-item__label\">\n {label}\n {required && <span aria-hidden=\"true\">*</span>}\n </div>\n )}\n <div>\n {children}\n {(error || hint) && <small className={error ? 'is-error' : ''}>{error || hint}</small>}\n </div>\n </div>\n );\n}\n","import {\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport type UploadRejectionReason =\n | 'file-too-large'\n | 'file-type-not-accepted'\n | 'too-many-files';\n\nexport interface UploadRejection {\n file: File;\n reason: UploadRejectionReason;\n message: string;\n}\n\ninterface UploadValidationOptions {\n accept?: string;\n maxFiles?: number;\n maxSize?: number;\n}\n\ninterface UploadValidationResult {\n accepted: File[];\n rejected: UploadRejection[];\n}\n\nexport interface UploadProps extends UploadValidationOptions {\n label?: ReactNode;\n multiple?: boolean;\n onFiles: (files: File[]) => void;\n onReject?: (rejections: UploadRejection[]) => void;\n hint?: ReactNode;\n disabled?: boolean;\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes >= 1024 * 1024) {\n const megabytes = bytes / (1024 * 1024);\n return `${Number.isInteger(megabytes) ? megabytes : megabytes.toFixed(1)} MB`;\n }\n if (bytes >= 1024) return `${Math.ceil(bytes / 1024)} KB`;\n return `${bytes} B`;\n}\n\nfunction acceptsFile(file: File, accept?: string) {\n if (!accept?.trim()) return true;\n const fileName = file.name.toLowerCase();\n const mimeType = file.type.toLowerCase();\n\n return accept\n .split(',')\n .map((value) => value.trim().toLowerCase())\n .filter(Boolean)\n .some((rule) => {\n if (rule.startsWith('.')) return fileName.endsWith(rule);\n if (rule.endsWith('/*')) return mimeType.startsWith(rule.slice(0, -1));\n return mimeType === rule;\n });\n}\n\nfunction validateUploadFiles(\n files: readonly File[],\n options: UploadValidationOptions = {},\n): UploadValidationResult {\n const accepted: File[] = [];\n const rejected: UploadRejection[] = [];\n const limit = options.maxFiles ?? Number.POSITIVE_INFINITY;\n\n files.forEach((file) => {\n if (!acceptsFile(file, options.accept)) {\n rejected.push({ file, reason: 'file-type-not-accepted', message: '不支持该文件类型' });\n return;\n }\n if (options.maxSize !== undefined && file.size > options.maxSize) {\n rejected.push({\n file,\n reason: 'file-too-large',\n message: `文件不能超过 ${formatFileSize(options.maxSize)}`,\n });\n return;\n }\n if (accepted.length >= limit) {\n rejected.push({\n file,\n reason: 'too-many-files',\n message: `最多只能选择 ${limit} 个文件`,\n });\n return;\n }\n accepted.push(file);\n });\n\n return { accepted, rejected };\n}\n\nexport function Upload({\n label = '上传文件',\n accept,\n multiple,\n maxFiles,\n maxSize,\n onFiles,\n onReject,\n hint,\n disabled,\n}: UploadProps) {\n const id = useId();\n const ref = useRef<HTMLInputElement>(null);\n const [dragging, setDragging] = useState(false);\n const [rejections, setRejections] = useState<UploadRejection[]>([]);\n\n const takeFiles = (list: FileList | null) => {\n const result = validateUploadFiles(Array.from(list ?? []), {\n accept,\n maxFiles,\n maxSize,\n });\n setRejections(result.rejected);\n onFiles(result.accepted);\n if (result.rejected.length) onReject?.(result.rejected);\n };\n\n return (\n <div className=\"hf-upload\">\n <input\n ref={ref}\n id={id}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={(event: ChangeEvent<HTMLInputElement>) => takeFiles(event.target.files)}\n />\n <button\n type=\"button\"\n disabled={disabled}\n className={dragging ? 'is-dragging' : ''}\n onClick={() => ref.current?.click()}\n onDragOver={(event) => {\n event.preventDefault();\n if (!disabled) setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={(event) => {\n event.preventDefault();\n setDragging(false);\n if (!disabled) takeFiles(event.dataTransfer.files);\n }}\n >\n <Icon name=\"inbox\" size={24} />\n <strong>{label}</strong>\n <span>拖放到这里,或点击选择</span>\n </button>\n {rejections.length > 0 && (\n <div className=\"hf-upload__errors\" role=\"alert\">\n {rejections.map(({ file, reason, message }, index) => (\n <span key={`${file.name}-${reason}-${index}`}>{file.name}:{message}</span>\n ))}\n </div>\n )}\n {hint && <small>{hint}</small>}\n </div>\n );\n}\n","import { useId, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface ComboboxOption { label: ReactNode; value: string; keywords?: string; disabled?: boolean }\nexport interface ComboboxProps { label?: ReactNode; options: readonly ComboboxOption[]; value?: string; onChange: (value: string) => void; placeholder?: string; hint?: ReactNode; error?: ReactNode; disabled?: boolean; emptyText?: ReactNode }\n\nexport function Combobox({ label, options, value = '', onChange, placeholder = '搜索或选择', hint, error, disabled, emptyText = '没有匹配项' }: ComboboxProps) {\n const id = useId(); const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const [query, setQuery] = useState(''); const [active, setActive] = useState(0);\n const selected = options.find((item) => item.value === value);\n const filtered = useMemo(() => options.filter((item) => `${typeof item.label === 'string' ? item.label : item.value} ${item.keywords ?? ''}`.toLowerCase().includes(query.toLowerCase())), [options, query]);\n const choose = (next: string) => { onChange(next); setQuery(''); setOpen(false); };\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => { if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setOpen(true); setActive((current) => Math.max(0, Math.min(filtered.length - 1, current + (event.key === 'ArrowDown' ? 1 : -1)))); } else if (event.key === 'Enter' && open) { event.preventDefault(); const option = filtered[active]; if (option && !option.disabled) choose(option.value); } else if (event.key === 'Escape') setOpen(false); };\n return <div className=\"hf-field hf-combobox\" ref={root}>{label && <label className=\"hf-field__label\" htmlFor={id}>{label}</label>}<div className={`hf-combobox__control${open ? ' is-open' : ''}${error ? ' is-error' : ''}`}><input id={id} role=\"combobox\" aria-expanded={open} aria-controls={`${id}-listbox`} aria-autocomplete=\"list\" aria-invalid={Boolean(error)} disabled={disabled} placeholder={selected && !open ? String(selected.label) : placeholder} value={open ? query : selected ? String(selected.label) : ''} onFocus={() => setOpen(true)} onChange={(event) => { setQuery(event.target.value); setActive(0); setOpen(true); }} onKeyDown={onKeyDown} /><button type=\"button\" aria-label={open ? '关闭选项' : '打开选项'} disabled={disabled} onClick={() => setOpen((current) => !current)}>⌄</button></div>{open && <div id={`${id}-listbox`} className=\"hf-combobox__menu\" role=\"listbox\">{filtered.length ? filtered.map((option, index) => <button type=\"button\" role=\"option\" aria-selected={option.value === value} disabled={option.disabled} className={index === active ? 'is-active' : ''} key={option.value} onPointerMove={() => setActive(index)} onClick={() => choose(option.value)}><span>{option.label}</span>{option.value === value && <span aria-hidden=\"true\">✓</span>}</button>) : <div className=\"hf-combobox__empty\">{emptyText}</div>}</div>}{(error || hint) && <span className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{error ?? hint}</span>}</div>;\n}\n","import { useId, type ReactNode } from 'react';\n\nexport interface NumberInputProps { label?: ReactNode; value: number; onChange: (value: number) => void; min?: number; max?: number; step?: number; prefix?: ReactNode; suffix?: ReactNode; hint?: ReactNode; error?: ReactNode; disabled?: boolean }\nexport function NumberInput({ label, value, onChange, min, max, step = 1, prefix, suffix, hint, error, disabled }: NumberInputProps) {\n const id = useId(); const clamp = (next: number) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, next));\n return <div className=\"hf-field hf-number-input\">{label && <label className=\"hf-field__label\" htmlFor={id}>{label}</label>}<div className={`hf-number-input__control${error ? ' is-error' : ''}`}>{prefix && <span>{prefix}</span>}<input id={id} type=\"number\" value={value} min={min} max={max} step={step} disabled={disabled} aria-invalid={Boolean(error)} onChange={(event) => { const next = event.currentTarget.valueAsNumber; if (!Number.isNaN(next)) onChange(clamp(next)); }} /><div><button type=\"button\" disabled={disabled || (max !== undefined && value >= max)} aria-label=\"增加\" onClick={() => onChange(clamp(value + step))}>+</button><button type=\"button\" disabled={disabled || (min !== undefined && value <= min)} aria-label=\"减少\" onClick={() => onChange(clamp(value - step))}>−</button></div>{suffix && <span>{suffix}</span>}</div>{(error || hint) && <span className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{error ?? hint}</span>}</div>;\n}\n","import { useState, type InputHTMLAttributes, type ReactNode } from 'react';\nexport interface CascaderOption { value: string; label: string; children?: readonly CascaderOption[]; disabled?: boolean }\nexport function Cascader({ options, value = [], onChange, label }: { options: readonly CascaderOption[]; value?: readonly string[]; onChange: (value: string[]) => void; label?: ReactNode }) {\n const levels: (readonly CascaderOption[])[] = [options]; let current = options; for (const key of value) { const next = current.find((item) => item.value === key)?.children; if (!next) break; levels.push(next); current = next; }\n return <div className=\"hf-field hf-cascader\">{label && <span className=\"hf-field__label\">{label}</span>}<div>{levels.map((items, level) => <select aria-label={`第 ${level + 1} 级`} value={value[level] ?? ''} key={level} onChange={(event) => onChange([...value.slice(0, level), event.target.value])}><option value=\"\">请选择</option>{items.map((item) => <option disabled={item.disabled} value={item.value} key={item.value}>{item.label}</option>)}</select>)}</div></div>;\n}\nexport interface TreeSelectOption { key: string; label: string; children?: readonly TreeSelectOption[]; disabled?: boolean }\nexport function TreeSelect({ options, value, onChange, label, placeholder = '选择节点' }: { options: readonly TreeSelectOption[]; value?: string; onChange: (value: string) => void; label?: ReactNode; placeholder?: string }) {\n const [open, setOpen] = useState(false); const flatten = (nodes: readonly TreeSelectOption[], depth = 0): { node: TreeSelectOption; depth: number }[] => nodes.flatMap((node) => [{ node, depth }, ...flatten(node.children ?? [], depth + 1)]); const all = flatten(options);\n return <div className=\"hf-field hf-tree-select\">{label && <span className=\"hf-field__label\">{label}</span>}<button type=\"button\" className=\"hf-picker-trigger\" aria-expanded={open} onClick={() => setOpen(!open)}>{all.find((item) => item.node.key === value)?.node.label ?? placeholder}<span>⌄</span></button>{open && <div role=\"listbox\">{all.map(({ node, depth }) => <button type=\"button\" role=\"option\" aria-selected={node.key === value} disabled={node.disabled} style={{ paddingLeft: 12 + depth * 18 }} key={node.key} onClick={() => { onChange(node.key); setOpen(false); }}>{node.label}</button>)}</div>}</div>;\n}\nexport interface TransferItem { key: string; label: ReactNode; disabled?: boolean }\nexport function Transfer({ items, value, onChange, titles = ['可选项', '已选择'] }: { items: readonly TransferItem[]; value: readonly string[]; onChange: (value: string[]) => void; titles?: readonly [string, string] }) {\n const [marked, setMarked] = useState<string[]>([]); const pane = (selected: boolean) => <section><strong>{titles[selected ? 1 : 0]}</strong>{items.filter((item) => value.includes(item.key) === selected).map((item) => <label key={item.key}><input type=\"checkbox\" disabled={item.disabled} checked={marked.includes(item.key)} onChange={() => setMarked((keys) => keys.includes(item.key) ? keys.filter((key) => key !== item.key) : [...keys, item.key])} />{item.label}</label>)}</section>;\n return <div className=\"hf-transfer\">{pane(false)}<div><button type=\"button\" aria-label=\"移至已选择\" onClick={() => { onChange([...new Set([...value, ...marked])]); setMarked([]); }}>→</button><button type=\"button\" aria-label=\"移回可选项\" onClick={() => { onChange(value.filter((key) => !marked.includes(key))); setMarked([]); }}>←</button></div>{pane(true)}</div>;\n}\nexport function DateRangePicker({ label, value, onChange, min, max }: { label?: ReactNode; value: readonly [string, string]; onChange: (value: [string, string]) => void; min?: string; max?: string }) { return <div className=\"hf-field hf-date-range\">{label && <span className=\"hf-field__label\">{label}</span>}<div><input aria-label=\"开始日期\" type=\"date\" value={value[0]} min={min} max={value[1] || max} onChange={(event) => onChange([event.target.value, value[1]])} /><span>至</span><input aria-label=\"结束日期\" type=\"date\" value={value[1]} min={value[0] || min} max={max} onChange={(event) => onChange([value[0], event.target.value])} /></div></div>; }\nexport function SearchInput({ onSearch, loading, clearable = true, ...props }: Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & { onSearch: (value: string) => void; loading?: boolean; clearable?: boolean }) { const [value, setValue] = useState(String(props.defaultValue ?? props.value ?? '')); return <form className=\"hf-search-input\" role=\"search\" onSubmit={(event) => { event.preventDefault(); onSearch(value); }}><span aria-hidden=\"true\">⌕</span><input {...props} value={value} onChange={(event) => { setValue(event.target.value); props.onChange?.(event); }} />{clearable && value && <button type=\"button\" aria-label=\"清除搜索\" onClick={() => setValue('')}>×</button>}<button type=\"submit\" disabled={loading}>{loading ? '搜索中' : '搜索'}</button></form>; }\n","import { useId, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from '../components/Button';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface DrawerProps { open: boolean; title: string; children: ReactNode; onClose: () => void; footer?: ReactNode; side?: 'left' | 'right' | 'bottom'; size?: 'sm' | 'md' | 'lg' }\n\nexport function Drawer({ open, title, children, onClose, footer, side = 'right', size = 'md' }: DrawerProps) {\n const titleId = useId();\n const drawerRef = useDismissibleLayer<HTMLDivElement>(open, onClose, true);\n if (!open) return null;\n return createPortal(<div className=\"hf-drawer-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onClose()}>\n <div ref={drawerRef} className={`hf-drawer hf-drawer--${side} hf-drawer--${size}`} role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId} tabIndex={-1}>\n <header><h2 id={titleId}>{title}</h2><Button variant=\"quiet\" size=\"sm\" onClick={onClose} aria-label=\"关闭抽屉\">×</Button></header>\n <div className=\"hf-drawer__body\">{children}</div>{footer && <footer>{footer}</footer>}\n </div>\n </div>, document.body);\n}\n","import { cloneElement, isValidElement, useId, useState, type ReactElement, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface PopoverProps { trigger: ReactElement; children: ReactNode; open?: boolean; defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; placement?: 'top' | 'bottom' | 'left' | 'right'; label?: string }\n\nexport function Popover({ trigger, children, open, defaultOpen = false, onOpenChange, placement = 'bottom', label = '更多内容' }: PopoverProps) {\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const controlled = open !== undefined;\n const visible = controlled ? open : innerOpen;\n const contentId = useId();\n const update = (next: boolean) => { if (!controlled) setInnerOpen(next); onOpenChange?.(next); };\n const rootRef = useDismissibleLayer<HTMLSpanElement>(visible, () => update(false));\n const triggerProps = { 'aria-expanded': visible, 'aria-controls': visible ? contentId : undefined, 'aria-haspopup': 'dialog' as const, onClick: () => update(!visible) };\n return <span className=\"hf-popover\" ref={rootRef}>{isValidElement(trigger) && cloneElement(trigger, triggerProps)}{visible && <span id={contentId} role=\"dialog\" aria-label={label} className={`hf-popover__content hf-popover__content--${placement}`}>{children}</span>}</span>;\n}\n","import { cloneElement, useId, useState, type ReactElement, type ReactNode } from 'react';\nimport { Icon, type IconName } from '../foundations/Icon';\ntype StatusTone = 'info' | 'success' | 'warning' | 'danger';\nexport function Tooltip({ content, children, placement = 'top' }: { content: ReactNode; children: ReactElement; placement?: 'top' | 'right' | 'bottom' | 'left' }) { const [open, setOpen] = useState(false); const id = useId(); const trigger = cloneElement(children, { 'aria-describedby': open ? id : undefined } as object); return <span className=\"hf-tooltip\" onMouseEnter={() => setOpen(true)} onMouseLeave={() => setOpen(false)} onFocus={() => setOpen(true)} onBlur={() => setOpen(false)}>{trigger}{open && <span id={id} role=\"tooltip\" className={`hf-tooltip__bubble hf-tooltip__bubble--${placement}`}>{content}</span>}</span>; }\nexport function Alert({ tone = 'info', title, children, onClose, action }: { tone?: StatusTone; title: ReactNode; children?: ReactNode; onClose?: () => void; action?: ReactNode }) { const icon: Record<StatusTone, IconName> = { info: 'info', success: 'check', warning: 'warning', danger: 'error' }; return <div className={`hf-alert hf-alert--${tone}`} role={tone === 'danger' ? 'alert' : 'status'}><Icon name={icon[tone]} /><div><strong>{title}</strong>{children && <div>{children}</div>}{action && <div className=\"hf-alert__action\">{action}</div>}</div>{onClose && <button type=\"button\" onClick={onClose} aria-label=\"关闭提示\"><Icon name=\"close\" size={16} /></button>}</div>; }\n","import { cloneElement, isValidElement, useEffect, useId, useRef, useState, type ReactElement, type ReactNode } from 'react';\nimport { Button } from '../components/Button';\nimport { Icon, type IconName } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface PopconfirmProps { trigger: ReactElement; title: ReactNode; description?: ReactNode; confirmText?: string; cancelText?: string; tone?: 'primary' | 'danger'; onConfirm: () => void }\nexport function Popconfirm({ trigger, title, description, confirmText = '确认', cancelText = '取消', tone = 'primary', onConfirm }: PopconfirmProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLSpanElement>(open, () => setOpen(false), { autoFocus: false }); return <span className=\"hf-popconfirm\" ref={root}>{isValidElement(trigger) && cloneElement(trigger, { onClick: () => setOpen(true), 'aria-expanded': open } as object)}{open && <div role=\"alertdialog\" aria-modal=\"false\" className=\"hf-popconfirm__panel\"><strong>{title}</strong>{description && <p>{description}</p>}<div><Button size=\"sm\" variant=\"quiet\" onClick={() => setOpen(false)}>{cancelText}</Button><Button size=\"sm\" variant={tone === 'danger' ? 'danger' : 'primary'} onClick={() => { onConfirm(); setOpen(false); }}>{confirmText}</Button></div></div>}</span>; }\n\nexport interface NotificationProps { title: ReactNode; children?: ReactNode; tone?: 'info' | 'success' | 'warning' | 'danger'; time?: ReactNode; unread?: boolean; action?: ReactNode; onClose?: () => void }\nexport function Notification({ title, children, tone = 'info', time, unread, action, onClose }: NotificationProps) { const icons: Record<NonNullable<NotificationProps['tone']>, IconName> = { info: 'info', success: 'check', warning: 'warning', danger: 'error' }; return <article className={`hf-notification hf-notification--${tone}${unread ? ' is-unread' : ''}`}><span className=\"hf-notification__icon\"><Icon name={icons[tone]} size={18} /></span><div><header><strong>{title}</strong>{time && <time>{time}</time>}</header>{children && <p>{children}</p>}{action && <div className=\"hf-notification__action\">{action}</div>}</div>{onClose && <button type=\"button\" aria-label=\"关闭通知\" onClick={onClose}>×</button>}</article>; }\n\nexport interface ResultProps { status?: 'success' | 'error' | 'warning' | 'info' | '404' | '403'; title: ReactNode; description?: ReactNode; actions?: ReactNode; extra?: ReactNode }\nexport function Result({ status = 'info', title, description, actions, extra }: ResultProps) { const icon = status === 'success' ? '✓' : status === 'error' ? '×' : status === 'warning' ? '!' : status === 'info' ? 'i' : status; return <section className={`hf-result hf-result--${status}`}><span className=\"hf-result__icon\" aria-hidden=\"true\">{icon}</span><h2>{title}</h2>{description && <p>{description}</p>}{actions && <div className=\"hf-result__actions\">{actions}</div>}{extra && <div className=\"hf-result__extra\">{extra}</div>}</section>; }\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface StatisticCardProps extends HTMLAttributes<HTMLElement> { label: ReactNode; value: ReactNode; trend?: ReactNode; icon?: ReactNode; tone?: 'blue' | 'green' | 'violet' | 'amber' }\nexport function StatisticCard({ label, value, trend, icon, tone = 'blue', className = '', ...props }: StatisticCardProps) {\n return <article className={`hf-stat hf-stat--${tone} ${className}`.trim()} {...props}><div className=\"hf-stat__top\"><span>{label}</span>{icon && <i>{icon}</i>}</div><strong>{value}</strong>{trend && <small>{trend}</small>}<span className=\"hf-stat__glow\" aria-hidden=\"true\" /></article>;\n}\n/** COMPAT: StatisticCard remains available for existing consumers; Stat is the concise public name. */\nexport const Stat = StatisticCard;\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> { value: number; max?: number; label?: ReactNode; showValue?: boolean; size?: 'sm' | 'md' | 'lg'; tone?: 'primary' | 'success' | 'warning' }\nexport function Progress({ value, max = 100, label, showValue = true, size = 'md', tone = 'primary', className = '', ...props }: ProgressProps) {\n const percent = Math.min(100, Math.max(0, max ? value / max * 100 : 0));\n return <div className={`hf-progress hf-progress--${size} hf-progress--${tone} ${className}`.trim()} {...props}>{(label || showValue) && <div className=\"hf-progress__meta\"><span>{label}</span>{showValue && <strong>{Math.round(percent)}%</strong>}</div>}<div className=\"hf-progress__track\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={max} aria-valuenow={value}><span style={{ '--hf-progress': `${percent}%` } as CSSProperties} /></div></div>;\n}\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> { value: number; max?: number; label?: ReactNode; size?: number; thickness?: number }\nexport function CircularProgress({ value, max = 100, label, size = 92, thickness = 8, className = '', ...props }: CircularProgressProps) {\n const percent = Math.min(100, Math.max(0, max ? value / max * 100 : 0));\n return <div className={`hf-circular-progress ${className}`.trim()} style={{ '--hf-circle': `${percent * 3.6}deg`, '--hf-circle-size': `${size}px`, '--hf-circle-thickness': `${thickness}px` } as CSSProperties} role=\"progressbar\" aria-valuemin={0} aria-valuemax={max} aria-valuenow={value} {...props}><span><strong>{Math.round(percent)}%</strong>{label && <small>{label}</small>}</span></div>;\n}\n\nexport interface StepProgressProps extends HTMLAttributes<HTMLOListElement> { steps: readonly ReactNode[]; current: number }\nexport function StepProgress({ steps, current, className = '', ...props }: StepProgressProps) {\n return <ol className={`hf-step-progress ${className}`.trim()} {...props}>{steps.map((step, index) => <li key={index} className={index < current ? 'is-complete' : index === current ? 'is-current' : ''}><span>{index < current ? '✓' : index + 1}</span><small>{step}</small></li>)}</ol>;\n}\n\nexport interface ActivityIndicatorProps extends HTMLAttributes<HTMLSpanElement> { variant?: 'spinner' | 'dots' | 'radar' | 'wave'; label?: string; size?: 'sm' | 'md' | 'lg' }\nexport function ActivityIndicator({ variant = 'spinner', label = '正在加载', size = 'md', className = '', ...props }: ActivityIndicatorProps) {\n return <span className={`hf-activity hf-activity--${variant} hf-activity--${size} ${className}`.trim()} role=\"status\" aria-label={label} {...props}>{variant === 'dots' && <><i /><i /><i /></>}{variant === 'wave' && Array.from({ length: 5 }, (_, index) => <i key={index} />)}{variant === 'radar' && <i />}</span>;\n}\n\nexport interface SparklineProps extends HTMLAttributes<SVGSVGElement> { data: readonly number[]; width?: number; height?: number; label?: string; filled?: boolean }\nexport function Sparkline({ data, width = 160, height = 48, label = '趋势图', filled = true, ...props }: SparklineProps) {\n const min = Math.min(...data); const max = Math.max(...data); const range = max - min || 1;\n const points = data.map((value, index) => `${data.length === 1 ? width / 2 : index / (data.length - 1) * width},${height - ((value - min) / range * (height - 8) + 4)}`).join(' ');\n const area = `0,${height} ${points} ${width},${height}`;\n return <svg className=\"hf-sparkline\" viewBox={`0 0 ${width} ${height}`} role=\"img\" aria-label={label} {...props}>{filled && <polygon points={area} className=\"hf-sparkline__area\" />}<polyline points={points} className=\"hf-sparkline__line\" /></svg>;\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport interface TableColumn<T> { key: string; header: ReactNode; render?: (item: T, index: number) => ReactNode; align?: 'left' | 'center' | 'right'; width?: number | string; }\nexport interface TableProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> { columns: readonly TableColumn<T>[]; data: readonly T[]; rowKey: keyof T | ((item: T, index: number) => string | number); caption?: string; empty?: ReactNode; striped?: boolean; onRowClick?: (item: T, index: number) => void; }\nexport function Table<T extends object>({ columns, data, rowKey, caption, empty = '暂无数据', striped, onRowClick, className = '', ...props }: TableProps<T>) {\n const keyOf = (item: T, index: number) => typeof rowKey === 'function' ? rowKey(item, index) : String(item[rowKey]);\n return <div className={`hf-table-wrap ${className}`} {...props}><table className={`hf-table${striped ? ' hf-table--striped' : ''}`}>{caption && <caption>{caption}</caption>}<thead><tr>{columns.map((column) => <th key={column.key} style={{ textAlign: column.align, width: column.width }}>{column.header}</th>)}</tr></thead><tbody>{data.map((item, index) => <tr key={keyOf(item, index)} className={onRowClick ? 'is-clickable' : ''} onClick={() => onRowClick?.(item, index)} tabIndex={onRowClick ? 0 : undefined} onKeyDown={(event) => { if (onRowClick && (event.key === 'Enter' || event.key === ' ')) { event.preventDefault(); onRowClick(item, index); } }}>{columns.map((column) => <td key={column.key} style={{ textAlign: column.align }}>{column.render ? column.render(item, index) : String(item[column.key as keyof T] ?? '')}</td>)}</tr>)}{!data.length && <tr><td className=\"hf-table__empty\" colSpan={columns.length}>{empty}</td></tr>}</tbody></table></div>;\n}\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> { page: number; total: number; pageSize?: number; siblingCount?: number; onChange: (page: number) => void; }\nexport function Pagination({ page, total, pageSize = 10, siblingCount = 1, onChange, className = '', ...props }: PaginationProps) {\n const count = Math.max(1, Math.ceil(total / pageSize)); const current = Math.min(count, Math.max(1, page));\n const visible = Array.from({ length: count }, (_, i) => i + 1).filter((value) => value === 1 || value === count || Math.abs(value - current) <= siblingCount); const parts: (number | 'ellipsis')[] = [];\n visible.forEach((value, index) => { if (index && value - visible[index - 1]! > 1) parts.push('ellipsis'); parts.push(value); });\n return <nav className={`hf-pagination ${className}`} aria-label=\"分页\" {...props}><button disabled={current === 1} onClick={() => onChange(current - 1)} aria-label=\"上一页\"><Icon name=\"chevron-down\" size={16} className=\"hf-pagination__prev\" /></button>{parts.map((part, index) => part === 'ellipsis' ? <span key={`e-${index}`} aria-hidden=\"true\">…</span> : <button key={part} className={part === current ? 'is-active' : ''} aria-current={part === current ? 'page' : undefined} onClick={() => onChange(part)}>{part}</button>)}<button disabled={current === count} onClick={() => onChange(current + 1)} aria-label=\"下一页\"><Icon name=\"chevron-down\" size={16} className=\"hf-pagination__next\" /></button></nav>;\n}\n\nexport interface ListItem { key: string | number; title: ReactNode; description?: ReactNode; leading?: ReactNode; trailing?: ReactNode; }\nexport function List({ items, divided = true, className = '', ...props }: HTMLAttributes<HTMLUListElement> & { items: readonly ListItem[]; divided?: boolean }) { return <ul className={`hf-list${divided ? ' hf-list--divided' : ''} ${className}`} {...props}>{items.map((item) => <li key={item.key}>{item.leading && <span className=\"hf-list__leading\">{item.leading}</span>}<div><strong>{item.title}</strong>{item.description && <small>{item.description}</small>}</div>{item.trailing && <span className=\"hf-list__trailing\">{item.trailing}</span>}</li>)}</ul>; }\n\nexport interface DescriptionItem { key: string | number; label: ReactNode; value: ReactNode; span?: 1 | 2 | 3; }\nexport function Descriptions({ items, columns = 2, bordered, className = '', ...props }: HTMLAttributes<HTMLDListElement> & { items: readonly DescriptionItem[]; columns?: 1 | 2 | 3; bordered?: boolean }) { return <dl className={`hf-descriptions hf-descriptions--${columns}${bordered ? ' hf-descriptions--bordered' : ''} ${className}`} {...props}>{items.map((item) => <div key={item.key} style={{ gridColumn: `span ${Math.min(item.span ?? 1, columns)}` }}><dt>{item.label}</dt><dd>{item.value}</dd></div>)}</dl>; }\n","import type { ReactNode } from 'react';\nexport interface TimelineItem { key: string; title: ReactNode; description?: ReactNode; time?: ReactNode; status?: 'complete' | 'current' | 'upcoming' }\nexport function Timeline({ items, label = '时间轴' }: { items: readonly TimelineItem[]; label?: string }) { return <ol className=\"hf-timeline\" aria-label={label}>{items.map((item) => <li key={item.key} className={`hf-timeline--${item.status ?? 'upcoming'}`}><i aria-hidden=\"true\" /><div><strong>{item.title}</strong>{item.description && <p>{item.description}</p>}</div>{item.time && <time>{item.time}</time>}</li>)}</ol>; }\nexport interface InsightBoardProps { summary: ReactNode; trend: ReactNode; detail: ReactNode; heading?: ReactNode; filters?: ReactNode }\nexport function InsightBoard({ summary, trend, detail, heading, filters }: InsightBoardProps) { return <section className=\"hf-insight-board\">{(heading || filters) && <header><div>{heading}</div>{filters}</header>}<div className=\"hf-insight-board__summary\" aria-label=\"核心结果\">{summary}</div><div className=\"hf-insight-board__trend\" aria-label=\"变化趋势\">{trend}</div><div className=\"hf-insight-board__detail\" aria-label=\"明细与原因\">{detail}</div></section>; }\n","import type { ReactNode } from 'react';\nimport { Icon, type IconName } from '../foundations/Icon';\nexport function EmptyState({ icon = 'inbox', title, description, action, size = 'md' }: { icon?: IconName; title: ReactNode; description?: ReactNode; action?: ReactNode; size?: 'sm' | 'md' }) { return <div className={`hf-empty hf-empty--${size}`}><span className=\"hf-empty__icon\"><Icon name={icon} size={size === 'sm' ? 22 : 28} /></span><strong>{title}</strong>{description && <p>{description}</p>}{action && <div>{action}</div>}</div>; }\n","import { useMemo, useState, type ReactNode } from 'react';\n\nexport interface DataGridColumn<T> { key: string; header: ReactNode; render?: (item: T) => ReactNode; value?: (item: T) => string | number; sortable?: boolean; width?: string | number }\nexport interface DataGridProps<T> { columns: readonly DataGridColumn<T>[]; data: readonly T[]; rowKey: keyof T | ((item: T) => string); selectedKeys?: readonly string[]; onSelectionChange?: (keys: string[]) => void; empty?: ReactNode; caption?: string }\nexport function DataGrid<T extends object>({ columns, data, rowKey, selectedKeys = [], onSelectionChange, empty = '暂无数据', caption }: DataGridProps<T>) {\n const [sort, setSort] = useState<{ key: string; direction: 'asc' | 'desc' }>(); const keyOf = (item: T) => typeof rowKey === 'function' ? rowKey(item) : String(item[rowKey]);\n const rows = useMemo(() => { if (!sort) return [...data]; const column = columns.find((item) => item.key === sort.key); if (!column) return [...data]; return [...data].sort((a, b) => { const av = column.value?.(a) ?? String(a[column.key as keyof T] ?? ''); const bv = column.value?.(b) ?? String(b[column.key as keyof T] ?? ''); const compared = typeof av === 'number' && typeof bv === 'number' ? av - bv : String(av).localeCompare(String(bv), 'zh-CN'); return sort.direction === 'asc' ? compared : -compared; }); }, [columns, data, sort]);\n const all = data.length > 0 && data.every((item) => selectedKeys.includes(keyOf(item))); const changeAll = () => onSelectionChange?.(all ? [] : data.map(keyOf));\n return <div className=\"hf-data-grid\" onKeyDown={(event) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; const controls = [...event.currentTarget.querySelectorAll<HTMLElement>('button,input')]; const current = controls.indexOf(event.target as HTMLElement); if (current < 0) return; event.preventDefault(); const direction = event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -1 : 1; controls[(current + direction + controls.length) % controls.length]?.focus(); }}><table>\n {caption && <caption>{caption}</caption>}\n <thead><tr>\n {onSelectionChange && <th className=\"hf-data-grid__check\"><input type=\"checkbox\" aria-label=\"选择全部\" checked={all} onChange={changeAll} /></th>}\n {columns.map((column) => <th key={column.key} style={{ width: column.width }}>{column.sortable ? <button type=\"button\" onClick={() => setSort((current) => ({ key: column.key, direction: current?.key === column.key && current.direction === 'asc' ? 'desc' : 'asc' }))}>{column.header}<span aria-hidden=\"true\">{sort?.key === column.key ? (sort.direction === 'asc' ? '↑' : '↓') : '↕'}</span></button> : column.header}</th>)}\n </tr></thead>\n <tbody>{rows.map((item) => { const key = keyOf(item); return <tr key={key} className={selectedKeys.includes(key) ? 'is-selected' : ''}>{onSelectionChange && <td><input type=\"checkbox\" aria-label={`选择行 ${key}`} checked={selectedKeys.includes(key)} onChange={() => onSelectionChange(selectedKeys.includes(key) ? selectedKeys.filter((item) => item !== key) : [...selectedKeys, key])} /></td>}{columns.map((column) => <td key={column.key}>{column.render ? column.render(item) : String(item[column.key as keyof T] ?? '')}</td>)}</tr>; })}{!rows.length && <tr><td className=\"hf-data-grid__empty\" colSpan={columns.length + (onSelectionChange ? 1 : 0)}>{empty}</td></tr>}</tbody>\n </table></div>;\n}\n","import { useState, type ReactNode } from 'react';\nexport interface TreeNode { key: string; label: ReactNode; children?: readonly TreeNode[]; disabled?: boolean; icon?: ReactNode }\nexport interface TreeProps { nodes: readonly TreeNode[]; selectedKey?: string; onSelect?: (key: string) => void; defaultExpandedKeys?: readonly string[]; label?: string }\nexport function Tree({ nodes, selectedKey, onSelect, defaultExpandedKeys = [], label = '树形列表' }: TreeProps) { const [expanded, setExpanded] = useState<string[]>([...defaultExpandedKeys]); const render = (items: readonly TreeNode[], level: number): ReactNode => <ul role={level ? 'group' : 'tree'} aria-label={level ? undefined : label}>{items.map((node) => { const open = expanded.includes(node.key); const branch = Boolean(node.children?.length); return <li role=\"treeitem\" aria-level={level + 1} aria-expanded={branch ? open : undefined} aria-selected={node.key === selectedKey} key={node.key}><div className={node.key === selectedKey ? 'is-selected' : ''} style={{ paddingLeft: level * 18 + 8 }}>{branch ? <button type=\"button\" aria-label={open ? '收起' : '展开'} onClick={() => setExpanded((keys) => open ? keys.filter((key) => key !== node.key) : [...keys, node.key])}>{open ? '⌄' : '›'}</button> : <span />}{node.icon}<button type=\"button\" disabled={node.disabled} onClick={() => onSelect?.(node.key)}>{node.label}</button></div>{branch && open && render(node.children!, level + 1)}</li>; })}</ul>; return <div className=\"hf-tree\" onKeyDown={(event) => { const labels = [...event.currentTarget.querySelectorAll<HTMLButtonElement>('li[role=treeitem]>div>button:last-child:not(:disabled)')]; const current = labels.indexOf(event.target as HTMLButtonElement); if (current < 0) return; if (['ArrowDown','ArrowUp','Home','End'].includes(event.key)) { event.preventDefault(); const next = event.key === 'Home' ? 0 : event.key === 'End' ? labels.length - 1 : (current + (event.key === 'ArrowDown' ? 1 : -1) + labels.length) % labels.length; labels[next]?.focus(); } }}>{render(nodes, 0)}</div>; }\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface AuthLayoutProps {\n children: ReactNode;\n brand?: ReactNode;\n aside?: ReactNode;\n footer?: ReactNode;\n variant?: 'split' | 'card' | 'immersive' | 'step';\n backgroundImage?: string;\n currentStep?: number;\n steps?: number;\n}\n\nexport function AuthLayout({ children, brand, aside, footer, variant = 'card', backgroundImage, currentStep = 1, steps = 1 }: AuthLayoutProps) {\n const style = backgroundImage ? { '--hf-auth-image': `url(\"${backgroundImage}\")` } as CSSProperties : undefined;\n return <section className={`hf-auth hf-auth--${variant}`} style={style}>\n {brand && <header className=\"hf-auth__brand\">{brand}</header>}\n {aside && <aside className=\"hf-auth__aside\">{aside}</aside>}\n <main className=\"hf-auth__main\">\n {variant === 'step' && <div className=\"hf-auth__steps\" aria-label={`第 ${currentStep} 步,共 ${steps} 步`}>{Array.from({ length: steps }, (_, index) => <span key={index} className={index < currentStep ? 'is-active' : ''} />)}</div>}\n <div className=\"hf-auth__card\">{children}</div>\n {footer && <footer>{footer}</footer>}\n </main>\n </section>;\n}\n","import type { ReactNode } from 'react';\n\nexport interface HeroProps {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n visual?: ReactNode;\n proof?: ReactNode;\n align?: 'left' | 'center';\n kind?: 'product' | 'personal' | 'event' | 'commerce';\n}\n\nexport function Hero({ eyebrow, title, description, primaryAction, secondaryAction, visual, proof, align = 'left', kind = 'product' }: HeroProps) {\n return <section className={`hf-hero hf-hero--${align} hf-hero--${kind}`}>\n <div className=\"hf-hero__content\">{eyebrow && <div className=\"hf-hero__eyebrow\">{eyebrow}</div>}<h1>{title}</h1>{description && <p>{description}</p>}{(primaryAction || secondaryAction) && <div className=\"hf-hero__actions\">{primaryAction}{secondaryAction}</div>}{proof && <div className=\"hf-hero__proof\">{proof}</div>}</div>\n {visual && <div className=\"hf-hero__visual\">{visual}</div>}\n </section>;\n}\n","import { useState, type PointerEvent, type ReactNode } from 'react';\nexport interface ResizablePanelProps { primary: ReactNode; secondary: ReactNode; defaultSize?: number; minSize?: number; maxSize?: number; direction?: 'horizontal' | 'vertical'; onResize?: (size: number) => void }\nexport function ResizablePanel({ primary, secondary, defaultSize = 50, minSize = 20, maxSize = 80, direction = 'horizontal', onResize }: ResizablePanelProps) { const [size, setSize] = useState(defaultSize); const start = (event: PointerEvent<HTMLDivElement>) => { const root = event.currentTarget.parentElement!; event.currentTarget.setPointerCapture(event.pointerId); const move = (next: globalThis.PointerEvent) => { const rect = root.getBoundingClientRect(); const raw = direction === 'horizontal' ? (next.clientX - rect.left) / rect.width * 100 : (next.clientY - rect.top) / rect.height * 100; const value = Math.min(maxSize, Math.max(minSize, raw)); setSize(value); onResize?.(value); }; const end = () => { document.removeEventListener('pointermove', move); document.removeEventListener('pointerup', end); }; document.addEventListener('pointermove', move); document.addEventListener('pointerup', end); }; return <div className={`hf-resizable hf-resizable--${direction}`}><div style={{ flexBasis: `${size}%` }}>{primary}</div><div className=\"hf-resizable__handle\" role=\"separator\" aria-orientation={direction} aria-valuemin={minSize} aria-valuemax={maxSize} aria-valuenow={Math.round(size)} tabIndex={0} onPointerDown={start} onKeyDown={(event) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; event.preventDefault(); const grow = event.key === 'ArrowRight' || event.key === 'ArrowDown'; const value = Math.min(maxSize, Math.max(minSize, size + (grow ? 2 : -2))); setSize(value); onResize?.(value); }} /><div>{secondary}</div></div>; }\n","import type { ReactNode } from 'react';\nimport { Notification, type NotificationProps } from './Essentials';\nexport interface NotificationItem extends Omit<NotificationProps, 'onClose'> { key: string; content?: ReactNode }\nexport interface NotificationCenterProps { items: readonly NotificationItem[]; onRead?: (key: string) => void; onDismiss?: (key: string) => void; onReadAll?: () => void; empty?: ReactNode; title?: ReactNode }\nexport function NotificationCenter({ items, onRead, onDismiss, onReadAll, empty = '暂无通知', title = '通知中心' }: NotificationCenterProps) { const unread = items.filter((item) => item.unread).length; return <section className=\"hf-notification-center\"><header><div><strong>{title}</strong>{unread > 0 && <span>{unread}</span>}</div>{unread > 0 && onReadAll && <button type=\"button\" onClick={onReadAll}>全部已读</button>}</header><div>{items.length ? items.map(({ key, content, ...item }) => <div key={key} onClick={() => item.unread && onRead?.(key)}><Notification {...item} onClose={onDismiss ? () => onDismiss(key) : undefined}>{content}</Notification></div>) : <p className=\"hf-notification-center__empty\">{empty}</p>}</div></section>; }\n","import { useState, type ReactNode } from 'react';\nexport interface VirtualListProps<T> { items: readonly T[]; itemHeight: number; height: number; renderItem: (item: T, index: number) => ReactNode; itemKey: (item: T, index: number) => string | number; overscan?: number; label?: string }\nexport function VirtualList<T>({ items, itemHeight, height, renderItem, itemKey, overscan = 3, label = '虚拟列表' }: VirtualListProps<T>) { const [scrollTop, setScrollTop] = useState(0); const start = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan); const end = Math.min(items.length, Math.ceil((scrollTop + height) / itemHeight) + overscan); return <div className=\"hf-virtual-list\" role=\"list\" aria-label={label} style={{ height }} onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}><div style={{ height: items.length * itemHeight, position: 'relative' }}>{items.slice(start, end).map((item, offset) => { const index = start + offset; return <div role=\"listitem\" key={itemKey(item, index)} style={{ height: itemHeight, left: 0, position: 'absolute', right: 0, top: index * itemHeight }}>{renderItem(item, index)}</div>; })}</div></div>; }\n","import { useState, type ReactNode } from 'react';\n\nexport interface JsonViewerProps { data: unknown; name?: string; defaultExpanded?: boolean; maxDepth?: number }\nfunction JsonNode({ name, value, depth, defaultExpanded, maxDepth }: { name?: string; value: unknown; depth: number; defaultExpanded: boolean; maxDepth: number }) { const complex = value !== null && typeof value === 'object'; const [open, setOpen] = useState(defaultExpanded && depth < maxDepth); if (!complex) return <div className=\"hf-json-viewer__row\"><span>{name !== undefined && `${name}: `}</span><code className={`is-${value === null ? 'null' : typeof value}`}>{value === null ? 'null' : JSON.stringify(value)}</code></div>; const entries = Object.entries(value as Record<string, unknown>); return <div className=\"hf-json-viewer__node\"><button type=\"button\" aria-expanded={open} onClick={() => setOpen(!open)}><span>{open ? '⌄' : '›'}</span><strong>{name ?? (Array.isArray(value) ? 'Array' : 'Object')}</strong><small>{Array.isArray(value) ? `[${entries.length}]` : `{${entries.length}}`}</small></button>{open && <div>{entries.map(([key, item]) => <JsonNode key={key} name={key} value={item} depth={depth + 1} defaultExpanded={defaultExpanded} maxDepth={maxDepth} />)}</div>}</div>; }\nexport function JsonViewer({ data, name, defaultExpanded = true, maxDepth = 2 }: JsonViewerProps) { return <div className=\"hf-json-viewer\" role=\"tree\" aria-label={name ?? 'JSON 查看器'}><JsonNode name={name} value={data} depth={0} defaultExpanded={defaultExpanded} maxDepth={maxDepth} /></div>; }\n\nexport interface DiffViewerProps { before: string; after: string; beforeLabel?: string; afterLabel?: string; mode?: 'split' | 'unified' }\ntype DiffLine = { kind: 'same' | 'add' | 'remove'; left?: string; right?: string; leftNo?: number; rightNo?: number };\nfunction compareLines(before: string, after: string): DiffLine[] { const a = before.split('\\n'), b = after.split('\\n'), matrix = Array.from({ length: a.length + 1 }, () => Array<number>(b.length + 1).fill(0)); for (let i = a.length - 1; i >= 0; i--) for (let j = b.length - 1; j >= 0; j--) matrix[i]![j] = a[i] === b[j] ? matrix[i + 1]![j + 1]! + 1 : Math.max(matrix[i + 1]![j]!, matrix[i]![j + 1]!); const rows: DiffLine[] = []; let i = 0, j = 0, leftNo = 1, rightNo = 1; while (i < a.length || j < b.length) { if (i < a.length && j < b.length && a[i] === b[j]) { rows.push({ kind: 'same', left: a[i++], right: b[j++], leftNo: leftNo++, rightNo: rightNo++ }); } else if (j < b.length && (i === a.length || matrix[i]![j + 1]! >= matrix[i + 1]![j]!)) { rows.push({ kind: 'add', right: b[j++], rightNo: rightNo++ }); } else { rows.push({ kind: 'remove', left: a[i++], leftNo: leftNo++ }); } } return rows; }\nfunction DiffCell({ number, marker, children }: { number?: number; marker: string; children?: ReactNode }) { return <div className=\"hf-diff-viewer__cell\"><span>{number ?? ''}</span><i>{marker}</i><code>{children ?? ''}</code></div>; }\nexport function DiffViewer({ before, after, beforeLabel = '修改前', afterLabel = '修改后', mode = 'split' }: DiffViewerProps) { const rows = compareLines(before, after); return <div className={`hf-diff-viewer hf-diff-viewer--${mode}`}><header><strong>{beforeLabel}</strong>{mode === 'split' && <strong>{afterLabel}</strong>}</header><div>{rows.map((row, index) => mode === 'split' ? <div className={`is-${row.kind}`} key={index}><DiffCell number={row.leftNo} marker={row.kind === 'remove' ? '−' : ' '}>{row.left}</DiffCell><DiffCell number={row.rightNo} marker={row.kind === 'add' ? '+' : ' '}>{row.right}</DiffCell></div> : <div className={`is-${row.kind}`} key={index}><DiffCell number={row.leftNo ?? row.rightNo} marker={row.kind === 'add' ? '+' : row.kind === 'remove' ? '−' : ' '}>{row.kind === 'add' ? row.right : row.left}</DiffCell></div>)}</div></div>; }\n","export interface QueryField { key: string; label: string; type?: 'text' | 'number' | 'date'; operators?: readonly QueryOperator[] }\nexport interface QueryOperator { value: string; label: string }\nexport interface QueryRule { id: string; field: string; operator: string; value: string }\nexport interface QueryBuilderProps { fields: readonly QueryField[]; rules: readonly QueryRule[]; onChange: (rules: QueryRule[]) => void; conjunction?: 'and' | 'or'; onConjunctionChange?: (value: 'and' | 'or') => void; disabled?: boolean }\nconst defaultOperators: readonly QueryOperator[] = [{ value: 'equals', label: '等于' }, { value: 'notEquals', label: '不等于' }, { value: 'contains', label: '包含' }];\nexport function QueryBuilder({ fields, rules, onChange, conjunction = 'and', onConjunctionChange, disabled }: QueryBuilderProps) { const update = (id: string, patch: Partial<QueryRule>) => onChange(rules.map((rule) => rule.id === id ? { ...rule, ...patch } : rule)); const add = () => { const field = fields[0]; if (!field) return; const operator = (field.operators ?? defaultOperators)[0]?.value ?? 'equals'; onChange([...rules, { id: `rule-${Date.now()}`, field: field.key, operator, value: '' }]); }; return <div className=\"hf-query-builder\"><header><strong>满足</strong><select aria-label=\"条件关系\" value={conjunction} disabled={disabled} onChange={(event) => onConjunctionChange?.(event.target.value as 'and' | 'or')}><option value=\"and\">全部条件</option><option value=\"or\">任一条件</option></select></header><div>{rules.map((rule, index) => { const field = fields.find((item) => item.key === rule.field) ?? fields[0]; const operators = field?.operators ?? defaultOperators; return <div className=\"hf-query-builder__rule\" key={rule.id}><span>{index + 1}</span><select aria-label={`条件 ${index + 1} 字段`} value={rule.field} disabled={disabled} onChange={(event) => { const next = fields.find((item) => item.key === event.target.value)!; update(rule.id, { field: next.key, operator: (next.operators ?? defaultOperators)[0]?.value ?? 'equals', value: '' }); }}>{fields.map((item) => <option key={item.key} value={item.key}>{item.label}</option>)}</select><select aria-label={`条件 ${index + 1} 运算符`} value={rule.operator} disabled={disabled} onChange={(event) => update(rule.id, { operator: event.target.value })}>{operators.map((item) => <option key={item.value} value={item.value}>{item.label}</option>)}</select><input aria-label={`条件 ${index + 1} 值`} type={field?.type ?? 'text'} value={rule.value} disabled={disabled} onChange={(event) => update(rule.id, { value: event.target.value })} /><button type=\"button\" aria-label={`删除条件 ${index + 1}`} disabled={disabled} onClick={() => onChange(rules.filter((item) => item.id !== rule.id))}>×</button></div>; })}</div><button type=\"button\" className=\"hf-query-builder__add\" disabled={disabled || !fields.length} onClick={add}>+ 添加条件</button></div>; }\n","import { useMemo, type DragEvent, type ReactNode } from 'react';\n\nexport interface FlowNode { id: string; label: ReactNode; x: number; y: number; status?: 'default' | 'active' | 'success' | 'warning'; description?: ReactNode }\nexport interface FlowEdge { id?: string; from: string; to: string; label?: string }\nexport interface FlowCanvasProps { nodes: readonly FlowNode[]; edges: readonly FlowEdge[]; width?: number; height?: number; selectedId?: string; onSelect?: (id: string) => void; empty?: ReactNode }\nexport function FlowCanvas({ nodes, edges, width = 900, height = 420, selectedId, onSelect, empty = '暂无流程节点' }: FlowCanvasProps) { const map = new Map(nodes.map((node) => [node.id, node])); if (!nodes.length) return <div className=\"hf-flow-canvas hf-flow-canvas__empty\">{empty}</div>; return <div className=\"hf-flow-canvas\" role=\"group\" aria-label=\"流程画布\"><div style={{ width, height }}><svg viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\">{edges.map((edge, index) => { const from = map.get(edge.from), to = map.get(edge.to); if (!from || !to) return null; const x1 = from.x + 82, y1 = from.y + 28, x2 = to.x, y2 = to.y + 28, bend = Math.max(30, Math.abs(x2 - x1) / 2); return <g key={edge.id ?? index}><path d={`M${x1} ${y1} C${x1 + bend} ${y1},${x2 - bend} ${y2},${x2} ${y2}`} /><circle cx={x2} cy={y2} r=\"3\" />{edge.label && <text x={(x1 + x2) / 2} y={(y1 + y2) / 2 - 8}>{edge.label}</text>}</g>; })}</svg>{nodes.map((node) => <button type=\"button\" key={node.id} className={`hf-flow-canvas__node is-${node.status ?? 'default'}${selectedId === node.id ? ' is-selected' : ''}`} style={{ left: node.x, top: node.y }} aria-pressed={selectedId === node.id} onClick={() => onSelect?.(node.id)}><strong>{node.label}</strong>{node.description && <small>{node.description}</small>}</button>)}</div></div>; }\n\nexport interface KanbanCard { id: string; title: ReactNode; description?: ReactNode; meta?: ReactNode; tags?: readonly string[] }\nexport interface KanbanColumn { id: string; title: ReactNode; cards: readonly KanbanCard[]; limit?: number; accent?: string }\nexport interface KanbanBoardProps { columns: readonly KanbanColumn[]; onMove?: (cardId: string, fromColumnId: string, toColumnId: string) => void; onCardClick?: (cardId: string, columnId: string) => void; empty?: ReactNode }\nexport function KanbanBoard({ columns, onMove, onCardClick, empty = '暂无看板列' }: KanbanBoardProps) { const drop = (event: DragEvent, target: string) => { event.preventDefault(); const card = event.dataTransfer.getData('application/x-hf-card'), from = event.dataTransfer.getData('application/x-hf-column'); if (card && from && from !== target) onMove?.(card, from, target); }; if (!columns.length) return <div className=\"hf-kanban-board__empty\">{empty}</div>; return <div className=\"hf-kanban-board\" aria-label=\"看板\">{columns.map((column) => <section key={column.id} style={{ '--hf-kanban-accent': column.accent } as React.CSSProperties} onDragOver={(event) => event.preventDefault()} onDrop={(event) => drop(event, column.id)}><header><strong>{column.title}</strong><span>{column.cards.length}{column.limit ? ` / ${column.limit}` : ''}</span></header><div>{column.cards.map((card) => <button type=\"button\" draggable={Boolean(onMove)} className=\"hf-kanban-card\" key={card.id} onDragStart={(event) => { event.dataTransfer.setData('application/x-hf-card', card.id); event.dataTransfer.setData('application/x-hf-column', column.id); }} onClick={() => onCardClick?.(card.id, column.id)}><strong>{card.title}</strong>{card.description && <p>{card.description}</p>}{card.tags?.length ? <span>{card.tags.map((tag) => <i key={tag}>{tag}</i>)}</span> : null}{card.meta && <small>{card.meta}</small>}</button>)}</div></section>)}</div>; }\n\nexport interface GanttTask { id: string; label: ReactNode; start: string | Date; end: string | Date; progress?: number; group?: string; color?: string }\nexport interface GanttChartProps { tasks: readonly GanttTask[]; start?: string | Date; end?: string | Date; onTaskClick?: (id: string) => void; empty?: ReactNode }\nconst day = 86400000; const toTime = (value: string | Date) => new Date(value).setHours(0, 0, 0, 0);\nexport function GanttChart({ tasks, start, end, onTaskClick, empty = '暂无排期任务' }: GanttChartProps) { const range = useMemo(() => { const starts = tasks.map((task) => toTime(task.start)), ends = tasks.map((task) => toTime(task.end)); const from = start ? toTime(start) : Math.min(...starts), to = end ? toTime(end) : Math.max(...ends); return { from, days: Math.max(1, Math.round((to - from) / day) + 1) }; }, [tasks, start, end]); if (!tasks.length) return <div className=\"hf-gantt-chart__empty\">{empty}</div>; return <div className=\"hf-gantt-chart\"><header><strong>任务</strong><div>{Array.from({ length: Math.min(range.days, 31) }, (_, index) => <span key={index}>{new Date(range.from + index * day).getDate()}</span>)}</div></header>{tasks.map((task) => { const offset = Math.max(0, (toTime(task.start) - range.from) / day), length = Math.max(1, (toTime(task.end) - toTime(task.start)) / day + 1); return <div className=\"hf-gantt-chart__row\" key={task.id}><span><strong>{task.label}</strong>{task.group && <small>{task.group}</small>}</span><div><button type=\"button\" style={{ left: `${offset / range.days * 100}%`, width: `${length / range.days * 100}%`, '--hf-gantt-color': task.color } as React.CSSProperties} onClick={() => onTaskClick?.(task.id)}><i style={{ width: `${Math.max(0, Math.min(100, task.progress ?? 0))}%` }} /><span>{task.progress ?? 0}%</span></button></div></div>; })}</div>; }\n\nexport interface ChartLegendItem { label: ReactNode; color: string; value?: ReactNode }\nexport interface ChartContainerProps { title?: ReactNode; description?: ReactNode; actions?: ReactNode; legend?: readonly ChartLegendItem[]; children: ReactNode; height?: number; loading?: boolean; empty?: boolean; emptyContent?: ReactNode }\nexport function ChartContainer({ title, description, actions, legend, children, height = 320, loading, empty, emptyContent = '暂无图表数据' }: ChartContainerProps) { return <section className=\"hf-chart-container\"><header><div>{title && <strong>{title}</strong>}{description && <p>{description}</p>}</div>{actions}</header>{legend?.length ? <div className=\"hf-chart-container__legend\">{legend.map((item, index) => <span key={index}><i style={{ background: item.color }} />{item.label}{item.value && <strong>{item.value}</strong>}</span>)}</div> : null}<div className=\"hf-chart-container__body\" style={{ height }}>{loading ? <div className=\"hf-chart-container__state\"><span className=\"hf-spinner\" />正在加载图表</div> : empty ? <div className=\"hf-chart-container__state\">{emptyContent}</div> : children}</div></section>; }\n\nexport interface PivotValue<T> { key: string; label: ReactNode; value: (item: T) => number; aggregate?: 'sum' | 'average' | 'count'; format?: (value: number) => ReactNode }\nexport interface PivotTableProps<T> { data: readonly T[]; row: (item: T) => string; column: (item: T) => string; values: readonly PivotValue<T>[]; rowLabel?: ReactNode; showTotals?: boolean; empty?: ReactNode }\nexport function PivotTable<T>({ data, row, column, values, rowLabel = '项目', showTotals = true, empty = '暂无透视数据' }: PivotTableProps<T>) { const rows = [...new Set(data.map(row))], columns = [...new Set(data.map(column))]; const calculate = (items: readonly T[], metric: PivotValue<T>) => { if (metric.aggregate === 'count') return items.length; const sum = items.reduce((total, item) => total + metric.value(item), 0); return metric.aggregate === 'average' ? (items.length ? sum / items.length : 0) : sum; }; if (!data.length || !values.length) return <div className=\"hf-pivot-table__empty\">{empty}</div>; return <div className=\"hf-pivot-table\"><table><thead><tr><th rowSpan={2}>{rowLabel}</th>{columns.map((item) => <th colSpan={values.length} key={item}>{item}</th>)}{showTotals && <th colSpan={values.length}>合计</th>}</tr><tr>{[...columns, ...(showTotals ? ['__total'] : [])].flatMap((col) => values.map((metric) => <th key={`${col}-${metric.key}`}>{metric.label}</th>))}</tr></thead><tbody>{rows.map((rowName) => <tr key={rowName}><th>{rowName}</th>{[...columns, ...(showTotals ? ['__total'] : [])].flatMap((columnName) => values.map((metric) => { const items = data.filter((item) => row(item) === rowName && (columnName === '__total' || column(item) === columnName)); const result = calculate(items, metric); return <td key={`${columnName}-${metric.key}`}>{metric.format?.(result) ?? result}</td>; }))}</tr>)}</tbody></table></div>; }\n","export interface FilterOption { value: string; label: string }\nexport interface FilterField { key: string; label: string; options?: readonly FilterOption[]; type?: 'text' | 'number' | 'date' }\nexport interface FilterValue { id: string; field: string; value: string }\nexport interface FilterBuilderProps { fields: readonly FilterField[]; value: readonly FilterValue[]; onChange: (value: FilterValue[]) => void; disabled?: boolean; addLabel?: string }\nexport function FilterBuilder({ fields, value, onChange, disabled, addLabel = '添加筛选' }: FilterBuilderProps) { const add = () => { const field = fields.find((item) => !value.some((filter) => filter.field === item.key)) ?? fields[0]; if (field) onChange([...value, { id: `filter-${Date.now()}`, field: field.key, value: '' }]); }; const update = (id: string, patch: Partial<FilterValue>) => onChange(value.map((item) => item.id === id ? { ...item, ...patch } : item)); return <div className=\"hf-filter-builder\" role=\"group\" aria-label=\"筛选条件\"><div>{value.map((filter, index) => { const field = fields.find((item) => item.key === filter.field) ?? fields[0]; return <div className=\"hf-filter-builder__item\" key={filter.id}><select aria-label={`筛选 ${index + 1} 字段`} value={filter.field} disabled={disabled} onChange={(event) => update(filter.id, { field: event.target.value, value: '' })}>{fields.map((item) => <option value={item.key} key={item.key}>{item.label}</option>)}</select>{field?.options ? <select aria-label={`筛选 ${index + 1} 值`} value={filter.value} disabled={disabled} onChange={(event) => update(filter.id, { value: event.target.value })}><option value=\"\">请选择</option>{field.options.map((item) => <option value={item.value} key={item.value}>{item.label}</option>)}</select> : <input aria-label={`筛选 ${index + 1} 值`} type={field?.type ?? 'text'} value={filter.value} disabled={disabled} onChange={(event) => update(filter.id, { value: event.target.value })} />}<button type=\"button\" aria-label={`删除筛选 ${index + 1}`} disabled={disabled} onClick={() => onChange(value.filter((item) => item.id !== filter.id))}>×</button></div>; })}</div><button type=\"button\" className=\"hf-filter-builder__add\" disabled={disabled || !fields.length} onClick={add}>+ {addLabel}</button>{value.length > 0 && <button type=\"button\" className=\"hf-filter-builder__clear\" disabled={disabled} onClick={() => onChange([])}>清空</button>}</div>; }\n"],"mappings":"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","names":["jsx","Button","jsx","jsx","jsxs","forwardRef","jsx","jsxs","Input","forwardRef","jsx","jsxs","Switch","useId","jsx","jsxs","jsx","jsxs","useId","jsx","jsxs","useId","useEffect","createPortal","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","forwardRef","jsx","IconButton","useState","jsx","jsxs","useState","useEffect","useRef","useState","jsx","jsxs","useState","jsx","jsxs","useMemo","useState","jsx","jsxs","useMemo","Tag","useState","useState","jsx","jsxs","useState","useMemo","useRef","useState","Fragment","jsx","jsxs","useState","useRef","useMemo","jsx","jsxs","day","jsx","Tag","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","useId","useState","jsx","jsxs","useState","useId","useEffect","useState","jsx","useEffect","useState","jsx","jsxs","useId","jsx","jsxs","jsx","jsxs","useEffect","useMemo","useState","createPortal","jsx","jsxs","useState","useMemo","useEffect","createPortal","jsx","jsxs","jsx","jsx","jsxs","forwardRef","useEffect","useId","useRef","useState","jsx","jsxs","forwardRef","Select","useId","useState","useRef","useEffect","useId","useState","jsx","jsxs","useState","useId","useId","jsx","jsxs","useState","jsx","useState","forwardRef","useId","jsx","jsxs","Textarea","forwardRef","useEffect","useRef","jsx","jsxs","Checkbox","Radio","useState","jsx","jsxs","useState","day","jsx","jsxs","useId","useRef","useState","jsx","jsxs","useId","useRef","useState","useId","useMemo","useState","jsx","jsxs","useId","useState","useMemo","useId","jsx","jsxs","useState","jsx","jsxs","useId","createPortal","jsx","jsxs","useId","createPortal","cloneElement","useId","useState","jsx","jsxs","useState","useId","cloneElement","cloneElement","useId","useState","jsx","jsxs","useState","useId","cloneElement","cloneElement","isValidElement","useState","jsx","jsxs","useState","isValidElement","cloneElement","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useMemo","useState","jsx","jsxs","item","useState","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","useState","jsx","useState","jsx","jsxs","i","j","jsx","jsxs","useMemo","jsx","jsxs","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme/tokens.ts","../src/theme/ThemeProvider.tsx","../src/components/Button.tsx","../src/components/SplitButton.tsx","../src/foundations/Icon.tsx","../src/overlays/useOverlay.ts","../src/components/Input.tsx","../src/components/Switch.tsx","../src/components/SegmentedControl.tsx","../src/components/Card.tsx","../src/components/Modal.tsx","../src/components/Toast.tsx","../src/components/Content.tsx","../src/components/Accordion.tsx","../src/components/Dropdown.tsx","../src/components/IconButton.tsx","../src/components/AdvancedUtility.tsx","../src/components/Editors.tsx","../src/components/AIInteraction.tsx","../src/components/AIAdvanced.tsx","../src/components/Collaboration.tsx","../src/components/Assets.tsx","../src/forms/Select.tsx","../src/components/Scheduling.tsx","../src/foundations/Typography.tsx","../src/navigation/types.ts","../src/navigation/FloatingNav.tsx","../src/navigation/Sidebar.tsx","../src/navigation/Breadcrumb.tsx","../src/navigation/Menu.tsx","../src/navigation/MobileNavigation.tsx","../src/navigation/Scrollspy.tsx","../src/navigation/ShrinkNav.tsx","../src/navigation/Tabs.tsx","../src/navigation/Steps.tsx","../src/navigation/CommandPalette.tsx","../src/layout/Layout.tsx","../src/layout/Skeleton.tsx","../src/feedback/Loading.tsx","../src/forms/MultiSelect.tsx","../src/forms/ChoiceGroup.tsx","../src/forms/ValidatedInput.tsx","../src/forms/Textarea.tsx","../src/forms/Choice.tsx","../src/forms/Advanced.tsx","../src/forms/Form.tsx","../src/forms/Upload.tsx","../src/forms/Combobox.tsx","../src/forms/NumberInput.tsx","../src/forms/NextBatch.tsx","../src/feedback/Drawer.tsx","../src/feedback/Popover.tsx","../src/feedback/Status.tsx","../src/feedback/Essentials.tsx","../src/data-display/DataDisplay.tsx","../src/data-display/Collections.tsx","../src/data-display/Insight.tsx","../src/data-display/EmptyState.tsx","../src/data-display/DataGrid.tsx","../src/data-display/Tree.tsx","../src/layout/AuthLayout.tsx","../src/layout/Hero.tsx","../src/layout/ResizablePanel.tsx","../src/feedback/NotificationCenter.tsx","../src/data-display/VirtualList.tsx","../src/data-display/DeveloperView.tsx","../src/forms/QueryBuilder.tsx","../src/data-display/WorkflowViews.tsx","../src/forms/FilterBuilder.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nexport interface ThemeTokens {\n colorPrimary: string;\n colorPrimaryHover: string;\n colorBackground: string;\n colorSurface: string;\n colorText: string;\n colorTextMuted: string;\n colorBorder: string;\n radiusControl?: string;\n radiusPanel?: string;\n radiusOverlay?: string;\n shadowPopover?: string;\n shadowModal?: string;\n /** @deprecated COMPAT: 兼容现有消费者;项目内引用清零并进入下一主版本后移除。请改用 radiusControl 或 radiusPanel。 */\n radiusMd: string;\n /** @deprecated COMPAT: 兼容现有消费者;项目内引用清零并进入下一主版本后移除。请改用 radiusPanel 或 radiusOverlay。 */\n radiusLg: string;\n /** @deprecated COMPAT: 兼容现有消费者;项目内引用清零并进入下一主版本后移除。请改用 shadowPopover 或 shadowModal。 */\n shadowElevated: string;\n motionDuration: string;\n}\n\nexport const defaultTheme: ThemeTokens = {\n colorPrimary: '#0a7cff',\n colorPrimaryHover: '#006fe8',\n colorBackground: '#f5faff',\n colorSurface: '#ffffff',\n colorText: '#142033',\n colorTextMuted: '#66758c',\n colorBorder: '#dce9f7',\n radiusControl: '6px',\n radiusPanel: '8px',\n radiusOverlay: '10px',\n shadowPopover: '0 8px 24px rgba(41, 106, 168, 0.12)',\n shadowModal: '0 18px 48px rgba(41, 106, 168, 0.16)',\n radiusMd: '14px',\n radiusLg: '24px',\n shadowElevated: '0 18px 48px rgba(41, 106, 168, 0.16)',\n motionDuration: '180ms',\n};\nexport const darkTheme: ThemeTokens = {\n ...defaultTheme,\n colorPrimary: '#58a9ff',\n colorPrimaryHover: '#7cbbff',\n colorBackground: '#0d1724',\n colorSurface: '#152337',\n colorText: '#f4f8fc',\n colorTextMuted: '#a9bad0',\n colorBorder: '#30445b',\n shadowPopover: '0 8px 24px rgba(0, 0, 0, 0.32)',\n shadowModal: '0 20px 54px rgba(0, 0, 0, 0.46)',\n shadowElevated: '0 20px 54px rgba(0, 0, 0, 0.46)',\n};\nexport const highContrastTheme: ThemeTokens = {\n ...defaultTheme,\n colorPrimary: '#005fcc',\n colorPrimaryHover: '#004a9f',\n colorBackground: '#ffffff',\n colorSurface: '#ffffff',\n colorText: '#000000',\n colorTextMuted: '#303030',\n colorBorder: '#000000',\n shadowPopover: '0 0 0 2px #000000',\n shadowModal: '0 0 0 2px #000000',\n shadowElevated: '0 0 0 2px #000000',\n motionDuration: '0ms',\n};\n\nconst tokenVariables: Record<keyof ThemeTokens, string> = {\n colorPrimary: '--hf-color-primary',\n colorPrimaryHover: '--hf-color-primary-hover',\n colorBackground: '--hf-color-background',\n colorSurface: '--hf-color-surface',\n colorText: '--hf-color-text',\n colorTextMuted: '--hf-color-text-muted',\n colorBorder: '--hf-color-border',\n radiusControl: '--hf-radius-control',\n radiusPanel: '--hf-radius-panel',\n radiusOverlay: '--hf-radius-overlay',\n shadowPopover: '--hf-shadow-popover',\n shadowModal: '--hf-shadow-modal',\n radiusMd: '--hf-radius-md',\n radiusLg: '--hf-radius-lg',\n shadowElevated: '--hf-shadow-elevated',\n motionDuration: '--hf-motion-duration',\n};\n\nexport function tokensToStyle(tokens: Partial<ThemeTokens>): CSSProperties {\n return Object.fromEntries(\n Object.entries(tokens).map(([key, value]) => [tokenVariables[key as keyof ThemeTokens], value]),\n ) as CSSProperties;\n}\n","import type { HTMLAttributes, PropsWithChildren } from 'react';\nimport { darkTheme, defaultTheme, highContrastTheme, tokensToStyle, type ThemeTokens } from './tokens';\n\nexport interface ThemeProviderProps extends HTMLAttributes<HTMLDivElement> {\n tokens?: Partial<ThemeTokens>;\n mode?: 'light' | 'dark' | 'high-contrast';\n}\n\nexport function ThemeProvider({ children, tokens, mode = 'light', className = '', style, ...props }: PropsWithChildren<ThemeProviderProps>) {\n const mergedTokens = { ...(mode === 'dark' ? darkTheme : mode === 'high-contrast' ? highContrastTheme : defaultTheme), ...tokens };\n return (\n <div\n className={`hf-theme hf-theme--${mode} ${className}`.trim()}\n style={{ ...tokensToStyle(mergedTokens), ...style }}\n {...props}\n >\n {children}\n </div>\n );\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'quiet' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n shape?: 'rounded' | 'pill' | 'square';\n fullWidth?: boolean;\n loading?: boolean;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n iconOnly?: boolean;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n { children, className = '', variant = 'primary', size = 'md', shape = 'rounded', fullWidth = false, loading = false, leadingIcon, trailingIcon, iconOnly = false, disabled, ...props },\n ref,\n) {\n return (\n <button\n ref={ref}\n className={`hf-button hf-button--${variant} hf-button--${size} hf-button--${shape} ${fullWidth ? 'hf-button--full' : ''} ${iconOnly ? 'hf-button--icon' : ''} ${className}`.trim()}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? <span className=\"hf-spinner\" aria-hidden=\"true\" /> : leadingIcon}\n {!iconOnly && <span>{loading ? '处理中' : children}</span>}\n {!loading && trailingIcon}\n </button>\n );\n});\n","import { useState, type ReactNode } from 'react';\nimport { Button, type ButtonProps } from './Button';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface SplitButtonOption { key: string; label: ReactNode; disabled?: boolean; danger?: boolean }\nexport interface SplitButtonProps extends Pick<ButtonProps, 'variant' | 'size' | 'disabled'> { label: ReactNode; options: readonly SplitButtonOption[]; onPrimaryAction: () => void; onOptionSelect: (key: string) => void }\nexport function SplitButton({ label, options, onPrimaryAction, onOptionSelect, variant = 'primary', size = 'md', disabled }: SplitButtonProps) {\n const [open, setOpen] = useState(false); const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div className=\"hf-split-button\" ref={ref}><Button variant={variant} size={size} shape=\"rounded\" disabled={disabled} onClick={onPrimaryAction}>{label}</Button><Button variant={variant} size={size} shape=\"rounded\" disabled={disabled} iconOnly leadingIcon={<Icon name=\"chevron-down\" size={16} />} aria-label=\"更多操作\" aria-expanded={open} onClick={() => setOpen(!open)} />{open && <div className=\"hf-split-button__menu\" role=\"menu\">{options.map((option) => <button role=\"menuitem\" type=\"button\" key={option.key} disabled={option.disabled} className={option.danger ? 'is-danger' : ''} onClick={() => { onOptionSelect(option.key); setOpen(false); }}>{option.label}</button>)}</div>}</div>;\n}\n","import type { SVGAttributes } from 'react';\n\nexport type IconName = 'check' | 'close' | 'info' | 'warning' | 'error' | 'search' | 'chevron-down' | 'arrow-right' | 'user' | 'inbox';\nexport interface IconProps extends Omit<SVGAttributes<SVGSVGElement>, 'children'> { name: IconName; size?: number; label?: string; }\n\nconst paths: Record<IconName, string> = {\n check: 'M5 12.5 9.2 17 19 7', close: 'm7 7 10 10M17 7 7 17', info: 'M12 11v6M12 7.5h.01',\n warning: 'M12 4 3.5 19h17L12 4Zm0 5v4.5m0 2.5h.01', error: 'M8 8l8 8m0-8-8 8',\n search: 'm20 20-4.5-4.5m2.5-4A7 7 0 1 1 4 11a7 7 0 0 1 14 0Z', 'chevron-down': 'm7 10 5 5 5-5',\n 'arrow-right': 'M5 12h14m-5-5 5 5-5 5', user: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm7 8a7 7 0 0 0-14 0',\n inbox: 'M4 5h16v13H4V5Zm0 9h4l2 2h4l2-2h4',\n};\n\nexport function Icon({ name, size = 20, label, className = '', ...props }: IconProps) {\n return <svg className={`hf-icon ${className}`} width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.8\" strokeLinecap=\"round\" strokeLinejoin=\"round\" role={label ? 'img' : undefined} aria-label={label} aria-hidden={label ? undefined : true} {...props}><path d={paths[name]} /></svg>;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\nconst focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\ninterface LayerEntry { id: symbol }\n\nconst layerStack: LayerEntry[] = [];\nlet scrollLockCount = 0;\nlet previousBodyOverflow = '';\n\nexport interface DismissibleLayerOptions {\n modal?: boolean;\n closeOnOutside?: boolean;\n trapFocus?: boolean;\n lockScroll?: boolean;\n autoFocus?: boolean;\n restoreFocus?: boolean;\n}\n\nfunction isTopLayer(id: symbol) { return layerStack.at(-1)?.id === id; }\nfunction addLayer(id: symbol) { layerStack.push({ id }); }\nfunction removeLayer(id: symbol) {\n const index = layerStack.findIndex((layer) => layer.id === id);\n if (index >= 0) layerStack.splice(index, 1);\n}\n\nfunction lockBodyScroll() {\n if (scrollLockCount === 0) {\n previousBodyOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n scrollLockCount += 1;\n}\n\nfunction unlockBodyScroll() {\n scrollLockCount = Math.max(0, scrollLockCount - 1);\n if (scrollLockCount === 0) document.body.style.overflow = previousBodyOverflow;\n}\n\nfunction focusInitialElement(root: HTMLElement) {\n const target = root.querySelector<HTMLElement>('[data-autofocus], [autofocus]')\n ?? root.querySelector<HTMLElement>(focusableSelector)\n ?? root;\n target.focus();\n}\n\nfunction trapTabKey(event: KeyboardEvent, root: HTMLElement) {\n const nodes = [...root.querySelectorAll<HTMLElement>(focusableSelector)]\n .filter((node) => !node.hasAttribute('disabled') && node.getAttribute('aria-hidden') !== 'true');\n if (!nodes.length) {\n event.preventDefault();\n root.focus();\n return;\n }\n const first = nodes[0]!;\n const last = nodes[nodes.length - 1]!;\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n}\n\nexport function useDismissibleLayer<T extends HTMLElement>(\n open: boolean,\n onClose: () => void,\n modalOrOptions: boolean | DismissibleLayerOptions = false,\n): RefObject<T | null> {\n const ref = useRef<T>(null);\n const idRef = useRef(Symbol('dismissible-layer'));\n const closeRef = useRef(onClose);\n closeRef.current = onClose;\n\n const options = typeof modalOrOptions === 'boolean' ? { modal: modalOrOptions } : modalOrOptions;\n const modal = options.modal ?? false;\n const closeOnOutside = options.closeOnOutside ?? !modal;\n const trapFocus = options.trapFocus ?? modal;\n const lockScroll = options.lockScroll ?? modal;\n const autoFocus = options.autoFocus ?? true;\n const restoreFocus = options.restoreFocus ?? true;\n\n useEffect(() => {\n if (!open) return undefined;\n const id = idRef.current;\n const previousFocus = document.activeElement as HTMLElement | null;\n addLayer(id);\n if (lockScroll) lockBodyScroll();\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!isTopLayer(id) || !closeOnOutside) return;\n if (!ref.current?.contains(event.target as Node)) closeRef.current();\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!isTopLayer(id)) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeRef.current();\n } else if (event.key === 'Tab' && trapFocus && ref.current) {\n trapTabKey(event, ref.current);\n }\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n document.addEventListener('keydown', handleKeyDown, true);\n const animationFrame = autoFocus\n ? requestAnimationFrame(() => ref.current && focusInitialElement(ref.current))\n : undefined;\n\n return () => {\n if (animationFrame !== undefined) cancelAnimationFrame(animationFrame);\n document.removeEventListener('pointerdown', handlePointerDown);\n document.removeEventListener('keydown', handleKeyDown, true);\n removeLayer(id);\n if (lockScroll) unlockBodyScroll();\n if (restoreFocus && previousFocus?.isConnected) previousFocus.focus();\n };\n }, [autoFocus, closeOnOutside, lockScroll, modal, open, restoreFocus, trapFocus]);\n\n return ref;\n}\n","import { forwardRef, useId, type InputHTMLAttributes, type ReactNode } from 'react';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix'> {\n label?: string;\n hint?: string;\n error?: string;\n prefix?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { className = '', id, label, hint, error, prefix, disabled, ...props },\n ref,\n) {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const descriptionId = `${inputId}-description`;\n return (\n <label className={`hf-field ${className}`.trim()} htmlFor={inputId}>\n {label && <span className=\"hf-field__label\">{label}</span>}\n <span className={`hf-input-shell ${error ? 'hf-input-shell--error' : ''}`}>\n {prefix && <span className=\"hf-input-shell__prefix\" aria-hidden=\"true\">{prefix}</span>}\n <input\n ref={ref}\n id={inputId}\n className=\"hf-input\"\n disabled={disabled}\n aria-invalid={Boolean(error)}\n aria-describedby={hint || error ? descriptionId : undefined}\n {...props}\n />\n </span>\n {(error || hint) && (\n <span id={descriptionId} className={`hf-field__hint ${error ? 'hf-field__hint--error' : ''}`}>\n {error ?? hint}\n </span>\n )}\n </label>\n );\n});\n","import { forwardRef, type InputHTMLAttributes } from 'react';\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n label: string;\n}\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { label, className = '', ...props },\n ref,\n) {\n return (\n <label className={`hf-switch ${className}`.trim()}>\n <input ref={ref} className=\"hf-switch__input\" type=\"checkbox\" role=\"switch\" {...props} />\n <span className=\"hf-switch__track\" aria-hidden=\"true\"><span className=\"hf-switch__thumb\" /></span>\n <span className=\"hf-switch__label\">{label}</span>\n </label>\n );\n});\n","import { useId } from 'react';\n\nexport interface SegmentOption<T extends string> { label: string; value: T }\nexport interface SegmentedControlProps<T extends string> {\n label: string;\n options: readonly SegmentOption<T>[];\n value: T;\n onChange: (value: T) => void;\n className?: string;\n}\n\nexport function SegmentedControl<T extends string>({ label, options, value, onChange, className = '' }: SegmentedControlProps<T>) {\n const name = useId();\n return (\n <fieldset className={`hf-segmented ${className}`.trim()} aria-label={label}>\n <legend className=\"hf-sr-only\">{label}</legend>\n {options.map((option) => (\n <label key={option.value} className=\"hf-segmented__option\">\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={() => onChange(option.value)}\n />\n <span>{option.label}</span>\n </label>\n ))}\n </fieldset>\n );\n}\n","import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n title?: string;\n eyebrow?: string;\n action?: ReactNode;\n interactive?: boolean;\n}\n\nexport function Card({ children, title, eyebrow, action, interactive = false, className = '', ...props }: PropsWithChildren<CardProps>) {\n return (\n <article className={`hf-card ${interactive ? 'hf-card--interactive' : ''} ${className}`.trim()} {...props}>\n {(eyebrow || title || action) && (\n <header className=\"hf-card__header\">\n <div>\n {eyebrow && <p className=\"hf-card__eyebrow\">{eyebrow}</p>}\n {title && <h3 className=\"hf-card__title\">{title}</h3>}\n </div>\n {action}\n </header>\n )}\n <div className=\"hf-card__body\">{children}</div>\n </article>\n );\n}\n","import { useId, type PropsWithChildren, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from './Button';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface ModalProps {\n open: boolean;\n title: string;\n children: ReactNode;\n onClose: () => void;\n footer?: ReactNode;\n}\n\nexport function Modal({ open, title, children, onClose, footer }: PropsWithChildren<ModalProps>) {\n const titleId = useId();\n const dialogRef = useDismissibleLayer<HTMLDivElement>(open, onClose, true);\n\n if (!open) return null;\n return createPortal(\n <div className=\"hf-modal-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onClose()}>\n <div ref={dialogRef} className=\"hf-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId} tabIndex={-1}>\n <header className=\"hf-modal__header\">\n <h2 id={titleId}>{title}</h2>\n <Button variant=\"quiet\" size=\"sm\" iconOnly leadingIcon={<Icon name=\"close\" size={16} />} onClick={onClose} aria-label=\"关闭弹窗\" />\n </header>\n <div className=\"hf-modal__body\">{children}</div>\n {footer && <footer className=\"hf-modal__footer\">{footer}</footer>}\n </div>\n </div>,\n document.body,\n );\n}\n","import { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface ToastProps {\n open: boolean;\n message: string;\n tone?: 'success' | 'info' | 'error';\n duration?: number;\n onClose: () => void;\n}\n\nexport function Toast({ open, message, tone = 'info', duration = 2600, onClose }: ToastProps) {\n useEffect(() => {\n if (!open || duration <= 0) return;\n const timer = window.setTimeout(onClose, duration);\n return () => window.clearTimeout(timer);\n }, [duration, onClose, open]);\n if (!open) return null;\n return createPortal(\n <div className={`hf-toast hf-toast--${tone}`} role={tone === 'error' ? 'alert' : 'status'}>\n <span className=\"hf-toast__mark\" aria-hidden=\"true\" />\n {message}\n </div>,\n document.body,\n );\n}\n","import type { AnchorHTMLAttributes, HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport function Divider({ orientation = 'horizontal', label, className = '' }: { orientation?: 'horizontal' | 'vertical'; label?: ReactNode; className?: string }) { return <div className={`hf-divider hf-divider--${orientation}${label ? ' hf-divider--labelled' : ''} ${className}`} role=\"separator\" aria-orientation={orientation}>{label && <span>{label}</span>}</div>; }\nexport function Link({ external, className = '', children, ...props }: AnchorHTMLAttributes<HTMLAnchorElement> & { external?: boolean }) { return <a className={`hf-link ${className}`} target={external ? '_blank' : props.target} rel={external ? 'noreferrer' : props.rel} {...props}>{children}{external && <span aria-hidden=\"true\">↗</span>}</a>; }\n\ntype Tone = 'neutral' | 'primary' | 'success' | 'warning' | 'danger';\nexport function Badge({ tone = 'neutral', dot, className = '', ...props }: HTMLAttributes<HTMLSpanElement> & { tone?: Tone; dot?: boolean }) { return <span className={`hf-badge hf-tone--${tone} ${className}`} {...props}>{dot && <i aria-hidden=\"true\" />}{props.children}</span>; }\nexport function Tag({ tone = 'neutral', onRemove, removeLabel = '移除标签', className = '', children, ...props }: HTMLAttributes<HTMLSpanElement> & { tone?: Tone; onRemove?: () => void; removeLabel?: string }) { return <span className={`hf-tag hf-tone--${tone} ${className}`} {...props}>{children}{onRemove && <button type=\"button\" aria-label={removeLabel} onClick={onRemove}><Icon name=\"close\" size={14} /></button>}</span>; }\n\nexport function Avatar({ src, name, alt = '', size = 'md', status, className = '' }: { src?: string; name: string; alt?: string; size?: 'sm' | 'md' | 'lg'; status?: 'online' | 'busy' | 'away'; className?: string }) {\n const initials = name.trim().split(/\\s+/).slice(0, 2).map((part) => part[0]).join('').toUpperCase();\n return <span className={`hf-avatar hf-avatar--${size} ${className}`} title={name}>{src ? <img src={src} alt={alt || name} /> : <span aria-hidden=\"true\">{initials}</span>}{status && <i className={`hf-avatar__status hf-avatar__status--${status}`} aria-label={{ online: '在线', busy: '忙碌', away: '离开' }[status]} />}</span>;\n}\n","import { useState, type ReactNode } from 'react';\nexport interface AccordionItem { key: string; title: ReactNode; content: ReactNode; disabled?: boolean }\nexport interface AccordionProps { items: readonly AccordionItem[]; value?: readonly string[]; defaultValue?: readonly string[]; onChange?: (keys: string[]) => void; multiple?: boolean }\nexport function Accordion({ items, value, defaultValue = [], onChange, multiple = false }: AccordionProps) {\n const [inner, setInner] = useState<string[]>([...defaultValue]); const active = value ? [...value] : inner;\n const toggle = (key: string) => { const next = active.includes(key) ? active.filter((item) => item !== key) : multiple ? [...active, key] : [key]; if (!value) setInner(next); onChange?.(next); };\n return <div className=\"hf-accordion\">{items.map((item) => { const open = active.includes(item.key); return <section className={open ? 'is-open' : ''} key={item.key}><h3><button type=\"button\" aria-expanded={open} disabled={item.disabled} onClick={() => toggle(item.key)}><span>{item.title}</span><span className=\"hf-accordion__toggle\" aria-hidden=\"true\"><i /><i /></span></button></h3>{open && <div className=\"hf-accordion__panel\">{item.content}</div>}</section>; })}</div>;\n}\n","import { cloneElement, useState, type ReactElement, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface DropdownItem { key: string; label: ReactNode; icon?: ReactNode; description?: ReactNode; disabled?: boolean; danger?: boolean; separatorBefore?: boolean }\nexport interface DropdownProps { trigger: ReactElement; items: readonly DropdownItem[]; onSelect: (key: string) => void; placement?: 'left' | 'right'; label?: string }\nexport function Dropdown({ trigger, items, onSelect, placement = 'left', label = '操作菜单' }: DropdownProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLSpanElement>(open, () => setOpen(false)); return <span className=\"hf-dropdown\" ref={root}>{cloneElement(trigger, { onClick: () => setOpen((value) => !value), 'aria-expanded': open, 'aria-haspopup': 'menu' } as object)}{open && <div className={`hf-dropdown__menu hf-dropdown__menu--${placement}`} role=\"menu\" aria-label={label}>{items.map((item) => <button type=\"button\" role=\"menuitem\" className={`${item.danger ? 'is-danger' : ''}${item.separatorBefore ? ' has-separator' : ''}`} disabled={item.disabled} key={item.key} onClick={() => { onSelect(item.key); setOpen(false); }}>{item.icon}<span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span></button>)}</div>}</span>; }\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> { label: string; icon: ReactNode; variant?: 'primary' | 'secondary' | 'quiet' | 'danger'; size?: 'sm' | 'md' | 'lg' }\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton({ label, icon, variant = 'quiet', size = 'md', className = '', ...props }, ref) { return <button ref={ref} className={`hf-button hf-button--${variant} hf-button--${size} hf-button--square hf-button--icon ${className}`.trim()} aria-label={label} title={label} {...props}>{icon}</button>; });\n","import { useState, type HTMLAttributes, type MouseEvent, type PropsWithChildren } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport type { DropdownItem } from './Dropdown';\nimport { Icon } from '../foundations/Icon';\n\nexport function ButtonGroup({ children, orientation = 'horizontal', attached = true, className = '', ...props }: PropsWithChildren<HTMLAttributes<HTMLDivElement> & { orientation?: 'horizontal' | 'vertical'; attached?: boolean }>) { return <div role=\"group\" className={`hf-button-group hf-button-group--${orientation}${attached ? ' is-attached' : ''} ${className}`.trim()} {...props}>{children}</div>; }\n\nexport interface ColorPickerProps { value: string; onChange: (value: string) => void; label?: string; presets?: readonly string[]; disabled?: boolean }\nexport function ColorPicker({ value, onChange, label, presets = ['#0a7cff','#19a989','#7657e6','#f0a11a','#e5484d'], disabled }: ColorPickerProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false)); return <div className=\"hf-field hf-color-picker\" ref={root}>{label && <span className=\"hf-field__label\">{label}</span>}<button type=\"button\" className=\"hf-color-picker__trigger\" disabled={disabled} aria-expanded={open} onClick={() => setOpen(!open)}><span style={{ background: value }} /><code>{value.toUpperCase()}</code><Icon className=\"hf-picker-trigger__chevron\" name=\"chevron-down\" size={16} /></button>{open && <div className=\"hf-color-picker__panel\"><input type=\"color\" aria-label=\"选择颜色\" value={value} onChange={(event) => onChange(event.target.value)} /><div>{presets.map((color) => <button type=\"button\" aria-label={`选择颜色 ${color}`} aria-pressed={value.toLowerCase() === color.toLowerCase()} style={{ background: color }} key={color} onClick={() => onChange(color)} />)}</div><input aria-label=\"颜色值\" value={value} onChange={(event) => /^#[0-9a-f]{0,6}$/i.test(event.target.value) && onChange(event.target.value)} /></div>}</div>; }\n\nexport interface ContextMenuProps { items: readonly DropdownItem[]; onSelect: (key: string) => void; label?: string }\nexport function ContextMenu({ items, onSelect, label = '上下文菜单', children }: PropsWithChildren<ContextMenuProps>) { const [position, setPosition] = useState<{ x: number; y: number }>(); const root = useDismissibleLayer<HTMLDivElement>(Boolean(position), () => setPosition(undefined)); const open = (event: MouseEvent) => { event.preventDefault(); setPosition({ x: event.clientX, y: event.clientY }); }; return <div className=\"hf-context-target\" onContextMenu={open}>{children}{position && <div ref={root} className=\"hf-context-menu\" role=\"menu\" aria-label={label} style={{ left: position.x, top: position.y }}>{items.map((item) => <button type=\"button\" role=\"menuitem\" disabled={item.disabled} className={item.danger ? 'is-danger' : ''} key={item.key} onClick={() => { onSelect(item.key); setPosition(undefined); }}>{item.icon}<span>{item.label}</span></button>)}</div>}</div>; }\n","import { useEffect, useMemo, useRef, useState, type KeyboardEvent } from 'react';\n\nexport interface RichTextEditorProps { value: string; onChange: (html: string) => void; label?: string; placeholder?: string; disabled?: boolean }\nexport function RichTextEditor({ value, onChange, label, placeholder = '输入内容…', disabled }: RichTextEditorProps) {\n const editor = useRef<HTMLDivElement>(null);\n useEffect(() => { if (editor.current && editor.current.innerHTML !== value) editor.current.innerHTML = value; }, [value]);\n const format = (command: 'bold' | 'italic' | 'insertUnorderedList') => { editor.current?.focus(); document.execCommand(command); onChange(editor.current?.innerHTML ?? ''); };\n return <div className=\"hf-rich-editor\"><div className=\"hf-rich-editor__header\">{label && <strong>{label}</strong>}<div role=\"toolbar\" aria-label=\"文本格式\"><button type=\"button\" aria-label=\"粗体\" disabled={disabled} onClick={() => format('bold')}><b>B</b></button><button type=\"button\" aria-label=\"斜体\" disabled={disabled} onClick={() => format('italic')}><i>I</i></button><button type=\"button\" aria-label=\"无序列表\" disabled={disabled} onClick={() => format('insertUnorderedList')}>• 列表</button></div></div><div ref={editor} className=\"hf-rich-editor__content\" contentEditable={!disabled} role=\"textbox\" aria-multiline=\"true\" aria-label={label ?? '富文本编辑器'} data-placeholder={placeholder} onInput={(event) => onChange(event.currentTarget.innerHTML)} /></div>;\n}\n\nexport interface MentionOption { value: string; label: string; description?: string }\nexport interface MentionInputProps { value: string; onChange: (value: string) => void; options: readonly MentionOption[]; label?: string; placeholder?: string; disabled?: boolean }\nexport function MentionInput({ value, onChange, options, label, placeholder = '输入 @ 提及成员', disabled }: MentionInputProps) {\n const [active, setActive] = useState(0); const match = value.match(/(?:^|\\s)@([^\\s@]*)$/); const query = match?.[1]?.toLowerCase();\n const results = useMemo(() => query === undefined ? [] : options.filter((item) => `${item.label} ${item.value}`.toLowerCase().includes(query)).slice(0, 6), [options, query]);\n useEffect(() => setActive(0), [query]);\n const choose = (item: MentionOption) => { if (!match) return; onChange(`${value.slice(0, match.index!)}${match[0].startsWith(' ') ? ' ' : ''}@${item.label} `); };\n const keyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => { if (!results.length) return; if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setActive((index) => (index + (event.key === 'ArrowDown' ? 1 : -1) + results.length) % results.length); } else if (event.key === 'Enter' || event.key === 'Tab') { event.preventDefault(); choose(results[active]!); } else if (event.key === 'Escape') { event.preventDefault(); onChange(`${value} `); } };\n return <label className=\"hf-field hf-mention-input\">{label && <span className=\"hf-field__label\">{label}</span>}<textarea value={value} placeholder={placeholder} disabled={disabled} aria-autocomplete=\"list\" aria-expanded={Boolean(results.length)} onChange={(event) => onChange(event.target.value)} onKeyDown={keyDown} />{results.length > 0 && <div className=\"hf-mention-input__menu\" role=\"listbox\">{results.map((item, index) => <button type=\"button\" role=\"option\" aria-selected={index === active} key={item.value} onMouseDown={(event) => event.preventDefault()} onClick={() => choose(item)}><span>@{item.label}</span>{item.description && <small>{item.description}</small>}</button>)}</div>}</label>;\n}\n\nexport interface CodeEditorProps { value: string; onChange: (value: string) => void; language?: string; label?: string; readOnly?: boolean; height?: number }\nexport function CodeEditor({ value, onChange, language = 'text', label = '代码编辑器', readOnly, height = 260 }: CodeEditorProps) { const lines = value.split('\\n').length; return <div className=\"hf-code-editor\"><header><strong>{label}</strong><span>{language}</span></header><div style={{ height }}><pre aria-hidden=\"true\">{Array.from({ length: lines }, (_, index) => `${index + 1}\\n`)}</pre><textarea spellCheck={false} readOnly={readOnly} aria-label={label} value={value} onChange={(event) => onChange(event.target.value)} onKeyDown={(event) => { if (event.key === 'Tab' && !readOnly) { event.preventDefault(); const input = event.currentTarget; const next = `${value.slice(0, input.selectionStart)} ${value.slice(input.selectionEnd)}`; onChange(next); requestAnimationFrame(() => input.setSelectionRange(input.selectionStart + 2, input.selectionStart + 2)); } }} /></div></div>; }\n","import { useState, type FormEvent, type KeyboardEvent, type ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport interface ChatMessageProps { role: 'user' | 'assistant' | 'system'; children: ReactNode; avatar?: ReactNode; name?: ReactNode; timestamp?: ReactNode; actions?: ReactNode; streaming?: boolean; error?: ReactNode }\nexport function ChatMessage({ role, children, avatar, name, timestamp, actions, streaming, error }: ChatMessageProps) { return <article className={`hf-chat-message hf-chat-message--${role}`} aria-live={streaming ? 'polite' : undefined}><div className=\"hf-chat-message__avatar\" aria-hidden=\"true\">{avatar ?? (role === 'assistant' ? 'AI' : role === 'system' ? 'S' : 'U')}</div><div className=\"hf-chat-message__body\"><header>{name && <strong>{name}</strong>}{timestamp && <time>{timestamp}</time>}</header><div className=\"hf-chat-message__content\">{children}{streaming && <span className=\"hf-chat-message__cursor\" aria-label=\"正在生成\" />}</div>{error && <div className=\"hf-chat-message__error\" role=\"alert\">{error}</div>}{actions && <footer>{actions}</footer>}</div></article>; }\n\nexport interface ChatAttachment { id: string; name: string; size?: string; icon?: ReactNode }\nexport interface ChatComposerProps { value: string; onChange: (value: string) => void; onSend: (value: string) => void; attachments?: readonly ChatAttachment[]; onRemoveAttachment?: (id: string) => void; onAttach?: () => void; placeholder?: string; disabled?: boolean; sending?: boolean; footer?: ReactNode; maxLength?: number }\nexport function ChatComposer({ value, onChange, onSend, attachments = [], onRemoveAttachment, onAttach, placeholder = '输入消息,Enter 发送,Shift + Enter 换行', disabled, sending, footer, maxLength }: ChatComposerProps) { const send = () => { const content = value.trim(); if (content && !disabled && !sending) onSend(content); }; const submit = (event: FormEvent) => { event.preventDefault(); send(); }; const keyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => { if (event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing) { event.preventDefault(); send(); } }; return <form className=\"hf-chat-composer\" onSubmit={submit}>{attachments.length > 0 && <div className=\"hf-chat-composer__attachments\">{attachments.map((item) => <span key={item.id}>{item.icon}<strong>{item.name}</strong>{item.size && <small>{item.size}</small>}{onRemoveAttachment && <button type=\"button\" aria-label={`移除附件 ${item.name}`} onClick={() => onRemoveAttachment(item.id)}><Icon name=\"close\" size={14} /></button>}</span>)}</div>}<textarea aria-label=\"消息内容\" value={value} maxLength={maxLength} disabled={disabled} placeholder={placeholder} onChange={(event) => onChange(event.target.value)} onKeyDown={keyDown} /><footer><div>{onAttach && <button type=\"button\" className=\"hf-chat-composer__attach\" aria-label=\"添加附件\" disabled={disabled} onClick={onAttach}>+</button>}{footer}</div>{maxLength && <small>{value.length}/{maxLength}</small>}<button type=\"submit\" className=\"hf-chat-composer__send\" disabled={disabled || sending || !value.trim()}>{sending ? <span className=\"hf-spinner\" /> : '↑'}<span className=\"hf-sr-only\">发送消息</span></button></footer></form>; }\n\nexport interface PromptSuggestion { id: string; title: ReactNode; description?: ReactNode; icon?: ReactNode; prompt?: string }\nexport interface PromptSuggestionsProps { items: readonly PromptSuggestion[]; onSelect: (item: PromptSuggestion) => void; title?: ReactNode; columns?: 1 | 2 | 3 }\nexport function PromptSuggestions({ items, onSelect, title, columns = 2 }: PromptSuggestionsProps) { return <section className={`hf-prompt-suggestions hf-prompt-suggestions--${columns}`}>{title && <header>{title}</header>}<div>{items.map((item) => <button type=\"button\" key={item.id} onClick={() => onSelect(item)}>{item.icon && <span>{item.icon}</span>}<strong>{item.title}</strong>{item.description && <small>{item.description}</small>}<i aria-hidden=\"true\">→</i></button>)}</div></section>; }\n\nexport type ToolCallStatus = 'queued' | 'running' | 'success' | 'error' | 'cancelled';\nexport interface ToolCallCardProps { name: ReactNode; status: ToolCallStatus; description?: ReactNode; input?: ReactNode; output?: ReactNode; duration?: ReactNode; icon?: ReactNode; defaultExpanded?: boolean; onRetry?: () => void; onCancel?: () => void }\nconst toolStatusLabel: Record<ToolCallStatus, string> = { queued: '等待中', running: '执行中', success: '已完成', error: '执行失败', cancelled: '已取消' };\nexport function ToolCallCard({ name, status, description, input, output, duration, icon, defaultExpanded = false, onRetry, onCancel }: ToolCallCardProps) { const [open, setOpen] = useState(defaultExpanded); return <section className={`hf-tool-call is-${status}`}><button type=\"button\" className=\"hf-tool-call__summary\" aria-expanded={open} onClick={() => setOpen(!open)}><span className=\"hf-tool-call__icon\">{status === 'running' ? <span className=\"hf-spinner\" /> : icon ?? '◇'}</span><span><strong>{name}</strong>{description && <small>{description}</small>}</span><i>{toolStatusLabel[status]}</i>{duration && <time>{duration}</time>}<b aria-hidden=\"true\">⌄</b></button>{open && <div className=\"hf-tool-call__detail\">{input && <section><strong>输入</strong><div>{input}</div></section>}{output && <section><strong>输出</strong><div>{output}</div></section>}{(status === 'error' && onRetry) || (status === 'running' && onCancel) ? <footer>{status === 'error' && onRetry && <button type=\"button\" onClick={onRetry}>重新执行</button>}{status === 'running' && onCancel && <button type=\"button\" onClick={onCancel}>停止执行</button>}</footer> : null}</div>}</section>; }\n\nexport interface CitationItem { id: string; title: ReactNode; url?: string; source?: ReactNode; excerpt?: ReactNode; favicon?: ReactNode }\nexport interface CitationListProps { items: readonly CitationItem[]; title?: ReactNode; onSelect?: (item: CitationItem) => void }\nexport function CitationList({ items, title = '参考来源', onSelect }: CitationListProps) { return <section className=\"hf-citation-list\"><header><strong>{title}</strong><span>{items.length}</span></header><ol>{items.map((item, index) => <li key={item.id}><a href={item.url} target={item.url ? '_blank' : undefined} rel={item.url ? 'noreferrer' : undefined} onClick={(event) => { if (!item.url) event.preventDefault(); onSelect?.(item); }}><span>{item.favicon ?? index + 1}</span><div><strong>{item.title}</strong>{item.source && <small>{item.source}</small>}{item.excerpt && <p>{item.excerpt}</p>}</div><i aria-hidden=\"true\">↗</i></a></li>)}</ol></section>; }\n\nexport type AgentRunStatus = ToolCallStatus;\nexport interface AgentRunStep { id: string; title: ReactNode; status: AgentRunStatus; description?: ReactNode; timestamp?: ReactNode; detail?: ReactNode }\nexport interface AgentRunTimelineProps { steps: readonly AgentRunStep[]; activeId?: string; onSelect?: (id: string) => void; label?: string }\nexport function AgentRunTimeline({ steps, activeId, onSelect, label = 'Agent 执行过程' }: AgentRunTimelineProps) { return <ol className=\"hf-agent-run\" aria-label={label}>{steps.map((step) => <li key={step.id} className={`is-${step.status}${activeId === step.id ? ' is-active' : ''}`}><button type=\"button\" aria-pressed={activeId === step.id} onClick={() => onSelect?.(step.id)}><span>{step.status === 'success' ? '✓' : step.status === 'error' ? '!' : step.status === 'running' ? <i className=\"hf-spinner\" /> : '·'}</span><div><header><strong>{step.title}</strong>{step.timestamp && <time>{step.timestamp}</time>}</header>{step.description && <p>{step.description}</p>}{step.detail && <div>{step.detail}</div>}</div></button></li>)}</ol>; }\n","import { Fragment, useMemo, useState, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport { Icon } from '../foundations/Icon';\n\nfunction inlineMarkdown(text: string): ReactNode[] { const pattern = /(\\*\\*[^*]+\\*\\*|`[^`]+`|\\[[^\\]]+\\]\\(https?:\\/\\/[^\\s)]+\\))/g; return text.split(pattern).filter(Boolean).map((part, index) => { if (part.startsWith('**') && part.endsWith('**')) return <strong key={index}>{part.slice(2, -2)}</strong>; if (part.startsWith('`') && part.endsWith('`')) return <code key={index}>{part.slice(1, -1)}</code>; const link = part.match(/^\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)$/); return link ? <a key={index} href={link[2]} target=\"_blank\" rel=\"noreferrer\">{link[1]}</a> : <Fragment key={index}>{part}</Fragment>; }); }\nexport interface MarkdownContentProps { content: string; className?: string }\nexport function MarkdownContent({ content, className = '' }: MarkdownContentProps) { const blocks = useMemo(() => { const lines = content.split('\\n'); const result: ReactNode[] = []; let code: string[] | undefined, language = ''; let list: string[] = []; const flushList = () => { if (list.length) result.push(<ul key={`list-${result.length}`}>{list.map((item, index) => <li key={index}>{inlineMarkdown(item)}</li>)}</ul>); list = []; }; lines.forEach((line) => { if (line.startsWith('```')) { if (code) { result.push(<CodeBlock key={`code-${result.length}`} code={code.join('\\n')} language={language} />); code = undefined; language = ''; } else { flushList(); code = []; language = line.slice(3).trim(); } return; } if (code) { code.push(line); return; } if (line.startsWith('- ')) { list.push(line.slice(2)); return; } flushList(); if (!line.trim()) return; const heading = line.match(/^(#{1,3})\\s+(.+)$/); if (heading) { const Tag = `h${heading[1]!.length}` as 'h1' | 'h2' | 'h3'; result.push(<Tag key={result.length}>{inlineMarkdown(heading[2]!)}</Tag>); } else if (line.startsWith('> ')) result.push(<blockquote key={result.length}>{inlineMarkdown(line.slice(2))}</blockquote>); else result.push(<p key={result.length}>{inlineMarkdown(line)}</p>); }); flushList(); if (code) result.push(<CodeBlock key=\"code-last\" code={code.join('\\n')} language={language} />); return result; }, [content]); return <div className={`hf-markdown ${className}`.trim()}>{blocks}</div>; }\n\nexport interface CodeBlockProps { code: string; language?: string; filename?: ReactNode; wrap?: boolean; showLineNumbers?: boolean; onCopy?: (code: string) => void }\nexport function CodeBlock({ code, language = 'text', filename, wrap, showLineNumbers = true, onCopy }: CodeBlockProps) { const [copied, setCopied] = useState(false); const lines = code.split('\\n'); const copy = async () => { try { await navigator.clipboard.writeText(code); } catch { /* Consumers can provide a fallback through onCopy. */ } onCopy?.(code); setCopied(true); window.setTimeout(() => setCopied(false), 1500); }; return <section className={`hf-code-block${wrap ? ' is-wrapped' : ''}`}><header><span>{filename ?? language}</span><button type=\"button\" onClick={copy}>{copied ? '已复制' : '复制代码'}</button></header><div>{showLineNumbers && <pre aria-hidden=\"true\">{lines.map((_, index) => `${index + 1}\\n`)}</pre>}<pre><code>{code}</code></pre></div></section>; }\n\nexport interface VoiceInputProps { state?: 'idle' | 'listening' | 'processing' | 'error'; duration?: string; level?: number; disabled?: boolean; onStart?: () => void; onStop?: () => void; onCancel?: () => void; error?: ReactNode }\nexport function VoiceInput({ state = 'idle', duration = '00:00', level = 0.45, disabled, onStart, onStop, onCancel, error }: VoiceInputProps) { const active = state === 'listening'; return <div className={`hf-voice-input is-${state}`} role=\"status\" aria-label={active ? '正在录音' : state === 'processing' ? '正在识别语音' : '语音输入'}><button type=\"button\" className=\"hf-voice-input__main\" aria-label={active ? '停止录音' : state === 'processing' ? '正在识别语音' : '开始语音输入'} disabled={disabled || state === 'processing'} onClick={active ? onStop : onStart}>{state === 'processing' ? <span className=\"hf-spinner\" /> : <span className={active ? 'hf-voice-input__stop-icon' : 'hf-voice-input__record-icon'} />}</button><div><div className=\"hf-voice-input__wave\" aria-hidden=\"true\">{Array.from({ length: 18 }, (_, index) => <i key={index} style={{ height: `${Math.max(12, ((index * 17) % 75) * level + 12)}%` }} />)}</div><span>{active ? duration : state === 'processing' ? '正在转换文字…' : error ?? '点击开始语音输入'}</span></div>{(active || state === 'error') && onCancel && <button type=\"button\" className=\"hf-voice-input__cancel\" onClick={onCancel}>取消</button>}</div>; }\n\nexport interface ModelOption { id: string; name: ReactNode; description?: ReactNode; icon?: ReactNode; tags?: readonly string[]; disabled?: boolean }\nexport interface ModelSelectorProps { models: readonly ModelOption[]; value: string; onChange: (id: string) => void; label?: string; disabled?: boolean }\nexport function ModelSelector({ models, value, onChange, label = '选择模型', disabled }: ModelSelectorProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false)); const selected = models.find((item) => item.id === value); return <div className=\"hf-model-selector\" ref={root}><button type=\"button\" className=\"hf-model-selector__trigger\" disabled={disabled} aria-expanded={open} onClick={() => setOpen(!open)}><span>{selected?.icon ?? '✦'}</span><span><strong>{selected?.name ?? label}</strong>{selected?.description && <small>{selected.description}</small>}</span><Icon className=\"hf-model-selector__chevron\" name=\"chevron-down\" size={16} /></button>{open && <div className=\"hf-model-selector__menu\" role=\"listbox\" aria-label={label}>{models.map((model) => <button type=\"button\" role=\"option\" aria-selected={model.id === value} disabled={model.disabled} key={model.id} onClick={() => { onChange(model.id); setOpen(false); }}><span>{model.icon ?? '✦'}</span><span><strong>{model.name}</strong>{model.description && <small>{model.description}</small>}{model.tags?.length ? <i>{model.tags.map((tag) => <b key={tag}>{tag}</b>)}</i> : null}</span>{model.id === value && <em>✓</em>}</button>)}</div>}</div>; }\n\nexport interface ConversationBranchProps { current: number; total: number; onChange: (index: number) => void; label?: ReactNode }\nexport function ConversationBranch({ current, total, onChange, label = '回答分支' }: ConversationBranchProps) { const safeTotal = Math.max(1, total), safeCurrent = Math.min(safeTotal - 1, Math.max(0, current)); return <nav className=\"hf-conversation-branch\" aria-label={String(label)}><button type=\"button\" aria-label=\"上一个分支\" disabled={safeCurrent === 0} onClick={() => onChange(safeCurrent - 1)}>‹</button><span>{safeCurrent + 1} / {safeTotal}</span><button type=\"button\" aria-label=\"下一个分支\" disabled={safeCurrent >= safeTotal - 1} onClick={() => onChange(safeCurrent + 1)}>›</button></nav>; }\n\nexport interface TokenUsageProps { used: number; limit: number; input?: number; output?: number; cached?: number; label?: ReactNode; compact?: boolean }\nexport function TokenUsage({ used, limit, input, output, cached, label = '上下文用量', compact }: TokenUsageProps) { const percent = Math.max(0, Math.min(100, limit ? used / limit * 100 : 0)); return <section className={`hf-token-usage${compact ? ' is-compact' : ''}`}><div className=\"hf-token-usage__ring\" role=\"progressbar\" aria-label={String(label)} aria-valuemin={0} aria-valuemax={limit} aria-valuenow={used} style={{ '--hf-token-percent': `${percent * 3.6}deg` } as React.CSSProperties}><span>{Math.round(percent)}%</span></div><div><header><strong>{label}</strong><span>{used.toLocaleString()} / {limit.toLocaleString()}</span></header>{!compact && <div className=\"hf-token-usage__details\">{input !== undefined && <span><i />输入 {input.toLocaleString()}</span>}{output !== undefined && <span><i />输出 {output.toLocaleString()}</span>}{cached !== undefined && <span><i />缓存 {cached.toLocaleString()}</span>}</div>}</div></section>; }\n","import { useState, type ReactNode } from 'react';\nimport { Avatar } from './Content';\n\nexport type PresenceStatus = 'online' | 'away' | 'busy' | 'offline';\nconst presenceLabel: Record<PresenceStatus, string> = { online: '在线', away: '离开', busy: '忙碌', offline: '离线' };\nexport interface PresenceProps { status: PresenceStatus; label?: ReactNode; showLabel?: boolean; pulse?: boolean }\nexport function Presence({ status, label, showLabel = true, pulse = true }: PresenceProps) { return <span className={`hf-presence is-${status}${pulse && status === 'online' ? ' is-pulsing' : ''}`} role=\"status\"><i aria-hidden=\"true\" /><span>{label ?? (showLabel ? presenceLabel[status] : <span className=\"hf-sr-only\">{presenceLabel[status]}</span>)}</span></span>; }\n\nexport interface AvatarGroupItem { id: string; name: string; src?: string; status?: Exclude<PresenceStatus, 'offline'> }\nexport interface AvatarGroupProps { items: readonly AvatarGroupItem[]; max?: number; size?: 'sm' | 'md' | 'lg'; onMore?: () => void; label?: string }\nexport function AvatarGroup({ items, max = 4, size = 'md', onMore, label = '协作成员' }: AvatarGroupProps) { const shown = items.slice(0, max), remaining = Math.max(0, items.length - shown.length); return <div className={`hf-avatar-group hf-avatar-group--${size}`} aria-label={label}>{shown.map((item) => <Avatar key={item.id} src={item.src} name={item.name} size={size} status={item.status} />)}{remaining > 0 && <button type=\"button\" aria-label={`查看其余 ${remaining} 位成员`} onClick={onMore}>+{remaining}</button>}</div>; }\n\nexport interface CommentItem { id: string; author: { name: string; avatar?: string }; content: ReactNode; timestamp?: ReactNode; edited?: boolean; reactions?: readonly { emoji: string; count: number; active?: boolean }[]; replies?: readonly CommentItem[] }\nexport interface CommentThreadProps { comments: readonly CommentItem[]; onReply?: (id: string, content: string) => void; onReact?: (id: string, emoji: string) => void; onDelete?: (id: string) => void; empty?: ReactNode }\nfunction Comment({ item, onReply, onReact, onDelete, depth = 0 }: { item: CommentItem; onReply?: CommentThreadProps['onReply']; onReact?: CommentThreadProps['onReact']; onDelete?: CommentThreadProps['onDelete']; depth?: number }) { const [replying, setReplying] = useState(false), [value, setValue] = useState(''); return <article className=\"hf-comment\" style={{ '--hf-comment-depth': Math.min(depth, 3) } as React.CSSProperties}><Avatar src={item.author.avatar} name={item.author.name} size=\"sm\" /><div><header><strong>{item.author.name}</strong>{item.timestamp && <time>{item.timestamp}</time>}{item.edited && <small>已编辑</small>}</header><div className=\"hf-comment__content\">{item.content}</div><footer>{item.reactions?.map((reaction) => <button type=\"button\" className={reaction.active ? 'is-active' : ''} aria-pressed={reaction.active} key={reaction.emoji} onClick={() => onReact?.(item.id, reaction.emoji)}>{reaction.emoji} {reaction.count}</button>)}{onReply && <button type=\"button\" onClick={() => setReplying(!replying)}>回复</button>}{onDelete && <button type=\"button\" onClick={() => onDelete(item.id)}>删除</button>}</footer>{replying && <form className=\"hf-comment__reply\" onSubmit={(event) => { event.preventDefault(); if (value.trim()) { onReply?.(item.id, value.trim()); setValue(''); setReplying(false); } }}><textarea autoFocus aria-label={`回复 ${item.author.name}`} value={value} onChange={(event) => setValue(event.target.value)} /><div><button type=\"button\" onClick={() => setReplying(false)}>取消</button><button type=\"submit\" disabled={!value.trim()}>发送回复</button></div></form>}{item.replies?.map((reply) => <Comment key={reply.id} item={reply} onReply={onReply} onReact={onReact} onDelete={onDelete} depth={depth + 1} />)}</div></article>; }\nexport function CommentThread({ comments, onReply, onReact, onDelete, empty = '暂无评论,开始讨论吧' }: CommentThreadProps) { return <section className=\"hf-comment-thread\" aria-label=\"评论讨论\">{comments.length ? comments.map((item) => <Comment key={item.id} item={item} onReply={onReply} onReact={onReact} onDelete={onDelete} />) : <div className=\"hf-comment-thread__empty\">{empty}</div>}</section>; }\n\nexport interface ActivityItem { id: string; actor: ReactNode; action: ReactNode; target?: ReactNode; timestamp?: ReactNode; avatar?: ReactNode; icon?: ReactNode; detail?: ReactNode }\nexport interface ActivityFeedProps { items: readonly ActivityItem[]; grouped?: boolean; empty?: ReactNode }\nexport function ActivityFeed({ items, grouped, empty = '暂无动态' }: ActivityFeedProps) { if (!items.length) return <div className=\"hf-activity-feed__empty\">{empty}</div>; return <ol className={`hf-activity-feed${grouped ? ' is-grouped' : ''}`}>{items.map((item) => <li key={item.id}><span className=\"hf-activity-feed__marker\">{item.avatar ?? item.icon ?? '•'}</span><div><p><strong>{item.actor}</strong> {item.action} {item.target && <b>{item.target}</b>}</p>{item.timestamp && <time>{item.timestamp}</time>}{item.detail && <div>{item.detail}</div>}</div></li>)}</ol>; }\n\nexport type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'skipped';\nexport interface ApprovalStep { id: string; title: ReactNode; approver?: ReactNode; status: ApprovalStatus; timestamp?: ReactNode; comment?: ReactNode }\nexport interface ApprovalFlowProps { steps: readonly ApprovalStep[]; currentId?: string; onApprove?: (id: string) => void; onReject?: (id: string) => void; orientation?: 'horizontal' | 'vertical' }\nexport function ApprovalFlow({ steps, currentId, onApprove, onReject, orientation = 'vertical' }: ApprovalFlowProps) { return <ol className={`hf-approval-flow hf-approval-flow--${orientation}`}>{steps.map((step, index) => <li className={`is-${step.status}${currentId === step.id ? ' is-current' : ''}`} key={step.id}><span>{step.status === 'approved' ? '✓' : step.status === 'rejected' ? '×' : index + 1}</span><div><header><strong>{step.title}</strong><i>{({ pending: '待审批', approved: '已通过', rejected: '已拒绝', skipped: '已跳过' } as const)[step.status]}</i></header>{step.approver && <p>{step.approver}</p>}{step.comment && <blockquote>{step.comment}</blockquote>}{step.timestamp && <time>{step.timestamp}</time>}{step.status === 'pending' && currentId === step.id && (onApprove || onReject) && <footer>{onReject && <button type=\"button\" onClick={() => onReject(step.id)}>拒绝</button>}{onApprove && <button type=\"button\" onClick={() => onApprove(step.id)}>通过</button>}</footer>}</div></li>)}</ol>; }\n\nexport interface AuditEvent { id: string; timestamp: ReactNode; actor: ReactNode; action: ReactNode; resource?: ReactNode; result?: 'success' | 'failure' | 'warning'; ip?: ReactNode; detail?: ReactNode }\nexport interface AuditLogProps { events: readonly AuditEvent[]; onSelect?: (id: string) => void; empty?: ReactNode; caption?: string }\nexport function AuditLog({ events, onSelect, empty = '暂无审计记录', caption = '审计日志' }: AuditLogProps) { return <div className=\"hf-audit-log\"><table><caption>{caption}</caption><thead><tr><th>时间</th><th>操作者</th><th>操作</th><th>资源</th><th>结果</th><th>IP</th></tr></thead><tbody>{events.map((event) => <tr key={event.id} tabIndex={onSelect ? 0 : undefined} onClick={() => onSelect?.(event.id)} onKeyDown={(key) => { if (onSelect && (key.key === 'Enter' || key.key === ' ')) { key.preventDefault(); onSelect(event.id); } }}><td>{event.timestamp}</td><td>{event.actor}</td><td><strong>{event.action}</strong>{event.detail && <small>{event.detail}</small>}</td><td>{event.resource ?? '—'}</td><td><span className={`is-${event.result ?? 'success'}`}>{event.result === 'failure' ? '失败' : event.result === 'warning' ? '警告' : '成功'}</span></td><td><code>{event.ip ?? '—'}</code></td></tr>)}{!events.length && <tr><td colSpan={6} className=\"hf-audit-log__empty\">{empty}</td></tr>}</tbody></table></div>; }\n","import { useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { Avatar } from './Content';\nimport { Button } from './Button';\nimport { Icon } from '../foundations/Icon';\n\nexport interface FileItem { id: string; name: ReactNode; type: 'folder' | 'file'; children?: readonly FileItem[]; size?: ReactNode; modified?: ReactNode; icon?: ReactNode }\ntype VisibleFileItem = { item: FileItem; level: number; parentId?: string };\n\nexport function FileExplorer({ items, selectedId, onSelect, empty = '暂无文件' }: { items: readonly FileItem[]; selectedId?: string; onSelect?: (id: string) => void; empty?: ReactNode }) {\n const [open, setOpen] = useState<readonly string[]>([]);\n const itemRefs = useRef(new Map<string, HTMLButtonElement>());\n const visible = useMemo(() => {\n const result: VisibleFileItem[] = [];\n const visit = (nodes: readonly FileItem[], level: number, parentId?: string) => nodes.forEach((item) => {\n result.push({ item, level, parentId });\n if (item.children?.length && open.includes(item.id)) visit(item.children, level + 1, item.id);\n });\n visit(items, 1);\n return result;\n }, [items, open]);\n const toggle = (id: string) => setOpen((value) => value.includes(id) ? value.filter((key) => key !== id) : [...value, id]);\n const focusAt = (index: number) => itemRefs.current.get(visible[Math.max(0, Math.min(visible.length - 1, index))]?.item.id ?? '')?.focus();\n const onKeyDown = (event: KeyboardEvent<HTMLButtonElement>, entry: VisibleFileItem, index: number) => {\n const expandable = Boolean(entry.item.children?.length);\n if (event.key === 'ArrowDown') focusAt(index + 1);\n else if (event.key === 'ArrowUp') focusAt(index - 1);\n else if (event.key === 'Home') focusAt(0);\n else if (event.key === 'End') focusAt(visible.length - 1);\n else if (event.key === 'ArrowRight' && expandable) open.includes(entry.item.id) ? focusAt(index + 1) : toggle(entry.item.id);\n else if (event.key === 'ArrowLeft') {\n if (expandable && open.includes(entry.item.id)) toggle(entry.item.id);\n else if (entry.parentId) itemRefs.current.get(entry.parentId)?.focus();\n else return;\n } else return;\n event.preventDefault();\n };\n return <div className=\"hf-file-explorer\" role=\"tree\" aria-label=\"文件目录\">\n {items.length ? <ul role=\"none\">{visible.map((entry, index) => {\n const { item, level } = entry; const expandable = Boolean(item.children?.length); const expanded = expandable && open.includes(item.id);\n return <li key={item.id} role=\"none\">\n <div className={selectedId === item.id ? 'is-selected' : ''} style={{ paddingLeft: (level - 1) * 18 + 7 }}>\n <span className=\"hf-file-explorer__toggle\" aria-hidden=\"true\">{expandable ? (expanded ? '⌄' : '›') : ''}</span>\n <button type=\"button\" role=\"treeitem\" aria-level={level} aria-selected={selectedId === item.id} aria-expanded={expandable ? expanded : undefined} ref={(node) => { if (node) itemRefs.current.set(item.id, node); else itemRefs.current.delete(item.id); }} onClick={() => { if (expandable) toggle(item.id); onSelect?.(item.id); }} onKeyDown={(event) => onKeyDown(event, entry, index)}>{item.icon ?? (item.type === 'folder' ? '▰' : '▤')}<span><strong>{item.name}</strong>{item.modified && <small>{item.modified}</small>}</span>{item.size && <i>{item.size}</i>}</button>\n </div>\n </li>;\n })}</ul> : <div>{empty}</div>}\n </div>;\n}\n\nexport function FilePreview({ name, type, children, size, modified, actions, empty = '选择文件后在此预览' }: { name?: ReactNode; type?: string; children?: ReactNode; size?: ReactNode; modified?: ReactNode; actions?: ReactNode; empty?: ReactNode }) { return <section className=\"hf-file-preview\">{name ? <><header><div><strong>{name}</strong><span>{[type, size, modified].filter(Boolean).join(' · ')}</span></div>{actions}</header><div className=\"hf-file-preview__body\">{children}</div></> : <div className=\"hf-file-preview__empty\">▤<span>{empty}</span></div>}</section>; }\n\nexport interface VersionItem { id: string; version: string; author: { name: string; avatar?: string }; timestamp: ReactNode; description?: ReactNode; current?: boolean; tags?: readonly string[] }\nexport function VersionHistory({ versions, selectedId, onSelect, onRestore }: { versions: readonly VersionItem[]; selectedId?: string; onSelect?: (id: string) => void; onRestore?: (id: string) => void }) { return <ol className=\"hf-version-history\">{versions.map((item) => <li className={`${item.current ? 'is-current' : ''}${selectedId === item.id ? ' is-selected' : ''}`} key={item.id}><button type=\"button\" onClick={() => onSelect?.(item.id)}><span /><div><header><strong>{item.version}</strong>{item.current && <i>当前版本</i>}<time>{item.timestamp}</time></header><p><Avatar name={item.author.name} src={item.author.avatar} size=\"sm\" />{item.author.name}</p>{item.description && <div>{item.description}</div>}{item.tags?.map((tag) => <small key={tag}>{tag}</small>)}</div></button>{onRestore && !item.current && <button type=\"button\" onClick={() => onRestore(item.id)}>恢复</button>}</li>)}</ol>; }\n\nexport type PermissionLevel = 'none' | 'view' | 'comment' | 'edit' | 'admin';\nexport interface PermissionSubject { id: string; name: ReactNode; description?: ReactNode; avatar?: ReactNode }\nexport interface PermissionResource { id: string; name: ReactNode }\nexport function PermissionMatrix({ subjects, resources, value, onChange, disabled }: { subjects: readonly PermissionSubject[]; resources: readonly PermissionResource[]; value: Readonly<Record<string, Readonly<Record<string, PermissionLevel>>>>; onChange: (subjectId: string, resourceId: string, level: PermissionLevel) => void; disabled?: boolean }) { return <div className=\"hf-permission-matrix\"><table><thead><tr><th>成员或角色</th>{resources.map((item) => <th key={item.id}>{item.name}</th>)}</tr></thead><tbody>{subjects.map((subject) => <tr key={subject.id}><th><span>{subject.avatar}</span><div><strong>{subject.name}</strong>{subject.description && <small>{subject.description}</small>}</div></th>{resources.map((resource) => <td key={resource.id}><select aria-label={`${String(subject.name)} 对 ${String(resource.name)} 的权限`} disabled={disabled} value={value[subject.id]?.[resource.id] ?? 'none'} onChange={(event) => onChange(subject.id, resource.id, event.target.value as PermissionLevel)}><option value=\"none\">无权限</option><option value=\"view\">查看</option><option value=\"comment\">评论</option><option value=\"edit\">编辑</option><option value=\"admin\">管理</option></select></td>)}</tr>)}</tbody></table></div>; }\n\nexport interface MemberOption { id: string; name: string; avatar?: string; description?: ReactNode }\nexport function MemberPicker({ members, value, onChange, label = '添加成员', disabled }: { members: readonly MemberOption[]; value: readonly string[]; onChange: (ids: string[]) => void; label?: string; disabled?: boolean }) { const [query, setQuery] = useState(''); const results = useMemo(() => members.filter((item) => !value.includes(item.id) && `${item.name} ${String(item.description ?? '')}`.toLowerCase().includes(query.toLowerCase())), [members, query, value]); return <div className=\"hf-member-picker\"><div>{value.map((id) => { const item = members.find((member) => member.id === id); return item && <span key={id}><Avatar name={item.name} src={item.avatar} size=\"sm\" />{item.name}<button type=\"button\" disabled={disabled} aria-label={`移除 ${item.name}`} onClick={() => onChange(value.filter((key) => key !== id))}><Icon name=\"close\" size={14} /></button></span>; })}</div><input aria-label={label} value={query} disabled={disabled} placeholder={label} onChange={(event) => setQuery(event.target.value)} />{query && <div className=\"hf-member-picker__menu\">{results.map((item) => <button type=\"button\" key={item.id} onClick={() => { onChange([...value, item.id]); setQuery(''); }}><Avatar name={item.name} src={item.avatar} size=\"sm\" /><span><strong>{item.name}</strong>{item.description && <small>{item.description}</small>}</span></button>)}{!results.length && <p>没有匹配成员</p>}</div>}</div>; }\n\nexport type ShareScope = 'restricted' | 'organization' | 'public';\nexport function SharePanel({ scope, onScopeChange, members, onCopyLink, linkCopied, footer }: { scope: ShareScope; onScopeChange: (scope: ShareScope) => void; members?: ReactNode; onCopyLink?: () => void; linkCopied?: boolean; footer?: ReactNode }) { return <section className=\"hf-share-panel\"><header><strong>共享设置</strong><span>控制谁可以访问此内容</span></header><div className=\"hf-share-panel__scope\">{(['restricted','organization','public'] as const).map((item) => <label key={item}><input type=\"radio\" name=\"hf-share-scope\" checked={scope === item} onChange={() => onScopeChange(item)} /><span><strong>{{ restricted: '仅受邀成员', organization: '组织内成员', public: '拥有链接的任何人' }[item]}</strong><small>{{ restricted: '只有列表中的成员可以访问', organization: '同一组织成员均可访问', public: '无需登录即可访问' }[item]}</small></span></label>)}</div>{members && <div className=\"hf-share-panel__members\">{members}</div>}<footer><Button type=\"button\" size=\"sm\" variant=\"secondary\" onClick={onCopyLink}>{linkCopied ? '链接已复制' : '复制链接'}</Button>{footer}</footer></section>; }\n","import { forwardRef, useEffect, useId, useRef, useState, type ChangeEvent, type KeyboardEvent, type ReactNode, type SelectHTMLAttributes } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface SelectOption { label: ReactNode; value: string; disabled?: boolean }\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'children'> { label?: string; hint?: string; error?: string; options: readonly SelectOption[]; placeholder?: string }\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n { id, label, hint, error, options, placeholder, className = '', value, defaultValue, onChange, disabled, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }, forwardedRef,\n) {\n const generatedId = useId(); const inputId = id ?? generatedId; const triggerId = `${inputId}-trigger`; const listboxId = `${inputId}-listbox`; const descriptionId = `${inputId}-description`;\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const nativeRef = useRef<HTMLSelectElement | null>(null);\n const [innerValue, setInnerValue] = useState(() => String(defaultValue ?? (placeholder ? '' : options.find((option) => !option.disabled)?.value ?? '')));\n const selectedValue = value === undefined ? innerValue : String(value); const selectedOption = options.find((option) => option.value === selectedValue);\n const enabledIndices = options.map((option, index) => option.disabled ? -1 : index).filter((index) => index >= 0); const selectedIndex = options.findIndex((option) => option.value === selectedValue);\n const [activeIndex, setActiveIndex] = useState(selectedIndex >= 0 ? selectedIndex : enabledIndices[0] ?? -1);\n const assignRef = (node: HTMLSelectElement | null) => { nativeRef.current = node; if (typeof forwardedRef === 'function') forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; };\n const handleNativeChange = (event: ChangeEvent<HTMLSelectElement>) => { if (value === undefined) setInnerValue(event.currentTarget.value); onChange?.(event); };\n const choose = (nextValue: string) => { const native = nativeRef.current; if (!native) return; Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set?.call(native, nextValue); native.dispatchEvent(new Event('change', { bubbles: true })); if (value === undefined) setInnerValue(nextValue); setOpen(false); window.requestAnimationFrame(() => document.getElementById(triggerId)?.focus()); };\n useEffect(() => { if (selectedIndex >= 0) setActiveIndex(selectedIndex); }, [selectedIndex]);\n const move = (direction: 1 | -1) => { if (!enabledIndices.length) return; const current = enabledIndices.indexOf(activeIndex); const next = current < 0 ? 0 : (current + direction + enabledIndices.length) % enabledIndices.length; setActiveIndex(enabledIndices[next]!); };\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); if (!open) setOpen(true); move(event.key === 'ArrowDown' ? 1 : -1); }\n else if ((event.key === 'Enter' || event.key === ' ') && open) { event.preventDefault(); const option = options[activeIndex]; if (option && !option.disabled) choose(option.value); }\n else if (event.key === 'Escape' && open) { event.preventDefault(); setOpen(false); }\n else if (event.key === 'Home' && open && enabledIndices.length) { event.preventDefault(); setActiveIndex(enabledIndices[0]!); }\n else if (event.key === 'End' && open && enabledIndices.length) { event.preventDefault(); setActiveIndex(enabledIndices[enabledIndices.length - 1]!); }\n else if (event.key === 'Tab') setOpen(false);\n };\n return <div className={`hf-field ${className}`.trim()} ref={rootRef}>\n {label && <label className=\"hf-field__label\" htmlFor={triggerId}>{label}</label>}\n <div className={`hf-select-shell ${open ? 'hf-select-shell--open' : ''} ${error ? 'hf-select-shell--error' : ''}`}>\n <select ref={assignRef} id={inputId} className=\"hf-select-native\" tabIndex={-1} aria-hidden=\"true\" value={selectedValue} disabled={disabled} onChange={handleNativeChange} {...props}>{placeholder && <option value=\"\" disabled>{placeholder}</option>}{options.map((option) => <option key={option.value} value={option.value} disabled={option.disabled}>{typeof option.label === 'string' ? option.label : option.value}</option>)}</select>\n <button id={triggerId} type=\"button\" className=\"hf-select\" disabled={disabled} aria-label={ariaLabel} aria-labelledby={ariaLabelledBy} aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listboxId : undefined} aria-activedescendant={open && activeIndex >= 0 ? `${listboxId}-option-${activeIndex}` : undefined} aria-invalid={Boolean(error)} aria-describedby={hint || error ? descriptionId : undefined} onClick={() => { setActiveIndex(selectedIndex >= 0 ? selectedIndex : enabledIndices[0] ?? -1); setOpen((current) => !current); }} onKeyDown={handleKeyDown}><span className={!selectedOption ? 'hf-select__placeholder' : ''}>{selectedOption?.label ?? placeholder ?? '请选择'}</span><svg className=\"hf-select__chevron\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\"><path d={open ? 'm4.5 9.75 3.5-3.5 3.5 3.5' : 'm4.5 6.25 3.5 3.5 3.5-3.5'} stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg></button>\n {open && <div id={listboxId} className=\"hf-select-menu\" role=\"listbox\" aria-labelledby={triggerId}>{options.map((option, index) => <button id={`${listboxId}-option-${index}`} type=\"button\" role=\"option\" aria-selected={option.value === selectedValue} disabled={option.disabled} className={index === activeIndex ? 'is-active' : ''} key={option.value} onPointerMove={() => !option.disabled && setActiveIndex(index)} onClick={() => choose(option.value)}><span>{option.label}</span>{option.value === selectedValue && <svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\"><path d=\"m3.5 8 3 3 6-6\" stroke=\"currentColor\" strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>}</button>)}</div>}\n </div>\n {(error || hint) && <span id={descriptionId} className={`hf-field__hint ${error ? 'hf-field__hint--error' : ''}`}>{error ?? hint}</span>}\n </div>;\n});\n","import type { ReactNode } from \"react\";\nimport { Select } from \"../forms/Select\";\nexport interface ScheduleEvent {\n id: string;\n title: ReactNode;\n start: string;\n end: string;\n color?: string;\n resourceId?: string;\n}\nexport function EventCard({\n event,\n onClick,\n}: {\n event: ScheduleEvent;\n onClick?: (id: string) => void;\n}) {\n return (\n <button\n type=\"button\"\n className=\"hf-event-card\"\n onClick={() => onClick?.(event.id)}\n >\n <strong>{event.title}</strong>\n <time>\n {event.start}–{event.end}\n </time>\n </button>\n );\n}\nexport function Scheduler({\n days,\n events,\n onEventClick,\n}: {\n days: readonly string[];\n events: readonly ScheduleEvent[];\n onEventClick?: (id: string) => void;\n}) {\n return (\n <div className=\"hf-scheduler\">\n {days.map((day) => (\n <section key={day}>\n <strong>{day}</strong>\n {events\n .filter((e) => e.start.startsWith(day))\n .map((e) => (\n <EventCard key={e.id} event={e} onClick={onEventClick} />\n ))}\n </section>\n ))}\n </div>\n );\n}\nexport interface CalendarResource {\n id: string;\n name: ReactNode;\n}\nexport function ResourceCalendar({\n resources,\n events,\n}: {\n resources: readonly CalendarResource[];\n events: readonly ScheduleEvent[];\n}) {\n return (\n <div className=\"hf-resource-calendar\">\n {resources.map((r) => (\n <section key={r.id}>\n <strong>{r.name}</strong>\n {events\n .filter((e) => e.resourceId === r.id)\n .map((e) => (\n <EventCard key={e.id} event={e} />\n ))}\n </section>\n ))}\n </div>\n );\n}\nexport interface RecurrenceValue {\n frequency: \"none\" | \"daily\" | \"weekly\" | \"monthly\";\n interval: number;\n end?: string;\n}\nexport function RecurrenceEditor({\n value,\n onChange,\n}: {\n value: RecurrenceValue;\n onChange: (v: RecurrenceValue) => void;\n}) {\n return (\n <div className=\"hf-recurrence\">\n <Select\n className=\"hf-recurrence__select\"\n aria-label=\"重复频率\"\n value={value.frequency}\n options={[\n { value: \"none\", label: \"不重复\" },\n { value: \"daily\", label: \"每天\" },\n { value: \"weekly\", label: \"每周\" },\n { value: \"monthly\", label: \"每月\" },\n ]}\n onChange={(e) =>\n onChange({\n ...value,\n frequency: e.target.value as RecurrenceValue[\"frequency\"],\n })\n }\n />\n <input\n aria-label=\"重复间隔\"\n type=\"number\"\n min={1}\n value={value.interval}\n onChange={(e) => onChange({ ...value, interval: +e.target.value })}\n />\n </div>\n );\n}\nexport interface TimezoneOption {\n value: string;\n label: string;\n offset: string;\n}\nexport function TimezoneSelect({\n options,\n value,\n onChange,\n}: {\n options: readonly TimezoneOption[];\n value: string;\n onChange: (v: string) => void;\n}) {\n return (\n <Select\n aria-label=\"时区\"\n className=\"hf-timezone\"\n value={value}\n options={options.map((option) => ({\n value: option.value,\n label: `${option.label} (${option.offset})`,\n }))}\n onChange={(e) => onChange(e.target.value)}\n />\n );\n}\nexport type AvailabilityState =\n | \"available\"\n | \"busy\"\n | \"tentative\"\n | \"unavailable\";\nexport function AvailabilityGrid({\n people,\n slots,\n value,\n}: {\n people: readonly { id: string; name: ReactNode }[];\n slots: readonly string[];\n value: Readonly<Record<string, Readonly<Record<string, AvailabilityState>>>>;\n}) {\n return (\n <div className=\"hf-availability\">\n <table>\n <thead>\n <tr>\n <th>成员</th>\n {slots.map((s) => (\n <th key={s}>{s}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {people.map((p) => (\n <tr key={p.id}>\n <th>{p.name}</th>\n {slots.map((s) => (\n <td key={s}>\n <i className={`is-${value[p.id]?.[s] ?? \"unavailable\"}`} />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n","import type { ElementType, HTMLAttributes } from 'react';\n\nexport type TypographyVariant = 'display' | 'h1' | 'h2' | 'h3' | 'body' | 'body-sm' | 'caption' | 'code';\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> { as?: 'h1' | 'h2' | 'h3' | 'h4' | 'p' | 'span' | 'code'; variant?: TypographyVariant; muted?: boolean; truncate?: boolean; }\n\nexport function Typography({ as, variant = 'body', muted, truncate, className = '', ...props }: TypographyProps) {\n const defaults: Partial<Record<TypographyVariant, ElementType>> = { display: 'h1', h1: 'h1', h2: 'h2', h3: 'h3', code: 'code' };\n const Tag: ElementType = as ?? defaults[variant] ?? 'p';\n return <Tag className={`hf-typography hf-typography--${variant}${muted ? ' is-muted' : ''}${truncate ? ' is-truncated' : ''} ${className}`} {...props} />;\n}\n","import type { ReactNode } from 'react';\n\nexport interface NavigationItem {\n key: string;\n label: string;\n href?: string;\n icon?: ReactNode;\n description?: string;\n children?: readonly NavigationItem[];\n}\n\nexport interface NavigationSelectionProps {\n activeKey?: string;\n onItemSelect?: (item: NavigationItem) => void;\n}\n\nexport function activateNavigationItem(item: NavigationItem, onItemSelect?: (item: NavigationItem) => void) {\n onItemSelect?.(item);\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface FloatingNavProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n action?: ReactNode;\n}\n\nexport function FloatingNav({ brand, items, action, activeKey, onItemSelect, className = '', ...props }: FloatingNavProps) {\n return (\n <nav className={`hf-floating-nav ${className}`.trim()} aria-label=\"主导航\" {...props}>\n <div className=\"hf-floating-nav__brand\">{brand}</div>\n <div className=\"hf-floating-nav__items\">\n {items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => activateNavigationItem(item, onItemSelect)}>{item.label}</a>)}\n </div>\n {action && <div className=\"hf-floating-nav__action\">{action}</div>}\n </nav>\n );\n}\n","import { useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand?: ReactNode;\n items: readonly NavigationItem[];\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n appearance?: 'flush' | 'floating' | 'inset';\n}\n\nexport function Sidebar({ brand, items, activeKey, collapsed, defaultCollapsed = false, onCollapsedChange, onItemSelect, appearance = 'flush', className = '', ...props }: SidebarProps) {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const isCollapsed = collapsed ?? internalCollapsed;\n const toggle = () => {\n const next = !isCollapsed;\n if (collapsed === undefined) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n };\n return (\n <aside className={`hf-sidebar hf-sidebar--${appearance} ${isCollapsed ? 'hf-sidebar--collapsed' : ''} ${className}`.trim()} {...props}>\n <div className=\"hf-sidebar__top\">{brand && <div className=\"hf-sidebar__brand\">{brand}</div>}<button className=\"hf-sidebar__collapse\" type=\"button\" onClick={toggle} aria-label={isCollapsed ? '展开侧边栏' : '收起侧边栏'} aria-expanded={!isCollapsed}><Icon name=\"arrow-right\" size={17} /></button></div>\n <nav aria-label=\"侧边导航\">\n {items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} title={isCollapsed ? item.label : undefined} onClick={() => activateNavigationItem(item, onItemSelect)}><span className=\"hf-sidebar__icon\">{item.icon ?? item.label.slice(0, 1)}</span><span className=\"hf-sidebar__label\">{item.label}</span></a>)}\n </nav>\n </aside>\n );\n}\n","import type { HTMLAttributes } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n items: readonly NavigationItem[];\n separator?: string;\n}\n\nexport function Breadcrumb({ items, separator = '/', onItemSelect, className = '', ...props }: BreadcrumbProps) {\n return (\n <nav className={`hf-breadcrumb ${className}`.trim()} aria-label=\"面包屑\" {...props}>\n <ol>{items.map((item, index) => {\n const current = index === items.length - 1;\n return <li key={item.key}>{current ? <span aria-current=\"page\">{item.label}</span> : <a href={item.href ?? '#'} onClick={() => activateNavigationItem(item, onItemSelect)}>{item.label}</a>}{!current && <i aria-hidden=\"true\">{separator}</i>}</li>;\n })}</ol>\n </nav>\n );\n}\n","import { useState, type HTMLAttributes } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport { Icon } from '../foundations/Icon';\n\ninterface BaseMenuProps extends HTMLAttributes<HTMLDivElement>, NavigationSelectionProps {\n label: string;\n items: readonly NavigationItem[];\n}\n\nexport function DropdownMenu({ label, items, activeKey, onItemSelect, className = '', ...props }: BaseMenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div ref={ref} className={`hf-menu ${className}`.trim()} {...props}><button type=\"button\" aria-expanded={open} aria-haspopup=\"menu\" onClick={() => setOpen((value) => !value)}><span>{label}</span><Icon className=\"hf-menu__chevron\" name=\"chevron-down\" size={16} /></button>{open && <div className=\"hf-menu__panel\" role=\"menu\">{items.map((item) => <a key={item.key} role=\"menuitem\" href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}>{item.label}</a>)}</div>}</div>;\n}\n\nexport function MegaMenu({ label, items, onItemSelect, className = '', ...props }: BaseMenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false });\n return <div ref={ref} className={`hf-menu hf-mega-menu ${className}`.trim()} {...props}><button type=\"button\" aria-expanded={open} aria-haspopup=\"menu\" onClick={() => setOpen((value) => !value)}><span>{label}</span><Icon className=\"hf-menu__chevron\" name=\"chevron-down\" size={16} /></button>{open && <div className=\"hf-mega-menu__panel\" role=\"menu\">{items.map((group) => <section key={group.key}><h3>{group.label}</h3>{group.children?.map((item) => <a key={item.key} role=\"menuitem\" href={item.href ?? '#'} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}><span>{item.icon}</span><span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span></a>)}</section>)}</div>}</div>;\n}\n","import { useId, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { activateNavigationItem, type NavigationItem, type NavigationSelectionProps } from './types';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport { Icon } from '../foundations/Icon';\n\nexport interface MobileNavigationProps extends HTMLAttributes<HTMLDivElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n mode?: 'drawer' | 'fullscreen';\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function MobileNavigation({ brand, items, mode = 'drawer', activeKey, open, onOpenChange, onItemSelect, className = '', ...props }: MobileNavigationProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = open ?? internalOpen;\n const panelId = useId();\n const setOpen = (next: boolean) => {\n if (open === undefined) setInternalOpen(next);\n onOpenChange?.(next);\n };\n const panelRef = useDismissibleLayer<HTMLElement>(isOpen, () => setOpen(false), true);\n return (\n <div className={`hf-mobile-nav ${className}`.trim()} {...props}>\n <div className=\"hf-mobile-nav__bar\"><div>{brand}</div><button type=\"button\" aria-label=\"打开导航\" aria-expanded={isOpen} aria-controls={panelId} onClick={() => setOpen(true)}><i /><i /><i /></button></div>\n {isOpen && <div className={`hf-mobile-nav__backdrop hf-mobile-nav__backdrop--${mode}`} onMouseDown={(event) => event.target === event.currentTarget && setOpen(false)}>\n <nav ref={panelRef} id={panelId} className=\"hf-mobile-nav__panel\" aria-label=\"移动导航\" tabIndex={-1}>\n <header><div>{brand}</div><button type=\"button\" aria-label=\"关闭导航\" onClick={() => setOpen(false)}><Icon name=\"close\" size={18} /></button></header>\n <div className=\"hf-mobile-nav__links\">{items.map((item, index) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} style={{ '--hf-nav-index': index } as React.CSSProperties} onClick={() => { activateNavigationItem(item, onItemSelect); setOpen(false); }}><span>{item.label}</span>{item.description && <small>{item.description}</small>}</a>)}</div>\n </nav>\n </div>}\n </div>\n );\n}\n","import { useEffect, useState, type HTMLAttributes } from 'react';\nimport type { NavigationItem, NavigationSelectionProps } from './types';\n\nexport interface ScrollspyProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n items: readonly NavigationItem[];\n rootMargin?: string;\n}\n\nexport function Scrollspy({ items, activeKey, onItemSelect, rootMargin = '-20% 0px -65%', className = '', ...props }: ScrollspyProps) {\n const [observedKey, setObservedKey] = useState(items[0]?.key);\n const currentKey = activeKey ?? observedKey;\n useEffect(() => {\n if (activeKey || !('IntersectionObserver' in window)) return;\n const observer = new IntersectionObserver((entries) => {\n const visible = entries.find((entry) => entry.isIntersecting);\n if (visible?.target.id) setObservedKey(visible.target.id);\n }, { rootMargin });\n items.forEach((item) => { const section = document.getElementById(item.key); if (section) observer.observe(section); });\n return () => observer.disconnect();\n }, [activeKey, items, rootMargin]);\n return <nav className={`hf-scrollspy ${className}`.trim()} aria-label=\"页内导航\" {...props}>{items.map((item) => <a key={item.key} href={item.href ?? `#${item.key}`} aria-current={currentKey === item.key ? 'location' : undefined} onClick={() => onItemSelect?.(item)}>{item.label}</a>)}</nav>;\n}\n","import { useEffect, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport type { NavigationItem, NavigationSelectionProps } from './types';\n\nexport interface ShrinkNavProps extends HTMLAttributes<HTMLElement>, NavigationSelectionProps {\n brand: ReactNode;\n items: readonly NavigationItem[];\n threshold?: number;\n action?: ReactNode;\n}\n\nexport function ShrinkNav({ brand, items, threshold = 48, action, activeKey, onItemSelect, className = '', ...props }: ShrinkNavProps) {\n const [compact, setCompact] = useState(false);\n useEffect(() => {\n let frame = 0;\n const update = () => { cancelAnimationFrame(frame); frame = requestAnimationFrame(() => setCompact(window.scrollY > threshold)); };\n update();\n window.addEventListener('scroll', update, { passive: true });\n return () => { cancelAnimationFrame(frame); window.removeEventListener('scroll', update); };\n }, [threshold]);\n return <nav className={`hf-shrink-nav ${compact ? 'hf-shrink-nav--compact' : ''} ${className}`.trim()} aria-label=\"滚动导航\" {...props}><div className=\"hf-shrink-nav__brand\">{brand}</div><div className=\"hf-shrink-nav__items\">{items.map((item) => <a key={item.key} href={item.href ?? '#'} aria-current={activeKey === item.key ? 'page' : undefined} onClick={() => onItemSelect?.(item)}>{item.label}</a>)}</div>{action}</nav>;\n}\n","import { useId, type KeyboardEvent, type ReactNode } from 'react';\nexport interface TabItem<T extends string = string> { key: T; label: ReactNode; content: ReactNode; badge?: ReactNode; disabled?: boolean; icon?: ReactNode }\nexport interface TabsProps<T extends string = string> { items: readonly TabItem<T>[]; value: T; onChange: (value: T) => void; variant?: 'line' | 'card' | 'pill' | 'underline' | 'vertical' | 'scroll'; label?: string }\nexport function Tabs<T extends string>({ items, value, onChange, variant = 'line', label = '内容标签' }: TabsProps<T>) {\n const id = useId(); const active = items.find((item) => item.key === value) ?? items[0];\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; event.preventDefault(); const enabled = items.filter((item) => !item.disabled); const current = enabled.findIndex((item) => item.key === value); const offset = event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -1 : 1; const next = enabled[(current + offset + enabled.length) % enabled.length]; if (next) onChange(next.key); };\n return <div className={`hf-tabs hf-tabs--${variant}`}><div role=\"tablist\" aria-label={label} onKeyDown={onKeyDown}>{items.map((item) => <button type=\"button\" role=\"tab\" id={`${id}-${item.key}`} aria-controls={`${id}-${item.key}-panel`} aria-selected={item.key === value} tabIndex={item.key === value ? 0 : -1} disabled={item.disabled} key={item.key} onClick={() => onChange(item.key)}>{item.icon}<span>{item.label}</span>{item.badge && <small>{item.badge}</small>}</button>)}</div>{active && <div role=\"tabpanel\" id={`${id}-${active.key}-panel`} aria-labelledby={`${id}-${active.key}`} tabIndex={0}>{active.content}</div>}</div>;\n}\n","import type { ReactNode } from 'react';\nexport interface StepItem { key: string; title: ReactNode; description?: ReactNode; disabled?: boolean; optional?: boolean }\nexport interface StepsProps { items: readonly StepItem[]; current: string; onChange?: (key: string) => void; orientation?: 'horizontal' | 'vertical' }\nexport function Steps({ items, current, onChange, orientation = 'horizontal' }: StepsProps) { const currentIndex = Math.max(0, items.findIndex((item) => item.key === current)); return <ol className={`hf-steps hf-steps--${orientation}`}>{items.map((item, index) => { const state = index < currentIndex ? 'complete' : index === currentIndex ? 'current' : 'upcoming'; return <li className={`is-${state}`} aria-current={state === 'current' ? 'step' : undefined} key={item.key}><button type=\"button\" disabled={item.disabled || !onChange} onClick={() => onChange?.(item.key)}><span>{state === 'complete' ? '✓' : index + 1}</span><span><strong>{item.title}</strong>{item.optional && <small>可选</small>}{item.description && <small>{item.description}</small>}</span></button></li>; })}</ol>; }\n","import { useEffect, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nexport interface CommandItem { key: string; label: string; description?: string; group?: string; shortcut?: string; icon?: ReactNode; disabled?: boolean }\nexport interface CommandPaletteProps { open: boolean; onOpenChange: (open: boolean) => void; items: readonly CommandItem[]; onSelect: (key: string) => void; placeholder?: string }\nexport function CommandPalette({ open, onOpenChange, items, onSelect, placeholder = '输入命令或搜索…' }: CommandPaletteProps) {\n const [query, setQuery] = useState(''); const [active, setActive] = useState(0); const enabled = useMemo(() => items.filter((item) => !item.disabled && `${item.label} ${item.description ?? ''} ${item.group ?? ''}`.toLowerCase().includes(query.toLowerCase())), [items, query]); const dialogRef = useDismissibleLayer<HTMLDivElement>(open, () => onOpenChange(false), true);\n useEffect(() => { if (!open) { setQuery(''); setActive(0); } }, [open]);\n const keydown = (event: KeyboardEvent<HTMLInputElement>) => { if (!enabled.length) return; if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setActive((current) => (current + (event.key === 'ArrowDown' ? 1 : -1) + enabled.length) % enabled.length); } else if (event.key === 'Home' || event.key === 'End') { event.preventDefault(); setActive(event.key === 'Home' ? 0 : enabled.length - 1); } else if (event.key === 'Enter') { event.preventDefault(); const item = enabled[active]; if (item) { onSelect(item.key); onOpenChange(false); } } };\n if (!open) return null;\n return createPortal(<div className=\"hf-command-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onOpenChange(false)}><div ref={dialogRef} tabIndex={-1} className=\"hf-command\" role=\"dialog\" aria-modal=\"true\" aria-label=\"命令面板\"><div className=\"hf-command__search\"><span aria-hidden=\"true\">⌕</span><input autoFocus role=\"combobox\" aria-expanded=\"true\" aria-controls=\"hf-command-list\" value={query} placeholder={placeholder} onChange={(event) => { setQuery(event.target.value); setActive(0); }} onKeyDown={keydown} /><kbd>Esc</kbd></div><div id=\"hf-command-list\" className=\"hf-command__list\" role=\"listbox\">{enabled.map((item, index) => <button type=\"button\" role=\"option\" aria-selected={index === active} key={item.key} onPointerMove={() => setActive(index)} onClick={() => { onSelect(item.key); onOpenChange(false); }}>{item.icon}<span><strong>{item.label}</strong>{item.description && <small>{item.description}</small>}</span>{item.shortcut && <kbd>{item.shortcut}</kbd>}</button>)}{!enabled.length && <div className=\"hf-command__empty\">没有匹配命令</div>}</div></div></div>, document.body);\n}\n","import type { CSSProperties, HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n columns?: number | 'auto';\n minItemWidth?: number;\n gap?: number;\n}\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> { size?: 'sm' | 'md' | 'lg' | 'full'; padding?: number; }\nexport function Container({ size = 'lg', padding = 24, className = '', style, ...props }: PropsWithChildren<ContainerProps>) {\n return <div className={`hf-container hf-container--${size} ${className}`.trim()} style={{ '--hf-container-padding': `${padding}px`, ...style } as CSSProperties} {...props} />;\n}\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> { direction?: 'row' | 'column'; gap?: number; align?: CSSProperties['alignItems']; justify?: CSSProperties['justifyContent']; wrap?: boolean; }\nexport function Stack({ direction = 'column', gap = 12, align, justify, wrap = false, className = '', style, ...props }: PropsWithChildren<StackProps>) {\n return <div className={`hf-stack hf-stack--${direction} ${className}`.trim()} style={{ '--hf-stack-gap': `${gap}px`, alignItems: align, justifyContent: justify, flexWrap: wrap ? 'wrap' : undefined, ...style } as CSSProperties} {...props} />;\n}\n\nexport function Grid({ columns = 'auto', minItemWidth = 240, gap = 16, className = '', style, ...props }: PropsWithChildren<GridProps>) {\n const gridStyle = {\n '--hf-grid-columns': columns === 'auto' ? `repeat(auto-fit, minmax(min(100%, ${minItemWidth}px), 1fr))` : `repeat(${columns}, minmax(0, 1fr))`,\n '--hf-grid-gap': `${gap}px`,\n ...style,\n } as CSSProperties;\n return <div className={`hf-grid ${className}`.trim()} style={gridStyle} {...props} />;\n}\n\nexport interface MasonryProps extends HTMLAttributes<HTMLDivElement> {\n columns?: number;\n minColumnWidth?: number;\n gap?: number;\n}\n\nexport function Masonry({ columns, minColumnWidth = 260, gap = 16, className = '', style, children, ...props }: PropsWithChildren<MasonryProps>) {\n const masonryStyle = {\n '--hf-masonry-columns': columns ?? 'auto',\n '--hf-masonry-width': `${minColumnWidth}px`,\n '--hf-masonry-gap': `${gap}px`,\n ...style,\n } as CSSProperties;\n return <div className={`hf-masonry ${className}`.trim()} style={masonryStyle} {...props}>{children}</div>;\n}\n\nexport interface PageLayoutProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'single' | 'sidebar-left' | 'sidebar-right' | 'split' | 'dashboard' | 'full-screen';\n sidebar?: ReactNode;\n header?: ReactNode;\n sidebarWidth?: number;\n}\n\nexport function PageLayout({ variant = 'single', sidebar, header, sidebarWidth = 280, className = '', style, children, ...props }: PropsWithChildren<PageLayoutProps>) {\n const layoutStyle = { '--hf-layout-sidebar': `${sidebarWidth}px`, ...style } as CSSProperties;\n return <div className={`hf-page-layout hf-page-layout--${variant} ${className}`.trim()} style={layoutStyle} {...props}>{header && <header className=\"hf-page-layout__header\">{header}</header>}{sidebar && <aside className=\"hf-page-layout__sidebar\">{sidebar}</aside>}<main className=\"hf-page-layout__main\">{children}</main></div>;\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n width?: number | string;\n height?: number | string;\n radius?: number | string;\n circle?: boolean;\n animated?: boolean;\n}\n\nexport function Skeleton({ width = '100%', height = 16, radius, circle, animated = true, className = '', style, ...props }: SkeletonProps) {\n const value = (input: number | string) => typeof input === 'number' ? `${input}px` : input;\n return <span aria-hidden=\"true\" className={`hf-skeleton ${animated ? 'is-animated' : ''} ${circle ? 'is-circle' : ''} ${className}`.trim()} style={{ width: value(width), height: value(height), borderRadius: radius ? value(radius) : undefined, ...style } as CSSProperties} {...props} />;\n}\n","import type { CSSProperties, HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nexport function Spinner({ label = '正在加载', size = 20, className = '' }: { label?: string; size?: number; className?: string }) {\n return <span className={`hf-loading-spinner ${className}`.trim()} role=\"status\" aria-label={label} style={{ '--hf-loading-size': `${size}px` } as CSSProperties} />;\n}\n\nexport function LoadingDots({ label = '正在加载' }: { label?: string }) {\n return <span className=\"hf-loading-dots\" role=\"status\" aria-label={label}><i /><i /><i /></span>;\n}\n\nexport function ProgressBar({ value, label, indeterminate = false, className = '' }: { value?: number; label?: ReactNode; indeterminate?: boolean; className?: string }) {\n const percent = Math.min(100, Math.max(0, value ?? 0));\n return <div className={`hf-progress ${indeterminate ? 'is-indeterminate' : ''} ${className}`.trim()}>{label && <div className=\"hf-progress__label\"><span>{label}</span>{!indeterminate && <strong>{percent}%</strong>}</div>}<div className=\"hf-progress__track\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={100} aria-valuenow={indeterminate ? undefined : percent}><i style={{ '--hf-progress': `${percent}%` } as CSSProperties} /></div></div>;\n}\n\nexport function ProgressRing({ value, size = 72, label }: { value: number; size?: number; label?: string }) {\n const percent = Math.min(100, Math.max(0, value));\n return <span className=\"hf-progress-ring\" role=\"progressbar\" aria-label={label} aria-valuemin={0} aria-valuemax={100} aria-valuenow={percent} style={{ '--hf-ring-value': `${percent * 3.6}deg`, '--hf-ring-size': `${size}px` } as CSSProperties}><strong>{percent}%</strong></span>;\n}\n\nexport interface LoadingOverlayProps extends HTMLAttributes<HTMLDivElement> { active?: boolean; label?: string }\nexport function LoadingOverlay({ active = true, label = '正在准备内容', className = '', children, ...props }: PropsWithChildren<LoadingOverlayProps>) {\n return <div className={`hf-loading-overlay ${className}`.trim()} aria-busy={active} {...props}>{children}{active && <div className=\"hf-loading-overlay__veil\" role=\"status\"><Spinner label={label} size={28} /><span>{label}</span></div>}</div>;\n}\n","import { useId, useState, type ReactNode } from 'react';\nimport type { SelectOption } from './Select';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface MultiSelectProps { label?: string; options: readonly SelectOption[]; value: readonly string[]; onChange: (value: string[]) => void; placeholder?: string; max?: number; hint?: ReactNode; disabled?: boolean }\nexport function MultiSelect({ label, options, value, onChange, placeholder = '请选择', max, hint, disabled }: MultiSelectProps) {\n const [open, setOpen] = useState(false); const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const listId = useId();\n const toggle = (next: string) => { const selected = value.includes(next); if (!selected && max && value.length >= max) return; onChange(selected ? value.filter((item) => item !== next) : [...value, next]); };\n return <div className=\"hf-field hf-multiselect\" ref={rootRef}>{label && <span className=\"hf-field__label\">{label}</span>}<div className=\"hf-multiselect__trigger\" role=\"combobox\" tabIndex={disabled ? -1 : 0} aria-disabled={disabled} aria-expanded={open} aria-controls={listId} onClick={() => !disabled && setOpen(!open)} onKeyDown={(event) => { if (!disabled && (event.key === 'Enter' || event.key === ' ')) { event.preventDefault(); setOpen(!open); } }}><span>{value.length ? value.map((item) => { const option = options.find((candidate) => candidate.value === item); return <i key={item}>{option?.label}<button type=\"button\" aria-label={`移除 ${String(option?.label)}`} onClick={(event) => { event.stopPropagation(); toggle(item); }}><Icon name=\"close\" size={13} /></button></i>; }) : <em>{placeholder}</em>}</span><Icon name=\"chevron-down\" size={16} className=\"hf-multiselect__chevron\" /></div>{open && <div id={listId} className=\"hf-multiselect__menu\" role=\"listbox\" aria-multiselectable=\"true\">{options.map((option) => <button type=\"button\" role=\"option\" aria-selected={value.includes(option.value)} key={option.value} disabled={option.disabled} onClick={() => toggle(option.value)}><span>{option.label}</span><i>{value.includes(option.value) ? '✓' : ''}</i></button>)}</div>}{hint && <span className=\"hf-field__hint\">{hint}</span>}</div>;\n}\n","import { useId, type ReactNode } from 'react';\n\nexport interface ChoiceOption<T extends string = string> {\n label: ReactNode;\n value: T;\n description?: ReactNode;\n disabled?: boolean;\n}\n\ninterface ChoiceGroupProps<T extends string> {\n label?: string;\n options: readonly ChoiceOption<T>[];\n value?: T | T[];\n defaultValue?: T | T[];\n onChange?: (value: T | T[]) => void;\n type?: 'radio' | 'checkbox';\n direction?: 'row' | 'column';\n disabled?: boolean;\n name?: string;\n}\n\nexport function ChoiceGroup<T extends string>({ label, options, value, defaultValue, onChange, type = 'radio', direction = 'column', disabled, name }: ChoiceGroupProps<T>) {\n const id = useId();\n const groupName = name ?? id;\n const values = Array.isArray(value) ? value : value ? [value] : undefined;\n const defaults = Array.isArray(defaultValue) ? defaultValue : defaultValue ? [defaultValue] : [];\n return <fieldset className={`hf-choice-group hf-choice-group--${direction}`} disabled={disabled}>\n {label && <legend>{label}</legend>}\n {options.map((option) => {\n const checked = values?.includes(option.value);\n return <label className=\"hf-choice\" key={option.value}>\n <input type={type} name={type === 'radio' ? groupName : `${groupName}-${option.value}`} value={option.value} checked={checked} defaultChecked={values ? undefined : defaults.includes(option.value)} disabled={option.disabled} onChange={(event) => {\n if (type === 'radio') onChange?.(option.value);\n else {\n const next = new Set(values ?? defaults);\n event.currentTarget.checked ? next.add(option.value) : next.delete(option.value);\n onChange?.([...next]);\n }\n }} />\n <span className=\"hf-choice__control\" aria-hidden=\"true\" />\n <span className=\"hf-choice__copy\"><strong>{option.label}</strong>{option.description && <small>{option.description}</small>}</span>\n </label>;\n })}\n </fieldset>;\n}\n\nexport function RadioGroup<T extends string>(props: Omit<ChoiceGroupProps<T>, 'type' | 'value' | 'defaultValue' | 'onChange'> & { value?: T; defaultValue?: T; onChange?: (value: T) => void }) {\n return <ChoiceGroup {...props} type=\"radio\" onChange={(next) => props.onChange?.(next as T)} />;\n}\n\nexport function CheckboxGroup<T extends string>(props: Omit<ChoiceGroupProps<T>, 'type' | 'value' | 'defaultValue' | 'onChange'> & { value?: T[]; defaultValue?: T[]; onChange?: (value: T[]) => void }) {\n return <ChoiceGroup {...props} type=\"checkbox\" onChange={(next) => props.onChange?.(next as T[])} />;\n}\n","import { useState, type FormEvent } from 'react';\nimport { Input, type InputProps } from '../components/Input';\n\nexport interface ValidationRule {\n validate: (value: string) => boolean;\n message: string;\n}\n\nexport interface ValidatedInputProps extends Omit<InputProps, 'error' | 'onChange' | 'onBlur'> {\n value: string;\n rules: readonly ValidationRule[];\n validateOn?: 'blur' | 'change';\n onChange: (value: string) => void;\n onValidityChange?: (valid: boolean) => void;\n}\n\nexport function validateValue(value: string, rules: readonly ValidationRule[]) {\n return rules.find((rule) => !rule.validate(value))?.message;\n}\n\nexport function ValidatedInput({ value, rules, validateOn = 'blur', onChange, onValidityChange, ...props }: ValidatedInputProps) {\n const [touched, setTouched] = useState(false);\n const error = touched ? validateValue(value, rules) : undefined;\n const update = (next: string) => {\n onChange(next);\n if (validateOn === 'change') setTouched(true);\n onValidityChange?.(!validateValue(next, rules));\n };\n return <Input {...props} value={value} error={error} onChange={(event) => update(event.target.value)} onBlur={() => setTouched(true)} />;\n}\n\nexport function validateForm(event: FormEvent<HTMLFormElement>) {\n if (!event.currentTarget.checkValidity()) {\n event.preventDefault();\n event.currentTarget.reportValidity();\n return false;\n }\n return true;\n}\n","import { forwardRef, useId, type TextareaHTMLAttributes, type ReactNode } from 'react';\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> { label?: ReactNode; hint?: ReactNode; error?: ReactNode; resize?: 'none' | 'vertical' | 'both'; }\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea({ label, hint, error, resize = 'vertical', id, className = '', ...props }, ref) {\n const generated = useId(); const fieldId = id ?? generated; const message = error ?? hint; const messageId = message ? `${fieldId}-message` : undefined;\n return <label className=\"hf-field\" htmlFor={fieldId}>{label && <span className=\"hf-field__label\">{label}</span>}<textarea ref={ref} id={fieldId} className={`hf-textarea hf-textarea--${resize}${error ? ' hf-textarea--error' : ''} ${className}`} aria-invalid={error ? true : undefined} aria-describedby={messageId} {...props} />{message && <span id={messageId} className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{message}</span>}</label>;\n});\n","import { forwardRef, useEffect, useRef, type InputHTMLAttributes, type ReactNode } from 'react';\ntype BaseProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & { label: ReactNode; description?: ReactNode };\nexport const Checkbox = forwardRef<HTMLInputElement, BaseProps & { indeterminate?: boolean }>(function Checkbox({ label, description, indeterminate, className = '', ...props }, forwardedRef) {\n const local = useRef<HTMLInputElement>(null); useEffect(() => { if (local.current) local.current.indeterminate = Boolean(indeterminate); }, [indeterminate]);\n const setRef = (node: HTMLInputElement | null) => { local.current = node; if (typeof forwardedRef === 'function') forwardedRef(node); else if (forwardedRef) forwardedRef.current = node; };\n return <label className={`hf-choice-control ${className}`}><input ref={setRef} type=\"checkbox\" {...props} /><span className=\"hf-choice-control__mark\"><IconCheck /></span><span><strong>{label}</strong>{description && <small>{description}</small>}</span></label>;\n});\nexport const Radio = forwardRef<HTMLInputElement, BaseProps>(function Radio({ label, description, className = '', ...props }, ref) { return <label className={`hf-choice-control hf-choice-control--radio ${className}`}><input ref={ref} type=\"radio\" {...props} /><span className=\"hf-choice-control__mark\"><i /></span><span><strong>{label}</strong>{description && <small>{description}</small>}</span></label>; });\nfunction IconCheck() { return <svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"m3.5 8 3 3 6-6\" /></svg>; }\n","import {\n useState,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nconst iso = (date: Date) =>\n `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n\nexport interface CalendarProps {\n value?: string;\n onChange?: (value: string) => void;\n min?: string;\n max?: string;\n className?: string;\n}\n\nexport function Calendar({ value, onChange, min, max, className = '' }: CalendarProps) {\n const initial = value ? new Date(`${value}T00:00:00`) : new Date();\n const [view, setView] = useState(new Date(initial.getFullYear(), initial.getMonth(), 1));\n const first = view.getDay();\n const days = new Date(view.getFullYear(), view.getMonth() + 1, 0).getDate();\n const cells = Array.from(\n { length: Math.ceil((first + days) / 7) * 7 },\n (_, index) => index - first + 1,\n );\n\n return (\n <div className={`hf-calendar ${className}`}>\n <header>\n <button\n type=\"button\"\n aria-label=\"上个月\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() - 1, 1))}\n >\n <Icon name=\"chevron-down\" className=\"hf-calendar__prev\" />\n </button>\n <strong>{view.getFullYear()} 年 {view.getMonth() + 1} 月</strong>\n <button\n type=\"button\"\n aria-label=\"下个月\"\n onClick={() => setView(new Date(view.getFullYear(), view.getMonth() + 1, 1))}\n >\n <Icon name=\"chevron-down\" className=\"hf-calendar__next\" />\n </button>\n </header>\n <div className=\"hf-calendar__week\">\n {'日一二三四五六'.split('').map((day) => <span key={day}>{day}</span>)}\n </div>\n <div className=\"hf-calendar__days\">\n {cells.map((day, index) => {\n if (day < 1 || day > days) return <span key={index} />;\n const date = iso(new Date(view.getFullYear(), view.getMonth(), day));\n const disabled = Boolean((min && date < min) || (max && date > max));\n const stateClass = date === value ? 'is-selected' : date === iso(new Date()) ? 'is-today' : '';\n return (\n <button\n type=\"button\"\n key={date}\n disabled={disabled}\n className={stateClass}\n aria-pressed={date === value}\n onClick={() => onChange?.(date)}\n >\n {day}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport interface DatePickerProps {\n label?: ReactNode;\n value?: string;\n onChange: (value: string) => void;\n placeholder?: string;\n min?: string;\n max?: string;\n error?: ReactNode;\n}\n\nexport function DatePicker({\n label,\n value,\n onChange,\n placeholder = '选择日期',\n min,\n max,\n error,\n}: DatePickerProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), {\n autoFocus: false,\n });\n return (\n <div ref={rootRef} className=\"hf-field hf-date-picker\">\n {label && <span className=\"hf-field__label\">{label}</span>}\n <button\n type=\"button\"\n className={`hf-picker-trigger${error ? ' is-error' : ''}`}\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n <span className={value ? '' : 'is-placeholder'}>{value || placeholder}</span>\n <Icon name=\"chevron-down\" size={16} />\n </button>\n {open && (\n <div className=\"hf-date-picker__panel\">\n <Calendar\n value={value}\n min={min}\n max={max}\n onChange={(next) => {\n onChange(next);\n setOpen(false);\n }}\n />\n </div>\n )}\n {error && <span className=\"hf-field__hint hf-field__hint--error\">{error}</span>}\n </div>\n );\n}\n\nexport interface TimePickerProps {\n label?: ReactNode;\n value?: string;\n onChange: (value: string) => void;\n step?: number;\n}\n\nexport function TimePicker({ label, value, onChange, step = 30 }: TimePickerProps) {\n const [open, setOpen] = useState(false);\n const rootRef = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), {\n autoFocus: false,\n });\n const times = Array.from({ length: Math.ceil(1440 / step) }, (_, index) => {\n const minutes = index * step;\n return `${String(Math.floor(minutes / 60)).padStart(2, '0')}:${String(minutes % 60).padStart(2, '0')}`;\n });\n return (\n <div ref={rootRef} className=\"hf-field hf-time-picker\">\n {label && <span className=\"hf-field__label\">{label}</span>}\n <button\n type=\"button\"\n className=\"hf-picker-trigger\"\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n <span className={value ? '' : 'is-placeholder'}>{value || '选择时间'}</span>\n <Icon name=\"chevron-down\" size={16} />\n </button>\n {open && (\n <div className=\"hf-time-picker__panel\" role=\"listbox\">\n {times.map((time) => (\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={time === value}\n key={time}\n onClick={() => {\n onChange(time);\n setOpen(false);\n }}\n >\n {time}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n label?: ReactNode;\n value: number;\n onChange: (value: number) => void;\n showValue?: boolean;\n}\n\nexport function Slider({\n label,\n value,\n min = 0,\n max = 100,\n step = 1,\n onChange,\n showValue = true,\n ...props\n}: SliderProps) {\n const percent = (value - Number(min)) / (Number(max) - Number(min)) * 100;\n return (\n <label className=\"hf-slider\">\n <span>{label}{showValue && <strong>{value}</strong>}</span>\n <input\n type=\"range\"\n value={value}\n min={min}\n max={max}\n step={step}\n style={{ '--hf-slider-value': `${percent}%` } as CSSProperties}\n onChange={(event) => onChange(Number(event.target.value))}\n {...props}\n />\n </label>\n );\n}\n","import {\n createContext,\n useContext,\n type FormHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\n\nconst FormContext = createContext<{ disabled?: boolean }>({});\n\nexport interface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n layout?: 'vertical' | 'horizontal';\n disabled?: boolean;\n}\n\nexport function Form({\n layout = 'vertical',\n disabled,\n className = '',\n children,\n ...props\n}: FormProps) {\n return (\n <FormContext.Provider value={{ disabled }}>\n <form\n className={`hf-form hf-form--${layout} ${className}`.trim()}\n aria-disabled={disabled || undefined}\n {...props}\n >\n <fieldset className=\"hf-form__fieldset\" disabled={disabled}>\n {children}\n </fieldset>\n </form>\n </FormContext.Provider>\n );\n}\n\nexport interface FormItemProps extends HTMLAttributes<HTMLDivElement> {\n label?: ReactNode;\n required?: boolean;\n hint?: ReactNode;\n error?: ReactNode;\n children: ReactNode;\n}\n\nexport function FormItem({\n label,\n required,\n hint,\n error,\n children,\n className = '',\n ...props\n}: FormItemProps) {\n const { disabled } = useContext(FormContext);\n return (\n <div\n className={`hf-form-item${error ? ' is-error' : ''} ${className}`.trim()}\n aria-disabled={disabled || undefined}\n {...props}\n >\n {label && (\n <div className=\"hf-form-item__label\">\n {label}\n {required && <span aria-hidden=\"true\">*</span>}\n </div>\n )}\n <div>\n {children}\n {(error || hint) && <small className={error ? 'is-error' : ''}>{error || hint}</small>}\n </div>\n </div>\n );\n}\n","import {\n useId,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport type UploadRejectionReason =\n | 'file-too-large'\n | 'file-type-not-accepted'\n | 'too-many-files';\n\nexport interface UploadRejection {\n file: File;\n reason: UploadRejectionReason;\n message: string;\n}\n\ninterface UploadValidationOptions {\n accept?: string;\n maxFiles?: number;\n maxSize?: number;\n}\n\ninterface UploadValidationResult {\n accepted: File[];\n rejected: UploadRejection[];\n}\n\nexport interface UploadProps extends UploadValidationOptions {\n label?: ReactNode;\n multiple?: boolean;\n onFiles: (files: File[]) => void;\n onReject?: (rejections: UploadRejection[]) => void;\n hint?: ReactNode;\n disabled?: boolean;\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes >= 1024 * 1024) {\n const megabytes = bytes / (1024 * 1024);\n return `${Number.isInteger(megabytes) ? megabytes : megabytes.toFixed(1)} MB`;\n }\n if (bytes >= 1024) return `${Math.ceil(bytes / 1024)} KB`;\n return `${bytes} B`;\n}\n\nfunction acceptsFile(file: File, accept?: string) {\n if (!accept?.trim()) return true;\n const fileName = file.name.toLowerCase();\n const mimeType = file.type.toLowerCase();\n\n return accept\n .split(',')\n .map((value) => value.trim().toLowerCase())\n .filter(Boolean)\n .some((rule) => {\n if (rule.startsWith('.')) return fileName.endsWith(rule);\n if (rule.endsWith('/*')) return mimeType.startsWith(rule.slice(0, -1));\n return mimeType === rule;\n });\n}\n\nfunction validateUploadFiles(\n files: readonly File[],\n options: UploadValidationOptions = {},\n): UploadValidationResult {\n const accepted: File[] = [];\n const rejected: UploadRejection[] = [];\n const limit = options.maxFiles ?? Number.POSITIVE_INFINITY;\n\n files.forEach((file) => {\n if (!acceptsFile(file, options.accept)) {\n rejected.push({ file, reason: 'file-type-not-accepted', message: '不支持该文件类型' });\n return;\n }\n if (options.maxSize !== undefined && file.size > options.maxSize) {\n rejected.push({\n file,\n reason: 'file-too-large',\n message: `文件不能超过 ${formatFileSize(options.maxSize)}`,\n });\n return;\n }\n if (accepted.length >= limit) {\n rejected.push({\n file,\n reason: 'too-many-files',\n message: `最多只能选择 ${limit} 个文件`,\n });\n return;\n }\n accepted.push(file);\n });\n\n return { accepted, rejected };\n}\n\nexport function Upload({\n label = '上传文件',\n accept,\n multiple,\n maxFiles,\n maxSize,\n onFiles,\n onReject,\n hint,\n disabled,\n}: UploadProps) {\n const id = useId();\n const ref = useRef<HTMLInputElement>(null);\n const [dragging, setDragging] = useState(false);\n const [rejections, setRejections] = useState<UploadRejection[]>([]);\n\n const takeFiles = (list: FileList | null) => {\n const result = validateUploadFiles(Array.from(list ?? []), {\n accept,\n maxFiles,\n maxSize,\n });\n setRejections(result.rejected);\n onFiles(result.accepted);\n if (result.rejected.length) onReject?.(result.rejected);\n };\n\n return (\n <div className=\"hf-upload\">\n <input\n ref={ref}\n id={id}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={(event: ChangeEvent<HTMLInputElement>) => takeFiles(event.target.files)}\n />\n <button\n type=\"button\"\n disabled={disabled}\n className={dragging ? 'is-dragging' : ''}\n onClick={() => ref.current?.click()}\n onDragOver={(event) => {\n event.preventDefault();\n if (!disabled) setDragging(true);\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={(event) => {\n event.preventDefault();\n setDragging(false);\n if (!disabled) takeFiles(event.dataTransfer.files);\n }}\n >\n <Icon name=\"inbox\" size={24} />\n <strong>{label}</strong>\n <span>拖放到这里,或点击选择</span>\n </button>\n {rejections.length > 0 && (\n <div className=\"hf-upload__errors\" role=\"alert\">\n {rejections.map(({ file, reason, message }, index) => (\n <span key={`${file.name}-${reason}-${index}`}>{file.name}:{message}</span>\n ))}\n </div>\n )}\n {hint && <small>{hint}</small>}\n </div>\n );\n}\n","import { useId, useMemo, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\nimport { Icon } from '../foundations/Icon';\n\nexport interface ComboboxOption { label: ReactNode; value: string; keywords?: string; disabled?: boolean }\nexport interface ComboboxProps { label?: ReactNode; options: readonly ComboboxOption[]; value?: string; onChange: (value: string) => void; placeholder?: string; hint?: ReactNode; error?: ReactNode; disabled?: boolean; emptyText?: ReactNode }\n\nexport function Combobox({ label, options, value = '', onChange, placeholder = '搜索或选择', hint, error, disabled, emptyText = '没有匹配项' }: ComboboxProps) {\n const id = useId(); const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLDivElement>(open, () => setOpen(false), { autoFocus: false }); const [query, setQuery] = useState(''); const [active, setActive] = useState(0);\n const selected = options.find((item) => item.value === value);\n const filtered = useMemo(() => options.filter((item) => `${typeof item.label === 'string' ? item.label : item.value} ${item.keywords ?? ''}`.toLowerCase().includes(query.toLowerCase())), [options, query]);\n const choose = (next: string) => { onChange(next); setQuery(''); setOpen(false); };\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => { if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); setOpen(true); setActive((current) => Math.max(0, Math.min(filtered.length - 1, current + (event.key === 'ArrowDown' ? 1 : -1)))); } else if (event.key === 'Enter' && open) { event.preventDefault(); const option = filtered[active]; if (option && !option.disabled) choose(option.value); } else if (event.key === 'Escape') setOpen(false); };\n return <div className=\"hf-field hf-combobox\" ref={root}>{label && <label className=\"hf-field__label\" htmlFor={id}>{label}</label>}<div className={`hf-combobox__control${open ? ' is-open' : ''}${error ? ' is-error' : ''}`}><input id={id} role=\"combobox\" aria-expanded={open} aria-controls={`${id}-listbox`} aria-autocomplete=\"list\" aria-invalid={Boolean(error)} disabled={disabled} placeholder={selected && !open ? String(selected.label) : placeholder} value={open ? query : selected ? String(selected.label) : ''} onFocus={() => setOpen(true)} onChange={(event) => { setQuery(event.target.value); setActive(0); setOpen(true); }} onKeyDown={onKeyDown} /><button type=\"button\" aria-label={open ? '关闭选项' : '打开选项'} disabled={disabled} onClick={() => setOpen((current) => !current)}><Icon name=\"chevron-down\" size={16} /></button></div>{open && <div id={`${id}-listbox`} className=\"hf-combobox__menu\" role=\"listbox\">{filtered.length ? filtered.map((option, index) => <button type=\"button\" role=\"option\" aria-selected={option.value === value} disabled={option.disabled} className={index === active ? 'is-active' : ''} key={option.value} onPointerMove={() => setActive(index)} onClick={() => choose(option.value)}><span>{option.label}</span>{option.value === value && <span aria-hidden=\"true\">✓</span>}</button>) : <div className=\"hf-combobox__empty\">{emptyText}</div>}</div>}{(error || hint) && <span className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{error ?? hint}</span>}</div>;\n}\n","import { useId, type ReactNode } from 'react';\n\nexport interface NumberInputProps { label?: ReactNode; value: number; onChange: (value: number) => void; min?: number; max?: number; step?: number; prefix?: ReactNode; suffix?: ReactNode; hint?: ReactNode; error?: ReactNode; disabled?: boolean }\nexport function NumberInput({ label, value, onChange, min, max, step = 1, prefix, suffix, hint, error, disabled }: NumberInputProps) {\n const id = useId(); const clamp = (next: number) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, next));\n return <div className=\"hf-field hf-number-input\">{label && <label className=\"hf-field__label\" htmlFor={id}>{label}</label>}<div className={`hf-number-input__control${error ? ' is-error' : ''}`}>{prefix && <span>{prefix}</span>}<input id={id} type=\"number\" value={value} min={min} max={max} step={step} disabled={disabled} aria-invalid={Boolean(error)} onChange={(event) => { const next = event.currentTarget.valueAsNumber; if (!Number.isNaN(next)) onChange(clamp(next)); }} /><div><button type=\"button\" disabled={disabled || (max !== undefined && value >= max)} aria-label=\"增加\" onClick={() => onChange(clamp(value + step))}>+</button><button type=\"button\" disabled={disabled || (min !== undefined && value <= min)} aria-label=\"减少\" onClick={() => onChange(clamp(value - step))}>−</button></div>{suffix && <span>{suffix}</span>}</div>{(error || hint) && <span className={`hf-field__hint${error ? ' hf-field__hint--error' : ''}`}>{error ?? hint}</span>}</div>;\n}\n","import { useState, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\nimport { Select } from './Select';\nexport interface CascaderOption { value: string; label: string; children?: readonly CascaderOption[]; disabled?: boolean }\nexport function Cascader({ options, value = [], onChange, label }: { options: readonly CascaderOption[]; value?: readonly string[]; onChange: (value: string[]) => void; label?: ReactNode }) {\n const levels: (readonly CascaderOption[])[] = [options]; let current = options; for (const key of value) { const next = current.find((item) => item.value === key)?.children; if (!next) break; levels.push(next); current = next; }\n return <div className=\"hf-field hf-cascader\">{label && <span className=\"hf-field__label\">{label}</span>}<div>{levels.map((items, level) => <Select aria-label={`第 ${level + 1} 级`} className=\"hf-cascader__level\" value={value[level] ?? ''} placeholder=\"请选择\" options={items.map((item) => ({ label: item.label, value: item.value, disabled: item.disabled }))} key={level} onChange={(event) => onChange([...value.slice(0, level), event.target.value])} />)}</div></div>;\n}\nexport interface TreeSelectOption { key: string; label: string; children?: readonly TreeSelectOption[]; disabled?: boolean }\nexport function TreeSelect({ options, value, onChange, label, placeholder = '选择节点' }: { options: readonly TreeSelectOption[]; value?: string; onChange: (value: string) => void; label?: ReactNode; placeholder?: string }) {\n const [open, setOpen] = useState(false); const flatten = (nodes: readonly TreeSelectOption[], depth = 0): { node: TreeSelectOption; depth: number }[] => nodes.flatMap((node) => [{ node, depth }, ...flatten(node.children ?? [], depth + 1)]); const all = flatten(options);\n return <div className=\"hf-field hf-tree-select\">{label && <span className=\"hf-field__label\">{label}</span>}<button type=\"button\" className=\"hf-picker-trigger\" aria-expanded={open} onClick={() => setOpen(!open)}><span>{all.find((item) => item.node.key === value)?.node.label ?? placeholder}</span><Icon className=\"hf-picker-trigger__chevron\" name=\"chevron-down\" size={16} /></button>{open && <div role=\"listbox\">{all.map(({ node, depth }) => <button type=\"button\" role=\"option\" aria-selected={node.key === value} disabled={node.disabled} style={{ paddingLeft: 12 + depth * 18 }} key={node.key} onClick={() => { onChange(node.key); setOpen(false); }}>{node.label}</button>)}</div>}</div>;\n}\nexport interface TransferItem { key: string; label: ReactNode; disabled?: boolean }\nexport function Transfer({ items, value, onChange, titles = ['可选项', '已选择'] }: { items: readonly TransferItem[]; value: readonly string[]; onChange: (value: string[]) => void; titles?: readonly [string, string] }) {\n const [marked, setMarked] = useState<string[]>([]); const pane = (selected: boolean) => <section><strong>{titles[selected ? 1 : 0]}</strong>{items.filter((item) => value.includes(item.key) === selected).map((item) => <label key={item.key}><input type=\"checkbox\" disabled={item.disabled} checked={marked.includes(item.key)} onChange={() => setMarked((keys) => keys.includes(item.key) ? keys.filter((key) => key !== item.key) : [...keys, item.key])} />{item.label}</label>)}</section>;\n return <div className=\"hf-transfer\">{pane(false)}<div><button type=\"button\" aria-label=\"移至已选择\" onClick={() => { onChange([...new Set([...value, ...marked])]); setMarked([]); }}>→</button><button type=\"button\" aria-label=\"移回可选项\" onClick={() => { onChange(value.filter((key) => !marked.includes(key))); setMarked([]); }}>←</button></div>{pane(true)}</div>;\n}\nexport function DateRangePicker({ label, value, onChange, min, max }: { label?: ReactNode; value: readonly [string, string]; onChange: (value: [string, string]) => void; min?: string; max?: string }) { return <div className=\"hf-field hf-date-range\">{label && <span className=\"hf-field__label\">{label}</span>}<div><input aria-label=\"开始日期\" type=\"date\" value={value[0]} min={min} max={value[1] || max} onChange={(event) => onChange([event.target.value, value[1]])} /><span>至</span><input aria-label=\"结束日期\" type=\"date\" value={value[1]} min={value[0] || min} max={max} onChange={(event) => onChange([value[0], event.target.value])} /></div></div>; }\nexport function SearchInput({ onSearch, loading, clearable = true, ...props }: Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & { onSearch: (value: string) => void; loading?: boolean; clearable?: boolean }) { const [value, setValue] = useState(String(props.defaultValue ?? props.value ?? '')); return <form className=\"hf-search-input\" role=\"search\" onSubmit={(event) => { event.preventDefault(); onSearch(value); }}><span aria-hidden=\"true\">⌕</span><input {...props} value={value} onChange={(event) => { setValue(event.target.value); props.onChange?.(event); }} />{clearable && value && <button type=\"button\" aria-label=\"清除搜索\" onClick={() => setValue('')}><Icon name=\"close\" size={14} /></button>}<button type=\"submit\" disabled={loading}>{loading ? '搜索中' : '搜索'}</button></form>; }\n","import { useId, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Button } from '../components/Button';\nimport { Icon } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface DrawerProps { open: boolean; title: string; children: ReactNode; onClose: () => void; footer?: ReactNode; side?: 'left' | 'right' | 'bottom'; size?: 'sm' | 'md' | 'lg' }\n\nexport function Drawer({ open, title, children, onClose, footer, side = 'right', size = 'md' }: DrawerProps) {\n const titleId = useId();\n const drawerRef = useDismissibleLayer<HTMLDivElement>(open, onClose, true);\n if (!open) return null;\n return createPortal(<div className=\"hf-drawer-backdrop\" onMouseDown={(event) => event.target === event.currentTarget && onClose()}>\n <div ref={drawerRef} className={`hf-drawer hf-drawer--${side} hf-drawer--${size}`} role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId} tabIndex={-1}>\n <header><h2 id={titleId}>{title}</h2><Button variant=\"quiet\" size=\"sm\" iconOnly leadingIcon={<Icon name=\"close\" size={16} />} onClick={onClose} aria-label=\"关闭抽屉\" /></header>\n <div className=\"hf-drawer__body\">{children}</div>{footer && <footer>{footer}</footer>}\n </div>\n </div>, document.body);\n}\n","import { cloneElement, isValidElement, useId, useState, type ReactElement, type ReactNode } from 'react';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface PopoverProps { trigger: ReactElement; children: ReactNode; open?: boolean; defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; placement?: 'top' | 'bottom' | 'left' | 'right'; label?: string }\n\nexport function Popover({ trigger, children, open, defaultOpen = false, onOpenChange, placement = 'bottom', label = '更多内容' }: PopoverProps) {\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const controlled = open !== undefined;\n const visible = controlled ? open : innerOpen;\n const contentId = useId();\n const update = (next: boolean) => { if (!controlled) setInnerOpen(next); onOpenChange?.(next); };\n const rootRef = useDismissibleLayer<HTMLSpanElement>(visible, () => update(false));\n const triggerProps = { 'aria-expanded': visible, 'aria-controls': visible ? contentId : undefined, 'aria-haspopup': 'dialog' as const, onClick: () => update(!visible) };\n return <span className=\"hf-popover\" ref={rootRef}>{isValidElement(trigger) && cloneElement(trigger, triggerProps)}{visible && <span id={contentId} role=\"dialog\" aria-label={label} className={`hf-popover__content hf-popover__content--${placement}`}>{children}</span>}</span>;\n}\n","import { cloneElement, useId, useState, type ReactElement, type ReactNode } from 'react';\nimport { Icon, type IconName } from '../foundations/Icon';\ntype StatusTone = 'info' | 'success' | 'warning' | 'danger';\nexport function Tooltip({ content, children, placement = 'top' }: { content: ReactNode; children: ReactElement; placement?: 'top' | 'right' | 'bottom' | 'left' }) { const [open, setOpen] = useState(false); const id = useId(); const trigger = cloneElement(children, { 'aria-describedby': open ? id : undefined } as object); return <span className=\"hf-tooltip\" onMouseEnter={() => setOpen(true)} onMouseLeave={() => setOpen(false)} onFocus={() => setOpen(true)} onBlur={() => setOpen(false)}>{trigger}{open && <span id={id} role=\"tooltip\" className={`hf-tooltip__bubble hf-tooltip__bubble--${placement}`}>{content}</span>}</span>; }\nexport function Alert({ tone = 'info', title, children, onClose, action }: { tone?: StatusTone; title: ReactNode; children?: ReactNode; onClose?: () => void; action?: ReactNode }) { const icon: Record<StatusTone, IconName> = { info: 'info', success: 'check', warning: 'warning', danger: 'error' }; return <div className={`hf-alert hf-alert--${tone}`} role={tone === 'danger' ? 'alert' : 'status'}><Icon name={icon[tone]} /><div><strong>{title}</strong>{children && <div>{children}</div>}{action && <div className=\"hf-alert__action\">{action}</div>}</div>{onClose && <button type=\"button\" onClick={onClose} aria-label=\"关闭提示\"><Icon name=\"close\" size={16} /></button>}</div>; }\n","import { cloneElement, isValidElement, useEffect, useId, useRef, useState, type ReactElement, type ReactNode } from 'react';\nimport { Button } from '../components/Button';\nimport { Icon, type IconName } from '../foundations/Icon';\nimport { useDismissibleLayer } from '../overlays/useOverlay';\n\nexport interface PopconfirmProps { trigger: ReactElement; title: ReactNode; description?: ReactNode; confirmText?: string; cancelText?: string; tone?: 'primary' | 'danger'; onConfirm: () => void }\nexport function Popconfirm({ trigger, title, description, confirmText = '确认', cancelText = '取消', tone = 'primary', onConfirm }: PopconfirmProps) { const [open, setOpen] = useState(false); const root = useDismissibleLayer<HTMLSpanElement>(open, () => setOpen(false), { autoFocus: false }); return <span className=\"hf-popconfirm\" ref={root}>{isValidElement(trigger) && cloneElement(trigger, { onClick: () => setOpen(true), 'aria-expanded': open } as object)}{open && <div role=\"alertdialog\" aria-modal=\"false\" className=\"hf-popconfirm__panel\"><strong>{title}</strong>{description && <p>{description}</p>}<div><Button size=\"sm\" variant=\"quiet\" onClick={() => setOpen(false)}>{cancelText}</Button><Button size=\"sm\" variant={tone === 'danger' ? 'danger' : 'primary'} onClick={() => { onConfirm(); setOpen(false); }}>{confirmText}</Button></div></div>}</span>; }\n\nexport interface NotificationProps { title: ReactNode; children?: ReactNode; tone?: 'info' | 'success' | 'warning' | 'danger'; time?: ReactNode; unread?: boolean; action?: ReactNode; onClose?: () => void }\nexport function Notification({ title, children, tone = 'info', time, unread, action, onClose }: NotificationProps) { const icons: Record<NonNullable<NotificationProps['tone']>, IconName> = { info: 'info', success: 'check', warning: 'warning', danger: 'error' }; return <article className={`hf-notification hf-notification--${tone}${unread ? ' is-unread' : ''}`}><span className=\"hf-notification__icon\"><Icon name={icons[tone]} size={18} /></span><div><header><strong>{title}</strong>{time && <time>{time}</time>}</header>{children && <p>{children}</p>}{action && <div className=\"hf-notification__action\">{action}</div>}</div>{onClose && <button type=\"button\" aria-label=\"关闭通知\" onClick={onClose}><Icon name=\"close\" size={15} /></button>}</article>; }\n\nexport interface ResultProps { status?: 'success' | 'error' | 'warning' | 'info' | '404' | '403'; title: ReactNode; description?: ReactNode; actions?: ReactNode; extra?: ReactNode }\nexport function Result({ status = 'info', title, description, actions, extra }: ResultProps) { const icon = status === 'success' ? '✓' : status === 'error' ? '×' : status === 'warning' ? '!' : status === 'info' ? 'i' : status; return <section className={`hf-result hf-result--${status}`}><span className=\"hf-result__icon\" aria-hidden=\"true\">{icon}</span><h2>{title}</h2>{description && <p>{description}</p>}{actions && <div className=\"hf-result__actions\">{actions}</div>}{extra && <div className=\"hf-result__extra\">{extra}</div>}</section>; }\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface StatisticCardProps extends HTMLAttributes<HTMLElement> { label: ReactNode; value: ReactNode; trend?: ReactNode; icon?: ReactNode; tone?: 'blue' | 'green' | 'violet' | 'amber' }\nexport function StatisticCard({ label, value, trend, icon, tone = 'blue', className = '', ...props }: StatisticCardProps) {\n return <article className={`hf-stat hf-stat--${tone} ${className}`.trim()} {...props}><div className=\"hf-stat__top\"><span>{label}</span>{icon && <i>{icon}</i>}</div><strong>{value}</strong>{trend && <small>{trend}</small>}<span className=\"hf-stat__glow\" aria-hidden=\"true\" /></article>;\n}\n/** COMPAT: StatisticCard remains available for existing consumers; Stat is the concise public name. */\nexport const Stat = StatisticCard;\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> { value: number; max?: number; label?: ReactNode; showValue?: boolean; size?: 'sm' | 'md' | 'lg'; tone?: 'primary' | 'success' | 'warning' }\nexport function Progress({ value, max = 100, label, showValue = true, size = 'md', tone = 'primary', className = '', ...props }: ProgressProps) {\n const percent = Math.min(100, Math.max(0, max ? value / max * 100 : 0));\n return <div className={`hf-progress hf-progress--${size} hf-progress--${tone} ${className}`.trim()} {...props}>{(label || showValue) && <div className=\"hf-progress__meta\"><span>{label}</span>{showValue && <strong>{Math.round(percent)}%</strong>}</div>}<div className=\"hf-progress__track\" role=\"progressbar\" aria-valuemin={0} aria-valuemax={max} aria-valuenow={value}><span style={{ '--hf-progress': `${percent}%` } as CSSProperties} /></div></div>;\n}\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> { value: number; max?: number; label?: ReactNode; size?: number; thickness?: number }\nexport function CircularProgress({ value, max = 100, label, size = 92, thickness = 8, className = '', ...props }: CircularProgressProps) {\n const percent = Math.min(100, Math.max(0, max ? value / max * 100 : 0));\n return <div className={`hf-circular-progress ${className}`.trim()} style={{ '--hf-circle': `${percent * 3.6}deg`, '--hf-circle-size': `${size}px`, '--hf-circle-thickness': `${thickness}px` } as CSSProperties} role=\"progressbar\" aria-valuemin={0} aria-valuemax={max} aria-valuenow={value} {...props}><span><strong>{Math.round(percent)}%</strong>{label && <small>{label}</small>}</span></div>;\n}\n\nexport interface StepProgressProps extends HTMLAttributes<HTMLOListElement> { steps: readonly ReactNode[]; current: number }\nexport function StepProgress({ steps, current, className = '', ...props }: StepProgressProps) {\n return <ol className={`hf-step-progress ${className}`.trim()} {...props}>{steps.map((step, index) => <li key={index} className={index < current ? 'is-complete' : index === current ? 'is-current' : ''}><span>{index < current ? '✓' : index + 1}</span><small>{step}</small></li>)}</ol>;\n}\n\nexport interface ActivityIndicatorProps extends HTMLAttributes<HTMLSpanElement> { variant?: 'spinner' | 'dots' | 'radar' | 'wave'; label?: string; size?: 'sm' | 'md' | 'lg' }\nexport function ActivityIndicator({ variant = 'spinner', label = '正在加载', size = 'md', className = '', ...props }: ActivityIndicatorProps) {\n return <span className={`hf-activity hf-activity--${variant} hf-activity--${size} ${className}`.trim()} role=\"status\" aria-label={label} {...props}>{variant === 'dots' && <><i /><i /><i /></>}{variant === 'wave' && Array.from({ length: 5 }, (_, index) => <i key={index} />)}{variant === 'radar' && <i />}</span>;\n}\n\nexport interface SparklineProps extends HTMLAttributes<SVGSVGElement> { data: readonly number[]; width?: number; height?: number; label?: string; filled?: boolean }\nexport function Sparkline({ data, width = 160, height = 48, label = '趋势图', filled = true, ...props }: SparklineProps) {\n const min = Math.min(...data); const max = Math.max(...data); const range = max - min || 1;\n const points = data.map((value, index) => `${data.length === 1 ? width / 2 : index / (data.length - 1) * width},${height - ((value - min) / range * (height - 8) + 4)}`).join(' ');\n const area = `0,${height} ${points} ${width},${height}`;\n return <svg className=\"hf-sparkline\" viewBox={`0 0 ${width} ${height}`} role=\"img\" aria-label={label} {...props}>{filled && <polygon points={area} className=\"hf-sparkline__area\" />}<polyline points={points} className=\"hf-sparkline__line\" /></svg>;\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { Icon } from '../foundations/Icon';\n\nexport interface TableColumn<T> { key: string; header: ReactNode; render?: (item: T, index: number) => ReactNode; align?: 'left' | 'center' | 'right'; width?: number | string; }\nexport interface TableProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> { columns: readonly TableColumn<T>[]; data: readonly T[]; rowKey: keyof T | ((item: T, index: number) => string | number); caption?: string; empty?: ReactNode; striped?: boolean; onRowClick?: (item: T, index: number) => void; }\nexport function Table<T extends object>({ columns, data, rowKey, caption, empty = '暂无数据', striped, onRowClick, className = '', ...props }: TableProps<T>) {\n const keyOf = (item: T, index: number) => typeof rowKey === 'function' ? rowKey(item, index) : String(item[rowKey]);\n return <div className={`hf-table-wrap ${className}`} {...props}><table className={`hf-table${striped ? ' hf-table--striped' : ''}`}>{caption && <caption>{caption}</caption>}<thead><tr>{columns.map((column) => <th key={column.key} style={{ textAlign: column.align, width: column.width }}>{column.header}</th>)}</tr></thead><tbody>{data.map((item, index) => <tr key={keyOf(item, index)} className={onRowClick ? 'is-clickable' : ''} onClick={() => onRowClick?.(item, index)} tabIndex={onRowClick ? 0 : undefined} onKeyDown={(event) => { if (onRowClick && (event.key === 'Enter' || event.key === ' ')) { event.preventDefault(); onRowClick(item, index); } }}>{columns.map((column) => <td key={column.key} style={{ textAlign: column.align }}>{column.render ? column.render(item, index) : String(item[column.key as keyof T] ?? '')}</td>)}</tr>)}{!data.length && <tr><td className=\"hf-table__empty\" colSpan={columns.length}>{empty}</td></tr>}</tbody></table></div>;\n}\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> { page: number; total: number; pageSize?: number; siblingCount?: number; onChange: (page: number) => void; }\nexport function Pagination({ page, total, pageSize = 10, siblingCount = 1, onChange, className = '', ...props }: PaginationProps) {\n const count = Math.max(1, Math.ceil(total / pageSize)); const current = Math.min(count, Math.max(1, page));\n const visible = Array.from({ length: count }, (_, i) => i + 1).filter((value) => value === 1 || value === count || Math.abs(value - current) <= siblingCount); const parts: (number | 'ellipsis')[] = [];\n visible.forEach((value, index) => { if (index && value - visible[index - 1]! > 1) parts.push('ellipsis'); parts.push(value); });\n return <nav className={`hf-pagination ${className}`} aria-label=\"分页\" {...props}><button disabled={current === 1} onClick={() => onChange(current - 1)} aria-label=\"上一页\"><Icon name=\"chevron-down\" size={16} className=\"hf-pagination__prev\" /></button>{parts.map((part, index) => part === 'ellipsis' ? <span key={`e-${index}`} aria-hidden=\"true\">…</span> : <button key={part} className={part === current ? 'is-active' : ''} aria-current={part === current ? 'page' : undefined} onClick={() => onChange(part)}>{part}</button>)}<button disabled={current === count} onClick={() => onChange(current + 1)} aria-label=\"下一页\"><Icon name=\"chevron-down\" size={16} className=\"hf-pagination__next\" /></button></nav>;\n}\n\nexport interface ListItem { key: string | number; title: ReactNode; description?: ReactNode; leading?: ReactNode; trailing?: ReactNode; }\nexport function List({ items, divided = true, className = '', ...props }: HTMLAttributes<HTMLUListElement> & { items: readonly ListItem[]; divided?: boolean }) { return <ul className={`hf-list${divided ? ' hf-list--divided' : ''} ${className}`} {...props}>{items.map((item) => <li key={item.key}>{item.leading && <span className=\"hf-list__leading\">{item.leading}</span>}<div><strong>{item.title}</strong>{item.description && <small>{item.description}</small>}</div>{item.trailing && <span className=\"hf-list__trailing\">{item.trailing}</span>}</li>)}</ul>; }\n\nexport interface DescriptionItem { key: string | number; label: ReactNode; value: ReactNode; span?: 1 | 2 | 3; }\nexport function Descriptions({ items, columns = 2, bordered, className = '', ...props }: HTMLAttributes<HTMLDListElement> & { items: readonly DescriptionItem[]; columns?: 1 | 2 | 3; bordered?: boolean }) { return <dl className={`hf-descriptions hf-descriptions--${columns}${bordered ? ' hf-descriptions--bordered' : ''} ${className}`} {...props}>{items.map((item) => <div key={item.key} style={{ gridColumn: `span ${Math.min(item.span ?? 1, columns)}` }}><dt>{item.label}</dt><dd>{item.value}</dd></div>)}</dl>; }\n","import type { ReactNode } from 'react';\nexport interface TimelineItem { key: string; title: ReactNode; description?: ReactNode; time?: ReactNode; status?: 'complete' | 'current' | 'upcoming' }\nexport function Timeline({ items, label = '时间轴' }: { items: readonly TimelineItem[]; label?: string }) { return <ol className=\"hf-timeline\" aria-label={label}>{items.map((item) => <li key={item.key} className={`hf-timeline--${item.status ?? 'upcoming'}`}><i aria-hidden=\"true\" /><div><strong>{item.title}</strong>{item.description && <p>{item.description}</p>}</div>{item.time && <time>{item.time}</time>}</li>)}</ol>; }\nexport interface InsightBoardProps { summary: ReactNode; trend: ReactNode; detail: ReactNode; heading?: ReactNode; filters?: ReactNode }\nexport function InsightBoard({ summary, trend, detail, heading, filters }: InsightBoardProps) { return <section className=\"hf-insight-board\">{(heading || filters) && <header><div>{heading}</div>{filters}</header>}<div className=\"hf-insight-board__summary\" aria-label=\"核心结果\">{summary}</div><div className=\"hf-insight-board__trend\" aria-label=\"变化趋势\">{trend}</div><div className=\"hf-insight-board__detail\" aria-label=\"明细与原因\">{detail}</div></section>; }\n","import type { ReactNode } from 'react';\nimport { Icon, type IconName } from '../foundations/Icon';\nexport function EmptyState({ icon = 'inbox', title, description, action, size = 'md' }: { icon?: IconName; title: ReactNode; description?: ReactNode; action?: ReactNode; size?: 'sm' | 'md' }) { return <div className={`hf-empty hf-empty--${size}`}><span className=\"hf-empty__icon\"><Icon name={icon} size={size === 'sm' ? 22 : 28} /></span><strong>{title}</strong>{description && <p>{description}</p>}{action && <div>{action}</div>}</div>; }\n","import { useMemo, useState, type ReactNode } from 'react';\n\nexport interface DataGridColumn<T> { key: string; header: ReactNode; render?: (item: T) => ReactNode; value?: (item: T) => string | number; sortable?: boolean; width?: string | number }\nexport interface DataGridProps<T> { columns: readonly DataGridColumn<T>[]; data: readonly T[]; rowKey: keyof T | ((item: T) => string); selectedKeys?: readonly string[]; onSelectionChange?: (keys: string[]) => void; empty?: ReactNode; caption?: string }\nexport function DataGrid<T extends object>({ columns, data, rowKey, selectedKeys = [], onSelectionChange, empty = '暂无数据', caption }: DataGridProps<T>) {\n const [sort, setSort] = useState<{ key: string; direction: 'asc' | 'desc' }>(); const keyOf = (item: T) => typeof rowKey === 'function' ? rowKey(item) : String(item[rowKey]);\n const rows = useMemo(() => { if (!sort) return [...data]; const column = columns.find((item) => item.key === sort.key); if (!column) return [...data]; return [...data].sort((a, b) => { const av = column.value?.(a) ?? String(a[column.key as keyof T] ?? ''); const bv = column.value?.(b) ?? String(b[column.key as keyof T] ?? ''); const compared = typeof av === 'number' && typeof bv === 'number' ? av - bv : String(av).localeCompare(String(bv), 'zh-CN'); return sort.direction === 'asc' ? compared : -compared; }); }, [columns, data, sort]);\n const all = data.length > 0 && data.every((item) => selectedKeys.includes(keyOf(item))); const changeAll = () => onSelectionChange?.(all ? [] : data.map(keyOf));\n return <div className=\"hf-data-grid\" onKeyDown={(event) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; const controls = [...event.currentTarget.querySelectorAll<HTMLElement>('button,input')]; const current = controls.indexOf(event.target as HTMLElement); if (current < 0) return; event.preventDefault(); const direction = event.key === 'ArrowLeft' || event.key === 'ArrowUp' ? -1 : 1; controls[(current + direction + controls.length) % controls.length]?.focus(); }}><table>\n {caption && <caption>{caption}</caption>}\n <thead><tr>\n {onSelectionChange && <th className=\"hf-data-grid__check\"><input type=\"checkbox\" aria-label=\"选择全部\" checked={all} onChange={changeAll} /></th>}\n {columns.map((column) => <th key={column.key} style={{ width: column.width }}>{column.sortable ? <button type=\"button\" onClick={() => setSort((current) => ({ key: column.key, direction: current?.key === column.key && current.direction === 'asc' ? 'desc' : 'asc' }))}>{column.header}<span aria-hidden=\"true\">{sort?.key === column.key ? (sort.direction === 'asc' ? '↑' : '↓') : '↕'}</span></button> : column.header}</th>)}\n </tr></thead>\n <tbody>{rows.map((item) => { const key = keyOf(item); return <tr key={key} className={selectedKeys.includes(key) ? 'is-selected' : ''}>{onSelectionChange && <td><input type=\"checkbox\" aria-label={`选择行 ${key}`} checked={selectedKeys.includes(key)} onChange={() => onSelectionChange(selectedKeys.includes(key) ? selectedKeys.filter((item) => item !== key) : [...selectedKeys, key])} /></td>}{columns.map((column) => <td key={column.key}>{column.render ? column.render(item) : String(item[column.key as keyof T] ?? '')}</td>)}</tr>; })}{!rows.length && <tr><td className=\"hf-data-grid__empty\" colSpan={columns.length + (onSelectionChange ? 1 : 0)}>{empty}</td></tr>}</tbody>\n </table></div>;\n}\n","import { useState, type ReactNode } from 'react';\nexport interface TreeNode { key: string; label: ReactNode; children?: readonly TreeNode[]; disabled?: boolean; icon?: ReactNode }\nexport interface TreeProps { nodes: readonly TreeNode[]; selectedKey?: string; onSelect?: (key: string) => void; defaultExpandedKeys?: readonly string[]; label?: string }\nexport function Tree({ nodes, selectedKey, onSelect, defaultExpandedKeys = [], label = '树形列表' }: TreeProps) { const [expanded, setExpanded] = useState<string[]>([...defaultExpandedKeys]); const render = (items: readonly TreeNode[], level: number): ReactNode => <ul role={level ? 'group' : 'tree'} aria-label={level ? undefined : label}>{items.map((node) => { const open = expanded.includes(node.key); const branch = Boolean(node.children?.length); return <li role=\"treeitem\" aria-level={level + 1} aria-expanded={branch ? open : undefined} aria-selected={node.key === selectedKey} key={node.key}><div className={node.key === selectedKey ? 'is-selected' : ''} style={{ paddingLeft: level * 18 + 8 }}>{branch ? <button type=\"button\" aria-label={open ? '收起' : '展开'} onClick={() => setExpanded((keys) => open ? keys.filter((key) => key !== node.key) : [...keys, node.key])}>{open ? '⌄' : '›'}</button> : <span />}{node.icon}<button type=\"button\" disabled={node.disabled} onClick={() => onSelect?.(node.key)}>{node.label}</button></div>{branch && open && render(node.children!, level + 1)}</li>; })}</ul>; return <div className=\"hf-tree\" onKeyDown={(event) => { const labels = [...event.currentTarget.querySelectorAll<HTMLButtonElement>('li[role=treeitem]>div>button:last-child:not(:disabled)')]; const current = labels.indexOf(event.target as HTMLButtonElement); if (current < 0) return; if (['ArrowDown','ArrowUp','Home','End'].includes(event.key)) { event.preventDefault(); const next = event.key === 'Home' ? 0 : event.key === 'End' ? labels.length - 1 : (current + (event.key === 'ArrowDown' ? 1 : -1) + labels.length) % labels.length; labels[next]?.focus(); } }}>{render(nodes, 0)}</div>; }\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface AuthLayoutProps {\n children: ReactNode;\n brand?: ReactNode;\n aside?: ReactNode;\n footer?: ReactNode;\n variant?: 'split' | 'card' | 'immersive' | 'step';\n backgroundImage?: string;\n currentStep?: number;\n steps?: number;\n}\n\nexport function AuthLayout({ children, brand, aside, footer, variant = 'card', backgroundImage, currentStep = 1, steps = 1 }: AuthLayoutProps) {\n const style = backgroundImage ? { '--hf-auth-image': `url(\"${backgroundImage}\")` } as CSSProperties : undefined;\n return <section className={`hf-auth hf-auth--${variant}`} style={style}>\n {brand && <header className=\"hf-auth__brand\">{brand}</header>}\n {aside && <aside className=\"hf-auth__aside\">{aside}</aside>}\n <main className=\"hf-auth__main\">\n {variant === 'step' && <div className=\"hf-auth__steps\" aria-label={`第 ${currentStep} 步,共 ${steps} 步`}>{Array.from({ length: steps }, (_, index) => <span key={index} className={index < currentStep ? 'is-active' : ''} />)}</div>}\n <div className=\"hf-auth__card\">{children}</div>\n {footer && <footer>{footer}</footer>}\n </main>\n </section>;\n}\n","import type { ReactNode } from 'react';\n\nexport interface HeroProps {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n visual?: ReactNode;\n proof?: ReactNode;\n align?: 'left' | 'center';\n kind?: 'product' | 'personal' | 'event' | 'commerce';\n}\n\nexport function Hero({ eyebrow, title, description, primaryAction, secondaryAction, visual, proof, align = 'left', kind = 'product' }: HeroProps) {\n return <section className={`hf-hero hf-hero--${align} hf-hero--${kind}`}>\n <div className=\"hf-hero__content\">{eyebrow && <div className=\"hf-hero__eyebrow\">{eyebrow}</div>}<h1>{title}</h1>{description && <p>{description}</p>}{(primaryAction || secondaryAction) && <div className=\"hf-hero__actions\">{primaryAction}{secondaryAction}</div>}{proof && <div className=\"hf-hero__proof\">{proof}</div>}</div>\n {visual && <div className=\"hf-hero__visual\">{visual}</div>}\n </section>;\n}\n","import { useState, type PointerEvent, type ReactNode } from 'react';\nexport interface ResizablePanelProps { primary: ReactNode; secondary: ReactNode; defaultSize?: number; minSize?: number; maxSize?: number; direction?: 'horizontal' | 'vertical'; onResize?: (size: number) => void }\nexport function ResizablePanel({ primary, secondary, defaultSize = 50, minSize = 20, maxSize = 80, direction = 'horizontal', onResize }: ResizablePanelProps) { const [size, setSize] = useState(defaultSize); const start = (event: PointerEvent<HTMLDivElement>) => { const root = event.currentTarget.parentElement!; event.currentTarget.setPointerCapture(event.pointerId); const move = (next: globalThis.PointerEvent) => { const rect = root.getBoundingClientRect(); const raw = direction === 'horizontal' ? (next.clientX - rect.left) / rect.width * 100 : (next.clientY - rect.top) / rect.height * 100; const value = Math.min(maxSize, Math.max(minSize, raw)); setSize(value); onResize?.(value); }; const end = () => { document.removeEventListener('pointermove', move); document.removeEventListener('pointerup', end); }; document.addEventListener('pointermove', move); document.addEventListener('pointerup', end); }; return <div className={`hf-resizable hf-resizable--${direction}`}><div style={{ flexBasis: `${size}%` }}>{primary}</div><div className=\"hf-resizable__handle\" role=\"separator\" aria-orientation={direction} aria-valuemin={minSize} aria-valuemax={maxSize} aria-valuenow={Math.round(size)} tabIndex={0} onPointerDown={start} onKeyDown={(event) => { if (!['ArrowLeft','ArrowRight','ArrowUp','ArrowDown'].includes(event.key)) return; event.preventDefault(); const grow = event.key === 'ArrowRight' || event.key === 'ArrowDown'; const value = Math.min(maxSize, Math.max(minSize, size + (grow ? 2 : -2))); setSize(value); onResize?.(value); }} /><div>{secondary}</div></div>; }\n","import type { ReactNode } from 'react';\nimport { Notification, type NotificationProps } from './Essentials';\nexport interface NotificationItem extends Omit<NotificationProps, 'onClose'> { key: string; content?: ReactNode }\nexport interface NotificationCenterProps { items: readonly NotificationItem[]; onRead?: (key: string) => void; onDismiss?: (key: string) => void; onReadAll?: () => void; empty?: ReactNode; title?: ReactNode }\nexport function NotificationCenter({ items, onRead, onDismiss, onReadAll, empty = '暂无通知', title = '通知中心' }: NotificationCenterProps) { const unread = items.filter((item) => item.unread).length; return <section className=\"hf-notification-center\"><header><div><strong>{title}</strong>{unread > 0 && <span>{unread}</span>}</div>{unread > 0 && onReadAll && <button type=\"button\" onClick={onReadAll}>全部已读</button>}</header><div>{items.length ? items.map(({ key, content, ...item }) => <div key={key} onClick={() => item.unread && onRead?.(key)}><Notification {...item} onClose={onDismiss ? () => onDismiss(key) : undefined}>{content}</Notification></div>) : <p className=\"hf-notification-center__empty\">{empty}</p>}</div></section>; }\n","import { useState, type ReactNode } from 'react';\nexport interface VirtualListProps<T> { items: readonly T[]; itemHeight: number; height: number; renderItem: (item: T, index: number) => ReactNode; itemKey: (item: T, index: number) => string | number; overscan?: number; label?: string }\nexport function VirtualList<T>({ items, itemHeight, height, renderItem, itemKey, overscan = 3, label = '虚拟列表' }: VirtualListProps<T>) { const [scrollTop, setScrollTop] = useState(0); const start = Math.max(0, Math.floor(scrollTop / itemHeight) - overscan); const end = Math.min(items.length, Math.ceil((scrollTop + height) / itemHeight) + overscan); return <div className=\"hf-virtual-list\" role=\"list\" aria-label={label} style={{ height }} onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}><div style={{ height: items.length * itemHeight, position: 'relative' }}>{items.slice(start, end).map((item, offset) => { const index = start + offset; return <div role=\"listitem\" key={itemKey(item, index)} style={{ height: itemHeight, left: 0, position: 'absolute', right: 0, top: index * itemHeight }}>{renderItem(item, index)}</div>; })}</div></div>; }\n","import { useState, type ReactNode } from 'react';\n\nexport interface JsonViewerProps { data: unknown; name?: string; defaultExpanded?: boolean; maxDepth?: number }\nfunction JsonNode({ name, value, depth, defaultExpanded, maxDepth }: { name?: string; value: unknown; depth: number; defaultExpanded: boolean; maxDepth: number }) { const complex = value !== null && typeof value === 'object'; const [open, setOpen] = useState(defaultExpanded && depth < maxDepth); if (!complex) return <div className=\"hf-json-viewer__row\"><span>{name !== undefined && `${name}: `}</span><code className={`is-${value === null ? 'null' : typeof value}`}>{value === null ? 'null' : JSON.stringify(value)}</code></div>; const entries = Object.entries(value as Record<string, unknown>); return <div className=\"hf-json-viewer__node\"><button type=\"button\" aria-expanded={open} onClick={() => setOpen(!open)}><span>{open ? '⌄' : '›'}</span><strong>{name ?? (Array.isArray(value) ? 'Array' : 'Object')}</strong><small>{Array.isArray(value) ? `[${entries.length}]` : `{${entries.length}}`}</small></button>{open && <div>{entries.map(([key, item]) => <JsonNode key={key} name={key} value={item} depth={depth + 1} defaultExpanded={defaultExpanded} maxDepth={maxDepth} />)}</div>}</div>; }\nexport function JsonViewer({ data, name, defaultExpanded = true, maxDepth = 2 }: JsonViewerProps) { return <div className=\"hf-json-viewer\" role=\"tree\" aria-label={name ?? 'JSON 查看器'}><JsonNode name={name} value={data} depth={0} defaultExpanded={defaultExpanded} maxDepth={maxDepth} /></div>; }\n\nexport interface DiffViewerProps { before: string; after: string; beforeLabel?: string; afterLabel?: string; mode?: 'split' | 'unified' }\ntype DiffLine = { kind: 'same' | 'add' | 'remove'; left?: string; right?: string; leftNo?: number; rightNo?: number };\nfunction compareLines(before: string, after: string): DiffLine[] { const a = before.split('\\n'), b = after.split('\\n'), matrix = Array.from({ length: a.length + 1 }, () => Array<number>(b.length + 1).fill(0)); for (let i = a.length - 1; i >= 0; i--) for (let j = b.length - 1; j >= 0; j--) matrix[i]![j] = a[i] === b[j] ? matrix[i + 1]![j + 1]! + 1 : Math.max(matrix[i + 1]![j]!, matrix[i]![j + 1]!); const rows: DiffLine[] = []; let i = 0, j = 0, leftNo = 1, rightNo = 1; while (i < a.length || j < b.length) { if (i < a.length && j < b.length && a[i] === b[j]) { rows.push({ kind: 'same', left: a[i++], right: b[j++], leftNo: leftNo++, rightNo: rightNo++ }); } else if (j < b.length && (i === a.length || matrix[i]![j + 1]! >= matrix[i + 1]![j]!)) { rows.push({ kind: 'add', right: b[j++], rightNo: rightNo++ }); } else { rows.push({ kind: 'remove', left: a[i++], leftNo: leftNo++ }); } } return rows; }\nfunction DiffCell({ number, marker, children }: { number?: number; marker: string; children?: ReactNode }) { return <div className=\"hf-diff-viewer__cell\"><span>{number ?? ''}</span><i>{marker}</i><code>{children ?? ''}</code></div>; }\nexport function DiffViewer({ before, after, beforeLabel = '修改前', afterLabel = '修改后', mode = 'split' }: DiffViewerProps) { const rows = compareLines(before, after); return <div className={`hf-diff-viewer hf-diff-viewer--${mode}`}><header><strong>{beforeLabel}</strong>{mode === 'split' && <strong>{afterLabel}</strong>}</header><div>{rows.map((row, index) => mode === 'split' ? <div className={`is-${row.kind}`} key={index}><DiffCell number={row.leftNo} marker={row.kind === 'remove' ? '−' : ' '}>{row.left}</DiffCell><DiffCell number={row.rightNo} marker={row.kind === 'add' ? '+' : ' '}>{row.right}</DiffCell></div> : <div className={`is-${row.kind}`} key={index}><DiffCell number={row.leftNo ?? row.rightNo} marker={row.kind === 'add' ? '+' : row.kind === 'remove' ? '−' : ' '}>{row.kind === 'add' ? row.right : row.left}</DiffCell></div>)}</div></div>; }\n","export interface QueryField { key: string; label: string; type?: 'text' | 'number' | 'date'; operators?: readonly QueryOperator[] }\nexport interface QueryOperator { value: string; label: string }\nexport interface QueryRule { id: string; field: string; operator: string; value: string }\nexport interface QueryBuilderProps { fields: readonly QueryField[]; rules: readonly QueryRule[]; onChange: (rules: QueryRule[]) => void; conjunction?: 'and' | 'or'; onConjunctionChange?: (value: 'and' | 'or') => void; disabled?: boolean }\nconst defaultOperators: readonly QueryOperator[] = [{ value: 'equals', label: '等于' }, { value: 'notEquals', label: '不等于' }, { value: 'contains', label: '包含' }];\nexport function QueryBuilder({ fields, rules, onChange, conjunction = 'and', onConjunctionChange, disabled }: QueryBuilderProps) { const update = (id: string, patch: Partial<QueryRule>) => onChange(rules.map((rule) => rule.id === id ? { ...rule, ...patch } : rule)); const add = () => { const field = fields[0]; if (!field) return; const operator = (field.operators ?? defaultOperators)[0]?.value ?? 'equals'; onChange([...rules, { id: `rule-${Date.now()}`, field: field.key, operator, value: '' }]); }; return <div className=\"hf-query-builder\"><header><strong>满足</strong><Select className=\"hf-query-builder__select\" aria-label=\"条件关系\" value={conjunction} disabled={disabled} options={[{ value: 'and', label: '全部条件' }, { value: 'or', label: '任一条件' }]} onChange={(event) => onConjunctionChange?.(event.target.value as 'and' | 'or')} /></header><div>{rules.map((rule, index) => { const field = fields.find((item) => item.key === rule.field) ?? fields[0]; const operators = field?.operators ?? defaultOperators; return <div className=\"hf-query-builder__rule\" key={rule.id}><span>{index + 1}</span><Select className=\"hf-query-builder__select\" aria-label={`条件 ${index + 1} 字段`} value={rule.field} disabled={disabled} options={fields.map((item) => ({ value: item.key, label: item.label }))} onChange={(event) => { const next = fields.find((item) => item.key === event.target.value)!; update(rule.id, { field: next.key, operator: (next.operators ?? defaultOperators)[0]?.value ?? 'equals', value: '' }); }} /><Select className=\"hf-query-builder__select\" aria-label={`条件 ${index + 1} 运算符`} value={rule.operator} disabled={disabled} options={operators} onChange={(event) => update(rule.id, { operator: event.target.value })} /><input aria-label={`条件 ${index + 1} 值`} type={field?.type ?? 'text'} value={rule.value} disabled={disabled} onChange={(event) => update(rule.id, { value: event.target.value })} /><button type=\"button\" aria-label={`删除条件 ${index + 1}`} disabled={disabled} onClick={() => onChange(rules.filter((item) => item.id !== rule.id))}><Icon name=\"close\" size={15} /></button></div>; })}</div><button type=\"button\" className=\"hf-query-builder__add\" disabled={disabled || !fields.length} onClick={add}>+ 添加条件</button></div>; }\nimport { Select } from './Select';\nimport { Icon } from '../foundations/Icon';\n","import { useMemo, type DragEvent, type ReactNode } from 'react';\n\nexport interface FlowNode { id: string; label: ReactNode; x: number; y: number; status?: 'default' | 'active' | 'success' | 'warning'; description?: ReactNode }\nexport interface FlowEdge { id?: string; from: string; to: string; label?: string }\nexport interface FlowCanvasProps { nodes: readonly FlowNode[]; edges: readonly FlowEdge[]; width?: number; height?: number; selectedId?: string; onSelect?: (id: string) => void; empty?: ReactNode }\nexport function FlowCanvas({ nodes, edges, width = 900, height = 420, selectedId, onSelect, empty = '暂无流程节点' }: FlowCanvasProps) { const map = new Map(nodes.map((node) => [node.id, node])); if (!nodes.length) return <div className=\"hf-flow-canvas hf-flow-canvas__empty\">{empty}</div>; return <div className=\"hf-flow-canvas\" role=\"group\" aria-label=\"流程画布\"><div style={{ width, height }}><svg viewBox={`0 0 ${width} ${height}`} aria-hidden=\"true\">{edges.map((edge, index) => { const from = map.get(edge.from), to = map.get(edge.to); if (!from || !to) return null; const x1 = from.x + 82, y1 = from.y + 28, x2 = to.x, y2 = to.y + 28, bend = Math.max(30, Math.abs(x2 - x1) / 2); return <g key={edge.id ?? index}><path d={`M${x1} ${y1} C${x1 + bend} ${y1},${x2 - bend} ${y2},${x2} ${y2}`} /><circle cx={x2} cy={y2} r=\"3\" />{edge.label && <text x={(x1 + x2) / 2} y={(y1 + y2) / 2 - 8}>{edge.label}</text>}</g>; })}</svg>{nodes.map((node) => <button type=\"button\" key={node.id} className={`hf-flow-canvas__node is-${node.status ?? 'default'}${selectedId === node.id ? ' is-selected' : ''}`} style={{ left: node.x, top: node.y }} aria-pressed={selectedId === node.id} onClick={() => onSelect?.(node.id)}><strong>{node.label}</strong>{node.description && <small>{node.description}</small>}</button>)}</div></div>; }\n\nexport interface KanbanCard { id: string; title: ReactNode; description?: ReactNode; meta?: ReactNode; tags?: readonly string[] }\nexport interface KanbanColumn { id: string; title: ReactNode; cards: readonly KanbanCard[]; limit?: number; accent?: string }\nexport interface KanbanBoardProps { columns: readonly KanbanColumn[]; onMove?: (cardId: string, fromColumnId: string, toColumnId: string) => void; onCardClick?: (cardId: string, columnId: string) => void; empty?: ReactNode }\nexport function KanbanBoard({ columns, onMove, onCardClick, empty = '暂无看板列' }: KanbanBoardProps) { const drop = (event: DragEvent, target: string) => { event.preventDefault(); const card = event.dataTransfer.getData('application/x-hf-card'), from = event.dataTransfer.getData('application/x-hf-column'); if (card && from && from !== target) onMove?.(card, from, target); }; if (!columns.length) return <div className=\"hf-kanban-board__empty\">{empty}</div>; return <div className=\"hf-kanban-board\" aria-label=\"看板\">{columns.map((column) => <section key={column.id} style={{ '--hf-kanban-accent': column.accent } as React.CSSProperties} onDragOver={(event) => event.preventDefault()} onDrop={(event) => drop(event, column.id)}><header><strong>{column.title}</strong><span>{column.cards.length}{column.limit ? ` / ${column.limit}` : ''}</span></header><div>{column.cards.map((card) => <button type=\"button\" draggable={Boolean(onMove)} className=\"hf-kanban-card\" key={card.id} onDragStart={(event) => { event.dataTransfer.setData('application/x-hf-card', card.id); event.dataTransfer.setData('application/x-hf-column', column.id); }} onClick={() => onCardClick?.(card.id, column.id)}><strong>{card.title}</strong>{card.description && <p>{card.description}</p>}{card.tags?.length ? <span>{card.tags.map((tag) => <i key={tag}>{tag}</i>)}</span> : null}{card.meta && <small>{card.meta}</small>}</button>)}</div></section>)}</div>; }\n\nexport interface GanttTask { id: string; label: ReactNode; start: string | Date; end: string | Date; progress?: number; group?: string; color?: string }\nexport interface GanttChartProps { tasks: readonly GanttTask[]; start?: string | Date; end?: string | Date; onTaskClick?: (id: string) => void; empty?: ReactNode }\nconst day = 86400000; const toTime = (value: string | Date) => new Date(value).setHours(0, 0, 0, 0);\nexport function GanttChart({ tasks, start, end, onTaskClick, empty = '暂无排期任务' }: GanttChartProps) { const range = useMemo(() => { const starts = tasks.map((task) => toTime(task.start)), ends = tasks.map((task) => toTime(task.end)); const from = start ? toTime(start) : Math.min(...starts), to = end ? toTime(end) : Math.max(...ends); return { from, days: Math.max(1, Math.round((to - from) / day) + 1) }; }, [tasks, start, end]); if (!tasks.length) return <div className=\"hf-gantt-chart__empty\">{empty}</div>; return <div className=\"hf-gantt-chart\"><header><strong>任务</strong><div>{Array.from({ length: Math.min(range.days, 31) }, (_, index) => <span key={index}>{new Date(range.from + index * day).getDate()}</span>)}</div></header>{tasks.map((task) => { const offset = Math.max(0, (toTime(task.start) - range.from) / day), length = Math.max(1, (toTime(task.end) - toTime(task.start)) / day + 1); return <div className=\"hf-gantt-chart__row\" key={task.id}><span><strong>{task.label}</strong>{task.group && <small>{task.group}</small>}</span><div><button type=\"button\" style={{ left: `${offset / range.days * 100}%`, width: `${length / range.days * 100}%`, '--hf-gantt-color': task.color } as React.CSSProperties} onClick={() => onTaskClick?.(task.id)}><i style={{ width: `${Math.max(0, Math.min(100, task.progress ?? 0))}%` }} /><span>{task.progress ?? 0}%</span></button></div></div>; })}</div>; }\n\nexport interface ChartLegendItem { label: ReactNode; color: string; value?: ReactNode }\nexport interface ChartContainerProps { title?: ReactNode; description?: ReactNode; actions?: ReactNode; legend?: readonly ChartLegendItem[]; children: ReactNode; height?: number; loading?: boolean; empty?: boolean; emptyContent?: ReactNode }\nexport function ChartContainer({ title, description, actions, legend, children, height = 320, loading, empty, emptyContent = '暂无图表数据' }: ChartContainerProps) { return <section className=\"hf-chart-container\"><header><div>{title && <strong>{title}</strong>}{description && <p>{description}</p>}</div>{actions}</header>{legend?.length ? <div className=\"hf-chart-container__legend\">{legend.map((item, index) => <span key={index}><i style={{ background: item.color }} />{item.label}{item.value && <strong>{item.value}</strong>}</span>)}</div> : null}<div className=\"hf-chart-container__body\" style={{ height }}>{loading ? <div className=\"hf-chart-container__state\"><span className=\"hf-spinner\" />正在加载图表</div> : empty ? <div className=\"hf-chart-container__state\">{emptyContent}</div> : children}</div></section>; }\n\nexport interface PivotValue<T> { key: string; label: ReactNode; value: (item: T) => number; aggregate?: 'sum' | 'average' | 'count'; format?: (value: number) => ReactNode }\nexport interface PivotTableProps<T> { data: readonly T[]; row: (item: T) => string; column: (item: T) => string; values: readonly PivotValue<T>[]; rowLabel?: ReactNode; showTotals?: boolean; empty?: ReactNode }\nexport function PivotTable<T>({ data, row, column, values, rowLabel = '项目', showTotals = true, empty = '暂无透视数据' }: PivotTableProps<T>) { const rows = [...new Set(data.map(row))], columns = [...new Set(data.map(column))]; const calculate = (items: readonly T[], metric: PivotValue<T>) => { if (metric.aggregate === 'count') return items.length; const sum = items.reduce((total, item) => total + metric.value(item), 0); return metric.aggregate === 'average' ? (items.length ? sum / items.length : 0) : sum; }; if (!data.length || !values.length) return <div className=\"hf-pivot-table__empty\">{empty}</div>; return <div className=\"hf-pivot-table\"><table><thead><tr><th rowSpan={2}>{rowLabel}</th>{columns.map((item) => <th colSpan={values.length} key={item}>{item}</th>)}{showTotals && <th colSpan={values.length}>合计</th>}</tr><tr>{[...columns, ...(showTotals ? ['__total'] : [])].flatMap((col) => values.map((metric) => <th key={`${col}-${metric.key}`}>{metric.label}</th>))}</tr></thead><tbody>{rows.map((rowName) => <tr key={rowName}><th>{rowName}</th>{[...columns, ...(showTotals ? ['__total'] : [])].flatMap((columnName) => values.map((metric) => { const items = data.filter((item) => row(item) === rowName && (columnName === '__total' || column(item) === columnName)); const result = calculate(items, metric); return <td key={`${columnName}-${metric.key}`}>{metric.format?.(result) ?? result}</td>; }))}</tr>)}</tbody></table></div>; }\n","export interface FilterOption { value: string; label: string }\nexport interface FilterField { key: string; label: string; options?: readonly FilterOption[]; type?: 'text' | 'number' | 'date' }\nexport interface FilterValue { id: string; field: string; value: string }\nexport interface FilterBuilderProps { fields: readonly FilterField[]; value: readonly FilterValue[]; onChange: (value: FilterValue[]) => void; disabled?: boolean; addLabel?: string }\nexport function FilterBuilder({ fields, value, onChange, disabled, addLabel = '添加筛选' }: FilterBuilderProps) { const add = () => { const field = fields.find((item) => !value.some((filter) => filter.field === item.key)) ?? fields[0]; if (field) onChange([...value, { id: `filter-${Date.now()}`, field: field.key, value: '' }]); }; const update = (id: string, patch: Partial<FilterValue>) => onChange(value.map((item) => item.id === id ? { ...item, ...patch } : item)); return <div className=\"hf-filter-builder\" role=\"group\" aria-label=\"筛选条件\"><div>{value.map((filter, index) => { const field = fields.find((item) => item.key === filter.field) ?? fields[0]; return <div className=\"hf-filter-builder__item\" key={filter.id}><Select className=\"hf-filter-builder__select\" aria-label={`筛选 ${index + 1} 字段`} value={filter.field} disabled={disabled} options={fields.map((item) => ({ value: item.key, label: item.label }))} onChange={(event) => update(filter.id, { field: event.target.value, value: '' })} />{field?.options ? <Select className=\"hf-filter-builder__select\" aria-label={`筛选 ${index + 1} 值`} value={filter.value} placeholder=\"请选择\" disabled={disabled} options={field.options} onChange={(event) => update(filter.id, { value: event.target.value })} /> : <input aria-label={`筛选 ${index + 1} 值`} type={field?.type ?? 'text'} value={filter.value} disabled={disabled} onChange={(event) => update(filter.id, { value: event.target.value })} />}<button type=\"button\" aria-label={`删除筛选 ${index + 1}`} disabled={disabled} onClick={() => onChange(value.filter((item) => item.id !== filter.id))}><Icon name=\"close\" size={15} /></button></div>; })}</div><button type=\"button\" className=\"hf-filter-builder__add\" disabled={disabled || !fields.length} onClick={add}>+ {addLabel}</button>{value.length > 0 && <button type=\"button\" className=\"hf-filter-builder__clear\" disabled={disabled} onClick={() => onChange([])}>清空</button>}</div>; }\nimport { Select } from './Select';\nimport { Icon } from '../foundations/Icon';\n"],"mappings":"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","names":["jsx","Button","jsx","jsx","jsxs","forwardRef","jsx","jsxs","Input","forwardRef","jsx","jsxs","Switch","useId","jsx","jsxs","jsx","jsxs","useId","jsx","jsxs","useId","useEffect","createPortal","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","forwardRef","jsx","IconButton","useState","jsx","jsxs","useState","useEffect","useRef","useState","jsx","jsxs","useState","jsx","jsxs","useState","useMemo","useState","jsx","jsxs","useMemo","Tag","useState","useState","jsx","jsxs","useState","useMemo","useRef","useState","Fragment","jsx","jsxs","useState","useRef","useMemo","forwardRef","useEffect","useId","useRef","useState","jsx","jsxs","forwardRef","Select","useId","useState","useRef","useEffect","jsx","jsxs","day","jsx","Tag","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","jsx","jsxs","useState","useId","useState","jsx","jsxs","useState","useId","useEffect","useState","jsx","useEffect","useState","jsx","jsxs","useId","jsx","jsxs","jsx","jsxs","useEffect","useMemo","useState","createPortal","jsx","jsxs","useState","useMemo","useEffect","createPortal","jsx","jsxs","jsx","jsx","jsxs","useId","useState","jsx","jsxs","useState","useId","useId","jsx","jsxs","useState","jsx","useState","forwardRef","useId","jsx","jsxs","Textarea","forwardRef","useEffect","useRef","jsx","jsxs","Checkbox","Radio","useState","jsx","jsxs","useState","day","jsx","jsxs","useId","useRef","useState","jsx","jsxs","useId","useRef","useState","useId","useMemo","useState","jsx","jsxs","useId","useState","useMemo","useId","jsx","jsxs","useState","jsx","jsxs","useState","useId","createPortal","jsx","jsxs","useId","createPortal","cloneElement","useId","useState","jsx","jsxs","useState","useId","cloneElement","cloneElement","useId","useState","jsx","jsxs","useState","useId","cloneElement","cloneElement","isValidElement","useState","jsx","jsxs","useState","isValidElement","cloneElement","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","jsxs","useMemo","useState","jsx","jsxs","item","useState","jsx","jsxs","jsx","jsxs","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","useState","jsx","useState","jsx","jsxs","i","j","jsx","jsxs","useMemo","jsx","jsxs","jsx","jsxs"]}
|