@bridger-kr/react 0.1.3 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/cx.ts","../src/components/core/Badge.tsx","../src/components/core/Button.tsx","../src/components/core/Card.tsx","../src/components/core/FilterChip.tsx","../src/components/core/Input.tsx","../src/components/core/StatusPill.tsx","../src/components/core/Surface.tsx","../src/components/core/Tabs.tsx","../src/components/forms/Checkbox.tsx","../src/components/forms/Combobox.tsx","../src/components/forms/FileUpload.tsx","../src/components/forms/RadioGroup.tsx","../src/components/forms/SegmentedControl.tsx","../src/components/forms/Select.tsx","../src/components/forms/Slider.tsx","../src/components/forms/Switch.tsx","../src/components/forms/Textarea.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Dialog.tsx","../src/components/feedback/Drawer.tsx","../src/components/feedback/EmptyState.tsx","../src/components/feedback/Skeleton.tsx","../src/components/feedback/Spinner.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/Tooltip.tsx","../src/components/data/Avatar.tsx","../src/components/data/CodeBlock.tsx","../src/components/data/KeyValue.tsx","../src/components/data/LogRow.tsx","../src/components/data/Pagination.tsx","../src/components/data/StatTile.tsx","../src/components/data/Table.tsx","../src/components/data/UsageMeter.tsx","../src/components/navigation/Breadcrumb.tsx","../src/components/navigation/CommandPalette.tsx","../src/components/navigation/Menu.tsx","../src/components/navigation/Sidebar.tsx","../src/components/navigation/Stepper.tsx","../src/components/product/BrandLogo.tsx","../src/components/product/ProductActionPill.tsx","../src/components/product/ProductCinematic.tsx","../src/components/product/ProductPageHeader.tsx","../src/components/product/SectionCard.tsx","../src/components/product/ToolCard.tsx"],"names":["jsxs","jsx","useState","useRef","useId","useEffect","SIZE","Fragment","BrandLogo","VARIANT_CLASS"],"mappings":"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","file":"index.mjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nconst TONE_CLASS = {\n neutral: 'badge',\n accent: 'badge badge-accent',\n info: 'badge badge-info',\n success: 'badge badge-success',\n warning: 'badge badge-warning',\n danger: 'badge badge-danger',\n};\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n children?: ReactNode;\n /** Semantic tone. info/success/warning/danger are status-only. */\n tone?: 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\n /** Show a leading status dot in the current tone color. */\n dot?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Status / classification badge. Pill-shaped, tinted. Status or\n * classification only — never decorative.\n */\nexport function Badge({ children, tone = 'neutral', dot = false, style, ...rest }: BadgeProps) {\n const cls = TONE_CLASS[tone] ?? TONE_CLASS.neutral;\n return (\n <span className={cls} style={style} {...rest}>\n {dot ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 6,\n height: 6,\n borderRadius: '9999px',\n background: 'currentColor',\n display: 'inline-block',\n }}\n />\n ) : null}\n {children}\n </span>\n );\n}\n","import type { ButtonHTMLAttributes, CSSProperties, ReactNode } from 'react';\n\n/* Height grid (px) per size — matches the fill-based button recipe in base.css.\n Horizontal padding only; vertical centering comes from the fixed height. */\nconst SIZE = {\n sm: { height: 36, padding: '0 14px', fontSize: 13 },\n md: { height: 40, padding: '0 16px', fontSize: 14 },\n lg: { height: 48, padding: '0 20px', fontSize: 15 },\n};\n\nconst VARIANT_CLASS = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n ghost: 'btn-ghost',\n};\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n children?: ReactNode;\n /** primary = the one strongest action; secondary = regular; ghost = low-emphasis. */\n variant?: 'primary' | 'secondary' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n /** Lucide icon element placed before the label. */\n icon?: ReactNode;\n /** Lucide icon element placed after the label. */\n iconRight?: ReactNode;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n style?: CSSProperties;\n}\n\n/**\n * Bridger button. Primary is the single strongest action per screen;\n * secondary for regular actions; ghost for low-emphasis commands.\n *\n * The one strongest action per screen uses variant=\"primary\" (persimmon).\n * @startingPoint section=\"Core\" subtitle=\"Primary / secondary / ghost actions\" viewport=\"700x140\"\n */\nexport function Button({\n children,\n variant = 'primary',\n size = 'md',\n icon = null,\n iconRight = null,\n disabled = false,\n type = 'button',\n onClick,\n style,\n ...rest\n}: ButtonProps) {\n const cls = VARIANT_CLASS[variant] ?? VARIANT_CLASS.primary;\n const s = SIZE[size] ?? SIZE.md;\n return (\n <button\n type={type}\n className={cls}\n disabled={disabled}\n onClick={onClick}\n style={{\n height: s.height,\n padding: s.padding,\n fontSize: s.fontSize,\n opacity: disabled ? 0.55 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n ...style,\n }}\n {...rest}\n >\n {icon ? <span style={{ display: 'inline-flex' }} aria-hidden=\"true\">{icon}</span> : null}\n {children}\n {iconRight ? <span style={{ display: 'inline-flex' }} aria-hidden=\"true\">{iconRight}</span> : null}\n </button>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const CardTone = {\n Default: 'default',\n Muted: 'muted',\n Raised: 'raised',\n Panel: 'panel',\n} as const;\n\nexport type CardTone = (typeof CardTone)[keyof typeof CardTone];\n\nconst VARIANT_STYLE = {\n default: { background: 'var(--dt-surface)', boxShadow: 'var(--dt-card-rest)' },\n muted: { background: 'var(--dt-surface-sunken)' },\n raised: { background: 'var(--dt-surface-raised)', boxShadow: 'var(--dt-card-float)' },\n panel: { background: 'var(--dt-surface)', boxShadow: 'var(--dt-shadow-xs)' },\n} satisfies Record<CardTone, CSSProperties>;\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n children?: ReactNode;\n /** default = surface + subtle shadow; muted = sunken well; raised = elevated; panel = flat console panel. */\n variant?: CardTone;\n tone?: CardTone;\n /** Strengthen border + lift surface on hover (for clickable rows/cards). */\n interactive?: boolean;\n padding?: number;\n style?: CSSProperties;\n}\n\n/**\n * Surface container. Use for repeated items, modals, and genuinely framed\n * tools — not as a decorative wrapper. `panel` is the flatter console variant.\n */\nexport function Card({\n children,\n variant,\n tone,\n interactive = false,\n padding = 20,\n className,\n style,\n ...rest\n}: CardProps) {\n const selectedTone = tone ?? variant ?? CardTone.Default;\n const v = VARIANT_STYLE[selectedTone] ?? VARIANT_STYLE[CardTone.Default];\n return (\n <div\n className={cx(interactive && 'dt-card-interactive', className)}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n color: 'var(--dt-ink)',\n padding,\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...v,\n ...style,\n }}\n {...rest}\n >\n {children}\n {interactive ? (\n <style>{'.dt-card-interactive:hover{box-shadow:var(--dt-card-hover)}'}</style>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface FilterChipProps {\n label: string;\n /** Trailing count, rendered tabular-mono. */\n count?: number;\n active?: boolean;\n removable?: boolean;\n onToggle?: () => void;\n onRemove?: () => void;\n icon?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * FilterChip — a toggleable filter / tag for catalog facets (분야, 프로토콜, 상태).\n * Crisp small-radius tag with a hairline, NOT a rounded-full cushion. Active =\n * persimmon tint + border + bold. Optional count (mono) and a removable ✕.\n * @startingPoint section=\"Core\" subtitle=\"Toggleable catalog filter\" viewport=\"520x80\"\n */\nexport function FilterChip({ label, count, active = false, removable = false, onToggle, onRemove, icon, style }: FilterChipProps) {\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n aria-pressed={active}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 7, height: 30, padding: '0 10px',\n borderRadius: 'var(--dt-radius-sm)', cursor: 'pointer',\n fontFamily: 'var(--dt-font-sans)', fontSize: 13, fontWeight: active ? 650 : 500,\n background: active ? 'var(--dt-tint-accent)' : 'var(--dt-surface)',\n color: active ? 'var(--dt-accent)' : 'var(--dt-muted-strong)',\n boxShadow: `inset 0 0 0 1px ${active ? 'color-mix(in srgb, var(--dt-accent) 40%, transparent)' : 'var(--dt-border-strong)'}`,\n transition: 'background-color var(--dt-motion-fast), box-shadow var(--dt-motion-fast)',\n ...style,\n }}\n >\n {icon ? <span style={{ display: 'inline-flex', color: active ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{icon}</span> : null}\n <span>{label}</span>\n {count != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, color: active ? 'var(--dt-accent)' : 'var(--dt-muted)', fontVariantNumeric: 'tabular-nums' }}>{count}</span>\n ) : null}\n {removable ? (\n <span\n role=\"button\" aria-label=\"제거\"\n onClick={(e) => { e.stopPropagation(); onRemove?.(); }}\n style={{ display: 'inline-flex', marginRight: -2, color: active ? 'var(--dt-accent)' : 'var(--dt-muted)' }}\n >\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" /></svg>\n </span>\n ) : null}\n </button>\n );\n}\n","import type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix' | 'style'> {\n label?: string;\n hint?: string;\n /** Render the value in JetBrains Mono — for API paths, keys, IDs. */\n mono?: boolean;\n /** Leading adornment (icon or short text). */\n prefix?: ReactNode;\n invalid?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Compact labeled input, paired with a label or table context. Supports a\n * mono variant for API paths / keys / IDs.\n */\nexport function Input({\n label,\n hint,\n mono = false,\n id,\n type = 'text',\n prefix = null,\n invalid = false,\n style,\n ...rest\n}: InputProps) {\n const inputId = id || (label ? `in-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}\n >\n {label}\n </label>\n ) : null}\n <div\n className={invalid ? 'dt-field dt-field-invalid' : 'dt-field'}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '0 12px',\n }}\n >\n {prefix ? <span style={{ color: 'var(--dt-muted)', display: 'inline-flex' }}>{prefix}</span> : null}\n <input\n id={inputId}\n type={type}\n style={{\n flex: 1,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'var(--dt-ink-strong)',\n padding: '11px 0',\n fontFamily: mono ? 'var(--dt-font-mono)' : 'var(--dt-font-sans)',\n fontSize: mono ? 13 : 14,\n ...style,\n }}\n {...rest}\n />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nconst STATUS = {\n connected: { bg: 'var(--dt-tint-success)', fg: 'var(--dt-success)' },\n success: { bg: 'var(--dt-tint-success)', fg: 'var(--dt-success)' },\n reconnecting: { bg: 'var(--dt-tint-warning)', fg: 'var(--dt-warning)' },\n warning: { bg: 'var(--dt-tint-warning)', fg: 'var(--dt-warning)' },\n disconnected: { bg: 'var(--dt-tint-danger)', fg: 'var(--dt-danger)' },\n danger: { bg: 'var(--dt-tint-danger)', fg: 'var(--dt-danger)' },\n info: { bg: 'var(--dt-tint-cobalt)', fg: 'var(--dt-info)' },\n idle: { bg: 'var(--dt-tint-muted)', fg: 'var(--dt-muted-strong)' },\n};\n\nexport interface StatusPillProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n /** Semantic state — drives the dot color. */\n status?: 'connected' | 'success' | 'reconnecting' | 'warning' | 'disconnected' | 'danger' | 'info' | 'idle';\n children?: ReactNode;\n /** Pulse the dot (use for transient states like reconnecting). */\n pulse?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Compact status pill: a tinted fill carrying a colored label — the console's\n * most-used status affordance (gateway / stream state). No outline, no dot;\n * an optional pulse marker appears only for live (`pulse`) states.\n */\nexport function StatusPill({ status = 'idle', children, pulse = false, style, ...rest }: StatusPillProps) {\n const tone = STATUS[status] ?? STATUS.idle;\n return (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n borderRadius: 'var(--dt-radius-full)',\n background: tone.bg,\n padding: '4px 10px',\n fontSize: 12,\n fontWeight: 600,\n color: tone.fg,\n ...style,\n }}\n {...rest}\n >\n {pulse ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 7,\n height: 7,\n borderRadius: '9999px',\n background: tone.fg,\n animation: 'dt-status-pulse 1.6s var(--dt-ease) infinite',\n }}\n />\n ) : null}\n {children}\n <style>{'@keyframes dt-status-pulse{0%,100%{opacity:1}50%{opacity:.35}}'}</style>\n </span>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const SurfaceTone = {\n Default: 'default',\n Raised: 'raised',\n Sunken: 'sunken',\n} as const;\n\nexport type SurfaceTone = (typeof SurfaceTone)[keyof typeof SurfaceTone];\n\nexport const MetricAccent = {\n Accent: 'accent',\n Success: 'success',\n Info: 'info',\n} as const;\n\nexport type MetricAccent = (typeof MetricAccent)[keyof typeof MetricAccent];\nexport type MetricAccentName = MetricAccent;\n\nconst surfaceToneClass: Record<SurfaceTone, string> = {\n [SurfaceTone.Default]: 'bg-[var(--dt-surface)]',\n [SurfaceTone.Raised]: 'bg-[var(--dt-surface-raised)]',\n [SurfaceTone.Sunken]: 'bg-[var(--dt-surface-sunken)]',\n};\n\nconst metricAccentClass: Record<MetricAccentName, string> = {\n [MetricAccent.Accent]: 'text-[var(--dt-accent)]',\n [MetricAccent.Success]: 'text-[var(--dt-success)]',\n [MetricAccent.Info]: 'text-[var(--dt-info)]',\n};\n\nexport type PanelProps = ComponentPropsWithoutRef<'section'> & {\n readonly tone?: SurfaceTone;\n readonly children: ReactNode;\n};\n\nexport function Panel({ tone = SurfaceTone.Default, className, children, ...props }: PanelProps) {\n return (\n <section\n className={cx(\n 'rounded-dtLg border border-[var(--dt-border)] px-5 py-5 md:px-6 md:py-6',\n surfaceToneClass[tone],\n className,\n )}\n {...props}\n >\n {children}\n </section>\n );\n}\n\nexport function metricAccentColor(accent: MetricAccentName): string {\n return metricAccentClass[accent];\n}\n","import { useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nexport interface TabItem {\n id: string;\n label: string;\n icon?: ReactNode;\n count?: number | string;\n}\n\nexport interface TabsProps {\n tabs?: TabItem[];\n /** Controlled active tab id. */\n value?: string;\n defaultValue?: string;\n onChange?: (id: string) => void;\n style?: CSSProperties;\n}\n\n/**\n * Underline-style tab bar for switching console views. Controlled via\n * `value` + `onChange`, or uncontrolled with `defaultValue`.\n */\nexport function Tabs({ tabs = [], value, defaultValue, onChange, style }: TabsProps) {\n const [internal, setInternal] = useState(defaultValue ?? tabs[0]?.id);\n const active = value !== undefined ? value : internal;\n\n const select = (id: string) => {\n if (value === undefined) setInternal(id);\n onChange?.(id);\n };\n\n return (\n <div\n role=\"tablist\"\n style={{\n display: 'flex',\n gap: 4,\n borderBottom: '1px solid var(--dt-border)',\n ...style,\n }}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === active;\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n type=\"button\"\n onClick={() => select(tab.id)}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n padding: '10px 12px',\n marginBottom: -1,\n fontSize: 13,\n fontWeight: 600,\n color: isActive ? 'var(--dt-ink-strong)' : 'var(--dt-muted)',\n borderBottom: `2px solid ${isActive ? 'var(--dt-accent)' : 'transparent'}`,\n transition: 'color var(--dt-motion-fast)',\n }}\n >\n {tab.icon ? <span aria-hidden=\"true\" style={{ display: 'inline-flex' }}>{tab.icon}</span> : null}\n {tab.label}\n {tab.count != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>\n {tab.count}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'disabled' | 'id' | 'label' | 'onChange' | 'style'\n > {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Checkbox — persimmon fill when checked. */\nexport function Checkbox({ label, checked, defaultChecked, onChange, disabled, id, style }: CheckboxProps) {\n const cbId = id || (label ? `cb-${String(label).replace(/\\s+/g, '-')}` : undefined);\n const [internal, setInternal] = useState(defaultChecked ?? false);\n const isOn = checked !== undefined ? checked : internal;\n const toggle = () => {\n if (disabled) return;\n if (checked === undefined) setInternal((v) => !v);\n onChange?.(!isOn);\n };\n return (\n <label\n htmlFor={cbId}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 9,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n ...style,\n }}\n >\n <input\n id={cbId}\n type=\"checkbox\"\n checked={isOn}\n onChange={toggle}\n disabled={disabled}\n style={{ position: 'absolute', opacity: 0, width: 0, height: 0 }}\n />\n <span\n style={{\n width: 18,\n height: 18,\n flex: '0 0 auto',\n borderRadius: 5,\n display: 'grid',\n placeItems: 'center',\n background: isOn ? 'var(--dt-accent)' : 'var(--dt-surface)',\n border: `1.5px solid ${isOn ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n transition: 'background-color 130ms, border-color 130ms',\n }}\n >\n {isOn ? (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M5 12l4.5 4.5L19 7\"\n stroke=\"var(--dt-accent-ink)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </span>\n {label ? <span style={{ fontSize: 14, color: 'var(--dt-ink)' }}>{label}</span> : null}\n </label>\n );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n meta?: string;\n}\n\nexport interface ComboboxProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'onChange' | 'style'> {\n label?: string;\n hint?: string;\n options?: ComboboxOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n emptyText?: string;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Searchable select for large option sets (the 230+ public-data API catalog).\n * Hairline field; the listbox is a bordered plane. Filters on label + meta.\n * @startingPoint section=\"Forms\" subtitle=\"Searchable select over a large catalog\" viewport=\"460x320\"\n */\nexport function Combobox({\n label,\n hint,\n options = [],\n value,\n onChange,\n placeholder = '검색…',\n emptyText = '결과 없음',\n id,\n style,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [active, setActive] = useState(0);\n const rootRef = useRef<HTMLDivElement>(null);\n const cbId = id || (label ? `cb-${label.replace(/\\s+/g, '-')}` : undefined);\n\n const selected = options.find((o) => o.value === value) || null;\n\n useEffect(() => {\n const onDoc = (e: globalThis.MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', onDoc);\n return () => document.removeEventListener('mousedown', onDoc);\n }, []);\n\n const q = query.trim().toLowerCase();\n const filtered = q\n ? options.filter((o) => (o.label + ' ' + (o.meta || '')).toLowerCase().includes(q))\n : options;\n\n const commit = (o: ComboboxOption) => {\n onChange?.(o.value);\n setOpen(false);\n setQuery('');\n };\n\n const onKey = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n setActive((i) => Math.min(i + 1, filtered.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActive((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter' && open && filtered[active]) {\n e.preventDefault();\n commit(filtered[active]);\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={rootRef} style={{ display: 'grid', gap: 7, position: 'relative', ...style }}>\n {label ? (\n <label htmlFor={cbId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <div\n className=\"dt-field\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 9,\n height: 44,\n padding: '0 12px',\n boxShadow: open ? 'var(--dt-shadow-focus)' : undefined,\n background: open ? 'var(--dt-surface)' : 'var(--dt-surface-sunken)',\n }}\n onClick={() => setOpen(true)}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: 'var(--dt-muted)', flex: '0 0 auto' }}\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M21 21l-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n id={cbId}\n value={open ? query : selected ? selected.label : ''}\n placeholder={selected && !open ? selected.label : placeholder}\n onChange={(e) => {\n setQuery(e.target.value);\n setOpen(true);\n setActive(0);\n }}\n onFocus={() => setOpen(true)}\n onKeyDown={onKey}\n style={{\n flex: 1,\n minWidth: 0,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontSize: 14,\n fontFamily: 'inherit',\n color: 'var(--dt-ink-strong)',\n }}\n />\n {selected && !open ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>\n {selected.meta}\n </span>\n ) : null}\n </div>\n\n {open ? (\n <div\n role=\"listbox\"\n style={{\n position: 'absolute',\n top: 'calc(100% + 6px)',\n left: 0,\n right: 0,\n zIndex: 20,\n background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)',\n borderRadius: 'var(--dt-radius-lg)',\n boxShadow: 'var(--dt-shadow-md)',\n maxHeight: 240,\n overflowY: 'auto',\n padding: 4,\n }}\n >\n {filtered.length === 0 ? (\n <div style={{ padding: '12px 12px', fontSize: 13, color: 'var(--dt-muted)' }}>{emptyText}</div>\n ) : (\n filtered.map((o, i) => {\n const isActive = i === active;\n const isSel = o.value === value;\n return (\n <div\n key={o.value}\n role=\"option\"\n aria-selected={isSel}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n commit(o);\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n padding: '9px 10px',\n borderRadius: 'var(--dt-radius-md)',\n cursor: 'pointer',\n background: isActive ? 'var(--dt-surface-sunken)' : 'transparent',\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontSize: 13.5,\n fontWeight: isSel ? 600 : 500,\n color: 'var(--dt-ink-strong)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {o.label}\n </span>\n {o.meta ? (\n <span\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 11,\n color: 'var(--dt-muted)',\n flex: '0 0 auto',\n }}\n >\n {o.meta}\n </span>\n ) : null}\n {isSel ? (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: 'var(--dt-accent)', flex: '0 0 auto' }}\n >\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </div>\n );\n })\n )}\n </div>\n ) : null}\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useRef, useState } from 'react';\nimport type { CSSProperties, DragEvent, HTMLAttributes } from 'react';\n\nfunction fmtSize(bytes?: number) {\n if (bytes == null) return '';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n}\n\nexport interface UploadedFile {\n name: string;\n size?: number;\n}\n\nexport interface FileUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'style'> {\n label?: string;\n /** Accepted file types, passed to the native input. */\n accept?: string;\n hint?: string;\n /** Current file — when set, the filled state renders instead of the dropzone. */\n file?: UploadedFile | null;\n onFiles?: (files: FileList) => void;\n onRemove?: () => void;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Dashed hairline dropzone for uploading an OpenAPI spec. Idle / drag / filled.\n * @startingPoint section=\"Forms\" subtitle=\"Dropzone for an OpenAPI spec\" viewport=\"460x180\"\n */\nexport function FileUpload({\n label,\n accept = '.json,.yaml,.yml',\n hint = 'OpenAPI 스펙 · JSON 또는 YAML',\n file,\n onFiles,\n onRemove,\n id,\n style,\n}: FileUploadProps) {\n const [drag, setDrag] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const fId = id || 'fu';\n\n const handle = (files: FileList | null) => {\n if (files && files.length) onFiles?.(files);\n };\n\n return (\n <div style={{ display: 'grid', gap: 7, ...style }}>\n {label ? <span style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>{label}</span> : null}\n\n {file ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n padding: '12px 14px',\n background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)',\n borderRadius: 'var(--dt-radius-lg)',\n }}\n >\n <span\n style={{\n width: 34,\n height: 34,\n flex: '0 0 auto',\n display: 'grid',\n placeItems: 'center',\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-tint-accent)',\n color: 'var(--dt-accent)',\n }}\n >\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M14 2v6h6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--dt-ink-strong)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {file.name}\n </div>\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)', marginTop: 2 }}>\n {fmtSize(file.size)} · 업로드 완료\n </div>\n </div>\n <button\n type=\"button\"\n onClick={onRemove}\n aria-label=\"제거\"\n style={{\n flex: '0 0 auto',\n width: 30,\n height: 30,\n display: 'grid',\n placeItems: 'center',\n border: 'none',\n background: 'var(--dt-surface-sunken)',\n borderRadius: 'var(--dt-radius-sm)',\n color: 'var(--dt-muted-strong)',\n cursor: 'pointer',\n }}\n >\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n ) : (\n <label\n htmlFor={fId}\n onDragOver={(e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setDrag(true);\n }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setDrag(false);\n handle(e.dataTransfer.files);\n }}\n style={{\n display: 'grid',\n placeItems: 'center',\n gap: 8,\n padding: '26px 20px',\n textAlign: 'center',\n cursor: 'pointer',\n borderRadius: 'var(--dt-radius-lg)',\n border: `1.5px dashed ${drag ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n background: drag ? 'var(--dt-tint-accent)' : 'var(--dt-surface-sunken)',\n transition: 'background-color var(--dt-motion-fast), border-color var(--dt-motion-fast)',\n }}\n >\n <span style={{ color: drag ? 'var(--dt-accent)' : 'var(--dt-muted)' }}>\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M12 16V4m0 0L7 9m5-5l5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </span>\n <span style={{ fontSize: 13.5, color: 'var(--dt-ink-strong)' }}>\n <span style={{ fontWeight: 600, color: 'var(--dt-accent)' }}>파일 선택</span> 또는 끌어다 놓기\n </span>\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>{hint}</span>\n <input\n ref={inputRef}\n id={fId}\n type=\"file\"\n accept={accept}\n onChange={(e) => handle(e.target.files)}\n style={{ display: 'none' }}\n />\n </label>\n )}\n </div>\n );\n}\n","import { useId, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface RadioOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'style'> {\n name?: string;\n options?: Array<string | RadioOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n style?: CSSProperties;\n}\n\n/** Radio group with optional per-option hint text. */\nexport function RadioGroup({ name, options = [], value, defaultValue, onChange, disabled, style }: RadioGroupProps) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value !== undefined ? value : internal;\n const generatedName = useId();\n const groupName = name || generatedName;\n const select = (v: string) => {\n if (disabled) return;\n if (value === undefined) setInternal(v);\n onChange?.(v);\n };\n return (\n <div role=\"radiogroup\" style={{ display: 'grid', gap: 10, ...style }}>\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n const on = opt.value === current;\n return (\n <label\n key={opt.value}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 10,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n }}\n >\n <input\n type=\"radio\"\n name={groupName}\n checked={on}\n onChange={() => select(opt.value)}\n disabled={disabled}\n style={{ position: 'absolute', opacity: 0, width: 0, height: 0 }}\n />\n <span\n style={{\n width: 18,\n height: 18,\n marginTop: 1,\n flex: '0 0 auto',\n borderRadius: 9999,\n display: 'grid',\n placeItems: 'center',\n background: 'var(--dt-surface)',\n border: `1.5px solid ${on ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n transition: 'border-color 130ms',\n }}\n >\n {on ? <span style={{ width: 9, height: 9, borderRadius: 9999, background: 'var(--dt-accent)' }} /> : null}\n </span>\n <span style={{ display: 'grid', gap: 2 }}>\n <span style={{ fontSize: 14, color: 'var(--dt-ink)', lineHeight: 1.3 }}>{opt.label}</span>\n {opt.hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{opt.hint}</span> : null}\n </span>\n </label>\n );\n })}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface SegmentOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'style'> {\n options?: Array<string | SegmentOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n size?: 'sm' | 'md';\n style?: CSSProperties;\n}\n\n/** Inset segmented control for 2–4 short, exclusive options. */\nexport function SegmentedControl({\n options = [],\n value,\n defaultValue,\n onChange,\n size = 'md',\n style,\n}: SegmentedControlProps) {\n const firstOption = typeof options[0] === 'string' ? options[0] : options[0]?.value;\n const [internal, setInternal] = useState(defaultValue ?? firstOption);\n const current = value !== undefined ? value : internal;\n const select = (v: string) => {\n if (value === undefined) setInternal(v);\n onChange?.(v);\n };\n const pad = size === 'sm' ? '5px 11px' : '7px 14px';\n return (\n <div\n style={{\n display: 'inline-flex',\n padding: 3,\n gap: 2,\n background: 'var(--dt-surface-sunken)',\n borderRadius: 'var(--dt-radius-md)',\n ...style,\n }}\n >\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n const on = opt.value === current;\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() => select(opt.value)}\n style={{\n border: 'none',\n cursor: 'pointer',\n padding: pad,\n borderRadius: 'var(--dt-radius-sm)',\n fontSize: size === 'sm' ? 12 : 13,\n fontWeight: 600,\n fontFamily: 'inherit',\n whiteSpace: 'nowrap',\n color: on ? 'var(--dt-ink-strong)' : 'var(--dt-muted)',\n background: on ? 'var(--dt-surface)' : 'transparent',\n boxShadow: on ? 'var(--dt-ring), var(--dt-shadow-xs)' : 'none',\n transition: 'color 130ms, background-color 130ms',\n }}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import type { CSSProperties, SelectHTMLAttributes } from 'react';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps\n extends Omit<\n SelectHTMLAttributes<HTMLSelectElement>,\n 'defaultValue' | 'disabled' | 'id' | 'onChange' | 'style' | 'value'\n > {\n label?: string;\n hint?: string;\n options?: Array<string | SelectOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Flat native-backed select with a persimmon focus ring. */\nexport function Select({ label, hint, options = [], value, defaultValue, onChange, placeholder, disabled, id, style }: SelectProps) {\n const selId = id || (label ? `sel-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 7 }}>\n {label ? (\n <label htmlFor={selId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <div style={{ position: 'relative', display: 'flex' }}>\n <select\n id={selId}\n className=\"dt-field\"\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.value)}\n style={{\n appearance: 'none',\n WebkitAppearance: 'none',\n width: '100%',\n padding: '10px 36px 10px 13px',\n fontSize: 14,\n fontFamily: 'inherit',\n color: 'var(--dt-ink-strong)',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n ...style,\n }}\n >\n {placeholder ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n return (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n );\n })}\n </select>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n right: 11,\n top: '50%',\n transform: 'translateY(-50%)',\n pointerEvents: 'none',\n color: 'var(--dt-muted)',\n }}\n >\n <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useRef, useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, KeyboardEvent, PointerEvent } from 'react';\n\nexport interface SliderProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'defaultValue' | 'id' | 'max' | 'min' | 'onChange' | 'step' | 'style' | 'value'\n > {\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n /** Suffix shown after the value readout, e.g. \"회/일\" or \"ms\". */\n unit?: string;\n hint?: string;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Numeric range input — hairline track, persimmon fill, tabular value readout.\n * @startingPoint section=\"Forms\" subtitle=\"Numeric range with tabular readout\" viewport=\"420x90\"\n */\nexport function Slider({\n label,\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n unit = '',\n hint,\n id,\n style,\n}: SliderProps) {\n const [internal, setInternal] = useState(defaultValue ?? min);\n const v = value != null ? value : internal;\n const trackRef = useRef<HTMLDivElement>(null);\n const sId = id || (label ? `sl-${label.replace(/\\s+/g, '-')}` : undefined);\n const pct = ((v - min) / (max - min)) * 100;\n\n const set = (nv: number) => {\n const clamped = Math.min(max, Math.max(min, Math.round(nv / step) * step));\n if (value == null) setInternal(clamped);\n onChange?.(clamped);\n };\n\n const fromClientX = (clientX: number) => {\n const r = trackRef.current!.getBoundingClientRect();\n const ratio = Math.min(1, Math.max(0, (clientX - r.left) / r.width));\n return min + ratio * (max - min);\n };\n\n const onPointerDown = (e: PointerEvent<HTMLDivElement>) => {\n e.preventDefault();\n set(fromClientX(e.clientX));\n const move = (ev: globalThis.PointerEvent) => set(fromClientX(ev.clientX));\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n };\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n };\n\n const onKey = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n set(v + step);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n set(v - step);\n }\n };\n\n return (\n <div style={{ display: 'grid', gap: 9, ...style }}>\n <div style={{ display: 'flex', alignItems: 'baseline', justifyContent: 'space-between' }}>\n {label ? (\n <label htmlFor={sId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : (\n <span />\n )}\n <span\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n }}\n >\n {v}\n {unit ? <span style={{ color: 'var(--dt-muted)', fontWeight: 400 }}>{unit}</span> : null}\n </span>\n </div>\n <div\n ref={trackRef}\n id={sId}\n role=\"slider\"\n tabIndex={0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={v}\n onPointerDown={onPointerDown}\n onKeyDown={onKey}\n style={{ position: 'relative', height: 20, display: 'flex', alignItems: 'center', cursor: 'pointer', outline: 'none' }}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n height: 4,\n borderRadius: 2,\n background: 'var(--dt-surface-sunken)',\n boxShadow: 'inset 0 0 0 1px var(--dt-border-strong)',\n }}\n />\n <div style={{ position: 'absolute', left: 0, width: `${pct}%`, height: 4, borderRadius: 2, background: 'var(--dt-accent)' }} />\n <div\n style={{\n position: 'absolute',\n left: `${pct}%`,\n transform: 'translateX(-50%)',\n width: 16,\n height: 16,\n borderRadius: 'var(--dt-radius-sm)',\n background: 'var(--dt-surface)',\n boxShadow: '0 0 0 1.5px var(--dt-accent)',\n border: '3px solid var(--dt-surface)',\n }}\n />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface SwitchProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'disabled' | 'id' | 'onChange' | 'style'\n > {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: ReactNode;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Toggle switch for instant on/off settings — persimmon track when on. */\nexport function Switch({ checked, defaultChecked, onChange, disabled, label, style }: SwitchProps) {\n const [internal, setInternal] = useState(defaultChecked ?? false);\n const isOn = checked !== undefined ? checked : internal;\n const toggle = () => {\n if (disabled) return;\n if (checked === undefined) setInternal((v) => !v);\n onChange?.(!isOn);\n };\n const sw = (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isOn}\n disabled={disabled}\n onClick={toggle}\n style={{\n width: 38,\n height: 22,\n flex: '0 0 auto',\n borderRadius: 9999,\n border: 'none',\n padding: 2,\n background: isOn ? 'var(--dt-accent)' : 'var(--dt-border-strong)',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n transition: 'background-color 160ms var(--dt-ease)',\n display: 'inline-flex',\n }}\n >\n <span\n style={{\n width: 18,\n height: 18,\n borderRadius: 9999,\n background: '#fff',\n boxShadow: '0 1px 2px rgba(0,0,0,0.25)',\n transform: isOn ? 'translateX(16px)' : 'translateX(0)',\n transition: 'transform 160ms var(--dt-ease)',\n }}\n />\n </button>\n );\n if (!label) return sw;\n return (\n <label\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 10,\n cursor: disabled ? 'not-allowed' : 'pointer',\n ...style,\n }}\n >\n {sw}\n <span style={{ fontSize: 14, color: 'var(--dt-ink)' }}>{label}</span>\n </label>\n );\n}\n\nexport interface ToggleSwitchProps {\n readonly checked: boolean;\n readonly label: string;\n readonly onChange: (next: boolean) => void;\n readonly disabled?: boolean;\n readonly className?: string;\n}\n\nexport function ToggleSwitch({\n checked,\n label,\n onChange,\n disabled = false,\n className = '',\n}: ToggleSwitchProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n disabled={disabled}\n onClick={() => onChange(!checked)}\n className={`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full border transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${\n checked ? 'border-success/40 bg-success/80' : 'border-line-strong bg-raised'\n } ${className}`}\n >\n <span\n aria-hidden\n className={`inline-block h-4 w-4 transform rounded-full bg-surface shadow-dtSubtle transition-transform ${\n checked ? 'translate-x-6' : 'translate-x-1'\n }`}\n />\n </button>\n );\n}\n","import type { CSSProperties, TextareaHTMLAttributes } from 'react';\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'style'> {\n label?: string;\n hint?: string;\n rows?: number;\n /** Render in JetBrains Mono (for JSON / payloads). */\n mono?: boolean;\n style?: CSSProperties;\n}\n\n/** Multi-line text field with a persimmon focus ring. */\nexport function Textarea({ label, hint, rows = 4, mono = false, id, style, ...rest }: TextareaProps) {\n const taId = id || (label ? `ta-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 7 }}>\n {label ? (\n <label htmlFor={taId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <textarea\n id={taId}\n rows={rows}\n className=\"dt-field\"\n style={{\n width: '100%',\n resize: 'vertical',\n padding: '11px 13px',\n fontSize: mono ? 13 : 14,\n fontFamily: mono ? 'var(--dt-font-mono)' : 'inherit',\n lineHeight: 1.55,\n color: 'var(--dt-ink-strong)',\n ...style,\n }}\n {...rest}\n />\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const AlertTone = {\n Info: 'info',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n} as const;\n\nexport type AlertTone = (typeof AlertTone)[keyof typeof AlertTone];\n\nexport const AlertMotion = {\n None: 'none',\n Subtle: 'subtle',\n Pulse: 'pulse',\n} as const;\n\nexport type AlertMotion = (typeof AlertMotion)[keyof typeof AlertMotion];\n\nconst TONE_BACKGROUND = {\n info: 'var(--dt-status-cobalt)',\n success: 'var(--dt-status-success)',\n warning: 'var(--dt-status-warning)',\n danger: 'var(--dt-status-danger)',\n} satisfies Record<AlertTone, string>;\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'title'> {\n tone?: AlertTone;\n title?: ReactNode;\n children?: ReactNode;\n icon?: ReactNode;\n action?: ReactNode;\n motion?: AlertMotion;\n onDismiss?: () => void;\n style?: CSSProperties;\n}\n\nexport function Alert({\n tone = AlertTone.Info,\n title,\n children,\n icon,\n action,\n motion = AlertMotion.None,\n onDismiss,\n className,\n style,\n ...rest\n}: AlertProps) {\n const background = TONE_BACKGROUND[tone] ?? TONE_BACKGROUND[AlertTone.Info];\n const motionClass = motion === AlertMotion.None ? undefined : `dt-alert-motion-${motion}`;\n return (\n <div\n role=\"status\"\n className={cx('dt-alert', motionClass, className)}\n style={{\n alignItems: 'flex-start',\n background,\n borderRadius: '20px',\n color: 'var(--dt-alert-ink)',\n display: 'flex',\n gap: 12,\n minHeight: 62,\n overflow: 'clip',\n padding: '13px 15px',\n position: 'relative',\n transition: 'filter var(--dt-motion-fast), transform var(--dt-motion-fast)',\n width: 'min(100%, 380px)',\n ...style,\n }}\n {...rest}\n >\n {icon ? <span style={{ color: 'currentColor', display: 'inline-flex', flex: '0 0 auto', marginTop: 1 }}>{icon}</span> : null}\n <div style={{ flex: '1 0 0', minWidth: 1, overflow: 'clip', wordBreak: 'break-word' }}>\n {title ? <div style={{ fontSize: 14, fontWeight: 600, lineHeight: 'normal' }}>{title}</div> : null}\n {children ? <div style={{ marginTop: title ? 3 : 0, fontSize: 13, fontWeight: 400, lineHeight: 'normal' }}>{children}</div> : null}\n {action ? <div style={{ marginTop: 10 }}>{action}</div> : null}\n </div>\n {onDismiss ? (\n <button onClick={onDismiss} aria-label=\"닫기\" style={{ flex: '0 0 auto', border: 'none', background: 'transparent', cursor: 'pointer', color: 'currentColor', padding: 2, lineHeight: 0 }}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n ) : null}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { useEffect, useId } from 'react';\n\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n 'aria-label'?: string;\n width?: number;\n}\n\n/** Modal dialog with overlay, Esc/backdrop close, and a footer action bar. */\nexport function Dialog({ open, onClose, title, description, children, footer, 'aria-label': ariaLabel, width = 460 }: DialogProps) {\n const titleId = useId();\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose?.(); };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n if (!open) return null;\n return (\n <div onClick={onClose} style={{\n position: 'fixed', inset: 0, zIndex: 100, display: 'grid', placeItems: 'center', padding: 20,\n background: 'color-mix(in srgb, var(--dt-ink-strong) 32%, transparent)',\n backdropFilter: 'blur(2px)', animation: 'dt-fade 160ms var(--dt-ease)',\n }}>\n <div\n role=\"dialog\" aria-modal=\"true\" onClick={(event) => event.stopPropagation()}\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel}\n style={{\n width: '100%', maxWidth: width, background: 'var(--dt-surface)',\n borderRadius: 'var(--dt-radius-lg)', boxShadow: 'var(--dt-shadow-xl)',\n animation: 'dt-pop 200ms var(--dt-ease)', overflow: 'hidden',\n }}\n >\n <div style={{ padding: '22px 24px' }}>\n {title ? <h3 id={titleId} style={{ fontSize: 18, fontWeight: 700, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>{title}</h3> : null}\n {description ? <p style={{ marginTop: 8, fontSize: 14, lineHeight: 1.55, color: 'var(--dt-muted-strong)' }}>{description}</p> : null}\n {children ? <div style={{ marginTop: title || description ? 16 : 0 }}>{children}</div> : null}\n </div>\n {footer ? <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 8, padding: '14px 24px', background: 'var(--dt-surface-sunken)' }}>{footer}</div> : null}\n </div>\n <style>{`@keyframes dt-fade{from{opacity:0}}@keyframes dt-pop{from{opacity:0;transform:translateY(8px) scale(.98)}}`}</style>\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { useId } from 'react';\n\nexport interface DrawerProps {\n open?: boolean;\n side?: 'right' | 'left';\n title?: string;\n children?: ReactNode;\n footer?: ReactNode;\n onClose?: () => void;\n width?: number;\n style?: CSSProperties;\n 'aria-label'?: string;\n}\n\n/**\n * Side sheet over a scrim for secondary flows — floats (shadow) but stays flat inside.\n * Render inside a positioned container (the panel fills its height).\n * @startingPoint section=\"Feedback\" subtitle=\"Side sheet over a scrim\" viewport=\"560x420\"\n */\nexport function Drawer({ open = false, side = 'right', title, children, footer, onClose, width = 420, style, 'aria-label': ariaLabel }: DrawerProps) {\n const titleId = useId();\n if (!open) return null;\n const fromRight = side === 'right';\n return (\n <div style={{ position: 'absolute', inset: 0, zIndex: 40, display: 'flex', justifyContent: fromRight ? 'flex-end' : 'flex-start' }}>\n <div onClick={onClose} style={{ position: 'absolute', inset: 0, background: 'rgba(24,22,18,0.32)' }} />\n <aside\n role=\"dialog\" aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel || 'pane'}\n style={{\n position: 'relative', width, maxWidth: '100%', height: '100%', display: 'flex', flexDirection: 'column',\n background: 'var(--dt-surface)', boxShadow: 'var(--dt-shadow-xl)',\n borderLeft: fromRight ? '1px solid var(--dt-border-strong)' : 'none',\n borderRight: fromRight ? 'none' : '1px solid var(--dt-border-strong)',\n fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n <header style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '16px 18px', borderBottom: '1px solid var(--dt-border)' }}>\n {title ? <h3 id={titleId} style={{ margin: 0, flex: 1, minWidth: 0, fontSize: 16, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>{title}</h3> : null}\n <button\n type=\"button\" onClick={onClose} aria-label=\"닫기\"\n style={{ flex: '0 0 auto', width: 30, height: 30, display: 'grid', placeItems: 'center', border: 'none', background: 'var(--dt-surface-sunken)', borderRadius: 'var(--dt-radius-sm)', color: 'var(--dt-muted-strong)', cursor: 'pointer' }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n </header>\n <div style={{ flex: 1, overflowY: 'auto', padding: 18 }}>{children}</div>\n {footer ? <footer style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '14px 18px', borderTop: '1px solid var(--dt-border)' }}>{footer}</footer> : null}\n </aside>\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface EmptyStateProps {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n style?: CSSProperties;\n}\n\n/** Empty state for lists/tables — quiet icon, title, guidance, action. */\nexport function EmptyState({ icon, title, description, action, style }: EmptyStateProps) {\n return (\n <div style={{\n display: 'grid', placeItems: 'center', gap: 10, textAlign: 'center',\n padding: '40px 24px', borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface-sunken)', ...style,\n }}>\n {icon ? (\n <span style={{\n display: 'inline-flex', width: 44, height: 44, alignItems: 'center', justifyContent: 'center',\n borderRadius: 'var(--dt-radius-md)', background: 'var(--dt-surface)', color: 'var(--dt-muted)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n }}>{icon}</span>\n ) : null}\n {title ? <div style={{ fontSize: 15, fontWeight: 650, color: 'var(--dt-ink-strong)' }}>{title}</div> : null}\n {description ? <div style={{ fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted)', maxWidth: 320 }}>{description}</div> : null}\n {action ? <div style={{ marginTop: 6 }}>{action}</div> : null}\n </div>\n );\n}\n","import type { CSSProperties } from 'react';\n\nexport interface SkeletonProps {\n width?: number | string;\n height?: number | string;\n radius?: string;\n style?: CSSProperties;\n}\n\nexport function Skeleton({ width = '100%', height = 14, radius = 'var(--dt-radius-sm)', style }: SkeletonProps) {\n return (\n <span className=\"dt-skeleton\" style={{\n display: 'block', width, height, borderRadius: radius,\n background: 'var(--dt-surface-sunken)', ...style,\n }} />\n );\n}\n","import type { CSSProperties } from 'react';\nimport { useId } from 'react';\n\nexport interface SpinnerProps {\n size?: number;\n stroke?: number;\n color?: string;\n style?: CSSProperties;\n}\n\nexport function Spinner({ size = 18, stroke = 2, color = 'var(--dt-accent)', style }: SpinnerProps) {\n useId();\n return (\n <span style={{ display: 'inline-flex', ...style }} role=\"status\" aria-label=\"로딩 중\">\n <svg className=\"dt-spinner-svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth={stroke} style={{ color: 'var(--dt-border-strong)', opacity: 0.5 }} />\n <path d=\"M12 3a9 9 0 0 1 9 9\" stroke={color} strokeWidth={stroke} strokeLinecap=\"round\" />\n </svg>\n </span>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nconst DOT = { info: 'var(--dt-cobalt)', success: 'var(--dt-success)', warning: 'var(--dt-warning)', danger: 'var(--dt-danger)' };\n\nexport interface ToastProps {\n tone?: keyof typeof DOT;\n title?: ReactNode;\n message?: ReactNode;\n action?: ReactNode;\n onDismiss?: () => void;\n style?: CSSProperties;\n}\n\nexport function Toast({ tone = 'success', title, message, action, onDismiss, style }: ToastProps) {\n return (\n <div role=\"status\" className=\"dt-toast\" style={{\n display: 'flex', alignItems: 'flex-start', gap: 11, width: 340, maxWidth: '90vw',\n padding: '13px 15px', background: 'var(--dt-surface)',\n borderRadius: 'var(--dt-radius-md)', boxShadow: 'var(--dt-shadow-lg)',\n ...style,\n }}>\n <span style={{ width: 8, height: 8, borderRadius: 9999, marginTop: 5, flex: '0 0 auto', background: DOT[tone] ?? DOT.success }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n {title ? <div style={{ fontSize: 14, fontWeight: 650, color: 'var(--dt-ink-strong)' }}>{title}</div> : null}\n {message ? <div style={{ marginTop: title ? 2 : 0, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)' }}>{message}</div> : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n {onDismiss ? (\n <button onClick={onDismiss} aria-label=\"닫기\" style={{ flex: '0 0 auto', border: 'none', background: 'transparent', cursor: 'pointer', color: 'var(--dt-muted)', padding: 2, lineHeight: 0 }}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { useState, useId } from 'react';\n\nexport interface TooltipProps {\n label: ReactNode;\n position?: 'top' | 'bottom' | 'left' | 'right';\n children: ReactNode;\n}\n\nexport function Tooltip({ label, position = 'top', children }: TooltipProps) {\n const tooltipId = useId();\n const [show, setShow] = useState(false);\n const pos: CSSProperties = {\n top: { bottom: '100%', left: '50%', transform: 'translateX(-50%) translateY(-7px)' },\n bottom: { top: '100%', left: '50%', transform: 'translateX(-50%) translateY(7px)' },\n left: { right: '100%', top: '50%', transform: 'translateY(-50%) translateX(-7px)' },\n right: { left: '100%', top: '50%', transform: 'translateY(-50%) translateX(7px)' },\n }[position];\n return (\n <span style={{ position: 'relative', display: 'inline-flex' }}\n onMouseEnter={() => setShow(true)} onMouseLeave={() => setShow(false)}\n onFocus={() => setShow(true)} onBlur={() => setShow(false)}>\n <span aria-describedby={show ? tooltipId : undefined}>{children}</span>\n <span id={tooltipId} role=\"tooltip\" style={{\n position: 'absolute', zIndex: 60, whiteSpace: 'nowrap', pointerEvents: 'none',\n opacity: show ? 1 : 0, visibility: show ? 'visible' : 'hidden',\n padding: '6px 9px', fontSize: 12, fontWeight: 500, lineHeight: 1.2,\n color: 'var(--dt-paper)', background: 'var(--dt-ink-strong)',\n borderRadius: 'var(--dt-radius-sm)', boxShadow: 'var(--dt-shadow-md)',\n transition: 'opacity var(--dt-motion-fast), visibility var(--dt-motion-fast)', ...pos,\n }}>{label}</span>\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nconst SIZE = { sm: 26, md: 34, lg: 44 } as const;\n\nexport interface AvatarProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n name?: string;\n src?: string;\n size?: keyof typeof SIZE | number;\n status?: 'online' | 'busy' | 'away' | 'offline';\n /** Rounded square (default) vs full circle. */\n square?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Avatar — image or initials in a rounded square. Optional status dot.\n * Deterministic tint from the name when no image is given.\n */\nexport function Avatar({ name = '', src, size = 'md', status, square = true, style, ...rest }: AvatarProps) {\n const px = typeof size === 'number' ? size : (SIZE[size] ?? SIZE.md);\n const initials = name.trim().split(/\\s+/).map((word) => word[0]).slice(0, 2).join('').toUpperCase() || '·';\n const radius = square ? Math.round(px * 0.28) : px;\n const statusColor = status ? { online: 'var(--dt-success)', busy: 'var(--dt-danger)', away: 'var(--dt-warning)', offline: 'var(--dt-muted)' }[status] ?? undefined : undefined;\n\n return (\n <span {...rest} style={{ position: 'relative', display: 'inline-flex', flex: '0 0 auto', ...style }}>\n {src ? (\n <img src={src} alt={name} width={px} height={px} style={{ borderRadius: radius, objectFit: 'cover', boxShadow: 'var(--dt-ring)' }} />\n ) : (\n <span style={{\n width: px, height: px, borderRadius: radius, display: 'grid', placeItems: 'center',\n background: 'var(--dt-tint-accent)', color: 'var(--dt-accent)',\n fontSize: px * 0.38, fontWeight: 700, letterSpacing: '-0.02em',\n }}>{initials}</span>\n )}\n {statusColor ? (\n <span style={{\n position: 'absolute', right: -1, bottom: -1, width: px * 0.3, height: px * 0.3,\n borderRadius: 9999, background: statusColor, boxShadow: '0 0 0 2px var(--dt-surface)',\n }} />\n ) : null}\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\nimport { useState } from 'react';\n\ntype TokenKind = 'plain' | 'key' | 'str' | 'num' | 'kw' | 'pun';\n\ninterface CodeToken {\n t: string;\n c: TokenKind;\n}\n\nfunction highlight(line: string): CodeToken[] {\n const out: CodeToken[] = [];\n const re = /(\"(?:[^\"\\\\]|\\\\.)*\"\\s*:)|(\"(?:[^\"\\\\]|\\\\.)*\")|(\\b-?\\d+(?:\\.\\d+)?\\b)|(\\b(?:true|false|null|GET|POST|PUT|DELETE)\\b)|([{}[\\],:])/g;\n let last = 0;\n let match: RegExpExecArray | null;\n\n while ((match = re.exec(line)) !== null) {\n if (match.index > last) out.push({ t: line.slice(last, match.index), c: 'plain' });\n if (match[1]) out.push({ t: match[1], c: 'key' });\n else if (match[2]) out.push({ t: match[2], c: 'str' });\n else if (match[3]) out.push({ t: match[3], c: 'num' });\n else if (match[4]) out.push({ t: match[4], c: 'kw' });\n else if (match[5]) out.push({ t: match[5], c: 'pun' });\n last = re.lastIndex;\n }\n\n if (last < line.length) out.push({ t: line.slice(last), c: 'plain' });\n return out;\n}\n\nconst COLOR: Record<TokenKind, string> = { plain: '#cdd0d8', key: '#7fd1c0', str: '#e0a96d', num: '#8fb3ff', kw: '#c98aff', pun: '#8a91a3' };\n\nexport interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n /** The snippet, newline-separated. Lightly token-highlighted (JSON/shell). */\n code?: string;\n /** Header label, e.g. a filename or \"response\". Falls back to language. */\n label?: string;\n language?: string;\n showLineNumbers?: boolean;\n copyable?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Dark code surface for the light page (Stripe-style). Header + copy + line numbers.\n * @startingPoint section=\"Data\" subtitle=\"Dark code block with copy\" viewport=\"520x220\"\n */\nexport function CodeBlock({ code = '', label, language = 'json', showLineNumbers = true, copyable = true, style, ...rest }: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n const lines = String(code).replace(/\\n$/, '').split('\\n');\n\n const copy = () => {\n try { navigator.clipboard?.writeText(code); } catch { /* clipboard unavailable */ }\n setCopied(true); setTimeout(() => setCopied(false), 1400);\n };\n\n return (\n <div {...rest} style={{\n background: 'var(--dt-code-bg)', border: '1px solid var(--dt-code-border)',\n borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden', ...style,\n }}>\n {(label || copyable) ? (\n <div style={{\n display: 'flex', alignItems: 'center', gap: 10, padding: '9px 12px',\n borderBottom: '1px solid var(--dt-code-border)',\n }}>\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: '#8a91a3' }}>{label || language}</span>\n {copyable ? (\n <button\n type=\"button\" onClick={copy}\n style={{\n marginLeft: 'auto', display: 'inline-flex', alignItems: 'center', gap: 6, border: 'none',\n background: 'transparent', color: copied ? '#34d399' : '#8a91a3', cursor: 'pointer',\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, padding: 0,\n }}\n >\n {copied ? (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>복사됨</>\n ) : (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" /><path d=\"M5 15V5a2 2 0 0 1 2-2h10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>복사</>\n )}\n </button>\n ) : null}\n </div>\n ) : null}\n <div style={{ padding: '12px 0', overflowX: 'auto' }}>\n {lines.map((line, index) => (\n <div key={index} style={{ display: 'grid', gridTemplateColumns: showLineNumbers ? '38px 1fr' : '1fr', fontFamily: 'var(--dt-font-mono)', fontSize: 12.5, lineHeight: 1.75 }}>\n {showLineNumbers ? <span style={{ textAlign: 'right', paddingRight: 14, color: '#5a6273', userSelect: 'none' }}>{index + 1}</span> : null}\n <code style={{ color: COLOR.plain, whiteSpace: 'pre', paddingRight: 14 }}>\n {highlight(line).map((segment, segmentIndex) => <span key={segmentIndex} style={{ color: COLOR[segment.c] }}>{segment.t}</span>)}\n </code>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueItem {\n key: string;\n value: ReactNode;\n /** Render the value in JetBrains Mono (paths, IDs, methods). */\n mono?: boolean;\n /** Tint the value persimmon (highlighted field). */\n accent?: boolean;\n}\n\nexport interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {\n items?: KeyValueItem[];\n /** 1 = stacked rows, 2 = two-up grid. */\n columns?: 1 | 2;\n style?: CSSProperties;\n}\n\n/**\n * Definition list for spec metadata — hairline rows, muted key, ink value.\n * @startingPoint section=\"Data\" subtitle=\"Spec metadata as a definition list\" viewport=\"460x220\"\n */\nexport function KeyValue({ items = [], columns = 1, style, ...rest }: KeyValueProps) {\n return (\n <dl {...rest} style={{\n margin: 0, display: 'grid',\n gridTemplateColumns: columns === 2 ? '1fr 1fr' : '1fr',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n ...style,\n }}>\n {items.map((item, index) => {\n const row = Math.floor(index / columns);\n const col = index % columns;\n const isLastRow = row === Math.floor((items.length - 1) / columns);\n\n return (\n <div\n key={index}\n style={{\n display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 14,\n padding: '11px 14px',\n borderBottom: isLastRow ? 'none' : '1px solid var(--dt-border)',\n borderRight: columns === 2 && col === 0 ? '1px solid var(--dt-border)' : 'none',\n }}\n >\n <dt style={{ fontSize: 12.5, color: 'var(--dt-muted)', flex: '0 0 auto' }}>{item.key}</dt>\n <dd style={{\n margin: 0, textAlign: 'right', minWidth: 0,\n fontFamily: item.mono ? 'var(--dt-font-mono)' : 'inherit',\n fontSize: item.mono ? 12.5 : 13, fontWeight: 600,\n color: item.accent ? 'var(--dt-accent)' : 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}>{item.value}</dd>\n </div>\n );\n })}\n </dl>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport type LogLevel = 'ok' | 'warn' | 'error' | 'info';\n\nconst LEVEL: Record<LogLevel, { dot: string; text: string; label: string }> = {\n ok: { dot: 'var(--dt-success)', text: 'var(--dt-success)', label: 'OK' },\n warn: { dot: 'var(--dt-warning)', text: 'var(--dt-warning)', label: 'WARN' },\n error: { dot: 'var(--dt-danger)', text: 'var(--dt-danger)', label: 'ERR' },\n info: { dot: 'var(--dt-muted)', text: 'var(--dt-muted-strong)', label: 'INFO' },\n};\n\nexport interface LogEntry {\n time: string;\n level: LogLevel;\n tool: string;\n message?: string;\n /** Latency string (e.g. \"142ms\"). When absent, the level label shows instead. */\n latency?: string;\n}\n\nexport interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n entries?: LogEntry[];\n style?: CSSProperties;\n}\n\n/**\n * Dense tabular execution-log stream — hairline rows, status dots, mono columns.\n * @startingPoint section=\"Data\" subtitle=\"Execution-log stream\" viewport=\"560x200\"\n */\nexport function LogRow({ entries = [], style, ...rest }: LogRowProps) {\n return (\n <div {...rest} style={{\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n background: 'var(--dt-surface)', fontVariantNumeric: 'tabular-nums', ...style,\n }}>\n {entries.map((entry, index) => {\n const level = LEVEL[entry.level] || LEVEL.info;\n\n return (\n <div\n key={index}\n style={{\n display: 'grid', gridTemplateColumns: 'auto 14px 1fr auto', alignItems: 'center', gap: 12,\n padding: '9px 14px', borderTop: index === 0 ? 'none' : '1px solid var(--dt-border)',\n fontFamily: 'var(--dt-font-mono)', fontSize: 12,\n }}\n >\n <span style={{ color: 'var(--dt-muted)' }}>{entry.time}</span>\n <span style={{ width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: 'center' }} />\n <span style={{ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n <span style={{ color: 'var(--dt-ink-strong)', fontWeight: 600 }}>{entry.tool}</span>\n {entry.message ? <span style={{ color: 'var(--dt-muted-strong)' }}>{' '}{entry.message}</span> : null}\n </span>\n <span style={{ color: entry.latency ? 'var(--dt-muted-strong)' : level.text, fontWeight: 600 }}>\n {entry.latency || level.label}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\ntype PageItem = number | '…';\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {\n page?: number;\n pageCount?: number;\n onChange?: (page: number) => void;\n style?: CSSProperties;\n}\n\n/** Pagination — prev/next plus compact page numbers with an ellipsis. */\nexport function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }: PaginationProps) {\n const go = (targetPage: number) => { if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage); };\n const pages: PageItem[] = [];\n const add = (targetPage: PageItem) => pages.push(targetPage);\n\n if (pageCount <= 7) { for (let i = 1; i <= pageCount; i += 1) add(i); }\n else {\n add(1);\n if (page > 3) add('…');\n for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);\n if (page < pageCount - 2) add('…');\n add(pageCount);\n }\n\n const cell = (active: boolean): CSSProperties => ({\n minWidth: 32, height: 32, padding: '0 8px', borderRadius: 'var(--dt-radius-sm)', border: 'none', cursor: 'pointer',\n fontSize: 13, fontWeight: 600, fontVariantNumeric: 'tabular-nums',\n background: active ? 'var(--dt-accent)' : 'transparent',\n color: active ? 'var(--dt-accent-ink)' : 'var(--dt-muted-strong)',\n });\n const arrow = (disabled: boolean): CSSProperties => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' });\n\n return (\n <nav {...rest} style={{ display: 'inline-flex', alignItems: 'center', gap: 2, ...style }} aria-label=\"페이지\">\n <button style={arrow(page <= 1)} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"이전\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n {pages.map((pageItem, index) => pageItem === '…'\n ? <span key={`e${index}`} style={{ minWidth: 22, textAlign: 'center', color: 'var(--dt-muted)' }}>…</span>\n : <button key={pageItem} style={cell(pageItem === page)} onClick={() => go(pageItem)} aria-current={pageItem === page ? 'page' : undefined}>{pageItem}</button>)}\n <button style={arrow(page >= pageCount)} onClick={() => go(page + 1)} disabled={page >= pageCount} aria-label=\"다음\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n </nav>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface StatTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n label: ReactNode;\n value: ReactNode;\n /** e.g. \"+8.4%\". */\n delta?: ReactNode;\n deltaTone?: 'up' | 'down' | 'neutral';\n hint?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Metric tile — uppercase label, large tabular value, optional delta.\n * The console's KPI unit. Compose several inside a bordered stat row.\n */\nexport function StatTile({ label, value, delta, deltaTone = 'neutral', hint, style, ...rest }: StatTileProps) {\n const tone = { up: 'var(--dt-success)', down: 'var(--dt-danger)', neutral: 'var(--dt-muted)' }[deltaTone];\n\n return (\n <div {...rest} style={{ padding: 18, minWidth: 0, ...style }}>\n <div style={{ fontSize: 11, fontWeight: 650, letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--dt-muted)' }}>{label}</div>\n <div style={{ marginTop: 8, fontSize: 25, fontWeight: 700, lineHeight: 1.1, letterSpacing: '-0.02em', color: 'var(--dt-ink-strong)', fontVariantNumeric: 'tabular-nums' }}>{value}</div>\n {(delta || hint) ? (\n <div style={{ marginTop: 6, display: 'flex', alignItems: 'center', gap: 6, fontSize: 12, color: 'var(--dt-muted)' }}>\n {delta ? <span style={{ color: tone, fontWeight: 600, fontVariantNumeric: 'tabular-nums' }}>{delta}</span> : null}\n {hint ? <span>{hint}</span> : null}\n </div>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport type TableAlign = 'left' | 'center' | 'right';\nexport type TableRow = Record<string, ReactNode>;\n\nexport interface TableColumn<Row extends TableRow = TableRow> {\n key: Extract<keyof Row, string>;\n header: ReactNode;\n align?: TableAlign;\n nowrap?: boolean;\n render?: (value: Row[Extract<keyof Row, string>], row: Row) => ReactNode;\n}\n\nexport interface TableProps<Row extends TableRow = TableRow> extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n columns?: Array<TableColumn<Row>>;\n rows?: Row[];\n rowKey?: (row: Row, index: number) => string | number;\n onRowClick?: (row: Row) => void;\n empty?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Data table — scannable, dense, hairline-divided. Columns define header,\n * alignment, and an optional cell renderer. Built for comparison, not decoration.\n */\nexport function Table<Row extends TableRow = TableRow>({ columns = [], rows = [], rowKey, onRowClick, empty, style, ...rest }: TableProps<Row>) {\n if (!rows.length && empty) return empty;\n\n return (\n <div {...rest} style={{ overflowX: 'auto', borderRadius: 'var(--dt-radius-lg)', background: 'var(--dt-surface)', boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)', ...style }}>\n <table style={{ width: '100%', borderCollapse: 'collapse', color: 'var(--dt-ink)' }}>\n <thead>\n <tr style={{ background: 'var(--dt-surface-muted)' }}>\n {columns.map((column) => (\n <th key={column.key} style={{\n textAlign: column.align || 'left', padding: '11px 18px',\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600,\n letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--dt-muted)',\n borderBottom: '1px solid var(--dt-divider)', whiteSpace: 'nowrap',\n }}>{column.header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={rowKey ? rowKey(row, rowIndex) : rowIndex}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n className=\"dt-tr\"\n style={{ cursor: onRowClick ? 'pointer' : 'default' }}>\n {columns.map((column) => (\n <td key={column.key} style={{\n textAlign: column.align || 'left', padding: '13px 18px', fontSize: 13,\n borderBottom: '1px solid var(--dt-divider)', whiteSpace: column.nowrap ? 'nowrap' : 'normal',\n }}>{column.render ? column.render(row[column.key], row) : row[column.key]}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n <style>{`.dt-tr{transition:background-color 130ms}.dt-tr:hover{background:var(--dt-surface-muted)}tbody tr:last-child td{border-bottom:0}`}</style>\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface UsageMeterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n label?: ReactNode;\n value?: number;\n max?: number;\n /** Suffix after max, e.g. \"회/일\". */\n unit?: string;\n hint?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Quota / usage bar — hairline track, persimmon fill escalating to warning/danger.\n * @startingPoint section=\"Data\" subtitle=\"Quota usage with tabular readout\" viewport=\"420x80\"\n */\nexport function UsageMeter({ label, value = 0, max = 100, unit = '', hint, style, ...rest }: UsageMeterProps) {\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n const fill = pct >= 90 ? 'var(--dt-danger)' : pct >= 75 ? 'var(--dt-warning)' : 'var(--dt-accent)';\n\n return (\n <div {...rest} style={{ display: 'grid', gap: 8, ...style }}>\n <div style={{ display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 12 }}>\n {label ? <span style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>{label}</span> : <span />}\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12.5, color: 'var(--dt-ink-strong)', fontVariantNumeric: 'tabular-nums' }}>\n <b style={{ fontWeight: 700 }}>{value.toLocaleString()}</b>\n <span style={{ color: 'var(--dt-muted)' }}> / {max.toLocaleString()}{unit}</span>\n </span>\n </div>\n <div style={{ position: 'relative', height: 8, borderRadius: 'var(--dt-radius-sm)', background: 'var(--dt-surface-sunken)', boxShadow: 'inset 0 0 0 1px var(--dt-border-strong)', overflow: 'hidden' }}>\n <div style={{ position: 'absolute', inset: 0, width: `${pct}%`, background: fill, borderRadius: 'var(--dt-radius-sm)', transition: 'width var(--dt-motion)' }} />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { Fragment } from 'react';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n}\n\nexport interface BreadcrumbProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n items?: BreadcrumbItem[];\n style?: CSSProperties;\n}\n\n/** Breadcrumb trail — last item is the current page. */\nexport function Breadcrumb({ items = [], style, ...rest }: BreadcrumbProps) {\n return (\n <nav\n {...rest}\n aria-label=\"breadcrumb\"\n style={{ display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap', ...style }}\n >\n {items.map((it, i) => {\n const last = i === items.length - 1;\n return (\n <Fragment key={i}>\n {last\n ? <span aria-current=\"page\" style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-ink-strong)' }}>{it.label}</span>\n : <a href={it.href || '#'} style={{ fontSize: 13, fontWeight: 500, color: 'var(--dt-muted)', textDecoration: 'none' }}>{it.label}</a>}\n {!last ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" style={{ color: 'var(--dt-border-strong)' }} aria-hidden=\"true\">\n <path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : null}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n","import type { ChangeEvent, CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent as ReactMouseEvent, ReactNode } from 'react';\nimport { useState, useEffect } from 'react';\n\nexport interface CommandItem {\n label: string;\n icon?: ReactNode;\n meta?: string;\n shortcut?: string;\n active?: boolean;\n}\n\nexport interface CommandGroup {\n heading?: string;\n items: CommandItem[];\n}\n\nexport interface CommandPaletteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onSelect'> {\n open?: boolean;\n query?: string;\n onQueryChange?: (q: string) => void;\n groups?: CommandGroup[];\n footerHint?: string;\n onSelect?: (item: CommandItem) => void;\n style?: CSSProperties;\n}\n\nexport function CommandPalette({ open = true, query = '', onQueryChange, groups = [], footerHint = '↑↓ 이동 · ↵ 실행 · esc 닫기', onSelect, style, ...rest }: CommandPaletteProps) {\n const [activeIndex, setActiveIndex] = useState([0, 0]);\n const [isOpen, setIsOpen] = useState(open);\n\n useEffect(() => {\n setIsOpen(open);\n }, [open]);\n\n if (!isOpen) return null;\n\n const handleKeyDown = (_e: KeyboardEvent) => {\n if (_e.key === 'ArrowDown') {\n _e.preventDefault();\n setActiveIndex((prev) => {\n const [groupIdx, itemIdx] = prev;\n const group = groups[groupIdx];\n if (!group) return prev;\n if (itemIdx < group.items.length - 1) return [groupIdx, itemIdx + 1];\n const nextGroupIdx = (groupIdx + 1) % groups.length;\n const nextGroup = groups[nextGroupIdx];\n if (nextGroup && nextGroup.items.length > 0) return [nextGroupIdx, 0];\n return prev;\n });\n } else if (_e.key === 'ArrowUp') {\n _e.preventDefault();\n setActiveIndex((prev) => {\n const [groupIdx, itemIdx] = prev;\n if (itemIdx > 0) return [groupIdx, itemIdx - 1];\n const prevGroupIdx = (groupIdx - 1 + groups.length) % groups.length;\n const prevGroup = groups[prevGroupIdx];\n if (prevGroup && prevGroup.items.length > 0) return [prevGroupIdx, prevGroup.items.length - 1];\n return prev;\n });\n } else if (_e.key === 'Enter') {\n _e.preventDefault();\n const [gi, ii] = activeIndex;\n const group = groups[gi];\n if (group && group.items[ii]) onSelect?.(group.items[ii]);\n } else if (_e.key === 'Escape') {\n _e.preventDefault();\n setIsOpen(false);\n }\n };\n\n return (\n <div\n {...rest}\n role=\"listbox\"\n onKeyDown={handleKeyDown}\n style={{\n width: 520, maxWidth: '100%', background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-xl)',\n boxShadow: 'var(--dt-shadow-xl)', overflow: 'hidden', fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n {/* search */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 11, padding: '14px 16px', borderBottom: '1px solid var(--dt-border)' }}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" style={{ color: 'var(--dt-muted)', flex: '0 0 auto' }}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" /><path d=\"M21 21l-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n autoFocus value={query} onChange={(e: ChangeEvent<HTMLInputElement>) => onQueryChange?.(e.target.value)}\n placeholder=\"도구 · 액션 검색…\"\n style={{ flex: 1, border: 'none', outline: 'none', background: 'transparent', fontSize: 15, fontFamily: 'inherit', color: 'var(--dt-ink-strong)' }}\n />\n <kbd style={{\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, color: 'var(--dt-muted)',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-sm)', padding: '2px 7px',\n }}>⌘K</kbd>\n </div>\n\n {/* results */}\n <div style={{ maxHeight: 320, overflowY: 'auto', padding: 6 }}>\n {groups.map((g, gi) => (\n <div key={gi} style={{ marginBottom: 4 }}>\n {g.heading ? (\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 10, letterSpacing: '.1em', textTransform: 'uppercase', color: 'var(--dt-muted)', padding: '8px 10px 5px' }}>{g.heading}</div>\n ) : null}\n {g.items.map((it, ii) => {\n const isActive = activeIndex[0] === gi && activeIndex[1] === ii;\n return (\n <button\n key={ii}\n type=\"button\"\n role=\"option\"\n aria-selected={isActive}\n onMouseDown={(e: ReactMouseEvent<HTMLButtonElement>) => { e.preventDefault(); onSelect?.(it); }}\n style={{\n display: 'flex', alignItems: 'center', gap: 11, padding: '9px 10px',\n borderRadius: 'var(--dt-radius-md)', cursor: 'pointer',\n background: isActive ? 'var(--dt-tint-accent)' : 'transparent',\n border: 'none', outline: 'none',\n }}\n >\n {it.icon ? <span style={{ display: 'inline-flex', flex: '0 0 auto', color: isActive ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{it.icon}</span> : null}\n <span style={{ flex: 1, minWidth: 0, fontSize: 13.5, fontWeight: isActive ? 600 : 500, color: isActive ? 'var(--dt-accent)' : 'var(--dt-ink-strong)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {it.label}\n {it.meta ? <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)', fontWeight: 400, marginLeft: 8 }}>{it.meta}</span> : null}\n </span>\n {it.shortcut ? (\n <kbd style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted-strong)', border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-sm)', padding: '1px 6px' }}>{it.shortcut}</kbd>\n ) : null}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n\n {footerHint ? (\n <div style={{ borderTop: '1px solid var(--dt-border)', padding: '8px 14px', fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>{footerHint}</div>\n ) : null}\n </div>\n );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent as ReactMouseEvent, ReactNode } from 'react';\n\nexport interface MenuItem {\n label?: ReactNode;\n icon?: ReactNode;\n onClick?: () => void;\n danger?: boolean;\n divider?: boolean;\n}\n\nexport interface MenuProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {\n trigger: ReactNode;\n items?: MenuItem[];\n align?: 'left' | 'right';\n width?: number;\n style?: CSSProperties;\n}\n\nexport function Menu({ trigger, items = [], align = 'left', width = 200, style, ...rest }: MenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (!open) return undefined;\n const onDoc = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); };\n window.addEventListener('mousedown', onDoc);\n return () => window.removeEventListener('mousedown', onDoc);\n }, [open]);\n\n const handleTriggerKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setOpen((v) => !v);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n const firstItem = ref.current?.querySelector('button[role=\"menuitem\"]') as HTMLButtonElement | null;\n firstItem?.focus();\n }\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.onClick) {\n item.onClick();\n setOpen(false);\n }\n };\n\n const handleTriggerClick = () => {\n setOpen((v) => !v);\n };\n\n return (\n <span {...rest} ref={ref} style={{ position: 'relative', display: 'inline-flex', ...style }}>\n <button\n type=\"button\"\n onClick={handleTriggerClick}\n onKeyDown={handleTriggerKeyDown}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n style={{ display: 'inline-flex', cursor: 'pointer', border: 'none', background: 'transparent', padding: 0, fontSize: 'inherit', fontFamily: 'inherit' }}\n >\n {trigger}\n </button>\n {open ? (\n <div role=\"menu\" aria-orientation=\"vertical\" style={{\n position: 'absolute', top: '100%', [align]: 0, marginTop: 6, zIndex: 80, width,\n padding: 5, background: 'var(--dt-surface)', borderRadius: 'var(--dt-radius-md)',\n boxShadow: 'var(--dt-shadow-lg)', animation: 'dt-menu 130ms var(--dt-ease)',\n }}>\n {items.map((it, i) => it.divider\n ? <div key={`d${i}`} style={{ height: 1, background: 'var(--dt-border)', margin: '5px 0' }} />\n : (\n <button\n key={i}\n role=\"menuitem\"\n onClick={() => handleItemClick(it)}\n style={{\n display: 'flex', alignItems: 'center', gap: 9, width: '100%', textAlign: 'left',\n padding: '8px 10px', border: 'none', borderRadius: 'var(--dt-radius-sm)', cursor: 'pointer',\n background: 'transparent', fontSize: 13.5, fontWeight: 500, fontFamily: 'inherit',\n color: it.danger ? 'var(--dt-danger)' : 'var(--dt-ink)',\n }}\n onMouseEnter={(e: ReactMouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = it.danger ? 'var(--dt-tint-danger)' : 'var(--dt-surface-sunken)'; }}\n onMouseLeave={(e: ReactMouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = 'transparent'; }}>\n {it.icon ? <span style={{ display: 'inline-flex', color: it.danger ? 'var(--dt-danger)' : 'var(--dt-muted-strong)' }}>{it.icon}</span> : null}\n {it.label}\n </button>\n ))}\n <style>{`@keyframes dt-menu{from{opacity:0;transform:translateY(-4px)}}`}</style>\n </div>\n ) : null}\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface SidebarItem {\n label: string;\n icon?: ReactNode;\n href?: string;\n active?: boolean;\n /** Trailing count (e.g. tool count), rendered tabular-mono. */\n badge?: ReactNode;\n}\n\nexport interface SidebarSection {\n heading?: string;\n items: SidebarItem[];\n}\n\nexport interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n /** Brand block for the header (e.g. <BrandLogo/>). */\n brand?: ReactNode;\n sections?: SidebarSection[];\n footer?: ReactNode;\n width?: number;\n style?: CSSProperties;\n}\n\n/**\n * Console primary nav — flat column, active item marked by a persimmon left bar.\n * @startingPoint section=\"Navigation\" subtitle=\"Console nav rail\" viewport=\"260x440\"\n */\nexport function Sidebar({ brand, sections = [], footer, width = 232, style, ...rest }: SidebarProps) {\n return (\n <nav\n {...rest}\n style={{\n width, display: 'flex', flexDirection: 'column',\n background: 'var(--dt-surface)', borderRight: '1px solid var(--dt-border-strong)',\n fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n {brand ? (\n <div style={{ padding: '16px 18px', borderBottom: '1px solid var(--dt-border)' }}>{brand}</div>\n ) : null}\n\n <div style={{ flex: 1, overflowY: 'auto', padding: '12px 10px', display: 'grid', gap: 16, alignContent: 'start' }}>\n {sections.map((sec, si) => (\n <div key={si} style={{ display: 'grid', gap: 2 }}>\n {sec.heading ? (\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 10, letterSpacing: '.1em', textTransform: 'uppercase', color: 'var(--dt-muted)', padding: '4px 10px 6px' }}>{sec.heading}</div>\n ) : null}\n {sec.items.map((it, ii) => (\n <a\n key={ii}\n href={it.href || '#'}\n aria-current={it.active ? 'page' : undefined}\n style={{\n position: 'relative', display: 'flex', alignItems: 'center', gap: 11,\n padding: '8px 10px 8px 12px', borderRadius: 'var(--dt-radius-md)', textDecoration: 'none',\n fontSize: 13.5, fontWeight: it.active ? 600 : 500,\n color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted-strong)',\n background: it.active ? 'var(--dt-tint-accent)' : 'transparent',\n }}\n >\n {it.active ? <span style={{ position: 'absolute', left: 0, top: 7, bottom: 7, width: 3, borderRadius: 2, background: 'var(--dt-accent)' }} /> : null}\n {it.icon ? <span style={{ display: 'inline-flex', flex: '0 0 auto', color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{it.icon}</span> : null}\n <span style={{ flex: 1, minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{it.label}</span>\n {it.badge != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted)', fontVariantNumeric: 'tabular-nums' }}>{it.badge}</span>\n ) : null}\n </a>\n ))}\n </div>\n ))}\n </div>\n\n {footer ? <div style={{ padding: '12px 16px', borderTop: '1px solid var(--dt-border)' }}>{footer}</div> : null}\n </nav>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n steps?: Step[];\n /** Index of the in-progress step; earlier steps render as done. */\n current?: number;\n orientation?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n}\n\n/**\n * Multi-step progress — done (check) / current (persimmon) / upcoming (muted).\n * @startingPoint section=\"Navigation\" subtitle=\"Onboarding step progress\" viewport=\"560x120\"\n */\nexport function Stepper({ steps = [], current = 0, orientation = 'horizontal', style, ...rest }: StepperProps) {\n const vertical = orientation === 'vertical';\n return (\n <div\n {...rest}\n style={{\n display: 'flex', flexDirection: vertical ? 'column' : 'row',\n alignItems: vertical ? 'stretch' : 'flex-start', gap: 0, ...style,\n }}\n >\n {steps.map((s, i) => {\n const done = i < current, active = i === current;\n const accent = done || active;\n return (\n <div key={i} style={{ display: 'flex', flexDirection: vertical ? 'row' : 'column', alignItems: vertical ? 'flex-start' : 'stretch', flex: vertical ? 'none' : 1, minWidth: 0, gap: vertical ? 12 : 0 }}>\n {/* marker + connector */}\n <div style={{ display: 'flex', flexDirection: vertical ? 'column' : 'row', alignItems: 'center', gap: vertical ? 6 : 10, ...(vertical ? {} : { width: '100%' }) }}>\n <span style={{\n flex: '0 0 auto', width: 26, height: 26, display: 'grid', placeItems: 'center',\n borderRadius: 'var(--dt-radius-sm)', fontFamily: 'var(--dt-font-mono)', fontSize: 12, fontWeight: 700,\n background: done ? 'var(--dt-accent)' : active ? 'var(--dt-tint-accent)' : 'var(--dt-surface-sunken)',\n color: done ? '#fff' : active ? 'var(--dt-accent)' : 'var(--dt-muted)',\n boxShadow: active ? 'inset 0 0 0 1.5px var(--dt-accent)' : done ? 'none' : 'inset 0 0 0 1px var(--dt-border-strong)',\n }}>\n {done ? <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg> : i + 1}\n </span>\n {i < steps.length - 1 ? (\n <span style={{\n background: done ? 'var(--dt-accent)' : 'var(--dt-border-strong)',\n ...(vertical ? { width: 2, minHeight: 22, flex: 1, marginTop: 2 } : { height: 2, flex: 1 }),\n }} />\n ) : null}\n </div>\n {/* label */}\n <div style={{ padding: vertical ? '2px 0 16px' : '10px 14px 0 0' }}>\n <div style={{ fontSize: 13.5, fontWeight: accent ? 650 : 500, color: accent ? 'var(--dt-ink-strong)' : 'var(--dt-muted)' }}>{s.label}</div>\n {s.description ? <div style={{ fontSize: 12, color: 'var(--dt-muted)', marginTop: 3, lineHeight: 1.45 }}>{s.description}</div> : null}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n type CSSProperties,\n type Dispatch,\n type SetStateAction,\n} from 'react';\n\nexport const BRAND_LOGO_LANGUAGE = {\n Korean: 'ko',\n English: 'en',\n} as const;\n\nconst BRAND_LOGO_SIZE = {\n sm: 20,\n md: 28,\n lg: 56,\n xl: 76,\n} as const;\n\nconst BRAND_WORDMARK = 'Bridger';\n\nconst BRAND_LOGO_LABEL: Record<BrandLogoLanguage, string> = {\n [BRAND_LOGO_LANGUAGE.Korean]: '브릿저',\n [BRAND_LOGO_LANGUAGE.English]: BRAND_WORDMARK,\n};\n\nexport type BrandLogoLanguage = (typeof BRAND_LOGO_LANGUAGE)[keyof typeof BRAND_LOGO_LANGUAGE];\nexport type BrandLogoSize = keyof typeof BRAND_LOGO_SIZE;\n\nexport interface BrandLogoHandle {\n readonly play: () => void;\n}\n\nexport interface BrandLogoProps {\n size?: BrandLogoSize | number;\n autoplay?: boolean;\n loop?: boolean;\n lang?: BrandLogoLanguage;\n style?: CSSProperties;\n}\n\nfunction playMark(setArmed: Dispatch<SetStateAction<boolean>>) {\n const scheduleFrame = typeof requestAnimationFrame === 'function'\n ? requestAnimationFrame\n : (callback: FrameRequestCallback) => setTimeout(callback, 0);\n setArmed(false);\n scheduleFrame(() =>\n scheduleFrame(() => setArmed(true)),\n );\n}\n\nexport const BrandLogo = forwardRef<BrandLogoHandle, BrandLogoProps>(function BrandLogo(\n {\n size = 'md',\n autoplay = false,\n loop = false,\n lang = BRAND_LOGO_LANGUAGE.Korean,\n style,\n },\n ref,\n) {\n const fontSize = typeof size === 'number' ? size : (BRAND_LOGO_SIZE[size] ?? BRAND_LOGO_SIZE.md);\n const [armed, setArmed] = useState(false);\n\n useImperativeHandle(\n ref,\n () => ({\n play() {\n playMark(setArmed);\n },\n }),\n [],\n );\n\n useEffect(() => {\n if (!autoplay) return;\n const timeout = setTimeout(() => playMark(setArmed), 200);\n return () => clearTimeout(timeout);\n }, [autoplay]);\n\n useEffect(() => {\n if (!loop) return;\n let alive = true;\n const interval = setInterval(() => {\n if (!alive) return;\n playMark((value) => {\n if (alive) setArmed(value);\n });\n }, 7000);\n\n return () => {\n alive = false;\n clearInterval(interval);\n };\n }, [loop]);\n\n return (\n <span\n aria-label={BRAND_LOGO_LABEL[lang]}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.38em',\n fontFamily: 'var(--dt-font-sans)',\n fontWeight: 760,\n fontSize,\n letterSpacing: 0,\n lineHeight: 1,\n color: 'var(--dt-ink-strong)',\n userSelect: 'none',\n ...style,\n }}\n >\n <svg\n width=\"2.306em\"\n height=\"1.24em\"\n viewBox=\"0 0 44 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n style={{ flex: '0 0 auto', overflow: 'visible' }}\n >\n <path\n d=\"M4 8H18C24 8 25 4 31 4H40\"\n fill=\"none\"\n stroke=\"color-mix(in srgb, var(--dt-ink-strong) 24%, transparent)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n />\n <path\n d=\"M4 16H18C24 16 25 20 31 20H40\"\n fill=\"none\"\n stroke=\"color-mix(in srgb, var(--dt-ink-strong) 24%, transparent)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n />\n <path\n className=\"dt-brand-logo-line\"\n d=\"M4 8H18C24 8 25 4 31 4H40\"\n fill=\"none\"\n stroke=\"var(--dt-accent)\"\n strokeDasharray=\"42\"\n strokeDashoffset={armed ? 0 : 0}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3.2\"\n style={armed ? { animation: 'dt-brand-logo-line-draw 420ms cubic-bezier(.2, .7, .2, 1) both' } : undefined}\n />\n <path\n className=\"dt-brand-logo-line\"\n d=\"M4 16H18C24 16 25 20 31 20H40\"\n fill=\"none\"\n stroke=\"var(--dt-accent)\"\n strokeDasharray=\"42\"\n strokeDashoffset={armed ? 0 : 0}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3.2\"\n style={armed ? { animation: 'dt-brand-logo-line-draw 420ms cubic-bezier(.2, .7, .2, 1) both' } : undefined}\n />\n </svg>\n <span>{BRAND_WORDMARK}</span>\n <style>\n {'@keyframes dt-brand-logo-line-draw{from{opacity:.45;stroke-dashoffset:42}to{opacity:1;stroke-dashoffset:0}}@media (prefers-reduced-motion: reduce){.dt-brand-logo-line{animation:none!important}}'}\n </style>\n </span>\n );\n});\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_ACTION_PILL_VARIANT = {\n Default: 'default',\n Accent: 'accent',\n Outline: 'outline',\n} as const;\n\nexport const PRODUCT_ACTION_PILL_SIZE = {\n Compact: 'compact',\n Figma: 'figma',\n} as const;\n\nexport type ProductActionPillVariant = (typeof PRODUCT_ACTION_PILL_VARIANT)[keyof typeof PRODUCT_ACTION_PILL_VARIANT];\nexport type ProductActionPillSize = (typeof PRODUCT_ACTION_PILL_SIZE)[keyof typeof PRODUCT_ACTION_PILL_SIZE];\n\nconst VARIANT_CLASS: Record<ProductActionPillVariant, string> = {\n [PRODUCT_ACTION_PILL_VARIANT.Default]: 'dt-product-action-pill-default',\n [PRODUCT_ACTION_PILL_VARIANT.Accent]: 'dt-product-action-pill-accent',\n [PRODUCT_ACTION_PILL_VARIANT.Outline]: 'dt-product-action-pill-outline',\n};\n\nconst SIZE_CLASS: Record<ProductActionPillSize, string> = {\n [PRODUCT_ACTION_PILL_SIZE.Compact]: 'dt-product-action-pill-compact',\n [PRODUCT_ACTION_PILL_SIZE.Figma]: 'dt-product-action-pill-figma',\n};\n\nexport type ProductActionPillProps<T extends ElementType = 'a'> = {\n as?: T;\n variant?: ProductActionPillVariant;\n size?: ProductActionPillSize;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n children?: ReactNode;\n className?: string;\n} & Omit<ComponentPropsWithoutRef<T>, 'as' | 'children' | 'className'>;\n\nexport function productActionPillClassName({\n variant = PRODUCT_ACTION_PILL_VARIANT.Default,\n size = PRODUCT_ACTION_PILL_SIZE.Compact,\n className,\n}: {\n variant?: ProductActionPillVariant;\n size?: ProductActionPillSize;\n className?: string;\n} = {}) {\n return cx('dt-product-action-pill', VARIANT_CLASS[variant], SIZE_CLASS[size], className);\n}\n\nexport function ProductActionPill<T extends ElementType = 'a'>({\n as,\n variant = PRODUCT_ACTION_PILL_VARIANT.Default,\n size = PRODUCT_ACTION_PILL_SIZE.Compact,\n leadingIcon,\n trailingIcon,\n children,\n className,\n ...rest\n}: ProductActionPillProps<T>) {\n const Component = as ?? 'a';\n\n return (\n <Component className={productActionPillClassName({ variant, size, className })} {...rest}>\n {leadingIcon ? <span className=\"dt-product-action-pill-icon\">{leadingIcon}</span> : null}\n {children ? <span className=\"dt-product-action-pill-label\">{children}</span> : null}\n {trailingIcon ? <span className=\"dt-product-action-pill-icon\">{trailingIcon}</span> : null}\n </Component>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_SHELL_TONE = {\n Cinematic: 'cinematic',\n Console: 'console',\n} as const;\n\nexport type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];\n\nconst SHELL_TONE_CLASS: Record<ProductShellTone, string> = {\n [PRODUCT_SHELL_TONE.Cinematic]: 'dt-product-shell-cinematic',\n [PRODUCT_SHELL_TONE.Console]: 'dt-product-shell-console',\n};\n\nexport interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {\n tone?: ProductShellTone;\n}\n\nexport function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }: ProductShellProps) {\n return (\n <div className={cx('dt-product-shell', SHELL_TONE_CLASS[tone], className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport function ProductCinematicBackdrop({\n animated = true,\n className,\n ...rest\n}: ProductCinematicBackdropProps) {\n return (\n <div\n className={cx('dt-product-cinematic-backdrop', animated && 'dt-product-cinematic-backdrop-animated', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n <div className=\"dt-product-cinematic-wash\" />\n <svg className=\"dt-product-cinematic-lines\" viewBox=\"0 0 1440 720\" preserveAspectRatio=\"xMidYMid slice\">\n <path className=\"dt-product-cinematic-track\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-a\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-b\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-c\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n </svg>\n </div>\n );\n}\n\nexport interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {\n gridSrc?: string;\n label?: string;\n}\n\nexport function ProductMotionField({\n gridSrc,\n label = 'Live API routing motion',\n className,\n ...rest\n}: ProductMotionFieldProps) {\n return (\n <div className={cx('dt-product-motion-field', className)} aria-label={label} {...rest}>\n {gridSrc ? <img className=\"dt-product-motion-grid\" src={gridSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" /> : null}\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-a\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-b\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-axis\" aria-hidden=\"true\" />\n <span className=\"dt-product-motion-copy\">API</span>\n </div>\n );\n}\n\nexport interface ProductSideRailItem {\n key: string;\n href: string;\n label: ReactNode;\n}\n\nexport interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {\n items: readonly ProductSideRailItem[];\n label: string;\n}\n\nexport function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps) {\n return (\n <aside className={cx('dt-product-side-rail', className)} aria-label={label} {...rest}>\n {items.map((item) => (\n <a key={item.key} href={item.href}>\n {item.label}\n </a>\n ))}\n </aside>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport function ProductPageHeader({\n eyebrow,\n title,\n description,\n actions,\n children,\n className,\n ...rest\n}: ProductPageHeaderProps) {\n return (\n <header className={cx('dt-product-page-header', className)} {...rest}>\n <div className=\"dt-product-page-header-row\">\n <div className=\"dt-product-page-header-copy\">\n {eyebrow ? <span className=\"dt-product-page-header-eyebrow\">{eyebrow}</span> : null}\n <div className=\"dt-product-page-header-text\">\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n </div>\n {actions ? <div className=\"dt-product-page-header-actions\">{actions}</div> : null}\n </div>\n {children ? <div className=\"dt-product-page-header-content\">{children}</div> : null}\n </header>\n );\n}\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: string;\n title?: ReactNode;\n description?: ReactNode;\n /** Right-aligned action (usually a ghost Button). */\n action?: ReactNode;\n children?: ReactNode;\n contentClassName?: string;\n}\n\n/**\n * Console section panel — title, description, action, body. No eyebrow kicker:\n * the title is a plain noun-phrase heading, the section's own content does the\n * rest. Lay items flat inside; never card-in-card.\n */\nexport function SectionCard({\n eyebrow,\n title,\n description,\n action,\n children,\n contentClassName,\n style,\n ...rest\n}: SectionCardProps) {\n const hasHeader = Boolean(eyebrow || title || description || action);\n return (\n <section\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: 'var(--dt-space-4)',\n ...style,\n }}\n >\n {hasHeader ? (\n <header\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--dt-space-3)',\n marginBottom: children ? 'var(--dt-space-3)' : 0,\n }}\n >\n <div style={{ minWidth: 0 }}>\n {eyebrow ? (\n <p\n style={{\n marginBottom: 6,\n fontSize: 12,\n fontWeight: 650,\n textTransform: 'uppercase',\n color: 'var(--dt-muted)',\n }}\n >\n {eyebrow}\n </p>\n ) : null}\n {title ? (\n <h3 style={{ fontSize: 18, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p style={{ marginTop: 6, fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted-strong)', maxWidth: 560 }}>\n {description}\n </p>\n ) : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n </header>\n ) : null}\n <div className={cx(contentClassName)}>{children}</div>\n </section>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nconst STATE_COLOR: Record<'available' | 'managed' | 'locked', string> = {\n available: 'var(--dt-success)',\n managed: 'var(--dt-success)',\n locked: 'var(--dt-warning)',\n};\n\nexport interface ToolCardProps extends HTMLAttributes<HTMLElement> {\n /** Tool name, e.g. \"weather_getForecast\". */\n name: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;\n /** Category chip; defaults to the name prefix before the first underscore. */\n category?: string;\n description?: string;\n /** Mono API path shown in the footer. */\n path?: string;\n /** Usability state — drives the status dot/label. */\n state?: 'available' | 'managed' | 'locked';\n stateLabel?: string;\n}\n\n/**\n * An MCP tool as shown in the catalog and tool list.\n */\nexport function ToolCard({\n name,\n method = 'GET',\n category,\n description = '설명 없음',\n path = '/',\n state = 'available',\n stateLabel,\n style,\n ...rest\n}: ToolCardProps) {\n const cat = category ?? (name ? name.split('_')[0] : 'etc');\n const labels = { available: '사용 가능', managed: '관리형 키', locked: '키 등록' };\n return (\n <article\n className=\"dt-tool-card\"\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: '16px 18px',\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...style,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ minWidth: 0 }}>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 8 }}>\n <span className=\"dt-chip dt-chip-muted\">{cat}</span>\n <span className=\"dt-chip dt-chip-accent\">{method}</span>\n </div>\n <h4 style={{ marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)', wordBreak: 'break-all' }}>\n {name}\n </h4>\n </div>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, flex: '0 0 auto', fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }}>\n <span style={{ width: 6, height: 6, borderRadius: '9999px', background: STATE_COLOR[state] }} />\n {stateLabel ?? labels[state]}\n </span>\n </div>\n <p style={{\n marginTop: 12, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)',\n display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden',\n }}>\n {description}\n </p>\n <div style={{ marginTop: 14, paddingTop: 13, borderTop: '1px solid var(--dt-divider)', display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 }}>\n <code style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12, color: 'var(--dt-muted)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {path}\n </code>\n </div>\n <style>{'.dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)'}</style>\n </article>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/cx.ts","../src/components/core/Badge.tsx","../src/components/core/Button.tsx","../src/components/core/Card.tsx","../src/components/core/FilterChip.tsx","../src/components/core/Input.tsx","../src/components/core/StatusPill.tsx","../src/components/core/Surface.tsx","../src/components/core/Tabs.tsx","../src/components/forms/Checkbox.tsx","../src/components/forms/Combobox.tsx","../src/components/forms/FileUpload.tsx","../src/components/forms/RadioGroup.tsx","../src/components/forms/SegmentedControl.tsx","../src/components/forms/Select.tsx","../src/components/forms/Slider.tsx","../src/components/forms/Switch.tsx","../src/components/forms/Textarea.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Dialog.tsx","../src/components/feedback/Drawer.tsx","../src/components/feedback/EmptyState.tsx","../src/components/feedback/Skeleton.tsx","../src/components/feedback/Spinner.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/Tooltip.tsx","../src/components/data/Avatar.tsx","../src/components/data/CodeBlock.tsx","../src/components/data/KeyValue.tsx","../src/components/data/LogRow.tsx","../src/components/data/Pagination.tsx","../src/components/data/StatTile.tsx","../src/components/data/Table.tsx","../src/components/data/UsageMeter.tsx","../src/components/navigation/Breadcrumb.tsx","../src/components/navigation/CommandPalette.tsx","../src/components/navigation/Menu.tsx","../src/components/navigation/Sidebar.tsx","../src/components/navigation/Stepper.tsx","../src/components/product/ActionList.tsx","../src/components/product/BrandLogo.tsx","../src/components/product/ProductActionPill.tsx","../src/components/product/ProductCinematic.tsx","../src/components/product/ProductPageHeader.tsx","../src/components/product/SectionCard.tsx","../src/components/product/ToolCard.tsx"],"names":["jsxs","jsx","useState","useRef","useId","useEffect","SIZE","Fragment","BrandLogo","VARIANT_CLASS"],"mappings":"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","file":"index.mjs","sourcesContent":["export function cx(...classes: Array<string | false | null | undefined>): string {\n return classes.filter(Boolean).join(' ');\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nconst TONE_CLASS = {\n neutral: 'badge',\n accent: 'badge badge-accent',\n info: 'badge badge-info',\n success: 'badge badge-success',\n warning: 'badge badge-warning',\n danger: 'badge badge-danger',\n};\n\nexport interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n children?: ReactNode;\n /** Semantic tone. info/success/warning/danger are status-only. */\n tone?: 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\n /** Show a leading status dot in the current tone color. */\n dot?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Status / classification badge. Pill-shaped, tinted. Status or\n * classification only — never decorative.\n */\nexport function Badge({ children, tone = 'neutral', dot = false, style, ...rest }: BadgeProps) {\n const cls = TONE_CLASS[tone] ?? TONE_CLASS.neutral;\n return (\n <span className={cls} style={style} {...rest}>\n {dot ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 6,\n height: 6,\n borderRadius: '9999px',\n background: 'currentColor',\n display: 'inline-block',\n }}\n />\n ) : null}\n {children}\n </span>\n );\n}\n","import type { ButtonHTMLAttributes, CSSProperties, ReactNode } from 'react';\n\n/* Height grid (px) per size — matches the fill-based button recipe in base.css.\n Horizontal padding only; vertical centering comes from the fixed height. */\nconst SIZE = {\n sm: { height: 36, padding: '0 14px', fontSize: 13 },\n md: { height: 40, padding: '0 16px', fontSize: 14 },\n lg: { height: 48, padding: '0 20px', fontSize: 15 },\n};\n\nconst VARIANT_CLASS = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n ghost: 'btn-ghost',\n};\n\nexport interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {\n children?: ReactNode;\n /** primary = the one strongest action; secondary = regular; ghost = low-emphasis. */\n variant?: 'primary' | 'secondary' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n /** Lucide icon element placed before the label. */\n icon?: ReactNode;\n /** Lucide icon element placed after the label. */\n iconRight?: ReactNode;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n style?: CSSProperties;\n}\n\n/**\n * Bridger button. Primary is the single strongest action per screen;\n * secondary for regular actions; ghost for low-emphasis commands.\n *\n * The one strongest action per screen uses variant=\"primary\" (persimmon).\n * @startingPoint section=\"Core\" subtitle=\"Primary / secondary / ghost actions\" viewport=\"700x140\"\n */\nexport function Button({\n children,\n variant = 'primary',\n size = 'md',\n icon = null,\n iconRight = null,\n disabled = false,\n type = 'button',\n onClick,\n style,\n ...rest\n}: ButtonProps) {\n const cls = VARIANT_CLASS[variant] ?? VARIANT_CLASS.primary;\n const s = SIZE[size] ?? SIZE.md;\n return (\n <button\n type={type}\n className={cls}\n disabled={disabled}\n onClick={onClick}\n style={{\n height: s.height,\n padding: s.padding,\n fontSize: s.fontSize,\n opacity: disabled ? 0.55 : 1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n ...style,\n }}\n {...rest}\n >\n {icon ? <span style={{ display: 'inline-flex' }} aria-hidden=\"true\">{icon}</span> : null}\n {children}\n {iconRight ? <span style={{ display: 'inline-flex' }} aria-hidden=\"true\">{iconRight}</span> : null}\n </button>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const CardTone = {\n Default: 'default',\n Muted: 'muted',\n Raised: 'raised',\n Panel: 'panel',\n} as const;\n\nexport type CardTone = (typeof CardTone)[keyof typeof CardTone];\n\nconst VARIANT_STYLE = {\n default: { background: 'var(--dt-surface)', boxShadow: 'var(--dt-card-rest)' },\n muted: { background: 'var(--dt-surface-sunken)' },\n raised: { background: 'var(--dt-surface-raised)', boxShadow: 'var(--dt-card-float)' },\n panel: { background: 'var(--dt-surface)', boxShadow: 'var(--dt-shadow-xs)' },\n} satisfies Record<CardTone, CSSProperties>;\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n children?: ReactNode;\n /** default = surface + subtle shadow; muted = sunken well; raised = elevated; panel = flat console panel. */\n variant?: CardTone;\n tone?: CardTone;\n /** Strengthen border + lift surface on hover (for clickable rows/cards). */\n interactive?: boolean;\n padding?: number;\n style?: CSSProperties;\n}\n\n/**\n * Surface container. Use for repeated items, modals, and genuinely framed\n * tools — not as a decorative wrapper. `panel` is the flatter console variant.\n */\nexport function Card({\n children,\n variant,\n tone,\n interactive = false,\n padding = 20,\n className,\n style,\n ...rest\n}: CardProps) {\n const selectedTone = tone ?? variant ?? CardTone.Default;\n const v = VARIANT_STYLE[selectedTone] ?? VARIANT_STYLE[CardTone.Default];\n return (\n <div\n className={cx(interactive && 'dt-card-interactive', className)}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n color: 'var(--dt-ink)',\n padding,\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...v,\n ...style,\n }}\n {...rest}\n >\n {children}\n {interactive ? (\n <style>{'.dt-card-interactive:hover{box-shadow:var(--dt-card-hover)}'}</style>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface FilterChipProps {\n label: string;\n /** Trailing count, rendered tabular-mono. */\n count?: number;\n active?: boolean;\n removable?: boolean;\n onToggle?: () => void;\n onRemove?: () => void;\n icon?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * FilterChip — a toggleable filter / tag for catalog facets (분야, 프로토콜, 상태).\n * Crisp small-radius tag with a hairline, NOT a rounded-full cushion. Active =\n * persimmon tint + border + bold. Optional count (mono) and a removable ✕.\n * @startingPoint section=\"Core\" subtitle=\"Toggleable catalog filter\" viewport=\"520x80\"\n */\nexport function FilterChip({ label, count, active = false, removable = false, onToggle, onRemove, icon, style }: FilterChipProps) {\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n aria-pressed={active}\n style={{\n display: 'inline-flex', alignItems: 'center', gap: 7, height: 30, padding: '0 10px',\n borderRadius: 'var(--dt-radius-sm)', cursor: 'pointer',\n fontFamily: 'var(--dt-font-sans)', fontSize: 13, fontWeight: active ? 650 : 500,\n background: active ? 'var(--dt-tint-accent)' : 'var(--dt-surface)',\n color: active ? 'var(--dt-accent)' : 'var(--dt-muted-strong)',\n boxShadow: `inset 0 0 0 1px ${active ? 'color-mix(in srgb, var(--dt-accent) 40%, transparent)' : 'var(--dt-border-strong)'}`,\n transition: 'background-color var(--dt-motion-fast), box-shadow var(--dt-motion-fast)',\n ...style,\n }}\n >\n {icon ? <span style={{ display: 'inline-flex', color: active ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{icon}</span> : null}\n <span>{label}</span>\n {count != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, color: active ? 'var(--dt-accent)' : 'var(--dt-muted)', fontVariantNumeric: 'tabular-nums' }}>{count}</span>\n ) : null}\n {removable ? (\n <span\n role=\"button\" aria-label=\"제거\"\n onClick={(e) => { e.stopPropagation(); onRemove?.(); }}\n style={{ display: 'inline-flex', marginRight: -2, color: active ? 'var(--dt-accent)' : 'var(--dt-muted)' }}\n >\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" /></svg>\n </span>\n ) : null}\n </button>\n );\n}\n","import type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'prefix' | 'style'> {\n label?: string;\n hint?: string;\n /** Render the value in JetBrains Mono — for API paths, keys, IDs. */\n mono?: boolean;\n /** Leading adornment (icon or short text). */\n prefix?: ReactNode;\n invalid?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Compact labeled input, paired with a label or table context. Supports a\n * mono variant for API paths / keys / IDs.\n */\nexport function Input({\n label,\n hint,\n mono = false,\n id,\n type = 'text',\n prefix = null,\n invalid = false,\n style,\n ...rest\n}: InputProps) {\n const inputId = id || (label ? `in-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 8 }}>\n {label ? (\n <label\n htmlFor={inputId}\n style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}\n >\n {label}\n </label>\n ) : null}\n <div\n className={invalid ? 'dt-field dt-field-invalid' : 'dt-field'}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n padding: '0 12px',\n }}\n >\n {prefix ? <span style={{ color: 'var(--dt-muted)', display: 'inline-flex' }}>{prefix}</span> : null}\n <input\n id={inputId}\n type={type}\n style={{\n flex: 1,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n color: 'var(--dt-ink-strong)',\n padding: '11px 0',\n fontFamily: mono ? 'var(--dt-font-mono)' : 'var(--dt-font-sans)',\n fontSize: mono ? 13 : 14,\n ...style,\n }}\n {...rest}\n />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nconst STATUS = {\n connected: { bg: 'var(--dt-tint-success)', fg: 'var(--dt-success)' },\n success: { bg: 'var(--dt-tint-success)', fg: 'var(--dt-success)' },\n reconnecting: { bg: 'var(--dt-tint-warning)', fg: 'var(--dt-warning)' },\n warning: { bg: 'var(--dt-tint-warning)', fg: 'var(--dt-warning)' },\n disconnected: { bg: 'var(--dt-tint-danger)', fg: 'var(--dt-danger)' },\n danger: { bg: 'var(--dt-tint-danger)', fg: 'var(--dt-danger)' },\n info: { bg: 'var(--dt-tint-cobalt)', fg: 'var(--dt-info)' },\n idle: { bg: 'var(--dt-tint-muted)', fg: 'var(--dt-muted-strong)' },\n};\n\nexport interface StatusPillProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n /** Semantic state — drives the dot color. */\n status?: 'connected' | 'success' | 'reconnecting' | 'warning' | 'disconnected' | 'danger' | 'info' | 'idle';\n children?: ReactNode;\n /** Pulse the dot (use for transient states like reconnecting). */\n pulse?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Compact status pill: a tinted fill carrying a colored label — the console's\n * most-used status affordance (gateway / stream state). No outline, no dot;\n * an optional pulse marker appears only for live (`pulse`) states.\n */\nexport function StatusPill({ status = 'idle', children, pulse = false, style, ...rest }: StatusPillProps) {\n const tone = STATUS[status] ?? STATUS.idle;\n return (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n borderRadius: 'var(--dt-radius-full)',\n background: tone.bg,\n padding: '4px 10px',\n fontSize: 12,\n fontWeight: 600,\n color: tone.fg,\n ...style,\n }}\n {...rest}\n >\n {pulse ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 7,\n height: 7,\n borderRadius: '9999px',\n background: tone.fg,\n animation: 'dt-status-pulse 1.6s var(--dt-ease) infinite',\n }}\n />\n ) : null}\n {children}\n <style>{'@keyframes dt-status-pulse{0%,100%{opacity:1}50%{opacity:.35}}'}</style>\n </span>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const SurfaceTone = {\n Default: 'default',\n Raised: 'raised',\n Sunken: 'sunken',\n} as const;\n\nexport type SurfaceTone = (typeof SurfaceTone)[keyof typeof SurfaceTone];\n\nexport const MetricAccent = {\n Accent: 'accent',\n Success: 'success',\n Info: 'info',\n} as const;\n\nexport type MetricAccent = (typeof MetricAccent)[keyof typeof MetricAccent];\nexport type MetricAccentName = MetricAccent;\n\nconst surfaceToneClass: Record<SurfaceTone, string> = {\n [SurfaceTone.Default]: 'bg-[var(--dt-surface)]',\n [SurfaceTone.Raised]: 'bg-[var(--dt-surface-raised)]',\n [SurfaceTone.Sunken]: 'bg-[var(--dt-surface-sunken)]',\n};\n\nconst metricAccentClass: Record<MetricAccentName, string> = {\n [MetricAccent.Accent]: 'text-[var(--dt-accent)]',\n [MetricAccent.Success]: 'text-[var(--dt-success)]',\n [MetricAccent.Info]: 'text-[var(--dt-info)]',\n};\n\nexport type PanelProps = ComponentPropsWithoutRef<'section'> & {\n readonly tone?: SurfaceTone;\n readonly children: ReactNode;\n};\n\nexport function Panel({ tone = SurfaceTone.Default, className, children, ...props }: PanelProps) {\n return (\n <section\n className={cx(\n 'rounded-dtLg border border-[var(--dt-border)] px-5 py-5 md:px-6 md:py-6',\n surfaceToneClass[tone],\n className,\n )}\n {...props}\n >\n {children}\n </section>\n );\n}\n\nexport function metricAccentColor(accent: MetricAccentName): string {\n return metricAccentClass[accent];\n}\n","import { useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\n\nexport interface TabItem {\n id: string;\n label: string;\n icon?: ReactNode;\n count?: number | string;\n}\n\nexport interface TabsProps {\n tabs?: TabItem[];\n /** Controlled active tab id. */\n value?: string;\n defaultValue?: string;\n onChange?: (id: string) => void;\n style?: CSSProperties;\n}\n\n/**\n * Underline-style tab bar for switching console views. Controlled via\n * `value` + `onChange`, or uncontrolled with `defaultValue`.\n */\nexport function Tabs({ tabs = [], value, defaultValue, onChange, style }: TabsProps) {\n const [internal, setInternal] = useState(defaultValue ?? tabs[0]?.id);\n const active = value !== undefined ? value : internal;\n\n const select = (id: string) => {\n if (value === undefined) setInternal(id);\n onChange?.(id);\n };\n\n return (\n <div\n role=\"tablist\"\n style={{\n display: 'flex',\n gap: 4,\n borderBottom: '1px solid var(--dt-border)',\n ...style,\n }}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === active;\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n type=\"button\"\n onClick={() => select(tab.id)}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n gap: 7,\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n padding: '10px 12px',\n marginBottom: -1,\n fontSize: 13,\n fontWeight: 600,\n color: isActive ? 'var(--dt-ink-strong)' : 'var(--dt-muted)',\n borderBottom: `2px solid ${isActive ? 'var(--dt-accent)' : 'transparent'}`,\n transition: 'color var(--dt-motion-fast)',\n }}\n >\n {tab.icon ? <span aria-hidden=\"true\" style={{ display: 'inline-flex' }}>{tab.icon}</span> : null}\n {tab.label}\n {tab.count != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>\n {tab.count}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface CheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'disabled' | 'id' | 'label' | 'onChange' | 'style'\n > {\n label?: ReactNode;\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Checkbox — persimmon fill when checked. */\nexport function Checkbox({ label, checked, defaultChecked, onChange, disabled, id, style }: CheckboxProps) {\n const cbId = id || (label ? `cb-${String(label).replace(/\\s+/g, '-')}` : undefined);\n const [internal, setInternal] = useState(defaultChecked ?? false);\n const isOn = checked !== undefined ? checked : internal;\n const toggle = () => {\n if (disabled) return;\n if (checked === undefined) setInternal((v) => !v);\n onChange?.(!isOn);\n };\n return (\n <label\n htmlFor={cbId}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 9,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n ...style,\n }}\n >\n <input\n id={cbId}\n type=\"checkbox\"\n checked={isOn}\n onChange={toggle}\n disabled={disabled}\n style={{ position: 'absolute', opacity: 0, width: 0, height: 0 }}\n />\n <span\n style={{\n width: 18,\n height: 18,\n flex: '0 0 auto',\n borderRadius: 5,\n display: 'grid',\n placeItems: 'center',\n background: isOn ? 'var(--dt-accent)' : 'var(--dt-surface)',\n border: `1.5px solid ${isOn ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n transition: 'background-color 130ms, border-color 130ms',\n }}\n >\n {isOn ? (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M5 12l4.5 4.5L19 7\"\n stroke=\"var(--dt-accent-ink)\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </span>\n {label ? <span style={{ fontSize: 14, color: 'var(--dt-ink)' }}>{label}</span> : null}\n </label>\n );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n meta?: string;\n}\n\nexport interface ComboboxProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'onChange' | 'style'> {\n label?: string;\n hint?: string;\n options?: ComboboxOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n emptyText?: string;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Searchable select for large option sets (the 230+ public-data API catalog).\n * Hairline field; the listbox is a bordered plane. Filters on label + meta.\n * @startingPoint section=\"Forms\" subtitle=\"Searchable select over a large catalog\" viewport=\"460x320\"\n */\nexport function Combobox({\n label,\n hint,\n options = [],\n value,\n onChange,\n placeholder = '검색…',\n emptyText = '결과 없음',\n id,\n style,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [active, setActive] = useState(0);\n const rootRef = useRef<HTMLDivElement>(null);\n const cbId = id || (label ? `cb-${label.replace(/\\s+/g, '-')}` : undefined);\n\n const selected = options.find((o) => o.value === value) || null;\n\n useEffect(() => {\n const onDoc = (e: globalThis.MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener('mousedown', onDoc);\n return () => document.removeEventListener('mousedown', onDoc);\n }, []);\n\n const q = query.trim().toLowerCase();\n const filtered = q\n ? options.filter((o) => (o.label + ' ' + (o.meta || '')).toLowerCase().includes(q))\n : options;\n\n const commit = (o: ComboboxOption) => {\n onChange?.(o.value);\n setOpen(false);\n setQuery('');\n };\n\n const onKey = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setOpen(true);\n setActive((i) => Math.min(i + 1, filtered.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setActive((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter' && open && filtered[active]) {\n e.preventDefault();\n commit(filtered[active]);\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={rootRef} style={{ display: 'grid', gap: 7, position: 'relative', ...style }}>\n {label ? (\n <label htmlFor={cbId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <div\n className=\"dt-field\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 9,\n height: 44,\n padding: '0 12px',\n boxShadow: open ? 'var(--dt-shadow-focus)' : undefined,\n background: open ? 'var(--dt-surface)' : 'var(--dt-surface-sunken)',\n }}\n onClick={() => setOpen(true)}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: 'var(--dt-muted)', flex: '0 0 auto' }}\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M21 21l-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n id={cbId}\n value={open ? query : selected ? selected.label : ''}\n placeholder={selected && !open ? selected.label : placeholder}\n onChange={(e) => {\n setQuery(e.target.value);\n setOpen(true);\n setActive(0);\n }}\n onFocus={() => setOpen(true)}\n onKeyDown={onKey}\n style={{\n flex: 1,\n minWidth: 0,\n border: 'none',\n outline: 'none',\n background: 'transparent',\n fontSize: 14,\n fontFamily: 'inherit',\n color: 'var(--dt-ink-strong)',\n }}\n />\n {selected && !open ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>\n {selected.meta}\n </span>\n ) : null}\n </div>\n\n {open ? (\n <div\n role=\"listbox\"\n style={{\n position: 'absolute',\n top: 'calc(100% + 6px)',\n left: 0,\n right: 0,\n zIndex: 20,\n background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)',\n borderRadius: 'var(--dt-radius-lg)',\n boxShadow: 'var(--dt-shadow-md)',\n maxHeight: 240,\n overflowY: 'auto',\n padding: 4,\n }}\n >\n {filtered.length === 0 ? (\n <div style={{ padding: '12px 12px', fontSize: 13, color: 'var(--dt-muted)' }}>{emptyText}</div>\n ) : (\n filtered.map((o, i) => {\n const isActive = i === active;\n const isSel = o.value === value;\n return (\n <div\n key={o.value}\n role=\"option\"\n aria-selected={isSel}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e: MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n commit(o);\n }}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 10,\n padding: '9px 10px',\n borderRadius: 'var(--dt-radius-md)',\n cursor: 'pointer',\n background: isActive ? 'var(--dt-surface-sunken)' : 'transparent',\n }}\n >\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontSize: 13.5,\n fontWeight: isSel ? 600 : 500,\n color: 'var(--dt-ink-strong)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {o.label}\n </span>\n {o.meta ? (\n <span\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 11,\n color: 'var(--dt-muted)',\n flex: '0 0 auto',\n }}\n >\n {o.meta}\n </span>\n ) : null}\n {isSel ? (\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: 'var(--dt-accent)', flex: '0 0 auto' }}\n >\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </div>\n );\n })\n )}\n </div>\n ) : null}\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useRef, useState } from 'react';\nimport type { CSSProperties, DragEvent, HTMLAttributes } from 'react';\n\nfunction fmtSize(bytes?: number) {\n if (bytes == null) return '';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(0)} KB`;\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n}\n\nexport interface UploadedFile {\n name: string;\n size?: number;\n}\n\nexport interface FileUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'style'> {\n label?: string;\n /** Accepted file types, passed to the native input. */\n accept?: string;\n hint?: string;\n /** Current file — when set, the filled state renders instead of the dropzone. */\n file?: UploadedFile | null;\n onFiles?: (files: FileList) => void;\n onRemove?: () => void;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Dashed hairline dropzone for uploading an OpenAPI spec. Idle / drag / filled.\n * @startingPoint section=\"Forms\" subtitle=\"Dropzone for an OpenAPI spec\" viewport=\"460x180\"\n */\nexport function FileUpload({\n label,\n accept = '.json,.yaml,.yml',\n hint = 'OpenAPI 스펙 · JSON 또는 YAML',\n file,\n onFiles,\n onRemove,\n id,\n style,\n}: FileUploadProps) {\n const [drag, setDrag] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n const fId = id || 'fu';\n\n const handle = (files: FileList | null) => {\n if (files && files.length) onFiles?.(files);\n };\n\n return (\n <div style={{ display: 'grid', gap: 7, ...style }}>\n {label ? <span style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>{label}</span> : null}\n\n {file ? (\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n padding: '12px 14px',\n background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)',\n borderRadius: 'var(--dt-radius-lg)',\n }}\n >\n <span\n style={{\n width: 34,\n height: 34,\n flex: '0 0 auto',\n display: 'grid',\n placeItems: 'center',\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-tint-accent)',\n color: 'var(--dt-accent)',\n }}\n >\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M14 2v6h6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--dt-ink-strong)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {file.name}\n </div>\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)', marginTop: 2 }}>\n {fmtSize(file.size)} · 업로드 완료\n </div>\n </div>\n <button\n type=\"button\"\n onClick={onRemove}\n aria-label=\"제거\"\n style={{\n flex: '0 0 auto',\n width: 30,\n height: 30,\n display: 'grid',\n placeItems: 'center',\n border: 'none',\n background: 'var(--dt-surface-sunken)',\n borderRadius: 'var(--dt-radius-sm)',\n color: 'var(--dt-muted-strong)',\n cursor: 'pointer',\n }}\n >\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n ) : (\n <label\n htmlFor={fId}\n onDragOver={(e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setDrag(true);\n }}\n onDragLeave={() => setDrag(false)}\n onDrop={(e: DragEvent<HTMLLabelElement>) => {\n e.preventDefault();\n setDrag(false);\n handle(e.dataTransfer.files);\n }}\n style={{\n display: 'grid',\n placeItems: 'center',\n gap: 8,\n padding: '26px 20px',\n textAlign: 'center',\n cursor: 'pointer',\n borderRadius: 'var(--dt-radius-lg)',\n border: `1.5px dashed ${drag ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n background: drag ? 'var(--dt-tint-accent)' : 'var(--dt-surface-sunken)',\n transition: 'background-color var(--dt-motion-fast), border-color var(--dt-motion-fast)',\n }}\n >\n <span style={{ color: drag ? 'var(--dt-accent)' : 'var(--dt-muted)' }}>\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M12 16V4m0 0L7 9m5-5l5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </span>\n <span style={{ fontSize: 13.5, color: 'var(--dt-ink-strong)' }}>\n <span style={{ fontWeight: 600, color: 'var(--dt-accent)' }}>파일 선택</span> 또는 끌어다 놓기\n </span>\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>{hint}</span>\n <input\n ref={inputRef}\n id={fId}\n type=\"file\"\n accept={accept}\n onChange={(e) => handle(e.target.files)}\n style={{ display: 'none' }}\n />\n </label>\n )}\n </div>\n );\n}\n","import { useId, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface RadioOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport interface RadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'style'> {\n name?: string;\n options?: Array<string | RadioOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n style?: CSSProperties;\n}\n\n/** Radio group with optional per-option hint text. */\nexport function RadioGroup({ name, options = [], value, defaultValue, onChange, disabled, style }: RadioGroupProps) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value !== undefined ? value : internal;\n const generatedName = useId();\n const groupName = name || generatedName;\n const select = (v: string) => {\n if (disabled) return;\n if (value === undefined) setInternal(v);\n onChange?.(v);\n };\n return (\n <div role=\"radiogroup\" style={{ display: 'grid', gap: 10, ...style }}>\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n const on = opt.value === current;\n return (\n <label\n key={opt.value}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 10,\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n }}\n >\n <input\n type=\"radio\"\n name={groupName}\n checked={on}\n onChange={() => select(opt.value)}\n disabled={disabled}\n style={{ position: 'absolute', opacity: 0, width: 0, height: 0 }}\n />\n <span\n style={{\n width: 18,\n height: 18,\n marginTop: 1,\n flex: '0 0 auto',\n borderRadius: 9999,\n display: 'grid',\n placeItems: 'center',\n background: 'var(--dt-surface)',\n border: `1.5px solid ${on ? 'var(--dt-accent)' : 'var(--dt-border-strong)'}`,\n transition: 'border-color 130ms',\n }}\n >\n {on ? <span style={{ width: 9, height: 9, borderRadius: 9999, background: 'var(--dt-accent)' }} /> : null}\n </span>\n <span style={{ display: 'grid', gap: 2 }}>\n <span style={{ fontSize: 14, color: 'var(--dt-ink)', lineHeight: 1.3 }}>{opt.label}</span>\n {opt.hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{opt.hint}</span> : null}\n </span>\n </label>\n );\n })}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface SegmentOption {\n value: string;\n label: string;\n}\n\nexport interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, 'defaultValue' | 'onChange' | 'style'> {\n options?: Array<string | SegmentOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n size?: 'sm' | 'md';\n style?: CSSProperties;\n}\n\n/** Inset segmented control for 2–4 short, exclusive options. */\nexport function SegmentedControl({\n options = [],\n value,\n defaultValue,\n onChange,\n size = 'md',\n style,\n}: SegmentedControlProps) {\n const firstOption = typeof options[0] === 'string' ? options[0] : options[0]?.value;\n const [internal, setInternal] = useState(defaultValue ?? firstOption);\n const current = value !== undefined ? value : internal;\n const select = (v: string) => {\n if (value === undefined) setInternal(v);\n onChange?.(v);\n };\n const pad = size === 'sm' ? '5px 11px' : '7px 14px';\n return (\n <div\n style={{\n display: 'inline-flex',\n padding: 3,\n gap: 2,\n background: 'var(--dt-surface-sunken)',\n borderRadius: 'var(--dt-radius-md)',\n ...style,\n }}\n >\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n const on = opt.value === current;\n return (\n <button\n key={opt.value}\n type=\"button\"\n onClick={() => select(opt.value)}\n style={{\n border: 'none',\n cursor: 'pointer',\n padding: pad,\n borderRadius: 'var(--dt-radius-sm)',\n fontSize: size === 'sm' ? 12 : 13,\n fontWeight: 600,\n fontFamily: 'inherit',\n whiteSpace: 'nowrap',\n color: on ? 'var(--dt-ink-strong)' : 'var(--dt-muted)',\n background: on ? 'var(--dt-surface)' : 'transparent',\n boxShadow: on ? 'var(--dt-ring), var(--dt-shadow-xs)' : 'none',\n transition: 'color 130ms, background-color 130ms',\n }}\n >\n {opt.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import type { CSSProperties, SelectHTMLAttributes } from 'react';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps\n extends Omit<\n SelectHTMLAttributes<HTMLSelectElement>,\n 'defaultValue' | 'disabled' | 'id' | 'onChange' | 'style' | 'value'\n > {\n label?: string;\n hint?: string;\n options?: Array<string | SelectOption>;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Flat native-backed select with a persimmon focus ring. */\nexport function Select({ label, hint, options = [], value, defaultValue, onChange, placeholder, disabled, id, style }: SelectProps) {\n const selId = id || (label ? `sel-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 7 }}>\n {label ? (\n <label htmlFor={selId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <div style={{ position: 'relative', display: 'flex' }}>\n <select\n id={selId}\n className=\"dt-field\"\n value={value}\n defaultValue={defaultValue}\n disabled={disabled}\n onChange={(e) => onChange?.(e.target.value)}\n style={{\n appearance: 'none',\n WebkitAppearance: 'none',\n width: '100%',\n padding: '10px 36px 10px 13px',\n fontSize: 14,\n fontFamily: 'inherit',\n color: 'var(--dt-ink-strong)',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n ...style,\n }}\n >\n {placeholder ? (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n ) : null}\n {options.map((o) => {\n const opt = typeof o === 'string' ? { value: o, label: o } : o;\n return (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n );\n })}\n </select>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n right: 11,\n top: '50%',\n transform: 'translateY(-50%)',\n pointerEvents: 'none',\n color: 'var(--dt-muted)',\n }}\n >\n <path d=\"M6 9l6 6 6-6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useRef, useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, KeyboardEvent, PointerEvent } from 'react';\n\nexport interface SliderProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'defaultValue' | 'id' | 'max' | 'min' | 'onChange' | 'step' | 'style' | 'value'\n > {\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n /** Suffix shown after the value readout, e.g. \"회/일\" or \"ms\". */\n unit?: string;\n hint?: string;\n id?: string;\n style?: CSSProperties;\n}\n\n/**\n * Numeric range input — hairline track, persimmon fill, tabular value readout.\n * @startingPoint section=\"Forms\" subtitle=\"Numeric range with tabular readout\" viewport=\"420x90\"\n */\nexport function Slider({\n label,\n min = 0,\n max = 100,\n step = 1,\n value,\n defaultValue,\n onChange,\n unit = '',\n hint,\n id,\n style,\n}: SliderProps) {\n const [internal, setInternal] = useState(defaultValue ?? min);\n const v = value != null ? value : internal;\n const trackRef = useRef<HTMLDivElement>(null);\n const sId = id || (label ? `sl-${label.replace(/\\s+/g, '-')}` : undefined);\n const pct = ((v - min) / (max - min)) * 100;\n\n const set = (nv: number) => {\n const clamped = Math.min(max, Math.max(min, Math.round(nv / step) * step));\n if (value == null) setInternal(clamped);\n onChange?.(clamped);\n };\n\n const fromClientX = (clientX: number) => {\n const r = trackRef.current!.getBoundingClientRect();\n const ratio = Math.min(1, Math.max(0, (clientX - r.left) / r.width));\n return min + ratio * (max - min);\n };\n\n const onPointerDown = (e: PointerEvent<HTMLDivElement>) => {\n e.preventDefault();\n set(fromClientX(e.clientX));\n const move = (ev: globalThis.PointerEvent) => set(fromClientX(ev.clientX));\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n };\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n };\n\n const onKey = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n set(v + step);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n set(v - step);\n }\n };\n\n return (\n <div style={{ display: 'grid', gap: 9, ...style }}>\n <div style={{ display: 'flex', alignItems: 'baseline', justifyContent: 'space-between' }}>\n {label ? (\n <label htmlFor={sId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : (\n <span />\n )}\n <span\n style={{\n fontFamily: 'var(--dt-font-mono)',\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n }}\n >\n {v}\n {unit ? <span style={{ color: 'var(--dt-muted)', fontWeight: 400 }}>{unit}</span> : null}\n </span>\n </div>\n <div\n ref={trackRef}\n id={sId}\n role=\"slider\"\n tabIndex={0}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={v}\n onPointerDown={onPointerDown}\n onKeyDown={onKey}\n style={{ position: 'relative', height: 20, display: 'flex', alignItems: 'center', cursor: 'pointer', outline: 'none' }}\n >\n <div\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n height: 4,\n borderRadius: 2,\n background: 'var(--dt-surface-sunken)',\n boxShadow: 'inset 0 0 0 1px var(--dt-border-strong)',\n }}\n />\n <div style={{ position: 'absolute', left: 0, width: `${pct}%`, height: 4, borderRadius: 2, background: 'var(--dt-accent)' }} />\n <div\n style={{\n position: 'absolute',\n left: `${pct}%`,\n transform: 'translateX(-50%)',\n width: 16,\n height: 16,\n borderRadius: 'var(--dt-radius-sm)',\n background: 'var(--dt-surface)',\n boxShadow: '0 0 0 1.5px var(--dt-accent)',\n border: '3px solid var(--dt-surface)',\n }}\n />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { useState } from 'react';\nimport type { CSSProperties, InputHTMLAttributes, ReactNode } from 'react';\n\nexport interface SwitchProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'checked' | 'defaultChecked' | 'disabled' | 'id' | 'onChange' | 'style'\n > {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: ReactNode;\n id?: string;\n style?: CSSProperties;\n}\n\n/** Toggle switch for instant on/off settings — persimmon track when on. */\nexport function Switch({ checked, defaultChecked, onChange, disabled, label, style }: SwitchProps) {\n const [internal, setInternal] = useState(defaultChecked ?? false);\n const isOn = checked !== undefined ? checked : internal;\n const toggle = () => {\n if (disabled) return;\n if (checked === undefined) setInternal((v) => !v);\n onChange?.(!isOn);\n };\n const sw = (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isOn}\n disabled={disabled}\n onClick={toggle}\n style={{\n width: 38,\n height: 22,\n flex: '0 0 auto',\n borderRadius: 9999,\n border: 'none',\n padding: 2,\n background: isOn ? 'var(--dt-accent)' : 'var(--dt-border-strong)',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.55 : 1,\n transition: 'background-color 160ms var(--dt-ease)',\n display: 'inline-flex',\n }}\n >\n <span\n style={{\n width: 18,\n height: 18,\n borderRadius: 9999,\n background: '#fff',\n boxShadow: '0 1px 2px rgba(0,0,0,0.25)',\n transform: isOn ? 'translateX(16px)' : 'translateX(0)',\n transition: 'transform 160ms var(--dt-ease)',\n }}\n />\n </button>\n );\n if (!label) return sw;\n return (\n <label\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 10,\n cursor: disabled ? 'not-allowed' : 'pointer',\n ...style,\n }}\n >\n {sw}\n <span style={{ fontSize: 14, color: 'var(--dt-ink)' }}>{label}</span>\n </label>\n );\n}\n\nexport interface ToggleSwitchProps {\n readonly checked: boolean;\n readonly label: string;\n readonly onChange: (next: boolean) => void;\n readonly disabled?: boolean;\n readonly className?: string;\n}\n\nexport function ToggleSwitch({\n checked,\n label,\n onChange,\n disabled = false,\n className = '',\n}: ToggleSwitchProps) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n disabled={disabled}\n onClick={() => onChange(!checked)}\n className={`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full border transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${\n checked ? 'border-success/40 bg-success/80' : 'border-line-strong bg-raised'\n } ${className}`}\n >\n <span\n aria-hidden\n className={`inline-block h-4 w-4 transform rounded-full bg-surface shadow-dtSubtle transition-transform ${\n checked ? 'translate-x-6' : 'translate-x-1'\n }`}\n />\n </button>\n );\n}\n","import type { CSSProperties, TextareaHTMLAttributes } from 'react';\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'style'> {\n label?: string;\n hint?: string;\n rows?: number;\n /** Render in JetBrains Mono (for JSON / payloads). */\n mono?: boolean;\n style?: CSSProperties;\n}\n\n/** Multi-line text field with a persimmon focus ring. */\nexport function Textarea({ label, hint, rows = 4, mono = false, id, style, ...rest }: TextareaProps) {\n const taId = id || (label ? `ta-${label.replace(/\\s+/g, '-')}` : undefined);\n return (\n <div style={{ display: 'grid', gap: 7 }}>\n {label ? (\n <label htmlFor={taId} style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>\n {label}\n </label>\n ) : null}\n <textarea\n id={taId}\n rows={rows}\n className=\"dt-field\"\n style={{\n width: '100%',\n resize: 'vertical',\n padding: '11px 13px',\n fontSize: mono ? 13 : 14,\n fontFamily: mono ? 'var(--dt-font-mono)' : 'inherit',\n lineHeight: 1.55,\n color: 'var(--dt-ink-strong)',\n ...style,\n }}\n {...rest}\n />\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const AlertTone = {\n Info: 'info',\n Success: 'success',\n Warning: 'warning',\n Danger: 'danger',\n} as const;\n\nexport type AlertTone = (typeof AlertTone)[keyof typeof AlertTone];\n\nexport const AlertMotion = {\n None: 'none',\n Subtle: 'subtle',\n Pulse: 'pulse',\n} as const;\n\nexport type AlertMotion = (typeof AlertMotion)[keyof typeof AlertMotion];\n\nconst TONE_BACKGROUND = {\n info: 'var(--dt-status-cobalt)',\n success: 'var(--dt-status-success)',\n warning: 'var(--dt-status-warning)',\n danger: 'var(--dt-status-danger)',\n} satisfies Record<AlertTone, string>;\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'title'> {\n tone?: AlertTone;\n title?: ReactNode;\n children?: ReactNode;\n icon?: ReactNode;\n action?: ReactNode;\n motion?: AlertMotion;\n onDismiss?: () => void;\n style?: CSSProperties;\n}\n\nexport function Alert({\n tone = AlertTone.Info,\n title,\n children,\n icon,\n action,\n motion = AlertMotion.None,\n onDismiss,\n className,\n style,\n ...rest\n}: AlertProps) {\n const background = TONE_BACKGROUND[tone] ?? TONE_BACKGROUND[AlertTone.Info];\n const motionClass = motion === AlertMotion.None ? undefined : `dt-alert-motion-${motion}`;\n return (\n <div\n role=\"status\"\n className={cx('dt-alert', motionClass, className)}\n style={{\n alignItems: 'flex-start',\n background,\n borderRadius: '20px',\n color: 'var(--dt-alert-ink)',\n display: 'flex',\n gap: 12,\n minHeight: 62,\n overflow: 'clip',\n padding: '13px 15px',\n position: 'relative',\n transition: 'filter var(--dt-motion-fast), transform var(--dt-motion-fast)',\n width: 'min(100%, 380px)',\n ...style,\n }}\n {...rest}\n >\n {icon ? <span style={{ color: 'currentColor', display: 'inline-flex', flex: '0 0 auto', marginTop: 1 }}>{icon}</span> : null}\n <div style={{ flex: '1 0 0', minWidth: 1, overflow: 'clip', wordBreak: 'break-word' }}>\n {title ? <div style={{ fontSize: 14, fontWeight: 600, lineHeight: 'normal' }}>{title}</div> : null}\n {children ? <div style={{ marginTop: title ? 3 : 0, fontSize: 13, fontWeight: 400, lineHeight: 'normal' }}>{children}</div> : null}\n {action ? <div style={{ marginTop: 10 }}>{action}</div> : null}\n </div>\n {onDismiss ? (\n <button onClick={onDismiss} aria-label=\"닫기\" style={{ flex: '0 0 auto', border: 'none', background: 'transparent', cursor: 'pointer', color: 'currentColor', padding: 2, lineHeight: 0 }}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n ) : null}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { useEffect, useId } from 'react';\n\nexport interface DialogProps {\n open: boolean;\n onClose?: () => void;\n title?: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n 'aria-label'?: string;\n width?: number;\n}\n\n/** Modal dialog with overlay, Esc/backdrop close, and a footer action bar. */\nexport function Dialog({ open, onClose, title, description, children, footer, 'aria-label': ariaLabel, width = 460 }: DialogProps) {\n const titleId = useId();\n useEffect(() => {\n if (!open) return undefined;\n const onKey = (event: KeyboardEvent) => { if (event.key === 'Escape') onClose?.(); };\n window.addEventListener('keydown', onKey);\n return () => window.removeEventListener('keydown', onKey);\n }, [open, onClose]);\n if (!open) return null;\n return (\n <div onClick={onClose} style={{\n position: 'fixed', inset: 0, zIndex: 100, display: 'grid', placeItems: 'center', padding: 20,\n background: 'color-mix(in srgb, var(--dt-ink-strong) 32%, transparent)',\n backdropFilter: 'blur(2px)', animation: 'dt-fade 160ms var(--dt-ease)',\n }}>\n <div\n role=\"dialog\" aria-modal=\"true\" onClick={(event) => event.stopPropagation()}\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel}\n style={{\n width: '100%', maxWidth: width, background: 'var(--dt-surface)',\n borderRadius: 'var(--dt-radius-lg)', boxShadow: 'var(--dt-shadow-xl)',\n animation: 'dt-pop 200ms var(--dt-ease)', overflow: 'hidden',\n }}\n >\n <div style={{ padding: '22px 24px' }}>\n {title ? <h3 id={titleId} style={{ fontSize: 18, fontWeight: 700, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>{title}</h3> : null}\n {description ? <p style={{ marginTop: 8, fontSize: 14, lineHeight: 1.55, color: 'var(--dt-muted-strong)' }}>{description}</p> : null}\n {children ? <div style={{ marginTop: title || description ? 16 : 0 }}>{children}</div> : null}\n </div>\n {footer ? <div style={{ display: 'flex', justifyContent: 'flex-end', gap: 8, padding: '14px 24px', background: 'var(--dt-surface-sunken)' }}>{footer}</div> : null}\n </div>\n <style>{`@keyframes dt-fade{from{opacity:0}}@keyframes dt-pop{from{opacity:0;transform:translateY(8px) scale(.98)}}`}</style>\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { useId } from 'react';\n\nexport interface DrawerProps {\n open?: boolean;\n side?: 'right' | 'left';\n title?: string;\n children?: ReactNode;\n footer?: ReactNode;\n onClose?: () => void;\n width?: number;\n style?: CSSProperties;\n 'aria-label'?: string;\n}\n\n/**\n * Side sheet over a scrim for secondary flows — floats (shadow) but stays flat inside.\n * Render inside a positioned container (the panel fills its height).\n * @startingPoint section=\"Feedback\" subtitle=\"Side sheet over a scrim\" viewport=\"560x420\"\n */\nexport function Drawer({ open = false, side = 'right', title, children, footer, onClose, width = 420, style, 'aria-label': ariaLabel }: DrawerProps) {\n const titleId = useId();\n if (!open) return null;\n const fromRight = side === 'right';\n return (\n <div style={{ position: 'absolute', inset: 0, zIndex: 40, display: 'flex', justifyContent: fromRight ? 'flex-end' : 'flex-start' }}>\n <div onClick={onClose} style={{ position: 'absolute', inset: 0, background: 'rgba(24,22,18,0.32)' }} />\n <aside\n role=\"dialog\" aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-label={title ? undefined : ariaLabel || 'pane'}\n style={{\n position: 'relative', width, maxWidth: '100%', height: '100%', display: 'flex', flexDirection: 'column',\n background: 'var(--dt-surface)', boxShadow: 'var(--dt-shadow-xl)',\n borderLeft: fromRight ? '1px solid var(--dt-border-strong)' : 'none',\n borderRight: fromRight ? 'none' : '1px solid var(--dt-border-strong)',\n fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n <header style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '16px 18px', borderBottom: '1px solid var(--dt-border)' }}>\n {title ? <h3 id={titleId} style={{ margin: 0, flex: 1, minWidth: 0, fontSize: 16, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>{title}</h3> : null}\n <button\n type=\"button\" onClick={onClose} aria-label=\"닫기\"\n style={{ flex: '0 0 auto', width: 30, height: 30, display: 'grid', placeItems: 'center', border: 'none', background: 'var(--dt-surface-sunken)', borderRadius: 'var(--dt-radius-sm)', color: 'var(--dt-muted-strong)', cursor: 'pointer' }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n </header>\n <div style={{ flex: 1, overflowY: 'auto', padding: 18 }}>{children}</div>\n {footer ? <footer style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '14px 18px', borderTop: '1px solid var(--dt-border)' }}>{footer}</footer> : null}\n </aside>\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nexport interface EmptyStateProps {\n icon?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n style?: CSSProperties;\n}\n\n/** Empty state for lists/tables — quiet icon, title, guidance, action. */\nexport function EmptyState({ icon, title, description, action, style }: EmptyStateProps) {\n return (\n <div style={{\n display: 'grid', placeItems: 'center', gap: 10, textAlign: 'center',\n padding: '40px 24px', borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface-sunken)', ...style,\n }}>\n {icon ? (\n <span style={{\n display: 'inline-flex', width: 44, height: 44, alignItems: 'center', justifyContent: 'center',\n borderRadius: 'var(--dt-radius-md)', background: 'var(--dt-surface)', color: 'var(--dt-muted)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n }}>{icon}</span>\n ) : null}\n {title ? <div style={{ fontSize: 15, fontWeight: 650, color: 'var(--dt-ink-strong)' }}>{title}</div> : null}\n {description ? <div style={{ fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted)', maxWidth: 320 }}>{description}</div> : null}\n {action ? <div style={{ marginTop: 6 }}>{action}</div> : null}\n </div>\n );\n}\n","import type { CSSProperties } from 'react';\n\nexport interface SkeletonProps {\n width?: number | string;\n height?: number | string;\n radius?: string;\n style?: CSSProperties;\n}\n\nexport function Skeleton({ width = '100%', height = 14, radius = 'var(--dt-radius-sm)', style }: SkeletonProps) {\n return (\n <span className=\"dt-skeleton\" style={{\n display: 'block', width, height, borderRadius: radius,\n background: 'var(--dt-surface-sunken)', ...style,\n }} />\n );\n}\n","import type { CSSProperties } from 'react';\nimport { useId } from 'react';\n\nexport interface SpinnerProps {\n size?: number;\n stroke?: number;\n color?: string;\n style?: CSSProperties;\n}\n\nexport function Spinner({ size = 18, stroke = 2, color = 'var(--dt-accent)', style }: SpinnerProps) {\n useId();\n return (\n <span style={{ display: 'inline-flex', ...style }} role=\"status\" aria-label=\"로딩 중\">\n <svg className=\"dt-spinner-svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth={stroke} style={{ color: 'var(--dt-border-strong)', opacity: 0.5 }} />\n <path d=\"M12 3a9 9 0 0 1 9 9\" stroke={color} strokeWidth={stroke} strokeLinecap=\"round\" />\n </svg>\n </span>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\n\nconst DOT = { info: 'var(--dt-cobalt)', success: 'var(--dt-success)', warning: 'var(--dt-warning)', danger: 'var(--dt-danger)' };\n\nexport interface ToastProps {\n tone?: keyof typeof DOT;\n title?: ReactNode;\n message?: ReactNode;\n action?: ReactNode;\n onDismiss?: () => void;\n style?: CSSProperties;\n}\n\nexport function Toast({ tone = 'success', title, message, action, onDismiss, style }: ToastProps) {\n return (\n <div role=\"status\" className=\"dt-toast\" style={{\n display: 'flex', alignItems: 'flex-start', gap: 11, width: 340, maxWidth: '90vw',\n padding: '13px 15px', background: 'var(--dt-surface)',\n borderRadius: 'var(--dt-radius-md)', boxShadow: 'var(--dt-shadow-lg)',\n ...style,\n }}>\n <span style={{ width: 8, height: 8, borderRadius: 9999, marginTop: 5, flex: '0 0 auto', background: DOT[tone] ?? DOT.success }} />\n <div style={{ flex: 1, minWidth: 0 }}>\n {title ? <div style={{ fontSize: 14, fontWeight: 650, color: 'var(--dt-ink-strong)' }}>{title}</div> : null}\n {message ? <div style={{ marginTop: title ? 2 : 0, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)' }}>{message}</div> : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n {onDismiss ? (\n <button onClick={onDismiss} aria-label=\"닫기\" style={{ flex: '0 0 auto', border: 'none', background: 'transparent', cursor: 'pointer', color: 'var(--dt-muted)', padding: 2, lineHeight: 0 }}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>\n </button>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from 'react';\nimport { useState, useId } from 'react';\n\nexport interface TooltipProps {\n label: ReactNode;\n position?: 'top' | 'bottom' | 'left' | 'right';\n children: ReactNode;\n}\n\nexport function Tooltip({ label, position = 'top', children }: TooltipProps) {\n const tooltipId = useId();\n const [show, setShow] = useState(false);\n const pos: CSSProperties = {\n top: { bottom: '100%', left: '50%', transform: 'translateX(-50%) translateY(-7px)' },\n bottom: { top: '100%', left: '50%', transform: 'translateX(-50%) translateY(7px)' },\n left: { right: '100%', top: '50%', transform: 'translateY(-50%) translateX(-7px)' },\n right: { left: '100%', top: '50%', transform: 'translateY(-50%) translateX(7px)' },\n }[position];\n return (\n <span style={{ position: 'relative', display: 'inline-flex' }}\n onMouseEnter={() => setShow(true)} onMouseLeave={() => setShow(false)}\n onFocus={() => setShow(true)} onBlur={() => setShow(false)}>\n <span aria-describedby={show ? tooltipId : undefined}>{children}</span>\n <span id={tooltipId} role=\"tooltip\" style={{\n position: 'absolute', zIndex: 60, whiteSpace: 'nowrap', pointerEvents: 'none',\n opacity: show ? 1 : 0, visibility: show ? 'visible' : 'hidden',\n padding: '6px 9px', fontSize: 12, fontWeight: 500, lineHeight: 1.2,\n color: 'var(--dt-paper)', background: 'var(--dt-ink-strong)',\n borderRadius: 'var(--dt-radius-sm)', boxShadow: 'var(--dt-shadow-md)',\n transition: 'opacity var(--dt-motion-fast), visibility var(--dt-motion-fast)', ...pos,\n }}>{label}</span>\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nconst SIZE = { sm: 26, md: 34, lg: 44 } as const;\n\nexport interface AvatarProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'style'> {\n name?: string;\n src?: string;\n size?: keyof typeof SIZE | number;\n status?: 'online' | 'busy' | 'away' | 'offline';\n /** Rounded square (default) vs full circle. */\n square?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Avatar — image or initials in a rounded square. Optional status dot.\n * Deterministic tint from the name when no image is given.\n */\nexport function Avatar({ name = '', src, size = 'md', status, square = true, style, ...rest }: AvatarProps) {\n const px = typeof size === 'number' ? size : (SIZE[size] ?? SIZE.md);\n const initials = name.trim().split(/\\s+/).map((word) => word[0]).slice(0, 2).join('').toUpperCase() || '·';\n const radius = square ? Math.round(px * 0.28) : px;\n const statusColor = status ? { online: 'var(--dt-success)', busy: 'var(--dt-danger)', away: 'var(--dt-warning)', offline: 'var(--dt-muted)' }[status] ?? undefined : undefined;\n\n return (\n <span {...rest} style={{ position: 'relative', display: 'inline-flex', flex: '0 0 auto', ...style }}>\n {src ? (\n <img src={src} alt={name} width={px} height={px} style={{ borderRadius: radius, objectFit: 'cover', boxShadow: 'var(--dt-ring)' }} />\n ) : (\n <span style={{\n width: px, height: px, borderRadius: radius, display: 'grid', placeItems: 'center',\n background: 'var(--dt-tint-accent)', color: 'var(--dt-accent)',\n fontSize: px * 0.38, fontWeight: 700, letterSpacing: '-0.02em',\n }}>{initials}</span>\n )}\n {statusColor ? (\n <span style={{\n position: 'absolute', right: -1, bottom: -1, width: px * 0.3, height: px * 0.3,\n borderRadius: 9999, background: statusColor, boxShadow: '0 0 0 2px var(--dt-surface)',\n }} />\n ) : null}\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\nimport { useState } from 'react';\n\ntype TokenKind = 'plain' | 'key' | 'str' | 'num' | 'kw' | 'pun';\n\ninterface CodeToken {\n t: string;\n c: TokenKind;\n}\n\nfunction highlight(line: string): CodeToken[] {\n const out: CodeToken[] = [];\n const re = /(\"(?:[^\"\\\\]|\\\\.)*\"\\s*:)|(\"(?:[^\"\\\\]|\\\\.)*\")|(\\b-?\\d+(?:\\.\\d+)?\\b)|(\\b(?:true|false|null|GET|POST|PUT|DELETE)\\b)|([{}[\\],:])/g;\n let last = 0;\n let match: RegExpExecArray | null;\n\n while ((match = re.exec(line)) !== null) {\n if (match.index > last) out.push({ t: line.slice(last, match.index), c: 'plain' });\n if (match[1]) out.push({ t: match[1], c: 'key' });\n else if (match[2]) out.push({ t: match[2], c: 'str' });\n else if (match[3]) out.push({ t: match[3], c: 'num' });\n else if (match[4]) out.push({ t: match[4], c: 'kw' });\n else if (match[5]) out.push({ t: match[5], c: 'pun' });\n last = re.lastIndex;\n }\n\n if (last < line.length) out.push({ t: line.slice(last), c: 'plain' });\n return out;\n}\n\nconst COLOR: Record<TokenKind, string> = { plain: '#cdd0d8', key: '#7fd1c0', str: '#e0a96d', num: '#8fb3ff', kw: '#c98aff', pun: '#8a91a3' };\n\nexport interface CodeBlockProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n /** The snippet, newline-separated. Lightly token-highlighted (JSON/shell). */\n code?: string;\n /** Header label, e.g. a filename or \"response\". Falls back to language. */\n label?: string;\n language?: string;\n showLineNumbers?: boolean;\n copyable?: boolean;\n style?: CSSProperties;\n}\n\n/**\n * Dark code surface for the light page (Stripe-style). Header + copy + line numbers.\n * @startingPoint section=\"Data\" subtitle=\"Dark code block with copy\" viewport=\"520x220\"\n */\nexport function CodeBlock({ code = '', label, language = 'json', showLineNumbers = true, copyable = true, style, ...rest }: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n const lines = String(code).replace(/\\n$/, '').split('\\n');\n\n const copy = () => {\n try { navigator.clipboard?.writeText(code); } catch { /* clipboard unavailable */ }\n setCopied(true); setTimeout(() => setCopied(false), 1400);\n };\n\n return (\n <div {...rest} style={{\n background: 'var(--dt-code-bg)', border: '1px solid var(--dt-code-border)',\n borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden', ...style,\n }}>\n {(label || copyable) ? (\n <div style={{\n display: 'flex', alignItems: 'center', gap: 10, padding: '9px 12px',\n borderBottom: '1px solid var(--dt-code-border)',\n }}>\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: '#8a91a3' }}>{label || language}</span>\n {copyable ? (\n <button\n type=\"button\" onClick={copy}\n style={{\n marginLeft: 'auto', display: 'inline-flex', alignItems: 'center', gap: 6, border: 'none',\n background: 'transparent', color: copied ? '#34d399' : '#8a91a3', cursor: 'pointer',\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, padding: 0,\n }}\n >\n {copied ? (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" strokeWidth=\"2.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>복사됨</>\n ) : (\n <><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><rect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\" stroke=\"currentColor\" strokeWidth=\"2\" /><path d=\"M5 15V5a2 2 0 0 1 2-2h10\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" /></svg>복사</>\n )}\n </button>\n ) : null}\n </div>\n ) : null}\n <div style={{ padding: '12px 0', overflowX: 'auto' }}>\n {lines.map((line, index) => (\n <div key={index} style={{ display: 'grid', gridTemplateColumns: showLineNumbers ? '38px 1fr' : '1fr', fontFamily: 'var(--dt-font-mono)', fontSize: 12.5, lineHeight: 1.75 }}>\n {showLineNumbers ? <span style={{ textAlign: 'right', paddingRight: 14, color: '#5a6273', userSelect: 'none' }}>{index + 1}</span> : null}\n <code style={{ color: COLOR.plain, whiteSpace: 'pre', paddingRight: 14 }}>\n {highlight(line).map((segment, segmentIndex) => <span key={segmentIndex} style={{ color: COLOR[segment.c] }}>{segment.t}</span>)}\n </code>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface KeyValueItem {\n key: string;\n value: ReactNode;\n /** Render the value in JetBrains Mono (paths, IDs, methods). */\n mono?: boolean;\n /** Tint the value persimmon (highlighted field). */\n accent?: boolean;\n}\n\nexport interface KeyValueProps extends Omit<HTMLAttributes<HTMLDListElement>, 'children' | 'style'> {\n items?: KeyValueItem[];\n /** 1 = stacked rows, 2 = two-up grid. */\n columns?: 1 | 2;\n style?: CSSProperties;\n}\n\n/**\n * Definition list for spec metadata — hairline rows, muted key, ink value.\n * @startingPoint section=\"Data\" subtitle=\"Spec metadata as a definition list\" viewport=\"460x220\"\n */\nexport function KeyValue({ items = [], columns = 1, style, ...rest }: KeyValueProps) {\n return (\n <dl {...rest} style={{\n margin: 0, display: 'grid',\n gridTemplateColumns: columns === 2 ? '1fr 1fr' : '1fr',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n ...style,\n }}>\n {items.map((item, index) => {\n const row = Math.floor(index / columns);\n const col = index % columns;\n const isLastRow = row === Math.floor((items.length - 1) / columns);\n\n return (\n <div\n key={index}\n style={{\n display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 14,\n padding: '11px 14px',\n borderBottom: isLastRow ? 'none' : '1px solid var(--dt-border)',\n borderRight: columns === 2 && col === 0 ? '1px solid var(--dt-border)' : 'none',\n }}\n >\n <dt style={{ fontSize: 12.5, color: 'var(--dt-muted)', flex: '0 0 auto' }}>{item.key}</dt>\n <dd style={{\n margin: 0, textAlign: 'right', minWidth: 0,\n fontFamily: item.mono ? 'var(--dt-font-mono)' : 'inherit',\n fontSize: item.mono ? 12.5 : 13, fontWeight: 600,\n color: item.accent ? 'var(--dt-accent)' : 'var(--dt-ink-strong)',\n fontVariantNumeric: 'tabular-nums',\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}>{item.value}</dd>\n </div>\n );\n })}\n </dl>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport type LogLevel = 'ok' | 'warn' | 'error' | 'info';\n\nconst LEVEL: Record<LogLevel, { dot: string; text: string; label: string }> = {\n ok: { dot: 'var(--dt-success)', text: 'var(--dt-success)', label: 'OK' },\n warn: { dot: 'var(--dt-warning)', text: 'var(--dt-warning)', label: 'WARN' },\n error: { dot: 'var(--dt-danger)', text: 'var(--dt-danger)', label: 'ERR' },\n info: { dot: 'var(--dt-muted)', text: 'var(--dt-muted-strong)', label: 'INFO' },\n};\n\nexport interface LogEntry {\n time: string;\n level: LogLevel;\n tool: string;\n message?: string;\n /** Latency string (e.g. \"142ms\"). When absent, the level label shows instead. */\n latency?: string;\n}\n\nexport interface LogRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n entries?: LogEntry[];\n style?: CSSProperties;\n}\n\n/**\n * Dense tabular execution-log stream — hairline rows, status dots, mono columns.\n * @startingPoint section=\"Data\" subtitle=\"Execution-log stream\" viewport=\"560x200\"\n */\nexport function LogRow({ entries = [], style, ...rest }: LogRowProps) {\n return (\n <div {...rest} style={{\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-lg)', overflow: 'hidden',\n background: 'var(--dt-surface)', fontVariantNumeric: 'tabular-nums', ...style,\n }}>\n {entries.map((entry, index) => {\n const level = LEVEL[entry.level] || LEVEL.info;\n\n return (\n <div\n key={index}\n style={{\n display: 'grid', gridTemplateColumns: 'auto 14px 1fr auto', alignItems: 'center', gap: 12,\n padding: '9px 14px', borderTop: index === 0 ? 'none' : '1px solid var(--dt-border)',\n fontFamily: 'var(--dt-font-mono)', fontSize: 12,\n }}\n >\n <span style={{ color: 'var(--dt-muted)' }}>{entry.time}</span>\n <span style={{ width: 7, height: 7, borderRadius: 9999, background: level.dot, justifySelf: 'center' }} />\n <span style={{ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n <span style={{ color: 'var(--dt-ink-strong)', fontWeight: 600 }}>{entry.tool}</span>\n {entry.message ? <span style={{ color: 'var(--dt-muted-strong)' }}>{' '}{entry.message}</span> : null}\n </span>\n <span style={{ color: entry.latency ? 'var(--dt-muted-strong)' : level.text, fontWeight: 600 }}>\n {entry.latency || level.label}\n </span>\n </div>\n );\n })}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\ntype PageItem = number | '…';\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange' | 'style'> {\n page?: number;\n pageCount?: number;\n onChange?: (page: number) => void;\n style?: CSSProperties;\n}\n\n/** Pagination — prev/next plus compact page numbers with an ellipsis. */\nexport function Pagination({ page = 1, pageCount = 1, onChange, style, ...rest }: PaginationProps) {\n const go = (targetPage: number) => { if (targetPage >= 1 && targetPage <= pageCount && targetPage !== page) onChange?.(targetPage); };\n const pages: PageItem[] = [];\n const add = (targetPage: PageItem) => pages.push(targetPage);\n\n if (pageCount <= 7) { for (let i = 1; i <= pageCount; i += 1) add(i); }\n else {\n add(1);\n if (page > 3) add('…');\n for (let i = Math.max(2, page - 1); i <= Math.min(pageCount - 1, page + 1); i += 1) add(i);\n if (page < pageCount - 2) add('…');\n add(pageCount);\n }\n\n const cell = (active: boolean): CSSProperties => ({\n minWidth: 32, height: 32, padding: '0 8px', borderRadius: 'var(--dt-radius-sm)', border: 'none', cursor: 'pointer',\n fontSize: 13, fontWeight: 600, fontVariantNumeric: 'tabular-nums',\n background: active ? 'var(--dt-accent)' : 'transparent',\n color: active ? 'var(--dt-accent-ink)' : 'var(--dt-muted-strong)',\n });\n const arrow = (disabled: boolean): CSSProperties => ({ ...cell(false), opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', display: 'inline-flex', alignItems: 'center', justifyContent: 'center' });\n\n return (\n <nav {...rest} style={{ display: 'inline-flex', alignItems: 'center', gap: 2, ...style }} aria-label=\"페이지\">\n <button style={arrow(page <= 1)} onClick={() => go(page - 1)} disabled={page <= 1} aria-label=\"이전\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n {pages.map((pageItem, index) => pageItem === '…'\n ? <span key={`e${index}`} style={{ minWidth: 22, textAlign: 'center', color: 'var(--dt-muted)' }}>…</span>\n : <button key={pageItem} style={cell(pageItem === page)} onClick={() => go(pageItem)} aria-current={pageItem === page ? 'page' : undefined}>{pageItem}</button>)}\n <button style={arrow(page >= pageCount)} onClick={() => go(page + 1)} disabled={page >= pageCount} aria-label=\"다음\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>\n </button>\n </nav>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface StatTileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n label: ReactNode;\n value: ReactNode;\n /** e.g. \"+8.4%\". */\n delta?: ReactNode;\n deltaTone?: 'up' | 'down' | 'neutral';\n hint?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Metric tile — uppercase label, large tabular value, optional delta.\n * The console's KPI unit. Compose several inside a bordered stat row.\n */\nexport function StatTile({ label, value, delta, deltaTone = 'neutral', hint, style, ...rest }: StatTileProps) {\n const tone = { up: 'var(--dt-success)', down: 'var(--dt-danger)', neutral: 'var(--dt-muted)' }[deltaTone];\n\n return (\n <div {...rest} style={{ padding: 18, minWidth: 0, ...style }}>\n <div style={{ fontSize: 11, fontWeight: 650, letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--dt-muted)' }}>{label}</div>\n <div style={{ marginTop: 8, fontSize: 25, fontWeight: 700, lineHeight: 1.1, letterSpacing: '-0.02em', color: 'var(--dt-ink-strong)', fontVariantNumeric: 'tabular-nums' }}>{value}</div>\n {(delta || hint) ? (\n <div style={{ marginTop: 6, display: 'flex', alignItems: 'center', gap: 6, fontSize: 12, color: 'var(--dt-muted)' }}>\n {delta ? <span style={{ color: tone, fontWeight: 600, fontVariantNumeric: 'tabular-nums' }}>{delta}</span> : null}\n {hint ? <span>{hint}</span> : null}\n </div>\n ) : null}\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport type TableAlign = 'left' | 'center' | 'right';\nexport type TableRow = Record<string, ReactNode>;\n\nexport interface TableColumn<Row extends TableRow = TableRow> {\n key: Extract<keyof Row, string>;\n header: ReactNode;\n align?: TableAlign;\n nowrap?: boolean;\n render?: (value: Row[Extract<keyof Row, string>], row: Row) => ReactNode;\n}\n\nexport interface TableProps<Row extends TableRow = TableRow> extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'style'> {\n columns?: Array<TableColumn<Row>>;\n rows?: Row[];\n rowKey?: (row: Row, index: number) => string | number;\n onRowClick?: (row: Row) => void;\n empty?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Data table — scannable, dense, hairline-divided. Columns define header,\n * alignment, and an optional cell renderer. Built for comparison, not decoration.\n */\nexport function Table<Row extends TableRow = TableRow>({ columns = [], rows = [], rowKey, onRowClick, empty, style, ...rest }: TableProps<Row>) {\n if (!rows.length && empty) return empty;\n\n return (\n <div {...rest} style={{ overflowX: 'auto', borderRadius: 'var(--dt-radius-lg)', background: 'var(--dt-surface)', boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)', ...style }}>\n <table style={{ width: '100%', borderCollapse: 'collapse', color: 'var(--dt-ink)' }}>\n <thead>\n <tr style={{ background: 'var(--dt-surface-muted)' }}>\n {columns.map((column) => (\n <th key={column.key} style={{\n textAlign: column.align || 'left', padding: '11px 18px',\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600,\n letterSpacing: '0.04em', textTransform: 'uppercase', color: 'var(--dt-muted)',\n borderBottom: '1px solid var(--dt-divider)', whiteSpace: 'nowrap',\n }}>{column.header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={rowKey ? rowKey(row, rowIndex) : rowIndex}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n className=\"dt-tr\"\n style={{ cursor: onRowClick ? 'pointer' : 'default' }}>\n {columns.map((column) => (\n <td key={column.key} style={{\n textAlign: column.align || 'left', padding: '13px 18px', fontSize: 13,\n borderBottom: '1px solid var(--dt-divider)', whiteSpace: column.nowrap ? 'nowrap' : 'normal',\n }}>{column.render ? column.render(row[column.key], row) : row[column.key]}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n <style>{`.dt-tr{transition:background-color 130ms}.dt-tr:hover{background:var(--dt-surface-muted)}tbody tr:last-child td{border-bottom:0}`}</style>\n </div>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface UsageMeterProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style'> {\n label?: ReactNode;\n value?: number;\n max?: number;\n /** Suffix after max, e.g. \"회/일\". */\n unit?: string;\n hint?: ReactNode;\n style?: CSSProperties;\n}\n\n/**\n * Quota / usage bar — hairline track, persimmon fill escalating to warning/danger.\n * @startingPoint section=\"Data\" subtitle=\"Quota usage with tabular readout\" viewport=\"420x80\"\n */\nexport function UsageMeter({ label, value = 0, max = 100, unit = '', hint, style, ...rest }: UsageMeterProps) {\n const pct = Math.min(100, Math.max(0, (value / max) * 100));\n const fill = pct >= 90 ? 'var(--dt-danger)' : pct >= 75 ? 'var(--dt-warning)' : 'var(--dt-accent)';\n\n return (\n <div {...rest} style={{ display: 'grid', gap: 8, ...style }}>\n <div style={{ display: 'flex', alignItems: 'baseline', justifyContent: 'space-between', gap: 12 }}>\n {label ? <span style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-muted-strong)' }}>{label}</span> : <span />}\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12.5, color: 'var(--dt-ink-strong)', fontVariantNumeric: 'tabular-nums' }}>\n <b style={{ fontWeight: 700 }}>{value.toLocaleString()}</b>\n <span style={{ color: 'var(--dt-muted)' }}> / {max.toLocaleString()}{unit}</span>\n </span>\n </div>\n <div style={{ position: 'relative', height: 8, borderRadius: 'var(--dt-radius-sm)', background: 'var(--dt-surface-sunken)', boxShadow: 'inset 0 0 0 1px var(--dt-border-strong)', overflow: 'hidden' }}>\n <div style={{ position: 'absolute', inset: 0, width: `${pct}%`, background: fill, borderRadius: 'var(--dt-radius-sm)', transition: 'width var(--dt-motion)' }} />\n </div>\n {hint ? <span style={{ fontSize: 12, color: 'var(--dt-muted)' }}>{hint}</span> : null}\n </div>\n );\n}\n","import { Fragment } from 'react';\nimport type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n href?: string;\n}\n\nexport interface BreadcrumbProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n items?: BreadcrumbItem[];\n style?: CSSProperties;\n}\n\n/** Breadcrumb trail — last item is the current page. */\nexport function Breadcrumb({ items = [], style, ...rest }: BreadcrumbProps) {\n return (\n <nav\n {...rest}\n aria-label=\"breadcrumb\"\n style={{ display: 'flex', alignItems: 'center', gap: 6, flexWrap: 'wrap', ...style }}\n >\n {items.map((it, i) => {\n const last = i === items.length - 1;\n return (\n <Fragment key={i}>\n {last\n ? <span aria-current=\"page\" style={{ fontSize: 13, fontWeight: 600, color: 'var(--dt-ink-strong)' }}>{it.label}</span>\n : <a href={it.href || '#'} style={{ fontSize: 13, fontWeight: 500, color: 'var(--dt-muted)', textDecoration: 'none' }}>{it.label}</a>}\n {!last ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" style={{ color: 'var(--dt-border-strong)' }} aria-hidden=\"true\">\n <path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : null}\n </Fragment>\n );\n })}\n </nav>\n );\n}\n","import type { ChangeEvent, CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent as ReactMouseEvent, ReactNode } from 'react';\nimport { useState, useEffect } from 'react';\n\nexport interface CommandItem {\n label: string;\n icon?: ReactNode;\n meta?: string;\n shortcut?: string;\n active?: boolean;\n}\n\nexport interface CommandGroup {\n heading?: string;\n items: CommandItem[];\n}\n\nexport interface CommandPaletteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onSelect'> {\n open?: boolean;\n query?: string;\n onQueryChange?: (q: string) => void;\n groups?: CommandGroup[];\n footerHint?: string;\n onSelect?: (item: CommandItem) => void;\n style?: CSSProperties;\n}\n\nexport function CommandPalette({ open = true, query = '', onQueryChange, groups = [], footerHint = '↑↓ 이동 · ↵ 실행 · esc 닫기', onSelect, style, ...rest }: CommandPaletteProps) {\n const [activeIndex, setActiveIndex] = useState([0, 0]);\n const [isOpen, setIsOpen] = useState(open);\n\n useEffect(() => {\n setIsOpen(open);\n }, [open]);\n\n if (!isOpen) return null;\n\n const handleKeyDown = (_e: KeyboardEvent) => {\n if (_e.key === 'ArrowDown') {\n _e.preventDefault();\n setActiveIndex((prev) => {\n const [groupIdx, itemIdx] = prev;\n const group = groups[groupIdx];\n if (!group) return prev;\n if (itemIdx < group.items.length - 1) return [groupIdx, itemIdx + 1];\n const nextGroupIdx = (groupIdx + 1) % groups.length;\n const nextGroup = groups[nextGroupIdx];\n if (nextGroup && nextGroup.items.length > 0) return [nextGroupIdx, 0];\n return prev;\n });\n } else if (_e.key === 'ArrowUp') {\n _e.preventDefault();\n setActiveIndex((prev) => {\n const [groupIdx, itemIdx] = prev;\n if (itemIdx > 0) return [groupIdx, itemIdx - 1];\n const prevGroupIdx = (groupIdx - 1 + groups.length) % groups.length;\n const prevGroup = groups[prevGroupIdx];\n if (prevGroup && prevGroup.items.length > 0) return [prevGroupIdx, prevGroup.items.length - 1];\n return prev;\n });\n } else if (_e.key === 'Enter') {\n _e.preventDefault();\n const [gi, ii] = activeIndex;\n const group = groups[gi];\n if (group && group.items[ii]) onSelect?.(group.items[ii]);\n } else if (_e.key === 'Escape') {\n _e.preventDefault();\n setIsOpen(false);\n }\n };\n\n return (\n <div\n {...rest}\n role=\"listbox\"\n onKeyDown={handleKeyDown}\n style={{\n width: 520, maxWidth: '100%', background: 'var(--dt-surface)',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-xl)',\n boxShadow: 'var(--dt-shadow-xl)', overflow: 'hidden', fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n {/* search */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 11, padding: '14px 16px', borderBottom: '1px solid var(--dt-border)' }}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" style={{ color: 'var(--dt-muted)', flex: '0 0 auto' }}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2\" /><path d=\"M21 21l-4-4\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n <input\n autoFocus value={query} onChange={(e: ChangeEvent<HTMLInputElement>) => onQueryChange?.(e.target.value)}\n placeholder=\"도구 · 액션 검색…\"\n style={{ flex: 1, border: 'none', outline: 'none', background: 'transparent', fontSize: 15, fontFamily: 'inherit', color: 'var(--dt-ink-strong)' }}\n />\n <kbd style={{\n fontFamily: 'var(--dt-font-mono)', fontSize: 11, fontWeight: 600, color: 'var(--dt-muted)',\n border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-sm)', padding: '2px 7px',\n }}>⌘K</kbd>\n </div>\n\n {/* results */}\n <div style={{ maxHeight: 320, overflowY: 'auto', padding: 6 }}>\n {groups.map((g, gi) => (\n <div key={gi} style={{ marginBottom: 4 }}>\n {g.heading ? (\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 10, letterSpacing: '.1em', textTransform: 'uppercase', color: 'var(--dt-muted)', padding: '8px 10px 5px' }}>{g.heading}</div>\n ) : null}\n {g.items.map((it, ii) => {\n const isActive = activeIndex[0] === gi && activeIndex[1] === ii;\n return (\n <button\n key={ii}\n type=\"button\"\n role=\"option\"\n aria-selected={isActive}\n onMouseDown={(e: ReactMouseEvent<HTMLButtonElement>) => { e.preventDefault(); onSelect?.(it); }}\n style={{\n display: 'flex', alignItems: 'center', gap: 11, padding: '9px 10px',\n borderRadius: 'var(--dt-radius-md)', cursor: 'pointer',\n background: isActive ? 'var(--dt-tint-accent)' : 'transparent',\n border: 'none', outline: 'none',\n }}\n >\n {it.icon ? <span style={{ display: 'inline-flex', flex: '0 0 auto', color: isActive ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{it.icon}</span> : null}\n <span style={{ flex: 1, minWidth: 0, fontSize: 13.5, fontWeight: isActive ? 600 : 500, color: isActive ? 'var(--dt-accent)' : 'var(--dt-ink-strong)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {it.label}\n {it.meta ? <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)', fontWeight: 400, marginLeft: 8 }}>{it.meta}</span> : null}\n </span>\n {it.shortcut ? (\n <kbd style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted-strong)', border: '1px solid var(--dt-border-strong)', borderRadius: 'var(--dt-radius-sm)', padding: '1px 6px' }}>{it.shortcut}</kbd>\n ) : null}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n\n {footerHint ? (\n <div style={{ borderTop: '1px solid var(--dt-border)', padding: '8px 14px', fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: 'var(--dt-muted)' }}>{footerHint}</div>\n ) : null}\n </div>\n );\n}\n","import { useEffect, useRef, useState } from 'react';\nimport type { CSSProperties, HTMLAttributes, KeyboardEvent, MouseEvent as ReactMouseEvent, ReactNode } from 'react';\n\nexport interface MenuItem {\n label?: ReactNode;\n icon?: ReactNode;\n onClick?: () => void;\n danger?: boolean;\n divider?: boolean;\n}\n\nexport interface MenuProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {\n trigger: ReactNode;\n items?: MenuItem[];\n align?: 'left' | 'right';\n width?: number;\n style?: CSSProperties;\n}\n\nexport function Menu({ trigger, items = [], align = 'left', width = 200, style, ...rest }: MenuProps) {\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLSpanElement>(null);\n\n useEffect(() => {\n if (!open) return undefined;\n const onDoc = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); };\n window.addEventListener('mousedown', onDoc);\n return () => window.removeEventListener('mousedown', onDoc);\n }, [open]);\n\n const handleTriggerKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setOpen((v) => !v);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n const firstItem = ref.current?.querySelector('button[role=\"menuitem\"]') as HTMLButtonElement | null;\n firstItem?.focus();\n }\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.onClick) {\n item.onClick();\n setOpen(false);\n }\n };\n\n const handleTriggerClick = () => {\n setOpen((v) => !v);\n };\n\n return (\n <span {...rest} ref={ref} style={{ position: 'relative', display: 'inline-flex', ...style }}>\n <button\n type=\"button\"\n onClick={handleTriggerClick}\n onKeyDown={handleTriggerKeyDown}\n aria-expanded={open}\n aria-haspopup=\"menu\"\n style={{ display: 'inline-flex', cursor: 'pointer', border: 'none', background: 'transparent', padding: 0, fontSize: 'inherit', fontFamily: 'inherit' }}\n >\n {trigger}\n </button>\n {open ? (\n <div role=\"menu\" aria-orientation=\"vertical\" style={{\n position: 'absolute', top: '100%', [align]: 0, marginTop: 6, zIndex: 80, width,\n padding: 5, background: 'var(--dt-surface)', borderRadius: 'var(--dt-radius-md)',\n boxShadow: 'var(--dt-shadow-lg)', animation: 'dt-menu 130ms var(--dt-ease)',\n }}>\n {items.map((it, i) => it.divider\n ? <div key={`d${i}`} style={{ height: 1, background: 'var(--dt-border)', margin: '5px 0' }} />\n : (\n <button\n key={i}\n role=\"menuitem\"\n onClick={() => handleItemClick(it)}\n style={{\n display: 'flex', alignItems: 'center', gap: 9, width: '100%', textAlign: 'left',\n padding: '8px 10px', border: 'none', borderRadius: 'var(--dt-radius-sm)', cursor: 'pointer',\n background: 'transparent', fontSize: 13.5, fontWeight: 500, fontFamily: 'inherit',\n color: it.danger ? 'var(--dt-danger)' : 'var(--dt-ink)',\n }}\n onMouseEnter={(e: ReactMouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = it.danger ? 'var(--dt-tint-danger)' : 'var(--dt-surface-sunken)'; }}\n onMouseLeave={(e: ReactMouseEvent<HTMLButtonElement>) => { e.currentTarget.style.background = 'transparent'; }}>\n {it.icon ? <span style={{ display: 'inline-flex', color: it.danger ? 'var(--dt-danger)' : 'var(--dt-muted-strong)' }}>{it.icon}</span> : null}\n {it.label}\n </button>\n ))}\n <style>{`@keyframes dt-menu{from{opacity:0;transform:translateY(-4px)}}`}</style>\n </div>\n ) : null}\n </span>\n );\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\n\nexport interface SidebarItem {\n label: string;\n icon?: ReactNode;\n href?: string;\n active?: boolean;\n /** Trailing count (e.g. tool count), rendered tabular-mono. */\n badge?: ReactNode;\n}\n\nexport interface SidebarSection {\n heading?: string;\n items: SidebarItem[];\n}\n\nexport interface SidebarProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n /** Brand block for the header (e.g. <BrandLogo/>). */\n brand?: ReactNode;\n sections?: SidebarSection[];\n footer?: ReactNode;\n width?: number;\n style?: CSSProperties;\n}\n\n/**\n * Console primary nav — flat column, active item marked by a persimmon left bar.\n * @startingPoint section=\"Navigation\" subtitle=\"Console nav rail\" viewport=\"260x440\"\n */\nexport function Sidebar({ brand, sections = [], footer, width = 232, style, ...rest }: SidebarProps) {\n return (\n <nav\n {...rest}\n style={{\n width, display: 'flex', flexDirection: 'column',\n background: 'var(--dt-surface)', borderRight: '1px solid var(--dt-border-strong)',\n fontFamily: 'var(--dt-font-sans)', ...style,\n }}\n >\n {brand ? (\n <div style={{ padding: '16px 18px', borderBottom: '1px solid var(--dt-border)' }}>{brand}</div>\n ) : null}\n\n <div style={{ flex: 1, overflowY: 'auto', padding: '12px 10px', display: 'grid', gap: 16, alignContent: 'start' }}>\n {sections.map((sec, si) => (\n <div key={si} style={{ display: 'grid', gap: 2 }}>\n {sec.heading ? (\n <div style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 10, letterSpacing: '.1em', textTransform: 'uppercase', color: 'var(--dt-muted)', padding: '4px 10px 6px' }}>{sec.heading}</div>\n ) : null}\n {sec.items.map((it, ii) => (\n <a\n key={ii}\n href={it.href || '#'}\n aria-current={it.active ? 'page' : undefined}\n style={{\n position: 'relative', display: 'flex', alignItems: 'center', gap: 11,\n padding: '8px 10px 8px 12px', borderRadius: 'var(--dt-radius-md)', textDecoration: 'none',\n fontSize: 13.5, fontWeight: it.active ? 600 : 500,\n color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted-strong)',\n background: it.active ? 'var(--dt-tint-accent)' : 'transparent',\n }}\n >\n {it.active ? <span style={{ position: 'absolute', left: 0, top: 7, bottom: 7, width: 3, borderRadius: 2, background: 'var(--dt-accent)' }} /> : null}\n {it.icon ? <span style={{ display: 'inline-flex', flex: '0 0 auto', color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted)' }} aria-hidden=\"true\">{it.icon}</span> : null}\n <span style={{ flex: 1, minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{it.label}</span>\n {it.badge != null ? (\n <span style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 11, color: it.active ? 'var(--dt-accent)' : 'var(--dt-muted)', fontVariantNumeric: 'tabular-nums' }}>{it.badge}</span>\n ) : null}\n </a>\n ))}\n </div>\n ))}\n </div>\n\n {footer ? <div style={{ padding: '12px 16px', borderTop: '1px solid var(--dt-border)' }}>{footer}</div> : null}\n </nav>\n );\n}\n","import type { CSSProperties, HTMLAttributes } from 'react';\n\nexport interface Step {\n label: string;\n description?: string;\n}\n\nexport interface StepperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n steps?: Step[];\n /** Index of the in-progress step; earlier steps render as done. */\n current?: number;\n orientation?: 'horizontal' | 'vertical';\n style?: CSSProperties;\n}\n\n/**\n * Multi-step progress — done (check) / current (persimmon) / upcoming (muted).\n * @startingPoint section=\"Navigation\" subtitle=\"Onboarding step progress\" viewport=\"560x120\"\n */\nexport function Stepper({ steps = [], current = 0, orientation = 'horizontal', style, ...rest }: StepperProps) {\n const vertical = orientation === 'vertical';\n return (\n <div\n {...rest}\n style={{\n display: 'flex', flexDirection: vertical ? 'column' : 'row',\n alignItems: vertical ? 'stretch' : 'flex-start', gap: 0, ...style,\n }}\n >\n {steps.map((s, i) => {\n const done = i < current, active = i === current;\n const accent = done || active;\n return (\n <div key={i} style={{ display: 'flex', flexDirection: vertical ? 'row' : 'column', alignItems: vertical ? 'flex-start' : 'stretch', flex: vertical ? 'none' : 1, minWidth: 0, gap: vertical ? 12 : 0 }}>\n {/* marker + connector */}\n <div style={{ display: 'flex', flexDirection: vertical ? 'column' : 'row', alignItems: 'center', gap: vertical ? 6 : 10, ...(vertical ? {} : { width: '100%' }) }}>\n <span style={{\n flex: '0 0 auto', width: 26, height: 26, display: 'grid', placeItems: 'center',\n borderRadius: 'var(--dt-radius-sm)', fontFamily: 'var(--dt-font-mono)', fontSize: 12, fontWeight: 700,\n background: done ? 'var(--dt-accent)' : active ? 'var(--dt-tint-accent)' : 'var(--dt-surface-sunken)',\n color: done ? '#fff' : active ? 'var(--dt-accent)' : 'var(--dt-muted)',\n boxShadow: active ? 'inset 0 0 0 1.5px var(--dt-accent)' : done ? 'none' : 'inset 0 0 0 1px var(--dt-border-strong)',\n }}>\n {done ? <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\" stroke=\"currentColor\" strokeWidth=\"2.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg> : i + 1}\n </span>\n {i < steps.length - 1 ? (\n <span style={{\n background: done ? 'var(--dt-accent)' : 'var(--dt-border-strong)',\n ...(vertical ? { width: 2, minHeight: 22, flex: 1, marginTop: 2 } : { height: 2, flex: 1 }),\n }} />\n ) : null}\n </div>\n {/* label */}\n <div style={{ padding: vertical ? '2px 0 16px' : '10px 14px 0 0' }}>\n <div style={{ fontSize: 13.5, fontWeight: accent ? 650 : 500, color: accent ? 'var(--dt-ink-strong)' : 'var(--dt-muted)' }}>{s.label}</div>\n {s.description ? <div style={{ fontSize: 12, color: 'var(--dt-muted)', marginTop: 3, lineHeight: 1.45 }}>{s.description}</div> : null}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface ActionListProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\nexport interface ActionListItemClassNameOptions {\n interactive?: boolean;\n className?: string;\n}\n\nexport interface ActionListIndexProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n}\n\nexport function actionListClassName(className?: string): string {\n return cx('dt-action-list', className);\n}\n\nexport function actionListItemClassName({ interactive = false, className }: ActionListItemClassNameOptions = {}): string {\n return cx('dt-action-list-item', interactive && 'dt-action-list-item-interactive', className);\n}\n\nexport function ActionList({ children, className, ...rest }: ActionListProps) {\n return (\n <div {...rest} className={actionListClassName(className)}>\n {children}\n </div>\n );\n}\n\nexport function ActionListIndex({ children, className, ...rest }: ActionListIndexProps) {\n return (\n <span {...rest} className={cx('dt-action-list-index', className)}>\n {children}\n </span>\n );\n}\n","import {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n type CSSProperties,\n type Dispatch,\n type SetStateAction,\n} from 'react';\n\nexport const BRAND_LOGO_LANGUAGE = {\n Korean: 'ko',\n English: 'en',\n} as const;\n\nconst BRAND_LOGO_SIZE = {\n sm: 20,\n md: 28,\n lg: 56,\n xl: 76,\n} as const;\n\nconst BRAND_WORDMARK = 'Bridger';\n\nconst BRAND_LOGO_LABEL: Record<BrandLogoLanguage, string> = {\n [BRAND_LOGO_LANGUAGE.Korean]: '브릿저',\n [BRAND_LOGO_LANGUAGE.English]: BRAND_WORDMARK,\n};\n\nexport type BrandLogoLanguage = (typeof BRAND_LOGO_LANGUAGE)[keyof typeof BRAND_LOGO_LANGUAGE];\nexport type BrandLogoSize = keyof typeof BRAND_LOGO_SIZE;\n\nexport interface BrandLogoHandle {\n readonly play: () => void;\n}\n\nexport interface BrandLogoProps {\n size?: BrandLogoSize | number;\n autoplay?: boolean;\n loop?: boolean;\n lang?: BrandLogoLanguage;\n style?: CSSProperties;\n}\n\nfunction playMark(setArmed: Dispatch<SetStateAction<boolean>>) {\n const scheduleFrame = typeof requestAnimationFrame === 'function'\n ? requestAnimationFrame\n : (callback: FrameRequestCallback) => setTimeout(callback, 0);\n setArmed(false);\n scheduleFrame(() =>\n scheduleFrame(() => setArmed(true)),\n );\n}\n\nexport const BrandLogo = forwardRef<BrandLogoHandle, BrandLogoProps>(function BrandLogo(\n {\n size = 'md',\n autoplay = false,\n loop = false,\n lang = BRAND_LOGO_LANGUAGE.Korean,\n style,\n },\n ref,\n) {\n const fontSize = typeof size === 'number' ? size : (BRAND_LOGO_SIZE[size] ?? BRAND_LOGO_SIZE.md);\n const [armed, setArmed] = useState(false);\n\n useImperativeHandle(\n ref,\n () => ({\n play() {\n playMark(setArmed);\n },\n }),\n [],\n );\n\n useEffect(() => {\n if (!autoplay) return;\n const timeout = setTimeout(() => playMark(setArmed), 200);\n return () => clearTimeout(timeout);\n }, [autoplay]);\n\n useEffect(() => {\n if (!loop) return;\n let alive = true;\n const interval = setInterval(() => {\n if (!alive) return;\n playMark((value) => {\n if (alive) setArmed(value);\n });\n }, 7000);\n\n return () => {\n alive = false;\n clearInterval(interval);\n };\n }, [loop]);\n\n return (\n <span\n aria-label={BRAND_LOGO_LABEL[lang]}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '0.38em',\n fontFamily: 'var(--dt-font-sans)',\n fontWeight: 760,\n fontSize,\n letterSpacing: 0,\n lineHeight: 1,\n color: 'var(--dt-ink-strong)',\n userSelect: 'none',\n ...style,\n }}\n >\n <svg\n width=\"2.306em\"\n height=\"1.24em\"\n viewBox=\"0 0 44 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n style={{ flex: '0 0 auto', overflow: 'visible' }}\n >\n <path\n d=\"M4 8H18C24 8 25 4 31 4H40\"\n fill=\"none\"\n stroke=\"color-mix(in srgb, var(--dt-ink-strong) 24%, transparent)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n />\n <path\n d=\"M4 16H18C24 16 25 20 31 20H40\"\n fill=\"none\"\n stroke=\"color-mix(in srgb, var(--dt-ink-strong) 24%, transparent)\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n />\n <path\n className=\"dt-brand-logo-line\"\n d=\"M4 8H18C24 8 25 4 31 4H40\"\n fill=\"none\"\n stroke=\"var(--dt-accent)\"\n strokeDasharray=\"42\"\n strokeDashoffset={armed ? 0 : 0}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3.2\"\n style={armed ? { animation: 'dt-brand-logo-line-draw 420ms cubic-bezier(.2, .7, .2, 1) both' } : undefined}\n />\n <path\n className=\"dt-brand-logo-line\"\n d=\"M4 16H18C24 16 25 20 31 20H40\"\n fill=\"none\"\n stroke=\"var(--dt-accent)\"\n strokeDasharray=\"42\"\n strokeDashoffset={armed ? 0 : 0}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3.2\"\n style={armed ? { animation: 'dt-brand-logo-line-draw 420ms cubic-bezier(.2, .7, .2, 1) both' } : undefined}\n />\n </svg>\n <span>{BRAND_WORDMARK}</span>\n <style>\n {'@keyframes dt-brand-logo-line-draw{from{opacity:.45;stroke-dashoffset:42}to{opacity:1;stroke-dashoffset:0}}@media (prefers-reduced-motion: reduce){.dt-brand-logo-line{animation:none!important}}'}\n </style>\n </span>\n );\n});\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_ACTION_PILL_VARIANT = {\n Default: 'default',\n Accent: 'accent',\n Outline: 'outline',\n} as const;\n\nexport const PRODUCT_ACTION_PILL_SIZE = {\n Compact: 'compact',\n Figma: 'figma',\n} as const;\n\nexport type ProductActionPillVariant = (typeof PRODUCT_ACTION_PILL_VARIANT)[keyof typeof PRODUCT_ACTION_PILL_VARIANT];\nexport type ProductActionPillSize = (typeof PRODUCT_ACTION_PILL_SIZE)[keyof typeof PRODUCT_ACTION_PILL_SIZE];\n\nconst VARIANT_CLASS: Record<ProductActionPillVariant, string> = {\n [PRODUCT_ACTION_PILL_VARIANT.Default]: 'dt-product-action-pill-default',\n [PRODUCT_ACTION_PILL_VARIANT.Accent]: 'dt-product-action-pill-accent',\n [PRODUCT_ACTION_PILL_VARIANT.Outline]: 'dt-product-action-pill-outline',\n};\n\nconst SIZE_CLASS: Record<ProductActionPillSize, string> = {\n [PRODUCT_ACTION_PILL_SIZE.Compact]: 'dt-product-action-pill-compact',\n [PRODUCT_ACTION_PILL_SIZE.Figma]: 'dt-product-action-pill-figma',\n};\n\nexport type ProductActionPillProps<T extends ElementType = 'a'> = {\n as?: T;\n variant?: ProductActionPillVariant;\n size?: ProductActionPillSize;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n children?: ReactNode;\n className?: string;\n} & Omit<ComponentPropsWithoutRef<T>, 'as' | 'children' | 'className'>;\n\nexport function productActionPillClassName({\n variant = PRODUCT_ACTION_PILL_VARIANT.Default,\n size = PRODUCT_ACTION_PILL_SIZE.Compact,\n className,\n}: {\n variant?: ProductActionPillVariant;\n size?: ProductActionPillSize;\n className?: string;\n} = {}) {\n return cx('dt-product-action-pill', VARIANT_CLASS[variant], SIZE_CLASS[size], className);\n}\n\nexport function ProductActionPill<T extends ElementType = 'a'>({\n as,\n variant = PRODUCT_ACTION_PILL_VARIANT.Default,\n size = PRODUCT_ACTION_PILL_SIZE.Compact,\n leadingIcon,\n trailingIcon,\n children,\n className,\n ...rest\n}: ProductActionPillProps<T>) {\n const Component = as ?? 'a';\n\n return (\n <Component className={productActionPillClassName({ variant, size, className })} {...rest}>\n {leadingIcon ? <span className=\"dt-product-action-pill-icon\">{leadingIcon}</span> : null}\n {children ? <span className=\"dt-product-action-pill-label\">{children}</span> : null}\n {trailingIcon ? <span className=\"dt-product-action-pill-icon\">{trailingIcon}</span> : null}\n </Component>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport const PRODUCT_SHELL_TONE = {\n Cinematic: 'cinematic',\n Console: 'console',\n} as const;\n\nexport type ProductShellTone = (typeof PRODUCT_SHELL_TONE)[keyof typeof PRODUCT_SHELL_TONE];\n\nconst SHELL_TONE_CLASS: Record<ProductShellTone, string> = {\n [PRODUCT_SHELL_TONE.Cinematic]: 'dt-product-shell-cinematic',\n [PRODUCT_SHELL_TONE.Console]: 'dt-product-shell-console',\n};\n\nexport interface ProductShellProps extends HTMLAttributes<HTMLDivElement> {\n tone?: ProductShellTone;\n}\n\nexport function ProductShell({ tone = PRODUCT_SHELL_TONE.Cinematic, className, children, ...rest }: ProductShellProps) {\n return (\n <div className={cx('dt-product-shell', SHELL_TONE_CLASS[tone], className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport interface ProductCinematicBackdropProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport function ProductCinematicBackdrop({\n animated = true,\n className,\n ...rest\n}: ProductCinematicBackdropProps) {\n return (\n <div\n className={cx('dt-product-cinematic-backdrop', animated && 'dt-product-cinematic-backdrop-animated', className)}\n aria-hidden=\"true\"\n {...rest}\n >\n <div className=\"dt-product-cinematic-wash\" />\n <svg className=\"dt-product-cinematic-lines\" viewBox=\"0 0 1440 720\" preserveAspectRatio=\"xMidYMid slice\">\n <path className=\"dt-product-cinematic-track\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-track\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-a\" d=\"M-60 248 H520 C690 248 710 168 884 168 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-b\" d=\"M-60 430 H510 C660 430 692 542 872 542 H1500\" />\n <path className=\"dt-product-cinematic-flow dt-product-cinematic-flow-c\" d=\"M-60 338 H610 C748 338 770 326 930 326 H1500\" />\n </svg>\n </div>\n );\n}\n\nexport interface ProductMotionFieldProps extends HTMLAttributes<HTMLDivElement> {\n gridSrc?: string;\n label?: string;\n}\n\nexport function ProductMotionField({\n gridSrc,\n label = 'Live API routing motion',\n className,\n ...rest\n}: ProductMotionFieldProps) {\n return (\n <div className={cx('dt-product-motion-field', className)} aria-label={label} {...rest}>\n {gridSrc ? <img className=\"dt-product-motion-grid\" src={gridSrc} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" /> : null}\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-a\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-orbit dt-product-motion-orbit-b\" aria-hidden=\"true\">\n <span className=\"dt-product-motion-node\" />\n </span>\n <span className=\"dt-product-motion-axis\" aria-hidden=\"true\" />\n <span className=\"dt-product-motion-copy\">API</span>\n </div>\n );\n}\n\nexport interface ProductSideRailItem {\n key: string;\n href: string;\n label: ReactNode;\n}\n\nexport interface ProductSideRailProps extends HTMLAttributes<HTMLElement> {\n items: readonly ProductSideRailItem[];\n label: string;\n}\n\nexport function ProductSideRail({ items, label, className, ...rest }: ProductSideRailProps) {\n return (\n <aside className={cx('dt-product-side-rail', className)} aria-label={label} {...rest}>\n {items.map((item) => (\n <a key={item.key} href={item.href}>\n {item.label}\n </a>\n ))}\n </aside>\n );\n}\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface ProductPageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n actions?: ReactNode;\n children?: ReactNode;\n}\n\nexport function ProductPageHeader({\n eyebrow,\n title,\n description,\n actions,\n children,\n className,\n ...rest\n}: ProductPageHeaderProps) {\n return (\n <header className={cx('dt-product-page-header', className)} {...rest}>\n <div className=\"dt-product-page-header-row\">\n <div className=\"dt-product-page-header-copy\">\n {eyebrow ? <span className=\"dt-product-page-header-eyebrow\">{eyebrow}</span> : null}\n <div className=\"dt-product-page-header-text\">\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n </div>\n {actions ? <div className=\"dt-product-page-header-actions\">{actions}</div> : null}\n </div>\n {children ? <div className=\"dt-product-page-header-content\">{children}</div> : null}\n </header>\n );\n}\n","import type { ReactNode, HTMLAttributes } from 'react';\nimport { cx } from '../../lib/cx';\n\nexport interface SectionCardProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {\n eyebrow?: string;\n title?: ReactNode;\n description?: ReactNode;\n /** Right-aligned action (usually a ghost Button). */\n action?: ReactNode;\n children?: ReactNode;\n contentClassName?: string;\n}\n\n/**\n * Console section panel — title, description, action, body. No eyebrow kicker:\n * the title is a plain noun-phrase heading, the section's own content does the\n * rest. Lay items flat inside; never card-in-card.\n */\nexport function SectionCard({\n eyebrow,\n title,\n description,\n action,\n children,\n contentClassName,\n style,\n ...rest\n}: SectionCardProps) {\n const hasHeader = Boolean(eyebrow || title || description || action);\n return (\n <section\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-lg)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: 'var(--dt-space-4)',\n ...style,\n }}\n >\n {hasHeader ? (\n <header\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--dt-space-3)',\n marginBottom: children ? 'var(--dt-space-3)' : 0,\n }}\n >\n <div style={{ minWidth: 0 }}>\n {eyebrow ? (\n <p\n style={{\n marginBottom: 6,\n fontSize: 12,\n fontWeight: 650,\n textTransform: 'uppercase',\n color: 'var(--dt-muted)',\n }}\n >\n {eyebrow}\n </p>\n ) : null}\n {title ? (\n <h3 style={{ fontSize: 18, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)' }}>\n {title}\n </h3>\n ) : null}\n {description ? (\n <p style={{ marginTop: 6, fontSize: 13, lineHeight: 1.55, color: 'var(--dt-muted-strong)', maxWidth: 560 }}>\n {description}\n </p>\n ) : null}\n </div>\n {action ? <div style={{ flex: '0 0 auto' }}>{action}</div> : null}\n </header>\n ) : null}\n <div className={cx(contentClassName)}>{children}</div>\n </section>\n );\n}\n","import type { HTMLAttributes } from 'react';\n\nconst STATE_COLOR: Record<'available' | 'managed' | 'locked', string> = {\n available: 'var(--dt-success)',\n managed: 'var(--dt-success)',\n locked: 'var(--dt-warning)',\n};\n\nexport interface ToolCardProps extends HTMLAttributes<HTMLElement> {\n /** Tool name, e.g. \"weather_getForecast\". */\n name: string;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | string;\n /** Category chip; defaults to the name prefix before the first underscore. */\n category?: string;\n description?: string;\n /** Mono API path shown in the footer. */\n path?: string;\n /** Usability state — drives the status dot/label. */\n state?: 'available' | 'managed' | 'locked';\n stateLabel?: string;\n}\n\n/**\n * An MCP tool as shown in the catalog and tool list.\n */\nexport function ToolCard({\n name,\n method = 'GET',\n category,\n description = '설명 없음',\n path = '/',\n state = 'available',\n stateLabel,\n style,\n ...rest\n}: ToolCardProps) {\n const cat = category ?? (name ? name.split('_')[0] : 'etc');\n const labels = { available: '사용 가능', managed: '관리형 키', locked: '키 등록' };\n return (\n <article\n className=\"dt-tool-card\"\n {...rest}\n style={{\n borderRadius: 'var(--dt-radius-md)',\n background: 'var(--dt-surface)',\n boxShadow: 'var(--dt-ring), var(--dt-shadow-xs)',\n padding: '16px 18px',\n transition: 'box-shadow var(--dt-motion), background-color var(--dt-motion)',\n ...style,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'flex-start', justifyContent: 'space-between', gap: 12 }}>\n <div style={{ minWidth: 0 }}>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 8 }}>\n <span className=\"dt-chip dt-chip-muted\">{cat}</span>\n <span className=\"dt-chip dt-chip-accent\">{method}</span>\n </div>\n <h4 style={{ marginTop: 11, fontSize: 15, fontWeight: 650, letterSpacing: '-0.01em', color: 'var(--dt-ink-strong)', wordBreak: 'break-all' }}>\n {name}\n </h4>\n </div>\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6, flex: '0 0 auto', fontSize: 12, fontWeight: 600, color: STATE_COLOR[state] }}>\n <span style={{ width: 6, height: 6, borderRadius: '9999px', background: STATE_COLOR[state] }} />\n {stateLabel ?? labels[state]}\n </span>\n </div>\n <p style={{\n marginTop: 12, fontSize: 13, lineHeight: 1.5, color: 'var(--dt-muted-strong)',\n display: '-webkit-box', WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden',\n }}>\n {description}\n </p>\n <div style={{ marginTop: 14, paddingTop: 13, borderTop: '1px solid var(--dt-divider)', display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: 12 }}>\n <code style={{ fontFamily: 'var(--dt-font-mono)', fontSize: 12, color: 'var(--dt-muted)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {path}\n </code>\n </div>\n <style>{'.dt-tool-card:hover{box-shadow:var(--dt-ring), var(--dt-shadow-md)}.dt-chip{font-family:var(--dt-font-mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 8px;border-radius:var(--dt-radius-sm);background:var(--dt-surface-sunken)}.dt-chip-muted{color:var(--dt-muted-strong)}.dt-chip-accent{color:var(--dt-accent)'}</style>\n </article>\n );\n}\n"]}