plainframe-ui 0.1.4 → 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.
- package/dist/index.js +16 -104
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Accordion.tsx","../src/theme/ThemeProvider.tsx","../src/theme/theme.ts","../src/utils/focusRing.ts","../src/components/AccordionSummary.tsx","../src/components/AccordionDetails.tsx","../src/components/AccordionGroup.tsx","../src/components/ActionBar.tsx","../src/components/Alert.tsx","../src/components/Autocomplete.tsx","../src/components/TextField.tsx","../src/components/DropdownMenu.tsx","../src/components/Menu.tsx","../src/components/MenuItems.tsx","../src/components/Switch.tsx","../src/components/Checkbox.tsx","../src/components/Card.tsx","../src/components/Container.tsx","../src/components/Avatar.tsx","../src/components/AvatarGroup.tsx","../src/components/Badge.tsx","../src/components/Backdrop.tsx","../src/components/Breadcrumbs.tsx","../src/components/Button.tsx","../src/components/Progress.tsx","../src/components/ButtonGroup.tsx","../src/components/CardGroup.tsx","../src/components/Chip.tsx","../src/components/CodeField.tsx","../src/components/ColorPatch.tsx","../src/components/ContextZone.tsx","../src/components/Divider.tsx","../src/components/Drawer.tsx","../src/components/Fade.tsx","../src/components/Flex.tsx","../src/components/Grow.tsx","../src/components/Image.tsx","../src/components/Typography.tsx","../src/components/ImageStack.tsx","../src/components/Kbd.tsx","../src/components/Modal.tsx","../src/components/Slide.tsx","../src/components/Pagination.tsx","../src/components/Popover.tsx","../src/components/Quote.tsx","../src/components/RadioGroup.tsx","../src/components/Rotate.tsx","../src/components/Select.tsx","../src/components/Skeleton.tsx","../src/components/Slider.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/TextArea.tsx","../src/components/Toast.tsx","../src/components/Tooltip.tsx","../src/theme/CssBaseline.tsx"],"sourcesContent":["/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useLayoutEffect,\n useEffect,\n useRef,\n cloneElement,\n isValidElement,\n useId,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype AccordionVariant = \"subtle\" | \"outlined\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionProps = WithCss & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onChange?: (expanded: boolean) => void;\n className?: string;\n variant?: AccordionVariant;\n disabled?: boolean;\n width?: number | string;\n children: React.ReactNode;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst getSlot = (el: React.ReactElement): string => {\n const t = el.type as { __PFUI_SLOT?: string; displayName?: string; name?: string } | undefined;\n return t?.__PFUI_SLOT || t?.displayName || t?.name || \"\";\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({\n expanded: controlledExpanded,\n defaultExpanded = false,\n onChange,\n className,\n variant = \"subtle\",\n disabled = false,\n width,\n css: userCss,\n children,\n}) => {\n const theme = usePlainframeUITheme();\n const detailsId = useId();\n\n const radius = theme.radius?.md;\n const T = theme.text;\n const borderW = theme.componentHeights?.border ?? 1;\n const borderWStr = toLen(borderW) ?? \"1px\";\n\n const isControlled = controlledExpanded !== undefined;\n const [uncontrolled, setUncontrolled] = useState(!!defaultExpanded);\n const expanded = isControlled ? !!controlledExpanded : uncontrolled;\n\n const focusRing = useFocusRing();\n\n const [maxH, setMaxH] = useState(0);\n const [ready, setReady] = useState(false);\n\n const measureRef = useRef<HTMLDivElement>(null);\n\n const toggle = () => {\n if (disabled) return;\n if (isControlled) {\n onChange?.(!controlledExpanded);\n } else {\n setUncontrolled(prev => {\n const next = !prev;\n onChange?.(next);\n return next;\n });\n }\n };\n\n const arr = React.Children.toArray(children).filter(\n (c): c is React.ReactElement => isValidElement(c)\n );\n\n let summaryIdx = arr.findIndex(el => getSlot(el) === \"AccordionSummary\");\n let detailsIdx = arr.findIndex(el => getSlot(el) === \"AccordionDetails\");\n\n if (summaryIdx === -1 && arr.length) summaryIdx = 0;\n if (detailsIdx === -1) {\n detailsIdx = arr.findIndex((_, i) => i !== summaryIdx);\n if (detailsIdx === -1 && arr.length >= 2) detailsIdx = 1;\n }\n\n const summaryEl = arr[summaryIdx] ?? null;\n const detailsEl = arr[detailsIdx] ?? null;\n\n const bg =\n variant === \"subtle\"\n ? theme.surface.subtleBg\n : variant === \"outlined\"\n ? (theme.surface.panelBg as string)\n : \"transparent\";\n\n const rootCss = css({\n backgroundColor: bg,\n color: T.primary,\n borderRadius: radius,\n outline:\n variant === \"outlined\"\n ? `${borderWStr} solid ${theme.surface.border}`\n : `${borderWStr} solid transparent`,\n outlineOffset: `-${borderWStr}`,\n marginBottom: theme.spacing.sm,\n maxWidth: width != null ? toLen(width) : undefined,\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n cursor: disabled ? \"not-allowed\" : \"default\",\n opacity: disabled ? 0.55 : 1,\n });\n\n useLayoutEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n setMaxH(el.scrollHeight);\n }, [expanded, children]);\n\n useEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n const ro = new ResizeObserver(() => setMaxH(el.scrollHeight));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n useEffect(() => {\n if (maxH > 0 && !ready) setReady(true);\n }, [maxH, ready]);\n\n const clipCss = css({\n maxHeight: expanded ? (maxH ? maxH : \"none\") : 0,\n overflow: expanded && !ready ? \"visible\" : \"hidden\",\n transition: ready ? \"max-height 0.36s cubic-bezier(.25,.8,.4,1)\" : \"none\",\n willChange: ready ? \"max-height\" : undefined,\n });\n\n const innerCss = css({\n opacity: expanded ? 1 : 0,\n transform: expanded ? \"translateY(0)\" : \"translateY(1rem)\",\n transition: ready ? \"transform 0.28s ease, opacity 0.28s ease\" : \"none\",\n pointerEvents: expanded ? \"auto\" : \"none\",\n });\n\n const summary =\n summaryEl &&\n cloneElement(\n summaryEl,\n {\n ...(typeof summaryEl.props === \"object\" && summaryEl.props ? summaryEl.props : {}),\n expanded,\n disabled,\n onClick: toggle,\n role: \"presentation\",\n tabIndex: -1,\n } as Partial<typeof summaryEl.props> & Record<string, unknown>\n );\n\n const details =\n detailsEl &&\n cloneElement(\n detailsEl,\n typeof detailsEl.props === \"object\" && detailsEl.props ? { ...detailsEl.props } : {}\n );\n\n return (\n <div\n className={[\n \"plainframe-ui-accordion\",\n `plainframe-ui-accordion-${variant}`,\n className || \"\",\n ]\n .join(\" \")\n .trim()}\n data-variant={variant}\n data-expanded={expanded ? \"true\" : \"false\"}\n css={[focusRing(), rootCss, userCss]}\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-expanded={expanded}\n aria-controls={detailsId}\n aria-disabled={disabled || undefined}\n onKeyDown={e => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n }}\n >\n <div tabIndex={-1} className=\"plainframe-ui-accordion-summary-wrapper\">\n {summary}\n </div>\n\n <div\n id={detailsId}\n aria-hidden={!expanded}\n className=\"plainframe-ui-accordion-details-clip\"\n css={clipCss}\n tabIndex={-1}\n >\n <div\n ref={measureRef}\n className=\"plainframe-ui-accordion-details-inner\"\n css={innerCss}\n >\n {details}\n </div>\n </div>\n </div>\n );\n};\n\nAccordion.displayName = \"Accordion\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { ThemeProvider as EmotionThemeProvider, useTheme as useEmotionTheme } from \"@emotion/react\";\nimport {\n defaultDarkTheme,\n defaultLightTheme,\n surfaceFromNeutral,\n textLight,\n textDark,\n type Mode,\n type PlainframeUITheme,\n} from \"./theme\";\n\n/* ───────── types ───────── */\nexport type ThemeProp = Partial<PlainframeUITheme> & {\n primaryKey?: string;\n light?: Partial<PlainframeUITheme> & { primaryKey?: string };\n dark?: Partial<PlainframeUITheme> & { primaryKey?: string };\n};\nexport type ThemeProviderProps = {\n theme?: ThemeProp;\n initialMode?: Mode | \"system\";\n storageKey?: string;\n scope?: string; // unique scope name for a nested provider\n children: React.ReactNode;\n};\n\n/* ───────── tiny store ───────── */\nfunction createStore<T>(initial: T) {\n let v: T = initial;\n const subs: Set<() => void> = new Set();\n return {\n get: (): T => v,\n set: (nv: T): void => {\n v = nv;\n subs.forEach((f) => f());\n },\n subscribe: (f: () => void): (() => void) => {\n subs.add(f);\n return () => subs.delete(f);\n },\n };\n}\n\n/* ───────── alias helpers ───────── */\nconst aliasOf: Record<string, string> = {\n red: \"danger\",\n error: \"danger\",\n green: \"success\",\n violet: \"purple\",\n fuchsia: \"magenta\",\n gray: \"mono\",\n grey: \"mono\",\n neutral: \"mono\",\n};\nconst resolveAlias = (k: string): string => aliasOf[k] ?? k;\nfunction mirrorOnColors(on: Record<string, string>): Record<string, string> {\n const out: Record<string, string> = { ...on };\n Object.entries(aliasOf).forEach(([alias, target]) => {\n if (out[target] != null && out[alias] == null) out[alias] = out[target];\n });\n return out;\n}\n\n/* ───────── ctx ───────── */\nconst ModeStoreContext = React.createContext<ReturnType<typeof createStore<Mode>> | null>(null);\nconst PrimaryStoreContext = React.createContext<ReturnType<typeof createStore<string>> | null>(null);\nconst ModeActionsContext = React.createContext<{ setMode: (m: Mode) => void; toggleMode: () => void }>({\n setMode: () => {},\n toggleMode: () => {},\n});\nconst PrimaryActionsContext = React.createContext<{ setPrimary: (k: string) => void }>({ setPrimary: () => {} });\ntype BaseResolvedCtxT = { light: PlainframeUITheme; dark: PlainframeUITheme } | null;\nconst BaseResolvedContext = React.createContext<BaseResolvedCtxT>(null);\n\n/* ───────── public hooks ───────── */\nexport function usePlainframeUITheme(): PlainframeUITheme {\n return useEmotionTheme() as unknown as PlainframeUITheme;\n}\nexport function useColorModeValue(): Mode {\n const s = React.useContext(ModeStoreContext);\n if (!s) throw new Error(\"useColorModeValue must be used within ThemeProvider\");\n return React.useSyncExternalStore(s.subscribe, s.get, s.get);\n}\nexport function useColorMode(): { setMode: (m: Mode) => void; toggleMode: () => void } {\n return useContext(ModeActionsContext);\n}\nexport function usePrimary(): { primary: string; setPrimary: (k: string) => void } {\n const s = React.useContext(PrimaryStoreContext);\n if (!s) throw new Error(\"usePrimary must be used within ThemeProvider\");\n const primary = React.useSyncExternalStore(s.subscribe, s.get, s.get);\n const setPrimary = useContext(PrimaryActionsContext).setPrimary;\n return { primary, setPrimary };\n}\nexport function usePrimitives<T = PlainframeUITheme>(selector?: (t: PlainframeUITheme) => T): T {\n const base = React.useContext(BaseResolvedContext);\n if (!base) throw new Error(\"usePrimitives must be used within ThemeProvider\");\n const mode = useColorModeValue();\n const { primary } = usePrimary();\n const raw = React.useMemo<PlainframeUITheme>(() => {\n const theme = mode === \"light\" ? base.light : base.dark;\n const chosen = (theme.palette as Record<string, Record<string, string>>)[resolveAlias(primary)] ?? theme.palette.primary;\n const onPrim =\n mirrorOnColors(theme.text.onColors)[resolveAlias(primary)] ?? onColorFor(chosen[\"600\"]);\n return {\n ...theme,\n palette: { ...theme.palette, primary: chosen },\n text: {\n ...theme.text,\n onColors: {\n ...mirrorOnColors(theme.text.onColors),\n primary: onPrim,\n [resolveAlias(primary)]: onPrim,\n [primary]: onPrim,\n },\n },\n } as PlainframeUITheme;\n }, [base, mode, primary]);\n return selector ? selector(raw) : (raw as unknown as T);\n}\n\n/* ───────── helpers ───────── */\nfunction mergeTheme(base: PlainframeUITheme, patch?: Partial<PlainframeUITheme>): PlainframeUITheme {\n if (!patch) return base;\n return {\n ...base,\n spacing: { ...base.spacing, ...(patch.spacing ?? {}) },\n radius: { ...base.radius, ...(patch.radius ?? {}) },\n fontSizes: { ...base.fontSizes, ...(patch.fontSizes ?? {}) },\n componentHeights: { ...base.componentHeights, ...(patch.componentHeights ?? {}) },\n fonts: { ...base.fonts, ...(patch.fonts ?? {}) },\n palette: { ...base.palette, ...(patch.palette ?? {}) },\n neutral: patch.neutral ?? base.neutral,\n surface: { ...base.surface, ...(patch.surface ?? {}) },\n text: {\n ...base.text,\n ...(patch.text ?? {}),\n onColors: { ...base.text.onColors, ...(patch.text?.onColors ?? {}) },\n },\n };\n}\nfunction onColorFor(hex: string): string {\n const m = hex.replace(\"#\", \"\");\n const r = parseInt(m.slice(0, 2), 16),\n g = parseInt(m.slice(2, 4), 16),\n b = parseInt(m.slice(4, 6), 16);\n const f = (x: number): number => {\n const s = x / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n };\n const L = 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n return L > 0.53 ? \"#000\" : \"#FFF\";\n}\nconst toCss = (v: string | number): string => (typeof v === \"number\" ? `${v}px` : String(v));\nfunction ensureTag(ref: React.MutableRefObject<HTMLStyleElement | null>, id: string): void {\n if (ref.current) return;\n const el = document.createElement(\"style\");\n el.id = id;\n document.head.appendChild(el);\n ref.current = el;\n}\nfunction selectorFor(scope?: string): string {\n return scope ? `[data-pfui-scope=\"${scope}\"]` : \":root\";\n}\n\nfunction buildVarPairs(theme: PlainframeUITheme, primaryKey: string, mode: Mode): string[] {\n const out: string[] = [];\n const normalize = (v: string): string =>\n v.startsWith(\"var(\") ? v.replace(/^var\\([^,]+,\\s*/, \"\").replace(/\\)\\s*$/, \"\").trim() : v;\n\n // base text/spacing/etc\n out.push(`--pf-font-sans:${normalize(theme.fonts.sans)};`);\n out.push(`--pf-font-mono:${normalize(theme.fonts.mono)};`);\n out.push(`--pf-text-primary:${theme.text.primary};`);\n out.push(`--pf-text-secondary:${theme.text.secondary};`);\n out.push(`--pf-text-muted:${theme.text.muted};`);\n Object.entries(theme.text.onColors).forEach(([k, v]) => out.push(`--pf-text-on-${k}:${v};`));\n Object.entries(theme.spacing).forEach(([k, v]) => out.push(`--pf-space-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.radius).forEach(([k, v]) => out.push(`--pf-radius-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.fontSizes).forEach(([k, v]) => out.push(`--pf-fontSize-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.componentHeights).forEach(([k, v]) => out.push(`--pf-cmph-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.neutral).forEach(([k, v]) => out.push(`--pf-neutral-${k}:${v};`));\n\n // surfaces\n out.push(`--pf-surface-appBg:${theme.surface.appBg};`);\n out.push(`--pf-surface-panelBg:${theme.surface.panelBg};`);\n out.push(`--pf-surface-subtleBg:${theme.surface.subtleBg};`);\n out.push(`--pf-surface-panelHover:${theme.surface.panelHover};`);\n out.push(`--pf-surface-subtleHover:${theme.surface.subtleHover};`);\n out.push(`--pf-surface-overlayBg:${theme.surface.overlayBg};`);\n out.push(`--pf-surface-border:${theme.surface.border};`);\n\n // neutral focus fallbacks\n out.push(`--pf-focus-main:var(--pf-neutral-400);`);\n out.push(mode === \"dark\" ? `--pf-focus-soft:var(--pf-neutral-200);` : `--pf-focus-soft:var(--pf-neutral-300);`);\n\n // palette vars\n Object.entries(theme.palette).forEach(([name, scale]) => {\n Object.entries(scale).forEach(([shade, val]) => {\n out.push(`--pf-palette-${name}-${shade}:${val};`);\n });\n });\n\n // per-palette focus vars\n const focusShade = \"300\";\n Object.keys(theme.palette).forEach((name) => {\n out.push(`--pf-focus-${name}-main: var(--pf-palette-${name}-${focusShade});`);\n out.push(`--pf-focus-${name}-soft: transparent;`);\n });\n\n // primary aliases\n ([\n 0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900,\n ] as const).forEach((s) => out.push(`--pf-primary-${s}:var(--pf-palette-${primaryKey}-${s});`));\n out.push(`--pf-focus-accent-main:var(--pf-primary-300);`);\n out.push(`--pf-focus-accent-soft:transparent;`);\n\n // text-on-primary\n const onPrimary =\n theme.text.onColors[primaryKey] ??\n (() => {\n const ref = (theme.palette as Record<string, Record<string, string>>)[primaryKey]?.[\"600\"] ?? theme.palette.primary[\"600\"];\n const m = ref.replace(\"#\", \"\");\n const r = parseInt(m.slice(0, 2), 16),\n g = parseInt(m.slice(2, 4), 16),\n b = parseInt(m.slice(4, 6), 16);\n const f = (x: number): number => {\n const s = x / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n };\n const L = 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n return L > 0.53 ? \"#000\" : \"#FFF\";\n })();\n out.push(`--pf-text-on-primary:${onPrimary};`);\n\n out.push(`color-scheme:${mode === \"dark\" ? \"dark\" : \"light\"};`);\n return out;\n}\n\nfunction renderVars(theme: PlainframeUITheme, primaryKey: string, mode: Mode): string {\n return buildVarPairs(theme, primaryKey, mode).join(\"\");\n}\n\n/* ───────── provider ───────── */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n theme,\n initialMode = \"light\",\n storageKey = \"pfui:pref\",\n scope,\n}) => {\n const scoped = !!scope;\n const basePrimary = theme?.primaryKey ?? \"primary\";\n\n // stores\n const modeStore = React.useMemo(() => createStore<Mode>(\"light\"), []);\n const primaryStore = React.useMemo(() => createStore<string>(basePrimary), [basePrimary]);\n\n // wrapper + scope info\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const scopeDepthRef = useRef<number>(0);\n const scopeId = useRef<string>(scope ?? \"__root__\");\n React.useLayoutEffect((): void => {\n let depth = 0;\n let node: HTMLElement | null = wrapperRef.current;\n while (node && node !== document.body) {\n if (node.hasAttribute(\"data-pfui-scope\")) depth++;\n node = node.parentElement;\n }\n scopeDepthRef.current = depth;\n }, [scope]);\n\n // base themes\n const lightResolved = useMemo<PlainframeUITheme>(() => {\n const base = mergeTheme(defaultLightTheme, theme);\n const withLight = mergeTheme(base, theme?.light);\n const key = theme?.light?.primaryKey ?? basePrimary;\n const k = resolveAlias(key);\n const selected =\n withLight.palette.primary ?? (withLight.palette as Record<string, Record<string, string>>)[k] ?? withLight.palette.mono;\n const mergedOn = mirrorOnColors({ ...textLight(withLight.neutral).onColors, ...withLight.text.onColors });\n const onPrimary = mergedOn[k] ?? onColorFor(selected[\"600\"]);\n const nextSurface = (theme?.surface || theme?.light?.surface) ? withLight.surface : surfaceFromNeutral(\"light\", withLight.neutral);\n const baseText = (theme?.text || theme?.light?.text) ? withLight.text : textLight(withLight.neutral);\n const nextText = {\n ...baseText,\n onColors: mirrorOnColors({ ...mergedOn, primary: onPrimary, [k]: onPrimary }),\n };\n return {\n ...withLight,\n palette: {\n ...withLight.palette,\n primary: selected as typeof withLight.palette.mono,\n },\n surface: nextSurface,\n text: nextText,\n };\n }, [theme, basePrimary]);\n\n const darkResolved = useMemo<PlainframeUITheme>(() => {\n const base = mergeTheme(defaultDarkTheme, theme);\n const withDark = mergeTheme(base, theme?.dark);\n const key = theme?.dark?.primaryKey ?? basePrimary;\n const k = resolveAlias(key);\n const selected =\n withDark.palette.primary ?? (withDark.palette as Record<string, Record<string, string>>)[k] ?? withDark.palette.mono;\n const mergedOn = mirrorOnColors({ ...textDark(withDark.neutral).onColors, ...withDark.text.onColors });\n const onPrimary = mergedOn[k] ?? onColorFor(selected[\"600\"]);\n const nextSurface = (theme?.surface || theme?.dark?.surface) ? withDark.surface : surfaceFromNeutral(\"dark\", withDark.neutral);\n const baseText = (theme?.text || theme?.dark?.text) ? withDark.text : textDark(withDark.neutral);\n const nextText = {\n ...baseText,\n onColors: mirrorOnColors({ ...mergedOn, primary: onPrimary, [k]: onPrimary }),\n };\n return {\n ...withDark,\n palette: {\n ...withDark.palette,\n primary: selected as typeof withDark.palette.mono,\n },\n surface: nextSurface,\n text: nextText,\n };\n }, [theme, basePrimary]);\n\n // style tags\n const varsRef = useRef<HTMLStyleElement | null>(null);\n const guardRef = useRef<HTMLStyleElement | null>(null);\n const useIsoInsertionEffect: typeof React.useLayoutEffect =\n React.useInsertionEffect || React.useLayoutEffect;\n\n // initial mode (compute once)\n const getInitialMode = (): Mode => {\n if (!scoped) {\n try {\n const saved = JSON.parse(localStorage.getItem(storageKey) || \"null\") as { mode?: Mode } | null;\n if (saved?.mode === \"light\" || saved?.mode === \"dark\") return saved.mode;\n } catch {\n // ignore\n }\n }\n if (initialMode === \"system\") {\n return window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n }\n return (initialMode as Mode) ?? \"light\";\n };\n const initialModeRef = useRef<Mode>(getInitialMode());\n const didInitRef = React.useRef<boolean>(false);\n\n // no-transition guard (scoped)\n const runSwitchGuard = useCallback((): void => {\n const sel = selectorFor(scope);\n ensureTag(guardRef, scoped ? `pfui-guard-${scope}` : \"pfui-guard-root\");\n if (guardRef.current) {\n guardRef.current.textContent = `${sel} *{transition:none!important;animation:none!important}`;\n requestAnimationFrame(() => {\n if (guardRef.current) guardRef.current.textContent = \"\";\n });\n }\n }, [scope, scoped]);\n\n // write var blocks every time theme changes; only set initial mode ONCE\n useIsoInsertionEffect((): void => {\n ensureTag(varsRef, scoped ? `pfui-vars-${scope}` : \"pfui-vars-root\");\n\n const keyLight = theme?.light?.primaryKey ?? theme?.primaryKey ?? basePrimary;\n const keyDark = theme?.dark?.primaryKey ?? theme?.primaryKey ?? basePrimary;\n const sel = selectorFor(scope);\n const lightCss = renderVars(lightResolved, keyLight, \"light\");\n const darkCss = renderVars(darkResolved, keyDark, \"dark\");\n if (varsRef.current) {\n varsRef.current.textContent =\n `${sel}.pf-light{${lightCss}}\\n${sel}.pf-dark{${darkCss}}` +\n (scoped ? `\\n${sel}{background:var(--pf-surface-appBg);color:var(--pf-text-primary);}` : \"\");\n }\n\n if (!didInitRef.current) {\n didInitRef.current = true;\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n host?.classList?.toggle(\"pf-dark\", initialModeRef.current === \"dark\");\n host?.classList?.toggle(\"pf-light\", initialModeRef.current !== \"dark\");\n modeStore.set(initialModeRef.current);\n }\n }, [\n lightResolved,\n darkResolved,\n theme?.primaryKey,\n theme?.light?.primaryKey,\n theme?.dark?.primaryKey,\n scope,\n scoped,\n basePrimary,\n modeStore,\n ]);\n\n /* ───────── ACTIVE SCOPE ROUTING (for portals) ───────── */\n type ActiveScope = { id: string; depth: number; ts: number };\n const setActiveScope = useCallback((): void => {\n (window as unknown as { __pfuiActiveScope?: ActiveScope }).__pfuiActiveScope = {\n id: scopeId.current,\n depth: scopeDepthRef.current,\n ts: Date.now(),\n };\n }, []);\n const attachActiveScopeListeners = useCallback((): (() => void) => {\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n const opts: AddEventListenerOptions = { capture: true };\n const mark = (): void => setActiveScope();\n host?.addEventListener(\"pointerdown\", mark, opts);\n host?.addEventListener(\"mouseenter\", mark, opts);\n host?.addEventListener(\"focusin\", mark, opts);\n host?.addEventListener(\"keydown\", mark, opts);\n return () => {\n host?.removeEventListener(\"pointerdown\", mark, opts);\n host?.removeEventListener(\"mouseenter\", mark, opts);\n host?.removeEventListener(\"focusin\", mark, opts);\n host?.removeEventListener(\"keydown\", mark, opts);\n };\n }, [scoped, setActiveScope]);\n\n const claimIfActiveScope = useCallback(\n (el: HTMLElement): void => {\n const act = (window as unknown as { __pfuiActiveScope?: ActiveScope }).__pfuiActiveScope;\n const fresh = act && Date.now() - act.ts < 1500;\n if (!act || !fresh) return;\n if (act.id !== scopeId.current) return;\n\n const m = modeStore.get();\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n el.style.cssText += `;${cssVars}`;\n el.classList.toggle(\"pf-light\", m === \"light\");\n el.classList.toggle(\"pf-dark\", m === \"dark\");\n el.setAttribute(\"data-pfui-portal-owner\", scopeId.current);\n },\n [modeStore, primaryStore, lightResolved, darkResolved]\n );\n\n const looksLikePortalRoot = (el: HTMLElement): boolean => {\n if (el.getAttribute(\"data-floating-ui-portal\") === \"true\") return true;\n if (el.getAttribute(\"data-radix-portal\") === \"true\") return true;\n if (el.getAttribute(\"data-portal\") === \"true\") return true;\n const role = el.getAttribute(\"role\");\n if (role === \"tooltip\" || role === \"dialog\") return true;\n const cs = window.getComputedStyle(el);\n return cs.position === \"fixed\" || cs.position === \"absolute\";\n };\n\n const watchPortals = useCallback((): (() => void) => {\n const mo = new MutationObserver((recs) => {\n for (const r of recs) {\n r.addedNodes.forEach((n) => {\n if (!(n instanceof HTMLElement)) return;\n if (looksLikePortalRoot(n)) claimIfActiveScope(n);\n n.querySelectorAll<HTMLElement>(\n '[data-floating-ui-portal=\"true\"],[data-radix-portal=\"true\"],[data-portal=\"true\"],[role=\"tooltip\"],[role=\"dialog\"]'\n ).forEach((el) => claimIfActiveScope(el));\n });\n }\n });\n mo.observe(document.body, { childList: true, subtree: true });\n return () => mo.disconnect();\n }, [claimIfActiveScope]);\n\n React.useEffect((): (() => void) => {\n const detachActive = attachActiveScopeListeners();\n const disconnectMO = watchPortals();\n return () => {\n detachActive();\n disconnectMO();\n };\n }, [attachActiveScopeListeners, watchPortals]);\n\n /* ───────── helpers to update BOTH wrapper + portals ───────── */\n const applyVarsToWrapper = useCallback(\n (m: Mode): void => {\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n if (host) {\n host.style.cssText += `;${cssVars}`;\n host.classList.toggle(\"pf-light\", m === \"light\");\n host.classList.toggle(\"pf-dark\", m === \"dark\");\n }\n },\n [scoped, lightResolved, darkResolved, primaryStore]\n );\n\n const applyVarsToOwnedPortals = useCallback(\n (m: Mode): void => {\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n document\n .querySelectorAll<HTMLElement>(`[data-pfui-portal-owner=\"${scopeId.current}\"]`)\n .forEach((el) => {\n el.style.cssText += `;${cssVars}`;\n el.classList.toggle(\"pf-light\", m === \"light\");\n el.classList.toggle(\"pf-dark\", m === \"dark\");\n });\n },\n [lightResolved, darkResolved, primaryStore]\n );\n\n /* ───────── actions ───────── */\n const setMode = useCallback(\n (m: Mode): void => {\n if (modeStore.get() === m) return;\n runSwitchGuard();\n modeStore.set(m);\n applyVarsToWrapper(m);\n applyVarsToOwnedPortals(m);\n\n if (!scoped) {\n try {\n const prev = JSON.parse(localStorage.getItem(storageKey) || \"{}\") as Record<string, unknown>;\n localStorage.setItem(storageKey, JSON.stringify({ ...prev, mode: m }));\n } catch {\n // ignore\n }\n }\n },\n [modeStore, scoped, storageKey, runSwitchGuard, applyVarsToWrapper, applyVarsToOwnedPortals]\n );\n\n const toggleMode = useCallback((): void => setMode(modeStore.get() === \"light\" ? \"dark\" : \"light\"), [setMode, modeStore]);\n\n const setPrimary = useCallback(\n (key: string): void => {\n primaryStore.set(key);\n\n const sel = selectorFor(scope);\n const lightCss = renderVars(lightResolved, key, \"light\");\n const darkCss = renderVars(darkResolved, key, \"dark\");\n if (varsRef.current) {\n varsRef.current.textContent =\n `${sel}.pf-light{${lightCss}}\\n${sel}.pf-dark{${darkCss}}` +\n (scoped ? `\\n${sel}{background:var(--pf-surface-appBg);color:var(--pf-text-primary);}` : \"\");\n }\n\n runSwitchGuard();\n const m = modeStore.get();\n applyVarsToWrapper(m);\n applyVarsToOwnedPortals(m);\n\n if (!scoped) {\n try {\n const prev = JSON.parse(localStorage.getItem(storageKey) || \"{}\") as Record<string, unknown>;\n localStorage.setItem(storageKey, JSON.stringify({ ...prev, primary: key }));\n } catch {\n // ignore\n }\n }\n },\n [lightResolved, darkResolved, scope, scoped, modeStore, primaryStore, runSwitchGuard, applyVarsToWrapper, applyVarsToOwnedPortals]\n );\n\n /* ───────── content ───────── */\n const content = (\n <BaseResolvedContext.Provider value={{ light: lightResolved, dark: darkResolved }}>\n <ModeStoreContext.Provider value={modeStore}>\n <PrimaryStoreContext.Provider value={primaryStore}>\n <ModeActionsContext.Provider value={{ setMode, toggleMode }}>\n <PrimaryActionsContext.Provider value={{ setPrimary }}>\n <EmotionThemeProvider theme={toVarTheme(lightResolved) as unknown}>\n {children}\n </EmotionThemeProvider>\n </PrimaryActionsContext.Provider>\n </ModeActionsContext.Provider>\n </PrimaryStoreContext.Provider>\n </ModeStoreContext.Provider>\n </BaseResolvedContext.Provider>\n );\n\n if (scoped) {\n return (\n <div\n ref={wrapperRef}\n data-pfui-scope={scope}\n style={{ background: \"var(--pf-surface-appBg)\", color: \"var(--pf-text-primary)\" }}\n >\n {content}\n </div>\n );\n }\n return <div ref={wrapperRef}>{content}</div>;\n};\n\nfunction toVarTheme(src: PlainframeUITheme): PlainframeUITheme {\n const mapObj = <V,>(o: Record<string, V>, p: (k: string) => string): Record<string, string> =>\n Object.fromEntries(Object.keys(o).map((k) => [k, p(k)])) as Record<string, string>;\n const spacing = mapObj(src.spacing, (k) => `var(--pf-space-${k})`);\n const radius = mapObj(src.radius, (k) => `var(--pf-radius-${k})`);\n const fontSz = mapObj(src.fontSizes, (k) => `var(--pf-fontSize-${k})`);\n const heights = mapObj(src.componentHeights, (k) => `var(--pf-cmph-${k})`);\n const fonts = { sans: \"var(--pf-font-sans)\", mono: \"var(--pf-font-mono)\" };\n const neutral = mapObj(src.neutral, (k) => `var(--pf-neutral-${k})`);\n\n const palette: Record<string, Record<string, string>> = {};\n Object.keys(src.palette).forEach((name) => {\n palette[name] = {};\n Object.keys((src.palette as Record<string, Record<string, string>>)[name]).forEach((sh) => {\n (palette as Record<string, Record<string, string>>)[name][sh] = `var(--pf-palette-${name}-${sh})`;\n });\n });\n // primary alias map\n palette.primary = Object.fromEntries(\n [\"0\", \"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\"].map((s) => [s, `var(--pf-primary-${s})`])\n );\n\n return {\n ...src,\n spacing: spacing as unknown as PlainframeUITheme[\"spacing\"],\n radius: radius as unknown as PlainframeUITheme[\"radius\"],\n fontSizes: fontSz as unknown as PlainframeUITheme[\"fontSizes\"],\n componentHeights: heights as unknown as PlainframeUITheme[\"componentHeights\"],\n fonts,\n neutral: neutral as unknown as PlainframeUITheme[\"neutral\"],\n palette: palette as unknown as PlainframeUITheme[\"palette\"],\n surface: {\n appBg: \"var(--pf-surface-appBg)\",\n panelBg: \"var(--pf-surface-panelBg)\",\n subtleBg: \"var(--pf-surface-subtleBg)\",\n panelHover: \"var(--pf-surface-panelHover)\",\n subtleHover: \"var(--pf-surface-subtleHover)\",\n overlayBg: \"var(--pf-surface-overlayBg)\",\n border: \"var(--pf-surface-border)\",\n },\n text: {\n primary: \"var(--pf-text-primary)\",\n secondary: \"var(--pf-text-secondary)\",\n muted: \"var(--pf-text-muted)\",\n onColors: Object.fromEntries(\n Object.keys(mirrorOnColors(src.text.onColors)).map((k) => [k, `var(--pf-text-on-${k})`])\n ) as Record<string, string>,\n },\n };\n}\n","/** @jsxImportSource @emotion/react */\nexport type Scale = {\n 0: string; 50: string; 100: string; 200: string; 300: string; 400: string;\n 500: string; 600: string; 700: string; 800: string; 900: string;\n};\n\nexport type PlainframeUITheme = {\n spacing: Record<\"xxs\"|\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\", string|number> & Record<string, string|number>;\n radius: Record<\"xxs\"|\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\"|\"full\", string|number> & Record<string, string|number>;\n fontSizes: Record<\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\"|\"xxl\", string|number> & Record<string, string|number>;\n componentHeights: Record<\"sm\"|\"md\"|\"lg\"|\"border\", string|number> & Record<string, string|number>;\n fonts: { sans: string; mono: string };\n palette: Record<string, Scale>;\n neutral: Scale;\n surface: {\n appBg: string; panelBg: string; subtleBg: string;\n panelHover: string; subtleHover: string; overlayBg: string; border: string;\n };\n text: { primary: string; secondary: string; muted: string; onColors: Record<string, string> };\n};\n\nexport type Mode = \"light\" | \"dark\";\n\nconst spacing: PlainframeUITheme[\"spacing\"] = {\n xxs:\"0.15rem\", xs:\"0.25rem\", sm:\"0.5rem\", md:\"0.75rem\", lg:\"1rem\", xl:\"1.5rem\"\n};\nconst radius: PlainframeUITheme[\"radius\"] = {\n xxs:\"0.3rem\", xs:\"0.4rem\", sm:\"0.6rem\", md:\"0.7rem\", lg:\"1rem\", xl:\"2rem\", full:\"9999px\"\n};\nconst fontSizes: PlainframeUITheme[\"fontSizes\"] = {\n xs:\"10px\", sm:\"12px\", md:\"14px\", lg:\"16px\", xl:\"20px\", xxl:\"32px\"\n};\nconst componentHeights: PlainframeUITheme[\"componentHeights\"] = {\n sm:32, md:36, lg:40, border:\"1px\"\n};\nconst fonts: PlainframeUITheme[\"fonts\"] = {\n sans: '\"Geist\", system-ui, -apple-system, Segoe UI, Roboto, sans-serif',\n mono: '\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace',\n};\n\nconst neutralLight: Scale = {\n 0:\"#ffffff\",50:\"#f9f9f9\",100:\"#f5f5f5\",200:\"#eeeeee\",300:\"#e5e5e5\",\n 400:\"#C6C6C6\",500:\"#b3b3b3\",600:\"#7a7a7a\",700:\"#4a4a4a\",800:\"#2b2b2b\",900:\"#111111\",\n};\nconst neutralDark: Scale = {\n 0:\"#0c0c0c\",50:\"#121212\",100:\"#1a1a1a\",200:\"#222222\",300:\"#2b2b2b\",\n 400:\"#333333\",500:\"#444444\",600:\"#6e6e6e\",700:\"#a6a6a6\",800:\"#e5e5e5\",900:\"#ffffff\",\n};\n\nconst paletteLight: Record<string, Scale> = {\n mono:{0:\"#FFFFFF\",50:\"#FAFAFA\",100:\"#F2F2F2\",200:\"#E6E6E6\",300:\"#D1D1D1\",400:\"#8A8A8A\",500:\"#2A2A2A\",600:\"#1A1A1A\",700:\"#121212\",800:\"#0B0B0B\",900:\"#000000\"},\n danger:{0:\"#FFFFFF\",50:\"#FFF1F1\",100:\"#FFE0E0\",200:\"#FFC2C5\",300:\"#FF9AA6\",400:\"#FF6A7B\",500:\"#EF2F23\",600:\"#E7000B\",700:\"#DB1424\",800:\"#C11225\",900:\"#7A0A18\"},\n success:{0:\"#FFFFFF\",50:\"#EEFFF3\",100:\"#D7FFE8\",200:\"#B9FBD5\",300:\"#8EF5BB\",400:\"#5BEA9A\",500:\"#0FD45D\",600:\"#00C853\",700:\"#109C47\",800:\"#0E8242\",900:\"#064D2B\"},\n warning:{0:\"#FFFFFF\",50:\"#FFF7EB\",100:\"#FFEFC6\",200:\"#FFE094\",300:\"#FFC552\",400:\"#FFB83A\",500:\"#FFA414\",600:\"#FF9F0A\",700:\"#D97500\",800:\"#AF5E00\",900:\"#6E3600\"},\n info:{0:\"#FFFFFF\",50:\"#ECFAFF\",100:\"#D2F2FF\",200:\"#AEE6FF\",300:\"#84D6FF\",400:\"#4BC1FF\",500:\"#2B9FFF\",600:\"#1093FF\",700:\"#0077C0\",800:\"#0066A8\",900:\"#083B61\"},\n amber:{0:\"#FFFFFF\",50:\"#FFF3EA\",100:\"#FFE3D1\",200:\"#FFC7A6\",300:\"#FFAC80\",400:\"#FF874D\",500:\"#FF6C1F\",600:\"#FF5A00\",700:\"#D24500\",800:\"#B63C00\",900:\"#6F2300\"},\n orange:{0:\"#FFFFFF\",50:\"#FFF4EB\",100:\"#FFE6CC\",200:\"#FFCE9E\",300:\"#FFAE66\",400:\"#FF8B33\",500:\"#FF7310\",600:\"#FF6B00\",700:\"#CC4400\",800:\"#AF3F00\",900:\"#6B2400\"},\n yellow:{0:\"#FFFFFF\",50:\"#FFFAE6\",100:\"#FFF2BF\",200:\"#FFE780\",300:\"#FFDB3D\",400:\"#FFD000\",500:\"#FFE03F\",600:\"#FFD60A\",700:\"#B38600\",800:\"#8E6D00\",900:\"#534300\"},\n lime:{0:\"#FFFFFF\",50:\"#F6FFE8\",100:\"#E7FFC2\",200:\"#CCFF83\",300:\"#A8FA3D\",400:\"#8BE11C\",500:\"#87DE10\",600:\"#7ACC00\",700:\"#4A8C00\",800:\"#3B7100\",900:\"#224300\"},\n green:{0:\"#FFFFFF\",50:\"#F0FFF5\",100:\"#DBFFE9\",200:\"#BDF7CF\",300:\"#8FE7A8\",400:\"#5BD57D\",500:\"#1DAE52\",600:\"#16A34A\",700:\"#168A40\",800:\"#136A34\",900:\"#0B3D1F\"},\n teal:{0:\"#FFFFFF\",50:\"#EDFFFB\",100:\"#D2FFF4\",200:\"#A6FAEA\",300:\"#74EEDC\",400:\"#41DECB\",500:\"#00CFAA\",600:\"#00BFA5\",700:\"#0C8C7F\",800:\"#0B786C\",900:\"#084741\"},\n cyan:{0:\"#FFFFFF\",50:\"#EFFFFF\",100:\"#D4FCFF\",200:\"#AFF5FD\",300:\"#7FE8F6\",400:\"#45D3EB\",500:\"#09C6E7\",600:\"#00B8D9\",700:\"#0A7C92\",800:\"#0B6E81\",900:\"#0A4250\"},\n blue:{0:\"#FFFFFF\",50:\"#EFF6FF\",100:\"#DBE8FF\",200:\"#B8D3FF\",300:\"#90BAFF\",400:\"#5E97FF\",500:\"#406FFF\",600:\"#2F66FF\",700:\"#2452DE\",800:\"#2248C8\",900:\"#172C80\"},\n indigo:{0:\"#FFFFFF\",50:\"#EEF2FF\",100:\"#E0E6FF\",200:\"#C5D0FF\",300:\"#A3B5FF\",400:\"#879CFF\",500:\"#707AF5\",600:\"#5A63F3\",700:\"#4951DA\",800:\"#3E40BF\",900:\"#2A2A82\"},\n purple:{0:\"#FFFFFF\",50:\"#F4F0FF\",100:\"#E8DBFF\",200:\"#D2B8FF\",300:\"#B590FF\",400:\"#996AF5\",500:\"#7A52F1\",600:\"#6B3CF0\",700:\"#592FBE\",800:\"#4D27A3\",900:\"#2F1767\"},\n magenta:{0:\"#FFFFFF\",50:\"#FFF0FE\",100:\"#FCE0FF\",200:\"#F7BCFF\",300:\"#F393FD\",400:\"#E85FF8\",500:\"#C645D6\",600:\"#C026D3\",700:\"#951CAB\",800:\"#801790\",900:\"#4C0C59\"},\n pink:{0:\"#FFFFFF\",50:\"#FFF0F7\",100:\"#FFE0F0\",200:\"#FFC0E2\",300:\"#FF9ACE\",400:\"#FF6CB3\",500:\"#ED5CA2\",600:\"#EC4899\",700:\"#AB236F\",800:\"#96205D\",900:\"#5A1238\"},\n rose:{0:\"#FFFFFF\",50:\"#FFF0F3\",100:\"#FFE1E9\",200:\"#FFC1D3\",300:\"#FF98B8\",400:\"#FF6B98\",500:\"#EE4278\",600:\"#E52E69\",700:\"#B52156\",800:\"#991A43\",900:\"#5B0F28\"},\n};\n\nconst paletteDark: Record<string, Scale> = {\n mono:{0:\"#0B0B0C\",50:\"#0F0F10\",100:\"#151515\",200:\"#1B1B1C\",300:\"#232323\",400:\"#DADADA\",500:\"#E0E0E0\",600:\"#EDEDED\",700:\"#F5F5F5\",800:\"#FCFCFC\",900:\"#FFFFFF\"},\n danger:{0:\"#17080A\",50:\"#1E0B0D\",100:\"#290F11\",200:\"#3A1416\",300:\"#4B191B\",400:\"#6A1D21\",500:\"#FF3B30\",600:\"#E7000B\",700:\"#FF2A20\",800:\"#FF463D\",900:\"#FFD9DB\"},\n success:{0:\"#06150B\",50:\"#0A1B10\",100:\"#0E2416\",200:\"#11301C\",300:\"#143B21\",400:\"#16502C\",500:\"#22D85A\",600:\"#00C853\",700:\"#2FE976\",800:\"#7FF1AE\",900:\"#D6FADF\"},\n warning:{0:\"#150E05\",50:\"#1C1408\",100:\"#261B0B\",200:\"#31240E\",300:\"#3D2C12\",400:\"#583C16\",500:\"#FFA61A\",600:\"#FF9F0A\",700:\"#FFB347\",800:\"#FFD089\",900:\"#FFF0C9\"},\n info:{0:\"#07131E\",50:\"#0A1926\",100:\"#0E2233\",200:\"#112C44\",300:\"#143654\",400:\"#184A78\",500:\"#1C9CFF\",600:\"#1093FF\",700:\"#4FB2FF\",800:\"#9DD2FF\",900:\"#D8ECFF\"},\n amber:{0:\"#150D07\",50:\"#1C120A\",100:\"#26180E\",200:\"#311F12\",300:\"#3E2716\",400:\"#59361C\",500:\"#FF6A1E\",600:\"#FF5A00\",700:\"#FF8747\",800:\"#FFB98A\",900:\"#FFE2CC\"},\n orange:{0:\"#140D07\",50:\"#1B120A\",100:\"#25190D\",200:\"#302010\",300:\"#3B2813\",400:\"#553817\",500:\"#FF7F22\",600:\"#FF6B00\",700:\"#FF9247\",800:\"#FFBE8A\",900:\"#FFE1CC\"},\n yellow:{0:\"#141303\",50:\"#1B1906\",100:\"#25210A\",200:\"#2F2A0D\",300:\"#383212\",400:\"#524717\",500:\"#FFE042\",600:\"#FFD60A\",700:\"#FFE457\",800:\"#FFF194\",900:\"#FFF8CF\"},\n lime:{0:\"#0C1306\",50:\"#101A08\",100:\"#14210B\",200:\"#1A2B0F\",300:\"#203614\",400:\"#2A4A1A\",500:\"#86E21A\",600:\"#7ACC00\",700:\"#9EEA3B\",800:\"#C9F57F\",900:\"#EAFCC4\"},\n green:{0:\"#07140C\",50:\"#0B1B11\",100:\"#0E2416\",200:\"#112C1B\",300:\"#143722\",400:\"#17502F\",500:\"#20BF55\",600:\"#16A34A\",700:\"#39C964\",800:\"#86E5A5\",900:\"#D4F6E1\"},\n teal:{0:\"#081815\",50:\"#0B1F1C\",100:\"#0F2824\",200:\"#13322E\",300:\"#173E39\",400:\"#14584F\",500:\"#14CEBD\",600:\"#00BFA5\",700:\"#2CD6C6\",800:\"#7FEAE3\",900:\"#CFF7F3\"},\n cyan:{0:\"#07171C\",50:\"#0A1E24\",100:\"#0E2830\",200:\"#11333D\",300:\"#153E4A\",400:\"#165B6A\",500:\"#20CBE6\",600:\"#00B8D9\",700:\"#3FD2E9\",800:\"#93EBF6\",900:\"#D5F7FC\"},\n blue:{0:\"#081421\",50:\"#0A1829\",100:\"#0E2139\",200:\"#112A4B\",300:\"#153660\",400:\"#184A86\",500:\"#4A78FF\",600:\"#2F66FF\",700:\"#5A8AFF\",800:\"#A7C3FF\",900:\"#D9E7FF\"},\n indigo:{0:\"#0B1023\",50:\"#0E162C\",100:\"#141F3F\",200:\"#1C2A56\",300:\"#24366E\",400:\"#2F4894\",500:\"#707CF6\",600:\"#5A63F3\",700:\"#7D86FF\",800:\"#B5C0FF\",900:\"#E0E6FF\"},\n purple:{0:\"#100B1F\",50:\"#130E26\",100:\"#1A1638\",200:\"#231F4E\",300:\"#2E2A67\",400:\"#3C388D\",500:\"#8256F3\",600:\"#6B3CF0\",700:\"#8B66FA\",800:\"#C1B0FF\",900:\"#E4DCFF\"},\n magenta:{0:\"#160A18\",50:\"#1C0C21\",100:\"#25102E\",200:\"#321544\",300:\"#421A5C\",400:\"#58247C\",500:\"#CB44DB\",600:\"#C026D3\",700:\"#D960EB\",800:\"#F0B5FA\",900:\"#F9E4FE\"},\n pink:{0:\"#170911\",50:\"#1D0C18\",100:\"#271220\",200:\"#371830\",300:\"#462042\",400:\"#622C5C\",500:\"#F067AE\",600:\"#EC4899\",700:\"#F679BB\",800:\"#FFC2E1\",900:\"#FFE6F3\"},\n rose:{0:\"#17090E\",50:\"#1F0C13\",100:\"#2A121B\",200:\"#3A1B28\",300:\"#4B2636\",400:\"#673449\",500:\"#EE457B\",600:\"#E52E69\",700:\"#FF558A\",800:\"#FFA9C6\",900:\"#FFE0EA\"},\n};\n\nfunction withAliases(p: Record<string, Scale>): Record<string, Scale> {\n return {\n ...p,\n red: p.danger,\n error: p.danger,\n green: p.success,\n success: p.success,\n orange: p.orange,\n amber: p.amber,\n yellow: p.yellow,\n lime: p.lime,\n teal: p.teal,\n cyan: p.cyan,\n blue: p.blue,\n indigo: p.indigo,\n purple: p.purple,\n violet: p.purple,\n magenta: p.magenta,\n fuchsia: p.magenta,\n pink: p.pink,\n rose: p.rose,\n gray: p.mono,\n grey: p.mono,\n neutral: p.mono,\n };\n}\n\nexport const surfaceFromNeutral = (mode: Mode, n: Scale): PlainframeUITheme[\"surface\"] =>\n mode === \"light\"\n ? {\n appBg: n[0], panelBg: n[0], subtleBg: n[100],\n panelHover: n[50], subtleHover: n[200],\n overlayBg: \"linear-gradient(rgba(0,0,0,.15),rgba(0,0,0,.525))\",\n border: n[300],\n }\n : {\n appBg: n[0], panelBg: n[0], subtleBg: n[50],\n panelHover: n[50], subtleHover: n[100],\n overlayBg: \"linear-gradient(rgba(0,0,0,.35),rgba(0,0,0,.75))\",\n border: n[200],\n };\n\nexport const textLight = (n: Scale): PlainframeUITheme[\"text\"] => ({\n primary: n[900], secondary: n[600], muted: n[500], onColors: {} as Record<string, string>,\n});\nexport const textDark = (n: Scale): PlainframeUITheme[\"text\"] => ({\n primary: n[900], secondary: n[700], muted: n[600], onColors: {} as Record<string, string>,\n});\n\nconst colorKeys: readonly string[] = [\n \"danger\",\"success\",\"warning\",\"info\",\"amber\",\"orange\",\"yellow\",\"lime\",\"green\",\"teal\",\"cyan\",\"blue\",\"indigo\",\"purple\",\"magenta\",\"pink\",\"rose\"\n];\nfunction makeOnColors(defaults: Record<string, string>): Record<string, string> {\n const acc: Record<string, string> = {};\n for (const k of colorKeys) acc[k] = defaults[k] ?? \"#FFFFFF\";\n return acc;\n}\n\nexport const defaultLightTheme: PlainframeUITheme = {\n spacing,\n radius,\n fontSizes,\n componentHeights,\n fonts,\n neutral: neutralLight,\n palette: { ...withAliases(paletteLight), primary: paletteLight.mono as Scale },\n surface: surfaceFromNeutral(\"light\", neutralLight),\n text: (() => {\n const base = textLight(neutralLight);\n return {\n ...base,\n onColors: { primary: \"#FFFFFF\", ...makeOnColors({ yellow: \"#000000\" }) },\n };\n })(),\n};\n\nexport const defaultDarkTheme: PlainframeUITheme = {\n spacing,\n radius,\n fontSizes,\n componentHeights,\n fonts,\n neutral: neutralDark,\n palette: { ...withAliases(paletteDark), primary: paletteDark.mono as Scale },\n surface: surfaceFromNeutral(\"dark\", neutralDark),\n text: (() => {\n const base = textDark(neutralDark);\n return {\n ...base,\n onColors: { primary: \"#000000\", ...makeOnColors({ yellow: \"#000000\", lime: \"#000000\" }) },\n };\n })(),\n};\n\ndeclare module \"@emotion/react\" {\n interface Theme extends PlainframeUITheme {}\n}\n","/** @jsxImportSource @emotion/react */\nimport { css, type SerializedStyles } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype FocusMode = \"always\" | \"visible\" | \"none\";\n\nexport type FocusOpts = {\n color?: string; // \"neutral\" | \"primary\" | any palette key\n outlineWidth?: number;\n haloWidth?: number;\n offset?: number;\n enabled?: boolean;\n disabled?: boolean;\n mode?: FocusMode; // \"visible\" is default focus-visible, \"always\" uses :focus\n};\n\nconst pickScaleKey = (theme: any, key?: string): string => {\n const pal = theme?.palette ?? {};\n if (!key || key === \"neutral\") return \"neutral\";\n return pal[key] ? key : \"neutral\";\n};\n\nconst pickFocusColors = (theme: any, colorKey?: string): { soft: string; main: string } => {\n const key = pickScaleKey(theme, colorKey);\n\n if (key === \"neutral\") {\n return { soft: \"var(--pf-focus-soft)\", main: \"var(--pf-focus-main)\" };\n }\n if (colorKey === \"primary\") {\n // Accent follows current primary (theme provider writes these vars instantly)\n return { soft: \"var(--pf-focus-accent-soft)\", main: \"var(--pf-focus-accent-main)\" };\n }\n // per-palette focus vars emitted by ThemeProvider.buildVarPairs\n return {\n soft: `var(--pf-focus-${key}-soft, transparent)`,\n main: `var(--pf-focus-${key}-main)`,\n };\n};\n\nexport function useFocusRing(): (opts?: FocusOpts) => SerializedStyles {\n const theme = usePlainframeUITheme();\n\n return (opts?: FocusOpts) => {\n const enabled = (opts?.enabled ?? true) && !opts?.disabled;\n if (!enabled || opts?.mode === \"none\") return css({});\n\n const key = pickScaleKey(theme, opts?.color);\n const { soft, main } = pickFocusColors(theme, opts?.color);\n\n const outlineW =\n opts?.outlineWidth ?? (key === \"primary\" || key === \"danger\" ? 3.5 : 1.5);\n const haloW = opts?.haloWidth ?? 3;\n const offset =\n opts?.offset ?? (key === \"primary\" || key === \"danger\" ? -1.5 : -outlineW);\n\n const focusSel = opts?.mode === \"always\" ? \"&:focus\" : \"&:focus-visible\";\n\n const base: Record<string, any> = {\n outline: \"1px solid transparent\",\n boxShadow: \"0 0 0 0 transparent\",\n outlineOffset: offset,\n transition:\n \"box-shadow .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n \":root.pf-mode-switching &\": { transition: \"none !important\" },\n \"&[disabled], &[aria-disabled='true'], &[data-disabled='true']\": {\n outline: \"0 !important\",\n boxShadow: \"none !important\",\n outlineOffset: 0,\n },\n };\n\n base[focusSel] = {\n boxShadow: `0 0 0 ${haloW}px ${soft}`,\n outline: `${outlineW}px solid ${main}`,\n outlineOffset: offset,\n zIndex: 10000,\n };\n\n return css(base);\n };\n}\n\nexport function useFocusWithinRing(): (opts?: FocusOpts) => SerializedStyles {\n const theme = usePlainframeUITheme();\n\n return (opts?: FocusOpts) => {\n const enabled = (opts?.enabled ?? true) && !opts?.disabled;\n if (!enabled || opts?.mode === \"none\") return css({});\n\n const { soft, main } = pickFocusColors(theme, opts?.color);\n const outlineW = opts?.outlineWidth ?? 1.5;\n const haloW = opts?.haloWidth ?? 3;\n const offset = opts?.offset ?? -outlineW;\n\n const withinSel = opts?.mode === \"always\" ? \"&:focus-within\" : \"&:has(:focus-visible)\";\n\n const base: Record<string, any> = {\n outline: \"1.5px solid transparent\",\n boxShadow: \"0 0 0 0 transparent\",\n outlineOffset: offset,\n position: \"relative\",\n transition:\n \"box-shadow .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n \":root.pf-mode-switching &\": { transition: \"none !important\" },\n \"&[disabled], &[aria-disabled='true'], &[data-disabled='true']\": {\n outline: \"0 !important\",\n boxShadow: \"none !important\",\n outlineOffset: 0,\n },\n };\n\n base[withinSel] = {\n boxShadow: `0 0 0 ${haloW}px ${soft}`,\n outline: `${outlineW}px solid ${main}`,\n outlineOffset: offset,\n zIndex: 1000,\n };\n\n return css(base);\n };\n}\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { ChevronDown } from \"lucide-react\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionSummaryProps = WithCss & {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent) => void;\n expanded?: boolean;\n disabled?: boolean;\n className?: string;\n noExpandIcon?: boolean;\n expandIconPosition?: \"left\" | \"right\";\n};\n\nexport const AccordionSummary: React.ForwardRefExoticComponent<\n AccordionSummaryProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AccordionSummaryProps>(\n (\n {\n children,\n expandIcon,\n onClick,\n expanded,\n disabled,\n className,\n noExpandIcon,\n expandIconPosition = \"right\",\n css: userCss,\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n\n const fontSize = theme.fontSizes.md;\n const iconSize = 20;\n const gap = 10;\n const paddingX = theme.spacing.lg;\n const paddingY = theme.spacing.md;\n\n const rowH = Number(theme.componentHeights?.md);\n const N = theme.neutral;\n const T = theme.text;\n\n const iconColor = disabled ? (T.secondary as string) : theme.text.secondary;\n\n const baseCss = css({\n display: \"flex\",\n alignItems: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n outline: \"none\",\n userSelect: \"none\",\n fontWeight: 500,\n minHeight: rowH,\n padding: `${paddingY} ${paddingX}`,\n gap,\n fontSize,\n color: disabled ? N[500] : T.primary,\n });\n\n const contentCss = css({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n });\n\n const leftIconCss = css({ marginRight: 8, marginLeft: -4, lineHeight: 0 });\n const rightIconCss = css({ marginLeft: 14, marginRight: -4, lineHeight: 0 });\n const chevronCss = css({\n transition: \"transform 0.3s cubic-bezier(.6,1.3,.5,1)\",\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n });\n\n return (\n <div\n ref={ref}\n role=\"button\"\n aria-expanded={!!expanded}\n aria-disabled={disabled || undefined}\n tabIndex={-1}\n className={[\"plainframe-ui-accordion-summary\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[baseCss, userCss]}\n onClick={disabled ? undefined : onClick}\n onKeyDown={e => {\n if (!disabled && (e.key === \" \" || e.key === \"Enter\")) {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent);\n }\n }}\n >\n {!noExpandIcon && expandIconPosition === \"left\" && (\n <span\n className=\"plainframe-ui-accordion-expander-left\"\n css={[leftIconCss, chevronCss]}\n >\n {expandIcon ?? (\n <ChevronDown\n strokeWidth={2.125}\n css={{ width: iconSize, height: iconSize }}\n color={iconColor}\n />\n )}\n </span>\n )}\n\n <span className=\"plainframe-ui-accordion-content\" css={contentCss}>\n {children}\n </span>\n\n {!noExpandIcon && expandIconPosition === \"right\" && (\n <span\n className=\"plainframe-ui-accordion-expander-right\"\n css={[rightIconCss, chevronCss]}\n >\n {expandIcon ?? (\n <ChevronDown\n strokeWidth={2.125}\n css={{ width: iconSize, height: iconSize }}\n color={iconColor}\n />\n )}\n </span>\n )}\n </div>\n );\n }\n);\n\n(AccordionSummary as unknown as { __PFUI_SLOT: string }).__PFUI_SLOT = \"AccordionSummary\";\nAccordionSummary.displayName = \"AccordionSummary\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionDetailsProps = {\n children?: React.ReactNode;\n className?: string;\n} & WithCss;\n\nexport const AccordionDetails: React.FC<AccordionDetailsProps> = ({\n children,\n className,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n\n const fontSize = theme.fontSizes.md;\n const paddingX = theme.spacing.lg;\n const paddingY = \"0.15rem\";\n const paddingBottom = theme.spacing.md;\n\n const baseCss = css({\n padding: `${paddingY} ${paddingX} ${paddingBottom} ${paddingX}`,\n fontSize,\n boxSizing: \"border-box\",\n minHeight: 0,\n });\n\n return (\n <div\n className={[\"plainframe-ui-accordion-details\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[baseCss, userCss]}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n};\n\n(AccordionDetails as unknown as { __PFUI_SLOT: string }).__PFUI_SLOT = \"AccordionDetails\";\nAccordionDetails.displayName = \"AccordionDetails\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, cloneElement, isValidElement } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype AccordionGroupProps = WithCssProp & {\n children: React.ReactNode;\n attached?: boolean;\n variant?: Variant;\n exclusive?: boolean;\n expandedIndex?: number | null;\n defaultExpandedIndex?: number | null;\n onExpandedIndexChange?: (index: number | null) => void;\n disabled?: boolean;\n width?: number | string;\n className?: string;\n role?: React.AriaRole;\n};\n\ntype AccordionLikeProps = {\n variant?: Variant;\n expanded?: boolean;\n defaultExpanded?: boolean;\n onChange?: (expanded: boolean) => void;\n disabled?: boolean;\n width?: number | string;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst isEl = (n: unknown): n is React.ReactElement => isValidElement(n);\nconst nameOf = (n: unknown) =>\n isEl(n)\n ? (n.type as { displayName?: string; name?: string })?.displayName ||\n (n.type as { name?: string })?.name\n : undefined;\n\nconst isAccordion = (n: unknown): n is React.ReactElement<AccordionLikeProps> =>\n nameOf(n) === \"Accordion\";\n\nconst toLen = (v: number | string | undefined) =>\n typeof v === \"number\" ? `${v}px` : v;\n\nconst toPx = (v: number | string | undefined, fallback = 1) => {\n if (v == null) return `${fallback}px`;\n if (typeof v === \"number\") return `${v}px`;\n return /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v;\n};\n\nexport const AccordionGroup: React.FC<AccordionGroupProps> = ({\n children,\n attached = false,\n variant,\n exclusive = false,\n expandedIndex,\n defaultExpandedIndex,\n onExpandedIndexChange,\n disabled = false,\n width,\n className,\n role = \"group\",\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const nodes = Children.toArray(children);\n const accs = nodes.filter(isAccordion) as React.ReactElement<AccordionLikeProps>[];\n const count = accs.length;\n\n const isControlled = exclusive && expandedIndex !== undefined;\n const [internalIndex, setInternalIndex] = React.useState<number | null>(() => {\n if (!exclusive) return null;\n if (defaultExpandedIndex !== undefined) return defaultExpandedIndex;\n for (let i = 0; i < accs.length; i++) {\n const p = accs[i].props;\n if (p.expanded || p.defaultExpanded) return i;\n }\n return null;\n });\n const activeIndex = exclusive ? (isControlled ? expandedIndex ?? null : internalIndex) : null;\n\n const bw = toPx(theme.componentHeights?.border, 1);\n const borderColor = theme.surface.border;\n const radius = theme.radius.md;\n\n const forcedVariant = variant;\n const isOutlined = forcedVariant === \"outlined\";\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n width: width != null ? toLen(width) : \"auto\",\n gap: attached ? 0 : theme.spacing.sm,\n border: attached && isOutlined ? `${bw} solid ${borderColor}` : \"none\",\n borderRadius: attached && isOutlined ? radius : undefined,\n background: attached && isOutlined ? theme.surface.panelBg : \"transparent\",\n overflow: attached && isOutlined ? \"hidden\" : \"visible\",\n });\n\n let logical = 0;\n const out: React.ReactNode[] = [];\n\n nodes.forEach((node, i) => {\n if (!isAccordion(node)) {\n out.push(node);\n return;\n }\n\n const props = node.props as AccordionLikeProps;\n const idx = logical++;\n const isFirst = idx === 0;\n const isLast = idx === count - 1;\n\n const nextVariant: Variant | undefined = forcedVariant ?? props.variant;\n\n const roundCss = attached\n ? css({\n width: \"100%\",\n marginBottom: 0,\n borderTopLeftRadius: isFirst ? radius : 0,\n borderTopRightRadius: isFirst ? radius : 0,\n borderBottomLeftRadius: isLast ? radius : 0,\n borderBottomRightRadius: isLast ? radius : 0,\n })\n : css({ width: \"100%\", marginBottom: 0 });\n\n const separatorCss =\n !isFirst && count > 1 && attached\n ? css({\n borderTop: `${bw} solid ${borderColor}`,\n })\n : null;\n\n const killChildOutline =\n isOutlined\n ? css({\n borderLeft: \"0 !important\",\n borderRight: \"0 !important\",\n borderBottom: \"0 !important\",\n outline: \"0 !important\",\n })\n : null;\n\n const injected: Partial<AccordionLikeProps> = {\n variant: nextVariant,\n disabled: disabled || !!props.disabled,\n width: \"100%\",\n css: [props.css, roundCss, killChildOutline, separatorCss],\n className: [props.className, \"plainframe-ui-accordion-group-item\"].filter(Boolean).join(\" \"),\n };\n\n if (exclusive) {\n const userOnChange = props.onChange;\n const active = activeIndex === idx;\n injected.expanded = active;\n injected.defaultExpanded = undefined;\n injected.onChange = (next) => {\n const nextIdx = next ? idx : null;\n if (!isControlled) setInternalIndex(nextIdx);\n onExpandedIndexChange?.(nextIdx);\n userOnChange?.(next);\n };\n }\n\n out.push(\n cloneElement(node, {\n ...props,\n ...injected,\n key: node?.key ?? i,\n })\n );\n });\n\n return (\n <div\n role={role}\n aria-orientation=\"vertical\"\n data-attached={attached || undefined}\n data-exclusive={exclusive || undefined}\n className={[\"plainframe-ui-accordion-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n >\n {out}\n </div>\n );\n};\n\nAccordionGroup.displayName = \"AccordionGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype WithCss = { css?: Interpolation<Theme> };\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\ntype VerticalAlign = \"top\" | \"center\" | \"bottom\";\ntype HorizontalAlign = \"left\" | \"center\" | \"right\";\ntype SpaceToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nfunction resolvePadding(\n padding: ActionBarProps[\"padding\"],\n theme: { spacing?: Record<string, number | string>; space?: Record<string, number | string> }\n) {\n if (padding == null) return undefined;\n if (typeof padding === \"number\") return `${padding}px`;\n if (typeof padding === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"].includes(padding)) {\n const val =\n (theme.spacing && theme.spacing[padding]) ??\n (theme.space && theme.space[padding]);\n return toLen(val ?? padding);\n }\n return padding;\n }\n return undefined;\n}\n\nfunction resolveRadius(\n radius: ActionBarProps[\"radius\"],\n theme: { radius?: Record<string, number | string>; radii?: Record<string, number | string> }\n) {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && theme.radius[radius]) ||\n (theme.radii && theme.radii[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n}\n\nexport type ActionBarAnchorOrigin = {\n vertical?: \"top\" | \"bottom\" | \"center\";\n horizontal?: \"left\" | \"right\" | \"center\";\n};\n\nexport type ActionBarProps = WithCss & {\n children: React.ReactNode;\n\n anchorOrigin?: ActionBarAnchorOrigin;\n\n padding?: number | string | SpaceToken;\n radius?: number | string | RadiusToken;\n gap?: number | string;\n offset?: number | string;\n offsetX?: number | string;\n offsetY?: number | string;\n shadow?: boolean;\n width?: number | string;\n height?: number | string;\n open?: boolean;\n unstyled?: boolean;\n containerCss?: Interpolation<Theme>;\n containerClassName?: string;\n className?: string;\n};\n\nexport const ActionBar: React.FC<ActionBarProps> = ({\n children,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n padding,\n radius,\n gap,\n offset,\n offsetX,\n offsetY,\n shadow = true,\n width,\n height,\n open = true,\n unstyled = false,\n css: userCss,\n className,\n containerCss,\n containerClassName,\n}) => {\n const theme = usePlainframeUITheme();\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el) return;\n if (!open) {\n if (el.contains(document.activeElement)) (document.activeElement as HTMLElement | null)?.blur?.();\n el.setAttribute(\"inert\", \"\");\n el.setAttribute(\"aria-hidden\", \"true\");\n } else {\n el.removeAttribute(\"inert\");\n el.removeAttribute(\"aria-hidden\");\n }\n }, [open]);\n\n const hAlign: HorizontalAlign = anchorOrigin.horizontal ?? \"center\";\n const vAlign: VerticalAlign = anchorOrigin.vertical ?? \"bottom\";\n\n const borderToken = theme.componentHeights?.border ?? 1;\n const borderWidth = typeof borderToken === \"number\" ? `${borderToken}px` : borderToken;\n const surfaceBg = theme.surface.panelBg as string;\n const surfaceBorder = `${borderWidth} solid ${theme.surface.border}`;\n\n const offXVal = offsetX ?? offset ?? theme.spacing.lg;\n const offYVal = offsetY ?? offset ?? theme.spacing.lg;\n\n const containerStyles = css({\n position: \"fixed\",\n insetInline: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n justifyContent: hAlign === \"left\" ? \"flex-start\" : hAlign === \"right\" ? \"flex-end\" : \"center\",\n alignItems: vAlign === \"top\" ? \"flex-start\" : vAlign === \"bottom\" ? \"flex-end\" : \"center\",\n width: \"100%\",\n zIndex: 1000,\n pointerEvents: \"none\",\n });\n\n let closedTransform: string;\n let openTransform: string;\n\n if (hAlign === \"left\") {\n closedTransform = \"translateX(-100%) scale(0.98)\";\n openTransform = \"translateX(0) scale(1)\";\n } else if (hAlign === \"right\") {\n closedTransform = \"translateX(100%) scale(0.98)\";\n openTransform = \"translateX(0) scale(1)\";\n } else {\n if (vAlign === \"top\") {\n closedTransform = \"translateY(-100%) scale(0.98)\";\n openTransform = \"translateY(0) scale(1)\";\n } else if (vAlign === \"bottom\") {\n closedTransform = \"translateY(100%) scale(0.98)\";\n openTransform = \"translateY(0) scale(1)\";\n } else {\n closedTransform = \"scale(0.95)\";\n openTransform = \"scale(1)\";\n }\n }\n\n const resolvedPadding = resolvePadding(padding, theme) ?? theme.spacing.sm;\n const resolvedRadius = resolveRadius(radius, theme) ?? (theme.radius.lg as string);\n\n const contentStyles = css({\n marginInline: toLen(offXVal),\n marginTop: vAlign === \"top\" || vAlign === \"center\" ? toLen(offYVal) : undefined,\n marginBottom: vAlign === \"bottom\" || vAlign === \"center\" ? toLen(offYVal) : undefined,\n\n padding: unstyled ? undefined : resolvedPadding,\n background: unstyled ? \"transparent\" : surfaceBg,\n border: unstyled ? \"none\" : surfaceBorder,\n borderRadius: unstyled ? 0 : resolvedRadius,\n boxShadow: unstyled || !shadow ? \"none\" : \"0 20px 40px rgba(0,0,0,.08), 0 6px 14px rgba(0,0,0,.06)\",\n\n display: \"flex\",\n alignItems: \"center\",\n gap: unstyled ? 0 : gap ?? theme.spacing.xs,\n width: width ? toLen(width) : \"auto\",\n height: height ? toLen(height) : \"auto\",\n maxWidth: `calc(100% - (${toLen(offXVal) || \"24px\"} * 2))`,\n\n pointerEvents: open ? \"auto\" : \"none\",\n transition: \"transform 0.25s ease, opacity 0.25s ease\",\n transform: open ? openTransform : closedTransform,\n opacity: open ? 1 : 0,\n\n \"& > .plainframe-ui-textfield, & > .plainframe-ui-textarea, & > .plainframe-ui-codefield\": {\n flex: \"1 1 auto\",\n minWidth: 0,\n width: \"auto\",\n maxWidth: \"none\",\n },\n \"& > .plainframe-ui-textfield .plainframe-ui-textfield-surface, & > .plainframe-ui-textarea .plainframe-ui-textarea-surface\": {\n width: \"100%\",\n },\n \"& > *:not(.plainframe-ui-textfield):not(.plainframe-ui-textarea):not(.plainframe-ui-codefield)\": {\n flex: \"0 0 auto\",\n },\n });\n\n return (\n <div\n className={[\"plainframe-ui-action-bar-container\", containerClassName || \"\"].join(\" \").trim()}\n css={[containerStyles, containerCss]}\n >\n <div\n ref={contentRef}\n className={[\"plainframe-ui-action-bar\", className || \"\"].join(\" \").trim()}\n css={[contentStyles, userCss]}\n >\n {children}\n </div>\n </div>\n );\n};\n\nActionBar.displayName = \"ActionBar\";\n","/** @jsxImportSource @emotion/react */\nimport React, { createContext, useContext, forwardRef, useMemo } from \"react\";\nimport { css, type Interpolation } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { CircleAlert, CircleCheckBig, Info, TriangleAlert, X } from \"lucide-react\";\nimport type { Theme } from \"@emotion/react\";\n\ntype AlertVariant = \"filled\" | \"outlined\" | \"soft\" | \"ghost\";\ntype AlertIntent = \"danger\" | \"warning\" | \"info\" | \"success\" | \"neutral\";\n\nexport type AlertProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n intent?: AlertIntent;\n variant?: AlertVariant;\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n onClose?: () => void;\n width?: string | number;\n size?: \"sm\" | \"md\" | \"lg\";\n css?: Interpolation<Theme>;\n className?: string;\n};\n\ntype SubProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\ntype SizeScale = {\n paddingX: number | string;\n paddingY: number | string;\n gap: number | string;\n radius: number | string;\n fontSize: number | string;\n titleWeight: number;\n iconSize: number;\n};\n\ntype AlertCtxT = {\n fg: string;\n iconColor: string;\n s: SizeScale;\n};\n\nconst AlertCtx = createContext<AlertCtxT | null>(null);\nconst useAlertCtx = (): AlertCtxT => {\n const v = useContext(AlertCtx);\n if (!v) throw new Error(\"AlertTitle and AlertDescription must be used inside <Alert>.\");\n return v;\n};\n\nexport const Alert: React.ForwardRefExoticComponent<\n AlertProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n intent = \"neutral\" as AlertIntent,\n variant = \"soft\",\n icon,\n actionButton,\n onClose,\n width = \"100%\",\n size = \"md\",\n className,\n css: userCss,\n children,\n ...rest\n },\n ref\n): React.ReactElement {\n const theme = usePlainframeUITheme();\n\n const s: SizeScale = useMemo<SizeScale>(() => {\n const map: Record<NonNullable<typeof size>, SizeScale> = {\n sm: {\n paddingX: theme.spacing?.md ?? 12,\n paddingY: \"0.6rem\",\n gap: 8,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.sm ?? \"0.875rem\",\n titleWeight: 600,\n iconSize: 16,\n },\n md: {\n paddingX: theme.spacing?.lg ?? 16,\n paddingY: \"0.9rem\",\n gap: 8,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.md ?? \"1rem\",\n titleWeight: 600,\n iconSize: 20,\n },\n lg: {\n paddingX: theme.spacing?.xl ?? 20,\n paddingY: \"1.1rem\",\n gap: 10,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.lg ?? \"1.125rem\",\n titleWeight: 600,\n iconSize: 24,\n },\n };\n return ([\"sm\", \"md\", \"lg\"].includes(size) ? map[size as \"sm\" | \"md\" | \"lg\"] : map.md);\n }, [size, theme.fontSizes, theme.radius, theme.spacing]);\n\n const palette = theme.palette ?? {};\n const neutral = theme.neutral ?? {};\n\n const colors = useMemo((): { bg: string; fg: string; border?: string; iconColor: string } => {\n const pick = (sem: AlertIntent) => {\n if (sem === \"danger\") return palette.danger ?? palette.error ?? neutral;\n if (sem === \"warning\") return palette.warning ?? neutral;\n if (sem === \"success\") return palette.success ?? neutral;\n if (sem === \"info\") return palette.info ?? palette.primary ?? neutral;\n return neutral;\n };\n const scale = pick(intent) as Record<number, string>;\n const c50 = scale?.[50] ?? neutral[50];\n const c300 = scale?.[300] ?? neutral[300];\n const c600 = scale?.[600] ?? scale?.[500] ?? neutral[600];\n const c700 = scale?.[700] ?? c600;\n const c800 = scale?.[800] ?? theme.text?.primary ?? \"#000\";\n const onColor = theme.text?.onColors?.[intent] ?? theme.text?.onColors?.primary ?? theme.text?.primary ?? \"#fff\";\n\n if (variant === \"filled\") return { bg: c600, fg: onColor, border: undefined, iconColor: onColor };\n if (variant === \"outlined\") return { bg: c50, fg: c800, border: `1px solid ${c300}`, iconColor: c800 };\n if (variant === \"ghost\") return { bg: \"transparent\", fg: c700, border: \"none\", iconColor: c700 };\n return { bg: c50, fg: c800, border: undefined, iconColor: c700 };\n }, [intent, variant, neutral, palette, theme.text]);\n\n const role: \"alert\" | \"status\" = intent === \"danger\" || intent === \"warning\" ? \"alert\" : \"status\";\n\n const iconEl: React.ReactNode = useMemo(() => {\n if (icon !== undefined && icon !== null) return icon;\n if (intent === \"danger\") return <CircleAlert css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n if (intent === \"warning\") return <TriangleAlert css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n if (intent === \"success\") return <CircleCheckBig css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n return <Info css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n }, [icon, intent, s.iconSize, colors.iconColor]);\n\n const rootCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n padding: `${s.paddingY} ${s.paddingX}`,\n gap: s.gap,\n borderRadius: s.radius,\n backgroundColor: colors.bg,\n color: colors.fg,\n border: colors.border,\n fontSize: s.fontSize,\n fontWeight: 500,\n width: typeof width === \"number\" ? `${width}px` : width,\n }),\n [colors.bg, colors.border, colors.fg, s.fontSize, s.gap, s.paddingX, s.paddingY, s.radius, width]\n );\n\n const leftCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: s.gap,\n minWidth: 0,\n flex: 1,\n }),\n [s.gap]\n );\n\n const iconWrapCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n lineHeight: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: colors.iconColor,\n flex: \"0 0 auto\",\n }),\n [colors.iconColor]\n );\n\n const contentCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n flexDirection: \"column\",\n textAlign: \"left\",\n minWidth: 0,\n flex: 1,\n }),\n []\n );\n\n const rightCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"center\",\n gap: s.gap,\n marginLeft: s.gap,\n flex: \"0 0 auto\",\n }),\n [s.gap]\n );\n\n const closeBtnCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n cursor: onClose ? \"pointer\" : \"default\",\n lineHeight: 0,\n color: colors.fg,\n }),\n [colors.fg, onClose]\n );\n\n const ctxVal: AlertCtxT = useMemo<AlertCtxT>(\n () => ({ fg: colors.fg, iconColor: colors.iconColor, s }),\n [colors.fg, colors.iconColor, s]\n );\n\n return (\n <AlertCtx.Provider value={ctxVal}>\n <div\n ref={ref}\n role={role}\n aria-atomic=\"true\"\n className={[\"plainframe-ui-alert\", `plainframe-ui-alert-${intent}`, `plainframe-ui-alert-${variant}`, className || \"\"]\n .join(\" \")\n .trim()}\n css={[rootCss, userCss]}\n {...rest}\n >\n <div className=\"plainframe-ui-alert-left\" css={leftCss}>\n {iconEl && <span className=\"plainframe-ui-alert-icon\" css={iconWrapCss}>{iconEl}</span>}\n <div className=\"plainframe-ui-alert-content\" css={contentCss}>{children}</div>\n </div>\n {(actionButton || onClose) && (\n <div className=\"plainframe-ui-alert-actions\" css={rightCss}>\n {actionButton}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close alert\"\n onClick={onClose}\n className=\"plainframe-ui-alert-close\"\n css={closeBtnCss}\n >\n <X size={s.iconSize - 2} />\n </button>\n )}\n </div>\n )}\n </div>\n </AlertCtx.Provider>\n );\n});\n\nexport const AlertTitle: React.ForwardRefExoticComponent<\n SubProps & React.RefAttributes<HTMLSpanElement>\n> = forwardRef<HTMLSpanElement, SubProps>(function AlertTitle(\n { children, className, css: userCss, ...rest },\n ref\n): React.ReactElement {\n const { fg, s } = useAlertCtx();\n const titleCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n color: fg,\n fontWeight: s.titleWeight,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }),\n [fg, s.titleWeight]\n );\n return (\n <span\n ref={ref}\n className={[\"plainframe-ui-alert-title\", className || \"\"].join(\" \").trim()}\n css={[titleCss, userCss]}\n {...rest}\n >\n {children}\n </span>\n );\n});\n\nexport const AlertDescription: React.ForwardRefExoticComponent<\n SubProps & React.RefAttributes<HTMLSpanElement>\n> = forwardRef<HTMLSpanElement, SubProps>(function AlertDescription(\n { children, className, css: userCss, ...rest },\n ref\n): React.ReactElement {\n const { fg } = useAlertCtx();\n const descCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n color: fg,\n marginTop: 2,\n lineHeight: 1.35,\n wordBreak: \"break-word\",\n }),\n [fg]\n );\n return (\n <span\n ref={ref}\n className={[\"plainframe-ui-alert-desc\", className || \"\"].join(\" \").trim()}\n css={[descCss, userCss]}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useEffect, useRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { TextField } from \"./TextField\";\nimport {\n DropdownMenu as DropdownRoot,\n DropdownMenuTrigger,\n DropdownMenuContent,\n useDropdownMenuActiveIndex,\n} from \"./DropdownMenu\";\nimport { MenuItem, MenuCheckboxItem, MenuLabel } from \"./MenuItems\";\nimport {\n Card,\n CardStart,\n CardContent,\n CardTitle,\n CardDescription,\n CardEnd,\n} from \"./Card\";\n\ntype AutocompleteItem = {\n value: string;\n title?: string;\n description?: string;\n disabled?: boolean;\n group?: string;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n css?: Interpolation<Theme>;\n // Allow additional properties with unknown type\n [key: string]: unknown;\n};\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AutocompleteProps = WithCss & {\n items?: AutocompleteItem[];\n onSelect?: (item: AutocompleteItem) => void;\n\n width?: number | string;\n fullWidth?: boolean;\n placeholder?: string;\n renderItem?: (\n item: AutocompleteItem,\n selected?: boolean,\n hovered?: boolean\n ) => React.ReactNode;\n\n inputCss?: Interpolation<Theme>;\n containerCss?: Interpolation<Theme>;\n className?: string;\n label?: string;\n helperText?: string;\n\n variant?: \"subtle\" | \"outlined\" | \"ghost\";\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n focusRingMode?: \"always\" | \"none\";\n\n itemsOpen?: boolean;\n onItemsOpenChange?: (open: boolean) => void;\n openOnFocus?: boolean;\n openOnType?: boolean;\n openOnClick?: boolean;\n\n freeItem?: boolean | { prefix?: string; suffix?: string };\n\n maxHeight?: number | string;\n maxItems?: number;\n noResultsText?: string;\n\n highlightTypedValue?: boolean;\n typedValueHighlightCss?: Interpolation<Theme>;\n\n showNoResults?: boolean;\n\n loadItems?: (query: string) => Promise<AutocompleteItem[]>;\n loading?: boolean;\n loadingText?: string;\n debounceMs?: number;\n\n multiple?: boolean;\n selectedValues?: string[];\n defaultSelectedValues?: string[];\n onChangeSelected?: (items: AutocompleteItem[]) => void;\n};\n\nconst normalize = (s: string) =>\n s\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim()\n .toLowerCase();\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Autocomplete: React.FC<AutocompleteProps> = ({\n items = [],\n onSelect,\n\n width = 300,\n fullWidth = false,\n placeholder,\n\n renderItem,\n\n focusRingMode,\n css: rootCssOverride,\n inputCss,\n containerCss,\n className,\n label,\n helperText,\n variant,\n startIcon,\n endIcon,\n size,\n\n itemsOpen,\n onItemsOpenChange,\n openOnFocus = true,\n openOnType = true,\n\n freeItem = false,\n\n maxHeight,\n maxItems = 6,\n noResultsText = \"No results\",\n\n highlightTypedValue,\n typedValueHighlightCss,\n\n showNoResults = false,\n\n loadItems,\n loading: loadingProp,\n loadingText = \"Loading…\",\n debounceMs = 200,\n\n multiple = false,\n selectedValues,\n defaultSelectedValues,\n onChangeSelected,\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const isOpenControlled = typeof itemsOpen === \"boolean\";\n const [ucOpen, setUcOpen] = useState(false);\n const open = isOpenControlled ? (itemsOpen as boolean) : ucOpen;\n\n const requestOpen = (next: boolean) => {\n if (!isOpenControlled) setUcOpen(next);\n onItemsOpenChange?.(next);\n };\n\n const [ucMulti, setUcMulti] = useState<string[]>(defaultSelectedValues ?? []);\n const currentMulti = selectedValues ?? ucMulti;\n\n const [selected, setSelected] = useState<AutocompleteItem | null>(null);\n\n const [asyncItems, setAsyncItems] = useState<AutocompleteItem[]>([]);\n const [internalLoading, setInternalLoading] = useState(false);\n const isAsync = typeof loadItems === \"function\";\n const effectiveItems = isAsync ? asyncItems : items;\n const isLoading = Boolean(loadingProp) || (internalLoading && isAsync);\n\n const debounceRef = useRef<number | null>(null);\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) window.clearTimeout(debounceRef.current);\n const q = inputValue;\n debounceRef.current = window.setTimeout(async () => {\n setInternalLoading(true);\n try {\n const next = (await loadItems!(q)) || [];\n setAsyncItems(Array.isArray(next) ? next : []);\n } catch {\n setAsyncItems([]);\n } finally {\n setInternalLoading(false);\n }\n }, Math.max(0, debounceMs));\n return () => {\n if (debounceRef.current) window.clearTimeout(debounceRef.current);\n };\n }, [inputValue, isAsync, loadItems, debounceMs]);\n\n const equalExists = useMemo(() => {\n const q = normalize(inputValue);\n if (!q) return false;\n return effectiveItems.some((o) => normalize(o.title ?? o.value) === q);\n }, [effectiveItems, inputValue]);\n\n const allowFree = !!freeItem && inputValue.trim().length > 0 && !equalExists;\n\n const buildFreeLabel = (v: string) => {\n if (typeof freeItem === \"object\") {\n const hasPrefix = Object.prototype.hasOwnProperty.call(freeItem, \"prefix\");\n const hasSuffix = Object.prototype.hasOwnProperty.call(freeItem, \"suffix\");\n if (hasPrefix || hasSuffix) {\n const prefix = hasPrefix ? freeItem.prefix ?? \"\" : \"\";\n const suffix = hasSuffix ? freeItem.suffix ?? \"\" : \"\";\n return `${prefix}${v}${suffix}`;\n }\n return `Add \"${v}\"`;\n }\n return `Add \"${v}\"`;\n };\n\n const filteredBase = useMemo(() => {\n if (isAsync) return effectiveItems;\n const q = normalize(inputValue);\n if (!q) return effectiveItems;\n let res = effectiveItems.filter((it) => {\n const label = normalize(it.title ?? it.value);\n return label.split(\" \").some((w) => w.startsWith(q));\n });\n if (res.length === 0) {\n res = effectiveItems.filter((it) =>\n normalize(it.title ?? it.value).includes(q)\n );\n }\n return res;\n }, [effectiveItems, inputValue, isAsync]);\n\n const baseWithFree = useMemo(() => {\n if (allowFree && filteredBase.length === 0) {\n const v = inputValue.trim();\n return [\n ...filteredBase,\n {\n value: v,\n title: buildFreeLabel(v),\n __pfui_free__: true,\n } as AutocompleteItem,\n ];\n }\n return filteredBase;\n }, [filteredBase, allowFree, inputValue]);\n\n const sections = useMemo(() => {\n const order: string[] = [];\n const groups = new Map<string, AutocompleteItem[]>();\n const keyOf = (o: AutocompleteItem) => o.group ?? \"__ungrouped__\";\n for (const o of baseWithFree) {\n const k = keyOf(o);\n if (!groups.has(k)) {\n groups.set(k, []);\n order.push(k);\n }\n groups.get(k)!.push(o);\n }\n const max = typeof maxItems === \"number\" ? Math.max(0, maxItems) : Infinity;\n let remaining = max;\n const out: Array<{ label?: string; items: AutocompleteItem[] }> = [];\n for (const k of order) {\n if (remaining <= 0) break;\n const list = groups.get(k)!;\n const take = list.slice(0, remaining);\n if (take.length > 0) {\n out.push({\n label: k === \"__ungrouped__\" ? undefined : k,\n items: take,\n });\n remaining -= take.length;\n }\n }\n return out;\n }, [baseWithFree, maxItems]);\n\n const hasItems = sections.some((s) => s.items.length > 0);\n const shouldShowNoResults = !hasItems && !!showNoResults && !isLoading;\n const panelHasContent = isLoading || hasItems || shouldShowNoResults;\n\n const emitMultiChange = (nextValues: string[]) => {\n const nextItems = effectiveItems\n .filter((i) => nextValues.includes(i.value))\n .concat(\n nextValues\n .filter((v) => !effectiveItems.some((o) => o.value === v))\n .map((v) => ({ value: v, title: v }))\n );\n onChangeSelected?.(nextItems);\n };\n\n const pick = (value: string) => {\n const it =\n effectiveItems.find((o) => o.value === value) ??\n ({ value, title: value } as AutocompleteItem);\n\n if (it.disabled) return;\n\n onSelect?.(it);\n\n if (multiple) {\n const exists = currentMulti.includes(it.value);\n const next = exists\n ? currentMulti.filter((v) => v !== it.value)\n : [...currentMulti, it.value];\n\n if (selectedValues) {\n emitMultiChange(next);\n } else {\n setUcMulti(next);\n emitMultiChange(next);\n }\n\n setInputValue(\"\");\n if (!isOpenControlled) requestOpen(true);\n } else {\n setSelected(it);\n setInputValue(it.title ?? it.value);\n if (!isOpenControlled) requestOpen(false);\n }\n };\n\n const handleInputChange = (val: string) => {\n if (!multiple) setSelected(null);\n setInputValue(val);\n if (!isOpenControlled && openOnType && val.trim().length > 0) {\n requestOpen(true);\n }\n };\n\n const cls = (s: string) =>\n `plainframe-ui-autocomplete${s ? `-${s}` : \"\"}`;\n\n const focusFirstMenuItem = () => {\n if (typeof document === \"undefined\") return;\n const menu = document.querySelector<HTMLElement>(`.${cls(\"menu\")}`);\n if (!menu) return;\n const first = menu.querySelector<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n );\n first?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \" \" || e.code === \"Space\" || e.key === \"Spacebar\") {\n e.stopPropagation();\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (!open && !isOpenControlled) {\n requestOpen(true);\n requestAnimationFrame(focusFirstMenuItem);\n } else {\n focusFirstMenuItem();\n }\n return;\n }\n if (e.key === \"Tab\" && !e.shiftKey && open) {\n const menu =\n typeof document !== \"undefined\"\n ? document.querySelector<HTMLElement>(`.${cls(\"menu\")}`)\n : null;\n if (menu) {\n const first = menu.querySelector<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n );\n if (first) {\n e.preventDefault();\n first.focus();\n return;\n }\n }\n }\n if (e.key === \"Enter\") {\n if (open) {\n e.preventDefault();\n return;\n }\n if (!multiple) {\n if (filteredBase.length > 0) {\n pick(filteredBase[0].value);\n } else if (freeItem && inputValue.trim()) {\n pick(inputValue.trim());\n }\n }\n } else if (e.key === \"Escape\") {\n if (!isOpenControlled) requestOpen(false);\n }\n };\n\n const handleInputFocus = () => {\n if (!isOpenControlled && openOnFocus) requestOpen(true);\n };\n\n const wrapCss = css({\n position: \"relative\",\n display: fullWidth ? \"block\" : \"inline-block\",\n width: fullWidth ? \"100%\" : \"auto\",\n });\n\n const triggerCss = css({\n width: fullWidth ? \"100%\" : width != null ? toLen(width) : \"auto\",\n });\n\n const anchorCss = css({\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n });\n\n const paint = (text: string) => {\n if (!highlightTypedValue || !inputValue) return text;\n const idx = text.toLowerCase().indexOf(inputValue.toLowerCase());\n if (idx < 0) return text;\n return (\n <span className={cls(\"highlight-wrap\")} css={css({ display: \"inline\" })}>\n {text.slice(0, idx)}\n <span\n className={cls(\"highlight\")}\n css={[css({ display: \"inline\", fontWeight: 600 }), typedValueHighlightCss]}\n >\n {text.slice(idx, idx + inputValue.length)}\n </span>\n {text.slice(idx + inputValue.length)}\n </span>\n );\n };\n\n const rowBaseCss = css({ minWidth: 0 });\n const itemCardCss = css({ width: \"100%\" });\n const contentNodes: React.ReactNode[] = [];\n\n const Row: React.FC<{ item: AutocompleteItem; absIndex: number }> = ({\n item,\n absIndex,\n }) => {\n const activeIndex = useDropdownMenuActiveIndex();\n const hovered = activeIndex === absIndex;\n\n if (multiple) {\n const checked = currentMulti.includes(item.value);\n const content = renderItem ? (\n renderItem(item, checked, hovered)\n ) : (\n <Card variant=\"ghost\" hoverable={false} selectable={false} padding={0} radius=\"sm\" css={itemCardCss}>\n {item.startIcon && <CardStart align=\"center\">{item.startIcon}</CardStart>}\n <CardContent align=\"start\">\n <CardTitle>{paint(String(item.title ?? item.value))}</CardTitle>\n {item.description && <CardDescription>{item.description}</CardDescription>}\n </CardContent>\n {item.endIcon && <CardEnd align=\"center\">{item.endIcon}</CardEnd>}\n </Card>\n );\n\n return (\n <MenuCheckboxItem\n __index={absIndex}\n key={item.value}\n checked={checked}\n onCheckedChange={() => !item.disabled && pick(item.value)}\n aria-disabled={!!item.disabled}\n disabled={!!item.disabled}\n className={cls(\"checkbox-item\")}\n css={css(rowBaseCss as any, item.css as any)}\n >\n {content}\n </MenuCheckboxItem>\n );\n }\n\n const isSelected = selected?.value === item.value;\n\n const content = renderItem ? (\n renderItem(item, isSelected, hovered)\n ) : (\n <Card variant=\"ghost\" hoverable={false} selectable={false} padding={0} radius=\"sm\" css={itemCardCss}>\n {item.startIcon && <CardStart align=\"center\">{item.startIcon}</CardStart>}\n <CardContent align=\"start\">\n <CardTitle>{paint(String(item.title ?? item.value))}</CardTitle>\n {item.description && <CardDescription>{item.description}</CardDescription>}\n </CardContent>\n {item.endIcon && <CardEnd align=\"center\">{item.endIcon}</CardEnd>}\n </Card>\n );\n\n const handleSelect = () => {\n if (!item.disabled) pick(item.value);\n };\n\n return (\n <MenuItem\n __index={absIndex}\n key={item.value}\n onClick={handleSelect}\n onSelect={handleSelect}\n aria-disabled={!!item.disabled}\n disabled={!!item.disabled}\n className={cls(\"item\")}\n css={css(rowBaseCss as any, item.css as any)}\n selected={isSelected}\n >\n {content}\n </MenuItem>\n );\n };\n\n if (isLoading) {\n contentNodes.push(\n <MenuLabel key=\"loading\" className={cls(\"label-loading\")}>\n {loadingText}\n </MenuLabel>\n );\n } else if (shouldShowNoResults) {\n contentNodes.push(\n <MenuLabel key=\"empty\" className={cls(\"label-empty\")}>\n {noResultsText}\n </MenuLabel>\n );\n } else {\n let abs = 0;\n sections.forEach((sec, gi) => {\n if (sec.label)\n contentNodes.push(\n <MenuLabel key={`g-${gi}`} className={cls(\"group-label\")}>\n {sec.label}\n </MenuLabel>\n );\n sec.items.forEach((it) => {\n contentNodes.push(<Row key={`${it.value}-${abs}`} item={it} absIndex={abs} />);\n abs += 1;\n });\n });\n }\n\n return (\n <div\n className={[cls(\"\"), className || \"\"].join(\" \").trim()}\n css={[wrapCss, containerCss, rootCssOverride]}\n tabIndex={-1}\n >\n <DropdownRoot open={open} onOpenChange={requestOpen}>\n <DropdownMenuTrigger asChild>\n <div aria-hidden=\"true\" tabIndex={-1} className={cls(\"anchor\")} css={anchorCss} />\n </DropdownMenuTrigger>\n\n <div className={cls(\"trigger\")} css={triggerCss}>\n <TextField\n className={cls(\"input\")}\n focusRingMode={focusRingMode}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={placeholder}\n label={label}\n helperText={helperText}\n variant={variant}\n startIcon={startIcon}\n endIcon={endIcon}\n size={size}\n width={width}\n fullWidth={fullWidth}\n css={inputCss}\n />\n </div>\n\n {panelHasContent && (\n <DropdownMenuContent\n className={cls(\"menu\")}\n sameWidth\n side=\"bottom\"\n align=\"start\"\n maxHeight={typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight}\n >\n {contentNodes}\n </DropdownMenuContent>\n )}\n </DropdownRoot>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useRef,\n useState,\n isValidElement,\n cloneElement,\n useId,\n useMemo,\n useCallback,\n forwardRef,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Eye, EyeOff, X } from \"lucide-react\";\nimport { useFocusWithinRing } from \"../utils/focusRing\";\n\n/* ───────── utils ───────── */\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nconst u = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst asArray = (v?: Interpolation<Theme>): Interpolation<Theme>[] =>\n v == null ? [] : Array.isArray(v) ? v : [v];\n\n// ✅ Avoid template-literal overload; always pass arrays/objects.\nconst mergeCss = (\n ...parts: Array<Interpolation<Theme> | false | null | undefined>\n): Interpolation<Theme> => css(parts.filter(Boolean) as any);\n\nfunction cloneIcon(icon: React.ReactNode, px: number, color = \"currentColor\") {\n if (!isValidElement(icon)) return icon;\n const props: any = (icon as any).props || {};\n const next: Record<string, any> = {};\n if (props.size == null) next.size = px;\n if (props.color == null) next.color = color;\n if (props.style?.fontSize == null)\n next.style = { ...(props.style || {}), fontSize: px };\n return cloneElement(icon as any, { ...props, ...next });\n}\n\n/* ───────── types ───────── */\nexport type TextFieldProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n fullWidth?: boolean;\n width?: number | string;\n size?: SizeKey;\n variant?: Variant;\n rounded?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n togglePasswordVisible?: boolean;\n showClear?: boolean;\n type?: \"text\" | \"password\" | \"number\" | (string & {});\n step?: number;\n focusRingMode?: \"always\" | \"none\";\n wrapperCss?: Interpolation<Theme>;\n inputCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n startIconCss?: Interpolation<Theme>;\n endIconCss?: Interpolation<Theme>;\n className?: string;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n autoFocus?: boolean;\n name?: string;\n id?: string;\n tabIndex?: number;\n autoComplete?: string;\n readOnly?: boolean;\n required?: boolean;\n maxLength?: number;\n};\n\n/* ───────── component ───────── */\nexport const TextField: React.ForwardRefExoticComponent<\n TextFieldProps & React.RefAttributes<HTMLInputElement>\n> = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n {\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n error,\n helperText,\n disabled = false,\n fullWidth = false,\n width = 250,\n size = \"md\",\n variant = \"subtle\",\n rounded = false,\n startIcon,\n endIcon,\n togglePasswordVisible = false,\n showClear,\n type = \"text\",\n step,\n focusRingMode = \"always\",\n className,\n wrapperCss: userWrapperCss,\n inputCss: userInputCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n startIconCss: userStartIconCss,\n endIconCss: userEndIconCss,\n css: userSurfaceCss,\n onBlur,\n onFocus,\n onKeyDown,\n autoFocus,\n name,\n id,\n tabIndex,\n autoComplete,\n readOnly,\n required,\n maxLength,\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const ring = useFocusWithinRing();\n const reactId = useId();\n\n const s = useMemo(() => {\n const map = {\n sm: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.sm,\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n width: \"12.5rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 21,\n },\n md: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.md,\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n width: \"15rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 24,\n },\n lg: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n width: \"18.125rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 28,\n },\n } as const;\n const key: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size as any)\n ? (size as SizeKey)\n : \"md\";\n return map[key];\n }, [size, theme]);\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isNumberType = type === \"number\";\n const isPassword = type === \"password\";\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr = isControlled ? (value as string) : internal;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const numberRegex = /^-?\\d*(?:[.,]\\d*)?$/;\n const wantsDecimal =\n isNumberType &&\n ((step != null && String(step).includes(\".\")) || /[.,]/.test(curr ?? \"\"));\n const inputMode = isNumberType ? (wantsDecimal ? \"decimal\" : \"numeric\") : undefined;\n const pattern = isNumberType ? (wantsDecimal ? \"[0-9]*[.,]?[0-9]*\" : \"[0-9]*\") : undefined;\n\n const handleNumberTyping = useCallback(\n (v: string) => {\n if (v === \"\" || numberRegex.test(v)) setValue(v);\n },\n [setValue]\n );\n\n const surfaceBg =\n disabled\n ? N[200]\n : variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg\n : \"transparent\";\n\n const borderW = theme.componentHeights.border;\n const surfaceBorder =\n variant === \"outlined\"\n ? `${borderW} solid ${error ? theme.palette.danger[600] : theme.surface.border}`\n : \"none\";\n\n const rootCss = mergeCss({\n boxSizing: \"border-box\",\n display: \"block\",\n minWidth: 0,\n width: \"100%\",\n maxWidth: fullWidth ? \"100%\" : width != null ? u(width) : undefined,\n flex: \"0 0 auto\",\n fontWeight: 500,\n });\n\n const labelCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error ? theme.palette.danger?.[700] ?? T.primary : disabled ? N[500] : T.primary,\n marginBottom: 4,\n display: \"inline-block\",\n },\n ...asArray(userLabelCss)\n ),\n [s.labelFont, error, disabled, N, T, theme.palette.danger, userLabelCss]\n );\n\n const surfaceBaseCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n padding: `${u(s.paddingY)} ${u(s.paddingX)}`,\n background: surfaceBg,\n border: surfaceBorder,\n borderRadius: rounded ? (theme.radius.full as string) : (theme.radius.md as string),\n minHeight: s.minHeight,\n boxSizing: \"border-box\",\n width: \"100%\",\n cursor: disabled ? \"not-allowed\" : \"text\",\n opacity: disabled ? 0.65 : 1,\n transition: \"box-shadow .18s, border-color .16s\",\n },\n ...asArray(userWrapperCss),\n ...asArray(userSurfaceCss)\n ),\n [\n theme,\n s.minHeight,\n s.paddingX,\n s.paddingY,\n surfaceBg,\n surfaceBorder,\n rounded,\n disabled,\n userWrapperCss,\n userSurfaceCss,\n ]\n );\n\n const inputBaseCss = useMemo(\n () =>\n mergeCss(\n {\n flex: 1,\n minWidth: 0,\n font: \"inherit\",\n fontWeight: 500,\n fontSize: s.fontSize,\n color: disabled ? N[500] : T.primary,\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n padding: 0,\n lineHeight: 1.25,\n cursor: disabled ? \"not-allowed\" : \"text\",\n appearance: isNumberType ? \"textfield\" : \"auto\",\n \"&::placeholder\": { color: T.secondary },\n \"&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus\": {\n WebkitTextFillColor: `${T.primary} !important`,\n boxShadow: `0 0 0 1000px ${surfaceBg} inset !important`,\n transition: \"opacity 99999s ease-out\",\n caretColor: T.primary,\n },\n \":focus-within\": { outline: \"none\", border: \"none\", boxShadow: \"none\" },\n },\n ...asArray(userInputCss)\n ),\n [s.fontSize, disabled, N, T, isNumberType, surfaceBg, userInputCss]\n );\n\n const startSlotCss = useMemo(\n () =>\n mergeCss(\n { display: \"inline-flex\", alignItems: \"center\", color: T.secondary, marginLeft: -3 },\n ...asArray(userStartIconCss)\n ),\n [T.secondary, userStartIconCss]\n );\n\n const endSlotCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"inline-flex\",\n alignItems: \"center\",\n color: T.secondary,\n border: \"none\",\n background: \"transparent\",\n lineHeight: 0,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n padding: 0,\n },\n ...asArray(userEndIconCss)\n ),\n [T.secondary, disabled, userEndIconCss]\n );\n\n const helperRowCss = useMemo(\n () =>\n mergeCss(\n {\n minHeight: 16,\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n paddingTop: 3,\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 8,\n width: \"100%\",\n },\n ...asArray(userHelperRowCss)\n ),\n [s.helperFont, error, theme.palette.danger, T.secondary, userHelperRowCss]\n );\n\n const helperTextCss = useMemo(\n () =>\n mergeCss(\n { flex: 1, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\", minWidth: 0, fontWeight: 400 },\n ...asArray(userHelperTextCss)\n ),\n [userHelperTextCss]\n );\n\n const localRef = useRef<HTMLInputElement>(null);\n const setRefs = useCallback(\n (el: HTMLInputElement | null) => {\n localRef.current = el;\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }\n },\n [ref]\n );\n\n const handleTextChange: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n const v = e.target.value;\n if (isNumberType) {\n handleNumberTyping(v);\n return;\n }\n if (maxLength && v.length > maxLength) return;\n setValue(v);\n },\n [isNumberType, maxLength, setValue, handleNumberTyping]\n );\n\n const [showPw, setShowPw] = useState(false);\n const togglePw = useCallback(() => {\n if (!disabled) setShowPw((p) => !p);\n }, [disabled]);\n\n const clear = useCallback(() => {\n if (disabled) return;\n setValue(\"\");\n localRef.current?.focus();\n }, [disabled, setValue]);\n\n const iconPx = useMemo(() => {\n const f = s.fontSize as any;\n if (typeof f === \"number\") return f;\n const n = parseFloat(String(f));\n return Number.isFinite(n) ? n : 16;\n }, [s.fontSize]);\n\n const startAdornment = useMemo(\n () => (startIcon ? <span css={startSlotCss}>{cloneIcon(startIcon, iconPx)}</span> : null),\n [startIcon, startSlotCss, iconPx]\n );\n\n const endAdornment = useMemo(() => {\n if (isPassword && togglePasswordVisible) {\n const node = showPw ? <Eye strokeWidth={2.5} size={iconPx} /> : <EyeOff strokeWidth={2.5} size={iconPx} />;\n return (\n <button\n type=\"button\"\n css={endSlotCss}\n onClick={(e) => {\n e.stopPropagation();\n togglePw();\n }}\n tabIndex={-1}\n aria-label={showPw ? \"Hide password\" : \"Show password\"}\n disabled={disabled}\n >\n {node}\n </button>\n );\n }\n if (showClear && curr && curr.length > 0 && !disabled) {\n return (\n <button\n type=\"button\"\n css={endSlotCss}\n onClick={(e) => {\n e.stopPropagation();\n clear();\n }}\n tabIndex={-1}\n aria-label=\"Clear\"\n >\n <X strokeWidth={2.5} size={iconPx} />\n </button>\n );\n }\n if (endIcon) return <span css={endSlotCss}>{cloneIcon(endIcon, iconPx)}</span>;\n return null;\n }, [\n isPassword,\n togglePasswordVisible,\n showPw,\n iconPx,\n endSlotCss,\n disabled,\n showClear,\n curr,\n endIcon,\n togglePw,\n clear,\n ]);\n\n const helperId = helperText != null ? `${id ?? reactId}-help` : undefined;\n const inputId = id ?? reactId;\n\n return (\n <div className={[\"plainframe-ui-textfield\", className || \"\"].join(\" \").trim()} css={rootCss}>\n {label && (\n <label htmlFor={inputId} className=\"plainframe-ui-textfield-label\" css={labelCss}>\n {label}\n </label>\n )}\n\n <div\n className=\"plainframe-ui-textfield-surface\"\n css={[ring({ enabled: focusRingMode !== \"none\" }), surfaceBaseCss]}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button,[role='button']\")) return;\n localRef.current?.focus();\n }}\n aria-invalid={!!error || undefined}\n >\n {startAdornment}\n\n <input\n ref={setRefs}\n id={inputId}\n className=\"plainframe-ui-textfield-input\"\n css={inputBaseCss}\n type={isPassword && !showPw ? \"password\" : \"text\"}\n inputMode={inputMode}\n pattern={pattern}\n value={curr}\n maxLength={!isNumberType ? maxLength : undefined}\n onChange={isNumberType ? (e) => handleNumberTyping(e.target.value) : handleTextChange}\n placeholder={placeholder || \"\"}\n disabled={disabled}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n autoFocus={autoFocus}\n name={name}\n tabIndex={tabIndex}\n autoComplete={autoComplete}\n readOnly={readOnly}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={helperId}\n />\n\n {endAdornment}\n </div>\n\n {helperText != null && (\n <div className=\"plainframe-ui-textfield-helper-row\" css={helperRowCss}>\n <span id={helperId} className=\"plainframe-ui-textfield-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n </div>\n )}\n </div>\n );\n});\nTextField.displayName = \"TextField\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useMemo,\n useState,\n useRef,\n useEffect,\n useContext,\n createContext,\n forwardRef,\n cloneElement,\n useCallback,\n isValidElement,\n} from \"react\";\nimport { css as emCss, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport {\n useFloating,\n flip,\n shift,\n offset as offsetMw,\n size as sizeMw,\n autoUpdate,\n useDismiss,\n useRole,\n useInteractions,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion, type Transition } from \"framer-motion\";\nimport { DenseCtx } from \"./Menu\";\n\n/* ───────── utils ───────── */\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n (ref as (v: T | null) => void)(value);\n } else {\n (ref as unknown as { current: T | null }).current = value;\n }\n}\n\nexport const mergeRefs: <T>(\n ...refs: Array<React.Ref<T> | undefined>\n) => (node: T | null) => void =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null): void => {\n for (const ref of refs) setRef(ref, node);\n };\n\n/* body scroll lock */\n\nlet __scrollLocks = 0;\nlet __prevOverflow: string | null = null;\nlet __prevPaddingRight: string | null = null;\n\nconst getScrollbarWidth = (): number =>\n typeof window === \"undefined\" || typeof document === \"undefined\"\n ? 0\n : window.innerWidth - document.documentElement.clientWidth;\n\nfunction lockBodyScroll(): void {\n if (typeof document === \"undefined\") return;\n if (__scrollLocks === 0) {\n const body = document.body;\n __prevOverflow = body.style.overflow || \"\";\n __prevPaddingRight = body.style.paddingRight || \"\";\n const sw = getScrollbarWidth();\n body.style.overflow = \"hidden\";\n if (sw > 0) body.style.paddingRight = `${sw}px`;\n }\n __scrollLocks += 1;\n}\nfunction unlockBodyScroll(): void {\n if (typeof document === \"undefined\") return;\n if (__scrollLocks > 0) __scrollLocks -= 1;\n if (__scrollLocks === 0) {\n const body = document.body;\n if (__prevOverflow !== null) body.style.overflow = __prevOverflow;\n if (__prevPaddingRight !== null) body.style.paddingRight = __prevPaddingRight;\n __prevOverflow = null;\n __prevPaddingRight = null;\n }\n}\n\n/* ───────── types/ctx ───────── */\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\nexport type TriggerMode = \"click\" | \"hover\";\n\ntype VirtualRefLike = {\n getBoundingClientRect: () => DOMRect | ClientRect;\n contextElement?: Element;\n};\ntype PointAnchor = { x: number; y: number };\ntype Anchor = HTMLElement | VirtualRefLike | PointAnchor;\n\nexport type DropdownMenuRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: TriggerMode;\n lockScroll?: boolean;\n size?: \"sm\" | \"md\";\n children: React.ReactNode;\n};\n\nexport type DropdownMenuTriggerProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n \"style\"\n> & {\n asChild?: boolean;\n children: React.ReactElement | React.ReactNode;\n width?: string | number;\n css?: Interpolation<Theme>;\n};\n\nexport type DropdownMenuContentProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"style\"\n> & {\n anchor?: Anchor;\n side?: Side;\n align?: Align;\n sideOffset?: number | string;\n alignOffset?: number | string;\n collisionPadding?: number | string;\n sameWidth?: boolean;\n width?: number | string;\n height?: number | string;\n maxHeight?: number | string;\n unstyled?: boolean;\n closeOnBlur?: boolean;\n allItemsTabbable?: boolean;\n exitPlacement?: Side;\n animateOnBusClose?: boolean;\n gap?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | string | number;\n css?: Interpolation<Theme>;\n};\n\ntype Ctx = {\n open: boolean;\n setOpen: (v: boolean) => void;\n trigger: TriggerMode;\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n listRef: React.MutableRefObject<Array<HTMLElement | null>>;\n activeIndex: number | null;\n setActiveIndex: React.Dispatch<React.SetStateAction<number | null>>;\n scheduleHoverClose: (delay?: number) => void;\n clearHoverClose: () => void;\n};\nexport const MenuCtx: React.Context<Ctx | null> = createContext<Ctx | null>(null);\nconst useMenu = (): Ctx => {\n const v = useContext(MenuCtx);\n if (!v) throw new Error(\"DropdownMenu components must be used inside <DropdownMenu>.\");\n return v;\n};\n\nexport const FocusCtx: React.Context<{ allItemsTabbable: boolean }> =\n createContext<{ allItemsTabbable: boolean }>({\n allItemsTabbable: true,\n });\n\ntype RootHoverCtl = { clear: () => void; schedule: (d?: number) => void };\n\ntype RootBus = {\n registerCloser: (fn: () => void) => () => void;\n closeAll: () => void;\n registerHoverCtl: (ctl: RootHoverCtl) => () => void;\n clearAllHover: () => void;\n isBusClosingRef: { current: boolean };\n};\nexport const RootBusCtx: React.Context<RootBus | null> = React.createContext<RootBus | null>(null);\nconst useRootBus = (): RootBus | null => useContext(RootBusCtx);\n\nexport function createRootBus(): RootBus {\n const closers: Array<() => void> = [];\n const hovers = new Set<RootHoverCtl>();\n const isBusClosingRef = { current: false };\n return {\n registerCloser(fn: () => void) {\n closers.push(fn);\n return () => {\n const i = closers.indexOf(fn);\n if (i >= 0) closers.splice(i, 1);\n };\n },\n closeAll() {\n if (isBusClosingRef.current) return;\n isBusClosingRef.current = true;\n for (let i = closers.length - 1; i >= 0; i--) {\n try {\n closers[i]();\n } catch {\n // ignore\n }\n }\n queueMicrotask(() => {\n isBusClosingRef.current = false;\n });\n },\n registerHoverCtl(ctl: RootHoverCtl) {\n hovers.add(ctl);\n return () => hovers.delete(ctl);\n },\n clearAllHover() {\n hovers.forEach((h) => h.clear());\n },\n isBusClosingRef,\n };\n}\n\nexport const useDropdownMenuActiveIndex: () => number | null = (): number | null =>\n useMenu().activeIndex;\n\n/* ───────── root ───────── */\n\nexport const DropdownMenu: React.FC<DropdownMenuRootProps> = ({\n open: controlled,\n defaultOpen,\n onOpenChange,\n trigger = \"click\",\n lockScroll = true,\n size = \"md\",\n children,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n const setOpen = useCallback(\n (v: boolean): void => {\n if (controlled === undefined) setUncontrolled(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const hoverTimeoutRef = useRef<number | null>(null);\n const scheduleHoverClose = useCallback(\n (delay = 120): void => {\n if (trigger !== \"hover\") return;\n window.clearTimeout(hoverTimeoutRef.current ?? 0);\n hoverTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);\n },\n [trigger, setOpen]\n );\n const clearHoverClose = useCallback((): void => {\n if (hoverTimeoutRef.current) {\n window.clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n }, []);\n useEffect(() => () => clearHoverClose(), [clearHoverClose]);\n\n useEffect(() => {\n if (!lockScroll || !open) return;\n lockBodyScroll();\n return () => unlockBodyScroll();\n }, [open, lockScroll]);\n\n const parentBus = useRootBus();\n const [bus] = useState<RootBus>(() => parentBus ?? createRootBus());\n\n const value = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n activeIndex,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n }),\n [open, setOpen, trigger, activeIndex, scheduleHoverClose, clearHoverClose]\n );\n\n const denseFlag = size === \"sm\";\n\n return (\n <RootBusCtx.Provider value={bus}>\n <DenseCtx.Provider value={denseFlag}>\n <MenuCtx.Provider value={value}>{children}</MenuCtx.Provider>\n </DenseCtx.Provider>\n </RootBusCtx.Provider>\n );\n};\nDropdownMenu.displayName = \"DropdownMenu\";\n\n/* ───────── trigger ───────── */\n\nexport const DropdownMenuTrigger: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuTriggerProps> & React.RefAttributes<HTMLElement>\n> = React.forwardRef<HTMLElement, DropdownMenuTriggerProps>(\n ({ asChild = true, children, width, className, css: userCss, ...rest }, ref) => {\n const {\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n activeIndex,\n } = useMenu();\n\n const canAsChild = !!asChild && isValidElement(children);\n const childEl = canAsChild ? (children as React.ReactElement) : null;\n const childOnKeyDown =\n childEl && childEl.props && typeof childEl.props === \"object\" && \"onKeyDown\" in childEl.props\n ? (childEl.props.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined)\n : undefined;\n const childOnClick =\n childEl && childEl.props && typeof childEl.props === \"object\" && \"onClick\" in childEl.props\n ? (childEl.props.onClick as ((e: React.MouseEvent) => void) | undefined)\n : undefined;\n\n const { onKeyDown: propOnKeyDown, onClick: propOnClick, ...restProps } = rest as any;\n\n const setRefs = useMemo(\n () =>\n mergeRefs<HTMLElement | null>(\n ref,\n canAsChild && typeof (children as any).ref !== \"undefined\" ? (children as any).ref : undefined,\n (referenceRef as unknown) as React.Ref<HTMLElement | null>\n ),\n [ref, canAsChild, children, referenceRef]\n );\n\n const nodes = useCallback((): HTMLElement[] => listRef.current.filter(Boolean) as HTMLElement[], [listRef]);\n\n const focusIdx = useCallback(\n (idx: number): void => {\n const list = nodes();\n requestAnimationFrame(() => list[idx]?.focus());\n },\n [nodes]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent): void => {\n const list = nodes();\n const total = list.length;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n if (!open) {\n e.preventDefault();\n setOpen(true);\n if (total) {\n const next = e.key === \"ArrowDown\" ? 0 : total - 1;\n setActiveIndex(next);\n focusIdx(next);\n }\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n if (open && total) {\n e.preventDefault();\n const delta = e.key === \"ArrowDown\" ? 1 : -1;\n let current = activeIndex ?? (e.key === \"ArrowDown\" ? -1 : total);\n const next = Math.min(Math.max(current + delta, 0), total - 1);\n setActiveIndex(next);\n focusIdx(next);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n }\n\n if ((e.key === \"Enter\" || e.key === \" \") && !open) {\n e.preventDefault();\n setOpen(true);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n\n if (e.key === \"Tab\" && open && !e.shiftKey) {\n if (total) {\n e.preventDefault();\n setActiveIndex(0);\n focusIdx(0);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n }\n\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n },\n [open, setOpen, activeIndex, setActiveIndex, childOnKeyDown, propOnKeyDown, nodes, focusIdx]\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent): void => {\n if (trigger === \"click\") {\n const path: EventTarget[] = (e.nativeEvent as any)?.composedPath?.() ?? [];\n const clickedTextEntry = path.some((el: any) => {\n if (!el || !el.tagName) return false;\n const t = String(el.tagName).toUpperCase();\n if (t === \"INPUT\" || t === \"TEXTAREA\") return true;\n if (el.isContentEditable) return true;\n const role = el.getAttribute?.(\"role\");\n return role === \"textbox\" || role === \"combobox\";\n });\n if (!clickedTextEntry) {\n e.stopPropagation();\n setOpen(!open);\n }\n }\n childOnClick?.(e);\n propOnClick?.(e);\n },\n [trigger, open, setOpen, childOnClick, propOnClick]\n );\n\n const hoverProps =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => {\n clearHoverClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n scheduleHoverClose();\n },\n }\n : {};\n\n const widthCss =\n width != null\n ? emCss({\n width: typeof width === \"number\" ? `${width}px` : width,\n })\n : undefined;\n\n if (canAsChild && childEl) {\n const childCss = (childEl as any).props?.css;\n return cloneElement(childEl, {\n ref: setRefs,\n tabIndex: (childEl.props as any).tabIndex ?? 0,\n className: [(childEl.props as any).className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, widthCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...hoverProps,\n ...restProps,\n });\n }\n\n return (\n <button\n ref={setRefs}\n className={className}\n css={[emCss({ display: \"inline-block\" }), widthCss, userCss]}\n type=\"button\"\n tabIndex={0}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...hoverProps}\n {...restProps}\n >\n {children}\n </button>\n );\n }\n);\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\n/* ───────── content ───────── */\n\ntype MotionTransitions = Transition & {\n scale?: Transition;\n x?: Transition;\n y?: Transition;\n opacity?: Transition;\n};\n\nexport const DropdownMenuContent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuContentProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n (\n {\n anchor,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n alignOffset = 0,\n collisionPadding = 8,\n sameWidth = false,\n width = 200,\n height,\n maxHeight,\n unstyled = false,\n closeOnBlur = false,\n allItemsTabbable = true,\n className,\n css: userCss,\n children,\n exitPlacement,\n animateOnBusClose = true,\n gap,\n ...rest\n },\n ref\n ) => {\n const {\n open,\n setOpen,\n referenceRef,\n scheduleHoverClose,\n clearHoverClose,\n setActiveIndex,\n } = useMenu();\n const theme = usePlainframeUITheme();\n const rootBus = useRootBus();\n\n useEffect(() => {\n if (!rootBus) return;\n const off = rootBus.registerCloser(() => setOpen(false));\n return () => {\n off && off();\n };\n }, [rootBus, setOpen]);\n\n const so = typeof sideOffset === \"string\" ? parseFloat(sideOffset) : sideOffset;\n const ao = typeof alignOffset === \"string\" ? parseFloat(alignOffset) : alignOffset;\n const cp =\n typeof collisionPadding === \"string\" ? parseFloat(collisionPadding) : collisionPadding;\n const placement = `${side}${align === \"center\" ? \"\" : `-${align}`}` as Placement;\n\n const virtualFromPoint = useCallback(\n (p: { x: number; y: number }): VirtualRefLike => ({\n getBoundingClientRect: () => {\n const x = Math.round(p.x);\n const y = Math.round(p.y);\n return {\n x,\n y,\n left: x,\n top: y,\n right: x,\n bottom: y,\n width: 0,\n height: 0,\n toJSON: () => ({ x, y, left: x, top: y, right: x, bottom: y, width: 0, height: 0 }),\n } as DOMRect;\n },\n contextElement: undefined,\n }),\n []\n );\n\n const normalizedAnchor = useMemo<HTMLElement | VirtualRefLike | null>(() => {\n if (!anchor) return null;\n if (anchor instanceof HTMLElement) return anchor;\n if (\n typeof anchor === \"object\" &&\n anchor !== null &&\n \"getBoundingClientRect\" in anchor &&\n typeof (anchor as VirtualRefLike).getBoundingClientRect === \"function\"\n )\n return anchor as VirtualRefLike;\n const a = anchor as { x?: number; y?: number };\n return virtualFromPoint({ x: a.x!, y: a.y! });\n }, [anchor, virtualFromPoint]);\n\n const { refs, x, y, strategy, context, update } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMw({ mainAxis: so ?? 0, crossAxis: ao ?? 0 }),\n flip({ padding: cp ?? 8 }),\n shift({ padding: cp ?? 8 }),\n sizeMw({\n apply({ elements }) {\n const el = elements.floating as HTMLElement;\n el.style.boxSizing = \"border-box\";\n if (height != null)\n el.style.height = typeof height === \"number\" ? `${height}px` : String(height);\n else el.style.removeProperty(\"height\");\n },\n }),\n ],\n });\n\n useEffect(() => {\n if (normalizedAnchor) refs.setReference(normalizedAnchor);\n else if (referenceRef.current) refs.setReference(referenceRef.current);\n }, [refs, normalizedAnchor, referenceRef]);\n\n useEffect(() => {\n if (!open) return;\n const refEl = normalizedAnchor || referenceRef.current;\n const floatEl = refs.floating.current;\n if (!refEl || !floatEl) return;\n return autoUpdate(refEl, floatEl, update);\n }, [open, normalizedAnchor, referenceRef, refs, update]);\n\n useEffect(() => {\n if (open && !allItemsTabbable) setActiveIndex(0);\n }, [open, allItemsTabbable, setActiveIndex]);\n\n useEffect(() => {\n if (!closeOnBlur || !open) return;\n const onFocusIn = (): void => {\n const ae = document.activeElement as Node | null;\n const refEl = referenceRef.current;\n const fl = refs.floating.current;\n if (!ae) return;\n if (refEl?.contains(ae) || fl?.contains(ae)) return;\n setOpen(false);\n };\n document.addEventListener(\"focusin\", onFocusIn, true);\n return () => document.removeEventListener(\"focusin\", onFocusIn, true);\n }, [closeOnBlur, open, setOpen, referenceRef, refs.floating]);\n\n const dismiss = useDismiss(context, { outsidePressEvent: \"pointerdown\", escapeKey: true });\n const role = useRole(context, { role: \"menu\" });\n const { getFloatingProps } = useInteractions([dismiss, role]);\n\n const panelPad =\n typeof theme.spacing.xs === \"number\" ? `${theme.spacing.xs}px` : String(theme.spacing.xs);\n\n const resolvedGap =\n gap === undefined\n ? undefined\n : typeof gap === \"number\"\n ? gap\n : (theme.spacing as any)[gap] ?? gap;\n\n const baseCss = unstyled\n ? undefined\n : emCss({\n boxSizing: \"border-box\",\n background: theme.surface.panelBg,\n border: `${theme.componentHeights.border} solid ${theme.surface.border}`,\n borderRadius: theme.radius.lg,\n boxShadow: \"0 8px 32px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.02)\",\n \"--pfui-panel-pad\": panelPad,\n padding: \"var(--pfui-panel-pad)\",\n color: theme.text.primary,\n maxHeight,\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: resolvedGap,\n });\n\n let idx = -1;\n const annotate: (node: any) => any = (node: any): any => {\n if (!node || typeof node !== \"object\") return node;\n const type: any = (node as any).type;\n const name = type?.displayName;\n\n if (name === \"DropdownMenu\" || name === \"DropdownMenuSub\") return node;\n\n if (\n name === \"MenuItem\" ||\n name === \"MenuCheckboxItem\" ||\n name === \"MenuRadioItem\" ||\n name === \"MenuSwitchItem\"\n ) {\n idx += 1;\n return cloneElement(node, { __index: idx, key: (node as any).key ?? idx });\n }\n\n if (name === \"DropdownMenuTrigger\" || name === \"DropdownMenuSubTrigger\") {\n const kids = (node as any).props?.children;\n return cloneElement(node, { children: React.Children.map(kids, annotate) });\n }\n\n const kids = (node as any).props?.children;\n if (kids == null) return node;\n return cloneElement(node, { children: React.Children.map(kids, annotate) });\n };\n\n const enhancedChildren = React.Children.map(children, annotate);\n\n const [refWidth, setRefWidth] = useState<number | null>(null);\n\n useEffect(() => {\n if (!sameWidth) return;\n const node =\n (normalizedAnchor instanceof HTMLElement && normalizedAnchor) || referenceRef.current;\n if (!node) return;\n const setNow = (): void => setRefWidth(Math.round(node.getBoundingClientRect().width));\n setNow();\n update();\n const ro = new ResizeObserver((): void => {\n setNow();\n update();\n });\n ro.observe(node);\n return () => ro.disconnect();\n }, [normalizedAnchor, referenceRef, sameWidth, update]);\n\n const computedWidth =\n width\n ? typeof width === \"number\"\n ? `${width}px`\n : String(width)\n : sameWidth && refWidth != null\n ? `${refWidth}px`\n : undefined;\n\n const delta = 8;\n const placementSide = (context.placement.split(\"-\")[0] as Side) || \"bottom\";\n const transformOrigin =\n placementSide === \"bottom\"\n ? \"center top\"\n : placementSide === \"top\"\n ? \"center bottom\"\n : placementSide === \"left\"\n ? \"right center\"\n : \"left center\";\n\n const initial =\n placementSide === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.96 }\n : placementSide === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.96 }\n : placementSide === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.96 }\n : { opacity: 0, x: -delta, scale: 0.96 };\n\n const exitSide = exitPlacement ?? placementSide;\n const exit =\n exitSide === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.96 }\n : exitSide === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.96 }\n : exitSide === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.96 }\n : { opacity: 0, x: -delta, scale: 0.96 };\n\n const busClosing: boolean = !!rootBus?.isBusClosingRef.current;\n\n const transition: MotionTransitions =\n busClosing && !animateOnBusClose\n ? {\n scale: { duration: 0 },\n x: { duration: 0 },\n y: { duration: 0 },\n opacity: { duration: 0 },\n }\n : {\n scale: { type: \"spring\", stiffness: 520, damping: 38, mass: 0.5 },\n x: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n opacity: { duration: 0.12, ease: \"linear\" },\n };\n\n const positionCss = emCss({\n position: strategy as React.CSSProperties[\"position\"],\n top: (y ?? 0) as number,\n left: (x ?? 0) as number,\n zIndex: 1000,\n transformOrigin,\n width: computedWidth,\n });\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n {open ? (\n <FocusCtx.Provider value={{ allItemsTabbable }}>\n <motion.div\n {...getFloatingProps({\n ...rest,\n ref: mergeRefs(ref, refs.setFloating),\n })}\n className={className}\n css={[baseCss, positionCss, userCss]}\n initial={initial}\n animate={{ opacity: 1, x: 0, y: 0, scale: 1 }}\n exit={exit}\n transition={transition}\n onMouseEnter={() => {\n clearHoverClose();\n rootBus?.clearAllHover();\n }}\n onMouseLeave={() => scheduleHoverClose()}\n >\n {enhancedChildren}\n </motion.div>\n </FocusCtx.Provider>\n ) : null}\n </AnimatePresence>\n </FloatingPortal>\n );\n }\n);\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\n/* ───────── sub ───────── */\n\nexport const DropdownMenuSub: React.FC<{\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (o: boolean) => void;\n trigger?: TriggerMode;\n dense?: boolean;\n children: React.ReactNode;\n}> = ({ open: cOpen, defaultOpen, onOpenChange, trigger = \"hover\", dense, children }) => {\n const [uOpen, setUOpen] = useState<boolean>(!!defaultOpen);\n const open = cOpen ?? uOpen;\n const setOpen = useCallback(\n (v: boolean): void => {\n if (cOpen === undefined) setUOpen(v);\n onOpenChange?.(v);\n },\n [cOpen, onOpenChange]\n );\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const hoverTimeoutRef = useRef<number | null>(null);\n const scheduleHoverClose = useCallback(\n (delay = 160): void => {\n if (trigger !== \"hover\") return;\n window.clearTimeout(hoverTimeoutRef.current ?? 0);\n hoverTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);\n },\n [trigger, setOpen]\n );\n const clearHoverClose = useCallback((): void => {\n if (hoverTimeoutRef.current) {\n window.clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n }, []);\n useEffect(() => () => clearHoverClose(), [clearHoverClose]);\n\n const inheritedDense = useContext(DenseCtx);\n const finalDense = dense ?? inheritedDense;\n\n const value = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n activeIndex,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n }),\n [open, setOpen, trigger, activeIndex, scheduleHoverClose, clearHoverClose]\n );\n\n return (\n <DenseCtx.Provider value={finalDense}>\n <MenuCtx.Provider value={value}>{children}</MenuCtx.Provider>\n </DenseCtx.Provider>\n );\n};\nDropdownMenuSub.displayName = \"DropdownMenuSub\";\n\nexport const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuTriggerProps> & React.RefAttributes<HTMLElement>\n> = React.forwardRef<HTMLElement, DropdownMenuTriggerProps>(\n ({ asChild = true, children, width, className, css: userCss, ...rest }, ref) => {\n const { open, setOpen, trigger, referenceRef, setActiveIndex, scheduleHoverClose, clearHoverClose } =\n useMenu();\n\n const canAsChild = !!asChild && isValidElement(children);\n const childEl = canAsChild ? (children as React.ReactElement<any, any>) : null;\n const childOnKeyDown = childEl?.props?.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined;\n const childOnClick = childEl?.props?.onClick as ((e: React.MouseEvent) => void) | undefined;\n\n const { onKeyDown: propOnKeyDown, onClick: propOnClick, ...restProps } = rest as any;\n\n const setRefs = useMemo(\n () =>\n mergeRefs<HTMLElement | null>(\n ref,\n canAsChild ? (children as any).ref : undefined,\n (referenceRef as unknown) as React.Ref<HTMLElement | null>\n ),\n [ref, canAsChild, children, referenceRef]\n );\n\n const widthCss =\n width != null ? emCss({ width: typeof width === \"number\" ? `${width}px` : width }) : undefined;\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent): void => {\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n setActiveIndex(0);\n setOpen(true);\n }\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n setOpen(false);\n }\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n },\n [setActiveIndex, setOpen, childOnKeyDown, propOnKeyDown]\n );\n\n const baseHoverProps =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => {\n clearHoverClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n scheduleHoverClose();\n },\n }\n : {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n setOpen(!open);\n childOnClick?.(e);\n propOnClick?.(e);\n },\n };\n\n if (canAsChild && childEl) {\n const childCss = (childEl as any).props?.css;\n return cloneElement(childEl, {\n ref: setRefs,\n tabIndex: childEl.props.tabIndex ?? 0,\n className: [childEl.props.className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, widthCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"data-subtrigger\": \"\",\n onKeyDown: handleKeyDown,\n ...baseHoverProps,\n ...restProps,\n });\n }\n\n return (\n <div\n ref={setRefs}\n role=\"menuitem\"\n tabIndex={0}\n className={className}\n css={[\n emCss({\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n }),\n widthCss,\n userCss,\n ]}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n data-subtrigger=\"\"\n onKeyDown={handleKeyDown}\n {...baseHoverProps}\n {...restProps}\n >\n {children}\n </div>\n );\n }\n);\nDropdownMenuSubTrigger.displayName = \"DropdownMenuSubTrigger\";\n\nexport const DropdownMenuSubContent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<Omit<DropdownMenuContentProps, \"anchor\">> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, Omit<DropdownMenuContentProps, \"anchor\">>(\n (props, ref) => {\n const rootBus = useRootBus();\n const { referenceRef, scheduleHoverClose, clearHoverClose } = useMenu();\n return (\n <DropdownMenuContent\n ref={ref}\n side=\"right\"\n align=\"start\"\n exitPlacement=\"bottom\"\n animateOnBusClose={true}\n {...props}\n anchor={referenceRef.current as unknown as Anchor}\n onMouseEnter={(e) => {\n clearHoverClose();\n rootBus?.clearAllHover();\n props.onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n scheduleHoverClose();\n props.onMouseLeave?.(e);\n }}\n />\n );\n }\n);\nDropdownMenuSubContent.displayName = \"DropdownMenuSubContent\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n forwardRef,\n createContext,\n useContext,\n useState,\n isValidElement,\n cloneElement,\n useRef,\n useLayoutEffect,\n type ReactNode,\n useEffect,\n} from \"react\";\nimport { css as emCss, type Interpolation, type Theme, type CSSObject } from \"@emotion/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\n/* ───────── ctx ───────── */\nexport type MenuVariant = \"ghost\" | \"subtle\" | \"outlined\";\nexport const MenuVariantCtx: React.Context<MenuVariant> = React.createContext<MenuVariant>(\"ghost\");\nexport const DenseCtx: React.Context<boolean> = React.createContext<boolean>(false);\nexport const LevelCtx: React.Context<number> = React.createContext<number>(0);\nexport const GapCtx: React.Context<string | number | undefined> =\n React.createContext<string | number | undefined>(undefined);\n\n/* ───────── Menu ───────── */\nexport type MenuProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: MenuVariant;\n size?: \"sm\" | \"md\";\n width?: number | string;\n maxHeight?: number | string;\n unstyled?: boolean;\n css?: Interpolation<Theme>;\n gap?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | string | number;\n label?: string;\n};\n\nexport const Menu: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuProps> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n variant = \"ghost\",\n size = \"md\",\n width,\n maxHeight,\n unstyled = false,\n className,\n css: userCss,\n gap,\n children,\n label,\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const panelPad =\n typeof theme.spacing.xs === \"number\" ? `${theme.spacing.xs}px` : String(theme.spacing.xs);\n\n const bg =\n variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg ?? theme.neutral[50]\n : \"transparent\";\n\n const gapValue =\n gap === undefined\n ? undefined\n : typeof gap === \"string\" && (theme.spacing as any)[gap] !== undefined\n ? (theme.spacing as any)[gap]\n : gap;\n\n const baseCss = unstyled\n ? undefined\n : emCss({\n boxSizing: \"border-box\",\n background: bg,\n border:\n variant === \"outlined\"\n ? `${theme.componentHeights.border} solid ${theme.surface.border}`\n : \"none\",\n borderRadius: theme.radius.lg,\n \"--pfui-panel-pad\": panelPad,\n padding: variant === \"ghost\" ? 0 : \"var(--pfui-panel-pad)\",\n color: theme.text.primary,\n width: typeof width === \"number\" ? `${width}px` : width,\n maxHeight,\n overflowY: maxHeight != null ? \"auto\" : undefined,\n display: \"flex\",\n flexDirection: \"column\",\n gap: gapValue,\n });\n\n const dense = size === \"sm\";\n\n return (\n <DenseCtx.Provider value={dense}>\n <MenuVariantCtx.Provider value={variant}>\n <LevelCtx.Provider value={0}>\n <GapCtx.Provider value={gapValue}>\n <div css={{ display: \"flex\", flexDirection: \"column\", gap: theme.spacing.sm }}>\n {label ? (\n <div css={{ width: \"100%\", textAlign: \"left\", maxWidth: width }}>\n <span\n css={{\n display: \"block\",\n color: theme.text.secondary,\n fontSize: theme.fontSizes.sm,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \".04em\",\n padding: typeof theme.spacing.sm === \"number\" ? `${theme.spacing.sm}px` : theme.spacing.sm,\n paddingTop: 0,\n }}\n >\n {label}\n </span>\n </div>\n ) : null}\n <div\n ref={ref}\n role=\"menu\"\n aria-label={label || undefined}\n className={[\"plainframe-ui-menu\", className || \"\"].join(\" \").trim()}\n css={[baseCss, userCss]}\n {...rest}\n >\n {children}\n </div>\n </div>\n </GapCtx.Provider>\n </LevelCtx.Provider>\n </MenuVariantCtx.Provider>\n </DenseCtx.Provider>\n );\n});\nMenu.displayName = \"Menu\";\n\n/* ───────── SubMenu ───────── */\ntype SubCtx = { open: boolean; setOpen: (v: boolean) => void };\nconst SubMenuCtx = createContext<SubCtx | null>(null);\nconst useSub = () => {\n const v = useContext(SubMenuCtx);\n if (!v) throw new Error(\"SubMenu components must be used inside <SubMenu>.\");\n return v;\n};\n\nexport const SubMenu: React.FC<{\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (v: boolean) => void;\n children: ReactNode;\n}> = ({ open, defaultOpen = false, onOpenChange, children }) => {\n const [uOpen, setUOpen] = useState<boolean>(() => !!defaultOpen);\n const controlled = open !== undefined;\n const val = controlled ? !!open : uOpen;\n const setOpen = (v: boolean) => {\n if (!controlled) setUOpen(v);\n onOpenChange?.(v);\n };\n\n const menuGap = useContext(GapCtx);\n\n return (\n <SubMenuCtx.Provider value={{ open: val, setOpen }}>\n <div\n className=\"plainframe-ui-submenu-root\"\n css={emCss({\n display: \"flex\",\n flexDirection: \"column\",\n gap: menuGap,\n width: \"100%\",\n })}\n >\n {children}\n </div>\n </SubMenuCtx.Provider>\n );\n};\n\nexport const SubMenuTrigger: React.FC<{\n children: React.ReactElement;\n chevron?: ReactNode;\n asChild?: boolean;\n}> = ({ children, chevron, asChild = true }) => {\n const { open, setOpen } = useSub();\n const theme = usePlainframeUITheme();\n\n const chevronCss = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 16px\",\n width: 16,\n height: 16,\n lineHeight: 0,\n marginLeft: 6,\n pointerEvents: \"none\",\n color: theme.text.secondary,\n transformOrigin: \"50% 50%\",\n backfaceVisibility: \"hidden\",\n willChange: \"transform\",\n transform: open ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n transition: \"transform 300ms cubic-bezier(.6,1.3,.5,1)\",\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const ChevronNode = (\n <span className=\"pfui-submenu-chevron\" css={chevronCss} aria-hidden>\n {chevron ?? <ChevronDown strokeWidth={2.5} />}\n </span>\n );\n\n const inject = (el: React.ReactElement) =>\n cloneElement(el, {\n ...(el.props as any),\n \"data-subtrigger\": \"\",\n \"data-open\": open ? \"\" : undefined,\n \"aria-expanded\": open,\n endIcon: (\n <>\n {typeof el.props === \"object\" && el.props && \"endIcon\" in el.props ? (el.props as any).endIcon : null}\n {ChevronNode}\n </>\n ),\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n if (\n typeof el.props === \"object\" &&\n el.props &&\n \"onClick\" in el.props &&\n typeof (el.props as any).onClick === \"function\"\n ) {\n (el.props as any).onClick(e);\n }\n if (e?.defaultPrevented) return;\n if ((e?.currentTarget as HTMLElement)?.tagName === \"A\") e.preventDefault();\n setOpen(!open);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => {\n if (\n typeof el.props === \"object\" &&\n el.props &&\n typeof (el.props as { onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void }).onKeyDown === \"function\"\n ) {\n (el.props as { onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void }).onKeyDown!(e);\n }\n if (e.defaultPrevented) return;\n if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setOpen(!open); }\n if (e.key === \"ArrowRight\") { e.preventDefault(); setOpen(true); }\n if (e.key === \"ArrowLeft\") { e.preventDefault(); setOpen(false); }\n },\n onSelect: () => setOpen(!open),\n });\n\n return asChild && isValidElement(children)\n ? inject(children)\n : inject(children as React.ReactElement);\n};\n\nexport const SubMenuContent: React.FC<{\n children: React.ReactNode;\n css?: Interpolation<Theme>;\n}> = ({ children, css: userCss }) => {\n const { open } = useSub();\n const parentLevel = useContext(LevelCtx);\n const menuGap = useContext(GapCtx);\n\n const clipRef = useRef<HTMLDivElement | null>(null);\n const innerRef = useRef<HTMLDivElement | null>(null);\n const seqRef = useRef(0);\n const firstRef = useRef(true);\n\n useLayoutEffect(() => {\n const clip = clipRef.current;\n const inner = innerRef.current;\n if (!clip || !inner) return;\n\n const key = ++seqRef.current;\n const dur = \"360ms cubic-bezier(.25,.8,.4,1)\";\n\n if (firstRef.current) {\n firstRef.current = false;\n clip.style.transition = \"none\";\n if (open) {\n clip.style.maxHeight = \"none\";\n clip.style.overflow = \"visible\";\n } else {\n clip.style.maxHeight = \"0px\";\n clip.style.overflow = \"hidden\";\n }\n return;\n }\n\n const from = open ? 0 : inner.scrollHeight;\n const to = open ? inner.scrollHeight : 0;\n\n clip.style.transition = \"none\";\n clip.style.overflow = \"hidden\";\n clip.style.maxHeight = `${from}px`;\n void clip.offsetHeight;\n clip.style.transition = `max-height ${dur}`;\n clip.style.maxHeight = `${to}px`;\n\n const onEnd = (e: TransitionEvent) => {\n if (e.target !== clip || e.propertyName !== \"max-height\") return;\n if (key !== seqRef.current) return;\n\n clip.style.transition = \"none\";\n if (open) {\n clip.style.maxHeight = \"none\";\n clip.style.overflow = \"visible\";\n } else {\n clip.style.maxHeight = \"0px\";\n clip.style.overflow = \"hidden\";\n }\n\n clip.removeEventListener(\"transitionend\", onEnd);\n clip.removeEventListener(\"transitioncancel\", onCancel);\n };\n\n const onCancel = () => {\n if (key !== seqRef.current) return;\n clip.removeEventListener(\"transitionend\", onEnd);\n clip.removeEventListener(\"transitioncancel\", onCancel);\n };\n\n clip.addEventListener(\"transitionend\", onEnd);\n clip.addEventListener(\"transitioncancel\", onCancel);\n\n return () => {\n clip.removeEventListener(\"transitionend\", onEnd);\n clip.removeEventListener(\"transitioncancel\", onCancel);\n };\n }, [open]);\n\n useLayoutEffect(() => {\n const clip = clipRef.current;\n const inner = innerRef.current;\n if (!clip || !inner || !(window as any).ResizeObserver) return;\n\n const ro = new (window as any).ResizeObserver(() => {\n if (!open) return;\n const isAnimating =\n clip.style.maxHeight !== \"none\" &&\n (clip.style.transition || \"\").includes(\"max-height\");\n\n if (isAnimating) {\n clip.style.transition = \"none\";\n clip.style.maxHeight = \"none\";\n clip.style.overflow = \"visible\";\n }\n });\n\n ro.observe(inner);\n return () => {\n ro.disconnect();\n };\n }, [open]);\n\n useEffect(() => {\n const root = innerRef.current;\n if (!root) return;\n\n const NATIVES =\n \"a[href],button,input,select,textarea,summary,[contenteditable='true']\";\n const ROLES =\n \"[role='menuitem'],[role='menuitemradio'],[role='menuitemcheckbox']\";\n\n const natives = Array.from(root.querySelectorAll<HTMLElement>(NATIVES));\n const roleItems = Array.from(root.querySelectorAll<HTMLElement>(ROLES));\n\n if (open) {\n natives.forEach((el) => {\n if (el.hasAttribute(\"data-pf-prev-tabindex\")) {\n const prev = el.getAttribute(\"data-pf-prev-tabindex\");\n if (prev === \"\") el.removeAttribute(\"tabindex\");\n else if (prev != null) el.setAttribute(\"tabindex\", prev);\n el.removeAttribute(\"data-pf-prev-tabindex\");\n } else {\n el.removeAttribute(\"tabindex\");\n }\n });\n roleItems.forEach((el) => {\n if (!el.hasAttribute(\"tabindex\")) el.setAttribute(\"tabindex\", \"0\");\n else if (el.getAttribute(\"tabindex\") === \"-1\") el.setAttribute(\"tabindex\", \"0\");\n });\n } else {\n natives.forEach((el) => {\n if (!el.hasAttribute(\"data-pf-prev-tabindex\")) {\n const cur = el.getAttribute(\"tabindex\");\n if (cur != null) el.setAttribute(\"data-pf-prev-tabindex\", cur);\n else el.setAttribute(\"data-pf-prev-tabindex\", \"\");\n }\n el.setAttribute(\"tabindex\", \"-1\");\n });\n roleItems.forEach((el) => {\n el.setAttribute(\"tabindex\", \"-1\");\n });\n }\n }, [open]);\n\n useEffect(() => {\n const clip = clipRef.current;\n if (!clip) return;\n const onFocusIn = () => {\n clip.style.overflow = \"visible\";\n };\n const onFocusOut = (e: FocusEvent) => {\n if (!clip.contains(e.relatedTarget as Node)) {\n clip.style.overflow = open ? \"visible\" : \"hidden\";\n }\n };\n clip.addEventListener(\"focusin\", onFocusIn);\n clip.addEventListener(\"focusout\", onFocusOut);\n return () => {\n clip.removeEventListener(\"focusin\", onFocusIn);\n clip.removeEventListener(\"focusout\", onFocusOut);\n };\n }, [open]);\n\n const innerCss = emCss({\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: menuGap,\n margin: 0,\n padding: 0,\n opacity: open ? 1 : 0,\n transform: open ? \"translateY(0) scale(1)\" : \"translateY(16px) scale(0.96)\",\n transition: \"opacity 0.35s ease, transform 0.28s ease\",\n pointerEvents: open ? \"auto\" : \"none\",\n willChange: \"opacity, transform\",\n });\n\n return (\n <LevelCtx.Provider value={parentLevel + 1}>\n <div\n role=\"group\"\n data-open={open ? \"\" : undefined}\n className=\"plainframe-ui-submenu-content\"\n css={[emCss({ width: \"100%\" }), userCss]}\n >\n <div\n ref={clipRef}\n className=\"plainframe-ui-submenu-clip\"\n css={emCss({\n willChange: \"max-height\",\n contain: \"layout style\",\n position: \"relative\",\n overflow: \"hidden\",\n })}\n >\n <div ref={innerRef} className=\"plainframe-ui-submenu-inner\" css={innerCss}>\n {children}\n </div>\n </div>\n </div>\n </LevelCtx.Provider>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useContext, useMemo, useState, forwardRef } from \"react\";\nimport { css as emCss, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Switch } from \"./Switch\";\nimport { Checkbox } from \"./Checkbox\";\nimport { MenuVariantCtx, DenseCtx as MenuDenseCtx, LevelCtx } from \"./Menu\";\nimport {\n MenuCtx as DropdownMenuCtx,\n FocusCtx as DropdownFocusCtx,\n RootBusCtx as DropdownRootBusCtx,\n} from \"./DropdownMenu\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\nconst useMenu = () => useContext(DropdownMenuCtx);\nconst useFocusOpts = () => useContext(DropdownFocusCtx);\nconst useRootBus = () => useContext(DropdownRootBusCtx);\n\nexport type MenuItemProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n disabled?: boolean;\n destructive?: boolean;\n inset?: boolean | number;\n closeOnSelect?: boolean;\n onSelect?: () => void;\n css?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n selected?: boolean;\n meta?: React.ReactNode;\n};\n\nexport type MenuCheckboxItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n value?: string | number;\n};\n\nexport type MenuRadioGroupProps = {\n value?: string | number;\n defaultValue?: string | number;\n onValueChange?: (val: string | number) => void;\n children?: React.ReactNode;\n};\n\nexport type MenuRadioItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n value: string | number;\n};\n\nexport type MenuLabelProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n inset?: boolean;\n css?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n wrap?: boolean;\n};\n\nexport type MenuSeparatorProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n css?: Interpolation<Theme>;\n variant?: \"full\" | \"middle\" | \"inset\";\n};\n\ntype ItemPrivate = { __index?: number };\n\nexport const MenuItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MenuItemProps & ItemPrivate>(\n function MenuItem(\n {\n disabled = false,\n destructive = false,\n inset,\n closeOnSelect = true,\n onSelect,\n children,\n className,\n css: userCss,\n startIcon,\n endIcon,\n selected = false,\n meta,\n __index,\n ...rest\n },\n ref\n ) {\n const dd = useMenu();\n const rootBus = useRootBus();\n const { allItemsTabbable } = useFocusOpts() ?? { allItemsTabbable: true };\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const denseFromMenu = useContext(MenuDenseCtx);\n const dense = !!denseFromMenu;\n\n const isActive = dd && __index != null && dd.activeIndex === __index;\n const isSubTrigger = (rest as any)[\"data-subtrigger\"] !== undefined;\n\n const nesting = useContext(LevelCtx) ?? 0;\n const insetLevel = typeof inset === \"number\" ? inset : inset === false ? 0 : nesting;\n\n const variant = useContext(MenuVariantCtx);\n const variantHover =\n variant === \"subtle\"\n ? theme.surface?.subtleHover ?? theme.neutral[100]\n : variant === \"outlined\"\n ? theme.surface?.subtleBg ?? theme.neutral[100]\n : theme.surface?.subtleBg ?? theme.neutral[100];\n\n const itemCss = emCss({\n width: \"100%\",\n borderRadius: theme.radius.md,\n padding: `${dense ? theme.spacing.xs : theme.spacing.sm} ${theme.spacing.sm}`,\n paddingLeft:\n insetLevel > 0\n ? `calc(${theme.spacing.md} + (${theme.spacing.xl} * ${insetLevel}))`\n : theme.spacing.md,\n minHeight: dense ? theme.componentHeights.sm : theme.componentHeights.md,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n fontWeight: 500,\n fontSize: theme.fontSizes.md,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.55 : 1,\n userSelect: \"none\",\n background: selected || isActive\n ? (destructive ? theme.palette.danger[50] : variantHover)\n : \"transparent\",\n color: destructive ? theme.palette.danger[800] : theme.text.primary,\n transition: \"background-color .16s ease, color .16s ease\",\n \"&:hover\": disabled ? {} : { background: destructive ? theme.palette.danger[50] : variantHover },\n \"&:focus-visible\": disabled ? {} : { background: destructive ? theme.palette.danger[50] : variantHover },\n \"& > [data-label]\": {\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n });\n\n const iconStartBox = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const iconEndBox = emCss({\n marginLeft: \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n lineHeight: 0,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n color: theme.text.secondary,\n });\n\n const overlayCss: Interpolation<Theme>[] = [];\n if (dense) overlayCss.push({ minHeight: theme.componentHeights.sm });\n\n const activate = () => {\n onSelect?.();\n if (closeOnSelect && !isSubTrigger) rootBus?.closeAll();\n };\n\n const moveFocus = (currentEl: HTMLElement, idxGetter: (len: number, cur: number) => number) => {\n if (dd) {\n const nodes = (dd.listRef.current || []).filter(Boolean) as HTMLElement[];\n if (nodes.length) {\n const cur = Math.max(0, nodes.indexOf(currentEl));\n const next = idxGetter(nodes.length, cur);\n dd.setActiveIndex(next);\n nodes[next]?.focus();\n return;\n }\n }\n const container = currentEl.closest('[role=\"menu\"]') as HTMLElement | null;\n if (!container) return;\n const candidates = Array.from(\n container.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n )\n ).filter((el) => !el.hasAttribute(\"aria-disabled\"));\n if (!candidates.length) return;\n const cur = Math.max(0, candidates.indexOf(currentEl));\n const next = idxGetter(candidates.length, cur);\n candidates[next]?.focus();\n };\n\n return (\n <div\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? \"\" : undefined}\n tabIndex={\n disabled ? -1 : dd ? (allItemsTabbable ? 0 : isActive ? 0 : -1) : 0\n }\n ref={(node) => {\n if (dd) {\n const arr = dd.listRef.current;\n if (node) {\n if (__index != null) arr[__index] = node as any;\n else if (!arr.includes(node as any)) arr.push(node as any);\n }\n }\n if (typeof ref === \"function\") ref(node);\n else if (ref && \"current\" in (ref as any)) (ref as any).current = node;\n }}\n onMouseEnter={() => {\n if (!disabled && dd && __index != null) dd.setActiveIndex(__index);\n }}\n onFocus={() => {\n if (!disabled && dd && __index != null) dd.setActiveIndex(__index);\n }}\n onMouseLeave={() => {\n if (dd && __index != null && dd.activeIndex === __index) dd.setActiveIndex(null);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n const el = e.currentTarget as HTMLElement;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n return;\n }\n if (e.key === \"Escape\") {\n rootBus?.closeAll();\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n moveFocus(el, (len, cur) => (cur + 1) % len);\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n moveFocus(el, (len, cur) => (cur - 1 + len) % len);\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n moveFocus(el, (len) => 0);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n moveFocus(el, (len) => len - 1);\n return;\n }\n }}\n className={[\"plainframe-ui-menu-item\", className || \"\"].join(\" \").trim()}\n css={emCss(\n ...[\n focusRing({ color: destructive ? \"danger\" : \"neutral\" }),\n itemCss,\n ...(overlayCss as Interpolation<Theme>[]),\n userCss as any\n ].flat()\n )}\n {...rest}\n onClick={() => {\n if (disabled) return;\n activate();\n }}\n >\n {startIcon && (\n <span className=\"plainframe-ui-menu-item-start\" css={iconStartBox}>\n {startIcon}\n </span>\n )}\n {children}\n {(meta != null || endIcon) && (\n <span className=\"plainframe-ui-menu-item-end\" css={iconEndBox}>\n {meta != null ? (\n <span\n className=\"plainframe-ui-menu-item-meta\"\n css={emCss({\n lineHeight: 1,\n fontSize: theme.fontSizes.md,\n color: theme.text.secondary,\n whiteSpace: \"nowrap\",\n marginRight: endIcon ? 6 : 0,\n })}\n >\n {meta}\n </span>\n ) : null}\n {endIcon}\n </span>\n )}\n </div>\n );\n }\n);\n\ntype CheckboxCtxT = {\n values: Array<string | number>;\n toggle: (v: string | number) => void;\n};\n\nconst CheckboxCtx = React.createContext<CheckboxCtxT | null>(null);\n\nexport const MenuCheckboxGroup: React.FC<{\n values?: Array<string | number>;\n defaultValues?: Array<string | number>;\n onValuesChange?: (v: Array<string | number>) => void;\n children: React.ReactNode;\n}> = ({ values, defaultValues, onValuesChange, children }) => {\n const [internal, setInternal] = useState<Array<string | number>>(defaultValues ?? []);\n const isControlled = values !== undefined;\n const vals = isControlled ? (values as Array<string | number>) : internal;\n\n const toggle = (v: string | number) => {\n const exists = vals.some((x) => Object.is(x, v));\n const next = exists ? vals.filter((x) => !Object.is(x, v)) : [...vals, v];\n if (!isControlled) setInternal(next);\n onValuesChange?.(next);\n };\n\n const ctx = useMemo<CheckboxCtxT>(() => ({ values: vals, toggle }), [vals]);\n return <CheckboxCtx.Provider value={ctx}>{children}</CheckboxCtx.Provider>;\n};\n\nexport const MenuCheckboxItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuCheckboxItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuCheckboxItemProps & ItemPrivate>(\n function MenuCheckboxItem(\n { checked, defaultChecked = false, onCheckedChange, value, children, __index, disabled = false, css: userCss, className, ...rest },\n ref\n ) {\n const group = useContext(CheckboxCtx);\n const grouped = !!group && value !== undefined;\n\n const isControlled = !grouped && checked !== undefined;\n const [internal, setInternal] = useState<boolean>(() => {\n if (grouped) return group!.values.some((v) => Object.is(v, value));\n return !!defaultChecked;\n });\n\n const isChecked = grouped\n ? group!.values.some((v) => Object.is(v, value))\n : isControlled\n ? !!checked\n : internal;\n\n const theme = usePlainframeUITheme();\n\n const handleToggle = () => {\n if (disabled) return;\n if (grouped) {\n group!.toggle(value!);\n } else {\n const next = !isChecked;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next);\n }\n };\n\n const labelCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n });\n\n const checkboxWrapCss = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n borderRadius: theme.radius.sm,\n transition: \"background-color .12s ease\",\n });\n\n const checkboxCss = emCss({ pointerEvents: \"none\" });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-checkbox-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n role=\"menuitemcheckbox\"\n aria-checked={isChecked}\n closeOnSelect={false}\n onSelect={handleToggle}\n disabled={disabled}\n startIcon={\n <span\n data-menu-checkbox-wrapper\n className=\"plainframe-ui-menu-checkbox-wrapper\"\n css={checkboxWrapCss}\n >\n <Checkbox\n size=\"sm\"\n checked={isChecked}\n css={checkboxCss}\n className=\"plainframe-ui-menu-checkbox\"\n />\n </span>\n }\n css={userCss}\n >\n <span data-label css={labelCss} className=\"plainframe-ui-menu-item-label\">\n {children}\n </span>\n </MenuItem>\n );\n }\n);\nMenuCheckboxItem.displayName = \"MenuCheckboxItem\";\n\nexport type MenuSwitchItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n switchSize?: \"sm\" | \"md\" | \"lg\";\n switchCss?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n};\n\nexport const MenuSwitchItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuSwitchItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuSwitchItemProps & ItemPrivate>(\n function MenuSwitchItem(\n {\n checked,\n defaultChecked = false,\n onCheckedChange,\n children,\n __index,\n disabled = false,\n css: userCss,\n switchSize = \"md\",\n switchCss,\n startIcon,\n className,\n ...rest\n },\n ref\n ) {\n const isControlled = checked !== undefined;\n const [internal, setInternal] = useState<boolean>(!!defaultChecked);\n const value = isControlled ? !!checked : internal;\n\n const labelCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n });\n\n const switchWrapCss = emCss({\n marginLeft: \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n });\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next);\n };\n\n const iconStartBox = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-switch-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n disabled={disabled}\n closeOnSelect={false}\n onSelect={toggle}\n css={userCss}\n >\n {startIcon && (\n <span className=\"plainframe-ui-menu-item-start\" css={iconStartBox}>\n {startIcon}\n </span>\n )}\n <span data-label css={labelCss} className=\"plainframe-ui-menu-item-label\">\n {children}\n </span>\n <span className=\"plainframe-ui-menu-switch-wrap\" css={switchWrapCss}>\n <Switch\n size={switchSize}\n checked={value}\n css={emCss({ pointerEvents: \"none\", padding: 0, marginRight: -1 }, switchCss as any)}\n className=\"plainframe-ui-menu-switch\"\n tabIndex={-1}\n />\n </span>\n </MenuItem>\n );\n }\n);\nMenuSwitchItem.displayName = \"MenuSwitchItem\";\n\ntype RadioCtxT = {\n value?: string | number;\n onChange?: (v: string | number) => void;\n};\nconst RadioCtx = React.createContext<RadioCtxT | null>(null);\n\nexport const MenuRadioGroup: React.FC<MenuRadioGroupProps> = ({\n value,\n defaultValue,\n onValueChange,\n children,\n}) => {\n const [uc, setUc] = useState<string | number | undefined>(defaultValue);\n const val = value ?? uc;\n const onChange = (v: string | number) => {\n if (value !== undefined) onValueChange?.(v);\n else {\n setUc(v);\n onValueChange?.(v);\n }\n };\n const ctx = useMemo<RadioCtxT>(() => ({ value: val, onChange }), [val]);\n return <RadioCtx.Provider value={ctx}>{children}</RadioCtx.Provider>;\n};\nMenuRadioGroup.displayName = \"MenuRadioGroup\";\n\nexport const MenuRadioItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuRadioItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuRadioItemProps & ItemPrivate>(\n function MenuRadioItem({ value, children, __index, disabled = false, css: userCss, className, ...rest }, ref) {\n const radio = useContext(RadioCtx);\n const checked = radio?.value === value;\n const theme = usePlainframeUITheme();\n\n const dotBoxCss = emCss({\n width: theme.spacing.md,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginLeft: -1,\n });\n\n const dotInnerCss = emCss({\n width: 7,\n height: 7,\n borderRadius: \"100%\",\n backgroundColor: theme.palette.primary[600],\n transform: checked ? \"scale(1)\" : \"scale(0.4)\",\n opacity: checked ? 1 : 0,\n transition: \"transform 140ms ease-out, opacity 140ms linear\",\n transformOrigin: \"center center\",\n });\n\n const textCss = emCss({ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-radio-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n role=\"menuitemradio\"\n aria-checked={checked}\n closeOnSelect={false}\n onSelect={() => {\n if (!disabled) (radio as any)?.onChange?.(value as any);\n }}\n disabled={disabled}\n css={userCss}\n >\n <span className=\"plainframe-ui-menu-radio-dotbox\" css={dotBoxCss}>\n <span className=\"plainframe-ui-menu-radio-dot\" css={dotInnerCss} />\n </span>\n <span className=\"plainframe-ui-menu-item-label\" css={textCss}>\n {children}\n </span>\n </MenuItem>\n );\n }\n);\n\nexport const MenuLabel: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuLabelProps> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuLabelProps>(function MenuLabel(\n { inset, className, css: userCss, children, startIcon, endIcon, wrap = false, ...rest },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const base = emCss({\n display: \"flex\",\n alignItems: \"center\",\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n color: theme.text.secondary,\n fontWeight: 500,\n ...(inset ? { paddingLeft: `calc(${theme.spacing.lg} * 2)` } : null),\n gap: theme.spacing.xs,\n });\n\n const textCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: wrap ? \"normal\" : \"nowrap\",\n });\n\n const iconStartBox = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n padding: \"0 3px 0 2px\",\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const iconEndBox = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n lineHeight: 0,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n return (\n <div\n ref={ref}\n role=\"presentation\"\n className={[\"plainframe-ui-menu-label\", className || \"\"].join(\" \").trim()}\n css={emCss(base, userCss as any)}\n {...rest}\n >\n {startIcon && <span className=\"plainframe-ui-menu-label-start\" css={iconStartBox}>{startIcon}</span>}\n <span className=\"plainframe-ui-menu-label-text\" css={textCss}>\n {children}\n </span>\n {endIcon && <span className=\"plainframe-ui-menu-label-end\" css={iconEndBox}>{endIcon}</span>}\n </div>\n );\n});\nMenuLabel.displayName = \"MenuLabel\";\n\nexport const MenuSeparator: React.FC<MenuSeparatorProps> = ({\n className,\n css: userCss,\n variant = \"full\",\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const padVar = `var(--pfui-panel-pad, ${\n typeof theme.spacing.xs === \"number\" ? theme.spacing.xs + \"px\" : String(theme.spacing.xs)\n })`;\n\n const fullCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: \"calc(var(--pfui-panel-pad, 0px) * -1)\",\n marginRight: \"calc(var(--pfui-panel-pad, 0px) * -1)\",\n });\n\n const middleCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: `${theme.spacing.md}`,\n marginRight: `${theme.spacing.md}`,\n });\n\n const insetCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: `${theme.spacing.lg}`,\n marginRight: 0,\n });\n\n const variantCss = variant === \"full\" ? fullCss : variant === \"middle\" ? middleCss : insetCss;\n\n return (\n <div\n role=\"separator\"\n className={[\"plainframe-ui-menu-separator\", className || \"\"].join(\" \").trim()}\n css={emCss(variantCss, userCss as any)}\n {...rest}\n />\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype SwitchProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n label?: React.ReactNode;\n className?: string;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n} & WithCssProp &\n Omit<React.HTMLAttributes<HTMLLabelElement>, \"onChange\" | \"className\">;\n\nexport const Switch: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<SwitchProps> & React.RefAttributes<HTMLLabelElement>\n> = forwardRef<HTMLLabelElement, SwitchProps>(function Switch(\n {\n checked: checkedProp,\n defaultChecked = false,\n onChange,\n disabled = false,\n size = \"md\",\n label,\n className,\n css: userRootCss,\n trackCss: userTrackCss,\n thumbCss: userThumbCss,\n labelCss: userLabelCss,\n ...props\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const sizeMap = {\n sm: { trackW: 25, trackH: 16, thumb: 11, labelGap: 8 },\n md: { trackW: 35, trackH: 20, thumb: 14, labelGap: 8 },\n lg: { trackW: 45, trackH: 24, thumb: 18, labelGap: 10 },\n } as const;\n const motion = { slideMs: 250, pressMs: 150, easing: \"ease\" } as const;\n\n const isControlled = checkedProp !== undefined;\n const [internal, setInternal] = useState<boolean>(defaultChecked);\n const isOn = isControlled ? !!checkedProp : internal;\n\n const [animating, setAnimating] = useState(false);\n useEffect(() => {\n if (disabled) return;\n setAnimating(true);\n const t = setTimeout(() => setAnimating(false), motion.pressMs);\n return () => clearTimeout(t);\n }, [isOn, disabled]);\n\n const sizeKey = ([\"sm\", \"md\", \"lg\"].includes(size!) ? size : \"md\") as \"sm\" | \"md\" | \"lg\";\n const s = sizeMap[sizeKey];\n const slide = `${motion.slideMs}ms ${motion.easing}`;\n\n const primary = theme.palette?.primary?.[600] ?? theme.neutral[900];\n const offTrack = theme.neutral[300];\n const trackColor = isOn ? primary : offTrack;\n const thumbColor = isOn ? theme.text.onColors.primary : \"#ffffff\";\n\n const { trackW, trackH, thumb } = s;\n const pad = (trackH - thumb) / 2;\n\n const rootBaseCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: s.labelGap,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n width: \"fit-content\",\n padding: theme.spacing.xs,\n borderRadius: theme.radius.sm,\n outline: \"none\",\n });\n\n const trackBaseCss = css({\n position: \"relative\",\n width: trackW,\n height: trackH,\n backgroundColor: trackColor,\n borderRadius: theme.radius.full,\n transition: `background-color ${slide}, opacity 120ms ease`,\n willChange: \"background-color\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n });\n\n const thumbBaseCss = css({\n position: \"absolute\",\n top: pad,\n left: isOn ? trackW - thumb - pad : pad,\n width: thumb,\n height: thumb,\n backgroundColor: thumbColor,\n borderRadius: theme.radius.full,\n transition: `left ${slide}, transform ${slide}, background-color 0.25s ease`,\n transform: animating ? \"scaleX(1.2)\" : \"scaleX(1)\",\n transformOrigin: isOn ? \"right center\" : \"left center\",\n });\n\n const labelBaseCss = css({\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n color: disabled ? theme.text.muted : theme.text.primary,\n });\n\n const toggle = () => {\n if (disabled) return;\n const next = !isOn;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLLabelElement>) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n };\n\n return (\n <label\n ref={ref}\n role=\"switch\"\n aria-checked={isOn}\n aria-disabled={disabled || undefined}\n data-checked={isOn ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n tabIndex={disabled ? -1 : 0}\n onClick={toggle}\n onKeyDown={handleKeyDown}\n className={[\"plainframe-ui-switch\", className || \"\"].join(\" \").trim()}\n css={[rootBaseCss, focusRing({ color: isOn ? \"primary\" : \"neutral\" }), userRootCss]}\n {...props}\n >\n <div\n className=\"plainframe-ui-switch-track\"\n css={[trackBaseCss, userTrackCss]}\n >\n <div className=\"plainframe-ui-switch-thumb\" css={[thumbBaseCss, userThumbCss]} />\n </div>\n\n {label != null && (\n <span className=\"plainframe-ui-switch-label\" css={[labelBaseCss, userLabelCss]}>\n {label}\n </span>\n )}\n </label>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { useCallback, useMemo, useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\ntype CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\ntype CheckboxProps = WithCssProp & {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: CheckboxSize;\n label?: React.ReactNode;\n description?: React.ReactNode;\n rounded?: boolean;\n checkedIcon?: React.ReactNode;\n color?:\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"danger\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | string;\n boxCss?: Interpolation<Theme>;\n checkCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n descriptionCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst getSize = (theme: ReturnType<typeof usePlainframeUITheme>, size: CheckboxSize) => {\n if (size === \"sm\") {\n return {\n box: 16,\n labelFont: theme.fontSizes.sm,\n gap: 8,\n borderRadius: theme.radius.xxs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n }\n if (size === \"lg\") {\n return {\n box: 24,\n labelFont: theme.fontSizes.lg,\n gap: 8,\n borderRadius: theme.radius.xs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n }\n return {\n box: 20,\n labelFont: theme.fontSizes.md,\n gap: 8,\n borderRadius: theme.radius.xs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n};\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n (\n {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n size = \"md\",\n label,\n description,\n rounded = false,\n checkedIcon,\n color = \"primary\",\n css: userCss,\n boxCss: userBoxCss,\n checkCss: userCheckCss,\n labelCss: userLabelCss,\n descriptionCss: userDescriptionCss,\n className,\n ...props\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const isControlled = typeof checked === \"boolean\";\n const [internalChecked, setInternalChecked] = useState<boolean>(defaultChecked);\n const isOn = isControlled ? (checked as boolean) : internalChecked;\n\n const sizeKey: CheckboxSize = size === \"sm\" || size === \"lg\" ? size : \"md\";\n const S = useMemo(() => getSize(theme, sizeKey), [theme, sizeKey]);\n\n const { checkedBg, checkColor, borderCol, hoverBg, gapPx } = useMemo(() => {\n const palette = (theme.palette || {}) as Record<string, Record<string, string>>;\n const neutralScale = (theme.neutral || {}) as Record<string, string>;\n const onColors = (theme.text?.onColors || {}) as Record<string, string>;\n\n let scale: Record<string, string>;\n let onKey: string;\n\n if (color === \"neutral\" || color === \"secondary\") {\n scale = neutralScale;\n onKey = \"neutral\";\n } else if (typeof color === \"string\" && Object.prototype.hasOwnProperty.call(palette, color)) {\n scale = palette[color] || palette.primary || neutralScale;\n onKey = color;\n } else {\n scale = palette.primary || neutralScale;\n onKey = \"primary\";\n }\n\n const bg =\n scale[600] ??\n scale[500] ??\n scale[400] ??\n Object.values(scale)[0] ??\n theme.palette.primary[600];\n\n const chk =\n onColors[onKey] ??\n onColors.primary ??\n theme.text?.onColors?.primary ??\n theme.text.primary;\n\n const gapVal = typeof S.gap === \"number\" ? S.gap + 2 : S.gap;\n\n return {\n checkedBg: bg,\n checkColor: chk,\n borderCol: theme.surface.border,\n hoverBg: theme.surface.panelHover,\n gapPx: gapVal,\n };\n }, [S.gap, color, theme]);\n\n const rootCss = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: label && description ? \"flex-start\" : \"center\",\n gap: gapPx,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n userSelect: \"auto\",\n position: \"relative\",\n width: \"fit-content\",\n borderRadius: theme.radius.sm,\n padding: theme.spacing.xs,\n transition: \"background-color .16s ease, color .16s ease, opacity .16s ease\",\n '&:not([data-disabled=\"true\"]):hover input:not(:checked) + .plainframe-ui-checkbox-box': {\n backgroundColor: hoverBg as string,\n outlineColor: borderCol as string,\n },\n \"input:checked + .plainframe-ui-checkbox-box\": {\n backgroundColor: checkedBg,\n outlineColor: checkedBg,\n },\n \".plainframe-ui-checkbox-check\": {\n opacity: 0,\n transform: \"scale(0.2)\",\n },\n \"input:checked + .plainframe-ui-checkbox-box .plainframe-ui-checkbox-check\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n }),\n [borderCol, checkedBg, description, disabled, gapPx, hoverBg, label, theme.radius.sm, theme.spacing.xs]\n );\n\n const inputCss = useMemo(\n () =>\n css({\n position: \"absolute\",\n opacity: 0,\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n pointerEvents: \"none\",\n }),\n []\n );\n\n const boxBase = useMemo(\n () =>\n css({\n width: S.box,\n height: S.box,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"transparent\",\n outline: `${S.borderWidth} solid ${borderCol}`,\n outlineOffset: `-${S.borderWidth}`,\n borderRadius: rounded ? theme.radius.full : S.borderRadius,\n transition: \"background-color .16s ease, outline-color .05s ease, transform .16s ease\",\n flex: \"0 0 auto\",\n verticalAlign: \"middle\",\n overflow: \"hidden\",\n }),\n [S.box, S.borderRadius, S.borderWidth, borderCol, rounded, theme.radius.full]\n );\n\n const checkDims = useMemo(\n () => ({\n w: Math.round(S.box * S.iconRatioW),\n h: Math.round(S.box * S.iconRatioH),\n }),\n [S.box, S.iconRatioH, S.iconRatioW]\n );\n\n const checkBaseCss = useMemo(\n () =>\n css({\n width: checkDims.w,\n height: checkDims.h,\n transition: \"opacity .14s ease, transform .14s ease\",\n color: checkColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n pointerEvents: \"none\",\n \"& > svg, & > img\": { width: \"100%\", height: \"100%\", display: \"block\" },\n }),\n [checkColor, checkDims.h, checkDims.w]\n );\n\n const textColCss = useMemo(\n () =>\n css({\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n }),\n []\n );\n\n const baseLabelCss = useMemo(\n () =>\n css({\n fontSize: S.labelFont,\n lineHeight: 1.1,\n fontWeight: 500,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n color: theme.text.primary,\n }),\n [S.labelFont, theme.text.primary]\n );\n\n const baseDescriptionCss = useMemo(\n () =>\n css({\n fontSize: S.labelFont,\n lineHeight: 1.25,\n color: theme.text.secondary,\n fontWeight: 400,\n marginTop: label && description ? theme.spacing.xs : 0,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n }),\n [S.labelFont, description, label, theme.spacing.xs, theme.text.secondary]\n );\n\n const toggle = useCallback(() => {\n if (disabled) return;\n if (isControlled) {\n onChange?.(!isOn);\n } else {\n setInternalChecked((prev) => {\n const next = !prev;\n onChange?.(next);\n return next;\n });\n }\n }, [disabled, isControlled, isOn, onChange]);\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n },\n [disabled, toggle]\n );\n\n return (\n <label\n ref={ref}\n role=\"checkbox\"\n aria-checked={isOn}\n aria-disabled={disabled || undefined}\n data-state={isOn ? \"checked\" : \"unchecked\"}\n className={[\"plainframe-ui-checkbox\", className || \"\"].join(\" \").trim()}\n css={[rootCss, focusRing({color: isOn ? \"primary\" : \"neutral\"}), userCss, disabled ? css({ opacity: 0.6 }) : null]}\n data-disabled={disabled ? \"true\" : \"false\"}\n tabIndex={!disabled ? 0 : -1}\n onKeyDown={onKeyDown}\n >\n <input\n type=\"checkbox\"\n checked={isOn}\n onChange={toggle}\n disabled={disabled}\n css={inputCss}\n {...props}\n tabIndex={-1}\n />\n\n <span className=\"plainframe-ui-checkbox-box\" css={[boxBase, userBoxCss]} aria-hidden=\"true\">\n <span className=\"plainframe-ui-checkbox-check\" css={[checkBaseCss, userCheckCss]}>\n {isOn &&\n (checkedIcon || (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={checkColor}\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n css={css({ width: \"100%\", height: \"100%\", display: \"block\" })}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n ))}\n </span>\n </span>\n\n {(label || description) && (\n <span className=\"plainframe-ui-checkbox-text\" css={textColCss}>\n {label && (\n <span className=\"plainframe-ui-checkbox-label\" css={[baseLabelCss, userLabelCss]}>\n {label}\n </span>\n )}\n {description && (\n <span className=\"plainframe-ui-checkbox-description\" css={[baseDescriptionCss, userDescriptionCss]}>\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Container, type ContainerProps } from \"./Container\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\ntype CardDirection = \"horizontal\" | \"vertical\";\ntype Align = \"start\" | \"center\" | \"end\";\n\ntype SectionPadding = {\n padding?: ContainerProps[\"padding\"];\n paddingX?: ContainerProps[\"padding\"];\n paddingY?: ContainerProps[\"padding\"];\n};\n\nexport type CardProps = WithCssProp &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"className\"> & {\n variant?: ContainerProps[\"variant\"];\n padding?: ContainerProps[\"padding\"];\n radius?: ContainerProps[\"radius\"];\n\n hoverable?: ContainerProps[\"hoverable\"];\n selectable?: ContainerProps[\"selectable\"];\n selected?: ContainerProps[\"selected\"];\n defaultSelected?: ContainerProps[\"defaultSelected\"];\n onSelectedChange?: (selected: boolean) => void;\n\n width?: ContainerProps[\"width\"];\n height?: ContainerProps[\"height\"];\n gap?: string | number | ContainerProps[\"padding\"];\n\n direction?: CardDirection;\n\n className?: string;\n };\n\ntype CardSectionBaseProps = WithCssProp &\n SectionPadding &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"className\"> & {\n className?: string;\n align?: Align;\n };\n\ntype CardSideProps = CardSectionBaseProps;\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nfunction resolveTokenPadding(\n padding: ContainerProps[\"padding\"],\n theme: Record<string, unknown>\n): string | undefined {\n if (padding == null) return undefined;\n\n if (typeof padding === \"number\") return `${padding}px`;\n\n if (typeof padding === \"string\") {\n const spacingScale =\n (theme.spacing as Record<string, string | number> | undefined) ??\n (theme.space as Record<string, string | number> | undefined);\n if (spacingScale && padding in spacingScale) {\n const v = spacingScale[padding];\n return toLen(v);\n }\n return padding;\n }\n\n return undefined;\n}\n\nfunction flexAlign(\n align: Align | undefined\n): \"flex-start\" | \"center\" | \"flex-end\" {\n switch (align) {\n case \"center\":\n return \"center\";\n case \"end\":\n return \"flex-end\";\n case \"start\":\n default:\n return \"flex-start\";\n }\n}\n\nfunction textAlign(align: Align | undefined): \"left\" | \"center\" | \"right\" {\n switch (align) {\n case \"center\":\n return \"center\";\n case \"end\":\n return \"right\";\n case \"start\":\n default:\n return \"left\";\n }\n}\n\nfunction resolveGap(\n gap: CardProps[\"gap\"],\n theme: Record<string, unknown>\n): string | number | undefined {\n if (gap === null || gap === undefined) {\n const spacing = theme.spacing as Record<string, string | number> | undefined;\n return spacing?.md ?? undefined;\n }\n\n if (typeof gap === \"number\") return gap;\n\n if (typeof gap === \"string\") {\n const spacingScale =\n (theme.spacing as Record<string, string | number> | undefined) ??\n (theme.space as Record<string, string | number> | undefined) ??\n {};\n if (gap in spacingScale) {\n return spacingScale[gap];\n }\n return gap;\n }\n\n return undefined;\n}\n\nfunction sectionPaddingStyles(\n theme: Record<string, unknown>,\n padding?: ContainerProps[\"padding\"],\n paddingX?: ContainerProps[\"padding\"],\n paddingY?: ContainerProps[\"padding\"]\n) {\n const p = resolveTokenPadding(padding, theme);\n const px = resolveTokenPadding(paddingX, theme);\n const py = resolveTokenPadding(paddingY, theme);\n\n const styles: React.CSSProperties = {};\n\n if (p && !px && !py) {\n styles.padding = p;\n }\n if (px) {\n styles.paddingLeft = px;\n styles.paddingRight = px;\n }\n if (py) {\n styles.paddingTop = py;\n styles.paddingBottom = py;\n }\n\n return styles;\n}\n\nfunction resolveColor(theme: Record<string, unknown>, color?: string | \"primary\" | \"secondary\") {\n if (!color) return undefined;\n if (color === \"primary\") return (theme as { text?: { primary?: string } }).text?.primary;\n if (color === \"secondary\") return (theme as { text?: { secondary?: string } }).text?.secondary;\n return color;\n}\n\n/* ───────────────────────── direction ctx ───────────────────────── */\n\nconst CardDirectionCtx = React.createContext<CardDirection>(\"horizontal\");\nconst useCardDirection = () => React.useContext(CardDirectionCtx);\n\n/* ───────────────────────── Card root ───────────────────────── */\n\nexport const Card: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<CardProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n children,\n css: cssProp,\n variant = \"ghost\",\n padding = \"md\",\n radius = \"lg\",\n hoverable,\n selectable,\n selected,\n defaultSelected,\n onSelectedChange,\n width = \"100%\",\n height,\n gap,\n direction = \"horizontal\",\n className,\n onClick,\n ...rest\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const isVertical = direction === \"vertical\";\n\n const cardBase = css({\n position: \"relative\",\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap: resolveGap(gap, theme),\n alignItems: isVertical ? \"stretch\" : \"center\",\n transition: \"all .16s ease\",\n });\n\n return (\n <CardDirectionCtx.Provider value={direction}>\n <Container\n ref={ref}\n variant={variant}\n padding={padding}\n radius={radius}\n hoverable={hoverable}\n selectable={selectable}\n selected={selected}\n defaultSelected={defaultSelected}\n onSelectedChange={onSelectedChange}\n width={width}\n height={height}\n className={[\"plainframe-ui-card\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[focusRing(), cardBase, cssProp]}\n onClick={onClick}\n tabIndex={onClick ? 0 : undefined}\n {...rest}\n >\n {children}\n </Container>\n </CardDirectionCtx.Provider>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\n/* ───────────────────────── sections ───────────────────────── */\n\nexport const CardContent: React.FC<CardSectionBaseProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: flexAlign(align),\n textAlign: textAlign(align),\n ...(isVertical ? { width: \"100%\" } : { flex: 1, minWidth: 0 }),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-content\"\n className={[\"plainframe-ui-card-content\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardStart: React.FC<CardSideProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexShrink: 0,\n justifyContent: flexAlign(align),\n alignItems: flexAlign(align),\n ...(isVertical ? { width: \"100%\" } : {}),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-start\"\n className={[\"plainframe-ui-card-start\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardEnd: React.FC<CardSideProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexShrink: 0,\n justifyContent: flexAlign(align),\n alignItems: flexAlign(align),\n ...(isVertical ? { width: \"100%\" } : {}),\n gap: theme.spacing.xs,\n color: theme.text.secondary,\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-end\"\n className={[\"plainframe-ui-card-end\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/* ───────── CardTitle / CardDescription with weight/size/color ───────── */\n\ntype TextTune = {\n weight?: number | string;\n size?: number | string;\n color?: string | \"primary\" | \"secondary\";\n};\n\nexport const CardTitle: React.FC<CardSectionBaseProps & TextTune> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n weight,\n size,\n color,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = css({\n fontWeight: weight ?? 500,\n fontSize:\n size ??\n (theme.fontSizes?.md !== undefined ? theme.fontSizes.md : \"1rem\"),\n color: resolveColor(theme, color) ?? theme.text?.primary,\n textAlign: textAlign(align),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing?.xs ?? 6,\n });\n\n return (\n <div\n data-slot=\"card-title\"\n className={[\"plainframe-ui-card-title\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardDescription: React.FC<CardSectionBaseProps & TextTune> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n weight,\n size,\n color,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = css({\n fontWeight: weight ?? 400,\n fontSize:\n size ??\n (theme.fontSizes?.md !== undefined ? theme.fontSizes.md : \"0.875rem\"),\n color: resolveColor(theme, color) ?? theme.text?.secondary,\n marginTop: theme.spacing?.xxs ?? 2,\n textAlign: textAlign(align),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-description\"\n className={[\"plainframe-ui-card-description\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useCallback, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype SpaceToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\ntype ContainerVariant = \"panel\" | \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type ContainerProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"style\" | \"color\"\n> & {\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n variant?: ContainerVariant;\n padding?: number | string | SpaceToken;\n radius?: number | string | RadiusToken;\n hoverable?: boolean;\n selectable?: boolean;\n selected?: boolean;\n defaultSelected?: boolean;\n onSelectedChange?: (selected: boolean) => void;\n width?: number | string;\n height?: number | string;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst resolvePadding = (\n padding: ContainerProps[\"padding\"],\n theme: { spacing?: Record<string, string | number>; space?: Record<string, string | number> }\n): string | undefined => {\n if (padding == null) return undefined;\n if (typeof padding === \"number\") return `${padding}px`;\n if (typeof padding === \"string\") {\n const scale = theme.spacing ?? theme.space;\n return toLen(scale?.[padding] ?? padding);\n }\n return undefined;\n};\n\nconst resolveRadius = (\n radius: ContainerProps[\"radius\"],\n theme: { radius?: Record<string, string | number>; radii?: Record<string, string | number> }\n): string | undefined => {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n const scale = theme.radius ?? theme.radii;\n return toLen(scale?.[radius] ?? radius);\n }\n return undefined;\n};\n\nconst baseBgFor = (\n variant: ContainerVariant,\n theme: { surface?: { panelBg?: string; subtleBg?: string } }\n): string => {\n const s = theme.surface ?? {};\n if (variant === \"panel\" || variant === \"outlined\") return s.panelBg ?? \"transparent\";\n if (variant === \"subtle\") return s.subtleBg ?? \"transparent\";\n return \"transparent\";\n};\n\nconst hoverBgFor = (\n variant: ContainerVariant,\n theme: { surface?: { panelHover?: string; panelBg?: string; subtleHover?: string; subtleBg?: string } },\n baseBg: string\n): string => {\n const s = theme.surface ?? {};\n if (variant === \"panel\" || variant === \"outlined\") return s.panelHover ?? s.panelBg ?? baseBg;\n if (variant === \"subtle\") return s.subtleHover ?? s.subtleBg ?? baseBg;\n return s.subtleBg ?? baseBg;\n};\n\nexport const Container: React.ForwardRefExoticComponent<\n ContainerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ContainerProps>(function Container(\n {\n children,\n css: userCss,\n variant = \"ghost\",\n padding,\n radius,\n className,\n hoverable,\n selectable,\n selected: controlledSelected,\n defaultSelected,\n onSelectedChange,\n width,\n height,\n onClick,\n onKeyDown,\n role,\n tabIndex,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n const surface = theme.surface ?? {};\n\n const [internalSelected, setInternalSelected] = useState<boolean>(!!defaultSelected);\n const isControlled = controlledSelected != null;\n const selected = isControlled ? !!controlledSelected : internalSelected;\n\n const baseBg = useMemo<string>(() => baseBgFor(variant, theme), [variant, theme]);\n const hoverBg = useMemo<string>(() => hoverBgFor(variant, theme, baseBg), [variant, theme, baseBg]);\n const selectedBg: string = hoverBg;\n\n const pad = useMemo<string | undefined>(() => resolvePadding(padding, theme), [padding, theme]);\n const rad = useMemo<string | undefined>(() => resolveRadius(radius, theme), [radius, theme]);\n\n const interactive = !!hoverable || !!selectable;\n\n const rootCss = useMemo<Interpolation<Theme>>(\n () =>\n css({\n backgroundColor: baseBg,\n padding: pad,\n borderRadius: rad,\n border:\n variant === \"outlined\"\n ? `${theme.componentHeights?.border ?? \"1px\"} solid ${theme.surface.border ?? \"transparent\"}`\n : undefined,\n backgroundClip: \"padding-box\",\n boxSizing: \"border-box\",\n width: width ? \"100%\" : undefined,\n maxWidth: toLen(width),\n height: toLen(height),\n transition: \"background-color .16s ease, border-color .16s ease\",\n cursor: interactive ? \"pointer\" : undefined,\n ...(interactive ? { \"&:hover\": { backgroundColor: hoverBg } } : {}),\n '&[data-selected=\"true\"]': { backgroundColor: selectedBg },\n ...(interactive\n ? { '&[data-selected=\"true\"]:hover': { backgroundColor: selectedBg } }\n : {}),\n }),\n [baseBg, pad, rad, variant, theme.componentHeights, theme.surface.border, width, height, interactive, hoverBg, selectedBg]\n );\n\n const toggleSelected = useCallback((): void => {\n if (!selectable) return;\n const next = !selected;\n if (!isControlled) setInternalSelected(next);\n onSelectedChange?.(next);\n }, [isControlled, onSelectedChange, selectable, selected]);\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (e) => {\n if (selectable) toggleSelected();\n onClick?.(e);\n },\n [selectable, toggleSelected, onClick]\n );\n\n const handleKeyDownInt = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n if (selectable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n toggleSelected();\n }\n onKeyDown?.(e);\n },\n [selectable, toggleSelected, onKeyDown]\n );\n\n const focusRing = useFocusRing();\n\n return (\n <div\n ref={ref}\n data-variant={variant}\n data-selected={selectable && selected ? \"true\" : undefined}\n aria-pressed={selectable ? selected : undefined}\n className={[\"plainframe-ui-container\", className || \"\"].join(\" \").trim()}\n css={[focusRing(), rootCss, userCss]}\n onClick={handleClick}\n onKeyDown={handleKeyDownInt}\n role={selectable ? role ?? \"button\" : role}\n tabIndex={selectable ? tabIndex ?? 0 : tabIndex}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nContainer.displayName = \"Container\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useState, useEffect, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype AvatarProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | number;\n color?: string;\n rounded?: boolean;\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst sizeKeys = [\"sm\", \"md\", \"lg\"] as const;\n\nconst getSize = (\n size: AvatarProps[\"size\"],\n theme: ReturnType<typeof usePlainframeUITheme>\n) => {\n if (typeof size === \"number\") return size;\n if (sizeKeys.includes(size as unknown as typeof sizeKeys[number]))\n return theme.componentHeights[size as keyof typeof theme.componentHeights];\n return theme.componentHeights.md;\n};\n\nconst getPaletteColor = (\n theme: ReturnType<typeof usePlainframeUITheme>,\n color?: string\n) => {\n const palette = theme.palette?.[color ?? \"primary\"] ?? theme.palette.primary;\n return palette?.[600] ?? palette?.[500] ?? theme.neutral?.[600] ?? theme.neutral?.[500];\n};\n\nconst getForegroundColor = (\n theme: ReturnType<typeof usePlainframeUITheme>,\n color?: string\n) => {\n const onColors = theme.text?.onColors ?? {};\n return onColors[color ?? \"primary\"] ?? onColors.primary ?? theme.text?.primary ?? \"#fff\";\n};\n\nconst getFallbackText = (children: React.ReactNode, alt?: string) => {\n if (typeof children === \"string\") return children;\n return (alt?.trim()?.[0] || \"\").toUpperCase();\n};\n\nexport const Avatar: React.ForwardRefExoticComponent<\n AvatarProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt,\n size = \"md\",\n color = \"primary\",\n rounded = true,\n className,\n css: userCss,\n children,\n ...rest\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const [showImg, setShowImg] = useState(!!src);\n\n useEffect(() => {\n setShowImg(!!src);\n }, [src]);\n\n const px = getSize(size, theme);\n const numeric = typeof px === \"number\" ? px : Number.parseFloat(String(px)) || 0;\n const fontSize = numeric ? Math.round(numeric * (numeric <= 28 ? 0.55 : 0.52)) : undefined;\n const radius = rounded ? theme.radius.full : theme.radius.md;\n const bg = getPaletteColor(theme, color);\n const fg = getForegroundColor(theme, color);\n const fallbackText = getFallbackText(children, alt);\n\n const baseCss = css({\n width: px,\n height: px,\n borderRadius: radius,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n background: showImg ? \"transparent\" : bg,\n color: showImg ? \"inherit\" : fg,\n boxSizing: \"border-box\",\n userSelect: \"none\",\n });\n\n const imgCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"block\",\n objectFit: \"cover\",\n });\n\n const textCss = css({\n fontSize,\n lineHeight: 1,\n fontWeight: 600,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n marginTop: -1,\n });\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-avatar\", className || \"\"].join(\" \").trim()}\n css={[baseCss, userCss]}\n role={showImg ? undefined : \"img\"}\n aria-label={showImg ? undefined : alt}\n {...rest}\n >\n {showImg && src ? (\n <img\n className=\"plainframe-ui-avatar-img\"\n src={src}\n alt={alt}\n css={imgCss}\n onError={() => setShowImg(false)}\n decoding=\"async\"\n loading=\"lazy\"\n />\n ) : typeof children === \"string\" ? (\n <span className=\"plainframe-ui-avatar-initials\" css={textCss}>\n {children}\n </span>\n ) : children ? (\n children\n ) : (\n <span className=\"plainframe-ui-avatar-initials\" css={textCss}>\n {fallbackText}\n </span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, isValidElement, cloneElement } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype AvatarGroupProps = {\n children: React.ReactNode;\n max?: number;\n size?: \"sm\" | \"md\" | \"lg\" | string | number;\n overlap?: number;\n css?: Interpolation<Theme>;\n rounded?: boolean;\n bgColor?: string | \"subtle\" | \"panel\";\n extraLabelCss?: Interpolation<Theme>;\n outlineThickness?: number | string;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n children,\n max,\n size = \"md\",\n overlap = -7,\n css: userCss,\n rounded = true,\n bgColor,\n extraLabelCss,\n outlineThickness = 4,\n className,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const resolveDiameter = (): string => {\n if (typeof size === \"number\") return `${size}px`;\n if (typeof size === \"string\") {\n const h =\n (theme.componentHeights && theme.componentHeights[size]) ??\n (theme.spacing && theme.spacing[size]);\n return toLen(h ?? size)!;\n }\n return \"32px\";\n };\n\n const diameter = resolveDiameter();\n\n const nodes = Children.toArray(children).filter(Boolean);\n const hasMax = typeof max === \"number\" && max >= 0;\n const shown = hasMax && nodes.length > max ? nodes.slice(0, max) : nodes;\n const extra = hasMax && nodes.length > max ? nodes.length - max : 0;\n\n const ring =\n bgColor === \"panel\"\n ? theme.surface.panelBg\n : bgColor === \"subtle\"\n ? theme.surface.subtleBg\n : bgColor ?? theme.surface.appBg;\n\n const ringThickness = toLen(outlineThickness) ?? \"4px\";\n\n const containerCss = css({\n display: \"flex\",\n alignItems: \"center\",\n });\n\n const itemCss = (i: number) =>\n css({\n marginLeft: i === 0 ? 0 : overlap,\n zIndex: shown.length - i,\n boxShadow: `0 0 0 ${ringThickness} ${ring}`,\n backgroundColor: ring,\n borderRadius: rounded ? theme.radius.full : theme.radius.md,\n display: \"inline-flex\",\n width: diameter,\n height: diameter,\n overflow: \"hidden\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n flex: \"0 0 auto\",\n });\n\n const childFillCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n objectFit: \"cover\",\n boxSizing: \"border-box\",\n });\n\n return (\n <div\n role=\"group\"\n tabIndex={-1}\n aria-label=\"Avatar group\"\n className={`plainframe-ui-avatar-group${className ? ` ${className}` : \"\"}`}\n css={[containerCss, userCss, focusRing()]}\n >\n {shown.map((child, i) => {\n if (!isValidElement(child)) {\n return (\n <div key={i} className=\"plainframe-ui-avatar-group-item\" css={itemCss(i)}>\n <span css={childFillCss}>{child}</span>\n </div>\n );\n }\n\n const childElement = child as React.ReactElement<any>;\n const prevCss = childElement.props?.css;\n const mergedCss = prevCss == null ? childFillCss : [childFillCss, prevCss];\n\n const cloned = cloneElement(childElement, {\n size,\n rounded,\n css: mergedCss,\n style: {\n ...childElement.props?.style,\n width: \"100%\",\n height: \"100%\",\n objectFit: childElement.props?.objectFit ?? \"cover\",\n },\n });\n\n return (\n <div key={i} className=\"plainframe-ui-avatar-group-item\" css={itemCss(i)}>\n {cloned}\n </div>\n );\n })}\n\n {extra > 0 && (\n <span\n className=\"plainframe-ui-avatar-group-extra\"\n css={[\n css({\n marginLeft: 5,\n fontSize: theme.fontSizes.md,\n fontWeight: 600,\n lineHeight: 1,\n padding: \"2px 1px\",\n zIndex: 2,\n color: theme.text.secondary,\n }),\n extraLabelCss,\n ]}\n aria-label={`+${extra} more`}\n >\n +{extra}\n </span>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype BadgeAnchorOrigin = {\n vertical?: \"top\" | \"bottom\" | \"center\";\n horizontal?: \"left\" | \"right\" | \"center\";\n};\n\ntype BadgeProps = {\n content?: number | string | React.ReactNode;\n color?:\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"danger\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | string;\n fontColor?: string;\n fontWeight?: number | string;\n fontSize?: number | string;\n variant?: \"standard\" | \"dot\";\n max?: number;\n showZero?: boolean;\n visible?: boolean;\n anchorOrigin?: BadgeAnchorOrigin;\n overlap?: \"circular\" | \"rectangular\";\n children: React.ReactNode;\n animate?: boolean;\n size?: number;\n outline?: boolean;\n outlineColor?: string;\n className?: string;\n badgeClassName?: string;\n css?: Interpolation<any>;\n badgeCss?: Interpolation<any>;\n offsetX?: number | string;\n offsetY?: number | string;\n};\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\ntype Theme = {\n palette?: Record<string, Record<string, string>>;\n neutral?: Record<string, string>;\n text?: {\n onColors?: Record<string, string>;\n primary?: string;\n };\n surface?: {\n appBg?: string;\n };\n};\n\nconst getPaletteScale = (\n theme: Theme,\n color: string\n): { scale: Record<string, string>; onKey: string } => {\n const palette = theme.palette || {};\n const neutralScale = theme.neutral || {};\n if (color === \"neutral\" || color === \"secondary\") {\n return { scale: neutralScale, onKey: \"neutral\" };\n }\n if (typeof color === \"string\" && palette[color]) {\n return { scale: palette[color], onKey: color };\n }\n return { scale: palette.primary || neutralScale, onKey: \"primary\" };\n};\n\nconst getBadgeBg = (scale: Record<string, string>) =>\n scale[600] ?? scale[500] ?? scale[400] ?? Object.values(scale)[0] ?? \"#000\";\n\nconst getFontColor = (\n theme: Theme,\n onColors: Record<string, string>,\n onKey: string,\n fontColor?: string\n) =>\n fontColor ??\n onColors[onKey] ??\n onColors.primary ??\n theme.text?.primary ??\n \"#fff\";\n\nconst getDisplayContent = (\n content: BadgeProps[\"content\"],\n max: number | undefined,\n variant: BadgeProps[\"variant\"]\n) => {\n if (variant === \"dot\") return \"\";\n if (typeof content === \"number\" && typeof max === \"number\" && content > max)\n return `${max}+`;\n return content ?? \"\";\n};\n\nconst getShouldShow = (\n visible: boolean,\n variant: BadgeProps[\"variant\"],\n content: BadgeProps[\"content\"],\n showZero: boolean\n) =>\n visible &&\n (variant === \"dot\" || !!content || (content === 0 && showZero));\n\nexport const Badge: React.FC<BadgeProps> = ({\n content,\n color = \"primary\",\n fontColor,\n fontWeight = 600,\n fontSize,\n variant = \"dot\",\n max = 99,\n showZero = false,\n visible = true,\n anchorOrigin = { vertical: \"top\", horizontal: \"right\" },\n overlap = \"rectangular\",\n children,\n animate = true,\n size,\n outline = false,\n outlineColor,\n className,\n badgeClassName,\n css: wrapperCss,\n badgeCss,\n offsetX,\n offsetY,\n}) => {\n const theme = usePlainframeUITheme();\n const isDot = variant === \"dot\";\n const diameter = size ?? (isDot ? 8 : 17);\n const _fontSize = fontSize ?? (isDot ? 0 : 10);\n\n const { scale, onKey } = getPaletteScale(theme, color as string);\n const bg = getBadgeBg(scale);\n const onColors = theme.text?.onColors || {};\n const finalFontColor = getFontColor(theme, onColors, onKey, fontColor);\n\n const displayContent = getDisplayContent(content, max, variant);\n const shouldShow = getShouldShow(visible, variant, content, showZero);\n\n const wrapperBase = css({\n position: \"relative\",\n display: \"inline-block\",\n });\n\n const derivedOffset =\n overlap === \"circular\" ? (isDot ? \"12.5%\" : \"5%\") : 0;\n const offX = toLen(offsetX ?? derivedOffset);\n const offY = toLen(offsetY ?? derivedOffset);\n\n const vertical = anchorOrigin.vertical || \"top\";\n const horizontal = anchorOrigin.horizontal || \"right\";\n\n const pos: React.CSSProperties = {};\n let translateX = \"0\",\n translateY = \"0\";\n\n if (vertical === \"center\") {\n pos.top = \"50%\";\n translateY = \"-50%\";\n } else if (vertical === \"top\") {\n pos.top = offY;\n translateY = \"-45%\";\n } else {\n pos.bottom = offY;\n translateY = \"45%\";\n }\n\n if (horizontal === \"center\") {\n pos.left = \"50%\";\n translateX = \"-50%\";\n } else if (horizontal === \"right\") {\n pos.right = offX;\n translateX = \"45%\";\n } else {\n pos.left = offX;\n translateX = \"-45%\";\n }\n\n const baseScale = shouldShow ? 1 : 0.8;\n\n const bubbleBase = css({\n minWidth: isDot ? diameter : diameter / 2,\n height: diameter,\n background: bg,\n color: finalFontColor,\n fontSize: typeof _fontSize === \"number\" ? `${_fontSize}px` : _fontSize,\n fontWeight,\n borderRadius: 999,\n padding: isDot ? 0 : `0 ${diameter / 4}px`,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.04)\",\n lineHeight: 1,\n position: \"absolute\",\n pointerEvents: \"none\",\n zIndex: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...(outline\n ? {\n boxShadow: `0 0 0 2px ${\n outlineColor ?? (theme.surface?.appBg as string)\n }`,\n }\n : {}),\n opacity: shouldShow ? 1 : 0,\n transform: `translate(${translateX}, ${translateY}) scale(${\n shouldShow ? baseScale : 0.5\n })`,\n ...(animate\n ? {\n transition:\n \"opacity .18s cubic-bezier(.4,1.6,.6,1), transform .18s cubic-bezier(.4,1.6,.6,1)\",\n }\n : {}),\n ...pos,\n });\n\n return (\n <div\n className={[\"plainframe-ui-badge-wrapper\", className || \"\"].join(\" \").trim()}\n css={[wrapperBase, wrapperCss]}\n >\n {children}\n <span\n aria-hidden={!shouldShow}\n className={[\"plainframe-ui-badge\", badgeClassName || \"\"].join(\" \").trim()}\n css={[bubbleBase, badgeCss]}\n >\n {displayContent}\n </span>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport { css as emCss, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype BackdropProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n on: boolean;\n onClickAway?: () => void;\n blur?: boolean;\n blurDepth?: number | string;\n color?: string;\n zIndex?: number;\n css?: Interpolation<Theme>;\n contentCss?: Interpolation<Theme>;\n overlayCss?: Interpolation<Theme>;\n children?: React.ReactNode;\n transitionDuration?: number;\n keepMounted?: boolean;\n className?: string;\n contentClassName?: string;\n lockScroll?: boolean;\n};\n\nexport const Backdrop: React.FC<BackdropProps> = ({\n on,\n onClickAway,\n blur = false,\n blurDepth = 2.5,\n color,\n zIndex = 1000,\n css: userRootCss,\n contentCss: userContentCss,\n overlayCss: userOverlayCss,\n children,\n transitionDuration = 300,\n keepMounted = true,\n className,\n contentClassName,\n lockScroll = true,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const overlayColor = useMemo(\n () => color ?? (theme.surface.overlayBg as string),\n [color, theme.surface.overlayBg]\n );\n\n const [visible, setVisible] = useState(on);\n const [show, setShow] = useState(on);\n const hideTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n if (on) {\n setVisible(true);\n rafRef.current = requestAnimationFrame(() => {\n setShow(true);\n rafRef.current = null;\n });\n } else {\n setShow(false);\n hideTimer.current = setTimeout(() => {\n setVisible(false);\n hideTimer.current = null;\n }, transitionDuration);\n }\n\n return () => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [on, transitionDuration]);\n\n useEffect(() => {\n if (!lockScroll || !on) return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPad = body.style.paddingRight;\n const scrollbar = window.innerWidth - document.documentElement.clientWidth;\n const computedPad = parseFloat(getComputedStyle(body).paddingRight || \"0\");\n body.style.overflow = \"hidden\";\n if (scrollbar > 0) body.style.paddingRight = `${computedPad + scrollbar}px`;\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPad;\n };\n }, [on, lockScroll]);\n\n useEffect(() => {\n if (!show || !onClickAway) return;\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClickAway();\n };\n document.addEventListener(\"keydown\", onEsc);\n return () => document.removeEventListener(\"keydown\", onEsc);\n }, [show, onClickAway]);\n\n const handleRootPointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!show || !onClickAway || !contentRef.current) return;\n const t = e.target as Node | null;\n if (t && !contentRef.current.contains(t)) onClickAway();\n };\n\n const blurValue =\n blur && blurDepth\n ? typeof blurDepth === \"number\"\n ? `${blurDepth}px`\n : blurDepth\n : undefined;\n\n if (!keepMounted && !visible) return null;\n\n const rootBaseCss = emCss({\n position: \"fixed\",\n inset: 0,\n width: \"100vw\",\n height: \"100vh\",\n zIndex,\n display: \"grid\",\n placeItems: \"center\",\n pointerEvents: show ? \"auto\" : \"none\",\n visibility: visible ? \"visible\" : \"hidden\",\n });\n\n const overlayBaseCss = emCss({\n position: \"absolute\",\n inset: 0,\n background: overlayColor,\n backdropFilter: blurValue ? `blur(${blurValue})` : undefined,\n WebkitBackdropFilter: blurValue ? `blur(${blurValue})` : undefined,\n opacity: show ? 1 : 0,\n transition: `opacity ${transitionDuration}ms cubic-bezier(.4,0,.2,1)`,\n pointerEvents: show ? \"auto\" : \"none\",\n });\n\n const contentBaseCss = emCss({\n position: \"relative\",\n zIndex: 1,\n pointerEvents: show ? \"auto\" : \"none\",\n });\n\n return (\n <div\n aria-hidden={!visible || undefined}\n className={[\"plainframe-ui-backdrop\", className || \"\"].join(\" \").trim()}\n css={[rootBaseCss, userRootCss]}\n onPointerDown={handleRootPointerDown}\n {...rest}\n >\n <div\n className=\"plainframe-ui-backdrop-overlay\"\n css={[overlayBaseCss, userOverlayCss]}\n role=\"presentation\"\n />\n <div\n ref={contentRef}\n className={[\n \"plainframe-ui-backdrop-content\",\n contentClassName || \"\",\n ]\n .join(\" \")\n .trim()}\n css={[contentBaseCss, userContentCss]}\n >\n {children}\n </div>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type BreadCrumbItemProps = Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n \"style\" | \"href\"\n> &\n WithCss & {\n href?: string;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n };\n\nexport const BreadCrumbItem: React.FC<BreadCrumbItemProps> = () => null;\nObject.defineProperty(BreadCrumbItem, \"displayName\", {\n value: \"PF.BreadCrumbItem\",\n configurable: true,\n});\n\nfunction unwrapEmotion(child: React.ReactElement) {\n const p = child.props ?? {};\n const hasEmotionType =\n typeof (p as { __EMOTION_TYPE_PLEASE_DO_NOT_USE__?: unknown })\n .__EMOTION_TYPE_PLEASE_DO_NOT_USE__ !== \"undefined\";\n const t = hasEmotionType\n ? (p as { __EMOTION_TYPE_PLEASE_DO_NOT_USE__: unknown })\n .__EMOTION_TYPE_PLEASE_DO_NOT_USE__\n : child.type;\n return { type: t, props: p };\n}\n\nexport type BreadCrumbsProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n \"style\"\n> & {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n css?: Interpolation<Theme>;\n crumbCss?: Interpolation<Theme>;\n activeCrumbCss?: Interpolation<Theme>;\n inactiveCrumbCss?: Interpolation<Theme>;\n linkCrumbCss?: Interpolation<Theme>;\n separatorCss?: Interpolation<Theme>;\n hover?: boolean;\n className?: string;\n};\n\nexport const BreadCrumbs: React.FC<BreadCrumbsProps> = React.memo(({\n children,\n separator = \"/\",\n css: userRootCss,\n crumbCss: userCrumbCss,\n activeCrumbCss: userActiveCrumbCss,\n inactiveCrumbCss: userInactiveCrumbCss,\n linkCrumbCss: userLinkCrumbCss,\n separatorCss: userSepCss,\n hover = true,\n className,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n // Memoize items extraction for performance\n const items = React.useMemo(() =>\n React.Children.toArray(children).flatMap((child) => {\n if (!React.isValidElement(child)) return [];\n const { type, props } = unwrapEmotion(child as React.ReactElement);\n const isCrumb =\n type === BreadCrumbItem ||\n (typeof type === \"function\" && \"displayName\" in type && type.displayName === BreadCrumbItem.displayName);\n if (!isCrumb) return [];\n const p = props as BreadCrumbItemProps;\n return [\n {\n href: p.href,\n disabled: p.disabled,\n node: p.children,\n className: p.className,\n css: p.css,\n onClick: p.onClick,\n startIcon: p.startIcon,\n endIcon: p.endIcon,\n },\n ];\n })\n , [children]);\n\n // Memoize styles\n const rootCss = React.useMemo(() => css({\n display: \"flex\",\n alignItems: \"center\",\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n gap: theme.spacing.xs,\n cursor: \"default\",\n }), [theme]);\n\n const sepCss = React.useMemo(() => css({\n margin: \"0 0.15rem\",\n color: theme.neutral[500],\n flex: \"0 0 auto\",\n justifyContent: \"center\",\n alignItems: \"center\",\n display: \"flex\",\n }), [theme]);\n\n const makeCrumbCss = React.useCallback((\n isLast: boolean,\n isLink: boolean,\n disabled?: boolean\n ) => {\n const baseColor = isLast ? theme.text.primary : theme.text.secondary;\n const interactive = hover && isLink && !disabled;\n return css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: theme.spacing.xs,\n color: baseColor,\n cursor: isLink && !disabled ? \"pointer\" : \"default\",\n textDecoration: \"none\",\n borderRadius: theme.radius.xs,\n fontWeight: 500,\n transition: \"all .16s ease !important\",\n \"&:hover\": interactive\n ? {\n textDecoration: \"underline\",\n color: theme.text.primary,\n }\n : {\n textDecoration: \"none\",\n },\n });\n }, [theme, hover]);\n\n const iconCss = React.useMemo(() => css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n }), []);\n\n const labelCss = React.useMemo(() => css({\n display: \"inline-block\",\n }), []);\n\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[\"plainframe-ui-breadcrumbs\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[rootCss, userRootCss]}\n {...rest}\n >\n {items.map((it, idx) => {\n const isLast = idx === items.length - 1;\n const isLink = !!it.href && !it.disabled && !isLast;\n\n const commonClass = [\n \"plainframe-ui-breadcrumb\",\n isLast\n ? \"plainframe-ui-breadcrumb--active\"\n : \"plainframe-ui-breadcrumb--inactive\",\n isLink ? \"plainframe-ui-breadcrumb--link\" : \"\",\n it.className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const commonCss = [\n makeCrumbCss(isLast, isLink, it.disabled),\n userCrumbCss,\n isLast ? userActiveCrumbCss : userInactiveCrumbCss,\n isLink ? userLinkCrumbCss : undefined,\n focusRing(),\n it.css,\n ];\n\n const content = (\n <>\n {it.startIcon && (\n <span\n className=\"plainframe-ui-breadcrumb-icon-start\"\n css={iconCss}\n >\n {it.startIcon}\n </span>\n )}\n <span className=\"plainframe-ui-breadcrumb-label\" css={labelCss}>\n {it.node}\n </span>\n {it.endIcon && (\n <span\n className=\"plainframe-ui-breadcrumb-icon-end\"\n css={iconCss}\n >\n {it.endIcon}\n </span>\n )}\n </>\n );\n\n return (\n <React.Fragment key={idx}>\n {idx !== 0 && (\n <span\n className=\"plainframe-ui-breadcrumb-separator\"\n css={[sepCss, userSepCss]}\n >\n {separator}\n </span>\n )}\n\n {isLink ? (\n <a\n href={it.href}\n onClick={it.onClick}\n tabIndex={0}\n data-active={isLast ? \"true\" : \"false\"}\n data-link=\"true\"\n className={commonClass}\n css={commonCss}\n >\n {content}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n tabIndex={isLast ? -1 : 0}\n data-active={isLast ? \"true\" : \"false\"}\n data-link=\"false\"\n className={commonClass}\n css={commonCss}\n >\n {content}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </nav>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useMemo,\n isValidElement,\n cloneElement,\n type ReactNode,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { PlainframeUITheme, Scale } from \"../theme/theme\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Progress } from \"./Progress\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"destructive\"\n | \"subtle\"\n | \"outlined\"\n | \"ghost\"\n | \"quiet\"\n | \"ghost-destructive\" // NEW\n\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\" | number | string;\nexport type LoadingPosition = \"start\" | \"end\" | \"center\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype ButtonBase = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"color\" | \"style\"\n> &\n WithCssProp & {\n size?: ButtonSize;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n rounded?: boolean;\n fullWidth?: boolean;\n loading?: boolean;\n loadingIndicator?: ReactNode;\n loadingPosition?: LoadingPosition;\n className?: string;\n hoverEffect?: boolean;\n children?: ReactNode;\n };\n\nexport type ButtonProps = ButtonBase & { variant?: ButtonVariant };\nconst cloneIcon = (icon: ReactNode, size: number | string) => {\n if (!isValidElement(icon)) return icon;\n const props = icon.props as Record<string, unknown>;\n const next: Record<string, unknown> = {};\n if (props.size === undefined) next.size = size;\n if (props.color === undefined) next.color = \"currentColor\";\n return cloneElement(icon, { ...props, ...next });\n};\n\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\n\nconst hasText = (node: React.ReactNode): boolean => {\n let found = false;\n React.Children.forEach(node, (ch) => {\n if (found) return;\n if (typeof ch === \"string\" || typeof ch === \"number\") {\n if (String(ch).trim() !== \"\") found = true;\n } else if (Array.isArray(ch)) {\n if (hasText(ch)) found = true;\n }\n });\n return found;\n};\n\nfunction getSize(theme: PlainframeUITheme, size: ButtonSize) {\n const t = theme;\n const kind: \"sm\" | \"md\" | \"lg\" =\n typeof size === \"string\" && (size === \"sm\" || size === \"md\" || size === \"lg\")\n ? size\n : \"md\";\n\n if (kind === \"sm\") {\n return {\n fontSize: t.fontSizes.md,\n paddingY: t.spacing.xs,\n paddingX: t.spacing.md,\n paddingXIcon: t.spacing.md,\n iconSize: 14,\n minHeight: t.componentHeights.sm,\n radius: t.radius.sm,\n };\n }\n if (kind === \"lg\") {\n return {\n fontSize: t.fontSizes.lg,\n paddingY: t.spacing.sm,\n paddingX: t.spacing.lg,\n paddingXIcon: t.spacing.md,\n iconSize: 18,\n minHeight: t.componentHeights.lg,\n radius: t.radius.md,\n };\n }\n return {\n fontSize: t.fontSizes.md,\n paddingY: t.spacing.sm,\n paddingX: t.spacing.lg,\n paddingXIcon: t.spacing.md,\n iconSize: 16,\n minHeight: t.componentHeights.md,\n radius: t.radius.md,\n };\n}\n\nfunction resolveVisuals(theme: PlainframeUITheme, variant: ButtonVariant) {\n const N = theme.neutral as Scale;\n const T = theme.text;\n const P = theme.palette as Record<string, Scale>;\n const primaryScale: Scale = (P.primary as Scale) || (N as Scale);\n const dangerScale: Scale = (P.danger as Scale) || (P.error as Scale) || primaryScale;\n const onColors = (theme.text.onColors || {}) as Record<string, string>;\n const primaryOn = onColors.primary ?? T.onColors.primary;\n const dangerOn = onColors.danger ?? primaryOn;\n\n const pick = (scale: Scale, k: keyof Scale, fb?: string) =>\n (scale && scale[k]) || fb;\n\n if (variant === \"primary\") {\n const scale = primaryScale;\n const bg =\n pick(scale, 600, N[900] as string) ||\n pick(scale, 500, N[900] as string);\n const hoverBg =\n pick(scale, 500, N[800] as string) ||\n pick(scale, 600, N[800] as string);\n return { bg, fg: primaryOn, hoverBg, border: \"none\" };\n }\n\n if (variant === \"destructive\") {\n const scale = dangerScale;\n const bg =\n pick(scale, 600, N[900] as string) ||\n pick(scale, 500, N[900] as string);\n const hoverBg =\n pick(scale, 500, N[800] as string) ||\n pick(scale, 600, N[800] as string);\n return { bg, fg: dangerOn, hoverBg, border: \"none\" };\n }\n\n if (variant === \"ghost-destructive\") {\n const D = (dangerScale as Scale);\n const fg = D[700];\n return { bg: \"transparent\", fg, hoverBg: theme.palette.danger[50], border: \"none\" };\n }\n\n if (variant === \"subtle\") {\n return {\n bg: theme.surface.subtleBg,\n fg: T.primary,\n hoverBg: theme.surface.subtleHover,\n border: \"none\",\n };\n }\n\n if (variant === \"outlined\") {\n return {\n bg: theme.surface.panelBg,\n fg: T.primary,\n hoverBg: theme.surface.panelHover,\n border: `${theme.componentHeights.border} solid ${theme.surface.border}`,\n };\n }\n\n if (variant === \"ghost\") {\n return {\n bg: \"transparent\",\n fg: theme.text.primary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n }\n\n if (variant === \"quiet\") {\n return {\n bg: \"transparent\",\n fg: T.secondary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n }\n\n return {\n bg: \"transparent\",\n fg: T.secondary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n}\n\nexport const Button = React.memo(React.forwardRef<HTMLButtonElement, ButtonProps>(({\n variant = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n rounded = false,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n children,\n className,\n hoverEffect = true,\n onClick,\n css: userCss,\n ...props\n}, ref) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n // normalize alias\n const normalizedVariant: ButtonVariant = variant === \"ghost-destructive\" ? \"ghost-destructive\" : variant;\n\n const S = useMemo(() => getSize(theme, size), [theme, size]);\n const vis = useMemo(() => resolveVisuals(theme, normalizedVariant), [theme, normalizedVariant]);\n\n const isIconOnly = useMemo(\n () =>\n !startIcon && !endIcon && !hasText(children) && React.Children.count(children) === 1,\n [startIcon, endIcon, children]\n );\n\n const iconSize = S.iconSize;\n const sizedStart = useMemo(() => cloneIcon(startIcon, iconSize), [startIcon, iconSize]);\n const sizedEnd = useMemo(() => cloneIcon(endIcon, iconSize), [endIcon, iconSize]);\n\n const spinnerNode = useMemo(\n () => loadingIndicator ?? <Progress variant=\"circular\" size={14} thickness={5} />,\n [loadingIndicator]\n );\n\n const resolvedLoadingPos: LoadingPosition = useMemo(\n () => (isIconOnly ? \"center\" : loadingPosition ?? \"center\"),\n [isIconOnly, loadingPosition]\n );\n const showCenterLoader = !!loading && resolvedLoadingPos === \"center\";\n const showStartLoader = !!loading && resolvedLoadingPos === \"start\";\n const showEndLoader = !!loading && resolvedLoadingPos === \"end\";\n const nonInteractive = disabled || loading;\n\n const rootBase = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 0,\n width: fullWidth ? \"100%\" : \"auto\",\n minHeight: S.minHeight,\n lineHeight: 1,\n fontWeight: 600,\n cursor: nonInteractive ? \"not-allowed\" : \"pointer\",\n opacity: nonInteractive ? 0.5 : 1,\n userSelect: \"none\",\n position: \"relative\",\n borderRadius: rounded ? theme.radius.full : S.radius,\n willChange: \"box-shadow, transform, outline-offset\",\n transition: \"box-shadow 140ms ease, transform 90ms ease, outline-offset 140ms ease\",\n }),\n [fullWidth, S, rounded, theme, nonInteractive]\n );\n\n const variantCss = useMemo(\n () =>\n css({\n backgroundColor: vis.bg,\n color: vis.fg,\n border: vis.border,\n outline: `${theme.componentHeights.border} solid transparent`,\n }),\n [vis, theme]\n );\n\n const hoverOverlayCss = useMemo(\n () =>\n css({\n overflow: \"hidden\",\n \"::before\": {\n content: '\"\"',\n position: \"absolute\",\n inset: 0,\n backgroundColor: vis.hoverBg,\n opacity: 0,\n pointerEvents: \"none\",\n transition: \"opacity 140ms ease\",\n zIndex: 0,\n },\n \"@media (hover: hover) and (pointer: fine)\":\n hoverEffect && !nonInteractive\n ? {\n \":hover::before\": {\n opacity: 1,\n },\n }\n : {},\n }),\n [vis, hoverEffect, nonInteractive]\n );\n\n const padCss = useMemo(\n () =>\n css(\n isIconOnly && !fullWidth\n ? {\n width: \"100%\",\n height: \"100%\",\n maxWidth: S.minHeight,\n minWidth: S.minHeight,\n maxHeight: S.minHeight,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: px(S.iconSize),\n }\n : {\n fontSize: px(S.fontSize),\n padding:\n startIcon || endIcon\n ? `${S.paddingY} ${S.paddingXIcon}`\n : `${S.paddingY} ${S.paddingX}`,\n }\n ),\n [isIconOnly, fullWidth, S, startIcon, endIcon]\n );\n\n const contentGroupCss = useMemo(\n () =>\n css({\n position: \"relative\",\n zIndex: 1,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: px(theme.spacing.sm),\n opacity: showCenterLoader ? 0 : 1,\n transition: \"opacity 140ms ease\",\n }),\n [theme, showCenterLoader]\n );\n\n const labelCss = useMemo(\n () =>\n css({\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }),\n []\n );\n\n const slotSizePx = useMemo(\n () =>\n typeof S.iconSize === \"number\"\n ? S.iconSize\n : Math.max(12, Math.round(parseFloat(String(S.iconSize)) || 16)),\n [S.iconSize]\n );\n\n const slotCss = useMemo(\n () =>\n css({\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: slotSizePx,\n minWidth: slotSizePx,\n maxWidth: slotSizePx,\n height: \"1em\",\n }),\n [slotSizePx]\n );\n\n const slotLayerCss = useMemo(\n () => (visible: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: visible ? 1 : 0,\n transition: \"opacity 140ms ease\",\n }),\n []\n );\n\n const centerOverlayCss = useMemo(\n () =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showCenterLoader ? 1 : 0,\n pointerEvents: \"none\",\n zIndex: 2,\n transition: \"opacity 140ms ease\",\n }),\n [showCenterLoader]\n );\n\n const renderLeftSlot = useMemo(\n () => () => {\n if (isIconOnly) return null;\n const has = Boolean(startIcon);\n if (!has && !showStartLoader) return null;\n return (\n <span css={slotCss} aria-hidden={loading ? true : undefined}>\n <span css={slotLayerCss(!showStartLoader)}>\n {has ? (sizedStart || startIcon) : null}\n </span>\n <span css={slotLayerCss(!!showStartLoader)}>{spinnerNode}</span>\n </span>\n );\n },\n [isIconOnly, startIcon, showStartLoader, slotCss, slotLayerCss, sizedStart, loading, spinnerNode]\n );\n\n const renderRightSlot = useMemo(\n () => () => {\n if (isIconOnly) return null;\n const has = Boolean(endIcon);\n if (!has && !showEndLoader) return null;\n return (\n <span css={slotCss} aria-hidden={loading ? true : undefined}>\n <span css={slotLayerCss(!showEndLoader)}>\n {has ? (sizedEnd || endIcon) : null}\n </span>\n <span css={slotLayerCss(!!showEndLoader)}>{spinnerNode}</span>\n </span>\n );\n },\n [isIconOnly, endIcon, showEndLoader, slotCss, slotLayerCss, sizedEnd, loading, spinnerNode]\n );\n\n const isInteractive = !(disabled || loading);\n\n return (\n <button\n ref={ref}\n type={\n \"type\" in props && props.type\n ? props.type\n : \"button\"\n }\n data-variant={normalizedVariant}\n className={[\"plainframe-ui-button\", className || \"\"].join(\" \").trim()}\n css={[\n rootBase,\n variantCss,\n hoverOverlayCss,\n padCss,\n userCss,\n focusRing({\n color:\n variant === \"primary\"\n ? \"primary\"\n : variant === \"destructive\" || variant === \"ghost-destructive\"\n ? \"danger\"\n : \"neutral\",\n }),\n ]}\n onClick={isInteractive ? onClick : undefined}\n disabled={disabled || loading}\n aria-disabled={disabled || loading || undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n <span className=\"plainframe-ui-button-content\" css={contentGroupCss}>\n {renderLeftSlot()}\n <span className=\"plainframe-ui-button-label\" css={labelCss}>\n {isIconOnly\n ? loading\n ? spinnerNode\n : cloneIcon(children, S.iconSize)\n : children}\n </span>\n {renderRightSlot()}\n </span>\n <span className=\"plainframe-ui-button-center-overlay\" css={centerOverlayCss} aria-hidden=\"true\">\n {showCenterLoader ? spinnerNode : null}\n </span>\n </button>\n );\n}));\n\nButton.displayName = \"Button\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, keyframes, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\nexport type ProgressProps = {\n variant?: \"linear\" | \"circular\";\n value?: number;\n min?: number;\n max?: number;\n color?: string;\n size?: number | string;\n thickness?: number;\n spinDuration?: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n barCss?: Interpolation<Theme>;\n circleCss?: Interpolation<Theme>;\n \"aria-label\"?: string;\n};\n\ntype LinearProps = {\n thickness?: number;\n active: string;\n track: string;\n radius: number | string | undefined;\n isDeterminate: boolean;\n percent?: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n barCss?: Interpolation<Theme>;\n ariaLabel?: string;\n min: number;\n max: number;\n value?: number;\n};\n\ntype CircularProps = {\n size?: number | string;\n thickness?: number;\n active: string;\n isDeterminate: boolean;\n percent?: number;\n spinDuration: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n circleCss?: Interpolation<Theme>;\n ariaLabel?: string;\n};\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, n));\nconst asPx = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nconst MIN_VISUAL_PCT = 1;\n\nconst spin = keyframes`100% { transform: rotate(360deg); }`;\nconst indet1 = keyframes`\n 0% { left: -35%; right: 100%; }\n 60% { left: 100%; right: -90%; }\n 100% { left: 100%; right: -90%; }\n`;\nconst indet2 = keyframes`\n 0% { left: -200%; right: 100%; }\n 60% { left: 107%; right: -8%; }\n 100% { left: 107%; right: -8%; }\n`;\n\nconst cssColorLike = (s: string) =>\n s.startsWith(\"#\") ||\n s.startsWith(\"rgb(\") || s.startsWith(\"rgba(\") ||\n s.startsWith(\"hsl(\") || s.startsWith(\"hsla(\") ||\n s.startsWith(\"oklch(\") || s.startsWith(\"lab(\") ||\n s.startsWith(\"color(\") || s.startsWith(\"var(\");\n\nconst allowedShades = new Set([\"0\",\"50\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]);\n\nfunction resolvePaletteColor(theme: ReturnType<typeof usePlainframeUITheme>, color?: string): string {\n if (!color || color.trim() === \"\") return theme.text.primary;\n\n const raw = color.trim();\n\n if (cssColorLike(raw)) return raw;\n\n const m = raw.match(/^([a-zA-Z0-9_-]+)[\\.\\-:\\s]?([0-9]{1,3})?$/);\n if (m) {\n const name = m[1];\n const shade = (m[2] && allowedShades.has(m[2])) ? (m[2] as any) : \"600\";\n\n if (name === \"primary\" && (theme.palette as any).primary?.[shade]) {\n return (theme.palette as any).primary[shade];\n }\n\n const scale = (theme.palette as any)[name];\n if (scale && scale[shade] != null) return scale[shade];\n\n if (name === \"neutral\" || name === \"secondary\" && (theme.neutral as any)[shade] != null) {\n return (theme.neutral as any)[shade];\n }\n }\n\n return theme.palette.primary[600];\n}\n\nexport const Progress: React.FC<ProgressProps> = ({\n variant = \"circular\",\n value,\n min = 0,\n max = 100,\n color,\n size,\n thickness,\n spinDuration = 0.75,\n wrapperCss,\n trackCss,\n barCss,\n circleCss,\n \"aria-label\": ariaLabel,\n}) => {\n const theme = usePlainframeUITheme();\n const isDeterminate = typeof value === \"number\";\n const safeRange = Math.max(max - min, 1);\n const val = isDeterminate ? clamp(value as number, min, max) : undefined;\n const percent = isDeterminate ? ((val! - min) / safeRange) * 100 : undefined;\n\n const active = resolvePaletteColor(theme, color);\n const track = theme.surface.subtleBg; // keep neutral track unless you want palette[100]\n const radius = theme.radius?.md;\n\n if (variant === \"circular\") {\n return (\n <Circular\n size={size}\n active={active}\n isDeterminate={isDeterminate}\n percent={percent}\n spinDuration={spinDuration}\n wrapperCss={wrapperCss}\n trackCss={trackCss}\n circleCss={circleCss}\n ariaLabel={ariaLabel}\n thickness={thickness}\n />\n );\n }\n\n return (\n <Linear\n thickness={thickness}\n active={active}\n track={track}\n radius={radius}\n isDeterminate={isDeterminate}\n percent={percent}\n wrapperCss={wrapperCss}\n trackCss={trackCss}\n barCss={barCss}\n ariaLabel={ariaLabel}\n min={min}\n max={max}\n value={val}\n />\n );\n};\n\nconst Linear: React.FC<LinearProps> = ({\n thickness = 4,\n active,\n track,\n radius,\n isDeterminate,\n percent,\n wrapperCss,\n trackCss,\n barCss,\n ariaLabel,\n min,\n max,\n value,\n}) => {\n const r =\n radius == null ? \"8px\" : typeof radius === \"number\" ? `${radius}px` : String(radius);\n\n const rootCss = css([\n { display: \"inline-block\", width: \"100%\" },\n ...(Array.isArray(wrapperCss) ? wrapperCss : wrapperCss ? [wrapperCss] : []),\n ]);\n\n const barBase = css([\n {\n position: \"relative\",\n width: \"100%\",\n height: asPx(thickness, \"6px\"),\n backgroundColor: track,\n borderRadius: r,\n overflow: \"hidden\",\n },\n ...(Array.isArray(trackCss) ? trackCss : trackCss ? [trackCss] : []),\n ]);\n\n const pctRender = isDeterminate ? Math.max(percent ?? 0, MIN_VISUAL_PCT) : MIN_VISUAL_PCT;\n\n const fillDeterminate = css([\n {\n position: \"absolute\",\n inset: 0,\n backgroundColor: active,\n borderRadius: \"inherit\",\n transformOrigin: \"left\",\n transform: `scaleX(${pctRender / 100})`,\n transition: \"transform 160ms cubic-bezier(.2,0,.2,1)\",\n willChange: \"transform\",\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const runnerBase = {\n position: \"absolute\" as const,\n top: 0,\n bottom: 0,\n backgroundColor: active,\n borderRadius: \"inherit\",\n willChange: \"left,right\",\n [\"@media (prefers-reduced-motion: reduce)\"]: { animation: \"none\" } as any,\n };\n\n const runner1 = css([\n {\n ...runnerBase,\n left: \"-35%\",\n right: \"100%\",\n animation: `${indet1} 2.1s cubic-bezier(.65,.815,.735,.395) infinite`,\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const runner2 = css([\n {\n ...runnerBase,\n left: \"-200%\",\n right: \"100%\",\n animation: `${indet2} 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite`,\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const ariaProps = isDeterminate\n ? { role: \"progressbar\", \"aria-valuemin\": min, \"aria-valuemax\": max, \"aria-valuenow\": value }\n : { role: \"progressbar\", \"aria-busy\": true };\n\n if (ariaLabel) (ariaProps as any)[\"aria-label\"] = ariaLabel;\n\n return (\n <span css={rootCss} {...ariaProps}>\n <div className=\"plainframe-ui-progress-linear-track\" css={barBase}>\n {isDeterminate ? (\n <div className=\"plainframe-ui-progress-linear-fill\" css={fillDeterminate} />\n ) : (\n <>\n <div className=\"plainframe-ui-progress-linear-runner1\" css={runner1} />\n <div className=\"plainframe-ui-progress-linear-runner2\" css={runner2} />\n </>\n )}\n </div>\n </span>\n );\n};\n\nconst Circular: React.FC<CircularProps> = ({\n size,\n thickness = 4,\n active,\n isDeterminate,\n percent,\n spinDuration,\n wrapperCss,\n trackCss,\n circleCss,\n ariaLabel,\n}) => {\n const theme = usePlainframeUITheme();\n const d = 40;\n const r = (d - thickness) / 2;\n const c = 2 * Math.PI * r;\n\n const arcFraction = isDeterminate ? clamp((percent ?? 0) / 100, 0.01, 1) : 0.7;\n const dashArray = `${arcFraction * c} ${c}`;\n\n const spinnerWrap = css([\n {\n display: \"inline-block\",\n width: asPx(size, `${theme.componentHeights.md}`),\n height: asPx(size, `${theme.componentHeights.md}`),\n },\n ...(Array.isArray(wrapperCss) ? wrapperCss : wrapperCss ? [wrapperCss] : []),\n ]);\n\n const svgCss = css([\n {\n width: \"100%\",\n height: \"100%\",\n transform: \"rotate(-90deg)\",\n transformBox: \"fill-box\",\n transformOrigin: \"50% 50%\",\n },\n ...(Array.isArray(trackCss) ? trackCss : trackCss ? [trackCss] : []),\n ]);\n\n const circleBase = css([\n {\n stroke: active,\n strokeLinecap: \"butt\",\n strokeDasharray: dashArray,\n strokeDashoffset: 0,\n transition: isDeterminate ? \"stroke-dasharray 160ms cubic-bezier(.2,0,.2,1)\" : \"none\",\n transformBox: \"fill-box\",\n transformOrigin: \"50% 50%\",\n fill: \"none\",\n willChange: isDeterminate ? \"stroke-dasharray\" : \"transform\",\n animation: isDeterminate ? \"none\" : `${spin} ${spinDuration}s linear infinite`,\n [\"@media (prefers-reduced-motion: reduce)\"]: { animation: \"none\" } as any,\n },\n ...(Array.isArray(circleCss) ? circleCss : circleCss ? [circleCss] : []),\n ]);\n\n const ariaProps = isDeterminate\n ? {\n role: \"progressbar\",\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n \"aria-valuenow\": Math.round(percent ?? 0),\n }\n : { role: \"progressbar\", \"aria-busy\": true };\n\n if (ariaLabel) (ariaProps as any)[\"aria-label\"] = ariaLabel;\n\n return (\n <span css={spinnerWrap} className=\"plainframe-ui-progress-circular\" {...ariaProps}>\n <svg css={svgCss} viewBox={`0 0 ${d} ${d}`} focusable=\"false\" aria-hidden>\n <circle cx={d / 2} cy={d / 2} r={r} strokeWidth={thickness} css={circleBase} />\n </svg>\n </span>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n Children,\n cloneElement,\n isValidElement,\n type ReactElement,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype Direction = \"horizontal\" | \"vertical\";\ntype Size = \"sm\" | \"md\" | \"lg\";\ntype VariantStr = string;\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\nexport type ButtonGroupProps = WithCssProp &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n children: React.ReactNode;\n attached?: boolean;\n direction?: Direction;\n fullWidth?: boolean;\n disabled?: boolean;\n size?: Size;\n rounded?: boolean;\n gap?: string | number;\n width?: string | number;\n className?: string;\n role?: React.AriaRole;\n };\n\ntype PrivateEdgeFlags = { __clipLeft?: boolean; __clipRight?: boolean };\n\ntype ButtonishProps = {\n disabled?: boolean;\n size?: Size;\n variant?: VariantStr;\n className?: string;\n css?: Interpolation<Theme>;\n};\ntype DropdownMenuProps = { children?: React.ReactNode };\ntype DropdownMenuTriggerProps = ButtonishProps & { children?: React.ReactNode };\n\nconst isEl = (n: unknown): n is ReactElement => isValidElement(n);\n\nconst displayNameOf = (n: ReactElement) => {\n const t = n.type as { displayName?: string; name?: string };\n return t.displayName ?? t.name;\n};\n\nconst isOfType = <P,>(el: ReactElement, name: string): el is ReactElement<P> =>\n displayNameOf(el) === name;\n\nconst isGroup = (n: ReactElement): n is ReactElement<ButtonGroupProps & PrivateEdgeFlags> =>\n isOfType(n, \"ButtonGroup\");\n\nconst isMenu = (n: ReactElement): n is ReactElement<DropdownMenuProps> =>\n isOfType(n, \"DropdownMenu\");\n\nconst isTrigger = (n: ReactElement): n is ReactElement<DropdownMenuTriggerProps> =>\n isOfType(n, \"DropdownMenuTrigger\");\n\nconst toLen = (v: string | number | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst toPx = (v: number | string | undefined, fallback = 1) => {\n if (v == null) return `${fallback}px`;\n if (typeof v === \"number\") return `${v}px`;\n return /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v;\n};\n\nconst isOutlinedVariant = (v: unknown): boolean =>\n typeof v === \"string\" && /^(outlined|outlined-soft|outline-soft)$/i.test(v);\n\nconst visualLeaf = (node: ReactElement, first: boolean): ReactElement | null => {\n if (!isEl(node)) return null;\n if (isGroup(node)) {\n const kids = Children.toArray(node.props.children).filter(isValidElement) as ReactElement[];\n if (!kids.length) return null;\n return visualLeaf(first ? kids[0] : kids[kids.length - 1], first);\n }\n if (isMenu(node)) {\n const kids = Children.toArray(node.props.children).filter(isValidElement) as ReactElement[];\n const trig = kids.find(isTrigger);\n return trig ? visualLeaf(trig, first) : null;\n }\n if (isTrigger(node)) {\n const kids = Children.toArray(node.props.children ?? []).filter(isValidElement) as ReactElement[];\n return kids.length ? kids[0] : null;\n }\n return node;\n};\n\nconst outlinedOnEdge = (el: ReactElement | null, side: \"left\" | \"right\") => {\n if (!el) return false;\n const leaf = visualLeaf(el, side === \"left\");\n const v: VariantStr | undefined =\n leaf && leaf.props && typeof leaf.props === \"object\" ? (leaf.props as ButtonishProps).variant : undefined;\n return isOutlinedVariant(v);\n};\n\nexport const ButtonGroup: React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n (ButtonGroupProps & PrivateEdgeFlags & React.RefAttributes<HTMLDivElement>)\n >\n> = React.memo(\n React.forwardRef<HTMLDivElement, ButtonGroupProps & PrivateEdgeFlags>(function ButtonGroup(\n {\n children,\n attached = false,\n direction = \"horizontal\",\n fullWidth = false,\n disabled = false,\n size = \"md\",\n rounded = false,\n gap,\n width,\n className,\n role = \"group\",\n css: userCss,\n __clipLeft,\n __clipRight,\n ...rest\n },\n ref\n ) {\n const theme = usePlainframeUITheme();\n const tokenRadius = size === \"sm\" ? theme.radius.sm : theme.radius.md;\n const baseRadius = rounded ? theme.radius.full : tokenRadius;\n const isVertical = direction === \"vertical\";\n const bw = toPx(theme.componentHeights.border, 1);\n const borderCol = theme.surface.border;\n const clipLeft = attached && !!__clipLeft;\n const clipRight = attached && !!__clipRight;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n width: fullWidth ? \"100%\" : width != null ? toLen(width) : \"auto\",\n maxWidth: \"none\",\n backgroundColor: \"transparent\",\n gap: attached ? 0 : toLen(gap ?? theme.spacing.sm),\n });\n\n const nodes = Children.toArray(children);\n const realNodes = nodes.filter(isEl) as ReactElement[];\n const realCount = realNodes.length;\n\n let realIndex = 0;\n let prevRightOutlined = false;\n const out: React.ReactNode[] = [];\n\n for (const node of nodes) {\n if (!isEl(node)) {\n out.push(node);\n continue;\n }\n\n const isFirst = realIndex === 0;\n const isLast = realIndex === realCount - 1;\n\n const nodeProps = (node.props ?? {}) as Record<string, unknown>;\n const mergedDisabled = (nodeProps.disabled as boolean | undefined) ?? disabled;\n const mergedSize = (nodeProps.size as Size | undefined) ?? size;\n\n let tl: string | number = 0, tr: string | number = 0, br: string | number = 0, bl: string | number = 0;\n if (attached) {\n if (isVertical) {\n tl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n tr = isFirst ? (clipRight ? 0 : baseRadius) : 0;\n bl = isLast ? (clipLeft ? 0 : baseRadius) : 0;\n br = isLast ? (clipRight ? 0 : baseRadius) : 0;\n } else {\n tl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n bl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n tr = isLast ? (clipRight ? 0 : baseRadius) : 0;\n br = isLast ? (clipRight ? 0 : baseRadius) : 0;\n }\n }\n\n const currLeftOutlined = outlinedOnEdge(node, \"left\");\n const currRightOutlined = outlinedOnEdge(node, \"right\");\n\n const borderDir = isVertical ? \"borderTop\" : \"borderLeft\";\n const shouldSeparate = attached && !isFirst && !(prevRightOutlined && currLeftOutlined);\n\n const separatorCss = shouldSeparate && !(prevRightOutlined || currLeftOutlined)\n ? css({ [borderDir]: `${bw} solid ${borderCol}` })\n : null;\n\n const killJoinCss =\n attached && !isFirst && prevRightOutlined && currLeftOutlined\n ? css(isVertical ? { borderTopWidth: 0 } : { borderLeftWidth: 0 })\n : null;\n\n const cornerCss = attached\n ? css({\n borderTopLeftRadius: toLen(tl),\n borderTopRightRadius: toLen(tr),\n borderBottomRightRadius: toLen(br),\n borderBottomLeftRadius: toLen(bl),\n })\n : null;\n\n const flexCss = fullWidth ? css({ flex: 1 }) : null;\n const visualCss = css([cornerCss, separatorCss, killJoinCss, flexCss]);\n\n if (!isMenu(node)) {\n const childCss = (nodeProps.css as Interpolation<Theme> | undefined);\n const childClass = [nodeProps.className as string | undefined, \"plainframe-ui-button-group-item\"]\n .filter(Boolean)\n .join(\" \");\n\n const injectedToGroup = isGroup(node) && attached\n ? ({ __clipLeft: !isFirst, __clipRight: !isLast } as Partial<PrivateEdgeFlags>)\n : {};\n\n const cloned = cloneElement<ButtonishProps & Partial<PrivateEdgeFlags>>(\n node as ReactElement<ButtonishProps>,\n {\n ...(nodeProps as ComponentPropsWithoutRef<any>),\n disabled: mergedDisabled,\n size: mergedSize,\n className: childClass,\n css: [childCss, visualCss],\n ...injectedToGroup,\n }\n );\n\n out.push(cloned);\n prevRightOutlined = currRightOutlined;\n realIndex += 1;\n continue;\n }\n\n const childrenProp = nodeProps.children as React.ReactNode;\n const newChildren = Children.map(childrenProp, (ch) => {\n if (!isEl(ch) || !isTrigger(ch)) return ch;\n\n const cprops = ch.props as DropdownMenuTriggerProps;\n const triggerClass = [cprops.className, \"plainframe-ui-button-group-item\"].filter(Boolean).join(\" \");\n\n return cloneElement<DropdownMenuTriggerProps>(ch, {\n ...cprops,\n css: [cprops.css, visualCss],\n className: triggerClass,\n disabled: mergedDisabled,\n size: mergedSize,\n });\n });\n\n const patchedMenu = cloneElement<DropdownMenuProps>(node, { ...(nodeProps as DropdownMenuProps), children: newChildren });\n out.push(patchedMenu);\n prevRightOutlined = currRightOutlined;\n realIndex += 1;\n }\n\n return (\n <div\n ref={ref}\n role={role}\n aria-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n data-attached={attached || undefined}\n data-direction={direction}\n className={[\"plainframe-ui-button-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n {...rest}\n >\n {out}\n </div>\n );\n })\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, cloneElement, isValidElement } from \"react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { CardProps } from \"./Card\";\n\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type CardGroupProps = {\n children: React.ReactNode;\n attached?: boolean;\n gap?: string | number;\n width?: string | number;\n direction?: \"vertical\" | \"horizontal\";\n variant?: Variant;\n className?: string;\n role?: React.AriaRole;\n css?: Interpolation<Theme>;\n};\n\nconst isEl = (n: unknown): n is React.ReactElement => isValidElement(n);\nconst nameOf = (n: unknown) =>\n isEl(n)\n ? ((n.type as { displayName?: string; name?: string })?.displayName ||\n (n.type as { displayName?: string; name?: string })?.name)\n : undefined;\nconst isCard = (n: unknown) => nameOf(n) === \"Card\";\n\nconst toLen = (v: unknown) => (typeof v === \"number\" ? `${v}px` : v);\n\nexport const CardGroup: React.FC<CardGroupProps> = ({\n children,\n attached = false,\n gap,\n width,\n direction = \"vertical\",\n variant,\n className,\n role = \"group\",\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const isVertical = direction === \"vertical\";\n const bw = String(theme.componentHeights?.border ?? \"1px\");\n const betweenColor = theme.surface.border;\n\n const rootCss: Interpolation<Theme> = {\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n width: width != null ? (toLen(width) as any) : \"auto\",\n maxWidth: \"none\",\n gap: (attached ? 0 : (gap ?? theme.spacing?.sm)) as any,\n };\n\n const nodes = Children.toArray(children);\n const cardNodes = nodes.filter(isCard) as React.ReactElement<CardProps>[];\n const totalCards = cardNodes.length;\n\n let logical = 0;\n const out = nodes.map((node, i) => {\n if (!isCard(node) || !isEl(node)) return node;\n\n const props = node.props as CardProps & { variant?: Variant; radius?: string | number };\n const idx = logical++;\n const isFirst = idx === 0;\n const isLast = idx === totalCards - 1;\n\n const forcedVariant = (variant ?? props.variant) as Variant | undefined;\n\n const radiusCss: Interpolation<Theme> | undefined = attached\n ? isVertical\n ? {\n borderTopLeftRadius: isFirst ? (props.radius as any) : 0,\n borderTopRightRadius: isFirst ? (props.radius as any) : 0,\n borderBottomLeftRadius: isLast ? (props.radius as any) : 0,\n borderBottomRightRadius: isLast ? (props.radius as any) : 0,\n }\n : {\n borderTopLeftRadius: isFirst ? (props.radius as any) : 0,\n borderBottomLeftRadius: isFirst ? (props.radius as any) : 0,\n borderTopRightRadius: isLast ? (props.radius as any) : 0,\n borderBottomRightRadius: isLast ? (props.radius as any) : 0,\n }\n : undefined;\n\n const collapseCss: Interpolation<Theme> | undefined =\n attached && !isFirst\n ? isVertical\n ? { borderTopWidth: 0 }\n : { borderLeftWidth: 0 }\n : undefined;\n\n const betweenCss: Interpolation<Theme> | null =\n forcedVariant === \"subtle\" && totalCards > 1 && !isFirst\n ? isVertical\n ? { borderTop: `${bw} solid ${betweenColor}` }\n : { borderLeft: `${bw} solid ${betweenColor}` }\n : null;\n\n const sizingCss: Interpolation<Theme> =\n attached\n ? { width: \"100%\" }\n : {\n width: \"100%\",\n marginBottom: isVertical ? 0 : undefined,\n marginRight: !isVertical ? 0 : undefined,\n };\n\n const visualCss: Interpolation<Theme>[] = [radiusCss, collapseCss, betweenCss, sizingCss].filter(\n Boolean\n ) as Interpolation<Theme>[];\n\n const mergedClass = [props.className, \"plainframe-ui-card-group-item\"]\n .filter(Boolean)\n .join(\" \");\n\n return cloneElement(node as React.ReactElement<CardProps>, {\n ...props,\n variant: forcedVariant ?? props.variant,\n css: [props.css, ...visualCss],\n className: mergedClass,\n key: typeof node === \"object\" && \"key\" in node ? (node as any).key : i,\n });\n });\n\n return (\n <div\n role={role}\n aria-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n data-attached={attached || undefined}\n data-direction={direction}\n className={[\"plainframe-ui-card-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n >\n {out}\n </div>\n );\n};\n\nCardGroup.displayName = \"CardGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useCallback, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { X } from \"lucide-react\";\n\ntype ChipVariant = \"soft\" | \"outlined\" | \"filled\" | \"ghost\";\ntype ChipSize = \"sm\" | \"md\" | \"lg\";\ntype WithCssProp = { css?: Interpolation<Theme> };\n\nexport type ChipProps = WithCssProp & {\n children?: React.ReactNode;\n labelCss?: Interpolation<Theme>;\n variant?: ChipVariant;\n color?: string;\n rounded?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n size?: ChipSize;\n onClick?: () => void;\n onDelete?: () => void;\n deleteIcon?: React.ReactNode;\n disabled?: boolean;\n cursor?: React.CSSProperties[\"cursor\"];\n className?: string;\n};\n\nconst u = (v: string | number): string => (typeof v === \"number\" ? `${v}px` : v);\n\nconst hasText = (node: React.ReactNode): boolean => {\n let found = false;\n React.Children.forEach(node as any, (ch: any) => {\n if (found) return;\n if (typeof ch === \"string\" || typeof ch === \"number\") {\n if (String(ch).trim() !== \"\") found = true;\n } else if (Array.isArray(ch)) {\n if (hasText(ch)) found = true;\n }\n });\n return found;\n};\n\ntype SizeT = {\n fontSize: string | number;\n paddingX: string | number;\n paddingY: string | number;\n gap: string | number;\n iconSize: string | number;\n radius: string | number;\n soloPadding: string | number;\n iconOffset: string;\n iconOffsetRounded: string;\n};\n\nconst getSize = (theme: ReturnType<typeof usePlainframeUITheme>, size: ChipSize): SizeT => {\n if (size === \"sm\") {\n return {\n fontSize: theme.fontSizes.sm,\n paddingX: `calc(${theme.spacing.sm} * 0.7)`,\n paddingY: theme.spacing.xs,\n gap: theme.spacing.xxs,\n iconSize: theme.fontSizes.sm,\n radius: `calc(${theme.radius.sm} * 0.8)`,\n soloPadding: theme.spacing.xs,\n iconOffset: \"0px\",\n iconOffsetRounded: \"-2px\",\n };\n }\n if (size === \"lg\") {\n return {\n fontSize: theme.fontSizes.lg,\n paddingX: theme.spacing.sm,\n paddingY: `calc(${theme.spacing.sm} * 0.6)`,\n gap: theme.spacing.xs,\n iconSize: theme.fontSizes.lg,\n radius: theme.radius.md,\n soloPadding: theme.spacing.sm,\n iconOffset: \"0px\",\n iconOffsetRounded: \"-3px\",\n };\n }\n return {\n fontSize: theme.fontSizes.md,\n paddingX: `calc(${theme.spacing.sm} * 0.9)`,\n paddingY: theme.spacing.xs,\n gap: theme.spacing.xxs,\n iconSize: theme.fontSizes.md,\n radius: theme.radius.sm,\n soloPadding: theme.spacing.xs,\n iconOffset: \"-1px\",\n iconOffsetRounded: \"-3px\",\n };\n};\n\nexport const Chip: React.ForwardRefExoticComponent<\n ChipProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n children,\n labelCss: userLabelCss,\n variant = \"soft\",\n color = \"primary\",\n rounded = false,\n startIcon,\n endIcon,\n size = \"md\",\n onClick,\n onDelete,\n deleteIcon,\n disabled,\n cursor,\n className,\n css: userCss,\n },\n ref\n): React.ReactElement {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const sizeKey: ChipSize = ([\"sm\", \"md\", \"lg\"].includes(size) ? size : \"md\") as ChipSize;\n const S: SizeT = useMemo<SizeT>(() => getSize(theme, sizeKey), [theme, sizeKey]);\n\n const isClickable = !!onClick && !disabled;\n const baseCursor: React.CSSProperties[\"cursor\"] = disabled\n ? \"not-allowed\"\n : cursor || (isClickable ? \"pointer\" : \"default\");\n const strokeW = String(theme.componentHeights?.border ?? \"1px\");\n\n const paletteKey: string = useMemo<string>(() => {\n const palette = theme.palette as Record<string, Record<string, string>>;\n const isSecondary = color === \"secondary\" || color === \"neutral\";\n if (isSecondary) return \"neutral\";\n return color && palette[color] ? color : \"primary\";\n }, [color, theme.palette]);\n\n const sw = useCallback(\n (shade: 50 | 100 | 300 | 600 | 700 | 800): string => {\n const palette = theme.palette as Record<string, Record<string, string>>;\n return (\n (paletteKey === \"neutral\" ? theme.neutral[shade] : palette[paletteKey]?.[shade]) ??\n (palette.primary?.[shade] as string)\n );\n },\n [paletteKey, theme.neutral, theme.palette]\n );\n\n const softBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[100] : sw(50)),\n [paletteKey, sw, theme.neutral]\n );\n const softFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(800)),\n [paletteKey, sw, theme.text.secondary]\n );\n\n const outlinedBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[100] : sw(50)),\n [paletteKey, sw, theme.neutral]\n );\n const outlinedFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(800)),\n [paletteKey, sw, theme.text.secondary]\n );\n const outlinedBr: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[400] : sw(300)),\n [paletteKey, sw, theme.neutral]\n );\n\n const filledBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.surface.subtleBg : sw(600)),\n [paletteKey, sw, theme.surface.subtleBg]\n );\n const filledFg: string = useMemo(() => {\n const onMap = theme.text.onColors ?? ({} as Record<string, string>);\n return onMap[paletteKey] ?? (paletteKey === \"neutral\" ? theme.neutral[900] : theme.neutral[0] ?? \"#fff\");\n }, [paletteKey, theme.text.onColors, theme.neutral]);\n\n const ghostBg: string = \"transparent\";\n const ghostFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(700) ?? theme.text.primary),\n [paletteKey, sw, theme.text.primary, theme.text.secondary]\n );\n\n const isIconOnly: boolean = useMemo(\n () =>\n !startIcon && !endIcon && children != null && !hasText(children) && React.Children.count(children) === 1,\n [startIcon, endIcon, children]\n );\n\n const variantCss: Interpolation<Theme> = useMemo(() => {\n if (variant === \"filled\")\n return css({ backgroundColor: filledBg, color: filledFg, border: \"none\", boxShadow: \"none\" });\n if (variant === \"outlined\")\n return css({\n backgroundColor: outlinedBg,\n color: outlinedFg,\n border: \"none\",\n boxShadow: `inset 0 0 0 ${strokeW} ${outlinedBr}`,\n });\n if (variant === \"ghost\")\n return css({ backgroundColor: ghostBg, color: ghostFg, border: \"none\", boxShadow: \"none\" });\n return css({ backgroundColor: softBg, color: softFg, border: \"none\", boxShadow: \"none\" });\n }, [filledBg, filledFg, ghostFg, outlinedBg, outlinedFg, outlinedBr, softBg, softFg, strokeW, variant]);\n\n const rootCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: u(S.gap),\n padding:\n variant === \"ghost\"\n ? 0\n : isIconOnly || children == null\n ? u(S.soloPadding)\n : `${u(S.paddingY)} ${u(S.paddingX)}`,\n borderRadius: rounded ? (theme.radius.full as string | number) : S.radius,\n fontWeight: 600,\n cursor: baseCursor,\n opacity: disabled ? 0.55 : 1,\n transition: \"outline .16s ease, outline-offset .16s ease\",\n overflow: variant === \"ghost\" ? \"visible\" : \"hidden\",\n ...(isIconOnly\n ? {\n lineHeight: 1,\n minWidth: `calc(${u(S.iconSize)} + ${u(S.soloPadding)} * 2)`,\n minHeight: `calc(${u(S.iconSize)} + ${u(S.soloPadding)} * 2)`,\n justifyContent: \"center\",\n }\n : null),\n }),\n [S, baseCursor, children, disabled, isIconOnly, rounded, theme.radius.full, variant]\n );\n\n const baseLabelCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n fontSize: isIconOnly ? u(S.iconSize) : u(S.fontSize),\n lineHeight: 1.2,\n minWidth: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& > svg\": {\n width: isIconOnly ? u(S.iconSize) : undefined,\n height: isIconOnly ? u(S.iconSize) : undefined,\n display: isIconOnly ? \"block\" : undefined,\n },\n }),\n [S.fontSize, S.iconSize, isIconOnly]\n );\n\n const iconCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: u(S.iconSize),\n lineHeight: 0,\n \"& > svg\": { width: u(S.iconSize), height: u(S.iconSize), display: \"block\" },\n }),\n [S.iconSize]\n );\n\n const leftIconMargins: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginRight: isIconOnly || children == null ? 0 : u(S.gap),\n marginLeft: isIconOnly || children == null ? 0 : u(S.iconOffset),\n }),\n [S.gap, S.iconOffset, children, isIconOnly]\n );\n\n const rightIconMargins: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginLeft: isIconOnly || children == null ? 0 : u(S.gap),\n marginRight:\n isIconOnly || children == null\n ? 0\n : rounded\n ? u(S.iconOffsetRounded)\n : u(S.iconOffset),\n }),\n [S.gap, S.iconOffset, S.iconOffsetRounded, children, isIconOnly, rounded]\n );\n\n const deleteBtnCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginRight: rounded ? 0 : u(S.iconOffset),\n padding: 0,\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: \"currentColor\",\n opacity: disabled ? 0.4 : 0.85,\n transition:\n \"background-color .16s ease, color .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n fontSize: u(S.iconSize),\n borderRadius: theme.radius.xs,\n }),\n [S.iconOffset, S.iconSize, disabled, rounded, theme.radius.xs]\n );\n\n const onKeyDown = useCallback((e: React.KeyboardEvent): void => {\n if (!isClickable) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }, [isClickable, onClick]);\n\n const defaultDeleteIcon: React.ReactNode = useMemo(\n () => <X css={{ width: S.iconSize, height: S.iconSize }} strokeWidth={2.5} />,\n [S.iconSize]\n );\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-chip\", isClickable ? \"plainframe-ui-chip-clickable\" : \"\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[\n rootCss,\n variantCss,\n isClickable ? focusRing({ color: color ?? \"primary\" }) : null,\n userCss,\n ]}\n onClick={isClickable ? onClick : undefined}\n onKeyDown={onKeyDown}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-disabled={disabled || undefined}\n data-variant={variant}\n data-color={paletteKey}\n data-size={size}\n data-icon-only={isIconOnly || undefined}\n >\n {startIcon && (\n <span css={[iconCss, leftIconMargins]} className=\"plainframe-ui-chip-icon-left\">\n {startIcon}\n </span>\n )}\n\n {children != null && (\n <span css={[baseLabelCss, userLabelCss]} className=\"plainframe-ui-chip-label\">\n {children}\n </span>\n )}\n\n {endIcon && (\n <span css={[iconCss, rightIconMargins]} className=\"plainframe-ui-chip-icon-right\">\n {endIcon}\n </span>\n )}\n\n {onDelete && (\n <button\n type=\"button\"\n aria-label=\"Delete\"\n disabled={disabled}\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) onDelete?.();\n }}\n css={[deleteBtnCss, focusRing({ color: color ?? \"primary\" })]}\n className=\"plainframe-ui-chip-delete\"\n >\n {deleteIcon || defaultDeleteIcon}\n </button>\n )}\n </div>\n );\n});\n\nChip.displayName = \"Chip\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useRef, useCallback, useId, useState } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport type { PlainframeUITheme } from \"../theme/theme\";\n\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type CodeFieldProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n separator?: React.ReactNode;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n gap?: number | string;\n size?: SizeKey;\n variant?: Variant;\n length?: number;\n focusRingMode?: \"always\" | \"none\";\n wrapperCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst u = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst CodeBoxes: React.FC<{\n value: string;\n onChange: (v: string) => void;\n len: number;\n theme: PlainframeUITheme;\n sizeKey: SizeKey;\n s: { codeFontSize: number };\n variant: Variant;\n error?: boolean;\n disabled?: boolean;\n ringEnabled: boolean;\n focusRingMode: \"always\" | \"none\";\n placeholder?: string;\n separator?: React.ReactNode;\n gapPx: string;\n}> = React.memo(function CodeBoxesImpl({\n value,\n onChange,\n len,\n theme,\n sizeKey,\n s,\n variant,\n error,\n disabled,\n ringEnabled,\n focusRingMode,\n placeholder,\n separator,\n gapPx,\n}) {\n const ring = useFocusRing();\n const N = theme.neutral;\n const T = theme.text;\n const borderW = theme.componentHeights.border;\n\n const boxesRef = useRef<Array<HTMLInputElement | null>>([]);\n const [focusIdx, setFocusIdx] = useState<number>(0);\n\n const chars = useMemo(\n () => (value ?? \"\").padEnd(len, \"\").slice(0, len).split(\"\"),\n [value, len]\n );\n\n const ph = useMemo(() => {\n if (!placeholder) return Array(len).fill(\"\");\n if (placeholder.length === 1) return Array(len).fill(placeholder);\n const a = placeholder.slice(0, len).split(\"\");\n while (a.length < len) a.push(\"\");\n return a;\n }, [placeholder, len]);\n\n const sideCss = useMemo(() => {\n const H = theme.componentHeights[sizeKey] as number | string;\n const Hpx = typeof H === \"number\" ? `${H}px` : H;\n return `calc(${Hpx} * 1.5)`;\n }, [theme.componentHeights, sizeKey]);\n\n const boxBg =\n disabled\n ? (N[200] as string)\n : variant === \"subtle\"\n ? (theme.surface.subtleBg as string)\n : variant === \"outlined\"\n ? (theme.surface.panelBg as string)\n : \"transparent\";\n\n const boxBorder =\n variant === \"outlined\"\n ? `${borderW} solid ${\n error ? (theme.palette.danger?.[600] ?? N[500]) : theme.surface.border\n }`\n : \"none\";\n\n const boxCss = (active: boolean) =>\n css(\n {\n width: sideCss,\n height: sideCss,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSizing: \"border-box\",\n background: boxBg,\n border: boxBorder,\n borderRadius: theme.radius.lg,\n transition: \"box-shadow .16s, border-color .16s, background .16s\",\n fontSize: s.codeFontSize,\n fontWeight: 600,\n color: disabled ? N[500] : T.primary,\n textAlign: \"center\",\n backgroundClip: \"padding-box\",\n appearance: \"textfield\",\n outline: \"none\",\n caretColor: T.primary,\n \"&::placeholder\": { color: T.secondary, opacity: 0.85 },\n },\n ringEnabled\n ? ring({\n enabled: true,\n disabled,\n mode: focusRingMode === \"always\" ? \"always\" : \"visible\",\n })\n : undefined,\n active ? css({}) : null\n );\n\n const wrapCss = css({\n display: \"flex\",\n gap: gapPx,\n justifyContent: \"center\",\n width: \"auto\",\n pointerEvents: disabled ? \"none\" : \"auto\",\n opacity: disabled ? 0.65 : 1,\n });\n\n const sepCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: T.secondary,\n userSelect: \"none\",\n });\n\n const sanitize = (c: string) => c.replace(/[^a-zA-Z0-9]/g, \"\").toUpperCase();\n\n const focusAt = useCallback(\n (i: number) => {\n const idx = Math.max(0, Math.min(len - 1, i));\n setFocusIdx(idx);\n boxesRef.current[idx]?.focus();\n },\n [len]\n );\n\n const handleBoxChange = useCallback(\n (i: number, char: string) => {\n const clean = sanitize(char).slice(0, 1);\n const next = [...chars];\n next[i] = clean;\n onChange(next.join(\"\"));\n if (clean && i < len - 1) focusAt(i + 1);\n },\n [chars, len, onChange, focusAt]\n );\n\n const handleBoxKeyDown = useCallback(\n (i: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\") {\n if (!chars[i] && i > 0) {\n const next = [...chars];\n next[i - 1] = \"\";\n onChange(next.join(\"\"));\n focusAt(i - 1);\n e.preventDefault();\n return;\n } else {\n const next = [...chars];\n next[i] = \"\";\n onChange(next.join(\"\"));\n return;\n }\n }\n if (e.key === \"ArrowLeft\" && i > 0) {\n e.preventDefault();\n focusAt(i - 1);\n return;\n }\n if (e.key === \"ArrowRight\" && i < len - 1) {\n e.preventDefault();\n focusAt(i + 1);\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n focusAt(0);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n focusAt(len - 1);\n return;\n }\n },\n [chars, len, onChange, focusAt]\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n const paste = sanitize(e.clipboardData.getData(\"text\")).slice(0, len);\n if (!paste) return;\n onChange(paste);\n requestAnimationFrame(() => {\n const idx = Math.min(paste.length, len - 1);\n focusAt(idx);\n });\n e.preventDefault();\n },\n [len, onChange, focusAt]\n );\n\n return (\n <div className=\"plainframe-ui-code-boxes\" css={wrapCss}>\n {Array.from({ length: len }).map((_, i) => (\n <React.Fragment key={i}>\n <input\n ref={(el) => {\n boxesRef.current[i] = el;\n }}\n type=\"text\"\n inputMode=\"text\"\n maxLength={1}\n value={chars[i] || \"\"}\n placeholder={chars[i] ? \"\" : ph[i] || \"\"}\n disabled={disabled}\n onChange={(e) => handleBoxChange(i, e.target.value)}\n onKeyDown={(e) => handleBoxKeyDown(i, e)}\n onFocus={() => setFocusIdx(i)}\n onPaste={i === 0 ? handlePaste : undefined}\n className=\"plainframe-ui-code-box\"\n css={boxCss(i === focusIdx)}\n aria-label={`Code character ${i + 1}`}\n tabIndex={i === focusIdx ? 0 : -1}\n />\n {separator && i < len - 1 ? (\n <span aria-hidden role=\"presentation\" css={sepCss}>\n {separator}\n </span>\n ) : null}\n </React.Fragment>\n ))}\n </div>\n );\n});\n\nexport const CodeField: React.FC<CodeFieldProps> = ({\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n separator,\n error,\n helperText,\n disabled = false,\n gap,\n size = \"md\",\n variant = \"subtle\",\n length = 4,\n focusRingMode = \"always\",\n className,\n wrapperCss: userWrapperCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n css: userLayoutCss,\n}) => {\n const theme = usePlainframeUITheme();\n const labelId = useId();\n\n const sizeMap = useMemo(\n () =>\n ({\n sm: {\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n minHeight: theme.componentHeights.sm,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 21,\n },\n md: {\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n minHeight: theme.componentHeights.md,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 24,\n },\n lg: {\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 28,\n },\n } as const),\n [theme]\n );\n\n const sizeKey: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size)\n ? size\n : \"md\";\n const s = sizeMap[sizeKey];\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isControlled = value != null;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr = isControlled ? (value as string) : internal;\n const setValue = (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const len = Math.max(2, Math.min(length, 10));\n const defaultGap = theme.spacing.sm;\n const gapPx = u(gap ?? defaultGap) ?? \"0px\";\n\n const rootCss = css(\n {\n boxSizing: \"border-box\",\n display: \"inline-flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: 4,\n width: \"auto\",\n maxWidth: \"unset\",\n fontWeight: 500,\n cursor: disabled ? \"not-allowed\" : \"auto\",\n },\n ...(Array.isArray(userWrapperCss)\n ? userWrapperCss\n : userWrapperCss\n ? [userWrapperCss]\n : [])\n );\n\n const labelCss = css(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error\n ? theme.palette.danger?.[700] ?? T.primary\n : disabled\n ? N[500]\n : T.primary,\n marginBottom: 4,\n display: \"block\",\n cursor: disabled ? \"not-allowed\" : \"auto\",\n },\n ...(Array.isArray(userLabelCss)\n ? userLabelCss\n : userLabelCss\n ? [userLabelCss]\n : [])\n );\n\n const rowCss = css(\n {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: gapPx,\n width: \"auto\",\n background: \"transparent\",\n outline: \"none\",\n boxShadow: \"none\",\n },\n ...(Array.isArray(userLayoutCss)\n ? userLayoutCss\n : userLayoutCss\n ? [userLayoutCss]\n : [])\n );\n\n const helperRowCss = css(\n {\n minHeight: 16,\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n paddingTop: 3,\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 8,\n width: \"100%\",\n },\n ...(Array.isArray(userHelperRowCss)\n ? userHelperRowCss\n : userHelperRowCss\n ? [userHelperRowCss]\n : [])\n );\n\n const helperTextCss = css(\n {\n flex: 1,\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n minWidth: 0,\n fontWeight: 400,\n color: error\n ? theme.palette.danger?.[700] ?? T.primary\n : disabled\n ? N[500]\n : T.primary,\n },\n ...(Array.isArray(userHelperTextCss)\n ? userHelperTextCss\n : userHelperTextCss\n ? [userHelperTextCss]\n : [])\n );\n\n return (\n <div\n className={[\"plainframe-ui-codefield\", className || \"\"].join(\" \").trim()}\n css={rootCss}\n >\n {label && (\n <span id={labelId} className=\"plainframe-ui-codefield-label\" css={labelCss}>\n {label}\n </span>\n )}\n\n <div\n className=\"plainframe-ui-codefield-row\"\n css={rowCss}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n tabIndex={-1}\n >\n <CodeBoxes\n value={curr || \"\"}\n onChange={setValue}\n len={len}\n theme={theme}\n sizeKey={sizeKey}\n s={{ codeFontSize: s.codeFontSize }}\n variant={variant}\n error={!!error}\n disabled={disabled}\n ringEnabled={focusRingMode !== \"none\"}\n focusRingMode={focusRingMode}\n placeholder={placeholder}\n separator={separator}\n gapPx={gapPx}\n />\n </div>\n\n {helperText != null && (\n <div className=\"plainframe-ui-codefield-helper\" css={helperRowCss}>\n <span className=\"plainframe-ui-codefield-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n </div>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\nexport type ColorPatchItem = {\n color: string;\n label?: string;\n title?: string;\n disabled?: boolean;\n onClick?: () => void;\n css?: Interpolation<Theme>;\n};\n\nexport type ColorPatchesProps = {\n items: ColorPatchItem[];\n size?: number | string;\n gap?: number | string;\n rounded?: boolean;\n radius?: number | string;\n wrap?: boolean;\n width?: number | string;\n focusOutline?: boolean;\n wrapperCss?: Interpolation<Theme>;\n patchCss?: Interpolation<Theme>;\n};\n\nconst toCssLen = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst toNum = (v: number | string | undefined, fb: number) =>\n v == null ? fb : typeof v === \"number\" ? v : Number.parseFloat(v) || fb;\n\nexport const ColorPatches: React.FC<ColorPatchesProps> = React.memo(\n ({\n items,\n size,\n gap,\n rounded = false,\n radius,\n wrap = true,\n width,\n wrapperCss,\n patchCss,\n }) => {\n const theme = usePlainframeUITheme();\n\n const patchSize = size ?? 24;\n const spacing = gap ?? theme.spacing.xs;\n const radiusCss = toCssLen(radius ?? (rounded ? theme.radius.full : theme.radius.sm));\n\n const firstEnabled = React.useMemo(() => items.findIndex((i) => !i.disabled), [items]);\n const [focusIndex, setFocusIndex] = React.useState<number>(firstEnabled >= 0 ? firstEnabled : -1);\n React.useEffect(() => {\n setFocusIndex(firstEnabled >= 0 ? firstEnabled : -1);\n }, [firstEnabled]);\n\n const refs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const [cols, setCols] = React.useState<number>(items.length || 1);\n const g = toNum(spacing as any, 8);\n const sz = toNum(patchSize as any, 24);\n\n React.useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const calc = () => {\n if (!wrap) {\n setCols(items.length || 1);\n return;\n }\n const w = el.clientWidth || 0;\n const c = Math.max(1, Math.floor((w + g) / (sz + g)));\n setCols(c || 1);\n };\n calc();\n const ro = new ResizeObserver(calc);\n ro.observe(el);\n return () => ro.disconnect();\n }, [wrap, items.length, g, sz]);\n\n const focusAt = (i: number) => {\n if (i < 0 || i >= items.length) return;\n if (items[i]?.disabled) return;\n setFocusIndex(i);\n refs.current[i]?.focus();\n };\n\n const moveHoriz = (dir: 1 | -1) => {\n if (!items.length) return;\n let i = focusIndex;\n for (let step = 0; step < items.length; step++) {\n i = (i + dir + items.length) % items.length;\n if (!items[i]?.disabled) {\n focusAt(i);\n return;\n }\n }\n };\n\n const moveVert = (dir: 1 | -1) => {\n if (!wrap || focusIndex < 0) return;\n const colsSafe = Math.max(cols, 1);\n const rows = Math.ceil(items.length / colsSafe);\n const row = Math.floor(focusIndex / colsSafe);\n const col = focusIndex % colsSafe;\n const targetRow = row + dir;\n if (targetRow < 0 || targetRow >= rows) return;\n\n const rowStart = targetRow * colsSafe;\n const rowEnd = Math.min(items.length - 1, rowStart + colsSafe - 1);\n\n let cand = Math.min(rowEnd, rowStart + col);\n if (items[cand]?.disabled) {\n for (let d = 1; d < colsSafe; d++) {\n const L = cand - d;\n const R = cand + d;\n if (L >= rowStart && !items[L]?.disabled) {\n cand = L;\n break;\n }\n if (R <= rowEnd && !items[R]?.disabled) {\n cand = R;\n break;\n }\n }\n }\n if (!items[cand]?.disabled) focusAt(cand);\n };\n\n const wrapperStyles: Interpolation<Theme>[] = [\n {\n display: \"flex\",\n flexWrap: wrap ? \"wrap\" : \"nowrap\",\n gap: spacing as any,\n width: width != null ? toCssLen(width) : undefined,\n alignItems: \"center\",\n boxSizing: \"border-box\",\n },\n wrapperCss,\n ];\n\n const basePatch: Interpolation<Theme> = {\n width: patchSize as any,\n height: patchSize as any,\n borderRadius: radiusCss,\n border: 0,\n padding: 0,\n appearance: \"none\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n boxSizing: \"border-box\",\n userSelect: \"none\",\n outline: \"none\",\n \"&:focus\": { outline: \"none\" },\n \"&:focus-visible\": { outline: \"none\" },\n \"&::-moz-focus-inner\": { border: 0 },\n };\n\n return (\n <div ref={containerRef} css={wrapperStyles} className=\"plainframe-ui-color-patches\">\n {items.map((it, idx) => {\n const isDis = !!it.disabled;\n return (\n <button\n className=\"plainframe-ui-color-patch\"\n key={idx}\n type=\"button\"\n ref={(el) => {\n refs.current[idx] = el;\n }}\n aria-label={it.label ?? it.title ?? it.color}\n data-disabled={isDis}\n tabIndex={-1}\n onClick={() => {\n if (!isDis) it.onClick?.();\n }}\n onKeyDown={(e) => {\n if (isDis) return;\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n moveHoriz(1);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n moveHoriz(-1);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n moveVert(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveVert(-1);\n break;\n case \"Home\":\n e.preventDefault();\n focusAt(0);\n break;\n case \"End\":\n e.preventDefault();\n focusAt(items.length - 1);\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n it.onClick?.();\n break;\n }\n }}\n css={[basePatch, { backgroundColor: it.color } as Interpolation<Theme>, patchCss, it.css]}\n title={it.title ?? it.label}\n disabled={isDis}\n />\n );\n })}\n </div>\n );\n }\n);\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype TriggerMode = \"contextmenu\" | \"dblclick\" | \"click\" | \"hover\";\n\ntype ContextZoneProps = {\n children: React.ReactNode;\n content?: React.ReactNode | ((api: { close: () => void }) => React.ReactNode);\n trigger?: TriggerMode;\n onOpenChange?: (open: boolean) => void;\n hoverOpenDelay?: number;\n hoverCloseDelay?: number;\n hoverPosition?: \"cursor\" | \"center\";\n hoverOffset?: number;\n};\n\nconst getName = (n: unknown): string => {\n if (\n typeof n === \"object\" &&\n n !== null &&\n \"type\" in n &&\n (n as { type?: unknown }).type\n ) {\n const type = (n as { type: unknown }).type;\n if (typeof type === \"object\" && type !== null) {\n return (type as { displayName?: string })?.displayName || (type as { name?: string })?.name || \"\";\n }\n if (typeof type === \"function\") {\n return (type as { displayName?: string })?.displayName || (type as { name?: string })?.name || \"\";\n }\n return \"\";\n }\n return \"\";\n};\n\nconst hasDropdownNodes = (node: unknown): boolean => {\n if (\n !node ||\n typeof node !== \"object\"\n )\n return false;\n const name = getName(node);\n if (name === \"DropdownMenu\" || name === \"DropdownMenuContent\") return true;\n const props = (node as React.ReactElement | null)?.props;\n const kids =\n props && typeof props === \"object\" && props !== null && \"children\" in props\n ? (props as { children?: unknown }).children\n : undefined;\n if (kids == null) return false;\n return Array.isArray(kids) ? kids.some(hasDropdownNodes) : hasDropdownNodes(kids);\n};\n\nexport const ContextZone: React.FC<ContextZoneProps> = ({\n children,\n content,\n trigger = \"contextmenu\",\n onOpenChange,\n hoverPosition = \"cursor\",\n hoverOffset = 10,\n}) => {\n const hostRef = React.useRef<HTMLDivElement | null>(null);\n const [open, setOpen] = React.useState(false);\n const setAndNotify = React.useCallback(\n (o: boolean) => {\n setOpen(o);\n onOpenChange?.(o);\n },\n [onOpenChange]\n );\n const close = React.useCallback(() => setAndNotify(false), [setAndNotify]);\n\n const ptRef = React.useRef<{ x: number; y: number }>({ x: 0, y: 0 });\n const shellRef = React.useRef<HTMLDivElement | null>(null);\n const rafId = React.useRef<number | null>(null);\n\n const flush = React.useCallback(() => {\n rafId.current = null;\n const el = shellRef.current;\n if (!el) return;\n const x = Math.round(ptRef.current.x);\n const y = Math.round(ptRef.current.y);\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }, []);\n\n const requestFlush = React.useCallback(() => {\n if (rafId.current != null) return;\n rafId.current = requestAnimationFrame(flush);\n }, [flush]);\n\n React.useEffect(() => {\n return () => {\n if (rafId.current) cancelAnimationFrame(rafId.current);\n };\n }, []);\n\n const virtualAnchor = React.useMemo(\n () => ({\n getBoundingClientRect: () => {\n const x = Math.round(ptRef.current.x);\n const y = Math.round(ptRef.current.y);\n return { x, y, left: x, top: y, right: x, bottom: y, width: 0, height: 0, toJSON: () => ({ x, y }) } as DOMRect;\n },\n }),\n []\n );\n\n const czIdRef = React.useRef(`cz-${Math.random().toString(36).slice(2)}`);\n const getMenuEl = React.useCallback(\n () =>\n typeof document !== \"undefined\"\n ? (document.querySelector(`[data-cz-id=\"${czIdRef.current}\"]`) as HTMLElement | null)\n : null,\n []\n );\n\n const openT = React.useRef<number | null>(null);\n const closeT = React.useRef<number | null>(null);\n const clearOpenT = React.useCallback(() => {\n if (openT.current != null) clearTimeout(openT.current);\n openT.current = null;\n }, []);\n const clearCloseT = React.useCallback(() => {\n if (closeT.current != null) clearTimeout(closeT.current);\n closeT.current = null;\n }, []);\n const scheduleClose = React.useCallback(() => {\n clearCloseT();\n closeT.current = window.setTimeout(() => setAndNotify(false), 0);\n }, [clearCloseT, setAndNotify]);\n\n const centerOfHost = React.useCallback(() => {\n const r = hostRef.current?.getBoundingClientRect();\n return r ? { x: r.left + r.width / 2, y: r.top + r.height / 2 } : { x: 0, y: 0 };\n }, []);\n\n const openAt = React.useCallback(\n (x: number, y: number) => {\n ptRef.current = { x, y };\n requestFlush();\n setAndNotify(true);\n },\n [requestFlush, setAndNotify]\n );\n\n const rendered = typeof content === \"function\" ? content({ close }) : content;\n const isMenuTree = hasDropdownNodes(rendered);\n\n const injectForMenu = (node: React.ReactNode): React.ReactNode => {\n if (!React.isValidElement(node)) return node;\n const name = getName(node);\n const element = node as React.ReactElement<any>;\n const kids = element.props.children;\n const nextChildren =\n kids == null\n ? kids\n : Array.isArray(kids)\n ? kids.map(child => (React.isValidElement(child) ? injectForMenu(child) : child))\n : React.isValidElement(kids)\n ? injectForMenu(kids)\n : kids;\n\n if (name === \"DropdownMenu\") {\n const prev = element.props.onOpenChange as ((o: boolean) => void) | undefined;\n return React.cloneElement<typeof element.props>(element, {\n ...element.props,\n open,\n onOpenChange: (o: boolean) => {\n prev?.(o);\n setAndNotify(o);\n },\n children: nextChildren,\n });\n }\n if (name === \"DropdownMenuContent\") {\n const prevEnter = element.props.onMouseEnter as ((e: React.MouseEvent) => void) | undefined;\n const prevLeave = element.props.onMouseLeave as ((e: React.MouseEvent) => void) | undefined;\n return React.cloneElement<typeof element.props>(element, {\n ...element.props,\n anchor: virtualAnchor,\n \"data-cz-id\": czIdRef.current,\n onMouseEnter: (e: React.MouseEvent) => {\n clearCloseT();\n prevEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n scheduleClose();\n prevLeave?.(e);\n },\n children: nextChildren,\n });\n }\n return nextChildren === kids ? element : React.cloneElement<typeof element.props>(element, { ...element.props, children: nextChildren });\n };\n\n const wired = isMenuTree ? injectForMenu(rendered) : rendered;\n\n const handleNonHoverOpen = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n openAt(e.clientX, e.clientY);\n },\n [openAt]\n );\n\n const onContextMenu = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"contextmenu\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onDoubleClick = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"dblclick\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onClick = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"click\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onMouseEnter = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger !== \"hover\") return;\n clearOpenT();\n clearCloseT();\n const base = hoverPosition === \"center\" ? centerOfHost() : { x: e.clientX, y: e.clientY };\n openT.current = window.setTimeout(() => {\n const x = base.x + (hoverPosition === \"cursor\" ? hoverOffset : 0);\n const y = base.y + (hoverPosition === \"cursor\" ? hoverOffset : 0);\n openAt(x, y);\n }, 0);\n },\n [trigger, hoverPosition, hoverOffset, centerOfHost, openAt, clearOpenT, clearCloseT]\n );\n\n const onMouseMove = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger !== \"hover\") return;\n if (open && hoverPosition === \"cursor\" && !isMenuTree) {\n ptRef.current = { x: e.clientX + hoverOffset, y: e.clientY + hoverOffset };\n requestFlush();\n }\n },\n [trigger, open, hoverPosition, isMenuTree, hoverOffset, requestFlush]\n );\n\n const onMouseLeave = React.useCallback(() => {\n if (trigger !== \"hover\") return;\n clearOpenT();\n scheduleClose();\n }, [trigger, clearOpenT, scheduleClose]);\n\n React.useEffect(() => {\n if (trigger !== \"hover\") return;\n const onMove = () => {\n if (!open) return;\n const hostHovered = hostRef.current?.matches(\":hover\");\n const menuHovered = getMenuEl()?.matches?.(\":hover\");\n if (hostHovered || menuHovered) clearCloseT();\n else scheduleClose();\n };\n window.addEventListener(\"pointermove\", onMove, { passive: true, capture: true });\n return () => window.removeEventListener(\"pointermove\", onMove, { capture: true });\n }, [open, trigger, getMenuEl, clearCloseT, scheduleClose]);\n\n React.useEffect(() => {\n const onScrollResize = () => {\n if (!open) return;\n if (trigger === \"hover\") {\n const hostHovered = hostRef.current?.matches(\":hover\");\n const menuHovered = getMenuEl()?.matches?.(\":hover\");\n if (hostHovered || menuHovered) clearCloseT();\n else scheduleClose();\n if (hoverPosition === \"center\" && hostRef.current) {\n const c = centerOfHost();\n ptRef.current = { x: c.x, y: c.y };\n requestFlush();\n }\n } else {\n setAndNotify(false);\n }\n };\n window.addEventListener(\"scroll\", onScrollResize, true);\n window.addEventListener(\"resize\", onScrollResize, true);\n return () => {\n window.removeEventListener(\"scroll\", onScrollResize, true);\n window.removeEventListener(\"resize\", onScrollResize, true);\n };\n }, [open, trigger, hoverPosition, centerOfHost, requestFlush, setAndNotify, clearCloseT, scheduleClose, getMenuEl]);\n\n React.useEffect(() => {\n return () => {\n clearOpenT();\n clearCloseT();\n };\n }, [clearOpenT, clearCloseT]);\n\n const FloatingShell: React.FC<{ children: React.ReactNode }> = ({ children }) =>\n open ? (\n <div\n ref={shellRef}\n style={{\n position: \"fixed\",\n left: 0,\n top: 0,\n transform: `translate3d(${Math.round(ptRef.current.x)}px, ${Math.round(ptRef.current.y)}px, 0)`,\n willChange: \"transform\",\n zIndex: 1000,\n pointerEvents: \"auto\",\n }}\n onMouseEnter={() => trigger === \"hover\" && clearCloseT()}\n onMouseLeave={() => trigger === \"hover\" && scheduleClose()}\n >\n {children}\n </div>\n ) : null;\n\n return (\n <div\n ref={hostRef}\n onContextMenu={onContextMenu}\n onDoubleClick={onDoubleClick}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n css={css({ position: \"relative\" })}\n className=\"plainframe-ui-context-zone-wrapper\"\n >\n {children}\n {isMenuTree ? wired : <FloatingShell>{wired}</FloatingShell>}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, forwardRef } from \"react\";\nimport { css } from \"@emotion/react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype DividerVariant = \"full\" | \"inset\" | \"middle\";\ntype LabelPos = \"left\" | \"right\" | \"center\" | \"top\" | \"bottom\";\ntype ChipVariant = \"subtle\" | \"outlined\";\n\nexport type DividerProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n label?: React.ReactNode;\n variant?: DividerVariant;\n direction?: \"vertical\" | \"horizontal\";\n labelPosition?: LabelPos;\n thickness?: number | string;\n width?: number | string;\n middleMargin?: number | string;\n insetMargin?: number | string;\n chip?: boolean;\n chipVariant?: ChipVariant;\n rounded?: boolean;\n margin?: number | string;\n css?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n strokeCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined, def = \"0px\"): string =>\n v == null ? def : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Divider: React.ForwardRefExoticComponent<\n DividerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n {\n label,\n variant = \"full\",\n direction = \"horizontal\",\n labelPosition = \"center\",\n thickness = 1,\n width,\n middleMargin = \"5px\",\n insetMargin = \"10px\",\n chip = false,\n chipVariant = \"subtle\",\n rounded = false,\n margin = 10,\n css: userCss,\n labelCss,\n strokeCss,\n className,\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const {\n t,\n strokeColor,\n labelTextColor,\n chipSubtleBg,\n chipOutlinedBg,\n outerM,\n padX,\n verticalStrokeMargin,\n } = useMemo(() => {\n const tVal = typeof thickness === \"number\" ? `${thickness}px` : thickness;\n const strokeColorVal = theme.surface.border;\n const labelTextColorVal = theme.text.secondary;\n const chipSubtleBgVal = theme.surface.subtleBg;\n const chipOutlinedBgVal = theme.surface.panelBg;\n const outerMVal = toLen(margin, \"10px\");\n const padXVal =\n direction === \"horizontal\"\n ? variant === \"middle\"\n ? toLen(middleMargin)\n : variant === \"inset\"\n ? toLen(insetMargin, \"0px\")\n : \"0\"\n : \"0\";\n const verticalStrokeMarginVal =\n direction === \"vertical\"\n ? variant === \"middle\"\n ? toLen(middleMargin)\n : variant === \"inset\"\n ? toLen(insetMargin, \"0px\")\n : \"0\"\n : \"0\";\n return {\n t: tVal,\n strokeColor: strokeColorVal,\n labelTextColor: labelTextColorVal,\n chipSubtleBg: chipSubtleBgVal,\n chipOutlinedBg: chipOutlinedBgVal,\n outerM: outerMVal,\n padX: padXVal,\n verticalStrokeMargin: verticalStrokeMarginVal,\n };\n }, [thickness, theme, direction, variant, middleMargin, insetMargin, margin]);\n\n const wrapCss = useMemo(\n () =>\n css([\n { display: \"flex\", alignItems: \"center\" },\n direction === \"vertical\"\n ? {\n flexDirection: \"column\",\n alignSelf: \"stretch\",\n width: label ? \"max-content\" : t,\n minWidth: label ? \"max-content\" : t,\n marginLeft: outerM,\n marginRight: outerM,\n }\n : {\n flexDirection: \"row\",\n width: width ? toLen(width) : \"100%\",\n minWidth: 0,\n paddingLeft: padX,\n paddingRight: variant === \"middle\" ? padX : \"0\",\n marginTop: outerM,\n marginBottom: outerM,\n },\n ...(Array.isArray(userCss) ? userCss : userCss ? [userCss] : [])\n ]),\n [direction, label, t, outerM, width, padX, variant, userCss]\n );\n\n const strokeBaseCss = useMemo(\n () =>\n css([\n {\n background: strokeColor,\n borderRadius: rounded ? theme.radius.full : theme.radius.xs,\n },\n direction === \"vertical\"\n ? {\n width: t,\n minHeight: 18,\n flex: 1,\n marginTop: verticalStrokeMargin,\n marginBottom: verticalStrokeMargin,\n }\n : { height: t, flex: 1 }\n ]),\n [strokeColor, rounded, theme.radius.full, theme.radius.xs, direction, t, verticalStrokeMargin]\n );\n\n const labelBaseCss = useMemo(\n () =>\n css([\n {\n margin: chip ? (direction === \"vertical\" ? \"4px 0\" : 0) : direction === \"vertical\" ? \"2px 0\" : 0,\n padding: chip ? \"3px 7px\" : 0,\n borderRadius: chip\n ? rounded\n ? theme.radius.full\n : `calc(${theme.radius.sm} * 0.75)`\n : `calc(${theme.radius.sm} * 0.75)`,\n color: labelTextColor,\n fontWeight: 500,\n fontSize: 13,\n textAlign: \"center\",\n alignSelf: \"center\",\n whiteSpace: direction === \"vertical\" ? \"normal\" : \"pre\",\n wordBreak: direction === \"vertical\" ? \"break-all\" : undefined,\n ...(chip\n ? chipVariant === \"subtle\"\n ? { background: chipSubtleBg, border: \"none\" }\n : { background: chipOutlinedBg, border: `${t} solid ${strokeColor}` }\n : {}),\n },\n ...(Array.isArray(labelCss) ? labelCss : labelCss ? [labelCss] : [])\n ]),\n [\n chip,\n direction,\n rounded,\n theme.radius.full,\n theme.radius.sm,\n labelTextColor,\n chipVariant,\n chipSubtleBg,\n chipOutlinedBg,\n t,\n strokeColor,\n labelCss,\n ]\n );\n\n const strokeEl = useMemo<React.ReactElement>(\n () => <div className=\"plainframe-ui-divider-stroke\" css={[strokeBaseCss, strokeCss]} />,\n [strokeBaseCss, strokeCss]\n );\n\n if (direction === \"vertical\") {\n return (\n <div\n ref={ref}\n data-direction=\"vertical\"\n data-variant={variant}\n data-chip={chip ? \"true\" : undefined}\n className={[\"plainframe-ui-divider-wrapper\", \"is-vertical\", className || \"\"].join(\" \").trim()}\n css={wrapCss}\n {...rest}\n >\n {label && labelPosition !== \"top\" && strokeEl}\n {label && (\n <span className=\"plainframe-ui-divider-label\" css={labelBaseCss}>\n {label}\n </span>\n )}\n {label && labelPosition !== \"bottom\" && strokeEl}\n {!label && strokeEl}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n data-direction=\"horizontal\"\n data-variant={variant}\n data-chip={chip ? \"true\" : undefined}\n className={[\"plainframe-ui-divider-wrapper\", className || \"\"].join(\" \").trim()}\n css={wrapCss}\n {...rest}\n >\n {label && labelPosition !== \"left\" && strokeEl}\n {label && (\n <span className=\"plainframe-ui-divider-label\" css={labelBaseCss}>\n {label}\n </span>\n )}\n {label && labelPosition !== \"right\" && strokeEl}\n {!label && strokeEl}\n </div>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n forwardRef,\n} from \"react\";\nimport { css, type Interpolation } from \"@emotion/react\";\nimport { motion, AnimatePresence, type PanInfo } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { Theme } from \"@emotion/react\";\n\ntype DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\ntype DrawerVariant = \"inset\" | \"full\";\n\n// Avoid DOM DragEvent vs Framer Motion drag signature clash in DTS\ntype DomDragKeys =\n | \"onDrag\"\n | \"onDragStart\"\n | \"onDragEnd\"\n | \"onDragOver\"\n | \"onDragEnter\"\n | \"onDragLeave\"\n | \"onDrop\";\n\n// Avoid DOM AnimationEvent vs Framer Motion animation signature clash in DTS\ntype DomAnimKeys = \"onAnimationStart\" | \"onAnimationEnd\";\n\nexport type DrawerProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n DomDragKeys | DomAnimKeys | \"style\"\n> & {\n on?: boolean;\n defaultOn?: boolean;\n onOpenChange?: (open: boolean) => void;\n onClose?: () => void;\n children: React.ReactNode;\n width?: number | string;\n height?: number | string;\n position?: DrawerSide;\n variant?: DrawerVariant;\n margin?: number | string;\n radius?: number | string;\n backdropBlur?: boolean;\n backdropBlurDepth?: number | string;\n closeOnClickAway?: boolean;\n lockScroll?: boolean;\n transitionMs?: number;\n snapClosePct?: number;\n velocityClosePxS?: number;\n dragElasticOut?: number;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nlet __locks = 0;\nlet __prevOverflow = \"\";\nlet __prevPadRight = \"\";\n\nconst getScrollbarW = (): number =>\n typeof window === \"undefined\"\n ? 0\n : window.innerWidth - document.documentElement.clientWidth;\n\nfunction lockBody(): void {\n if (typeof document === \"undefined\") return;\n if (__locks === 0) {\n const b = document.body;\n __prevOverflow = b.style.overflow || \"\";\n __prevPadRight = b.style.paddingRight || \"\";\n const sw = getScrollbarW();\n b.style.overflow = \"hidden\";\n if (sw > 0) b.style.paddingRight = `${sw}px`;\n }\n __locks += 1;\n}\n\nfunction unlockBody(): void {\n if (typeof document === \"undefined\") return;\n if (__locks > 0) __locks -= 1;\n if (__locks === 0) {\n const b = document.body;\n b.style.overflow = __prevOverflow;\n b.style.paddingRight = __prevPadRight;\n }\n}\n\nconst toNum = (v: number | string | undefined, fb = 0): number =>\n v == null ? fb : typeof v === \"number\" ? v : parseFloat(String(v)) || fb;\n\nexport const Drawer: React.ForwardRefExoticComponent<\n DrawerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n {\n on,\n defaultOn,\n onOpenChange,\n onClose,\n children,\n width,\n height,\n position = \"left\",\n variant = \"inset\",\n margin = 10,\n radius,\n backdropBlur = true,\n backdropBlurDepth,\n closeOnClickAway = true,\n lockScroll = true,\n transitionMs,\n snapClosePct = 0.33,\n velocityClosePxS = 950,\n dragElasticOut = 0.2,\n className,\n css: userCss,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n\n const isControlled = on !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(!!defaultOn);\n const open = isControlled ? !!on : internalOpen;\n\n const setOpen = useCallback(\n (v: boolean) => {\n if (!isControlled) setInternalOpen(v);\n if (!v) onClose?.();\n onOpenChange?.(v);\n },\n [isControlled, onClose, onOpenChange]\n );\n\n useEffect(() => {\n if (!lockScroll || !open) return;\n lockBody();\n return () => unlockBody();\n }, [open, lockScroll]);\n\n const marginPx = useMemo(() => toNum(margin, 0), [margin]);\n\n const axis: \"x\" | \"y\" = useMemo(\n () => (position === \"left\" || position === \"right\" ? \"x\" : \"y\"),\n [position]\n );\n const dir = useMemo(\n () => (position === \"left\" || position === \"top\" ? -1 : 1) as 1 | -1,\n [position]\n );\n\n const computedWidth: number | string = useMemo(\n () =>\n width ??\n (position === \"left\" || position === \"right\"\n ? 320\n : variant === \"inset\"\n ? `calc(100% - ${marginPx * 2}px)`\n : \"100%\"),\n [width, position, variant, marginPx]\n );\n\n const computedHeight: number | string = useMemo(\n () =>\n height ??\n (position === \"top\" || position === \"bottom\"\n ? 420\n : variant === \"inset\"\n ? `calc(100% - ${marginPx * 2}px)`\n : \"100%\"),\n [height, position, variant, marginPx]\n );\n\n const edgeRadius = useMemo(() => {\n const r = String(theme.radius.lg);\n switch (position) {\n case \"left\":\n return `0 ${r} ${r} 0`;\n case \"right\":\n return `${r} 0 0 ${r}`;\n case \"top\":\n return `0 0 ${r} ${r}`;\n default:\n return `${r} ${r} 0 0`;\n }\n }, [position, theme.radius.lg]);\n\n const computedRadius = useMemo(\n () => radius ?? (variant === \"inset\" ? theme.radius.lg : edgeRadius),\n [radius, variant, theme.radius.lg, edgeRadius]\n );\n\n const posCss = useMemo<{\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n }>(() => {\n if (variant === \"inset\") {\n return {\n top: position === \"bottom\" ? undefined : marginPx,\n bottom: position === \"top\" ? undefined : marginPx,\n left: position === \"right\" ? undefined : marginPx,\n right: position === \"left\" ? undefined : marginPx,\n };\n }\n return {\n top: position === \"bottom\" ? undefined : 0,\n bottom: position === \"top\" ? undefined : 0,\n left: position === \"right\" ? undefined : 0,\n right: position === \"left\" ? undefined : 0,\n };\n }, [variant, position, marginPx]);\n\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n const sizePx = useCallback((): number => {\n const el = panelRef.current;\n if (!el) return 1;\n const r = el.getBoundingClientRect();\n return axis === \"x\" ? r.width : r.height;\n }, [axis]);\n\n const springTransition = useMemo(\n () => ({ type: \"spring\", stiffness: 520, damping: 40, mass: 0.7 } as const),\n []\n );\n\n const timedTransition = useMemo(\n () =>\n ({\n duration: (transitionMs ?? 280) / 1000,\n ease: [0.22, 1, 0.36, 1] as [number, number, number, number],\n }) as const,\n [transitionMs]\n );\n\n const closedOffset = useMemo(() => dir * 1.1, [dir]);\n const initialTranslate = useMemo(\n () =>\n axis === \"x\"\n ? ({ x: `${closedOffset * 100}%`, y: 0 } as const)\n : ({ y: `${closedOffset * 100}%`, x: 0 } as const),\n [axis, closedOffset]\n );\n\n const panelCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n position: \"fixed\",\n zIndex: 1100,\n ...posCss,\n width: computedWidth as any,\n height: computedHeight as any,\n backgroundColor: (theme.surface as any).panelBg,\n borderRadius: computedRadius as any,\n overflowY: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n overscrollBehavior: \"contain\",\n willChange: \"transform, box-shadow, opacity\",\n backfaceVisibility: \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n touchAction: axis === \"x\" ? \"pan-y\" : \"pan-x\",\n \"@media (prefers-reduced-motion: reduce)\": { transition: \"none\" },\n }),\n [posCss, computedWidth, computedHeight, theme.surface, computedRadius, open, axis]\n );\n\n const overlayCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n position: \"fixed\",\n inset: 0,\n zIndex: 1099,\n background: (theme.surface as any).overlayBg,\n transition: \"all .3s ease\",\n ...(backdropBlur\n ? { backdropFilter: `blur(${backdropBlurDepth ?? \"2px\"})` }\n : null),\n }),\n [backdropBlur, backdropBlurDepth, theme.surface]\n );\n\n const onOverlayClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n () => {\n if (closeOnClickAway) setOpen(false);\n },\n [closeOnClickAway, setOpen]\n );\n\n const dragElastic = useMemo((): Record<string, number> => {\n return axis === \"x\"\n ? {\n left: dir === -1 ? dragElasticOut : 0,\n right: dir === 1 ? dragElasticOut : 0,\n }\n : {\n top: dir === -1 ? dragElasticOut : 0,\n bottom: dir === 1 ? dragElasticOut : 0,\n };\n }, [axis, dir, dragElasticOut]);\n\n const dragConstraints = useMemo(\n (): Record<string, number> =>\n axis === \"x\" ? { left: 0, right: 0 } : { top: 0, bottom: 0 },\n [axis]\n );\n\n const snapPct = useMemo(() => Math.max(0, Math.min(1, snapClosePct)), [snapClosePct]);\n\n const onDragEnd = useCallback(\n (_: unknown, info: PanInfo) => {\n const delta = axis === \"x\" ? info.offset.x : info.offset.y;\n const velocity = axis === \"x\" ? info.velocity.x : info.velocity.y;\n const movedOutward = dir * delta > 0;\n const distOk = Math.abs(delta) >= sizePx() * snapPct;\n const velOk = dir * velocity > velocityClosePxS;\n if (movedOutward && (distOk || velOk)) setOpen(false);\n },\n [axis, dir, sizePx, snapPct, velocityClosePxS, setOpen]\n );\n\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n window.addEventListener(\"keydown\", onKey, { passive: true });\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [open, setOpen]);\n const { ...safeRest } = rest;\n\n return (\n <AnimatePresence>\n {open ? (\n <>\n <motion.div\n key=\"overlay\"\n role=\"presentation\"\n aria-hidden\n css={overlayCss}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={transitionMs ? timedTransition : { duration: 0.18, ease: \"linear\" }}\n onClick={onOverlayClick}\n />\n <motion.div\n key=\"panel\"\n ref={(node: HTMLDivElement | null) => {\n panelRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n data-position={position}\n data-variant={variant}\n className={[\"plainframe-ui-drawer\", className || \"\"].join(\" \").trim()}\n css={[panelCss, userCss]}\n drag={axis}\n dragConstraints={dragConstraints}\n dragElastic={dragElastic as any}\n dragMomentum={false}\n dragDirectionLock\n onDragEnd={onDragEnd}\n initial={{ ...initialTranslate, opacity: 0.98 }}\n animate={{ x: 0, y: 0, opacity: 1 }}\n exit={{ ...initialTranslate, opacity: 0.98 }}\n transition={transitionMs ? timedTransition : springTransition}\n {...safeRest}\n >\n {children}\n </motion.div>\n </>\n ) : null}\n </AnimatePresence>\n );\n});\n\nDrawer.displayName = \"Drawer\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype FadeProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n blur?: boolean;\n};\n\nexport const Fade: React.FC<FadeProps> = ({\n children,\n duration = 300,\n delay = 0,\n on = false,\n onAnimationEnd,\n asChild = true,\n className,\n blur = false,\n}) => {\n const baseStyles = {\n opacity: on ? 1 : 0,\n filter: blur ? (on ? \"none\" : \"blur(10px)\") : \"none\",\n transition: `opacity ${duration}ms ease ${delay}ms, filter ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n willChange: \"opacity, filter\",\n backfaceVisibility: \"hidden\",\n } as const;\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (\n e.target === e.currentTarget &&\n (e.propertyName === \"opacity\" || e.propertyName === \"filter\")\n ) {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child = children as React.ReactElement<any>;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-fade\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles as import('@emotion/react').CSSObject);\n\n return (\n <div\n className={[\"plainframe-ui-transition-fade\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css as emCss, type Interpolation } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { Theme } from \"@emotion/react\";\n\ntype Dir = \"vertical\" | \"horizontal\" | \"column\" | \"row\";\ntype GapKey = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type FlexProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n direction?: Dir;\n gap?: GapKey | number | string;\n justify?: React.CSSProperties[\"justifyContent\"];\n align?: React.CSSProperties[\"alignItems\"];\n css?: Interpolation<Theme>;\n width?: string | number;\n height?: string | number;\n};\n\nconst toLen = (v?: string | number): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Flex: React.ForwardRefExoticComponent<\n FlexProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, FlexProps>(function Flex(\n {\n direction = \"row\",\n gap = \"sm\",\n justify,\n align = \"center\",\n className,\n css: userCss,\n children,\n width,\n height,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n\n const flexDirection: React.CSSProperties[\"flexDirection\"] =\n direction === \"vertical\" || direction === \"column\" ? \"column\" : \"row\";\n\n const gapVal: string | number | undefined =\n gap === undefined\n ? undefined\n : typeof gap === \"number\"\n ? gap\n : (theme.spacing as Record<string, string | number>)[gap as GapKey] ?? gap;\n\n const base: Interpolation<Theme> = emCss({\n display: \"flex\",\n flexDirection,\n gap: gapVal as any,\n justifyContent: justify,\n alignItems: align,\n maxWidth: toLen(width),\n width: width ? \"100%\" : undefined,\n maxHeight: toLen(height),\n height: height ? \"100%\" : undefined,\n boxSizing: \"border-box\",\n });\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-flex\", className || \"\"].join(\" \").trim()}\n css={[base, userCss]}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = \"Flex\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype GrowProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n initialScale?: number;\n finalScale?: number;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n};\n\nexport const Grow: React.FC<GrowProps> = ({\n children,\n duration = 300,\n delay = 0,\n on = false,\n initialScale = 0,\n finalScale = 1,\n onAnimationEnd,\n asChild = true,\n className,\n}) => {\n const baseStyles = {\n transform: on ? `scale(${finalScale})` : `scale(${initialScale})`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? (\"auto\" as React.CSSProperties[\"pointerEvents\"]) : (\"none\" as React.CSSProperties[\"pointerEvents\"]),\n willChange: \"transform\" as const,\n backfaceVisibility: \"hidden\" as const,\n };\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n const mergedClassName = [\n \"plainframe-ui-transition-grow\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles);\n\n return (\n <div\n className={[\"plainframe-ui-transition-grow\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Typography } from \"./Typography\";\n\ntype HoverEffect = \"scale\" | \"rotate\" | \"scale-rotate\" | \"none\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ImageProps = Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"style\"> & {\n radius?: number | string | RadiusToken;\n shadow?: boolean;\n hoverEffect?: HoverEffect;\n label?: React.ReactNode;\n labelAlign?: \"left\" | \"center\" | \"right\";\n aspectRatio?: number | string;\n placeholder?: \"blur\" | \"color\";\n blurDataURL?: string;\n placeholderColor?: string;\n fallbackSrc?: string;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst resolveRadius = (\n radius: RadiusToken | string | number | undefined,\n theme: any\n) => {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n};\n\nexport const Image: React.ForwardRefExoticComponent<\n ImageProps & React.RefAttributes<HTMLImageElement>\n> = forwardRef<HTMLImageElement, ImageProps>(function Image(\n {\n src,\n alt = \"\",\n width,\n height,\n radius = \"md\",\n shadow = false,\n hoverEffect = \"none\",\n label,\n labelAlign = \"center\",\n aspectRatio,\n loading = \"lazy\",\n decoding = \"async\",\n fetchPriority,\n srcSet,\n sizes,\n placeholder,\n blurDataURL,\n placeholderColor = \"#f1f1f1\",\n fallbackSrc,\n className,\n css: userCss,\n onClick,\n onLoad,\n onError,\n ...imgRest\n },\n ref\n) {\n const [hovering, setHovering] = useState(false);\n const [errored, setErrored] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const theme = usePlainframeUITheme();\n\n const br = resolveRadius(radius, theme) ?? \"0px\";\n const WrapperEl: any = label ? \"figure\" : \"div\";\n\n const wrapperCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n gap: label ? theme.spacing.xs : 0,\n width: \"fit-content\",\n borderRadius: `var(--pfui-image-radius, ${br})`,\n });\n\n const frameCss = css({\n position: \"relative\",\n borderRadius: `var(--pfui-image-radius, ${br})`,\n maxWidth: width ? toLen(width)! : \"100%\",\n maxHeight: height ? toLen(height)! : undefined,\n width: width ? \"100%\" : undefined,\n height: height ? \"100%\" : undefined,\n aspectRatio: aspectRatio as any,\n boxShadow: shadow ? \"0 12px 32px rgba(0,0,0,.12), 0 2px 8px rgba(0,0,0,.04)\" : \"none\",\n overflow: \"hidden\",\n padding: 0,\n lineHeight: 0,\n transition: \"transform 0.3s ease\",\n willChange: \"transform\",\n transform:\n hovering && (hoverEffect === \"rotate\" || hoverEffect === \"scale-rotate\")\n ? \"rotate(3deg)\"\n : \"none\",\n cursor: onClick ? \"pointer\" : undefined,\n });\n\n const placeholderCss = css({\n position: \"absolute\",\n inset: 0,\n background:\n placeholder === \"color\" ? (placeholderColor as string) : undefined,\n backgroundImage:\n placeholder === \"blur\" && blurDataURL ? `url(${blurDataURL})` : undefined,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: placeholder === \"blur\" ? \"blur(8px)\" : undefined,\n transition: \"opacity 0.3s ease\",\n opacity: loaded ? 0 : 1,\n pointerEvents: \"none\",\n });\n\n const imgCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"block\",\n objectFit: \"cover\",\n transform:\n hovering && (hoverEffect === \"scale\" || hoverEffect === \"scale-rotate\")\n ? \"scale(1.08)\"\n : \"none\",\n transition: \"transform 0.3s ease\",\n willChange: \"transform\",\n });\n\n return (\n <WrapperEl\n className={[\"plainframe-ui-image\", className || \"\"].join(\" \").trim()}\n css={[wrapperCss, userCss]}\n tabIndex={-1}\n >\n <div\n className=\"plainframe-ui-image-frame\"\n css={frameCss}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n onClick={onClick as any}\n >\n {!loaded && placeholder && (\n <div aria-hidden className=\"plainframe-ui-image-placeholder\" css={placeholderCss} />\n )}\n <img\n ref={ref}\n className=\"plainframe-ui-image-img\"\n css={imgCss}\n src={errored && fallbackSrc ? fallbackSrc : (src as string)}\n alt={alt}\n srcSet={srcSet}\n sizes={sizes}\n loading={loading}\n decoding={decoding}\n fetchPriority={fetchPriority}\n onLoad={(e) => {\n setLoaded(true);\n onLoad?.(e);\n }}\n onError={(e) => {\n setErrored(true);\n onError?.(e);\n }}\n {...imgRest}\n />\n </div>\n\n {label && (\n <Typography as=\"figcaption\" variant=\"caption\" align={labelAlign}>\n {label}\n </Typography>\n )}\n </WrapperEl>\n );\n});\n\nImage.displayName = \"Image\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\nconst MAP = {\n h1: { size: \"2.25rem\", weight: 700, lh: 1.1, ls: \"-0.02em\" },\n h2: { size: \"1.875rem\", weight: 700, lh: 1.15, ls: \"-0.01em\" },\n h3: { size: \"1.5rem\", weight: 600, lh: 1.2, ls: \"-0.005em\" },\n h4: { size: \"1.25rem\", weight: 600, lh: 1.2, ls: \"0\" },\n body: { size: \"0.95rem\", weight: 500, lh: 1.2, ls: \"0\" },\n caption: { size: \"0.8rem\", weight: 500, lh: 1.2, ls: \"0.01em\" },\n} as const;\n\ntype Variant = keyof typeof MAP;\ntype Align = \"left\" | \"center\" | \"right\";\ntype Decoration = \"none\" | \"underline\" | \"overline\" | \"line-through\";\ntype DecorationStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport type TypographyProps = {\n variant?: Variant;\n children: React.ReactNode;\n color?: string | \"primary\" | \"secondary\";\n size?: number | string;\n weight?: number | string;\n lineHeight?: number | string;\n letterSpacing?: number | string;\n align?: Align;\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\" | \"lowercase\";\n whiteSpace?: \"normal\" | \"nowrap\" | \"pre\" | \"pre-wrap\";\n decoration?: Decoration;\n decorationStyle?: DecorationStyle;\n decorationThickness?: number | string;\n decorationColor?: string;\n italic?: boolean;\n className?: string;\n style?: React.CSSProperties;\n as?: keyof JSX.IntrinsicElements;\n};\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : String(v);\n\nconst defaultTagByVariant: Record<Variant, keyof JSX.IntrinsicElements> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n body: \"span\",\n caption: \"span\",\n};\n\nexport const Typography: React.FC<TypographyProps> = ({\n variant = \"body\",\n children,\n color,\n size,\n weight,\n lineHeight,\n letterSpacing,\n align = \"left\",\n textTransform = \"none\",\n whiteSpace = \"normal\",\n decoration = \"none\",\n decorationStyle = \"solid\",\n decorationThickness = 1,\n decorationColor,\n italic,\n className,\n style,\n as,\n}) => {\n const theme = usePlainframeUITheme();\n const def = MAP[variant] ?? MAP.body;\n const Tag = as ?? defaultTagByVariant[variant] ?? \"span\";\n\n const fontSize =\n size ?? (theme?.fontSizes && (theme.fontSizes as any)[variant]) ?? def.size;\n const fontWeight = weight ?? def.weight;\n const lh = lineHeight ?? def.lh;\n const ls = letterSpacing ?? def.ls;\n\n const fg =\n color === \"secondary\"\n ? theme.text.secondary\n : color === \"primary\"\n ? theme.text.primary\n : color ?? \"inherit\";\n\n const decoColor = decorationColor ?? theme.surface.border;\n\n const baseCss = css({\n boxSizing: \"border-box\",\n display: align === \"left\" ? \"inline\" : \"block\",\n textAlign: align === \"left\" ? undefined : align,\n fontFamily: theme?.fonts?.sans || \"inherit\",\n fontSize,\n fontWeight: fontWeight as number | string,\n lineHeight: lh as number | string,\n letterSpacing: ls as number | string,\n color: fg,\n textTransform,\n whiteSpace,\n fontStyle: italic ? \"italic\" : \"normal\",\n margin: 0,\n padding: 0,\n });\n\n const decoCss =\n decoration === \"none\"\n ? css({\n textDecoration: \"none\",\n })\n : css({\n textDecorationLine: decoration,\n textDecorationStyle: decorationStyle,\n textDecorationColor: decoColor,\n textDecorationThickness: toLen(decorationThickness),\n textDecorationSkipInk: \"auto\",\n });\n\n return (\n <Tag\n className={[`pfui-typo-${variant}`, className || \"\"].join(\" \").trim()}\n css={[baseCss, decoCss]}\n style={style}\n data-variant={variant}\n >\n {children}\n </Tag>\n );\n};\nTypography.displayName = \"Typography\";\n","/** @jsxImportSource @emotion/react */\nimport React, { memo, Children, isValidElement } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Typography } from \"./Typography\";\nimport { Theme } from \"@emotion/react\";\n\ntype Variant = \"fan\" | \"slide\" | \"domino\" | \"ladder\";\ntype HoverEffect = \"reveal\" | \"expand\" | \"none\";\ntype Size = \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ImageStackProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n children: React.ReactNode;\n variant?: Variant;\n width?: number | string;\n aspectRatio?: number | string;\n size?: Size;\n hoverEffect?: HoverEffect;\n hovering?: boolean;\n maxItems?: number;\n shadow?: boolean;\n cursor?: React.CSSProperties[\"cursor\"];\n outline?: boolean;\n outlineColor?: string;\n outlineWidth?: number;\n outlineOffset?: number;\n radius?: number | string | RadiusToken;\n label?: React.ReactNode;\n labelAlign?: \"left\" | \"center\" | \"right\";\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst px = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst parseAR = (ar: unknown): number | undefined => {\n if (typeof ar === \"number\" && isFinite(ar) && ar > 0) return ar;\n if (typeof ar === \"string\") {\n const m = ar.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*\\/\\s*(\\d+(?:\\.\\d+)?)$/);\n if (m) {\n const w = parseFloat(m[1]);\n const h = parseFloat(m[2]);\n if (w > 0 && h > 0) return w / h;\n }\n const n = parseFloat(ar);\n if (isFinite(n) && n > 0) return n;\n }\n return undefined;\n};\n\nconst rad = (d: number) => (d * Math.PI) / 180;\nconst rotatedBBox = (w: number, h: number, deg: number) => {\n const t = Math.abs(rad(deg));\n const c = Math.cos(t);\n const s = Math.sin(t);\n return { w: Math.abs(w * c) + Math.abs(h * s), h: Math.abs(h * c) + Math.abs(w * s) };\n};\n\nfunction variantTx(variant: Variant, n: number) {\n if (n <= 1) {\n const z = { ang: [0], dx: [0], dy: [0] };\n return { base: z, exp: z };\n }\n if (variant === \"fan\") {\n const base = n === 2 ? { ang: [-14, 10], dx: [-40, 24], dy: [0, 0] } : { ang: [-14, 0, 14], dx: [-55, 0, 55], dy: [-7.5, 0, -7.5] };\n const exp = n === 2 ? { ang: [-7, 5], dx: [-20, 12], dy: [0, 0] } : { ang: [-7, 0, 7], dx: [-32.5, 0, 32.5], dy: [0, 0, 0] };\n return { base, exp };\n }\n if (variant === \"slide\") {\n const base = n === 2 ? { ang: [-20, 3], dx: [-10, 5], dy: [-2, 0] } : { ang: [-20, -5, 10], dx: [-35, -10, 12], dy: [4, 0, 4] };\n const exp = n === 2 ? { ang: [-10, 1.5], dx: [-10, 5], dy: [-2, 0] } : { ang: [-10, -2.5, 5], dx: [-30.5, -7.5, 6], dy: [4, 0, 4] };\n return { base, exp };\n }\n if (variant === \"domino\") {\n const base = n === 2 ? { ang: [0, 0], dx: [0, 0], dy: [-11, 5] } : { ang: [0, 0, 0], dx: [0, 0, 0], dy: [-18, -5, 6] };\n const exp = n === 2 ? { ang: [0, 0], dx: [0, 0], dy: [-5, 5] } : { ang: [0, 0, 0], dx: [0, 0, 0], dy: [-14, -2.5, 7] };\n return { base, exp };\n }\n const base = n === 2 ? { ang: [-4, 8], dx: [-22, 18], dy: [-30, 40] } : { ang: [-10, 10, 0.5], dx: [-30, 30, -15], dy: [-65, 2, 65] };\n const exp = n === 2 ? { ang: [-3, 6], dx: [-11, 9], dy: [-22.5, 30] } : { ang: [-7.5, 7.5, 0.35], dx: [-15, 20, -10.5], dy: [-55.5, 2, 55.5] };\n return { base, exp };\n}\n\nconst baseScale = (variant: Variant, n: number, i: number) =>\n variant === \"fan\" ? (n === 2 ? [0.9, 1.08][i] ?? 1 : [0.8, 1.0, 0.8][i] ?? 1)\n : variant === \"slide\" ? (n === 2 ? [0.8, 1.0][i] ?? 1 : [0.7, 0.85, 1.0][i] ?? 1)\n : variant === \"domino\" ? (n === 2 ? [0.9, 1.0][i] ?? 1 : [0.85, 0.95, 1.0][i] ?? 1)\n : 1;\n\nconst bumpReveal = [1.02, 1.03, 1.02];\nconst bumpExpand = [1.06, 1.08, 1.06];\n\nconst SIZE_W: Record<Size, number> = { sm: 150, md: 200, lg: 260, xl: 340 };\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nfunction resolveRadius(radius: RadiusToken | string | number | undefined, theme: any) {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n}\n\nexport const ImageStack: React.FC<ImageStackProps> = memo(function ImageStack({\n children,\n variant = \"fan\",\n width,\n aspectRatio = \"4/5\",\n size = \"md\",\n hoverEffect = \"none\",\n hovering,\n maxItems = 3,\n shadow = false,\n cursor,\n outline,\n outlineColor,\n outlineWidth = 3,\n outlineOffset = 0,\n radius = \"md\",\n label,\n labelAlign = \"center\",\n css: userCss,\n className,\n ...rest\n}: ImageStackProps) {\n const theme = usePlainframeUITheme();\n const AR = parseAR(aspectRatio) ?? 4 / 5;\n\n const wStr = typeof width === \"string\" ? width : undefined;\n const Wn =\n typeof width === \"number\"\n ? width\n : wStr && /px$/.test(wStr)\n ? parseFloat(wStr)\n : SIZE_W[size];\n const Hn = Math.max(1, Wn / AR);\n\n const all = Children.toArray(children).filter(isValidElement) as React.ReactElement[];\n const items = all.slice(0, maxItems);\n const n = items.length;\n\n const t = variantTx(variant, n);\n const baseScales = items.map((_, i) => baseScale(variant, n, i));\n const frameH = (i: number) => Hn * 0.6 * baseScales[i];\n const frameW = (i: number) => frameH(i) * AR;\n\n let halfW = 0, halfH = 0;\n for (let i = 0; i < n; i++) {\n const bw = frameW(i);\n const bh = frameH(i);\n const worstAng = Math.max(Math.abs(t.base.ang[i] ?? 0), Math.abs(t.exp.ang[i] ?? 0));\n const worstDx = Math.max(Math.abs(t.base.dx[i] ?? 0), Math.abs(t.exp.dx[i] ?? 0));\n const worstDy = Math.max(Math.abs(t.base.dy[i] ?? 0), Math.abs(t.exp.dy[i] ?? 0));\n const bump = hoverEffect === \"expand\" ? bumpExpand[i] ?? 1.08 : hoverEffect === \"reveal\" ? bumpReveal[i] ?? 1.03 : 1;\n const rot = rotatedBBox(bw, bh, worstAng);\n const w0 = rot.w * bump;\n const h0 = rot.h * bump;\n const sx = (worstDx / 100) * bw * bump;\n const sy = (worstDy / 100) * bh * bump;\n halfW = Math.max(halfW, w0 / 2 + sx);\n halfH = Math.max(halfH, h0 / 2 + sy);\n }\n\n const stageW0 = Math.max(1, 2 * halfW);\n const stageH0 = Math.max(1, 2 * halfH);\n const stageScale = Math.min(1, Wn / stageW0, Hn / stageH0);\n\n const hoverMode = hovering === undefined ? \"pointer\" : \"controlled\";\n const hoverAttr = hovering ? \"true\" : undefined;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n cursor: cursor || \"auto\",\n lineHeight: 0,\n position: \"relative\",\n isolation: \"isolate\",\n gap: label ? theme.spacing.xs : 0,\n });\n\n const stackCss = css({\n position: \"relative\",\n width: px(typeof width === \"number\" ? width : Wn) ?? (typeof width === \"string\" ? width : undefined),\n height: px(Hn),\n });\n\n const stageCss = css({\n position: \"absolute\",\n inset: 0,\n left: \"50%\",\n top: \"50%\",\n width: `${stageW0}px`,\n height: `${stageH0}px`,\n transform: `translate(-50%, -50%) scale(${stageScale})`,\n transformOrigin: \"center center\",\n });\n\n const frameRadius = resolveRadius(radius, theme) ?? \"0px\";\n\n const cardCss = (i: number) => {\n const baseTx =\n variant === \"fan\"\n ? `rotate(${t.base.ang[i]}deg) translate(${t.base.dx[i]}%, ${t.base.dy[i]}%)`\n : variant === \"slide\"\n ? `translate(${t.base.dx[i]}%, ${t.base.dy[i]}%) rotate(${t.base.ang[i]}deg)`\n : variant === \"domino\"\n ? `translate(0%, ${t.base.dy[i]}%)`\n : `translate(${t.base.dx[i]}%, ${t.base.dy[i]}%) rotate(${t.base.ang[i]}deg)`;\n const expTx =\n variant === \"fan\"\n ? `rotate(${t.exp.ang[i]}deg) translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%)`\n : variant === \"slide\"\n ? `translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%) rotate(${t.exp.ang[i]}deg)`\n : variant === \"domino\"\n ? `translate(0%, ${t.exp.dy[i]}%)`\n : `translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%) rotate(${t.exp.ang[i]}deg)`;\n\n const baseTransform = hoverEffect === \"reveal\" ? `translate(0,0) rotate(0) scale(1)` : `${baseTx} scale(1)`;\n const hoverTransform =\n hoverEffect === \"expand\"\n ? `${expTx} scale(${bumpExpand[i] ?? 1.06})`\n : hoverEffect === \"reveal\"\n ? `${baseTx} scale(${bumpReveal[i] ?? 1.03})`\n : `${baseTx} scale(1)`;\n\n return css({\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: `translate(-50%, -50%) ${baseTransform}`,\n transition: \"transform .22s ease\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n zIndex: variant === \"fan\" ? (i === 1 ? 10 : i + 1) : i + 1,\n lineHeight: 0,\n boxShadow: shadow ? \"rgba(0,0,0,.12) 0 8px 20px\" : \"none\",\n outline: outline ? `${outlineWidth}px solid ${outlineColor ?? theme.surface.appBg}` : undefined,\n outlineOffset: outline ? outlineOffset : undefined,\n pointerEvents: \"auto\",\n \".plainframe-ui-image-stack-wrapper[data-hover-mode='pointer']:hover &\": {\n transform: `translate(-50%, -50%) ${hoverTransform}`,\n },\n \".plainframe-ui-image-stack-wrapper[data-hover-mode='controlled'][data-hovered='true'] &\": {\n transform: `translate(-50%, -50%) ${hoverTransform}`,\n },\n });\n };\n\n const frameCss = (i: number) =>\n css({\n width: `${frameW(i)}px`,\n aspectRatio: `${AR}`,\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: frameRadius,\n [\"--pfui-image-radius\" as any]: frameRadius,\n \"& > *\": {\n position: \"absolute\",\n inset: \"0\",\n width: \"100% !important\",\n height: \"100% !important\",\n maxWidth: \"none !important\",\n maxHeight: \"none !important\",\n display: \"block\",\n },\n \"& img, & picture img, & video, & canvas\": {\n width: \"100% !important\",\n height: \"100% !important\",\n objectFit: \"cover\",\n display: \"block\",\n },\n });\n\n const WrapperEl: any = label ? \"figure\" : \"div\";\n\n return (\n <WrapperEl\n className={[\"plainframe-ui-image-stack-wrapper\", className || \"\"].join(\" \").trim()}\n data-hover-mode={hoverMode}\n data-hovered={hoverAttr}\n css={[rootCss, userCss]}\n tabIndex={-1}\n {...rest}\n >\n <div className=\"plainframe-ui-image-stack\" css={stackCss}>\n <div className=\"plainframe-ui-image-stack-stage\" css={stageCss}>\n {items.map((child, i) => (\n <div key={i} className=\"plainframe-ui-image-stack-item\" css={cardCss(i)}>\n <div className=\"plainframe-ui-image-stack-frame\" css={frameCss(i)}>\n {child}\n </div>\n </div>\n ))}\n </div>\n </div>\n {label && (\n <Typography as=\"figcaption\" variant=\"caption\" align={labelAlign}>\n {label}\n </Typography>\n )}\n </WrapperEl>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\nconst toLen = (v?: number | string) => (typeof v === \"number\" ? `${v}px` : v);\n\nexport type KbdProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n variant?: \"subtle\" | \"outlined\" | \"ghost\";\n size?: \"sm\" | \"md\" | \"lg\";\n radius?: number | string;\n mono?: boolean;\n uppercase?: boolean;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst sizeTokens: Record<NonNullable<KbdProps[\"size\"]>, { h: number; px: number; font: number }> = {\n sm: { h: 20, px: 6, font: 10 },\n md: { h: 24, px: 7, font: 12 },\n lg: { h: 28, px: 8, font: 14 },\n};\n\nfunction resolveRadius(radius: number | string | undefined, theme: any) {\n if (radius == null) {\n const fallback = theme.radius?.xs ?? theme.radius?.sm ?? 3;\n return toLen(fallback);\n }\n if (typeof radius === \"number\") return `${radius}px`;\n const token =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n if (token != null) return toLen(token);\n return radius;\n}\n\nexport const Kbd: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<KbdProps> & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, KbdProps>(function Kbd(\n {\n children,\n variant = \"outlined\",\n size = \"sm\",\n radius,\n mono = true,\n uppercase = false,\n css: userCss,\n className = \"plainframe-ui-kbd\",\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const t = sizeTokens[size] ?? sizeTokens.sm;\n const r = resolveRadius(radius, theme);\n\n const gray = {\n br: theme.neutral[300],\n txt: theme.neutral[800],\n inset: theme.neutral[0],\n };\n\n const base = css({\n all: \"unset\",\n boxSizing: \"border-box\",\n display: \"inline-flex !important\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: variant === \"ghost\" ? undefined : `${t.h}px !important`,\n minHeight: variant === \"ghost\" ? undefined : `${t.h}px !important`,\n paddingInline: variant === \"ghost\" ? 0 : `${t.px}px !important`,\n paddingBlock: `0 !important`,\n fontFamily: mono\n ? 'var(--pf-font-mono, Consolas, ui-monospace, SFMono-Regular, Menlo, Monaco, \"Liberation Mono\", \"Courier New\", monospace)'\n : \"inherit\",\n fontSize: variant === \"ghost\" ? `${t.font * 1.2}px !important` : `${t.font}px !important`,\n fontWeight: 600,\n letterSpacing: 0.2,\n lineHeight: `0.2 !important`,\n textTransform: uppercase ? \"uppercase\" : \"none\",\n borderRadius: r as string,\n userSelect: \"none\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"baseline\",\n position: \"relative\",\n transition:\n \"box-shadow .15s ease, background-color .15s ease, border-color .15s ease, color .15s ease\",\n outline: \"none\",\n });\n\n const subtle = css({\n \"&&\": {\n background: theme.neutral[200],\n border: \"none\",\n boxShadow: \"none\",\n color: gray.txt,\n },\n });\n\n const ghost = css({\n \"&&\": {\n background: \"transparent\",\n color: gray.txt,\n border: \"none\",\n boxShadow: \"none\",\n },\n });\n\n const outlined = css({\n \"&&\": {\n background: theme.surface.panelBg,\n color: gray.txt,\n border: `1px solid ${gray.br}`,\n boxShadow: `inset 0 1px 0 ${gray.inset}AA, 0 1px 0 rgba(0,0,0,0.03)`,\n },\n });\n\n const variantCss = variant === \"subtle\" ? subtle : variant === \"ghost\" ? ghost : outlined;\n\n return (\n <kbd ref={ref} className={className} css={[focusRing(), base, variantCss, userCss]} {...rest}>\n {children}\n </kbd>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useEffect,\n useMemo,\n useContext,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { Backdrop } from \"./Backdrop\";\nimport { Slide } from \"./Slide\";\nimport { Fade } from \"./Fade\";\nimport { Grow } from \"./Grow\";\nimport { Container } from \"./Container\";\n\n/* ───────── utils ───────── */\nconst toLen = (v?: number | string): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst setRef = <T,>(ref: React.Ref<T> | undefined, value: T | null) => {\n if (!ref) return;\n if (typeof ref === \"function\") (ref as (v: T | null) => void)(value);\n else (ref as unknown as { current: T | null }).current = value;\n};\n\nconst mergeRefs =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null) => {\n for (const ref of refs) setRef(ref, node);\n };\n\n/* ───────── context ───────── */\ntype ModalCtxT = {\n open: boolean;\n setOpen: (next: boolean) => void;\n lockScroll: boolean;\n closeOnEsc: boolean;\n};\nconst ModalCtx = React.createContext<ModalCtxT | null>(null);\nconst useModalCtx = (): ModalCtxT => {\n const ctx = useContext(ModalCtx);\n if (!ctx) throw new Error(\"Modal components must be used within <Modal>.\");\n return ctx;\n};\n\n/* ───────── root ───────── */\nexport type ModalProps = {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n lockScroll?: boolean;\n closeOnEsc?: boolean;\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n open: controlled,\n defaultOpen,\n onOpenChange,\n lockScroll = true,\n closeOnEsc = true,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n\n const setOpen = useCallback(\n (next: boolean): void => {\n if (controlled === undefined) setUncontrolled(next);\n onOpenChange?.(next);\n },\n [controlled, onOpenChange]\n );\n\n useEffect(() => {\n if (!open || !closeOnEsc) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handler, true);\n return () => window.removeEventListener(\"keydown\", handler, true);\n }, [open, closeOnEsc, setOpen]);\n\n const value = useMemo<ModalCtxT>(\n () => ({ open, setOpen, lockScroll, closeOnEsc }),\n [open, setOpen, lockScroll, closeOnEsc]\n );\n\n return <ModalCtx.Provider value={value}>{children}</ModalCtx.Provider>;\n};\n\n/* ───────── trigger ───────── */\nexport type ModalTriggerProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n asChild?: boolean;\n css?: Interpolation<Theme>;\n};\n\nexport const ModalTrigger: React.ForwardRefExoticComponent<\n ModalTriggerProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, ModalTriggerProps>(\n ({ asChild = true, children, className, css: userCss, ...rest }, ref) => {\n const { setOpen } = useModalCtx();\n const canAsChild = !!asChild && React.isValidElement(children);\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n if (canAsChild) {\n const onClick = (children as React.ReactElement).props.onClick as\n | ((ev: React.MouseEvent<HTMLElement>) => void)\n | undefined;\n onClick?.(e);\n }\n (rest.onClick as ((ev: React.MouseEvent<HTMLElement>) => void) | undefined)?.(e);\n if (!e.defaultPrevented) setOpen(true);\n },\n [canAsChild, children, rest.onClick, setOpen]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n if (canAsChild) {\n const onKeyDown = (children as React.ReactElement).props.onKeyDown as\n | ((ev: React.KeyboardEvent<HTMLElement>) => void)\n | undefined;\n onKeyDown?.(e);\n }\n (rest.onKeyDown as ((ev: React.KeyboardEvent<HTMLElement>) => void) | undefined)?.(e);\n },\n [canAsChild, children, rest.onKeyDown, setOpen]\n );\n\n if (canAsChild) {\n const child = children as React.ReactElement;\n const childCss = (child.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(child, {\n ref: mergeRefs(ref, (child as any).ref),\n className: [child.props.className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"dialog\",\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...rest,\n });\n }\n\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n className={className}\n css={userCss}\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </button>\n );\n }\n);\nModalTrigger.displayName = \"ModalTrigger\";\n\n/* ───────── content ───────── */\nexport type ModalContentProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: \"inset\" | \"full\";\n width?: number | string;\n height?: number | string;\n radius?: number | string;\n padding?: number | string;\n backdrop?: boolean;\n backdropBlur?: boolean;\n backdropBlurDepth?: number;\n closeOnBackdropClick?: boolean;\n transitionVariant?: \"fade\" | \"slide\" | \"grow\" | \"none\";\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n transitionDuration?: number;\n containerCss?: Interpolation<Theme>;\n backdropCss?: Interpolation<Theme>;\n className?: string;\n};\n\nexport const ModalContent: React.ForwardRefExoticComponent<\n ModalContentProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ModalContentProps>(\n (\n {\n children,\n variant = \"inset\",\n width = 500,\n height = \"auto\",\n radius = \"lg\",\n padding = \"lg\",\n backdrop = true,\n backdropBlur = true,\n backdropBlurDepth = 5,\n closeOnBackdropClick = true,\n transitionVariant = \"fade\",\n direction = \"up\",\n transitionDuration = 300,\n containerCss,\n backdropCss,\n className,\n ...rest\n },\n ref\n ) => {\n const { open, setOpen, lockScroll } = useModalCtx();\n\n const frameCss = css({\n width: toLen(width),\n height: toLen(height),\n maxWidth: variant === \"inset\" ? \"100%\" : undefined,\n maxHeight: variant === \"inset\" ? \"100%\" : undefined,\n });\n\n const panel = (\n <Container\n role=\"dialog\"\n aria-modal=\"true\"\n className={[\"plainframe-ui-modal\", className || \"\"].join(\" \").trim()}\n padding={padding}\n radius={radius}\n variant=\"panel\"\n css={[frameCss, containerCss]}\n ref={ref}\n {...rest}\n >\n {children}\n </Container>\n );\n\n const animated =\n transitionVariant === \"none\" ? (\n panel\n ) : transitionVariant === \"slide\" ? (\n <Slide on={open} direction={direction} duration={transitionDuration}>\n {panel}\n </Slide>\n ) : transitionVariant === \"grow\" ? (\n <Grow on={open} duration={transitionDuration}>\n {panel}\n </Grow>\n ) : (\n <Fade on={open} duration={transitionDuration}>\n {panel}\n </Fade>\n );\n\n if (!backdrop) return <>{animated}</>;\n\n const alignCss = css(\n variant === \"full\"\n ? { alignItems: \"start\", justifyItems: \"start\", justifyContent: \"start\" }\n : { alignItems: \"center\", justifyItems: \"center\", justifyContent: \"center\" }\n );\n\n return (\n <Backdrop\n on={open}\n blur={backdropBlur}\n blurDepth={backdropBlurDepth}\n onClickAway={closeOnBackdropClick ? () => setOpen(false) : undefined}\n css={[alignCss, backdropCss].filter(Boolean)}\n lockScroll={lockScroll}\n >\n {animated}\n </Backdrop>\n );\n }\n);\nModalContent.displayName = \"ModalContent\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype Direction = \"left\" | \"right\" | \"up\" | \"down\";\n\ntype SlideProps = {\n children: ReactNode;\n direction?: Direction;\n duration?: number;\n delay?: number;\n on: boolean;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n distance?: number | string;\n};\n\nconst toLen = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Slide: React.FC<SlideProps> = ({\n children,\n direction = \"up\",\n duration = 450,\n delay = 0,\n on = false,\n onAnimationEnd,\n asChild = true,\n className,\n distance,\n}) => {\n const defaultDist =\n direction === \"left\" || direction === \"right\" ? \"100vw\" : \"100vh\";\n const dist = toLen(distance, defaultDist);\n\n const offX = direction === \"left\" ? `-${dist}` : direction === \"right\" ? dist : \"0\";\n const offY = direction === \"up\" ? dist : direction === \"down\" ? `-${dist}` : \"0\";\n\n const baseStyles: CSSProperties = {\n transform: on ? \"translate3d(0,0,0)\" : `translate3d(${offX}, ${offY}, 0)`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n };\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-slide\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles as any);\n\n return (\n <div\n className={[\"plainframe-ui-transition-slide\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useCallback } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { ChevronFirst, ChevronLast, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\ntype Size = \"xs\" | \"sm\" | \"md\";\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type PaginationProps = {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n siblingCount?: number;\n boundaryCount?: number;\n disabled?: boolean;\n showFirstLast?: boolean;\n loop?: boolean;\n size?: Size;\n variant?: Variant;\n gap?: number;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nconst sizeTokens: Record<\n Size,\n { h: number; px: number; font: number; radius: number; gap: number; icon: number }\n> = {\n xs: { h: 22, px: 8, font: 11, radius: 8, gap: 4, icon: 12 },\n sm: { h: 28, px: 10, font: 13, radius: 9, gap: 6, icon: 14 },\n md: { h: 34, px: 12, font: 14, radius: 10, gap: 8, icon: 16 },\n};\n\nexport const Pagination: React.FC<PaginationProps> = ({\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n disabled = false,\n showFirstLast = false,\n loop = false,\n size = \"sm\",\n variant = \"subtle\",\n gap,\n className,\n css: cssOverride,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const isControlled = page !== undefined;\n const [inner, setInner] = useState(defaultPage);\n const normCount = Math.max(1, count);\n const current = clamp(isControlled ? (page as number) : inner, 1, normCount);\n\n const setPage = useCallback(\n (p: number) => {\n const next = clamp(p, 1, normCount);\n if (!isControlled) setInner(next);\n onChange?.(next);\n },\n [isControlled, normCount, onChange]\n );\n\n const items = useMemo(\n () => buildItems({ count: normCount, page: current, siblingCount, boundaryCount }),\n [normCount, current, siblingCount, boundaryCount]\n );\n\n const sizes = sizeTokens[size];\n\n const accent = theme.palette?.primary?.[600];\n const borderCol = theme.surface?.border;\n const hoverBg =\n variant === \"subtle\"\n ? theme.surface.subtleHover\n : variant === \"ghost\"\n ? theme.surface?.subtleBg\n : theme.surface.panelHover;\n const txt = theme.text?.primary ?? \"#111\";\n const containerBg = variant === \"subtle\" ? theme.surface?.subtleBg : \"transparent\";\n\n const containerCss = css(\n {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: gap ?? sizes.gap,\n flexWrap: \"wrap\",\n borderRadius: theme.radius?.md,\n background: containerBg,\n padding: variant === \"subtle\" ? theme.spacing.xs : 0,\n userSelect: \"none\",\n },\n ...(Array.isArray(cssOverride) ? cssOverride : cssOverride ? [cssOverride] : [])\n );\n\n const baseBtn = css({\n minWidth: sizes.h,\n height: sizes.h,\n padding: `0 ${sizes.px}px`,\n borderRadius: sizes.radius,\n fontSize: sizes.font,\n lineHeight: 1,\n border: \"1px solid transparent\",\n background: \"transparent\",\n color: txt,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n transition: \"all .16s ease !important\",\n outline: \"1.5px solid transparent\",\n \"&[aria-disabled='true']\": { opacity: 0.55, pointerEvents: \"none\", cursor: \"not-allowed\" },\n fontWeight: 600,\n });\n\n const iconSquareBtn = css({\n width: sizes.h,\n minWidth: sizes.h,\n height: sizes.h,\n padding: 0,\n });\n\n const btnCss = (selected = false) =>\n css([\n baseBtn,\n focusRing({color: selected ? \"primary\" : \"neutral\"}),\n variant === \"outlined\"\n ? selected\n ? { background: accent, color: theme.text.onColors.primary, borderColor: accent }\n : {\n background: \"transparent\",\n borderColor: borderCol,\n \":hover\": { background: hoverBg },\n }\n : variant === \"ghost\"\n ? selected\n ? { background: accent, color: theme.text.onColors.primary }\n : { \":hover\": { background: hoverBg } }\n : selected\n ? { background: accent, color: theme.text.onColors.primary, borderColor: accent }\n : { \":hover\": { background: hoverBg } },\n ]);\n\n const goFirst = useCallback(() => setPage(1), [setPage]);\n const goLast = useCallback(() => setPage(normCount), [setPage, normCount]);\n const goPrev = useCallback(() => {\n if (current === 1) {\n if (loop) setPage(normCount);\n } else setPage(current - 1);\n }, [current, loop, normCount, setPage]);\n const goNext = useCallback(() => {\n if (current === normCount) {\n if (loop) setPage(1);\n } else setPage(current + 1);\n }, [current, loop, normCount, setPage]);\n\n const prevDisabled = disabled || (current === 1 && !loop);\n const nextDisabled = disabled || (current === normCount && !loop);\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={[\"plainframe-ui-pagination\", className || \"\"].join(\" \").trim()}\n css={containerCss}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n goPrev();\n }\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n goNext();\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n goFirst();\n }\n if (e.key === \"End\") {\n e.preventDefault();\n goLast();\n }\n }}\n >\n {showFirstLast && (\n <button\n className=\"plainframe-ui-pagination-first-button\"\n type=\"button\"\n aria-label=\"First page\"\n aria-disabled={prevDisabled}\n disabled={prevDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goFirst}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronFirst strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n )}\n\n <button\n className=\"plainframe-ui-pagination-previous-button\"\n type=\"button\"\n aria-label=\"Previous page\"\n aria-disabled={prevDisabled}\n disabled={prevDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goPrev}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronLeft strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n\n {items.map((it, idx) =>\n typeof it === \"number\" ? (\n <button\n className=\"plainframe-ui-pagination-page-button\"\n key={it}\n type=\"button\"\n aria-label={it === current ? `Page ${it}, current page` : `Go to page ${it}`}\n aria-current={it === current ? \"page\" : undefined}\n css={btnCss(it === current)}\n onClick={() => setPage(it)}\n >\n {it}\n </button>\n ) : (\n <span\n className=\"plainframe-ui-pagination-ellipsis\"\n key={`e${idx}`}\n aria-hidden\n css={css([\n baseBtn,\n focusRing(),\n { borderColor: \"transparent\", cursor: \"default\", opacity: 0.8, padding: 0, minWidth: sizes.h },\n ])}\n >\n …\n </span>\n )\n )}\n\n <button\n className=\"plainframe-ui-pagination-next-button\"\n type=\"button\"\n aria-label=\"Next page\"\n aria-disabled={nextDisabled}\n disabled={nextDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goNext}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronRight strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n\n {showFirstLast && (\n <button\n className=\"plainframe-ui-pagination-last-button\"\n type=\"button\"\n aria-label=\"Last page\"\n aria-disabled={nextDisabled}\n disabled={nextDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goLast}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronLast strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n )}\n </nav>\n );\n};\n\nfunction clamp(v: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, v));\n}\n\nfunction buildItems({\n count,\n page,\n siblingCount,\n boundaryCount,\n}: {\n count: number;\n page: number;\n siblingCount: number;\n boundaryCount: number;\n}): Array<number | \"ellipsis\"> {\n if (count <= 0) return [1];\n const maxVisibleWithoutEllipses = 2 * boundaryCount + 2 * siblingCount + 3;\n if (count <= maxVisibleWithoutEllipses) return range(1, count);\n\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = clamp(\n page - siblingCount,\n boundaryCount + 2,\n Math.max(boundaryCount + 2, count - boundaryCount - 2 * siblingCount - 1)\n );\n const siblingsEnd = clamp(\n page + siblingCount,\n Math.min(boundaryCount + 2 + 2 * siblingCount, count - boundaryCount - 1),\n count - boundaryCount - 1\n );\n\n const out: Array<number | \"ellipsis\"> = [];\n const push = (v: number | \"ellipsis\") => {\n const last = out[out.length - 1];\n if (last === v) return;\n if (last === \"ellipsis\" && v === \"ellipsis\") return;\n out.push(v);\n };\n\n startPages.forEach(push);\n if (siblingsStart > boundaryCount + 2) push(\"ellipsis\");\n else if (boundaryCount + 1 < siblingsStart) push(boundaryCount + 1);\n\n range(siblingsStart, siblingsEnd).forEach(push);\n\n if (siblingsEnd < count - boundaryCount - 1) push(\"ellipsis\");\n else if (count - boundaryCount > siblingsEnd) push(count - boundaryCount);\n\n endPages.forEach(push);\n\n return out;\n}\n\nfunction range(a: number, b: number) {\n if (b < a) return [] as number[];\n const r: number[] = [];\n for (let i = a; i <= b; i++) r.push(i);\n return r;\n}\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useRef,\n useMemo,\n useEffect,\n forwardRef,\n createContext,\n useContext,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport {\n useFloating,\n autoUpdate,\n offset as offsetMw,\n flip,\n shift,\n useDismiss,\n useRole,\n useInteractions,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\n/* ───────── types ───────── */\n\ntype WithCss = { css?: Interpolation<Theme> };\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type AnchorOrigin = {\n vertical: \"top\" | \"bottom\" | \"center\";\n horizontal: \"left\" | \"right\" | \"center\";\n};\n\nexport type PopoverRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n triggerOn?: \"click\" | \"hover\";\n lockScroll?: boolean;\n children: React.ReactNode;\n};\n\nexport type PopoverTriggerProps = WithCss & {\n asChild?: boolean;\n children: React.ReactElement;\n};\n\nexport type PopoverAnchorProps = WithCss & {\n asChild?: boolean;\n width?: number | string;\n children: React.ReactElement;\n};\n\nexport type PopoverContentProps = WithCss &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n anchorOrigin?: AnchorOrigin;\n sideOffset?: number;\n alignOffset?: number;\n collisionPadding?: number | Partial<Record<Side, number>>;\n unstyled?: boolean;\n width?: string | number;\n height?: string | number;\n padding?: string | number;\n paddingX?: string | number;\n paddingY?: string | number;\n radius?: string | number;\n };\n\n/* ───────── ctx ───────── */\n\ntype Ctx = {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerOn: \"click\" | \"hover\";\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n scheduleClose: (ms?: number) => void;\n cancelClose: () => void;\n};\n\nconst PopoverCtx = createContext<Ctx | null>(null);\nconst usePopover = (): Ctx => {\n const v = useContext(PopoverCtx);\n if (!v) throw new Error(\"Popover components must be used inside <Popover>.\");\n return v;\n};\n\n/* ───────── utils ───────── */\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void {\n if (!ref) return;\n if (typeof ref === \"function\") (ref as (v: T | null) => void)(value);\n else (ref as unknown as { current: T | null }).current = value;\n}\n\nexport const mergeRefs: <T>(\n ...refs: Array<React.Ref<T> | undefined>\n) => (node: T | null) => void =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null) => {\n for (const r of refs) setRef(r, node);\n };\n\nconst toCssSize = (v?: string | number): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst useBodyScrollLock = (locked: boolean): void => {\n useEffect(() => {\n if (!locked) return;\n if (typeof document === \"undefined\" || typeof window === \"undefined\") return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPaddingRight = body.style.paddingRight;\n const scrollbar = window.innerWidth - document.documentElement.clientWidth;\n const computedPad = parseFloat(getComputedStyle(body).paddingRight || \"0\");\n body.style.overflow = \"hidden\";\n if (scrollbar > 0) body.style.paddingRight = `${computedPad + scrollbar}px`;\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPaddingRight;\n };\n }, [locked]);\n};\n\nconst resolveToken = (\n token: string | number | undefined,\n scale: Record<string, string | number> | undefined\n): string | undefined => {\n if (token == null) return undefined;\n if (typeof token === \"number\") return `${token}px`;\n if (typeof token === \"string\" && scale && token in scale) {\n const v = scale[token];\n return typeof v === \"number\" ? `${v}px` : String(v);\n }\n return token;\n};\n\n/* ───────── root ───────── */\n\nexport const Popover: React.FC<PopoverRootProps> = ({\n open: controlled,\n defaultOpen,\n onOpenChange,\n triggerOn = \"click\",\n lockScroll = true,\n children,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n const setOpen = (v: boolean): void => {\n if (controlled === undefined) setUncontrolled(v);\n onOpenChange?.(v);\n };\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n\n const scheduleClose = (ms = 120): void => {\n if (closeTimerRef.current != null) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), ms);\n };\n const cancelClose = (): void => {\n if (closeTimerRef.current == null) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n };\n\n useBodyScrollLock(lockScroll && open);\n\n const value = useMemo<Ctx>(\n () => ({ open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose }),\n [open, triggerOn]\n );\n\n return <PopoverCtx.Provider value={value}>{children}</PopoverCtx.Provider>;\n};\n\n/* ───────── trigger ───────── */\n\nexport const PopoverTrigger: React.FC<\n PopoverTriggerProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, PopoverTriggerProps>(({ asChild = true, children, css: userCss }, ref) => {\n const { open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose } = usePopover();\n const onlyChild = React.Children.only(children) as React.ReactElement;\n const childProps = (onlyChild.props || {}) as Record<string, unknown>;\n\n const mergedRef = mergeRefs<HTMLElement | null>(\n referenceRef as unknown as React.Ref<HTMLElement | null>,\n ref as React.Ref<HTMLElement | null>,\n (onlyChild as any).ref as React.Ref<HTMLElement | null> | undefined\n );\n\n const triggerProps =\n triggerOn === \"click\"\n ? {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n setOpen(!open);\n (childProps.onClick as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n }\n : {\n onMouseEnter: (e: React.MouseEvent) => {\n cancelClose();\n if (!open) setOpen(true);\n (childProps.onMouseEnter as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n scheduleClose();\n (childProps.onMouseLeave as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n };\n\n const a11y = { \"aria-haspopup\": \"dialog\", \"aria-expanded\": open };\n\n if (asChild) {\n const childCss = (onlyChild.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(onlyChild, {\n ref: mergedRef,\n css: [childCss, userCss].filter(Boolean),\n ...triggerProps,\n ...a11y,\n });\n }\n\n return React.createElement(\"button\", {\n ref: mergedRef,\n type: \"button\",\n css: [userCss],\n ...triggerProps,\n ...a11y,\n children: onlyChild,\n });\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\n/* ───────── anchor ───────── */\n\nexport const PopoverAnchor: React.FC<\n PopoverAnchorProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, PopoverAnchorProps>(({ asChild = true, width, css: userCss, children }, ref) => {\n const { referenceRef } = usePopover();\n const onlyChild = React.Children.only(children) as React.ReactElement;\n\n const mergedRef = mergeRefs<HTMLElement | null>(\n referenceRef as unknown as React.Ref<HTMLElement | null>,\n ref as React.Ref<HTMLElement | null>,\n (onlyChild as any).ref as React.Ref<HTMLElement | null> | undefined\n );\n\n if (asChild) {\n const childCss = (onlyChild.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(onlyChild, {\n ref: mergedRef,\n css: [childCss, userCss].filter(Boolean),\n });\n }\n\n const wrapperCss = css({\n display: \"inline-block\",\n width: toCssSize(width),\n verticalAlign: \"middle\",\n ...(userCss as object),\n });\n\n return (\n <span ref={mergedRef as unknown as React.Ref<HTMLSpanElement>} css={wrapperCss}>\n {onlyChild}\n </span>\n );\n});\nPopoverAnchor.displayName = \"PopoverAnchor\";\n\n/* ───────── content ───────── */\n\nfunction anchorToPlacement(ao?: AnchorOrigin): Placement {\n const v = ao?.vertical ?? \"bottom\";\n const h = ao?.horizontal ?? \"center\";\n\n if (v === \"top\" || v === \"bottom\") {\n const side = v;\n const align: Align = h === \"left\" ? \"start\" : h === \"right\" ? \"end\" : \"center\";\n return (align === \"center\" ? side : `${side}-${align}`) as Placement;\n }\n\n const side: Side = h === \"left\" ? \"left\" : \"right\";\n const align: Align = \"center\";\n return (align === \"center\" ? side : `${side}-${align}`) as Placement;\n}\n\nexport const PopoverContent: React.FC<\n PopoverContentProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n sideOffset = 8,\n alignOffset = 0,\n collisionPadding = 8,\n unstyled = false,\n children,\n width,\n height,\n padding,\n paddingX,\n paddingY,\n radius = \"lg\",\n css: userCss,\n ...rest\n },\n ref\n ) => {\n const { open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose } = usePopover();\n const theme = usePlainframeUITheme();\n\n const placement = anchorToPlacement(anchorOrigin);\n\n const { refs, x, y, strategy, context } = useFloating({\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n placement,\n strategy: \"fixed\",\n middleware: [\n offsetMw({ mainAxis: sideOffset, crossAxis: alignOffset }),\n flip({ padding: collisionPadding as number | Partial<Record<Side, number>> }),\n shift({ padding: collisionPadding as number | Partial<Record<Side, number>> }),\n ],\n });\n\n useEffect(() => {\n if (referenceRef.current) refs.setReference(referenceRef.current);\n }, [refs, referenceRef]);\n\n const dismiss = useDismiss(context, { outsidePressEvent: \"pointerdown\", escapeKey: true });\n const role = useRole(context, { role: \"dialog\" });\n const { getFloatingProps } = useInteractions([dismiss, role]);\n\n const [sideMain] = context.placement.split(\"-\") as [Side, Align?];\n const resolvedSide = sideMain;\n\n const transformOrigin = `${resolvedSide === \"left\" ? \"right\" : resolvedSide === \"right\" ? \"left\" : \"center\"} ${\n resolvedSide === \"top\" ? \"bottom\" : resolvedSide === \"bottom\" ? \"top\" : \"center\"\n }`;\n\n const delta = 8;\n const initialOffset =\n resolvedSide === \"top\"\n ? { y: delta }\n : resolvedSide === \"bottom\"\n ? { y: -delta }\n : resolvedSide === \"left\"\n ? { x: delta }\n : { x: -delta };\n\n const motionProps = {\n initial: { opacity: 0, scale: 0.96, ...initialOffset },\n animate: { opacity: 1, scale: 1, x: 0, y: 0 },\n exit: { opacity: 0, scale: 0.96, ...initialOffset },\n transition: {\n scale: { type: \"spring\", stiffness: 520, damping: 32, mass: 0.5 },\n x: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n opacity: { duration: 0.16, ease: \"linear\" },\n },\n } as const;\n\n const panelBg = theme.surface.panelBg;\n const panelFg = theme.text.primary;\n const panelBorder = `${theme.componentHeights.border} solid ${theme.surface.border}`;\n\n const resolvedPad = resolveToken(padding, theme.spacing as Record<string, string | number>);\n const resolvedPadX = resolveToken(paddingX, theme.spacing as Record<string, string | number>);\n const resolvedPadY = resolveToken(paddingY, theme.spacing as Record<string, string | number>);\n\n const applyPad: React.CSSProperties = {};\n if (resolvedPad) applyPad.padding = resolvedPad;\n if (resolvedPadX) (applyPad as any).paddingInline = resolvedPadX;\n if (resolvedPadY) (applyPad as any).paddingBlock = resolvedPadY;\n\n const resolvedRadius =\n resolveToken(radius as string | number | undefined, theme.radius as Record<string, string | number>) ??\n (theme.radius.md as unknown as string);\n\n const panelShadow = \"0 8px 32px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.02)\";\n\n const basePos = css({\n position: strategy as React.CSSProperties[\"position\"],\n top: (y ?? 0) as number,\n left: (x ?? 0) as number,\n zIndex: 1000,\n transformOrigin,\n pointerEvents: \"auto\",\n display: \"inline-flex\",\n flexDirection: \"column\",\n width: toCssSize(width) ?? \"fit-content\",\n height: toCssSize(height) ?? \"fit-content\",\n boxSizing: \"border-box\",\n willChange: \"opacity, transform\",\n });\n\n const visualsCss = unstyled\n ? css({})\n : css({\n background: panelBg,\n color: panelFg,\n border: panelBorder,\n borderRadius: resolvedRadius,\n boxShadow: panelShadow,\n ...applyPad,\n ...(applyPad.padding || (applyPad as any).paddingInline || (applyPad as any).paddingBlock\n ? {}\n : {\n padding:\n typeof theme.spacing?.sm === \"number\"\n ? `${theme.spacing.sm}px ${theme.spacing.md}px`\n : `${(theme.spacing as any)?.sm ?? \"0.5rem\"} ${(theme.spacing as any)?.md ?? \"1rem\"}`,\n }),\n });\n\n const hoverHandlers =\n triggerOn === \"hover\"\n ? {\n onMouseEnter: cancelClose as React.MouseEventHandler<HTMLDivElement>,\n onMouseLeave: () => scheduleClose(),\n }\n : {};\n\n const mergedRef = mergeRefs<HTMLDivElement | null>(\n refs.setFloating as unknown as React.Ref<HTMLDivElement | null>,\n ref as React.Ref<HTMLDivElement | null>\n );\n\n const node = (\n <motion.div\n className=\"plainframe-ui-popover\"\n {...getFloatingProps({ ...rest, ref: mergedRef, ...hoverHandlers })}\n {...motionProps}\n css={[basePos, visualsCss, userCss]}\n >\n {children}\n </motion.div>\n );\n\n return (\n <FloatingPortal>\n <AnimatePresence>{open ? node : null}</AnimatePresence>\n </FloatingPortal>\n );\n }\n);\nPopoverContent.displayName = \"PopoverContent\";\n\n/* ───────── hook ───────── */\n\nexport const usePopoverContext: () => {\n open: boolean;\n close: () => void;\n setOpen: (v: boolean) => void;\n} = () => {\n const ctx = usePopover();\n return { open: ctx.open, close: () => ctx.setOpen(false), setOpen: ctx.setOpen };\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype QuoteVariant = \"solid\" | \"dashed\";\ntype Direction = \"left\" | \"right\";\n\nexport type QuoteProps = {\n children?: React.ReactNode;\n direction?: Direction;\n width?: string | number;\n variant?: QuoteVariant;\n className?: string;\n css?: Interpolation<Theme>;\n as?: keyof JSX.IntrinsicElements;\n};\n\nconst toCssSize = (v?: string | number, fb?: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Quote: React.FC<QuoteProps> = ({\n children,\n direction = \"left\",\n width,\n variant = \"solid\",\n className,\n css: userCss,\n as: Tag = \"div\",\n}) => {\n const theme = usePlainframeUITheme();\n const borderColor = theme.surface.border;\n\n const root = css([\n {\n display: \"inline-block\",\n boxSizing: \"border-box\",\n maxWidth: toCssSize(width, \"fit-content\"),\n width: \"100%\",\n padding: `0 ${theme.spacing.md}`,\n borderLeft:\n direction === \"left\"\n ? `3px ${variant === \"dashed\" ? \"dashed\" : \"solid\"} ${borderColor}`\n : \"none\",\n borderRight:\n direction === \"right\"\n ? `3px ${variant === \"dashed\" ? \"dashed\" : \"solid\"} ${borderColor}`\n : \"none\",\n },\n userCss as CSSObject,\n ]);\n\n return (\n <Tag className={className ?? \"plainframe-ui-quote\"} css={root}>\n {children}\n </Tag>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\ntype Direction = \"horizontal\" | \"vertical\";\ntype Variant = \"filled\" | \"outlined\" | \"soft\";\ntype HV = \"left\" | \"center\" | \"right\" | \"top\" | \"bottom\";\n\nexport type RadioGroupProps = {\n value?: string | number;\n defaultValue?: string | number;\n onChange?: (value: string | number) => void;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n direction?: Direction;\n variant?: Variant;\n className?: string;\n children: React.ReactNode;\n anchorOrigin?: {\n horizontal?: Extract<HV, \"left\" | \"center\" | \"right\">;\n vertical?: Extract<HV, \"top\" | \"center\" | \"bottom\">;\n };\n css?: Interpolation<Theme>;\n};\n\nexport type RadioItemProps = {\n value: string | number;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n};\n\ntype RegistryItem = { ref: HTMLButtonElement | null; value: string | number; disabled: boolean };\n\ntype Ctx = {\n selected: string | number | undefined;\n setSelected: (v: string | number) => void;\n disabled: boolean;\n size: \"sm\" | \"md\" | \"lg\";\n direction: Direction;\n variant: Variant;\n register: (item: RegistryItem) => number;\n update: (index: number, item: Partial<RegistryItem>) => void;\n moveFocusBy: (currentIndex: number, delta: number) => void;\n moveToEdge: (edge: \"first\" | \"last\") => void;\n focusValue: string | number | undefined;\n theme: ReturnType<typeof usePlainframeUITheme>;\n anchorOrigin: Required<NonNullable<RadioGroupProps[\"anchorOrigin\"]>>;\n};\n\nconst RadioCtx = createContext<Ctx | null>(null);\nconst useRadioCtx = () => {\n const ctx = useContext(RadioCtx);\n if (!ctx) throw new Error(\"RadioItem must be used within a RadioGroup\");\n return ctx;\n};\n\nconst normalizeOrigin = (\n o?: RadioGroupProps[\"anchorOrigin\"]\n): Required<NonNullable<RadioGroupProps[\"anchorOrigin\"]>> => {\n const h = o?.horizontal ?? \"left\";\n const v = o?.vertical ?? \"center\";\n if (h === \"center\" && v === \"center\") return { horizontal: \"left\", vertical: \"center\" };\n return { horizontal: h, vertical: v };\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n value,\n defaultValue,\n onChange,\n disabled = false,\n size = \"md\",\n direction = \"horizontal\",\n variant = \"filled\",\n className,\n children,\n anchorOrigin,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const isControlled = value !== undefined && onChange !== undefined;\n const [internalValue, setInternalValue] = useState<string | number | undefined>(defaultValue);\n const selected = (isControlled ? value : internalValue) as string | number | undefined;\n\n const registry = useRef<RegistryItem[]>([]);\n const [ver, setVer] = useState(0);\n const bump = () => setVer((v) => v + 1);\n\n const setSelected = useCallback(\n (v: string | number) => {\n if (!isControlled) setInternalValue(v);\n onChange?.(v);\n },\n [isControlled, onChange]\n );\n\n const register = useCallback((item: RegistryItem) => {\n registry.current.push(item);\n bump();\n return registry.current.length - 1;\n }, []);\n\n const update = useCallback((index: number, item: Partial<RegistryItem>) => {\n const curr = registry.current[index];\n if (!curr) return;\n registry.current[index] = { ...curr, ...item };\n bump();\n }, []);\n\n const enabledIndexes = () =>\n registry.current\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => it.ref && !it.disabled)\n .map(({ i }) => i);\n\n const moveFocusBy = useCallback(\n (currentIndex: number, delta: number) => {\n const enabled = enabledIndexes();\n if (!enabled.length) return;\n const pos = Math.max(0, enabled.indexOf(currentIndex));\n const next = enabled[(pos + delta + enabled.length) % enabled.length];\n const nextRef = registry.current[next]?.ref;\n if (nextRef) {\n nextRef.focus();\n const nextVal = registry.current[next]?.value;\n if (nextVal !== undefined) setSelected(nextVal);\n }\n },\n [setSelected]\n );\n\n const moveToEdge = useCallback(\n (edge: \"first\" | \"last\") => {\n const enabled = enabledIndexes();\n if (!enabled.length) return;\n const next = edge === \"first\" ? enabled[0] : enabled[enabled.length - 1];\n const nextRef = registry.current[next]?.ref;\n if (nextRef) {\n nextRef.focus();\n const nextVal = registry.current[next]?.value;\n if (nextVal !== undefined) setSelected(nextVal);\n }\n },\n [setSelected]\n );\n\n const focusValue: string | number | undefined = useMemo(() => {\n const enabledItems = registry.current.filter((it) => it.ref && !it.disabled);\n if (!enabledItems.length) return undefined;\n const selectedEnabled = enabledItems.some((it) => it.value === selected);\n return selectedEnabled ? selected : enabledItems[0]?.value;\n }, [selected, ver]);\n\n const ctx: Ctx = useMemo(\n () => ({\n selected,\n setSelected,\n disabled,\n size,\n direction,\n variant,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n focusValue,\n theme,\n anchorOrigin: normalizeOrigin(anchorOrigin),\n }),\n [\n selected,\n setSelected,\n disabled,\n size,\n direction,\n variant,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n focusValue,\n theme,\n anchorOrigin,\n ]\n );\n\n const rootCss = css({ width: \"fit-content\" });\n const rowCss = css({\n display: \"flex\",\n flexDirection: direction === \"vertical\" ? \"column\" : \"row\",\n gap: theme.spacing.sm,\n width: \"fit-content\",\n alignItems: direction === \"vertical\" ? \"stretch\" : \"center\",\n });\n\n return (\n <div className={className ?? \"plainframe-ui-radio-group\"} css={[rootCss, userCss as CSSObject]}>\n <div\n className=\"plainframe-ui-radio-row\"\n role=\"radiogroup\"\n aria-disabled={disabled || undefined}\n css={rowCss}\n >\n <RadioCtx.Provider value={ctx}>{children}</RadioCtx.Provider>\n </div>\n </div>\n );\n};\n\nexport const RadioItem: React.FC<RadioItemProps> = ({\n value,\n disabled = false,\n className,\n children,\n css: userCss,\n}) => {\n const {\n selected,\n setSelected,\n disabled: groupDisabled,\n size,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n theme,\n variant,\n focusValue,\n anchorOrigin,\n } = useRadioCtx();\n\n const isDisabled = groupDisabled || disabled;\n const isChecked = selected === value;\n\n const sizeKey: \"sm\" | \"md\" | \"lg\" = ([\"sm\", \"md\", \"lg\"] as const).includes(size) ? size : \"md\";\n const diameter = sizeKey === \"sm\" ? 16 : sizeKey === \"lg\" ? 24 : 20;\n\n const sw = (shade: 50 | 100 | 300 | 600) => (theme.palette?.primary as any)?.[shade];\n const main = sw(600);\n const soft100 = sw(100);\n const neutral300 = theme.neutral[300];\n const stroke = theme.palette.primary[300];\n const onPrimary = theme.text.onColors?.primary ?? theme.neutral[0];\n\n // base circle states\n let circleBg = \"transparent\";\n let circleShadow: string | null = stroke;\n let dotColor = onPrimary;\n\n if (variant === \"soft\") {\n circleBg = soft100;\n circleShadow = null;\n dotColor = main;\n } else if (variant === \"outlined\") {\n circleBg = sw(50);\n circleShadow = stroke;\n dotColor = main;\n } else {\n circleBg = theme.neutral[200];\n circleShadow = \"transparent\";\n dotColor = onPrimary;\n }\n\n if (isChecked) {\n if (variant === \"outlined\") {\n circleBg = soft100;\n circleShadow = stroke;\n dotColor = main;\n } else if (variant === \"filled\") {\n circleBg = main;\n circleShadow = null;\n dotColor = onPrimary;\n } else {\n circleBg = soft100;\n circleShadow = null;\n dotColor = main;\n }\n }\n\n const hoverCircleBg = variant === \"filled\" ? neutral300 : variant === \"outlined\" ? theme.palette.primary[100] : theme.palette.primary[100];\n\n const btnRef = useRef<HTMLButtonElement | null>(null);\n const myIndex = useRef<number>(-1);\n\n useEffect(() => {\n myIndex.current = register({ ref: btnRef.current, value, disabled: !!isDisabled });\n }, [register]);\n\n useEffect(() => {\n update(myIndex.current, { ref: btnRef.current, value, disabled: !!isDisabled });\n }, [update, isDisabled, value]);\n\n const btnCss = css({\n border: \"none\",\n background: \"transparent\",\n display: \"inline-grid\",\n gridTemplateColumns: \"auto auto auto\",\n gridTemplateRows: \"auto auto auto\",\n columnGap: anchorOrigin.vertical === \"center\" ? theme.spacing.sm : 0,\n rowGap: anchorOrigin.vertical === \"center\" ? 0 : theme.spacing.xs,\n justifyItems: \"center\",\n alignItems: \"center\",\n opacity: isDisabled ? 0.5 : 1,\n borderRadius: theme.radius.md,\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n transition: \"transform .16s ease\",\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n padding: theme.spacing.sm,\n\n // Hover applies to the CIRCLE only if NOT checked\n \"&:hover .plainframe-ui-radio-circle-outer\":\n isDisabled || isChecked\n ? {}\n : {\n background: hoverCircleBg,\n boxShadow:\n variant === \"outlined\"\n ? `inset 0 0 0 ${theme.componentHeights.border} ${stroke}`\n : \"none\",\n },\n\n // Focus ring hint on circle\n \"&:focus-visible .plainframe-ui-radio-circle-outer\": {\n outline: \"none\",\n filter: \"brightness(1.06)\",\n },\n });\n\n const circleCss = css({\n width: diameter,\n height: diameter,\n minWidth: diameter,\n minHeight: diameter,\n borderRadius: theme.radius.full,\n background: circleBg,\n boxShadow: circleShadow ? `inset 0 0 0 ${theme.componentHeights.border} ${circleShadow}` : \"none\",\n transition: \"background-color .16s ease, box-shadow .16s ease, filter .16s ease\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n });\n\n const dotCss = css({\n width: isChecked ? diameter * 0.45 : 0,\n height: isChecked ? diameter * 0.45 : 0,\n borderRadius: theme.radius.full,\n background: isChecked ? dotColor : \"transparent\",\n transition: \"all 250ms cubic-bezier(.72,1.6,.32,1)\",\n transform: isChecked ? \"scale(1)\" : \"scale(0.6)\",\n opacity: isChecked ? 1 : 0,\n });\n\n const labelCss = css({\n gridColumn: 2,\n gridRow: 2,\n minWidth: 0,\n maxWidth: \"100%\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n textAlign: \"left\",\n });\n\n const pos = (() => {\n const h = anchorOrigin.horizontal;\n const v = anchorOrigin.vertical;\n if (v === \"center\") {\n return { col: h === \"right\" ? 3 : 1, row: 2 };\n }\n return { col: 2, row: v === \"top\" ? 1 : 3 };\n })();\n\n const isFocusable = !isDisabled && focusValue === value;\n const tabIndex = isFocusable ? 0 : -1;\n\n const focusRing = useFocusRing()\n\n return (\n <button\n ref={btnRef}\n className={className ?? \"plainframe-ui-radio-item\"}\n type=\"button\"\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled || undefined}\n disabled={isDisabled}\n tabIndex={tabIndex}\n onClick={() => {\n if (!isDisabled) setSelected(value);\n }}\n onKeyDown={(e) => {\n if (isDisabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setSelected(value);\n } else if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n moveFocusBy(myIndex.current, 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n moveFocusBy(myIndex.current, -1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n moveToEdge(\"first\");\n } else if (e.key === \"End\") {\n e.preventDefault();\n moveToEdge(\"last\");\n }\n }}\n css={[btnCss, focusRing({color: isChecked ? \"primary\" : \"neutral\"}), userCss as CSSObject]}\n >\n <span\n className=\"plainframe-ui-radio-circle-outer\"\n css={[\n circleCss,\n css({ gridColumn: pos.col, gridRow: pos.row }),\n ]}\n >\n <span className=\"plainframe-ui-radio-circle-dot\" css={dotCss} />\n </span>\n\n {children != null && (\n <span className=\"plainframe-ui-radio-label\" css={labelCss}>\n {children}\n </span>\n )}\n </button>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype RotateProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n initialAngle?: number;\n finalAngle?: number;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n};\n\nexport const Rotate: React.FC<RotateProps> = ({\n children,\n duration = 400,\n delay = 0,\n on = false,\n initialAngle = 360,\n finalAngle = 0,\n onAnimationEnd,\n asChild = true,\n className,\n}) => {\n const baseStyles = {\n transform: `rotate(${on ? finalAngle : initialAngle}deg)`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n transformOrigin: \"center center\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n } as const;\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-rotate\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles);\n\n return (\n <div\n className={[\"plainframe-ui-transition-rotate\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css as emCss, type Interpolation, type Theme, type CSSObject } from \"@emotion/react\";\nimport { ChevronsUpDown } from \"lucide-react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent } from \"./DropdownMenu\";\nimport { MenuRadioGroup } from \"./MenuItems\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\n/* ───────── types ───────── */\ntype Align = \"left\" | \"center\" | \"right\";\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type SelectProps<T = unknown> = {\n /** optional controlled value(s); if omitted, trigger text is derived from child selection props */\n value?: T | T[];\n defaultValue?: T | T[]; // used only for deriving initial trigger text if children don’t expose selection yet\n onChange?: (value: T | T[]) => void; // not wired here; your MenuItem/MenuRadioGroup handle selection\n label?: string;\n placeholder?: string | React.ReactNode;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n disabled?: boolean;\n size?: \"sm\" | \"md\";\n variant?: Variant;\n fullWidth?: boolean;\n width?: number | string;\n menuAlign?: Align;\n menuWidth?: number | string;\n menuMaxHeight?: number | string;\n wrapperCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n triggerCss?: Interpolation<Theme>;\n menuCss?: Interpolation<Theme>;\n /** you pass real MenuItem / MenuRadioItem / MenuCheckboxItem (and optional MenuRadioGroup) here */\n children: React.ReactNode;\n className?: string;\n menuSize?: \"sm\" | \"md\";\n /** custom trigger renderer (receives the resolved label text or array of labels) */\n triggerRender?: (selected: string | string[] | undefined) => React.ReactNode;\n};\n\ntype AnyEl = React.ReactElement<any>;\n\n/* ───────── helpers ───────── */\n\nconst isEl = (n: unknown): n is AnyEl => React.isValidElement(n);\nconst nameOf = (el: AnyEl) =>\n ((el.type as any)?.displayName || (el.type as any)?.name || \"\") as string;\n\nconst toCss = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\n/** pull a user-visible label from a Menu* item */\nconst labelFromItem = (el: AnyEl): string | undefined => {\n const p = el.props as Record<string, any>;\n if (typeof p.label === \"string\" || typeof p.label === \"number\") return String(p.label);\n const c = p.children;\n if (typeof c === \"string\" || typeof c === \"number\") return String(c);\n return undefined;\n};\n\n/** gather a flat list of candidate items and selection state from children */\nfunction scanChildrenForSelection<T = unknown>(\n children: React.ReactNode,\n controlled: T | T[] | undefined\n): {\n mode: \"radio\" | \"checkbox\" | \"menu\";\n selectedLabels: string[];\n} {\n const kids = React.Children.toArray(children).filter(isEl) as AnyEl[];\n\n // detect radio group first (authoritative single-select)\n const radioGroup = kids.find((k) => nameOf(k) === \"MenuRadioGroup\") as\n | (AnyEl & { props: { value?: T; children?: React.ReactNode } })\n | undefined;\n\n if (radioGroup) {\n const rv = (controlled as T) ?? (radioGroup.props.value as T | undefined);\n if (rv === undefined) return { mode: \"radio\", selectedLabels: [] };\n\n const radios = React.Children.toArray(radioGroup.props.children)\n .filter(isEl)\n .filter((c) => nameOf(c).includes(\"MenuRadioItem\")) as AnyEl[];\n\n const match = radios.find((r) => Object.is((r.props as any).value, rv));\n const label = match ? labelFromItem(match) : undefined;\n return { mode: \"radio\", selectedLabels: label ? [label] : [] };\n }\n\n // otherwise collect all menu items / checkbox items\n const flat: AnyEl[] = [];\n const dfs = (nodes: React.ReactNode) => {\n React.Children.forEach(nodes, (n) => {\n if (!isEl(n)) return;\n const nm = nameOf(n);\n if (\n nm.includes(\"MenuItem\") ||\n nm.includes(\"MenuCheckboxItem\") ||\n nm.includes(\"MenuRadioItem\")\n ) {\n flat.push(n);\n } else if (n.props && n.props.children) {\n dfs(n.props.children);\n }\n });\n };\n dfs(children);\n\n // if controlled provided, prefer that for reading selecteds\n if (controlled !== undefined) {\n const arr = Array.isArray(controlled) ? (controlled as T[]) : [controlled as T];\n const labels = arr\n .map((v) => {\n const m = flat.find((f) => Object.is((f.props as any).value, v));\n return m ? labelFromItem(m) : undefined;\n })\n .filter((x): x is string => typeof x === \"string\");\n const anyCheckbox = flat.some((f) => nameOf(f).includes(\"Checkbox\"));\n return { mode: anyCheckbox ? \"checkbox\" : \"menu\", selectedLabels: labels };\n }\n\n // uncontrolled: infer from per-item props (selected/checked/aria-selected)\n const selectedLabels: string[] = [];\n let anyCheckbox = false;\n flat.forEach((el) => {\n const p = el.props as Record<string, any>;\n const isChecked = !!p.checked || p[\"aria-checked\"] === true;\n const isSelected = !!p.selected || p[\"aria-selected\"] === true;\n if (isChecked || isSelected) {\n const lbl = labelFromItem(el);\n if (lbl) selectedLabels.push(lbl);\n }\n if (nameOf(el).includes(\"Checkbox\")) anyCheckbox = true;\n });\n\n return { mode: anyCheckbox ? \"checkbox\" : \"menu\", selectedLabels };\n}\n\n/* ───────── component ───────── */\n\nexport function Select<T = unknown>({\n value,\n defaultValue,\n onChange, // not wired here; your Menu components should manage selection & call you\n label,\n placeholder = \"Select…\",\n startIcon,\n endIcon,\n disabled,\n size = \"md\",\n variant = \"subtle\",\n fullWidth,\n width = 200,\n menuAlign = \"left\",\n menuWidth,\n menuMaxHeight = 280,\n wrapperCss,\n labelCss,\n triggerCss,\n menuCss,\n children,\n className,\n menuSize = \"md\",\n triggerRender,\n}: SelectProps<T>): JSX.Element {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const ids = React.useId();\n const labelId = `${ids}-label`;\n const contentId = `${ids}-menu`;\n\n const [open, setOpen] = React.useState(false);\n\n // compute trigger text (no cloning of items, no SelectItem type)\n const { selectedLabels } = scanChildrenForSelection<T>(children, value ?? defaultValue);\n const triggerText =\n selectedLabels.length === 0\n ? typeof placeholder === \"string\"\n ? placeholder\n : undefined\n : selectedLabels.join(\", \");\n\n /* sizes */\n const sizeCfg: Record<\"sm\" | \"md\" | \"lg\", { minHeight: number | string; radius: number | string }> =\n {\n sm: { minHeight: theme.componentHeights.sm, radius: theme.radius.sm },\n md: { minHeight: theme.componentHeights.md, radius: theme.radius.md },\n lg: { minHeight: theme.componentHeights.lg, radius: theme.radius.md },\n };\n const S = sizeCfg[size] || sizeCfg.md;\n\n /* visuals */\n const wrapperStyles: CSSObject = {\n position: \"relative\",\n width: fullWidth ? \"100%\" : toCss(width) ?? \"auto\",\n maxWidth: \"100%\",\n };\n\n const triggerBaseObj: CSSObject = {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderRadius: S.radius,\n minHeight: S.minHeight,\n fontSize: theme.fontSizes.md,\n padding: `0 ${typeof theme.spacing.sm === \"number\" ? `${theme.spacing.sm}px` : theme.spacing.sm} 0 ${\n typeof theme.spacing.md === \"number\" ? `${theme.spacing.md}px` : theme.spacing.md\n }`,\n fontWeight: 500,\n lineHeight: 1,\n userSelect: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: \"box-shadow .16s ease\",\n color: theme.text.primary,\n background: \"transparent\",\n whiteSpace: \"nowrap\",\n };\n\n const triggerVariantObj: CSSObject =\n variant === \"subtle\"\n ? { background: theme.surface.subtleBg }\n : variant === \"outlined\"\n ? { background: theme.surface.panelBg, border: `1px solid ${theme.surface.border}` }\n : { background: \"transparent\" };\n\n const triggerContentObj: CSSObject = {\n flex: 1,\n minWidth: 0,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"flex\",\n alignItems: \"center\",\n textAlign: \"left\",\n gap: 8,\n };\n\n const triggerStartIconObj: CSSObject = {\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n const titleObj: CSSObject = {\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n fontWeight: 500,\n display: \"block\",\n };\n\n const chevron = (\n <ChevronsUpDown\n size={16}\n css={emCss({ color: theme.text.secondary, flexShrink: 0 })}\n strokeWidth={2.5}\n className=\"plainframe-ui-select-chevron\"\n />\n );\n\n const alignMap: Record<Align, \"start\" | \"center\" | \"end\"> = {\n left: \"start\",\n center: \"center\",\n right: \"end\",\n };\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (disabled) return;\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n /* render */\n return (\n <div\n css={[emCss(wrapperStyles), wrapperCss].filter(Boolean)}\n className={[\"plainframe-ui-select-wrapper\", className || \"\"].join(\" \").trim()}\n >\n {label && (\n <div\n id={labelId}\n className=\"plainframe-ui-select-label\"\n css={[\n emCss({\n marginBottom: 6,\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n color: theme.text.secondary,\n }),\n labelCss,\n ].filter(Boolean)}\n >\n {label}\n </div>\n )}\n\n <DropdownMenu size={menuSize} open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger width=\"100%\" asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-haspopup=\"menu\"\n aria-expanded={open || undefined}\n aria-controls={contentId}\n aria-labelledby={label ? labelId : undefined}\n onKeyDown={onTriggerKeyDown}\n onClick={() => setOpen((o) => !o)}\n className=\"plainframe-ui-select-trigger\"\n css={[\n emCss(triggerBaseObj),\n emCss(triggerVariantObj),\n triggerCss,\n focusRing(),\n ].filter(Boolean)}\n >\n <div className=\"plainframe-ui-select-trigger-content\" css={emCss(triggerContentObj)}>\n {triggerRender ? (\n triggerRender(\n selectedLabels.length > 1\n ? selectedLabels\n : selectedLabels[0] ?? (typeof placeholder === \"string\" ? undefined : undefined)\n )\n ) : (\n <>\n {startIcon && <span css={emCss(triggerStartIconObj)}>{startIcon}</span>}\n <span\n css={emCss(titleObj)}\n title={\n typeof (selectedLabels.length ? selectedLabels.join(\", \") : placeholder) ===\n \"string\"\n ? (selectedLabels.length\n ? selectedLabels.join(\", \")\n : (placeholder as string)) ?? undefined\n : undefined\n }\n >\n {selectedLabels.length\n ? selectedLabels.join(\", \")\n : placeholder ?? \"Select…\"}\n </span>\n </>\n )}\n </div>\n {endIcon ?? chevron}\n </button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n id={contentId}\n gap={2}\n align={alignMap[menuAlign]}\n sameWidth={menuWidth == null}\n width={menuWidth ?? width}\n className=\"plainframe-ui-select-menu\"\n css={[\n emCss({\n maxHeight:\n typeof menuMaxHeight === \"number\" ? `${menuMaxHeight}px` : menuMaxHeight,\n overflowY: \"auto\",\n }),\n menuCss,\n ].filter(Boolean)}\n >\n {/* we don’t clone or transform items; your Menu components handle selection */}\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nexport default Select;\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, keyframes, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype SkeletonProps = {\n isLoading?: boolean;\n radius?: number | string;\n animation?: \"wave\" | \"pulse\" | \"none\";\n as?: keyof JSX.IntrinsicElements;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n style?: React.CSSProperties;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nconst px = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nconst wave = keyframes`\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n`;\n\nconst pulse = keyframes`\n 0% { opacity: .6; }\n 50% { opacity: 1; }\n 100% { opacity: .6; }\n`;\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n isLoading = true,\n radius,\n animation = \"wave\",\n as: Tag = \"span\",\n children,\n width,\n height,\n style,\n className,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = theme.surface.subtleBg;\n const highlight = theme.neutral[200];\n const r = px(radius ?? theme.radius?.lg ?? 8, \"8px\");\n\n const container = css({\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n width: width == null ? \"fit-content\" : px(width, String(width)),\n height: height == null ? \"fit-content\" : px(height, String(height)),\n });\n\n const overlayBase = css({\n position: \"absolute\",\n inset: 0,\n borderRadius: r,\n pointerEvents: \"none\",\n background: base,\n willChange: \"background-position, opacity\",\n });\n\n const overlayAnim =\n animation === \"wave\"\n ? css({\n backgroundImage: `linear-gradient(90deg, ${base} 25%, ${highlight} 50%, ${base} 75%)`,\n backgroundSize: \"200% 100%\",\n animation: `${wave} 1.4s ease-in-out infinite`,\n })\n : animation === \"pulse\"\n ? css({ animation: `${pulse} 1.2s ease-in-out infinite` })\n : css({});\n\n const childWrap = css({\n visibility: isLoading ? \"hidden\" : \"visible\",\n display: \"inline-block\",\n borderRadius: r,\n });\n\n return (\n <Tag\n className={[\"plainframe-ui-skeleton\", className || \"\"].join(\" \").trim()}\n css={[container, userCss]}\n style={style}\n aria-busy={isLoading || undefined}\n >\n {isLoading && <span aria-hidden css={[overlayBase, overlayAnim]} />}\n <span className=\"plainframe-ui-skeleton-content\" css={childWrap}>\n {children}\n </span>\n </Tag>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useMemo, useRef, useState, useCallback } from \"react\";\nimport { css, type CSSObject } from \"@emotion/react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { AnimatePresence, motion } from \"framer-motion\";\n\ntype Direction = \"horizontal\" | \"vertical\";\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n showStepper?: boolean;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n rounded?: boolean;\n showValue?: boolean;\n label?: string;\n fullWidth?: boolean;\n css?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n direction?: Direction;\n className?: string;\n};\n\nconst DEFAULT_TRACK_H = 8;\nconst DEFAULT_THUMB = 20;\nconst DEFAULT_DOT = 4;\n\nexport const Slider: React.FC<SliderProps> = ({\n value,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n rounded = false,\n showValue = false,\n showStepper = false,\n label,\n fullWidth = false,\n css: userRootCss,\n trackCss,\n thumbCss,\n direction = \"horizontal\",\n className,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const isVertical = direction === \"vertical\";\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const [dragging, setDragging] = useState(false);\n const [hoverThumb, setHoverThumb] = useState(false);\n const [hoverTip, setHoverTip] = useState(false);\n\n const isControlled = value !== undefined;\n const clamp = useCallback((v: number) => Math.min(max, Math.max(min, v)), [min, max]);\n const quantize = useCallback(\n (raw: number) => clamp(Math.round((raw - min) / step) * step + min),\n [min, step, clamp]\n );\n\n const [internal, setInternal] = useState<number>(() =>\n quantize(defaultValue == null ? min : defaultValue)\n );\n const current = isControlled ? quantize(value as number) : internal;\n\n useEffect(() => {\n if (!isControlled) setInternal((v) => quantize(v));\n }, [min, max, step, isControlled, quantize]);\n\n const primary600 = theme.palette.primary[600];\n const panelBg = theme.surface.panelBg;\n const disabledInk = theme.neutral[500];\n\n const percent = useMemo(() => {\n const span = max - min || 1;\n return ((current - min) / span) * 100;\n }, [current, min, max]);\n\n const commit = useCallback(\n (next: number) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const valueFromPointer = useCallback(\n (clientX: number, clientY: number) => {\n const el = trackRef.current;\n if (!el) return current;\n const rect = el.getBoundingClientRect();\n let ratio = isVertical ? (rect.bottom - clientY) / rect.height : (clientX - rect.left) / rect.width;\n ratio = Math.max(0, Math.min(1, ratio));\n return quantize(min + ratio * (max - min));\n },\n [current, isVertical, min, max, quantize]\n );\n\n const onPointerDownTrack = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) return;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n commit(valueFromPointer(e.clientX, e.clientY));\n setDragging(true);\n },\n [disabled, commit, valueFromPointer]\n );\n\n const onPointerDownThumb = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) return;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n setDragging(true);\n },\n [disabled]\n );\n\n const onPointerMove = useCallback(\n (e: PointerEvent) => {\n if (!dragging || disabled) return;\n commit(valueFromPointer(e.clientX, e.clientY));\n },\n [dragging, disabled, commit, valueFromPointer]\n );\n\n const stopDrag = useCallback(() => setDragging(false), []);\n\n useEffect(() => {\n if (!dragging) return;\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", stopDrag);\n window.addEventListener(\"pointercancel\", stopDrag);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", stopDrag);\n window.removeEventListener(\"pointercancel\", stopDrag);\n };\n }, [dragging, onPointerMove, stopDrag]);\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n let next = current;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = current + step;\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = current - step;\n else if (e.key === \"Home\") next = min;\n else if (e.key === \"End\") next = max;\n else return;\n e.preventDefault();\n commit(quantize(next));\n },\n [disabled, current, step, min, max, commit, quantize]\n );\n\n const showTooltip = dragging || hoverThumb || hoverTip;\n const showHoverRing = (hoverThumb || dragging) && !disabled;\n const ringColor = `color-mix(in srgb, ${primary600} 25%, transparent)`;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: isVertical ? \"row\" : \"column\",\n alignItems: \"center\",\n padding: isVertical ? \"1rem\" : \"1rem 0\",\n width: isVertical ? \"fit-content\" : fullWidth ? \"100%\" : 350,\n height: isVertical ? 250 : \"auto\",\n boxSizing: \"border-box\",\n });\n\n const labelCss = css({\n marginBottom: isVertical ? 0 : 4,\n marginRight: isVertical ? 8 : 0,\n color: theme.text.primary,\n userSelect: \"none\",\n });\n\n const trackBaseCss = css({\n position: \"relative\",\n width: isVertical ? DEFAULT_TRACK_H : \"100%\",\n height: isVertical ? \"100%\" : DEFAULT_TRACK_H,\n backgroundColor: theme.neutral[200],\n borderRadius: theme.radius.xs,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n touchAction: \"none\",\n outline: \"none\",\n overflow: \"visible\",\n });\n\n const stepperCss = css({\n position: \"absolute\",\n left: isVertical ? \"50%\" : 0,\n top: isVertical ? 2 : \"50%\",\n transform: isVertical ? \"translateX(-50%)\" : \"translateY(-50%)\",\n width: isVertical ? DEFAULT_TRACK_H : `calc(100% - ${DEFAULT_DOT * 0.5}px)`,\n height: isVertical ? `calc(100% - ${DEFAULT_DOT * 0.5}px)` : DEFAULT_TRACK_H,\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n pointerEvents: \"none\",\n zIndex: 0,\n padding: 0,\n });\n\n const stepDotCss = css({\n width: DEFAULT_DOT,\n height: DEFAULT_DOT,\n borderRadius: \"50%\",\n backgroundColor: theme.text.primary,\n opacity: 0.15,\n flex: \"0 0 auto\",\n });\n\n const fillCss_default = css({\n position: \"absolute\",\n left: 0,\n top: isVertical ? `calc(${100 - percent}% )` : 0,\n bottom: 0,\n width: isVertical ? \"100%\" : `${percent}%`,\n height: isVertical ? `${percent}%` : \"100%\",\n backgroundColor: disabled ? disabledInk : primary600,\n borderRadius: theme.radius.sm,\n zIndex: 1,\n transition: \"none\",\n pointerEvents: \"none\",\n });\n\n const thumb_default = css({\n position: \"absolute\",\n appearance: \"none\",\n WebkitAppearance: \"none\",\n background: panelBg,\n width: DEFAULT_THUMB,\n height: DEFAULT_THUMB,\n left: isVertical ? \"50%\" : `calc(${percent}% - ${DEFAULT_THUMB / 2}px)`,\n bottom: isVertical ? `${percent}%` : \"auto\",\n top: isVertical ? \"auto\" : \"50%\",\n transform: isVertical ? \"translate(-50%, 50%)\" : \"translateY(-50%)\",\n borderRadius: rounded ? theme.radius.full : `calc(${theme.radius.md} * 0.75)`,\n border: `2px solid ${disabled ? disabledInk : primary600}`,\n cursor: disabled ? \"not-allowed\" : \"grab\",\n zIndex: 5,\n padding: 0,\n lineHeight: 0,\n transition: \"box-shadow .16s ease\",\n boxShadow: showHoverRing ? `0 0 0 ${dragging ? 4 : 8}px ${ringColor}` : `0 0 0 0px ${ringColor}`,\n \"&:focus-visible\": {\n boxShadow: `0 0 0 4px ${ringColor}`,\n outline: \"none\",\n },\n });\n\n const tipAnchorCss = css({\n position: \"relative\",\n backgroundColor: \"transparent\",\n padding: \"1rem\",\n top: !isVertical ? -28 : -7.5,\n left: isVertical ? 9 : -7.5,\n pointerEvents: \"none\",\n });\n\n const tooltipCss = css({\n position: \"absolute\",\n top: isVertical ? `calc(50% - ${DEFAULT_DOT * 2.5}px)` : 0,\n left: isVertical ? \"auto\" : `calc(50% - ${DEFAULT_DOT * 3}px)`,\n transform: isVertical ? \"translateY(-50%)\" : \"translateX(-50%)\",\n backgroundColor: theme.neutral[800],\n color: theme.neutral[0],\n padding: `0.6rem 0.25rem`,\n fontSize: 12,\n borderRadius: 6,\n whiteSpace: \"nowrap\",\n pointerEvents: \"auto\",\n zIndex: 6,\n \"&::after\": {\n content: '\"\"',\n position: \"absolute\",\n width: 6,\n height: 6,\n backgroundColor: theme.neutral[800],\n borderRadius: 2,\n bottom: isVertical ? \"50%\" : -2,\n left: isVertical ? -2.5 : \"50%\",\n transform: isVertical ? \"translateY(50%) rotate(45deg)\" : \"translateX(-50%) rotate(45deg)\",\n },\n });\n\n const rootUserCss = userRootCss as CSSObject | undefined;\n const trackUserCss = trackCss as CSSObject | undefined;\n const thumbUserCss = thumbCss as CSSObject | undefined;\n\n const stepsCount = Math.floor((max - min) / step) + 1;\n\n return (\n <div\n {...rest}\n role=\"group\"\n aria-label={label}\n className={[\"plainframe-ui-slider\", className || \"\"].join(\" \").trim()}\n css={[rootCss, rootUserCss]}\n data-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n >\n {label && !isVertical && (\n <div className=\"plainframe-ui-slider-label\" css={labelCss}>\n {label}\n </div>\n )}\n\n <div\n ref={trackRef}\n className=\"plainframe-ui-slider-track\"\n css={[trackBaseCss, trackUserCss]}\n onPointerDown={onPointerDownTrack}\n >\n {showStepper && step > 0 && (\n <div className=\"plainframe-ui-slider-stepper\" css={stepperCss}>\n {Array.from({ length: stepsCount }).map((_, i) => (\n <span key={i} className=\"plainframe-ui-slider-step-dot\" css={stepDotCss} />\n ))}\n </div>\n )}\n\n <div className=\"plainframe-ui-slider-fill\" css={fillCss_default} />\n\n <button\n type=\"button\"\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={current}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDownThumb}\n onPointerUp={stopDrag}\n onPointerCancel={stopDrag}\n onMouseEnter={() => setHoverThumb(true)}\n onMouseLeave={() => setHoverThumb(false)}\n className=\"plainframe-ui-slider-thumb\"\n css={[thumb_default, thumbUserCss]}\n >\n <AnimatePresence>\n {showTooltip && (\n <motion.div\n className=\"plainframe-ui-slider-tooltip-anchor\"\n css={tipAnchorCss}\n initial={{ opacity: 0, scale: 0.9, y: isVertical ? 0 : 4, x: isVertical ? 4 : 0 }}\n animate={{ opacity: 1, scale: 1, y: 0, x: 0 }}\n exit={{ opacity: 0, scale: 0.9, y: isVertical ? 0 : 4, x: isVertical ? 4 : 0 }}\n transition={{ duration: 0.16, ease: \"easeOut\" }}\n >\n <motion.div\n className=\"plainframe-ui-slider-tooltip\"\n css={tooltipCss}\n initial={{ opacity: 0, y: isVertical ? 0 : 4, x: isVertical ? -4 : 0 }}\n animate={{ opacity: 1, y: 0, x: 0 }}\n exit={{ opacity: 0, y: isVertical ? 0 : 4, x: isVertical ? -4 : 0 }}\n transition={{ duration: 0.16, ease: \"easeOut\" }}\n onMouseEnter={() => setHoverTip(true)}\n onMouseLeave={() => setHoverTip(false)}\n >\n {current}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n {showValue && !showTooltip ? null : null}\n </button>\n </div>\n\n {label && isVertical && (\n <div className=\"plainframe-ui-slider-label\" css={[labelCss, { marginLeft: 8 }]}>\n {label}\n </div>\n )}\n </div>\n );\n};\n\nSlider.displayName = \"Slider\";","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Check } from \"lucide-react\";\nimport { Theme } from \"@emotion/react\";\n\nexport type StepProps = {\n value: string | number | boolean;\n index?: number;\n label?: number | React.ReactNode;\n disabled?: boolean;\n complete?: boolean;\n icon?: React.ReactNode;\n completedIcon?: React.ReactNode;\n};\n\ntype TitlePos = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ntype StepperProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: \"subtle\" | \"outlined\" | \"filled\";\n value?: StepProps[\"value\"];\n defaultValue?: StepProps[\"value\"];\n onChange?: (value: StepProps[\"value\"]) => void;\n disabled?: boolean;\n allowForward?: boolean | ((fromIndex: number, toIndex: number) => boolean);\n allComplete?: boolean;\n color?: string;\n activeBgColor?: string;\n activeColor?: string;\n completeBgColor?: string;\n completeColor?: string;\n separator?: React.ReactNode;\n titlePosition?: TitlePos;\n width?: number | string;\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst rootCss = (mw?: number | string) =>\n css({\n \"--pf-ease\": \"cubic-bezier(.4,0,.2,1)\",\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: mw == null ? \"100%\" : typeof mw === \"number\" ? `${mw}px` : mw,\n width: \"100%\",\n });\n\nconst trackCss = css({\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n gap: 12,\n});\n\nconst stepWrapCss = (pos: TitlePos) =>\n css({\n display: \"flex\",\n minWidth: 0,\n flex: \"0 0 auto\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 8,\n flexDirection:\n pos === \"left\"\n ? \"row-reverse\"\n : pos === \"right\"\n ? \"row\"\n : pos === \"top\"\n ? \"column-reverse\"\n : \"column\",\n });\n\nconst connectorTrackCss = (neutral300: string) =>\n css({\n position: \"relative\",\n flex: \"1 1 24px\",\n minWidth: 6,\n height: 2,\n borderRadius: 1,\n background: neutral300,\n overflow: \"hidden\",\n });\n\nconst connectorFillCss = (pct: number, color: string, animate: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n transformOrigin: \"left center\",\n transform: `scaleX(${pct})`,\n background: color,\n transition: animate ? \"all .28s var(--pf-ease)\" : \"none\",\n willChange: \"transform\",\n });\n\nconst separatorWrapCss = css({\n flex: \"1 1 24px\",\n minWidth: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n\nconst nodeCss = (\n size: number,\n bg: string,\n fg: string,\n outline: string,\n radiusFull: string\n) =>\n css({\n position: \"relative\",\n appearance: \"none\",\n border: `2px solid ${outline}`,\n width: size,\n height: size,\n minWidth: size,\n minHeight: size,\n borderRadius: radiusFull,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n userSelect: \"none\",\n background: bg,\n color: fg,\n transition: \"all .22s var(--pf-ease)\",\n \"&:disabled, &[aria-disabled='true']\": { opacity: 0.55, cursor: \"not-allowed\" },\n });\n\nconst numCss = css({\n fontWeight: 700,\n fontSize: 14,\n lineHeight: 1,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n});\n\nconst layerCss = (show: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: `scale(${show ? 1 : 0.3})`,\n opacity: show ? 1 : 0,\n transition: \"background .22s var(--pf-ease), transform .16s var(--pf-ease), opacity .16s var(--pf-ease)\",\n willChange: \"transform, opacity\",\n });\n\nconst labelCss = (\n strong: boolean,\n textPrimary: string,\n textSecondary: string,\n radiusXs: string,\n spacingXs: number\n) =>\n css({\n fontSize: 14,\n color: strong ? textPrimary : textSecondary,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n transition: \"all .16s ease\",\n textAlign: \"center\",\n fontWeight: 700,\n margin: `0 ${spacingXs}px`,\n borderRadius: radiusXs,\n });\n\ntype NormalizedVariant = \"subtle\" | \"outlined\";\n\ntype StepItemProps = {\n i: number;\n item: StepProps;\n size: number;\n tokens: {\n MAIN: string;\n ACTIVE_TEXT: string;\n ACTIVE_TEXT_OUTLINED: string;\n COMPLETE_BG: string;\n COMPLETE_FG: string;\n UPCOMING_BG_FILLED: string;\n UPCOMING_OUTLINE: string;\n UPCOMING_FG: string;\n };\n variant: NormalizedVariant;\n titlePosition: TitlePos;\n isActive: boolean;\n completed: boolean;\n disabled: boolean;\n connectorColor: string;\n showConnector: boolean;\n animate: boolean;\n separator?: React.ReactNode;\n canGoToIndex: (toIndex: number) => boolean;\n setSelected: (v: StepProps[\"value\"]) => void;\n};\n\nconst StepItem = React.memo<StepItemProps>(function StepItem({\n i,\n item,\n size,\n tokens,\n variant,\n titlePosition,\n isActive,\n completed,\n disabled,\n connectorColor,\n showConnector,\n animate,\n separator,\n canGoToIndex,\n setSelected,\n}) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const {\n MAIN,\n ACTIVE_TEXT,\n ACTIVE_TEXT_OUTLINED,\n COMPLETE_BG,\n COMPLETE_FG,\n UPCOMING_BG_FILLED,\n UPCOMING_OUTLINE,\n UPCOMING_FG,\n } = tokens;\n\n let bg = \"transparent\",\n fg = UPCOMING_FG,\n outline = UPCOMING_OUTLINE;\n\n if (variant === \"subtle\") {\n if (completed) {\n bg = COMPLETE_BG;\n fg = COMPLETE_FG;\n outline = COMPLETE_BG;\n } else if (isActive) {\n bg = MAIN;\n fg = ACTIVE_TEXT;\n outline = MAIN;\n } else {\n bg = UPCOMING_BG_FILLED;\n fg = UPCOMING_FG;\n outline = UPCOMING_BG_FILLED;\n }\n } else {\n if (completed) {\n bg = COMPLETE_BG;\n fg = COMPLETE_FG;\n outline = COMPLETE_BG;\n } else if (isActive) {\n bg = \"transparent\";\n fg = ACTIVE_TEXT_OUTLINED;\n outline = MAIN;\n } else {\n bg = \"transparent\";\n fg = UPCOMING_FG;\n outline = UPCOMING_OUTLINE;\n }\n }\n\n const label = item.label;\n const baseIcon = item.icon ?? <span css={numCss}>{typeof label === \"number\" ? label : i + 1}</span>;\n const doneIcon = item.completedIcon ?? <Check strokeWidth={3.25} size={16} />;\n\n return (\n <>\n <div className=\"plainframe-ui-step\" css={stepWrapCss(titlePosition)}>\n <button\n className=\"plainframe-ui-step-node\"\n css={[nodeCss(size, bg, fg, outline, String(theme.radius.full)), !disabled && focusRing({color: isActive ? \"primary\" : \"neutral\"})]}\n onClick={() => {\n if (!disabled && canGoToIndex(i)) setSelected(item.value);\n }}\n tabIndex={disabled ? -1 : 0}\n aria-current={isActive ? \"step\" : undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n aria-label={typeof label === \"string\" ? label : `Step ${i + 1}`}\n >\n <span className=\"plainframe-ui-step-content\" css={layerCss(!completed)}>\n {baseIcon}\n </span>\n <span className=\"plainframe-ui-step-check\" css={layerCss(!!completed)}>\n {doneIcon}\n </span>\n </button>\n\n {label && (\n <span\n className=\"plainframe-ui-step-label\"\n css={labelCss(\n completed || isActive,\n theme.text.primary,\n theme.text.secondary,\n String(theme.radius.xs),\n Number(theme.spacing.xs)\n )}\n >\n {label}\n </span>\n )}\n </div>\n\n {showConnector &&\n (separator ? (\n <div className=\"plainframe-ui-stepper-separator\" css={separatorWrapCss}>\n {separator}\n </div>\n ) : (\n <div className=\"plainframe-ui-step-connector\" css={connectorTrackCss(theme.neutral[300])}>\n <div\n className=\"plainframe-ui-step-connector-fill\"\n css={connectorFillCss(completed ? 1 : 0, connectorColor, animate)}\n aria-hidden=\"true\"\n />\n </div>\n ))}\n </>\n );\n},\n(a, b) =>\n a.isActive === b.isActive &&\n a.completed === b.completed &&\n a.disabled === b.disabled &&\n a.variant === b.variant &&\n a.separator === b.separator &&\n a.connectorColor === b.connectorColor &&\n a.titlePosition === b.titlePosition &&\n a.size === b.size);\n\nexport const Step: React.FC<StepProps> = () => null;\nStep.displayName = \"PlainframeUIStep\";\n\nexport const Stepper: React.FC<StepperProps> = ({\n variant = \"subtle\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n allowForward = true,\n allComplete = false,\n color,\n activeBgColor,\n activeColor,\n completeBgColor,\n completeColor,\n separator,\n titlePosition = \"right\",\n width,\n css: userCss,\n className,\n children,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const normalizedVariant: NormalizedVariant = variant === \"outlined\" ? \"outlined\" : \"subtle\";\n\n const steps: StepProps[] = React.useMemo(() => {\n const arr = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<StepProps> =>\n React.isValidElement(child) && child.type === Step\n );\n if (!arr.length) return [{ value: 1 }, { value: 2 }, { value: 3 }];\n return arr.map((child, index) => ({ index, ...child.props }));\n }, [children]);\n\n const resolve = React.useCallback(\n (c?: string, fallback?: string) => (c ? ((theme.palette)?.[c] ?? c) : fallback),\n [theme.palette]\n );\n\n const tokens = React.useMemo(\n () => ({\n MAIN: String(resolve(activeBgColor, typeof theme.palette.primary[600] === \"string\" ? theme.palette.primary[600] : \"\")),\n ACTIVE_TEXT: String(resolve(activeColor, typeof theme.text.onColors.primary === \"string\" ? theme.text.onColors.primary : \"\")),\n ACTIVE_TEXT_OUTLINED: String(resolve(activeColor, typeof theme.text.primary === \"string\" ? theme.text.primary : \"\")),\n COMPLETE_BG: String(resolve(completeBgColor, typeof theme.palette.primary[600] === \"string\" ? theme.palette.primary[600] : \"\")),\n COMPLETE_FG: String(resolve(completeColor, typeof theme.text.onColors.primary === \"string\" ? theme.text.onColors.primary : \"\")),\n UPCOMING_BG_FILLED: String(typeof theme.neutral[100] === \"string\" ? theme.neutral[100] : \"\"),\n UPCOMING_OUTLINE: String(typeof theme.neutral[300] === \"string\" ? theme.neutral[300] : \"\"),\n UPCOMING_FG: String(typeof theme.text.secondary === \"string\" ? theme.text.secondary : \"\"),\n }),\n [\n resolve,\n activeBgColor,\n activeColor,\n completeBgColor,\n completeColor,\n theme.palette.primary,\n theme.neutral,\n theme.text,\n ]\n );\n\n const connectorColor = React.useMemo(\n () => {\n const resolved = resolve(color, theme.palette.primary[600]);\n return typeof resolved === \"string\" ? resolved : String(resolved);\n },\n [resolve, color, theme.palette.primary]\n );\n\n const [internal, setInternal] = React.useState<StepProps[\"value\"]>(() => {\n const has = steps.some((i) => i?.value === defaultValue);\n return has ? (defaultValue as StepProps[\"value\"]) : steps[0]?.value;\n });\n\n const isControlled = value !== undefined;\n const current = (isControlled ? value : internal) as StepProps[\"value\"];\n\n const { activeIndex, afterLast } = React.useMemo(() => {\n const directIdx = steps.findIndex((i) => i.value === current);\n if (directIdx !== -1) return { activeIndex: directIdx, afterLast: false };\n if (typeof current === \"number\") {\n const inferred = Math.floor(current) - 1;\n if (inferred >= steps.length) return { activeIndex: steps.length - 1, afterLast: true };\n if (inferred >= 0) return { activeIndex: inferred, afterLast: false };\n }\n return { activeIndex: 0, afterLast: false };\n }, [steps, current]);\n\n const setSelected = React.useCallback(\n (v: StepProps[\"value\"]) => {\n if (disabled) return;\n if (!isControlled) setInternal(v);\n onChange?.(v);\n },\n [disabled, isControlled, onChange]\n );\n\n const isStepComplete = React.useCallback(\n (idx: number) => allComplete || !!steps[idx]?.complete || (afterLast ? true : idx < activeIndex),\n [allComplete, steps, afterLast, activeIndex]\n );\n\n const canGoToIndex = React.useCallback(\n (toIndex: number) => {\n if (disabled) return false;\n const target = steps[toIndex];\n if (!target || target.disabled) return false;\n if (typeof allowForward === \"boolean\") {\n if (allowForward === false && toIndex > activeIndex) return false;\n } else if (typeof allowForward === \"function\") {\n if (!allowForward(activeIndex, toIndex)) return false;\n }\n return true;\n },\n [disabled, steps, allowForward, activeIndex]\n );\n\n const [animate, setAnimate] = React.useState(false);\n React.useEffect(() => {\n const id = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const onKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!steps.length || disabled) return;\n let next = activeIndex;\n if (e.key === \"ArrowRight\") next = Math.min(steps.length - 1, activeIndex + 1);\n else if (e.key === \"ArrowLeft\") next = Math.max(0, activeIndex - 1);\n else if (e.key === \"Home\") next = 0;\n else if (e.key === \"End\") next = steps.length - 1;\n else return;\n e.preventDefault();\n if (canGoToIndex(next)) setSelected(steps[next]!.value);\n },\n [steps, disabled, activeIndex, canGoToIndex, setSelected]\n );\n\n const size = 34;\n\n return (\n <div\n tabIndex={-1}\n className={[\"plainframe-ui-stepper\", className || \"\"].join(\" \").trim()}\n css={[rootCss(width), userCss as CSSObject]}\n {...rest}\n >\n <div\n tabIndex={-1}\n className=\"plainframe-ui-stepper-track\"\n role=\"list\"\n onKeyDown={onKeyDown}\n css={trackCss}\n >\n {steps.map((step, i) => (\n <React.Fragment key={String(step.value ?? i)}>\n <StepItem\n i={i}\n item={step}\n size={size}\n tokens={tokens}\n variant={normalizedVariant}\n titlePosition={titlePosition}\n isActive={!afterLast && i === activeIndex}\n completed={isStepComplete(i)}\n disabled={disabled || !!step.disabled}\n connectorColor={connectorColor}\n showConnector={i < steps.length - 1}\n animate={animate}\n separator={separator}\n canGoToIndex={canGoToIndex}\n setSelected={setSelected}\n />\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype Variant = \"subtle\" | \"underlined\" | \"text\" | \"ghost\";\ntype Direction = \"horizontal\" | \"vertical\";\n\nexport type TabsProps = {\n children?: React.ReactNode;\n defaultValue?: string | number | boolean;\n value?: string | number | boolean;\n onChange?: (value: string | number | boolean) => void;\n variant?: Variant;\n direction?: Direction;\n className?: string;\n shadow?: boolean;\n width?: number | string;\n fullWidth?: boolean;\n rounded?: boolean;\n titlePosition?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"left\" | \"center\" | \"right\";\n css?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n activeTabCss?: Interpolation<Theme>;\n activeIndicatorCss?: Interpolation<Theme>;\n};\n\nexport type TabProps = {\n value: string | number | boolean;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n activeCss?: Interpolation<Theme>;\n css?: Interpolation<Theme>;\n};\n\nexport type TabContentProps = {\n value: string | number | boolean;\n className?: string;\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n};\n\nexport const Tab: React.FC<TabProps> = () => null;\nTab.displayName = \"PF.Tab\";\n\nexport const TabContent: React.FC<TabContentProps> = ({ children }) => <>{children}</>;\nTabContent.displayName = \"PF.TabContent\";\n\nfunction unwrapEmotion(child: React.ReactElement) {\n const propsAny = child.props as any;\n const origType = propsAny?.__EMOTION_TYPE_PLEASE_DO_NOT_USE__ ?? child.type;\n return { type: origType, props: propsAny };\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n children,\n defaultValue,\n value,\n onChange,\n variant = \"subtle\",\n direction = \"horizontal\",\n className,\n shadow = false,\n width,\n fullWidth = false,\n rounded = false,\n titlePosition = \"right\",\n align,\n css: userCss,\n trackCss: userTrackCss,\n thumbCss: userThumbCss,\n activeTabCss,\n activeIndicatorCss,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const isV = direction === \"vertical\";\n const stretch = fullWidth || width != null;\n const effAlign: \"left\" | \"center\" | \"right\" = align ?? (isV ? \"left\" : \"center\");\n const justifyMap = { left: \"flex-start\", center: \"center\", right: \"flex-end\" } as const;\n\n type ParsedTab = {\n value: string | number | boolean;\n disabled?: boolean;\n node: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n activeCss?: Interpolation<Theme>;\n };\n\n const { tabs, contents } = React.useMemo(() => {\n const t: ParsedTab[] = [];\n const c: Array<{ value: TabContentProps[\"value\"]; node: React.ReactNode; className?: string; css?: Interpolation<Theme> }> = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const { type: origType, props } = unwrapEmotion(child);\n const isTab = origType === Tab || (origType as any)?.displayName === Tab.displayName;\n const isContent = origType === TabContent || (origType as any)?.displayName === TabContent.displayName;\n if (isTab) {\n const p = props as TabProps;\n if (p?.value === undefined) return;\n t.push({ value: p.value, disabled: p.disabled, node: p.children, className: p.className, css: p.css, activeCss: p.activeCss });\n } else if (isContent) {\n const p = props as TabContentProps;\n if (p?.value === undefined) return;\n c.push({ value: p.value, node: p.children, className: p.className, css: p.css });\n }\n });\n return { tabs: t, contents: c };\n }, [children]);\n\n const firstEnabled = React.useMemo(() => tabs.find((t) => !t.disabled)?.value, [tabs]);\n const [internal, setInternal] = React.useState(() => {\n const ok = defaultValue !== undefined && tabs.some((t) => t.value === defaultValue && !t.disabled);\n return ok ? defaultValue : firstEnabled;\n });\n const isControlled = value !== undefined;\n const currentValue = (isControlled ? value : internal) as any;\n\n const listRef = React.useRef<HTMLDivElement>(null);\n const btnRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const activeIndex = Math.max(0, tabs.findIndex((t) => t.value === currentValue));\n\n type Ind = { left: number; top: number; width: number; height: number };\n const [indicator, setIndicator] = React.useState<Ind>({ left: 0, top: 0, width: 0, height: 0 });\n const [ready, setReady] = React.useState(false);\n const [animate, setAnimate] = React.useState(false);\n\n const measure = React.useCallback(() => {\n const list = listRef.current;\n const btn = btnRefs.current[activeIndex];\n if (!list || !btn) return;\n const listRect = list.getBoundingClientRect();\n const r = btn.getBoundingClientRect();\n setIndicator({ left: r.left - listRect.left, top: r.top - listRect.top, width: r.width, height: r.height });\n }, [activeIndex]);\n\n React.useLayoutEffect(() => {\n measure();\n if (!ready) {\n setReady(true);\n requestAnimationFrame(() => setAnimate(true));\n }\n }, [measure, ready]);\n\n React.useEffect(() => {\n const ro = new ResizeObserver(() => measure());\n if (listRef.current) ro.observe(listRef.current);\n const btn = btnRefs.current[activeIndex];\n if (btn) ro.observe(btn);\n const onWin = () => measure();\n window.addEventListener(\"resize\", onWin);\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", onWin);\n };\n }, [measure, activeIndex]);\n\n const nextEnabledIndex = (from: number, dir: 1 | -1) => {\n if (!tabs.length) return from;\n let i = from;\n for (let step = 0; step < tabs.length; step++) {\n i = (i + dir + tabs.length) % tabs.length;\n if (!tabs[i].disabled) return i;\n }\n return from;\n };\n\n const setSelected = (v: any) => {\n if (!isControlled) setInternal(v);\n onChange?.(v);\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!tabs.length) return;\n let next = activeIndex;\n if (e.key === (isV ? \"ArrowDown\" : \"ArrowRight\")) next = nextEnabledIndex(activeIndex, 1);\n else if (e.key === (isV ? \"ArrowUp\" : \"ArrowLeft\")) next = nextEnabledIndex(activeIndex, -1);\n else if (e.key === \"Home\") next = tabs.findIndex((t) => !t.disabled);\n else if (e.key === \"End\") {\n const rev = [...tabs].reverse().findIndex((t) => !t.disabled);\n next = rev === -1 ? activeIndex : tabs.length - 1 - rev;\n } else return;\n e.preventDefault();\n const v = tabs[next]?.value;\n if (v !== undefined) setSelected(v);\n requestAnimationFrame(() => btnRefs.current[next]?.focus());\n };\n\n const textPrimary = theme.text.primary;\n const textSecondary = theme.text.secondary;\n const disabledText = theme.neutral[500];\n\n const trackBg = variant === \"subtle\" ? theme.surface.subtleBg : variant === \"ghost\" ? \"transparent\" : \"transparent\";\n const thumbBg = variant === \"subtle\" ? theme.surface.panelBg ?? theme.surface.panelBg : variant === \"ghost\" ? theme.surface.subtleBg : \"transparent\";\n const underlineColor = theme.text.primary;\n const showThumb = variant === \"subtle\" || variant === \"ghost\" || variant === \"underlined\";\n\n const rootCss = css({\n \"--pf-ease\": \"cubic-bezier(.4,0,.2,1)\",\n display: \"flex\",\n flexDirection: \"column\",\n width: fullWidth ? \"100%\" : width == null ? \"auto\" : typeof width === \"number\" ? `${width}px` : width,\n });\n\n const needsPad = variant === \"subtle\";\n\n const trackBaseCss = css({\n position: \"relative\",\n display: stretch ? \"flex\" : \"inline-flex\",\n width: stretch ? \"100%\" : \"auto\",\n flexDirection: isV ? \"column\" : \"row\",\n alignItems: isV ? \"stretch\" : \"center\",\n flexWrap: \"nowrap\",\n gap: theme.spacing.xs,\n padding: needsPad ? theme.spacing.xs : 0,\n background: trackBg,\n borderRadius:\n variant === \"subtle\"\n ? rounded\n ? isV\n ? (theme.radius.lg as string)\n : (theme.radius.full as string)\n : (theme.radius.lg as string)\n : \"none\",\n });\n\n const thumbBaseCss = css({\n position: \"absolute\",\n zIndex: 0,\n pointerEvents: \"none\",\n opacity: ready ? 1 : 0,\n visibility: ready ? \"visible\" : \"hidden\",\n transition: animate\n ? `${isV ? \"top\" : \"left\"} .24s var(--pf-ease), ${isV ? \"height\" : \"width\"} .24s var(--pf-ease), background-color .18s var(--pf-ease)`\n : \"none\",\n borderRadius: variant === \"subtle\" || variant === \"ghost\" ? (rounded ? (theme.radius.full as string) : (theme.radius.md as string)) : 0,\n background: variant === \"underlined\" ? \"transparent\" : thumbBg,\n ...(isV\n ? { top: `${indicator.top}px`, height: `${indicator.height}px`, left: theme.spacing.xs, right: theme.spacing.xs }\n : { left: `${indicator.left}px`, width: `${indicator.width}px`, top: theme.spacing.xs, bottom: theme.spacing.xs }),\n boxShadow: shadow && variant === \"subtle\" ? \"0 1px 3px rgba(0,0,0,0.04), 0 6px 16px rgba(0,0,0,0.04)\" : \"none\",\n });\n\n const underlineCss = css(\n variant !== \"underlined\"\n ? {}\n : isV\n ? { background: \"transparent\", top: `${indicator.top}px`, height: `${indicator.height}px`, left: 0, width: 0, borderLeft: `2px solid ${underlineColor}`, borderBottom: \"none\", borderRadius: 2 }\n : { background: \"transparent\", left: `${indicator.left}px`, width: `${indicator.width}px`, bottom: 0, top: \"auto\", height: 0, borderBottom: `2px solid ${underlineColor}`, borderLeft: \"none\", borderRadius: 2 }\n );\n\n const baseTabCss = css({\n position: \"relative\",\n zIndex: 1,\n border: \"none\",\n background: \"transparent\",\n padding:\n variant === \"underlined\" && direction !== \"vertical\"\n ? `${theme.spacing.md}`\n : variant === \"ghost\" && direction !== \"vertical\"\n ? `${theme.spacing.md}`\n : `${theme.spacing.xs} ${theme.spacing.md}`,\n borderRadius:\n variant === \"subtle\" || variant === \"ghost\"\n ? rounded\n ? (theme.radius.full as string)\n : (theme.radius.md as string)\n : (theme.radius.md as string),\n minHeight: theme.componentHeights.sm,\n transition: \"color .16s ease !important\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...(isV ? { width: stretch ? \"100%\" : \"auto\", flex: \"0 0 auto\", textAlign: effAlign } : stretch ? { flex: \"1 1 0\", minWidth: 0, textAlign: \"center\" } : { flex: \"0 0 auto\", minWidth: \"max-content\", textAlign: \"center\" }),\n whiteSpace: \"nowrap\",\n boxSizing: \"border-box\",\n cursor: \"pointer\",\n userSelect: \"none\",\n fontSize: theme.fontSizes.md,\n fontWeight: 600,\n color: textSecondary,\n \"&[aria-selected='true']\": { color: textPrimary },\n \"&:hover\": { color: textPrimary },\n \"&[aria-disabled='true'], &:disabled\": { opacity: 0.55, cursor: \"not-allowed\", color: disabledText },\n });\n\n const contentWrapCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: isV ? justifyMap[effAlign] : \"center\",\n gap: 6,\n width: \"100%\",\n flexDirection:\n titlePosition === \"top\"\n ? \"column-reverse\"\n : titlePosition === \"bottom\"\n ? \"column\"\n : titlePosition === \"left\"\n ? \"row-reverse\"\n : \"row\",\n });\n\n const panelCss = css({ marginTop: theme.spacing.sm, width: \"100%\" });\n\n const idBase = React.useId();\n const panelIdByValue = new Map<any, string>();\n contents.forEach((c, i) => panelIdByValue.set(c.value, `${idBase}-panel-${i}`));\n const tabIdForIndex = (i: number) => `${idBase}-tab-${i}`;\n\n return (\n <div className={[\"plainframe-ui-tabs\", className || \"\"].join(\" \").trim()} css={[rootCss, userCss]}>\n <div\n className=\"plainframe-ui-tabs-track\"\n ref={listRef}\n role=\"tablist\"\n aria-orientation={isV ? \"vertical\" : \"horizontal\"}\n onKeyDown={onKeyDown}\n css={[trackBaseCss, userTrackCss]}\n >\n {showThumb && <div className=\"plainframe-ui-tabs-thumb\" css={[thumbBaseCss, underlineCss, userThumbCss, activeIndicatorCss]} />}\n {tabs.map((t, i) => {\n const isActive = currentValue === t.value;\n return (\n <button\n key={String(t.value ?? i)}\n ref={(el) => {\n btnRefs.current[i] = el;\n }}\n role=\"tab\"\n id={tabIdForIndex(i)}\n aria-selected={isActive}\n aria-controls={panelIdByValue.get(t.value)}\n aria-disabled={t.disabled || undefined}\n disabled={t.disabled}\n tabIndex={t.disabled ? -1 : i === activeIndex ? 0 : -1}\n className={[\"plainframe-ui-tab\", t.className || \"\"].join(\" \").trim()}\n onClick={() => {\n if (!t.disabled) setSelected(t.value);\n }}\n css={[baseTabCss, !t.disabled && focusRing(), t.css, isActive ? (t.activeCss ?? activeTabCss) : undefined]}\n >\n <span className=\"plainframe-ui-tab-content\" css={contentWrapCss}>\n {t.node}\n </span>\n </button>\n );\n })}\n </div>\n {contents.map((c, i) => {\n const isActive = c.value === currentValue;\n const labelledByIndex = tabs.findIndex((t) => t.value === c.value);\n const labelledBy = labelledByIndex >= 0 ? tabIdForIndex(labelledByIndex) : undefined;\n return (\n <div\n key={i}\n role=\"tabpanel\"\n id={panelIdByValue.get(c.value)}\n aria-labelledby={labelledBy}\n hidden={!isActive}\n className={[\"plainframe-ui-tab-panel\", c.className || \"\"].join(\" \").trim()}\n css={[panelCss, c.css]}\n >\n {isActive ? c.node : null}\n </div>\n );\n })}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useLayoutEffect,\n useRef,\n useState,\n useId,\n useMemo,\n useCallback,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusWithinRing } from \"../utils/focusRing\";\n\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type TextAreaProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n fullWidth?: boolean;\n width?: number | string;\n size?: SizeKey;\n variant?: Variant;\n rounded?: boolean;\n rows?: number;\n maxRows?: number;\n maxLength?: number;\n showCharCount?: boolean;\n focusRingMode?: \"always\" | \"none\";\n resizable?: boolean;\n wrapperCss?: Interpolation<Theme>;\n inputCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n charCountCss?: Interpolation<Theme>;\n className?: string;\n onBlur?: React.FocusEventHandler<HTMLTextAreaElement>;\n onFocus?: React.FocusEventHandler<HTMLTextAreaElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n name?: string;\n id?: string;\n tabIndex?: number;\n autoComplete?: string;\n readOnly?: boolean;\n required?: boolean;\n};\n\nconst u = (v: number | string | undefined): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst asArr = (v?: Interpolation<Theme>): Interpolation<Theme>[] =>\n v == null ? [] : (Array.isArray(v) ? v : [v]);\n\n// ✅ Avoid template-literal overload by always using the array/object overload.\nconst mergeCss = (\n ...parts: Array<Interpolation<Theme> | false | null | undefined>\n): Interpolation<Theme> => css(parts.filter(Boolean) as any);\n\nexport const TextArea: React.FC<TextAreaProps> = ({\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n error,\n helperText,\n disabled = false,\n fullWidth = false,\n width = 235,\n size = \"md\",\n variant = \"subtle\",\n rounded = false,\n rows = 3,\n maxRows,\n maxLength,\n showCharCount,\n focusRingMode = \"always\",\n resizable = false,\n className,\n wrapperCss: userWrapperCss,\n inputCss: userInputCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n charCountCss: userCharCountCss,\n css: userSurfaceCss,\n onBlur,\n onFocus,\n onKeyDown,\n autoFocus,\n name,\n id,\n tabIndex,\n autoComplete,\n readOnly,\n required,\n}) => {\n const theme = usePlainframeUITheme();\n const ring = useFocusWithinRing();\n const reactId = useId();\n\n const sizeMap = useMemo(\n () =>\n ({\n sm: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.sm,\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n width: \"12.5rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n md: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.md,\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n width: \"15rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n lg: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n width: \"18.125rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n }) as const,\n [theme]\n );\n\n const sizeKey: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size as any)\n ? (size as SizeKey)\n : \"md\";\n const s = sizeMap[sizeKey];\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr: string = isControlled ? (value as string) : internal;\n\n const setValue = useCallback(\n (next: string): void => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const surfaceBg = useMemo<string>(\n () =>\n disabled\n ? N[200]\n : variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg\n : \"transparent\",\n [disabled, variant, N, theme.surface]\n );\n\n const borderW = theme.componentHeights.border;\n const surfaceBorder = useMemo<string>(\n () =>\n variant === \"outlined\"\n ? `${borderW} solid ${error ? theme.palette.danger[600] : theme.surface.border}`\n : `${borderW} solid transparent`,\n [variant, borderW, error, theme.palette.danger, theme.surface.border]\n );\n\n const rootCss = useMemo(\n () =>\n css({\n boxSizing: \"border-box\",\n display: \"block\",\n minWidth: 0,\n width: \"100%\",\n maxWidth: fullWidth ? \"100%\" : width != null ? u(width) : undefined,\n flex: \"0 0 auto\",\n fontWeight: 500,\n }),\n [fullWidth, width]\n );\n\n const labelCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error ? theme.palette.danger?.[700] ?? T.primary : disabled ? N[500] : T.primary,\n marginBottom: 4,\n display: \"inline-block\",\n },\n ...asArr(userLabelCss)\n ),\n [s.labelFont, error, disabled, N, T, theme.palette.danger, userLabelCss]\n );\n\n const surfaceBaseCss = useMemo(\n () => [\n {\n display: \"flex\",\n alignItems: \"stretch\",\n gap: theme.spacing.sm,\n padding: `${u(s.paddingY)} 0 ${u(s.paddingY)} ${u(s.paddingX)}`,\n background: surfaceBg,\n outline: surfaceBorder,\n outlineOffset: `-${borderW}`,\n borderRadius: rounded ? (theme.radius.full as string) : (theme.radius.md as string),\n minHeight: s.minHeight,\n width: \"100%\",\n cursor: disabled ? \"not-allowed\" : \"text\",\n opacity: disabled ? 0.65 : 1,\n transition: \"box-shadow .18s, border-color .16s\",\n },\n ...asArr(userWrapperCss),\n ...asArr(userSurfaceCss),\n ] as Interpolation<Theme>,\n [theme, s, surfaceBg, surfaceBorder, borderW, rounded, disabled, userWrapperCss, userSurfaceCss]\n );\n\n const ctrlMinH: string = typeof s.minHeight === \"number\" ? `${s.minHeight}px` : s.minHeight;\n\n const textareaCss = useMemo(\n () =>\n mergeCss(\n {\n width: \"100%\",\n minWidth: 0,\n flex: 1,\n resize: resizable ? (\"vertical\" as const) : (\"none\" as const),\n font: \"inherit\",\n fontWeight: 500,\n fontSize: s.fontSize,\n lineHeight: 1.5,\n color: disabled ? N[500] : T.primary,\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n padding: 0,\n paddingRight: u(s.paddingX),\n overflowY: \"auto\",\n minHeight: ctrlMinH,\n \"&::placeholder\": { color: T.secondary },\n \"&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus\": {\n WebkitTextFillColor: `${T.primary} !important`,\n boxShadow: `0 0 0 1000px ${surfaceBg} inset !important`,\n transition: \"opacity 99999s ease-out\",\n caretColor: T.primary,\n },\n \":focus-within\": { outline: \"none\", border: \"none\", boxShadow: \"none\" },\n ...(rows === 1\n ? { paddingBlock: `calc((${ctrlMinH} - 1.5em) / 2)` }\n : { paddingBlock: \"clamp(4px, 0.5em, 12px)\" }),\n },\n ...asArr(userInputCss)\n ),\n [resizable, s, disabled, N, T, ctrlMinH, surfaceBg, rows, userInputCss]\n );\n\n const helperRowCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: 8,\n paddingTop: 3,\n },\n ...asArr(userHelperRowCss)\n ),\n [userHelperRowCss]\n );\n\n const helperTextCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n flex: 1,\n minWidth: 0,\n },\n ...asArr(userHelperTextCss)\n ),\n [s.helperFont, error, theme.palette.danger, T, userHelperTextCss]\n );\n\n const charCountCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.helperFont,\n color:\n maxLength && curr.length > maxLength\n ? theme.palette.danger?.[700] ?? T.secondary\n : T.secondary,\n flexShrink: 0,\n },\n ...asArr(userCharCountCss)\n ),\n [s.helperFont, maxLength, curr.length, theme.palette.danger, T, userCharCountCss]\n );\n\n const ref = useRef<HTMLTextAreaElement | null>(null);\n\n useLayoutEffect((): void => {\n if (typeof window === \"undefined\") return;\n const el = ref.current;\n if (!el) return;\n\n if (resizable) {\n const cs = window.getComputedStyle(el);\n const lh = parseFloat(cs.lineHeight || \"20\");\n const tokenMin = typeof s.minHeight === \"number\" ? s.minHeight : parseFloat(String(s.minHeight));\n const baseMin = Math.max(lh * (rows ?? 1), tokenMin);\n el.style.setProperty(\"--pf-minh\", `${baseMin}px`);\n return;\n }\n\n const measure = (): void => {\n const cs = window.getComputedStyle(el);\n const lh = parseFloat(cs.lineHeight || \"20\");\n const tokenMin = typeof s.minHeight === \"number\" ? s.minHeight : parseFloat(String(s.minHeight));\n const baseMin = Math.max(lh * (rows ?? 1), tokenMin);\n el.style.setProperty(\"--pf-minh\", `${baseMin}px`);\n const maxH = maxRows ? lh * maxRows : Infinity;\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxH)}px`;\n };\n\n measure();\n }, [curr, rows, maxRows, s.minHeight, resizable]);\n\n const helperId: string | undefined =\n helperText != null || showCharCount ? `${id ?? reactId}-help` : undefined;\n const inputId: string = id ?? reactId;\n\n return (\n <div className={[\"plainframe-ui-textarea\", className || \"\"].join(\" \").trim()} css={rootCss}>\n {label && (\n <label htmlFor={inputId} className=\"plainframe-ui-textarea-label\" css={labelCss}>\n {label}\n </label>\n )}\n\n <div\n className=\"plainframe-ui-textarea-surface\"\n css={[ring({ enabled: focusRingMode !== \"none\", disabled }), surfaceBaseCss]}\n aria-invalid={!!error || undefined}\n aria-disabled={disabled || undefined}\n onClick={() => !disabled && ref.current?.focus()}\n >\n <textarea\n ref={ref}\n id={inputId}\n className=\"plainframe-ui-textarea-input\"\n css={textareaCss}\n rows={rows}\n value={curr}\n onChange={(e): void => {\n const next = e.target.value;\n if (maxLength && next.length > maxLength) return;\n setValue(next);\n }}\n placeholder={placeholder || \"\"}\n disabled={disabled}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n autoFocus={autoFocus}\n name={name}\n tabIndex={tabIndex}\n autoComplete={autoComplete}\n readOnly={readOnly}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={helperId}\n />\n </div>\n\n {(helperText != null || (showCharCount && maxLength != null)) && (\n <div className=\"plainframe-ui-textarea-helper-row\" css={helperRowCss}>\n <span id={helperId} className=\"plainframe-ui-textarea-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n {showCharCount && maxLength != null && (\n <span className=\"plainframe-ui-textarea-char-count\" css={charCountCss}>\n {curr.length}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useSyncExternalStore } from \"react\";\nimport { css, type CSSObject } from \"@emotion/react\";\nimport { AnimatePresence, motion, useAnimationControls } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { X } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\ntype CoreStatus = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\ntype Status = CoreStatus | \"danger\";\ntype Position =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\ntype ShowDismissMode = \"hover\" | \"always\" | \"never\";\n\nexport type ToastRendererCtx = {\n toast: ToastItem;\n close: (id?: string) => void;\n pause: (id: string) => void;\n resume: (id: string) => void;\n};\nexport type ToastRenderer = (ctx: ToastRendererCtx) => React.ReactNode;\n\nexport type ToastItem = {\n id: string;\n status: Status;\n content?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n render?: React.ReactNode | ToastRenderer;\n bare?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n action?: React.ReactNode;\n duration: number | null;\n createdAt: number;\n onClose?: () => void;\n pauseOnHover?: boolean;\n showDismiss?: boolean | ShowDismissMode;\n onClick?: (id: string, e: React.MouseEvent | MouseEvent) => void;\n width?: number | string;\n};\n\ntype Options = Partial<\n Pick<\n ToastItem,\n | \"status\"\n | \"content\"\n | \"title\"\n | \"description\"\n | \"render\"\n | \"bare\"\n | \"startIcon\"\n | \"endIcon\"\n | \"action\"\n | \"onClose\"\n | \"pauseOnHover\"\n | \"showDismiss\"\n | \"onClick\"\n | \"width\"\n | \"duration\"\n | \"createdAt\"\n | \"id\"\n >\n> & { id?: string; duration?: number | null };\n\ntype Styles = {\n stack?: CSSObject;\n item?: CSSObject;\n surface?: CSSObject | ((t: ToastItem) => CSSObject);\n close?: CSSObject;\n};\n\ntype Config = {\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer?: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n};\n\nconst isIterable = (obj: any): obj is Iterable<unknown> =>\n obj != null && typeof obj[Symbol.iterator] === \"function\";\nconst isPromise = (obj: any): obj is Promise<unknown> =>\n !!obj && (typeof obj === \"object\" || typeof obj === \"function\") && typeof (obj as any).then === \"function\";\nfunction isOptionsInput(x: any): x is Options {\n if (x == null) return false;\n if (typeof x !== \"object\") return false;\n if (React.isValidElement(x)) return false;\n if (isPromise(x)) return false;\n if (isIterable(x)) return false;\n const keys = Object.keys(x);\n return (\n keys.length === 0 ||\n [\n \"status\",\n \"content\",\n \"title\",\n \"description\",\n \"render\",\n \"bare\",\n \"startIcon\",\n \"endIcon\",\n \"action\",\n \"onClose\",\n \"pauseOnHover\",\n \"showDismiss\",\n \"onClick\",\n \"width\",\n \"duration\",\n \"createdAt\",\n \"id\",\n ].some((k) => k in x)\n );\n}\n\nconst ENTER_SPRING = { type: \"spring\" as const, stiffness: 920, damping: 100 };\nconst ROOT_ID = \"toast-host\";\n\nconst getIn = (obj: unknown, path: string): any =>\n path.split(\".\").reduce((o: any, k) => (o == null ? o : o[k]), obj as any);\n\nconst first = (theme: any, paths: string[]): any => {\n for (const p of paths) {\n const v = getIn(theme, p);\n if (v != null && v !== \"\") return v;\n }\n return undefined;\n};\n\nconst px = (v: unknown, fb: number): string =>\n v == null ? `${fb}px` : typeof v === \"number\" ? `${v}px` : String(v);\n\nfunction resolveToastTokens(theme: any): { radius: string; padX: string; padY: string; shadow: string } {\n const radius = first(theme, [\"radius.md\", \"shape.borderRadius\", \"radii.md\"]);\n const padX = first(theme, [\"spacing.lg\", \"space.4\", \"spacing.4\"]);\n const padY = first(theme, [\"spacing.md\", \"space.3\", \"spacing.3\"]);\n const shadow =\n first(theme, [\"shadows.lg\", \"elevation.lg\"]) ??\n \"0 8px 24px rgba(0,0,0,.03), 0 2px 8px rgba(0,0,0,.05)\";\n return { radius: px(radius, 16), padX: px(padX, 14), padY: px(padY, 12), shadow: String(shadow) };\n}\n\nlet hostEl: HTMLElement | null = null;\nfunction ensureHost(): void {\n if (typeof document === \"undefined\") return;\n if (!hostEl) {\n hostEl = document.getElementById(ROOT_ID);\n if (!hostEl) {\n hostEl = document.createElement(\"div\");\n hostEl.id = ROOT_ID;\n document.body.appendChild(hostEl);\n }\n }\n}\n\nconst cfg: Config = {\n max: 5,\n position: \"bottom-right\",\n gutter: 10,\n zIndex: 1000,\n duration: 5000,\n showDismiss: \"hover\",\n styles: {},\n renderer: undefined,\n bareRenderer: false,\n};\n\nconst store = {\n displayed: [] as ToastItem[],\n queue: [] as ToastItem[],\n entering: {} as Record<string, boolean>,\n exiting: {} as Record<string, boolean>,\n enterFrom: {} as Record<string, \"head\" | \"tail\">,\n timers: new Map<string, number>(),\n expiry: new Map<string, number>(),\n remaining: new Map<string, number>(),\n paused: new Set<string>(),\n listeners: new Set<() => void>(),\n snapshot: {\n displayed: [] as ToastItem[],\n entering: {} as Record<string, boolean>,\n exiting: {} as Record<string, boolean>,\n enterFrom: {} as Record<string, \"head\" | \"tail\">,\n },\n subscribe(fn: () => void): () => void {\n this.listeners.add(fn);\n return () => this.listeners.delete(fn);\n },\n notify(): void {\n this.listeners.forEach((fn) => fn());\n },\n sync(): void {\n this.snapshot = {\n displayed: [...this.displayed],\n entering: { ...this.entering },\n exiting: { ...this.exiting },\n enterFrom: { ...this.enterFrom },\n };\n },\n};\n\nconst syncAndNotify = (): void => {\n store.sync();\n store.notify();\n};\n\nconst uid = (): string =>\n typeof crypto !== \"undefined\" && (crypto as any).randomUUID\n ? (crypto as any).randomUUID()\n : Math.random().toString(36).slice(2);\n\nfunction armTimer(t: ToastItem, override?: number | null): void {\n if (override === null) return;\n const dur = override ?? t.duration;\n if (dur == null) return;\n if (store.timers.has(t.id)) return;\n const now = Date.now();\n const remaining = store.remaining.get(t.id);\n const timeoutMs = remaining != null ? Math.max(0, remaining) : dur;\n store.expiry.set(t.id, now + timeoutMs);\n const handle = window.setTimeout(() => toast.dismiss(t.id), timeoutMs);\n store.timers.set(t.id, handle);\n}\n\nfunction clearTimer(id: string): void {\n const handle = store.timers.get(id);\n if (handle) {\n clearTimeout(handle);\n store.timers.delete(id);\n }\n}\n\nfunction flushQueueIntoDisplayed(): void {\n while (store.displayed.length < cfg.max && store.queue.length) {\n const t = store.queue.shift()!;\n store.displayed = [t, ...store.displayed];\n store.enterFrom[t.id] = \"head\";\n store.entering[t.id] = true;\n syncAndNotify();\n requestAnimationFrame(() => {\n delete store.entering[t.id];\n syncAndNotify();\n });\n armTimer(t);\n }\n}\n\nfunction pushOutOldestIntoQueue(): void {\n if (store.displayed.length < cfg.max) return;\n const candidates = store.displayed.filter((d) => !store.exiting[d.id]);\n if (!candidates.length) return;\n const oldest = candidates.reduce((a, b) => (a.createdAt <= b.createdAt ? a : b));\n const exp = store.expiry.get(oldest.id);\n if (exp != null) store.remaining.set(oldest.id, Math.max(0, exp - Date.now()));\n clearTimer(oldest.id);\n store.exiting[oldest.id] = true;\n store.displayed = store.displayed.filter((x) => x.id !== oldest.id);\n delete store.enterFrom[oldest.id];\n store.queue.push(oldest);\n syncAndNotify();\n}\n\nconst normalizeStatus = (s: any): CoreStatus => {\n if (s === \"danger\") return \"error\";\n const allowed = [\"default\", \"success\", \"error\", \"warning\", \"info\"] as const;\n return (allowed as readonly string[]).includes(s) ? (s as CoreStatus) : \"default\";\n};\n\nfunction statusColors(theme: any, s: Status): { bg: string; fg: string; border?: string } {\n const st = normalizeStatus(s);\n const panelBg = theme.surface?.panelBg ?? \"#fff\";\n const panelFg = theme.text?.primary ?? \"#111\";\n const border = theme.surface?.border;\n if (st === \"default\" || st === \"info\") return { bg: panelBg, fg: panelFg, border };\n const on = theme.text?.onColors ?? {};\n const pick = (\n k: \"success\" | \"warning\" | \"error\",\n fallbackBg: string,\n fallbackFg: string\n ) => ({\n bg: theme.colors?.[k] ?? theme.palette?.[k]?.[700] ?? fallbackBg,\n fg: on?.[k] ?? fallbackFg,\n border: \"transparent\",\n });\n if (st === \"success\") return pick(\"success\", \"#22C55E\", \"#fff\");\n if (st === \"warning\") return pick(\"warning\", \"#F59E0B\", \"#fff\");\n if (st === \"error\") return pick(\"error\", \"#EF4444\", \"#fff\");\n return { bg: panelBg, fg: panelFg, border };\n}\n\nexport const toast: {\n (\n contentOrOptions: React.ReactNode | Options,\n opts?: Options\n ): string;\n success: (msg: React.ReactNode, o?: Options) => string;\n error: (msg: React.ReactNode, o?: Options) => string;\n warning: (msg: React.ReactNode, o?: Options) => string;\n info: (msg: React.ReactNode, o?: Options) => string;\n custom: (node: React.ReactNode, o?: Options) => string;\n update: (id: string, o: Options) => string;\n dismiss: (id?: string) => void;\n clear: () => void;\n pause: (id: string) => void;\n resume: (id: string) => void;\n pauseLatest: () => void;\n resumeLatest: () => void;\n promise: <T>(\n p: Promise<T>,\n msgs: {\n loading: React.ReactNode;\n success: (val: T) => React.ReactNode;\n error: (err: any) => React.ReactNode;\n },\n o?: Options\n ) => Promise<T>;\n config: (opts: Partial<{\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n }>) => void;\n} = Object.assign(\n (contentOrOptions: React.ReactNode | Options, opts?: Options): string => {\n ensureHost();\n let o: Options;\n if (isOptionsInput(contentOrOptions)) {\n o = contentOrOptions;\n } else {\n o = { content: contentOrOptions as React.ReactNode, ...(opts || {}) };\n }\n if (o.content == null && (o.title != null || o.description != null)) {\n o.content = (\n <div>\n {o.title && <strong style={{ display: \"block\", marginBottom: 2 }}>{o.title}</strong>}\n {o.description}\n </div>\n );\n }\n const id = o.id ?? uid();\n const updateIn = (arr: ToastItem[]): boolean => {\n const i = arr.findIndex((x) => x.id === id);\n if (i === -1) return false;\n const prev = arr[i];\n const next: ToastItem = {\n ...prev,\n status: (o.status ?? prev.status) as Status,\n content: o.content ?? prev.content,\n title: o.title ?? prev.title,\n description: o.description ?? prev.description,\n startIcon: o.startIcon ?? prev.startIcon,\n endIcon: o.endIcon ?? prev.endIcon,\n action: o.action ?? prev.action,\n onClose: o.onClose ?? prev.onClose,\n duration: o.duration === undefined ? prev.duration : o.duration,\n pauseOnHover: o.pauseOnHover ?? prev.pauseOnHover,\n showDismiss: o.showDismiss ?? prev.showDismiss,\n render: o.render ?? prev.render,\n bare: o.bare ?? prev.bare,\n onClick: o.onClick ?? prev.onClick,\n width: o.width ?? prev.width,\n };\n arr[i] = next;\n clearTimer(id);\n store.remaining.delete(id);\n if (!store.paused.has(id)) armTimer(next);\n syncAndNotify();\n return true;\n };\n if (updateIn(store.displayed) || updateIn(store.queue)) return id;\n const t: ToastItem = {\n id,\n status: (o.status ?? \"default\") as Status,\n content: o.content,\n title: o.title,\n description: o.description,\n startIcon: o.startIcon,\n endIcon: o.endIcon,\n action: o.action,\n duration: o.duration === undefined ? cfg.duration : o.duration,\n onClose: o.onClose,\n createdAt: Date.now(),\n pauseOnHover: o.pauseOnHover ?? true,\n showDismiss: o.showDismiss,\n render: o.render,\n bare: o.bare,\n onClick: o.onClick,\n width: o.width ?? 300,\n };\n if (store.displayed.length >= cfg.max) pushOutOldestIntoQueue();\n store.displayed = [...store.displayed, t];\n store.enterFrom[t.id] = \"tail\";\n store.entering[t.id] = true;\n syncAndNotify();\n requestAnimationFrame(() => {\n delete store.entering[t.id];\n syncAndNotify();\n });\n armTimer(t);\n return id;\n },\n {\n success: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"success\" }),\n error: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"error\" }),\n warning: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"warning\" }),\n info: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"info\" }),\n custom: (node: React.ReactNode, o: Options = {}): string => toast(node, { ...o }),\n update: (id: string, o: Options): string => toast({ id, ...o }),\n dismiss: (id?: string): void => {\n if (!id) {\n const first = store.displayed.find((d) => !store.exiting[d.id])?.id;\n if (first) toast.dismiss(first);\n return;\n }\n clearTimer(id);\n store.remaining.delete(id);\n store.paused.delete(id);\n store.exiting[id] = true;\n const item = store.displayed.find((x) => x.id === id);\n store.displayed = store.displayed.filter((x) => x.id !== id);\n delete store.enterFrom[id];\n syncAndNotify();\n window.setTimeout(() => item?.onClose?.(), 120);\n flushQueueIntoDisplayed();\n },\n clear: (): void => {\n const ids = [...store.displayed.map((t) => t.id)];\n ids.forEach((id) => toast.dismiss(id));\n },\n pause: (id: string): void => {\n if (store.paused.has(id)) return;\n const exp = store.expiry.get(id);\n if (exp != null) store.remaining.set(id, Math.max(0, exp - Date.now()));\n store.paused.add(id);\n clearTimer(id);\n },\n resume: (id: string): void => {\n if (!store.paused.has(id)) return;\n store.paused.delete(id);\n const t = store.displayed.find((x) => x.id === id) ?? store.queue.find((x) => x.id === id);\n const left = store.remaining.get(id);\n if (t) armTimer(t, left ?? undefined);\n store.remaining.delete(id);\n },\n pauseLatest: (): void => {\n const latest = store.displayed.length ? store.displayed[store.displayed.length - 1] : undefined;\n if (latest) toast.pause(latest.id);\n },\n resumeLatest: (): void => {\n const latest = store.displayed.length ? store.displayed[store.displayed.length - 1] : undefined;\n if (latest) toast.resume(latest.id);\n },\n promise: <T,>(\n p: Promise<T>,\n msgs: {\n loading: React.ReactNode;\n success: (val: T) => React.ReactNode;\n error: (err: any) => React.ReactNode;\n },\n o: Options = {}\n ): Promise<T> => {\n const id = toast(msgs.loading, { ...o, status: \"info\", duration: null });\n p.then((v) => {\n toast.update(id, {\n status: \"success\",\n content: msgs.success(v),\n duration: o.duration ?? 2500,\n });\n }).catch((err) => {\n toast.update(id, {\n status: \"error\",\n content: msgs.error(err),\n duration: o.duration ?? 3000,\n });\n });\n return p;\n },\n config: (opts: Partial<{\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n }>): void => {\n if (opts.max != null) cfg.max = opts.max;\n if (opts.position) cfg.position = opts.position;\n if (opts.gutter != null) cfg.gutter = opts.gutter;\n if (opts.zIndex != null) cfg.zIndex = opts.zIndex;\n if (opts.duration !== undefined) cfg.duration = opts.duration;\n if (opts.showDismiss) cfg.showDismiss = opts.showDismiss;\n if (opts.styles) cfg.styles = { ...cfg.styles, ...opts.styles };\n if (opts.renderer !== undefined) cfg.renderer = opts.renderer;\n if (opts.bareRenderer !== undefined) cfg.bareRenderer = opts.bareRenderer;\n },\n }\n);\n\nfunction normalizeDismiss(show?: boolean | ShowDismissMode): ShowDismissMode {\n if (typeof show === \"string\") return show;\n if (show === true) return \"always\";\n if (show === false) return \"never\";\n return cfg.showDismiss;\n}\n\nfunction positionCss(pos: Position): CSSObject {\n const map: Record<Position, CSSObject> = {\n \"top-left\": { top: 16, left: 16, alignItems: \"flex-start\" },\n \"top-center\": { top: 16, left: \"50%\", transform: \"translateX(-50%)\", alignItems: \"center\" },\n \"top-right\": { top: 16, right: 16, alignItems: \"flex-end\" },\n \"bottom-left\": { bottom: 16, left: 16, alignItems: \"flex-start\" },\n \"bottom-center\": { bottom: 16, left: \"50%\", transform: \"translateX(-50%)\", alignItems: \"center\" },\n \"bottom-right\": { bottom: 16, right: 16, alignItems: \"flex-end\" },\n };\n return map[pos];\n}\n\nconst rowCss = css({ display: \"flex\", alignItems: \"flex-start\", gap: 10 });\nconst iconWrapCss = css({\n flex: \"0 0 auto\",\n paddingTop: 1,\n lineHeight: 0,\n marginLeft: -3,\n \"& svg, & img, & canvas, & video\": { display: \"block\" },\n});\nconst textCss = css({ fontSize: 14, lineHeight: 1.4, fontWeight: 500, flex: 1, minWidth: 0 });\nconst actionRowCss = css({ display: \"flex\", alignItems: \"center\", gap: 6, marginRight: -2 });\n\nfunction ToastHost(): JSX.Element {\n const snap = useSyncExternalStore(store.subscribe.bind(store), () => store.snapshot, () => store.snapshot);\n const theme = usePlainframeUITheme();\n const TOK = resolveToastTokens(theme);\n const isBottom = cfg.position.startsWith(\"bottom\");\n const list = isBottom ? snap.displayed : [...snap.displayed].reverse();\n const stackStyle: CSSObject = {\n position: \"fixed\",\n zIndex: cfg.zIndex,\n pointerEvents: \"none\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n ...positionCss(cfg.position),\n ...(cfg.styles.stack ?? {}),\n };\n return (\n <div className=\"plainframe-ui-toast-stack\" css={css(stackStyle)}>\n <AnimatePresence initial={false}>\n {list.map((t, index) => {\n const from = snap.enterFrom[t.id] || \"tail\";\n const enterY = isBottom ? (from === \"head\" ? -16 : 16) : from === \"head\" ? 16 : -16;\n const mt = index > 0 ? cfg.gutter : 0;\n const ctx: ToastRendererCtx = {\n toast: t,\n close: toast.dismiss,\n pause: toast.pause,\n resume: toast.resume,\n };\n const { bg, fg, border } = statusColors(theme, t.status);\n const baseSurface: CSSObject = {\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: TOK.radius,\n boxShadow: TOK.shadow,\n padding: `${TOK.padY} calc(${TOK.padX} + 30px) ${TOK.padY} ${TOK.padX}`,\n display: \"grid\",\n gridTemplateColumns: \"1fr auto\",\n gap: 10,\n background: bg,\n color: fg,\n cursor: t.onClick ? \"pointer\" : \"default\",\n border: border ? `1px solid ${border}` : \"1px solid transparent\",\n };\n const extraSurface =\n typeof cfg.styles.surface === \"function\" ? cfg.styles.surface(t) : cfg.styles.surface ?? {};\n const dismissMode = normalizeDismiss(t.showDismiss);\n const modeStyles: CSSObject = {};\n const closeSel = \"& .plainframe-ui-toast-close\";\n const hoverSel = \"&:hover .plainframe-ui-toast-close\";\n if (dismissMode === \"hover\") {\n (modeStyles as any)[closeSel] = { opacity: 0, pointerEvents: \"none\" };\n (modeStyles as any)[hoverSel] = { opacity: 1, pointerEvents: \"auto\" };\n } else if (dismissMode === \"always\") {\n (modeStyles as any)[closeSel] = { opacity: 1, pointerEvents: \"auto\" };\n } else if (dismissMode === \"never\") {\n (modeStyles as any)[closeSel] = { display: \"none\" };\n }\n const wrapCss = css({ ...baseSurface, ...extraSurface, ...modeStyles });\n const closeCss = css({\n position: \"absolute\",\n top: 8,\n right: 8,\n appearance: \"none\",\n border: 0,\n background: \"transparent\",\n color: fg,\n width: 28,\n height: 28,\n borderRadius: 8,\n cursor: \"pointer\",\n lineHeight: 1,\n transition: \"opacity .12s ease\",\n display: \"grid\",\n placeItems: \"center\",\n ...(cfg.styles.close ?? {}),\n });\n let content: React.ReactNode;\n if (t.bare && t.render) {\n const inner = typeof t.render === \"function\" ? (t.render as ToastRenderer)(ctx) : t.render;\n content = (\n <div style={{ pointerEvents: \"auto\" }} onClick={(e) => t.onClick?.(t.id, e)}>\n {inner}\n </div>\n );\n } else if (cfg.bareRenderer && cfg.renderer) {\n const inner =\n typeof cfg.renderer === \"function\"\n ? (cfg.renderer as ToastRenderer)(ctx)\n : cfg.renderer;\n content = (\n <div style={{ pointerEvents: \"auto\" }} onClick={(e) => t.onClick?.(t.id, e)}>\n {inner}\n </div>\n );\n } else {\n let innerBlock: React.ReactNode;\n if (cfg.renderer) {\n innerBlock =\n typeof cfg.renderer === \"function\"\n ? (cfg.renderer as ToastRenderer)(ctx)\n : cfg.renderer;\n } else if (t.render && !t.bare) {\n innerBlock = typeof t.render === \"function\" ? (t.render as ToastRenderer)(ctx) : t.render;\n } else {\n innerBlock = (\n <>\n <div css={rowCss}>\n {t.startIcon && <div css={iconWrapCss}>{t.startIcon}</div>}\n <div css={textCss}>{t.content}</div>\n {t.endIcon && <div css={iconWrapCss}>{t.endIcon}</div>}\n </div>\n {t.action && <div css={actionRowCss}>{t.action}</div>}\n </>\n );\n }\n content = (\n <div css={wrapCss} onClick={(e) => t.onClick?.(t.id, e)}>\n {innerBlock}\n <button\n className=\"plainframe-ui-toast-close\"\n aria-label=\"Close\"\n css={closeCss}\n onClick={(e) => {\n e.stopPropagation();\n toast.dismiss(t.id);\n }}\n >\n <X strokeWidth={2.5} size={14} />\n </button>\n </div>\n );\n }\n return (\n <SwipeItem\n key={t.id}\n id={t.id}\n isBottom={isBottom}\n mt={mt}\n enterY={enterY}\n width={t.width}\n pauseOnHover={t.pauseOnHover !== false}\n >\n {content}\n </SwipeItem>\n );\n })}\n </AnimatePresence>\n </div>\n );\n}\n\nfunction SwipeItem(\n props: React.PropsWithChildren<{\n id: string;\n isBottom: boolean;\n mt: number;\n enterY: number;\n width?: number | string;\n pauseOnHover: boolean;\n }>\n): JSX.Element {\n const { id, isBottom, mt, enterY, width, pauseOnHover, children } = props;\n const controls = useAnimationControls();\n useEffect(() => {\n controls.start({ opacity: 1, y: 0, height: \"auto\", x: 0, transition: ENTER_SPRING });\n }, [controls]);\n const itemStyle: CSSObject = {\n pointerEvents: \"auto\",\n willChange: \"transform, opacity, height, margin, scale, width, max-width\",\n marginTop: mt,\n width: \"100%\",\n maxWidth: width != null ? (typeof width === \"number\" ? `${width}px` : width) : \"none\",\n ...(cfg.styles.item ?? {}),\n };\n return (\n <motion.div\n layout\n className=\"plainframe-ui-toast-item\"\n css={css(itemStyle)}\n initial={{ opacity: 0, y: enterY, height: \"auto\", x: 0 }}\n animate={controls}\n exit={{\n opacity: 0,\n y: isBottom ? 6 : -6,\n height: 0,\n marginTop: 0,\n transition: { type: \"tween\", ease: \"easeInOut\", duration: 0.14 },\n }}\n drag=\"x\"\n dragElastic={0.2}\n dragMomentum\n whileDrag={{ scale: 0.98, opacity: 0.95 }}\n onDragEnd={(_, info) => {\n const dist = Math.abs(info.offset.x);\n const velo = Math.abs(info.velocity.x);\n const shouldFling = dist > 60 || velo > 600;\n if (!shouldFling) {\n controls.start({ x: 0, opacity: 1, transition: { type: \"spring\", stiffness: 700, damping: 40 } });\n return;\n }\n const dir = info.offset.x !== 0 ? Math.sign(info.offset.x) : Math.sign(info.velocity.x || 1);\n const targetX = dir * (window.innerWidth + 160);\n controls\n .start({\n x: targetX,\n opacity: 0.9,\n transition: { type: \"spring\", stiffness: 280, damping: 24, velocity: (info.velocity.x as number) / 10 },\n })\n .then(() => toast.dismiss(id));\n }}\n onMouseEnter={pauseOnHover ? () => toast.pause(id) : undefined}\n onMouseLeave={pauseOnHover ? () => toast.resume(id) : undefined}\n >\n {children}\n </motion.div>\n );\n}\n\nexport function ToastViewport(): JSX.Element | null {\n ensureHost();\n return hostEl ? createPortal(<ToastHost />, hostEl) : null;\n}\n","/** @jsxImportSource @emotion/react */\nimport React, {\n createContext,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport {\n useFloating,\n offset,\n flip,\n shift,\n arrow as arrowMw,\n autoUpdate,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n safePolygon,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\nconst mergeRefs =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T) => {\n for (const r of refs) {\n if (!r) continue;\n if (typeof r === \"function\") r(node);\n else try {\n (r as any).current = node;\n } catch {}\n }\n };\n\ntype Ctx = {\n open: boolean;\n setOpen: (o: boolean) => void;\n id: string;\n placement: Placement;\n autoWidth: boolean;\n allowArrow: boolean;\n refs: ReturnType<typeof useFloating>[\"refs\"];\n floatingStyles: ReturnType<typeof useFloating>[\"floatingStyles\"];\n middlewareData: ReturnType<typeof useFloating>[\"middlewareData\"];\n getReferenceProps: ReturnType<typeof useInteractions>[\"getReferenceProps\"];\n getFloatingProps: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n arrowRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\nconst TooltipCtx = createContext<Ctx | null>(null);\nconst useTooltipCtx = () => {\n const v = useContext(TooltipCtx);\n if (!v) throw new Error(\"TooltipTrigger/TooltipContent must be inside <Tooltip>.\");\n return v;\n};\n\nexport type TooltipProps = {\n children: React.ReactNode;\n placement?: Placement;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (o: boolean) => void;\n delay?: number;\n arrow?: boolean;\n autoWidth?: boolean;\n disableHoverListener?: boolean;\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n placement = \"top\",\n open: controlled,\n defaultOpen = false,\n onOpenChange,\n delay = 80,\n arrow = true,\n autoWidth = false,\n disableHoverListener = false,\n}) => {\n const [uc, setUc] = useState(!!defaultOpen);\n const open = controlled ?? uc;\n const setOpen = (o: boolean) => {\n if (controlled === undefined) setUc(o);\n onOpenChange?.(o);\n };\n\n const arrowRef = useRef<HTMLDivElement | null>(null);\n\n const floating = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n strategy: \"fixed\",\n transform: false,\n middleware: [\n offset(8),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n arrow ? arrowMw({ element: arrowRef, padding: 4 }) : undefined,\n ].filter(Boolean) as any,\n });\n\n const hover = useHover(floating.context, {\n enabled: !disableHoverListener,\n delay: { open: delay, close: 60 },\n handleClose: safePolygon(),\n restMs: 20,\n });\n const focus = useFocus(floating.context);\n const dismiss = useDismiss(floating.context, { escapeKey: true, outsidePress: true });\n const role = useRole(floating.context, { role: \"tooltip\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role,\n ]);\n\n const id = useId();\n\n const ctx = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n id,\n placement: floating.placement,\n autoWidth,\n allowArrow: !!arrow,\n refs: floating.refs,\n floatingStyles: floating.floatingStyles,\n middlewareData: floating.middlewareData,\n getReferenceProps,\n getFloatingProps,\n arrowRef,\n }),\n [\n open,\n autoWidth,\n arrow,\n floating.placement,\n floating.refs,\n floating.floatingStyles,\n floating.middlewareData,\n getReferenceProps,\n getFloatingProps,\n ]\n );\n\n return <TooltipCtx.Provider value={ctx}>{children}</TooltipCtx.Provider>;\n};\n\nexport type TooltipTriggerProps = {\n asChild?: boolean;\n children: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nexport const TooltipTrigger: React.FC<TooltipTriggerProps> = ({\n asChild = true,\n children,\n className,\n css: userCss,\n}) => {\n const { refs, getReferenceProps, id } = useTooltipCtx();\n const isElement = React.isValidElement(children);\n const isDomChild = isElement && typeof (children as any).type === \"string\";\n\n if (asChild && isElement && isDomChild) {\n const child: any = children;\n const merged = getReferenceProps({\n ...child.props,\n \"aria-describedby\": id,\n ref: mergeRefs(child.ref, refs.setReference),\n className: [child.props?.className || \"\", className || \"\"].join(\" \").trim() || undefined,\n });\n const mergedCss = [\n (child.props?.css as CSSObject) || undefined,\n userCss,\n ].filter(Boolean);\n return React.cloneElement(child, { ...merged, css: mergedCss });\n }\n\n return (\n <span\n ref={refs.setReference}\n className={className}\n css={userCss}\n style={{ display: \"inline-flex\" }}\n {...getReferenceProps({ \"aria-describedby\": id })}\n >\n {children}\n </span>\n );\n};\n\nexport type TooltipContentProps = {\n children: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n arrowCss?: Interpolation<Theme>;\n};\n\nexport const TooltipContent: React.FC<TooltipContentProps> = ({\n children,\n className,\n css: userCss,\n arrowCss,\n}) => {\n const {\n open,\n refs,\n floatingStyles,\n middlewareData,\n getFloatingProps,\n placement,\n id,\n autoWidth,\n allowArrow,\n arrowRef,\n } = useTooltipCtx();\n\n const theme = usePlainframeUITheme();\n\n const side = (placement.split(\"-\")[0] || \"top\") as \"top\" | \"bottom\" | \"left\" | \"right\";\n const delta = 8;\n const initial =\n side === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.98 }\n : side === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.98 }\n : side === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.98 }\n : { opacity: 0, x: -delta, scale: 0.98 };\n\n const exit = initial;\n const transformOrigin =\n side === \"bottom\"\n ? \"center top\"\n : side === \"top\"\n ? \"center bottom\"\n : side === \"left\"\n ? \"right center\"\n : \"left center\";\n\n const tooltipBase = css({\n zIndex: 1300,\n backgroundColor: theme.neutral[900],\n color: theme.neutral[0],\n borderRadius: 8,\n padding: \"6px 9px\",\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 1.25,\n maxWidth: 260,\n whiteSpace: autoWidth ? \"nowrap\" : \"normal\",\n boxShadow: \"0 10px 30px rgba(0,0,0,.18)\",\n pointerEvents: \"auto\",\n transformOrigin,\n });\n\n const arrowBase = css({\n position: \"absolute\",\n width: 10,\n height: 10,\n borderRadius: 2,\n backgroundColor: theme.neutral[900],\n transform: \"rotate(45deg)\",\n pointerEvents: \"none\",\n });\n\n const arrowData = middlewareData.arrow as { x?: number; y?: number } | undefined;\n const staticSide =\n ({ top: \"bottom\", bottom: \"top\", left: \"right\", right: \"left\" } as const)[side];\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n {open && (\n <motion.div\n id={id}\n ref={refs.setFloating}\n role=\"tooltip\"\n data-state=\"open\"\n className={[\"plainframe-ui-tooltip\", className || \"\"].join(\" \").trim()}\n css={[tooltipBase, userCss]}\n style={floatingStyles}\n initial={initial}\n animate={{ opacity: 1, x: 0, y: 0, scale: 1 }}\n exit={exit}\n transition={{\n scale: { type: \"spring\", stiffness: 520, damping: 36, mass: 0.6 },\n x: { type: \"spring\", stiffness: 420, damping: 32, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 32, mass: 0.6 },\n opacity: { duration: 0.14, ease: \"linear\" },\n }}\n {...getFloatingProps()}\n >\n {children}\n {allowArrow && (\n <div\n ref={arrowRef}\n className=\"plainframe-ui-tooltip-arrow\"\n css={[arrowBase, arrowCss]}\n style={{\n left: arrowData?.x != null ? `${arrowData.x}px` : undefined,\n top: arrowData?.y != null ? `${arrowData.y}px` : undefined,\n [staticSide]: \"-3px\",\n } as React.CSSProperties}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </FloatingPortal>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport { Global, css } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"./ThemeProvider\";\n\nexport function CssBaseline() {\n const t = usePlainframeUITheme();\n return (\n <Global\n styles={css`\n *,*::before,*::after{box-sizing:border-box}\n :where(html){-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}\n html,body,#root{height:100%}\n body{\n margin:0;\n padding:0;\n font-family:${t.fonts.sans};\n line-height:1.3;\n -webkit-font-smoothing:antialiased;\n -moz-osx-font-smoothing:grayscale;\n text-rendering:optimizeLegibility;\n background:${t.surface.appBg};\n color:${t.text.primary};\n }\n :focus-visible{outline:2px solid var(--pf-focus-main);outline-offset:2px}\n ::selection{background:var(--pf-neutral-300);color:var(--pf-neutral-900)}\n a{color:inherit;text-decoration:none}\n a:hover{text-decoration:underline}\n button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit;background:none;border:0}\n input,select,textarea{border-radius:0}\n img,svg,video,canvas,iframe{display:block;max-width:100%}\n table{border-collapse:collapse;border-spacing:0}\n ul,ol{margin:0;padding:0;list-style:none}\n h1,h2,h3,h4,h5,h6,p,figure{margin:0}\n code,kbd,pre,samp{font-family:${t.fonts.mono}}\n hr{border:0;border-top:1px solid ${t.surface.border};margin:0}\n\n html,body{scrollbar-width:none}\n html:hover,body:hover{scrollbar-width:thin;scrollbar-color:var(--pf-neutral-400) transparent}\n\n html::-webkit-scrollbar{width:0;height:0}\n html:hover::-webkit-scrollbar{width:12px;height:12px}\n html::-webkit-scrollbar-track{background:transparent}\n html::-webkit-scrollbar-thumb{\n background:transparent;\n border:3px solid transparent;\n background-clip:content-box;\n border-radius:9999px\n }\n html:hover::-webkit-scrollbar-thumb{background:var(--pf-neutral-300)}\n html:hover::-webkit-scrollbar-thumb:hover{background:var(--pf-neutral-400)}\n\n @media (prefers-reduced-motion:reduce){\n *{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}\n }\n `}\n />\n );\n}\n\nexport const BaseStyles = CssBaseline;\n"],"mappings":"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","names":["React","useRef","css","normalize","spacing","radius","fonts","offset","jsx","radius","useRef","React","rootCss","css","css","jsx","jsxs","css","css","jsx","css","React","cloneElement","isValidElement","css","jsx","isValidElement","toLen","React","radius","rootCss","css","cloneElement","useEffect","useRef","css","jsx","toLen","radius","offset","useRef","useEffect","css","useContext","forwardRef","useMemo","css","jsx","jsxs","useContext","forwardRef","Alert","useMemo","rootCss","css","iconWrapCss","AlertTitle","AlertDescription","useMemo","useState","useEffect","useRef","css","useRef","useState","isValidElement","cloneElement","useId","useMemo","useCallback","forwardRef","css","X","jsx","jsxs","css","px","isValidElement","cloneElement","forwardRef","TextField","useId","useMemo","useState","useCallback","rootCss","labelCss","useRef","X","React","useMemo","useState","useRef","useEffect","useContext","createContext","cloneElement","useCallback","isValidElement","emCss","React","forwardRef","createContext","useContext","useState","isValidElement","cloneElement","useRef","useLayoutEffect","useEffect","ChevronDown","jsx","jsxs","React","forwardRef","Menu","createContext","useContext","useState","ChevronDown","cloneElement","isValidElement","useRef","useLayoutEffect","useEffect","jsx","createContext","useContext","React","useState","useCallback","useRef","useEffect","useMemo","isValidElement","emCss","cloneElement","x","y","kids","positionCss","React","useContext","useMemo","useState","forwardRef","emCss","useEffect","useState","forwardRef","css","jsx","jsxs","forwardRef","Switch","motion","useState","useEffect","css","useCallback","useMemo","useState","forwardRef","css","jsx","jsxs","forwardRef","useState","useMemo","rootCss","css","useCallback","jsx","jsxs","useMenu","useContext","useRootBus","React","MenuItem","emCss","cur","next","useState","useMemo","forwardRef","MenuCheckboxItem","labelCss","MenuSwitchItem","MenuRadioItem","textCss","MenuLabel","React","css","useMemo","useState","useCallback","forwardRef","css","jsx","toLen","resolvePadding","resolveRadius","radius","forwardRef","Container","useState","useMemo","rad","rootCss","css","useCallback","jsx","toLen","spacing","px","React","radius","css","jsx","jsxs","toLen","useState","useRef","useEffect","useMemo","label","first","css","content","useState","useEffect","forwardRef","css","jsx","getSize","forwardRef","useState","useEffect","px","radius","css","textCss","Children","isValidElement","cloneElement","css","jsx","jsxs","toLen","Children","css","isValidElement","cloneElement","css","jsx","jsxs","toLen","css","baseScale","useEffect","useRef","useState","useMemo","emCss","jsx","jsxs","useMemo","useState","useRef","useEffect","emCss","React","css","Fragment","jsx","jsxs","React","rootCss","css","labelCss","React","useMemo","isValidElement","cloneElement","css","css","Fragment","jsx","jsxs","trackCss","radius","rootCss","css","jsx","jsxs","cloneIcon","isValidElement","cloneElement","React","getSize","useMemo","css","labelCss","React","Children","cloneElement","isValidElement","css","jsx","isEl","isValidElement","toLen","toPx","first","Children","React","ButtonGroup","rootCss","css","cloneElement","Children","cloneElement","isValidElement","jsx","isEl","isValidElement","nameOf","toLen","rootCss","Children","cloneElement","React","useMemo","useCallback","forwardRef","css","X","jsx","jsxs","u","hasText","React","getSize","forwardRef","Chip","useMemo","useCallback","css","rootCss","React","useMemo","useRef","useCallback","useId","useState","css","jsx","jsxs","u","React","useRef","useState","useMemo","css","useCallback","useId","rootCss","labelCss","rowCss","React","jsx","React","radius","spacing","React","css","jsx","jsxs","children","useMemo","forwardRef","css","jsx","jsxs","toLen","forwardRef","Divider","labelCss","useMemo","css","useEffect","useMemo","useRef","useState","useCallback","forwardRef","css","motion","AnimatePresence","Fragment","jsx","jsxs","__prevOverflow","toNum","forwardRef","Drawer","radius","useState","useCallback","useEffect","useMemo","useRef","css","AnimatePresence","motion","isValidElement","cloneElement","css","jsx","forwardRef","emCss","jsx","toLen","forwardRef","Flex","emCss","isValidElement","cloneElement","css","jsx","useState","forwardRef","css","css","jsx","toLen","css","jsx","jsxs","toLen","resolveRadius","radius","forwardRef","Image","useState","css","Children","isValidElement","css","jsx","jsxs","px","base","exp","toLen","resolveRadius","radius","ImageStack","Children","isValidElement","rootCss","css","forwardRef","css","jsx","toLen","resolveRadius","radius","forwardRef","Kbd","css","React","useState","useEffect","useMemo","useContext","forwardRef","useCallback","css","isValidElement","cloneElement","css","jsx","toLen","Fragment","jsx","toLen","setRef","mergeRefs","React","useContext","useState","useCallback","useEffect","useMemo","forwardRef","radius","css","useMemo","useState","useCallback","css","jsx","jsxs","sizeTokens","useState","clamp","useCallback","useMemo","css","React","useState","useRef","useMemo","useEffect","forwardRef","createContext","useContext","css","useFloating","autoUpdate","offsetMw","flip","shift","useDismiss","useRole","useInteractions","FloatingPortal","AnimatePresence","motion","jsx","createContext","useContext","setRef","mergeRefs","useEffect","useState","useRef","useMemo","forwardRef","React","css","side","align","radius","useFloating","autoUpdate","offsetMw","flip","shift","useDismiss","useRole","useInteractions","motion","FloatingPortal","AnimatePresence","css","jsx","toCssSize","css","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","css","jsx","jsxs","RadioCtx","createContext","useContext","useState","useRef","useCallback","useMemo","rootCss","css","rowCss","useEffect","labelCss","isValidElement","cloneElement","css","jsx","React","emCss","Fragment","jsx","jsxs","isEl","React","nameOf","anyCheckbox","labelCss","emCss","css","keyframes","jsx","jsxs","px","keyframes","radius","css","useEffect","useMemo","useRef","useState","useCallback","css","AnimatePresence","motion","jsx","jsxs","trackCss","useRef","useState","clamp","useCallback","useEffect","useMemo","rootCss","css","labelCss","React","css","Fragment","jsx","jsxs","css","React","StepItem","React","css","Fragment","jsx","jsxs","unwrapEmotion","React","rootCss","css","useLayoutEffect","useRef","useState","useId","useMemo","useCallback","css","jsx","jsxs","u","mergeCss","css","useId","useMemo","useState","useCallback","rootCss","labelCss","useRef","useLayoutEffect","React","useEffect","css","AnimatePresence","motion","X","Fragment","jsx","jsxs","React","px","radius","first","css","AnimatePresence","useEffect","motion","React","createContext","useContext","useId","useMemo","useRef","useState","css","useFloating","flip","shift","autoUpdate","useDismiss","useRole","useInteractions","FloatingPortal","AnimatePresence","motion","jsx","jsxs","mergeRefs","createContext","useContext","useState","useRef","useFloating","autoUpdate","flip","shift","useDismiss","useRole","useInteractions","useId","useMemo","React","css","FloatingPortal","AnimatePresence","motion","css","jsx","css"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Accordion.tsx","../src/theme/ThemeProvider.tsx","../src/theme/theme.ts","../src/utils/focusRing.ts","../src/components/AccordionSummary.tsx","../src/components/AccordionDetails.tsx","../src/components/AccordionGroup.tsx","../src/components/ActionBar.tsx","../src/components/Alert.tsx","../src/components/Autocomplete.tsx","../src/components/TextField.tsx","../src/components/DropdownMenu.tsx","../src/components/Menu.tsx","../src/components/MenuItems.tsx","../src/components/Switch.tsx","../src/components/Checkbox.tsx","../src/components/Card.tsx","../src/components/Container.tsx","../src/components/Avatar.tsx","../src/components/AvatarGroup.tsx","../src/components/Badge.tsx","../src/components/Backdrop.tsx","../src/components/Breadcrumbs.tsx","../src/components/Button.tsx","../src/components/Progress.tsx","../src/components/ButtonGroup.tsx","../src/components/CardGroup.tsx","../src/components/Chip.tsx","../src/components/CodeField.tsx","../src/components/ColorPatch.tsx","../src/components/ContextZone.tsx","../src/components/Divider.tsx","../src/components/Drawer.tsx","../src/components/Fade.tsx","../src/components/Flex.tsx","../src/components/Grow.tsx","../src/components/Image.tsx","../src/components/Typography.tsx","../src/components/ImageStack.tsx","../src/components/Kbd.tsx","../src/components/Modal.tsx","../src/components/Slide.tsx","../src/components/Pagination.tsx","../src/components/Popover.tsx","../src/components/Quote.tsx","../src/components/RadioGroup.tsx","../src/components/Rotate.tsx","../src/components/Select.tsx","../src/components/Skeleton.tsx","../src/components/Slider.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/TextArea.tsx","../src/components/Toast.tsx","../src/components/Tooltip.tsx","../src/theme/CssBaseline.tsx"],"sourcesContent":["/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useLayoutEffect,\n useEffect,\n useRef,\n cloneElement,\n isValidElement,\n useId,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype AccordionVariant = \"subtle\" | \"outlined\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionProps = WithCss & {\n expanded?: boolean;\n defaultExpanded?: boolean;\n onChange?: (expanded: boolean) => void;\n className?: string;\n variant?: AccordionVariant;\n disabled?: boolean;\n width?: number | string;\n children: React.ReactNode;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst getSlot = (el: React.ReactElement): string => {\n const t = el.type as { __PFUI_SLOT?: string; displayName?: string; name?: string } | undefined;\n return t?.__PFUI_SLOT || t?.displayName || t?.name || \"\";\n};\n\nexport const Accordion: React.FC<AccordionProps> = ({\n expanded: controlledExpanded,\n defaultExpanded = false,\n onChange,\n className,\n variant = \"subtle\",\n disabled = false,\n width,\n css: userCss,\n children,\n}) => {\n const theme = usePlainframeUITheme();\n const detailsId = useId();\n\n const radius = theme.radius?.md;\n const T = theme.text;\n const borderW = theme.componentHeights?.border ?? 1;\n const borderWStr = toLen(borderW) ?? \"1px\";\n\n const isControlled = controlledExpanded !== undefined;\n const [uncontrolled, setUncontrolled] = useState(!!defaultExpanded);\n const expanded = isControlled ? !!controlledExpanded : uncontrolled;\n\n const focusRing = useFocusRing();\n\n const [maxH, setMaxH] = useState(0);\n const [ready, setReady] = useState(false);\n\n const measureRef = useRef<HTMLDivElement>(null);\n\n const toggle = () => {\n if (disabled) return;\n if (isControlled) {\n onChange?.(!controlledExpanded);\n } else {\n setUncontrolled(prev => {\n const next = !prev;\n onChange?.(next);\n return next;\n });\n }\n };\n\n const arr = React.Children.toArray(children).filter(\n (c): c is React.ReactElement => isValidElement(c)\n );\n\n let summaryIdx = arr.findIndex(el => getSlot(el) === \"AccordionSummary\");\n let detailsIdx = arr.findIndex(el => getSlot(el) === \"AccordionDetails\");\n\n if (summaryIdx === -1 && arr.length) summaryIdx = 0;\n if (detailsIdx === -1) {\n detailsIdx = arr.findIndex((_, i) => i !== summaryIdx);\n if (detailsIdx === -1 && arr.length >= 2) detailsIdx = 1;\n }\n\n const summaryEl = arr[summaryIdx] ?? null;\n const detailsEl = arr[detailsIdx] ?? null;\n\n const bg =\n variant === \"subtle\"\n ? theme.surface.subtleBg\n : variant === \"outlined\"\n ? (theme.surface.panelBg as string)\n : \"transparent\";\n\n const rootCss = css({\n backgroundColor: bg,\n color: T.primary,\n borderRadius: radius,\n outline:\n variant === \"outlined\"\n ? `${borderWStr} solid ${theme.surface.border}`\n : `${borderWStr} solid transparent`,\n outlineOffset: `-${borderWStr}`,\n marginBottom: theme.spacing.sm,\n maxWidth: width != null ? toLen(width) : undefined,\n overflow: \"hidden\",\n boxSizing: \"border-box\",\n cursor: disabled ? \"not-allowed\" : \"default\",\n opacity: disabled ? 0.55 : 1,\n });\n\n useLayoutEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n setMaxH(el.scrollHeight);\n }, [expanded, children]);\n\n useEffect(() => {\n const el = measureRef.current;\n if (!el) return;\n const ro = new ResizeObserver(() => setMaxH(el.scrollHeight));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n useEffect(() => {\n if (maxH > 0 && !ready) setReady(true);\n }, [maxH, ready]);\n\n const clipCss = css({\n maxHeight: expanded ? (maxH ? maxH : \"none\") : 0,\n overflow: expanded && !ready ? \"visible\" : \"hidden\",\n transition: ready ? \"max-height 0.36s cubic-bezier(.25,.8,.4,1)\" : \"none\",\n willChange: ready ? \"max-height\" : undefined,\n });\n\n const innerCss = css({\n opacity: expanded ? 1 : 0,\n transform: expanded ? \"translateY(0)\" : \"translateY(1rem)\",\n transition: ready ? \"transform 0.28s ease, opacity 0.28s ease\" : \"none\",\n pointerEvents: expanded ? \"auto\" : \"none\",\n });\n\n const summary =\n summaryEl &&\n cloneElement(\n summaryEl,\n {\n ...(typeof summaryEl.props === \"object\" && summaryEl.props ? summaryEl.props : {}),\n expanded,\n disabled,\n onClick: toggle,\n role: \"presentation\",\n tabIndex: -1,\n } as Partial<typeof summaryEl.props> & Record<string, unknown>\n );\n\n const details =\n detailsEl &&\n cloneElement(\n detailsEl,\n typeof detailsEl.props === \"object\" && detailsEl.props ? { ...detailsEl.props } : {}\n );\n\n return (\n <div\n className={[\n \"plainframe-ui-accordion\",\n `plainframe-ui-accordion-${variant}`,\n className || \"\",\n ]\n .join(\" \")\n .trim()}\n data-variant={variant}\n data-expanded={expanded ? \"true\" : \"false\"}\n css={[focusRing(), rootCss, userCss]}\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-expanded={expanded}\n aria-controls={detailsId}\n aria-disabled={disabled || undefined}\n onKeyDown={e => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n }}\n >\n <div tabIndex={-1} className=\"plainframe-ui-accordion-summary-wrapper\">\n {summary}\n </div>\n\n <div\n id={detailsId}\n aria-hidden={!expanded}\n className=\"plainframe-ui-accordion-details-clip\"\n css={clipCss}\n tabIndex={-1}\n >\n <div\n ref={measureRef}\n className=\"plainframe-ui-accordion-details-inner\"\n css={innerCss}\n >\n {details}\n </div>\n </div>\n </div>\n );\n};\n\nAccordion.displayName = \"Accordion\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useCallback, useContext, useMemo, useRef } from \"react\";\nimport { ThemeProvider as EmotionThemeProvider, useTheme as useEmotionTheme } from \"@emotion/react\";\nimport {\n defaultDarkTheme,\n defaultLightTheme,\n surfaceFromNeutral,\n textLight,\n textDark,\n type Mode,\n type PlainframeUITheme,\n} from \"./theme\";\n\n/* ───────── types ───────── */\nexport type ThemeProp = Partial<PlainframeUITheme> & {\n primaryKey?: string;\n light?: Partial<PlainframeUITheme> & { primaryKey?: string };\n dark?: Partial<PlainframeUITheme> & { primaryKey?: string };\n};\nexport type ThemeProviderProps = {\n theme?: ThemeProp;\n initialMode?: Mode | \"system\";\n storageKey?: string;\n scope?: string; // unique scope name for a nested provider\n children: React.ReactNode;\n};\n\n/* ───────── tiny store ───────── */\nfunction createStore<T>(initial: T) {\n let v: T = initial;\n const subs: Set<() => void> = new Set();\n return {\n get: (): T => v,\n set: (nv: T): void => {\n v = nv;\n subs.forEach((f) => f());\n },\n subscribe: (f: () => void): (() => void) => {\n subs.add(f);\n return () => subs.delete(f);\n },\n };\n}\n\n/* ───────── alias helpers ───────── */\nconst aliasOf: Record<string, string> = {\n red: \"danger\",\n error: \"danger\",\n green: \"success\",\n violet: \"purple\",\n fuchsia: \"magenta\",\n gray: \"mono\",\n grey: \"mono\",\n neutral: \"mono\",\n};\nconst resolveAlias = (k: string): string => aliasOf[k] ?? k;\nfunction mirrorOnColors(on: Record<string, string>): Record<string, string> {\n const out: Record<string, string> = { ...on };\n Object.entries(aliasOf).forEach(([alias, target]) => {\n if (out[target] != null && out[alias] == null) out[alias] = out[target];\n });\n return out;\n}\n\n/* ───────── ctx ───────── */\nconst ModeStoreContext = React.createContext<ReturnType<typeof createStore<Mode>> | null>(null);\nconst PrimaryStoreContext = React.createContext<ReturnType<typeof createStore<string>> | null>(null);\nconst ModeActionsContext = React.createContext<{ setMode: (m: Mode) => void; toggleMode: () => void }>({\n setMode: () => {},\n toggleMode: () => {},\n});\nconst PrimaryActionsContext = React.createContext<{ setPrimary: (k: string) => void }>({ setPrimary: () => {} });\ntype BaseResolvedCtxT = { light: PlainframeUITheme; dark: PlainframeUITheme } | null;\nconst BaseResolvedContext = React.createContext<BaseResolvedCtxT>(null);\n\n/* ───────── public hooks ───────── */\nexport function usePlainframeUITheme(): PlainframeUITheme {\n return useEmotionTheme() as unknown as PlainframeUITheme;\n}\nexport function useColorModeValue(): Mode {\n const s = React.useContext(ModeStoreContext);\n if (!s) throw new Error(\"useColorModeValue must be used within ThemeProvider\");\n return React.useSyncExternalStore(s.subscribe, s.get, s.get);\n}\nexport function useColorMode(): { setMode: (m: Mode) => void; toggleMode: () => void } {\n return useContext(ModeActionsContext);\n}\nexport function usePrimary(): { primary: string; setPrimary: (k: string) => void } {\n const s = React.useContext(PrimaryStoreContext);\n if (!s) throw new Error(\"usePrimary must be used within ThemeProvider\");\n const primary = React.useSyncExternalStore(s.subscribe, s.get, s.get);\n const setPrimary = useContext(PrimaryActionsContext).setPrimary;\n return { primary, setPrimary };\n}\nexport function usePrimitives<T = PlainframeUITheme>(selector?: (t: PlainframeUITheme) => T): T {\n const base = React.useContext(BaseResolvedContext);\n if (!base) throw new Error(\"usePrimitives must be used within ThemeProvider\");\n const mode = useColorModeValue();\n const { primary } = usePrimary();\n const raw = React.useMemo<PlainframeUITheme>(() => {\n const theme = mode === \"light\" ? base.light : base.dark;\n const chosen = (theme.palette as Record<string, Record<string, string>>)[resolveAlias(primary)] ?? theme.palette.primary;\n const onPrim =\n mirrorOnColors(theme.text.onColors)[resolveAlias(primary)] ?? onColorFor(chosen[\"600\"]);\n return {\n ...theme,\n palette: { ...theme.palette, primary: chosen },\n text: {\n ...theme.text,\n onColors: {\n ...mirrorOnColors(theme.text.onColors),\n primary: onPrim,\n [resolveAlias(primary)]: onPrim,\n [primary]: onPrim,\n },\n },\n } as PlainframeUITheme;\n }, [base, mode, primary]);\n return selector ? selector(raw) : (raw as unknown as T);\n}\n\n/* ───────── helpers ───────── */\nfunction mergeTheme(base: PlainframeUITheme, patch?: Partial<PlainframeUITheme>): PlainframeUITheme {\n if (!patch) return base;\n return {\n ...base,\n spacing: { ...base.spacing, ...(patch.spacing ?? {}) },\n radius: { ...base.radius, ...(patch.radius ?? {}) },\n fontSizes: { ...base.fontSizes, ...(patch.fontSizes ?? {}) },\n componentHeights: { ...base.componentHeights, ...(patch.componentHeights ?? {}) },\n fonts: { ...base.fonts, ...(patch.fonts ?? {}) },\n palette: { ...base.palette, ...(patch.palette ?? {}) },\n neutral: patch.neutral ?? base.neutral,\n surface: { ...base.surface, ...(patch.surface ?? {}) },\n text: {\n ...base.text,\n ...(patch.text ?? {}),\n onColors: { ...base.text.onColors, ...(patch.text?.onColors ?? {}) },\n },\n };\n}\nfunction onColorFor(hex: string): string {\n const m = hex.replace(\"#\", \"\");\n const r = parseInt(m.slice(0, 2), 16),\n g = parseInt(m.slice(2, 4), 16),\n b = parseInt(m.slice(4, 6), 16);\n const f = (x: number): number => {\n const s = x / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n };\n const L = 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n return L > 0.53 ? \"#000\" : \"#FFF\";\n}\nconst toCss = (v: string | number): string => (typeof v === \"number\" ? `${v}px` : String(v));\nfunction ensureTag(ref: React.MutableRefObject<HTMLStyleElement | null>, id: string): void {\n if (ref.current) return;\n const el = document.createElement(\"style\");\n el.id = id;\n document.head.appendChild(el);\n ref.current = el;\n}\nfunction selectorFor(scope?: string): string {\n return scope ? `[data-pfui-scope=\"${scope}\"]` : \":root\";\n}\n\nfunction buildVarPairs(theme: PlainframeUITheme, primaryKey: string, mode: Mode): string[] {\n const out: string[] = [];\n const normalize = (v: string): string =>\n v.startsWith(\"var(\") ? v.replace(/^var\\([^,]+,\\s*/, \"\").replace(/\\)\\s*$/, \"\").trim() : v;\n\n // base text/spacing/etc\n out.push(`--pf-font-sans:${normalize(theme.fonts.sans)};`);\n out.push(`--pf-font-mono:${normalize(theme.fonts.mono)};`);\n out.push(`--pf-text-primary:${theme.text.primary};`);\n out.push(`--pf-text-secondary:${theme.text.secondary};`);\n out.push(`--pf-text-muted:${theme.text.muted};`);\n Object.entries(theme.text.onColors).forEach(([k, v]) => out.push(`--pf-text-on-${k}:${v};`));\n Object.entries(theme.spacing).forEach(([k, v]) => out.push(`--pf-space-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.radius).forEach(([k, v]) => out.push(`--pf-radius-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.fontSizes).forEach(([k, v]) => out.push(`--pf-fontSize-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.componentHeights).forEach(([k, v]) => out.push(`--pf-cmph-${k}:${typeof v === \"number\" ? `${v}px` : v};`));\n Object.entries(theme.neutral).forEach(([k, v]) => out.push(`--pf-neutral-${k}:${v};`));\n\n // surfaces\n out.push(`--pf-surface-appBg:${theme.surface.appBg};`);\n out.push(`--pf-surface-panelBg:${theme.surface.panelBg};`);\n out.push(`--pf-surface-subtleBg:${theme.surface.subtleBg};`);\n out.push(`--pf-surface-panelHover:${theme.surface.panelHover};`);\n out.push(`--pf-surface-subtleHover:${theme.surface.subtleHover};`);\n out.push(`--pf-surface-overlayBg:${theme.surface.overlayBg};`);\n out.push(`--pf-surface-border:${theme.surface.border};`);\n\n // neutral focus fallbacks\n out.push(`--pf-focus-main:var(--pf-neutral-400);`);\n out.push(mode === \"dark\" ? `--pf-focus-soft:var(--pf-neutral-200);` : `--pf-focus-soft:var(--pf-neutral-300);`);\n\n // palette vars\n Object.entries(theme.palette).forEach(([name, scale]) => {\n Object.entries(scale).forEach(([shade, val]) => {\n out.push(`--pf-palette-${name}-${shade}:${val};`);\n });\n });\n\n // per-palette focus vars\n const focusShade = \"300\";\n Object.keys(theme.palette).forEach((name) => {\n out.push(`--pf-focus-${name}-main: var(--pf-palette-${name}-${focusShade});`);\n out.push(`--pf-focus-${name}-soft: transparent;`);\n });\n\n // primary aliases\n ([\n 0, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900,\n ] as const).forEach((s) => out.push(`--pf-primary-${s}:var(--pf-palette-${primaryKey}-${s});`));\n out.push(`--pf-focus-accent-main:var(--pf-primary-300);`);\n out.push(`--pf-focus-accent-soft:transparent;`);\n\n // text-on-primary\n const onPrimary =\n theme.text.onColors[primaryKey] ??\n (() => {\n const ref = (theme.palette as Record<string, Record<string, string>>)[primaryKey]?.[\"600\"] ?? theme.palette.primary[\"600\"];\n const m = ref.replace(\"#\", \"\");\n const r = parseInt(m.slice(0, 2), 16),\n g = parseInt(m.slice(2, 4), 16),\n b = parseInt(m.slice(4, 6), 16);\n const f = (x: number): number => {\n const s = x / 255;\n return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);\n };\n const L = 0.2126 * f(r) + 0.7152 * f(g) + 0.0722 * f(b);\n return L > 0.53 ? \"#000\" : \"#FFF\";\n })();\n out.push(`--pf-text-on-primary:${onPrimary};`);\n\n out.push(`color-scheme:${mode === \"dark\" ? \"dark\" : \"light\"};`);\n return out;\n}\n\nfunction renderVars(theme: PlainframeUITheme, primaryKey: string, mode: Mode): string {\n return buildVarPairs(theme, primaryKey, mode).join(\"\");\n}\n\n/* ───────── provider ───────── */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n theme,\n initialMode = \"light\",\n storageKey = \"pfui:pref\",\n scope,\n}) => {\n const scoped = !!scope;\n const basePrimary = theme?.primaryKey ?? \"primary\";\n\n // stores\n const modeStore = React.useMemo(() => createStore<Mode>(\"light\"), []);\n const primaryStore = React.useMemo(() => createStore<string>(basePrimary), [basePrimary]);\n\n // wrapper + scope info\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const scopeDepthRef = useRef<number>(0);\n const scopeId = useRef<string>(scope ?? \"__root__\");\n React.useLayoutEffect((): void => {\n let depth = 0;\n let node: HTMLElement | null = wrapperRef.current;\n while (node && node !== document.body) {\n if (node.hasAttribute(\"data-pfui-scope\")) depth++;\n node = node.parentElement;\n }\n scopeDepthRef.current = depth;\n }, [scope]);\n\n // base themes\n const lightResolved = useMemo<PlainframeUITheme>(() => {\n const base = mergeTheme(defaultLightTheme, theme);\n const withLight = mergeTheme(base, theme?.light);\n const key = theme?.light?.primaryKey ?? basePrimary;\n const k = resolveAlias(key);\n const selected =\n withLight.palette.primary ?? (withLight.palette as Record<string, Record<string, string>>)[k] ?? withLight.palette.mono;\n const mergedOn = mirrorOnColors({ ...textLight(withLight.neutral).onColors, ...withLight.text.onColors });\n const onPrimary = mergedOn[k] ?? onColorFor(selected[\"600\"]);\n const nextSurface = (theme?.surface || theme?.light?.surface) ? withLight.surface : surfaceFromNeutral(\"light\", withLight.neutral);\n const baseText = (theme?.text || theme?.light?.text) ? withLight.text : textLight(withLight.neutral);\n const nextText = {\n ...baseText,\n onColors: mirrorOnColors({ ...mergedOn, primary: onPrimary, [k]: onPrimary }),\n };\n return {\n ...withLight,\n palette: {\n ...withLight.palette,\n primary: selected as typeof withLight.palette.mono,\n },\n surface: nextSurface,\n text: nextText,\n };\n }, [theme, basePrimary]);\n\n const darkResolved = useMemo<PlainframeUITheme>(() => {\n const base = mergeTheme(defaultDarkTheme, theme);\n const withDark = mergeTheme(base, theme?.dark);\n const key = theme?.dark?.primaryKey ?? basePrimary;\n const k = resolveAlias(key);\n const selected =\n withDark.palette.primary ?? (withDark.palette as Record<string, Record<string, string>>)[k] ?? withDark.palette.mono;\n const mergedOn = mirrorOnColors({ ...textDark(withDark.neutral).onColors, ...withDark.text.onColors });\n const onPrimary = mergedOn[k] ?? onColorFor(selected[\"600\"]);\n const nextSurface = (theme?.surface || theme?.dark?.surface) ? withDark.surface : surfaceFromNeutral(\"dark\", withDark.neutral);\n const baseText = (theme?.text || theme?.dark?.text) ? withDark.text : textDark(withDark.neutral);\n const nextText = {\n ...baseText,\n onColors: mirrorOnColors({ ...mergedOn, primary: onPrimary, [k]: onPrimary }),\n };\n return {\n ...withDark,\n palette: {\n ...withDark.palette,\n primary: selected as typeof withDark.palette.mono,\n },\n surface: nextSurface,\n text: nextText,\n };\n }, [theme, basePrimary]);\n\n // style tags\n const varsRef = useRef<HTMLStyleElement | null>(null);\n const guardRef = useRef<HTMLStyleElement | null>(null);\n const useIsoInsertionEffect: typeof React.useLayoutEffect =\n React.useInsertionEffect || React.useLayoutEffect;\n\n // initial mode (compute once)\n const getInitialMode = (): Mode => {\n if (!scoped) {\n try {\n const saved = JSON.parse(localStorage.getItem(storageKey) || \"null\") as { mode?: Mode } | null;\n if (saved?.mode === \"light\" || saved?.mode === \"dark\") return saved.mode;\n } catch {\n // ignore\n }\n }\n if (initialMode === \"system\") {\n return window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n }\n return (initialMode as Mode) ?? \"light\";\n };\n const initialModeRef = useRef<Mode>(getInitialMode());\n const didInitRef = React.useRef<boolean>(false);\n\n // no-transition guard (scoped)\n const runSwitchGuard = useCallback((): void => {\n const sel = selectorFor(scope);\n ensureTag(guardRef, scoped ? `pfui-guard-${scope}` : \"pfui-guard-root\");\n if (guardRef.current) {\n guardRef.current.textContent = `${sel} *{transition:none!important;animation:none!important}`;\n requestAnimationFrame(() => {\n if (guardRef.current) guardRef.current.textContent = \"\";\n });\n }\n }, [scope, scoped]);\n\n // write var blocks every time theme changes; only set initial mode ONCE\n useIsoInsertionEffect((): void => {\n ensureTag(varsRef, scoped ? `pfui-vars-${scope}` : \"pfui-vars-root\");\n\n const keyLight = theme?.light?.primaryKey ?? theme?.primaryKey ?? basePrimary;\n const keyDark = theme?.dark?.primaryKey ?? theme?.primaryKey ?? basePrimary;\n const sel = selectorFor(scope);\n const lightCss = renderVars(lightResolved, keyLight, \"light\");\n const darkCss = renderVars(darkResolved, keyDark, \"dark\");\n if (varsRef.current) {\n varsRef.current.textContent =\n `${sel}.pf-light{${lightCss}}\\n${sel}.pf-dark{${darkCss}}` +\n (scoped ? `\\n${sel}{background:var(--pf-surface-appBg);color:var(--pf-text-primary);}` : \"\");\n }\n\n if (!didInitRef.current) {\n didInitRef.current = true;\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n host?.classList?.toggle(\"pf-dark\", initialModeRef.current === \"dark\");\n host?.classList?.toggle(\"pf-light\", initialModeRef.current !== \"dark\");\n modeStore.set(initialModeRef.current);\n }\n }, [\n lightResolved,\n darkResolved,\n theme?.primaryKey,\n theme?.light?.primaryKey,\n theme?.dark?.primaryKey,\n scope,\n scoped,\n basePrimary,\n modeStore,\n ]);\n\n /* ───────── ACTIVE SCOPE ROUTING (for portals) ───────── */\n type ActiveScope = { id: string; depth: number; ts: number };\n const setActiveScope = useCallback((): void => {\n (window as unknown as { __pfuiActiveScope?: ActiveScope }).__pfuiActiveScope = {\n id: scopeId.current,\n depth: scopeDepthRef.current,\n ts: Date.now(),\n };\n }, []);\n const attachActiveScopeListeners = useCallback((): (() => void) => {\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n const opts: AddEventListenerOptions = { capture: true };\n const mark = (): void => setActiveScope();\n host?.addEventListener(\"pointerdown\", mark, opts);\n host?.addEventListener(\"mouseenter\", mark, opts);\n host?.addEventListener(\"focusin\", mark, opts);\n host?.addEventListener(\"keydown\", mark, opts);\n return () => {\n host?.removeEventListener(\"pointerdown\", mark, opts);\n host?.removeEventListener(\"mouseenter\", mark, opts);\n host?.removeEventListener(\"focusin\", mark, opts);\n host?.removeEventListener(\"keydown\", mark, opts);\n };\n }, [scoped, setActiveScope]);\n\n const claimIfActiveScope = useCallback(\n (el: HTMLElement): void => {\n const act = (window as unknown as { __pfuiActiveScope?: ActiveScope }).__pfuiActiveScope;\n const fresh = act && Date.now() - act.ts < 1500;\n if (!act || !fresh) return;\n if (act.id !== scopeId.current) return;\n\n const m = modeStore.get();\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n el.style.cssText += `;${cssVars}`;\n el.classList.toggle(\"pf-light\", m === \"light\");\n el.classList.toggle(\"pf-dark\", m === \"dark\");\n el.setAttribute(\"data-pfui-portal-owner\", scopeId.current);\n },\n [modeStore, primaryStore, lightResolved, darkResolved]\n );\n\n const looksLikePortalRoot = (el: HTMLElement): boolean => {\n if (el.getAttribute(\"data-floating-ui-portal\") === \"true\") return true;\n if (el.getAttribute(\"data-radix-portal\") === \"true\") return true;\n if (el.getAttribute(\"data-portal\") === \"true\") return true;\n const role = el.getAttribute(\"role\");\n if (role === \"tooltip\" || role === \"dialog\") return true;\n const cs = window.getComputedStyle(el);\n return cs.position === \"fixed\" || cs.position === \"absolute\";\n };\n\n const watchPortals = useCallback((): (() => void) => {\n const mo = new MutationObserver((recs) => {\n for (const r of recs) {\n r.addedNodes.forEach((n) => {\n if (!(n instanceof HTMLElement)) return;\n if (looksLikePortalRoot(n)) claimIfActiveScope(n);\n n.querySelectorAll<HTMLElement>(\n '[data-floating-ui-portal=\"true\"],[data-radix-portal=\"true\"],[data-portal=\"true\"],[role=\"tooltip\"],[role=\"dialog\"]'\n ).forEach((el) => claimIfActiveScope(el));\n });\n }\n });\n mo.observe(document.body, { childList: true, subtree: true });\n return () => mo.disconnect();\n }, [claimIfActiveScope]);\n\n React.useEffect((): (() => void) => {\n const detachActive = attachActiveScopeListeners();\n const disconnectMO = watchPortals();\n return () => {\n detachActive();\n disconnectMO();\n };\n }, [attachActiveScopeListeners, watchPortals]);\n\n /* ───────── helpers to update BOTH wrapper + portals ───────── */\n const applyVarsToWrapper = useCallback(\n (m: Mode): void => {\n const host = scoped ? (wrapperRef.current as HTMLElement | null) : document.documentElement;\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n if (host) {\n host.style.cssText += `;${cssVars}`;\n host.classList.toggle(\"pf-light\", m === \"light\");\n host.classList.toggle(\"pf-dark\", m === \"dark\");\n }\n },\n [scoped, lightResolved, darkResolved, primaryStore]\n );\n\n const applyVarsToOwnedPortals = useCallback(\n (m: Mode): void => {\n const pk = primaryStore.get();\n const t = m === \"light\" ? lightResolved : darkResolved;\n const cssVars = buildVarPairs(t, pk, m).join(\"\");\n document\n .querySelectorAll<HTMLElement>(`[data-pfui-portal-owner=\"${scopeId.current}\"]`)\n .forEach((el) => {\n el.style.cssText += `;${cssVars}`;\n el.classList.toggle(\"pf-light\", m === \"light\");\n el.classList.toggle(\"pf-dark\", m === \"dark\");\n });\n },\n [lightResolved, darkResolved, primaryStore]\n );\n\n /* ───────── actions ───────── */\n const setMode = useCallback(\n (m: Mode): void => {\n if (modeStore.get() === m) return;\n runSwitchGuard();\n modeStore.set(m);\n applyVarsToWrapper(m);\n applyVarsToOwnedPortals(m);\n\n if (!scoped) {\n try {\n const prev = JSON.parse(localStorage.getItem(storageKey) || \"{}\") as Record<string, unknown>;\n localStorage.setItem(storageKey, JSON.stringify({ ...prev, mode: m }));\n } catch {\n // ignore\n }\n }\n },\n [modeStore, scoped, storageKey, runSwitchGuard, applyVarsToWrapper, applyVarsToOwnedPortals]\n );\n\n const toggleMode = useCallback((): void => setMode(modeStore.get() === \"light\" ? \"dark\" : \"light\"), [setMode, modeStore]);\n\n const setPrimary = useCallback(\n (key: string): void => {\n primaryStore.set(key);\n\n const sel = selectorFor(scope);\n const lightCss = renderVars(lightResolved, key, \"light\");\n const darkCss = renderVars(darkResolved, key, \"dark\");\n if (varsRef.current) {\n varsRef.current.textContent =\n `${sel}.pf-light{${lightCss}}\\n${sel}.pf-dark{${darkCss}}` +\n (scoped ? `\\n${sel}{background:var(--pf-surface-appBg);color:var(--pf-text-primary);}` : \"\");\n }\n\n runSwitchGuard();\n const m = modeStore.get();\n applyVarsToWrapper(m);\n applyVarsToOwnedPortals(m);\n\n if (!scoped) {\n try {\n const prev = JSON.parse(localStorage.getItem(storageKey) || \"{}\") as Record<string, unknown>;\n localStorage.setItem(storageKey, JSON.stringify({ ...prev, primary: key }));\n } catch {\n // ignore\n }\n }\n },\n [lightResolved, darkResolved, scope, scoped, modeStore, primaryStore, runSwitchGuard, applyVarsToWrapper, applyVarsToOwnedPortals]\n );\n\n /* ───────── content ───────── */\n const content = (\n <BaseResolvedContext.Provider value={{ light: lightResolved, dark: darkResolved }}>\n <ModeStoreContext.Provider value={modeStore}>\n <PrimaryStoreContext.Provider value={primaryStore}>\n <ModeActionsContext.Provider value={{ setMode, toggleMode }}>\n <PrimaryActionsContext.Provider value={{ setPrimary }}>\n <EmotionThemeProvider theme={toVarTheme(lightResolved) as unknown}>\n {children}\n </EmotionThemeProvider>\n </PrimaryActionsContext.Provider>\n </ModeActionsContext.Provider>\n </PrimaryStoreContext.Provider>\n </ModeStoreContext.Provider>\n </BaseResolvedContext.Provider>\n );\n\n if (scoped) {\n return (\n <div\n ref={wrapperRef}\n data-pfui-scope={scope}\n style={{ background: \"var(--pf-surface-appBg)\", color: \"var(--pf-text-primary)\" }}\n >\n {content}\n </div>\n );\n }\n return <div ref={wrapperRef}>{content}</div>;\n};\n\nfunction toVarTheme(src: PlainframeUITheme): PlainframeUITheme {\n const mapObj = <V,>(o: Record<string, V>, p: (k: string) => string): Record<string, string> =>\n Object.fromEntries(Object.keys(o).map((k) => [k, p(k)])) as Record<string, string>;\n const spacing = mapObj(src.spacing, (k) => `var(--pf-space-${k})`);\n const radius = mapObj(src.radius, (k) => `var(--pf-radius-${k})`);\n const fontSz = mapObj(src.fontSizes, (k) => `var(--pf-fontSize-${k})`);\n const heights = mapObj(src.componentHeights, (k) => `var(--pf-cmph-${k})`);\n const fonts = { sans: \"var(--pf-font-sans)\", mono: \"var(--pf-font-mono)\" };\n const neutral = mapObj(src.neutral, (k) => `var(--pf-neutral-${k})`);\n\n const palette: Record<string, Record<string, string>> = {};\n Object.keys(src.palette).forEach((name) => {\n palette[name] = {};\n Object.keys((src.palette as Record<string, Record<string, string>>)[name]).forEach((sh) => {\n (palette as Record<string, Record<string, string>>)[name][sh] = `var(--pf-palette-${name}-${sh})`;\n });\n });\n // primary alias map\n palette.primary = Object.fromEntries(\n [\"0\", \"50\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\"].map((s) => [s, `var(--pf-primary-${s})`])\n );\n\n return {\n ...src,\n spacing: spacing as unknown as PlainframeUITheme[\"spacing\"],\n radius: radius as unknown as PlainframeUITheme[\"radius\"],\n fontSizes: fontSz as unknown as PlainframeUITheme[\"fontSizes\"],\n componentHeights: heights as unknown as PlainframeUITheme[\"componentHeights\"],\n fonts,\n neutral: neutral as unknown as PlainframeUITheme[\"neutral\"],\n palette: palette as unknown as PlainframeUITheme[\"palette\"],\n surface: {\n appBg: \"var(--pf-surface-appBg)\",\n panelBg: \"var(--pf-surface-panelBg)\",\n subtleBg: \"var(--pf-surface-subtleBg)\",\n panelHover: \"var(--pf-surface-panelHover)\",\n subtleHover: \"var(--pf-surface-subtleHover)\",\n overlayBg: \"var(--pf-surface-overlayBg)\",\n border: \"var(--pf-surface-border)\",\n },\n text: {\n primary: \"var(--pf-text-primary)\",\n secondary: \"var(--pf-text-secondary)\",\n muted: \"var(--pf-text-muted)\",\n onColors: Object.fromEntries(\n Object.keys(mirrorOnColors(src.text.onColors)).map((k) => [k, `var(--pf-text-on-${k})`])\n ) as Record<string, string>,\n },\n };\n}\n","/** @jsxImportSource @emotion/react */\nexport type Scale = {\n 0: string; 50: string; 100: string; 200: string; 300: string; 400: string;\n 500: string; 600: string; 700: string; 800: string; 900: string;\n};\n\nexport type PlainframeUITheme = {\n spacing: Record<\"xxs\"|\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\", string|number> & Record<string, string|number>;\n radius: Record<\"xxs\"|\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\"|\"full\", string|number> & Record<string, string|number>;\n fontSizes: Record<\"xs\"|\"sm\"|\"md\"|\"lg\"|\"xl\"|\"xxl\", string|number> & Record<string, string|number>;\n componentHeights: Record<\"sm\"|\"md\"|\"lg\"|\"border\", string|number> & Record<string, string|number>;\n fonts: { sans: string; mono: string };\n palette: Record<string, Scale>;\n neutral: Scale;\n surface: {\n appBg: string; panelBg: string; subtleBg: string;\n panelHover: string; subtleHover: string; overlayBg: string; border: string;\n };\n text: { primary: string; secondary: string; muted: string; onColors: Record<string, string> };\n};\n\nexport type Mode = \"light\" | \"dark\";\n\nconst spacing: PlainframeUITheme[\"spacing\"] = {\n xxs:\"0.15rem\", xs:\"0.25rem\", sm:\"0.5rem\", md:\"0.75rem\", lg:\"1rem\", xl:\"1.5rem\"\n};\nconst radius: PlainframeUITheme[\"radius\"] = {\n xxs:\"0.3rem\", xs:\"0.4rem\", sm:\"0.6rem\", md:\"0.7rem\", lg:\"1rem\", xl:\"2rem\", full:\"9999px\"\n};\nconst fontSizes: PlainframeUITheme[\"fontSizes\"] = {\n xs:\"10px\", sm:\"12px\", md:\"14px\", lg:\"16px\", xl:\"20px\", xxl:\"32px\"\n};\nconst componentHeights: PlainframeUITheme[\"componentHeights\"] = {\n sm:32, md:36, lg:40, border:\"1px\"\n};\nconst fonts: PlainframeUITheme[\"fonts\"] = {\n sans: '\"Geist\", system-ui, -apple-system, Segoe UI, Roboto, sans-serif',\n mono: '\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace',\n};\n\nconst neutralLight: Scale = {\n 0:\"#ffffff\",50:\"#f9f9f9\",100:\"#f5f5f5\",200:\"#eeeeee\",300:\"#e5e5e5\",\n 400:\"#C6C6C6\",500:\"#b3b3b3\",600:\"#7a7a7a\",700:\"#4a4a4a\",800:\"#2b2b2b\",900:\"#111111\",\n};\nconst neutralDark: Scale = {\n 0:\"#0c0c0c\",50:\"#121212\",100:\"#1a1a1a\",200:\"#222222\",300:\"#2b2b2b\",\n 400:\"#333333\",500:\"#444444\",600:\"#6e6e6e\",700:\"#a6a6a6\",800:\"#e5e5e5\",900:\"#ffffff\",\n};\n\nconst paletteLight: Record<string, Scale> = {\n mono:{0:\"#FFFFFF\",50:\"#FAFAFA\",100:\"#F2F2F2\",200:\"#E6E6E6\",300:\"#D1D1D1\",400:\"#8A8A8A\",500:\"#2A2A2A\",600:\"#1A1A1A\",700:\"#121212\",800:\"#0B0B0B\",900:\"#000000\"},\n danger:{0:\"#FFFFFF\",50:\"#FFF1F1\",100:\"#FFE0E0\",200:\"#FFC2C5\",300:\"#FF9AA6\",400:\"#FF6A7B\",500:\"#EF2F23\",600:\"#E7000B\",700:\"#DB1424\",800:\"#C11225\",900:\"#7A0A18\"},\n success:{0:\"#FFFFFF\",50:\"#EEFFF3\",100:\"#D7FFE8\",200:\"#B9FBD5\",300:\"#8EF5BB\",400:\"#5BEA9A\",500:\"#0FD45D\",600:\"#00C853\",700:\"#109C47\",800:\"#0E8242\",900:\"#064D2B\"},\n warning:{0:\"#FFFFFF\",50:\"#FFF7EB\",100:\"#FFEFC6\",200:\"#FFE094\",300:\"#FFC552\",400:\"#FFB83A\",500:\"#FFA414\",600:\"#FF9F0A\",700:\"#D97500\",800:\"#AF5E00\",900:\"#6E3600\"},\n info:{0:\"#FFFFFF\",50:\"#ECFAFF\",100:\"#D2F2FF\",200:\"#AEE6FF\",300:\"#84D6FF\",400:\"#4BC1FF\",500:\"#2B9FFF\",600:\"#1093FF\",700:\"#0077C0\",800:\"#0066A8\",900:\"#083B61\"},\n amber:{0:\"#FFFFFF\",50:\"#FFF3EA\",100:\"#FFE3D1\",200:\"#FFC7A6\",300:\"#FFAC80\",400:\"#FF874D\",500:\"#FF6C1F\",600:\"#FF5A00\",700:\"#D24500\",800:\"#B63C00\",900:\"#6F2300\"},\n orange:{0:\"#FFFFFF\",50:\"#FFF4EB\",100:\"#FFE6CC\",200:\"#FFCE9E\",300:\"#FFAE66\",400:\"#FF8B33\",500:\"#FF7310\",600:\"#FF6B00\",700:\"#CC4400\",800:\"#AF3F00\",900:\"#6B2400\"},\n yellow:{0:\"#FFFFFF\",50:\"#FFFAE6\",100:\"#FFF2BF\",200:\"#FFE780\",300:\"#FFDB3D\",400:\"#FFD000\",500:\"#FFE03F\",600:\"#FFD60A\",700:\"#B38600\",800:\"#8E6D00\",900:\"#534300\"},\n lime:{0:\"#FFFFFF\",50:\"#F6FFE8\",100:\"#E7FFC2\",200:\"#CCFF83\",300:\"#A8FA3D\",400:\"#8BE11C\",500:\"#87DE10\",600:\"#7ACC00\",700:\"#4A8C00\",800:\"#3B7100\",900:\"#224300\"},\n green:{0:\"#FFFFFF\",50:\"#F0FFF5\",100:\"#DBFFE9\",200:\"#BDF7CF\",300:\"#8FE7A8\",400:\"#5BD57D\",500:\"#1DAE52\",600:\"#16A34A\",700:\"#168A40\",800:\"#136A34\",900:\"#0B3D1F\"},\n teal:{0:\"#FFFFFF\",50:\"#EDFFFB\",100:\"#D2FFF4\",200:\"#A6FAEA\",300:\"#74EEDC\",400:\"#41DECB\",500:\"#00CFAA\",600:\"#00BFA5\",700:\"#0C8C7F\",800:\"#0B786C\",900:\"#084741\"},\n cyan:{0:\"#FFFFFF\",50:\"#EFFFFF\",100:\"#D4FCFF\",200:\"#AFF5FD\",300:\"#7FE8F6\",400:\"#45D3EB\",500:\"#09C6E7\",600:\"#00B8D9\",700:\"#0A7C92\",800:\"#0B6E81\",900:\"#0A4250\"},\n blue:{0:\"#FFFFFF\",50:\"#EFF6FF\",100:\"#DBE8FF\",200:\"#B8D3FF\",300:\"#90BAFF\",400:\"#5E97FF\",500:\"#406FFF\",600:\"#2F66FF\",700:\"#2452DE\",800:\"#2248C8\",900:\"#172C80\"},\n indigo:{0:\"#FFFFFF\",50:\"#EEF2FF\",100:\"#E0E6FF\",200:\"#C5D0FF\",300:\"#A3B5FF\",400:\"#879CFF\",500:\"#707AF5\",600:\"#5A63F3\",700:\"#4951DA\",800:\"#3E40BF\",900:\"#2A2A82\"},\n purple:{0:\"#FFFFFF\",50:\"#F4F0FF\",100:\"#E8DBFF\",200:\"#D2B8FF\",300:\"#B590FF\",400:\"#996AF5\",500:\"#7A52F1\",600:\"#6B3CF0\",700:\"#592FBE\",800:\"#4D27A3\",900:\"#2F1767\"},\n magenta:{0:\"#FFFFFF\",50:\"#FFF0FE\",100:\"#FCE0FF\",200:\"#F7BCFF\",300:\"#F393FD\",400:\"#E85FF8\",500:\"#C645D6\",600:\"#C026D3\",700:\"#951CAB\",800:\"#801790\",900:\"#4C0C59\"},\n pink:{0:\"#FFFFFF\",50:\"#FFF0F7\",100:\"#FFE0F0\",200:\"#FFC0E2\",300:\"#FF9ACE\",400:\"#FF6CB3\",500:\"#ED5CA2\",600:\"#EC4899\",700:\"#AB236F\",800:\"#96205D\",900:\"#5A1238\"},\n rose:{0:\"#FFFFFF\",50:\"#FFF0F3\",100:\"#FFE1E9\",200:\"#FFC1D3\",300:\"#FF98B8\",400:\"#FF6B98\",500:\"#EE4278\",600:\"#E52E69\",700:\"#B52156\",800:\"#991A43\",900:\"#5B0F28\"},\n};\n\nconst paletteDark: Record<string, Scale> = {\n mono:{0:\"#0B0B0C\",50:\"#0F0F10\",100:\"#151515\",200:\"#1B1B1C\",300:\"#232323\",400:\"#DADADA\",500:\"#E0E0E0\",600:\"#EDEDED\",700:\"#F5F5F5\",800:\"#FCFCFC\",900:\"#FFFFFF\"},\n danger:{0:\"#17080A\",50:\"#1E0B0D\",100:\"#290F11\",200:\"#3A1416\",300:\"#4B191B\",400:\"#6A1D21\",500:\"#FF3B30\",600:\"#E7000B\",700:\"#FF2A20\",800:\"#FF463D\",900:\"#FFD9DB\"},\n success:{0:\"#06150B\",50:\"#0A1B10\",100:\"#0E2416\",200:\"#11301C\",300:\"#143B21\",400:\"#16502C\",500:\"#22D85A\",600:\"#00C853\",700:\"#2FE976\",800:\"#7FF1AE\",900:\"#D6FADF\"},\n warning:{0:\"#150E05\",50:\"#1C1408\",100:\"#261B0B\",200:\"#31240E\",300:\"#3D2C12\",400:\"#583C16\",500:\"#FFA61A\",600:\"#FF9F0A\",700:\"#FFB347\",800:\"#FFD089\",900:\"#FFF0C9\"},\n info:{0:\"#07131E\",50:\"#0A1926\",100:\"#0E2233\",200:\"#112C44\",300:\"#143654\",400:\"#184A78\",500:\"#1C9CFF\",600:\"#1093FF\",700:\"#4FB2FF\",800:\"#9DD2FF\",900:\"#D8ECFF\"},\n amber:{0:\"#150D07\",50:\"#1C120A\",100:\"#26180E\",200:\"#311F12\",300:\"#3E2716\",400:\"#59361C\",500:\"#FF6A1E\",600:\"#FF5A00\",700:\"#FF8747\",800:\"#FFB98A\",900:\"#FFE2CC\"},\n orange:{0:\"#140D07\",50:\"#1B120A\",100:\"#25190D\",200:\"#302010\",300:\"#3B2813\",400:\"#553817\",500:\"#FF7F22\",600:\"#FF6B00\",700:\"#FF9247\",800:\"#FFBE8A\",900:\"#FFE1CC\"},\n yellow:{0:\"#141303\",50:\"#1B1906\",100:\"#25210A\",200:\"#2F2A0D\",300:\"#383212\",400:\"#524717\",500:\"#FFE042\",600:\"#FFD60A\",700:\"#FFE457\",800:\"#FFF194\",900:\"#FFF8CF\"},\n lime:{0:\"#0C1306\",50:\"#101A08\",100:\"#14210B\",200:\"#1A2B0F\",300:\"#203614\",400:\"#2A4A1A\",500:\"#86E21A\",600:\"#7ACC00\",700:\"#9EEA3B\",800:\"#C9F57F\",900:\"#EAFCC4\"},\n green:{0:\"#07140C\",50:\"#0B1B11\",100:\"#0E2416\",200:\"#112C1B\",300:\"#143722\",400:\"#17502F\",500:\"#20BF55\",600:\"#16A34A\",700:\"#39C964\",800:\"#86E5A5\",900:\"#D4F6E1\"},\n teal:{0:\"#081815\",50:\"#0B1F1C\",100:\"#0F2824\",200:\"#13322E\",300:\"#173E39\",400:\"#14584F\",500:\"#14CEBD\",600:\"#00BFA5\",700:\"#2CD6C6\",800:\"#7FEAE3\",900:\"#CFF7F3\"},\n cyan:{0:\"#07171C\",50:\"#0A1E24\",100:\"#0E2830\",200:\"#11333D\",300:\"#153E4A\",400:\"#165B6A\",500:\"#20CBE6\",600:\"#00B8D9\",700:\"#3FD2E9\",800:\"#93EBF6\",900:\"#D5F7FC\"},\n blue:{0:\"#081421\",50:\"#0A1829\",100:\"#0E2139\",200:\"#112A4B\",300:\"#153660\",400:\"#184A86\",500:\"#4A78FF\",600:\"#2F66FF\",700:\"#5A8AFF\",800:\"#A7C3FF\",900:\"#D9E7FF\"},\n indigo:{0:\"#0B1023\",50:\"#0E162C\",100:\"#141F3F\",200:\"#1C2A56\",300:\"#24366E\",400:\"#2F4894\",500:\"#707CF6\",600:\"#5A63F3\",700:\"#7D86FF\",800:\"#B5C0FF\",900:\"#E0E6FF\"},\n purple:{0:\"#100B1F\",50:\"#130E26\",100:\"#1A1638\",200:\"#231F4E\",300:\"#2E2A67\",400:\"#3C388D\",500:\"#8256F3\",600:\"#6B3CF0\",700:\"#8B66FA\",800:\"#C1B0FF\",900:\"#E4DCFF\"},\n magenta:{0:\"#160A18\",50:\"#1C0C21\",100:\"#25102E\",200:\"#321544\",300:\"#421A5C\",400:\"#58247C\",500:\"#CB44DB\",600:\"#C026D3\",700:\"#D960EB\",800:\"#F0B5FA\",900:\"#F9E4FE\"},\n pink:{0:\"#170911\",50:\"#1D0C18\",100:\"#271220\",200:\"#371830\",300:\"#462042\",400:\"#622C5C\",500:\"#F067AE\",600:\"#EC4899\",700:\"#F679BB\",800:\"#FFC2E1\",900:\"#FFE6F3\"},\n rose:{0:\"#17090E\",50:\"#1F0C13\",100:\"#2A121B\",200:\"#3A1B28\",300:\"#4B2636\",400:\"#673449\",500:\"#EE457B\",600:\"#E52E69\",700:\"#FF558A\",800:\"#FFA9C6\",900:\"#FFE0EA\"},\n};\n\nfunction withAliases(p: Record<string, Scale>): Record<string, Scale> {\n return {\n ...p,\n red: p.danger,\n error: p.danger,\n green: p.success,\n success: p.success,\n orange: p.orange,\n amber: p.amber,\n yellow: p.yellow,\n lime: p.lime,\n teal: p.teal,\n cyan: p.cyan,\n blue: p.blue,\n indigo: p.indigo,\n purple: p.purple,\n violet: p.purple,\n magenta: p.magenta,\n fuchsia: p.magenta,\n pink: p.pink,\n rose: p.rose,\n gray: p.mono,\n grey: p.mono,\n neutral: p.mono,\n };\n}\n\nexport const surfaceFromNeutral = (mode: Mode, n: Scale): PlainframeUITheme[\"surface\"] =>\n mode === \"light\"\n ? {\n appBg: n[0], panelBg: n[0], subtleBg: n[100],\n panelHover: n[50], subtleHover: n[200],\n overlayBg: \"linear-gradient(rgba(0,0,0,.15),rgba(0,0,0,.525))\",\n border: n[300],\n }\n : {\n appBg: n[0], panelBg: n[0], subtleBg: n[50],\n panelHover: n[50], subtleHover: n[100],\n overlayBg: \"linear-gradient(rgba(0,0,0,.35),rgba(0,0,0,.75))\",\n border: n[200],\n };\n\nexport const textLight = (n: Scale): PlainframeUITheme[\"text\"] => ({\n primary: n[900], secondary: n[600], muted: n[500], onColors: {} as Record<string, string>,\n});\nexport const textDark = (n: Scale): PlainframeUITheme[\"text\"] => ({\n primary: n[900], secondary: n[700], muted: n[600], onColors: {} as Record<string, string>,\n});\n\nconst colorKeys: readonly string[] = [\n \"danger\",\"success\",\"warning\",\"info\",\"amber\",\"orange\",\"yellow\",\"lime\",\"green\",\"teal\",\"cyan\",\"blue\",\"indigo\",\"purple\",\"magenta\",\"pink\",\"rose\"\n];\nfunction makeOnColors(defaults: Record<string, string>): Record<string, string> {\n const acc: Record<string, string> = {};\n for (const k of colorKeys) acc[k] = defaults[k] ?? \"#FFFFFF\";\n return acc;\n}\n\nexport const defaultLightTheme: PlainframeUITheme = {\n spacing,\n radius,\n fontSizes,\n componentHeights,\n fonts,\n neutral: neutralLight,\n palette: { ...withAliases(paletteLight), primary: paletteLight.mono as Scale },\n surface: surfaceFromNeutral(\"light\", neutralLight),\n text: (() => {\n const base = textLight(neutralLight);\n return {\n ...base,\n onColors: { primary: \"#FFFFFF\", ...makeOnColors({ yellow: \"#000000\" }) },\n };\n })(),\n};\n\nexport const defaultDarkTheme: PlainframeUITheme = {\n spacing,\n radius,\n fontSizes,\n componentHeights,\n fonts,\n neutral: neutralDark,\n palette: { ...withAliases(paletteDark), primary: paletteDark.mono as Scale },\n surface: surfaceFromNeutral(\"dark\", neutralDark),\n text: (() => {\n const base = textDark(neutralDark);\n return {\n ...base,\n onColors: { primary: \"#000000\", ...makeOnColors({ yellow: \"#000000\", lime: \"#000000\" }) },\n };\n })(),\n};\n\ndeclare module \"@emotion/react\" {\n interface Theme extends PlainframeUITheme {}\n}\n","/** @jsxImportSource @emotion/react */\nimport { css, type SerializedStyles } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype FocusMode = \"always\" | \"visible\" | \"none\";\n\nexport type FocusOpts = {\n color?: string; // \"neutral\" | \"primary\" | any palette key\n outlineWidth?: number;\n haloWidth?: number;\n offset?: number;\n enabled?: boolean;\n disabled?: boolean;\n mode?: FocusMode; // \"visible\" is default focus-visible, \"always\" uses :focus\n};\n\nconst pickScaleKey = (theme: any, key?: string): string => {\n const pal = theme?.palette ?? {};\n if (!key || key === \"neutral\") return \"neutral\";\n return pal[key] ? key : \"neutral\";\n};\n\nconst pickFocusColors = (theme: any, colorKey?: string): { soft: string; main: string } => {\n const key = pickScaleKey(theme, colorKey);\n\n if (key === \"neutral\") {\n return { soft: \"var(--pf-focus-soft)\", main: \"var(--pf-focus-main)\" };\n }\n if (colorKey === \"primary\") {\n // Accent follows current primary (theme provider writes these vars instantly)\n return { soft: \"var(--pf-focus-accent-soft)\", main: \"var(--pf-focus-accent-main)\" };\n }\n // per-palette focus vars emitted by ThemeProvider.buildVarPairs\n return {\n soft: `var(--pf-focus-${key}-soft, transparent)`,\n main: `var(--pf-focus-${key}-main)`,\n };\n};\n\nexport function useFocusRing(): (opts?: FocusOpts) => SerializedStyles {\n const theme = usePlainframeUITheme();\n\n return (opts?: FocusOpts) => {\n const enabled = (opts?.enabled ?? true) && !opts?.disabled;\n if (!enabled || opts?.mode === \"none\") return css({});\n\n const key = pickScaleKey(theme, opts?.color);\n const { soft, main } = pickFocusColors(theme, opts?.color);\n\n const outlineW =\n opts?.outlineWidth ?? (key === \"primary\" || key === \"danger\" ? 3.5 : 1.5);\n const haloW = opts?.haloWidth ?? 3;\n const offset =\n opts?.offset ?? (key === \"primary\" || key === \"danger\" ? -1.5 : -outlineW);\n\n const focusSel = opts?.mode === \"always\" ? \"&:focus\" : \"&:focus-visible\";\n\n const base: Record<string, any> = {\n outline: \"1px solid transparent\",\n boxShadow: \"0 0 0 0 transparent\",\n outlineOffset: offset,\n transition:\n \"box-shadow .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n \":root.pf-mode-switching &\": { transition: \"none !important\" },\n \"&[disabled], &[aria-disabled='true'], &[data-disabled='true']\": {\n outline: \"0 !important\",\n boxShadow: \"none !important\",\n outlineOffset: 0,\n },\n };\n\n base[focusSel] = {\n boxShadow: `0 0 0 ${haloW}px ${soft}`,\n outline: `${outlineW}px solid ${main}`,\n outlineOffset: offset,\n zIndex: 10000,\n };\n\n return css(base);\n };\n}\n\nexport function useFocusWithinRing(): (opts?: FocusOpts) => SerializedStyles {\n const theme = usePlainframeUITheme();\n\n return (opts?: FocusOpts) => {\n const enabled = (opts?.enabled ?? true) && !opts?.disabled;\n if (!enabled || opts?.mode === \"none\") return css({});\n\n const { soft, main } = pickFocusColors(theme, opts?.color);\n const outlineW = opts?.outlineWidth ?? 1.5;\n const haloW = opts?.haloWidth ?? 3;\n const offset = opts?.offset ?? -outlineW;\n\n const withinSel = opts?.mode === \"always\" ? \"&:focus-within\" : \"&:has(:focus-visible)\";\n\n const base: Record<string, any> = {\n outline: \"1.5px solid transparent\",\n boxShadow: \"0 0 0 0 transparent\",\n outlineOffset: offset,\n position: \"relative\",\n transition:\n \"box-shadow .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n \":root.pf-mode-switching &\": { transition: \"none !important\" },\n \"&[disabled], &[aria-disabled='true'], &[data-disabled='true']\": {\n outline: \"0 !important\",\n boxShadow: \"none !important\",\n outlineOffset: 0,\n },\n };\n\n base[withinSel] = {\n boxShadow: `0 0 0 ${haloW}px ${soft}`,\n outline: `${outlineW}px solid ${main}`,\n outlineOffset: offset,\n zIndex: 1000,\n };\n\n return css(base);\n };\n}\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { ChevronDown } from \"lucide-react\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionSummaryProps = WithCss & {\n children?: React.ReactNode;\n expandIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent) => void;\n expanded?: boolean;\n disabled?: boolean;\n className?: string;\n noExpandIcon?: boolean;\n expandIconPosition?: \"left\" | \"right\";\n};\n\nexport const AccordionSummary: React.ForwardRefExoticComponent<\n AccordionSummaryProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AccordionSummaryProps>(\n (\n {\n children,\n expandIcon,\n onClick,\n expanded,\n disabled,\n className,\n noExpandIcon,\n expandIconPosition = \"right\",\n css: userCss,\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n\n const fontSize = theme.fontSizes.md;\n const iconSize = 20;\n const gap = 10;\n const paddingX = theme.spacing.lg;\n const paddingY = theme.spacing.md;\n\n const rowH = Number(theme.componentHeights?.md);\n const N = theme.neutral;\n const T = theme.text;\n\n const iconColor = disabled ? (T.secondary as string) : theme.text.secondary;\n\n const baseCss = css({\n display: \"flex\",\n alignItems: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n outline: \"none\",\n userSelect: \"none\",\n fontWeight: 500,\n minHeight: rowH,\n padding: `${paddingY} ${paddingX}`,\n gap,\n fontSize,\n color: disabled ? N[500] : T.primary,\n });\n\n const contentCss = css({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n });\n\n const leftIconCss = css({ marginRight: 8, marginLeft: -4, lineHeight: 0 });\n const rightIconCss = css({ marginLeft: 14, marginRight: -4, lineHeight: 0 });\n const chevronCss = css({\n transition: \"transform 0.3s cubic-bezier(.6,1.3,.5,1)\",\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n });\n\n return (\n <div\n ref={ref}\n role=\"button\"\n aria-expanded={!!expanded}\n aria-disabled={disabled || undefined}\n tabIndex={-1}\n className={[\"plainframe-ui-accordion-summary\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[baseCss, userCss]}\n onClick={disabled ? undefined : onClick}\n onKeyDown={e => {\n if (!disabled && (e.key === \" \" || e.key === \"Enter\")) {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent);\n }\n }}\n >\n {!noExpandIcon && expandIconPosition === \"left\" && (\n <span\n className=\"plainframe-ui-accordion-expander-left\"\n css={[leftIconCss, chevronCss]}\n >\n {expandIcon ?? (\n <ChevronDown\n strokeWidth={2.125}\n css={{ width: iconSize, height: iconSize }}\n color={iconColor}\n />\n )}\n </span>\n )}\n\n <span className=\"plainframe-ui-accordion-content\" css={contentCss}>\n {children}\n </span>\n\n {!noExpandIcon && expandIconPosition === \"right\" && (\n <span\n className=\"plainframe-ui-accordion-expander-right\"\n css={[rightIconCss, chevronCss]}\n >\n {expandIcon ?? (\n <ChevronDown\n strokeWidth={2.125}\n css={{ width: iconSize, height: iconSize }}\n color={iconColor}\n />\n )}\n </span>\n )}\n </div>\n );\n }\n);\n\n(AccordionSummary as unknown as { __PFUI_SLOT: string }).__PFUI_SLOT = \"AccordionSummary\";\nAccordionSummary.displayName = \"AccordionSummary\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AccordionDetailsProps = {\n children?: React.ReactNode;\n className?: string;\n} & WithCss;\n\nexport const AccordionDetails: React.FC<AccordionDetailsProps> = ({\n children,\n className,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n\n const fontSize = theme.fontSizes.md;\n const paddingX = theme.spacing.lg;\n const paddingY = \"0.15rem\";\n const paddingBottom = theme.spacing.md;\n\n const baseCss = css({\n padding: `${paddingY} ${paddingX} ${paddingBottom} ${paddingX}`,\n fontSize,\n boxSizing: \"border-box\",\n minHeight: 0,\n });\n\n return (\n <div\n className={[\"plainframe-ui-accordion-details\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[baseCss, userCss]}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n};\n\n(AccordionDetails as unknown as { __PFUI_SLOT: string }).__PFUI_SLOT = \"AccordionDetails\";\nAccordionDetails.displayName = \"AccordionDetails\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, cloneElement, isValidElement } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype AccordionGroupProps = WithCssProp & {\n children: React.ReactNode;\n attached?: boolean;\n variant?: Variant;\n exclusive?: boolean;\n expandedIndex?: number | null;\n defaultExpandedIndex?: number | null;\n onExpandedIndexChange?: (index: number | null) => void;\n disabled?: boolean;\n width?: number | string;\n className?: string;\n role?: React.AriaRole;\n};\n\ntype AccordionLikeProps = {\n variant?: Variant;\n expanded?: boolean;\n defaultExpanded?: boolean;\n onChange?: (expanded: boolean) => void;\n disabled?: boolean;\n width?: number | string;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst isEl = (n: unknown): n is React.ReactElement => isValidElement(n);\nconst nameOf = (n: unknown) =>\n isEl(n)\n ? (n.type as { displayName?: string; name?: string })?.displayName ||\n (n.type as { name?: string })?.name\n : undefined;\n\nconst isAccordion = (n: unknown): n is React.ReactElement<AccordionLikeProps> =>\n nameOf(n) === \"Accordion\";\n\nconst toLen = (v: number | string | undefined) =>\n typeof v === \"number\" ? `${v}px` : v;\n\nconst toPx = (v: number | string | undefined, fallback = 1) => {\n if (v == null) return `${fallback}px`;\n if (typeof v === \"number\") return `${v}px`;\n return /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v;\n};\n\nexport const AccordionGroup: React.FC<AccordionGroupProps> = ({\n children,\n attached = false,\n variant,\n exclusive = false,\n expandedIndex,\n defaultExpandedIndex,\n onExpandedIndexChange,\n disabled = false,\n width,\n className,\n role = \"group\",\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const nodes = Children.toArray(children);\n const accs = nodes.filter(isAccordion) as React.ReactElement<AccordionLikeProps>[];\n const count = accs.length;\n\n const isControlled = exclusive && expandedIndex !== undefined;\n const [internalIndex, setInternalIndex] = React.useState<number | null>(() => {\n if (!exclusive) return null;\n if (defaultExpandedIndex !== undefined) return defaultExpandedIndex;\n for (let i = 0; i < accs.length; i++) {\n const p = accs[i].props;\n if (p.expanded || p.defaultExpanded) return i;\n }\n return null;\n });\n const activeIndex = exclusive ? (isControlled ? expandedIndex ?? null : internalIndex) : null;\n\n const bw = toPx(theme.componentHeights?.border, 1);\n const borderColor = theme.surface.border;\n const radius = theme.radius.md;\n\n const forcedVariant = variant;\n const isOutlined = forcedVariant === \"outlined\";\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n width: width != null ? toLen(width) : \"auto\",\n gap: attached ? 0 : theme.spacing.sm,\n border: attached && isOutlined ? `${bw} solid ${borderColor}` : \"none\",\n borderRadius: attached && isOutlined ? radius : undefined,\n background: attached && isOutlined ? theme.surface.panelBg : \"transparent\",\n overflow: attached && isOutlined ? \"hidden\" : \"visible\",\n });\n\n let logical = 0;\n const out: React.ReactNode[] = [];\n\n nodes.forEach((node, i) => {\n if (!isAccordion(node)) {\n out.push(node);\n return;\n }\n\n const props = node.props as AccordionLikeProps;\n const idx = logical++;\n const isFirst = idx === 0;\n const isLast = idx === count - 1;\n\n const nextVariant: Variant | undefined = forcedVariant ?? props.variant;\n\n const roundCss = attached\n ? css({\n width: \"100%\",\n marginBottom: 0,\n borderTopLeftRadius: isFirst ? radius : 0,\n borderTopRightRadius: isFirst ? radius : 0,\n borderBottomLeftRadius: isLast ? radius : 0,\n borderBottomRightRadius: isLast ? radius : 0,\n })\n : css({ width: \"100%\", marginBottom: 0 });\n\n const separatorCss =\n !isFirst && count > 1 && attached\n ? css({\n borderTop: `${bw} solid ${borderColor}`,\n })\n : null;\n\n const killChildOutline =\n isOutlined\n ? css({\n borderLeft: \"0 !important\",\n borderRight: \"0 !important\",\n borderBottom: \"0 !important\",\n outline: \"0 !important\",\n })\n : null;\n\n const injected: Partial<AccordionLikeProps> = {\n variant: nextVariant,\n disabled: disabled || !!props.disabled,\n width: \"100%\",\n css: [props.css, roundCss, killChildOutline, separatorCss],\n className: [props.className, \"plainframe-ui-accordion-group-item\"].filter(Boolean).join(\" \"),\n };\n\n if (exclusive) {\n const userOnChange = props.onChange;\n const active = activeIndex === idx;\n injected.expanded = active;\n injected.defaultExpanded = undefined;\n injected.onChange = (next) => {\n const nextIdx = next ? idx : null;\n if (!isControlled) setInternalIndex(nextIdx);\n onExpandedIndexChange?.(nextIdx);\n userOnChange?.(next);\n };\n }\n\n out.push(\n cloneElement(node, {\n ...props,\n ...injected,\n key: node?.key ?? i,\n })\n );\n });\n\n return (\n <div\n role={role}\n aria-orientation=\"vertical\"\n data-attached={attached || undefined}\n data-exclusive={exclusive || undefined}\n className={[\"plainframe-ui-accordion-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n >\n {out}\n </div>\n );\n};\n\nAccordionGroup.displayName = \"AccordionGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype WithCss = { css?: Interpolation<Theme> };\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\ntype VerticalAlign = \"top\" | \"center\" | \"bottom\";\ntype HorizontalAlign = \"left\" | \"center\" | \"right\";\ntype SpaceToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nfunction resolvePadding(\n padding: ActionBarProps[\"padding\"],\n theme: { spacing?: Record<string, number | string>; space?: Record<string, number | string> }\n) {\n if (padding == null) return undefined;\n if (typeof padding === \"number\") return `${padding}px`;\n if (typeof padding === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"].includes(padding)) {\n const val =\n (theme.spacing && theme.spacing[padding]) ??\n (theme.space && theme.space[padding]);\n return toLen(val ?? padding);\n }\n return padding;\n }\n return undefined;\n}\n\nfunction resolveRadius(\n radius: ActionBarProps[\"radius\"],\n theme: { radius?: Record<string, number | string>; radii?: Record<string, number | string> }\n) {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && theme.radius[radius]) ||\n (theme.radii && theme.radii[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n}\n\nexport type ActionBarAnchorOrigin = {\n vertical?: \"top\" | \"bottom\" | \"center\";\n horizontal?: \"left\" | \"right\" | \"center\";\n};\n\nexport type ActionBarProps = WithCss & {\n children: React.ReactNode;\n\n anchorOrigin?: ActionBarAnchorOrigin;\n\n padding?: number | string | SpaceToken;\n radius?: number | string | RadiusToken;\n gap?: number | string;\n offset?: number | string;\n offsetX?: number | string;\n offsetY?: number | string;\n shadow?: boolean;\n width?: number | string;\n height?: number | string;\n open?: boolean;\n unstyled?: boolean;\n containerCss?: Interpolation<Theme>;\n containerClassName?: string;\n className?: string;\n};\n\nexport const ActionBar: React.FC<ActionBarProps> = ({\n children,\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n padding,\n radius,\n gap,\n offset,\n offsetX,\n offsetY,\n shadow = true,\n width,\n height,\n open = true,\n unstyled = false,\n css: userCss,\n className,\n containerCss,\n containerClassName,\n}) => {\n const theme = usePlainframeUITheme();\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el) return;\n if (!open) {\n if (el.contains(document.activeElement)) (document.activeElement as HTMLElement | null)?.blur?.();\n el.setAttribute(\"inert\", \"\");\n el.setAttribute(\"aria-hidden\", \"true\");\n } else {\n el.removeAttribute(\"inert\");\n el.removeAttribute(\"aria-hidden\");\n }\n }, [open]);\n\n const hAlign: HorizontalAlign = anchorOrigin.horizontal ?? \"center\";\n const vAlign: VerticalAlign = anchorOrigin.vertical ?? \"bottom\";\n\n const borderToken = theme.componentHeights?.border ?? 1;\n const borderWidth = typeof borderToken === \"number\" ? `${borderToken}px` : borderToken;\n const surfaceBg = theme.surface.panelBg as string;\n const surfaceBorder = `${borderWidth} solid ${theme.surface.border}`;\n\n const offXVal = offsetX ?? offset ?? theme.spacing.lg;\n const offYVal = offsetY ?? offset ?? theme.spacing.lg;\n\n const containerStyles = css({\n position: \"fixed\",\n insetInline: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n justifyContent: hAlign === \"left\" ? \"flex-start\" : hAlign === \"right\" ? \"flex-end\" : \"center\",\n alignItems: vAlign === \"top\" ? \"flex-start\" : vAlign === \"bottom\" ? \"flex-end\" : \"center\",\n width: \"100%\",\n zIndex: 1000,\n pointerEvents: \"none\",\n });\n\n let closedTransform: string;\n let openTransform: string;\n\n if (hAlign === \"left\") {\n closedTransform = \"translateX(-100%) scale(0.98)\";\n openTransform = \"translateX(0) scale(1)\";\n } else if (hAlign === \"right\") {\n closedTransform = \"translateX(100%) scale(0.98)\";\n openTransform = \"translateX(0) scale(1)\";\n } else {\n if (vAlign === \"top\") {\n closedTransform = \"translateY(-100%) scale(0.98)\";\n openTransform = \"translateY(0) scale(1)\";\n } else if (vAlign === \"bottom\") {\n closedTransform = \"translateY(100%) scale(0.98)\";\n openTransform = \"translateY(0) scale(1)\";\n } else {\n closedTransform = \"scale(0.95)\";\n openTransform = \"scale(1)\";\n }\n }\n\n const resolvedPadding = resolvePadding(padding, theme) ?? theme.spacing.sm;\n const resolvedRadius = resolveRadius(radius, theme) ?? (theme.radius.lg as string);\n\n const contentStyles = css({\n marginInline: toLen(offXVal),\n marginTop: vAlign === \"top\" || vAlign === \"center\" ? toLen(offYVal) : undefined,\n marginBottom: vAlign === \"bottom\" || vAlign === \"center\" ? toLen(offYVal) : undefined,\n\n padding: unstyled ? undefined : resolvedPadding,\n background: unstyled ? \"transparent\" : surfaceBg,\n border: unstyled ? \"none\" : surfaceBorder,\n borderRadius: unstyled ? 0 : resolvedRadius,\n boxShadow: unstyled || !shadow ? \"none\" : \"0 20px 40px rgba(0,0,0,.08), 0 6px 14px rgba(0,0,0,.06)\",\n\n display: \"flex\",\n alignItems: \"center\",\n gap: unstyled ? 0 : gap ?? theme.spacing.xs,\n width: width ? toLen(width) : \"auto\",\n height: height ? toLen(height) : \"auto\",\n maxWidth: `calc(100% - (${toLen(offXVal) || \"24px\"} * 2))`,\n\n pointerEvents: open ? \"auto\" : \"none\",\n transition: \"transform 0.25s ease, opacity 0.25s ease\",\n transform: open ? openTransform : closedTransform,\n opacity: open ? 1 : 0,\n\n \"& > .plainframe-ui-textfield, & > .plainframe-ui-textarea, & > .plainframe-ui-codefield\": {\n flex: \"1 1 auto\",\n minWidth: 0,\n width: \"auto\",\n maxWidth: \"none\",\n },\n \"& > .plainframe-ui-textfield .plainframe-ui-textfield-surface, & > .plainframe-ui-textarea .plainframe-ui-textarea-surface\": {\n width: \"100%\",\n },\n \"& > *:not(.plainframe-ui-textfield):not(.plainframe-ui-textarea):not(.plainframe-ui-codefield)\": {\n flex: \"0 0 auto\",\n },\n });\n\n return (\n <div\n className={[\"plainframe-ui-action-bar-container\", containerClassName || \"\"].join(\" \").trim()}\n css={[containerStyles, containerCss]}\n >\n <div\n ref={contentRef}\n className={[\"plainframe-ui-action-bar\", className || \"\"].join(\" \").trim()}\n css={[contentStyles, userCss]}\n >\n {children}\n </div>\n </div>\n );\n};\n\nActionBar.displayName = \"ActionBar\";\n","/** @jsxImportSource @emotion/react */\nimport React, { createContext, useContext, forwardRef, useMemo } from \"react\";\nimport { css, type Interpolation } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { CircleAlert, CircleCheckBig, Info, TriangleAlert, X } from \"lucide-react\";\nimport type { Theme } from \"@emotion/react\";\n\ntype AlertVariant = \"filled\" | \"outlined\" | \"soft\" | \"ghost\";\ntype AlertIntent = \"danger\" | \"warning\" | \"info\" | \"success\" | \"neutral\";\n\nexport type AlertProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n intent?: AlertIntent;\n variant?: AlertVariant;\n icon?: React.ReactNode;\n actionButton?: React.ReactNode;\n onClose?: () => void;\n width?: string | number;\n size?: \"sm\" | \"md\" | \"lg\";\n css?: Interpolation<Theme>;\n className?: string;\n};\n\ntype SubProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\ntype SizeScale = {\n paddingX: number | string;\n paddingY: number | string;\n gap: number | string;\n radius: number | string;\n fontSize: number | string;\n titleWeight: number;\n iconSize: number;\n};\n\ntype AlertCtxT = {\n fg: string;\n iconColor: string;\n s: SizeScale;\n};\n\nconst AlertCtx = createContext<AlertCtxT | null>(null);\nconst useAlertCtx = (): AlertCtxT => {\n const v = useContext(AlertCtx);\n if (!v) throw new Error(\"AlertTitle and AlertDescription must be used inside <Alert>.\");\n return v;\n};\n\nexport const Alert: React.ForwardRefExoticComponent<\n AlertProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n {\n intent = \"neutral\" as AlertIntent,\n variant = \"soft\",\n icon,\n actionButton,\n onClose,\n width = \"100%\",\n size = \"md\",\n className,\n css: userCss,\n children,\n ...rest\n },\n ref\n): React.ReactElement {\n const theme = usePlainframeUITheme();\n\n const s: SizeScale = useMemo<SizeScale>(() => {\n const map: Record<NonNullable<typeof size>, SizeScale> = {\n sm: {\n paddingX: theme.spacing?.md ?? 12,\n paddingY: \"0.6rem\",\n gap: 8,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.sm ?? \"0.875rem\",\n titleWeight: 600,\n iconSize: 16,\n },\n md: {\n paddingX: theme.spacing?.lg ?? 16,\n paddingY: \"0.9rem\",\n gap: 8,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.md ?? \"1rem\",\n titleWeight: 600,\n iconSize: 20,\n },\n lg: {\n paddingX: theme.spacing?.xl ?? 20,\n paddingY: \"1.1rem\",\n gap: 10,\n radius: theme.radius?.md ?? 8,\n fontSize: theme.fontSizes?.lg ?? \"1.125rem\",\n titleWeight: 600,\n iconSize: 24,\n },\n };\n return ([\"sm\", \"md\", \"lg\"].includes(size) ? map[size as \"sm\" | \"md\" | \"lg\"] : map.md);\n }, [size, theme.fontSizes, theme.radius, theme.spacing]);\n\n const palette = theme.palette ?? {};\n const neutral = theme.neutral ?? {};\n\n const colors = useMemo((): { bg: string; fg: string; border?: string; iconColor: string } => {\n const pick = (sem: AlertIntent) => {\n if (sem === \"danger\") return palette.danger ?? palette.error ?? neutral;\n if (sem === \"warning\") return palette.warning ?? neutral;\n if (sem === \"success\") return palette.success ?? neutral;\n if (sem === \"info\") return palette.info ?? palette.primary ?? neutral;\n return neutral;\n };\n const scale = pick(intent) as Record<number, string>;\n const c50 = scale?.[50] ?? neutral[50];\n const c300 = scale?.[300] ?? neutral[300];\n const c600 = scale?.[600] ?? scale?.[500] ?? neutral[600];\n const c700 = scale?.[700] ?? c600;\n const c800 = scale?.[800] ?? theme.text?.primary ?? \"#000\";\n const onColor = theme.text?.onColors?.[intent] ?? theme.text?.onColors?.primary ?? theme.text?.primary ?? \"#fff\";\n\n if (variant === \"filled\") return { bg: c600, fg: onColor, border: undefined, iconColor: onColor };\n if (variant === \"outlined\") return { bg: c50, fg: c800, border: `1px solid ${c300}`, iconColor: c800 };\n if (variant === \"ghost\") return { bg: \"transparent\", fg: c700, border: \"none\", iconColor: c700 };\n return { bg: c50, fg: c800, border: undefined, iconColor: c700 };\n }, [intent, variant, neutral, palette, theme.text]);\n\n const role: \"alert\" | \"status\" = intent === \"danger\" || intent === \"warning\" ? \"alert\" : \"status\";\n\n const iconEl: React.ReactNode = useMemo(() => {\n if (icon !== undefined && icon !== null) return icon;\n if (intent === \"danger\") return <CircleAlert css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n if (intent === \"warning\") return <TriangleAlert css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n if (intent === \"success\") return <CircleCheckBig css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n return <Info css={{ width: s.iconSize, height: s.iconSize }} color={colors.iconColor} />;\n }, [icon, intent, s.iconSize, colors.iconColor]);\n\n const rootCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n padding: `${s.paddingY} ${s.paddingX}`,\n gap: s.gap,\n borderRadius: s.radius,\n backgroundColor: colors.bg,\n color: colors.fg,\n border: colors.border,\n fontSize: s.fontSize,\n fontWeight: 500,\n width: typeof width === \"number\" ? `${width}px` : width,\n }),\n [colors.bg, colors.border, colors.fg, s.fontSize, s.gap, s.paddingX, s.paddingY, s.radius, width]\n );\n\n const leftCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: s.gap,\n minWidth: 0,\n flex: 1,\n }),\n [s.gap]\n );\n\n const iconWrapCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n lineHeight: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: colors.iconColor,\n flex: \"0 0 auto\",\n }),\n [colors.iconColor]\n );\n\n const contentCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n flexDirection: \"column\",\n textAlign: \"left\",\n minWidth: 0,\n flex: 1,\n }),\n []\n );\n\n const rightCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"flex\",\n alignItems: \"center\",\n gap: s.gap,\n marginLeft: s.gap,\n flex: \"0 0 auto\",\n }),\n [s.gap]\n );\n\n const closeBtnCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"none\",\n background: \"transparent\",\n padding: 0,\n cursor: onClose ? \"pointer\" : \"default\",\n lineHeight: 0,\n color: colors.fg,\n }),\n [colors.fg, onClose]\n );\n\n const ctxVal: AlertCtxT = useMemo<AlertCtxT>(\n () => ({ fg: colors.fg, iconColor: colors.iconColor, s }),\n [colors.fg, colors.iconColor, s]\n );\n\n return (\n <AlertCtx.Provider value={ctxVal}>\n <div\n ref={ref}\n role={role}\n aria-atomic=\"true\"\n className={[\"plainframe-ui-alert\", `plainframe-ui-alert-${intent}`, `plainframe-ui-alert-${variant}`, className || \"\"]\n .join(\" \")\n .trim()}\n css={[rootCss, userCss]}\n {...rest}\n >\n <div className=\"plainframe-ui-alert-left\" css={leftCss}>\n {iconEl && <span className=\"plainframe-ui-alert-icon\" css={iconWrapCss}>{iconEl}</span>}\n <div className=\"plainframe-ui-alert-content\" css={contentCss}>{children}</div>\n </div>\n {(actionButton || onClose) && (\n <div className=\"plainframe-ui-alert-actions\" css={rightCss}>\n {actionButton}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close alert\"\n onClick={onClose}\n className=\"plainframe-ui-alert-close\"\n css={closeBtnCss}\n >\n <X size={s.iconSize - 2} />\n </button>\n )}\n </div>\n )}\n </div>\n </AlertCtx.Provider>\n );\n});\n\nexport const AlertTitle: React.ForwardRefExoticComponent<\n SubProps & React.RefAttributes<HTMLSpanElement>\n> = forwardRef<HTMLSpanElement, SubProps>(function AlertTitle(\n { children, className, css: userCss, ...rest },\n ref\n): React.ReactElement {\n const { fg, s } = useAlertCtx();\n const titleCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n color: fg,\n fontWeight: s.titleWeight,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }),\n [fg, s.titleWeight]\n );\n return (\n <span\n ref={ref}\n className={[\"plainframe-ui-alert-title\", className || \"\"].join(\" \").trim()}\n css={[titleCss, userCss]}\n {...rest}\n >\n {children}\n </span>\n );\n});\n\nexport const AlertDescription: React.ForwardRefExoticComponent<\n SubProps & React.RefAttributes<HTMLSpanElement>\n> = forwardRef<HTMLSpanElement, SubProps>(function AlertDescription(\n { children, className, css: userCss, ...rest },\n ref\n): React.ReactElement {\n const { fg } = useAlertCtx();\n const descCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n color: fg,\n marginTop: 2,\n lineHeight: 1.35,\n wordBreak: \"break-word\",\n }),\n [fg]\n );\n return (\n <span\n ref={ref}\n className={[\"plainframe-ui-alert-desc\", className || \"\"].join(\" \").trim()}\n css={[descCss, userCss]}\n {...rest}\n >\n {children}\n </span>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useEffect, useRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { TextField } from \"./TextField\";\nimport {\n DropdownMenu as DropdownRoot,\n DropdownMenuTrigger,\n DropdownMenuContent,\n useDropdownMenuActiveIndex,\n} from \"./DropdownMenu\";\nimport { MenuItem, MenuCheckboxItem, MenuLabel } from \"./MenuItems\";\nimport {\n Card,\n CardStart,\n CardContent,\n CardTitle,\n CardDescription,\n CardEnd,\n} from \"./Card\";\n\ntype AutocompleteItem = {\n value: string;\n title?: string;\n description?: string;\n disabled?: boolean;\n group?: string;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n css?: Interpolation<Theme>;\n // Allow additional properties with unknown type\n [key: string]: unknown;\n};\n\ntype WithCss = { css?: Interpolation<Theme> };\n\ntype AutocompleteProps = WithCss & {\n items?: AutocompleteItem[];\n onSelect?: (item: AutocompleteItem) => void;\n\n width?: number | string;\n fullWidth?: boolean;\n placeholder?: string;\n renderItem?: (\n item: AutocompleteItem,\n selected?: boolean,\n hovered?: boolean\n ) => React.ReactNode;\n\n inputCss?: Interpolation<Theme>;\n containerCss?: Interpolation<Theme>;\n className?: string;\n label?: string;\n helperText?: string;\n\n variant?: \"subtle\" | \"outlined\" | \"ghost\";\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n focusRingMode?: \"always\" | \"none\";\n\n itemsOpen?: boolean;\n onItemsOpenChange?: (open: boolean) => void;\n openOnFocus?: boolean;\n openOnType?: boolean;\n openOnClick?: boolean;\n\n freeItem?: boolean | { prefix?: string; suffix?: string };\n\n maxHeight?: number | string;\n maxItems?: number;\n noResultsText?: string;\n\n highlightTypedValue?: boolean;\n typedValueHighlightCss?: Interpolation<Theme>;\n\n showNoResults?: boolean;\n\n loadItems?: (query: string) => Promise<AutocompleteItem[]>;\n loading?: boolean;\n loadingText?: string;\n debounceMs?: number;\n\n multiple?: boolean;\n selectedValues?: string[];\n defaultSelectedValues?: string[];\n onChangeSelected?: (items: AutocompleteItem[]) => void;\n};\n\nconst normalize = (s: string) =>\n s\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim()\n .toLowerCase();\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Autocomplete: React.FC<AutocompleteProps> = ({\n items = [],\n onSelect,\n\n width = 300,\n fullWidth = false,\n placeholder,\n\n renderItem,\n\n focusRingMode,\n css: rootCssOverride,\n inputCss,\n containerCss,\n className,\n label,\n helperText,\n variant,\n startIcon,\n endIcon,\n size,\n\n itemsOpen,\n onItemsOpenChange,\n openOnFocus = true,\n openOnType = true,\n\n freeItem = false,\n\n maxHeight,\n maxItems = 6,\n noResultsText = \"No results\",\n\n highlightTypedValue,\n typedValueHighlightCss,\n\n showNoResults = false,\n\n loadItems,\n loading: loadingProp,\n loadingText = \"Loading…\",\n debounceMs = 200,\n\n multiple = false,\n selectedValues,\n defaultSelectedValues,\n onChangeSelected,\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n const isOpenControlled = typeof itemsOpen === \"boolean\";\n const [ucOpen, setUcOpen] = useState(false);\n const open = isOpenControlled ? (itemsOpen as boolean) : ucOpen;\n\n const requestOpen = (next: boolean) => {\n if (!isOpenControlled) setUcOpen(next);\n onItemsOpenChange?.(next);\n };\n\n const [ucMulti, setUcMulti] = useState<string[]>(defaultSelectedValues ?? []);\n const currentMulti = selectedValues ?? ucMulti;\n\n const [selected, setSelected] = useState<AutocompleteItem | null>(null);\n\n const [asyncItems, setAsyncItems] = useState<AutocompleteItem[]>([]);\n const [internalLoading, setInternalLoading] = useState(false);\n const isAsync = typeof loadItems === \"function\";\n const effectiveItems = isAsync ? asyncItems : items;\n const isLoading = Boolean(loadingProp) || (internalLoading && isAsync);\n\n const debounceRef = useRef<number | null>(null);\n useEffect(() => {\n if (!isAsync) return;\n if (debounceRef.current) window.clearTimeout(debounceRef.current);\n const q = inputValue;\n debounceRef.current = window.setTimeout(async () => {\n setInternalLoading(true);\n try {\n const next = (await loadItems!(q)) || [];\n setAsyncItems(Array.isArray(next) ? next : []);\n } catch {\n setAsyncItems([]);\n } finally {\n setInternalLoading(false);\n }\n }, Math.max(0, debounceMs));\n return () => {\n if (debounceRef.current) window.clearTimeout(debounceRef.current);\n };\n }, [inputValue, isAsync, loadItems, debounceMs]);\n\n const equalExists = useMemo(() => {\n const q = normalize(inputValue);\n if (!q) return false;\n return effectiveItems.some((o) => normalize(o.title ?? o.value) === q);\n }, [effectiveItems, inputValue]);\n\n const allowFree = !!freeItem && inputValue.trim().length > 0 && !equalExists;\n\n const buildFreeLabel = (v: string) => {\n if (typeof freeItem === \"object\") {\n const hasPrefix = Object.prototype.hasOwnProperty.call(freeItem, \"prefix\");\n const hasSuffix = Object.prototype.hasOwnProperty.call(freeItem, \"suffix\");\n if (hasPrefix || hasSuffix) {\n const prefix = hasPrefix ? freeItem.prefix ?? \"\" : \"\";\n const suffix = hasSuffix ? freeItem.suffix ?? \"\" : \"\";\n return `${prefix}${v}${suffix}`;\n }\n return `Add \"${v}\"`;\n }\n return `Add \"${v}\"`;\n };\n\n const filteredBase = useMemo(() => {\n if (isAsync) return effectiveItems;\n const q = normalize(inputValue);\n if (!q) return effectiveItems;\n let res = effectiveItems.filter((it) => {\n const label = normalize(it.title ?? it.value);\n return label.split(\" \").some((w) => w.startsWith(q));\n });\n if (res.length === 0) {\n res = effectiveItems.filter((it) =>\n normalize(it.title ?? it.value).includes(q)\n );\n }\n return res;\n }, [effectiveItems, inputValue, isAsync]);\n\n const baseWithFree = useMemo(() => {\n if (allowFree && filteredBase.length === 0) {\n const v = inputValue.trim();\n return [\n ...filteredBase,\n {\n value: v,\n title: buildFreeLabel(v),\n __pfui_free__: true,\n } as AutocompleteItem,\n ];\n }\n return filteredBase;\n }, [filteredBase, allowFree, inputValue]);\n\n const sections = useMemo(() => {\n const order: string[] = [];\n const groups = new Map<string, AutocompleteItem[]>();\n const keyOf = (o: AutocompleteItem) => o.group ?? \"__ungrouped__\";\n for (const o of baseWithFree) {\n const k = keyOf(o);\n if (!groups.has(k)) {\n groups.set(k, []);\n order.push(k);\n }\n groups.get(k)!.push(o);\n }\n const max = typeof maxItems === \"number\" ? Math.max(0, maxItems) : Infinity;\n let remaining = max;\n const out: Array<{ label?: string; items: AutocompleteItem[] }> = [];\n for (const k of order) {\n if (remaining <= 0) break;\n const list = groups.get(k)!;\n const take = list.slice(0, remaining);\n if (take.length > 0) {\n out.push({\n label: k === \"__ungrouped__\" ? undefined : k,\n items: take,\n });\n remaining -= take.length;\n }\n }\n return out;\n }, [baseWithFree, maxItems]);\n\n const hasItems = sections.some((s) => s.items.length > 0);\n const shouldShowNoResults = !hasItems && !!showNoResults && !isLoading;\n const panelHasContent = isLoading || hasItems || shouldShowNoResults;\n\n const emitMultiChange = (nextValues: string[]) => {\n const nextItems = effectiveItems\n .filter((i) => nextValues.includes(i.value))\n .concat(\n nextValues\n .filter((v) => !effectiveItems.some((o) => o.value === v))\n .map((v) => ({ value: v, title: v }))\n );\n onChangeSelected?.(nextItems);\n };\n\n const pick = (value: string) => {\n const it =\n effectiveItems.find((o) => o.value === value) ??\n ({ value, title: value } as AutocompleteItem);\n\n if (it.disabled) return;\n\n onSelect?.(it);\n\n if (multiple) {\n const exists = currentMulti.includes(it.value);\n const next = exists\n ? currentMulti.filter((v) => v !== it.value)\n : [...currentMulti, it.value];\n\n if (selectedValues) {\n emitMultiChange(next);\n } else {\n setUcMulti(next);\n emitMultiChange(next);\n }\n\n setInputValue(\"\");\n if (!isOpenControlled) requestOpen(true);\n } else {\n setSelected(it);\n setInputValue(it.title ?? it.value);\n if (!isOpenControlled) requestOpen(false);\n }\n };\n\n const handleInputChange = (val: string) => {\n if (!multiple) setSelected(null);\n setInputValue(val);\n if (!isOpenControlled && openOnType && val.trim().length > 0) {\n requestOpen(true);\n }\n };\n\n const cls = (s: string) =>\n `plainframe-ui-autocomplete${s ? `-${s}` : \"\"}`;\n\n const focusFirstMenuItem = () => {\n if (typeof document === \"undefined\") return;\n const menu = document.querySelector<HTMLElement>(`.${cls(\"menu\")}`);\n if (!menu) return;\n const first = menu.querySelector<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n );\n first?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \" \" || e.code === \"Space\" || e.key === \"Spacebar\") {\n e.stopPropagation();\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (!open && !isOpenControlled) {\n requestOpen(true);\n requestAnimationFrame(focusFirstMenuItem);\n } else {\n focusFirstMenuItem();\n }\n return;\n }\n if (e.key === \"Tab\" && !e.shiftKey && open) {\n const menu =\n typeof document !== \"undefined\"\n ? document.querySelector<HTMLElement>(`.${cls(\"menu\")}`)\n : null;\n if (menu) {\n const first = menu.querySelector<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n );\n if (first) {\n e.preventDefault();\n first.focus();\n return;\n }\n }\n }\n if (e.key === \"Enter\") {\n if (open) {\n e.preventDefault();\n return;\n }\n if (!multiple) {\n if (filteredBase.length > 0) {\n pick(filteredBase[0].value);\n } else if (freeItem && inputValue.trim()) {\n pick(inputValue.trim());\n }\n }\n } else if (e.key === \"Escape\") {\n if (!isOpenControlled) requestOpen(false);\n }\n };\n\n const handleInputFocus = () => {\n if (!isOpenControlled && openOnFocus) requestOpen(true);\n };\n\n const wrapCss = css({\n position: \"relative\",\n display: fullWidth ? \"block\" : \"inline-block\",\n width: fullWidth ? \"100%\" : \"auto\",\n });\n\n const triggerCss = css({\n width: fullWidth ? \"100%\" : width != null ? toLen(width) : \"auto\",\n });\n\n const anchorCss = css({\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n });\n\n const paint = (text: string) => {\n if (!highlightTypedValue || !inputValue) return text;\n const idx = text.toLowerCase().indexOf(inputValue.toLowerCase());\n if (idx < 0) return text;\n return (\n <span className={cls(\"highlight-wrap\")} css={css({ display: \"inline\" })}>\n {text.slice(0, idx)}\n <span\n className={cls(\"highlight\")}\n css={[css({ display: \"inline\", fontWeight: 600 }), typedValueHighlightCss]}\n >\n {text.slice(idx, idx + inputValue.length)}\n </span>\n {text.slice(idx + inputValue.length)}\n </span>\n );\n };\n\n const rowBaseCss = css({ minWidth: 0 });\n const itemCardCss = css({ width: \"100%\" });\n const contentNodes: React.ReactNode[] = [];\n\n const Row: React.FC<{ item: AutocompleteItem; absIndex: number }> = ({\n item,\n absIndex,\n }) => {\n const activeIndex = useDropdownMenuActiveIndex();\n const hovered = activeIndex === absIndex;\n\n if (multiple) {\n const checked = currentMulti.includes(item.value);\n const content = renderItem ? (\n renderItem(item, checked, hovered)\n ) : (\n <Card variant=\"ghost\" hoverable={false} selectable={false} padding={0} radius=\"sm\" css={itemCardCss}>\n {item.startIcon && <CardStart align=\"center\">{item.startIcon}</CardStart>}\n <CardContent align=\"start\">\n <CardTitle>{paint(String(item.title ?? item.value))}</CardTitle>\n {item.description && <CardDescription>{item.description}</CardDescription>}\n </CardContent>\n {item.endIcon && <CardEnd align=\"center\">{item.endIcon}</CardEnd>}\n </Card>\n );\n\n return (\n <MenuCheckboxItem\n __index={absIndex}\n key={item.value}\n checked={checked}\n onCheckedChange={() => !item.disabled && pick(item.value)}\n aria-disabled={!!item.disabled}\n disabled={!!item.disabled}\n className={cls(\"checkbox-item\")}\n css={css(rowBaseCss as any, item.css as any)}\n >\n {content}\n </MenuCheckboxItem>\n );\n }\n\n const isSelected = selected?.value === item.value;\n\n const content = renderItem ? (\n renderItem(item, isSelected, hovered)\n ) : (\n <Card variant=\"ghost\" hoverable={false} selectable={false} padding={0} radius=\"sm\" css={itemCardCss}>\n {item.startIcon && <CardStart align=\"center\">{item.startIcon}</CardStart>}\n <CardContent align=\"start\">\n <CardTitle>{paint(String(item.title ?? item.value))}</CardTitle>\n {item.description && <CardDescription>{item.description}</CardDescription>}\n </CardContent>\n {item.endIcon && <CardEnd align=\"center\">{item.endIcon}</CardEnd>}\n </Card>\n );\n\n const handleSelect = () => {\n if (!item.disabled) pick(item.value);\n };\n\n return (\n <MenuItem\n __index={absIndex}\n key={item.value}\n onClick={handleSelect}\n onSelect={handleSelect}\n aria-disabled={!!item.disabled}\n disabled={!!item.disabled}\n className={cls(\"item\")}\n css={css(rowBaseCss as any, item.css as any)}\n selected={isSelected}\n >\n {content}\n </MenuItem>\n );\n };\n\n if (isLoading) {\n contentNodes.push(\n <MenuLabel key=\"loading\" className={cls(\"label-loading\")}>\n {loadingText}\n </MenuLabel>\n );\n } else if (shouldShowNoResults) {\n contentNodes.push(\n <MenuLabel key=\"empty\" className={cls(\"label-empty\")}>\n {noResultsText}\n </MenuLabel>\n );\n } else {\n let abs = 0;\n sections.forEach((sec, gi) => {\n if (sec.label)\n contentNodes.push(\n <MenuLabel key={`g-${gi}`} className={cls(\"group-label\")}>\n {sec.label}\n </MenuLabel>\n );\n sec.items.forEach((it) => {\n contentNodes.push(<Row key={`${it.value}-${abs}`} item={it} absIndex={abs} />);\n abs += 1;\n });\n });\n }\n\n return (\n <div\n className={[cls(\"\"), className || \"\"].join(\" \").trim()}\n css={[wrapCss, containerCss, rootCssOverride]}\n tabIndex={-1}\n >\n <DropdownRoot open={open} onOpenChange={requestOpen}>\n <DropdownMenuTrigger asChild>\n <div aria-hidden=\"true\" tabIndex={-1} className={cls(\"anchor\")} css={anchorCss} />\n </DropdownMenuTrigger>\n\n <div className={cls(\"trigger\")} css={triggerCss}>\n <TextField\n className={cls(\"input\")}\n focusRingMode={focusRingMode}\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleInputFocus}\n placeholder={placeholder}\n label={label}\n helperText={helperText}\n variant={variant}\n startIcon={startIcon}\n endIcon={endIcon}\n size={size}\n width={width}\n fullWidth={fullWidth}\n css={inputCss}\n />\n </div>\n\n {panelHasContent && (\n <DropdownMenuContent\n className={cls(\"menu\")}\n sameWidth\n side=\"bottom\"\n align=\"start\"\n maxHeight={typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight}\n >\n {contentNodes}\n </DropdownMenuContent>\n )}\n </DropdownRoot>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useRef,\n useState,\n isValidElement,\n cloneElement,\n useId,\n useMemo,\n useCallback,\n forwardRef,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Eye, EyeOff, X } from \"lucide-react\";\nimport { useFocusWithinRing } from \"../utils/focusRing\";\n\n/* ───────── utils ───────── */\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nconst u = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst asArray = (v?: Interpolation<Theme>): Interpolation<Theme>[] =>\n v == null ? [] : Array.isArray(v) ? v : [v];\n\n// ✅ Avoid template-literal overload; always pass arrays/objects.\nconst mergeCss = (\n ...parts: Array<Interpolation<Theme> | false | null | undefined>\n): Interpolation<Theme> => css(parts.filter(Boolean) as any);\n\nfunction cloneIcon(icon: React.ReactNode, px: number, color = \"currentColor\") {\n if (!isValidElement(icon)) return icon;\n const props: any = (icon as any).props || {};\n const next: Record<string, any> = {};\n if (props.size == null) next.size = px;\n if (props.color == null) next.color = color;\n if (props.style?.fontSize == null)\n next.style = { ...(props.style || {}), fontSize: px };\n return cloneElement(icon as any, { ...props, ...next });\n}\n\n/* ───────── types ───────── */\nexport type TextFieldProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n fullWidth?: boolean;\n width?: number | string;\n size?: SizeKey;\n variant?: Variant;\n rounded?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n togglePasswordVisible?: boolean;\n showClear?: boolean;\n type?: \"text\" | \"password\" | \"number\" | (string & {});\n step?: number;\n focusRingMode?: \"always\" | \"none\";\n wrapperCss?: Interpolation<Theme>;\n inputCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n startIconCss?: Interpolation<Theme>;\n endIconCss?: Interpolation<Theme>;\n className?: string;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n autoFocus?: boolean;\n name?: string;\n id?: string;\n tabIndex?: number;\n autoComplete?: string;\n readOnly?: boolean;\n required?: boolean;\n maxLength?: number;\n};\n\n/* ───────── component ───────── */\nexport const TextField: React.ForwardRefExoticComponent<\n TextFieldProps & React.RefAttributes<HTMLInputElement>\n> = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n {\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n error,\n helperText,\n disabled = false,\n fullWidth = false,\n width = 250,\n size = \"md\",\n variant = \"subtle\",\n rounded = false,\n startIcon,\n endIcon,\n togglePasswordVisible = false,\n showClear,\n type = \"text\",\n step,\n focusRingMode = \"always\",\n className,\n wrapperCss: userWrapperCss,\n inputCss: userInputCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n startIconCss: userStartIconCss,\n endIconCss: userEndIconCss,\n css: userSurfaceCss,\n onBlur,\n onFocus,\n onKeyDown,\n autoFocus,\n name,\n id,\n tabIndex,\n autoComplete,\n readOnly,\n required,\n maxLength,\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const ring = useFocusWithinRing();\n const reactId = useId();\n\n const s = useMemo(() => {\n const map = {\n sm: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.sm,\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n width: \"12.5rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 21,\n },\n md: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.md,\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n width: \"15rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 24,\n },\n lg: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n width: \"18.125rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n iconSize: theme.fontSizes.sm,\n codeFontSize: 28,\n },\n } as const;\n const key: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size as any)\n ? (size as SizeKey)\n : \"md\";\n return map[key];\n }, [size, theme]);\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isNumberType = type === \"number\";\n const isPassword = type === \"password\";\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr = isControlled ? (value as string) : internal;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const numberRegex = /^-?\\d*(?:[.,]\\d*)?$/;\n const wantsDecimal =\n isNumberType &&\n ((step != null && String(step).includes(\".\")) || /[.,]/.test(curr ?? \"\"));\n const inputMode = isNumberType ? (wantsDecimal ? \"decimal\" : \"numeric\") : undefined;\n const pattern = isNumberType ? (wantsDecimal ? \"[0-9]*[.,]?[0-9]*\" : \"[0-9]*\") : undefined;\n\n const handleNumberTyping = useCallback(\n (v: string) => {\n if (v === \"\" || numberRegex.test(v)) setValue(v);\n },\n [setValue]\n );\n\n const surfaceBg =\n disabled\n ? N[200]\n : variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg\n : \"transparent\";\n\n const borderW = theme.componentHeights.border;\n const surfaceBorder =\n variant === \"outlined\"\n ? `${borderW} solid ${error ? theme.palette.danger[600] : theme.surface.border}`\n : \"none\";\n\n const rootCss = mergeCss({\n boxSizing: \"border-box\",\n display: \"block\",\n minWidth: 0,\n width: \"100%\",\n maxWidth: fullWidth ? \"100%\" : width != null ? u(width) : undefined,\n flex: \"0 0 auto\",\n fontWeight: 500,\n });\n\n const labelCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error ? theme.palette.danger?.[700] ?? T.primary : disabled ? N[500] : T.primary,\n marginBottom: 4,\n display: \"inline-block\",\n },\n ...asArray(userLabelCss)\n ),\n [s.labelFont, error, disabled, N, T, theme.palette.danger, userLabelCss]\n );\n\n const surfaceBaseCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n padding: `${u(s.paddingY)} ${u(s.paddingX)}`,\n background: surfaceBg,\n border: surfaceBorder,\n borderRadius: rounded ? (theme.radius.full as string) : (theme.radius.md as string),\n minHeight: s.minHeight,\n boxSizing: \"border-box\",\n width: \"100%\",\n cursor: disabled ? \"not-allowed\" : \"text\",\n opacity: disabled ? 0.65 : 1,\n transition: \"box-shadow .18s, border-color .16s\",\n },\n ...asArray(userWrapperCss),\n ...asArray(userSurfaceCss)\n ),\n [\n theme,\n s.minHeight,\n s.paddingX,\n s.paddingY,\n surfaceBg,\n surfaceBorder,\n rounded,\n disabled,\n userWrapperCss,\n userSurfaceCss,\n ]\n );\n\n const inputBaseCss = useMemo(\n () =>\n mergeCss(\n {\n flex: 1,\n minWidth: 0,\n font: \"inherit\",\n fontWeight: 500,\n fontSize: s.fontSize,\n color: disabled ? N[500] : T.primary,\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n padding: 0,\n lineHeight: 1.25,\n cursor: disabled ? \"not-allowed\" : \"text\",\n appearance: isNumberType ? \"textfield\" : \"auto\",\n \"&::placeholder\": { color: T.secondary },\n \"&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus\": {\n WebkitTextFillColor: `${T.primary} !important`,\n boxShadow: `0 0 0 1000px ${surfaceBg} inset !important`,\n transition: \"opacity 99999s ease-out\",\n caretColor: T.primary,\n },\n \":focus-within\": { outline: \"none\", border: \"none\", boxShadow: \"none\" },\n },\n ...asArray(userInputCss)\n ),\n [s.fontSize, disabled, N, T, isNumberType, surfaceBg, userInputCss]\n );\n\n const startSlotCss = useMemo(\n () =>\n mergeCss(\n { display: \"inline-flex\", alignItems: \"center\", color: T.secondary, marginLeft: -3 },\n ...asArray(userStartIconCss)\n ),\n [T.secondary, userStartIconCss]\n );\n\n const endSlotCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"inline-flex\",\n alignItems: \"center\",\n color: T.secondary,\n border: \"none\",\n background: \"transparent\",\n lineHeight: 0,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n padding: 0,\n },\n ...asArray(userEndIconCss)\n ),\n [T.secondary, disabled, userEndIconCss]\n );\n\n const helperRowCss = useMemo(\n () =>\n mergeCss(\n {\n minHeight: 16,\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n paddingTop: 3,\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 8,\n width: \"100%\",\n },\n ...asArray(userHelperRowCss)\n ),\n [s.helperFont, error, theme.palette.danger, T.secondary, userHelperRowCss]\n );\n\n const helperTextCss = useMemo(\n () =>\n mergeCss(\n { flex: 1, wordBreak: \"break-word\", whiteSpace: \"pre-wrap\", minWidth: 0, fontWeight: 400 },\n ...asArray(userHelperTextCss)\n ),\n [userHelperTextCss]\n );\n\n const localRef = useRef<HTMLInputElement>(null);\n const setRefs = useCallback(\n (el: HTMLInputElement | null) => {\n localRef.current = el;\n if (!ref) return;\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = el;\n }\n },\n [ref]\n );\n\n const handleTextChange: React.ChangeEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n const v = e.target.value;\n if (isNumberType) {\n handleNumberTyping(v);\n return;\n }\n if (maxLength && v.length > maxLength) return;\n setValue(v);\n },\n [isNumberType, maxLength, setValue, handleNumberTyping]\n );\n\n const [showPw, setShowPw] = useState(false);\n const togglePw = useCallback(() => {\n if (!disabled) setShowPw((p) => !p);\n }, [disabled]);\n\n const clear = useCallback(() => {\n if (disabled) return;\n setValue(\"\");\n localRef.current?.focus();\n }, [disabled, setValue]);\n\n const iconPx = useMemo(() => {\n const f = s.fontSize as any;\n if (typeof f === \"number\") return f;\n const n = parseFloat(String(f));\n return Number.isFinite(n) ? n : 16;\n }, [s.fontSize]);\n\n const startAdornment = useMemo(\n () => (startIcon ? <span css={startSlotCss}>{cloneIcon(startIcon, iconPx)}</span> : null),\n [startIcon, startSlotCss, iconPx]\n );\n\n const endAdornment = useMemo(() => {\n if (isPassword && togglePasswordVisible) {\n const node = showPw ? <Eye strokeWidth={2.5} size={iconPx} /> : <EyeOff strokeWidth={2.5} size={iconPx} />;\n return (\n <button\n type=\"button\"\n css={endSlotCss}\n onClick={(e) => {\n e.stopPropagation();\n togglePw();\n }}\n tabIndex={-1}\n aria-label={showPw ? \"Hide password\" : \"Show password\"}\n disabled={disabled}\n >\n {node}\n </button>\n );\n }\n if (showClear && curr && curr.length > 0 && !disabled) {\n return (\n <button\n type=\"button\"\n css={endSlotCss}\n onClick={(e) => {\n e.stopPropagation();\n clear();\n }}\n tabIndex={-1}\n aria-label=\"Clear\"\n >\n <X strokeWidth={2.5} size={iconPx} />\n </button>\n );\n }\n if (endIcon) return <span css={endSlotCss}>{cloneIcon(endIcon, iconPx)}</span>;\n return null;\n }, [\n isPassword,\n togglePasswordVisible,\n showPw,\n iconPx,\n endSlotCss,\n disabled,\n showClear,\n curr,\n endIcon,\n togglePw,\n clear,\n ]);\n\n const helperId = helperText != null ? `${id ?? reactId}-help` : undefined;\n const inputId = id ?? reactId;\n\n return (\n <div className={[\"plainframe-ui-textfield\", className || \"\"].join(\" \").trim()} css={rootCss}>\n {label && (\n <label htmlFor={inputId} className=\"plainframe-ui-textfield-label\" css={labelCss}>\n {label}\n </label>\n )}\n\n <div\n className=\"plainframe-ui-textfield-surface\"\n css={[ring({ enabled: focusRingMode !== \"none\" }), surfaceBaseCss]}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button,[role='button']\")) return;\n localRef.current?.focus();\n }}\n aria-invalid={!!error || undefined}\n >\n {startAdornment}\n\n <input\n ref={setRefs}\n id={inputId}\n className=\"plainframe-ui-textfield-input\"\n css={inputBaseCss}\n type={isPassword && !showPw ? \"password\" : \"text\"}\n inputMode={inputMode}\n pattern={pattern}\n value={curr}\n maxLength={!isNumberType ? maxLength : undefined}\n onChange={isNumberType ? (e) => handleNumberTyping(e.target.value) : handleTextChange}\n placeholder={placeholder || \"\"}\n disabled={disabled}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n autoFocus={autoFocus}\n name={name}\n tabIndex={tabIndex}\n autoComplete={autoComplete}\n readOnly={readOnly}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={helperId}\n />\n\n {endAdornment}\n </div>\n\n {helperText != null && (\n <div className=\"plainframe-ui-textfield-helper-row\" css={helperRowCss}>\n <span id={helperId} className=\"plainframe-ui-textfield-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n </div>\n )}\n </div>\n );\n});\nTextField.displayName = \"TextField\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useMemo,\n useState,\n useRef,\n useEffect,\n useContext,\n createContext,\n forwardRef,\n cloneElement,\n useCallback,\n isValidElement,\n} from \"react\";\nimport { css as emCss, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport {\n useFloating,\n flip,\n shift,\n offset as offsetMw,\n size as sizeMw,\n autoUpdate,\n useDismiss,\n useRole,\n useInteractions,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion, type Transition } from \"framer-motion\";\nimport { DenseCtx } from \"./Menu\";\n\n/* ───────── utils ───────── */\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void {\n if (!ref) return;\n if (typeof ref === \"function\") {\n (ref as (v: T | null) => void)(value);\n } else {\n (ref as unknown as { current: T | null }).current = value;\n }\n}\n\nexport const mergeRefs: <T>(\n ...refs: Array<React.Ref<T> | undefined>\n) => (node: T | null) => void =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null): void => {\n for (const ref of refs) setRef(ref, node);\n };\n\n/* body scroll lock */\n\nlet __scrollLocks = 0;\nlet __prevOverflow: string | null = null;\nlet __prevPaddingRight: string | null = null;\n\nconst getScrollbarWidth = (): number =>\n typeof window === \"undefined\" || typeof document === \"undefined\"\n ? 0\n : window.innerWidth - document.documentElement.clientWidth;\n\nfunction lockBodyScroll(): void {\n if (typeof document === \"undefined\") return;\n if (__scrollLocks === 0) {\n const body = document.body;\n __prevOverflow = body.style.overflow || \"\";\n __prevPaddingRight = body.style.paddingRight || \"\";\n const sw = getScrollbarWidth();\n body.style.overflow = \"hidden\";\n if (sw > 0) body.style.paddingRight = `${sw}px`;\n }\n __scrollLocks += 1;\n}\nfunction unlockBodyScroll(): void {\n if (typeof document === \"undefined\") return;\n if (__scrollLocks > 0) __scrollLocks -= 1;\n if (__scrollLocks === 0) {\n const body = document.body;\n if (__prevOverflow !== null) body.style.overflow = __prevOverflow;\n if (__prevPaddingRight !== null) body.style.paddingRight = __prevPaddingRight;\n __prevOverflow = null;\n __prevPaddingRight = null;\n }\n}\n\n/* ───────── types/ctx ───────── */\n\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\nexport type TriggerMode = \"click\" | \"hover\";\n\ntype VirtualRefLike = {\n getBoundingClientRect: () => DOMRect | ClientRect;\n contextElement?: Element;\n};\ntype PointAnchor = { x: number; y: number };\ntype Anchor = HTMLElement | VirtualRefLike | PointAnchor;\n\nexport type DropdownMenuRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: TriggerMode;\n lockScroll?: boolean;\n size?: \"sm\" | \"md\";\n children: React.ReactNode;\n};\n\nexport type DropdownMenuTriggerProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n \"style\"\n> & {\n asChild?: boolean;\n children: React.ReactElement | React.ReactNode;\n width?: string | number;\n css?: Interpolation<Theme>;\n};\n\nexport type DropdownMenuContentProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"style\"\n> & {\n anchor?: Anchor;\n side?: Side;\n align?: Align;\n sideOffset?: number | string;\n alignOffset?: number | string;\n collisionPadding?: number | string;\n sameWidth?: boolean;\n width?: number | string;\n height?: number | string;\n maxHeight?: number | string;\n unstyled?: boolean;\n closeOnBlur?: boolean;\n allItemsTabbable?: boolean;\n exitPlacement?: Side;\n animateOnBusClose?: boolean;\n gap?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | string | number;\n css?: Interpolation<Theme>;\n};\n\ntype Ctx = {\n open: boolean;\n setOpen: (v: boolean) => void;\n trigger: TriggerMode;\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n listRef: React.MutableRefObject<Array<HTMLElement | null>>;\n activeIndex: number | null;\n setActiveIndex: React.Dispatch<React.SetStateAction<number | null>>;\n scheduleHoverClose: (delay?: number) => void;\n clearHoverClose: () => void;\n};\nexport const MenuCtx: React.Context<Ctx | null> = createContext<Ctx | null>(null);\nconst useMenu = (): Ctx => {\n const v = useContext(MenuCtx);\n if (!v) throw new Error(\"DropdownMenu components must be used inside <DropdownMenu>.\");\n return v;\n};\n\nexport const FocusCtx: React.Context<{ allItemsTabbable: boolean }> =\n createContext<{ allItemsTabbable: boolean }>({\n allItemsTabbable: true,\n });\n\ntype RootHoverCtl = { clear: () => void; schedule: (d?: number) => void };\n\ntype RootBus = {\n registerCloser: (fn: () => void) => () => void;\n closeAll: () => void;\n registerHoverCtl: (ctl: RootHoverCtl) => () => void;\n clearAllHover: () => void;\n isBusClosingRef: { current: boolean };\n};\nexport const RootBusCtx: React.Context<RootBus | null> = React.createContext<RootBus | null>(null);\nconst useRootBus = (): RootBus | null => useContext(RootBusCtx);\n\nexport function createRootBus(): RootBus {\n const closers: Array<() => void> = [];\n const hovers = new Set<RootHoverCtl>();\n const isBusClosingRef = { current: false };\n return {\n registerCloser(fn: () => void) {\n closers.push(fn);\n return () => {\n const i = closers.indexOf(fn);\n if (i >= 0) closers.splice(i, 1);\n };\n },\n closeAll() {\n if (isBusClosingRef.current) return;\n isBusClosingRef.current = true;\n for (let i = closers.length - 1; i >= 0; i--) {\n try {\n closers[i]();\n } catch {\n // ignore\n }\n }\n queueMicrotask(() => {\n isBusClosingRef.current = false;\n });\n },\n registerHoverCtl(ctl: RootHoverCtl) {\n hovers.add(ctl);\n return () => hovers.delete(ctl);\n },\n clearAllHover() {\n hovers.forEach((h) => h.clear());\n },\n isBusClosingRef,\n };\n}\n\nexport const useDropdownMenuActiveIndex: () => number | null = (): number | null =>\n useMenu().activeIndex;\n\n/* ───────── root ───────── */\n\nexport const DropdownMenu: React.FC<DropdownMenuRootProps> = ({\n open: controlled,\n defaultOpen,\n onOpenChange,\n trigger = \"click\",\n lockScroll = true,\n size = \"md\",\n children,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n const setOpen = useCallback(\n (v: boolean): void => {\n if (controlled === undefined) setUncontrolled(v);\n onOpenChange?.(v);\n },\n [controlled, onOpenChange]\n );\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const hoverTimeoutRef = useRef<number | null>(null);\n const scheduleHoverClose = useCallback(\n (delay = 120): void => {\n if (trigger !== \"hover\") return;\n window.clearTimeout(hoverTimeoutRef.current ?? 0);\n hoverTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);\n },\n [trigger, setOpen]\n );\n const clearHoverClose = useCallback((): void => {\n if (hoverTimeoutRef.current) {\n window.clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n }, []);\n useEffect(() => () => clearHoverClose(), [clearHoverClose]);\n\n useEffect(() => {\n if (!lockScroll || !open) return;\n lockBodyScroll();\n return () => unlockBodyScroll();\n }, [open, lockScroll]);\n\n const parentBus = useRootBus();\n const [bus] = useState<RootBus>(() => parentBus ?? createRootBus());\n\n const value = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n activeIndex,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n }),\n [open, setOpen, trigger, activeIndex, scheduleHoverClose, clearHoverClose]\n );\n\n const denseFlag = size === \"sm\";\n\n return (\n <RootBusCtx.Provider value={bus}>\n <DenseCtx.Provider value={denseFlag}>\n <MenuCtx.Provider value={value}>{children}</MenuCtx.Provider>\n </DenseCtx.Provider>\n </RootBusCtx.Provider>\n );\n};\nDropdownMenu.displayName = \"DropdownMenu\";\n\n/* ───────── trigger ───────── */\n\nexport const DropdownMenuTrigger: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuTriggerProps> & React.RefAttributes<HTMLElement>\n> = React.forwardRef<HTMLElement, DropdownMenuTriggerProps>(\n ({ asChild = true, children, width, className, css: userCss, ...rest }, ref) => {\n const {\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n activeIndex,\n } = useMenu();\n\n const canAsChild = !!asChild && isValidElement(children);\n const childEl = canAsChild ? (children as React.ReactElement) : null;\n const childOnKeyDown =\n childEl && childEl.props && typeof childEl.props === \"object\" && \"onKeyDown\" in childEl.props\n ? (childEl.props.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined)\n : undefined;\n const childOnClick =\n childEl && childEl.props && typeof childEl.props === \"object\" && \"onClick\" in childEl.props\n ? (childEl.props.onClick as ((e: React.MouseEvent) => void) | undefined)\n : undefined;\n\n const { onKeyDown: propOnKeyDown, onClick: propOnClick, ...restProps } = rest as any;\n\n const setRefs = useMemo(\n () =>\n mergeRefs<HTMLElement | null>(\n ref,\n canAsChild && typeof (children as any).ref !== \"undefined\" ? (children as any).ref : undefined,\n (referenceRef as unknown) as React.Ref<HTMLElement | null>\n ),\n [ref, canAsChild, children, referenceRef]\n );\n\n const nodes = useCallback((): HTMLElement[] => listRef.current.filter(Boolean) as HTMLElement[], [listRef]);\n\n const focusIdx = useCallback(\n (idx: number): void => {\n const list = nodes();\n requestAnimationFrame(() => list[idx]?.focus());\n },\n [nodes]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent): void => {\n const list = nodes();\n const total = list.length;\n\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n if (!open) {\n e.preventDefault();\n setOpen(true);\n if (total) {\n const next = e.key === \"ArrowDown\" ? 0 : total - 1;\n setActiveIndex(next);\n focusIdx(next);\n }\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n if (open && total) {\n e.preventDefault();\n const delta = e.key === \"ArrowDown\" ? 1 : -1;\n let current = activeIndex ?? (e.key === \"ArrowDown\" ? -1 : total);\n const next = Math.min(Math.max(current + delta, 0), total - 1);\n setActiveIndex(next);\n focusIdx(next);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n }\n\n if ((e.key === \"Enter\" || e.key === \" \") && !open) {\n e.preventDefault();\n setOpen(true);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n\n if (e.key === \"Tab\" && open && !e.shiftKey) {\n if (total) {\n e.preventDefault();\n setActiveIndex(0);\n focusIdx(0);\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n return;\n }\n }\n\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n },\n [open, setOpen, activeIndex, setActiveIndex, childOnKeyDown, propOnKeyDown, nodes, focusIdx]\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent): void => {\n if (trigger === \"click\") {\n const path: EventTarget[] = (e.nativeEvent as any)?.composedPath?.() ?? [];\n const clickedTextEntry = path.some((el: any) => {\n if (!el || !el.tagName) return false;\n const t = String(el.tagName).toUpperCase();\n if (t === \"INPUT\" || t === \"TEXTAREA\") return true;\n if (el.isContentEditable) return true;\n const role = el.getAttribute?.(\"role\");\n return role === \"textbox\" || role === \"combobox\";\n });\n if (!clickedTextEntry) {\n e.stopPropagation();\n setOpen(!open);\n }\n }\n childOnClick?.(e);\n propOnClick?.(e);\n },\n [trigger, open, setOpen, childOnClick, propOnClick]\n );\n\n const hoverProps =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => {\n clearHoverClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n scheduleHoverClose();\n },\n }\n : {};\n\n const widthCss =\n width != null\n ? emCss({\n width: typeof width === \"number\" ? `${width}px` : width,\n })\n : undefined;\n\n if (canAsChild && childEl) {\n const childCss = (childEl as any).props?.css;\n return cloneElement(childEl, {\n ref: setRefs,\n tabIndex: (childEl.props as any).tabIndex ?? 0,\n className: [(childEl.props as any).className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, widthCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...hoverProps,\n ...restProps,\n });\n }\n\n return (\n <button\n ref={setRefs}\n className={className}\n css={[emCss({ display: \"inline-block\" }), widthCss, userCss]}\n type=\"button\"\n tabIndex={0}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...hoverProps}\n {...restProps}\n >\n {children}\n </button>\n );\n }\n);\nDropdownMenuTrigger.displayName = \"DropdownMenuTrigger\";\n\n/* ───────── content ───────── */\n\ntype MotionTransitions = Transition & {\n scale?: Transition;\n x?: Transition;\n y?: Transition;\n opacity?: Transition;\n};\n\nexport const DropdownMenuContent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuContentProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, DropdownMenuContentProps>(\n (\n {\n anchor,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n alignOffset = 0,\n collisionPadding = 8,\n sameWidth = false,\n width = 200,\n height,\n maxHeight,\n unstyled = false,\n closeOnBlur = false,\n allItemsTabbable = true,\n className,\n css: userCss,\n children,\n exitPlacement,\n animateOnBusClose = true,\n gap,\n ...rest\n },\n ref\n ) => {\n const {\n open,\n setOpen,\n referenceRef,\n scheduleHoverClose,\n clearHoverClose,\n setActiveIndex,\n } = useMenu();\n const theme = usePlainframeUITheme();\n const rootBus = useRootBus();\n\n useEffect(() => {\n if (!rootBus) return;\n const off = rootBus.registerCloser(() => setOpen(false));\n return () => {\n off && off();\n };\n }, [rootBus, setOpen]);\n\n const so = typeof sideOffset === \"string\" ? parseFloat(sideOffset) : sideOffset;\n const ao = typeof alignOffset === \"string\" ? parseFloat(alignOffset) : alignOffset;\n const cp =\n typeof collisionPadding === \"string\" ? parseFloat(collisionPadding) : collisionPadding;\n const placement = `${side}${align === \"center\" ? \"\" : `-${align}`}` as Placement;\n\n const virtualFromPoint = useCallback(\n (p: { x: number; y: number }): VirtualRefLike => ({\n getBoundingClientRect: () => {\n const x = Math.round(p.x);\n const y = Math.round(p.y);\n return {\n x,\n y,\n left: x,\n top: y,\n right: x,\n bottom: y,\n width: 0,\n height: 0,\n toJSON: () => ({ x, y, left: x, top: y, right: x, bottom: y, width: 0, height: 0 }),\n } as DOMRect;\n },\n contextElement: undefined,\n }),\n []\n );\n\n const normalizedAnchor = useMemo<HTMLElement | VirtualRefLike | null>(() => {\n if (!anchor) return null;\n if (anchor instanceof HTMLElement) return anchor;\n if (\n typeof anchor === \"object\" &&\n anchor !== null &&\n \"getBoundingClientRect\" in anchor &&\n typeof (anchor as VirtualRefLike).getBoundingClientRect === \"function\"\n )\n return anchor as VirtualRefLike;\n const a = anchor as { x?: number; y?: number };\n return virtualFromPoint({ x: a.x!, y: a.y! });\n }, [anchor, virtualFromPoint]);\n\n const { refs, x, y, strategy, context, update } = useFloating({\n open,\n onOpenChange: setOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMw({ mainAxis: so ?? 0, crossAxis: ao ?? 0 }),\n flip({ padding: cp ?? 8 }),\n shift({ padding: cp ?? 8 }),\n sizeMw({\n apply({ elements }) {\n const el = elements.floating as HTMLElement;\n el.style.boxSizing = \"border-box\";\n if (height != null)\n el.style.height = typeof height === \"number\" ? `${height}px` : String(height);\n else el.style.removeProperty(\"height\");\n },\n }),\n ],\n });\n\n useEffect(() => {\n if (normalizedAnchor) refs.setReference(normalizedAnchor);\n else if (referenceRef.current) refs.setReference(referenceRef.current);\n }, [refs, normalizedAnchor, referenceRef]);\n\n useEffect(() => {\n if (!open) return;\n const refEl = normalizedAnchor || referenceRef.current;\n const floatEl = refs.floating.current;\n if (!refEl || !floatEl) return;\n return autoUpdate(refEl, floatEl, update);\n }, [open, normalizedAnchor, referenceRef, refs, update]);\n\n useEffect(() => {\n if (open && !allItemsTabbable) setActiveIndex(0);\n }, [open, allItemsTabbable, setActiveIndex]);\n\n useEffect(() => {\n if (!closeOnBlur || !open) return;\n const onFocusIn = (): void => {\n const ae = document.activeElement as Node | null;\n const refEl = referenceRef.current;\n const fl = refs.floating.current;\n if (!ae) return;\n if (refEl?.contains(ae) || fl?.contains(ae)) return;\n setOpen(false);\n };\n document.addEventListener(\"focusin\", onFocusIn, true);\n return () => document.removeEventListener(\"focusin\", onFocusIn, true);\n }, [closeOnBlur, open, setOpen, referenceRef, refs.floating]);\n\n const dismiss = useDismiss(context, { outsidePressEvent: \"pointerdown\", escapeKey: true });\n const role = useRole(context, { role: \"menu\" });\n const { getFloatingProps } = useInteractions([dismiss, role]);\n\n const panelPad =\n typeof theme.spacing.xs === \"number\" ? `${theme.spacing.xs}px` : String(theme.spacing.xs);\n\n const resolvedGap =\n gap === undefined\n ? undefined\n : typeof gap === \"number\"\n ? gap\n : (theme.spacing as any)[gap] ?? gap;\n\n const baseCss = unstyled\n ? undefined\n : emCss({\n boxSizing: \"border-box\",\n background: theme.surface.panelBg,\n border: `${theme.componentHeights.border} solid ${theme.surface.border}`,\n borderRadius: theme.radius.lg,\n boxShadow: \"0 8px 32px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.02)\",\n \"--pfui-panel-pad\": panelPad,\n padding: \"var(--pfui-panel-pad)\",\n color: theme.text.primary,\n maxHeight,\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: resolvedGap,\n });\n\n let idx = -1;\n const annotate: (node: any) => any = (node: any): any => {\n if (!node || typeof node !== \"object\") return node;\n const type: any = (node as any).type;\n const name = type?.displayName;\n\n if (name === \"DropdownMenu\" || name === \"DropdownMenuSub\") return node;\n\n if (\n name === \"MenuItem\" ||\n name === \"MenuCheckboxItem\" ||\n name === \"MenuRadioItem\" ||\n name === \"MenuSwitchItem\"\n ) {\n idx += 1;\n return cloneElement(node, { __index: idx, key: (node as any).key ?? idx });\n }\n\n if (name === \"DropdownMenuTrigger\" || name === \"DropdownMenuSubTrigger\") {\n const kids = (node as any).props?.children;\n return cloneElement(node, { children: React.Children.map(kids, annotate) });\n }\n\n const kids = (node as any).props?.children;\n if (kids == null) return node;\n return cloneElement(node, { children: React.Children.map(kids, annotate) });\n };\n\n const enhancedChildren = React.Children.map(children, annotate);\n\n const [refWidth, setRefWidth] = useState<number | null>(null);\n\n useEffect(() => {\n if (!sameWidth) return;\n const node =\n (normalizedAnchor instanceof HTMLElement && normalizedAnchor) || referenceRef.current;\n if (!node) return;\n const setNow = (): void => setRefWidth(Math.round(node.getBoundingClientRect().width));\n setNow();\n update();\n const ro = new ResizeObserver((): void => {\n setNow();\n update();\n });\n ro.observe(node);\n return () => ro.disconnect();\n }, [normalizedAnchor, referenceRef, sameWidth, update]);\n\n const computedWidth =\n width\n ? typeof width === \"number\"\n ? `${width}px`\n : String(width)\n : sameWidth && refWidth != null\n ? `${refWidth}px`\n : undefined;\n\n const delta = 8;\n const placementSide = (context.placement.split(\"-\")[0] as Side) || \"bottom\";\n const transformOrigin =\n placementSide === \"bottom\"\n ? \"center top\"\n : placementSide === \"top\"\n ? \"center bottom\"\n : placementSide === \"left\"\n ? \"right center\"\n : \"left center\";\n\n const initial =\n placementSide === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.96 }\n : placementSide === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.96 }\n : placementSide === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.96 }\n : { opacity: 0, x: -delta, scale: 0.96 };\n\n const exitSide = exitPlacement ?? placementSide;\n const exit =\n exitSide === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.96 }\n : exitSide === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.96 }\n : exitSide === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.96 }\n : { opacity: 0, x: -delta, scale: 0.96 };\n\n const busClosing: boolean = !!rootBus?.isBusClosingRef.current;\n\n const transition: MotionTransitions =\n busClosing && !animateOnBusClose\n ? {\n scale: { duration: 0 },\n x: { duration: 0 },\n y: { duration: 0 },\n opacity: { duration: 0 },\n }\n : {\n scale: { type: \"spring\", stiffness: 520, damping: 38, mass: 0.5 },\n x: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n opacity: { duration: 0.12, ease: \"linear\" },\n };\n\n const positionCss = emCss({\n position: strategy as React.CSSProperties[\"position\"],\n top: (y ?? 0) as number,\n left: (x ?? 0) as number,\n zIndex: 1000,\n transformOrigin,\n width: computedWidth,\n });\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n {open ? (\n <FocusCtx.Provider value={{ allItemsTabbable }}>\n <motion.div\n {...getFloatingProps({\n ...rest,\n ref: mergeRefs(ref, refs.setFloating),\n })}\n className={className}\n css={[baseCss, positionCss, userCss]}\n initial={initial}\n animate={{ opacity: 1, x: 0, y: 0, scale: 1 }}\n exit={exit}\n transition={transition}\n onMouseEnter={() => {\n clearHoverClose();\n rootBus?.clearAllHover();\n }}\n onMouseLeave={() => scheduleHoverClose()}\n >\n {enhancedChildren}\n </motion.div>\n </FocusCtx.Provider>\n ) : null}\n </AnimatePresence>\n </FloatingPortal>\n );\n }\n);\nDropdownMenuContent.displayName = \"DropdownMenuContent\";\n\n/* ───────── sub ───────── */\n\nexport const DropdownMenuSub: React.FC<{\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (o: boolean) => void;\n trigger?: TriggerMode;\n dense?: boolean;\n children: React.ReactNode;\n}> = ({ open: cOpen, defaultOpen, onOpenChange, trigger = \"hover\", dense, children }) => {\n const [uOpen, setUOpen] = useState<boolean>(!!defaultOpen);\n const open = cOpen ?? uOpen;\n const setOpen = useCallback(\n (v: boolean): void => {\n if (cOpen === undefined) setUOpen(v);\n onOpenChange?.(v);\n },\n [cOpen, onOpenChange]\n );\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const listRef = useRef<Array<HTMLElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number | null>(null);\n\n const hoverTimeoutRef = useRef<number | null>(null);\n const scheduleHoverClose = useCallback(\n (delay = 160): void => {\n if (trigger !== \"hover\") return;\n window.clearTimeout(hoverTimeoutRef.current ?? 0);\n hoverTimeoutRef.current = window.setTimeout(() => setOpen(false), delay);\n },\n [trigger, setOpen]\n );\n const clearHoverClose = useCallback((): void => {\n if (hoverTimeoutRef.current) {\n window.clearTimeout(hoverTimeoutRef.current);\n hoverTimeoutRef.current = null;\n }\n }, []);\n useEffect(() => () => clearHoverClose(), [clearHoverClose]);\n\n const inheritedDense = useContext(DenseCtx);\n const finalDense = dense ?? inheritedDense;\n\n const value = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n trigger,\n referenceRef,\n listRef,\n activeIndex,\n setActiveIndex,\n scheduleHoverClose,\n clearHoverClose,\n }),\n [open, setOpen, trigger, activeIndex, scheduleHoverClose, clearHoverClose]\n );\n\n return (\n <DenseCtx.Provider value={finalDense}>\n <MenuCtx.Provider value={value}>{children}</MenuCtx.Provider>\n </DenseCtx.Provider>\n );\n};\nDropdownMenuSub.displayName = \"DropdownMenuSub\";\n\nexport const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<DropdownMenuTriggerProps> & React.RefAttributes<HTMLElement>\n> = React.forwardRef<HTMLElement, DropdownMenuTriggerProps>(\n ({ asChild = true, children, width, className, css: userCss, ...rest }, ref) => {\n const { open, setOpen, trigger, referenceRef, setActiveIndex, scheduleHoverClose, clearHoverClose } =\n useMenu();\n\n const canAsChild = !!asChild && isValidElement(children);\n const childEl = canAsChild ? (children as React.ReactElement<any, any>) : null;\n const childOnKeyDown = childEl?.props?.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined;\n const childOnClick = childEl?.props?.onClick as ((e: React.MouseEvent) => void) | undefined;\n\n const { onKeyDown: propOnKeyDown, onClick: propOnClick, ...restProps } = rest as any;\n\n const setRefs = useMemo(\n () =>\n mergeRefs<HTMLElement | null>(\n ref,\n canAsChild ? (children as any).ref : undefined,\n (referenceRef as unknown) as React.Ref<HTMLElement | null>\n ),\n [ref, canAsChild, children, referenceRef]\n );\n\n const widthCss =\n width != null ? emCss({ width: typeof width === \"number\" ? `${width}px` : width }) : undefined;\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent): void => {\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n setActiveIndex(0);\n setOpen(true);\n }\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n setOpen(false);\n }\n childOnKeyDown?.(e);\n propOnKeyDown?.(e);\n },\n [setActiveIndex, setOpen, childOnKeyDown, propOnKeyDown]\n );\n\n const baseHoverProps =\n trigger === \"hover\"\n ? {\n onMouseEnter: () => {\n clearHoverClose();\n setOpen(true);\n },\n onMouseLeave: () => {\n scheduleHoverClose();\n },\n }\n : {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n setOpen(!open);\n childOnClick?.(e);\n propOnClick?.(e);\n },\n };\n\n if (canAsChild && childEl) {\n const childCss = (childEl as any).props?.css;\n return cloneElement(childEl, {\n ref: setRefs,\n tabIndex: childEl.props.tabIndex ?? 0,\n className: [childEl.props.className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, widthCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"data-subtrigger\": \"\",\n onKeyDown: handleKeyDown,\n ...baseHoverProps,\n ...restProps,\n });\n }\n\n return (\n <div\n ref={setRefs}\n role=\"menuitem\"\n tabIndex={0}\n className={className}\n css={[\n emCss({\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n cursor: \"pointer\",\n }),\n widthCss,\n userCss,\n ]}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n data-subtrigger=\"\"\n onKeyDown={handleKeyDown}\n {...baseHoverProps}\n {...restProps}\n >\n {children}\n </div>\n );\n }\n);\nDropdownMenuSubTrigger.displayName = \"DropdownMenuSubTrigger\";\n\nexport const DropdownMenuSubContent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<Omit<DropdownMenuContentProps, \"anchor\">> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, Omit<DropdownMenuContentProps, \"anchor\">>(\n (props, ref) => {\n const rootBus = useRootBus();\n const { referenceRef, scheduleHoverClose, clearHoverClose } = useMenu();\n return (\n <DropdownMenuContent\n ref={ref}\n side=\"right\"\n align=\"start\"\n exitPlacement=\"bottom\"\n animateOnBusClose={true}\n {...props}\n anchor={referenceRef.current as unknown as Anchor}\n onMouseEnter={(e) => {\n clearHoverClose();\n rootBus?.clearAllHover();\n props.onMouseEnter?.(e);\n }}\n onMouseLeave={(e) => {\n scheduleHoverClose();\n props.onMouseLeave?.(e);\n }}\n />\n );\n }\n);\nDropdownMenuSubContent.displayName = \"DropdownMenuSubContent\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n forwardRef,\n createContext,\n useContext,\n useState,\n isValidElement,\n cloneElement,\n useRef,\n useLayoutEffect,\n type ReactNode,\n useEffect,\n} from \"react\";\nimport { css as emCss, type Interpolation, type Theme, type CSSObject } from \"@emotion/react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\n/* ───────── ctx ───────── */\nexport type MenuVariant = \"ghost\" | \"subtle\" | \"outlined\";\nexport const MenuVariantCtx: React.Context<MenuVariant> = React.createContext<MenuVariant>(\"ghost\");\nexport const DenseCtx: React.Context<boolean> = React.createContext<boolean>(false);\nexport const LevelCtx: React.Context<number> = React.createContext<number>(0);\nexport const GapCtx: React.Context<string | number | undefined> =\n React.createContext<string | number | undefined>(undefined);\n\n/* ───────── Menu ───────── */\nexport type MenuProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: MenuVariant;\n size?: \"sm\" | \"md\";\n width?: number | string;\n maxHeight?: number | string;\n unstyled?: boolean;\n css?: Interpolation<Theme>;\n gap?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | string | number;\n label?: string;\n};\n\nexport const Menu: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuProps> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n variant = \"ghost\",\n size = \"md\",\n width,\n maxHeight,\n unstyled = false,\n className,\n css: userCss,\n gap,\n children,\n label,\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const panelPad =\n typeof theme.spacing.xs === \"number\" ? `${theme.spacing.xs}px` : String(theme.spacing.xs);\n\n const bg =\n variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg ?? theme.neutral[50]\n : \"transparent\";\n\n const gapValue =\n gap === undefined\n ? undefined\n : typeof gap === \"string\" && (theme.spacing as any)[gap] !== undefined\n ? (theme.spacing as any)[gap]\n : gap;\n\n const baseCss = unstyled\n ? undefined\n : emCss({\n boxSizing: \"border-box\",\n background: bg,\n border:\n variant === \"outlined\"\n ? `${theme.componentHeights.border} solid ${theme.surface.border}`\n : \"none\",\n borderRadius: theme.radius.lg,\n \"--pfui-panel-pad\": panelPad,\n padding: variant === \"ghost\" ? 0 : \"var(--pfui-panel-pad)\",\n color: theme.text.primary,\n width: typeof width === \"number\" ? `${width}px` : width,\n maxHeight,\n overflowY: maxHeight != null ? \"auto\" : undefined,\n display: \"flex\",\n flexDirection: \"column\",\n gap: gapValue,\n });\n\n const dense = size === \"sm\";\n\n return (\n <DenseCtx.Provider value={dense}>\n <MenuVariantCtx.Provider value={variant}>\n <LevelCtx.Provider value={0}>\n <GapCtx.Provider value={gapValue}>\n <div css={{ display: \"flex\", flexDirection: \"column\", gap: theme.spacing.sm }}>\n {label ? (\n <div css={{ width: \"100%\", textAlign: \"left\", maxWidth: width }}>\n <span\n css={{\n display: \"block\",\n color: theme.text.secondary,\n fontSize: theme.fontSizes.sm,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \".04em\",\n padding: typeof theme.spacing.sm === \"number\" ? `${theme.spacing.sm}px` : theme.spacing.sm,\n paddingTop: 0,\n }}\n >\n {label}\n </span>\n </div>\n ) : null}\n <div\n ref={ref}\n role=\"menu\"\n aria-label={label || undefined}\n className={[\"plainframe-ui-menu\", className || \"\"].join(\" \").trim()}\n css={[baseCss, userCss]}\n {...rest}\n >\n {children}\n </div>\n </div>\n </GapCtx.Provider>\n </LevelCtx.Provider>\n </MenuVariantCtx.Provider>\n </DenseCtx.Provider>\n );\n});\nMenu.displayName = \"Menu\";\n\n/* ───────── SubMenu ───────── */\ntype SubCtx = { open: boolean; setOpen: (v: boolean) => void };\nconst SubMenuCtx = createContext<SubCtx | null>(null);\nconst useSub = () => {\n const v = useContext(SubMenuCtx);\n if (!v) throw new Error(\"SubMenu components must be used inside <SubMenu>.\");\n return v;\n};\n\nexport const SubMenu: React.FC<{\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (v: boolean) => void;\n children: ReactNode;\n}> = ({ open, defaultOpen = false, onOpenChange, children }) => {\n const [uOpen, setUOpen] = useState<boolean>(() => !!defaultOpen);\n const controlled = open !== undefined;\n const val = controlled ? !!open : uOpen;\n const setOpen = (v: boolean) => {\n if (!controlled) setUOpen(v);\n onOpenChange?.(v);\n };\n\n const menuGap = useContext(GapCtx);\n\n return (\n <SubMenuCtx.Provider value={{ open: val, setOpen }}>\n <div\n className=\"plainframe-ui-submenu-root\"\n css={emCss({\n display: \"flex\",\n flexDirection: \"column\",\n gap: menuGap,\n width: \"100%\",\n })}\n >\n {children}\n </div>\n </SubMenuCtx.Provider>\n );\n};\n\nexport const SubMenuTrigger: React.FC<{\n children: React.ReactElement;\n chevron?: ReactNode;\n asChild?: boolean;\n}> = ({ children, chevron, asChild = true }) => {\n const { open, setOpen } = useSub();\n const theme = usePlainframeUITheme();\n\n const chevronCss = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 16px\",\n width: 16,\n height: 16,\n lineHeight: 0,\n marginLeft: 6,\n pointerEvents: \"none\",\n color: theme.text.secondary,\n transformOrigin: \"50% 50%\",\n backfaceVisibility: \"hidden\",\n willChange: \"transform\",\n transform: open ? \"rotate(0deg)\" : \"rotate(-90deg)\",\n transition: \"transform 300ms cubic-bezier(.6,1.3,.5,1)\",\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const ChevronNode = (\n <span className=\"pfui-submenu-chevron\" css={chevronCss} aria-hidden>\n {chevron ?? <ChevronDown strokeWidth={2.5} />}\n </span>\n );\n\n const inject = (el: React.ReactElement) =>\n cloneElement(el, {\n ...(el.props as any),\n \"data-subtrigger\": \"\",\n \"data-open\": open ? \"\" : undefined,\n \"aria-expanded\": open,\n endIcon: (\n <>\n {typeof el.props === \"object\" && el.props && \"endIcon\" in el.props ? (el.props as any).endIcon : null}\n {ChevronNode}\n </>\n ),\n onClick: (e: React.MouseEvent<HTMLElement>) => {\n if (\n typeof el.props === \"object\" &&\n el.props &&\n \"onClick\" in el.props &&\n typeof (el.props as any).onClick === \"function\"\n ) {\n (el.props as any).onClick(e);\n }\n if (e?.defaultPrevented) return;\n if ((e?.currentTarget as HTMLElement)?.tagName === \"A\") e.preventDefault();\n setOpen(!open);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => {\n if (\n typeof el.props === \"object\" &&\n el.props &&\n typeof (el.props as { onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void }).onKeyDown === \"function\"\n ) {\n (el.props as { onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void }).onKeyDown!(e);\n }\n if (e.defaultPrevented) return;\n if (e.key === \"Enter\" || e.key === \" \") { e.preventDefault(); setOpen(!open); }\n if (e.key === \"ArrowRight\") { e.preventDefault(); setOpen(true); }\n if (e.key === \"ArrowLeft\") { e.preventDefault(); setOpen(false); }\n },\n onSelect: () => setOpen(!open),\n });\n\n return asChild && isValidElement(children)\n ? inject(children)\n : inject(children as React.ReactElement);\n};\n\nexport const SubMenuContent: React.FC<{\n children: React.ReactNode;\n css?: Interpolation<Theme>;\n}> = ({ children, css: userCss }) => {\n const { open } = useSub();\n const parentLevel = useContext(LevelCtx);\n const menuGap = useContext(GapCtx);\n\n const innerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const root = innerRef.current;\n if (!root) return;\n\n const NATIVES =\n \"a[href],button,input,select,textarea,summary,[contenteditable='true']\";\n const ROLES =\n \"[role='menuitem'],[role='menuitemradio'],[role='menuitemcheckbox']\";\n\n const natives = Array.from(root.querySelectorAll<HTMLElement>(NATIVES));\n const roleItems = Array.from(root.querySelectorAll<HTMLElement>(ROLES));\n\n if (open) {\n natives.forEach((el) => {\n if (el.hasAttribute(\"data-pf-prev-tabindex\")) {\n const prev = el.getAttribute(\"data-pf-prev-tabindex\");\n if (prev === \"\") el.removeAttribute(\"tabindex\");\n else if (prev != null) el.setAttribute(\"tabindex\", prev);\n el.removeAttribute(\"data-pf-prev-tabindex\");\n } else {\n el.removeAttribute(\"tabindex\");\n }\n });\n roleItems.forEach((el) => {\n if (!el.hasAttribute(\"tabindex\")) el.setAttribute(\"tabindex\", \"0\");\n else if (el.getAttribute(\"tabindex\") === \"-1\") el.setAttribute(\"tabindex\", \"0\");\n });\n } else {\n natives.forEach((el) => {\n if (!el.hasAttribute(\"data-pf-prev-tabindex\")) {\n const cur = el.getAttribute(\"tabindex\");\n if (cur != null) el.setAttribute(\"data-pf-prev-tabindex\", cur);\n else el.setAttribute(\"data-pf-prev-tabindex\", \"\");\n }\n el.setAttribute(\"tabindex\", \"-1\");\n });\n roleItems.forEach((el) => {\n el.setAttribute(\"tabindex\", \"-1\");\n });\n }\n }, [open]);\n\n const clipCss = emCss({\n display: \"grid\",\n gridTemplateRows: open ? \"1fr\" : \"0fr\",\n transition: \"grid-template-rows 360ms cubic-bezier(.25,.8,.4,1)\",\n overflow: \"hidden\",\n contain: \"layout style\",\n position: \"relative\",\n });\n\n const innerCss = emCss({\n minHeight: 0,\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: menuGap,\n margin: 0,\n padding: 0,\n opacity: open ? 1 : 0,\n transform: open ? \"translateY(0) scale(1)\" : \"translateY(1rem) scale(0.95)\",\n transition: \"opacity 0.35s ease, transform 0.28s ease\",\n pointerEvents: open ? \"auto\" : \"none\",\n willChange: \"opacity, transform\",\n });\n\n return (\n <LevelCtx.Provider value={parentLevel + 1}>\n <div\n role=\"group\"\n data-open={open ? \"\" : undefined}\n className=\"plainframe-ui-submenu-content\"\n css={[emCss({ width: \"100%\" }), userCss]}\n >\n <div className=\"plainframe-ui-submenu-clip\" css={clipCss}>\n <div\n ref={innerRef}\n className=\"plainframe-ui-submenu-inner\"\n css={innerCss}\n >\n {children}\n </div>\n </div>\n </div>\n </LevelCtx.Provider>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useContext, useMemo, useState, forwardRef } from \"react\";\nimport { css as emCss, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Switch } from \"./Switch\";\nimport { Checkbox } from \"./Checkbox\";\nimport { MenuVariantCtx, DenseCtx as MenuDenseCtx, LevelCtx } from \"./Menu\";\nimport {\n MenuCtx as DropdownMenuCtx,\n FocusCtx as DropdownFocusCtx,\n RootBusCtx as DropdownRootBusCtx,\n} from \"./DropdownMenu\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\nconst useMenu = () => useContext(DropdownMenuCtx);\nconst useFocusOpts = () => useContext(DropdownFocusCtx);\nconst useRootBus = () => useContext(DropdownRootBusCtx);\n\nexport type MenuItemProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n disabled?: boolean;\n destructive?: boolean;\n inset?: boolean | number;\n closeOnSelect?: boolean;\n onSelect?: () => void;\n css?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n selected?: boolean;\n meta?: React.ReactNode;\n};\n\nexport type MenuCheckboxItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n value?: string | number;\n};\n\nexport type MenuRadioGroupProps = {\n value?: string | number;\n defaultValue?: string | number;\n onValueChange?: (val: string | number) => void;\n children?: React.ReactNode;\n};\n\nexport type MenuRadioItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n value: string | number;\n};\n\nexport type MenuLabelProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n inset?: boolean;\n css?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n wrap?: boolean;\n};\n\nexport type MenuSeparatorProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n css?: Interpolation<Theme>;\n variant?: \"full\" | \"middle\" | \"inset\";\n};\n\ntype ItemPrivate = { __index?: number };\n\nexport const MenuItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, MenuItemProps & ItemPrivate>(\n function MenuItem(\n {\n disabled = false,\n destructive = false,\n inset,\n closeOnSelect = true,\n onSelect,\n children,\n className,\n css: userCss,\n startIcon,\n endIcon,\n selected = false,\n meta,\n __index,\n ...rest\n },\n ref\n ) {\n const dd = useMenu();\n const rootBus = useRootBus();\n const { allItemsTabbable } = useFocusOpts() ?? { allItemsTabbable: true };\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const denseFromMenu = useContext(MenuDenseCtx);\n const dense = !!denseFromMenu;\n\n const isActive = dd && __index != null && dd.activeIndex === __index;\n const isSubTrigger = (rest as any)[\"data-subtrigger\"] !== undefined;\n\n const nesting = useContext(LevelCtx) ?? 0;\n const insetLevel = typeof inset === \"number\" ? inset : inset === false ? 0 : nesting;\n\n const variant = useContext(MenuVariantCtx);\n const variantHover =\n variant === \"subtle\"\n ? theme.surface?.subtleHover ?? theme.neutral[100]\n : variant === \"outlined\"\n ? theme.surface?.subtleBg ?? theme.neutral[100]\n : theme.surface?.subtleBg ?? theme.neutral[100];\n\n const itemCss = emCss({\n width: \"100%\",\n borderRadius: theme.radius.md,\n padding: `${dense ? theme.spacing.xs : theme.spacing.sm} ${theme.spacing.sm}`,\n paddingLeft:\n insetLevel > 0\n ? `calc(${theme.spacing.md} + (${theme.spacing.xl} * ${insetLevel}))`\n : theme.spacing.md,\n minHeight: dense ? theme.componentHeights.sm : theme.componentHeights.md,\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing.sm,\n fontWeight: 500,\n fontSize: theme.fontSizes.md,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.55 : 1,\n userSelect: \"none\",\n background: selected || isActive\n ? (destructive ? theme.palette.danger[50] : variantHover)\n : \"transparent\",\n color: destructive ? theme.palette.danger[800] : theme.text.primary,\n transition: \"background-color .16s ease, color .16s ease\",\n \"&:hover\": disabled ? {} : { background: destructive ? theme.palette.danger[50] : variantHover },\n \"&:focus-visible\": disabled ? {} : { background: destructive ? theme.palette.danger[50] : variantHover },\n \"& > [data-label]\": {\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n });\n\n const iconStartBox = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const iconEndBox = emCss({\n marginLeft: \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n whiteSpace: \"nowrap\",\n lineHeight: 0,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n color: theme.text.secondary,\n });\n\n const overlayCss: Interpolation<Theme>[] = [];\n if (dense) overlayCss.push({ minHeight: theme.componentHeights.sm });\n\n const activate = () => {\n onSelect?.();\n if (closeOnSelect && !isSubTrigger) rootBus?.closeAll();\n };\n\n const moveFocus = (currentEl: HTMLElement, idxGetter: (len: number, cur: number) => number) => {\n if (dd) {\n const nodes = (dd.listRef.current || []).filter(Boolean) as HTMLElement[];\n if (nodes.length) {\n const cur = Math.max(0, nodes.indexOf(currentEl));\n const next = idxGetter(nodes.length, cur);\n dd.setActiveIndex(next);\n nodes[next]?.focus();\n return;\n }\n }\n const container = currentEl.closest('[role=\"menu\"]') as HTMLElement | null;\n if (!container) return;\n const candidates = Array.from(\n container.querySelectorAll<HTMLElement>(\n '[role=\"menuitem\"],[role=\"menuitemcheckbox\"],[role=\"menuitemradio\"]'\n )\n ).filter((el) => !el.hasAttribute(\"aria-disabled\"));\n if (!candidates.length) return;\n const cur = Math.max(0, candidates.indexOf(currentEl));\n const next = idxGetter(candidates.length, cur);\n candidates[next]?.focus();\n };\n\n return (\n <div\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n data-disabled={disabled ? \"\" : undefined}\n tabIndex={\n disabled ? -1 : dd ? (allItemsTabbable ? 0 : isActive ? 0 : -1) : 0\n }\n ref={(node) => {\n if (dd) {\n const arr = dd.listRef.current;\n if (node) {\n if (__index != null) arr[__index] = node as any;\n else if (!arr.includes(node as any)) arr.push(node as any);\n }\n }\n if (typeof ref === \"function\") ref(node);\n else if (ref && \"current\" in (ref as any)) (ref as any).current = node;\n }}\n onMouseEnter={() => {\n if (!disabled && dd && __index != null) dd.setActiveIndex(__index);\n }}\n onFocus={() => {\n if (!disabled && dd && __index != null) dd.setActiveIndex(__index);\n }}\n onMouseLeave={() => {\n if (dd && __index != null && dd.activeIndex === __index) dd.setActiveIndex(null);\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n const el = e.currentTarget as HTMLElement;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n activate();\n return;\n }\n if (e.key === \"Escape\") {\n rootBus?.closeAll();\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n moveFocus(el, (len, cur) => (cur + 1) % len);\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n moveFocus(el, (len, cur) => (cur - 1 + len) % len);\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n moveFocus(el, (len) => 0);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n moveFocus(el, (len) => len - 1);\n return;\n }\n }}\n className={[\"plainframe-ui-menu-item\", className || \"\"].join(\" \").trim()}\n css={emCss(\n ...[\n focusRing({ color: destructive ? \"danger\" : \"neutral\" }),\n itemCss,\n ...(overlayCss as Interpolation<Theme>[]),\n userCss as any\n ].flat()\n )}\n {...rest}\n onClick={() => {\n if (disabled) return;\n activate();\n }}\n >\n {startIcon && (\n <span className=\"plainframe-ui-menu-item-start\" css={iconStartBox}>\n {startIcon}\n </span>\n )}\n {children}\n {(meta != null || endIcon) && (\n <span className=\"plainframe-ui-menu-item-end\" css={iconEndBox}>\n {meta != null ? (\n <span\n className=\"plainframe-ui-menu-item-meta\"\n css={emCss({\n lineHeight: 1,\n fontSize: theme.fontSizes.md,\n color: theme.text.secondary,\n whiteSpace: \"nowrap\",\n marginRight: endIcon ? 6 : 0,\n })}\n >\n {meta}\n </span>\n ) : null}\n {endIcon}\n </span>\n )}\n </div>\n );\n }\n);\n\ntype CheckboxCtxT = {\n values: Array<string | number>;\n toggle: (v: string | number) => void;\n};\n\nconst CheckboxCtx = React.createContext<CheckboxCtxT | null>(null);\n\nexport const MenuCheckboxGroup: React.FC<{\n values?: Array<string | number>;\n defaultValues?: Array<string | number>;\n onValuesChange?: (v: Array<string | number>) => void;\n children: React.ReactNode;\n}> = ({ values, defaultValues, onValuesChange, children }) => {\n const [internal, setInternal] = useState<Array<string | number>>(defaultValues ?? []);\n const isControlled = values !== undefined;\n const vals = isControlled ? (values as Array<string | number>) : internal;\n\n const toggle = (v: string | number) => {\n const exists = vals.some((x) => Object.is(x, v));\n const next = exists ? vals.filter((x) => !Object.is(x, v)) : [...vals, v];\n if (!isControlled) setInternal(next);\n onValuesChange?.(next);\n };\n\n const ctx = useMemo<CheckboxCtxT>(() => ({ values: vals, toggle }), [vals]);\n return <CheckboxCtx.Provider value={ctx}>{children}</CheckboxCtx.Provider>;\n};\n\nexport const MenuCheckboxItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuCheckboxItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuCheckboxItemProps & ItemPrivate>(\n function MenuCheckboxItem(\n { checked, defaultChecked = false, onCheckedChange, value, children, __index, disabled = false, css: userCss, className, ...rest },\n ref\n ) {\n const group = useContext(CheckboxCtx);\n const grouped = !!group && value !== undefined;\n\n const isControlled = !grouped && checked !== undefined;\n const [internal, setInternal] = useState<boolean>(() => {\n if (grouped) return group!.values.some((v) => Object.is(v, value));\n return !!defaultChecked;\n });\n\n const isChecked = grouped\n ? group!.values.some((v) => Object.is(v, value))\n : isControlled\n ? !!checked\n : internal;\n\n const theme = usePlainframeUITheme();\n\n const handleToggle = () => {\n if (disabled) return;\n if (grouped) {\n group!.toggle(value!);\n } else {\n const next = !isChecked;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next);\n }\n };\n\n const labelCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n });\n\n const checkboxWrapCss = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n borderRadius: theme.radius.sm,\n transition: \"background-color .12s ease\",\n });\n\n const checkboxCss = emCss({ pointerEvents: \"none\" });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-checkbox-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n role=\"menuitemcheckbox\"\n aria-checked={isChecked}\n closeOnSelect={false}\n onSelect={handleToggle}\n disabled={disabled}\n startIcon={\n <span\n data-menu-checkbox-wrapper\n className=\"plainframe-ui-menu-checkbox-wrapper\"\n css={checkboxWrapCss}\n >\n <Checkbox\n size=\"sm\"\n checked={isChecked}\n css={checkboxCss}\n className=\"plainframe-ui-menu-checkbox\"\n />\n </span>\n }\n css={userCss}\n >\n <span data-label css={labelCss} className=\"plainframe-ui-menu-item-label\">\n {children}\n </span>\n </MenuItem>\n );\n }\n);\nMenuCheckboxItem.displayName = \"MenuCheckboxItem\";\n\nexport type MenuSwitchItemProps = Omit<MenuItemProps, \"onSelect\" | \"startIcon\" | \"endIcon\"> & {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (next: boolean) => void;\n switchSize?: \"sm\" | \"md\" | \"lg\";\n switchCss?: Interpolation<Theme>;\n startIcon?: React.ReactNode;\n};\n\nexport const MenuSwitchItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuSwitchItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuSwitchItemProps & ItemPrivate>(\n function MenuSwitchItem(\n {\n checked,\n defaultChecked = false,\n onCheckedChange,\n children,\n __index,\n disabled = false,\n css: userCss,\n switchSize = \"md\",\n switchCss,\n startIcon,\n className,\n ...rest\n },\n ref\n ) {\n const isControlled = checked !== undefined;\n const [internal, setInternal] = useState<boolean>(!!defaultChecked);\n const value = isControlled ? !!checked : internal;\n\n const labelCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n });\n\n const switchWrapCss = emCss({\n marginLeft: \"auto\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n });\n\n const toggle = () => {\n if (disabled) return;\n const next = !value;\n if (!isControlled) setInternal(next);\n onCheckedChange?.(next);\n };\n\n const iconStartBox = emCss({\n width: 18,\n height: 18,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-switch-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n disabled={disabled}\n closeOnSelect={false}\n onSelect={toggle}\n css={userCss}\n >\n {startIcon && (\n <span className=\"plainframe-ui-menu-item-start\" css={iconStartBox}>\n {startIcon}\n </span>\n )}\n <span data-label css={labelCss} className=\"plainframe-ui-menu-item-label\">\n {children}\n </span>\n <span className=\"plainframe-ui-menu-switch-wrap\" css={switchWrapCss}>\n <Switch\n size={switchSize}\n checked={value}\n css={emCss({ pointerEvents: \"none\", padding: 0, marginRight: -1 }, switchCss as any)}\n className=\"plainframe-ui-menu-switch\"\n tabIndex={-1}\n />\n </span>\n </MenuItem>\n );\n }\n);\nMenuSwitchItem.displayName = \"MenuSwitchItem\";\n\ntype RadioCtxT = {\n value?: string | number;\n onChange?: (v: string | number) => void;\n};\nconst RadioCtx = React.createContext<RadioCtxT | null>(null);\n\nexport const MenuRadioGroup: React.FC<MenuRadioGroupProps> = ({\n value,\n defaultValue,\n onValueChange,\n children,\n}) => {\n const [uc, setUc] = useState<string | number | undefined>(defaultValue);\n const val = value ?? uc;\n const onChange = (v: string | number) => {\n if (value !== undefined) onValueChange?.(v);\n else {\n setUc(v);\n onValueChange?.(v);\n }\n };\n const ctx = useMemo<RadioCtxT>(() => ({ value: val, onChange }), [val]);\n return <RadioCtx.Provider value={ctx}>{children}</RadioCtx.Provider>;\n};\nMenuRadioGroup.displayName = \"MenuRadioGroup\";\n\nexport const MenuRadioItem: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuRadioItemProps & ItemPrivate> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuRadioItemProps & ItemPrivate>(\n function MenuRadioItem({ value, children, __index, disabled = false, css: userCss, className, ...rest }, ref) {\n const radio = useContext(RadioCtx);\n const checked = radio?.value === value;\n const theme = usePlainframeUITheme();\n\n const dotBoxCss = emCss({\n width: theme.spacing.md,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginLeft: -1,\n });\n\n const dotInnerCss = emCss({\n width: 7,\n height: 7,\n borderRadius: \"100%\",\n backgroundColor: theme.palette.primary[600],\n transform: checked ? \"scale(1)\" : \"scale(0.4)\",\n opacity: checked ? 1 : 0,\n transition: \"transform 140ms ease-out, opacity 140ms linear\",\n transformOrigin: \"center center\",\n });\n\n const textCss = emCss({ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" });\n\n return (\n <MenuItem\n {...rest}\n className={[\"plainframe-ui-menu-radio-item\", className || \"\"].join(\" \").trim()}\n ref={ref}\n __index={__index}\n role=\"menuitemradio\"\n aria-checked={checked}\n closeOnSelect={false}\n onSelect={() => {\n if (!disabled) (radio as any)?.onChange?.(value as any);\n }}\n disabled={disabled}\n css={userCss}\n >\n <span className=\"plainframe-ui-menu-radio-dotbox\" css={dotBoxCss}>\n <span className=\"plainframe-ui-menu-radio-dot\" css={dotInnerCss} />\n </span>\n <span className=\"plainframe-ui-menu-item-label\" css={textCss}>\n {children}\n </span>\n </MenuItem>\n );\n }\n);\n\nexport const MenuLabel: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<MenuLabelProps> & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, MenuLabelProps>(function MenuLabel(\n { inset, className, css: userCss, children, startIcon, endIcon, wrap = false, ...rest },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const base = emCss({\n display: \"flex\",\n alignItems: \"center\",\n padding: `${theme.spacing.sm} ${theme.spacing.md}`,\n fontSize: theme.fontSizes.md,\n color: theme.text.secondary,\n fontWeight: 500,\n ...(inset ? { paddingLeft: `calc(${theme.spacing.lg} * 2)` } : null),\n gap: theme.spacing.xs,\n });\n\n const textCss = emCss({\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: wrap ? \"normal\" : \"nowrap\",\n });\n\n const iconStartBox = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: \"0 0 auto\",\n lineHeight: 0,\n padding: \"0 3px 0 2px\",\n marginLeft: -2,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n const iconEndBox = emCss({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n flex: \"0 0 auto\",\n flexShrink: 0,\n lineHeight: 0,\n \"& > svg\": { width: 16, height: 16, display: \"block\" },\n });\n\n return (\n <div\n ref={ref}\n role=\"presentation\"\n className={[\"plainframe-ui-menu-label\", className || \"\"].join(\" \").trim()}\n css={emCss(base, userCss as any)}\n {...rest}\n >\n {startIcon && <span className=\"plainframe-ui-menu-label-start\" css={iconStartBox}>{startIcon}</span>}\n <span className=\"plainframe-ui-menu-label-text\" css={textCss}>\n {children}\n </span>\n {endIcon && <span className=\"plainframe-ui-menu-label-end\" css={iconEndBox}>{endIcon}</span>}\n </div>\n );\n});\nMenuLabel.displayName = \"MenuLabel\";\n\nexport const MenuSeparator: React.FC<MenuSeparatorProps> = ({\n className,\n css: userCss,\n variant = \"full\",\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const padVar = `var(--pfui-panel-pad, ${\n typeof theme.spacing.xs === \"number\" ? theme.spacing.xs + \"px\" : String(theme.spacing.xs)\n })`;\n\n const fullCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: \"calc(var(--pfui-panel-pad, 0px) * -1)\",\n marginRight: \"calc(var(--pfui-panel-pad, 0px) * -1)\",\n });\n\n const middleCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: `${theme.spacing.md}`,\n marginRight: `${theme.spacing.md}`,\n });\n\n const insetCss = emCss({\n height: 1,\n background: theme.surface.border,\n marginTop: padVar,\n marginBottom: padVar,\n marginLeft: `${theme.spacing.lg}`,\n marginRight: 0,\n });\n\n const variantCss = variant === \"full\" ? fullCss : variant === \"middle\" ? middleCss : insetCss;\n\n return (\n <div\n role=\"separator\"\n className={[\"plainframe-ui-menu-separator\", className || \"\"].join(\" \").trim()}\n css={emCss(variantCss, userCss as any)}\n {...rest}\n />\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype SwitchProps = {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n label?: React.ReactNode;\n className?: string;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n} & WithCssProp &\n Omit<React.HTMLAttributes<HTMLLabelElement>, \"onChange\" | \"className\">;\n\nexport const Switch: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<SwitchProps> & React.RefAttributes<HTMLLabelElement>\n> = forwardRef<HTMLLabelElement, SwitchProps>(function Switch(\n {\n checked: checkedProp,\n defaultChecked = false,\n onChange,\n disabled = false,\n size = \"md\",\n label,\n className,\n css: userRootCss,\n trackCss: userTrackCss,\n thumbCss: userThumbCss,\n labelCss: userLabelCss,\n ...props\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const sizeMap = {\n sm: { trackW: 25, trackH: 16, thumb: 11, labelGap: 8 },\n md: { trackW: 35, trackH: 20, thumb: 14, labelGap: 8 },\n lg: { trackW: 45, trackH: 24, thumb: 18, labelGap: 10 },\n } as const;\n const motion = { slideMs: 250, pressMs: 150, easing: \"ease\" } as const;\n\n const isControlled = checkedProp !== undefined;\n const [internal, setInternal] = useState<boolean>(defaultChecked);\n const isOn = isControlled ? !!checkedProp : internal;\n\n const [animating, setAnimating] = useState(false);\n useEffect(() => {\n if (disabled) return;\n setAnimating(true);\n const t = setTimeout(() => setAnimating(false), motion.pressMs);\n return () => clearTimeout(t);\n }, [isOn, disabled]);\n\n const sizeKey = ([\"sm\", \"md\", \"lg\"].includes(size!) ? size : \"md\") as \"sm\" | \"md\" | \"lg\";\n const s = sizeMap[sizeKey];\n const slide = `${motion.slideMs}ms ${motion.easing}`;\n\n const primary = theme.palette?.primary?.[600] ?? theme.neutral[900];\n const offTrack = theme.neutral[300];\n const trackColor = isOn ? primary : offTrack;\n const thumbColor = isOn ? theme.text.onColors.primary : \"#ffffff\";\n\n const { trackW, trackH, thumb } = s;\n const pad = (trackH - thumb) / 2;\n\n const rootBaseCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: s.labelGap,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n width: \"fit-content\",\n padding: theme.spacing.xs,\n borderRadius: theme.radius.sm,\n outline: \"none\",\n });\n\n const trackBaseCss = css({\n position: \"relative\",\n width: trackW,\n height: trackH,\n backgroundColor: trackColor,\n borderRadius: theme.radius.full,\n transition: `background-color ${slide}, opacity 120ms ease`,\n willChange: \"background-color\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n });\n\n const thumbBaseCss = css({\n position: \"absolute\",\n top: pad,\n left: isOn ? trackW - thumb - pad : pad,\n width: thumb,\n height: thumb,\n backgroundColor: thumbColor,\n borderRadius: theme.radius.full,\n transition: `left ${slide}, transform ${slide}, background-color 0.25s ease`,\n transform: animating ? \"scaleX(1.2)\" : \"scaleX(1)\",\n transformOrigin: isOn ? \"right center\" : \"left center\",\n });\n\n const labelBaseCss = css({\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n color: disabled ? theme.text.muted : theme.text.primary,\n });\n\n const toggle = () => {\n if (disabled) return;\n const next = !isOn;\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLLabelElement>) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n };\n\n return (\n <label\n ref={ref}\n role=\"switch\"\n aria-checked={isOn}\n aria-disabled={disabled || undefined}\n data-checked={isOn ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n tabIndex={disabled ? -1 : 0}\n onClick={toggle}\n onKeyDown={handleKeyDown}\n className={[\"plainframe-ui-switch\", className || \"\"].join(\" \").trim()}\n css={[rootBaseCss, focusRing({ color: isOn ? \"primary\" : \"neutral\" }), userRootCss]}\n {...props}\n >\n <div\n className=\"plainframe-ui-switch-track\"\n css={[trackBaseCss, userTrackCss]}\n >\n <div className=\"plainframe-ui-switch-thumb\" css={[thumbBaseCss, userThumbCss]} />\n </div>\n\n {label != null && (\n <span className=\"plainframe-ui-switch-label\" css={[labelBaseCss, userLabelCss]}>\n {label}\n </span>\n )}\n </label>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { useCallback, useMemo, useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\ntype CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\ntype CheckboxProps = WithCssProp & {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n size?: CheckboxSize;\n label?: React.ReactNode;\n description?: React.ReactNode;\n rounded?: boolean;\n checkedIcon?: React.ReactNode;\n color?:\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"danger\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | string;\n boxCss?: Interpolation<Theme>;\n checkCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n descriptionCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst getSize = (theme: ReturnType<typeof usePlainframeUITheme>, size: CheckboxSize) => {\n if (size === \"sm\") {\n return {\n box: 16,\n labelFont: theme.fontSizes.sm,\n gap: 8,\n borderRadius: theme.radius.xxs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n }\n if (size === \"lg\") {\n return {\n box: 24,\n labelFont: theme.fontSizes.lg,\n gap: 8,\n borderRadius: theme.radius.xs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n }\n return {\n box: 20,\n labelFont: theme.fontSizes.md,\n gap: 8,\n borderRadius: theme.radius.xs,\n borderWidth: theme.componentHeights.border,\n iconRatioW: 0.7,\n iconRatioH: 0.75,\n };\n};\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n (\n {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n size = \"md\",\n label,\n description,\n rounded = false,\n checkedIcon,\n color = \"primary\",\n css: userCss,\n boxCss: userBoxCss,\n checkCss: userCheckCss,\n labelCss: userLabelCss,\n descriptionCss: userDescriptionCss,\n className,\n ...props\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const isControlled = typeof checked === \"boolean\";\n const [internalChecked, setInternalChecked] = useState<boolean>(defaultChecked);\n const isOn = isControlled ? (checked as boolean) : internalChecked;\n\n const sizeKey: CheckboxSize = size === \"sm\" || size === \"lg\" ? size : \"md\";\n const S = useMemo(() => getSize(theme, sizeKey), [theme, sizeKey]);\n\n const { checkedBg, checkColor, borderCol, hoverBg, gapPx } = useMemo(() => {\n const palette = (theme.palette || {}) as Record<string, Record<string, string>>;\n const neutralScale = (theme.neutral || {}) as Record<string, string>;\n const onColors = (theme.text?.onColors || {}) as Record<string, string>;\n\n let scale: Record<string, string>;\n let onKey: string;\n\n if (color === \"neutral\" || color === \"secondary\") {\n scale = neutralScale;\n onKey = \"neutral\";\n } else if (typeof color === \"string\" && Object.prototype.hasOwnProperty.call(palette, color)) {\n scale = palette[color] || palette.primary || neutralScale;\n onKey = color;\n } else {\n scale = palette.primary || neutralScale;\n onKey = \"primary\";\n }\n\n const bg =\n scale[600] ??\n scale[500] ??\n scale[400] ??\n Object.values(scale)[0] ??\n theme.palette.primary[600];\n\n const chk =\n onColors[onKey] ??\n onColors.primary ??\n theme.text?.onColors?.primary ??\n theme.text.primary;\n\n const gapVal = typeof S.gap === \"number\" ? S.gap + 2 : S.gap;\n\n return {\n checkedBg: bg,\n checkColor: chk,\n borderCol: theme.surface.border,\n hoverBg: theme.surface.panelHover,\n gapPx: gapVal,\n };\n }, [S.gap, color, theme]);\n\n const rootCss = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: label && description ? \"flex-start\" : \"center\",\n gap: gapPx,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n userSelect: \"auto\",\n position: \"relative\",\n width: \"fit-content\",\n borderRadius: theme.radius.sm,\n padding: theme.spacing.xs,\n transition: \"background-color .16s ease, color .16s ease, opacity .16s ease\",\n '&:not([data-disabled=\"true\"]):hover input:not(:checked) + .plainframe-ui-checkbox-box': {\n backgroundColor: hoverBg as string,\n outlineColor: borderCol as string,\n },\n \"input:checked + .plainframe-ui-checkbox-box\": {\n backgroundColor: checkedBg,\n outlineColor: checkedBg,\n },\n \".plainframe-ui-checkbox-check\": {\n opacity: 0,\n transform: \"scale(0.2)\",\n },\n \"input:checked + .plainframe-ui-checkbox-box .plainframe-ui-checkbox-check\": {\n opacity: 1,\n transform: \"scale(1)\",\n },\n }),\n [borderCol, checkedBg, description, disabled, gapPx, hoverBg, label, theme.radius.sm, theme.spacing.xs]\n );\n\n const inputCss = useMemo(\n () =>\n css({\n position: \"absolute\",\n opacity: 0,\n width: 0,\n height: 0,\n margin: 0,\n padding: 0,\n pointerEvents: \"none\",\n }),\n []\n );\n\n const boxBase = useMemo(\n () =>\n css({\n width: S.box,\n height: S.box,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"transparent\",\n outline: `${S.borderWidth} solid ${borderCol}`,\n outlineOffset: `-${S.borderWidth}`,\n borderRadius: rounded ? theme.radius.full : S.borderRadius,\n transition: \"background-color .16s ease, outline-color .05s ease, transform .16s ease\",\n flex: \"0 0 auto\",\n verticalAlign: \"middle\",\n overflow: \"hidden\",\n }),\n [S.box, S.borderRadius, S.borderWidth, borderCol, rounded, theme.radius.full]\n );\n\n const checkDims = useMemo(\n () => ({\n w: Math.round(S.box * S.iconRatioW),\n h: Math.round(S.box * S.iconRatioH),\n }),\n [S.box, S.iconRatioH, S.iconRatioW]\n );\n\n const checkBaseCss = useMemo(\n () =>\n css({\n width: checkDims.w,\n height: checkDims.h,\n transition: \"opacity .14s ease, transform .14s ease\",\n color: checkColor,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n pointerEvents: \"none\",\n \"& > svg, & > img\": { width: \"100%\", height: \"100%\", display: \"block\" },\n }),\n [checkColor, checkDims.h, checkDims.w]\n );\n\n const textColCss = useMemo(\n () =>\n css({\n display: \"flex\",\n flexDirection: \"column\",\n minWidth: 0,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n }),\n []\n );\n\n const baseLabelCss = useMemo(\n () =>\n css({\n fontSize: S.labelFont,\n lineHeight: 1.1,\n fontWeight: 500,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n color: theme.text.primary,\n }),\n [S.labelFont, theme.text.primary]\n );\n\n const baseDescriptionCss = useMemo(\n () =>\n css({\n fontSize: S.labelFont,\n lineHeight: 1.25,\n color: theme.text.secondary,\n fontWeight: 400,\n marginTop: label && description ? theme.spacing.xs : 0,\n userSelect: \"text\",\n WebkitUserSelect: \"text\",\n }),\n [S.labelFont, description, label, theme.spacing.xs, theme.text.secondary]\n );\n\n const toggle = useCallback(() => {\n if (disabled) return;\n if (isControlled) {\n onChange?.(!isOn);\n } else {\n setInternalChecked((prev) => {\n const next = !prev;\n onChange?.(next);\n return next;\n });\n }\n }, [disabled, isControlled, isOn, onChange]);\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n toggle();\n }\n },\n [disabled, toggle]\n );\n\n return (\n <label\n ref={ref}\n role=\"checkbox\"\n aria-checked={isOn}\n aria-disabled={disabled || undefined}\n data-state={isOn ? \"checked\" : \"unchecked\"}\n className={[\"plainframe-ui-checkbox\", className || \"\"].join(\" \").trim()}\n css={[rootCss, focusRing({color: isOn ? \"primary\" : \"neutral\"}), userCss, disabled ? css({ opacity: 0.6 }) : null]}\n data-disabled={disabled ? \"true\" : \"false\"}\n tabIndex={!disabled ? 0 : -1}\n onKeyDown={onKeyDown}\n >\n <input\n type=\"checkbox\"\n checked={isOn}\n onChange={toggle}\n disabled={disabled}\n css={inputCss}\n {...props}\n tabIndex={-1}\n />\n\n <span className=\"plainframe-ui-checkbox-box\" css={[boxBase, userBoxCss]} aria-hidden=\"true\">\n <span className=\"plainframe-ui-checkbox-check\" css={[checkBaseCss, userCheckCss]}>\n {isOn &&\n (checkedIcon || (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={checkColor}\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n css={css({ width: \"100%\", height: \"100%\", display: \"block\" })}\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n ))}\n </span>\n </span>\n\n {(label || description) && (\n <span className=\"plainframe-ui-checkbox-text\" css={textColCss}>\n {label && (\n <span className=\"plainframe-ui-checkbox-label\" css={[baseLabelCss, userLabelCss]}>\n {label}\n </span>\n )}\n {description && (\n <span className=\"plainframe-ui-checkbox-description\" css={[baseDescriptionCss, userDescriptionCss]}>\n {description}\n </span>\n )}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Container, type ContainerProps } from \"./Container\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\ntype CardDirection = \"horizontal\" | \"vertical\";\ntype Align = \"start\" | \"center\" | \"end\";\n\ntype SectionPadding = {\n padding?: ContainerProps[\"padding\"];\n paddingX?: ContainerProps[\"padding\"];\n paddingY?: ContainerProps[\"padding\"];\n};\n\nexport type CardProps = WithCssProp &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"className\"> & {\n variant?: ContainerProps[\"variant\"];\n padding?: ContainerProps[\"padding\"];\n radius?: ContainerProps[\"radius\"];\n\n hoverable?: ContainerProps[\"hoverable\"];\n selectable?: ContainerProps[\"selectable\"];\n selected?: ContainerProps[\"selected\"];\n defaultSelected?: ContainerProps[\"defaultSelected\"];\n onSelectedChange?: (selected: boolean) => void;\n\n width?: ContainerProps[\"width\"];\n height?: ContainerProps[\"height\"];\n gap?: string | number | ContainerProps[\"padding\"];\n\n direction?: CardDirection;\n\n className?: string;\n };\n\ntype CardSectionBaseProps = WithCssProp &\n SectionPadding &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"className\"> & {\n className?: string;\n align?: Align;\n };\n\ntype CardSideProps = CardSectionBaseProps;\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nfunction resolveTokenPadding(\n padding: ContainerProps[\"padding\"],\n theme: Record<string, unknown>\n): string | undefined {\n if (padding == null) return undefined;\n\n if (typeof padding === \"number\") return `${padding}px`;\n\n if (typeof padding === \"string\") {\n const spacingScale =\n (theme.spacing as Record<string, string | number> | undefined) ??\n (theme.space as Record<string, string | number> | undefined);\n if (spacingScale && padding in spacingScale) {\n const v = spacingScale[padding];\n return toLen(v);\n }\n return padding;\n }\n\n return undefined;\n}\n\nfunction flexAlign(\n align: Align | undefined\n): \"flex-start\" | \"center\" | \"flex-end\" {\n switch (align) {\n case \"center\":\n return \"center\";\n case \"end\":\n return \"flex-end\";\n case \"start\":\n default:\n return \"flex-start\";\n }\n}\n\nfunction textAlign(align: Align | undefined): \"left\" | \"center\" | \"right\" {\n switch (align) {\n case \"center\":\n return \"center\";\n case \"end\":\n return \"right\";\n case \"start\":\n default:\n return \"left\";\n }\n}\n\nfunction resolveGap(\n gap: CardProps[\"gap\"],\n theme: Record<string, unknown>\n): string | number | undefined {\n if (gap === null || gap === undefined) {\n const spacing = theme.spacing as Record<string, string | number> | undefined;\n return spacing?.md ?? undefined;\n }\n\n if (typeof gap === \"number\") return gap;\n\n if (typeof gap === \"string\") {\n const spacingScale =\n (theme.spacing as Record<string, string | number> | undefined) ??\n (theme.space as Record<string, string | number> | undefined) ??\n {};\n if (gap in spacingScale) {\n return spacingScale[gap];\n }\n return gap;\n }\n\n return undefined;\n}\n\nfunction sectionPaddingStyles(\n theme: Record<string, unknown>,\n padding?: ContainerProps[\"padding\"],\n paddingX?: ContainerProps[\"padding\"],\n paddingY?: ContainerProps[\"padding\"]\n) {\n const p = resolveTokenPadding(padding, theme);\n const px = resolveTokenPadding(paddingX, theme);\n const py = resolveTokenPadding(paddingY, theme);\n\n const styles: React.CSSProperties = {};\n\n if (p && !px && !py) {\n styles.padding = p;\n }\n if (px) {\n styles.paddingLeft = px;\n styles.paddingRight = px;\n }\n if (py) {\n styles.paddingTop = py;\n styles.paddingBottom = py;\n }\n\n return styles;\n}\n\nfunction resolveColor(theme: Record<string, unknown>, color?: string | \"primary\" | \"secondary\") {\n if (!color) return undefined;\n if (color === \"primary\") return (theme as { text?: { primary?: string } }).text?.primary;\n if (color === \"secondary\") return (theme as { text?: { secondary?: string } }).text?.secondary;\n return color;\n}\n\n/* ───────────────────────── direction ctx ───────────────────────── */\n\nconst CardDirectionCtx = React.createContext<CardDirection>(\"horizontal\");\nconst useCardDirection = () => React.useContext(CardDirectionCtx);\n\n/* ───────────────────────── Card root ───────────────────────── */\n\nexport const Card: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<CardProps> & React.RefAttributes<HTMLDivElement>\n> = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n children,\n css: cssProp,\n variant = \"ghost\",\n padding = \"md\",\n radius = \"lg\",\n hoverable,\n selectable,\n selected,\n defaultSelected,\n onSelectedChange,\n width = \"100%\",\n height,\n gap,\n direction = \"horizontal\",\n className,\n onClick,\n ...rest\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const isVertical = direction === \"vertical\";\n\n const cardBase = css({\n position: \"relative\",\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n gap: resolveGap(gap, theme),\n alignItems: isVertical ? \"stretch\" : \"center\",\n transition: \"all .16s ease\",\n });\n\n return (\n <CardDirectionCtx.Provider value={direction}>\n <Container\n ref={ref}\n variant={variant}\n padding={padding}\n radius={radius}\n hoverable={hoverable}\n selectable={selectable}\n selected={selected}\n defaultSelected={defaultSelected}\n onSelectedChange={onSelectedChange}\n width={width}\n height={height}\n className={[\"plainframe-ui-card\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[focusRing(), cardBase, cssProp]}\n onClick={onClick}\n tabIndex={onClick ? 0 : undefined}\n {...rest}\n >\n {children}\n </Container>\n </CardDirectionCtx.Provider>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\n/* ───────────────────────── sections ───────────────────────── */\n\nexport const CardContent: React.FC<CardSectionBaseProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: flexAlign(align),\n textAlign: textAlign(align),\n ...(isVertical ? { width: \"100%\" } : { flex: 1, minWidth: 0 }),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-content\"\n className={[\"plainframe-ui-card-content\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardStart: React.FC<CardSideProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexShrink: 0,\n justifyContent: flexAlign(align),\n alignItems: flexAlign(align),\n ...(isVertical ? { width: \"100%\" } : {}),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-start\"\n className={[\"plainframe-ui-card-start\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardEnd: React.FC<CardSideProps> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const direction = useCardDirection();\n const isVertical = direction === \"vertical\";\n\n const base = css({\n display: \"flex\",\n flexShrink: 0,\n justifyContent: flexAlign(align),\n alignItems: flexAlign(align),\n ...(isVertical ? { width: \"100%\" } : {}),\n gap: theme.spacing.xs,\n color: theme.text.secondary,\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-end\"\n className={[\"plainframe-ui-card-end\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\n/* ───────── CardTitle / CardDescription with weight/size/color ───────── */\n\ntype TextTune = {\n weight?: number | string;\n size?: number | string;\n color?: string | \"primary\" | \"secondary\";\n};\n\nexport const CardTitle: React.FC<CardSectionBaseProps & TextTune> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n weight,\n size,\n color,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = css({\n fontWeight: weight ?? 500,\n fontSize:\n size ??\n (theme.fontSizes?.md !== undefined ? theme.fontSizes.md : \"1rem\"),\n color: resolveColor(theme, color) ?? theme.text?.primary,\n textAlign: textAlign(align),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n display: \"flex\",\n alignItems: \"center\",\n gap: theme.spacing?.xs ?? 6,\n });\n\n return (\n <div\n data-slot=\"card-title\"\n className={[\"plainframe-ui-card-title\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n\nexport const CardDescription: React.FC<CardSectionBaseProps & TextTune> = ({\n children,\n css: cssProp,\n className,\n align = \"start\",\n padding,\n paddingX,\n paddingY,\n weight,\n size,\n color,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = css({\n fontWeight: weight ?? 400,\n fontSize:\n size ??\n (theme.fontSizes?.md !== undefined ? theme.fontSizes.md : \"0.875rem\"),\n color: resolveColor(theme, color) ?? theme.text?.secondary,\n marginTop: theme.spacing?.xxs ?? 2,\n textAlign: textAlign(align),\n ...sectionPaddingStyles(theme, padding, paddingX, paddingY),\n });\n\n return (\n <div\n data-slot=\"card-description\"\n className={[\"plainframe-ui-card-description\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[base, cssProp]}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useCallback, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype SpaceToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\ntype ContainerVariant = \"panel\" | \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type ContainerProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"style\" | \"color\"\n> & {\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n variant?: ContainerVariant;\n padding?: number | string | SpaceToken;\n radius?: number | string | RadiusToken;\n hoverable?: boolean;\n selectable?: boolean;\n selected?: boolean;\n defaultSelected?: boolean;\n onSelectedChange?: (selected: boolean) => void;\n width?: number | string;\n height?: number | string;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst resolvePadding = (\n padding: ContainerProps[\"padding\"],\n theme: { spacing?: Record<string, string | number>; space?: Record<string, string | number> }\n): string | undefined => {\n if (padding == null) return undefined;\n if (typeof padding === \"number\") return `${padding}px`;\n if (typeof padding === \"string\") {\n const scale = theme.spacing ?? theme.space;\n return toLen(scale?.[padding] ?? padding);\n }\n return undefined;\n};\n\nconst resolveRadius = (\n radius: ContainerProps[\"radius\"],\n theme: { radius?: Record<string, string | number>; radii?: Record<string, string | number> }\n): string | undefined => {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n const scale = theme.radius ?? theme.radii;\n return toLen(scale?.[radius] ?? radius);\n }\n return undefined;\n};\n\nconst baseBgFor = (\n variant: ContainerVariant,\n theme: { surface?: { panelBg?: string; subtleBg?: string } }\n): string => {\n const s = theme.surface ?? {};\n if (variant === \"panel\" || variant === \"outlined\") return s.panelBg ?? \"transparent\";\n if (variant === \"subtle\") return s.subtleBg ?? \"transparent\";\n return \"transparent\";\n};\n\nconst hoverBgFor = (\n variant: ContainerVariant,\n theme: { surface?: { panelHover?: string; panelBg?: string; subtleHover?: string; subtleBg?: string } },\n baseBg: string\n): string => {\n const s = theme.surface ?? {};\n if (variant === \"panel\" || variant === \"outlined\") return s.panelHover ?? s.panelBg ?? baseBg;\n if (variant === \"subtle\") return s.subtleHover ?? s.subtleBg ?? baseBg;\n return s.subtleBg ?? baseBg;\n};\n\nexport const Container: React.ForwardRefExoticComponent<\n ContainerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ContainerProps>(function Container(\n {\n children,\n css: userCss,\n variant = \"ghost\",\n padding,\n radius,\n className,\n hoverable,\n selectable,\n selected: controlledSelected,\n defaultSelected,\n onSelectedChange,\n width,\n height,\n onClick,\n onKeyDown,\n role,\n tabIndex,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n const surface = theme.surface ?? {};\n\n const [internalSelected, setInternalSelected] = useState<boolean>(!!defaultSelected);\n const isControlled = controlledSelected != null;\n const selected = isControlled ? !!controlledSelected : internalSelected;\n\n const baseBg = useMemo<string>(() => baseBgFor(variant, theme), [variant, theme]);\n const hoverBg = useMemo<string>(() => hoverBgFor(variant, theme, baseBg), [variant, theme, baseBg]);\n const selectedBg: string = hoverBg;\n\n const pad = useMemo<string | undefined>(() => resolvePadding(padding, theme), [padding, theme]);\n const rad = useMemo<string | undefined>(() => resolveRadius(radius, theme), [radius, theme]);\n\n const interactive = !!hoverable || !!selectable;\n\n const rootCss = useMemo<Interpolation<Theme>>(\n () =>\n css({\n backgroundColor: baseBg,\n padding: pad,\n borderRadius: rad,\n border:\n variant === \"outlined\"\n ? `${theme.componentHeights?.border ?? \"1px\"} solid ${theme.surface.border ?? \"transparent\"}`\n : undefined,\n backgroundClip: \"padding-box\",\n boxSizing: \"border-box\",\n width: width ? \"100%\" : undefined,\n maxWidth: toLen(width),\n height: toLen(height),\n transition: \"background-color .16s ease, border-color .16s ease\",\n cursor: interactive ? \"pointer\" : undefined,\n ...(interactive ? { \"&:hover\": { backgroundColor: hoverBg } } : {}),\n '&[data-selected=\"true\"]': { backgroundColor: selectedBg },\n ...(interactive\n ? { '&[data-selected=\"true\"]:hover': { backgroundColor: selectedBg } }\n : {}),\n }),\n [baseBg, pad, rad, variant, theme.componentHeights, theme.surface.border, width, height, interactive, hoverBg, selectedBg]\n );\n\n const toggleSelected = useCallback((): void => {\n if (!selectable) return;\n const next = !selected;\n if (!isControlled) setInternalSelected(next);\n onSelectedChange?.(next);\n }, [isControlled, onSelectedChange, selectable, selected]);\n\n const handleClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n (e) => {\n if (selectable) toggleSelected();\n onClick?.(e);\n },\n [selectable, toggleSelected, onClick]\n );\n\n const handleKeyDownInt = useCallback<React.KeyboardEventHandler<HTMLDivElement>>(\n (e) => {\n if (selectable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n toggleSelected();\n }\n onKeyDown?.(e);\n },\n [selectable, toggleSelected, onKeyDown]\n );\n\n const focusRing = useFocusRing();\n\n return (\n <div\n ref={ref}\n data-variant={variant}\n data-selected={selectable && selected ? \"true\" : undefined}\n aria-pressed={selectable ? selected : undefined}\n className={[\"plainframe-ui-container\", className || \"\"].join(\" \").trim()}\n css={[focusRing(), rootCss, userCss]}\n onClick={handleClick}\n onKeyDown={handleKeyDownInt}\n role={selectable ? role ?? \"button\" : role}\n tabIndex={selectable ? tabIndex ?? 0 : tabIndex}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nContainer.displayName = \"Container\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useState, useEffect, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype AvatarProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | number;\n color?: string;\n rounded?: boolean;\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst sizeKeys = [\"sm\", \"md\", \"lg\"] as const;\n\nconst getSize = (\n size: AvatarProps[\"size\"],\n theme: ReturnType<typeof usePlainframeUITheme>\n) => {\n if (typeof size === \"number\") return size;\n if (sizeKeys.includes(size as unknown as typeof sizeKeys[number]))\n return theme.componentHeights[size as keyof typeof theme.componentHeights];\n return theme.componentHeights.md;\n};\n\nconst getPaletteColor = (\n theme: ReturnType<typeof usePlainframeUITheme>,\n color?: string\n) => {\n const palette = theme.palette?.[color ?? \"primary\"] ?? theme.palette.primary;\n return palette?.[600] ?? palette?.[500] ?? theme.neutral?.[600] ?? theme.neutral?.[500];\n};\n\nconst getForegroundColor = (\n theme: ReturnType<typeof usePlainframeUITheme>,\n color?: string\n) => {\n const onColors = theme.text?.onColors ?? {};\n return onColors[color ?? \"primary\"] ?? onColors.primary ?? theme.text?.primary ?? \"#fff\";\n};\n\nconst getFallbackText = (children: React.ReactNode, alt?: string) => {\n if (typeof children === \"string\") return children;\n return (alt?.trim()?.[0] || \"\").toUpperCase();\n};\n\nexport const Avatar: React.ForwardRefExoticComponent<\n AvatarProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n src,\n alt,\n size = \"md\",\n color = \"primary\",\n rounded = true,\n className,\n css: userCss,\n children,\n ...rest\n },\n ref\n ) => {\n const theme = usePlainframeUITheme();\n const [showImg, setShowImg] = useState(!!src);\n\n useEffect(() => {\n setShowImg(!!src);\n }, [src]);\n\n const px = getSize(size, theme);\n const numeric = typeof px === \"number\" ? px : Number.parseFloat(String(px)) || 0;\n const fontSize = numeric ? Math.round(numeric * (numeric <= 28 ? 0.55 : 0.52)) : undefined;\n const radius = rounded ? theme.radius.full : theme.radius.md;\n const bg = getPaletteColor(theme, color);\n const fg = getForegroundColor(theme, color);\n const fallbackText = getFallbackText(children, alt);\n\n const baseCss = css({\n width: px,\n height: px,\n borderRadius: radius,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n background: showImg ? \"transparent\" : bg,\n color: showImg ? \"inherit\" : fg,\n boxSizing: \"border-box\",\n userSelect: \"none\",\n });\n\n const imgCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"block\",\n objectFit: \"cover\",\n });\n\n const textCss = css({\n fontSize,\n lineHeight: 1,\n fontWeight: 600,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n marginTop: -1,\n });\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-avatar\", className || \"\"].join(\" \").trim()}\n css={[baseCss, userCss]}\n role={showImg ? undefined : \"img\"}\n aria-label={showImg ? undefined : alt}\n {...rest}\n >\n {showImg && src ? (\n <img\n className=\"plainframe-ui-avatar-img\"\n src={src}\n alt={alt}\n css={imgCss}\n onError={() => setShowImg(false)}\n decoding=\"async\"\n loading=\"lazy\"\n />\n ) : typeof children === \"string\" ? (\n <span className=\"plainframe-ui-avatar-initials\" css={textCss}>\n {children}\n </span>\n ) : children ? (\n children\n ) : (\n <span className=\"plainframe-ui-avatar-initials\" css={textCss}>\n {fallbackText}\n </span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, isValidElement, cloneElement } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype AvatarGroupProps = {\n children: React.ReactNode;\n max?: number;\n size?: \"sm\" | \"md\" | \"lg\" | string | number;\n overlap?: number;\n css?: Interpolation<Theme>;\n rounded?: boolean;\n bgColor?: string | \"subtle\" | \"panel\";\n extraLabelCss?: Interpolation<Theme>;\n outlineThickness?: number | string;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n children,\n max,\n size = \"md\",\n overlap = -7,\n css: userCss,\n rounded = true,\n bgColor,\n extraLabelCss,\n outlineThickness = 4,\n className,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const resolveDiameter = (): string => {\n if (typeof size === \"number\") return `${size}px`;\n if (typeof size === \"string\") {\n const h =\n (theme.componentHeights && theme.componentHeights[size]) ??\n (theme.spacing && theme.spacing[size]);\n return toLen(h ?? size)!;\n }\n return \"32px\";\n };\n\n const diameter = resolveDiameter();\n\n const nodes = Children.toArray(children).filter(Boolean);\n const hasMax = typeof max === \"number\" && max >= 0;\n const shown = hasMax && nodes.length > max ? nodes.slice(0, max) : nodes;\n const extra = hasMax && nodes.length > max ? nodes.length - max : 0;\n\n const ring =\n bgColor === \"panel\"\n ? theme.surface.panelBg\n : bgColor === \"subtle\"\n ? theme.surface.subtleBg\n : bgColor ?? theme.surface.appBg;\n\n const ringThickness = toLen(outlineThickness) ?? \"4px\";\n\n const containerCss = css({\n display: \"flex\",\n alignItems: \"center\",\n });\n\n const itemCss = (i: number) =>\n css({\n marginLeft: i === 0 ? 0 : overlap,\n zIndex: shown.length - i,\n boxShadow: `0 0 0 ${ringThickness} ${ring}`,\n backgroundColor: ring,\n borderRadius: rounded ? theme.radius.full : theme.radius.md,\n display: \"inline-flex\",\n width: diameter,\n height: diameter,\n overflow: \"hidden\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n flex: \"0 0 auto\",\n });\n\n const childFillCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n objectFit: \"cover\",\n boxSizing: \"border-box\",\n });\n\n return (\n <div\n role=\"group\"\n tabIndex={-1}\n aria-label=\"Avatar group\"\n className={`plainframe-ui-avatar-group${className ? ` ${className}` : \"\"}`}\n css={[containerCss, userCss, focusRing()]}\n >\n {shown.map((child, i) => {\n if (!isValidElement(child)) {\n return (\n <div key={i} className=\"plainframe-ui-avatar-group-item\" css={itemCss(i)}>\n <span css={childFillCss}>{child}</span>\n </div>\n );\n }\n\n const childElement = child as React.ReactElement<any>;\n const prevCss = childElement.props?.css;\n const mergedCss = prevCss == null ? childFillCss : [childFillCss, prevCss];\n\n const cloned = cloneElement(childElement, {\n size,\n rounded,\n css: mergedCss,\n style: {\n ...childElement.props?.style,\n width: \"100%\",\n height: \"100%\",\n objectFit: childElement.props?.objectFit ?? \"cover\",\n },\n });\n\n return (\n <div key={i} className=\"plainframe-ui-avatar-group-item\" css={itemCss(i)}>\n {cloned}\n </div>\n );\n })}\n\n {extra > 0 && (\n <span\n className=\"plainframe-ui-avatar-group-extra\"\n css={[\n css({\n marginLeft: 5,\n fontSize: theme.fontSizes.md,\n fontWeight: 600,\n lineHeight: 1,\n padding: \"2px 1px\",\n zIndex: 2,\n color: theme.text.secondary,\n }),\n extraLabelCss,\n ]}\n aria-label={`+${extra} more`}\n >\n +{extra}\n </span>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype BadgeAnchorOrigin = {\n vertical?: \"top\" | \"bottom\" | \"center\";\n horizontal?: \"left\" | \"right\" | \"center\";\n};\n\ntype BadgeProps = {\n content?: number | string | React.ReactNode;\n color?:\n | \"primary\"\n | \"secondary\"\n | \"neutral\"\n | \"danger\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | string;\n fontColor?: string;\n fontWeight?: number | string;\n fontSize?: number | string;\n variant?: \"standard\" | \"dot\";\n max?: number;\n showZero?: boolean;\n visible?: boolean;\n anchorOrigin?: BadgeAnchorOrigin;\n overlap?: \"circular\" | \"rectangular\";\n children: React.ReactNode;\n animate?: boolean;\n size?: number;\n outline?: boolean;\n outlineColor?: string;\n className?: string;\n badgeClassName?: string;\n css?: Interpolation<any>;\n badgeCss?: Interpolation<any>;\n offsetX?: number | string;\n offsetY?: number | string;\n};\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\ntype Theme = {\n palette?: Record<string, Record<string, string>>;\n neutral?: Record<string, string>;\n text?: {\n onColors?: Record<string, string>;\n primary?: string;\n };\n surface?: {\n appBg?: string;\n };\n};\n\nconst getPaletteScale = (\n theme: Theme,\n color: string\n): { scale: Record<string, string>; onKey: string } => {\n const palette = theme.palette || {};\n const neutralScale = theme.neutral || {};\n if (color === \"neutral\" || color === \"secondary\") {\n return { scale: neutralScale, onKey: \"neutral\" };\n }\n if (typeof color === \"string\" && palette[color]) {\n return { scale: palette[color], onKey: color };\n }\n return { scale: palette.primary || neutralScale, onKey: \"primary\" };\n};\n\nconst getBadgeBg = (scale: Record<string, string>) =>\n scale[600] ?? scale[500] ?? scale[400] ?? Object.values(scale)[0] ?? \"#000\";\n\nconst getFontColor = (\n theme: Theme,\n onColors: Record<string, string>,\n onKey: string,\n fontColor?: string\n) =>\n fontColor ??\n onColors[onKey] ??\n onColors.primary ??\n theme.text?.primary ??\n \"#fff\";\n\nconst getDisplayContent = (\n content: BadgeProps[\"content\"],\n max: number | undefined,\n variant: BadgeProps[\"variant\"]\n) => {\n if (variant === \"dot\") return \"\";\n if (typeof content === \"number\" && typeof max === \"number\" && content > max)\n return `${max}+`;\n return content ?? \"\";\n};\n\nconst getShouldShow = (\n visible: boolean,\n variant: BadgeProps[\"variant\"],\n content: BadgeProps[\"content\"],\n showZero: boolean\n) =>\n visible &&\n (variant === \"dot\" || !!content || (content === 0 && showZero));\n\nexport const Badge: React.FC<BadgeProps> = ({\n content,\n color = \"primary\",\n fontColor,\n fontWeight = 600,\n fontSize,\n variant = \"dot\",\n max = 99,\n showZero = false,\n visible = true,\n anchorOrigin = { vertical: \"top\", horizontal: \"right\" },\n overlap = \"rectangular\",\n children,\n animate = true,\n size,\n outline = false,\n outlineColor,\n className,\n badgeClassName,\n css: wrapperCss,\n badgeCss,\n offsetX,\n offsetY,\n}) => {\n const theme = usePlainframeUITheme();\n const isDot = variant === \"dot\";\n const diameter = size ?? (isDot ? 8 : 17);\n const _fontSize = fontSize ?? (isDot ? 0 : 10);\n\n const { scale, onKey } = getPaletteScale(theme, color as string);\n const bg = getBadgeBg(scale);\n const onColors = theme.text?.onColors || {};\n const finalFontColor = getFontColor(theme, onColors, onKey, fontColor);\n\n const displayContent = getDisplayContent(content, max, variant);\n const shouldShow = getShouldShow(visible, variant, content, showZero);\n\n const wrapperBase = css({\n position: \"relative\",\n display: \"inline-block\",\n });\n\n const derivedOffset =\n overlap === \"circular\" ? (isDot ? \"12.5%\" : \"5%\") : 0;\n const offX = toLen(offsetX ?? derivedOffset);\n const offY = toLen(offsetY ?? derivedOffset);\n\n const vertical = anchorOrigin.vertical || \"top\";\n const horizontal = anchorOrigin.horizontal || \"right\";\n\n const pos: React.CSSProperties = {};\n let translateX = \"0\",\n translateY = \"0\";\n\n if (vertical === \"center\") {\n pos.top = \"50%\";\n translateY = \"-50%\";\n } else if (vertical === \"top\") {\n pos.top = offY;\n translateY = \"-45%\";\n } else {\n pos.bottom = offY;\n translateY = \"45%\";\n }\n\n if (horizontal === \"center\") {\n pos.left = \"50%\";\n translateX = \"-50%\";\n } else if (horizontal === \"right\") {\n pos.right = offX;\n translateX = \"45%\";\n } else {\n pos.left = offX;\n translateX = \"-45%\";\n }\n\n const baseScale = shouldShow ? 1 : 0.8;\n\n const bubbleBase = css({\n minWidth: isDot ? diameter : diameter / 2,\n height: diameter,\n background: bg,\n color: finalFontColor,\n fontSize: typeof _fontSize === \"number\" ? `${_fontSize}px` : _fontSize,\n fontWeight,\n borderRadius: 999,\n padding: isDot ? 0 : `0 ${diameter / 4}px`,\n boxShadow: \"0 2px 8px rgba(0,0,0,0.04)\",\n lineHeight: 1,\n position: \"absolute\",\n pointerEvents: \"none\",\n zIndex: 10,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...(outline\n ? {\n boxShadow: `0 0 0 2px ${\n outlineColor ?? (theme.surface?.appBg as string)\n }`,\n }\n : {}),\n opacity: shouldShow ? 1 : 0,\n transform: `translate(${translateX}, ${translateY}) scale(${\n shouldShow ? baseScale : 0.5\n })`,\n ...(animate\n ? {\n transition:\n \"opacity .18s cubic-bezier(.4,1.6,.6,1), transform .18s cubic-bezier(.4,1.6,.6,1)\",\n }\n : {}),\n ...pos,\n });\n\n return (\n <div\n className={[\"plainframe-ui-badge-wrapper\", className || \"\"].join(\" \").trim()}\n css={[wrapperBase, wrapperCss]}\n >\n {children}\n <span\n aria-hidden={!shouldShow}\n className={[\"plainframe-ui-badge\", badgeClassName || \"\"].join(\" \").trim()}\n css={[bubbleBase, badgeCss]}\n >\n {displayContent}\n </span>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport { css as emCss, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype BackdropProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n on: boolean;\n onClickAway?: () => void;\n blur?: boolean;\n blurDepth?: number | string;\n color?: string;\n zIndex?: number;\n css?: Interpolation<Theme>;\n contentCss?: Interpolation<Theme>;\n overlayCss?: Interpolation<Theme>;\n children?: React.ReactNode;\n transitionDuration?: number;\n keepMounted?: boolean;\n className?: string;\n contentClassName?: string;\n lockScroll?: boolean;\n};\n\nexport const Backdrop: React.FC<BackdropProps> = ({\n on,\n onClickAway,\n blur = false,\n blurDepth = 2.5,\n color,\n zIndex = 1000,\n css: userRootCss,\n contentCss: userContentCss,\n overlayCss: userOverlayCss,\n children,\n transitionDuration = 300,\n keepMounted = true,\n className,\n contentClassName,\n lockScroll = true,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const overlayColor = useMemo(\n () => color ?? (theme.surface.overlayBg as string),\n [color, theme.surface.overlayBg]\n );\n\n const [visible, setVisible] = useState(on);\n const [show, setShow] = useState(on);\n const hideTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const rafRef = useRef<number | null>(null);\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n if (on) {\n setVisible(true);\n rafRef.current = requestAnimationFrame(() => {\n setShow(true);\n rafRef.current = null;\n });\n } else {\n setShow(false);\n hideTimer.current = setTimeout(() => {\n setVisible(false);\n hideTimer.current = null;\n }, transitionDuration);\n }\n\n return () => {\n if (hideTimer.current) {\n clearTimeout(hideTimer.current);\n hideTimer.current = null;\n }\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [on, transitionDuration]);\n\n useEffect(() => {\n if (!lockScroll || !on) return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPad = body.style.paddingRight;\n const scrollbar = window.innerWidth - document.documentElement.clientWidth;\n const computedPad = parseFloat(getComputedStyle(body).paddingRight || \"0\");\n body.style.overflow = \"hidden\";\n if (scrollbar > 0) body.style.paddingRight = `${computedPad + scrollbar}px`;\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPad;\n };\n }, [on, lockScroll]);\n\n useEffect(() => {\n if (!show || !onClickAway) return;\n const onEsc = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClickAway();\n };\n document.addEventListener(\"keydown\", onEsc);\n return () => document.removeEventListener(\"keydown\", onEsc);\n }, [show, onClickAway]);\n\n const handleRootPointerDown = (e: React.PointerEvent<HTMLDivElement>) => {\n if (!show || !onClickAway || !contentRef.current) return;\n const t = e.target as Node | null;\n if (t && !contentRef.current.contains(t)) onClickAway();\n };\n\n const blurValue =\n blur && blurDepth\n ? typeof blurDepth === \"number\"\n ? `${blurDepth}px`\n : blurDepth\n : undefined;\n\n if (!keepMounted && !visible) return null;\n\n const rootBaseCss = emCss({\n position: \"fixed\",\n inset: 0,\n width: \"100vw\",\n height: \"100vh\",\n zIndex,\n display: \"grid\",\n placeItems: \"center\",\n pointerEvents: show ? \"auto\" : \"none\",\n visibility: visible ? \"visible\" : \"hidden\",\n });\n\n const overlayBaseCss = emCss({\n position: \"absolute\",\n inset: 0,\n background: overlayColor,\n backdropFilter: blurValue ? `blur(${blurValue})` : undefined,\n WebkitBackdropFilter: blurValue ? `blur(${blurValue})` : undefined,\n opacity: show ? 1 : 0,\n transition: `opacity ${transitionDuration}ms cubic-bezier(.4,0,.2,1)`,\n pointerEvents: show ? \"auto\" : \"none\",\n });\n\n const contentBaseCss = emCss({\n position: \"relative\",\n zIndex: 1,\n pointerEvents: show ? \"auto\" : \"none\",\n });\n\n return (\n <div\n aria-hidden={!visible || undefined}\n className={[\"plainframe-ui-backdrop\", className || \"\"].join(\" \").trim()}\n css={[rootBaseCss, userRootCss]}\n onPointerDown={handleRootPointerDown}\n {...rest}\n >\n <div\n className=\"plainframe-ui-backdrop-overlay\"\n css={[overlayBaseCss, userOverlayCss]}\n role=\"presentation\"\n />\n <div\n ref={contentRef}\n className={[\n \"plainframe-ui-backdrop-content\",\n contentClassName || \"\",\n ]\n .join(\" \")\n .trim()}\n css={[contentBaseCss, userContentCss]}\n >\n {children}\n </div>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type BreadCrumbItemProps = Omit<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n \"style\" | \"href\"\n> &\n WithCss & {\n href?: string;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n };\n\nexport const BreadCrumbItem: React.FC<BreadCrumbItemProps> = () => null;\nObject.defineProperty(BreadCrumbItem, \"displayName\", {\n value: \"PF.BreadCrumbItem\",\n configurable: true,\n});\n\nfunction unwrapEmotion(child: React.ReactElement) {\n const p = child.props ?? {};\n const hasEmotionType =\n typeof (p as { __EMOTION_TYPE_PLEASE_DO_NOT_USE__?: unknown })\n .__EMOTION_TYPE_PLEASE_DO_NOT_USE__ !== \"undefined\";\n const t = hasEmotionType\n ? (p as { __EMOTION_TYPE_PLEASE_DO_NOT_USE__: unknown })\n .__EMOTION_TYPE_PLEASE_DO_NOT_USE__\n : child.type;\n return { type: t, props: p };\n}\n\nexport type BreadCrumbsProps = Omit<\n React.HTMLAttributes<HTMLElement>,\n \"style\"\n> & {\n children?: React.ReactNode;\n separator?: React.ReactNode;\n css?: Interpolation<Theme>;\n crumbCss?: Interpolation<Theme>;\n activeCrumbCss?: Interpolation<Theme>;\n inactiveCrumbCss?: Interpolation<Theme>;\n linkCrumbCss?: Interpolation<Theme>;\n separatorCss?: Interpolation<Theme>;\n hover?: boolean;\n className?: string;\n};\n\nexport const BreadCrumbs: React.FC<BreadCrumbsProps> = React.memo(({\n children,\n separator = \"/\",\n css: userRootCss,\n crumbCss: userCrumbCss,\n activeCrumbCss: userActiveCrumbCss,\n inactiveCrumbCss: userInactiveCrumbCss,\n linkCrumbCss: userLinkCrumbCss,\n separatorCss: userSepCss,\n hover = true,\n className,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n // Memoize items extraction for performance\n const items = React.useMemo(() =>\n React.Children.toArray(children).flatMap((child) => {\n if (!React.isValidElement(child)) return [];\n const { type, props } = unwrapEmotion(child as React.ReactElement);\n const isCrumb =\n type === BreadCrumbItem ||\n (typeof type === \"function\" && \"displayName\" in type && type.displayName === BreadCrumbItem.displayName);\n if (!isCrumb) return [];\n const p = props as BreadCrumbItemProps;\n return [\n {\n href: p.href,\n disabled: p.disabled,\n node: p.children,\n className: p.className,\n css: p.css,\n onClick: p.onClick,\n startIcon: p.startIcon,\n endIcon: p.endIcon,\n },\n ];\n })\n , [children]);\n\n // Memoize styles\n const rootCss = React.useMemo(() => css({\n display: \"flex\",\n alignItems: \"center\",\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n gap: theme.spacing.xs,\n cursor: \"default\",\n }), [theme]);\n\n const sepCss = React.useMemo(() => css({\n margin: \"0 0.15rem\",\n color: theme.neutral[500],\n flex: \"0 0 auto\",\n justifyContent: \"center\",\n alignItems: \"center\",\n display: \"flex\",\n }), [theme]);\n\n const makeCrumbCss = React.useCallback((\n isLast: boolean,\n isLink: boolean,\n disabled?: boolean\n ) => {\n const baseColor = isLast ? theme.text.primary : theme.text.secondary;\n const interactive = hover && isLink && !disabled;\n return css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: theme.spacing.xs,\n color: baseColor,\n cursor: isLink && !disabled ? \"pointer\" : \"default\",\n textDecoration: \"none\",\n borderRadius: theme.radius.xs,\n fontWeight: 500,\n transition: \"all .16s ease !important\",\n \"&:hover\": interactive\n ? {\n textDecoration: \"underline\",\n color: theme.text.primary,\n }\n : {\n textDecoration: \"none\",\n },\n });\n }, [theme, hover]);\n\n const iconCss = React.useMemo(() => css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n lineHeight: 0,\n }), []);\n\n const labelCss = React.useMemo(() => css({\n display: \"inline-block\",\n }), []);\n\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={[\"plainframe-ui-breadcrumbs\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[rootCss, userRootCss]}\n {...rest}\n >\n {items.map((it, idx) => {\n const isLast = idx === items.length - 1;\n const isLink = !!it.href && !it.disabled && !isLast;\n\n const commonClass = [\n \"plainframe-ui-breadcrumb\",\n isLast\n ? \"plainframe-ui-breadcrumb--active\"\n : \"plainframe-ui-breadcrumb--inactive\",\n isLink ? \"plainframe-ui-breadcrumb--link\" : \"\",\n it.className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const commonCss = [\n makeCrumbCss(isLast, isLink, it.disabled),\n userCrumbCss,\n isLast ? userActiveCrumbCss : userInactiveCrumbCss,\n isLink ? userLinkCrumbCss : undefined,\n focusRing(),\n it.css,\n ];\n\n const content = (\n <>\n {it.startIcon && (\n <span\n className=\"plainframe-ui-breadcrumb-icon-start\"\n css={iconCss}\n >\n {it.startIcon}\n </span>\n )}\n <span className=\"plainframe-ui-breadcrumb-label\" css={labelCss}>\n {it.node}\n </span>\n {it.endIcon && (\n <span\n className=\"plainframe-ui-breadcrumb-icon-end\"\n css={iconCss}\n >\n {it.endIcon}\n </span>\n )}\n </>\n );\n\n return (\n <React.Fragment key={idx}>\n {idx !== 0 && (\n <span\n className=\"plainframe-ui-breadcrumb-separator\"\n css={[sepCss, userSepCss]}\n >\n {separator}\n </span>\n )}\n\n {isLink ? (\n <a\n href={it.href}\n onClick={it.onClick}\n tabIndex={0}\n data-active={isLast ? \"true\" : \"false\"}\n data-link=\"true\"\n className={commonClass}\n css={commonCss}\n >\n {content}\n </a>\n ) : (\n <span\n aria-current={isLast ? \"page\" : undefined}\n tabIndex={isLast ? -1 : 0}\n data-active={isLast ? \"true\" : \"false\"}\n data-link=\"false\"\n className={commonClass}\n css={commonCss}\n >\n {content}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </nav>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useMemo,\n isValidElement,\n cloneElement,\n type ReactNode,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { PlainframeUITheme, Scale } from \"../theme/theme\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Progress } from \"./Progress\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"destructive\"\n | \"subtle\"\n | \"outlined\"\n | \"ghost\"\n | \"quiet\"\n | \"ghost-destructive\" // NEW\n\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\" | number | string;\nexport type LoadingPosition = \"start\" | \"end\" | \"center\";\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\ntype ButtonBase = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"color\" | \"style\"\n> &\n WithCssProp & {\n size?: ButtonSize;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n rounded?: boolean;\n fullWidth?: boolean;\n loading?: boolean;\n loadingIndicator?: ReactNode;\n loadingPosition?: LoadingPosition;\n className?: string;\n hoverEffect?: boolean;\n children?: ReactNode;\n };\n\nexport type ButtonProps = ButtonBase & { variant?: ButtonVariant };\nconst cloneIcon = (icon: ReactNode, size: number | string) => {\n if (!isValidElement(icon)) return icon;\n const props = icon.props as Record<string, unknown>;\n const next: Record<string, unknown> = {};\n if (props.size === undefined) next.size = size;\n if (props.color === undefined) next.color = \"currentColor\";\n return cloneElement(icon, { ...props, ...next });\n};\n\nconst px = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\n\nconst hasText = (node: React.ReactNode): boolean => {\n let found = false;\n React.Children.forEach(node, (ch) => {\n if (found) return;\n if (typeof ch === \"string\" || typeof ch === \"number\") {\n if (String(ch).trim() !== \"\") found = true;\n } else if (Array.isArray(ch)) {\n if (hasText(ch)) found = true;\n }\n });\n return found;\n};\n\nfunction getSize(theme: PlainframeUITheme, size: ButtonSize) {\n const t = theme;\n const kind: \"sm\" | \"md\" | \"lg\" =\n typeof size === \"string\" && (size === \"sm\" || size === \"md\" || size === \"lg\")\n ? size\n : \"md\";\n\n if (kind === \"sm\") {\n return {\n fontSize: t.fontSizes.md,\n paddingY: t.spacing.xs,\n paddingX: t.spacing.md,\n paddingXIcon: t.spacing.md,\n iconSize: 14,\n minHeight: t.componentHeights.sm,\n radius: t.radius.sm,\n };\n }\n if (kind === \"lg\") {\n return {\n fontSize: t.fontSizes.lg,\n paddingY: t.spacing.sm,\n paddingX: t.spacing.lg,\n paddingXIcon: t.spacing.md,\n iconSize: 18,\n minHeight: t.componentHeights.lg,\n radius: t.radius.md,\n };\n }\n return {\n fontSize: t.fontSizes.md,\n paddingY: t.spacing.sm,\n paddingX: t.spacing.lg,\n paddingXIcon: t.spacing.md,\n iconSize: 16,\n minHeight: t.componentHeights.md,\n radius: t.radius.md,\n };\n}\n\nfunction resolveVisuals(theme: PlainframeUITheme, variant: ButtonVariant) {\n const N = theme.neutral as Scale;\n const T = theme.text;\n const P = theme.palette as Record<string, Scale>;\n const primaryScale: Scale = (P.primary as Scale) || (N as Scale);\n const dangerScale: Scale = (P.danger as Scale) || (P.error as Scale) || primaryScale;\n const onColors = (theme.text.onColors || {}) as Record<string, string>;\n const primaryOn = onColors.primary ?? T.onColors.primary;\n const dangerOn = onColors.danger ?? primaryOn;\n\n const pick = (scale: Scale, k: keyof Scale, fb?: string) =>\n (scale && scale[k]) || fb;\n\n if (variant === \"primary\") {\n const scale = primaryScale;\n const bg =\n pick(scale, 600, N[900] as string) ||\n pick(scale, 500, N[900] as string);\n const hoverBg =\n pick(scale, 500, N[800] as string) ||\n pick(scale, 600, N[800] as string);\n return { bg, fg: primaryOn, hoverBg, border: \"none\" };\n }\n\n if (variant === \"destructive\") {\n const scale = dangerScale;\n const bg =\n pick(scale, 600, N[900] as string) ||\n pick(scale, 500, N[900] as string);\n const hoverBg =\n pick(scale, 500, N[800] as string) ||\n pick(scale, 600, N[800] as string);\n return { bg, fg: dangerOn, hoverBg, border: \"none\" };\n }\n\n if (variant === \"ghost-destructive\") {\n const D = (dangerScale as Scale);\n const fg = D[700];\n return { bg: \"transparent\", fg, hoverBg: theme.palette.danger[50], border: \"none\" };\n }\n\n if (variant === \"subtle\") {\n return {\n bg: theme.surface.subtleBg,\n fg: T.primary,\n hoverBg: theme.surface.subtleHover,\n border: \"none\",\n };\n }\n\n if (variant === \"outlined\") {\n return {\n bg: theme.surface.panelBg,\n fg: T.primary,\n hoverBg: theme.surface.panelHover,\n border: `${theme.componentHeights.border} solid ${theme.surface.border}`,\n };\n }\n\n if (variant === \"ghost\") {\n return {\n bg: \"transparent\",\n fg: theme.text.primary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n }\n\n if (variant === \"quiet\") {\n return {\n bg: \"transparent\",\n fg: T.secondary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n }\n\n return {\n bg: \"transparent\",\n fg: T.secondary,\n hoverBg: theme.surface.subtleBg,\n border: \"none\",\n };\n}\n\nexport const Button = React.memo(React.forwardRef<HTMLButtonElement, ButtonProps>(({\n variant = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n rounded = false,\n fullWidth = false,\n disabled = false,\n loading = false,\n loadingIndicator,\n loadingPosition = \"center\",\n children,\n className,\n hoverEffect = true,\n onClick,\n css: userCss,\n ...props\n}, ref) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n // normalize alias\n const normalizedVariant: ButtonVariant = variant === \"ghost-destructive\" ? \"ghost-destructive\" : variant;\n\n const S = useMemo(() => getSize(theme, size), [theme, size]);\n const vis = useMemo(() => resolveVisuals(theme, normalizedVariant), [theme, normalizedVariant]);\n\n const isIconOnly = useMemo(\n () =>\n !startIcon && !endIcon && !hasText(children) && React.Children.count(children) === 1,\n [startIcon, endIcon, children]\n );\n\n const iconSize = S.iconSize;\n const sizedStart = useMemo(() => cloneIcon(startIcon, iconSize), [startIcon, iconSize]);\n const sizedEnd = useMemo(() => cloneIcon(endIcon, iconSize), [endIcon, iconSize]);\n\n const spinnerNode = useMemo(\n () => loadingIndicator ?? <Progress variant=\"circular\" size={14} thickness={5} />,\n [loadingIndicator]\n );\n\n const resolvedLoadingPos: LoadingPosition = useMemo(\n () => (isIconOnly ? \"center\" : loadingPosition ?? \"center\"),\n [isIconOnly, loadingPosition]\n );\n const showCenterLoader = !!loading && resolvedLoadingPos === \"center\";\n const showStartLoader = !!loading && resolvedLoadingPos === \"start\";\n const showEndLoader = !!loading && resolvedLoadingPos === \"end\";\n const nonInteractive = disabled || loading;\n\n const rootBase = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 0,\n width: fullWidth ? \"100%\" : \"auto\",\n minHeight: S.minHeight,\n lineHeight: 1,\n fontWeight: 600,\n cursor: nonInteractive ? \"not-allowed\" : \"pointer\",\n opacity: nonInteractive ? 0.5 : 1,\n userSelect: \"none\",\n position: \"relative\",\n borderRadius: rounded ? theme.radius.full : S.radius,\n willChange: \"box-shadow, transform, outline-offset\",\n transition: \"box-shadow 140ms ease, transform 90ms ease, outline-offset 140ms ease\",\n }),\n [fullWidth, S, rounded, theme, nonInteractive]\n );\n\n const variantCss = useMemo(\n () =>\n css({\n backgroundColor: vis.bg,\n color: vis.fg,\n border: vis.border,\n outline: `${theme.componentHeights.border} solid transparent`,\n }),\n [vis, theme]\n );\n\n const hoverOverlayCss = useMemo(\n () =>\n css({\n overflow: \"hidden\",\n \"::before\": {\n content: '\"\"',\n position: \"absolute\",\n inset: 0,\n backgroundColor: vis.hoverBg,\n opacity: 0,\n pointerEvents: \"none\",\n transition: \"opacity 140ms ease\",\n zIndex: 0,\n },\n \"@media (hover: hover) and (pointer: fine)\":\n hoverEffect && !nonInteractive\n ? {\n \":hover::before\": {\n opacity: 1,\n },\n }\n : {},\n }),\n [vis, hoverEffect, nonInteractive]\n );\n\n const padCss = useMemo(\n () =>\n css(\n isIconOnly && !fullWidth\n ? {\n width: \"100%\",\n height: \"100%\",\n maxWidth: S.minHeight,\n minWidth: S.minHeight,\n maxHeight: S.minHeight,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: px(S.iconSize),\n }\n : {\n fontSize: px(S.fontSize),\n padding:\n startIcon || endIcon\n ? `${S.paddingY} ${S.paddingXIcon}`\n : `${S.paddingY} ${S.paddingX}`,\n }\n ),\n [isIconOnly, fullWidth, S, startIcon, endIcon]\n );\n\n const contentGroupCss = useMemo(\n () =>\n css({\n position: \"relative\",\n zIndex: 1,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: px(theme.spacing.sm),\n opacity: showCenterLoader ? 0 : 1,\n transition: \"opacity 140ms ease\",\n }),\n [theme, showCenterLoader]\n );\n\n const labelCss = useMemo(\n () =>\n css({\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }),\n []\n );\n\n const slotSizePx = useMemo(\n () =>\n typeof S.iconSize === \"number\"\n ? S.iconSize\n : Math.max(12, Math.round(parseFloat(String(S.iconSize)) || 16)),\n [S.iconSize]\n );\n\n const slotCss = useMemo(\n () =>\n css({\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: slotSizePx,\n minWidth: slotSizePx,\n maxWidth: slotSizePx,\n height: \"1em\",\n }),\n [slotSizePx]\n );\n\n const slotLayerCss = useMemo(\n () => (visible: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: visible ? 1 : 0,\n transition: \"opacity 140ms ease\",\n }),\n []\n );\n\n const centerOverlayCss = useMemo(\n () =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n opacity: showCenterLoader ? 1 : 0,\n pointerEvents: \"none\",\n zIndex: 2,\n transition: \"opacity 140ms ease\",\n }),\n [showCenterLoader]\n );\n\n const renderLeftSlot = useMemo(\n () => () => {\n if (isIconOnly) return null;\n const has = Boolean(startIcon);\n if (!has && !showStartLoader) return null;\n return (\n <span css={slotCss} aria-hidden={loading ? true : undefined}>\n <span css={slotLayerCss(!showStartLoader)}>\n {has ? (sizedStart || startIcon) : null}\n </span>\n <span css={slotLayerCss(!!showStartLoader)}>{spinnerNode}</span>\n </span>\n );\n },\n [isIconOnly, startIcon, showStartLoader, slotCss, slotLayerCss, sizedStart, loading, spinnerNode]\n );\n\n const renderRightSlot = useMemo(\n () => () => {\n if (isIconOnly) return null;\n const has = Boolean(endIcon);\n if (!has && !showEndLoader) return null;\n return (\n <span css={slotCss} aria-hidden={loading ? true : undefined}>\n <span css={slotLayerCss(!showEndLoader)}>\n {has ? (sizedEnd || endIcon) : null}\n </span>\n <span css={slotLayerCss(!!showEndLoader)}>{spinnerNode}</span>\n </span>\n );\n },\n [isIconOnly, endIcon, showEndLoader, slotCss, slotLayerCss, sizedEnd, loading, spinnerNode]\n );\n\n const isInteractive = !(disabled || loading);\n\n return (\n <button\n ref={ref}\n type={\n \"type\" in props && props.type\n ? props.type\n : \"button\"\n }\n data-variant={normalizedVariant}\n className={[\"plainframe-ui-button\", className || \"\"].join(\" \").trim()}\n css={[\n rootBase,\n variantCss,\n hoverOverlayCss,\n padCss,\n userCss,\n focusRing({\n color:\n variant === \"primary\"\n ? \"primary\"\n : variant === \"destructive\" || variant === \"ghost-destructive\"\n ? \"danger\"\n : \"neutral\",\n }),\n ]}\n onClick={isInteractive ? onClick : undefined}\n disabled={disabled || loading}\n aria-disabled={disabled || loading || undefined}\n aria-busy={loading || undefined}\n {...props}\n >\n <span className=\"plainframe-ui-button-content\" css={contentGroupCss}>\n {renderLeftSlot()}\n <span className=\"plainframe-ui-button-label\" css={labelCss}>\n {isIconOnly\n ? loading\n ? spinnerNode\n : cloneIcon(children, S.iconSize)\n : children}\n </span>\n {renderRightSlot()}\n </span>\n <span className=\"plainframe-ui-button-center-overlay\" css={centerOverlayCss} aria-hidden=\"true\">\n {showCenterLoader ? spinnerNode : null}\n </span>\n </button>\n );\n}));\n\nButton.displayName = \"Button\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, keyframes, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\nexport type ProgressProps = {\n variant?: \"linear\" | \"circular\";\n value?: number;\n min?: number;\n max?: number;\n color?: string;\n size?: number | string;\n thickness?: number;\n spinDuration?: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n barCss?: Interpolation<Theme>;\n circleCss?: Interpolation<Theme>;\n \"aria-label\"?: string;\n};\n\ntype LinearProps = {\n thickness?: number;\n active: string;\n track: string;\n radius: number | string | undefined;\n isDeterminate: boolean;\n percent?: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n barCss?: Interpolation<Theme>;\n ariaLabel?: string;\n min: number;\n max: number;\n value?: number;\n};\n\ntype CircularProps = {\n size?: number | string;\n thickness?: number;\n active: string;\n isDeterminate: boolean;\n percent?: number;\n spinDuration: number;\n wrapperCss?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n circleCss?: Interpolation<Theme>;\n ariaLabel?: string;\n};\n\nconst clamp = (n: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, n));\nconst asPx = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nconst MIN_VISUAL_PCT = 1;\n\nconst spin = keyframes`100% { transform: rotate(360deg); }`;\nconst indet1 = keyframes`\n 0% { left: -35%; right: 100%; }\n 60% { left: 100%; right: -90%; }\n 100% { left: 100%; right: -90%; }\n`;\nconst indet2 = keyframes`\n 0% { left: -200%; right: 100%; }\n 60% { left: 107%; right: -8%; }\n 100% { left: 107%; right: -8%; }\n`;\n\nconst cssColorLike = (s: string) =>\n s.startsWith(\"#\") ||\n s.startsWith(\"rgb(\") || s.startsWith(\"rgba(\") ||\n s.startsWith(\"hsl(\") || s.startsWith(\"hsla(\") ||\n s.startsWith(\"oklch(\") || s.startsWith(\"lab(\") ||\n s.startsWith(\"color(\") || s.startsWith(\"var(\");\n\nconst allowedShades = new Set([\"0\",\"50\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]);\n\nfunction resolvePaletteColor(theme: ReturnType<typeof usePlainframeUITheme>, color?: string): string {\n if (!color || color.trim() === \"\") return theme.text.primary;\n\n const raw = color.trim();\n\n if (cssColorLike(raw)) return raw;\n\n const m = raw.match(/^([a-zA-Z0-9_-]+)[\\.\\-:\\s]?([0-9]{1,3})?$/);\n if (m) {\n const name = m[1];\n const shade = (m[2] && allowedShades.has(m[2])) ? (m[2] as any) : \"600\";\n\n if (name === \"primary\" && (theme.palette as any).primary?.[shade]) {\n return (theme.palette as any).primary[shade];\n }\n\n const scale = (theme.palette as any)[name];\n if (scale && scale[shade] != null) return scale[shade];\n\n if (name === \"neutral\" || name === \"secondary\" && (theme.neutral as any)[shade] != null) {\n return (theme.neutral as any)[shade];\n }\n }\n\n return theme.palette.primary[600];\n}\n\nexport const Progress: React.FC<ProgressProps> = ({\n variant = \"circular\",\n value,\n min = 0,\n max = 100,\n color,\n size,\n thickness,\n spinDuration = 0.75,\n wrapperCss,\n trackCss,\n barCss,\n circleCss,\n \"aria-label\": ariaLabel,\n}) => {\n const theme = usePlainframeUITheme();\n const isDeterminate = typeof value === \"number\";\n const safeRange = Math.max(max - min, 1);\n const val = isDeterminate ? clamp(value as number, min, max) : undefined;\n const percent = isDeterminate ? ((val! - min) / safeRange) * 100 : undefined;\n\n const active = resolvePaletteColor(theme, color);\n const track = theme.surface.subtleBg; // keep neutral track unless you want palette[100]\n const radius = theme.radius?.md;\n\n if (variant === \"circular\") {\n return (\n <Circular\n size={size}\n active={active}\n isDeterminate={isDeterminate}\n percent={percent}\n spinDuration={spinDuration}\n wrapperCss={wrapperCss}\n trackCss={trackCss}\n circleCss={circleCss}\n ariaLabel={ariaLabel}\n thickness={thickness}\n />\n );\n }\n\n return (\n <Linear\n thickness={thickness}\n active={active}\n track={track}\n radius={radius}\n isDeterminate={isDeterminate}\n percent={percent}\n wrapperCss={wrapperCss}\n trackCss={trackCss}\n barCss={barCss}\n ariaLabel={ariaLabel}\n min={min}\n max={max}\n value={val}\n />\n );\n};\n\nconst Linear: React.FC<LinearProps> = ({\n thickness = 4,\n active,\n track,\n radius,\n isDeterminate,\n percent,\n wrapperCss,\n trackCss,\n barCss,\n ariaLabel,\n min,\n max,\n value,\n}) => {\n const r =\n radius == null ? \"8px\" : typeof radius === \"number\" ? `${radius}px` : String(radius);\n\n const rootCss = css([\n { display: \"inline-block\", width: \"100%\" },\n ...(Array.isArray(wrapperCss) ? wrapperCss : wrapperCss ? [wrapperCss] : []),\n ]);\n\n const barBase = css([\n {\n position: \"relative\",\n width: \"100%\",\n height: asPx(thickness, \"6px\"),\n backgroundColor: track,\n borderRadius: r,\n overflow: \"hidden\",\n },\n ...(Array.isArray(trackCss) ? trackCss : trackCss ? [trackCss] : []),\n ]);\n\n const pctRender = isDeterminate ? Math.max(percent ?? 0, MIN_VISUAL_PCT) : MIN_VISUAL_PCT;\n\n const fillDeterminate = css([\n {\n position: \"absolute\",\n inset: 0,\n backgroundColor: active,\n borderRadius: \"inherit\",\n transformOrigin: \"left\",\n transform: `scaleX(${pctRender / 100})`,\n transition: \"transform 160ms cubic-bezier(.2,0,.2,1)\",\n willChange: \"transform\",\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const runnerBase = {\n position: \"absolute\" as const,\n top: 0,\n bottom: 0,\n backgroundColor: active,\n borderRadius: \"inherit\",\n willChange: \"left,right\",\n [\"@media (prefers-reduced-motion: reduce)\"]: { animation: \"none\" } as any,\n };\n\n const runner1 = css([\n {\n ...runnerBase,\n left: \"-35%\",\n right: \"100%\",\n animation: `${indet1} 2.1s cubic-bezier(.65,.815,.735,.395) infinite`,\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const runner2 = css([\n {\n ...runnerBase,\n left: \"-200%\",\n right: \"100%\",\n animation: `${indet2} 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite`,\n },\n ...(Array.isArray(barCss) ? barCss : barCss ? [barCss] : []),\n ]);\n\n const ariaProps = isDeterminate\n ? { role: \"progressbar\", \"aria-valuemin\": min, \"aria-valuemax\": max, \"aria-valuenow\": value }\n : { role: \"progressbar\", \"aria-busy\": true };\n\n if (ariaLabel) (ariaProps as any)[\"aria-label\"] = ariaLabel;\n\n return (\n <span css={rootCss} {...ariaProps}>\n <div className=\"plainframe-ui-progress-linear-track\" css={barBase}>\n {isDeterminate ? (\n <div className=\"plainframe-ui-progress-linear-fill\" css={fillDeterminate} />\n ) : (\n <>\n <div className=\"plainframe-ui-progress-linear-runner1\" css={runner1} />\n <div className=\"plainframe-ui-progress-linear-runner2\" css={runner2} />\n </>\n )}\n </div>\n </span>\n );\n};\n\nconst Circular: React.FC<CircularProps> = ({\n size,\n thickness = 4,\n active,\n isDeterminate,\n percent,\n spinDuration,\n wrapperCss,\n trackCss,\n circleCss,\n ariaLabel,\n}) => {\n const theme = usePlainframeUITheme();\n const d = 40;\n const r = (d - thickness) / 2;\n const c = 2 * Math.PI * r;\n\n const arcFraction = isDeterminate ? clamp((percent ?? 0) / 100, 0.01, 1) : 0.7;\n const dashArray = `${arcFraction * c} ${c}`;\n\n const spinnerWrap = css([\n {\n display: \"inline-block\",\n width: asPx(size, `${theme.componentHeights.md}`),\n height: asPx(size, `${theme.componentHeights.md}`),\n },\n ...(Array.isArray(wrapperCss) ? wrapperCss : wrapperCss ? [wrapperCss] : []),\n ]);\n\n const svgCss = css([\n {\n width: \"100%\",\n height: \"100%\",\n transform: \"rotate(-90deg)\",\n transformBox: \"fill-box\",\n transformOrigin: \"50% 50%\",\n },\n ...(Array.isArray(trackCss) ? trackCss : trackCss ? [trackCss] : []),\n ]);\n\n const circleBase = css([\n {\n stroke: active,\n strokeLinecap: \"butt\",\n strokeDasharray: dashArray,\n strokeDashoffset: 0,\n transition: isDeterminate ? \"stroke-dasharray 160ms cubic-bezier(.2,0,.2,1)\" : \"none\",\n transformBox: \"fill-box\",\n transformOrigin: \"50% 50%\",\n fill: \"none\",\n willChange: isDeterminate ? \"stroke-dasharray\" : \"transform\",\n animation: isDeterminate ? \"none\" : `${spin} ${spinDuration}s linear infinite`,\n [\"@media (prefers-reduced-motion: reduce)\"]: { animation: \"none\" } as any,\n },\n ...(Array.isArray(circleCss) ? circleCss : circleCss ? [circleCss] : []),\n ]);\n\n const ariaProps = isDeterminate\n ? {\n role: \"progressbar\",\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n \"aria-valuenow\": Math.round(percent ?? 0),\n }\n : { role: \"progressbar\", \"aria-busy\": true };\n\n if (ariaLabel) (ariaProps as any)[\"aria-label\"] = ariaLabel;\n\n return (\n <span css={spinnerWrap} className=\"plainframe-ui-progress-circular\" {...ariaProps}>\n <svg css={svgCss} viewBox={`0 0 ${d} ${d}`} focusable=\"false\" aria-hidden>\n <circle cx={d / 2} cy={d / 2} r={r} strokeWidth={thickness} css={circleBase} />\n </svg>\n </span>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n Children,\n cloneElement,\n isValidElement,\n type ReactElement,\n type ComponentPropsWithoutRef,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype Direction = \"horizontal\" | \"vertical\";\ntype Size = \"sm\" | \"md\" | \"lg\";\ntype VariantStr = string;\n\ntype WithCssProp = { css?: Interpolation<Theme> };\n\nexport type ButtonGroupProps = WithCssProp &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n children: React.ReactNode;\n attached?: boolean;\n direction?: Direction;\n fullWidth?: boolean;\n disabled?: boolean;\n size?: Size;\n rounded?: boolean;\n gap?: string | number;\n width?: string | number;\n className?: string;\n role?: React.AriaRole;\n };\n\ntype PrivateEdgeFlags = { __clipLeft?: boolean; __clipRight?: boolean };\n\ntype ButtonishProps = {\n disabled?: boolean;\n size?: Size;\n variant?: VariantStr;\n className?: string;\n css?: Interpolation<Theme>;\n};\ntype DropdownMenuProps = { children?: React.ReactNode };\ntype DropdownMenuTriggerProps = ButtonishProps & { children?: React.ReactNode };\n\nconst isEl = (n: unknown): n is ReactElement => isValidElement(n);\n\nconst displayNameOf = (n: ReactElement) => {\n const t = n.type as { displayName?: string; name?: string };\n return t.displayName ?? t.name;\n};\n\nconst isOfType = <P,>(el: ReactElement, name: string): el is ReactElement<P> =>\n displayNameOf(el) === name;\n\nconst isGroup = (n: ReactElement): n is ReactElement<ButtonGroupProps & PrivateEdgeFlags> =>\n isOfType(n, \"ButtonGroup\");\n\nconst isMenu = (n: ReactElement): n is ReactElement<DropdownMenuProps> =>\n isOfType(n, \"DropdownMenu\");\n\nconst isTrigger = (n: ReactElement): n is ReactElement<DropdownMenuTriggerProps> =>\n isOfType(n, \"DropdownMenuTrigger\");\n\nconst toLen = (v: string | number | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst toPx = (v: number | string | undefined, fallback = 1) => {\n if (v == null) return `${fallback}px`;\n if (typeof v === \"number\") return `${v}px`;\n return /^\\d+(\\.\\d+)?$/.test(v) ? `${v}px` : v;\n};\n\nconst isOutlinedVariant = (v: unknown): boolean =>\n typeof v === \"string\" && /^(outlined|outlined-soft|outline-soft)$/i.test(v);\n\nconst visualLeaf = (node: ReactElement, first: boolean): ReactElement | null => {\n if (!isEl(node)) return null;\n if (isGroup(node)) {\n const kids = Children.toArray(node.props.children).filter(isValidElement) as ReactElement[];\n if (!kids.length) return null;\n return visualLeaf(first ? kids[0] : kids[kids.length - 1], first);\n }\n if (isMenu(node)) {\n const kids = Children.toArray(node.props.children).filter(isValidElement) as ReactElement[];\n const trig = kids.find(isTrigger);\n return trig ? visualLeaf(trig, first) : null;\n }\n if (isTrigger(node)) {\n const kids = Children.toArray(node.props.children ?? []).filter(isValidElement) as ReactElement[];\n return kids.length ? kids[0] : null;\n }\n return node;\n};\n\nconst outlinedOnEdge = (el: ReactElement | null, side: \"left\" | \"right\") => {\n if (!el) return false;\n const leaf = visualLeaf(el, side === \"left\");\n const v: VariantStr | undefined =\n leaf && leaf.props && typeof leaf.props === \"object\" ? (leaf.props as ButtonishProps).variant : undefined;\n return isOutlinedVariant(v);\n};\n\nexport const ButtonGroup: React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n (ButtonGroupProps & PrivateEdgeFlags & React.RefAttributes<HTMLDivElement>)\n >\n> = React.memo(\n React.forwardRef<HTMLDivElement, ButtonGroupProps & PrivateEdgeFlags>(function ButtonGroup(\n {\n children,\n attached = false,\n direction = \"horizontal\",\n fullWidth = false,\n disabled = false,\n size = \"md\",\n rounded = false,\n gap,\n width,\n className,\n role = \"group\",\n css: userCss,\n __clipLeft,\n __clipRight,\n ...rest\n },\n ref\n ) {\n const theme = usePlainframeUITheme();\n const tokenRadius = size === \"sm\" ? theme.radius.sm : theme.radius.md;\n const baseRadius = rounded ? theme.radius.full : tokenRadius;\n const isVertical = direction === \"vertical\";\n const bw = toPx(theme.componentHeights.border, 1);\n const borderCol = theme.surface.border;\n const clipLeft = attached && !!__clipLeft;\n const clipRight = attached && !!__clipRight;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n width: fullWidth ? \"100%\" : width != null ? toLen(width) : \"auto\",\n maxWidth: \"none\",\n backgroundColor: \"transparent\",\n gap: attached ? 0 : toLen(gap ?? theme.spacing.sm),\n });\n\n const nodes = Children.toArray(children);\n const realNodes = nodes.filter(isEl) as ReactElement[];\n const realCount = realNodes.length;\n\n let realIndex = 0;\n let prevRightOutlined = false;\n const out: React.ReactNode[] = [];\n\n for (const node of nodes) {\n if (!isEl(node)) {\n out.push(node);\n continue;\n }\n\n const isFirst = realIndex === 0;\n const isLast = realIndex === realCount - 1;\n\n const nodeProps = (node.props ?? {}) as Record<string, unknown>;\n const mergedDisabled = (nodeProps.disabled as boolean | undefined) ?? disabled;\n const mergedSize = (nodeProps.size as Size | undefined) ?? size;\n\n let tl: string | number = 0, tr: string | number = 0, br: string | number = 0, bl: string | number = 0;\n if (attached) {\n if (isVertical) {\n tl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n tr = isFirst ? (clipRight ? 0 : baseRadius) : 0;\n bl = isLast ? (clipLeft ? 0 : baseRadius) : 0;\n br = isLast ? (clipRight ? 0 : baseRadius) : 0;\n } else {\n tl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n bl = isFirst ? (clipLeft ? 0 : baseRadius) : 0;\n tr = isLast ? (clipRight ? 0 : baseRadius) : 0;\n br = isLast ? (clipRight ? 0 : baseRadius) : 0;\n }\n }\n\n const currLeftOutlined = outlinedOnEdge(node, \"left\");\n const currRightOutlined = outlinedOnEdge(node, \"right\");\n\n const borderDir = isVertical ? \"borderTop\" : \"borderLeft\";\n const shouldSeparate = attached && !isFirst && !(prevRightOutlined && currLeftOutlined);\n\n const separatorCss = shouldSeparate && !(prevRightOutlined || currLeftOutlined)\n ? css({ [borderDir]: `${bw} solid ${borderCol}` })\n : null;\n\n const killJoinCss =\n attached && !isFirst && prevRightOutlined && currLeftOutlined\n ? css(isVertical ? { borderTopWidth: 0 } : { borderLeftWidth: 0 })\n : null;\n\n const cornerCss = attached\n ? css({\n borderTopLeftRadius: toLen(tl),\n borderTopRightRadius: toLen(tr),\n borderBottomRightRadius: toLen(br),\n borderBottomLeftRadius: toLen(bl),\n })\n : null;\n\n const flexCss = fullWidth ? css({ flex: 1 }) : null;\n const visualCss = css([cornerCss, separatorCss, killJoinCss, flexCss]);\n\n if (!isMenu(node)) {\n const childCss = (nodeProps.css as Interpolation<Theme> | undefined);\n const childClass = [nodeProps.className as string | undefined, \"plainframe-ui-button-group-item\"]\n .filter(Boolean)\n .join(\" \");\n\n const injectedToGroup = isGroup(node) && attached\n ? ({ __clipLeft: !isFirst, __clipRight: !isLast } as Partial<PrivateEdgeFlags>)\n : {};\n\n const cloned = cloneElement<ButtonishProps & Partial<PrivateEdgeFlags>>(\n node as ReactElement<ButtonishProps>,\n {\n ...(nodeProps as ComponentPropsWithoutRef<any>),\n disabled: mergedDisabled,\n size: mergedSize,\n className: childClass,\n css: [childCss, visualCss],\n ...injectedToGroup,\n }\n );\n\n out.push(cloned);\n prevRightOutlined = currRightOutlined;\n realIndex += 1;\n continue;\n }\n\n const childrenProp = nodeProps.children as React.ReactNode;\n const newChildren = Children.map(childrenProp, (ch) => {\n if (!isEl(ch) || !isTrigger(ch)) return ch;\n\n const cprops = ch.props as DropdownMenuTriggerProps;\n const triggerClass = [cprops.className, \"plainframe-ui-button-group-item\"].filter(Boolean).join(\" \");\n\n return cloneElement<DropdownMenuTriggerProps>(ch, {\n ...cprops,\n css: [cprops.css, visualCss],\n className: triggerClass,\n disabled: mergedDisabled,\n size: mergedSize,\n });\n });\n\n const patchedMenu = cloneElement<DropdownMenuProps>(node, { ...(nodeProps as DropdownMenuProps), children: newChildren });\n out.push(patchedMenu);\n prevRightOutlined = currRightOutlined;\n realIndex += 1;\n }\n\n return (\n <div\n ref={ref}\n role={role}\n aria-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n data-attached={attached || undefined}\n data-direction={direction}\n className={[\"plainframe-ui-button-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n {...rest}\n >\n {out}\n </div>\n );\n })\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { Children, cloneElement, isValidElement } from \"react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { CardProps } from \"./Card\";\n\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type CardGroupProps = {\n children: React.ReactNode;\n attached?: boolean;\n gap?: string | number;\n width?: string | number;\n direction?: \"vertical\" | \"horizontal\";\n variant?: Variant;\n className?: string;\n role?: React.AriaRole;\n css?: Interpolation<Theme>;\n};\n\nconst isEl = (n: unknown): n is React.ReactElement => isValidElement(n);\nconst nameOf = (n: unknown) =>\n isEl(n)\n ? ((n.type as { displayName?: string; name?: string })?.displayName ||\n (n.type as { displayName?: string; name?: string })?.name)\n : undefined;\nconst isCard = (n: unknown) => nameOf(n) === \"Card\";\n\nconst toLen = (v: unknown) => (typeof v === \"number\" ? `${v}px` : v);\n\nexport const CardGroup: React.FC<CardGroupProps> = ({\n children,\n attached = false,\n gap,\n width,\n direction = \"vertical\",\n variant,\n className,\n role = \"group\",\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const isVertical = direction === \"vertical\";\n const bw = String(theme.componentHeights?.border ?? \"1px\");\n const betweenColor = theme.surface.border;\n\n const rootCss: Interpolation<Theme> = {\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n width: width != null ? (toLen(width) as any) : \"auto\",\n maxWidth: \"none\",\n gap: (attached ? 0 : (gap ?? theme.spacing?.sm)) as any,\n };\n\n const nodes = Children.toArray(children);\n const cardNodes = nodes.filter(isCard) as React.ReactElement<CardProps>[];\n const totalCards = cardNodes.length;\n\n let logical = 0;\n const out = nodes.map((node, i) => {\n if (!isCard(node) || !isEl(node)) return node;\n\n const props = node.props as CardProps & { variant?: Variant; radius?: string | number };\n const idx = logical++;\n const isFirst = idx === 0;\n const isLast = idx === totalCards - 1;\n\n const forcedVariant = (variant ?? props.variant) as Variant | undefined;\n\n const radiusCss: Interpolation<Theme> | undefined = attached\n ? isVertical\n ? {\n borderTopLeftRadius: isFirst ? (props.radius as any) : 0,\n borderTopRightRadius: isFirst ? (props.radius as any) : 0,\n borderBottomLeftRadius: isLast ? (props.radius as any) : 0,\n borderBottomRightRadius: isLast ? (props.radius as any) : 0,\n }\n : {\n borderTopLeftRadius: isFirst ? (props.radius as any) : 0,\n borderBottomLeftRadius: isFirst ? (props.radius as any) : 0,\n borderTopRightRadius: isLast ? (props.radius as any) : 0,\n borderBottomRightRadius: isLast ? (props.radius as any) : 0,\n }\n : undefined;\n\n const collapseCss: Interpolation<Theme> | undefined =\n attached && !isFirst\n ? isVertical\n ? { borderTopWidth: 0 }\n : { borderLeftWidth: 0 }\n : undefined;\n\n const betweenCss: Interpolation<Theme> | null =\n forcedVariant === \"subtle\" && totalCards > 1 && !isFirst\n ? isVertical\n ? { borderTop: `${bw} solid ${betweenColor}` }\n : { borderLeft: `${bw} solid ${betweenColor}` }\n : null;\n\n const sizingCss: Interpolation<Theme> =\n attached\n ? { width: \"100%\" }\n : {\n width: \"100%\",\n marginBottom: isVertical ? 0 : undefined,\n marginRight: !isVertical ? 0 : undefined,\n };\n\n const visualCss: Interpolation<Theme>[] = [radiusCss, collapseCss, betweenCss, sizingCss].filter(\n Boolean\n ) as Interpolation<Theme>[];\n\n const mergedClass = [props.className, \"plainframe-ui-card-group-item\"]\n .filter(Boolean)\n .join(\" \");\n\n return cloneElement(node as React.ReactElement<CardProps>, {\n ...props,\n variant: forcedVariant ?? props.variant,\n css: [props.css, ...visualCss],\n className: mergedClass,\n key: typeof node === \"object\" && \"key\" in node ? (node as any).key : i,\n });\n });\n\n return (\n <div\n role={role}\n aria-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n data-attached={attached || undefined}\n data-direction={direction}\n className={[\"plainframe-ui-card-group\", className || \"\"].join(\" \").trim()}\n css={[rootCss, userCss]}\n >\n {out}\n </div>\n );\n};\n\nCardGroup.displayName = \"CardGroup\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useCallback, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { X } from \"lucide-react\";\n\ntype ChipVariant = \"soft\" | \"outlined\" | \"filled\" | \"ghost\";\ntype ChipSize = \"sm\" | \"md\" | \"lg\";\ntype WithCssProp = { css?: Interpolation<Theme> };\n\nexport type ChipProps = WithCssProp & {\n children?: React.ReactNode;\n labelCss?: Interpolation<Theme>;\n variant?: ChipVariant;\n color?: string;\n rounded?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n size?: ChipSize;\n onClick?: () => void;\n onDelete?: () => void;\n deleteIcon?: React.ReactNode;\n disabled?: boolean;\n cursor?: React.CSSProperties[\"cursor\"];\n className?: string;\n};\n\nconst u = (v: string | number): string => (typeof v === \"number\" ? `${v}px` : v);\n\nconst hasText = (node: React.ReactNode): boolean => {\n let found = false;\n React.Children.forEach(node as any, (ch: any) => {\n if (found) return;\n if (typeof ch === \"string\" || typeof ch === \"number\") {\n if (String(ch).trim() !== \"\") found = true;\n } else if (Array.isArray(ch)) {\n if (hasText(ch)) found = true;\n }\n });\n return found;\n};\n\ntype SizeT = {\n fontSize: string | number;\n paddingX: string | number;\n paddingY: string | number;\n gap: string | number;\n iconSize: string | number;\n radius: string | number;\n soloPadding: string | number;\n iconOffset: string;\n iconOffsetRounded: string;\n};\n\nconst getSize = (theme: ReturnType<typeof usePlainframeUITheme>, size: ChipSize): SizeT => {\n if (size === \"sm\") {\n return {\n fontSize: theme.fontSizes.sm,\n paddingX: `calc(${theme.spacing.sm} * 0.7)`,\n paddingY: theme.spacing.xs,\n gap: theme.spacing.xxs,\n iconSize: theme.fontSizes.sm,\n radius: `calc(${theme.radius.sm} * 0.8)`,\n soloPadding: theme.spacing.xs,\n iconOffset: \"0px\",\n iconOffsetRounded: \"-2px\",\n };\n }\n if (size === \"lg\") {\n return {\n fontSize: theme.fontSizes.lg,\n paddingX: theme.spacing.sm,\n paddingY: `calc(${theme.spacing.sm} * 0.6)`,\n gap: theme.spacing.xs,\n iconSize: theme.fontSizes.lg,\n radius: theme.radius.md,\n soloPadding: theme.spacing.sm,\n iconOffset: \"0px\",\n iconOffsetRounded: \"-3px\",\n };\n }\n return {\n fontSize: theme.fontSizes.md,\n paddingX: `calc(${theme.spacing.sm} * 0.9)`,\n paddingY: theme.spacing.xs,\n gap: theme.spacing.xxs,\n iconSize: theme.fontSizes.md,\n radius: theme.radius.sm,\n soloPadding: theme.spacing.xs,\n iconOffset: \"-1px\",\n iconOffsetRounded: \"-3px\",\n };\n};\n\nexport const Chip: React.ForwardRefExoticComponent<\n ChipProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ChipProps>(function Chip(\n {\n children,\n labelCss: userLabelCss,\n variant = \"soft\",\n color = \"primary\",\n rounded = false,\n startIcon,\n endIcon,\n size = \"md\",\n onClick,\n onDelete,\n deleteIcon,\n disabled,\n cursor,\n className,\n css: userCss,\n },\n ref\n): React.ReactElement {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const sizeKey: ChipSize = ([\"sm\", \"md\", \"lg\"].includes(size) ? size : \"md\") as ChipSize;\n const S: SizeT = useMemo<SizeT>(() => getSize(theme, sizeKey), [theme, sizeKey]);\n\n const isClickable = !!onClick && !disabled;\n const baseCursor: React.CSSProperties[\"cursor\"] = disabled\n ? \"not-allowed\"\n : cursor || (isClickable ? \"pointer\" : \"default\");\n const strokeW = String(theme.componentHeights?.border ?? \"1px\");\n\n const paletteKey: string = useMemo<string>(() => {\n const palette = theme.palette as Record<string, Record<string, string>>;\n const isSecondary = color === \"secondary\" || color === \"neutral\";\n if (isSecondary) return \"neutral\";\n return color && palette[color] ? color : \"primary\";\n }, [color, theme.palette]);\n\n const sw = useCallback(\n (shade: 50 | 100 | 300 | 600 | 700 | 800): string => {\n const palette = theme.palette as Record<string, Record<string, string>>;\n return (\n (paletteKey === \"neutral\" ? theme.neutral[shade] : palette[paletteKey]?.[shade]) ??\n (palette.primary?.[shade] as string)\n );\n },\n [paletteKey, theme.neutral, theme.palette]\n );\n\n const softBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[100] : sw(50)),\n [paletteKey, sw, theme.neutral]\n );\n const softFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(800)),\n [paletteKey, sw, theme.text.secondary]\n );\n\n const outlinedBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[100] : sw(50)),\n [paletteKey, sw, theme.neutral]\n );\n const outlinedFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(800)),\n [paletteKey, sw, theme.text.secondary]\n );\n const outlinedBr: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.neutral[400] : sw(300)),\n [paletteKey, sw, theme.neutral]\n );\n\n const filledBg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.surface.subtleBg : sw(600)),\n [paletteKey, sw, theme.surface.subtleBg]\n );\n const filledFg: string = useMemo(() => {\n const onMap = theme.text.onColors ?? ({} as Record<string, string>);\n return onMap[paletteKey] ?? (paletteKey === \"neutral\" ? theme.neutral[900] : theme.neutral[0] ?? \"#fff\");\n }, [paletteKey, theme.text.onColors, theme.neutral]);\n\n const ghostBg: string = \"transparent\";\n const ghostFg: string = useMemo(\n () => (paletteKey === \"neutral\" ? theme.text.secondary : sw(700) ?? theme.text.primary),\n [paletteKey, sw, theme.text.primary, theme.text.secondary]\n );\n\n const isIconOnly: boolean = useMemo(\n () =>\n !startIcon && !endIcon && children != null && !hasText(children) && React.Children.count(children) === 1,\n [startIcon, endIcon, children]\n );\n\n const variantCss: Interpolation<Theme> = useMemo(() => {\n if (variant === \"filled\")\n return css({ backgroundColor: filledBg, color: filledFg, border: \"none\", boxShadow: \"none\" });\n if (variant === \"outlined\")\n return css({\n backgroundColor: outlinedBg,\n color: outlinedFg,\n border: \"none\",\n boxShadow: `inset 0 0 0 ${strokeW} ${outlinedBr}`,\n });\n if (variant === \"ghost\")\n return css({ backgroundColor: ghostBg, color: ghostFg, border: \"none\", boxShadow: \"none\" });\n return css({ backgroundColor: softBg, color: softFg, border: \"none\", boxShadow: \"none\" });\n }, [filledBg, filledFg, ghostFg, outlinedBg, outlinedFg, outlinedBr, softBg, softFg, strokeW, variant]);\n\n const rootCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: u(S.gap),\n padding:\n variant === \"ghost\"\n ? 0\n : isIconOnly || children == null\n ? u(S.soloPadding)\n : `${u(S.paddingY)} ${u(S.paddingX)}`,\n borderRadius: rounded ? (theme.radius.full as string | number) : S.radius,\n fontWeight: 600,\n cursor: baseCursor,\n opacity: disabled ? 0.55 : 1,\n transition: \"outline .16s ease, outline-offset .16s ease\",\n overflow: variant === \"ghost\" ? \"visible\" : \"hidden\",\n ...(isIconOnly\n ? {\n lineHeight: 1,\n minWidth: `calc(${u(S.iconSize)} + ${u(S.soloPadding)} * 2)`,\n minHeight: `calc(${u(S.iconSize)} + ${u(S.soloPadding)} * 2)`,\n justifyContent: \"center\",\n }\n : null),\n }),\n [S, baseCursor, children, disabled, isIconOnly, rounded, theme.radius.full, variant]\n );\n\n const baseLabelCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n fontSize: isIconOnly ? u(S.iconSize) : u(S.fontSize),\n lineHeight: 1.2,\n minWidth: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& > svg\": {\n width: isIconOnly ? u(S.iconSize) : undefined,\n height: isIconOnly ? u(S.iconSize) : undefined,\n display: isIconOnly ? \"block\" : undefined,\n },\n }),\n [S.fontSize, S.iconSize, isIconOnly]\n );\n\n const iconCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: u(S.iconSize),\n lineHeight: 0,\n \"& > svg\": { width: u(S.iconSize), height: u(S.iconSize), display: \"block\" },\n }),\n [S.iconSize]\n );\n\n const leftIconMargins: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginRight: isIconOnly || children == null ? 0 : u(S.gap),\n marginLeft: isIconOnly || children == null ? 0 : u(S.iconOffset),\n }),\n [S.gap, S.iconOffset, children, isIconOnly]\n );\n\n const rightIconMargins: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginLeft: isIconOnly || children == null ? 0 : u(S.gap),\n marginRight:\n isIconOnly || children == null\n ? 0\n : rounded\n ? u(S.iconOffsetRounded)\n : u(S.iconOffset),\n }),\n [S.gap, S.iconOffset, S.iconOffsetRounded, children, isIconOnly, rounded]\n );\n\n const deleteBtnCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n marginRight: rounded ? 0 : u(S.iconOffset),\n padding: 0,\n border: \"none\",\n outline: \"none\",\n background: \"transparent\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n color: \"currentColor\",\n opacity: disabled ? 0.4 : 0.85,\n transition:\n \"background-color .16s ease, color .16s ease, opacity .16s ease, outline .16s ease, outline-offset .16s ease\",\n fontSize: u(S.iconSize),\n borderRadius: theme.radius.xs,\n }),\n [S.iconOffset, S.iconSize, disabled, rounded, theme.radius.xs]\n );\n\n const onKeyDown = useCallback((e: React.KeyboardEvent): void => {\n if (!isClickable) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }, [isClickable, onClick]);\n\n const defaultDeleteIcon: React.ReactNode = useMemo(\n () => <X css={{ width: S.iconSize, height: S.iconSize }} strokeWidth={2.5} />,\n [S.iconSize]\n );\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-chip\", isClickable ? \"plainframe-ui-chip-clickable\" : \"\", className || \"\"]\n .join(\" \")\n .trim()}\n css={[\n rootCss,\n variantCss,\n isClickable ? focusRing({ color: color ?? \"primary\" }) : null,\n userCss,\n ]}\n onClick={isClickable ? onClick : undefined}\n onKeyDown={onKeyDown}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-disabled={disabled || undefined}\n data-variant={variant}\n data-color={paletteKey}\n data-size={size}\n data-icon-only={isIconOnly || undefined}\n >\n {startIcon && (\n <span css={[iconCss, leftIconMargins]} className=\"plainframe-ui-chip-icon-left\">\n {startIcon}\n </span>\n )}\n\n {children != null && (\n <span css={[baseLabelCss, userLabelCss]} className=\"plainframe-ui-chip-label\">\n {children}\n </span>\n )}\n\n {endIcon && (\n <span css={[iconCss, rightIconMargins]} className=\"plainframe-ui-chip-icon-right\">\n {endIcon}\n </span>\n )}\n\n {onDelete && (\n <button\n type=\"button\"\n aria-label=\"Delete\"\n disabled={disabled}\n tabIndex={0}\n onClick={(e) => {\n e.stopPropagation();\n if (!disabled) onDelete?.();\n }}\n css={[deleteBtnCss, focusRing({ color: color ?? \"primary\" })]}\n className=\"plainframe-ui-chip-delete\"\n >\n {deleteIcon || defaultDeleteIcon}\n </button>\n )}\n </div>\n );\n});\n\nChip.displayName = \"Chip\";\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useRef, useCallback, useId, useState } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport type { PlainframeUITheme } from \"../theme/theme\";\n\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type CodeFieldProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n separator?: React.ReactNode;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n gap?: number | string;\n size?: SizeKey;\n variant?: Variant;\n length?: number;\n focusRingMode?: \"always\" | \"none\";\n wrapperCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst u = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst CodeBoxes: React.FC<{\n value: string;\n onChange: (v: string) => void;\n len: number;\n theme: PlainframeUITheme;\n sizeKey: SizeKey;\n s: { codeFontSize: number };\n variant: Variant;\n error?: boolean;\n disabled?: boolean;\n ringEnabled: boolean;\n focusRingMode: \"always\" | \"none\";\n placeholder?: string;\n separator?: React.ReactNode;\n gapPx: string;\n}> = React.memo(function CodeBoxesImpl({\n value,\n onChange,\n len,\n theme,\n sizeKey,\n s,\n variant,\n error,\n disabled,\n ringEnabled,\n focusRingMode,\n placeholder,\n separator,\n gapPx,\n}) {\n const ring = useFocusRing();\n const N = theme.neutral;\n const T = theme.text;\n const borderW = theme.componentHeights.border;\n\n const boxesRef = useRef<Array<HTMLInputElement | null>>([]);\n const [focusIdx, setFocusIdx] = useState<number>(0);\n\n const chars = useMemo(\n () => (value ?? \"\").padEnd(len, \"\").slice(0, len).split(\"\"),\n [value, len]\n );\n\n const ph = useMemo(() => {\n if (!placeholder) return Array(len).fill(\"\");\n if (placeholder.length === 1) return Array(len).fill(placeholder);\n const a = placeholder.slice(0, len).split(\"\");\n while (a.length < len) a.push(\"\");\n return a;\n }, [placeholder, len]);\n\n const sideCss = useMemo(() => {\n const H = theme.componentHeights[sizeKey] as number | string;\n const Hpx = typeof H === \"number\" ? `${H}px` : H;\n return `calc(${Hpx} * 1.5)`;\n }, [theme.componentHeights, sizeKey]);\n\n const boxBg =\n disabled\n ? (N[200] as string)\n : variant === \"subtle\"\n ? (theme.surface.subtleBg as string)\n : variant === \"outlined\"\n ? (theme.surface.panelBg as string)\n : \"transparent\";\n\n const boxBorder =\n variant === \"outlined\"\n ? `${borderW} solid ${\n error ? (theme.palette.danger?.[600] ?? N[500]) : theme.surface.border\n }`\n : \"none\";\n\n const boxCss = (active: boolean) =>\n css(\n {\n width: sideCss,\n height: sideCss,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n boxSizing: \"border-box\",\n background: boxBg,\n border: boxBorder,\n borderRadius: theme.radius.lg,\n transition: \"box-shadow .16s, border-color .16s, background .16s\",\n fontSize: s.codeFontSize,\n fontWeight: 600,\n color: disabled ? N[500] : T.primary,\n textAlign: \"center\",\n backgroundClip: \"padding-box\",\n appearance: \"textfield\",\n outline: \"none\",\n caretColor: T.primary,\n \"&::placeholder\": { color: T.secondary, opacity: 0.85 },\n },\n ringEnabled\n ? ring({\n enabled: true,\n disabled,\n mode: focusRingMode === \"always\" ? \"always\" : \"visible\",\n })\n : undefined,\n active ? css({}) : null\n );\n\n const wrapCss = css({\n display: \"flex\",\n gap: gapPx,\n justifyContent: \"center\",\n width: \"auto\",\n pointerEvents: disabled ? \"none\" : \"auto\",\n opacity: disabled ? 0.65 : 1,\n });\n\n const sepCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: T.secondary,\n userSelect: \"none\",\n });\n\n const sanitize = (c: string) => c.replace(/[^a-zA-Z0-9]/g, \"\").toUpperCase();\n\n const focusAt = useCallback(\n (i: number) => {\n const idx = Math.max(0, Math.min(len - 1, i));\n setFocusIdx(idx);\n boxesRef.current[idx]?.focus();\n },\n [len]\n );\n\n const handleBoxChange = useCallback(\n (i: number, char: string) => {\n const clean = sanitize(char).slice(0, 1);\n const next = [...chars];\n next[i] = clean;\n onChange(next.join(\"\"));\n if (clean && i < len - 1) focusAt(i + 1);\n },\n [chars, len, onChange, focusAt]\n );\n\n const handleBoxKeyDown = useCallback(\n (i: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\") {\n if (!chars[i] && i > 0) {\n const next = [...chars];\n next[i - 1] = \"\";\n onChange(next.join(\"\"));\n focusAt(i - 1);\n e.preventDefault();\n return;\n } else {\n const next = [...chars];\n next[i] = \"\";\n onChange(next.join(\"\"));\n return;\n }\n }\n if (e.key === \"ArrowLeft\" && i > 0) {\n e.preventDefault();\n focusAt(i - 1);\n return;\n }\n if (e.key === \"ArrowRight\" && i < len - 1) {\n e.preventDefault();\n focusAt(i + 1);\n return;\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n focusAt(0);\n return;\n }\n if (e.key === \"End\") {\n e.preventDefault();\n focusAt(len - 1);\n return;\n }\n },\n [chars, len, onChange, focusAt]\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n const paste = sanitize(e.clipboardData.getData(\"text\")).slice(0, len);\n if (!paste) return;\n onChange(paste);\n requestAnimationFrame(() => {\n const idx = Math.min(paste.length, len - 1);\n focusAt(idx);\n });\n e.preventDefault();\n },\n [len, onChange, focusAt]\n );\n\n return (\n <div className=\"plainframe-ui-code-boxes\" css={wrapCss}>\n {Array.from({ length: len }).map((_, i) => (\n <React.Fragment key={i}>\n <input\n ref={(el) => {\n boxesRef.current[i] = el;\n }}\n type=\"text\"\n inputMode=\"text\"\n maxLength={1}\n value={chars[i] || \"\"}\n placeholder={chars[i] ? \"\" : ph[i] || \"\"}\n disabled={disabled}\n onChange={(e) => handleBoxChange(i, e.target.value)}\n onKeyDown={(e) => handleBoxKeyDown(i, e)}\n onFocus={() => setFocusIdx(i)}\n onPaste={i === 0 ? handlePaste : undefined}\n className=\"plainframe-ui-code-box\"\n css={boxCss(i === focusIdx)}\n aria-label={`Code character ${i + 1}`}\n tabIndex={i === focusIdx ? 0 : -1}\n />\n {separator && i < len - 1 ? (\n <span aria-hidden role=\"presentation\" css={sepCss}>\n {separator}\n </span>\n ) : null}\n </React.Fragment>\n ))}\n </div>\n );\n});\n\nexport const CodeField: React.FC<CodeFieldProps> = ({\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n separator,\n error,\n helperText,\n disabled = false,\n gap,\n size = \"md\",\n variant = \"subtle\",\n length = 4,\n focusRingMode = \"always\",\n className,\n wrapperCss: userWrapperCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n css: userLayoutCss,\n}) => {\n const theme = usePlainframeUITheme();\n const labelId = useId();\n\n const sizeMap = useMemo(\n () =>\n ({\n sm: {\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n minHeight: theme.componentHeights.sm,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 21,\n },\n md: {\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n minHeight: theme.componentHeights.md,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 24,\n },\n lg: {\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n paddingY: 0,\n paddingX: theme.spacing.md,\n codeFontSize: 28,\n },\n } as const),\n [theme]\n );\n\n const sizeKey: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size)\n ? size\n : \"md\";\n const s = sizeMap[sizeKey];\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isControlled = value != null;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr = isControlled ? (value as string) : internal;\n const setValue = (next: string) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const len = Math.max(2, Math.min(length, 10));\n const defaultGap = theme.spacing.sm;\n const gapPx = u(gap ?? defaultGap) ?? \"0px\";\n\n const rootCss = css(\n {\n boxSizing: \"border-box\",\n display: \"inline-flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: 4,\n width: \"auto\",\n maxWidth: \"unset\",\n fontWeight: 500,\n cursor: disabled ? \"not-allowed\" : \"auto\",\n },\n ...(Array.isArray(userWrapperCss)\n ? userWrapperCss\n : userWrapperCss\n ? [userWrapperCss]\n : [])\n );\n\n const labelCss = css(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error\n ? theme.palette.danger?.[700] ?? T.primary\n : disabled\n ? N[500]\n : T.primary,\n marginBottom: 4,\n display: \"block\",\n cursor: disabled ? \"not-allowed\" : \"auto\",\n },\n ...(Array.isArray(userLabelCss)\n ? userLabelCss\n : userLabelCss\n ? [userLabelCss]\n : [])\n );\n\n const rowCss = css(\n {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: gapPx,\n width: \"auto\",\n background: \"transparent\",\n outline: \"none\",\n boxShadow: \"none\",\n },\n ...(Array.isArray(userLayoutCss)\n ? userLayoutCss\n : userLayoutCss\n ? [userLayoutCss]\n : [])\n );\n\n const helperRowCss = css(\n {\n minHeight: 16,\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n paddingTop: 3,\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 8,\n width: \"100%\",\n },\n ...(Array.isArray(userHelperRowCss)\n ? userHelperRowCss\n : userHelperRowCss\n ? [userHelperRowCss]\n : [])\n );\n\n const helperTextCss = css(\n {\n flex: 1,\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n minWidth: 0,\n fontWeight: 400,\n color: error\n ? theme.palette.danger?.[700] ?? T.primary\n : disabled\n ? N[500]\n : T.primary,\n },\n ...(Array.isArray(userHelperTextCss)\n ? userHelperTextCss\n : userHelperTextCss\n ? [userHelperTextCss]\n : [])\n );\n\n return (\n <div\n className={[\"plainframe-ui-codefield\", className || \"\"].join(\" \").trim()}\n css={rootCss}\n >\n {label && (\n <span id={labelId} className=\"plainframe-ui-codefield-label\" css={labelCss}>\n {label}\n </span>\n )}\n\n <div\n className=\"plainframe-ui-codefield-row\"\n css={rowCss}\n role=\"group\"\n aria-labelledby={label ? labelId : undefined}\n tabIndex={-1}\n >\n <CodeBoxes\n value={curr || \"\"}\n onChange={setValue}\n len={len}\n theme={theme}\n sizeKey={sizeKey}\n s={{ codeFontSize: s.codeFontSize }}\n variant={variant}\n error={!!error}\n disabled={disabled}\n ringEnabled={focusRingMode !== \"none\"}\n focusRingMode={focusRingMode}\n placeholder={placeholder}\n separator={separator}\n gapPx={gapPx}\n />\n </div>\n\n {helperText != null && (\n <div className=\"plainframe-ui-codefield-helper\" css={helperRowCss}>\n <span className=\"plainframe-ui-codefield-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n </div>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\nexport type ColorPatchItem = {\n color: string;\n label?: string;\n title?: string;\n disabled?: boolean;\n onClick?: () => void;\n css?: Interpolation<Theme>;\n};\n\nexport type ColorPatchesProps = {\n items: ColorPatchItem[];\n size?: number | string;\n gap?: number | string;\n rounded?: boolean;\n radius?: number | string;\n wrap?: boolean;\n width?: number | string;\n focusOutline?: boolean;\n wrapperCss?: Interpolation<Theme>;\n patchCss?: Interpolation<Theme>;\n};\n\nconst toCssLen = (v: number | string) => (typeof v === \"number\" ? `${v}px` : v);\nconst toNum = (v: number | string | undefined, fb: number) =>\n v == null ? fb : typeof v === \"number\" ? v : Number.parseFloat(v) || fb;\n\nexport const ColorPatches: React.FC<ColorPatchesProps> = React.memo(\n ({\n items,\n size,\n gap,\n rounded = false,\n radius,\n wrap = true,\n width,\n wrapperCss,\n patchCss,\n }) => {\n const theme = usePlainframeUITheme();\n\n const patchSize = size ?? 24;\n const spacing = gap ?? theme.spacing.xs;\n const radiusCss = toCssLen(radius ?? (rounded ? theme.radius.full : theme.radius.sm));\n\n const firstEnabled = React.useMemo(() => items.findIndex((i) => !i.disabled), [items]);\n const [focusIndex, setFocusIndex] = React.useState<number>(firstEnabled >= 0 ? firstEnabled : -1);\n React.useEffect(() => {\n setFocusIndex(firstEnabled >= 0 ? firstEnabled : -1);\n }, [firstEnabled]);\n\n const refs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const [cols, setCols] = React.useState<number>(items.length || 1);\n const g = toNum(spacing as any, 8);\n const sz = toNum(patchSize as any, 24);\n\n React.useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const calc = () => {\n if (!wrap) {\n setCols(items.length || 1);\n return;\n }\n const w = el.clientWidth || 0;\n const c = Math.max(1, Math.floor((w + g) / (sz + g)));\n setCols(c || 1);\n };\n calc();\n const ro = new ResizeObserver(calc);\n ro.observe(el);\n return () => ro.disconnect();\n }, [wrap, items.length, g, sz]);\n\n const focusAt = (i: number) => {\n if (i < 0 || i >= items.length) return;\n if (items[i]?.disabled) return;\n setFocusIndex(i);\n refs.current[i]?.focus();\n };\n\n const moveHoriz = (dir: 1 | -1) => {\n if (!items.length) return;\n let i = focusIndex;\n for (let step = 0; step < items.length; step++) {\n i = (i + dir + items.length) % items.length;\n if (!items[i]?.disabled) {\n focusAt(i);\n return;\n }\n }\n };\n\n const moveVert = (dir: 1 | -1) => {\n if (!wrap || focusIndex < 0) return;\n const colsSafe = Math.max(cols, 1);\n const rows = Math.ceil(items.length / colsSafe);\n const row = Math.floor(focusIndex / colsSafe);\n const col = focusIndex % colsSafe;\n const targetRow = row + dir;\n if (targetRow < 0 || targetRow >= rows) return;\n\n const rowStart = targetRow * colsSafe;\n const rowEnd = Math.min(items.length - 1, rowStart + colsSafe - 1);\n\n let cand = Math.min(rowEnd, rowStart + col);\n if (items[cand]?.disabled) {\n for (let d = 1; d < colsSafe; d++) {\n const L = cand - d;\n const R = cand + d;\n if (L >= rowStart && !items[L]?.disabled) {\n cand = L;\n break;\n }\n if (R <= rowEnd && !items[R]?.disabled) {\n cand = R;\n break;\n }\n }\n }\n if (!items[cand]?.disabled) focusAt(cand);\n };\n\n const wrapperStyles: Interpolation<Theme>[] = [\n {\n display: \"flex\",\n flexWrap: wrap ? \"wrap\" : \"nowrap\",\n gap: spacing as any,\n width: width != null ? toCssLen(width) : undefined,\n alignItems: \"center\",\n boxSizing: \"border-box\",\n },\n wrapperCss,\n ];\n\n const basePatch: Interpolation<Theme> = {\n width: patchSize as any,\n height: patchSize as any,\n borderRadius: radiusCss,\n border: 0,\n padding: 0,\n appearance: \"none\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n boxSizing: \"border-box\",\n userSelect: \"none\",\n outline: \"none\",\n \"&:focus\": { outline: \"none\" },\n \"&:focus-visible\": { outline: \"none\" },\n \"&::-moz-focus-inner\": { border: 0 },\n };\n\n return (\n <div ref={containerRef} css={wrapperStyles} className=\"plainframe-ui-color-patches\">\n {items.map((it, idx) => {\n const isDis = !!it.disabled;\n return (\n <button\n className=\"plainframe-ui-color-patch\"\n key={idx}\n type=\"button\"\n ref={(el) => {\n refs.current[idx] = el;\n }}\n aria-label={it.label ?? it.title ?? it.color}\n data-disabled={isDis}\n tabIndex={-1}\n onClick={() => {\n if (!isDis) it.onClick?.();\n }}\n onKeyDown={(e) => {\n if (isDis) return;\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n moveHoriz(1);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n moveHoriz(-1);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n moveVert(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n moveVert(-1);\n break;\n case \"Home\":\n e.preventDefault();\n focusAt(0);\n break;\n case \"End\":\n e.preventDefault();\n focusAt(items.length - 1);\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n it.onClick?.();\n break;\n }\n }}\n css={[basePatch, { backgroundColor: it.color } as Interpolation<Theme>, patchCss, it.css]}\n title={it.title ?? it.label}\n disabled={isDis}\n />\n );\n })}\n </div>\n );\n }\n);\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype TriggerMode = \"contextmenu\" | \"dblclick\" | \"click\" | \"hover\";\n\ntype ContextZoneProps = {\n children: React.ReactNode;\n content?: React.ReactNode | ((api: { close: () => void }) => React.ReactNode);\n trigger?: TriggerMode;\n onOpenChange?: (open: boolean) => void;\n hoverOpenDelay?: number;\n hoverCloseDelay?: number;\n hoverPosition?: \"cursor\" | \"center\";\n hoverOffset?: number;\n};\n\nconst getName = (n: unknown): string => {\n if (\n typeof n === \"object\" &&\n n !== null &&\n \"type\" in n &&\n (n as { type?: unknown }).type\n ) {\n const type = (n as { type: unknown }).type;\n if (typeof type === \"object\" && type !== null) {\n return (type as { displayName?: string })?.displayName || (type as { name?: string })?.name || \"\";\n }\n if (typeof type === \"function\") {\n return (type as { displayName?: string })?.displayName || (type as { name?: string })?.name || \"\";\n }\n return \"\";\n }\n return \"\";\n};\n\nconst hasDropdownNodes = (node: unknown): boolean => {\n if (\n !node ||\n typeof node !== \"object\"\n )\n return false;\n const name = getName(node);\n if (name === \"DropdownMenu\" || name === \"DropdownMenuContent\") return true;\n const props = (node as React.ReactElement | null)?.props;\n const kids =\n props && typeof props === \"object\" && props !== null && \"children\" in props\n ? (props as { children?: unknown }).children\n : undefined;\n if (kids == null) return false;\n return Array.isArray(kids) ? kids.some(hasDropdownNodes) : hasDropdownNodes(kids);\n};\n\nexport const ContextZone: React.FC<ContextZoneProps> = ({\n children,\n content,\n trigger = \"contextmenu\",\n onOpenChange,\n hoverPosition = \"cursor\",\n hoverOffset = 10,\n}) => {\n const hostRef = React.useRef<HTMLDivElement | null>(null);\n const [open, setOpen] = React.useState(false);\n const setAndNotify = React.useCallback(\n (o: boolean) => {\n setOpen(o);\n onOpenChange?.(o);\n },\n [onOpenChange]\n );\n const close = React.useCallback(() => setAndNotify(false), [setAndNotify]);\n\n const ptRef = React.useRef<{ x: number; y: number }>({ x: 0, y: 0 });\n const shellRef = React.useRef<HTMLDivElement | null>(null);\n const rafId = React.useRef<number | null>(null);\n\n const flush = React.useCallback(() => {\n rafId.current = null;\n const el = shellRef.current;\n if (!el) return;\n const x = Math.round(ptRef.current.x);\n const y = Math.round(ptRef.current.y);\n el.style.transform = `translate3d(${x}px, ${y}px, 0)`;\n }, []);\n\n const requestFlush = React.useCallback(() => {\n if (rafId.current != null) return;\n rafId.current = requestAnimationFrame(flush);\n }, [flush]);\n\n React.useEffect(() => {\n return () => {\n if (rafId.current) cancelAnimationFrame(rafId.current);\n };\n }, []);\n\n const virtualAnchor = React.useMemo(\n () => ({\n getBoundingClientRect: () => {\n const x = Math.round(ptRef.current.x);\n const y = Math.round(ptRef.current.y);\n return { x, y, left: x, top: y, right: x, bottom: y, width: 0, height: 0, toJSON: () => ({ x, y }) } as DOMRect;\n },\n }),\n []\n );\n\n const czIdRef = React.useRef(`cz-${Math.random().toString(36).slice(2)}`);\n const getMenuEl = React.useCallback(\n () =>\n typeof document !== \"undefined\"\n ? (document.querySelector(`[data-cz-id=\"${czIdRef.current}\"]`) as HTMLElement | null)\n : null,\n []\n );\n\n const openT = React.useRef<number | null>(null);\n const closeT = React.useRef<number | null>(null);\n const clearOpenT = React.useCallback(() => {\n if (openT.current != null) clearTimeout(openT.current);\n openT.current = null;\n }, []);\n const clearCloseT = React.useCallback(() => {\n if (closeT.current != null) clearTimeout(closeT.current);\n closeT.current = null;\n }, []);\n const scheduleClose = React.useCallback(() => {\n clearCloseT();\n closeT.current = window.setTimeout(() => setAndNotify(false), 0);\n }, [clearCloseT, setAndNotify]);\n\n const centerOfHost = React.useCallback(() => {\n const r = hostRef.current?.getBoundingClientRect();\n return r ? { x: r.left + r.width / 2, y: r.top + r.height / 2 } : { x: 0, y: 0 };\n }, []);\n\n const openAt = React.useCallback(\n (x: number, y: number) => {\n ptRef.current = { x, y };\n requestFlush();\n setAndNotify(true);\n },\n [requestFlush, setAndNotify]\n );\n\n const rendered = typeof content === \"function\" ? content({ close }) : content;\n const isMenuTree = hasDropdownNodes(rendered);\n\n const injectForMenu = (node: React.ReactNode): React.ReactNode => {\n if (!React.isValidElement(node)) return node;\n const name = getName(node);\n const element = node as React.ReactElement<any>;\n const kids = element.props.children;\n const nextChildren =\n kids == null\n ? kids\n : Array.isArray(kids)\n ? kids.map(child => (React.isValidElement(child) ? injectForMenu(child) : child))\n : React.isValidElement(kids)\n ? injectForMenu(kids)\n : kids;\n\n if (name === \"DropdownMenu\") {\n const prev = element.props.onOpenChange as ((o: boolean) => void) | undefined;\n return React.cloneElement<typeof element.props>(element, {\n ...element.props,\n open,\n onOpenChange: (o: boolean) => {\n prev?.(o);\n setAndNotify(o);\n },\n children: nextChildren,\n });\n }\n if (name === \"DropdownMenuContent\") {\n const prevEnter = element.props.onMouseEnter as ((e: React.MouseEvent) => void) | undefined;\n const prevLeave = element.props.onMouseLeave as ((e: React.MouseEvent) => void) | undefined;\n return React.cloneElement<typeof element.props>(element, {\n ...element.props,\n anchor: virtualAnchor,\n \"data-cz-id\": czIdRef.current,\n onMouseEnter: (e: React.MouseEvent) => {\n clearCloseT();\n prevEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n scheduleClose();\n prevLeave?.(e);\n },\n children: nextChildren,\n });\n }\n return nextChildren === kids ? element : React.cloneElement<typeof element.props>(element, { ...element.props, children: nextChildren });\n };\n\n const wired = isMenuTree ? injectForMenu(rendered) : rendered;\n\n const handleNonHoverOpen = React.useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n openAt(e.clientX, e.clientY);\n },\n [openAt]\n );\n\n const onContextMenu = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"contextmenu\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onDoubleClick = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"dblclick\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onClick = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger === \"click\") handleNonHoverOpen(e);\n },\n [trigger, handleNonHoverOpen]\n );\n\n const onMouseEnter = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger !== \"hover\") return;\n clearOpenT();\n clearCloseT();\n const base = hoverPosition === \"center\" ? centerOfHost() : { x: e.clientX, y: e.clientY };\n openT.current = window.setTimeout(() => {\n const x = base.x + (hoverPosition === \"cursor\" ? hoverOffset : 0);\n const y = base.y + (hoverPosition === \"cursor\" ? hoverOffset : 0);\n openAt(x, y);\n }, 0);\n },\n [trigger, hoverPosition, hoverOffset, centerOfHost, openAt, clearOpenT, clearCloseT]\n );\n\n const onMouseMove = React.useCallback(\n (e: React.MouseEvent) => {\n if (trigger !== \"hover\") return;\n if (open && hoverPosition === \"cursor\" && !isMenuTree) {\n ptRef.current = { x: e.clientX + hoverOffset, y: e.clientY + hoverOffset };\n requestFlush();\n }\n },\n [trigger, open, hoverPosition, isMenuTree, hoverOffset, requestFlush]\n );\n\n const onMouseLeave = React.useCallback(() => {\n if (trigger !== \"hover\") return;\n clearOpenT();\n scheduleClose();\n }, [trigger, clearOpenT, scheduleClose]);\n\n React.useEffect(() => {\n if (trigger !== \"hover\") return;\n const onMove = () => {\n if (!open) return;\n const hostHovered = hostRef.current?.matches(\":hover\");\n const menuHovered = getMenuEl()?.matches?.(\":hover\");\n if (hostHovered || menuHovered) clearCloseT();\n else scheduleClose();\n };\n window.addEventListener(\"pointermove\", onMove, { passive: true, capture: true });\n return () => window.removeEventListener(\"pointermove\", onMove, { capture: true });\n }, [open, trigger, getMenuEl, clearCloseT, scheduleClose]);\n\n React.useEffect(() => {\n const onScrollResize = () => {\n if (!open) return;\n if (trigger === \"hover\") {\n const hostHovered = hostRef.current?.matches(\":hover\");\n const menuHovered = getMenuEl()?.matches?.(\":hover\");\n if (hostHovered || menuHovered) clearCloseT();\n else scheduleClose();\n if (hoverPosition === \"center\" && hostRef.current) {\n const c = centerOfHost();\n ptRef.current = { x: c.x, y: c.y };\n requestFlush();\n }\n } else {\n setAndNotify(false);\n }\n };\n window.addEventListener(\"scroll\", onScrollResize, true);\n window.addEventListener(\"resize\", onScrollResize, true);\n return () => {\n window.removeEventListener(\"scroll\", onScrollResize, true);\n window.removeEventListener(\"resize\", onScrollResize, true);\n };\n }, [open, trigger, hoverPosition, centerOfHost, requestFlush, setAndNotify, clearCloseT, scheduleClose, getMenuEl]);\n\n React.useEffect(() => {\n return () => {\n clearOpenT();\n clearCloseT();\n };\n }, [clearOpenT, clearCloseT]);\n\n const FloatingShell: React.FC<{ children: React.ReactNode }> = ({ children }) =>\n open ? (\n <div\n ref={shellRef}\n style={{\n position: \"fixed\",\n left: 0,\n top: 0,\n transform: `translate3d(${Math.round(ptRef.current.x)}px, ${Math.round(ptRef.current.y)}px, 0)`,\n willChange: \"transform\",\n zIndex: 1000,\n pointerEvents: \"auto\",\n }}\n onMouseEnter={() => trigger === \"hover\" && clearCloseT()}\n onMouseLeave={() => trigger === \"hover\" && scheduleClose()}\n >\n {children}\n </div>\n ) : null;\n\n return (\n <div\n ref={hostRef}\n onContextMenu={onContextMenu}\n onDoubleClick={onDoubleClick}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n css={css({ position: \"relative\" })}\n className=\"plainframe-ui-context-zone-wrapper\"\n >\n {children}\n {isMenuTree ? wired : <FloatingShell>{wired}</FloatingShell>}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, forwardRef } from \"react\";\nimport { css } from \"@emotion/react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\ntype DividerVariant = \"full\" | \"inset\" | \"middle\";\ntype LabelPos = \"left\" | \"right\" | \"center\" | \"top\" | \"bottom\";\ntype ChipVariant = \"subtle\" | \"outlined\";\n\nexport type DividerProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n label?: React.ReactNode;\n variant?: DividerVariant;\n direction?: \"vertical\" | \"horizontal\";\n labelPosition?: LabelPos;\n thickness?: number | string;\n width?: number | string;\n middleMargin?: number | string;\n insetMargin?: number | string;\n chip?: boolean;\n chipVariant?: ChipVariant;\n rounded?: boolean;\n margin?: number | string;\n css?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n strokeCss?: Interpolation<Theme>;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined, def = \"0px\"): string =>\n v == null ? def : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Divider: React.ForwardRefExoticComponent<\n DividerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, DividerProps>(function Divider(\n {\n label,\n variant = \"full\",\n direction = \"horizontal\",\n labelPosition = \"center\",\n thickness = 1,\n width,\n middleMargin = \"5px\",\n insetMargin = \"10px\",\n chip = false,\n chipVariant = \"subtle\",\n rounded = false,\n margin = 10,\n css: userCss,\n labelCss,\n strokeCss,\n className,\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n\n const {\n t,\n strokeColor,\n labelTextColor,\n chipSubtleBg,\n chipOutlinedBg,\n outerM,\n padX,\n verticalStrokeMargin,\n } = useMemo(() => {\n const tVal = typeof thickness === \"number\" ? `${thickness}px` : thickness;\n const strokeColorVal = theme.surface.border;\n const labelTextColorVal = theme.text.secondary;\n const chipSubtleBgVal = theme.surface.subtleBg;\n const chipOutlinedBgVal = theme.surface.panelBg;\n const outerMVal = toLen(margin, \"10px\");\n const padXVal =\n direction === \"horizontal\"\n ? variant === \"middle\"\n ? toLen(middleMargin)\n : variant === \"inset\"\n ? toLen(insetMargin, \"0px\")\n : \"0\"\n : \"0\";\n const verticalStrokeMarginVal =\n direction === \"vertical\"\n ? variant === \"middle\"\n ? toLen(middleMargin)\n : variant === \"inset\"\n ? toLen(insetMargin, \"0px\")\n : \"0\"\n : \"0\";\n return {\n t: tVal,\n strokeColor: strokeColorVal,\n labelTextColor: labelTextColorVal,\n chipSubtleBg: chipSubtleBgVal,\n chipOutlinedBg: chipOutlinedBgVal,\n outerM: outerMVal,\n padX: padXVal,\n verticalStrokeMargin: verticalStrokeMarginVal,\n };\n }, [thickness, theme, direction, variant, middleMargin, insetMargin, margin]);\n\n const wrapCss = useMemo(\n () =>\n css([\n { display: \"flex\", alignItems: \"center\" },\n direction === \"vertical\"\n ? {\n flexDirection: \"column\",\n alignSelf: \"stretch\",\n width: label ? \"max-content\" : t,\n minWidth: label ? \"max-content\" : t,\n marginLeft: outerM,\n marginRight: outerM,\n }\n : {\n flexDirection: \"row\",\n width: width ? toLen(width) : \"100%\",\n minWidth: 0,\n paddingLeft: padX,\n paddingRight: variant === \"middle\" ? padX : \"0\",\n marginTop: outerM,\n marginBottom: outerM,\n },\n ...(Array.isArray(userCss) ? userCss : userCss ? [userCss] : [])\n ]),\n [direction, label, t, outerM, width, padX, variant, userCss]\n );\n\n const strokeBaseCss = useMemo(\n () =>\n css([\n {\n background: strokeColor,\n borderRadius: rounded ? theme.radius.full : theme.radius.xs,\n },\n direction === \"vertical\"\n ? {\n width: t,\n minHeight: 18,\n flex: 1,\n marginTop: verticalStrokeMargin,\n marginBottom: verticalStrokeMargin,\n }\n : { height: t, flex: 1 }\n ]),\n [strokeColor, rounded, theme.radius.full, theme.radius.xs, direction, t, verticalStrokeMargin]\n );\n\n const labelBaseCss = useMemo(\n () =>\n css([\n {\n margin: chip ? (direction === \"vertical\" ? \"4px 0\" : 0) : direction === \"vertical\" ? \"2px 0\" : 0,\n padding: chip ? \"3px 7px\" : 0,\n borderRadius: chip\n ? rounded\n ? theme.radius.full\n : `calc(${theme.radius.sm} * 0.75)`\n : `calc(${theme.radius.sm} * 0.75)`,\n color: labelTextColor,\n fontWeight: 500,\n fontSize: 13,\n textAlign: \"center\",\n alignSelf: \"center\",\n whiteSpace: direction === \"vertical\" ? \"normal\" : \"pre\",\n wordBreak: direction === \"vertical\" ? \"break-all\" : undefined,\n ...(chip\n ? chipVariant === \"subtle\"\n ? { background: chipSubtleBg, border: \"none\" }\n : { background: chipOutlinedBg, border: `${t} solid ${strokeColor}` }\n : {}),\n },\n ...(Array.isArray(labelCss) ? labelCss : labelCss ? [labelCss] : [])\n ]),\n [\n chip,\n direction,\n rounded,\n theme.radius.full,\n theme.radius.sm,\n labelTextColor,\n chipVariant,\n chipSubtleBg,\n chipOutlinedBg,\n t,\n strokeColor,\n labelCss,\n ]\n );\n\n const strokeEl = useMemo<React.ReactElement>(\n () => <div className=\"plainframe-ui-divider-stroke\" css={[strokeBaseCss, strokeCss]} />,\n [strokeBaseCss, strokeCss]\n );\n\n if (direction === \"vertical\") {\n return (\n <div\n ref={ref}\n data-direction=\"vertical\"\n data-variant={variant}\n data-chip={chip ? \"true\" : undefined}\n className={[\"plainframe-ui-divider-wrapper\", \"is-vertical\", className || \"\"].join(\" \").trim()}\n css={wrapCss}\n {...rest}\n >\n {label && labelPosition !== \"top\" && strokeEl}\n {label && (\n <span className=\"plainframe-ui-divider-label\" css={labelBaseCss}>\n {label}\n </span>\n )}\n {label && labelPosition !== \"bottom\" && strokeEl}\n {!label && strokeEl}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n data-direction=\"horizontal\"\n data-variant={variant}\n data-chip={chip ? \"true\" : undefined}\n className={[\"plainframe-ui-divider-wrapper\", className || \"\"].join(\" \").trim()}\n css={wrapCss}\n {...rest}\n >\n {label && labelPosition !== \"left\" && strokeEl}\n {label && (\n <span className=\"plainframe-ui-divider-label\" css={labelBaseCss}>\n {label}\n </span>\n )}\n {label && labelPosition !== \"right\" && strokeEl}\n {!label && strokeEl}\n </div>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n forwardRef,\n} from \"react\";\nimport { css, type Interpolation } from \"@emotion/react\";\nimport { motion, AnimatePresence, type PanInfo } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { Theme } from \"@emotion/react\";\n\ntype DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\ntype DrawerVariant = \"inset\" | \"full\";\n\n// Avoid DOM DragEvent vs Framer Motion drag signature clash in DTS\ntype DomDragKeys =\n | \"onDrag\"\n | \"onDragStart\"\n | \"onDragEnd\"\n | \"onDragOver\"\n | \"onDragEnter\"\n | \"onDragLeave\"\n | \"onDrop\";\n\n// Avoid DOM AnimationEvent vs Framer Motion animation signature clash in DTS\ntype DomAnimKeys = \"onAnimationStart\" | \"onAnimationEnd\";\n\nexport type DrawerProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n DomDragKeys | DomAnimKeys | \"style\"\n> & {\n on?: boolean;\n defaultOn?: boolean;\n onOpenChange?: (open: boolean) => void;\n onClose?: () => void;\n children: React.ReactNode;\n width?: number | string;\n height?: number | string;\n position?: DrawerSide;\n variant?: DrawerVariant;\n margin?: number | string;\n radius?: number | string;\n backdropBlur?: boolean;\n backdropBlurDepth?: number | string;\n closeOnClickAway?: boolean;\n lockScroll?: boolean;\n transitionMs?: number;\n snapClosePct?: number;\n velocityClosePxS?: number;\n dragElasticOut?: number;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nlet __locks = 0;\nlet __prevOverflow = \"\";\nlet __prevPadRight = \"\";\n\nconst getScrollbarW = (): number =>\n typeof window === \"undefined\"\n ? 0\n : window.innerWidth - document.documentElement.clientWidth;\n\nfunction lockBody(): void {\n if (typeof document === \"undefined\") return;\n if (__locks === 0) {\n const b = document.body;\n __prevOverflow = b.style.overflow || \"\";\n __prevPadRight = b.style.paddingRight || \"\";\n const sw = getScrollbarW();\n b.style.overflow = \"hidden\";\n if (sw > 0) b.style.paddingRight = `${sw}px`;\n }\n __locks += 1;\n}\n\nfunction unlockBody(): void {\n if (typeof document === \"undefined\") return;\n if (__locks > 0) __locks -= 1;\n if (__locks === 0) {\n const b = document.body;\n b.style.overflow = __prevOverflow;\n b.style.paddingRight = __prevPadRight;\n }\n}\n\nconst toNum = (v: number | string | undefined, fb = 0): number =>\n v == null ? fb : typeof v === \"number\" ? v : parseFloat(String(v)) || fb;\n\nexport const Drawer: React.ForwardRefExoticComponent<\n DrawerProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n {\n on,\n defaultOn,\n onOpenChange,\n onClose,\n children,\n width,\n height,\n position = \"left\",\n variant = \"inset\",\n margin = 10,\n radius,\n backdropBlur = true,\n backdropBlurDepth,\n closeOnClickAway = true,\n lockScroll = true,\n transitionMs,\n snapClosePct = 0.33,\n velocityClosePxS = 950,\n dragElasticOut = 0.2,\n className,\n css: userCss,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n\n const isControlled = on !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(!!defaultOn);\n const open = isControlled ? !!on : internalOpen;\n\n const setOpen = useCallback(\n (v: boolean) => {\n if (!isControlled) setInternalOpen(v);\n if (!v) onClose?.();\n onOpenChange?.(v);\n },\n [isControlled, onClose, onOpenChange]\n );\n\n useEffect(() => {\n if (!lockScroll || !open) return;\n lockBody();\n return () => unlockBody();\n }, [open, lockScroll]);\n\n const marginPx = useMemo(() => toNum(margin, 0), [margin]);\n\n const axis: \"x\" | \"y\" = useMemo(\n () => (position === \"left\" || position === \"right\" ? \"x\" : \"y\"),\n [position]\n );\n const dir = useMemo(\n () => (position === \"left\" || position === \"top\" ? -1 : 1) as 1 | -1,\n [position]\n );\n\n const computedWidth: number | string = useMemo(\n () =>\n width ??\n (position === \"left\" || position === \"right\"\n ? 320\n : variant === \"inset\"\n ? `calc(100% - ${marginPx * 2}px)`\n : \"100%\"),\n [width, position, variant, marginPx]\n );\n\n const computedHeight: number | string = useMemo(\n () =>\n height ??\n (position === \"top\" || position === \"bottom\"\n ? 420\n : variant === \"inset\"\n ? `calc(100% - ${marginPx * 2}px)`\n : \"100%\"),\n [height, position, variant, marginPx]\n );\n\n const edgeRadius = useMemo(() => {\n const r = String(theme.radius.lg);\n switch (position) {\n case \"left\":\n return `0 ${r} ${r} 0`;\n case \"right\":\n return `${r} 0 0 ${r}`;\n case \"top\":\n return `0 0 ${r} ${r}`;\n default:\n return `${r} ${r} 0 0`;\n }\n }, [position, theme.radius.lg]);\n\n const computedRadius = useMemo(\n () => radius ?? (variant === \"inset\" ? theme.radius.lg : edgeRadius),\n [radius, variant, theme.radius.lg, edgeRadius]\n );\n\n const posCss = useMemo<{\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n }>(() => {\n if (variant === \"inset\") {\n return {\n top: position === \"bottom\" ? undefined : marginPx,\n bottom: position === \"top\" ? undefined : marginPx,\n left: position === \"right\" ? undefined : marginPx,\n right: position === \"left\" ? undefined : marginPx,\n };\n }\n return {\n top: position === \"bottom\" ? undefined : 0,\n bottom: position === \"top\" ? undefined : 0,\n left: position === \"right\" ? undefined : 0,\n right: position === \"left\" ? undefined : 0,\n };\n }, [variant, position, marginPx]);\n\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n const sizePx = useCallback((): number => {\n const el = panelRef.current;\n if (!el) return 1;\n const r = el.getBoundingClientRect();\n return axis === \"x\" ? r.width : r.height;\n }, [axis]);\n\n const springTransition = useMemo(\n () => ({ type: \"spring\", stiffness: 520, damping: 40, mass: 0.7 } as const),\n []\n );\n\n const timedTransition = useMemo(\n () =>\n ({\n duration: (transitionMs ?? 280) / 1000,\n ease: [0.22, 1, 0.36, 1] as [number, number, number, number],\n }) as const,\n [transitionMs]\n );\n\n const closedOffset = useMemo(() => dir * 1.1, [dir]);\n const initialTranslate = useMemo(\n () =>\n axis === \"x\"\n ? ({ x: `${closedOffset * 100}%`, y: 0 } as const)\n : ({ y: `${closedOffset * 100}%`, x: 0 } as const),\n [axis, closedOffset]\n );\n\n const panelCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n position: \"fixed\",\n zIndex: 1100,\n ...posCss,\n width: computedWidth as any,\n height: computedHeight as any,\n backgroundColor: (theme.surface as any).panelBg,\n borderRadius: computedRadius as any,\n overflowY: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n overscrollBehavior: \"contain\",\n willChange: \"transform, box-shadow, opacity\",\n backfaceVisibility: \"hidden\",\n pointerEvents: open ? \"auto\" : \"none\",\n touchAction: axis === \"x\" ? \"pan-y\" : \"pan-x\",\n \"@media (prefers-reduced-motion: reduce)\": { transition: \"none\" },\n }),\n [posCss, computedWidth, computedHeight, theme.surface, computedRadius, open, axis]\n );\n\n const overlayCss: Interpolation<Theme> = useMemo(\n () =>\n css({\n position: \"fixed\",\n inset: 0,\n zIndex: 1099,\n background: (theme.surface as any).overlayBg,\n transition: \"all .3s ease\",\n ...(backdropBlur\n ? { backdropFilter: `blur(${backdropBlurDepth ?? \"2px\"})` }\n : null),\n }),\n [backdropBlur, backdropBlurDepth, theme.surface]\n );\n\n const onOverlayClick = useCallback<React.MouseEventHandler<HTMLDivElement>>(\n () => {\n if (closeOnClickAway) setOpen(false);\n },\n [closeOnClickAway, setOpen]\n );\n\n const dragElastic = useMemo((): Record<string, number> => {\n return axis === \"x\"\n ? {\n left: dir === -1 ? dragElasticOut : 0,\n right: dir === 1 ? dragElasticOut : 0,\n }\n : {\n top: dir === -1 ? dragElasticOut : 0,\n bottom: dir === 1 ? dragElasticOut : 0,\n };\n }, [axis, dir, dragElasticOut]);\n\n const dragConstraints = useMemo(\n (): Record<string, number> =>\n axis === \"x\" ? { left: 0, right: 0 } : { top: 0, bottom: 0 },\n [axis]\n );\n\n const snapPct = useMemo(() => Math.max(0, Math.min(1, snapClosePct)), [snapClosePct]);\n\n const onDragEnd = useCallback(\n (_: unknown, info: PanInfo) => {\n const delta = axis === \"x\" ? info.offset.x : info.offset.y;\n const velocity = axis === \"x\" ? info.velocity.x : info.velocity.y;\n const movedOutward = dir * delta > 0;\n const distOk = Math.abs(delta) >= sizePx() * snapPct;\n const velOk = dir * velocity > velocityClosePxS;\n if (movedOutward && (distOk || velOk)) setOpen(false);\n },\n [axis, dir, sizePx, snapPct, velocityClosePxS, setOpen]\n );\n\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n window.addEventListener(\"keydown\", onKey, { passive: true });\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [open, setOpen]);\n const { ...safeRest } = rest;\n\n return (\n <AnimatePresence>\n {open ? (\n <>\n <motion.div\n key=\"overlay\"\n role=\"presentation\"\n aria-hidden\n css={overlayCss}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={transitionMs ? timedTransition : { duration: 0.18, ease: \"linear\" }}\n onClick={onOverlayClick}\n />\n <motion.div\n key=\"panel\"\n ref={(node: HTMLDivElement | null) => {\n panelRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n data-position={position}\n data-variant={variant}\n className={[\"plainframe-ui-drawer\", className || \"\"].join(\" \").trim()}\n css={[panelCss, userCss]}\n drag={axis}\n dragConstraints={dragConstraints}\n dragElastic={dragElastic as any}\n dragMomentum={false}\n dragDirectionLock\n onDragEnd={onDragEnd}\n initial={{ ...initialTranslate, opacity: 0.98 }}\n animate={{ x: 0, y: 0, opacity: 1 }}\n exit={{ ...initialTranslate, opacity: 0.98 }}\n transition={transitionMs ? timedTransition : springTransition}\n {...safeRest}\n >\n {children}\n </motion.div>\n </>\n ) : null}\n </AnimatePresence>\n );\n});\n\nDrawer.displayName = \"Drawer\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype FadeProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n blur?: boolean;\n};\n\nexport const Fade: React.FC<FadeProps> = ({\n children,\n duration = 300,\n delay = 0,\n on = false,\n onAnimationEnd,\n asChild = true,\n className,\n blur = false,\n}) => {\n const baseStyles = {\n opacity: on ? 1 : 0,\n filter: blur ? (on ? \"none\" : \"blur(10px)\") : \"none\",\n transition: `opacity ${duration}ms ease ${delay}ms, filter ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n willChange: \"opacity, filter\",\n backfaceVisibility: \"hidden\",\n } as const;\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (\n e.target === e.currentTarget &&\n (e.propertyName === \"opacity\" || e.propertyName === \"filter\")\n ) {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child = children as React.ReactElement<any>;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-fade\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles as import('@emotion/react').CSSObject);\n\n return (\n <div\n className={[\"plainframe-ui-transition-fade\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css as emCss, type Interpolation } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport type { Theme } from \"@emotion/react\";\n\ntype Dir = \"vertical\" | \"horizontal\" | \"column\" | \"row\";\ntype GapKey = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type FlexProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n direction?: Dir;\n gap?: GapKey | number | string;\n justify?: React.CSSProperties[\"justifyContent\"];\n align?: React.CSSProperties[\"alignItems\"];\n css?: Interpolation<Theme>;\n width?: string | number;\n height?: string | number;\n};\n\nconst toLen = (v?: string | number): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Flex: React.ForwardRefExoticComponent<\n FlexProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, FlexProps>(function Flex(\n {\n direction = \"row\",\n gap = \"sm\",\n justify,\n align = \"center\",\n className,\n css: userCss,\n children,\n width,\n height,\n ...rest\n },\n ref\n): React.ReactElement | null {\n const theme = usePlainframeUITheme();\n\n const flexDirection: React.CSSProperties[\"flexDirection\"] =\n direction === \"vertical\" || direction === \"column\" ? \"column\" : \"row\";\n\n const gapVal: string | number | undefined =\n gap === undefined\n ? undefined\n : typeof gap === \"number\"\n ? gap\n : (theme.spacing as Record<string, string | number>)[gap as GapKey] ?? gap;\n\n const base: Interpolation<Theme> = emCss({\n display: \"flex\",\n flexDirection,\n gap: gapVal as any,\n justifyContent: justify,\n alignItems: align,\n maxWidth: toLen(width),\n width: width ? \"100%\" : undefined,\n maxHeight: toLen(height),\n height: height ? \"100%\" : undefined,\n boxSizing: \"border-box\",\n });\n\n return (\n <div\n ref={ref}\n className={[\"plainframe-ui-flex\", className || \"\"].join(\" \").trim()}\n css={[base, userCss]}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nFlex.displayName = \"Flex\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype GrowProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n initialScale?: number;\n finalScale?: number;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n};\n\nexport const Grow: React.FC<GrowProps> = ({\n children,\n duration = 300,\n delay = 0,\n on = false,\n initialScale = 0,\n finalScale = 1,\n onAnimationEnd,\n asChild = true,\n className,\n}) => {\n const baseStyles = {\n transform: on ? `scale(${finalScale})` : `scale(${initialScale})`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? (\"auto\" as React.CSSProperties[\"pointerEvents\"]) : (\"none\" as React.CSSProperties[\"pointerEvents\"]),\n willChange: \"transform\" as const,\n backfaceVisibility: \"hidden\" as const,\n };\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n const mergedClassName = [\n \"plainframe-ui-transition-grow\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles);\n\n return (\n <div\n className={[\"plainframe-ui-transition-grow\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useState, forwardRef } from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Typography } from \"./Typography\";\n\ntype HoverEffect = \"scale\" | \"rotate\" | \"scale-rotate\" | \"none\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ImageProps = Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"style\"> & {\n radius?: number | string | RadiusToken;\n shadow?: boolean;\n hoverEffect?: HoverEffect;\n label?: React.ReactNode;\n labelAlign?: \"left\" | \"center\" | \"right\";\n aspectRatio?: number | string;\n placeholder?: \"blur\" | \"color\";\n blurDataURL?: string;\n placeholderColor?: string;\n fallbackSrc?: string;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst resolveRadius = (\n radius: RadiusToken | string | number | undefined,\n theme: any\n) => {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n};\n\nexport const Image: React.ForwardRefExoticComponent<\n ImageProps & React.RefAttributes<HTMLImageElement>\n> = forwardRef<HTMLImageElement, ImageProps>(function Image(\n {\n src,\n alt = \"\",\n width,\n height,\n radius = \"md\",\n shadow = false,\n hoverEffect = \"none\",\n label,\n labelAlign = \"center\",\n aspectRatio,\n loading = \"lazy\",\n decoding = \"async\",\n fetchPriority,\n srcSet,\n sizes,\n placeholder,\n blurDataURL,\n placeholderColor = \"#f1f1f1\",\n fallbackSrc,\n className,\n css: userCss,\n onClick,\n onLoad,\n onError,\n ...imgRest\n },\n ref\n) {\n const [hovering, setHovering] = useState(false);\n const [errored, setErrored] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const theme = usePlainframeUITheme();\n\n const br = resolveRadius(radius, theme) ?? \"0px\";\n const WrapperEl: any = label ? \"figure\" : \"div\";\n\n const wrapperCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n gap: label ? theme.spacing.xs : 0,\n width: \"fit-content\",\n borderRadius: `var(--pfui-image-radius, ${br})`,\n });\n\n const frameCss = css({\n position: \"relative\",\n borderRadius: `var(--pfui-image-radius, ${br})`,\n maxWidth: width ? toLen(width)! : \"100%\",\n maxHeight: height ? toLen(height)! : undefined,\n width: width ? \"100%\" : undefined,\n height: height ? \"100%\" : undefined,\n aspectRatio: aspectRatio as any,\n boxShadow: shadow ? \"0 12px 32px rgba(0,0,0,.12), 0 2px 8px rgba(0,0,0,.04)\" : \"none\",\n overflow: \"hidden\",\n padding: 0,\n lineHeight: 0,\n transition: \"transform 0.3s ease\",\n willChange: \"transform\",\n transform:\n hovering && (hoverEffect === \"rotate\" || hoverEffect === \"scale-rotate\")\n ? \"rotate(3deg)\"\n : \"none\",\n cursor: onClick ? \"pointer\" : undefined,\n });\n\n const placeholderCss = css({\n position: \"absolute\",\n inset: 0,\n background:\n placeholder === \"color\" ? (placeholderColor as string) : undefined,\n backgroundImage:\n placeholder === \"blur\" && blurDataURL ? `url(${blurDataURL})` : undefined,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n filter: placeholder === \"blur\" ? \"blur(8px)\" : undefined,\n transition: \"opacity 0.3s ease\",\n opacity: loaded ? 0 : 1,\n pointerEvents: \"none\",\n });\n\n const imgCss = css({\n width: \"100%\",\n height: \"100%\",\n display: \"block\",\n objectFit: \"cover\",\n transform:\n hovering && (hoverEffect === \"scale\" || hoverEffect === \"scale-rotate\")\n ? \"scale(1.08)\"\n : \"none\",\n transition: \"transform 0.3s ease\",\n willChange: \"transform\",\n });\n\n return (\n <WrapperEl\n className={[\"plainframe-ui-image\", className || \"\"].join(\" \").trim()}\n css={[wrapperCss, userCss]}\n tabIndex={-1}\n >\n <div\n className=\"plainframe-ui-image-frame\"\n css={frameCss}\n onMouseEnter={() => setHovering(true)}\n onMouseLeave={() => setHovering(false)}\n onClick={onClick as any}\n >\n {!loaded && placeholder && (\n <div aria-hidden className=\"plainframe-ui-image-placeholder\" css={placeholderCss} />\n )}\n <img\n ref={ref}\n className=\"plainframe-ui-image-img\"\n css={imgCss}\n src={errored && fallbackSrc ? fallbackSrc : (src as string)}\n alt={alt}\n srcSet={srcSet}\n sizes={sizes}\n loading={loading}\n decoding={decoding}\n fetchPriority={fetchPriority}\n onLoad={(e) => {\n setLoaded(true);\n onLoad?.(e);\n }}\n onError={(e) => {\n setErrored(true);\n onError?.(e);\n }}\n {...imgRest}\n />\n </div>\n\n {label && (\n <Typography as=\"figcaption\" variant=\"caption\" align={labelAlign}>\n {label}\n </Typography>\n )}\n </WrapperEl>\n );\n});\n\nImage.displayName = \"Image\";\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\nconst MAP = {\n h1: { size: \"2.25rem\", weight: 700, lh: 1.1, ls: \"-0.02em\" },\n h2: { size: \"1.875rem\", weight: 700, lh: 1.15, ls: \"-0.01em\" },\n h3: { size: \"1.5rem\", weight: 600, lh: 1.2, ls: \"-0.005em\" },\n h4: { size: \"1.25rem\", weight: 600, lh: 1.2, ls: \"0\" },\n body: { size: \"0.95rem\", weight: 500, lh: 1.2, ls: \"0\" },\n caption: { size: \"0.8rem\", weight: 500, lh: 1.2, ls: \"0.01em\" },\n} as const;\n\ntype Variant = keyof typeof MAP;\ntype Align = \"left\" | \"center\" | \"right\";\ntype Decoration = \"none\" | \"underline\" | \"overline\" | \"line-through\";\ntype DecorationStyle = \"solid\" | \"dashed\" | \"dotted\";\n\nexport type TypographyProps = {\n variant?: Variant;\n children: React.ReactNode;\n color?: string | \"primary\" | \"secondary\";\n size?: number | string;\n weight?: number | string;\n lineHeight?: number | string;\n letterSpacing?: number | string;\n align?: Align;\n textTransform?: \"none\" | \"capitalize\" | \"uppercase\" | \"lowercase\";\n whiteSpace?: \"normal\" | \"nowrap\" | \"pre\" | \"pre-wrap\";\n decoration?: Decoration;\n decorationStyle?: DecorationStyle;\n decorationThickness?: number | string;\n decorationColor?: string;\n italic?: boolean;\n className?: string;\n style?: React.CSSProperties;\n as?: keyof JSX.IntrinsicElements;\n};\n\nconst toLen = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : String(v);\n\nconst defaultTagByVariant: Record<Variant, keyof JSX.IntrinsicElements> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n body: \"span\",\n caption: \"span\",\n};\n\nexport const Typography: React.FC<TypographyProps> = ({\n variant = \"body\",\n children,\n color,\n size,\n weight,\n lineHeight,\n letterSpacing,\n align = \"left\",\n textTransform = \"none\",\n whiteSpace = \"normal\",\n decoration = \"none\",\n decorationStyle = \"solid\",\n decorationThickness = 1,\n decorationColor,\n italic,\n className,\n style,\n as,\n}) => {\n const theme = usePlainframeUITheme();\n const def = MAP[variant] ?? MAP.body;\n const Tag = as ?? defaultTagByVariant[variant] ?? \"span\";\n\n const fontSize =\n size ?? (theme?.fontSizes && (theme.fontSizes as any)[variant]) ?? def.size;\n const fontWeight = weight ?? def.weight;\n const lh = lineHeight ?? def.lh;\n const ls = letterSpacing ?? def.ls;\n\n const fg =\n color === \"secondary\"\n ? theme.text.secondary\n : color === \"primary\"\n ? theme.text.primary\n : color ?? \"inherit\";\n\n const decoColor = decorationColor ?? theme.surface.border;\n\n const baseCss = css({\n boxSizing: \"border-box\",\n display: align === \"left\" ? \"inline\" : \"block\",\n textAlign: align === \"left\" ? undefined : align,\n fontFamily: theme?.fonts?.sans || \"inherit\",\n fontSize,\n fontWeight: fontWeight as number | string,\n lineHeight: lh as number | string,\n letterSpacing: ls as number | string,\n color: fg,\n textTransform,\n whiteSpace,\n fontStyle: italic ? \"italic\" : \"normal\",\n margin: 0,\n padding: 0,\n });\n\n const decoCss =\n decoration === \"none\"\n ? css({\n textDecoration: \"none\",\n })\n : css({\n textDecorationLine: decoration,\n textDecorationStyle: decorationStyle,\n textDecorationColor: decoColor,\n textDecorationThickness: toLen(decorationThickness),\n textDecorationSkipInk: \"auto\",\n });\n\n return (\n <Tag\n className={[`pfui-typo-${variant}`, className || \"\"].join(\" \").trim()}\n css={[baseCss, decoCss]}\n style={style}\n data-variant={variant}\n >\n {children}\n </Tag>\n );\n};\nTypography.displayName = \"Typography\";\n","/** @jsxImportSource @emotion/react */\nimport React, { memo, Children, isValidElement } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Typography } from \"./Typography\";\nimport { Theme } from \"@emotion/react\";\n\ntype Variant = \"fan\" | \"slide\" | \"domino\" | \"ladder\";\ntype HoverEffect = \"reveal\" | \"expand\" | \"none\";\ntype Size = \"sm\" | \"md\" | \"lg\" | \"xl\";\ntype RadiusToken = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ImageStackProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n children: React.ReactNode;\n variant?: Variant;\n width?: number | string;\n aspectRatio?: number | string;\n size?: Size;\n hoverEffect?: HoverEffect;\n hovering?: boolean;\n maxItems?: number;\n shadow?: boolean;\n cursor?: React.CSSProperties[\"cursor\"];\n outline?: boolean;\n outlineColor?: string;\n outlineWidth?: number;\n outlineOffset?: number;\n radius?: number | string | RadiusToken;\n label?: React.ReactNode;\n labelAlign?: \"left\" | \"center\" | \"right\";\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst px = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst parseAR = (ar: unknown): number | undefined => {\n if (typeof ar === \"number\" && isFinite(ar) && ar > 0) return ar;\n if (typeof ar === \"string\") {\n const m = ar.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*\\/\\s*(\\d+(?:\\.\\d+)?)$/);\n if (m) {\n const w = parseFloat(m[1]);\n const h = parseFloat(m[2]);\n if (w > 0 && h > 0) return w / h;\n }\n const n = parseFloat(ar);\n if (isFinite(n) && n > 0) return n;\n }\n return undefined;\n};\n\nconst rad = (d: number) => (d * Math.PI) / 180;\nconst rotatedBBox = (w: number, h: number, deg: number) => {\n const t = Math.abs(rad(deg));\n const c = Math.cos(t);\n const s = Math.sin(t);\n return { w: Math.abs(w * c) + Math.abs(h * s), h: Math.abs(h * c) + Math.abs(w * s) };\n};\n\nfunction variantTx(variant: Variant, n: number) {\n if (n <= 1) {\n const z = { ang: [0], dx: [0], dy: [0] };\n return { base: z, exp: z };\n }\n if (variant === \"fan\") {\n const base = n === 2 ? { ang: [-14, 10], dx: [-40, 24], dy: [0, 0] } : { ang: [-14, 0, 14], dx: [-55, 0, 55], dy: [-7.5, 0, -7.5] };\n const exp = n === 2 ? { ang: [-7, 5], dx: [-20, 12], dy: [0, 0] } : { ang: [-7, 0, 7], dx: [-32.5, 0, 32.5], dy: [0, 0, 0] };\n return { base, exp };\n }\n if (variant === \"slide\") {\n const base = n === 2 ? { ang: [-20, 3], dx: [-10, 5], dy: [-2, 0] } : { ang: [-20, -5, 10], dx: [-35, -10, 12], dy: [4, 0, 4] };\n const exp = n === 2 ? { ang: [-10, 1.5], dx: [-10, 5], dy: [-2, 0] } : { ang: [-10, -2.5, 5], dx: [-30.5, -7.5, 6], dy: [4, 0, 4] };\n return { base, exp };\n }\n if (variant === \"domino\") {\n const base = n === 2 ? { ang: [0, 0], dx: [0, 0], dy: [-11, 5] } : { ang: [0, 0, 0], dx: [0, 0, 0], dy: [-18, -5, 6] };\n const exp = n === 2 ? { ang: [0, 0], dx: [0, 0], dy: [-5, 5] } : { ang: [0, 0, 0], dx: [0, 0, 0], dy: [-14, -2.5, 7] };\n return { base, exp };\n }\n const base = n === 2 ? { ang: [-4, 8], dx: [-22, 18], dy: [-30, 40] } : { ang: [-10, 10, 0.5], dx: [-30, 30, -15], dy: [-65, 2, 65] };\n const exp = n === 2 ? { ang: [-3, 6], dx: [-11, 9], dy: [-22.5, 30] } : { ang: [-7.5, 7.5, 0.35], dx: [-15, 20, -10.5], dy: [-55.5, 2, 55.5] };\n return { base, exp };\n}\n\nconst baseScale = (variant: Variant, n: number, i: number) =>\n variant === \"fan\" ? (n === 2 ? [0.9, 1.08][i] ?? 1 : [0.8, 1.0, 0.8][i] ?? 1)\n : variant === \"slide\" ? (n === 2 ? [0.8, 1.0][i] ?? 1 : [0.7, 0.85, 1.0][i] ?? 1)\n : variant === \"domino\" ? (n === 2 ? [0.9, 1.0][i] ?? 1 : [0.85, 0.95, 1.0][i] ?? 1)\n : 1;\n\nconst bumpReveal = [1.02, 1.03, 1.02];\nconst bumpExpand = [1.06, 1.08, 1.06];\n\nconst SIZE_W: Record<Size, number> = { sm: 150, md: 200, lg: 260, xl: 340 };\n\nconst toLen = (v: number | string | undefined) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nfunction resolveRadius(radius: RadiusToken | string | number | undefined, theme: any) {\n if (radius == null) return undefined;\n if (typeof radius === \"number\") return `${radius}px`;\n if (typeof radius === \"string\") {\n if ([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"full\"].includes(radius)) {\n const val =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n return toLen(val ?? radius);\n }\n return radius;\n }\n return undefined;\n}\n\nexport const ImageStack: React.FC<ImageStackProps> = memo(function ImageStack({\n children,\n variant = \"fan\",\n width,\n aspectRatio = \"4/5\",\n size = \"md\",\n hoverEffect = \"none\",\n hovering,\n maxItems = 3,\n shadow = false,\n cursor,\n outline,\n outlineColor,\n outlineWidth = 3,\n outlineOffset = 0,\n radius = \"md\",\n label,\n labelAlign = \"center\",\n css: userCss,\n className,\n ...rest\n}: ImageStackProps) {\n const theme = usePlainframeUITheme();\n const AR = parseAR(aspectRatio) ?? 4 / 5;\n\n const wStr = typeof width === \"string\" ? width : undefined;\n const Wn =\n typeof width === \"number\"\n ? width\n : wStr && /px$/.test(wStr)\n ? parseFloat(wStr)\n : SIZE_W[size];\n const Hn = Math.max(1, Wn / AR);\n\n const all = Children.toArray(children).filter(isValidElement) as React.ReactElement[];\n const items = all.slice(0, maxItems);\n const n = items.length;\n\n const t = variantTx(variant, n);\n const baseScales = items.map((_, i) => baseScale(variant, n, i));\n const frameH = (i: number) => Hn * 0.6 * baseScales[i];\n const frameW = (i: number) => frameH(i) * AR;\n\n let halfW = 0, halfH = 0;\n for (let i = 0; i < n; i++) {\n const bw = frameW(i);\n const bh = frameH(i);\n const worstAng = Math.max(Math.abs(t.base.ang[i] ?? 0), Math.abs(t.exp.ang[i] ?? 0));\n const worstDx = Math.max(Math.abs(t.base.dx[i] ?? 0), Math.abs(t.exp.dx[i] ?? 0));\n const worstDy = Math.max(Math.abs(t.base.dy[i] ?? 0), Math.abs(t.exp.dy[i] ?? 0));\n const bump = hoverEffect === \"expand\" ? bumpExpand[i] ?? 1.08 : hoverEffect === \"reveal\" ? bumpReveal[i] ?? 1.03 : 1;\n const rot = rotatedBBox(bw, bh, worstAng);\n const w0 = rot.w * bump;\n const h0 = rot.h * bump;\n const sx = (worstDx / 100) * bw * bump;\n const sy = (worstDy / 100) * bh * bump;\n halfW = Math.max(halfW, w0 / 2 + sx);\n halfH = Math.max(halfH, h0 / 2 + sy);\n }\n\n const stageW0 = Math.max(1, 2 * halfW);\n const stageH0 = Math.max(1, 2 * halfH);\n const stageScale = Math.min(1, Wn / stageW0, Hn / stageH0);\n\n const hoverMode = hovering === undefined ? \"pointer\" : \"controlled\";\n const hoverAttr = hovering ? \"true\" : undefined;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: \"column\",\n cursor: cursor || \"auto\",\n lineHeight: 0,\n position: \"relative\",\n isolation: \"isolate\",\n gap: label ? theme.spacing.xs : 0,\n });\n\n const stackCss = css({\n position: \"relative\",\n width: px(typeof width === \"number\" ? width : Wn) ?? (typeof width === \"string\" ? width : undefined),\n height: px(Hn),\n });\n\n const stageCss = css({\n position: \"absolute\",\n inset: 0,\n left: \"50%\",\n top: \"50%\",\n width: `${stageW0}px`,\n height: `${stageH0}px`,\n transform: `translate(-50%, -50%) scale(${stageScale})`,\n transformOrigin: \"center center\",\n });\n\n const frameRadius = resolveRadius(radius, theme) ?? \"0px\";\n\n const cardCss = (i: number) => {\n const baseTx =\n variant === \"fan\"\n ? `rotate(${t.base.ang[i]}deg) translate(${t.base.dx[i]}%, ${t.base.dy[i]}%)`\n : variant === \"slide\"\n ? `translate(${t.base.dx[i]}%, ${t.base.dy[i]}%) rotate(${t.base.ang[i]}deg)`\n : variant === \"domino\"\n ? `translate(0%, ${t.base.dy[i]}%)`\n : `translate(${t.base.dx[i]}%, ${t.base.dy[i]}%) rotate(${t.base.ang[i]}deg)`;\n const expTx =\n variant === \"fan\"\n ? `rotate(${t.exp.ang[i]}deg) translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%)`\n : variant === \"slide\"\n ? `translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%) rotate(${t.exp.ang[i]}deg)`\n : variant === \"domino\"\n ? `translate(0%, ${t.exp.dy[i]}%)`\n : `translate(${t.exp.dx[i]}%, ${t.exp.dy[i]}%) rotate(${t.exp.ang[i]}deg)`;\n\n const baseTransform = hoverEffect === \"reveal\" ? `translate(0,0) rotate(0) scale(1)` : `${baseTx} scale(1)`;\n const hoverTransform =\n hoverEffect === \"expand\"\n ? `${expTx} scale(${bumpExpand[i] ?? 1.06})`\n : hoverEffect === \"reveal\"\n ? `${baseTx} scale(${bumpReveal[i] ?? 1.03})`\n : `${baseTx} scale(1)`;\n\n return css({\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: `translate(-50%, -50%) ${baseTransform}`,\n transition: \"transform .22s ease\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n zIndex: variant === \"fan\" ? (i === 1 ? 10 : i + 1) : i + 1,\n lineHeight: 0,\n boxShadow: shadow ? \"rgba(0,0,0,.12) 0 8px 20px\" : \"none\",\n outline: outline ? `${outlineWidth}px solid ${outlineColor ?? theme.surface.appBg}` : undefined,\n outlineOffset: outline ? outlineOffset : undefined,\n pointerEvents: \"auto\",\n \".plainframe-ui-image-stack-wrapper[data-hover-mode='pointer']:hover &\": {\n transform: `translate(-50%, -50%) ${hoverTransform}`,\n },\n \".plainframe-ui-image-stack-wrapper[data-hover-mode='controlled'][data-hovered='true'] &\": {\n transform: `translate(-50%, -50%) ${hoverTransform}`,\n },\n });\n };\n\n const frameCss = (i: number) =>\n css({\n width: `${frameW(i)}px`,\n aspectRatio: `${AR}`,\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: frameRadius,\n [\"--pfui-image-radius\" as any]: frameRadius,\n \"& > *\": {\n position: \"absolute\",\n inset: \"0\",\n width: \"100% !important\",\n height: \"100% !important\",\n maxWidth: \"none !important\",\n maxHeight: \"none !important\",\n display: \"block\",\n },\n \"& img, & picture img, & video, & canvas\": {\n width: \"100% !important\",\n height: \"100% !important\",\n objectFit: \"cover\",\n display: \"block\",\n },\n });\n\n const WrapperEl: any = label ? \"figure\" : \"div\";\n\n return (\n <WrapperEl\n className={[\"plainframe-ui-image-stack-wrapper\", className || \"\"].join(\" \").trim()}\n data-hover-mode={hoverMode}\n data-hovered={hoverAttr}\n css={[rootCss, userCss]}\n tabIndex={-1}\n {...rest}\n >\n <div className=\"plainframe-ui-image-stack\" css={stackCss}>\n <div className=\"plainframe-ui-image-stack-stage\" css={stageCss}>\n {items.map((child, i) => (\n <div key={i} className=\"plainframe-ui-image-stack-item\" css={cardCss(i)}>\n <div className=\"plainframe-ui-image-stack-frame\" css={frameCss(i)}>\n {child}\n </div>\n </div>\n ))}\n </div>\n </div>\n {label && (\n <Typography as=\"figcaption\" variant=\"caption\" align={labelAlign}>\n {label}\n </Typography>\n )}\n </WrapperEl>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, { forwardRef } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\nconst toLen = (v?: number | string) => (typeof v === \"number\" ? `${v}px` : v);\n\nexport type KbdProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n variant?: \"subtle\" | \"outlined\" | \"ghost\";\n size?: \"sm\" | \"md\" | \"lg\";\n radius?: number | string;\n mono?: boolean;\n uppercase?: boolean;\n css?: Interpolation<Theme>;\n className?: string;\n};\n\nconst sizeTokens: Record<NonNullable<KbdProps[\"size\"]>, { h: number; px: number; font: number }> = {\n sm: { h: 20, px: 6, font: 10 },\n md: { h: 24, px: 7, font: 12 },\n lg: { h: 28, px: 8, font: 14 },\n};\n\nfunction resolveRadius(radius: number | string | undefined, theme: any) {\n if (radius == null) {\n const fallback = theme.radius?.xs ?? theme.radius?.sm ?? 3;\n return toLen(fallback);\n }\n if (typeof radius === \"number\") return `${radius}px`;\n const token =\n (theme.radius && (theme.radius as any)[radius]) ||\n (theme.radii && (theme.radii as any)[radius]);\n if (token != null) return toLen(token);\n return radius;\n}\n\nexport const Kbd: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<KbdProps> & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, KbdProps>(function Kbd(\n {\n children,\n variant = \"outlined\",\n size = \"sm\",\n radius,\n mono = true,\n uppercase = false,\n css: userCss,\n className = \"plainframe-ui-kbd\",\n ...rest\n },\n ref\n) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const t = sizeTokens[size] ?? sizeTokens.sm;\n const r = resolveRadius(radius, theme);\n\n const gray = {\n br: theme.neutral[300],\n txt: theme.neutral[800],\n inset: theme.neutral[0],\n };\n\n const base = css({\n all: \"unset\",\n boxSizing: \"border-box\",\n display: \"inline-flex !important\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: variant === \"ghost\" ? undefined : `${t.h}px !important`,\n minHeight: variant === \"ghost\" ? undefined : `${t.h}px !important`,\n paddingInline: variant === \"ghost\" ? 0 : `${t.px}px !important`,\n paddingBlock: `0 !important`,\n fontFamily: mono\n ? 'var(--pf-font-mono, Consolas, ui-monospace, SFMono-Regular, Menlo, Monaco, \"Liberation Mono\", \"Courier New\", monospace)'\n : \"inherit\",\n fontSize: variant === \"ghost\" ? `${t.font * 1.2}px !important` : `${t.font}px !important`,\n fontWeight: 600,\n letterSpacing: 0.2,\n lineHeight: `0.2 !important`,\n textTransform: uppercase ? \"uppercase\" : \"none\",\n borderRadius: r as string,\n userSelect: \"none\",\n whiteSpace: \"nowrap\",\n verticalAlign: \"baseline\",\n position: \"relative\",\n transition:\n \"box-shadow .15s ease, background-color .15s ease, border-color .15s ease, color .15s ease\",\n outline: \"none\",\n });\n\n const subtle = css({\n \"&&\": {\n background: theme.neutral[200],\n border: \"none\",\n boxShadow: \"none\",\n color: gray.txt,\n },\n });\n\n const ghost = css({\n \"&&\": {\n background: \"transparent\",\n color: gray.txt,\n border: \"none\",\n boxShadow: \"none\",\n },\n });\n\n const outlined = css({\n \"&&\": {\n background: theme.surface.panelBg,\n color: gray.txt,\n border: `1px solid ${gray.br}`,\n boxShadow: `inset 0 1px 0 ${gray.inset}AA, 0 1px 0 rgba(0,0,0,0.03)`,\n },\n });\n\n const variantCss = variant === \"subtle\" ? subtle : variant === \"ghost\" ? ghost : outlined;\n\n return (\n <kbd ref={ref} className={className} css={[focusRing(), base, variantCss, userCss]} {...rest}>\n {children}\n </kbd>\n );\n});\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useEffect,\n useMemo,\n useContext,\n forwardRef,\n useCallback,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { Backdrop } from \"./Backdrop\";\nimport { Slide } from \"./Slide\";\nimport { Fade } from \"./Fade\";\nimport { Grow } from \"./Grow\";\nimport { Container } from \"./Container\";\n\n/* ───────── utils ───────── */\nconst toLen = (v?: number | string): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst setRef = <T,>(ref: React.Ref<T> | undefined, value: T | null) => {\n if (!ref) return;\n if (typeof ref === \"function\") (ref as (v: T | null) => void)(value);\n else (ref as unknown as { current: T | null }).current = value;\n};\n\nconst mergeRefs =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null) => {\n for (const ref of refs) setRef(ref, node);\n };\n\n/* ───────── context ───────── */\ntype ModalCtxT = {\n open: boolean;\n setOpen: (next: boolean) => void;\n lockScroll: boolean;\n closeOnEsc: boolean;\n};\nconst ModalCtx = React.createContext<ModalCtxT | null>(null);\nconst useModalCtx = (): ModalCtxT => {\n const ctx = useContext(ModalCtx);\n if (!ctx) throw new Error(\"Modal components must be used within <Modal>.\");\n return ctx;\n};\n\n/* ───────── root ───────── */\nexport type ModalProps = {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n lockScroll?: boolean;\n closeOnEsc?: boolean;\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n open: controlled,\n defaultOpen,\n onOpenChange,\n lockScroll = true,\n closeOnEsc = true,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n\n const setOpen = useCallback(\n (next: boolean): void => {\n if (controlled === undefined) setUncontrolled(next);\n onOpenChange?.(next);\n },\n [controlled, onOpenChange]\n );\n\n useEffect(() => {\n if (!open || !closeOnEsc) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n e.stopPropagation();\n setOpen(false);\n }\n };\n window.addEventListener(\"keydown\", handler, true);\n return () => window.removeEventListener(\"keydown\", handler, true);\n }, [open, closeOnEsc, setOpen]);\n\n const value = useMemo<ModalCtxT>(\n () => ({ open, setOpen, lockScroll, closeOnEsc }),\n [open, setOpen, lockScroll, closeOnEsc]\n );\n\n return <ModalCtx.Provider value={value}>{children}</ModalCtx.Provider>;\n};\n\n/* ───────── trigger ───────── */\nexport type ModalTriggerProps = Omit<React.HTMLAttributes<HTMLElement>, \"style\"> & {\n asChild?: boolean;\n css?: Interpolation<Theme>;\n};\n\nexport const ModalTrigger: React.ForwardRefExoticComponent<\n ModalTriggerProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, ModalTriggerProps>(\n ({ asChild = true, children, className, css: userCss, ...rest }, ref) => {\n const { setOpen } = useModalCtx();\n const canAsChild = !!asChild && React.isValidElement(children);\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n if (canAsChild) {\n const onClick = (children as React.ReactElement).props.onClick as\n | ((ev: React.MouseEvent<HTMLElement>) => void)\n | undefined;\n onClick?.(e);\n }\n (rest.onClick as ((ev: React.MouseEvent<HTMLElement>) => void) | undefined)?.(e);\n if (!e.defaultPrevented) setOpen(true);\n },\n [canAsChild, children, rest.onClick, setOpen]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n if (canAsChild) {\n const onKeyDown = (children as React.ReactElement).props.onKeyDown as\n | ((ev: React.KeyboardEvent<HTMLElement>) => void)\n | undefined;\n onKeyDown?.(e);\n }\n (rest.onKeyDown as ((ev: React.KeyboardEvent<HTMLElement>) => void) | undefined)?.(e);\n },\n [canAsChild, children, rest.onKeyDown, setOpen]\n );\n\n if (canAsChild) {\n const child = children as React.ReactElement;\n const childCss = (child.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(child, {\n ref: mergeRefs(ref, (child as any).ref),\n className: [child.props.className, className].filter(Boolean).join(\" \") || undefined,\n css: [childCss, userCss].filter(Boolean),\n \"aria-haspopup\": \"dialog\",\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...rest,\n });\n }\n\n return (\n <button\n ref={ref as React.Ref<HTMLButtonElement>}\n type=\"button\"\n className={className}\n css={userCss}\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </button>\n );\n }\n);\nModalTrigger.displayName = \"ModalTrigger\";\n\n/* ───────── content ───────── */\nexport type ModalContentProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: \"inset\" | \"full\";\n width?: number | string;\n height?: number | string;\n radius?: number | string;\n padding?: number | string;\n backdrop?: boolean;\n backdropBlur?: boolean;\n backdropBlurDepth?: number;\n closeOnBackdropClick?: boolean;\n transitionVariant?: \"fade\" | \"slide\" | \"grow\" | \"none\";\n direction?: \"up\" | \"down\" | \"left\" | \"right\";\n transitionDuration?: number;\n containerCss?: Interpolation<Theme>;\n backdropCss?: Interpolation<Theme>;\n className?: string;\n};\n\nexport const ModalContent: React.ForwardRefExoticComponent<\n ModalContentProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, ModalContentProps>(\n (\n {\n children,\n variant = \"inset\",\n width = 500,\n height = \"auto\",\n radius = \"lg\",\n padding = \"lg\",\n backdrop = true,\n backdropBlur = true,\n backdropBlurDepth = 5,\n closeOnBackdropClick = true,\n transitionVariant = \"fade\",\n direction = \"up\",\n transitionDuration = 300,\n containerCss,\n backdropCss,\n className,\n ...rest\n },\n ref\n ) => {\n const { open, setOpen, lockScroll } = useModalCtx();\n\n const frameCss = css({\n width: toLen(width),\n height: toLen(height),\n maxWidth: variant === \"inset\" ? \"100%\" : undefined,\n maxHeight: variant === \"inset\" ? \"100%\" : undefined,\n });\n\n const panel = (\n <Container\n role=\"dialog\"\n aria-modal=\"true\"\n className={[\"plainframe-ui-modal\", className || \"\"].join(\" \").trim()}\n padding={padding}\n radius={radius}\n variant=\"panel\"\n css={[frameCss, containerCss]}\n ref={ref}\n {...rest}\n >\n {children}\n </Container>\n );\n\n const animated =\n transitionVariant === \"none\" ? (\n panel\n ) : transitionVariant === \"slide\" ? (\n <Slide on={open} direction={direction} duration={transitionDuration}>\n {panel}\n </Slide>\n ) : transitionVariant === \"grow\" ? (\n <Grow on={open} duration={transitionDuration}>\n {panel}\n </Grow>\n ) : (\n <Fade on={open} duration={transitionDuration}>\n {panel}\n </Fade>\n );\n\n if (!backdrop) return <>{animated}</>;\n\n const alignCss = css(\n variant === \"full\"\n ? { alignItems: \"start\", justifyItems: \"start\", justifyContent: \"start\" }\n : { alignItems: \"center\", justifyItems: \"center\", justifyContent: \"center\" }\n );\n\n return (\n <Backdrop\n on={open}\n blur={backdropBlur}\n blurDepth={backdropBlurDepth}\n onClickAway={closeOnBackdropClick ? () => setOpen(false) : undefined}\n css={[alignCss, backdropCss].filter(Boolean)}\n lockScroll={lockScroll}\n >\n {animated}\n </Backdrop>\n );\n }\n);\nModalContent.displayName = \"ModalContent\";\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype Direction = \"left\" | \"right\" | \"up\" | \"down\";\n\ntype SlideProps = {\n children: ReactNode;\n direction?: Direction;\n duration?: number;\n delay?: number;\n on: boolean;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n distance?: number | string;\n};\n\nconst toLen = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Slide: React.FC<SlideProps> = ({\n children,\n direction = \"up\",\n duration = 450,\n delay = 0,\n on = false,\n onAnimationEnd,\n asChild = true,\n className,\n distance,\n}) => {\n const defaultDist =\n direction === \"left\" || direction === \"right\" ? \"100vw\" : \"100vh\";\n const dist = toLen(distance, defaultDist);\n\n const offX = direction === \"left\" ? `-${dist}` : direction === \"right\" ? dist : \"0\";\n const offY = direction === \"up\" ? dist : direction === \"down\" ? `-${dist}` : \"0\";\n\n const baseStyles: CSSProperties = {\n transform: on ? \"translate3d(0,0,0)\" : `translate3d(${offX}, ${offY}, 0)`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n };\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-slide\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles as any);\n\n return (\n <div\n className={[\"plainframe-ui-transition-slide\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useMemo, useState, useCallback } from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { ChevronFirst, ChevronLast, ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\ntype Size = \"xs\" | \"sm\" | \"md\";\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type PaginationProps = {\n count: number;\n page?: number;\n defaultPage?: number;\n onChange?: (page: number) => void;\n siblingCount?: number;\n boundaryCount?: number;\n disabled?: boolean;\n showFirstLast?: boolean;\n loop?: boolean;\n size?: Size;\n variant?: Variant;\n gap?: number;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nconst sizeTokens: Record<\n Size,\n { h: number; px: number; font: number; radius: number; gap: number; icon: number }\n> = {\n xs: { h: 22, px: 8, font: 11, radius: 8, gap: 4, icon: 12 },\n sm: { h: 28, px: 10, font: 13, radius: 9, gap: 6, icon: 14 },\n md: { h: 34, px: 12, font: 14, radius: 10, gap: 8, icon: 16 },\n};\n\nexport const Pagination: React.FC<PaginationProps> = ({\n count,\n page,\n defaultPage = 1,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n disabled = false,\n showFirstLast = false,\n loop = false,\n size = \"sm\",\n variant = \"subtle\",\n gap,\n className,\n css: cssOverride,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const isControlled = page !== undefined;\n const [inner, setInner] = useState(defaultPage);\n const normCount = Math.max(1, count);\n const current = clamp(isControlled ? (page as number) : inner, 1, normCount);\n\n const setPage = useCallback(\n (p: number) => {\n const next = clamp(p, 1, normCount);\n if (!isControlled) setInner(next);\n onChange?.(next);\n },\n [isControlled, normCount, onChange]\n );\n\n const items = useMemo(\n () => buildItems({ count: normCount, page: current, siblingCount, boundaryCount }),\n [normCount, current, siblingCount, boundaryCount]\n );\n\n const sizes = sizeTokens[size];\n\n const accent = theme.palette?.primary?.[600];\n const borderCol = theme.surface?.border;\n const hoverBg =\n variant === \"subtle\"\n ? theme.surface.subtleHover\n : variant === \"ghost\"\n ? theme.surface?.subtleBg\n : theme.surface.panelHover;\n const txt = theme.text?.primary ?? \"#111\";\n const containerBg = variant === \"subtle\" ? theme.surface?.subtleBg : \"transparent\";\n\n const containerCss = css(\n {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: gap ?? sizes.gap,\n flexWrap: \"wrap\",\n borderRadius: theme.radius?.md,\n background: containerBg,\n padding: variant === \"subtle\" ? theme.spacing.xs : 0,\n userSelect: \"none\",\n },\n ...(Array.isArray(cssOverride) ? cssOverride : cssOverride ? [cssOverride] : [])\n );\n\n const baseBtn = css({\n minWidth: sizes.h,\n height: sizes.h,\n padding: `0 ${sizes.px}px`,\n borderRadius: sizes.radius,\n fontSize: sizes.font,\n lineHeight: 1,\n border: \"1px solid transparent\",\n background: \"transparent\",\n color: txt,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n transition: \"all .16s ease !important\",\n outline: \"1.5px solid transparent\",\n \"&[aria-disabled='true']\": { opacity: 0.55, pointerEvents: \"none\", cursor: \"not-allowed\" },\n fontWeight: 600,\n });\n\n const iconSquareBtn = css({\n width: sizes.h,\n minWidth: sizes.h,\n height: sizes.h,\n padding: 0,\n });\n\n const btnCss = (selected = false) =>\n css([\n baseBtn,\n focusRing({color: selected ? \"primary\" : \"neutral\"}),\n variant === \"outlined\"\n ? selected\n ? { background: accent, color: theme.text.onColors.primary, borderColor: accent }\n : {\n background: \"transparent\",\n borderColor: borderCol,\n \":hover\": { background: hoverBg },\n }\n : variant === \"ghost\"\n ? selected\n ? { background: accent, color: theme.text.onColors.primary }\n : { \":hover\": { background: hoverBg } }\n : selected\n ? { background: accent, color: theme.text.onColors.primary, borderColor: accent }\n : { \":hover\": { background: hoverBg } },\n ]);\n\n const goFirst = useCallback(() => setPage(1), [setPage]);\n const goLast = useCallback(() => setPage(normCount), [setPage, normCount]);\n const goPrev = useCallback(() => {\n if (current === 1) {\n if (loop) setPage(normCount);\n } else setPage(current - 1);\n }, [current, loop, normCount, setPage]);\n const goNext = useCallback(() => {\n if (current === normCount) {\n if (loop) setPage(1);\n } else setPage(current + 1);\n }, [current, loop, normCount, setPage]);\n\n const prevDisabled = disabled || (current === 1 && !loop);\n const nextDisabled = disabled || (current === normCount && !loop);\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={[\"plainframe-ui-pagination\", className || \"\"].join(\" \").trim()}\n css={containerCss}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n goPrev();\n }\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n goNext();\n }\n if (e.key === \"Home\") {\n e.preventDefault();\n goFirst();\n }\n if (e.key === \"End\") {\n e.preventDefault();\n goLast();\n }\n }}\n >\n {showFirstLast && (\n <button\n className=\"plainframe-ui-pagination-first-button\"\n type=\"button\"\n aria-label=\"First page\"\n aria-disabled={prevDisabled}\n disabled={prevDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goFirst}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronFirst strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n )}\n\n <button\n className=\"plainframe-ui-pagination-previous-button\"\n type=\"button\"\n aria-label=\"Previous page\"\n aria-disabled={prevDisabled}\n disabled={prevDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goPrev}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronLeft strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n\n {items.map((it, idx) =>\n typeof it === \"number\" ? (\n <button\n className=\"plainframe-ui-pagination-page-button\"\n key={it}\n type=\"button\"\n aria-label={it === current ? `Page ${it}, current page` : `Go to page ${it}`}\n aria-current={it === current ? \"page\" : undefined}\n css={btnCss(it === current)}\n onClick={() => setPage(it)}\n >\n {it}\n </button>\n ) : (\n <span\n className=\"plainframe-ui-pagination-ellipsis\"\n key={`e${idx}`}\n aria-hidden\n css={css([\n baseBtn,\n focusRing(),\n { borderColor: \"transparent\", cursor: \"default\", opacity: 0.8, padding: 0, minWidth: sizes.h },\n ])}\n >\n …\n </span>\n )\n )}\n\n <button\n className=\"plainframe-ui-pagination-next-button\"\n type=\"button\"\n aria-label=\"Next page\"\n aria-disabled={nextDisabled}\n disabled={nextDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goNext}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronRight strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n\n {showFirstLast && (\n <button\n className=\"plainframe-ui-pagination-last-button\"\n type=\"button\"\n aria-label=\"Last page\"\n aria-disabled={nextDisabled}\n disabled={nextDisabled}\n css={[btnCss(false), iconSquareBtn]}\n onClick={goLast}\n style={{ backgroundColor: variant === \"subtle\" ? theme.surface?.panelBg : undefined }}\n >\n <ChevronLast strokeWidth={3} css={{ width: sizes.icon, height: sizes.icon }} />\n </button>\n )}\n </nav>\n );\n};\n\nfunction clamp(v: number, lo: number, hi: number) {\n return Math.max(lo, Math.min(hi, v));\n}\n\nfunction buildItems({\n count,\n page,\n siblingCount,\n boundaryCount,\n}: {\n count: number;\n page: number;\n siblingCount: number;\n boundaryCount: number;\n}): Array<number | \"ellipsis\"> {\n if (count <= 0) return [1];\n const maxVisibleWithoutEllipses = 2 * boundaryCount + 2 * siblingCount + 3;\n if (count <= maxVisibleWithoutEllipses) return range(1, count);\n\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = clamp(\n page - siblingCount,\n boundaryCount + 2,\n Math.max(boundaryCount + 2, count - boundaryCount - 2 * siblingCount - 1)\n );\n const siblingsEnd = clamp(\n page + siblingCount,\n Math.min(boundaryCount + 2 + 2 * siblingCount, count - boundaryCount - 1),\n count - boundaryCount - 1\n );\n\n const out: Array<number | \"ellipsis\"> = [];\n const push = (v: number | \"ellipsis\") => {\n const last = out[out.length - 1];\n if (last === v) return;\n if (last === \"ellipsis\" && v === \"ellipsis\") return;\n out.push(v);\n };\n\n startPages.forEach(push);\n if (siblingsStart > boundaryCount + 2) push(\"ellipsis\");\n else if (boundaryCount + 1 < siblingsStart) push(boundaryCount + 1);\n\n range(siblingsStart, siblingsEnd).forEach(push);\n\n if (siblingsEnd < count - boundaryCount - 1) push(\"ellipsis\");\n else if (count - boundaryCount > siblingsEnd) push(count - boundaryCount);\n\n endPages.forEach(push);\n\n return out;\n}\n\nfunction range(a: number, b: number) {\n if (b < a) return [] as number[];\n const r: number[] = [];\n for (let i = a; i <= b; i++) r.push(i);\n return r;\n}\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useState,\n useRef,\n useMemo,\n useEffect,\n forwardRef,\n createContext,\n useContext,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport {\n useFloating,\n autoUpdate,\n offset as offsetMw,\n flip,\n shift,\n useDismiss,\n useRole,\n useInteractions,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\n\n/* ───────── types ───────── */\n\ntype WithCss = { css?: Interpolation<Theme> };\ntype Side = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype Align = \"start\" | \"center\" | \"end\";\n\nexport type AnchorOrigin = {\n vertical: \"top\" | \"bottom\" | \"center\";\n horizontal: \"left\" | \"right\" | \"center\";\n};\n\nexport type PopoverRootProps = {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n triggerOn?: \"click\" | \"hover\";\n lockScroll?: boolean;\n children: React.ReactNode;\n};\n\nexport type PopoverTriggerProps = WithCss & {\n asChild?: boolean;\n children: React.ReactElement;\n};\n\nexport type PopoverAnchorProps = WithCss & {\n asChild?: boolean;\n width?: number | string;\n children: React.ReactElement;\n};\n\nexport type PopoverContentProps = WithCss &\n Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n anchorOrigin?: AnchorOrigin;\n sideOffset?: number;\n alignOffset?: number;\n collisionPadding?: number | Partial<Record<Side, number>>;\n unstyled?: boolean;\n width?: string | number;\n height?: string | number;\n padding?: string | number;\n paddingX?: string | number;\n paddingY?: string | number;\n radius?: string | number;\n };\n\n/* ───────── ctx ───────── */\n\ntype Ctx = {\n open: boolean;\n setOpen: (v: boolean) => void;\n triggerOn: \"click\" | \"hover\";\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n scheduleClose: (ms?: number) => void;\n cancelClose: () => void;\n};\n\nconst PopoverCtx = createContext<Ctx | null>(null);\nconst usePopover = (): Ctx => {\n const v = useContext(PopoverCtx);\n if (!v) throw new Error(\"Popover components must be used inside <Popover>.\");\n return v;\n};\n\n/* ───────── utils ───────── */\n\nfunction setRef<T>(ref: React.Ref<T> | undefined, value: T | null): void {\n if (!ref) return;\n if (typeof ref === \"function\") (ref as (v: T | null) => void)(value);\n else (ref as unknown as { current: T | null }).current = value;\n}\n\nexport const mergeRefs: <T>(\n ...refs: Array<React.Ref<T> | undefined>\n) => (node: T | null) => void =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T | null) => {\n for (const r of refs) setRef(r, node);\n };\n\nconst toCssSize = (v?: string | number): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst useBodyScrollLock = (locked: boolean): void => {\n useEffect(() => {\n if (!locked) return;\n if (typeof document === \"undefined\" || typeof window === \"undefined\") return;\n const body = document.body;\n const prevOverflow = body.style.overflow;\n const prevPaddingRight = body.style.paddingRight;\n const scrollbar = window.innerWidth - document.documentElement.clientWidth;\n const computedPad = parseFloat(getComputedStyle(body).paddingRight || \"0\");\n body.style.overflow = \"hidden\";\n if (scrollbar > 0) body.style.paddingRight = `${computedPad + scrollbar}px`;\n return () => {\n body.style.overflow = prevOverflow;\n body.style.paddingRight = prevPaddingRight;\n };\n }, [locked]);\n};\n\nconst resolveToken = (\n token: string | number | undefined,\n scale: Record<string, string | number> | undefined\n): string | undefined => {\n if (token == null) return undefined;\n if (typeof token === \"number\") return `${token}px`;\n if (typeof token === \"string\" && scale && token in scale) {\n const v = scale[token];\n return typeof v === \"number\" ? `${v}px` : String(v);\n }\n return token;\n};\n\n/* ───────── root ───────── */\n\nexport const Popover: React.FC<PopoverRootProps> = ({\n open: controlled,\n defaultOpen,\n onOpenChange,\n triggerOn = \"click\",\n lockScroll = true,\n children,\n}) => {\n const [uncontrolled, setUncontrolled] = useState<boolean>(!!defaultOpen);\n const open = controlled ?? uncontrolled;\n const setOpen = (v: boolean): void => {\n if (controlled === undefined) setUncontrolled(v);\n onOpenChange?.(v);\n };\n\n const referenceRef = useRef<HTMLElement | null>(null);\n const closeTimerRef = useRef<number | null>(null);\n\n const scheduleClose = (ms = 120): void => {\n if (closeTimerRef.current != null) window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setOpen(false), ms);\n };\n const cancelClose = (): void => {\n if (closeTimerRef.current == null) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n };\n\n useBodyScrollLock(lockScroll && open);\n\n const value = useMemo<Ctx>(\n () => ({ open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose }),\n [open, triggerOn]\n );\n\n return <PopoverCtx.Provider value={value}>{children}</PopoverCtx.Provider>;\n};\n\n/* ───────── trigger ───────── */\n\nexport const PopoverTrigger: React.FC<\n PopoverTriggerProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, PopoverTriggerProps>(({ asChild = true, children, css: userCss }, ref) => {\n const { open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose } = usePopover();\n const onlyChild = React.Children.only(children) as React.ReactElement;\n const childProps = (onlyChild.props || {}) as Record<string, unknown>;\n\n const mergedRef = mergeRefs<HTMLElement | null>(\n referenceRef as unknown as React.Ref<HTMLElement | null>,\n ref as React.Ref<HTMLElement | null>,\n (onlyChild as any).ref as React.Ref<HTMLElement | null> | undefined\n );\n\n const triggerProps =\n triggerOn === \"click\"\n ? {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n setOpen(!open);\n (childProps.onClick as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n }\n : {\n onMouseEnter: (e: React.MouseEvent) => {\n cancelClose();\n if (!open) setOpen(true);\n (childProps.onMouseEnter as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n scheduleClose();\n (childProps.onMouseLeave as ((e: React.MouseEvent) => void) | undefined)?.(e);\n },\n };\n\n const a11y = { \"aria-haspopup\": \"dialog\", \"aria-expanded\": open };\n\n if (asChild) {\n const childCss = (onlyChild.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(onlyChild, {\n ref: mergedRef,\n css: [childCss, userCss].filter(Boolean),\n ...triggerProps,\n ...a11y,\n });\n }\n\n return React.createElement(\"button\", {\n ref: mergedRef,\n type: \"button\",\n css: [userCss],\n ...triggerProps,\n ...a11y,\n children: onlyChild,\n });\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\n/* ───────── anchor ───────── */\n\nexport const PopoverAnchor: React.FC<\n PopoverAnchorProps & React.RefAttributes<HTMLElement>\n> = forwardRef<HTMLElement, PopoverAnchorProps>(({ asChild = true, width, css: userCss, children }, ref) => {\n const { referenceRef } = usePopover();\n const onlyChild = React.Children.only(children) as React.ReactElement;\n\n const mergedRef = mergeRefs<HTMLElement | null>(\n referenceRef as unknown as React.Ref<HTMLElement | null>,\n ref as React.Ref<HTMLElement | null>,\n (onlyChild as any).ref as React.Ref<HTMLElement | null> | undefined\n );\n\n if (asChild) {\n const childCss = (onlyChild.props as any)?.css as Interpolation<Theme> | undefined;\n return React.cloneElement(onlyChild, {\n ref: mergedRef,\n css: [childCss, userCss].filter(Boolean),\n });\n }\n\n const wrapperCss = css({\n display: \"inline-block\",\n width: toCssSize(width),\n verticalAlign: \"middle\",\n ...(userCss as object),\n });\n\n return (\n <span ref={mergedRef as unknown as React.Ref<HTMLSpanElement>} css={wrapperCss}>\n {onlyChild}\n </span>\n );\n});\nPopoverAnchor.displayName = \"PopoverAnchor\";\n\n/* ───────── content ───────── */\n\nfunction anchorToPlacement(ao?: AnchorOrigin): Placement {\n const v = ao?.vertical ?? \"bottom\";\n const h = ao?.horizontal ?? \"center\";\n\n if (v === \"top\" || v === \"bottom\") {\n const side = v;\n const align: Align = h === \"left\" ? \"start\" : h === \"right\" ? \"end\" : \"center\";\n return (align === \"center\" ? side : `${side}-${align}`) as Placement;\n }\n\n const side: Side = h === \"left\" ? \"left\" : \"right\";\n const align: Align = \"center\";\n return (align === \"center\" ? side : `${side}-${align}`) as Placement;\n}\n\nexport const PopoverContent: React.FC<\n PopoverContentProps & React.RefAttributes<HTMLDivElement>\n> = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" },\n sideOffset = 8,\n alignOffset = 0,\n collisionPadding = 8,\n unstyled = false,\n children,\n width,\n height,\n padding,\n paddingX,\n paddingY,\n radius = \"lg\",\n css: userCss,\n ...rest\n },\n ref\n ) => {\n const { open, setOpen, triggerOn, referenceRef, scheduleClose, cancelClose } = usePopover();\n const theme = usePlainframeUITheme();\n\n const placement = anchorToPlacement(anchorOrigin);\n\n const { refs, x, y, strategy, context } = useFloating({\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n placement,\n strategy: \"fixed\",\n middleware: [\n offsetMw({ mainAxis: sideOffset, crossAxis: alignOffset }),\n flip({ padding: collisionPadding as number | Partial<Record<Side, number>> }),\n shift({ padding: collisionPadding as number | Partial<Record<Side, number>> }),\n ],\n });\n\n useEffect(() => {\n if (referenceRef.current) refs.setReference(referenceRef.current);\n }, [refs, referenceRef]);\n\n const dismiss = useDismiss(context, { outsidePressEvent: \"pointerdown\", escapeKey: true });\n const role = useRole(context, { role: \"dialog\" });\n const { getFloatingProps } = useInteractions([dismiss, role]);\n\n const [sideMain] = context.placement.split(\"-\") as [Side, Align?];\n const resolvedSide = sideMain;\n\n const transformOrigin = `${resolvedSide === \"left\" ? \"right\" : resolvedSide === \"right\" ? \"left\" : \"center\"} ${\n resolvedSide === \"top\" ? \"bottom\" : resolvedSide === \"bottom\" ? \"top\" : \"center\"\n }`;\n\n const delta = 8;\n const initialOffset =\n resolvedSide === \"top\"\n ? { y: delta }\n : resolvedSide === \"bottom\"\n ? { y: -delta }\n : resolvedSide === \"left\"\n ? { x: delta }\n : { x: -delta };\n\n const motionProps = {\n initial: { opacity: 0, scale: 0.96, ...initialOffset },\n animate: { opacity: 1, scale: 1, x: 0, y: 0 },\n exit: { opacity: 0, scale: 0.96, ...initialOffset },\n transition: {\n scale: { type: \"spring\", stiffness: 520, damping: 32, mass: 0.5 },\n x: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 30, mass: 0.6 },\n opacity: { duration: 0.16, ease: \"linear\" },\n },\n } as const;\n\n const panelBg = theme.surface.panelBg;\n const panelFg = theme.text.primary;\n const panelBorder = `${theme.componentHeights.border} solid ${theme.surface.border}`;\n\n const resolvedPad = resolveToken(padding, theme.spacing as Record<string, string | number>);\n const resolvedPadX = resolveToken(paddingX, theme.spacing as Record<string, string | number>);\n const resolvedPadY = resolveToken(paddingY, theme.spacing as Record<string, string | number>);\n\n const applyPad: React.CSSProperties = {};\n if (resolvedPad) applyPad.padding = resolvedPad;\n if (resolvedPadX) (applyPad as any).paddingInline = resolvedPadX;\n if (resolvedPadY) (applyPad as any).paddingBlock = resolvedPadY;\n\n const resolvedRadius =\n resolveToken(radius as string | number | undefined, theme.radius as Record<string, string | number>) ??\n (theme.radius.md as unknown as string);\n\n const panelShadow = \"0 8px 32px rgba(0,0,0,.05), 0 2px 8px rgba(0,0,0,.02)\";\n\n const basePos = css({\n position: strategy as React.CSSProperties[\"position\"],\n top: (y ?? 0) as number,\n left: (x ?? 0) as number,\n zIndex: 1000,\n transformOrigin,\n pointerEvents: \"auto\",\n display: \"inline-flex\",\n flexDirection: \"column\",\n width: toCssSize(width) ?? \"fit-content\",\n height: toCssSize(height) ?? \"fit-content\",\n boxSizing: \"border-box\",\n willChange: \"opacity, transform\",\n });\n\n const visualsCss = unstyled\n ? css({})\n : css({\n background: panelBg,\n color: panelFg,\n border: panelBorder,\n borderRadius: resolvedRadius,\n boxShadow: panelShadow,\n ...applyPad,\n ...(applyPad.padding || (applyPad as any).paddingInline || (applyPad as any).paddingBlock\n ? {}\n : {\n padding:\n typeof theme.spacing?.sm === \"number\"\n ? `${theme.spacing.sm}px ${theme.spacing.md}px`\n : `${(theme.spacing as any)?.sm ?? \"0.5rem\"} ${(theme.spacing as any)?.md ?? \"1rem\"}`,\n }),\n });\n\n const hoverHandlers =\n triggerOn === \"hover\"\n ? {\n onMouseEnter: cancelClose as React.MouseEventHandler<HTMLDivElement>,\n onMouseLeave: () => scheduleClose(),\n }\n : {};\n\n const mergedRef = mergeRefs<HTMLDivElement | null>(\n refs.setFloating as unknown as React.Ref<HTMLDivElement | null>,\n ref as React.Ref<HTMLDivElement | null>\n );\n\n const node = (\n <motion.div\n className=\"plainframe-ui-popover\"\n {...getFloatingProps({ ...rest, ref: mergedRef, ...hoverHandlers })}\n {...motionProps}\n css={[basePos, visualsCss, userCss]}\n >\n {children}\n </motion.div>\n );\n\n return (\n <FloatingPortal>\n <AnimatePresence>{open ? node : null}</AnimatePresence>\n </FloatingPortal>\n );\n }\n);\nPopoverContent.displayName = \"PopoverContent\";\n\n/* ───────── hook ───────── */\n\nexport const usePopoverContext: () => {\n open: boolean;\n close: () => void;\n setOpen: (v: boolean) => void;\n} = () => {\n const ctx = usePopover();\n return { open: ctx.open, close: () => ctx.setOpen(false), setOpen: ctx.setOpen };\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype QuoteVariant = \"solid\" | \"dashed\";\ntype Direction = \"left\" | \"right\";\n\nexport type QuoteProps = {\n children?: React.ReactNode;\n direction?: Direction;\n width?: string | number;\n variant?: QuoteVariant;\n className?: string;\n css?: Interpolation<Theme>;\n as?: keyof JSX.IntrinsicElements;\n};\n\nconst toCssSize = (v?: string | number, fb?: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nexport const Quote: React.FC<QuoteProps> = ({\n children,\n direction = \"left\",\n width,\n variant = \"solid\",\n className,\n css: userCss,\n as: Tag = \"div\",\n}) => {\n const theme = usePlainframeUITheme();\n const borderColor = theme.surface.border;\n\n const root = css([\n {\n display: \"inline-block\",\n boxSizing: \"border-box\",\n maxWidth: toCssSize(width, \"fit-content\"),\n width: \"100%\",\n padding: `0 ${theme.spacing.md}`,\n borderLeft:\n direction === \"left\"\n ? `3px ${variant === \"dashed\" ? \"dashed\" : \"solid\"} ${borderColor}`\n : \"none\",\n borderRight:\n direction === \"right\"\n ? `3px ${variant === \"dashed\" ? \"dashed\" : \"solid\"} ${borderColor}`\n : \"none\",\n },\n userCss as CSSObject,\n ]);\n\n return (\n <Tag className={className ?? \"plainframe-ui-quote\"} css={root}>\n {children}\n </Tag>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Theme } from \"@emotion/react\";\n\ntype Direction = \"horizontal\" | \"vertical\";\ntype Variant = \"filled\" | \"outlined\" | \"soft\";\ntype HV = \"left\" | \"center\" | \"right\" | \"top\" | \"bottom\";\n\nexport type RadioGroupProps = {\n value?: string | number;\n defaultValue?: string | number;\n onChange?: (value: string | number) => void;\n disabled?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n direction?: Direction;\n variant?: Variant;\n className?: string;\n children: React.ReactNode;\n anchorOrigin?: {\n horizontal?: Extract<HV, \"left\" | \"center\" | \"right\">;\n vertical?: Extract<HV, \"top\" | \"center\" | \"bottom\">;\n };\n css?: Interpolation<Theme>;\n};\n\nexport type RadioItemProps = {\n value: string | number;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n};\n\ntype RegistryItem = { ref: HTMLButtonElement | null; value: string | number; disabled: boolean };\n\ntype Ctx = {\n selected: string | number | undefined;\n setSelected: (v: string | number) => void;\n disabled: boolean;\n size: \"sm\" | \"md\" | \"lg\";\n direction: Direction;\n variant: Variant;\n register: (item: RegistryItem) => number;\n update: (index: number, item: Partial<RegistryItem>) => void;\n moveFocusBy: (currentIndex: number, delta: number) => void;\n moveToEdge: (edge: \"first\" | \"last\") => void;\n focusValue: string | number | undefined;\n theme: ReturnType<typeof usePlainframeUITheme>;\n anchorOrigin: Required<NonNullable<RadioGroupProps[\"anchorOrigin\"]>>;\n};\n\nconst RadioCtx = createContext<Ctx | null>(null);\nconst useRadioCtx = () => {\n const ctx = useContext(RadioCtx);\n if (!ctx) throw new Error(\"RadioItem must be used within a RadioGroup\");\n return ctx;\n};\n\nconst normalizeOrigin = (\n o?: RadioGroupProps[\"anchorOrigin\"]\n): Required<NonNullable<RadioGroupProps[\"anchorOrigin\"]>> => {\n const h = o?.horizontal ?? \"left\";\n const v = o?.vertical ?? \"center\";\n if (h === \"center\" && v === \"center\") return { horizontal: \"left\", vertical: \"center\" };\n return { horizontal: h, vertical: v };\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n value,\n defaultValue,\n onChange,\n disabled = false,\n size = \"md\",\n direction = \"horizontal\",\n variant = \"filled\",\n className,\n children,\n anchorOrigin,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n const isControlled = value !== undefined && onChange !== undefined;\n const [internalValue, setInternalValue] = useState<string | number | undefined>(defaultValue);\n const selected = (isControlled ? value : internalValue) as string | number | undefined;\n\n const registry = useRef<RegistryItem[]>([]);\n const [ver, setVer] = useState(0);\n const bump = () => setVer((v) => v + 1);\n\n const setSelected = useCallback(\n (v: string | number) => {\n if (!isControlled) setInternalValue(v);\n onChange?.(v);\n },\n [isControlled, onChange]\n );\n\n const register = useCallback((item: RegistryItem) => {\n registry.current.push(item);\n bump();\n return registry.current.length - 1;\n }, []);\n\n const update = useCallback((index: number, item: Partial<RegistryItem>) => {\n const curr = registry.current[index];\n if (!curr) return;\n registry.current[index] = { ...curr, ...item };\n bump();\n }, []);\n\n const enabledIndexes = () =>\n registry.current\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => it.ref && !it.disabled)\n .map(({ i }) => i);\n\n const moveFocusBy = useCallback(\n (currentIndex: number, delta: number) => {\n const enabled = enabledIndexes();\n if (!enabled.length) return;\n const pos = Math.max(0, enabled.indexOf(currentIndex));\n const next = enabled[(pos + delta + enabled.length) % enabled.length];\n const nextRef = registry.current[next]?.ref;\n if (nextRef) {\n nextRef.focus();\n const nextVal = registry.current[next]?.value;\n if (nextVal !== undefined) setSelected(nextVal);\n }\n },\n [setSelected]\n );\n\n const moveToEdge = useCallback(\n (edge: \"first\" | \"last\") => {\n const enabled = enabledIndexes();\n if (!enabled.length) return;\n const next = edge === \"first\" ? enabled[0] : enabled[enabled.length - 1];\n const nextRef = registry.current[next]?.ref;\n if (nextRef) {\n nextRef.focus();\n const nextVal = registry.current[next]?.value;\n if (nextVal !== undefined) setSelected(nextVal);\n }\n },\n [setSelected]\n );\n\n const focusValue: string | number | undefined = useMemo(() => {\n const enabledItems = registry.current.filter((it) => it.ref && !it.disabled);\n if (!enabledItems.length) return undefined;\n const selectedEnabled = enabledItems.some((it) => it.value === selected);\n return selectedEnabled ? selected : enabledItems[0]?.value;\n }, [selected, ver]);\n\n const ctx: Ctx = useMemo(\n () => ({\n selected,\n setSelected,\n disabled,\n size,\n direction,\n variant,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n focusValue,\n theme,\n anchorOrigin: normalizeOrigin(anchorOrigin),\n }),\n [\n selected,\n setSelected,\n disabled,\n size,\n direction,\n variant,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n focusValue,\n theme,\n anchorOrigin,\n ]\n );\n\n const rootCss = css({ width: \"fit-content\" });\n const rowCss = css({\n display: \"flex\",\n flexDirection: direction === \"vertical\" ? \"column\" : \"row\",\n gap: theme.spacing.sm,\n width: \"fit-content\",\n alignItems: direction === \"vertical\" ? \"stretch\" : \"center\",\n });\n\n return (\n <div className={className ?? \"plainframe-ui-radio-group\"} css={[rootCss, userCss as CSSObject]}>\n <div\n className=\"plainframe-ui-radio-row\"\n role=\"radiogroup\"\n aria-disabled={disabled || undefined}\n css={rowCss}\n >\n <RadioCtx.Provider value={ctx}>{children}</RadioCtx.Provider>\n </div>\n </div>\n );\n};\n\nexport const RadioItem: React.FC<RadioItemProps> = ({\n value,\n disabled = false,\n className,\n children,\n css: userCss,\n}) => {\n const {\n selected,\n setSelected,\n disabled: groupDisabled,\n size,\n register,\n update,\n moveFocusBy,\n moveToEdge,\n theme,\n variant,\n focusValue,\n anchorOrigin,\n } = useRadioCtx();\n\n const isDisabled = groupDisabled || disabled;\n const isChecked = selected === value;\n\n const sizeKey: \"sm\" | \"md\" | \"lg\" = ([\"sm\", \"md\", \"lg\"] as const).includes(size) ? size : \"md\";\n const diameter = sizeKey === \"sm\" ? 16 : sizeKey === \"lg\" ? 24 : 20;\n\n const sw = (shade: 50 | 100 | 300 | 600) => (theme.palette?.primary as any)?.[shade];\n const main = sw(600);\n const soft100 = sw(100);\n const neutral300 = theme.neutral[300];\n const stroke = theme.palette.primary[300];\n const onPrimary = theme.text.onColors?.primary ?? theme.neutral[0];\n\n // base circle states\n let circleBg = \"transparent\";\n let circleShadow: string | null = stroke;\n let dotColor = onPrimary;\n\n if (variant === \"soft\") {\n circleBg = soft100;\n circleShadow = null;\n dotColor = main;\n } else if (variant === \"outlined\") {\n circleBg = sw(50);\n circleShadow = stroke;\n dotColor = main;\n } else {\n circleBg = theme.neutral[200];\n circleShadow = \"transparent\";\n dotColor = onPrimary;\n }\n\n if (isChecked) {\n if (variant === \"outlined\") {\n circleBg = soft100;\n circleShadow = stroke;\n dotColor = main;\n } else if (variant === \"filled\") {\n circleBg = main;\n circleShadow = null;\n dotColor = onPrimary;\n } else {\n circleBg = soft100;\n circleShadow = null;\n dotColor = main;\n }\n }\n\n const hoverCircleBg = variant === \"filled\" ? neutral300 : variant === \"outlined\" ? theme.palette.primary[100] : theme.palette.primary[100];\n\n const btnRef = useRef<HTMLButtonElement | null>(null);\n const myIndex = useRef<number>(-1);\n\n useEffect(() => {\n myIndex.current = register({ ref: btnRef.current, value, disabled: !!isDisabled });\n }, [register]);\n\n useEffect(() => {\n update(myIndex.current, { ref: btnRef.current, value, disabled: !!isDisabled });\n }, [update, isDisabled, value]);\n\n const btnCss = css({\n border: \"none\",\n background: \"transparent\",\n display: \"inline-grid\",\n gridTemplateColumns: \"auto auto auto\",\n gridTemplateRows: \"auto auto auto\",\n columnGap: anchorOrigin.vertical === \"center\" ? theme.spacing.sm : 0,\n rowGap: anchorOrigin.vertical === \"center\" ? 0 : theme.spacing.xs,\n justifyItems: \"center\",\n alignItems: \"center\",\n opacity: isDisabled ? 0.5 : 1,\n borderRadius: theme.radius.md,\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n transition: \"transform .16s ease\",\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n padding: theme.spacing.sm,\n\n // Hover applies to the CIRCLE only if NOT checked\n \"&:hover .plainframe-ui-radio-circle-outer\":\n isDisabled || isChecked\n ? {}\n : {\n background: hoverCircleBg,\n boxShadow:\n variant === \"outlined\"\n ? `inset 0 0 0 ${theme.componentHeights.border} ${stroke}`\n : \"none\",\n },\n\n // Focus ring hint on circle\n \"&:focus-visible .plainframe-ui-radio-circle-outer\": {\n outline: \"none\",\n filter: \"brightness(1.06)\",\n },\n });\n\n const circleCss = css({\n width: diameter,\n height: diameter,\n minWidth: diameter,\n minHeight: diameter,\n borderRadius: theme.radius.full,\n background: circleBg,\n boxShadow: circleShadow ? `inset 0 0 0 ${theme.componentHeights.border} ${circleShadow}` : \"none\",\n transition: \"background-color .16s ease, box-shadow .16s ease, filter .16s ease\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n });\n\n const dotCss = css({\n width: isChecked ? diameter * 0.45 : 0,\n height: isChecked ? diameter * 0.45 : 0,\n borderRadius: theme.radius.full,\n background: isChecked ? dotColor : \"transparent\",\n transition: \"all 250ms cubic-bezier(.72,1.6,.32,1)\",\n transform: isChecked ? \"scale(1)\" : \"scale(0.6)\",\n opacity: isChecked ? 1 : 0,\n });\n\n const labelCss = css({\n gridColumn: 2,\n gridRow: 2,\n minWidth: 0,\n maxWidth: \"100%\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n textAlign: \"left\",\n });\n\n const pos = (() => {\n const h = anchorOrigin.horizontal;\n const v = anchorOrigin.vertical;\n if (v === \"center\") {\n return { col: h === \"right\" ? 3 : 1, row: 2 };\n }\n return { col: 2, row: v === \"top\" ? 1 : 3 };\n })();\n\n const isFocusable = !isDisabled && focusValue === value;\n const tabIndex = isFocusable ? 0 : -1;\n\n const focusRing = useFocusRing()\n\n return (\n <button\n ref={btnRef}\n className={className ?? \"plainframe-ui-radio-item\"}\n type=\"button\"\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled || undefined}\n disabled={isDisabled}\n tabIndex={tabIndex}\n onClick={() => {\n if (!isDisabled) setSelected(value);\n }}\n onKeyDown={(e) => {\n if (isDisabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setSelected(value);\n } else if (e.key === \"ArrowRight\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n moveFocusBy(myIndex.current, 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n moveFocusBy(myIndex.current, -1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n moveToEdge(\"first\");\n } else if (e.key === \"End\") {\n e.preventDefault();\n moveToEdge(\"last\");\n }\n }}\n css={[btnCss, focusRing({color: isChecked ? \"primary\" : \"neutral\"}), userCss as CSSObject]}\n >\n <span\n className=\"plainframe-ui-radio-circle-outer\"\n css={[\n circleCss,\n css({ gridColumn: pos.col, gridRow: pos.row }),\n ]}\n >\n <span className=\"plainframe-ui-radio-circle-dot\" css={dotCss} />\n </span>\n\n {children != null && (\n <span className=\"plainframe-ui-radio-label\" css={labelCss}>\n {children}\n </span>\n )}\n </button>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n isValidElement,\n cloneElement,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { css } from \"@emotion/react\";\n\ntype RotateProps = {\n children: ReactNode;\n duration?: number;\n delay?: number;\n on: boolean;\n initialAngle?: number;\n finalAngle?: number;\n onAnimationEnd?: () => void;\n asChild?: boolean;\n className?: string;\n};\n\nexport const Rotate: React.FC<RotateProps> = ({\n children,\n duration = 400,\n delay = 0,\n on = false,\n initialAngle = 360,\n finalAngle = 0,\n onAnimationEnd,\n asChild = true,\n className,\n}) => {\n const baseStyles = {\n transform: `rotate(${on ? finalAngle : initialAngle}deg)`,\n transition: `transform ${duration}ms ease ${delay}ms`,\n pointerEvents: on ? \"auto\" : \"none\",\n transformOrigin: \"center center\",\n willChange: \"transform\",\n backfaceVisibility: \"hidden\",\n } as const;\n\n const handleEnd =\n (prev?: (e: React.TransitionEvent<any>) => void) =>\n (e: React.TransitionEvent<any>) => {\n if (e.target === e.currentTarget && e.propertyName === \"transform\") {\n onAnimationEnd?.();\n }\n prev?.(e);\n };\n\n if (asChild && isValidElement(children)) {\n const child: any = children;\n const prevCss = child.props.css;\n const mergedCss = Array.isArray(prevCss)\n ? [...prevCss, baseStyles]\n : prevCss\n ? [prevCss, baseStyles]\n : [baseStyles];\n\n const mergedClassName = [\n \"plainframe-ui-transition-rotate\",\n child.props.className || \"\",\n className || \"\",\n ]\n .join(\" \")\n .trim();\n\n const prevOnTransitionEnd = child.props.onTransitionEnd as\n | ((e: React.TransitionEvent<any>) => void)\n | undefined;\n\n return cloneElement(child, {\n ...child.props,\n css: mergedCss,\n className: mergedClassName,\n onTransitionEnd: handleEnd(prevOnTransitionEnd),\n });\n }\n\n const styles = css(baseStyles);\n\n return (\n <div\n className={[\"plainframe-ui-transition-rotate\", className || \"\"]\n .join(\" \")\n .trim()}\n css={styles}\n onTransitionEnd={handleEnd()}\n >\n {children}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css as emCss, type Interpolation, type Theme, type CSSObject } from \"@emotion/react\";\nimport { ChevronsUpDown } from \"lucide-react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent } from \"./DropdownMenu\";\nimport { MenuRadioGroup } from \"./MenuItems\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\n/* ───────── types ───────── */\ntype Align = \"left\" | \"center\" | \"right\";\ntype Variant = \"subtle\" | \"outlined\" | \"ghost\";\n\nexport type SelectProps<T = unknown> = {\n /** optional controlled value(s); if omitted, trigger text is derived from child selection props */\n value?: T | T[];\n defaultValue?: T | T[]; // used only for deriving initial trigger text if children don’t expose selection yet\n onChange?: (value: T | T[]) => void; // not wired here; your MenuItem/MenuRadioGroup handle selection\n label?: string;\n placeholder?: string | React.ReactNode;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n disabled?: boolean;\n size?: \"sm\" | \"md\";\n variant?: Variant;\n fullWidth?: boolean;\n width?: number | string;\n menuAlign?: Align;\n menuWidth?: number | string;\n menuMaxHeight?: number | string;\n wrapperCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n triggerCss?: Interpolation<Theme>;\n menuCss?: Interpolation<Theme>;\n /** you pass real MenuItem / MenuRadioItem / MenuCheckboxItem (and optional MenuRadioGroup) here */\n children: React.ReactNode;\n className?: string;\n menuSize?: \"sm\" | \"md\";\n /** custom trigger renderer (receives the resolved label text or array of labels) */\n triggerRender?: (selected: string | string[] | undefined) => React.ReactNode;\n};\n\ntype AnyEl = React.ReactElement<any>;\n\n/* ───────── helpers ───────── */\n\nconst isEl = (n: unknown): n is AnyEl => React.isValidElement(n);\nconst nameOf = (el: AnyEl) =>\n ((el.type as any)?.displayName || (el.type as any)?.name || \"\") as string;\n\nconst toCss = (v?: number | string) =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\n/** pull a user-visible label from a Menu* item */\nconst labelFromItem = (el: AnyEl): string | undefined => {\n const p = el.props as Record<string, any>;\n if (typeof p.label === \"string\" || typeof p.label === \"number\") return String(p.label);\n const c = p.children;\n if (typeof c === \"string\" || typeof c === \"number\") return String(c);\n return undefined;\n};\n\n/** gather a flat list of candidate items and selection state from children */\nfunction scanChildrenForSelection<T = unknown>(\n children: React.ReactNode,\n controlled: T | T[] | undefined\n): {\n mode: \"radio\" | \"checkbox\" | \"menu\";\n selectedLabels: string[];\n} {\n const kids = React.Children.toArray(children).filter(isEl) as AnyEl[];\n\n // detect radio group first (authoritative single-select)\n const radioGroup = kids.find((k) => nameOf(k) === \"MenuRadioGroup\") as\n | (AnyEl & { props: { value?: T; children?: React.ReactNode } })\n | undefined;\n\n if (radioGroup) {\n const rv = (controlled as T) ?? (radioGroup.props.value as T | undefined);\n if (rv === undefined) return { mode: \"radio\", selectedLabels: [] };\n\n const radios = React.Children.toArray(radioGroup.props.children)\n .filter(isEl)\n .filter((c) => nameOf(c).includes(\"MenuRadioItem\")) as AnyEl[];\n\n const match = radios.find((r) => Object.is((r.props as any).value, rv));\n const label = match ? labelFromItem(match) : undefined;\n return { mode: \"radio\", selectedLabels: label ? [label] : [] };\n }\n\n // otherwise collect all menu items / checkbox items\n const flat: AnyEl[] = [];\n const dfs = (nodes: React.ReactNode) => {\n React.Children.forEach(nodes, (n) => {\n if (!isEl(n)) return;\n const nm = nameOf(n);\n if (\n nm.includes(\"MenuItem\") ||\n nm.includes(\"MenuCheckboxItem\") ||\n nm.includes(\"MenuRadioItem\")\n ) {\n flat.push(n);\n } else if (n.props && n.props.children) {\n dfs(n.props.children);\n }\n });\n };\n dfs(children);\n\n // if controlled provided, prefer that for reading selecteds\n if (controlled !== undefined) {\n const arr = Array.isArray(controlled) ? (controlled as T[]) : [controlled as T];\n const labels = arr\n .map((v) => {\n const m = flat.find((f) => Object.is((f.props as any).value, v));\n return m ? labelFromItem(m) : undefined;\n })\n .filter((x): x is string => typeof x === \"string\");\n const anyCheckbox = flat.some((f) => nameOf(f).includes(\"Checkbox\"));\n return { mode: anyCheckbox ? \"checkbox\" : \"menu\", selectedLabels: labels };\n }\n\n // uncontrolled: infer from per-item props (selected/checked/aria-selected)\n const selectedLabels: string[] = [];\n let anyCheckbox = false;\n flat.forEach((el) => {\n const p = el.props as Record<string, any>;\n const isChecked = !!p.checked || p[\"aria-checked\"] === true;\n const isSelected = !!p.selected || p[\"aria-selected\"] === true;\n if (isChecked || isSelected) {\n const lbl = labelFromItem(el);\n if (lbl) selectedLabels.push(lbl);\n }\n if (nameOf(el).includes(\"Checkbox\")) anyCheckbox = true;\n });\n\n return { mode: anyCheckbox ? \"checkbox\" : \"menu\", selectedLabels };\n}\n\n/* ───────── component ───────── */\n\nexport function Select<T = unknown>({\n value,\n defaultValue,\n onChange, // not wired here; your Menu components should manage selection & call you\n label,\n placeholder = \"Select…\",\n startIcon,\n endIcon,\n disabled,\n size = \"md\",\n variant = \"subtle\",\n fullWidth,\n width = 200,\n menuAlign = \"left\",\n menuWidth,\n menuMaxHeight = 280,\n wrapperCss,\n labelCss,\n triggerCss,\n menuCss,\n children,\n className,\n menuSize = \"md\",\n triggerRender,\n}: SelectProps<T>): JSX.Element {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const ids = React.useId();\n const labelId = `${ids}-label`;\n const contentId = `${ids}-menu`;\n\n const [open, setOpen] = React.useState(false);\n\n // compute trigger text (no cloning of items, no SelectItem type)\n const { selectedLabels } = scanChildrenForSelection<T>(children, value ?? defaultValue);\n const triggerText =\n selectedLabels.length === 0\n ? typeof placeholder === \"string\"\n ? placeholder\n : undefined\n : selectedLabels.join(\", \");\n\n /* sizes */\n const sizeCfg: Record<\"sm\" | \"md\" | \"lg\", { minHeight: number | string; radius: number | string }> =\n {\n sm: { minHeight: theme.componentHeights.sm, radius: theme.radius.sm },\n md: { minHeight: theme.componentHeights.md, radius: theme.radius.md },\n lg: { minHeight: theme.componentHeights.lg, radius: theme.radius.md },\n };\n const S = sizeCfg[size] || sizeCfg.md;\n\n /* visuals */\n const wrapperStyles: CSSObject = {\n position: \"relative\",\n width: fullWidth ? \"100%\" : toCss(width) ?? \"auto\",\n maxWidth: \"100%\",\n };\n\n const triggerBaseObj: CSSObject = {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderRadius: S.radius,\n minHeight: S.minHeight,\n fontSize: theme.fontSizes.md,\n padding: `0 ${typeof theme.spacing.sm === \"number\" ? `${theme.spacing.sm}px` : theme.spacing.sm} 0 ${\n typeof theme.spacing.md === \"number\" ? `${theme.spacing.md}px` : theme.spacing.md\n }`,\n fontWeight: 500,\n lineHeight: 1,\n userSelect: \"none\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n border: \"none\",\n outline: \"none\",\n transition: \"box-shadow .16s ease\",\n color: theme.text.primary,\n background: \"transparent\",\n whiteSpace: \"nowrap\",\n };\n\n const triggerVariantObj: CSSObject =\n variant === \"subtle\"\n ? { background: theme.surface.subtleBg }\n : variant === \"outlined\"\n ? { background: theme.surface.panelBg, border: `1px solid ${theme.surface.border}` }\n : { background: \"transparent\" };\n\n const triggerContentObj: CSSObject = {\n flex: 1,\n minWidth: 0,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"flex\",\n alignItems: \"center\",\n textAlign: \"left\",\n gap: 8,\n };\n\n const triggerStartIconObj: CSSObject = {\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n const titleObj: CSSObject = {\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n fontWeight: 500,\n display: \"block\",\n };\n\n const chevron = (\n <ChevronsUpDown\n size={16}\n css={emCss({ color: theme.text.secondary, flexShrink: 0 })}\n strokeWidth={2.5}\n className=\"plainframe-ui-select-chevron\"\n />\n );\n\n const alignMap: Record<Align, \"start\" | \"center\" | \"end\"> = {\n left: \"start\",\n center: \"center\",\n right: \"end\",\n };\n\n const onTriggerKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>): void => {\n if (disabled) return;\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n /* render */\n return (\n <div\n css={[emCss(wrapperStyles), wrapperCss].filter(Boolean)}\n className={[\"plainframe-ui-select-wrapper\", className || \"\"].join(\" \").trim()}\n >\n {label && (\n <div\n id={labelId}\n className=\"plainframe-ui-select-label\"\n css={[\n emCss({\n marginBottom: 6,\n fontSize: theme.fontSizes.md,\n fontWeight: 500,\n color: theme.text.secondary,\n }),\n labelCss,\n ].filter(Boolean)}\n >\n {label}\n </div>\n )}\n\n <DropdownMenu size={menuSize} open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger width=\"100%\" asChild>\n <button\n type=\"button\"\n disabled={disabled}\n aria-haspopup=\"menu\"\n aria-expanded={open || undefined}\n aria-controls={contentId}\n aria-labelledby={label ? labelId : undefined}\n onKeyDown={onTriggerKeyDown}\n onClick={() => setOpen((o) => !o)}\n className=\"plainframe-ui-select-trigger\"\n css={[\n emCss(triggerBaseObj),\n emCss(triggerVariantObj),\n triggerCss,\n focusRing(),\n ].filter(Boolean)}\n >\n <div className=\"plainframe-ui-select-trigger-content\" css={emCss(triggerContentObj)}>\n {triggerRender ? (\n triggerRender(\n selectedLabels.length > 1\n ? selectedLabels\n : selectedLabels[0] ?? (typeof placeholder === \"string\" ? undefined : undefined)\n )\n ) : (\n <>\n {startIcon && <span css={emCss(triggerStartIconObj)}>{startIcon}</span>}\n <span\n css={emCss(titleObj)}\n title={\n typeof (selectedLabels.length ? selectedLabels.join(\", \") : placeholder) ===\n \"string\"\n ? (selectedLabels.length\n ? selectedLabels.join(\", \")\n : (placeholder as string)) ?? undefined\n : undefined\n }\n >\n {selectedLabels.length\n ? selectedLabels.join(\", \")\n : placeholder ?? \"Select…\"}\n </span>\n </>\n )}\n </div>\n {endIcon ?? chevron}\n </button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n id={contentId}\n gap={2}\n align={alignMap[menuAlign]}\n sameWidth={menuWidth == null}\n width={menuWidth ?? width}\n className=\"plainframe-ui-select-menu\"\n css={[\n emCss({\n maxHeight:\n typeof menuMaxHeight === \"number\" ? `${menuMaxHeight}px` : menuMaxHeight,\n overflowY: \"auto\",\n }),\n menuCss,\n ].filter(Boolean)}\n >\n {/* we don’t clone or transform items; your Menu components handle selection */}\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n\nexport default Select;\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, keyframes, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\ntype SkeletonProps = {\n isLoading?: boolean;\n radius?: number | string;\n animation?: \"wave\" | \"pulse\" | \"none\";\n as?: keyof JSX.IntrinsicElements;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n style?: React.CSSProperties;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nconst px = (v: number | string | undefined, fb: string) =>\n v == null ? fb : typeof v === \"number\" ? `${v}px` : v;\n\nconst wave = keyframes`\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n`;\n\nconst pulse = keyframes`\n 0% { opacity: .6; }\n 50% { opacity: 1; }\n 100% { opacity: .6; }\n`;\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n isLoading = true,\n radius,\n animation = \"wave\",\n as: Tag = \"span\",\n children,\n width,\n height,\n style,\n className,\n css: userCss,\n}) => {\n const theme = usePlainframeUITheme();\n\n const base = theme.surface.subtleBg;\n const highlight = theme.neutral[200];\n const r = px(radius ?? theme.radius?.lg ?? 8, \"8px\");\n\n const container = css({\n position: \"relative\",\n display: \"inline-block\",\n verticalAlign: \"middle\",\n width: width == null ? \"fit-content\" : px(width, String(width)),\n height: height == null ? \"fit-content\" : px(height, String(height)),\n });\n\n const overlayBase = css({\n position: \"absolute\",\n inset: 0,\n borderRadius: r,\n pointerEvents: \"none\",\n background: base,\n willChange: \"background-position, opacity\",\n });\n\n const overlayAnim =\n animation === \"wave\"\n ? css({\n backgroundImage: `linear-gradient(90deg, ${base} 25%, ${highlight} 50%, ${base} 75%)`,\n backgroundSize: \"200% 100%\",\n animation: `${wave} 1.4s ease-in-out infinite`,\n })\n : animation === \"pulse\"\n ? css({ animation: `${pulse} 1.2s ease-in-out infinite` })\n : css({});\n\n const childWrap = css({\n visibility: isLoading ? \"hidden\" : \"visible\",\n display: \"inline-block\",\n borderRadius: r,\n });\n\n return (\n <Tag\n className={[\"plainframe-ui-skeleton\", className || \"\"].join(\" \").trim()}\n css={[container, userCss]}\n style={style}\n aria-busy={isLoading || undefined}\n >\n {isLoading && <span aria-hidden css={[overlayBase, overlayAnim]} />}\n <span className=\"plainframe-ui-skeleton-content\" css={childWrap}>\n {children}\n </span>\n </Tag>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useMemo, useRef, useState, useCallback } from \"react\";\nimport { css, type CSSObject } from \"@emotion/react\";\nimport type { Interpolation, Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { AnimatePresence, motion } from \"framer-motion\";\n\ntype Direction = \"horizontal\" | \"vertical\";\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n showStepper?: boolean;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n rounded?: boolean;\n showValue?: boolean;\n label?: string;\n fullWidth?: boolean;\n css?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n direction?: Direction;\n className?: string;\n};\n\nconst DEFAULT_TRACK_H = 8;\nconst DEFAULT_THUMB = 20;\nconst DEFAULT_DOT = 4;\n\nexport const Slider: React.FC<SliderProps> = ({\n value,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n rounded = false,\n showValue = false,\n showStepper = false,\n label,\n fullWidth = false,\n css: userRootCss,\n trackCss,\n thumbCss,\n direction = \"horizontal\",\n className,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const isVertical = direction === \"vertical\";\n const trackRef = useRef<HTMLDivElement | null>(null);\n\n const [dragging, setDragging] = useState(false);\n const [hoverThumb, setHoverThumb] = useState(false);\n const [hoverTip, setHoverTip] = useState(false);\n\n const isControlled = value !== undefined;\n const clamp = useCallback((v: number) => Math.min(max, Math.max(min, v)), [min, max]);\n const quantize = useCallback(\n (raw: number) => clamp(Math.round((raw - min) / step) * step + min),\n [min, step, clamp]\n );\n\n const [internal, setInternal] = useState<number>(() =>\n quantize(defaultValue == null ? min : defaultValue)\n );\n const current = isControlled ? quantize(value as number) : internal;\n\n useEffect(() => {\n if (!isControlled) setInternal((v) => quantize(v));\n }, [min, max, step, isControlled, quantize]);\n\n const primary600 = theme.palette.primary[600];\n const panelBg = theme.surface.panelBg;\n const disabledInk = theme.neutral[500];\n\n const percent = useMemo(() => {\n const span = max - min || 1;\n return ((current - min) / span) * 100;\n }, [current, min, max]);\n\n const commit = useCallback(\n (next: number) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const valueFromPointer = useCallback(\n (clientX: number, clientY: number) => {\n const el = trackRef.current;\n if (!el) return current;\n const rect = el.getBoundingClientRect();\n let ratio = isVertical ? (rect.bottom - clientY) / rect.height : (clientX - rect.left) / rect.width;\n ratio = Math.max(0, Math.min(1, ratio));\n return quantize(min + ratio * (max - min));\n },\n [current, isVertical, min, max, quantize]\n );\n\n const onPointerDownTrack = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) return;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n commit(valueFromPointer(e.clientX, e.clientY));\n setDragging(true);\n },\n [disabled, commit, valueFromPointer]\n );\n\n const onPointerDownThumb = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) return;\n (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);\n setDragging(true);\n },\n [disabled]\n );\n\n const onPointerMove = useCallback(\n (e: PointerEvent) => {\n if (!dragging || disabled) return;\n commit(valueFromPointer(e.clientX, e.clientY));\n },\n [dragging, disabled, commit, valueFromPointer]\n );\n\n const stopDrag = useCallback(() => setDragging(false), []);\n\n useEffect(() => {\n if (!dragging) return;\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", stopDrag);\n window.addEventListener(\"pointercancel\", stopDrag);\n return () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", stopDrag);\n window.removeEventListener(\"pointercancel\", stopDrag);\n };\n }, [dragging, onPointerMove, stopDrag]);\n\n const onKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n let next = current;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = current + step;\n else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = current - step;\n else if (e.key === \"Home\") next = min;\n else if (e.key === \"End\") next = max;\n else return;\n e.preventDefault();\n commit(quantize(next));\n },\n [disabled, current, step, min, max, commit, quantize]\n );\n\n const showTooltip = dragging || hoverThumb || hoverTip;\n const showHoverRing = (hoverThumb || dragging) && !disabled;\n const ringColor = `color-mix(in srgb, ${primary600} 25%, transparent)`;\n\n const rootCss = css({\n display: \"flex\",\n flexDirection: isVertical ? \"row\" : \"column\",\n alignItems: \"center\",\n padding: isVertical ? \"1rem\" : \"1rem 0\",\n width: isVertical ? \"fit-content\" : fullWidth ? \"100%\" : 350,\n height: isVertical ? 250 : \"auto\",\n boxSizing: \"border-box\",\n });\n\n const labelCss = css({\n marginBottom: isVertical ? 0 : 4,\n marginRight: isVertical ? 8 : 0,\n color: theme.text.primary,\n userSelect: \"none\",\n });\n\n const trackBaseCss = css({\n position: \"relative\",\n width: isVertical ? DEFAULT_TRACK_H : \"100%\",\n height: isVertical ? \"100%\" : DEFAULT_TRACK_H,\n backgroundColor: theme.neutral[200],\n borderRadius: theme.radius.xs,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n touchAction: \"none\",\n outline: \"none\",\n overflow: \"visible\",\n });\n\n const stepperCss = css({\n position: \"absolute\",\n left: isVertical ? \"50%\" : 0,\n top: isVertical ? 2 : \"50%\",\n transform: isVertical ? \"translateX(-50%)\" : \"translateY(-50%)\",\n width: isVertical ? DEFAULT_TRACK_H : `calc(100% - ${DEFAULT_DOT * 0.5}px)`,\n height: isVertical ? `calc(100% - ${DEFAULT_DOT * 0.5}px)` : DEFAULT_TRACK_H,\n display: \"flex\",\n flexDirection: isVertical ? \"column\" : \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n pointerEvents: \"none\",\n zIndex: 0,\n padding: 0,\n });\n\n const stepDotCss = css({\n width: DEFAULT_DOT,\n height: DEFAULT_DOT,\n borderRadius: \"50%\",\n backgroundColor: theme.text.primary,\n opacity: 0.15,\n flex: \"0 0 auto\",\n });\n\n const fillCss_default = css({\n position: \"absolute\",\n left: 0,\n top: isVertical ? `calc(${100 - percent}% )` : 0,\n bottom: 0,\n width: isVertical ? \"100%\" : `${percent}%`,\n height: isVertical ? `${percent}%` : \"100%\",\n backgroundColor: disabled ? disabledInk : primary600,\n borderRadius: theme.radius.sm,\n zIndex: 1,\n transition: \"none\",\n pointerEvents: \"none\",\n });\n\n const thumb_default = css({\n position: \"absolute\",\n appearance: \"none\",\n WebkitAppearance: \"none\",\n background: panelBg,\n width: DEFAULT_THUMB,\n height: DEFAULT_THUMB,\n left: isVertical ? \"50%\" : `calc(${percent}% - ${DEFAULT_THUMB / 2}px)`,\n bottom: isVertical ? `${percent}%` : \"auto\",\n top: isVertical ? \"auto\" : \"50%\",\n transform: isVertical ? \"translate(-50%, 50%)\" : \"translateY(-50%)\",\n borderRadius: rounded ? theme.radius.full : `calc(${theme.radius.md} * 0.75)`,\n border: `2px solid ${disabled ? disabledInk : primary600}`,\n cursor: disabled ? \"not-allowed\" : \"grab\",\n zIndex: 5,\n padding: 0,\n lineHeight: 0,\n transition: \"box-shadow .16s ease\",\n boxShadow: showHoverRing ? `0 0 0 ${dragging ? 4 : 8}px ${ringColor}` : `0 0 0 0px ${ringColor}`,\n \"&:focus-visible\": {\n boxShadow: `0 0 0 4px ${ringColor}`,\n outline: \"none\",\n },\n });\n\n const tipAnchorCss = css({\n position: \"relative\",\n backgroundColor: \"transparent\",\n padding: \"1rem\",\n top: !isVertical ? -28 : -7.5,\n left: isVertical ? 9 : -7.5,\n pointerEvents: \"none\",\n });\n\n const tooltipCss = css({\n position: \"absolute\",\n top: isVertical ? `calc(50% - ${DEFAULT_DOT * 2.5}px)` : 0,\n left: isVertical ? \"auto\" : `calc(50% - ${DEFAULT_DOT * 3}px)`,\n transform: isVertical ? \"translateY(-50%)\" : \"translateX(-50%)\",\n backgroundColor: theme.neutral[800],\n color: theme.neutral[0],\n padding: `0.6rem 0.25rem`,\n fontSize: 12,\n borderRadius: 6,\n whiteSpace: \"nowrap\",\n pointerEvents: \"auto\",\n zIndex: 6,\n \"&::after\": {\n content: '\"\"',\n position: \"absolute\",\n width: 6,\n height: 6,\n backgroundColor: theme.neutral[800],\n borderRadius: 2,\n bottom: isVertical ? \"50%\" : -2,\n left: isVertical ? -2.5 : \"50%\",\n transform: isVertical ? \"translateY(50%) rotate(45deg)\" : \"translateX(-50%) rotate(45deg)\",\n },\n });\n\n const rootUserCss = userRootCss as CSSObject | undefined;\n const trackUserCss = trackCss as CSSObject | undefined;\n const thumbUserCss = thumbCss as CSSObject | undefined;\n\n const stepsCount = Math.floor((max - min) / step) + 1;\n\n return (\n <div\n {...rest}\n role=\"group\"\n aria-label={label}\n className={[\"plainframe-ui-slider\", className || \"\"].join(\" \").trim()}\n css={[rootCss, rootUserCss]}\n data-orientation={isVertical ? \"vertical\" : \"horizontal\"}\n >\n {label && !isVertical && (\n <div className=\"plainframe-ui-slider-label\" css={labelCss}>\n {label}\n </div>\n )}\n\n <div\n ref={trackRef}\n className=\"plainframe-ui-slider-track\"\n css={[trackBaseCss, trackUserCss]}\n onPointerDown={onPointerDownTrack}\n >\n {showStepper && step > 0 && (\n <div className=\"plainframe-ui-slider-stepper\" css={stepperCss}>\n {Array.from({ length: stepsCount }).map((_, i) => (\n <span key={i} className=\"plainframe-ui-slider-step-dot\" css={stepDotCss} />\n ))}\n </div>\n )}\n\n <div className=\"plainframe-ui-slider-fill\" css={fillCss_default} />\n\n <button\n type=\"button\"\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={current}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDownThumb}\n onPointerUp={stopDrag}\n onPointerCancel={stopDrag}\n onMouseEnter={() => setHoverThumb(true)}\n onMouseLeave={() => setHoverThumb(false)}\n className=\"plainframe-ui-slider-thumb\"\n css={[thumb_default, thumbUserCss]}\n >\n <AnimatePresence>\n {showTooltip && (\n <motion.div\n className=\"plainframe-ui-slider-tooltip-anchor\"\n css={tipAnchorCss}\n initial={{ opacity: 0, scale: 0.9, y: isVertical ? 0 : 4, x: isVertical ? 4 : 0 }}\n animate={{ opacity: 1, scale: 1, y: 0, x: 0 }}\n exit={{ opacity: 0, scale: 0.9, y: isVertical ? 0 : 4, x: isVertical ? 4 : 0 }}\n transition={{ duration: 0.16, ease: \"easeOut\" }}\n >\n <motion.div\n className=\"plainframe-ui-slider-tooltip\"\n css={tooltipCss}\n initial={{ opacity: 0, y: isVertical ? 0 : 4, x: isVertical ? -4 : 0 }}\n animate={{ opacity: 1, y: 0, x: 0 }}\n exit={{ opacity: 0, y: isVertical ? 0 : 4, x: isVertical ? -4 : 0 }}\n transition={{ duration: 0.16, ease: \"easeOut\" }}\n onMouseEnter={() => setHoverTip(true)}\n onMouseLeave={() => setHoverTip(false)}\n >\n {current}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n {showValue && !showTooltip ? null : null}\n </button>\n </div>\n\n {label && isVertical && (\n <div className=\"plainframe-ui-slider-label\" css={[labelCss, { marginLeft: 8 }]}>\n {label}\n </div>\n )}\n </div>\n );\n};\n\nSlider.displayName = \"Slider\";","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\nimport { Check } from \"lucide-react\";\nimport { Theme } from \"@emotion/react\";\n\nexport type StepProps = {\n value: string | number | boolean;\n index?: number;\n label?: number | React.ReactNode;\n disabled?: boolean;\n complete?: boolean;\n icon?: React.ReactNode;\n completedIcon?: React.ReactNode;\n};\n\ntype TitlePos = \"top\" | \"right\" | \"bottom\" | \"left\";\n\ntype StepperProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"style\"> & {\n variant?: \"subtle\" | \"outlined\" | \"filled\";\n value?: StepProps[\"value\"];\n defaultValue?: StepProps[\"value\"];\n onChange?: (value: StepProps[\"value\"]) => void;\n disabled?: boolean;\n allowForward?: boolean | ((fromIndex: number, toIndex: number) => boolean);\n allComplete?: boolean;\n color?: string;\n activeBgColor?: string;\n activeColor?: string;\n completeBgColor?: string;\n completeColor?: string;\n separator?: React.ReactNode;\n titlePosition?: TitlePos;\n width?: number | string;\n css?: Interpolation<Theme>;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst rootCss = (mw?: number | string) =>\n css({\n \"--pf-ease\": \"cubic-bezier(.4,0,.2,1)\",\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: mw == null ? \"100%\" : typeof mw === \"number\" ? `${mw}px` : mw,\n width: \"100%\",\n });\n\nconst trackCss = css({\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n gap: 12,\n});\n\nconst stepWrapCss = (pos: TitlePos) =>\n css({\n display: \"flex\",\n minWidth: 0,\n flex: \"0 0 auto\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 8,\n flexDirection:\n pos === \"left\"\n ? \"row-reverse\"\n : pos === \"right\"\n ? \"row\"\n : pos === \"top\"\n ? \"column-reverse\"\n : \"column\",\n });\n\nconst connectorTrackCss = (neutral300: string) =>\n css({\n position: \"relative\",\n flex: \"1 1 24px\",\n minWidth: 6,\n height: 2,\n borderRadius: 1,\n background: neutral300,\n overflow: \"hidden\",\n });\n\nconst connectorFillCss = (pct: number, color: string, animate: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n transformOrigin: \"left center\",\n transform: `scaleX(${pct})`,\n background: color,\n transition: animate ? \"all .28s var(--pf-ease)\" : \"none\",\n willChange: \"transform\",\n });\n\nconst separatorWrapCss = css({\n flex: \"1 1 24px\",\n minWidth: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n});\n\nconst nodeCss = (\n size: number,\n bg: string,\n fg: string,\n outline: string,\n radiusFull: string\n) =>\n css({\n position: \"relative\",\n appearance: \"none\",\n border: `2px solid ${outline}`,\n width: size,\n height: size,\n minWidth: size,\n minHeight: size,\n borderRadius: radiusFull,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n userSelect: \"none\",\n background: bg,\n color: fg,\n transition: \"all .22s var(--pf-ease)\",\n \"&:disabled, &[aria-disabled='true']\": { opacity: 0.55, cursor: \"not-allowed\" },\n });\n\nconst numCss = css({\n fontWeight: 700,\n fontSize: 14,\n lineHeight: 1,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n});\n\nconst layerCss = (show: boolean) =>\n css({\n position: \"absolute\",\n inset: 0,\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: `scale(${show ? 1 : 0.3})`,\n opacity: show ? 1 : 0,\n transition: \"background .22s var(--pf-ease), transform .16s var(--pf-ease), opacity .16s var(--pf-ease)\",\n willChange: \"transform, opacity\",\n });\n\nconst labelCss = (\n strong: boolean,\n textPrimary: string,\n textSecondary: string,\n radiusXs: string,\n spacingXs: number\n) =>\n css({\n fontSize: 14,\n color: strong ? textPrimary : textSecondary,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n transition: \"all .16s ease\",\n textAlign: \"center\",\n fontWeight: 700,\n margin: `0 ${spacingXs}px`,\n borderRadius: radiusXs,\n });\n\ntype NormalizedVariant = \"subtle\" | \"outlined\";\n\ntype StepItemProps = {\n i: number;\n item: StepProps;\n size: number;\n tokens: {\n MAIN: string;\n ACTIVE_TEXT: string;\n ACTIVE_TEXT_OUTLINED: string;\n COMPLETE_BG: string;\n COMPLETE_FG: string;\n UPCOMING_BG_FILLED: string;\n UPCOMING_OUTLINE: string;\n UPCOMING_FG: string;\n };\n variant: NormalizedVariant;\n titlePosition: TitlePos;\n isActive: boolean;\n completed: boolean;\n disabled: boolean;\n connectorColor: string;\n showConnector: boolean;\n animate: boolean;\n separator?: React.ReactNode;\n canGoToIndex: (toIndex: number) => boolean;\n setSelected: (v: StepProps[\"value\"]) => void;\n};\n\nconst StepItem = React.memo<StepItemProps>(function StepItem({\n i,\n item,\n size,\n tokens,\n variant,\n titlePosition,\n isActive,\n completed,\n disabled,\n connectorColor,\n showConnector,\n animate,\n separator,\n canGoToIndex,\n setSelected,\n}) {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n\n const {\n MAIN,\n ACTIVE_TEXT,\n ACTIVE_TEXT_OUTLINED,\n COMPLETE_BG,\n COMPLETE_FG,\n UPCOMING_BG_FILLED,\n UPCOMING_OUTLINE,\n UPCOMING_FG,\n } = tokens;\n\n let bg = \"transparent\",\n fg = UPCOMING_FG,\n outline = UPCOMING_OUTLINE;\n\n if (variant === \"subtle\") {\n if (completed) {\n bg = COMPLETE_BG;\n fg = COMPLETE_FG;\n outline = COMPLETE_BG;\n } else if (isActive) {\n bg = MAIN;\n fg = ACTIVE_TEXT;\n outline = MAIN;\n } else {\n bg = UPCOMING_BG_FILLED;\n fg = UPCOMING_FG;\n outline = UPCOMING_BG_FILLED;\n }\n } else {\n if (completed) {\n bg = COMPLETE_BG;\n fg = COMPLETE_FG;\n outline = COMPLETE_BG;\n } else if (isActive) {\n bg = \"transparent\";\n fg = ACTIVE_TEXT_OUTLINED;\n outline = MAIN;\n } else {\n bg = \"transparent\";\n fg = UPCOMING_FG;\n outline = UPCOMING_OUTLINE;\n }\n }\n\n const label = item.label;\n const baseIcon = item.icon ?? <span css={numCss}>{typeof label === \"number\" ? label : i + 1}</span>;\n const doneIcon = item.completedIcon ?? <Check strokeWidth={3.25} size={16} />;\n\n return (\n <>\n <div className=\"plainframe-ui-step\" css={stepWrapCss(titlePosition)}>\n <button\n className=\"plainframe-ui-step-node\"\n css={[nodeCss(size, bg, fg, outline, String(theme.radius.full)), !disabled && focusRing({color: isActive ? \"primary\" : \"neutral\"})]}\n onClick={() => {\n if (!disabled && canGoToIndex(i)) setSelected(item.value);\n }}\n tabIndex={disabled ? -1 : 0}\n aria-current={isActive ? \"step\" : undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n aria-label={typeof label === \"string\" ? label : `Step ${i + 1}`}\n >\n <span className=\"plainframe-ui-step-content\" css={layerCss(!completed)}>\n {baseIcon}\n </span>\n <span className=\"plainframe-ui-step-check\" css={layerCss(!!completed)}>\n {doneIcon}\n </span>\n </button>\n\n {label && (\n <span\n className=\"plainframe-ui-step-label\"\n css={labelCss(\n completed || isActive,\n theme.text.primary,\n theme.text.secondary,\n String(theme.radius.xs),\n Number(theme.spacing.xs)\n )}\n >\n {label}\n </span>\n )}\n </div>\n\n {showConnector &&\n (separator ? (\n <div className=\"plainframe-ui-stepper-separator\" css={separatorWrapCss}>\n {separator}\n </div>\n ) : (\n <div className=\"plainframe-ui-step-connector\" css={connectorTrackCss(theme.neutral[300])}>\n <div\n className=\"plainframe-ui-step-connector-fill\"\n css={connectorFillCss(completed ? 1 : 0, connectorColor, animate)}\n aria-hidden=\"true\"\n />\n </div>\n ))}\n </>\n );\n},\n(a, b) =>\n a.isActive === b.isActive &&\n a.completed === b.completed &&\n a.disabled === b.disabled &&\n a.variant === b.variant &&\n a.separator === b.separator &&\n a.connectorColor === b.connectorColor &&\n a.titlePosition === b.titlePosition &&\n a.size === b.size);\n\nexport const Step: React.FC<StepProps> = () => null;\nStep.displayName = \"PlainframeUIStep\";\n\nexport const Stepper: React.FC<StepperProps> = ({\n variant = \"subtle\",\n value,\n defaultValue,\n onChange,\n disabled = false,\n allowForward = true,\n allComplete = false,\n color,\n activeBgColor,\n activeColor,\n completeBgColor,\n completeColor,\n separator,\n titlePosition = \"right\",\n width,\n css: userCss,\n className,\n children,\n ...rest\n}) => {\n const theme = usePlainframeUITheme();\n const normalizedVariant: NormalizedVariant = variant === \"outlined\" ? \"outlined\" : \"subtle\";\n\n const steps: StepProps[] = React.useMemo(() => {\n const arr = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<StepProps> =>\n React.isValidElement(child) && child.type === Step\n );\n if (!arr.length) return [{ value: 1 }, { value: 2 }, { value: 3 }];\n return arr.map((child, index) => ({ index, ...child.props }));\n }, [children]);\n\n const resolve = React.useCallback(\n (c?: string, fallback?: string) => (c ? ((theme.palette)?.[c] ?? c) : fallback),\n [theme.palette]\n );\n\n const tokens = React.useMemo(\n () => ({\n MAIN: String(resolve(activeBgColor, typeof theme.palette.primary[600] === \"string\" ? theme.palette.primary[600] : \"\")),\n ACTIVE_TEXT: String(resolve(activeColor, typeof theme.text.onColors.primary === \"string\" ? theme.text.onColors.primary : \"\")),\n ACTIVE_TEXT_OUTLINED: String(resolve(activeColor, typeof theme.text.primary === \"string\" ? theme.text.primary : \"\")),\n COMPLETE_BG: String(resolve(completeBgColor, typeof theme.palette.primary[600] === \"string\" ? theme.palette.primary[600] : \"\")),\n COMPLETE_FG: String(resolve(completeColor, typeof theme.text.onColors.primary === \"string\" ? theme.text.onColors.primary : \"\")),\n UPCOMING_BG_FILLED: String(typeof theme.neutral[100] === \"string\" ? theme.neutral[100] : \"\"),\n UPCOMING_OUTLINE: String(typeof theme.neutral[300] === \"string\" ? theme.neutral[300] : \"\"),\n UPCOMING_FG: String(typeof theme.text.secondary === \"string\" ? theme.text.secondary : \"\"),\n }),\n [\n resolve,\n activeBgColor,\n activeColor,\n completeBgColor,\n completeColor,\n theme.palette.primary,\n theme.neutral,\n theme.text,\n ]\n );\n\n const connectorColor = React.useMemo(\n () => {\n const resolved = resolve(color, theme.palette.primary[600]);\n return typeof resolved === \"string\" ? resolved : String(resolved);\n },\n [resolve, color, theme.palette.primary]\n );\n\n const [internal, setInternal] = React.useState<StepProps[\"value\"]>(() => {\n const has = steps.some((i) => i?.value === defaultValue);\n return has ? (defaultValue as StepProps[\"value\"]) : steps[0]?.value;\n });\n\n const isControlled = value !== undefined;\n const current = (isControlled ? value : internal) as StepProps[\"value\"];\n\n const { activeIndex, afterLast } = React.useMemo(() => {\n const directIdx = steps.findIndex((i) => i.value === current);\n if (directIdx !== -1) return { activeIndex: directIdx, afterLast: false };\n if (typeof current === \"number\") {\n const inferred = Math.floor(current) - 1;\n if (inferred >= steps.length) return { activeIndex: steps.length - 1, afterLast: true };\n if (inferred >= 0) return { activeIndex: inferred, afterLast: false };\n }\n return { activeIndex: 0, afterLast: false };\n }, [steps, current]);\n\n const setSelected = React.useCallback(\n (v: StepProps[\"value\"]) => {\n if (disabled) return;\n if (!isControlled) setInternal(v);\n onChange?.(v);\n },\n [disabled, isControlled, onChange]\n );\n\n const isStepComplete = React.useCallback(\n (idx: number) => allComplete || !!steps[idx]?.complete || (afterLast ? true : idx < activeIndex),\n [allComplete, steps, afterLast, activeIndex]\n );\n\n const canGoToIndex = React.useCallback(\n (toIndex: number) => {\n if (disabled) return false;\n const target = steps[toIndex];\n if (!target || target.disabled) return false;\n if (typeof allowForward === \"boolean\") {\n if (allowForward === false && toIndex > activeIndex) return false;\n } else if (typeof allowForward === \"function\") {\n if (!allowForward(activeIndex, toIndex)) return false;\n }\n return true;\n },\n [disabled, steps, allowForward, activeIndex]\n );\n\n const [animate, setAnimate] = React.useState(false);\n React.useEffect(() => {\n const id = requestAnimationFrame(() => setAnimate(true));\n return () => cancelAnimationFrame(id);\n }, []);\n\n const onKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!steps.length || disabled) return;\n let next = activeIndex;\n if (e.key === \"ArrowRight\") next = Math.min(steps.length - 1, activeIndex + 1);\n else if (e.key === \"ArrowLeft\") next = Math.max(0, activeIndex - 1);\n else if (e.key === \"Home\") next = 0;\n else if (e.key === \"End\") next = steps.length - 1;\n else return;\n e.preventDefault();\n if (canGoToIndex(next)) setSelected(steps[next]!.value);\n },\n [steps, disabled, activeIndex, canGoToIndex, setSelected]\n );\n\n const size = 34;\n\n return (\n <div\n tabIndex={-1}\n className={[\"plainframe-ui-stepper\", className || \"\"].join(\" \").trim()}\n css={[rootCss(width), userCss as CSSObject]}\n {...rest}\n >\n <div\n tabIndex={-1}\n className=\"plainframe-ui-stepper-track\"\n role=\"list\"\n onKeyDown={onKeyDown}\n css={trackCss}\n >\n {steps.map((step, i) => (\n <React.Fragment key={String(step.value ?? i)}>\n <StepItem\n i={i}\n item={step}\n size={size}\n tokens={tokens}\n variant={normalizedVariant}\n titlePosition={titlePosition}\n isActive={!afterLast && i === activeIndex}\n completed={isStepComplete(i)}\n disabled={disabled || !!step.disabled}\n connectorColor={connectorColor}\n showConnector={i < steps.length - 1}\n animate={animate}\n separator={separator}\n canGoToIndex={canGoToIndex}\n setSelected={setSelected}\n />\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusRing } from \"../utils/focusRing\";\n\ntype Variant = \"subtle\" | \"underlined\" | \"text\" | \"ghost\";\ntype Direction = \"horizontal\" | \"vertical\";\n\nexport type TabsProps = {\n children?: React.ReactNode;\n defaultValue?: string | number | boolean;\n value?: string | number | boolean;\n onChange?: (value: string | number | boolean) => void;\n variant?: Variant;\n direction?: Direction;\n className?: string;\n shadow?: boolean;\n width?: number | string;\n fullWidth?: boolean;\n rounded?: boolean;\n titlePosition?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"left\" | \"center\" | \"right\";\n css?: Interpolation<Theme>;\n trackCss?: Interpolation<Theme>;\n thumbCss?: Interpolation<Theme>;\n activeTabCss?: Interpolation<Theme>;\n activeIndicatorCss?: Interpolation<Theme>;\n};\n\nexport type TabProps = {\n value: string | number | boolean;\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n activeCss?: Interpolation<Theme>;\n css?: Interpolation<Theme>;\n};\n\nexport type TabContentProps = {\n value: string | number | boolean;\n className?: string;\n children?: React.ReactNode;\n css?: Interpolation<Theme>;\n};\n\nexport const Tab: React.FC<TabProps> = () => null;\nTab.displayName = \"PF.Tab\";\n\nexport const TabContent: React.FC<TabContentProps> = ({ children }) => <>{children}</>;\nTabContent.displayName = \"PF.TabContent\";\n\nfunction unwrapEmotion(child: React.ReactElement) {\n const propsAny = child.props as any;\n const origType = propsAny?.__EMOTION_TYPE_PLEASE_DO_NOT_USE__ ?? child.type;\n return { type: origType, props: propsAny };\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n children,\n defaultValue,\n value,\n onChange,\n variant = \"subtle\",\n direction = \"horizontal\",\n className,\n shadow = false,\n width,\n fullWidth = false,\n rounded = false,\n titlePosition = \"right\",\n align,\n css: userCss,\n trackCss: userTrackCss,\n thumbCss: userThumbCss,\n activeTabCss,\n activeIndicatorCss,\n}) => {\n const theme = usePlainframeUITheme();\n const focusRing = useFocusRing();\n const isV = direction === \"vertical\";\n const stretch = fullWidth || width != null;\n const effAlign: \"left\" | \"center\" | \"right\" = align ?? (isV ? \"left\" : \"center\");\n const justifyMap = { left: \"flex-start\", center: \"center\", right: \"flex-end\" } as const;\n\n type ParsedTab = {\n value: string | number | boolean;\n disabled?: boolean;\n node: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n activeCss?: Interpolation<Theme>;\n };\n\n const { tabs, contents } = React.useMemo(() => {\n const t: ParsedTab[] = [];\n const c: Array<{ value: TabContentProps[\"value\"]; node: React.ReactNode; className?: string; css?: Interpolation<Theme> }> = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return;\n const { type: origType, props } = unwrapEmotion(child);\n const isTab = origType === Tab || (origType as any)?.displayName === Tab.displayName;\n const isContent = origType === TabContent || (origType as any)?.displayName === TabContent.displayName;\n if (isTab) {\n const p = props as TabProps;\n if (p?.value === undefined) return;\n t.push({ value: p.value, disabled: p.disabled, node: p.children, className: p.className, css: p.css, activeCss: p.activeCss });\n } else if (isContent) {\n const p = props as TabContentProps;\n if (p?.value === undefined) return;\n c.push({ value: p.value, node: p.children, className: p.className, css: p.css });\n }\n });\n return { tabs: t, contents: c };\n }, [children]);\n\n const firstEnabled = React.useMemo(() => tabs.find((t) => !t.disabled)?.value, [tabs]);\n const [internal, setInternal] = React.useState(() => {\n const ok = defaultValue !== undefined && tabs.some((t) => t.value === defaultValue && !t.disabled);\n return ok ? defaultValue : firstEnabled;\n });\n const isControlled = value !== undefined;\n const currentValue = (isControlled ? value : internal) as any;\n\n const listRef = React.useRef<HTMLDivElement>(null);\n const btnRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const activeIndex = Math.max(0, tabs.findIndex((t) => t.value === currentValue));\n\n type Ind = { left: number; top: number; width: number; height: number };\n const [indicator, setIndicator] = React.useState<Ind>({ left: 0, top: 0, width: 0, height: 0 });\n const [ready, setReady] = React.useState(false);\n const [animate, setAnimate] = React.useState(false);\n\n const measure = React.useCallback(() => {\n const list = listRef.current;\n const btn = btnRefs.current[activeIndex];\n if (!list || !btn) return;\n const listRect = list.getBoundingClientRect();\n const r = btn.getBoundingClientRect();\n setIndicator({ left: r.left - listRect.left, top: r.top - listRect.top, width: r.width, height: r.height });\n }, [activeIndex]);\n\n React.useLayoutEffect(() => {\n measure();\n if (!ready) {\n setReady(true);\n requestAnimationFrame(() => setAnimate(true));\n }\n }, [measure, ready]);\n\n React.useEffect(() => {\n const ro = new ResizeObserver(() => measure());\n if (listRef.current) ro.observe(listRef.current);\n const btn = btnRefs.current[activeIndex];\n if (btn) ro.observe(btn);\n const onWin = () => measure();\n window.addEventListener(\"resize\", onWin);\n return () => {\n ro.disconnect();\n window.removeEventListener(\"resize\", onWin);\n };\n }, [measure, activeIndex]);\n\n const nextEnabledIndex = (from: number, dir: 1 | -1) => {\n if (!tabs.length) return from;\n let i = from;\n for (let step = 0; step < tabs.length; step++) {\n i = (i + dir + tabs.length) % tabs.length;\n if (!tabs[i].disabled) return i;\n }\n return from;\n };\n\n const setSelected = (v: any) => {\n if (!isControlled) setInternal(v);\n onChange?.(v);\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!tabs.length) return;\n let next = activeIndex;\n if (e.key === (isV ? \"ArrowDown\" : \"ArrowRight\")) next = nextEnabledIndex(activeIndex, 1);\n else if (e.key === (isV ? \"ArrowUp\" : \"ArrowLeft\")) next = nextEnabledIndex(activeIndex, -1);\n else if (e.key === \"Home\") next = tabs.findIndex((t) => !t.disabled);\n else if (e.key === \"End\") {\n const rev = [...tabs].reverse().findIndex((t) => !t.disabled);\n next = rev === -1 ? activeIndex : tabs.length - 1 - rev;\n } else return;\n e.preventDefault();\n const v = tabs[next]?.value;\n if (v !== undefined) setSelected(v);\n requestAnimationFrame(() => btnRefs.current[next]?.focus());\n };\n\n const textPrimary = theme.text.primary;\n const textSecondary = theme.text.secondary;\n const disabledText = theme.neutral[500];\n\n const trackBg = variant === \"subtle\" ? theme.surface.subtleBg : variant === \"ghost\" ? \"transparent\" : \"transparent\";\n const thumbBg = variant === \"subtle\" ? theme.surface.panelBg ?? theme.surface.panelBg : variant === \"ghost\" ? theme.surface.subtleBg : \"transparent\";\n const underlineColor = theme.text.primary;\n const showThumb = variant === \"subtle\" || variant === \"ghost\" || variant === \"underlined\";\n\n const rootCss = css({\n \"--pf-ease\": \"cubic-bezier(.4,0,.2,1)\",\n display: \"flex\",\n flexDirection: \"column\",\n width: fullWidth ? \"100%\" : width == null ? \"auto\" : typeof width === \"number\" ? `${width}px` : width,\n });\n\n const needsPad = variant === \"subtle\";\n\n const trackBaseCss = css({\n position: \"relative\",\n display: stretch ? \"flex\" : \"inline-flex\",\n width: stretch ? \"100%\" : \"auto\",\n flexDirection: isV ? \"column\" : \"row\",\n alignItems: isV ? \"stretch\" : \"center\",\n flexWrap: \"nowrap\",\n gap: theme.spacing.xs,\n padding: needsPad ? theme.spacing.xs : 0,\n background: trackBg,\n borderRadius:\n variant === \"subtle\"\n ? rounded\n ? isV\n ? (theme.radius.lg as string)\n : (theme.radius.full as string)\n : (theme.radius.lg as string)\n : \"none\",\n });\n\n const thumbBaseCss = css({\n position: \"absolute\",\n zIndex: 0,\n pointerEvents: \"none\",\n opacity: ready ? 1 : 0,\n visibility: ready ? \"visible\" : \"hidden\",\n transition: animate\n ? `${isV ? \"top\" : \"left\"} .24s var(--pf-ease), ${isV ? \"height\" : \"width\"} .24s var(--pf-ease), background-color .18s var(--pf-ease)`\n : \"none\",\n borderRadius: variant === \"subtle\" || variant === \"ghost\" ? (rounded ? (theme.radius.full as string) : (theme.radius.md as string)) : 0,\n background: variant === \"underlined\" ? \"transparent\" : thumbBg,\n ...(isV\n ? { top: `${indicator.top}px`, height: `${indicator.height}px`, left: theme.spacing.xs, right: theme.spacing.xs }\n : { left: `${indicator.left}px`, width: `${indicator.width}px`, top: theme.spacing.xs, bottom: theme.spacing.xs }),\n boxShadow: shadow && variant === \"subtle\" ? \"0 1px 3px rgba(0,0,0,0.04), 0 6px 16px rgba(0,0,0,0.04)\" : \"none\",\n });\n\n const underlineCss = css(\n variant !== \"underlined\"\n ? {}\n : isV\n ? { background: \"transparent\", top: `${indicator.top}px`, height: `${indicator.height}px`, left: 0, width: 0, borderLeft: `2px solid ${underlineColor}`, borderBottom: \"none\", borderRadius: 2 }\n : { background: \"transparent\", left: `${indicator.left}px`, width: `${indicator.width}px`, bottom: 0, top: \"auto\", height: 0, borderBottom: `2px solid ${underlineColor}`, borderLeft: \"none\", borderRadius: 2 }\n );\n\n const baseTabCss = css({\n position: \"relative\",\n zIndex: 1,\n border: \"none\",\n background: \"transparent\",\n padding:\n variant === \"underlined\" && direction !== \"vertical\"\n ? `${theme.spacing.md}`\n : variant === \"ghost\" && direction !== \"vertical\"\n ? `${theme.spacing.md}`\n : `${theme.spacing.xs} ${theme.spacing.md}`,\n borderRadius:\n variant === \"subtle\" || variant === \"ghost\"\n ? rounded\n ? (theme.radius.full as string)\n : (theme.radius.md as string)\n : (theme.radius.md as string),\n minHeight: theme.componentHeights.sm,\n transition: \"color .16s ease !important\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n ...(isV ? { width: stretch ? \"100%\" : \"auto\", flex: \"0 0 auto\", textAlign: effAlign } : stretch ? { flex: \"1 1 0\", minWidth: 0, textAlign: \"center\" } : { flex: \"0 0 auto\", minWidth: \"max-content\", textAlign: \"center\" }),\n whiteSpace: \"nowrap\",\n boxSizing: \"border-box\",\n cursor: \"pointer\",\n userSelect: \"none\",\n fontSize: theme.fontSizes.md,\n fontWeight: 600,\n color: textSecondary,\n \"&[aria-selected='true']\": { color: textPrimary },\n \"&:hover\": { color: textPrimary },\n \"&[aria-disabled='true'], &:disabled\": { opacity: 0.55, cursor: \"not-allowed\", color: disabledText },\n });\n\n const contentWrapCss = css({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: isV ? justifyMap[effAlign] : \"center\",\n gap: 6,\n width: \"100%\",\n flexDirection:\n titlePosition === \"top\"\n ? \"column-reverse\"\n : titlePosition === \"bottom\"\n ? \"column\"\n : titlePosition === \"left\"\n ? \"row-reverse\"\n : \"row\",\n });\n\n const panelCss = css({ marginTop: theme.spacing.sm, width: \"100%\" });\n\n const idBase = React.useId();\n const panelIdByValue = new Map<any, string>();\n contents.forEach((c, i) => panelIdByValue.set(c.value, `${idBase}-panel-${i}`));\n const tabIdForIndex = (i: number) => `${idBase}-tab-${i}`;\n\n return (\n <div className={[\"plainframe-ui-tabs\", className || \"\"].join(\" \").trim()} css={[rootCss, userCss]}>\n <div\n className=\"plainframe-ui-tabs-track\"\n ref={listRef}\n role=\"tablist\"\n aria-orientation={isV ? \"vertical\" : \"horizontal\"}\n onKeyDown={onKeyDown}\n css={[trackBaseCss, userTrackCss]}\n >\n {showThumb && <div className=\"plainframe-ui-tabs-thumb\" css={[thumbBaseCss, underlineCss, userThumbCss, activeIndicatorCss]} />}\n {tabs.map((t, i) => {\n const isActive = currentValue === t.value;\n return (\n <button\n key={String(t.value ?? i)}\n ref={(el) => {\n btnRefs.current[i] = el;\n }}\n role=\"tab\"\n id={tabIdForIndex(i)}\n aria-selected={isActive}\n aria-controls={panelIdByValue.get(t.value)}\n aria-disabled={t.disabled || undefined}\n disabled={t.disabled}\n tabIndex={t.disabled ? -1 : i === activeIndex ? 0 : -1}\n className={[\"plainframe-ui-tab\", t.className || \"\"].join(\" \").trim()}\n onClick={() => {\n if (!t.disabled) setSelected(t.value);\n }}\n css={[baseTabCss, !t.disabled && focusRing(), t.css, isActive ? (t.activeCss ?? activeTabCss) : undefined]}\n >\n <span className=\"plainframe-ui-tab-content\" css={contentWrapCss}>\n {t.node}\n </span>\n </button>\n );\n })}\n </div>\n {contents.map((c, i) => {\n const isActive = c.value === currentValue;\n const labelledByIndex = tabs.findIndex((t) => t.value === c.value);\n const labelledBy = labelledByIndex >= 0 ? tabIdForIndex(labelledByIndex) : undefined;\n return (\n <div\n key={i}\n role=\"tabpanel\"\n id={panelIdByValue.get(c.value)}\n aria-labelledby={labelledBy}\n hidden={!isActive}\n className={[\"plainframe-ui-tab-panel\", c.className || \"\"].join(\" \").trim()}\n css={[panelCss, c.css]}\n >\n {isActive ? c.node : null}\n </div>\n );\n })}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, {\n useLayoutEffect,\n useRef,\n useState,\n useId,\n useMemo,\n useCallback,\n} from \"react\";\nimport { css, type Interpolation, type Theme } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { useFocusWithinRing } from \"../utils/focusRing\";\n\ntype SizeKey = \"sm\" | \"md\" | \"lg\";\ntype Variant = \"outlined\" | \"subtle\" | \"ghost\";\ntype WithCss = { css?: Interpolation<Theme> };\n\nexport type TextAreaProps = WithCss & {\n label?: React.ReactNode;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n error?: boolean;\n helperText?: React.ReactNode;\n disabled?: boolean;\n fullWidth?: boolean;\n width?: number | string;\n size?: SizeKey;\n variant?: Variant;\n rounded?: boolean;\n rows?: number;\n maxRows?: number;\n maxLength?: number;\n showCharCount?: boolean;\n focusRingMode?: \"always\" | \"none\";\n resizable?: boolean;\n wrapperCss?: Interpolation<Theme>;\n inputCss?: Interpolation<Theme>;\n labelCss?: Interpolation<Theme>;\n helperRowCss?: Interpolation<Theme>;\n helperTextCss?: Interpolation<Theme>;\n charCountCss?: Interpolation<Theme>;\n className?: string;\n onBlur?: React.FocusEventHandler<HTMLTextAreaElement>;\n onFocus?: React.FocusEventHandler<HTMLTextAreaElement>;\n onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;\n autoFocus?: boolean;\n name?: string;\n id?: string;\n tabIndex?: number;\n autoComplete?: string;\n readOnly?: boolean;\n required?: boolean;\n};\n\nconst u = (v: number | string | undefined): string | undefined =>\n v == null ? undefined : typeof v === \"number\" ? `${v}px` : v;\n\nconst asArr = (v?: Interpolation<Theme>): Interpolation<Theme>[] =>\n v == null ? [] : (Array.isArray(v) ? v : [v]);\n\n// ✅ Avoid template-literal overload by always using the array/object overload.\nconst mergeCss = (\n ...parts: Array<Interpolation<Theme> | false | null | undefined>\n): Interpolation<Theme> => css(parts.filter(Boolean) as any);\n\nexport const TextArea: React.FC<TextAreaProps> = ({\n label,\n value,\n defaultValue = \"\",\n onChange,\n placeholder,\n error,\n helperText,\n disabled = false,\n fullWidth = false,\n width = 235,\n size = \"md\",\n variant = \"subtle\",\n rounded = false,\n rows = 3,\n maxRows,\n maxLength,\n showCharCount,\n focusRingMode = \"always\",\n resizable = false,\n className,\n wrapperCss: userWrapperCss,\n inputCss: userInputCss,\n labelCss: userLabelCss,\n helperRowCss: userHelperRowCss,\n helperTextCss: userHelperTextCss,\n charCountCss: userCharCountCss,\n css: userSurfaceCss,\n onBlur,\n onFocus,\n onKeyDown,\n autoFocus,\n name,\n id,\n tabIndex,\n autoComplete,\n readOnly,\n required,\n}) => {\n const theme = usePlainframeUITheme();\n const ring = useFocusWithinRing();\n const reactId = useId();\n\n const sizeMap = useMemo(\n () =>\n ({\n sm: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.sm,\n labelFont: theme.fontSizes.sm,\n helperFont: theme.fontSizes.sm,\n width: \"12.5rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n md: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.md,\n labelFont: theme.fontSizes.md,\n helperFont: theme.fontSizes.sm,\n width: \"15rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n lg: {\n fontSize: theme.fontSizes.md,\n minHeight: theme.componentHeights.lg,\n labelFont: theme.fontSizes.lg,\n helperFont: theme.fontSizes.md,\n width: \"18.125rem\",\n paddingY: 0,\n paddingX: theme.spacing.md,\n },\n }) as const,\n [theme]\n );\n\n const sizeKey: SizeKey = ([\"sm\", \"md\", \"lg\"] as const).includes(size as any)\n ? (size as SizeKey)\n : \"md\";\n const s = sizeMap[sizeKey];\n\n const N = theme.neutral;\n const T = theme.text;\n\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<string>(defaultValue);\n const curr: string = isControlled ? (value as string) : internal;\n\n const setValue = useCallback(\n (next: string): void => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const surfaceBg = useMemo<string>(\n () =>\n disabled\n ? N[200]\n : variant === \"outlined\"\n ? theme.surface.panelBg\n : variant === \"subtle\"\n ? theme.surface.subtleBg\n : \"transparent\",\n [disabled, variant, N, theme.surface]\n );\n\n const borderW = theme.componentHeights.border;\n const surfaceBorder = useMemo<string>(\n () =>\n variant === \"outlined\"\n ? `${borderW} solid ${error ? theme.palette.danger[600] : theme.surface.border}`\n : `${borderW} solid transparent`,\n [variant, borderW, error, theme.palette.danger, theme.surface.border]\n );\n\n const rootCss = useMemo(\n () =>\n css({\n boxSizing: \"border-box\",\n display: \"block\",\n minWidth: 0,\n width: \"100%\",\n maxWidth: fullWidth ? \"100%\" : width != null ? u(width) : undefined,\n flex: \"0 0 auto\",\n fontWeight: 500,\n }),\n [fullWidth, width]\n );\n\n const labelCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.labelFont,\n fontWeight: 500,\n color: error ? theme.palette.danger?.[700] ?? T.primary : disabled ? N[500] : T.primary,\n marginBottom: 4,\n display: \"inline-block\",\n },\n ...asArr(userLabelCss)\n ),\n [s.labelFont, error, disabled, N, T, theme.palette.danger, userLabelCss]\n );\n\n const surfaceBaseCss = useMemo(\n () => [\n {\n display: \"flex\",\n alignItems: \"stretch\",\n gap: theme.spacing.sm,\n padding: `${u(s.paddingY)} 0 ${u(s.paddingY)} ${u(s.paddingX)}`,\n background: surfaceBg,\n outline: surfaceBorder,\n outlineOffset: `-${borderW}`,\n borderRadius: rounded ? (theme.radius.full as string) : (theme.radius.md as string),\n minHeight: s.minHeight,\n width: \"100%\",\n cursor: disabled ? \"not-allowed\" : \"text\",\n opacity: disabled ? 0.65 : 1,\n transition: \"box-shadow .18s, border-color .16s\",\n },\n ...asArr(userWrapperCss),\n ...asArr(userSurfaceCss),\n ] as Interpolation<Theme>,\n [theme, s, surfaceBg, surfaceBorder, borderW, rounded, disabled, userWrapperCss, userSurfaceCss]\n );\n\n const ctrlMinH: string = typeof s.minHeight === \"number\" ? `${s.minHeight}px` : s.minHeight;\n\n const textareaCss = useMemo(\n () =>\n mergeCss(\n {\n width: \"100%\",\n minWidth: 0,\n flex: 1,\n resize: resizable ? (\"vertical\" as const) : (\"none\" as const),\n font: \"inherit\",\n fontWeight: 500,\n fontSize: s.fontSize,\n lineHeight: 1.5,\n color: disabled ? N[500] : T.primary,\n background: \"transparent\",\n border: \"none\",\n outline: \"none\",\n padding: 0,\n paddingRight: u(s.paddingX),\n overflowY: \"auto\",\n minHeight: ctrlMinH,\n \"&::placeholder\": { color: T.secondary },\n \"&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus\": {\n WebkitTextFillColor: `${T.primary} !important`,\n boxShadow: `0 0 0 1000px ${surfaceBg} inset !important`,\n transition: \"opacity 99999s ease-out\",\n caretColor: T.primary,\n },\n \":focus-within\": { outline: \"none\", border: \"none\", boxShadow: \"none\" },\n ...(rows === 1\n ? { paddingBlock: `calc((${ctrlMinH} - 1.5em) / 2)` }\n : { paddingBlock: \"clamp(4px, 0.5em, 12px)\" }),\n },\n ...asArr(userInputCss)\n ),\n [resizable, s, disabled, N, T, ctrlMinH, surfaceBg, rows, userInputCss]\n );\n\n const helperRowCss = useMemo(\n () =>\n mergeCss(\n {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: 8,\n paddingTop: 3,\n },\n ...asArr(userHelperRowCss)\n ),\n [userHelperRowCss]\n );\n\n const helperTextCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.helperFont,\n color: error ? theme.palette.danger?.[700] ?? T.secondary : T.secondary,\n flex: 1,\n minWidth: 0,\n },\n ...asArr(userHelperTextCss)\n ),\n [s.helperFont, error, theme.palette.danger, T, userHelperTextCss]\n );\n\n const charCountCss = useMemo(\n () =>\n mergeCss(\n {\n fontSize: s.helperFont,\n color:\n maxLength && curr.length > maxLength\n ? theme.palette.danger?.[700] ?? T.secondary\n : T.secondary,\n flexShrink: 0,\n },\n ...asArr(userCharCountCss)\n ),\n [s.helperFont, maxLength, curr.length, theme.palette.danger, T, userCharCountCss]\n );\n\n const ref = useRef<HTMLTextAreaElement | null>(null);\n\n useLayoutEffect((): void => {\n if (typeof window === \"undefined\") return;\n const el = ref.current;\n if (!el) return;\n\n if (resizable) {\n const cs = window.getComputedStyle(el);\n const lh = parseFloat(cs.lineHeight || \"20\");\n const tokenMin = typeof s.minHeight === \"number\" ? s.minHeight : parseFloat(String(s.minHeight));\n const baseMin = Math.max(lh * (rows ?? 1), tokenMin);\n el.style.setProperty(\"--pf-minh\", `${baseMin}px`);\n return;\n }\n\n const measure = (): void => {\n const cs = window.getComputedStyle(el);\n const lh = parseFloat(cs.lineHeight || \"20\");\n const tokenMin = typeof s.minHeight === \"number\" ? s.minHeight : parseFloat(String(s.minHeight));\n const baseMin = Math.max(lh * (rows ?? 1), tokenMin);\n el.style.setProperty(\"--pf-minh\", `${baseMin}px`);\n const maxH = maxRows ? lh * maxRows : Infinity;\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxH)}px`;\n };\n\n measure();\n }, [curr, rows, maxRows, s.minHeight, resizable]);\n\n const helperId: string | undefined =\n helperText != null || showCharCount ? `${id ?? reactId}-help` : undefined;\n const inputId: string = id ?? reactId;\n\n return (\n <div className={[\"plainframe-ui-textarea\", className || \"\"].join(\" \").trim()} css={rootCss}>\n {label && (\n <label htmlFor={inputId} className=\"plainframe-ui-textarea-label\" css={labelCss}>\n {label}\n </label>\n )}\n\n <div\n className=\"plainframe-ui-textarea-surface\"\n css={[ring({ enabled: focusRingMode !== \"none\", disabled }), surfaceBaseCss]}\n aria-invalid={!!error || undefined}\n aria-disabled={disabled || undefined}\n onClick={() => !disabled && ref.current?.focus()}\n >\n <textarea\n ref={ref}\n id={inputId}\n className=\"plainframe-ui-textarea-input\"\n css={textareaCss}\n rows={rows}\n value={curr}\n onChange={(e): void => {\n const next = e.target.value;\n if (maxLength && next.length > maxLength) return;\n setValue(next);\n }}\n placeholder={placeholder || \"\"}\n disabled={disabled}\n onBlur={onBlur}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n autoFocus={autoFocus}\n name={name}\n tabIndex={tabIndex}\n autoComplete={autoComplete}\n readOnly={readOnly}\n required={required}\n aria-invalid={!!error || undefined}\n aria-describedby={helperId}\n />\n </div>\n\n {(helperText != null || (showCharCount && maxLength != null)) && (\n <div className=\"plainframe-ui-textarea-helper-row\" css={helperRowCss}>\n <span id={helperId} className=\"plainframe-ui-textarea-helper-text\" css={helperTextCss}>\n {helperText}\n </span>\n {showCharCount && maxLength != null && (\n <span className=\"plainframe-ui-textarea-char-count\" css={charCountCss}>\n {curr.length}/{maxLength}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport React, { useEffect, useSyncExternalStore } from \"react\";\nimport { css, type CSSObject } from \"@emotion/react\";\nimport { AnimatePresence, motion, useAnimationControls } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { X } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\ntype CoreStatus = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\ntype Status = CoreStatus | \"danger\";\ntype Position =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\ntype ShowDismissMode = \"hover\" | \"always\" | \"never\";\n\nexport type ToastRendererCtx = {\n toast: ToastItem;\n close: (id?: string) => void;\n pause: (id: string) => void;\n resume: (id: string) => void;\n};\nexport type ToastRenderer = (ctx: ToastRendererCtx) => React.ReactNode;\n\nexport type ToastItem = {\n id: string;\n status: Status;\n content?: React.ReactNode;\n title?: React.ReactNode;\n description?: React.ReactNode;\n render?: React.ReactNode | ToastRenderer;\n bare?: boolean;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n action?: React.ReactNode;\n duration: number | null;\n createdAt: number;\n onClose?: () => void;\n pauseOnHover?: boolean;\n showDismiss?: boolean | ShowDismissMode;\n onClick?: (id: string, e: React.MouseEvent | MouseEvent) => void;\n width?: number | string;\n};\n\ntype Options = Partial<\n Pick<\n ToastItem,\n | \"status\"\n | \"content\"\n | \"title\"\n | \"description\"\n | \"render\"\n | \"bare\"\n | \"startIcon\"\n | \"endIcon\"\n | \"action\"\n | \"onClose\"\n | \"pauseOnHover\"\n | \"showDismiss\"\n | \"onClick\"\n | \"width\"\n | \"duration\"\n | \"createdAt\"\n | \"id\"\n >\n> & { id?: string; duration?: number | null };\n\ntype Styles = {\n stack?: CSSObject;\n item?: CSSObject;\n surface?: CSSObject | ((t: ToastItem) => CSSObject);\n close?: CSSObject;\n};\n\ntype Config = {\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer?: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n};\n\nconst isIterable = (obj: any): obj is Iterable<unknown> =>\n obj != null && typeof obj[Symbol.iterator] === \"function\";\nconst isPromise = (obj: any): obj is Promise<unknown> =>\n !!obj && (typeof obj === \"object\" || typeof obj === \"function\") && typeof (obj as any).then === \"function\";\nfunction isOptionsInput(x: any): x is Options {\n if (x == null) return false;\n if (typeof x !== \"object\") return false;\n if (React.isValidElement(x)) return false;\n if (isPromise(x)) return false;\n if (isIterable(x)) return false;\n const keys = Object.keys(x);\n return (\n keys.length === 0 ||\n [\n \"status\",\n \"content\",\n \"title\",\n \"description\",\n \"render\",\n \"bare\",\n \"startIcon\",\n \"endIcon\",\n \"action\",\n \"onClose\",\n \"pauseOnHover\",\n \"showDismiss\",\n \"onClick\",\n \"width\",\n \"duration\",\n \"createdAt\",\n \"id\",\n ].some((k) => k in x)\n );\n}\n\nconst ENTER_SPRING = { type: \"spring\" as const, stiffness: 920, damping: 100 };\nconst ROOT_ID = \"toast-host\";\n\nconst getIn = (obj: unknown, path: string): any =>\n path.split(\".\").reduce((o: any, k) => (o == null ? o : o[k]), obj as any);\n\nconst first = (theme: any, paths: string[]): any => {\n for (const p of paths) {\n const v = getIn(theme, p);\n if (v != null && v !== \"\") return v;\n }\n return undefined;\n};\n\nconst px = (v: unknown, fb: number): string =>\n v == null ? `${fb}px` : typeof v === \"number\" ? `${v}px` : String(v);\n\nfunction resolveToastTokens(theme: any): { radius: string; padX: string; padY: string; shadow: string } {\n const radius = first(theme, [\"radius.md\", \"shape.borderRadius\", \"radii.md\"]);\n const padX = first(theme, [\"spacing.lg\", \"space.4\", \"spacing.4\"]);\n const padY = first(theme, [\"spacing.md\", \"space.3\", \"spacing.3\"]);\n const shadow =\n first(theme, [\"shadows.lg\", \"elevation.lg\"]) ??\n \"0 8px 24px rgba(0,0,0,.03), 0 2px 8px rgba(0,0,0,.05)\";\n return { radius: px(radius, 16), padX: px(padX, 14), padY: px(padY, 12), shadow: String(shadow) };\n}\n\nlet hostEl: HTMLElement | null = null;\nfunction ensureHost(): void {\n if (typeof document === \"undefined\") return;\n if (!hostEl) {\n hostEl = document.getElementById(ROOT_ID);\n if (!hostEl) {\n hostEl = document.createElement(\"div\");\n hostEl.id = ROOT_ID;\n document.body.appendChild(hostEl);\n }\n }\n}\n\nconst cfg: Config = {\n max: 5,\n position: \"bottom-right\",\n gutter: 10,\n zIndex: 1000,\n duration: 5000,\n showDismiss: \"hover\",\n styles: {},\n renderer: undefined,\n bareRenderer: false,\n};\n\nconst store = {\n displayed: [] as ToastItem[],\n queue: [] as ToastItem[],\n entering: {} as Record<string, boolean>,\n exiting: {} as Record<string, boolean>,\n enterFrom: {} as Record<string, \"head\" | \"tail\">,\n timers: new Map<string, number>(),\n expiry: new Map<string, number>(),\n remaining: new Map<string, number>(),\n paused: new Set<string>(),\n listeners: new Set<() => void>(),\n snapshot: {\n displayed: [] as ToastItem[],\n entering: {} as Record<string, boolean>,\n exiting: {} as Record<string, boolean>,\n enterFrom: {} as Record<string, \"head\" | \"tail\">,\n },\n subscribe(fn: () => void): () => void {\n this.listeners.add(fn);\n return () => this.listeners.delete(fn);\n },\n notify(): void {\n this.listeners.forEach((fn) => fn());\n },\n sync(): void {\n this.snapshot = {\n displayed: [...this.displayed],\n entering: { ...this.entering },\n exiting: { ...this.exiting },\n enterFrom: { ...this.enterFrom },\n };\n },\n};\n\nconst syncAndNotify = (): void => {\n store.sync();\n store.notify();\n};\n\nconst uid = (): string =>\n typeof crypto !== \"undefined\" && (crypto as any).randomUUID\n ? (crypto as any).randomUUID()\n : Math.random().toString(36).slice(2);\n\nfunction armTimer(t: ToastItem, override?: number | null): void {\n if (override === null) return;\n const dur = override ?? t.duration;\n if (dur == null) return;\n if (store.timers.has(t.id)) return;\n const now = Date.now();\n const remaining = store.remaining.get(t.id);\n const timeoutMs = remaining != null ? Math.max(0, remaining) : dur;\n store.expiry.set(t.id, now + timeoutMs);\n const handle = window.setTimeout(() => toast.dismiss(t.id), timeoutMs);\n store.timers.set(t.id, handle);\n}\n\nfunction clearTimer(id: string): void {\n const handle = store.timers.get(id);\n if (handle) {\n clearTimeout(handle);\n store.timers.delete(id);\n }\n}\n\nfunction flushQueueIntoDisplayed(): void {\n while (store.displayed.length < cfg.max && store.queue.length) {\n const t = store.queue.shift()!;\n store.displayed = [t, ...store.displayed];\n store.enterFrom[t.id] = \"head\";\n store.entering[t.id] = true;\n syncAndNotify();\n requestAnimationFrame(() => {\n delete store.entering[t.id];\n syncAndNotify();\n });\n armTimer(t);\n }\n}\n\nfunction pushOutOldestIntoQueue(): void {\n if (store.displayed.length < cfg.max) return;\n const candidates = store.displayed.filter((d) => !store.exiting[d.id]);\n if (!candidates.length) return;\n const oldest = candidates.reduce((a, b) => (a.createdAt <= b.createdAt ? a : b));\n const exp = store.expiry.get(oldest.id);\n if (exp != null) store.remaining.set(oldest.id, Math.max(0, exp - Date.now()));\n clearTimer(oldest.id);\n store.exiting[oldest.id] = true;\n store.displayed = store.displayed.filter((x) => x.id !== oldest.id);\n delete store.enterFrom[oldest.id];\n store.queue.push(oldest);\n syncAndNotify();\n}\n\nconst normalizeStatus = (s: any): CoreStatus => {\n if (s === \"danger\") return \"error\";\n const allowed = [\"default\", \"success\", \"error\", \"warning\", \"info\"] as const;\n return (allowed as readonly string[]).includes(s) ? (s as CoreStatus) : \"default\";\n};\n\nfunction statusColors(theme: any, s: Status): { bg: string; fg: string; border?: string } {\n const st = normalizeStatus(s);\n const panelBg = theme.surface?.panelBg ?? \"#fff\";\n const panelFg = theme.text?.primary ?? \"#111\";\n const border = theme.surface?.border;\n if (st === \"default\" || st === \"info\") return { bg: panelBg, fg: panelFg, border };\n const on = theme.text?.onColors ?? {};\n const pick = (\n k: \"success\" | \"warning\" | \"error\",\n fallbackBg: string,\n fallbackFg: string\n ) => ({\n bg: theme.colors?.[k] ?? theme.palette?.[k]?.[700] ?? fallbackBg,\n fg: on?.[k] ?? fallbackFg,\n border: \"transparent\",\n });\n if (st === \"success\") return pick(\"success\", \"#22C55E\", \"#fff\");\n if (st === \"warning\") return pick(\"warning\", \"#F59E0B\", \"#fff\");\n if (st === \"error\") return pick(\"error\", \"#EF4444\", \"#fff\");\n return { bg: panelBg, fg: panelFg, border };\n}\n\nexport const toast: {\n (\n contentOrOptions: React.ReactNode | Options,\n opts?: Options\n ): string;\n success: (msg: React.ReactNode, o?: Options) => string;\n error: (msg: React.ReactNode, o?: Options) => string;\n warning: (msg: React.ReactNode, o?: Options) => string;\n info: (msg: React.ReactNode, o?: Options) => string;\n custom: (node: React.ReactNode, o?: Options) => string;\n update: (id: string, o: Options) => string;\n dismiss: (id?: string) => void;\n clear: () => void;\n pause: (id: string) => void;\n resume: (id: string) => void;\n pauseLatest: () => void;\n resumeLatest: () => void;\n promise: <T>(\n p: Promise<T>,\n msgs: {\n loading: React.ReactNode;\n success: (val: T) => React.ReactNode;\n error: (err: any) => React.ReactNode;\n },\n o?: Options\n ) => Promise<T>;\n config: (opts: Partial<{\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n }>) => void;\n} = Object.assign(\n (contentOrOptions: React.ReactNode | Options, opts?: Options): string => {\n ensureHost();\n let o: Options;\n if (isOptionsInput(contentOrOptions)) {\n o = contentOrOptions;\n } else {\n o = { content: contentOrOptions as React.ReactNode, ...(opts || {}) };\n }\n if (o.content == null && (o.title != null || o.description != null)) {\n o.content = (\n <div>\n {o.title && <strong style={{ display: \"block\", marginBottom: 2 }}>{o.title}</strong>}\n {o.description}\n </div>\n );\n }\n const id = o.id ?? uid();\n const updateIn = (arr: ToastItem[]): boolean => {\n const i = arr.findIndex((x) => x.id === id);\n if (i === -1) return false;\n const prev = arr[i];\n const next: ToastItem = {\n ...prev,\n status: (o.status ?? prev.status) as Status,\n content: o.content ?? prev.content,\n title: o.title ?? prev.title,\n description: o.description ?? prev.description,\n startIcon: o.startIcon ?? prev.startIcon,\n endIcon: o.endIcon ?? prev.endIcon,\n action: o.action ?? prev.action,\n onClose: o.onClose ?? prev.onClose,\n duration: o.duration === undefined ? prev.duration : o.duration,\n pauseOnHover: o.pauseOnHover ?? prev.pauseOnHover,\n showDismiss: o.showDismiss ?? prev.showDismiss,\n render: o.render ?? prev.render,\n bare: o.bare ?? prev.bare,\n onClick: o.onClick ?? prev.onClick,\n width: o.width ?? prev.width,\n };\n arr[i] = next;\n clearTimer(id);\n store.remaining.delete(id);\n if (!store.paused.has(id)) armTimer(next);\n syncAndNotify();\n return true;\n };\n if (updateIn(store.displayed) || updateIn(store.queue)) return id;\n const t: ToastItem = {\n id,\n status: (o.status ?? \"default\") as Status,\n content: o.content,\n title: o.title,\n description: o.description,\n startIcon: o.startIcon,\n endIcon: o.endIcon,\n action: o.action,\n duration: o.duration === undefined ? cfg.duration : o.duration,\n onClose: o.onClose,\n createdAt: Date.now(),\n pauseOnHover: o.pauseOnHover ?? true,\n showDismiss: o.showDismiss,\n render: o.render,\n bare: o.bare,\n onClick: o.onClick,\n width: o.width ?? 300,\n };\n if (store.displayed.length >= cfg.max) pushOutOldestIntoQueue();\n store.displayed = [...store.displayed, t];\n store.enterFrom[t.id] = \"tail\";\n store.entering[t.id] = true;\n syncAndNotify();\n requestAnimationFrame(() => {\n delete store.entering[t.id];\n syncAndNotify();\n });\n armTimer(t);\n return id;\n },\n {\n success: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"success\" }),\n error: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"error\" }),\n warning: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"warning\" }),\n info: (msg: React.ReactNode, o: Options = {}): string => toast(msg, { ...o, status: \"info\" }),\n custom: (node: React.ReactNode, o: Options = {}): string => toast(node, { ...o }),\n update: (id: string, o: Options): string => toast({ id, ...o }),\n dismiss: (id?: string): void => {\n if (!id) {\n const first = store.displayed.find((d) => !store.exiting[d.id])?.id;\n if (first) toast.dismiss(first);\n return;\n }\n clearTimer(id);\n store.remaining.delete(id);\n store.paused.delete(id);\n store.exiting[id] = true;\n const item = store.displayed.find((x) => x.id === id);\n store.displayed = store.displayed.filter((x) => x.id !== id);\n delete store.enterFrom[id];\n syncAndNotify();\n window.setTimeout(() => item?.onClose?.(), 120);\n flushQueueIntoDisplayed();\n },\n clear: (): void => {\n const ids = [...store.displayed.map((t) => t.id)];\n ids.forEach((id) => toast.dismiss(id));\n },\n pause: (id: string): void => {\n if (store.paused.has(id)) return;\n const exp = store.expiry.get(id);\n if (exp != null) store.remaining.set(id, Math.max(0, exp - Date.now()));\n store.paused.add(id);\n clearTimer(id);\n },\n resume: (id: string): void => {\n if (!store.paused.has(id)) return;\n store.paused.delete(id);\n const t = store.displayed.find((x) => x.id === id) ?? store.queue.find((x) => x.id === id);\n const left = store.remaining.get(id);\n if (t) armTimer(t, left ?? undefined);\n store.remaining.delete(id);\n },\n pauseLatest: (): void => {\n const latest = store.displayed.length ? store.displayed[store.displayed.length - 1] : undefined;\n if (latest) toast.pause(latest.id);\n },\n resumeLatest: (): void => {\n const latest = store.displayed.length ? store.displayed[store.displayed.length - 1] : undefined;\n if (latest) toast.resume(latest.id);\n },\n promise: <T,>(\n p: Promise<T>,\n msgs: {\n loading: React.ReactNode;\n success: (val: T) => React.ReactNode;\n error: (err: any) => React.ReactNode;\n },\n o: Options = {}\n ): Promise<T> => {\n const id = toast(msgs.loading, { ...o, status: \"info\", duration: null });\n p.then((v) => {\n toast.update(id, {\n status: \"success\",\n content: msgs.success(v),\n duration: o.duration ?? 2500,\n });\n }).catch((err) => {\n toast.update(id, {\n status: \"error\",\n content: msgs.error(err),\n duration: o.duration ?? 3000,\n });\n });\n return p;\n },\n config: (opts: Partial<{\n max: number;\n position: Position;\n gutter: number;\n zIndex: number;\n duration: number | null;\n showDismiss: ShowDismissMode;\n styles: Styles;\n renderer: React.ReactNode | ToastRenderer;\n bareRenderer: boolean;\n }>): void => {\n if (opts.max != null) cfg.max = opts.max;\n if (opts.position) cfg.position = opts.position;\n if (opts.gutter != null) cfg.gutter = opts.gutter;\n if (opts.zIndex != null) cfg.zIndex = opts.zIndex;\n if (opts.duration !== undefined) cfg.duration = opts.duration;\n if (opts.showDismiss) cfg.showDismiss = opts.showDismiss;\n if (opts.styles) cfg.styles = { ...cfg.styles, ...opts.styles };\n if (opts.renderer !== undefined) cfg.renderer = opts.renderer;\n if (opts.bareRenderer !== undefined) cfg.bareRenderer = opts.bareRenderer;\n },\n }\n);\n\nfunction normalizeDismiss(show?: boolean | ShowDismissMode): ShowDismissMode {\n if (typeof show === \"string\") return show;\n if (show === true) return \"always\";\n if (show === false) return \"never\";\n return cfg.showDismiss;\n}\n\nfunction positionCss(pos: Position): CSSObject {\n const map: Record<Position, CSSObject> = {\n \"top-left\": { top: 16, left: 16, alignItems: \"flex-start\" },\n \"top-center\": { top: 16, left: \"50%\", transform: \"translateX(-50%)\", alignItems: \"center\" },\n \"top-right\": { top: 16, right: 16, alignItems: \"flex-end\" },\n \"bottom-left\": { bottom: 16, left: 16, alignItems: \"flex-start\" },\n \"bottom-center\": { bottom: 16, left: \"50%\", transform: \"translateX(-50%)\", alignItems: \"center\" },\n \"bottom-right\": { bottom: 16, right: 16, alignItems: \"flex-end\" },\n };\n return map[pos];\n}\n\nconst rowCss = css({ display: \"flex\", alignItems: \"flex-start\", gap: 10 });\nconst iconWrapCss = css({\n flex: \"0 0 auto\",\n paddingTop: 1,\n lineHeight: 0,\n marginLeft: -3,\n \"& svg, & img, & canvas, & video\": { display: \"block\" },\n});\nconst textCss = css({ fontSize: 14, lineHeight: 1.4, fontWeight: 500, flex: 1, minWidth: 0 });\nconst actionRowCss = css({ display: \"flex\", alignItems: \"center\", gap: 6, marginRight: -2 });\n\nfunction ToastHost(): JSX.Element {\n const snap = useSyncExternalStore(store.subscribe.bind(store), () => store.snapshot, () => store.snapshot);\n const theme = usePlainframeUITheme();\n const TOK = resolveToastTokens(theme);\n const isBottom = cfg.position.startsWith(\"bottom\");\n const list = isBottom ? snap.displayed : [...snap.displayed].reverse();\n const stackStyle: CSSObject = {\n position: \"fixed\",\n zIndex: cfg.zIndex,\n pointerEvents: \"none\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n ...positionCss(cfg.position),\n ...(cfg.styles.stack ?? {}),\n };\n return (\n <div className=\"plainframe-ui-toast-stack\" css={css(stackStyle)}>\n <AnimatePresence initial={false}>\n {list.map((t, index) => {\n const from = snap.enterFrom[t.id] || \"tail\";\n const enterY = isBottom ? (from === \"head\" ? -16 : 16) : from === \"head\" ? 16 : -16;\n const mt = index > 0 ? cfg.gutter : 0;\n const ctx: ToastRendererCtx = {\n toast: t,\n close: toast.dismiss,\n pause: toast.pause,\n resume: toast.resume,\n };\n const { bg, fg, border } = statusColors(theme, t.status);\n const baseSurface: CSSObject = {\n position: \"relative\",\n overflow: \"hidden\",\n borderRadius: TOK.radius,\n boxShadow: TOK.shadow,\n padding: `${TOK.padY} calc(${TOK.padX} + 30px) ${TOK.padY} ${TOK.padX}`,\n display: \"grid\",\n gridTemplateColumns: \"1fr auto\",\n gap: 10,\n background: bg,\n color: fg,\n cursor: t.onClick ? \"pointer\" : \"default\",\n border: border ? `1px solid ${border}` : \"1px solid transparent\",\n };\n const extraSurface =\n typeof cfg.styles.surface === \"function\" ? cfg.styles.surface(t) : cfg.styles.surface ?? {};\n const dismissMode = normalizeDismiss(t.showDismiss);\n const modeStyles: CSSObject = {};\n const closeSel = \"& .plainframe-ui-toast-close\";\n const hoverSel = \"&:hover .plainframe-ui-toast-close\";\n if (dismissMode === \"hover\") {\n (modeStyles as any)[closeSel] = { opacity: 0, pointerEvents: \"none\" };\n (modeStyles as any)[hoverSel] = { opacity: 1, pointerEvents: \"auto\" };\n } else if (dismissMode === \"always\") {\n (modeStyles as any)[closeSel] = { opacity: 1, pointerEvents: \"auto\" };\n } else if (dismissMode === \"never\") {\n (modeStyles as any)[closeSel] = { display: \"none\" };\n }\n const wrapCss = css({ ...baseSurface, ...extraSurface, ...modeStyles });\n const closeCss = css({\n position: \"absolute\",\n top: 8,\n right: 8,\n appearance: \"none\",\n border: 0,\n background: \"transparent\",\n color: fg,\n width: 28,\n height: 28,\n borderRadius: 8,\n cursor: \"pointer\",\n lineHeight: 1,\n transition: \"opacity .12s ease\",\n display: \"grid\",\n placeItems: \"center\",\n ...(cfg.styles.close ?? {}),\n });\n let content: React.ReactNode;\n if (t.bare && t.render) {\n const inner = typeof t.render === \"function\" ? (t.render as ToastRenderer)(ctx) : t.render;\n content = (\n <div style={{ pointerEvents: \"auto\" }} onClick={(e) => t.onClick?.(t.id, e)}>\n {inner}\n </div>\n );\n } else if (cfg.bareRenderer && cfg.renderer) {\n const inner =\n typeof cfg.renderer === \"function\"\n ? (cfg.renderer as ToastRenderer)(ctx)\n : cfg.renderer;\n content = (\n <div style={{ pointerEvents: \"auto\" }} onClick={(e) => t.onClick?.(t.id, e)}>\n {inner}\n </div>\n );\n } else {\n let innerBlock: React.ReactNode;\n if (cfg.renderer) {\n innerBlock =\n typeof cfg.renderer === \"function\"\n ? (cfg.renderer as ToastRenderer)(ctx)\n : cfg.renderer;\n } else if (t.render && !t.bare) {\n innerBlock = typeof t.render === \"function\" ? (t.render as ToastRenderer)(ctx) : t.render;\n } else {\n innerBlock = (\n <>\n <div css={rowCss}>\n {t.startIcon && <div css={iconWrapCss}>{t.startIcon}</div>}\n <div css={textCss}>{t.content}</div>\n {t.endIcon && <div css={iconWrapCss}>{t.endIcon}</div>}\n </div>\n {t.action && <div css={actionRowCss}>{t.action}</div>}\n </>\n );\n }\n content = (\n <div css={wrapCss} onClick={(e) => t.onClick?.(t.id, e)}>\n {innerBlock}\n <button\n className=\"plainframe-ui-toast-close\"\n aria-label=\"Close\"\n css={closeCss}\n onClick={(e) => {\n e.stopPropagation();\n toast.dismiss(t.id);\n }}\n >\n <X strokeWidth={2.5} size={14} />\n </button>\n </div>\n );\n }\n return (\n <SwipeItem\n key={t.id}\n id={t.id}\n isBottom={isBottom}\n mt={mt}\n enterY={enterY}\n width={t.width}\n pauseOnHover={t.pauseOnHover !== false}\n >\n {content}\n </SwipeItem>\n );\n })}\n </AnimatePresence>\n </div>\n );\n}\n\nfunction SwipeItem(\n props: React.PropsWithChildren<{\n id: string;\n isBottom: boolean;\n mt: number;\n enterY: number;\n width?: number | string;\n pauseOnHover: boolean;\n }>\n): JSX.Element {\n const { id, isBottom, mt, enterY, width, pauseOnHover, children } = props;\n const controls = useAnimationControls();\n useEffect(() => {\n controls.start({ opacity: 1, y: 0, height: \"auto\", x: 0, transition: ENTER_SPRING });\n }, [controls]);\n const itemStyle: CSSObject = {\n pointerEvents: \"auto\",\n willChange: \"transform, opacity, height, margin, scale, width, max-width\",\n marginTop: mt,\n width: \"100%\",\n maxWidth: width != null ? (typeof width === \"number\" ? `${width}px` : width) : \"none\",\n ...(cfg.styles.item ?? {}),\n };\n return (\n <motion.div\n layout\n className=\"plainframe-ui-toast-item\"\n css={css(itemStyle)}\n initial={{ opacity: 0, y: enterY, height: \"auto\", x: 0 }}\n animate={controls}\n exit={{\n opacity: 0,\n y: isBottom ? 6 : -6,\n height: 0,\n marginTop: 0,\n transition: { type: \"tween\", ease: \"easeInOut\", duration: 0.14 },\n }}\n drag=\"x\"\n dragElastic={0.2}\n dragMomentum\n whileDrag={{ scale: 0.98, opacity: 0.95 }}\n onDragEnd={(_, info) => {\n const dist = Math.abs(info.offset.x);\n const velo = Math.abs(info.velocity.x);\n const shouldFling = dist > 60 || velo > 600;\n if (!shouldFling) {\n controls.start({ x: 0, opacity: 1, transition: { type: \"spring\", stiffness: 700, damping: 40 } });\n return;\n }\n const dir = info.offset.x !== 0 ? Math.sign(info.offset.x) : Math.sign(info.velocity.x || 1);\n const targetX = dir * (window.innerWidth + 160);\n controls\n .start({\n x: targetX,\n opacity: 0.9,\n transition: { type: \"spring\", stiffness: 280, damping: 24, velocity: (info.velocity.x as number) / 10 },\n })\n .then(() => toast.dismiss(id));\n }}\n onMouseEnter={pauseOnHover ? () => toast.pause(id) : undefined}\n onMouseLeave={pauseOnHover ? () => toast.resume(id) : undefined}\n >\n {children}\n </motion.div>\n );\n}\n\nexport function ToastViewport(): JSX.Element | null {\n ensureHost();\n return hostEl ? createPortal(<ToastHost />, hostEl) : null;\n}\n","/** @jsxImportSource @emotion/react */\nimport React, {\n createContext,\n useContext,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { css, Interpolation, type CSSObject } from \"@emotion/react\";\nimport {\n useFloating,\n offset,\n flip,\n shift,\n arrow as arrowMw,\n autoUpdate,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n safePolygon,\n FloatingPortal,\n type Placement,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { usePlainframeUITheme } from \"../theme/ThemeProvider\";\nimport { Theme } from \"@emotion/react\";\n\nconst mergeRefs =\n <T,>(...refs: Array<React.Ref<T> | undefined>) =>\n (node: T) => {\n for (const r of refs) {\n if (!r) continue;\n if (typeof r === \"function\") r(node);\n else try {\n (r as any).current = node;\n } catch {}\n }\n };\n\ntype Ctx = {\n open: boolean;\n setOpen: (o: boolean) => void;\n id: string;\n placement: Placement;\n autoWidth: boolean;\n allowArrow: boolean;\n refs: ReturnType<typeof useFloating>[\"refs\"];\n floatingStyles: ReturnType<typeof useFloating>[\"floatingStyles\"];\n middlewareData: ReturnType<typeof useFloating>[\"middlewareData\"];\n getReferenceProps: ReturnType<typeof useInteractions>[\"getReferenceProps\"];\n getFloatingProps: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n arrowRef: React.MutableRefObject<HTMLDivElement | null>;\n};\n\nconst TooltipCtx = createContext<Ctx | null>(null);\nconst useTooltipCtx = () => {\n const v = useContext(TooltipCtx);\n if (!v) throw new Error(\"TooltipTrigger/TooltipContent must be inside <Tooltip>.\");\n return v;\n};\n\nexport type TooltipProps = {\n children: React.ReactNode;\n placement?: Placement;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (o: boolean) => void;\n delay?: number;\n arrow?: boolean;\n autoWidth?: boolean;\n disableHoverListener?: boolean;\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n children,\n placement = \"top\",\n open: controlled,\n defaultOpen = false,\n onOpenChange,\n delay = 80,\n arrow = true,\n autoWidth = false,\n disableHoverListener = false,\n}) => {\n const [uc, setUc] = useState(!!defaultOpen);\n const open = controlled ?? uc;\n const setOpen = (o: boolean) => {\n if (controlled === undefined) setUc(o);\n onOpenChange?.(o);\n };\n\n const arrowRef = useRef<HTMLDivElement | null>(null);\n\n const floating = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n strategy: \"fixed\",\n transform: false,\n middleware: [\n offset(8),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n arrow ? arrowMw({ element: arrowRef, padding: 4 }) : undefined,\n ].filter(Boolean) as any,\n });\n\n const hover = useHover(floating.context, {\n enabled: !disableHoverListener,\n delay: { open: delay, close: 60 },\n handleClose: safePolygon(),\n restMs: 20,\n });\n const focus = useFocus(floating.context);\n const dismiss = useDismiss(floating.context, { escapeKey: true, outsidePress: true });\n const role = useRole(floating.context, { role: \"tooltip\" });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role,\n ]);\n\n const id = useId();\n\n const ctx = useMemo<Ctx>(\n () => ({\n open,\n setOpen,\n id,\n placement: floating.placement,\n autoWidth,\n allowArrow: !!arrow,\n refs: floating.refs,\n floatingStyles: floating.floatingStyles,\n middlewareData: floating.middlewareData,\n getReferenceProps,\n getFloatingProps,\n arrowRef,\n }),\n [\n open,\n autoWidth,\n arrow,\n floating.placement,\n floating.refs,\n floating.floatingStyles,\n floating.middlewareData,\n getReferenceProps,\n getFloatingProps,\n ]\n );\n\n return <TooltipCtx.Provider value={ctx}>{children}</TooltipCtx.Provider>;\n};\n\nexport type TooltipTriggerProps = {\n asChild?: boolean;\n children: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n};\n\nexport const TooltipTrigger: React.FC<TooltipTriggerProps> = ({\n asChild = true,\n children,\n className,\n css: userCss,\n}) => {\n const { refs, getReferenceProps, id } = useTooltipCtx();\n const isElement = React.isValidElement(children);\n const isDomChild = isElement && typeof (children as any).type === \"string\";\n\n if (asChild && isElement && isDomChild) {\n const child: any = children;\n const merged = getReferenceProps({\n ...child.props,\n \"aria-describedby\": id,\n ref: mergeRefs(child.ref, refs.setReference),\n className: [child.props?.className || \"\", className || \"\"].join(\" \").trim() || undefined,\n });\n const mergedCss = [\n (child.props?.css as CSSObject) || undefined,\n userCss,\n ].filter(Boolean);\n return React.cloneElement(child, { ...merged, css: mergedCss });\n }\n\n return (\n <span\n ref={refs.setReference}\n className={className}\n css={userCss}\n style={{ display: \"inline-flex\" }}\n {...getReferenceProps({ \"aria-describedby\": id })}\n >\n {children}\n </span>\n );\n};\n\nexport type TooltipContentProps = {\n children: React.ReactNode;\n className?: string;\n css?: Interpolation<Theme>;\n arrowCss?: Interpolation<Theme>;\n};\n\nexport const TooltipContent: React.FC<TooltipContentProps> = ({\n children,\n className,\n css: userCss,\n arrowCss,\n}) => {\n const {\n open,\n refs,\n floatingStyles,\n middlewareData,\n getFloatingProps,\n placement,\n id,\n autoWidth,\n allowArrow,\n arrowRef,\n } = useTooltipCtx();\n\n const theme = usePlainframeUITheme();\n\n const side = (placement.split(\"-\")[0] || \"top\") as \"top\" | \"bottom\" | \"left\" | \"right\";\n const delta = 8;\n const initial =\n side === \"bottom\"\n ? { opacity: 0, y: -delta, scale: 0.98 }\n : side === \"top\"\n ? { opacity: 0, y: +delta, scale: 0.98 }\n : side === \"left\"\n ? { opacity: 0, x: +delta, scale: 0.98 }\n : { opacity: 0, x: -delta, scale: 0.98 };\n\n const exit = initial;\n const transformOrigin =\n side === \"bottom\"\n ? \"center top\"\n : side === \"top\"\n ? \"center bottom\"\n : side === \"left\"\n ? \"right center\"\n : \"left center\";\n\n const tooltipBase = css({\n zIndex: 1300,\n backgroundColor: theme.neutral[900],\n color: theme.neutral[0],\n borderRadius: 8,\n padding: \"6px 9px\",\n fontSize: 12,\n fontWeight: 500,\n lineHeight: 1.25,\n maxWidth: 260,\n whiteSpace: autoWidth ? \"nowrap\" : \"normal\",\n boxShadow: \"0 10px 30px rgba(0,0,0,.18)\",\n pointerEvents: \"auto\",\n transformOrigin,\n });\n\n const arrowBase = css({\n position: \"absolute\",\n width: 10,\n height: 10,\n borderRadius: 2,\n backgroundColor: theme.neutral[900],\n transform: \"rotate(45deg)\",\n pointerEvents: \"none\",\n });\n\n const arrowData = middlewareData.arrow as { x?: number; y?: number } | undefined;\n const staticSide =\n ({ top: \"bottom\", bottom: \"top\", left: \"right\", right: \"left\" } as const)[side];\n\n return (\n <FloatingPortal>\n <AnimatePresence>\n {open && (\n <motion.div\n id={id}\n ref={refs.setFloating}\n role=\"tooltip\"\n data-state=\"open\"\n className={[\"plainframe-ui-tooltip\", className || \"\"].join(\" \").trim()}\n css={[tooltipBase, userCss]}\n style={floatingStyles}\n initial={initial}\n animate={{ opacity: 1, x: 0, y: 0, scale: 1 }}\n exit={exit}\n transition={{\n scale: { type: \"spring\", stiffness: 520, damping: 36, mass: 0.6 },\n x: { type: \"spring\", stiffness: 420, damping: 32, mass: 0.6 },\n y: { type: \"spring\", stiffness: 420, damping: 32, mass: 0.6 },\n opacity: { duration: 0.14, ease: \"linear\" },\n }}\n {...getFloatingProps()}\n >\n {children}\n {allowArrow && (\n <div\n ref={arrowRef}\n className=\"plainframe-ui-tooltip-arrow\"\n css={[arrowBase, arrowCss]}\n style={{\n left: arrowData?.x != null ? `${arrowData.x}px` : undefined,\n top: arrowData?.y != null ? `${arrowData.y}px` : undefined,\n [staticSide]: \"-3px\",\n } as React.CSSProperties}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </FloatingPortal>\n );\n};\n","/** @jsxImportSource @emotion/react */\nimport { Global, css } from \"@emotion/react\";\nimport { usePlainframeUITheme } from \"./ThemeProvider\";\n\nexport function CssBaseline() {\n const t = usePlainframeUITheme();\n return (\n <Global\n styles={css`\n *,*::before,*::after{box-sizing:border-box}\n :where(html){-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}\n html,body,#root{height:100%}\n body{\n margin:0;\n padding:0;\n font-family:${t.fonts.sans};\n line-height:1.3;\n -webkit-font-smoothing:antialiased;\n -moz-osx-font-smoothing:grayscale;\n text-rendering:optimizeLegibility;\n background:${t.surface.appBg};\n color:${t.text.primary};\n }\n :focus-visible{outline:2px solid var(--pf-focus-main);outline-offset:2px}\n ::selection{background:var(--pf-neutral-300);color:var(--pf-neutral-900)}\n a{color:inherit;text-decoration:none}\n a:hover{text-decoration:underline}\n button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit;background:none;border:0}\n input,select,textarea{border-radius:0}\n img,svg,video,canvas,iframe{display:block;max-width:100%}\n table{border-collapse:collapse;border-spacing:0}\n ul,ol{margin:0;padding:0;list-style:none}\n h1,h2,h3,h4,h5,h6,p,figure{margin:0}\n code,kbd,pre,samp{font-family:${t.fonts.mono}}\n hr{border:0;border-top:1px solid ${t.surface.border};margin:0}\n\n html,body{scrollbar-width:none}\n html:hover,body:hover{scrollbar-width:thin;scrollbar-color:var(--pf-neutral-400) transparent}\n\n html::-webkit-scrollbar{width:0;height:0}\n html:hover::-webkit-scrollbar{width:12px;height:12px}\n html::-webkit-scrollbar-track{background:transparent}\n html::-webkit-scrollbar-thumb{\n background:transparent;\n border:3px solid transparent;\n background-clip:content-box;\n border-radius:9999px\n }\n html:hover::-webkit-scrollbar-thumb{background:var(--pf-neutral-300)}\n html:hover::-webkit-scrollbar-thumb:hover{background:var(--pf-neutral-400)}\n\n @media (prefers-reduced-motion:reduce){\n *{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}\n }\n `}\n />\n );\n}\n\nexport const BaseStyles = CssBaseline;\n"],"mappings":"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","names":["React","useRef","css","normalize","spacing","radius","fonts","offset","jsx","radius","useRef","React","rootCss","css","css","jsx","jsxs","css","css","jsx","css","React","cloneElement","isValidElement","css","jsx","isValidElement","toLen","React","radius","rootCss","css","cloneElement","useEffect","useRef","css","jsx","toLen","radius","offset","useRef","useEffect","css","useContext","forwardRef","useMemo","css","jsx","jsxs","useContext","forwardRef","Alert","useMemo","rootCss","css","iconWrapCss","AlertTitle","AlertDescription","useMemo","useState","useEffect","useRef","css","useRef","useState","isValidElement","cloneElement","useId","useMemo","useCallback","forwardRef","css","X","jsx","jsxs","css","px","isValidElement","cloneElement","forwardRef","TextField","useId","useMemo","useState","useCallback","rootCss","labelCss","useRef","X","React","useMemo","useState","useRef","useEffect","useContext","createContext","cloneElement","useCallback","isValidElement","emCss","React","forwardRef","createContext","useContext","useState","isValidElement","cloneElement","useRef","useEffect","ChevronDown","jsx","jsxs","React","forwardRef","Menu","createContext","useContext","useState","ChevronDown","cloneElement","isValidElement","useRef","useEffect","jsx","createContext","useContext","React","useState","useCallback","useRef","useEffect","useMemo","isValidElement","emCss","cloneElement","x","y","kids","positionCss","React","useContext","useMemo","useState","forwardRef","emCss","useEffect","useState","forwardRef","css","jsx","jsxs","forwardRef","Switch","motion","useState","useEffect","css","useCallback","useMemo","useState","forwardRef","css","jsx","jsxs","forwardRef","useState","useMemo","rootCss","css","useCallback","jsx","jsxs","useMenu","useContext","useRootBus","React","MenuItem","emCss","cur","next","useState","useMemo","forwardRef","MenuCheckboxItem","labelCss","MenuSwitchItem","MenuRadioItem","textCss","MenuLabel","React","css","useMemo","useState","useCallback","forwardRef","css","jsx","toLen","resolvePadding","resolveRadius","radius","forwardRef","Container","useState","useMemo","rad","rootCss","css","useCallback","jsx","toLen","spacing","px","React","radius","css","jsx","jsxs","toLen","useState","useRef","useEffect","useMemo","label","first","css","content","useState","useEffect","forwardRef","css","jsx","getSize","forwardRef","useState","useEffect","px","radius","css","textCss","Children","isValidElement","cloneElement","css","jsx","jsxs","toLen","Children","css","isValidElement","cloneElement","css","jsx","jsxs","toLen","css","baseScale","useEffect","useRef","useState","useMemo","emCss","jsx","jsxs","useMemo","useState","useRef","useEffect","emCss","React","css","Fragment","jsx","jsxs","React","rootCss","css","labelCss","React","useMemo","isValidElement","cloneElement","css","css","Fragment","jsx","jsxs","trackCss","radius","rootCss","css","jsx","jsxs","cloneIcon","isValidElement","cloneElement","React","getSize","useMemo","css","labelCss","React","Children","cloneElement","isValidElement","css","jsx","isEl","isValidElement","toLen","toPx","first","Children","React","ButtonGroup","rootCss","css","cloneElement","Children","cloneElement","isValidElement","jsx","isEl","isValidElement","nameOf","toLen","rootCss","Children","cloneElement","React","useMemo","useCallback","forwardRef","css","X","jsx","jsxs","u","hasText","React","getSize","forwardRef","Chip","useMemo","useCallback","css","rootCss","React","useMemo","useRef","useCallback","useId","useState","css","jsx","jsxs","u","React","useRef","useState","useMemo","css","useCallback","useId","rootCss","labelCss","rowCss","React","jsx","React","radius","spacing","React","css","jsx","jsxs","children","useMemo","forwardRef","css","jsx","jsxs","toLen","forwardRef","Divider","labelCss","useMemo","css","useEffect","useMemo","useRef","useState","useCallback","forwardRef","css","motion","AnimatePresence","Fragment","jsx","jsxs","__prevOverflow","toNum","forwardRef","Drawer","radius","useState","useCallback","useEffect","useMemo","useRef","css","AnimatePresence","motion","isValidElement","cloneElement","css","jsx","forwardRef","emCss","jsx","toLen","forwardRef","Flex","emCss","isValidElement","cloneElement","css","jsx","useState","forwardRef","css","css","jsx","toLen","css","jsx","jsxs","toLen","resolveRadius","radius","forwardRef","Image","useState","css","Children","isValidElement","css","jsx","jsxs","px","base","exp","toLen","resolveRadius","radius","ImageStack","Children","isValidElement","rootCss","css","forwardRef","css","jsx","toLen","resolveRadius","radius","forwardRef","Kbd","css","React","useState","useEffect","useMemo","useContext","forwardRef","useCallback","css","isValidElement","cloneElement","css","jsx","toLen","Fragment","jsx","toLen","setRef","mergeRefs","React","useContext","useState","useCallback","useEffect","useMemo","forwardRef","radius","css","useMemo","useState","useCallback","css","jsx","jsxs","sizeTokens","useState","clamp","useCallback","useMemo","css","React","useState","useRef","useMemo","useEffect","forwardRef","createContext","useContext","css","useFloating","autoUpdate","offsetMw","flip","shift","useDismiss","useRole","useInteractions","FloatingPortal","AnimatePresence","motion","jsx","createContext","useContext","setRef","mergeRefs","useEffect","useState","useRef","useMemo","forwardRef","React","css","side","align","radius","useFloating","autoUpdate","offsetMw","flip","shift","useDismiss","useRole","useInteractions","motion","FloatingPortal","AnimatePresence","css","jsx","toCssSize","css","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","css","jsx","jsxs","RadioCtx","createContext","useContext","useState","useRef","useCallback","useMemo","rootCss","css","rowCss","useEffect","labelCss","isValidElement","cloneElement","css","jsx","React","emCss","Fragment","jsx","jsxs","isEl","React","nameOf","anyCheckbox","labelCss","emCss","css","keyframes","jsx","jsxs","px","keyframes","radius","css","useEffect","useMemo","useRef","useState","useCallback","css","AnimatePresence","motion","jsx","jsxs","trackCss","useRef","useState","clamp","useCallback","useEffect","useMemo","rootCss","css","labelCss","React","css","Fragment","jsx","jsxs","css","React","StepItem","React","css","Fragment","jsx","jsxs","unwrapEmotion","React","rootCss","css","useLayoutEffect","useRef","useState","useId","useMemo","useCallback","css","jsx","jsxs","u","mergeCss","css","useId","useMemo","useState","useCallback","rootCss","labelCss","useRef","useLayoutEffect","React","useEffect","css","AnimatePresence","motion","X","Fragment","jsx","jsxs","React","px","radius","first","css","AnimatePresence","useEffect","motion","React","createContext","useContext","useId","useMemo","useRef","useState","css","useFloating","flip","shift","autoUpdate","useDismiss","useRole","useInteractions","FloatingPortal","AnimatePresence","motion","jsx","jsxs","mergeRefs","createContext","useContext","useState","useRef","useFloating","autoUpdate","flip","shift","useDismiss","useRole","useInteractions","useId","useMemo","React","css","FloatingPortal","AnimatePresence","motion","css","jsx","css"]}
|