@inf-monkeys-tech/monkeys-design 1.0.7 → 1.0.8
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/components/runtime/index.d.mts +25 -5
- package/dist/components/runtime/index.d.ts +25 -5
- package/dist/components/runtime/index.js +50 -2
- package/dist/components/runtime/index.js.map +1 -1
- package/dist/components/runtime/index.mjs +50 -3
- package/dist/components/runtime/index.mjs.map +1 -1
- package/dist/components/workbench/index.d.mts +13 -4
- package/dist/components/workbench/index.d.ts +13 -4
- package/dist/components/workbench/index.js +54 -34
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +54 -35
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +54 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -35
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/runtime/ApplicationHandoffLink.tsx","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseDialog.tsx","../../../src/components/runtime/RenderNodeHost.tsx","../../../src/components/runtime/OverlayNodeHost.tsx","../../../src/components/runtime/RenderTreeHost.tsx","../../../src/components/runtime/RenderTreeRuntimeHost.tsx"],"names":["jsx","buildApplicationHandoffUrl","createContext","useContext","useMemo","useState","useEffect","twMerge","jsxs","forwardRef","BaseDialog","useRef","Dialog","Fragment","useCallback","compileRenderTree","scheduleFocus"],"mappings":"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","file":"index.js","sourcesContent":["import type { ApplicationHandoff } from '@inf-monkeys-tech/monkeys';\nimport { buildApplicationHandoffUrl } from '@inf-monkeys-tech/monkeys/runtime';\nimport type { AnchorHTMLAttributes, MouseEvent, ReactNode } from 'react';\n\nexport interface ApplicationHandoffLinkProps\n extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'onClick'> {\n handoff: ApplicationHandoff;\n targetPath?: string;\n targetOrigin?: string;\n children?: ReactNode;\n onActivate?: (\n handoff: ApplicationHandoff,\n event: MouseEvent<HTMLAnchorElement>,\n ) => void;\n}\n\nexport function ApplicationHandoffLink({\n handoff,\n targetPath = handoff.target.path,\n targetOrigin,\n children,\n onActivate,\n ...props\n}: ApplicationHandoffLinkProps) {\n const normalizedTargetOrigin = targetOrigin?.trim();\n const resolvedTargetPath = normalizedTargetOrigin\n ? new URL(targetPath, normalizedTargetOrigin).toString()\n : targetPath;\n\n return (\n <a\n {...props}\n href={buildApplicationHandoffUrl(resolvedTargetPath, handoff)}\n data-monkeys-handoff-id={handoff.handoffId}\n data-monkeys-handoff-source={handoff.source.product}\n data-monkeys-handoff-target={handoff.target.product}\n onClick={(event) => onActivate?.(handoff, event)}\n >\n {children}\n </a>\n );\n}\n","import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseControlTone, BaseDialogProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst dialogTriggerTones = [\n 'default',\n 'primary',\n 'success',\n 'warning',\n 'danger',\n 'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseDialog ${name} must be a boolean.`);\n }\n}\n\nfunction validateTriggerTone(value: unknown) {\n if (\n !dialogTriggerTones.includes(\n value as (typeof dialogTriggerTones)[number],\n )\n ) {\n throw new TypeError(\n 'BaseDialog triggerTone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n}\n\nfunction renderTrigger({\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone,\n triggerDisabled,\n theme,\n}: Pick<\n BaseDialogProps,\n 'trigger' | 'triggerDisabled' | 'triggerIcon' | 'triggerLabel'\n> & {\n triggerTone: BaseControlTone;\n theme: ReturnType<typeof resolveBaseAppearance>;\n}) {\n if (hasRenderableNode(trigger)) {\n return (\n <span\n role=\"button\"\n tabIndex={triggerDisabled ? -1 : 0}\n aria-disabled={triggerDisabled || undefined}\n onKeyDown={(event) => {\n if (triggerDisabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.currentTarget.click();\n }\n }}\n >\n {trigger}\n </span>\n );\n }\n\n if (!hasRenderableNode(triggerLabel)) return null;\n\n return (\n <button\n type=\"button\"\n disabled={triggerDisabled}\n aria-label={\n typeof triggerLabel === 'string' && triggerLabel.trim()\n ? triggerLabel\n : undefined\n }\n className={cn(\n theme.slots.buttonBase,\n getBaseButtonToneClassName(theme, triggerTone),\n triggerDisabled && theme.slots.buttonDisabled,\n )}\n style={{\n ...theme.styles.button,\n ...(triggerDisabled ? theme.styles.buttonDisabled : undefined),\n }}\n >\n {hasRenderableNode(triggerIcon) ? (\n <span data-slot=\"icon\" className={theme.slots.buttonIcon}>\n {triggerIcon}\n </span>\n ) : null}\n <span data-slot=\"label\" className={theme.slots.buttonLabel}>\n {triggerLabel}\n </span>\n </button>\n );\n}\n\nexport const BaseDialog = forwardRef<HTMLDivElement, BaseDialogProps>(\n function BaseDialog(\n {\n open,\n defaultOpen = false,\n title,\n description,\n header,\n footer,\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone = 'default',\n triggerDisabled = false,\n closeLabel,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n showCloseButton = true,\n keepMounted = false,\n trapFocus = true,\n restoreFocus = true,\n initialFocus = 'first-interactive',\n initialFocusRef,\n zIndex,\n portal = false,\n appearance,\n className,\n classNames,\n style,\n children,\n onOpenChange,\n id,\n ...dialogProps\n },\n ref,\n ) {\n if (open !== undefined) validateBoolean(open, 'open');\n validateBoolean(defaultOpen, 'defaultOpen');\n validateBoolean(triggerDisabled, 'triggerDisabled');\n validateBoolean(closeOnEscape, 'closeOnEscape');\n validateBoolean(closeOnOverlayClick, 'closeOnOverlayClick');\n validateBoolean(showCloseButton, 'showCloseButton');\n validateBoolean(keepMounted, 'keepMounted');\n validateBoolean(trapFocus, 'trapFocus');\n validateBoolean(restoreFocus, 'restoreFocus');\n validateBoolean(portal, 'portal');\n validateTriggerTone(triggerTone);\n if (\n initialFocus !== 'first-interactive' &&\n initialFocus !== 'container' &&\n initialFocus !== 'explicit'\n ) {\n throw new TypeError(\n 'BaseDialog initialFocus must be \"first-interactive\", \"container\", or \"explicit\".',\n );\n }\n if (zIndex !== undefined && !Number.isFinite(zIndex)) {\n throw new TypeError('BaseDialog zIndex must be a finite number.');\n }\n\n const messages = useMonkeysLocaleMessages().dialog;\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const resolvedCloseLabel =\n closeLabel === undefined ? messages.close : closeLabel;\n const theme = resolveBaseAppearance(resolvedAppearance);\n const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const panelRef = useRef<HTMLDivElement | null>(null);\n const returnFocusRef = useRef<HTMLElement | null>(null);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : uncontrolledOpen;\n const portalState =\n portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n const hasTitle = hasRenderableNode(title);\n const hasDescription = hasRenderableNode(description);\n const hasCustomHeader = hasRenderableNode(header);\n\n if (\n showCloseButton &&\n (typeof resolvedCloseLabel !== 'string' || !resolvedCloseLabel.trim())\n ) {\n throw new TypeError(\n 'BaseDialog closeLabel must be a non-empty string when showCloseButton is true.',\n );\n }\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n useEffect(() => {\n if (!isOpen || !keepMounted) return undefined;\n const panel = panelRef.current;\n const ownerDocument = panel?.ownerDocument;\n const ownerWindow = ownerDocument?.defaultView;\n if (!panel || !ownerDocument || !ownerWindow) return undefined;\n\n returnFocusRef.current =\n ownerDocument.activeElement instanceof ownerWindow.HTMLElement\n ? ownerDocument.activeElement\n : null;\n const focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',');\n const focusInitial = () => {\n const firstInteractive = panel.querySelector<HTMLElement>(focusableSelector);\n const target =\n initialFocus === 'container'\n ? panel\n : initialFocus === 'explicit'\n ? initialFocusRef?.current ?? panel\n : firstInteractive ?? panel;\n target.focus();\n };\n const frame = ownerWindow.requestAnimationFrame(focusInitial);\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && closeOnEscape) {\n event.preventDefault();\n event.stopPropagation();\n handleOpenChange(false);\n return;\n }\n if (event.key !== 'Tab' || !trapFocus) return;\n const focusable = Array.from(\n panel.querySelectorAll<HTMLElement>(focusableSelector),\n );\n if (focusable.length === 0) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (event.shiftKey && ownerDocument.activeElement === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && ownerDocument.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n };\n ownerWindow.addEventListener('keydown', handleKeyDown);\n return () => {\n ownerWindow.cancelAnimationFrame(frame);\n ownerWindow.removeEventListener('keydown', handleKeyDown);\n if (restoreFocus && returnFocusRef.current?.isConnected) {\n returnFocusRef.current.focus();\n }\n };\n }, [\n closeOnEscape,\n initialFocus,\n initialFocusRef,\n isOpen,\n keepMounted,\n restoreFocus,\n trapFocus,\n ]);\n\n const semanticHeader =\n hasCustomHeader || hasTitle || hasDescription ? (\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"header\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogHeader, classNames?.header)}\n >\n {hasCustomHeader ? header : null}\n {hasTitle ? (\n <Dialog.Title\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"title\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={\n hasCustomHeader\n ? 'sr-only'\n : cn(theme.slots.dialogTitle, classNames?.title)\n }\n >\n {title}\n </Dialog.Title>\n ) : null}\n {hasDescription ? (\n <Dialog.Description\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"description\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={\n hasCustomHeader\n ? 'sr-only'\n : cn(\n theme.slots.dialogDescription,\n classNames?.description,\n )\n }\n >\n {description}\n </Dialog.Description>\n ) : null}\n </div>\n ) : null;\n\n const triggerNode = renderTrigger({\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone,\n triggerDisabled,\n theme,\n });\n\n const dialogLayers = isOpen || keepMounted ? (\n <>\n <Dialog.Overlay\n forceMount={keepMounted || undefined}\n hidden={!isOpen}\n {...componentAttributes}\n aria-hidden=\"true\"\n data-monkeys-component=\"dialog\"\n data-slot=\"overlay\"\n data-portal={portalState}\n className={cn(theme.slots.dialogOverlay, classNames?.overlay)}\n style={{ ...theme.styles.dialogOverlay, zIndex }}\n />\n <div\n {...componentAttributes}\n hidden={!isOpen}\n data-monkeys-component=\"dialog\"\n data-slot=\"content\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogContent, classNames?.content)}\n style={{ zIndex }}\n >\n <Dialog.Content\n forceMount={keepMounted || undefined}\n {...componentAttributes}\n {...(!hasTitle ? { 'aria-labelledby': undefined } : {})}\n {...(!hasDescription ? { 'aria-describedby': undefined } : {})}\n asChild\n onOpenAutoFocus={(event) => {\n if (keepMounted) event.preventDefault();\n }}\n onCloseAutoFocus={(event) => {\n if (keepMounted) event.preventDefault();\n }}\n onEscapeKeyDown={(event) => {\n if (keepMounted || !closeOnEscape) event.preventDefault();\n }}\n onPointerDownOutside={(event) => {\n if (!closeOnOverlayClick) event.preventDefault();\n }}\n >\n <div\n {...componentAttributes}\n ref={panelRef}\n tabIndex={-1}\n aria-modal=\"true\"\n data-monkeys-component=\"dialog\"\n data-slot=\"panel\"\n data-portal={portalState}\n className={cn(theme.slots.dialogPanel, classNames?.panel)}\n style={theme.styles.dialogPanel}\n >\n {semanticHeader}\n\n {showCloseButton ? (\n <Dialog.Close asChild>\n <button\n {...componentAttributes}\n type=\"button\"\n aria-label={resolvedCloseLabel}\n title={resolvedCloseLabel}\n data-monkeys-component=\"dialog\"\n data-slot=\"close\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(\n theme.slots.dialogClose,\n classNames?.close,\n )}\n >\n ×\n </button>\n </Dialog.Close>\n ) : null}\n\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"body\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogBody, classNames?.body)}\n >\n {children}\n </div>\n\n {hasRenderableNode(footer) ? (\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"footer\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogFooter, classNames?.footer)}\n >\n {footer}\n </div>\n ) : null}\n </div>\n </Dialog.Content>\n </div>\n </>\n ) : null;\n\n return (\n <div\n {...componentAttributes}\n {...dialogProps}\n ref={ref}\n id={id}\n data-monkeys-component=\"dialog\"\n data-slot=\"root\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogRoot, classNames?.root, className)}\n style={style}\n >\n <Dialog.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={!keepMounted && trapFocus}\n >\n {triggerNode ? (\n <Dialog.Trigger\n {...componentAttributes}\n asChild\n disabled={triggerDisabled}\n data-monkeys-component=\"dialog\"\n data-slot=\"trigger\"\n data-portal={portalState}\n data-tone={triggerTone}\n data-disabled={triggerDisabled || undefined}\n className={cn(\n theme.slots.dialogTrigger,\n triggerDisabled && theme.slots.dialogTriggerDisabled,\n classNames?.trigger,\n )}\n >\n {triggerNode}\n </Dialog.Trigger>\n ) : null}\n {portal && overlayPortal.shouldPortal ? (\n <Dialog.Portal\n {...overlayPortal.radixPortalProps}\n forceMount={keepMounted || undefined}\n >\n {dialogLayers}\n </Dialog.Portal>\n ) : (\n dialogLayers\n )}\n </Dialog.Root>\n </div>\n );\n },\n);\n","import type { RenderActivation, RenderLayout, RenderNode } from '@inf-monkeys-tech/monkeys';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type {\n HTMLAttributes,\n MutableRefObject,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type RenderNodeHostElement = 'article' | 'aside' | 'div' | 'main' | 'nav' | 'section';\n\nexport interface RenderNodeScrollPosition {\n x: number;\n y: number;\n}\n\nexport interface RenderNodeScrollRestoration {\n read(key: string): RenderNodeScrollPosition | undefined;\n write(key: string, position: RenderNodeScrollPosition): void;\n remove?(key: string): void;\n}\n\nexport interface RenderNodePolicyState {\n active: boolean;\n visible: boolean;\n mounted: boolean;\n queryEnabled: boolean;\n}\n\nexport interface RenderNodeRuntimeState extends RenderNodePolicyState {\n activate(): void;\n setManualQueryEnabled(enabled: boolean): void;\n}\n\nexport interface RenderNodeHostProps\n extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n node: RenderNode;\n as?: RenderNodeHostElement;\n active?: boolean;\n visible?: boolean;\n manualQueryEnabled?: boolean;\n children?: ReactNode | ((runtime: RenderNodeRuntimeState) => ReactNode);\n loading?: ReactNode;\n empty?: ReactNode;\n error?: ReactNode;\n elementRef?: Ref<HTMLElement>;\n scrollRestoration?: RenderNodeScrollRestoration | false;\n onActivate?: (activation: RenderActivation, node: RenderNode) => void;\n onManualQueryEnabledChange?: (enabled: boolean, node: RenderNode) => void;\n onRuntimeStateChange?: (state: RenderNodePolicyState, node: RenderNode) => void;\n}\n\nconst refIdentity = (reference: RenderNode['pageRef'] | undefined) => reference?.id;\n\nexport const getRenderNodeDataAttributes = (node: RenderNode) => ({\n 'data-monkeys-node-id': node.nodeId,\n 'data-monkeys-node-kind': node.kind,\n 'data-monkeys-node-version': node.version,\n 'data-monkeys-owner': node.ownerRepo,\n 'data-monkeys-parent-node': node.parentNodeId,\n 'data-monkeys-slot': node.slot,\n 'data-monkeys-page-id': refIdentity(node.pageRef),\n 'data-monkeys-semantic-id': refIdentity(node.semanticRef),\n 'data-monkeys-data-context-id': refIdentity(node.dataContextRef),\n 'data-monkeys-capability-id': refIdentity(node.capabilityRef),\n 'data-monkeys-provider-id': refIdentity(node.providerRef),\n 'data-monkeys-state-id': refIdentity(node.stateRef),\n 'data-monkeys-frame-owner': node.surface.frameOwner,\n 'data-monkeys-surface-tone': node.surface.tone,\n 'data-monkeys-density': node.surface.density,\n 'data-monkeys-scroll-owner': node.scroll.owner,\n 'data-monkeys-scroll-axis': node.scroll.axis,\n 'data-monkeys-scroll-restore-key': node.scroll.restoreKey,\n 'data-monkeys-virtualization-boundary': node.scroll.virtualizationBoundary,\n 'data-monkeys-activation-id': node.activation.activationId,\n 'data-monkeys-activation-mode': node.activation.mode,\n 'data-monkeys-mount-policy': node.lifecycle.mountPolicy,\n 'data-monkeys-query-policy': node.lifecycle.queryPolicy,\n 'data-monkeys-deep-link': node.lifecycle.deepLink,\n 'data-monkeys-focus-return': node.lifecycle.focusReturn,\n 'data-monkeys-layout-mode': node.layout.mode,\n 'data-monkeys-responsive-rules': node.responsive.length,\n 'data-monkeys-child-count': node.children.length,\n 'data-monkeys-access-id': refIdentity(node.accessRef),\n 'data-monkeys-evidence-id': refIdentity(node.evidenceRef),\n 'data-monkeys-render-state': node.state,\n});\n\nconst sessionStorageKey = (key: string) => `monkeys.render.scroll.${key}`;\n\nexport const sessionRenderNodeScrollRestoration: RenderNodeScrollRestoration = {\n read(key) {\n if (typeof window === 'undefined') return undefined;\n try {\n const value = window.sessionStorage.getItem(sessionStorageKey(key));\n if (!value) return undefined;\n const parsed = JSON.parse(value) as Partial<RenderNodeScrollPosition>;\n return typeof parsed.x === 'number' && typeof parsed.y === 'number'\n ? { x: parsed.x, y: parsed.y }\n : undefined;\n } catch {\n return undefined;\n }\n },\n write(key, position) {\n if (typeof window === 'undefined') return;\n try {\n window.sessionStorage.setItem(sessionStorageKey(key), JSON.stringify(position));\n } catch {\n // Storage may be unavailable in private or embedded browser contexts.\n }\n },\n remove(key) {\n if (typeof window === 'undefined') return;\n try {\n window.sessionStorage.removeItem(sessionStorageKey(key));\n } catch {\n // Storage may be unavailable in private or embedded browser contexts.\n }\n },\n};\n\nexport const resolveRenderNodeLayout = (node: RenderNode, viewportWidth?: number): RenderLayout => {\n if (viewportWidth === undefined) return node.layout;\n const matching = node.responsive.filter((rule) =>\n (rule.minWidthPx === undefined || viewportWidth >= rule.minWidthPx)\n && (rule.maxWidthPx === undefined || viewportWidth <= rule.maxWidthPx));\n return matching.length === 0 ? node.layout : matching[matching.length - 1].layout;\n};\n\nconst LAYOUT_MODE_CLASSES: Record<RenderLayout['mode'], string> = {\n contents: 'contents',\n block: 'block',\n flex: 'flex',\n grid: 'grid',\n absolute: 'absolute',\n};\nconst ALIGN_CLASSES = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' } as const;\nconst JUSTIFY_CLASSES = { start: 'justify-start', center: 'justify-center', end: 'justify-end', between: 'justify-between', around: 'justify-around' } as const;\n\nexport const getRenderLayoutClassName = (layout: RenderLayout): string => cn(\n LAYOUT_MODE_CLASSES[layout.mode],\n layout.mode === 'flex' && (layout.direction === 'row' ? 'flex-row' : 'flex-col'),\n layout.align && ALIGN_CLASSES[layout.align],\n layout.justify && JUSTIFY_CLASSES[layout.justify],\n);\n\nconst shouldMountNode = (node: RenderNode, active: boolean, visible: boolean) => {\n if (node.lifecycle.mountPolicy === 'always') return true;\n if (node.lifecycle.mountPolicy === 'when-visible') return visible;\n return active;\n};\n\nconst shouldQueryNode = (\n node: RenderNode,\n active: boolean,\n visible: boolean,\n manualQueryEnabled: boolean,\n) => {\n if (node.lifecycle.queryPolicy === 'always') return true;\n if (node.lifecycle.queryPolicy === 'when-visible') return visible;\n if (node.lifecycle.queryPolicy === 'when-active') return active;\n return manualQueryEnabled;\n};\n\nexport const resolveRenderNodePolicyState = (\n node: RenderNode,\n input: {\n active: boolean;\n visible: boolean;\n manualQueryEnabled?: boolean;\n previouslyMounted?: boolean;\n },\n): RenderNodePolicyState => {\n const policyMounted = shouldMountNode(node, input.active, input.visible);\n return {\n active: input.active,\n visible: input.visible,\n mounted: policyMounted || (node.lifecycle.retainOnDeactivate && input.previouslyMounted === true),\n queryEnabled: shouldQueryNode(node, input.active, input.visible, input.manualQueryEnabled === true),\n };\n};\n\nconst resolveRenderNodeContent = (\n node: RenderNode,\n content: ReactNode,\n loading: ReactNode,\n empty: ReactNode,\n error: ReactNode,\n) => {\n if (node.state === 'loading' && loading !== undefined) return loading;\n if (node.state === 'empty' && empty !== undefined) return empty;\n if (node.state === 'error' && error !== undefined) return error;\n return content;\n};\n\nconst assignRef = (ref: Ref<HTMLElement> | undefined, value: HTMLElement | null) => {\n if (typeof ref === 'function') ref(value);\n else if (ref) (ref as MutableRefObject<HTMLElement | null>).current = value;\n};\n\nexport function RenderNodeHost({\n node,\n as = 'div',\n active = true,\n visible = active,\n manualQueryEnabled = false,\n children,\n loading,\n empty,\n error,\n elementRef,\n scrollRestoration = sessionRenderNodeScrollRestoration,\n onActivate,\n onManualQueryEnabledChange,\n onRuntimeStateChange,\n onScroll,\n className,\n hidden,\n role,\n 'aria-live': ariaLive,\n 'aria-atomic': ariaAtomic,\n ...props\n}: RenderNodeHostProps) {\n const Component = as;\n const hostRef = useRef<HTMLElement | null>(null);\n const [viewportWidth, setViewportWidth] = useState<number | undefined>(() =>\n typeof window === 'undefined' ? undefined : window.innerWidth);\n const [mountedNodeId, setMountedNodeId] = useState<string | undefined>(() =>\n shouldMountNode(node, active, visible) ? node.nodeId : undefined);\n const policyMounted = shouldMountNode(node, active, visible);\n\n useEffect(() => {\n if (node.responsive.length === 0 || typeof window === 'undefined') return undefined;\n const handleResize = () => setViewportWidth(window.innerWidth);\n handleResize();\n window.addEventListener('resize', handleResize, { passive: true });\n return () => window.removeEventListener('resize', handleResize);\n }, [node.responsive.length]);\n\n const resolvedLayout = useMemo(() => resolveRenderNodeLayout(node, viewportWidth), [node, viewportWidth]);\n\n useEffect(() => {\n if (!active || !visible || !node.lifecycle.deepLink || !['page', 'record'].includes(node.kind)) return;\n const element = hostRef.current;\n if (!element || element.style.display === 'contents') return;\n element.focus({ preventScroll: true });\n }, [active, node.kind, node.lifecycle.deepLink, node.nodeId, visible]);\n\n useEffect(() => {\n if (policyMounted) setMountedNodeId(node.nodeId);\n else if (!node.lifecycle.retainOnDeactivate) setMountedNodeId(undefined);\n }, [node.lifecycle.retainOnDeactivate, node.nodeId, policyMounted]);\n\n const policyState = useMemo(() => resolveRenderNodePolicyState(node, {\n active,\n visible,\n manualQueryEnabled,\n previouslyMounted: mountedNodeId === node.nodeId,\n }), [active, manualQueryEnabled, mountedNodeId, node, visible]);\n\n const activate = useCallback(() => {\n onActivate?.(node.activation, node);\n }, [node, onActivate]);\n\n const setManualQueryEnabled = useCallback((enabled: boolean) => {\n onManualQueryEnabledChange?.(enabled, node);\n }, [node, onManualQueryEnabledChange]);\n\n const runtimeState = useMemo<RenderNodeRuntimeState>(() => ({\n ...policyState,\n activate,\n setManualQueryEnabled,\n }), [activate, policyState, setManualQueryEnabled]);\n\n useEffect(() => {\n onRuntimeStateChange?.(policyState, node);\n }, [node, onRuntimeStateChange, policyState]);\n\n const setHostRef = useCallback((value: HTMLElement | null) => {\n hostRef.current = value;\n assignRef(elementRef, value);\n }, [elementRef]);\n\n const scrollAdapter = scrollRestoration === false ? undefined : scrollRestoration;\n const restoresHostScroll = scrollAdapter !== undefined\n && node.scroll.owner !== 'provider'\n && !node.scroll.virtualizationBoundary\n && node.scroll.axis !== 'none'\n && node.scroll.restoreKey !== undefined;\n\n const readPosition = useCallback((): RenderNodeScrollPosition => {\n const element = hostRef.current;\n if (!element) return { x: 0, y: 0 };\n return {\n x: node.scroll.axis === 'y' ? 0 : element.scrollLeft,\n y: node.scroll.axis === 'x' ? 0 : element.scrollTop,\n };\n }, [node.scroll.axis]);\n\n useEffect(() => {\n if (!policyState.mounted || !restoresHostScroll || !scrollAdapter) return undefined;\n const key = node.scroll.restoreKey!;\n const element = hostRef.current;\n const position = scrollAdapter.read(key);\n let frame: number | undefined;\n if (element && position) {\n const restore = () => element.scrollTo({\n left: node.scroll.axis === 'y' ? element.scrollLeft : position.x,\n top: node.scroll.axis === 'x' ? element.scrollTop : position.y,\n behavior: 'auto',\n });\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n frame = window.requestAnimationFrame(restore);\n } else {\n restore();\n }\n }\n return () => {\n if (frame !== undefined && typeof window !== 'undefined') window.cancelAnimationFrame(frame);\n scrollAdapter.write(key, readPosition());\n };\n }, [node.scroll.axis, node.scroll.restoreKey, policyState.mounted, readPosition, restoresHostScroll, scrollAdapter]);\n\n if (!policyState.mounted) return null;\n\n const renderedChildren = typeof children === 'function' ? children(runtimeState) : children;\n return (\n <Component\n {...props}\n {...getRenderNodeDataAttributes(node)}\n ref={setHostRef as never}\n className={cn(getRenderLayoutClassName(resolvedLayout), className)}\n style={{\n ...(resolvedLayout.mode === 'grid' && resolvedLayout.columns\n ? { gridTemplateColumns: `repeat(${resolvedLayout.columns}, minmax(0, 1fr))` }\n : {}),\n ...props.style,\n }}\n hidden={hidden || !policyState.visible || undefined}\n role={role ?? (node.state === 'error' ? 'alert' : node.state === 'loading' || node.state === 'empty' ? 'status' : undefined)}\n tabIndex={props.tabIndex ?? (node.lifecycle.deepLink && ['page', 'record'].includes(node.kind) ? -1 : undefined)}\n data-monkeys-active={policyState.active}\n data-monkeys-mounted={policyState.mounted}\n data-monkeys-query-enabled={policyState.queryEnabled}\n aria-busy={node.state === 'loading' || undefined}\n aria-disabled={node.state === 'disabled' || undefined}\n aria-hidden={!policyState.visible || undefined}\n aria-live={ariaLive ?? (node.state === 'error' ? 'assertive' : node.state === 'loading' || node.state === 'empty' ? 'polite' : undefined)}\n aria-atomic={ariaAtomic ?? (node.state === 'loading' || node.state === 'empty' || node.state === 'error' ? true : undefined)}\n onScroll={(event) => {\n if (restoresHostScroll && scrollAdapter && node.scroll.restoreKey) {\n scrollAdapter.write(node.scroll.restoreKey, readPosition());\n }\n onScroll?.(event);\n }}\n >\n {resolveRenderNodeContent(node, renderedChildren, loading, empty, error)}\n </Component>\n );\n}\n","import type { OverlayNode, OverlayZIndexLane } from '@inf-monkeys-tech/monkeys';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport type { ReactNode, RefObject } from 'react';\n\nimport { BaseDialog } from '../base/BaseDialog';\nimport type { BaseAppearance, BaseDialogClassNames } from '../base/types';\nimport {\n getRenderNodeDataAttributes,\n RenderNodeHost,\n} from './RenderNodeHost';\nimport type {\n RenderNodeHostProps,\n RenderNodeRuntimeState,\n} from './RenderNodeHost';\n\nexport interface OverlayHistoryAdapter {\n getCurrentUrl(): string;\n push(url: string): void;\n replace(url: string): void;\n back(): void;\n subscribe(listener: (url: string) => void): () => void;\n}\n\nexport interface OverlayNodeRuntimeContext extends RenderNodeRuntimeState {\n open: boolean;\n zIndexLane: OverlayZIndexLane;\n zIndex: number;\n initialFocusRef?: RefObject<HTMLElement | null>;\n focusReturnRef?: RefObject<HTMLElement | null>;\n renderNodeAttributes: ReturnType<typeof getRenderNodeDataAttributes>;\n onOpenChange(open: boolean): void;\n requestClose(): void;\n}\n\nexport interface OverlayNodeHostProps {\n node: OverlayNode;\n open: boolean;\n renderStrategy?: 'dialog' | 'delegate';\n title?: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n closeLabel?: string;\n children?: ReactNode | ((runtime: OverlayNodeRuntimeContext) => ReactNode);\n appearance?: BaseAppearance;\n className?: string;\n classNames?: BaseDialogClassNames;\n initialFocusRef?: RefObject<HTMLElement | null>;\n focusReturnRef?: RefObject<HTMLElement | null>;\n historyAdapter?: OverlayHistoryAdapter | false;\n manualQueryEnabled?: boolean;\n onActivate?: RenderNodeHostProps['onActivate'];\n onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n onOpenChange: (open: boolean) => void;\n}\n\nconst OVERLAY_Z_INDEX: Record<OverlayZIndexLane, number> = {\n popover: 40,\n drawer: 50,\n modal: 60,\n fullscreen: 70,\n system: 80,\n};\n\nexport const getOverlayZIndex = (lane: OverlayZIndexLane) => OVERLAY_Z_INDEX[lane];\n\nconst OVERLAY_PRESENTATION_CLASS_NAMES: Record<\n OverlayNode['presentation'],\n Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'>\n> = {\n drawer: {\n content: '!items-stretch !justify-end !p-0',\n panel: '!h-dvh !max-h-none !w-full !max-w-[min(100vw,40rem)] !rounded-none !border-y-0 !border-r-0',\n body: 'min-h-0 flex-1 overflow-auto',\n },\n modal: {},\n fullscreen: {\n content: '!items-stretch !justify-stretch !p-0',\n panel: '!h-dvh !max-h-none !w-screen !max-w-none !rounded-none !border-0',\n body: 'min-h-0 flex-1 overflow-auto',\n },\n};\n\nexport const getOverlayPresentationClassNames = (\n presentation: OverlayNode['presentation'],\n): Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'> => ({\n ...OVERLAY_PRESENTATION_CLASS_NAMES[presentation],\n});\n\nconst relativeUrl = (input: string, url: URL) =>\n input.startsWith('/') && !input.startsWith('//')\n ? `${url.pathname}${url.search}${url.hash}`\n : url.toString();\n\nexport const isOverlayUrlActive = (node: OverlayNode, input: string): boolean => {\n const url = new URL(input, 'https://monkeys.local');\n return url.searchParams.get(node.url.parameter) === node.url.value;\n};\n\nexport const buildOverlayUrl = (node: OverlayNode, input: string, open: boolean): string => {\n const url = new URL(input, 'https://monkeys.local');\n if (open) url.searchParams.set(node.url.parameter, node.url.value);\n else if (url.searchParams.get(node.url.parameter) === node.url.value) url.searchParams.delete(node.url.parameter);\n return relativeUrl(input, url);\n};\n\nexport const browserOverlayHistoryAdapter: OverlayHistoryAdapter = {\n getCurrentUrl() {\n return typeof window === 'undefined' ? 'https://monkeys.local/' : window.location.href;\n },\n push(url) {\n if (typeof window !== 'undefined') window.history.pushState(window.history.state, '', url);\n },\n replace(url) {\n if (typeof window !== 'undefined') window.history.replaceState(window.history.state, '', url);\n },\n back() {\n if (typeof window !== 'undefined') window.history.back();\n },\n subscribe(listener) {\n if (typeof window === 'undefined') return () => undefined;\n const handlePopState = () => listener(window.location.href);\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n },\n};\n\nconst scheduleFocus = (target: HTMLElement | null | undefined) => {\n if (!target?.isConnected) return;\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => target.focus());\n } else {\n target.focus();\n }\n};\n\nexport function OverlayNodeHost({\n node,\n open,\n renderStrategy = 'dialog',\n title,\n description,\n footer,\n closeLabel,\n children,\n appearance,\n className,\n classNames,\n initialFocusRef,\n focusReturnRef,\n historyAdapter = browserOverlayHistoryAdapter,\n manualQueryEnabled = false,\n onActivate,\n onRuntimeStateChange,\n onOpenChange,\n}: OverlayNodeHostProps) {\n const historyEntryOwnedRef = useRef(false);\n const initializedUrlRef = useRef(false);\n const zIndex = getOverlayZIndex(node.zIndexLane);\n const syncUrl = useCallback((nextOpen: boolean) => {\n if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return;\n const currentUrl = historyAdapter.getCurrentUrl();\n if (isOverlayUrlActive(node, currentUrl) === nextOpen) return;\n const nextUrl = buildOverlayUrl(node, currentUrl, nextOpen);\n if (nextOpen) {\n if (node.url.openMode === 'push') {\n historyAdapter.push(nextUrl);\n historyEntryOwnedRef.current = true;\n } else {\n historyAdapter.replace(nextUrl);\n historyEntryOwnedRef.current = false;\n }\n return;\n }\n if (node.url.closeMode === 'back' && historyEntryOwnedRef.current) {\n historyEntryOwnedRef.current = false;\n historyAdapter.back();\n } else {\n historyAdapter.replace(nextUrl);\n historyEntryOwnedRef.current = false;\n }\n }, [historyAdapter, node]);\n\n const requestOpenChange = useCallback((nextOpen: boolean) => {\n syncUrl(nextOpen);\n onOpenChange(nextOpen);\n }, [onOpenChange, syncUrl]);\n\n useEffect(() => {\n if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return undefined;\n const urlOpen = isOverlayUrlActive(node, historyAdapter.getCurrentUrl());\n if (!initializedUrlRef.current) {\n initializedUrlRef.current = true;\n if (urlOpen && !open) onOpenChange(true);\n else if (!urlOpen && open) syncUrl(true);\n } else if (urlOpen !== open) {\n syncUrl(open);\n }\n return historyAdapter.subscribe((url) => {\n historyEntryOwnedRef.current = false;\n const nextOpen = isOverlayUrlActive(node, url);\n if (nextOpen !== open) onOpenChange(nextOpen);\n });\n }, [historyAdapter, node, onOpenChange, open, syncUrl]);\n\n useEffect(() => {\n if (!open || !node.renderNode.lifecycle.focusReturn || typeof document === 'undefined') return undefined;\n const target = focusReturnRef?.current\n ?? (document.activeElement instanceof HTMLElement ? document.activeElement : null);\n return () => scheduleFocus(focusReturnRef?.current ?? target);\n }, [focusReturnRef, node.renderNode.lifecycle.focusReturn, open]);\n\n const renderNodeAttributes = useMemo(\n () => getRenderNodeDataAttributes(node.renderNode),\n [node.renderNode],\n );\n const presentationClassNames = getOverlayPresentationClassNames(node.presentation);\n const resolvedClassNames: BaseDialogClassNames = {\n ...classNames,\n body: classNames?.body ?? presentationClassNames.body,\n content: classNames?.content ?? presentationClassNames.content,\n panel: classNames?.panel ?? presentationClassNames.panel,\n };\n\n return (\n <RenderNodeHost\n node={node.renderNode}\n active={open}\n visible={open}\n manualQueryEnabled={manualQueryEnabled}\n className={className}\n style={renderStrategy === 'delegate' ? { display: 'contents' } : undefined}\n onActivate={onActivate}\n onRuntimeStateChange={onRuntimeStateChange}\n >\n {(runtime) => {\n const context: OverlayNodeRuntimeContext = {\n ...runtime,\n open,\n zIndexLane: node.zIndexLane,\n zIndex,\n initialFocusRef,\n focusReturnRef,\n renderNodeAttributes,\n onOpenChange: requestOpenChange,\n requestClose: () => requestOpenChange(false),\n };\n const content = typeof children === 'function' ? children(context) : children;\n if (renderStrategy === 'delegate') return content;\n return (\n <BaseDialog\n id={node.overlayId}\n open={open}\n title={title}\n description={description}\n footer={footer}\n closeLabel={closeLabel}\n closeOnEscape={node.close.escape}\n closeOnOverlayClick={node.close.backdrop}\n keepMounted={node.renderNode.lifecycle.retainOnDeactivate}\n trapFocus={node.focus.trap}\n restoreFocus={false}\n initialFocus={node.focus.initial}\n initialFocusRef={initialFocusRef}\n zIndex={zIndex}\n appearance={appearance}\n classNames={resolvedClassNames}\n data-monkeys-overlay-presentation={node.presentation}\n data-monkeys-overlay-z-index-lane={node.zIndexLane}\n onOpenChange={requestOpenChange}\n >\n {content}\n </BaseDialog>\n );\n }}\n </RenderNodeHost>\n );\n}\n","import type { RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { Fragment, useMemo } from 'react';\nimport type { ReactNode, Ref } from 'react';\n\nimport { RenderNodeHost } from './RenderNodeHost';\nimport type { RenderNodeHostElement, RenderNodeHostProps, RenderNodeRuntimeState } from './RenderNodeHost';\n\nexport interface RenderTreeNodeContext extends RenderNodeRuntimeState {\n node: RenderNode;\n children: ReactNode;\n}\n\nexport interface RenderTreeHostProps {\n tree: RenderTree;\n activeNodeIds?: ReadonlySet<string>;\n visibleNodeIds?: ReadonlySet<string>;\n manualQueryNodeIds?: ReadonlySet<string>;\n elementForNode?: (node: RenderNode) => RenderNodeHostElement;\n classNameForNode?: (node: RenderNode) => string | undefined;\n elementRefForNode?: (node: RenderNode) => Ref<HTMLElement> | undefined;\n scrollRestoration?: RenderNodeHostProps['scrollRestoration'];\n renderNode?: (context: RenderTreeNodeContext) => ReactNode;\n onActivate?: RenderNodeHostProps['onActivate'];\n onManualQueryEnabledChange?: RenderNodeHostProps['onManualQueryEnabledChange'];\n onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n}\n\nconst defaultElementForNode = (node: RenderNode): RenderNodeHostElement => {\n if (node.kind === 'shell') return 'main';\n if (node.kind === 'navigation') return 'nav';\n if (node.kind === 'detail') return 'aside';\n if (node.kind === 'record') return 'article';\n return 'section';\n};\n\nexport function RenderTreeHost({\n tree,\n activeNodeIds,\n visibleNodeIds,\n manualQueryNodeIds,\n elementForNode = defaultElementForNode,\n classNameForNode,\n elementRefForNode,\n scrollRestoration,\n renderNode,\n onActivate,\n onManualQueryEnabledChange,\n onRuntimeStateChange,\n}: RenderTreeHostProps) {\n const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n\n const renderBranch = (node: RenderNode): ReactNode => {\n const descendants = compiled.childrenOf(node.nodeId).map((child) => (\n <Fragment key={child.nodeId}>{renderBranch(child)}</Fragment>\n ));\n return (\n <RenderNodeHost\n key={node.nodeId}\n node={node}\n as={elementForNode(node)}\n active={activeNodeIds?.has(node.nodeId) ?? true}\n visible={visibleNodeIds?.has(node.nodeId) ?? true}\n manualQueryEnabled={manualQueryNodeIds?.has(node.nodeId) ?? false}\n className={classNameForNode?.(node)}\n elementRef={elementRefForNode?.(node)}\n scrollRestoration={scrollRestoration}\n onActivate={onActivate}\n onManualQueryEnabledChange={onManualQueryEnabledChange}\n onRuntimeStateChange={onRuntimeStateChange}\n >\n {(runtime) => renderNode?.({ ...runtime, node, children: descendants }) ?? descendants}\n </RenderNodeHost>\n );\n };\n\n return <>{renderBranch(compiled.root)}</>;\n}\n","import type { RenderActivation, RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { RenderTreeHost } from './RenderTreeHost';\nimport type { RenderTreeHostProps } from './RenderTreeHost';\n\nexport interface RenderTreeRuntimeSnapshot {\n contract: 'RenderTreeRuntimeSnapshot';\n treeId: string;\n activeNodeIds: string[];\n manualQueryNodeIds: string[];\n selectedActivationId?: string;\n}\n\nexport interface RenderTreeHistoryAdapter {\n read(): RenderTreeRuntimeSnapshot | undefined;\n replace(snapshot: RenderTreeRuntimeSnapshot): void;\n push(snapshot: RenderTreeRuntimeSnapshot): void;\n navigate(path: string, mode: 'push' | 'replace', snapshot: RenderTreeRuntimeSnapshot): void;\n subscribe(listener: (snapshot: RenderTreeRuntimeSnapshot | undefined) => void): () => void;\n}\n\nconst STATE_KEY = '__monkeysRenderTree';\n\nconst readBrowserSnapshot = (): RenderTreeRuntimeSnapshot | undefined => {\n if (typeof window === 'undefined') return undefined;\n const value = window.history.state?.[STATE_KEY] as RenderTreeRuntimeSnapshot | undefined;\n return value?.contract === 'RenderTreeRuntimeSnapshot' ? value : undefined;\n};\n\nconst withSnapshot = (snapshot: RenderTreeRuntimeSnapshot) => ({\n ...(typeof window === 'undefined' || !window.history.state || typeof window.history.state !== 'object'\n ? {}\n : window.history.state),\n [STATE_KEY]: snapshot,\n});\n\nconst notifyBrowserHistory = () => {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new PopStateEvent('popstate', { state: window.history.state }));\n};\n\nexport const browserRenderTreeHistoryAdapter: RenderTreeHistoryAdapter = {\n read: readBrowserSnapshot,\n replace(snapshot) {\n if (typeof window !== 'undefined') window.history.replaceState(withSnapshot(snapshot), '', window.location.href);\n },\n push(snapshot) {\n if (typeof window !== 'undefined') window.history.pushState(withSnapshot(snapshot), '', window.location.href);\n },\n navigate(path, mode, snapshot) {\n if (typeof window === 'undefined') return;\n window.history[mode === 'replace' ? 'replaceState' : 'pushState'](withSnapshot(snapshot), '', path);\n notifyBrowserHistory();\n },\n subscribe(listener) {\n if (typeof window === 'undefined') return () => undefined;\n const onPopState = () => listener(readBrowserSnapshot());\n window.addEventListener('popstate', onPopState);\n return () => window.removeEventListener('popstate', onPopState);\n },\n};\n\nexport interface RenderTreeRuntimeHostProps\n extends Omit<\n RenderTreeHostProps,\n | 'activeNodeIds'\n | 'visibleNodeIds'\n | 'manualQueryNodeIds'\n | 'onActivate'\n | 'onManualQueryEnabledChange'\n | 'elementRefForNode'\n > {\n tree: RenderTree;\n historyAdapter?: RenderTreeHistoryAdapter | false;\n onActivate?: RenderTreeHostProps['onActivate'];\n}\n\nconst scheduleFocus = (target: HTMLElement | undefined) => {\n if (!target?.isConnected) return;\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => target.focus({ preventScroll: true }));\n } else {\n target.focus({ preventScroll: true });\n }\n};\n\nexport function RenderTreeRuntimeHost({\n tree,\n historyAdapter = browserRenderTreeHistoryAdapter,\n onActivate,\n onRuntimeStateChange,\n ...props\n}: RenderTreeRuntimeHostProps) {\n const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n const allNodeIds = useMemo(() => new Set(compiled.traversal.map((node) => node.nodeId)), [compiled]);\n const [activeNodeIds, setActiveNodeIds] = useState<Set<string>>(() => new Set(allNodeIds));\n const [manualQueryNodeIds, setManualQueryNodeIds] = useState<Set<string>>(() => new Set());\n const selectedActivationIdRef = useRef<string>();\n const activeNodeIdsRef = useRef(activeNodeIds);\n const manualQueryNodeIdsRef = useRef(manualQueryNodeIds);\n const focusReturnTargets = useRef(new Map<string, HTMLElement>());\n\n const snapshot = useCallback((\n nextActive = activeNodeIdsRef.current,\n nextManual = manualQueryNodeIdsRef.current,\n selectedActivationId = selectedActivationIdRef.current,\n ): RenderTreeRuntimeSnapshot => ({\n contract: 'RenderTreeRuntimeSnapshot',\n treeId: tree.treeId,\n activeNodeIds: [...nextActive],\n manualQueryNodeIds: [...nextManual],\n selectedActivationId,\n }), [tree.treeId]);\n\n const applySnapshot = useCallback((value: RenderTreeRuntimeSnapshot | undefined) => {\n if (!value || value.treeId !== tree.treeId) return false;\n if (value.activeNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n if (value.manualQueryNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n const active = new Set(value.activeNodeIds);\n if (!active.has(tree.rootNodeId)) return false;\n const manual = new Set(value.manualQueryNodeIds);\n selectedActivationIdRef.current = value.selectedActivationId;\n activeNodeIdsRef.current = active;\n manualQueryNodeIdsRef.current = manual;\n setActiveNodeIds(active);\n setManualQueryNodeIds(manual);\n return true;\n }, [allNodeIds, tree.rootNodeId, tree.treeId]);\n\n useEffect(() => {\n const initial = historyAdapter === false ? undefined : historyAdapter.read();\n if (!applySnapshot(initial)) {\n const active = new Set(allNodeIds);\n const manual = new Set<string>();\n activeNodeIdsRef.current = active;\n manualQueryNodeIdsRef.current = manual;\n selectedActivationIdRef.current = undefined;\n setActiveNodeIds(active);\n setManualQueryNodeIds(manual);\n historyAdapter !== false && historyAdapter.replace(snapshot(active, manual));\n }\n return historyAdapter === false ? undefined : historyAdapter.subscribe(applySnapshot);\n }, [allNodeIds, applySnapshot, historyAdapter, snapshot]);\n\n const selectNode = useCallback((node: RenderNode) => {\n const next = new Set(compiled.ancestorsOf(node.nodeId).map((ancestor) => ancestor.nodeId));\n const addDescendants = (current: RenderNode) => {\n next.add(current.nodeId);\n compiled.childrenOf(current.nodeId).forEach(addDescendants);\n };\n addDescendants(node);\n return next;\n }, [compiled]);\n\n const handleActivate = useCallback((activation: RenderActivation, node: RenderNode) => {\n if (node.lifecycle.focusReturn && typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {\n focusReturnTargets.current.set(node.nodeId, document.activeElement);\n }\n selectedActivationIdRef.current = activation.activationId;\n const nextActive = activation.mode === 'select' || activation.mode === 'inline'\n ? selectNode(node)\n : activeNodeIdsRef.current;\n activeNodeIdsRef.current = nextActive;\n setActiveNodeIds(nextActive);\n const nextSnapshot = snapshot(nextActive);\n\n if (activation.mode === 'navigate') {\n if (!activation.targetPath) throw new TypeError(`Navigate activation ${activation.activationId} has no targetPath.`);\n if (historyAdapter !== false) historyAdapter.navigate(activation.targetPath, activation.history ?? 'push', nextSnapshot);\n } else if (historyAdapter !== false && node.lifecycle.deepLink) {\n if (activation.history === 'push') historyAdapter.push(nextSnapshot);\n else historyAdapter.replace(nextSnapshot);\n }\n onActivate?.(activation, node);\n }, [historyAdapter, onActivate, selectNode, snapshot]);\n\n const handleManualQueryEnabledChange = useCallback((enabled: boolean, node: RenderNode) => {\n const next = new Set(manualQueryNodeIdsRef.current);\n if (enabled) next.add(node.nodeId);\n else next.delete(node.nodeId);\n manualQueryNodeIdsRef.current = next;\n setManualQueryNodeIds(next);\n historyAdapter !== false && historyAdapter.replace(snapshot(activeNodeIdsRef.current, next));\n }, [historyAdapter, snapshot]);\n\n const previousActive = useRef(activeNodeIds);\n useEffect(() => {\n for (const nodeId of previousActive.current) {\n if (activeNodeIds.has(nodeId)) continue;\n const node = compiled.nodesById.get(nodeId);\n if (node?.lifecycle.focusReturn) scheduleFocus(focusReturnTargets.current.get(nodeId));\n }\n previousActive.current = activeNodeIds;\n }, [activeNodeIds, compiled.nodesById]);\n\n return (\n <RenderTreeHost\n {...props}\n tree={tree}\n activeNodeIds={activeNodeIds}\n visibleNodeIds={activeNodeIds}\n manualQueryNodeIds={manualQueryNodeIds}\n onActivate={handleActivate}\n onManualQueryEnabledChange={handleManualQueryEnabledChange}\n onRuntimeStateChange={onRuntimeStateChange}\n />\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/runtime/ApplicationHandoffLink.tsx","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/base/BasePortal.tsx","../../../src/components/base/internal/overlayPortal.tsx","../../../src/components/base/utils.ts","../../../src/components/base/theme.ts","../../../src/components/base/BaseDialog.tsx","../../../src/components/runtime/RenderNodeHost.tsx","../../../src/components/runtime/OverlayNodeHost.tsx","../../../src/components/runtime/RenderTreeHost.tsx","../../../src/components/runtime/RenderTreeRuntimeHost.tsx","../../../src/components/runtime/RenderTreeRegistryHost.tsx"],"names":["jsx","buildApplicationHandoffUrl","createContext","useContext","useMemo","useState","useEffect","twMerge","jsxs","forwardRef","BaseDialog","useRef","Dialog","Fragment","useCallback","compileRenderTree","scheduleFocus"],"mappings":"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","file":"index.js","sourcesContent":["import type { ApplicationHandoff } from '@inf-monkeys-tech/monkeys';\nimport { buildApplicationHandoffUrl } from '@inf-monkeys-tech/monkeys/runtime';\nimport type { AnchorHTMLAttributes, MouseEvent, ReactNode } from 'react';\n\nexport interface ApplicationHandoffLinkProps\n extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'onClick'> {\n handoff: ApplicationHandoff;\n targetPath?: string;\n targetOrigin?: string;\n children?: ReactNode;\n onActivate?: (\n handoff: ApplicationHandoff,\n event: MouseEvent<HTMLAnchorElement>,\n ) => void;\n}\n\nexport function ApplicationHandoffLink({\n handoff,\n targetPath = handoff.target.path,\n targetOrigin,\n children,\n onActivate,\n ...props\n}: ApplicationHandoffLinkProps) {\n const normalizedTargetOrigin = targetOrigin?.trim();\n const resolvedTargetPath = normalizedTargetOrigin\n ? new URL(targetPath, normalizedTargetOrigin).toString()\n : targetPath;\n\n return (\n <a\n {...props}\n href={buildApplicationHandoffUrl(resolvedTargetPath, handoff)}\n data-monkeys-handoff-id={handoff.handoffId}\n data-monkeys-handoff-source={handoff.source.product}\n data-monkeys-handoff-target={handoff.target.product}\n onClick={(event) => onActivate?.(handoff, event)}\n >\n {children}\n </a>\n );\n}\n","import type { MonkeysLocale } from './types';\n\nexport const enUS = {\n locale: 'en-US',\n messages: {\n pagination: {\n navigation: 'Pagination',\n first: 'First',\n previous: 'Previous',\n next: 'Next',\n last: 'Last',\n page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n currentPage: ({ page, pageCount }) =>\n `Page ${page} of ${pageCount}, current page`,\n emptyResults: '0 results',\n range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n },\n dialog: {\n close: 'Close dialog',\n },\n dropdownMenu: {\n actions: 'Actions',\n },\n loading: {\n spinner: 'Loading',\n },\n layout: {\n resizePanels: 'Resize panels',\n },\n steps: {\n label: 'Progress',\n current: 'Current',\n completed: 'Completed',\n error: 'Error',\n disabled: 'Disabled',\n },\n numberInput: {\n increment: 'Increase value',\n decrement: 'Decrease value',\n },\n passwordInput: {\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n },\n multiSelect: {\n placeholder: 'Select options',\n empty: 'No options',\n removeOption: ({ value }) => `Remove ${value}`,\n },\n table: {\n dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n sortColumn: ({ columnId }) =>\n columnId ? `Sort column ${columnId}` : 'Sort column',\n loadingRow: 'Loading table row',\n },\n toolbar: {\n theme: {\n label: 'Appearance',\n toggle: 'Toggle theme',\n auto: 'Auto',\n light: 'Light',\n dark: 'Dark',\n },\n language: {\n label: 'Language',\n switch: 'Switch language',\n },\n },\n toast: {\n errorTitle: 'Error',\n warningTitle: 'Warning',\n defaultErrorDescription: 'Something went wrong.',\n defaultWarningDescription: 'Please check and try again.',\n },\n dataExplorer: {\n viewTree: {\n actions: 'More actions',\n expand: 'Expand',\n collapse: 'Collapse',\n loading: 'Loading...',\n empty: 'No views',\n error: 'Unable to load views',\n },\n },\n workbench: {\n interactiveTable: {\n columnActions: 'Column actions',\n freezeColumn: 'Freeze to left',\n freezeEndColumn: 'Freeze to right',\n unfreezeColumn: 'Unfreeze from left',\n unfreezeEndColumn: 'Unfreeze from right',\n unfreezeAllColumns: 'Unfreeze all columns',\n resetColumnWidth: 'Reset column width',\n frozenColumnTitle: 'Frozen column',\n },\n },\n },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n MonkeysBuiltInLocaleId,\n MonkeysLocale,\n MonkeysLocaleInput,\n MonkeysLocaleMessages,\n MonkeysLocaleMessagesOverride,\n MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n 'en-US': enUS,\n 'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n if (typeof locale !== 'string' || !locale.trim()) {\n throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n }\n\n try {\n return Intl.getCanonicalLocales(locale)[0];\n } catch {\n throw new RangeError(\n `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n value: unknown,\n schema: unknown,\n path: string,\n) {\n if (!isRecord(value) || !isRecord(schema)) {\n throw new TypeError(`${path} must be an object.`);\n }\n\n for (const [key, candidate] of Object.entries(value)) {\n if (candidate === undefined) continue;\n if (!(key in schema)) {\n throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n }\n\n const expected = schema[key];\n const candidatePath = `${path}.${key}`;\n if (typeof expected === 'function') {\n if (typeof candidate !== 'function') {\n throw new TypeError(`${candidatePath} must be a function.`);\n }\n } else if (typeof expected === 'string') {\n if (typeof candidate !== 'string') {\n throw new TypeError(`${candidatePath} must be a string.`);\n }\n } else {\n validateMessageOverride(candidate, expected, candidatePath);\n }\n }\n}\n\nfunction assertMessagesOverride(\n value: unknown,\n path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n locale: string | undefined;\n messages: MonkeysLocaleMessagesOverride | undefined;\n hasExplicitLocale: boolean;\n} {\n if (input === undefined) {\n return {\n locale: undefined,\n messages: undefined,\n hasExplicitLocale: false,\n };\n }\n\n if (typeof input === 'string') {\n const locale = normalizeLocaleId(input);\n if (!isBuiltInLocale(locale)) {\n throw new RangeError(\n `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n );\n }\n return { locale, messages: undefined, hasExplicitLocale: true };\n }\n\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n }\n\n const locale = normalizeLocaleId(input.locale);\n assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n return {\n locale,\n messages: input.messages,\n hasExplicitLocale: true,\n };\n}\n\nexport function mergeMonkeysLocaleMessages(\n base: MonkeysLocaleMessages,\n override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n if (!override) return base;\n\n return {\n pagination: { ...base.pagination, ...override.pagination },\n dialog: { ...base.dialog, ...override.dialog },\n dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n loading: { ...base.loading, ...override.loading },\n layout: { ...base.layout, ...override.layout },\n steps: { ...base.steps, ...override.steps },\n numberInput: { ...base.numberInput, ...override.numberInput },\n passwordInput: { ...base.passwordInput, ...override.passwordInput },\n multiSelect: { ...base.multiSelect, ...override.multiSelect },\n table: { ...base.table, ...override.table },\n toolbar: {\n theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n language: { ...base.toolbar.language, ...override.toolbar?.language },\n },\n toast: { ...base.toast, ...override.toast },\n dataExplorer: {\n viewTree: {\n ...base.dataExplorer.viewTree,\n ...override.dataExplorer?.viewTree,\n },\n },\n workbench: {\n interactiveTable: {\n ...base.workbench.interactiveTable,\n ...override.workbench?.interactiveTable,\n },\n },\n };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n locale: enUS.locale,\n messages: mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n ),\n};\n\nexport function resolveMonkeysLocale(\n input?: MonkeysLocaleInput,\n override?: MonkeysLocaleMessagesOverride,\n parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n if (override !== undefined) {\n assertMessagesOverride(override, 'MonkeysProvider messages');\n }\n const normalized = normalizeLocaleInput(input);\n const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n const builtInMessages = isBuiltInLocale(locale)\n ? BUILT_IN_LOCALES[locale].messages\n : undefined;\n let messages = mergeMonkeysLocaleMessages(\n enUS.messages as MonkeysLocaleMessages,\n builtInMessages,\n );\n\n if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n }\n\n messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n messages = mergeMonkeysLocaleMessages(messages, override);\n\n return { locale, messages };\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type Context,\n} from 'react';\n\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n defaultMonkeysLocale,\n type MonkeysLocaleMessages,\n type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n getDocument?: () => Document | null;\n getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n | Element\n | null\n | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nexport interface MonkeysComponentAttributes {\n dir?: MonkeysDirection;\n 'data-monkeys-direction'?: MonkeysDirection;\n 'data-monkeys-locale'?: string;\n 'data-monkeys-theme'?: string;\n 'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n provided: boolean;\n resolvedTheme?: CompiledThemeTokens;\n themeId?: string;\n baseAppearance?: BaseAppearance;\n dataExplorerAppearance?: DataExplorerAppearance;\n}\n\ninterface MonkeysDirectionContextValue {\n provided: boolean;\n direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n provided: boolean;\n environment: MonkeysEnvironment;\n portal: MonkeysPortalOptions;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n locale: Context<MonkeysLocaleContextValue>;\n theme: Context<MonkeysThemeContextValue>;\n direction: Context<MonkeysDirectionContextValue>;\n environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n return Object.freeze({\n locale: createContext<MonkeysLocaleContextValue>({\n ...defaultMonkeysLocale,\n provided: false,\n }),\n theme: createContext<MonkeysThemeContextValue>({\n provided: false,\n }),\n direction: createContext<MonkeysDirectionContextValue>({\n provided: false,\n }),\n environment: createContext<MonkeysEnvironmentContextValue>({\n provided: false,\n environment: EMPTY_ENVIRONMENT,\n portal: EMPTY_PORTAL,\n }),\n });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n const host = globalThis as MonkeysProviderContextHost;\n const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n if (existing) return existing;\n\n const contexts = createMonkeysProviderContexts();\n Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n value: contexts,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n inherited: T | undefined,\n explicit: T | undefined,\n): T | undefined {\n if (explicit === undefined) return inherited;\n if (inherited === undefined) return explicit;\n\n return {\n ...inherited,\n ...explicit,\n slots:\n inherited.slots || explicit.slots\n ? { ...inherited.slots, ...explicit.slots }\n : undefined,\n styles:\n inherited.styles || explicit.styles\n ? { ...inherited.styles, ...explicit.styles }\n : undefined,\n };\n}\n\nexport function useMonkeysLocale() {\n return useContext(MonkeysLocaleContext);\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).baseAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n return useMemo(\n () => mergeAppearance(inherited, explicit),\n [explicit, inherited],\n );\n}\n\nexport function useMonkeysDirection() {\n return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n const locale = useContext(MonkeysLocaleContext);\n const theme = useContext(MonkeysThemeContext);\n const direction = useContext(MonkeysDirectionContext);\n const providerActive = locale.provided || theme.provided || direction.provided;\n\n return useMemo(\n () =>\n providerActive\n ? {\n dir: direction.direction,\n 'data-monkeys-direction': direction.direction,\n 'data-monkeys-locale': locale.locale,\n 'data-monkeys-theme': theme.themeId,\n 'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n }\n : {},\n [\n direction.direction,\n locale.locale,\n providerActive,\n theme.resolvedTheme?.colorMode,\n theme.themeId,\n ],\n );\n}\n","import { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n} from '../../provider/context';\nimport type { BasePortalContainer, BasePortalProps } from './types';\n\nfunction resolveContainerValue(\n value: BasePortalContainer,\n source: string,\n): Element | null {\n const candidate = typeof value === 'function' ? value() : value;\n if (candidate === null) return null;\n if (\n !candidate ||\n typeof candidate !== 'object' ||\n candidate.nodeType !== 1\n ) {\n throw new TypeError(`${source} must resolve to an Element or null.`);\n }\n return candidate;\n}\n\ninterface ResolveBasePortalContainerOptions {\n explicitProvided: boolean;\n explicitContainer?: BasePortalContainer;\n providerProvided: boolean;\n providerContainer?: BasePortalContainer;\n getDocument?: () => Document | null;\n}\n\nexport function resolveBasePortalContainer({\n explicitProvided,\n explicitContainer,\n providerProvided,\n providerContainer,\n getDocument,\n}: ResolveBasePortalContainerOptions): Element | null {\n if (explicitProvided) {\n return resolveContainerValue(\n explicitContainer as BasePortalContainer,\n 'BasePortal container',\n );\n }\n if (providerProvided) {\n return resolveContainerValue(\n providerContainer as BasePortalContainer,\n 'MonkeysProvider portal.container',\n );\n }\n if (!getDocument) return null;\n\n const ownerDocument = getDocument();\n if (ownerDocument === null) return null;\n if (\n !ownerDocument ||\n typeof ownerDocument !== 'object' ||\n !('body' in ownerDocument)\n ) {\n throw new TypeError(\n 'MonkeysProvider environment.getDocument must resolve to a Document or null.',\n );\n }\n return resolveContainerValue(\n ownerDocument.body,\n 'MonkeysProvider environment.getDocument().body',\n );\n}\n\nexport function BasePortal(props: BasePortalProps) {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean') {\n throw new TypeError('BasePortal disabled must be a boolean.');\n }\n if (props.inline !== undefined && typeof props.inline !== 'boolean') {\n throw new TypeError('BasePortal inline must be a boolean.');\n }\n\n const disabled = props.disabled ?? portalOptions.disabled ?? false;\n if (!mounted || disabled || props.inline) {\n return <>{props.children}</>;\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: props.container !== undefined,\n explicitContainer: props.container,\n providerProvided: portalOptions.container !== undefined,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument,\n });\n\n return container\n ? createPortal(props.children, container)\n : <>{props.children}</>;\n}\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport {\n useMonkeysEnvironment,\n useMonkeysPortalOptions,\n type MonkeysPortalContainer,\n} from '../../../provider/context';\nimport { resolveBasePortalContainer } from '../BasePortal';\n\ninterface ResolveBaseOverlayPortalStateOptions {\n mounted: boolean;\n explicitDisabled?: boolean;\n explicitContainer?: MonkeysPortalContainer;\n providerDisabled?: boolean;\n providerContainer?: MonkeysPortalContainer;\n getDocument?: () => Document | null;\n}\n\ninterface BaseOverlayPortalInlineState {\n mounted: boolean;\n disabled: boolean;\n shouldPortal: false;\n container: null;\n radixPortalProps: undefined;\n}\n\ninterface BaseOverlayPortalReadyState {\n mounted: true;\n disabled: false;\n shouldPortal: true;\n container: Element;\n radixPortalProps: Readonly<{ container: Element }>;\n}\n\nexport type BaseOverlayPortalState =\n | BaseOverlayPortalInlineState\n | BaseOverlayPortalReadyState;\n\nexport function resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled,\n explicitContainer,\n providerDisabled,\n providerContainer,\n getDocument,\n}: ResolveBaseOverlayPortalStateOptions): BaseOverlayPortalState {\n const disabled = explicitDisabled ?? providerDisabled ?? false;\n if (!mounted || disabled) {\n return {\n mounted,\n disabled,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n const container = resolveBasePortalContainer({\n explicitProvided: explicitContainer !== undefined,\n explicitContainer,\n providerProvided: providerContainer !== undefined,\n providerContainer,\n getDocument,\n });\n\n if (!container) {\n return {\n mounted: true,\n disabled: false,\n shouldPortal: false,\n container: null,\n radixPortalProps: undefined,\n };\n }\n\n return {\n mounted: true,\n disabled: false,\n shouldPortal: true,\n container,\n radixPortalProps: Object.freeze({ container }),\n };\n}\n\nexport interface UseBaseOverlayPortalOptions {\n container?: MonkeysPortalContainer;\n disabled?: boolean;\n}\n\nfunction getDefaultDocument(): Document | null {\n return globalThis.document ?? null;\n}\n\nexport function useBaseOverlayPortal(\n options: UseBaseOverlayPortalOptions = {},\n): BaseOverlayPortalState {\n const environment = useMonkeysEnvironment();\n const portalOptions = useMonkeysPortalOptions();\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n return resolveBaseOverlayPortalState({\n mounted,\n explicitDisabled: options.disabled,\n explicitContainer: options.container,\n providerDisabled: portalOptions.disabled,\n providerContainer: portalOptions.container,\n getDocument: environment.getDocument ?? getDefaultDocument,\n });\n}\n\nexport interface BaseOverlayPortalProps extends UseBaseOverlayPortalOptions {\n children?: ReactNode;\n}\n\nexport function renderBaseOverlayPortalContent(\n children: ReactNode,\n portal: BaseOverlayPortalState,\n) {\n return portal.shouldPortal\n ? createPortal(children, portal.container)\n : <>{children}</>;\n}\n\nexport function BaseOverlayPortal({\n children,\n container,\n disabled,\n}: BaseOverlayPortalProps) {\n const portal = useBaseOverlayPortal({ container, disabled });\n return renderBaseOverlayPortalContent(children, portal);\n}\n","import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n if (typeof node === 'string') return node.trim().length > 0;\n return hasRenderableNode(node);\n}\n","import type {\n BaseAppearance,\n BaseBackground,\n BaseBorder,\n BaseControlTone,\n BaseDensity,\n BaseHeadingSize,\n BaseLayoutAlign,\n BaseLayoutJustify,\n BaseLayoutLength,\n BaseListMarker,\n BaseListSpacing,\n BaseRadius,\n BaseResolvedTheme,\n BaseThemePresetId,\n BaseThemeSlots,\n BaseThemeStyles,\n BaseTypographySize,\n BaseTypographyTone,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<BaseThemeSlots>;\n\nconst emptyStyles: BaseThemeStyles = {};\n\nconst motionBase =\n 'motion-safe:transition motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionInteractive =\n 'motion-safe:transition-all motion-safe:duration-300 motion-safe:ease-out';\n\nconst motionTransform =\n 'motion-safe:transition-transform motion-safe:duration-300 motion-safe:ease-out';\nconst tableScrollbarChrome = cn(\n '[scrollbar-width:thin]',\n '[scrollbar-color:hsl(var(--muted-foreground)/0.45)_transparent]',\n '[&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2',\n '[&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-button]:h-0 [&::-webkit-scrollbar-button]:w-0 [&::-webkit-scrollbar-button]:bg-transparent',\n '[&::-webkit-scrollbar-button:single-button]:hidden [&::-webkit-scrollbar-button:single-button]:h-0 [&::-webkit-scrollbar-button:single-button]:w-0',\n '[&::-webkit-scrollbar-button:double-button]:hidden [&::-webkit-scrollbar-button:double-button]:h-0 [&::-webkit-scrollbar-button:double-button]:w-0',\n '[&::-webkit-scrollbar-corner]:bg-transparent',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&:has(thead.sticky)::-webkit-scrollbar-track]:mt-[var(--base-table-header-height)]',\n '[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/40',\n 'hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/55',\n);\nconst tableStickyHeaderCells = cn(\n '[&.sticky_th]:sticky [&.sticky_th]:top-0 [&.sticky_th]:z-[2]',\n '[&.sticky_th]:bg-[var(--base-table-sticky-header-bg)]',\n '[&.sticky_th]:shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n);\n\nconst baseSlots: ResolvedSlots = {\n buttonBase:\n cn(\n 'group/button inline-flex min-w-0 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium focus-visible:outline-none',\n 'cursor-pointer disabled:!cursor-not-allowed',\n motionInteractive,\n ),\n buttonDefault:\n 'border-border bg-background text-foreground hover:bg-accent/60',\n buttonPrimary:\n 'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n buttonSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))] hover:bg-[hsl(var(--success,142_72%_29%)_/_0.15)]',\n buttonWarning:\n 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))] hover:bg-[hsl(var(--warning,45_93%_47%)_/_0.15)]',\n buttonDanger:\n 'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n buttonMuted:\n 'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n buttonActive: 'border-primary/35 bg-primary/10 text-primary',\n buttonDisabled: '!cursor-not-allowed opacity-60',\n buttonIconOnly: 'w-9 px-0',\n buttonIcon:\n 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n buttonLabel: 'min-w-0 truncate',\n badgeBase:\n cn(\n 'inline-flex max-w-full items-center gap-1.5 rounded-full border px-2 py-0.5 text-xs font-medium',\n motionBase,\n ),\n badgeDefault: 'border-border/60 bg-background text-foreground',\n badgePrimary: 'border-primary/30 bg-primary/10 text-primary',\n badgeSuccess: 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-[hsl(var(--success,142_72%_29%))]',\n badgeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n badgeDanger: 'border-destructive/30 bg-destructive/10 text-destructive-text',\n badgeMuted: 'border-border/60 bg-muted text-muted-foreground',\n badgeIcon: 'inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center',\n badgeLabel: 'min-w-0 truncate',\n textRoot: 'min-w-0 break-words leading-6',\n textSizeXs: 'text-xs',\n textSizeSm: 'text-sm',\n textSizeMd: 'text-base',\n textSizeLg: 'text-lg',\n textSizeXl: 'text-xl',\n typographyToneDefault: 'text-foreground',\n typographyToneMuted: 'text-muted-foreground',\n typographyTonePrimary: 'text-primary',\n typographyToneSuccess: 'text-emerald-700 dark:text-emerald-400',\n typographyToneWarning: 'text-amber-700 dark:text-amber-400',\n typographyToneDanger: 'text-destructive-text',\n typographyToneInherit: 'text-inherit',\n headingRoot: 'min-w-0 break-words font-semibold tracking-tight',\n headingSizeXs: 'text-sm leading-5',\n headingSizeSm: 'text-base leading-6',\n headingSizeMd: 'text-lg leading-7',\n headingSizeLg: 'text-xl leading-7',\n headingSizeXl: 'text-2xl leading-8',\n headingSize2xl: 'text-3xl leading-9',\n linkRoot:\n 'inline break-words underline decoration-current/40 underline-offset-4 hover:decoration-current focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n codeInline:\n 'rounded border border-border/70 bg-muted/60 px-1.5 py-0.5 font-mono text-[0.875em] leading-[1.45] text-foreground',\n codeBlock:\n 'm-0 max-w-full overflow-x-auto rounded-md border border-border/70 bg-muted/60 p-4 text-foreground',\n codeContent: 'font-mono text-sm leading-6',\n kbdRoot:\n 'inline-flex min-h-5 items-center rounded border border-border bg-muted/70 px-1.5 font-mono text-[0.75em] font-medium leading-5 text-foreground shadow-[inset_0_-1px_0_hsl(var(--monkeys-color-border))]',\n listRoot: 'm-0 min-w-0 list-outside break-words ps-5 text-foreground',\n listSpacingCompact: '[&>li+li]:mt-1',\n listSpacingDefault: '[&>li+li]:mt-2',\n listSpacingRelaxed: '[&>li+li]:mt-3',\n listMarkerNone: 'list-none ps-0',\n listMarkerDisc: 'list-disc',\n listMarkerCircle: 'list-[circle]',\n listMarkerSquare: 'list-[square]',\n listMarkerDecimal: 'list-decimal',\n listMarkerLowerAlpha: 'list-[lower-alpha]',\n listMarkerUpperAlpha: 'list-[upper-alpha]',\n listItem: 'min-w-0 ps-1 leading-6 marker:text-muted-foreground',\n stackRoot: 'flex min-w-0 flex-col',\n inlineRoot: 'flex min-w-0 flex-row',\n gridRoot: 'grid min-w-0',\n containerRoot: 'mx-auto w-full min-w-0',\n aspectRatioRoot:\n 'relative min-w-0 overflow-hidden [&>*]:h-full [&>*]:w-full',\n spinnerRoot:\n 'inline-flex shrink-0 items-center justify-center text-current align-middle',\n spinnerIndicator:\n 'h-5 w-5 rounded-full border-2 border-current border-r-transparent motion-safe:animate-spin motion-reduce:animate-none',\n visuallyHiddenRoot: 'sr-only',\n visuallyHiddenFocusable:\n 'focus:not-sr-only focus:fixed focus:left-4 focus:top-4 focus:z-[1000] focus:rounded-md focus:bg-background focus:px-4 focus:py-2 focus:text-foreground focus:shadow-lg focus:outline-none focus:ring-2 focus:ring-ring focus-within:not-sr-only focus-within:fixed focus-within:left-4 focus-within:top-4 focus-within:z-[1000] focus-within:rounded-md focus-within:bg-background focus-within:px-4 focus-within:py-2 focus-within:text-foreground focus-within:shadow-lg focus-within:ring-2 focus-within:ring-ring',\n fieldsetRoot: 'min-w-0 border-0 p-0 text-foreground',\n fieldsetLegend: 'min-w-0 text-sm font-semibold leading-6 text-foreground',\n fieldsetDescription: 'mt-1 text-sm leading-5 text-muted-foreground',\n fieldsetError: 'mt-1 text-sm leading-5 text-destructive-text',\n fieldsetContent: 'mt-3 grid min-w-0 gap-3',\n stepsRoot: 'm-0 min-w-0 list-none p-0 text-foreground',\n stepsHorizontal:\n 'flex w-full max-w-full items-start overflow-x-auto pb-2',\n stepsVertical: 'grid',\n stepsItem: 'relative min-w-0',\n stepsItemHorizontal: 'flex min-w-52 flex-1 items-start',\n stepsItemVertical: 'pb-6 last:pb-0',\n stepsTrigger:\n 'flex min-w-0 flex-1 items-start gap-3 rounded-md border-0 bg-transparent p-1 text-start text-inherit',\n stepsTriggerInteractive:\n 'cursor-pointer hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n stepsTriggerDisabled: '!cursor-not-allowed opacity-60',\n stepsIndicator:\n 'relative z-[1] inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border text-xs font-semibold',\n stepsIndicatorPending: 'border-border bg-background text-muted-foreground',\n stepsIndicatorCurrent: 'border-primary/50 bg-primary/10 text-primary',\n stepsIndicatorCompleted:\n 'border-primary bg-primary text-primary-foreground',\n stepsIndicatorError:\n 'border-destructive bg-destructive text-destructive-foreground',\n stepsContent: 'grid min-w-0 gap-1 pt-0.5',\n stepsLabel: 'min-w-0 break-words text-sm font-medium leading-5',\n stepsDescription:\n 'min-w-0 break-words text-sm leading-5 text-muted-foreground',\n stepsStatus: 'sr-only',\n stepsConnector: 'shrink-0 bg-border',\n stepsConnectorHorizontal: 'mt-3.5 h-px w-8',\n stepsConnectorVertical:\n 'absolute bottom-0 top-8 start-3.5 w-px -translate-x-1/2',\n stepsConnectorCompleted: 'bg-primary/60',\n stepsConnectorError: 'bg-destructive/60',\n scrollAreaViewport: 'min-h-0 min-w-0',\n numberInputControl: 'tabular-nums',\n numberInputStepControls:\n 'me-1 flex shrink-0 self-stretch overflow-hidden border-s border-border',\n numberInputStepButton:\n 'flex min-h-6 w-7 cursor-pointer items-center justify-center border-0 bg-transparent px-1 text-xs leading-none text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:z-[1] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n passwordInputControl: 'pe-2',\n passwordInputToggle:\n 'me-1 inline-flex min-h-7 shrink-0 cursor-pointer items-center justify-center rounded px-2 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-40',\n inputGroupRoot:\n cn(\n 'relative flex min-w-0 items-stretch overflow-hidden rounded-md border border-border bg-background text-foreground focus-within:border-primary/50 focus-within:ring-2 focus-within:ring-ring/30',\n motionBase,\n ),\n inputGroupInvalid:\n 'border-destructive/55 focus-within:border-destructive/70 focus-within:ring-destructive/25',\n inputGroupDisabled: '!cursor-not-allowed bg-muted/35',\n inputGroupContent:\n 'flex min-w-0 flex-1 items-stretch [&>*]:min-w-0',\n inputGroupStartElement:\n 'inline-flex shrink-0 items-center justify-center ps-3 pe-1 text-foreground/75',\n inputGroupEndElement:\n 'inline-flex shrink-0 items-center justify-center ps-1 pe-3 text-foreground/75',\n inputGroupStartAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-e border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n inputGroupEndAddon:\n 'inline-flex max-w-[min(40%,16rem)] shrink-0 items-center overflow-hidden border-s border-border bg-muted/60 px-3 text-sm text-foreground/75 text-ellipsis whitespace-nowrap [&>*]:min-w-0',\n panelRoot:\n cn(\n 'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background',\n motionInteractive,\n ),\n panelInteractive:\n 'cursor-pointer hover:shadow-md',\n panelSelected: 'border-primary/45 bg-primary/5',\n panelDisabled: '!cursor-not-allowed opacity-60',\n panelMedia:\n 'shrink-0 overflow-hidden',\n panelHeader: 'min-w-0 p-4',\n panelTitle: 'min-w-0 truncate text-sm font-semibold leading-none text-foreground',\n panelDescription: 'mt-1 text-sm leading-5 text-foreground/75',\n panelBody: 'min-w-0 px-4 pb-4 text-sm text-foreground',\n panelBodyStandalone: 'pt-4',\n panelFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n stateRoot:\n cn(\n 'flex min-h-48 flex-col items-center justify-center rounded-lg border border-border/70 bg-background px-6 py-10 text-center',\n motionBase,\n ),\n stateIcon:\n 'mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n stateTitle: 'text-sm font-semibold text-foreground',\n stateDescription: 'mt-2 max-w-md text-sm leading-6 text-muted-foreground',\n stateActions: 'mt-5 flex flex-wrap items-center justify-center gap-2',\n loadingSpinner:\n 'h-5 w-5 motion-safe:animate-spin motion-reduce:animate-none',\n fieldRoot: 'grid min-w-0 gap-2',\n fieldLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n fieldLabel: 'min-w-0 text-sm font-medium leading-none text-foreground',\n fieldRequired: 'text-destructive-text',\n fieldDescription: 'text-sm leading-5 text-muted-foreground',\n fieldMessage: 'text-sm leading-5 text-muted-foreground',\n fieldControl: 'min-w-0',\n controlWrapper:\n cn(\n 'relative flex min-w-0 items-center rounded-md border border-border bg-background text-foreground focus-within:border-primary/35',\n motionBase,\n ),\n controlBase:\n 'min-w-0 flex-1 bg-transparent px-3 text-sm text-foreground outline-none placeholder:text-muted-foreground disabled:!cursor-not-allowed',\n controlInput: 'h-9',\n controlTextarea: 'min-h-24 resize-y py-2 leading-6',\n controlSelect: 'h-9 cursor-pointer appearance-none pr-9 disabled:!cursor-not-allowed',\n controlIcon:\n 'pointer-events-none ml-3 inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n controlTrailing:\n 'mr-3 inline-flex shrink-0 items-center justify-center text-muted-foreground',\n controlInvalid:\n 'border-destructive/45 focus-within:border-destructive/60',\n controlDisabled: '!cursor-not-allowed opacity-60',\n controlReadOnly: 'bg-muted/35',\n selectChevron:\n cn(\n 'pointer-events-none absolute right-3 top-1/2 h-2 w-2 -translate-y-1/2 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n ),\n selectMenu:\n 'absolute left-0 right-0 top-[calc(100%+0.375rem)] z-50 max-h-60 origin-top overflow-auto rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n selectOption:\n cn(\n 'flex min-h-8 w-full min-w-0 cursor-pointer items-center rounded-sm px-2.5 py-1.5 text-left text-sm text-foreground',\n motionInteractive,\n ),\n selectOptionActive: 'bg-accent text-accent-foreground',\n selectOptionSelected: 'bg-primary/10 text-primary',\n selectOptionDisabled: '!cursor-not-allowed opacity-50',\n selectPlaceholder: 'text-muted-foreground',\n selectNative: 'sr-only',\n switchRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n switchInput: 'sr-only',\n switchTrack:\n cn(\n 'relative mt-0.5 inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border bg-muted focus-within:border-primary/35',\n motionBase,\n ),\n switchThumb:\n cn(\n 'h-4 w-4 translate-x-1 rounded-full bg-background shadow-sm',\n motionTransform,\n ),\n switchChecked: 'border-primary/40 bg-primary/80 text-primary-foreground',\n switchDisabled: '!cursor-not-allowed opacity-60',\n switchContent: 'grid min-w-0 gap-1',\n switchLabel: 'text-sm font-medium leading-none text-foreground',\n switchDescription: 'text-sm leading-5 text-muted-foreground',\n checkboxRoot: 'inline-flex min-w-0 cursor-pointer items-start gap-3',\n checkboxInput: 'sr-only',\n checkboxBox:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n checkboxBoxChecked: 'border-primary/45 bg-primary text-primary-foreground',\n checkboxBoxInvalid: 'border-destructive/50',\n checkboxIndicator: 'text-[11px] font-bold leading-none',\n checkboxDisabled: '!cursor-not-allowed opacity-60',\n checkboxContent: 'grid min-w-0 gap-1',\n checkboxLabel: 'text-sm font-medium leading-none text-foreground',\n checkboxDescription: 'text-sm leading-5 text-muted-foreground',\n radioGroupRoot: 'grid min-w-0 gap-2',\n radioOption:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-start gap-3 rounded-md border border-border/60 bg-background px-3 py-2 text-sm',\n motionInteractive,\n 'hover:bg-muted/35',\n ),\n radioInput: 'sr-only',\n radioMarker:\n cn(\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-full border border-border bg-background text-primary focus-within:border-primary/40',\n motionBase,\n ),\n radioMarkerChecked: 'border-primary/50 bg-primary/10',\n radioIndicator: 'h-2 w-2 rounded-full bg-primary',\n radioOptionDisabled: '!cursor-not-allowed opacity-60 hover:bg-background',\n radioContent: 'grid min-w-0 gap-1',\n radioLabel: 'text-sm font-medium leading-none text-foreground',\n radioDescription: 'text-sm leading-5 text-muted-foreground',\n dialogRoot: 'relative',\n dialogTrigger: '',\n dialogTriggerDisabled: '!cursor-not-allowed opacity-60',\n dialogOverlay:\n 'fixed inset-0 z-50 bg-background/70 backdrop-blur-sm motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dialogContent:\n 'pointer-events-none fixed inset-0 z-50 flex min-h-0 items-center justify-center p-4',\n dialogPanel:\n cn(\n 'pointer-events-auto relative flex max-h-[min(85vh,720px)] w-full max-w-lg min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background text-foreground shadow-xl',\n 'motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n ),\n dialogHeader: 'grid min-w-0 gap-1 border-b border-border/60 px-5 py-4',\n dialogTitle: 'min-w-0 pr-8 text-base font-semibold leading-6 text-foreground',\n dialogDescription: 'text-sm leading-6 text-muted-foreground',\n dialogBody: 'min-h-0 min-w-0 overflow-auto px-5 py-4 text-sm text-foreground',\n dialogFooter:\n 'flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-border/60 px-5 py-4',\n dialogClose:\n cn(\n 'absolute right-3 top-3 inline-flex h-8 w-8 cursor-pointer items-center justify-center rounded-md text-muted-foreground hover:bg-muted/60 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownRoot: 'relative inline-flex min-w-0',\n dropdownTrigger: '',\n dropdownTriggerDisabled: '!cursor-not-allowed opacity-60',\n dropdownMenu:\n 'z-50 min-w-48 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n dropdownMenuTop: 'bottom-[calc(100%+0.375rem)] top-auto',\n dropdownMenuEnd: 'left-auto right-0',\n dropdownLabel:\n 'px-2.5 py-1.5 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground',\n dropdownSeparator: 'my-1 h-px bg-border/70',\n dropdownItem:\n cn(\n 'flex min-w-0 cursor-pointer items-center gap-2 rounded-sm px-2.5 py-2 text-left text-sm text-foreground hover:bg-accent/60 focus:bg-accent/60 data-[highlighted]:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n dropdownItemDanger:\n 'text-destructive-text hover:bg-destructive/10 focus:bg-destructive/10 data-[highlighted]:bg-destructive/10',\n dropdownItemDisabled:\n '!cursor-not-allowed opacity-50 hover:bg-transparent focus:bg-transparent data-[highlighted]:bg-transparent',\n dropdownItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n dropdownItemContent: 'grid min-w-0 flex-1 gap-0.5',\n dropdownItemLabel: 'min-w-0 truncate',\n dropdownItemDescription:\n 'min-w-0 truncate text-xs leading-4 text-muted-foreground',\n dropdownItemShortcut:\n 'ml-3 shrink-0 text-xs font-medium text-muted-foreground',\n tooltipRoot: 'relative inline-flex min-w-0',\n tooltipTrigger: 'inline-flex min-w-0',\n tooltipContent:\n 'pointer-events-none z-50 max-w-xs rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs leading-5 text-popover-foreground shadow-lg motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n noticeBase:\n cn(\n 'flex min-w-0 gap-3 rounded-lg border px-4 py-3 text-sm',\n motionBase,\n 'motion-safe:animate-in motion-safe:fade-in',\n ),\n noticeDefault: 'border-border bg-background text-foreground',\n noticePrimary: 'border-primary/25 bg-primary/10 text-primary',\n noticeSuccess:\n 'border-[hsl(var(--success,142_72%_29%)_/_0.30)] bg-[hsl(var(--success,142_72%_29%)_/_0.10)] text-foreground',\n noticeWarning: 'border-[hsl(var(--warning,45_93%_47%)_/_0.30)] bg-[hsl(var(--warning,45_93%_47%)_/_0.10)] text-[hsl(var(--warning-foreground,28_73%_26%))]',\n noticeDanger:\n 'border-destructive/30 bg-destructive/10 text-destructive-text',\n noticeMuted: 'border-border/60 bg-muted/35 text-muted-foreground',\n noticeIcon:\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center motion-safe:animate-in motion-safe:fade-in',\n noticeTitle: 'font-semibold leading-5',\n noticeDescription: 'leading-6',\n noticeActions: 'mt-3 flex flex-wrap items-center gap-2',\n dividerRoot: cn('shrink-0 border-border/70', motionBase),\n dividerLabel:\n 'mx-3 shrink-0 text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground motion-safe:animate-in motion-safe:fade-in',\n sectionHeaderRoot:\n 'flex min-w-0 flex-wrap items-start justify-between gap-3 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out',\n sectionHeaderContent: 'grid min-w-0 gap-1',\n sectionHeaderEyebrow:\n 'text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground',\n sectionHeaderTitle: 'text-base font-semibold leading-6 text-foreground',\n sectionHeaderDescription: 'max-w-2xl text-sm leading-6 text-muted-foreground',\n sectionHeaderActions: 'flex shrink-0 flex-wrap items-center gap-2',\n tabsRoot: 'grid min-w-0 gap-3',\n tabsList:\n cn(\n 'inline-flex min-w-0 flex-wrap items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n tabsTrigger:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:ring-offset-1 motion-reduce:transition-none',\n motionInteractive,\n ),\n tabsTriggerActive:\n 'bg-background text-foreground shadow-sm',\n tabsTriggerDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n tabsPanel:\n 'min-w-0 rounded-lg border border-border/70 bg-background p-4 text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n segmentedRoot:\n cn(\n 'inline-flex min-w-0 items-center gap-1 rounded-lg border border-border/70 bg-muted/30 p-1',\n motionBase,\n ),\n segmentedItem:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground hover:bg-background/70 hover:text-foreground focus-visible:outline-none',\n motionInteractive,\n ),\n segmentedItemActive:\n 'bg-background text-foreground shadow-sm',\n segmentedItemDisabled: '!cursor-not-allowed opacity-50 hover:bg-transparent',\n progressRoot: 'grid min-w-0 gap-2',\n progressTrack:\n 'h-2 w-full overflow-hidden rounded-full bg-muted',\n progressIndicator:\n 'h-full rounded-full bg-primary motion-safe:transition-[width] motion-safe:duration-500 motion-safe:ease-out',\n progressLabelRow: 'flex min-w-0 items-center justify-between gap-3',\n progressLabel: 'min-w-0 truncate text-sm font-medium text-foreground',\n progressValue: 'shrink-0 text-xs font-medium text-muted-foreground',\n skeletonRoot:\n 'relative overflow-hidden rounded-md bg-muted/70',\n avatarRoot:\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border bg-muted text-sm font-semibold text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n avatarImage:\n 'h-full w-full object-cover',\n avatarFallback:\n 'flex h-full w-full items-center justify-center bg-muted text-foreground',\n avatarStatus:\n 'absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-muted-foreground motion-safe:animate-pulse',\n avatarText: 'min-w-0 truncate text-sm font-medium text-foreground',\n toolbarRoot:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-background px-4 py-3',\n motionBase,\n ),\n toolbarLeading: 'flex min-w-0 items-center gap-3',\n toolbarTitle: 'min-w-0 truncate text-sm font-semibold text-foreground',\n toolbarDescription: 'mt-0.5 text-sm leading-5 text-muted-foreground',\n toolbarContent: 'min-w-0 flex-1',\n toolbarActions: 'flex shrink-0 flex-wrap items-center gap-2',\n breadcrumbRoot: 'min-w-0 text-sm text-muted-foreground',\n breadcrumbList: 'flex min-w-0 flex-wrap items-center gap-1.5',\n breadcrumbItem: 'inline-flex min-w-0 items-center gap-1.5',\n breadcrumbLink:\n 'min-w-0 cursor-pointer truncate text-muted-foreground hover:text-foreground disabled:!cursor-not-allowed disabled:opacity-50 aria-disabled:!cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n breadcrumbCurrent: 'min-w-0 truncate font-medium text-foreground',\n breadcrumbSeparator: 'shrink-0 text-muted-foreground/70',\n paginationRoot:\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 text-sm',\n paginationInfo: 'min-w-0 text-muted-foreground',\n paginationControls: 'flex min-w-0 flex-wrap items-center justify-end gap-1.5',\n paginationButton:\n 'inline-flex h-8 min-w-8 cursor-pointer items-center justify-center whitespace-nowrap rounded-md border border-border bg-background px-2.5 text-sm font-medium text-foreground hover:bg-accent/60 disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out',\n paginationButtonDisabled: '!cursor-not-allowed opacity-50',\n paginationPage:\n 'inline-flex h-8 min-w-8 cursor-default items-center justify-center rounded-md bg-muted/50 px-2.5 text-sm font-medium text-foreground hover:bg-muted/50',\n paginationEllipsis:\n 'inline-flex h-8 min-w-6 items-center justify-center px-1 text-sm text-muted-foreground',\n descriptionListRoot:\n 'grid min-w-0 gap-3 text-sm',\n descriptionListItem:\n 'grid min-w-0 gap-1 rounded-md border border-border/60 bg-background px-3 py-2 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out hover:shadow-sm',\n descriptionListTerm:\n 'min-w-0 truncate text-xs font-medium uppercase tracking-[0.08em] text-muted-foreground',\n descriptionListValue: 'min-w-0 text-sm leading-6 text-foreground',\n accordionRoot: 'grid min-w-0 gap-2',\n accordionItem:\n 'overflow-hidden rounded-lg border border-border/70 bg-background motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTrigger:\n 'flex w-full min-w-0 cursor-pointer items-center justify-between gap-3 px-4 py-3 text-start text-sm font-medium text-foreground hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:!cursor-not-allowed disabled:opacity-50 motion-safe:transition motion-safe:duration-300 motion-safe:ease-out motion-reduce:transition-none',\n accordionTriggerIcon:\n cn(\n 'h-2 w-2 shrink-0 rotate-45 border-b border-r border-current text-muted-foreground',\n motionTransform,\n 'motion-reduce:transition-none',\n ),\n accordionPanel:\n 'border-t border-border/60 px-4 py-3 text-sm leading-6 text-muted-foreground motion-safe:animate-in motion-safe:fade-in motion-safe:duration-300 motion-safe:ease-out motion-reduce:animate-none',\n menuTrigger: 'inline-flex min-w-0',\n menuContent:\n 'z-50 min-w-44 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n menuSeparator: '-mx-1 my-1 h-px bg-border',\n menuItem:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground',\n motionInteractive,\n ),\n menuItemDefault: 'text-foreground',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_72%_29%))] focus:text-[hsl(var(--success,142_72%_29%))] data-[highlighted]:text-[hsl(var(--success,142_72%_29%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,28_73%_26%))] focus:text-[hsl(var(--warning-foreground,28_73%_26%))] data-[highlighted]:text-[hsl(var(--warning-foreground,28_73%_26%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-muted-foreground focus:text-foreground data-[highlighted]:text-foreground',\n menuItemDisabled:\n '!cursor-not-allowed opacity-50 data-[disabled]:pointer-events-none',\n menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n menuItemLabel: 'min-w-0 flex-1 truncate',\n menuItemShortcut:\n 'ml-4 shrink-0 text-xs font-medium text-muted-foreground',\n menuCheckboxIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuRadioIndicator:\n 'absolute left-2 inline-flex h-4 w-4 items-center justify-center text-current',\n menuSubTrigger:\n cn(\n 'relative flex min-h-8 min-w-0 cursor-pointer select-none items-center gap-2 rounded-sm px-2.5 py-1.5 text-sm text-foreground outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:!cursor-not-allowed data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n motionInteractive,\n ),\n menuSubTriggerIcon:\n 'ml-auto inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n menuSubContent:\n 'z-50 min-w-40 overflow-hidden rounded-md border border-border bg-background p-1 text-sm text-foreground shadow-lg outline-none motion-safe:animate-in motion-safe:fade-in motion-safe:zoom-in-95 motion-safe:duration-300 motion-safe:ease-out',\n tableContainer:\n cn(\n 'relative isolate min-w-0 overflow-auto rounded-lg border border-border/70 bg-background/95 bg-clip-padding [scrollbar-gutter:stable]',\n '[--base-table-header-height:2.75rem] [--base-table-split-scrollbar-gutter:0.75rem]',\n '[--base-table-sticky-header-bg:hsl(var(--background))] [--base-table-header-separator:hsl(var(--border)_/_0.7)]',\n tableScrollbarChrome,\n motionBase,\n ),\n tableContainerFooterAttached: '!rounded-b-none !shadow-none',\n tableRoot: 'w-full caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableCaption: 'mt-3 text-sm text-muted-foreground',\n tableHeader:\n cn(\n 'relative z-[2] bg-transparent [&_tr]:bg-transparent',\n tableStickyHeaderCells,\n ),\n tableBody: '[&_tr:last-child>*]:border-b-0',\n tableFooter: 'bg-muted/30 font-medium [&_tr>*]:border-t [&_tr>*]:border-border/70',\n tableFooterBar:\n cn(\n 'flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-lg border border-border/70 bg-muted/20 px-4 py-3 text-sm text-foreground shadow-none',\n motionBase,\n ),\n tableFooterBarAttached:\n '-mt-px rounded-t-none border-t border-border/70 shadow-none',\n tableFooterBarLeading: 'flex min-w-0 items-center gap-2',\n tableFooterBarContent: 'min-w-0 flex-1',\n tableFooterBarActions: 'ms-auto flex shrink-0 flex-wrap items-center gap-2',\n tableSplitRoot:\n 'grid w-full min-w-0 grid-cols-[minmax(0,1fr)] grid-rows-[auto_minmax(0,1fr)_auto] caption-bottom border-separate border-spacing-0 text-sm text-foreground',\n tableSplitHeader:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden bg-transparent',\n tableSplitBody:\n cn(\n 'block min-h-0 w-full min-w-0 max-w-full justify-self-stretch overflow-auto [scrollbar-gutter:stable]',\n tableScrollbarChrome,\n ),\n tableSplitFooter:\n 'block w-full min-w-0 shrink-0 overflow-x-hidden overflow-y-hidden',\n tableSplitRow:\n 'grid w-max min-w-full [grid-template-columns:var(--base-table-column-template)]',\n tableSplitHead: 'flex min-w-0 overflow-hidden',\n tableSplitCell: 'block min-w-0 overflow-hidden [overflow-wrap:anywhere]',\n tableRow:\n cn(\n '[&>*]:border-b [&>*]:border-border/60 data-[state=selected]:bg-primary/5 data-[state=selected]:[&>*]:bg-primary/5',\n motionBase,\n ),\n tableRowInteractive:\n 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)] hover:bg-[var(--base-table-row-hover-bg)] hover:[&>*]:bg-[var(--base-table-row-hover-bg)]',\n tableRowSelected: 'bg-primary/5 [&>*]:bg-primary/5',\n tableRowDisabled: '!cursor-not-allowed opacity-60',\n tableHead:\n 'relative h-11 whitespace-nowrap px-3 py-2 text-left align-middle text-xs font-semibold text-muted-foreground shadow-[inset_0_-1px_0_var(--base-table-header-separator)]',\n tableHeadContent: 'flex min-w-0 items-center justify-between gap-2',\n tableHeadMain: 'flex min-w-0 items-center gap-2',\n tableHeadIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground',\n tableHeadText: 'grid min-w-0 gap-0.5',\n tableHeadLabel: 'min-w-0 truncate text-xs font-semibold leading-4 text-foreground',\n tableHeadDescription: 'min-w-0 truncate text-[11px] font-normal leading-4 text-muted-foreground',\n tableHeadMeta: 'shrink-0 text-[11px] font-medium text-muted-foreground',\n tableHeadActions: 'flex shrink-0 items-center gap-1',\n tableHeadSortButton:\n cn(\n 'inline-flex min-w-0 cursor-pointer items-center gap-1 rounded-sm text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-60',\n motionBase,\n ),\n tableHeadSortIcon:\n cn(\n 'inline-flex h-3 w-3 shrink-0 items-center justify-center text-muted-foreground',\n motionTransform,\n ),\n tableHeadDragHandle:\n cn(\n 'inline-flex h-5 w-4 shrink-0 cursor-grab items-center justify-center rounded-sm text-muted-foreground hover:bg-muted active:cursor-grabbing focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableHeadResizeHandle:\n cn(\n 'absolute end-0 top-1/2 h-7 w-2 -translate-y-1/2 cursor-col-resize touch-none rounded-sm after:absolute after:start-1/2 after:top-1/2 after:h-5 after:w-px after:-translate-x-1/2 after:-translate-y-1/2 after:bg-border hover:after:bg-primary focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30 disabled:!cursor-not-allowed disabled:opacity-50',\n motionBase,\n ),\n tableCell: 'min-w-0 px-3 py-2 align-middle text-sm text-foreground [overflow-wrap:anywhere]',\n tableCellAlignCenter: 'text-center',\n tableCellAlignRight: 'text-right',\n tableEmptyRow: '[&>*]:border-b [&>*]:border-border/60',\n tableEmptyCell: 'px-4 py-10 text-center',\n tableEmptyContent: 'mx-auto flex max-w-md flex-col items-center justify-center text-center',\n tableEmptyIcon:\n 'mb-3 flex h-10 w-10 items-center justify-center rounded-full bg-muted text-muted-foreground',\n tableEmptyTitle: 'text-sm font-semibold text-foreground',\n tableEmptyDescription: 'mt-1 text-sm leading-6 text-muted-foreground',\n tableEmptyActions: 'mt-4 flex flex-wrap items-center justify-center gap-2',\n tableLoadingRow: '[&>*]:border-b [&>*]:border-border/60',\n tableLoadingCell: 'px-3 py-2',\n tableLoadingSkeleton: 'h-4 w-full rounded-md bg-muted/70',\n layoutRoot:\n cn(\n 'grid min-w-0 overflow-hidden grid-rows-[auto_minmax(0,1fr)_auto] gap-3 rounded-lg border border-border/70 bg-background p-3 text-foreground',\n motionBase,\n ),\n layoutRootFull: 'h-full min-h-0',\n layoutHeader: 'min-w-0',\n layoutBody: 'grid min-h-0 min-w-0 overflow-hidden gap-3',\n layoutSidebar: 'min-h-0 min-w-0 overflow-hidden',\n layoutMain: 'min-h-0 min-w-0 overflow-hidden',\n layoutAside: 'min-h-0 min-w-0 overflow-hidden',\n layoutFooter: 'min-w-0',\n layoutPane:\n cn(\n 'h-full max-h-full min-h-0 min-w-0 overflow-hidden rounded-lg bg-background text-foreground',\n motionBase,\n ),\n layoutPaneScrollable: 'overflow-auto',\n layoutPaneBordered: 'border border-border/70',\n layoutPaneMuted: 'bg-muted/25',\n layoutPaneSoft: 'bg-background/95 shadow-sm',\n layoutPaneTransparent: 'bg-transparent shadow-none',\n layoutSplitRoot: 'grid min-h-0 min-w-0 overflow-hidden',\n layoutSplitHorizontal: 'grid-flow-col',\n layoutSplitVertical: 'grid-flow-row',\n layoutSplitPane: 'min-h-0 min-w-0 overflow-hidden',\n layoutSplitPrimary: '',\n layoutSplitSecondary: '',\n layoutResizeHandle:\n cn(\n 'group/resize relative z-10 flex shrink-0 items-center justify-center bg-transparent text-muted-foreground hover:bg-border/60 active:bg-border/70 focus-visible:bg-border/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/30',\n motionInteractive,\n ),\n layoutResizeHandleHorizontal: 'w-2 cursor-col-resize',\n layoutResizeHandleVertical: 'h-2 cursor-row-resize',\n layoutResizeHandleDisabled: 'cursor-default opacity-60',\n layoutResizeHandleIndicator:\n 'rounded-full bg-muted-foreground/45 group-hover/resize:bg-primary/70',\n};\n\nconst densitySlots: Record<BaseDensity, Partial<BaseThemeSlots>> = {\n compact: {\n buttonBase: 'h-8 px-2.5 text-xs',\n buttonIconOnly: 'h-8 w-8 px-0',\n badgeBase: 'px-1.5 py-0 text-[11px]',\n panelHeader: 'p-3',\n panelBody: 'px-3 pb-3 text-xs',\n panelBodyStandalone: 'pt-3',\n panelFooter: 'px-3 py-2',\n stateRoot: 'min-h-36 px-4 py-7',\n stateIcon: 'mb-3 h-10 w-10',\n fieldRoot: 'gap-1.5',\n fieldLabel: 'text-xs',\n fieldDescription: 'text-xs leading-5',\n fieldMessage: 'text-xs leading-5',\n controlInput: 'h-8 text-xs',\n controlTextarea: 'min-h-20 text-xs',\n controlSelect: 'h-8 text-xs',\n selectMenu: 'text-xs',\n selectOption: 'min-h-7 px-2 py-1 text-xs',\n switchTrack: 'h-5 w-9',\n switchThumb: 'h-3.5 w-3.5',\n checkboxBox: 'h-3.5 w-3.5',\n checkboxLabel: 'text-xs',\n checkboxDescription: 'text-xs leading-5',\n radioOption: 'px-2 py-1.5 text-xs',\n radioMarker: 'h-3.5 w-3.5',\n radioIndicator: 'h-1.5 w-1.5',\n radioLabel: 'text-xs',\n radioDescription: 'text-xs leading-5',\n dialogPanel: 'max-w-md',\n dialogHeader: 'px-4 py-3',\n dialogTitle: 'text-sm leading-5',\n dialogDescription: 'text-xs leading-5',\n dialogBody: 'px-4 py-3 text-xs',\n dialogFooter: 'px-4 py-3',\n dropdownMenu: 'min-w-44 text-xs',\n dropdownItem: 'px-2 py-1.5 text-xs',\n tooltipContent: 'text-[11px] leading-4',\n noticeBase: 'px-3 py-2 text-xs',\n dividerLabel: 'text-[11px]',\n sectionHeaderRoot: 'gap-2',\n sectionHeaderTitle: 'text-sm leading-5',\n sectionHeaderDescription: 'text-xs leading-5',\n tabsList: 'gap-0.5 p-0.5',\n tabsTrigger: 'px-2 py-1 text-xs',\n tabsPanel: 'p-3 text-xs',\n segmentedRoot: 'gap-0.5 p-0.5',\n segmentedItem: 'px-2 py-1 text-xs',\n progressTrack: 'h-1.5',\n avatarRoot: 'text-xs',\n toolbarRoot: 'gap-2 px-3 py-2',\n toolbarTitle: 'text-xs',\n toolbarDescription: 'text-xs leading-5',\n paginationButton: 'h-7 min-w-7 px-2 text-xs',\n paginationPage: 'h-7 min-w-7 px-2 text-xs',\n descriptionListRoot: 'gap-2 text-xs',\n descriptionListItem: 'px-2 py-1.5',\n descriptionListTerm: 'text-[11px]',\n descriptionListValue: 'text-xs leading-5',\n accordionTrigger: 'px-3 py-2 text-xs',\n accordionPanel: 'px-3 py-2 text-xs leading-5',\n menuContent: 'min-w-40 p-0.5 text-xs',\n menuSubContent: 'min-w-36 p-0.5 text-xs',\n menuLabel: 'px-2 py-1 text-[11px]',\n menuItem: 'min-h-7 px-2 py-1 text-xs',\n menuSubTrigger: 'min-h-7 px-2 py-1 text-xs',\n menuItemShortcut: 'text-[11px]',\n tableContainer: '[--base-table-header-height:2.25rem]',\n tableHead: 'h-9 px-2 py-1.5 text-[11px]',\n tableCell: 'px-2 py-1.5 text-xs',\n tableHeadLabel: 'text-[11px]',\n tableHeadDescription: 'text-[10px] leading-3',\n tableLoadingCell: 'px-2 py-1.5',\n layoutRoot: 'gap-2 p-2',\n layoutBody: 'gap-2',\n layoutPane: 'rounded-md text-xs',\n layoutResizeHandleHorizontal: 'w-1.5',\n layoutResizeHandleVertical: 'h-1.5',\n },\n default: {\n buttonBase: 'h-9',\n },\n comfortable: {\n buttonBase: 'h-10 px-3.5',\n buttonIconOnly: 'h-10 w-10 px-0',\n badgeBase: 'px-2.5 py-1',\n panelHeader: 'p-5',\n panelBody: 'px-5 pb-5',\n panelBodyStandalone: 'pt-5',\n panelFooter: 'px-5 py-3.5',\n stateRoot: 'min-h-56 px-8 py-12',\n stateIcon: 'mb-5 h-14 w-14',\n fieldRoot: 'gap-2.5',\n controlInput: 'h-10',\n controlTextarea: 'min-h-28',\n controlSelect: 'h-10',\n selectMenu: 'p-1.5',\n selectOption: 'min-h-9 px-3 py-2',\n switchTrack: 'h-7 w-12',\n switchThumb: 'h-5 w-5',\n checkboxBox: 'h-5 w-5',\n radioOption: 'px-4 py-3',\n radioMarker: 'h-5 w-5',\n radioIndicator: 'h-2.5 w-2.5',\n dialogPanel: 'max-w-xl',\n dialogHeader: 'px-6 py-5',\n dialogBody: 'px-6 py-5',\n dialogFooter: 'px-6 py-5',\n dropdownMenu: 'min-w-56',\n dropdownItem: 'px-3 py-2.5',\n noticeBase: 'px-5 py-4',\n sectionHeaderTitle: 'text-lg leading-7',\n tabsTrigger: 'px-3.5 py-2',\n tabsPanel: 'p-5',\n segmentedItem: 'px-3.5 py-2',\n progressTrack: 'h-2.5',\n toolbarRoot: 'px-5 py-4',\n paginationButton: 'h-9 min-w-9 px-3',\n paginationPage: 'h-9 min-w-9 px-3',\n descriptionListItem: 'px-4 py-3',\n accordionTrigger: 'px-5 py-4',\n accordionPanel: 'px-5 py-4',\n menuContent: 'min-w-48 p-1.5',\n menuSubContent: 'min-w-44 p-1.5',\n menuItem: 'min-h-9 px-3 py-2',\n menuSubTrigger: 'min-h-9 px-3 py-2',\n tableContainer: '[--base-table-header-height:3rem]',\n tableHead: 'h-12 px-4 py-3',\n tableCell: 'px-4 py-3',\n tableLoadingCell: 'px-4 py-3',\n layoutRoot: 'gap-4 p-4',\n layoutBody: 'gap-4',\n layoutPane: 'rounded-xl',\n layoutResizeHandleHorizontal: 'w-2.5',\n layoutResizeHandleVertical: 'h-2.5',\n },\n};\n\nconst radiusSlots: Record<BaseRadius, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'rounded-none',\n badgeBase: 'rounded-none',\n panelRoot: 'rounded-none',\n stateRoot: 'rounded-none',\n stateIcon: 'rounded-none',\n controlWrapper: 'rounded-none',\n selectMenu: 'rounded-none',\n selectOption: 'rounded-none',\n switchTrack: 'rounded-none',\n switchThumb: 'rounded-none',\n checkboxBox: 'rounded-none',\n radioOption: 'rounded-none',\n dialogPanel: 'rounded-none',\n dialogClose: 'rounded-none',\n dropdownMenu: 'rounded-none',\n dropdownItem: 'rounded-none',\n tooltipContent: 'rounded-none',\n noticeBase: 'rounded-none',\n tabsList: 'rounded-none',\n tabsTrigger: 'rounded-none',\n tabsPanel: 'rounded-none',\n segmentedRoot: 'rounded-none',\n segmentedItem: 'rounded-none',\n progressTrack: 'rounded-none',\n progressIndicator: 'rounded-none',\n skeletonRoot: 'rounded-none',\n avatarRoot: 'rounded-none',\n avatarStatus: 'rounded-none',\n toolbarRoot: 'rounded-none',\n paginationButton: 'rounded-none',\n paginationPage: 'rounded-none',\n descriptionListItem: 'rounded-none',\n accordionItem: 'rounded-none',\n menuContent: 'rounded-none',\n menuItem: 'rounded-none',\n menuSubTrigger: 'rounded-none',\n menuSubContent: 'rounded-none',\n tableContainer: 'rounded-none',\n tableEmptyIcon: 'rounded-none',\n tableLoadingSkeleton: 'rounded-none',\n layoutRoot: 'rounded-none',\n layoutPane: 'rounded-none',\n },\n sm: {\n buttonBase: 'rounded-sm',\n badgeBase: 'rounded-sm',\n panelRoot: 'rounded-sm',\n stateRoot: 'rounded-sm',\n stateIcon: 'rounded-sm',\n controlWrapper: 'rounded-sm',\n selectMenu: 'rounded-sm',\n selectOption: 'rounded-sm',\n switchTrack: 'rounded-sm',\n switchThumb: 'rounded-sm',\n checkboxBox: 'rounded-sm',\n radioOption: 'rounded-sm',\n dialogPanel: 'rounded-sm',\n dialogClose: 'rounded-sm',\n dropdownMenu: 'rounded-sm',\n dropdownItem: 'rounded-sm',\n tooltipContent: 'rounded-sm',\n noticeBase: 'rounded-sm',\n tabsList: 'rounded-sm',\n tabsTrigger: 'rounded-sm',\n tabsPanel: 'rounded-sm',\n segmentedRoot: 'rounded-sm',\n segmentedItem: 'rounded-sm',\n progressTrack: 'rounded-sm',\n progressIndicator: 'rounded-sm',\n skeletonRoot: 'rounded-sm',\n avatarRoot: 'rounded-sm',\n avatarStatus: 'rounded-sm',\n toolbarRoot: 'rounded-sm',\n paginationButton: 'rounded-sm',\n paginationPage: 'rounded-sm',\n descriptionListItem: 'rounded-sm',\n accordionItem: 'rounded-sm',\n menuContent: 'rounded-sm',\n menuItem: 'rounded-sm',\n menuSubTrigger: 'rounded-sm',\n menuSubContent: 'rounded-sm',\n tableContainer: 'rounded-sm',\n tableEmptyIcon: 'rounded-sm',\n tableLoadingSkeleton: 'rounded-sm',\n layoutRoot: 'rounded-sm',\n layoutPane: 'rounded-sm',\n },\n md: {},\n lg: {\n buttonBase: 'rounded-lg',\n badgeBase: 'rounded-lg',\n panelRoot: 'rounded-xl',\n stateRoot: 'rounded-xl',\n stateIcon: 'rounded-xl',\n controlWrapper: 'rounded-lg',\n selectMenu: 'rounded-lg',\n selectOption: 'rounded-md',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-md',\n radioOption: 'rounded-xl',\n dialogPanel: 'rounded-xl',\n dialogClose: 'rounded-lg',\n dropdownMenu: 'rounded-lg',\n dropdownItem: 'rounded-md',\n tooltipContent: 'rounded-md',\n noticeBase: 'rounded-xl',\n tabsList: 'rounded-xl',\n tabsTrigger: 'rounded-lg',\n tabsPanel: 'rounded-xl',\n segmentedRoot: 'rounded-xl',\n segmentedItem: 'rounded-lg',\n skeletonRoot: 'rounded-lg',\n toolbarRoot: 'rounded-xl',\n descriptionListItem: 'rounded-lg',\n accordionItem: 'rounded-xl',\n menuContent: 'rounded-lg',\n menuItem: 'rounded-md',\n menuSubTrigger: 'rounded-md',\n menuSubContent: 'rounded-lg',\n tableContainer: 'rounded-xl',\n tableEmptyIcon: 'rounded-xl',\n tableLoadingSkeleton: 'rounded-lg',\n layoutRoot: 'rounded-xl',\n layoutPane: 'rounded-xl',\n },\n xl: {\n buttonBase: 'rounded-xl',\n badgeBase: 'rounded-xl',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-2xl',\n controlWrapper: 'rounded-xl',\n selectMenu: 'rounded-xl',\n selectOption: 'rounded-lg',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-lg',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-xl',\n dropdownMenu: 'rounded-xl',\n dropdownItem: 'rounded-lg',\n tooltipContent: 'rounded-lg',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-2xl',\n tabsTrigger: 'rounded-xl',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-2xl',\n segmentedItem: 'rounded-xl',\n skeletonRoot: 'rounded-xl',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-xl',\n paginationPage: 'rounded-xl',\n descriptionListItem: 'rounded-xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-xl',\n menuItem: 'rounded-lg',\n menuSubTrigger: 'rounded-lg',\n menuSubContent: 'rounded-xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-2xl',\n tableLoadingSkeleton: 'rounded-xl',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n full: {\n buttonBase: 'rounded-full',\n badgeBase: 'rounded-full',\n panelRoot: 'rounded-2xl',\n stateRoot: 'rounded-2xl',\n stateIcon: 'rounded-full',\n controlWrapper: 'rounded-full',\n selectMenu: 'rounded-2xl',\n selectOption: 'rounded-full',\n switchTrack: 'rounded-full',\n switchThumb: 'rounded-full',\n checkboxBox: 'rounded-full',\n radioOption: 'rounded-2xl',\n dialogPanel: 'rounded-2xl',\n dialogClose: 'rounded-full',\n dropdownMenu: 'rounded-2xl',\n dropdownItem: 'rounded-full',\n tooltipContent: 'rounded-full',\n noticeBase: 'rounded-2xl',\n tabsList: 'rounded-full',\n tabsTrigger: 'rounded-full',\n tabsPanel: 'rounded-2xl',\n segmentedRoot: 'rounded-full',\n segmentedItem: 'rounded-full',\n progressTrack: 'rounded-full',\n progressIndicator: 'rounded-full',\n skeletonRoot: 'rounded-full',\n avatarRoot: 'rounded-full',\n avatarStatus: 'rounded-full',\n toolbarRoot: 'rounded-2xl',\n paginationButton: 'rounded-full',\n paginationPage: 'rounded-full',\n descriptionListItem: 'rounded-2xl',\n accordionItem: 'rounded-2xl',\n menuContent: 'rounded-2xl',\n menuItem: 'rounded-full',\n menuSubTrigger: 'rounded-full',\n menuSubContent: 'rounded-2xl',\n tableContainer: 'rounded-2xl',\n tableEmptyIcon: 'rounded-full',\n tableLoadingSkeleton: 'rounded-full',\n layoutRoot: 'rounded-2xl',\n layoutPane: 'rounded-2xl',\n },\n};\n\nconst borderSlots: Record<BaseBorder, Partial<BaseThemeSlots>> = {\n none: {\n buttonBase: 'border-transparent',\n badgeBase: 'border-transparent',\n panelRoot: 'border-transparent',\n panelFooter: 'border-transparent',\n stateRoot: 'border-transparent',\n controlWrapper: 'border-transparent',\n selectMenu: 'border-transparent',\n switchTrack: 'border-transparent',\n checkboxBox: 'border-transparent',\n radioOption: 'border-transparent',\n radioMarker: 'border-transparent',\n dialogPanel: 'border-transparent',\n dialogHeader: 'border-transparent',\n dialogFooter: 'border-transparent',\n dropdownMenu: 'border-transparent',\n tooltipContent: 'border-transparent',\n noticeBase: 'border-transparent',\n dividerRoot: 'border-transparent',\n tabsList: 'border-transparent',\n tabsPanel: 'border-transparent',\n segmentedRoot: 'border-transparent',\n avatarRoot: 'border-transparent',\n toolbarRoot: 'border-transparent',\n paginationButton: 'border-transparent',\n descriptionListItem: 'border-transparent',\n accordionItem: 'border-transparent',\n accordionPanel: 'border-transparent',\n menuContent: 'border-transparent',\n menuSeparator: 'bg-transparent',\n menuSubContent: 'border-transparent',\n tableContainer: 'border-transparent [--base-table-header-separator:transparent]',\n tableHeader: 'border-transparent',\n tableFooter: '[&_tr>*]:border-transparent',\n tableFooterBar: 'border-transparent',\n tableFooterBarAttached: 'border-t border-transparent',\n tableRow: '[&>*]:border-transparent',\n tableEmptyRow: '[&>*]:border-transparent',\n tableLoadingRow: '[&>*]:border-transparent',\n layoutRoot: 'border-transparent',\n layoutPaneBordered: 'border-transparent',\n layoutResizeHandle: 'bg-transparent hover:bg-transparent active:bg-transparent focus-visible:bg-transparent',\n },\n subtle: {\n buttonDefault: 'border-border/60',\n badgeDefault: 'border-border/60',\n panelRoot: 'border-border/60',\n panelFooter: 'border-border/60',\n stateRoot: 'border-border/60',\n controlWrapper: 'border-border/60',\n selectMenu: 'border-border/60',\n switchTrack: 'border-border/60',\n checkboxBox: 'border-border/60',\n radioOption: 'border-border/60',\n radioMarker: 'border-border/60',\n dialogPanel: 'border-border/60',\n dialogHeader: 'border-border/60',\n dialogFooter: 'border-border/60',\n dropdownMenu: 'border-border/60',\n tooltipContent: 'border-border/60',\n noticeDefault: 'border-border/60',\n dividerRoot: 'border-border/60',\n tabsList: 'border-border/60',\n tabsPanel: 'border-border/60',\n segmentedRoot: 'border-border/60',\n avatarRoot: 'border-border/60',\n toolbarRoot: 'border-border/60',\n paginationButton: 'border-border/60',\n descriptionListItem: 'border-border/60',\n accordionItem: 'border-border/60',\n accordionPanel: 'border-border/60',\n menuContent: 'border-border/60',\n menuSeparator: 'bg-border/60',\n menuSubContent: 'border-border/60',\n tableContainer: 'border-border/60 [--base-table-header-separator:hsl(var(--border)_/_0.6)]',\n tableHeader: 'border-border/60',\n tableFooter: '[&_tr>*]:border-border/60',\n tableFooterBar: 'border-border/60',\n tableFooterBarAttached: 'border-t border-border/60',\n tableRow: '[&>*]:border-border/50',\n tableEmptyRow: '[&>*]:border-border/50',\n tableLoadingRow: '[&>*]:border-border/50',\n layoutRoot: 'border-border/60',\n layoutPaneBordered: 'border-border/60',\n },\n solid: {},\n strong: {\n buttonDefault: 'border-foreground/20',\n badgeDefault: 'border-foreground/20',\n panelRoot: 'border-foreground/20',\n panelFooter: 'border-foreground/20',\n stateRoot: 'border-foreground/20',\n controlWrapper: 'border-foreground/20',\n selectMenu: 'border-foreground/20',\n switchTrack: 'border-foreground/20',\n checkboxBox: 'border-foreground/20',\n radioOption: 'border-foreground/20',\n radioMarker: 'border-foreground/20',\n dialogPanel: 'border-foreground/20',\n dialogHeader: 'border-foreground/15',\n dialogFooter: 'border-foreground/15',\n dropdownMenu: 'border-foreground/20',\n tooltipContent: 'border-foreground/20',\n noticeDefault: 'border-foreground/20',\n dividerRoot: 'border-foreground/20',\n tabsList: 'border-foreground/20',\n tabsPanel: 'border-foreground/20',\n segmentedRoot: 'border-foreground/20',\n avatarRoot: 'border-foreground/20',\n toolbarRoot: 'border-foreground/20',\n paginationButton: 'border-foreground/20',\n descriptionListItem: 'border-foreground/20',\n accordionItem: 'border-foreground/20',\n accordionPanel: 'border-foreground/20',\n menuContent: 'border-foreground/20',\n menuSeparator: 'bg-foreground/15',\n menuSubContent: 'border-foreground/20',\n tableContainer:\n 'border-foreground/20 [--base-table-header-separator:hsl(var(--foreground)_/_0.15)]',\n tableHeader: 'border-foreground/20',\n tableFooter: '[&_tr>*]:border-foreground/20',\n tableFooterBar: 'border-foreground/20',\n tableFooterBarAttached: 'border-t border-foreground/20',\n tableRow: '[&>*]:border-foreground/15',\n tableEmptyRow: '[&>*]:border-foreground/15',\n tableLoadingRow: '[&>*]:border-foreground/15',\n layoutRoot: 'border-foreground/20',\n layoutPaneBordered: 'border-foreground/20',\n layoutResizeHandle: 'hover:bg-foreground/15 active:bg-foreground/20 focus-visible:bg-foreground/15',\n },\n};\n\nconst backgroundSlots: Record<BaseBackground, Partial<BaseThemeSlots>> = {\n plain: {},\n muted: {\n buttonDefault: 'bg-muted/20 hover:bg-muted/45',\n panelRoot: 'bg-card',\n panelFooter: 'bg-muted/20',\n stateRoot: 'bg-muted/20',\n controlWrapper: 'bg-background',\n selectMenu: 'bg-background',\n selectOptionActive: 'bg-muted/70 text-foreground',\n checkboxBox: 'bg-background',\n radioOption: 'bg-card hover:bg-muted/45',\n radioMarker: 'bg-background',\n dialogPanel: 'bg-card',\n dropdownMenu: 'bg-background',\n dropdownItem: 'hover:bg-muted/60',\n tooltipContent: 'bg-popover',\n noticeDefault: 'bg-muted/20',\n tabsList: 'bg-muted/35',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-card',\n segmentedRoot: 'bg-muted/35',\n segmentedItemActive: 'bg-background',\n progressTrack: 'bg-muted/60',\n skeletonRoot: 'bg-muted',\n toolbarRoot: 'bg-card',\n paginationButton: 'bg-background hover:bg-muted/60',\n paginationPage: 'bg-muted/60',\n descriptionListItem: 'bg-card',\n accordionItem: 'bg-card',\n menuContent: 'bg-background',\n menuItem: 'focus:bg-muted/70 data-[highlighted]:bg-muted/70',\n menuSubTrigger:\n 'focus:bg-muted/70 data-[highlighted]:bg-muted/70 data-[state=open]:bg-muted/70',\n menuSubContent: 'bg-background',\n tableContainer: 'bg-background/95 [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/35',\n tableFooterBar: 'bg-muted/30 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.45)]',\n tableLoadingSkeleton: 'bg-muted',\n layoutRoot: 'bg-card',\n layoutPane: 'bg-card',\n layoutPaneMuted: 'bg-muted/35',\n layoutResizeHandle: 'hover:bg-border/70 active:bg-border/80 focus-visible:bg-border/70',\n },\n soft: {\n buttonDefault: 'bg-muted/30 hover:bg-muted/55',\n panelRoot: 'bg-background/95 shadow-sm',\n stateRoot: 'bg-background/95 shadow-sm',\n controlWrapper: 'bg-background/95',\n selectMenu: 'bg-background/95 shadow-xl',\n selectOptionActive: 'bg-muted/60 text-foreground',\n checkboxBox: 'bg-background/95',\n radioOption: 'bg-background/95 shadow-sm hover:bg-muted/35',\n radioMarker: 'bg-background/95',\n dialogPanel: 'bg-background/95 shadow-xl',\n dropdownMenu: 'bg-background/95 shadow-xl',\n dropdownItem: 'hover:bg-muted/55',\n tooltipContent: 'bg-popover shadow-xl',\n noticeDefault: 'bg-background/95 shadow-sm',\n tabsList: 'bg-background/60 shadow-sm',\n tabsTriggerActive: 'bg-background',\n tabsPanel: 'bg-background/95 shadow-sm',\n segmentedRoot: 'bg-background/60 shadow-sm',\n segmentedItemActive: 'bg-background',\n skeletonRoot: 'bg-background/80',\n toolbarRoot: 'bg-background/95 shadow-sm',\n paginationButton: 'bg-background/95 hover:bg-muted/55',\n descriptionListItem: 'bg-background/95 shadow-sm',\n accordionItem: 'bg-background/95 shadow-sm',\n menuContent: 'bg-background/95 shadow-xl',\n menuItem: 'focus:bg-muted/60 data-[highlighted]:bg-muted/60',\n menuSubTrigger:\n 'focus:bg-muted/60 data-[highlighted]:bg-muted/60 data-[state=open]:bg-muted/60',\n menuSubContent: 'bg-background/95 shadow-xl',\n tableContainer:\n 'bg-background/95 shadow-sm [scrollbar-gutter:stable]',\n tableFooter: 'bg-muted/25',\n tableFooterBar: 'bg-muted/25 shadow-none',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--muted)_/_0.35)]',\n tableLoadingSkeleton: 'bg-muted/65',\n layoutRoot: 'bg-background/95 shadow-sm',\n layoutPane: 'bg-background/95 shadow-sm',\n layoutPaneSoft: 'bg-background/95 shadow-md',\n },\n glass: {\n buttonBase: 'backdrop-blur-md',\n buttonDefault:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-foreground',\n panelRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n panelFooter: 'border-white/10 bg-white/[0.05]',\n stateRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n stateIcon: 'bg-white/10 text-foreground',\n controlWrapper:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n selectMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n selectOption: 'text-foreground',\n selectOptionActive: 'bg-white/[0.14] text-foreground',\n selectOptionSelected: 'bg-white/[0.18] text-foreground',\n switchTrack: 'border-white/10 bg-white/[0.12] backdrop-blur-md',\n checkboxBox: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n checkboxBoxChecked: 'border-white/20 bg-white/[0.22] text-foreground',\n radioOption: 'border-white/10 bg-white/[0.06] backdrop-blur-md hover:bg-white/[0.10]',\n radioMarker: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n radioMarkerChecked: 'border-white/25 bg-white/[0.16]',\n dialogOverlay: 'bg-background/45 backdrop-blur-md',\n dialogPanel: 'border-white/10 bg-white/[0.08] shadow-2xl backdrop-blur-md',\n dialogHeader: 'border-white/10',\n dialogFooter: 'border-white/10',\n dropdownMenu:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n dropdownItem: 'text-foreground hover:bg-white/[0.14]',\n tooltipContent:\n 'border-foreground/10 bg-background/15 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n noticeDefault:\n 'border-white/10 bg-white/[0.08] text-foreground backdrop-blur-md',\n dividerRoot: 'border-white/15',\n tabsList: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n tabsTrigger: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n tabsTriggerActive: 'bg-white/[0.16] text-foreground shadow-none',\n tabsPanel:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n segmentedRoot: 'border-white/10 bg-white/[0.08] backdrop-blur-md',\n segmentedItem: 'text-muted-foreground hover:bg-white/[0.12] hover:text-foreground',\n segmentedItemActive: 'bg-white/[0.16] text-foreground shadow-none',\n progressTrack: 'bg-white/[0.12]',\n skeletonRoot: 'bg-white/[0.16]',\n avatarRoot: 'border-white/10 bg-white/[0.12] text-foreground',\n avatarFallback: 'bg-white/[0.12] text-foreground',\n avatarStatus: 'border-background',\n toolbarRoot:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n paginationButton:\n 'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.12] text-foreground',\n descriptionListItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionItem:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n accordionPanel: 'border-white/10',\n menuContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground',\n menuSubTrigger:\n 'text-foreground focus:bg-white/[0.14] focus:text-foreground data-[highlighted]:bg-white/[0.14] data-[highlighted]:text-foreground data-[state=open]:bg-white/[0.16]',\n menuSubContent:\n 'border-foreground/10 bg-background/10 text-foreground shadow-[0_18px_60px_hsl(var(--foreground)/0.18)] backdrop-blur-md',\n tableContainer:\n 'border-foreground/10 bg-background/[0.06] shadow-none backdrop-blur-md [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.94)] [--base-table-header-separator:hsl(var(--foreground)/0.24)]',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.08)]',\n tableHeadLabel: 'text-foreground',\n tableLoadingSkeleton: 'bg-white/[0.16]',\n layoutRoot:\n 'border-white/10 bg-white/[0.05] shadow-none backdrop-blur-md',\n layoutPane:\n 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n layoutPaneMuted: 'bg-white/[0.08]',\n layoutPaneSoft: 'bg-white/[0.10] shadow-none backdrop-blur-md',\n layoutResizeHandle: 'text-foreground/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n dark: {\n buttonBase:\n 'border-white/15 text-white shadow-lg backdrop-blur',\n buttonDefault: 'bg-black/30 hover:bg-black/[0.45]',\n buttonPrimary: 'border-white/25 bg-white/20 text-white hover:bg-white/25',\n buttonMuted:\n 'border-white/10 bg-black/20 text-white/70 hover:bg-black/[0.35] hover:text-white',\n badgeDefault: 'border-white/10 bg-white/[0.08] text-white',\n badgeMuted: 'border-white/10 bg-black/20 text-white/70',\n panelRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n panelTitle: 'text-white',\n panelDescription: 'text-white/65',\n panelBody: 'text-white/85',\n panelFooter: 'border-white/10 bg-white/[0.04]',\n stateRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n stateIcon: 'bg-white/10 text-white/75',\n stateTitle: 'text-white',\n stateDescription: 'text-white/65',\n fieldLabel: 'text-white',\n fieldDescription: 'text-white/65',\n fieldMessage: 'text-white/65',\n controlWrapper:\n 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur focus-within:border-white/35',\n controlBase: 'text-white placeholder:text-white/45',\n selectChevron: 'text-white/65',\n selectMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n selectOption: 'text-white',\n selectOptionActive: 'bg-white/[0.12] text-white',\n selectOptionSelected: 'bg-white/[0.16] text-white',\n selectPlaceholder: 'text-white/45',\n switchTrack: 'border-white/15 bg-black/30 shadow-lg backdrop-blur',\n switchChecked: 'border-white/25 bg-white/25 text-white',\n switchLabel: 'text-white',\n switchDescription: 'text-white/65',\n checkboxBox: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n checkboxBoxChecked: 'border-white/25 bg-white/25 text-white',\n checkboxLabel: 'text-white',\n checkboxDescription: 'text-white/65',\n radioOption: 'border-white/10 bg-white/[0.06] text-white hover:bg-white/[0.08]',\n radioMarker: 'border-white/15 bg-black/30 text-white shadow-lg backdrop-blur',\n radioMarkerChecked: 'border-white/25 bg-white/25',\n radioIndicator: 'bg-white',\n radioLabel: 'text-white',\n radioDescription: 'text-white/65',\n dialogOverlay: 'bg-slate-950/75',\n dialogPanel: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n dialogHeader: 'border-white/10',\n dialogTitle: 'text-white',\n dialogDescription: 'text-white/65',\n dialogBody: 'text-white/85',\n dialogFooter: 'border-white/10',\n dialogClose: 'text-white/65 hover:bg-white/[0.08] hover:text-white',\n dropdownMenu: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n dropdownLabel: 'text-white/55',\n dropdownSeparator: 'bg-white/15',\n dropdownItem: 'text-white hover:bg-white/[0.10]',\n dropdownItemDescription: 'text-white/55',\n dropdownItemShortcut: 'text-white/55',\n tooltipContent: 'border-white/15 bg-slate-950 text-white shadow-2xl',\n noticeDefault: 'border-white/10 bg-white/[0.08] text-white',\n noticeMuted: 'border-white/10 bg-black/20 text-white/70',\n dividerRoot: 'border-white/15',\n dividerLabel: 'text-white/55',\n sectionHeaderEyebrow: 'text-white/55',\n sectionHeaderTitle: 'text-white',\n sectionHeaderDescription: 'text-white/65',\n tabsList: 'border-white/10 bg-white/[0.08]',\n tabsTrigger: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n tabsTriggerActive: 'bg-white/[0.16] text-white shadow-none',\n tabsPanel: 'border-white/10 bg-white/[0.06] text-white',\n segmentedRoot: 'border-white/10 bg-white/[0.08]',\n segmentedItem: 'text-white/65 hover:bg-white/[0.12] hover:text-white',\n segmentedItemActive: 'bg-white/[0.16] text-white shadow-none',\n progressTrack: 'bg-white/[0.12]',\n progressLabel: 'text-white',\n progressValue: 'text-white/65',\n skeletonRoot: 'bg-white/[0.14]',\n avatarRoot: 'border-white/15 bg-white/[0.10] text-white',\n avatarFallback: 'bg-white/[0.10] text-white/75',\n avatarText: 'text-white',\n avatarStatus: 'border-slate-950',\n toolbarRoot: 'border-white/10 bg-white/[0.06] text-white',\n toolbarTitle: 'text-white',\n toolbarDescription: 'text-white/65',\n breadcrumbLink: 'text-white/65 hover:text-white',\n breadcrumbCurrent: 'text-white',\n breadcrumbSeparator: 'text-white/45',\n paginationInfo: 'text-white/65',\n paginationButton: 'border-white/10 bg-white/[0.08] text-white hover:bg-white/[0.14]',\n paginationPage: 'bg-white/[0.14] text-white',\n descriptionListItem: 'border-white/10 bg-white/[0.06]',\n descriptionListTerm: 'text-white/55',\n descriptionListValue: 'text-white',\n accordionItem: 'border-white/10 bg-white/[0.06]',\n accordionTrigger: 'text-white hover:bg-white/[0.08]',\n accordionPanel: 'border-white/10 text-white/70',\n tableContainer:\n 'border-foreground/10 bg-background text-foreground shadow-none [scrollbar-gutter:stable] [--base-table-sticky-header-bg:hsl(var(--background)/0.98)] [--base-table-header-separator:hsl(var(--foreground)/0.16)]',\n tableRoot: 'text-white',\n tableHeader: 'border-white/10',\n tableFooter: 'bg-white/[0.05] [&_tr>*]:border-white/10',\n tableFooterBar: 'border-white/10 bg-white/[0.05] text-white/65',\n tableFooterBarAttached: 'border-t border-white/10',\n tableRow: '[&>*]:border-white/10',\n tableRowInteractive: 'cursor-pointer [--base-table-row-hover-bg:hsl(var(--foreground)/0.06)]',\n tableHead: 'text-white/65',\n tableHeadLabel: 'text-white',\n tableHeadDescription: 'text-white/55',\n tableHeadMeta: 'text-white/55',\n tableHeadIcon: 'text-white/55',\n tableHeadSortIcon: 'text-white/55',\n tableHeadDragHandle: 'text-white/55 hover:bg-white/[0.08]',\n tableHeadResizeHandle: 'after:bg-white/20 hover:after:bg-white/60',\n tableCell: 'text-white/85',\n tableEmptyIcon: 'bg-white/10 text-white/65',\n tableEmptyTitle: 'text-white',\n tableEmptyDescription: 'text-white/60',\n menuContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n menuLabel: 'text-white/55',\n menuSeparator: 'bg-white/10',\n menuItem:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white',\n menuItemDefault: 'text-white',\n menuItemPrimary: 'text-primary focus:text-primary data-[highlighted]:text-primary',\n menuItemSuccess:\n 'text-[hsl(var(--success,142_69%_58%))] focus:text-[hsl(var(--success,142_69%_58%))] data-[highlighted]:text-[hsl(var(--success,142_69%_58%))]',\n menuItemWarning:\n 'text-[hsl(var(--warning-foreground,53_98%_77%))] focus:text-[hsl(var(--warning-foreground,53_98%_77%))] data-[highlighted]:text-[hsl(var(--warning-foreground,53_98%_77%))]',\n menuItemDanger:\n 'text-destructive-text focus:text-destructive-text data-[highlighted]:text-destructive-text',\n menuItemMuted:\n 'text-white/65 focus:text-white data-[highlighted]:text-white',\n menuItemShortcut: 'text-white/45',\n menuSubTrigger:\n 'text-white focus:bg-white/[0.10] focus:text-white data-[highlighted]:bg-white/[0.10] data-[highlighted]:text-white data-[state=open]:bg-white/[0.12]',\n menuSubTriggerIcon: 'text-white/55',\n menuSubContent: 'border-white/10 bg-slate-950 text-white shadow-2xl',\n tableLoadingSkeleton: 'bg-white/[0.14]',\n layoutRoot: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPane: 'border-white/10 bg-slate-950 text-white shadow-none',\n layoutPaneMuted: 'bg-white/[0.06]',\n layoutPaneSoft: 'bg-white/[0.08] shadow-none',\n layoutResizeHandle: 'text-white/65 hover:bg-white/10 active:bg-white/15 focus-visible:bg-white/10',\n layoutResizeHandleIndicator: 'bg-white/45 group-hover/resize:bg-white/75',\n },\n};\n\nconst presetDefaults: Record<\n BaseThemePresetId,\n Pick<BaseAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n default: {\n density: 'default',\n radius: 'md',\n border: 'solid',\n background: 'plain',\n },\n soft: {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'soft',\n },\n compact: {\n density: 'compact',\n radius: 'md',\n border: 'subtle',\n background: 'muted',\n },\n 'tinted-glass': {\n density: 'default',\n radius: 'lg',\n border: 'subtle',\n background: 'glass',\n },\n glass: {\n density: 'default',\n radius: 'xl',\n border: 'subtle',\n background: 'glass',\n },\n 'hard-edge': {\n density: 'compact',\n radius: 'none',\n border: 'strong',\n background: 'plain',\n },\n};\n\nconst presetSlots: Record<string, Partial<BaseThemeSlots>> = {\n soft: {\n buttonBase: 'font-medium',\n panelRoot: 'border-border/70',\n controlWrapper: 'font-medium',\n tabsTrigger: 'font-medium',\n segmentedItem: 'font-medium',\n toolbarRoot: 'border-border/70',\n tableContainer: 'border-border/70',\n tableFooterBar: 'border-border/70',\n tableHeadLabel: 'font-semibold',\n menuItemLabel: 'font-medium',\n },\n compact: {\n buttonBase: 'text-xs',\n badgeBase: 'text-[11px]',\n fieldLabel: 'text-xs',\n controlBase: 'text-xs',\n selectOption: 'text-xs',\n menuItem: 'text-xs',\n menuSubTrigger: 'text-xs',\n noticeBase: 'text-xs',\n sectionHeaderTitle: 'text-sm',\n tabsTrigger: 'text-xs',\n segmentedItem: 'text-xs',\n toolbarTitle: 'text-xs',\n paginationRoot: 'text-xs',\n },\n 'tinted-glass': {\n buttonPrimary: 'border-primary/25 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n badgePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n noticePrimary: 'border-primary/25 bg-primary/15 text-primary-foreground',\n progressIndicator: 'bg-primary',\n avatarStatus: 'border-background',\n },\n glass: {\n panelRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n stateRoot: 'shadow-[0_24px_80px_hsl(var(--foreground)/0.12)]',\n noticeBase: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n tabsPanel: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n toolbarRoot: 'shadow-[0_18px_60px_hsl(var(--foreground)/0.10)]',\n descriptionListItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n accordionItem: 'shadow-[0_12px_40px_hsl(var(--foreground)/0.08)]',\n },\n 'hard-edge': {\n buttonBase: 'shadow-none',\n panelRoot: 'shadow-none',\n stateRoot: 'shadow-none',\n controlWrapper: 'shadow-none',\n selectMenu: 'shadow-none',\n menuContent: 'shadow-none',\n menuSubContent: 'shadow-none',\n noticeBase: 'shadow-none',\n tabsList: 'shadow-none',\n tabsTriggerActive: 'shadow-none',\n tabsPanel: 'shadow-none',\n segmentedRoot: 'shadow-none',\n segmentedItemActive: 'shadow-none',\n toolbarRoot: 'shadow-none',\n descriptionListItem: 'shadow-none',\n accordionItem: 'shadow-none',\n },\n};\n\nfunction getPresetDefaults(preset: BaseThemePresetId) {\n return (\n presetDefaults[preset as keyof typeof presetDefaults] ?? presetDefaults.default\n );\n}\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof BaseThemeSlots>;\n\nfunction mergeSlots(\n ...sources: Array<Partial<BaseThemeSlots> | undefined>\n): ResolvedSlots {\n return slotKeys.reduce((resolved, key) => {\n resolved[key] = cn(...sources.map((source) => source?.[key]));\n return resolved;\n }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(...styleSets: Array<BaseThemeStyles | undefined>) {\n return Object.assign({}, ...styleSets.filter(Boolean));\n}\n\nexport function resolveBaseAppearance(\n appearance?: BaseAppearance,\n): BaseResolvedTheme {\n const preset = appearance?.preset ?? 'default';\n const variant = appearance?.variant ?? 'default';\n const defaults = getPresetDefaults(preset);\n const density = appearance?.density ?? defaults.density ?? 'default';\n const state = appearance?.state ?? 'idle';\n const radius = appearance?.radius ?? defaults.radius ?? 'md';\n const border = appearance?.border ?? defaults.border ?? 'solid';\n const background = appearance?.background ?? defaults.background ?? 'plain';\n\n return {\n preset,\n variant,\n density,\n state,\n radius,\n border,\n background,\n styles: mergeStyles(emptyStyles, appearance?.styles),\n slots: mergeSlots(\n baseSlots,\n presetSlots[preset],\n densitySlots[density],\n radiusSlots[radius],\n borderSlots[border],\n backgroundSlots[background],\n appearance?.slots,\n ),\n };\n}\n\nexport function getBaseButtonToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n active = false,\n) {\n return cn(\n tone === 'default' && theme.slots.buttonDefault,\n tone === 'primary' && theme.slots.buttonPrimary,\n tone === 'success' && theme.slots.buttonSuccess,\n tone === 'warning' && theme.slots.buttonWarning,\n tone === 'danger' && theme.slots.buttonDanger,\n tone === 'muted' && theme.slots.buttonMuted,\n active && theme.slots.buttonActive,\n );\n}\n\nexport function getBaseBadgeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.badgeDefault,\n tone === 'primary' && theme.slots.badgePrimary,\n tone === 'success' && theme.slots.badgeSuccess,\n tone === 'warning' && theme.slots.badgeWarning,\n tone === 'danger' && theme.slots.badgeDanger,\n tone === 'muted' && theme.slots.badgeMuted,\n );\n}\n\nexport function getBaseNoticeToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.noticeDefault,\n tone === 'primary' && theme.slots.noticePrimary,\n tone === 'success' && theme.slots.noticeSuccess,\n tone === 'warning' && theme.slots.noticeWarning,\n tone === 'danger' && theme.slots.noticeDanger,\n tone === 'muted' && theme.slots.noticeMuted,\n );\n}\n\nexport function getBaseMenuItemToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseControlTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.menuItemDefault,\n tone === 'primary' && theme.slots.menuItemPrimary,\n tone === 'success' && theme.slots.menuItemSuccess,\n tone === 'warning' && theme.slots.menuItemWarning,\n tone === 'danger' && theme.slots.menuItemDanger,\n tone === 'muted' && theme.slots.menuItemMuted,\n );\n}\n\nexport function getBaseTypographyToneClassName(\n theme: BaseResolvedTheme,\n tone: BaseTypographyTone = 'default',\n) {\n return cn(\n tone === 'default' && theme.slots.typographyToneDefault,\n tone === 'muted' && theme.slots.typographyToneMuted,\n tone === 'primary' && theme.slots.typographyTonePrimary,\n tone === 'success' && theme.slots.typographyToneSuccess,\n tone === 'warning' && theme.slots.typographyToneWarning,\n tone === 'danger' && theme.slots.typographyToneDanger,\n tone === 'inherit' && theme.slots.typographyToneInherit,\n );\n}\n\nexport function getBaseTextSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseTypographySize = 'md',\n) {\n return cn(\n size === 'xs' && theme.slots.textSizeXs,\n size === 'sm' && theme.slots.textSizeSm,\n size === 'md' && theme.slots.textSizeMd,\n size === 'lg' && theme.slots.textSizeLg,\n size === 'xl' && theme.slots.textSizeXl,\n );\n}\n\nexport function getBaseHeadingSizeClassName(\n theme: BaseResolvedTheme,\n size: BaseHeadingSize = 'lg',\n) {\n return cn(\n size === 'xs' && theme.slots.headingSizeXs,\n size === 'sm' && theme.slots.headingSizeSm,\n size === 'md' && theme.slots.headingSizeMd,\n size === 'lg' && theme.slots.headingSizeLg,\n size === 'xl' && theme.slots.headingSizeXl,\n size === '2xl' && theme.slots.headingSize2xl,\n );\n}\n\nexport function getBaseListSpacingClassName(\n theme: BaseResolvedTheme,\n spacing: BaseListSpacing = 'default',\n) {\n return cn(\n spacing === 'compact' && theme.slots.listSpacingCompact,\n spacing === 'default' && theme.slots.listSpacingDefault,\n spacing === 'relaxed' && theme.slots.listSpacingRelaxed,\n );\n}\n\nexport function getBaseListMarkerClassName(\n theme: BaseResolvedTheme,\n marker: Exclude<BaseListMarker, 'auto'>,\n) {\n return cn(\n marker === 'none' && theme.slots.listMarkerNone,\n marker === 'disc' && theme.slots.listMarkerDisc,\n marker === 'circle' && theme.slots.listMarkerCircle,\n marker === 'square' && theme.slots.listMarkerSquare,\n marker === 'decimal' && theme.slots.listMarkerDecimal,\n marker === 'lower-alpha' && theme.slots.listMarkerLowerAlpha,\n marker === 'upper-alpha' && theme.slots.listMarkerUpperAlpha,\n );\n}\n\nconst cssLengthPattern = /^(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))$/i;\nconst cssLengthFunctions = new Set(['calc', 'clamp', 'max', 'min', 'var']);\nconst unsafeCssValuePattern = /[;{}<>\"'\\\\\\u0000-\\u001f\\u007f]/;\nconst gridTemplateTokenPattern = /(?:\\b(?:auto|fit-content|max-content|min-content|subgrid)\\b|(?:calc|clamp|max|min|minmax|repeat|var)\\s*\\(|(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|fr|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)\\]]))/i;\n\nfunction hasBalancedDelimiters(value: string) {\n const pairs: Record<string, string> = { ')': '(', ']': '[' };\n const stack: string[] = [];\n\n for (const character of value) {\n if (character === '(' || character === '[') {\n stack.push(character);\n } else if (character === ')' || character === ']') {\n if (stack.pop() !== pairs[character]) return false;\n }\n }\n\n return stack.length === 0;\n}\n\nfunction isSupportedCssLengthFunction(value: string) {\n const match = /^([a-z]+)\\(([\\s\\S]+)\\)$/i.exec(value);\n if (!match || !cssLengthFunctions.has(match[1].toLowerCase())) return false;\n if (!match[2].trim() || !hasBalancedDelimiters(value)) return false;\n\n if (match[1].toLowerCase() === 'var') {\n return /^\\s*--[a-z0-9_-]+(?:\\s*,[\\s\\S]+)?\\s*$/i.test(match[2]);\n }\n\n return cssLengthPattern.test(match[2].trim()) || /\\b(?:calc|clamp|max|min|var)\\s*\\(/i.test(match[2]) || /(?:^|[\\s,(])(?:0+(?:\\.0+)?|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:%|cap|ch|cm|dvb|dvh|dvi|dvw|em|ex|ic|in|lh|lvb|lvh|lvi|lvw|mm|pc|pt|px|q|rem|rlh|svb|svh|svi|svw|vb|vh|vi|vmax|vmin|vw))(?:$|[\\s,)])/i.test(match[2]);\n}\n\nexport function resolveBaseLayoutLength(\n componentName: string,\n propName: string,\n value: BaseLayoutLength,\n) {\n if (typeof value === 'number') {\n if (!Number.isFinite(value) || value < 0) {\n throw new RangeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n return `${value}px`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n `${componentName} ${propName} must be a finite, non-negative number or a supported CSS length string.`,\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n (!cssLengthPattern.test(normalized) &&\n !isSupportedCssLengthFunction(normalized))\n ) {\n throw new TypeError(\n `${componentName} ${propName} must be a non-empty, non-negative CSS length (for example 12px, 1rem, 5%, or var(--space)).`,\n );\n }\n\n return normalized;\n}\n\nexport function resolveBaseGridColumns(value: number | string) {\n if (typeof value === 'number') {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n return `repeat(${value}, minmax(0, 1fr))`;\n }\n\n if (typeof value !== 'string') {\n throw new TypeError(\n 'BaseGrid columns must be a positive integer or a supported CSS grid-template-columns string.',\n );\n }\n\n const normalized = value.trim();\n if (\n !normalized ||\n unsafeCssValuePattern.test(normalized) ||\n /\\burl\\s*\\(/i.test(normalized) ||\n !hasBalancedDelimiters(normalized) ||\n !gridTemplateTokenPattern.test(normalized)\n ) {\n throw new TypeError(\n 'BaseGrid columns must be a non-empty CSS grid-template-columns value such as \"12rem minmax(0, 1fr)\" or \"repeat(3, minmax(0, 1fr))\".',\n );\n }\n\n return normalized;\n}\n\ntype BaseLayoutAlignValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'stretch'\n | 'baseline';\n\ntype BaseLayoutJustifyValue =\n | 'flex-start'\n | 'center'\n | 'flex-end'\n | 'space-between'\n | 'space-around'\n | 'space-evenly';\n\nconst layoutAlignValues: Record<BaseLayoutAlign, BaseLayoutAlignValue> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n};\n\nconst layoutJustifyValues: Record<\n BaseLayoutJustify,\n BaseLayoutJustifyValue\n> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n};\n\nexport function resolveBaseLayoutAlign(\n componentName: string,\n value: BaseLayoutAlign,\n): BaseLayoutAlignValue {\n if (!Object.prototype.hasOwnProperty.call(layoutAlignValues, value)) {\n throw new TypeError(\n `${componentName} align must be one of: start, center, end, stretch, baseline.`,\n );\n }\n return layoutAlignValues[value];\n}\n\nexport function resolveBaseLayoutJustify(\n componentName: string,\n value: BaseLayoutJustify,\n): BaseLayoutJustifyValue {\n if (!Object.prototype.hasOwnProperty.call(layoutJustifyValues, value)) {\n throw new TypeError(\n `${componentName} justify must be one of: start, center, end, between, around, evenly.`,\n );\n }\n return layoutJustifyValues[value];\n}\n","import * as Dialog from '@radix-ui/react-dialog';\nimport { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport {\n useMonkeysBaseAppearance,\n useMonkeysComponentAttributes,\n useMonkeysLocaleMessages,\n} from '../../provider/context';\nimport { useBaseOverlayPortal } from './internal/overlayPortal';\nimport type { BaseControlTone, BaseDialogProps } from './types';\nimport {\n getBaseButtonToneClassName,\n resolveBaseAppearance,\n} from './theme';\nimport { cn, hasRenderableNode } from './utils';\n\nconst dialogTriggerTones = [\n 'default',\n 'primary',\n 'success',\n 'warning',\n 'danger',\n 'muted',\n] as const;\n\nfunction validateBoolean(value: unknown, name: string) {\n if (typeof value !== 'boolean') {\n throw new TypeError(`BaseDialog ${name} must be a boolean.`);\n }\n}\n\nfunction validateTriggerTone(value: unknown) {\n if (\n !dialogTriggerTones.includes(\n value as (typeof dialogTriggerTones)[number],\n )\n ) {\n throw new TypeError(\n 'BaseDialog triggerTone must be \"default\", \"primary\", \"success\", \"warning\", \"danger\", or \"muted\".',\n );\n }\n}\n\nfunction renderTrigger({\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone,\n triggerDisabled,\n theme,\n}: Pick<\n BaseDialogProps,\n 'trigger' | 'triggerDisabled' | 'triggerIcon' | 'triggerLabel'\n> & {\n triggerTone: BaseControlTone;\n theme: ReturnType<typeof resolveBaseAppearance>;\n}) {\n if (hasRenderableNode(trigger)) {\n return (\n <span\n role=\"button\"\n tabIndex={triggerDisabled ? -1 : 0}\n aria-disabled={triggerDisabled || undefined}\n onKeyDown={(event) => {\n if (triggerDisabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.currentTarget.click();\n }\n }}\n >\n {trigger}\n </span>\n );\n }\n\n if (!hasRenderableNode(triggerLabel)) return null;\n\n return (\n <button\n type=\"button\"\n disabled={triggerDisabled}\n aria-label={\n typeof triggerLabel === 'string' && triggerLabel.trim()\n ? triggerLabel\n : undefined\n }\n className={cn(\n theme.slots.buttonBase,\n getBaseButtonToneClassName(theme, triggerTone),\n triggerDisabled && theme.slots.buttonDisabled,\n )}\n style={{\n ...theme.styles.button,\n ...(triggerDisabled ? theme.styles.buttonDisabled : undefined),\n }}\n >\n {hasRenderableNode(triggerIcon) ? (\n <span data-slot=\"icon\" className={theme.slots.buttonIcon}>\n {triggerIcon}\n </span>\n ) : null}\n <span data-slot=\"label\" className={theme.slots.buttonLabel}>\n {triggerLabel}\n </span>\n </button>\n );\n}\n\nexport const BaseDialog = forwardRef<HTMLDivElement, BaseDialogProps>(\n function BaseDialog(\n {\n open,\n defaultOpen = false,\n title,\n description,\n header,\n footer,\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone = 'default',\n triggerDisabled = false,\n closeLabel,\n closeOnEscape = true,\n closeOnOverlayClick = true,\n showCloseButton = true,\n keepMounted = false,\n trapFocus = true,\n restoreFocus = true,\n initialFocus = 'first-interactive',\n initialFocusRef,\n zIndex,\n portal = false,\n appearance,\n className,\n classNames,\n style,\n children,\n onOpenChange,\n id,\n ...dialogProps\n },\n ref,\n ) {\n if (open !== undefined) validateBoolean(open, 'open');\n validateBoolean(defaultOpen, 'defaultOpen');\n validateBoolean(triggerDisabled, 'triggerDisabled');\n validateBoolean(closeOnEscape, 'closeOnEscape');\n validateBoolean(closeOnOverlayClick, 'closeOnOverlayClick');\n validateBoolean(showCloseButton, 'showCloseButton');\n validateBoolean(keepMounted, 'keepMounted');\n validateBoolean(trapFocus, 'trapFocus');\n validateBoolean(restoreFocus, 'restoreFocus');\n validateBoolean(portal, 'portal');\n validateTriggerTone(triggerTone);\n if (\n initialFocus !== 'first-interactive' &&\n initialFocus !== 'container' &&\n initialFocus !== 'explicit'\n ) {\n throw new TypeError(\n 'BaseDialog initialFocus must be \"first-interactive\", \"container\", or \"explicit\".',\n );\n }\n if (zIndex !== undefined && !Number.isFinite(zIndex)) {\n throw new TypeError('BaseDialog zIndex must be a finite number.');\n }\n\n const messages = useMonkeysLocaleMessages().dialog;\n const resolvedAppearance = useMonkeysBaseAppearance(appearance);\n const componentAttributes = useMonkeysComponentAttributes();\n const resolvedCloseLabel =\n closeLabel === undefined ? messages.close : closeLabel;\n const theme = resolveBaseAppearance(resolvedAppearance);\n const overlayPortal = useBaseOverlayPortal({ disabled: !portal });\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const panelRef = useRef<HTMLDivElement | null>(null);\n const returnFocusRef = useRef<HTMLElement | null>(null);\n const isControlled = open !== undefined;\n const isOpen = isControlled ? open : uncontrolledOpen;\n const portalState =\n portal && overlayPortal.shouldPortal ? 'portaled' : 'inline';\n const hasTitle = hasRenderableNode(title);\n const hasDescription = hasRenderableNode(description);\n const hasCustomHeader = hasRenderableNode(header);\n\n if (\n showCloseButton &&\n (typeof resolvedCloseLabel !== 'string' || !resolvedCloseLabel.trim())\n ) {\n throw new TypeError(\n 'BaseDialog closeLabel must be a non-empty string when showCloseButton is true.',\n );\n }\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n };\n\n useEffect(() => {\n if (!isOpen || !keepMounted) return undefined;\n const panel = panelRef.current;\n const ownerDocument = panel?.ownerDocument;\n const ownerWindow = ownerDocument?.defaultView;\n if (!panel || !ownerDocument || !ownerWindow) return undefined;\n\n returnFocusRef.current =\n ownerDocument.activeElement instanceof ownerWindow.HTMLElement\n ? ownerDocument.activeElement\n : null;\n const focusableSelector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',');\n const focusInitial = () => {\n const firstInteractive = panel.querySelector<HTMLElement>(focusableSelector);\n const target =\n initialFocus === 'container'\n ? panel\n : initialFocus === 'explicit'\n ? initialFocusRef?.current ?? panel\n : firstInteractive ?? panel;\n target.focus();\n };\n const frame = ownerWindow.requestAnimationFrame(focusInitial);\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && closeOnEscape) {\n event.preventDefault();\n event.stopPropagation();\n handleOpenChange(false);\n return;\n }\n if (event.key !== 'Tab' || !trapFocus) return;\n const focusable = Array.from(\n panel.querySelectorAll<HTMLElement>(focusableSelector),\n );\n if (focusable.length === 0) {\n event.preventDefault();\n panel.focus();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (event.shiftKey && ownerDocument.activeElement === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && ownerDocument.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n };\n ownerWindow.addEventListener('keydown', handleKeyDown);\n return () => {\n ownerWindow.cancelAnimationFrame(frame);\n ownerWindow.removeEventListener('keydown', handleKeyDown);\n if (restoreFocus && returnFocusRef.current?.isConnected) {\n returnFocusRef.current.focus();\n }\n };\n }, [\n closeOnEscape,\n initialFocus,\n initialFocusRef,\n isOpen,\n keepMounted,\n restoreFocus,\n trapFocus,\n ]);\n\n const semanticHeader =\n hasCustomHeader || hasTitle || hasDescription ? (\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"header\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogHeader, classNames?.header)}\n >\n {hasCustomHeader ? header : null}\n {hasTitle ? (\n <Dialog.Title\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"title\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={\n hasCustomHeader\n ? 'sr-only'\n : cn(theme.slots.dialogTitle, classNames?.title)\n }\n >\n {title}\n </Dialog.Title>\n ) : null}\n {hasDescription ? (\n <Dialog.Description\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"description\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={\n hasCustomHeader\n ? 'sr-only'\n : cn(\n theme.slots.dialogDescription,\n classNames?.description,\n )\n }\n >\n {description}\n </Dialog.Description>\n ) : null}\n </div>\n ) : null;\n\n const triggerNode = renderTrigger({\n trigger,\n triggerLabel,\n triggerIcon,\n triggerTone,\n triggerDisabled,\n theme,\n });\n\n const dialogLayers = isOpen || keepMounted ? (\n <>\n <Dialog.Overlay\n forceMount={keepMounted || undefined}\n hidden={!isOpen}\n {...componentAttributes}\n aria-hidden=\"true\"\n data-monkeys-component=\"dialog\"\n data-slot=\"overlay\"\n data-portal={portalState}\n className={cn(theme.slots.dialogOverlay, classNames?.overlay)}\n style={{ ...theme.styles.dialogOverlay, zIndex }}\n />\n <div\n {...componentAttributes}\n hidden={!isOpen}\n data-monkeys-component=\"dialog\"\n data-slot=\"content\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogContent, classNames?.content)}\n style={{ zIndex }}\n >\n <Dialog.Content\n forceMount={keepMounted || undefined}\n {...componentAttributes}\n {...(!hasTitle ? { 'aria-labelledby': undefined } : {})}\n {...(!hasDescription ? { 'aria-describedby': undefined } : {})}\n asChild\n onOpenAutoFocus={(event) => {\n if (keepMounted) event.preventDefault();\n }}\n onCloseAutoFocus={(event) => {\n if (keepMounted) event.preventDefault();\n }}\n onEscapeKeyDown={(event) => {\n if (keepMounted || !closeOnEscape) event.preventDefault();\n }}\n onPointerDownOutside={(event) => {\n if (!closeOnOverlayClick) event.preventDefault();\n }}\n >\n <div\n {...componentAttributes}\n ref={panelRef}\n tabIndex={-1}\n aria-modal=\"true\"\n data-monkeys-component=\"dialog\"\n data-slot=\"panel\"\n data-portal={portalState}\n className={cn(theme.slots.dialogPanel, classNames?.panel)}\n style={theme.styles.dialogPanel}\n >\n {semanticHeader}\n\n {showCloseButton ? (\n <Dialog.Close asChild>\n <button\n {...componentAttributes}\n type=\"button\"\n aria-label={resolvedCloseLabel}\n title={resolvedCloseLabel}\n data-monkeys-component=\"dialog\"\n data-slot=\"close\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(\n theme.slots.dialogClose,\n classNames?.close,\n )}\n >\n ×\n </button>\n </Dialog.Close>\n ) : null}\n\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"body\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogBody, classNames?.body)}\n >\n {children}\n </div>\n\n {hasRenderableNode(footer) ? (\n <div\n {...componentAttributes}\n data-monkeys-component=\"dialog\"\n data-slot=\"footer\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogFooter, classNames?.footer)}\n >\n {footer}\n </div>\n ) : null}\n </div>\n </Dialog.Content>\n </div>\n </>\n ) : null;\n\n return (\n <div\n {...componentAttributes}\n {...dialogProps}\n ref={ref}\n id={id}\n data-monkeys-component=\"dialog\"\n data-slot=\"root\"\n data-state={isOpen ? 'open' : 'closed'}\n data-portal={portalState}\n className={cn(theme.slots.dialogRoot, classNames?.root, className)}\n style={style}\n >\n <Dialog.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={!keepMounted && trapFocus}\n >\n {triggerNode ? (\n <Dialog.Trigger\n {...componentAttributes}\n asChild\n disabled={triggerDisabled}\n data-monkeys-component=\"dialog\"\n data-slot=\"trigger\"\n data-portal={portalState}\n data-tone={triggerTone}\n data-disabled={triggerDisabled || undefined}\n className={cn(\n theme.slots.dialogTrigger,\n triggerDisabled && theme.slots.dialogTriggerDisabled,\n classNames?.trigger,\n )}\n >\n {triggerNode}\n </Dialog.Trigger>\n ) : null}\n {portal && overlayPortal.shouldPortal ? (\n <Dialog.Portal\n {...overlayPortal.radixPortalProps}\n forceMount={keepMounted || undefined}\n >\n {dialogLayers}\n </Dialog.Portal>\n ) : (\n dialogLayers\n )}\n </Dialog.Root>\n </div>\n );\n },\n);\n","import type { RenderActivation, RenderLayout, RenderNode } from '@inf-monkeys-tech/monkeys';\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type {\n HTMLAttributes,\n MutableRefObject,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { cn } from '../base/utils';\n\nexport type RenderNodeHostElement = 'article' | 'aside' | 'div' | 'main' | 'nav' | 'section';\n\nexport interface RenderNodeScrollPosition {\n x: number;\n y: number;\n}\n\nexport interface RenderNodeScrollRestoration {\n read(key: string): RenderNodeScrollPosition | undefined;\n write(key: string, position: RenderNodeScrollPosition): void;\n remove?(key: string): void;\n}\n\nexport interface RenderNodePolicyState {\n active: boolean;\n visible: boolean;\n mounted: boolean;\n queryEnabled: boolean;\n}\n\nexport interface RenderNodeRuntimeState extends RenderNodePolicyState {\n activate(): void;\n setManualQueryEnabled(enabled: boolean): void;\n}\n\nexport interface RenderNodeHostProps\n extends Omit<HTMLAttributes<HTMLElement>, 'children'> {\n node: RenderNode;\n as?: RenderNodeHostElement;\n active?: boolean;\n visible?: boolean;\n manualQueryEnabled?: boolean;\n children?: ReactNode | ((runtime: RenderNodeRuntimeState) => ReactNode);\n loading?: ReactNode;\n empty?: ReactNode;\n error?: ReactNode;\n elementRef?: Ref<HTMLElement>;\n scrollRestoration?: RenderNodeScrollRestoration | false;\n onActivate?: (activation: RenderActivation, node: RenderNode) => void;\n onManualQueryEnabledChange?: (enabled: boolean, node: RenderNode) => void;\n onRuntimeStateChange?: (state: RenderNodePolicyState, node: RenderNode) => void;\n}\n\nconst refIdentity = (reference: RenderNode['pageRef'] | undefined) => reference?.id;\n\nexport const getRenderNodeDataAttributes = (node: RenderNode) => ({\n 'data-monkeys-node-id': node.nodeId,\n 'data-monkeys-node-kind': node.kind,\n 'data-monkeys-node-version': node.version,\n 'data-monkeys-owner': node.ownerRepo,\n 'data-monkeys-parent-node': node.parentNodeId,\n 'data-monkeys-slot': node.slot,\n 'data-monkeys-page-id': refIdentity(node.pageRef),\n 'data-monkeys-semantic-id': refIdentity(node.semanticRef),\n 'data-monkeys-data-context-id': refIdentity(node.dataContextRef),\n 'data-monkeys-capability-id': refIdentity(node.capabilityRef),\n 'data-monkeys-provider-id': refIdentity(node.providerRef),\n 'data-monkeys-state-id': refIdentity(node.stateRef),\n 'data-monkeys-frame-owner': node.surface.frameOwner,\n 'data-monkeys-surface-tone': node.surface.tone,\n 'data-monkeys-density': node.surface.density,\n 'data-monkeys-scroll-owner': node.scroll.owner,\n 'data-monkeys-scroll-axis': node.scroll.axis,\n 'data-monkeys-scroll-restore-key': node.scroll.restoreKey,\n 'data-monkeys-virtualization-boundary': node.scroll.virtualizationBoundary,\n 'data-monkeys-activation-id': node.activation.activationId,\n 'data-monkeys-activation-mode': node.activation.mode,\n 'data-monkeys-mount-policy': node.lifecycle.mountPolicy,\n 'data-monkeys-query-policy': node.lifecycle.queryPolicy,\n 'data-monkeys-deep-link': node.lifecycle.deepLink,\n 'data-monkeys-focus-return': node.lifecycle.focusReturn,\n 'data-monkeys-layout-mode': node.layout.mode,\n 'data-monkeys-responsive-rules': node.responsive.length,\n 'data-monkeys-child-count': node.children.length,\n 'data-monkeys-access-id': refIdentity(node.accessRef),\n 'data-monkeys-evidence-id': refIdentity(node.evidenceRef),\n 'data-monkeys-render-state': node.state,\n});\n\nconst sessionStorageKey = (key: string) => `monkeys.render.scroll.${key}`;\n\nexport const sessionRenderNodeScrollRestoration: RenderNodeScrollRestoration = {\n read(key) {\n if (typeof window === 'undefined') return undefined;\n try {\n const value = window.sessionStorage.getItem(sessionStorageKey(key));\n if (!value) return undefined;\n const parsed = JSON.parse(value) as Partial<RenderNodeScrollPosition>;\n return typeof parsed.x === 'number' && typeof parsed.y === 'number'\n ? { x: parsed.x, y: parsed.y }\n : undefined;\n } catch {\n return undefined;\n }\n },\n write(key, position) {\n if (typeof window === 'undefined') return;\n try {\n window.sessionStorage.setItem(sessionStorageKey(key), JSON.stringify(position));\n } catch {\n // Storage may be unavailable in private or embedded browser contexts.\n }\n },\n remove(key) {\n if (typeof window === 'undefined') return;\n try {\n window.sessionStorage.removeItem(sessionStorageKey(key));\n } catch {\n // Storage may be unavailable in private or embedded browser contexts.\n }\n },\n};\n\nexport const resolveRenderNodeLayout = (node: RenderNode, viewportWidth?: number): RenderLayout => {\n if (viewportWidth === undefined) return node.layout;\n const matching = node.responsive.filter((rule) =>\n (rule.minWidthPx === undefined || viewportWidth >= rule.minWidthPx)\n && (rule.maxWidthPx === undefined || viewportWidth <= rule.maxWidthPx));\n return matching.length === 0 ? node.layout : matching[matching.length - 1].layout;\n};\n\nconst LAYOUT_MODE_CLASSES: Record<RenderLayout['mode'], string> = {\n contents: 'contents',\n block: 'block',\n flex: 'flex',\n grid: 'grid',\n absolute: 'absolute',\n};\nconst ALIGN_CLASSES = { start: 'items-start', center: 'items-center', end: 'items-end', stretch: 'items-stretch' } as const;\nconst JUSTIFY_CLASSES = { start: 'justify-start', center: 'justify-center', end: 'justify-end', between: 'justify-between', around: 'justify-around' } as const;\n\nexport const getRenderLayoutClassName = (layout: RenderLayout): string => cn(\n LAYOUT_MODE_CLASSES[layout.mode],\n layout.mode === 'flex' && (layout.direction === 'row' ? 'flex-row' : 'flex-col'),\n layout.align && ALIGN_CLASSES[layout.align],\n layout.justify && JUSTIFY_CLASSES[layout.justify],\n);\n\nconst shouldMountNode = (node: RenderNode, active: boolean, visible: boolean) => {\n if (node.lifecycle.mountPolicy === 'always') return true;\n if (node.lifecycle.mountPolicy === 'when-visible') return visible;\n return active;\n};\n\nconst shouldQueryNode = (\n node: RenderNode,\n active: boolean,\n visible: boolean,\n manualQueryEnabled: boolean,\n) => {\n if (node.lifecycle.queryPolicy === 'always') return true;\n if (node.lifecycle.queryPolicy === 'when-visible') return visible;\n if (node.lifecycle.queryPolicy === 'when-active') return active;\n return manualQueryEnabled;\n};\n\nexport const resolveRenderNodePolicyState = (\n node: RenderNode,\n input: {\n active: boolean;\n visible: boolean;\n manualQueryEnabled?: boolean;\n previouslyMounted?: boolean;\n },\n): RenderNodePolicyState => {\n const policyMounted = shouldMountNode(node, input.active, input.visible);\n return {\n active: input.active,\n visible: input.visible,\n mounted: policyMounted || (node.lifecycle.retainOnDeactivate && input.previouslyMounted === true),\n queryEnabled: shouldQueryNode(node, input.active, input.visible, input.manualQueryEnabled === true),\n };\n};\n\nconst resolveRenderNodeContent = (\n node: RenderNode,\n content: ReactNode,\n loading: ReactNode,\n empty: ReactNode,\n error: ReactNode,\n) => {\n if (node.state === 'loading' && loading !== undefined) return loading;\n if (node.state === 'empty' && empty !== undefined) return empty;\n if (node.state === 'error' && error !== undefined) return error;\n return content;\n};\n\nconst assignRef = (ref: Ref<HTMLElement> | undefined, value: HTMLElement | null) => {\n if (typeof ref === 'function') ref(value);\n else if (ref) (ref as MutableRefObject<HTMLElement | null>).current = value;\n};\n\nexport function RenderNodeHost({\n node,\n as = 'div',\n active = true,\n visible = active,\n manualQueryEnabled = false,\n children,\n loading,\n empty,\n error,\n elementRef,\n scrollRestoration = sessionRenderNodeScrollRestoration,\n onActivate,\n onManualQueryEnabledChange,\n onRuntimeStateChange,\n onScroll,\n className,\n hidden,\n role,\n 'aria-live': ariaLive,\n 'aria-atomic': ariaAtomic,\n ...props\n}: RenderNodeHostProps) {\n const Component = as;\n const hostRef = useRef<HTMLElement | null>(null);\n const [viewportWidth, setViewportWidth] = useState<number | undefined>(() =>\n typeof window === 'undefined' ? undefined : window.innerWidth);\n const [mountedNodeId, setMountedNodeId] = useState<string | undefined>(() =>\n shouldMountNode(node, active, visible) ? node.nodeId : undefined);\n const policyMounted = shouldMountNode(node, active, visible);\n\n useEffect(() => {\n if (node.responsive.length === 0 || typeof window === 'undefined') return undefined;\n const handleResize = () => setViewportWidth(window.innerWidth);\n handleResize();\n window.addEventListener('resize', handleResize, { passive: true });\n return () => window.removeEventListener('resize', handleResize);\n }, [node.responsive.length]);\n\n const resolvedLayout = useMemo(() => resolveRenderNodeLayout(node, viewportWidth), [node, viewportWidth]);\n\n useEffect(() => {\n if (!active || !visible || !node.lifecycle.deepLink || !['page', 'record'].includes(node.kind)) return;\n const element = hostRef.current;\n if (!element || element.style.display === 'contents') return;\n element.focus({ preventScroll: true });\n }, [active, node.kind, node.lifecycle.deepLink, node.nodeId, visible]);\n\n useEffect(() => {\n if (policyMounted) setMountedNodeId(node.nodeId);\n else if (!node.lifecycle.retainOnDeactivate) setMountedNodeId(undefined);\n }, [node.lifecycle.retainOnDeactivate, node.nodeId, policyMounted]);\n\n const policyState = useMemo(() => resolveRenderNodePolicyState(node, {\n active,\n visible,\n manualQueryEnabled,\n previouslyMounted: mountedNodeId === node.nodeId,\n }), [active, manualQueryEnabled, mountedNodeId, node, visible]);\n\n const activate = useCallback(() => {\n onActivate?.(node.activation, node);\n }, [node, onActivate]);\n\n const setManualQueryEnabled = useCallback((enabled: boolean) => {\n onManualQueryEnabledChange?.(enabled, node);\n }, [node, onManualQueryEnabledChange]);\n\n const runtimeState = useMemo<RenderNodeRuntimeState>(() => ({\n ...policyState,\n activate,\n setManualQueryEnabled,\n }), [activate, policyState, setManualQueryEnabled]);\n\n useEffect(() => {\n onRuntimeStateChange?.(policyState, node);\n }, [node, onRuntimeStateChange, policyState]);\n\n const setHostRef = useCallback((value: HTMLElement | null) => {\n hostRef.current = value;\n assignRef(elementRef, value);\n }, [elementRef]);\n\n const scrollAdapter = scrollRestoration === false ? undefined : scrollRestoration;\n const restoresHostScroll = scrollAdapter !== undefined\n && node.scroll.owner !== 'provider'\n && !node.scroll.virtualizationBoundary\n && node.scroll.axis !== 'none'\n && node.scroll.restoreKey !== undefined;\n\n const readPosition = useCallback((): RenderNodeScrollPosition => {\n const element = hostRef.current;\n if (!element) return { x: 0, y: 0 };\n return {\n x: node.scroll.axis === 'y' ? 0 : element.scrollLeft,\n y: node.scroll.axis === 'x' ? 0 : element.scrollTop,\n };\n }, [node.scroll.axis]);\n\n useEffect(() => {\n if (!policyState.mounted || !restoresHostScroll || !scrollAdapter) return undefined;\n const key = node.scroll.restoreKey!;\n const element = hostRef.current;\n const position = scrollAdapter.read(key);\n let frame: number | undefined;\n if (element && position) {\n const restore = () => element.scrollTo({\n left: node.scroll.axis === 'y' ? element.scrollLeft : position.x,\n top: node.scroll.axis === 'x' ? element.scrollTop : position.y,\n behavior: 'auto',\n });\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n frame = window.requestAnimationFrame(restore);\n } else {\n restore();\n }\n }\n return () => {\n if (frame !== undefined && typeof window !== 'undefined') window.cancelAnimationFrame(frame);\n scrollAdapter.write(key, readPosition());\n };\n }, [node.scroll.axis, node.scroll.restoreKey, policyState.mounted, readPosition, restoresHostScroll, scrollAdapter]);\n\n if (!policyState.mounted) return null;\n\n const renderedChildren = typeof children === 'function' ? children(runtimeState) : children;\n return (\n <Component\n {...props}\n {...getRenderNodeDataAttributes(node)}\n ref={setHostRef as never}\n className={cn(getRenderLayoutClassName(resolvedLayout), className)}\n style={{\n ...(resolvedLayout.mode === 'grid' && resolvedLayout.columns\n ? { gridTemplateColumns: `repeat(${resolvedLayout.columns}, minmax(0, 1fr))` }\n : {}),\n ...props.style,\n }}\n hidden={hidden || !policyState.visible || undefined}\n role={role ?? (node.state === 'error' ? 'alert' : node.state === 'loading' || node.state === 'empty' ? 'status' : undefined)}\n tabIndex={props.tabIndex ?? (node.lifecycle.deepLink && ['page', 'record'].includes(node.kind) ? -1 : undefined)}\n data-monkeys-active={policyState.active}\n data-monkeys-mounted={policyState.mounted}\n data-monkeys-query-enabled={policyState.queryEnabled}\n aria-busy={node.state === 'loading' || undefined}\n aria-disabled={node.state === 'disabled' || undefined}\n aria-hidden={!policyState.visible || undefined}\n aria-live={ariaLive ?? (node.state === 'error' ? 'assertive' : node.state === 'loading' || node.state === 'empty' ? 'polite' : undefined)}\n aria-atomic={ariaAtomic ?? (node.state === 'loading' || node.state === 'empty' || node.state === 'error' ? true : undefined)}\n onScroll={(event) => {\n if (restoresHostScroll && scrollAdapter && node.scroll.restoreKey) {\n scrollAdapter.write(node.scroll.restoreKey, readPosition());\n }\n onScroll?.(event);\n }}\n >\n {resolveRenderNodeContent(node, renderedChildren, loading, empty, error)}\n </Component>\n );\n}\n","import type { OverlayNode, OverlayZIndexLane } from '@inf-monkeys-tech/monkeys';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport type { ReactNode, RefObject } from 'react';\n\nimport { BaseDialog } from '../base/BaseDialog';\nimport type { BaseAppearance, BaseDialogClassNames } from '../base/types';\nimport {\n getRenderNodeDataAttributes,\n RenderNodeHost,\n} from './RenderNodeHost';\nimport type {\n RenderNodeHostProps,\n RenderNodeRuntimeState,\n} from './RenderNodeHost';\n\nexport interface OverlayHistoryAdapter {\n getCurrentUrl(): string;\n push(url: string): void;\n replace(url: string): void;\n back(): void;\n subscribe(listener: (url: string) => void): () => void;\n}\n\nexport interface OverlayNodeRuntimeContext extends RenderNodeRuntimeState {\n open: boolean;\n zIndexLane: OverlayZIndexLane;\n zIndex: number;\n initialFocusRef?: RefObject<HTMLElement | null>;\n focusReturnRef?: RefObject<HTMLElement | null>;\n renderNodeAttributes: ReturnType<typeof getRenderNodeDataAttributes>;\n onOpenChange(open: boolean): void;\n requestClose(): void;\n}\n\nexport interface OverlayNodeHostProps {\n node: OverlayNode;\n open: boolean;\n renderStrategy?: 'dialog' | 'delegate';\n title?: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n closeLabel?: string;\n children?: ReactNode | ((runtime: OverlayNodeRuntimeContext) => ReactNode);\n appearance?: BaseAppearance;\n className?: string;\n classNames?: BaseDialogClassNames;\n initialFocusRef?: RefObject<HTMLElement | null>;\n focusReturnRef?: RefObject<HTMLElement | null>;\n historyAdapter?: OverlayHistoryAdapter | false;\n manualQueryEnabled?: boolean;\n onActivate?: RenderNodeHostProps['onActivate'];\n onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n onOpenChange: (open: boolean) => void;\n}\n\nconst OVERLAY_Z_INDEX: Record<OverlayZIndexLane, number> = {\n popover: 40,\n drawer: 50,\n modal: 60,\n fullscreen: 70,\n system: 80,\n};\n\nexport const getOverlayZIndex = (lane: OverlayZIndexLane) => OVERLAY_Z_INDEX[lane];\n\nconst OVERLAY_PRESENTATION_CLASS_NAMES: Record<\n OverlayNode['presentation'],\n Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'>\n> = {\n drawer: {\n content: '!items-stretch !justify-end !p-0',\n panel: '!h-dvh !max-h-none !w-full !max-w-[min(100vw,40rem)] !rounded-none !border-y-0 !border-r-0',\n body: 'min-h-0 flex-1 overflow-auto',\n },\n modal: {},\n fullscreen: {\n content: '!items-stretch !justify-stretch !p-0',\n panel: '!h-dvh !max-h-none !w-screen !max-w-none !rounded-none !border-0',\n body: 'min-h-0 flex-1 overflow-auto',\n },\n};\n\nexport const getOverlayPresentationClassNames = (\n presentation: OverlayNode['presentation'],\n): Pick<BaseDialogClassNames, 'body' | 'content' | 'panel'> => ({\n ...OVERLAY_PRESENTATION_CLASS_NAMES[presentation],\n});\n\nconst relativeUrl = (input: string, url: URL) =>\n input.startsWith('/') && !input.startsWith('//')\n ? `${url.pathname}${url.search}${url.hash}`\n : url.toString();\n\nexport const isOverlayUrlActive = (node: OverlayNode, input: string): boolean => {\n const url = new URL(input, 'https://monkeys.local');\n return url.searchParams.get(node.url.parameter) === node.url.value;\n};\n\nexport const buildOverlayUrl = (node: OverlayNode, input: string, open: boolean): string => {\n const url = new URL(input, 'https://monkeys.local');\n if (open) url.searchParams.set(node.url.parameter, node.url.value);\n else if (url.searchParams.get(node.url.parameter) === node.url.value) url.searchParams.delete(node.url.parameter);\n return relativeUrl(input, url);\n};\n\nexport const browserOverlayHistoryAdapter: OverlayHistoryAdapter = {\n getCurrentUrl() {\n return typeof window === 'undefined' ? 'https://monkeys.local/' : window.location.href;\n },\n push(url) {\n if (typeof window !== 'undefined') window.history.pushState(window.history.state, '', url);\n },\n replace(url) {\n if (typeof window !== 'undefined') window.history.replaceState(window.history.state, '', url);\n },\n back() {\n if (typeof window !== 'undefined') window.history.back();\n },\n subscribe(listener) {\n if (typeof window === 'undefined') return () => undefined;\n const handlePopState = () => listener(window.location.href);\n window.addEventListener('popstate', handlePopState);\n return () => window.removeEventListener('popstate', handlePopState);\n },\n};\n\nconst scheduleFocus = (target: HTMLElement | null | undefined) => {\n if (!target?.isConnected) return;\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => target.focus());\n } else {\n target.focus();\n }\n};\n\nexport function OverlayNodeHost({\n node,\n open,\n renderStrategy = 'dialog',\n title,\n description,\n footer,\n closeLabel,\n children,\n appearance,\n className,\n classNames,\n initialFocusRef,\n focusReturnRef,\n historyAdapter = browserOverlayHistoryAdapter,\n manualQueryEnabled = false,\n onActivate,\n onRuntimeStateChange,\n onOpenChange,\n}: OverlayNodeHostProps) {\n const historyEntryOwnedRef = useRef(false);\n const initializedUrlRef = useRef(false);\n const zIndex = getOverlayZIndex(node.zIndexLane);\n const syncUrl = useCallback((nextOpen: boolean) => {\n if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return;\n const currentUrl = historyAdapter.getCurrentUrl();\n if (isOverlayUrlActive(node, currentUrl) === nextOpen) return;\n const nextUrl = buildOverlayUrl(node, currentUrl, nextOpen);\n if (nextOpen) {\n if (node.url.openMode === 'push') {\n historyAdapter.push(nextUrl);\n historyEntryOwnedRef.current = true;\n } else {\n historyAdapter.replace(nextUrl);\n historyEntryOwnedRef.current = false;\n }\n return;\n }\n if (node.url.closeMode === 'back' && historyEntryOwnedRef.current) {\n historyEntryOwnedRef.current = false;\n historyAdapter.back();\n } else {\n historyAdapter.replace(nextUrl);\n historyEntryOwnedRef.current = false;\n }\n }, [historyAdapter, node]);\n\n const requestOpenChange = useCallback((nextOpen: boolean) => {\n syncUrl(nextOpen);\n onOpenChange(nextOpen);\n }, [onOpenChange, syncUrl]);\n\n useEffect(() => {\n if (!node.renderNode.lifecycle.deepLink || historyAdapter === false) return undefined;\n const urlOpen = isOverlayUrlActive(node, historyAdapter.getCurrentUrl());\n if (!initializedUrlRef.current) {\n initializedUrlRef.current = true;\n if (urlOpen && !open) onOpenChange(true);\n else if (!urlOpen && open) syncUrl(true);\n } else if (urlOpen !== open) {\n syncUrl(open);\n }\n return historyAdapter.subscribe((url) => {\n historyEntryOwnedRef.current = false;\n const nextOpen = isOverlayUrlActive(node, url);\n if (nextOpen !== open) onOpenChange(nextOpen);\n });\n }, [historyAdapter, node, onOpenChange, open, syncUrl]);\n\n useEffect(() => {\n if (!open || !node.renderNode.lifecycle.focusReturn || typeof document === 'undefined') return undefined;\n const target = focusReturnRef?.current\n ?? (document.activeElement instanceof HTMLElement ? document.activeElement : null);\n return () => scheduleFocus(focusReturnRef?.current ?? target);\n }, [focusReturnRef, node.renderNode.lifecycle.focusReturn, open]);\n\n const renderNodeAttributes = useMemo(\n () => getRenderNodeDataAttributes(node.renderNode),\n [node.renderNode],\n );\n const presentationClassNames = getOverlayPresentationClassNames(node.presentation);\n const resolvedClassNames: BaseDialogClassNames = {\n ...classNames,\n body: classNames?.body ?? presentationClassNames.body,\n content: classNames?.content ?? presentationClassNames.content,\n panel: classNames?.panel ?? presentationClassNames.panel,\n };\n\n return (\n <RenderNodeHost\n node={node.renderNode}\n active={open}\n visible={open}\n manualQueryEnabled={manualQueryEnabled}\n className={className}\n style={renderStrategy === 'delegate' ? { display: 'contents' } : undefined}\n onActivate={onActivate}\n onRuntimeStateChange={onRuntimeStateChange}\n >\n {(runtime) => {\n const context: OverlayNodeRuntimeContext = {\n ...runtime,\n open,\n zIndexLane: node.zIndexLane,\n zIndex,\n initialFocusRef,\n focusReturnRef,\n renderNodeAttributes,\n onOpenChange: requestOpenChange,\n requestClose: () => requestOpenChange(false),\n };\n const content = typeof children === 'function' ? children(context) : children;\n if (renderStrategy === 'delegate') return content;\n return (\n <BaseDialog\n id={node.overlayId}\n open={open}\n title={title}\n description={description}\n footer={footer}\n closeLabel={closeLabel}\n closeOnEscape={node.close.escape}\n closeOnOverlayClick={node.close.backdrop}\n keepMounted={node.renderNode.lifecycle.retainOnDeactivate}\n trapFocus={node.focus.trap}\n restoreFocus={false}\n initialFocus={node.focus.initial}\n initialFocusRef={initialFocusRef}\n zIndex={zIndex}\n appearance={appearance}\n classNames={resolvedClassNames}\n data-monkeys-overlay-presentation={node.presentation}\n data-monkeys-overlay-z-index-lane={node.zIndexLane}\n onOpenChange={requestOpenChange}\n >\n {content}\n </BaseDialog>\n );\n }}\n </RenderNodeHost>\n );\n}\n","import type { RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { Fragment, useMemo } from 'react';\nimport type { ReactNode, Ref } from 'react';\n\nimport { RenderNodeHost } from './RenderNodeHost';\nimport type { RenderNodeHostElement, RenderNodeHostProps, RenderNodeRuntimeState } from './RenderNodeHost';\n\nexport interface RenderTreeNodeContext extends RenderNodeRuntimeState {\n node: RenderNode;\n children: ReactNode;\n childNodes: readonly RenderNode[];\n childrenBySlot: Readonly<Record<string, ReactNode>>;\n}\n\nexport interface RenderTreeHostProps {\n tree: RenderTree;\n activeNodeIds?: ReadonlySet<string>;\n visibleNodeIds?: ReadonlySet<string>;\n manualQueryNodeIds?: ReadonlySet<string>;\n loading?: ReactNode;\n empty?: ReactNode;\n error?: ReactNode;\n elementForNode?: (node: RenderNode) => RenderNodeHostElement;\n classNameForNode?: (node: RenderNode) => string | undefined;\n elementRefForNode?: (node: RenderNode) => Ref<HTMLElement> | undefined;\n scrollRestoration?: RenderNodeHostProps['scrollRestoration'];\n renderNode?: (context: RenderTreeNodeContext) => ReactNode;\n onActivate?: RenderNodeHostProps['onActivate'];\n onManualQueryEnabledChange?: RenderNodeHostProps['onManualQueryEnabledChange'];\n onRuntimeStateChange?: RenderNodeHostProps['onRuntimeStateChange'];\n}\n\nconst defaultElementForNode = (node: RenderNode): RenderNodeHostElement => {\n if (node.kind === 'shell') return 'main';\n if (node.kind === 'navigation') return 'nav';\n if (node.kind === 'detail') return 'aside';\n if (node.kind === 'record') return 'article';\n return 'section';\n};\n\nexport function RenderTreeHost({\n tree,\n activeNodeIds,\n visibleNodeIds,\n manualQueryNodeIds,\n loading,\n empty,\n error,\n elementForNode = defaultElementForNode,\n classNameForNode,\n elementRefForNode,\n scrollRestoration,\n renderNode,\n onActivate,\n onManualQueryEnabledChange,\n onRuntimeStateChange,\n}: RenderTreeHostProps) {\n const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n\n const renderBranch = (node: RenderNode): ReactNode => {\n const childNodes = compiled.childrenOf(node.nodeId);\n const descendants = childNodes.map((child) => (\n <Fragment key={child.nodeId}>{renderBranch(child)}</Fragment>\n ));\n const childrenBySlot = Object.freeze(Object.fromEntries(\n childNodes.map((child, index) => [child.slot ?? child.nodeId, descendants[index]]),\n ));\n return (\n <RenderNodeHost\n key={node.nodeId}\n node={node}\n as={elementForNode(node)}\n active={activeNodeIds?.has(node.nodeId) ?? true}\n visible={visibleNodeIds?.has(node.nodeId) ?? true}\n manualQueryEnabled={manualQueryNodeIds?.has(node.nodeId) ?? false}\n loading={loading}\n empty={empty}\n error={error}\n className={classNameForNode?.(node)}\n elementRef={elementRefForNode?.(node)}\n scrollRestoration={scrollRestoration}\n onActivate={onActivate}\n onManualQueryEnabledChange={onManualQueryEnabledChange}\n onRuntimeStateChange={onRuntimeStateChange}\n >\n {(runtime) => renderNode?.({\n ...runtime,\n node,\n children: descendants,\n childNodes,\n childrenBySlot,\n }) ?? descendants}\n </RenderNodeHost>\n );\n };\n\n return <>{renderBranch(compiled.root)}</>;\n}\n","import type { RenderActivation, RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport { compileRenderTree } from '@inf-monkeys-tech/monkeys/runtime';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { RenderTreeHost } from './RenderTreeHost';\nimport type { RenderTreeHostProps } from './RenderTreeHost';\n\nexport interface RenderTreeRuntimeSnapshot {\n contract: 'RenderTreeRuntimeSnapshot';\n treeId: string;\n activeNodeIds: string[];\n manualQueryNodeIds: string[];\n selectedActivationId?: string;\n}\n\nexport interface RenderTreeHistoryAdapter {\n read(): RenderTreeRuntimeSnapshot | undefined;\n replace(snapshot: RenderTreeRuntimeSnapshot): void;\n push(snapshot: RenderTreeRuntimeSnapshot): void;\n navigate(path: string, mode: 'push' | 'replace', snapshot: RenderTreeRuntimeSnapshot): void;\n subscribe(listener: (snapshot: RenderTreeRuntimeSnapshot | undefined) => void): () => void;\n}\n\nconst STATE_KEY = '__monkeysRenderTree';\n\nconst readBrowserSnapshot = (): RenderTreeRuntimeSnapshot | undefined => {\n if (typeof window === 'undefined') return undefined;\n const value = window.history.state?.[STATE_KEY] as RenderTreeRuntimeSnapshot | undefined;\n return value?.contract === 'RenderTreeRuntimeSnapshot' ? value : undefined;\n};\n\nconst withSnapshot = (snapshot: RenderTreeRuntimeSnapshot) => ({\n ...(typeof window === 'undefined' || !window.history.state || typeof window.history.state !== 'object'\n ? {}\n : window.history.state),\n [STATE_KEY]: snapshot,\n});\n\nconst notifyBrowserHistory = () => {\n if (typeof window === 'undefined') return;\n window.dispatchEvent(new PopStateEvent('popstate', { state: window.history.state }));\n};\n\nexport const browserRenderTreeHistoryAdapter: RenderTreeHistoryAdapter = {\n read: readBrowserSnapshot,\n replace(snapshot) {\n if (typeof window !== 'undefined') window.history.replaceState(withSnapshot(snapshot), '', window.location.href);\n },\n push(snapshot) {\n if (typeof window !== 'undefined') window.history.pushState(withSnapshot(snapshot), '', window.location.href);\n },\n navigate(path, mode, snapshot) {\n if (typeof window === 'undefined') return;\n window.history[mode === 'replace' ? 'replaceState' : 'pushState'](withSnapshot(snapshot), '', path);\n notifyBrowserHistory();\n },\n subscribe(listener) {\n if (typeof window === 'undefined') return () => undefined;\n const onPopState = () => listener(readBrowserSnapshot());\n window.addEventListener('popstate', onPopState);\n return () => window.removeEventListener('popstate', onPopState);\n },\n};\n\nexport interface RenderTreeRuntimeHostProps\n extends Omit<\n RenderTreeHostProps,\n | 'activeNodeIds'\n | 'visibleNodeIds'\n | 'manualQueryNodeIds'\n | 'onActivate'\n | 'onManualQueryEnabledChange'\n | 'elementRefForNode'\n > {\n tree: RenderTree;\n historyAdapter?: RenderTreeHistoryAdapter | false;\n onActivate?: RenderTreeHostProps['onActivate'];\n}\n\nconst scheduleFocus = (target: HTMLElement | undefined) => {\n if (!target?.isConnected) return;\n if (typeof window !== 'undefined' && typeof window.requestAnimationFrame === 'function') {\n window.requestAnimationFrame(() => target.focus({ preventScroll: true }));\n } else {\n target.focus({ preventScroll: true });\n }\n};\n\nexport function RenderTreeRuntimeHost({\n tree,\n historyAdapter = browserRenderTreeHistoryAdapter,\n onActivate,\n onRuntimeStateChange,\n ...props\n}: RenderTreeRuntimeHostProps) {\n const compiled = useMemo(() => compileRenderTree(tree), [tree]);\n const allNodeIds = useMemo(() => new Set(compiled.traversal.map((node) => node.nodeId)), [compiled]);\n const [activeNodeIds, setActiveNodeIds] = useState<Set<string>>(() => new Set(allNodeIds));\n const [manualQueryNodeIds, setManualQueryNodeIds] = useState<Set<string>>(() => new Set());\n const selectedActivationIdRef = useRef<string>();\n const activeNodeIdsRef = useRef(activeNodeIds);\n const manualQueryNodeIdsRef = useRef(manualQueryNodeIds);\n const focusReturnTargets = useRef(new Map<string, HTMLElement>());\n\n const snapshot = useCallback((\n nextActive = activeNodeIdsRef.current,\n nextManual = manualQueryNodeIdsRef.current,\n selectedActivationId = selectedActivationIdRef.current,\n ): RenderTreeRuntimeSnapshot => ({\n contract: 'RenderTreeRuntimeSnapshot',\n treeId: tree.treeId,\n activeNodeIds: [...nextActive],\n manualQueryNodeIds: [...nextManual],\n selectedActivationId,\n }), [tree.treeId]);\n\n const applySnapshot = useCallback((value: RenderTreeRuntimeSnapshot | undefined) => {\n if (!value || value.treeId !== tree.treeId) return false;\n if (value.activeNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n if (value.manualQueryNodeIds.some((nodeId) => !allNodeIds.has(nodeId))) return false;\n const active = new Set(value.activeNodeIds);\n if (!active.has(tree.rootNodeId)) return false;\n const manual = new Set(value.manualQueryNodeIds);\n selectedActivationIdRef.current = value.selectedActivationId;\n activeNodeIdsRef.current = active;\n manualQueryNodeIdsRef.current = manual;\n setActiveNodeIds(active);\n setManualQueryNodeIds(manual);\n return true;\n }, [allNodeIds, tree.rootNodeId, tree.treeId]);\n\n useEffect(() => {\n const initial = historyAdapter === false ? undefined : historyAdapter.read();\n if (!applySnapshot(initial)) {\n const active = new Set(allNodeIds);\n const manual = new Set<string>();\n activeNodeIdsRef.current = active;\n manualQueryNodeIdsRef.current = manual;\n selectedActivationIdRef.current = undefined;\n setActiveNodeIds(active);\n setManualQueryNodeIds(manual);\n historyAdapter !== false && historyAdapter.replace(snapshot(active, manual));\n }\n return historyAdapter === false ? undefined : historyAdapter.subscribe(applySnapshot);\n }, [allNodeIds, applySnapshot, historyAdapter, snapshot]);\n\n const selectNode = useCallback((node: RenderNode) => {\n const next = new Set(compiled.ancestorsOf(node.nodeId).map((ancestor) => ancestor.nodeId));\n const addDescendants = (current: RenderNode) => {\n next.add(current.nodeId);\n compiled.childrenOf(current.nodeId).forEach(addDescendants);\n };\n addDescendants(node);\n return next;\n }, [compiled]);\n\n const handleActivate = useCallback((activation: RenderActivation, node: RenderNode) => {\n if (node.lifecycle.focusReturn && typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {\n focusReturnTargets.current.set(node.nodeId, document.activeElement);\n }\n selectedActivationIdRef.current = activation.activationId;\n const nextActive = activation.mode === 'select' || activation.mode === 'inline'\n ? selectNode(node)\n : activeNodeIdsRef.current;\n activeNodeIdsRef.current = nextActive;\n setActiveNodeIds(nextActive);\n const nextSnapshot = snapshot(nextActive);\n\n if (activation.mode === 'navigate') {\n if (!activation.targetPath) throw new TypeError(`Navigate activation ${activation.activationId} has no targetPath.`);\n if (historyAdapter !== false) historyAdapter.navigate(activation.targetPath, activation.history ?? 'push', nextSnapshot);\n } else if (historyAdapter !== false && node.lifecycle.deepLink) {\n if (activation.history === 'push') historyAdapter.push(nextSnapshot);\n else historyAdapter.replace(nextSnapshot);\n }\n onActivate?.(activation, node);\n }, [historyAdapter, onActivate, selectNode, snapshot]);\n\n const handleManualQueryEnabledChange = useCallback((enabled: boolean, node: RenderNode) => {\n const next = new Set(manualQueryNodeIdsRef.current);\n if (enabled) next.add(node.nodeId);\n else next.delete(node.nodeId);\n manualQueryNodeIdsRef.current = next;\n setManualQueryNodeIds(next);\n historyAdapter !== false && historyAdapter.replace(snapshot(activeNodeIdsRef.current, next));\n }, [historyAdapter, snapshot]);\n\n const previousActive = useRef(activeNodeIds);\n useEffect(() => {\n for (const nodeId of previousActive.current) {\n if (activeNodeIds.has(nodeId)) continue;\n const node = compiled.nodesById.get(nodeId);\n if (node?.lifecycle.focusReturn) scheduleFocus(focusReturnTargets.current.get(nodeId));\n }\n previousActive.current = activeNodeIds;\n }, [activeNodeIds, compiled.nodesById]);\n\n return (\n <RenderTreeHost\n {...props}\n tree={tree}\n activeNodeIds={activeNodeIds}\n visibleNodeIds={activeNodeIds}\n manualQueryNodeIds={manualQueryNodeIds}\n onActivate={handleActivate}\n onManualQueryEnabledChange={handleManualQueryEnabledChange}\n onRuntimeStateChange={onRuntimeStateChange}\n />\n );\n}\n","import type { RenderNode, RenderTree } from '@inf-monkeys-tech/monkeys';\nimport type { ReactNode } from 'react';\n\nimport { RenderTreeRuntimeHost } from './RenderTreeRuntimeHost';\nimport type { RenderTreeRuntimeHostProps } from './RenderTreeRuntimeHost';\nimport type { RenderTreeNodeContext } from './RenderTreeHost';\n\nexport interface RenderTreeRegistryNodeContext<TBinding = unknown> extends RenderTreeNodeContext {\n binding: TBinding | undefined;\n model: RenderNode['renderModel'];\n}\n\nexport type RenderTreeComponentRenderer<TBinding = unknown> = (\n context: RenderTreeRegistryNodeContext<TBinding>,\n) => ReactNode;\n\nexport type RenderTreeComponentRegistry = Readonly<\n Record<string, RenderTreeComponentRenderer>\n>;\n\nexport type RenderTreeBindingRegistry = Readonly<Record<string, unknown>>;\n\nexport interface RenderTreeRegistryHostProps\n extends Omit<RenderTreeRuntimeHostProps, 'renderNode' | 'tree'> {\n tree: RenderTree;\n components: RenderTreeComponentRegistry;\n bindings?: RenderTreeBindingRegistry;\n resolveBinding?: (\n node: RenderNode,\n bindings: RenderTreeBindingRegistry,\n ) => unknown;\n renderMissingComponent?: (context: RenderTreeNodeContext) => ReactNode;\n}\n\nconst defaultResolveBinding = (\n node: RenderNode,\n bindings: RenderTreeBindingRegistry,\n) => {\n const bindingId = node.dataContextRef?.id;\n return bindingId ? bindings[bindingId] : undefined;\n};\n\nexport function RenderTreeRegistryHost({\n tree,\n components,\n bindings = {},\n resolveBinding = defaultResolveBinding,\n renderMissingComponent,\n ...props\n}: RenderTreeRegistryHostProps) {\n return (\n <RenderTreeRuntimeHost\n {...props}\n tree={tree}\n renderNode={(context) => {\n const renderer = components[context.node.capabilityRef.id];\n if (!renderer) {\n return renderMissingComponent?.(context) ?? context.children;\n }\n return renderer({\n ...context,\n binding: resolveBinding(context.node, bindings),\n model: context.node.renderModel,\n });\n }}\n />\n );\n}\n"]}
|