@kushagradhawan/kookie-ui 0.1.72 → 0.1.73

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.
Files changed (38) hide show
  1. package/components.css +6 -2
  2. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  4. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  5. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  6. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  7. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  8. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  9. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  10. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  11. package/dist/cjs/components/shell.d.ts.map +1 -1
  12. package/dist/cjs/components/shell.js +1 -1
  13. package/dist/cjs/components/shell.js.map +3 -3
  14. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  15. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  16. package/dist/esm/components/_internal/shell-bottom.js.map +3 -3
  17. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  18. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  19. package/dist/esm/components/_internal/shell-inspector.js.map +3 -3
  20. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  21. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  22. package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
  23. package/dist/esm/components/shell.d.ts.map +1 -1
  24. package/dist/esm/components/shell.js +1 -1
  25. package/dist/esm/components/shell.js.map +3 -3
  26. package/package.json +1 -1
  27. package/schemas/base-button.json +1 -1
  28. package/schemas/button.json +1 -1
  29. package/schemas/icon-button.json +1 -1
  30. package/schemas/index.json +6 -6
  31. package/schemas/toggle-button.json +1 -1
  32. package/schemas/toggle-icon-button.json +1 -1
  33. package/src/components/_internal/shell-bottom.tsx +31 -5
  34. package/src/components/_internal/shell-inspector.tsx +31 -5
  35. package/src/components/_internal/shell-sidebar.tsx +34 -6
  36. package/src/components/shell.css +10 -11
  37. package/src/components/shell.tsx +46 -2
  38. package/styles.css +6 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/_internal/shell-sidebar.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { extractPaneDomProps } from './shell-prop-helpers.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, SidebarMode, Responsive, PaneBaseProps } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\n\ntype SidebarPaneProps = PaneBaseProps & {\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n};\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<SidebarPaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst SIDEBAR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'state',\n 'defaultState',\n 'onStateChange',\n 'thinSize',\n 'toggleModes',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof SidebarPublicProps)[];\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const sidebarDomProps = extractPaneDomProps(initialProps, SIDEBAR_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n shell.setHasSidebar(true);\n return () => {\n shell.setHasSidebar(false);\n };\n }, [shell, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Resolve responsive controlled state at top level\n const stateIsResponsive = typeof state === 'object' && state !== null;\n const { resolvedDefault: resolvedSidebarDefault } = useResponsiveInitialState<SidebarMode>({\n controlledValue: state,\n defaultValue: defaultState,\n currentValue: shell.sidebarMode as SidebarMode,\n setValue: shell.setSidebarMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: stateIsResponsive,\n onResponsiveChange: (next) => onStateChange?.(next, { reason: 'responsive' }),\n onInit: (initial) => onStateChange?.(initial, { reason: 'init' }),\n });\n\n // Emit mode changes\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n React.useEffect(() => {\n // notify new API when uncontrolled; skip first run to avoid masking init\n if (typeof state === 'undefined') {\n if (lastNotifyModeRef.current === null) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n } else if (lastNotifyModeRef.current !== shell.sidebarMode) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n onStateChange?.(shell.sidebarMode as SidebarMode, { reason: 'toggle' });\n }\n }\n }, [shell.sidebarMode, state, onStateChange]);\n\n // Emit expand/collapse events\n React.useEffect(() => {\n if (shell.sidebarMode === 'expanded') {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n }, [shell.sidebarMode, onExpand, onCollapse]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = shell.sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const shellForToggle = useShell();\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = resolvedSidebarDefault ?? (typeof defaultState === 'string' ? defaultState : undefined) ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [resolvedSidebarDefault, defaultState]);\n\n React.useEffect(() => {\n if (!shellForToggle.setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n shellForToggle.setSidebarToggleComputer(compute);\n return () => {\n shellForToggle.setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [shellForToggle, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (shell.sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = shell.sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = shell.sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [shell.sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && shell.sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setSidebarMode('collapsed'),\n requestToggle: () => shell.togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientWidth || window.innerWidth || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n width={{\n initial: `${open ? (shell.sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...sidebarDomProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={shell.sidebarMode}\n data-peek={shell.peekTarget === 'sidebar' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isContentVisible) || undefined}\n style={{\n ...style,\n ['--sidebar-size' as any]: `${expandedSize}px`,\n ['--sidebar-thin-size' as any]: `${thinSize}px`,\n ['--sidebar-min-size' as any]: `${minSize}px`,\n ['--sidebar-max-size' as any]: `${maxSize}px`,\n ...(shell.peekTarget === 'sidebar' && shell.sidebarMode === 'collapsed' && !isOverlay\n ? (() => {\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = shell.sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return {\n ['--peek-sidebar-width' as any]: `${thinSize}px`,\n } as React.CSSProperties;\n }\n return {\n ['--peek-sidebar-width' as any]: `var(--sidebar-size, ${expandedSize}px)`,\n } as React.CSSProperties;\n })()\n : {}),\n }}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n"],
5
- "mappings": "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",
6
- "names": ["shell_sidebar_exports", "__export", "Sidebar", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_prop_helpers", "import_shell_handles", "import_shell_types", "SIDEBAR_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "sidebarDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "stateIsResponsive", "resolvedSidebarDefault", "next", "initial", "lastNotifyModeRef", "isContentVisible", "persistenceAdapter", "key", "v", "mounted", "loaded", "shellForToggle", "resolveDefaultSidebarMode", "resolved", "compute", "current", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "controlledSize", "open", "o", "classNames"]
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { extractPaneDomProps } from './shell-prop-helpers.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, SidebarMode, Responsive, PaneBaseProps } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\n\ntype SidebarPaneProps = PaneBaseProps & {\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n};\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<SidebarPaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst SIDEBAR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'state',\n 'defaultState',\n 'onStateChange',\n 'thinSize',\n 'toggleModes',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof SidebarPublicProps)[];\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const sidebarDomProps = extractPaneDomProps(initialProps, SIDEBAR_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n shell.setHasSidebar(true);\n return () => {\n shell.setHasSidebar(false);\n };\n }, [shell, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Resolve responsive controlled state at top level\n const stateIsResponsive = typeof state === 'object' && state !== null;\n const { resolvedDefault: resolvedSidebarDefault } = useResponsiveInitialState<SidebarMode>({\n controlledValue: state,\n defaultValue: defaultState,\n currentValue: shell.sidebarMode as SidebarMode,\n setValue: shell.setSidebarMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: stateIsResponsive,\n onResponsiveChange: (next) => onStateChange?.(next, { reason: 'responsive' }),\n onInit: (initial) => onStateChange?.(initial, { reason: 'init' }),\n });\n\n // Emit mode changes\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n React.useEffect(() => {\n // notify new API when uncontrolled; skip first run to avoid masking init\n if (typeof state === 'undefined') {\n if (lastNotifyModeRef.current === null) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n } else if (lastNotifyModeRef.current !== shell.sidebarMode) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n onStateChange?.(shell.sidebarMode as SidebarMode, { reason: 'toggle' });\n }\n }\n }, [shell.sidebarMode, state, onStateChange]);\n\n // Track previous mode to only fire callbacks on actual user-initiated state transitions.\n // We wait for breakpointReady to ensure the initial state sync from useResponsiveInitialState\n // is complete before enabling callbacks. This avoids spurious callbacks during initialization.\n const prevSidebarModeRef = React.useRef<SidebarMode | null>(null);\n const hasInitializedRef = React.useRef(false);\n React.useEffect(() => {\n const currentMode = shell.sidebarMode as SidebarMode;\n\n // Wait for breakpoint to be ready before enabling callbacks\n if (!shell.currentBreakpointReady) {\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n // Skip the first run after breakpoint is ready - this captures the post-sync state\n if (!hasInitializedRef.current) {\n hasInitializedRef.current = true;\n prevSidebarModeRef.current = currentMode;\n return;\n }\n\n const prevMode = prevSidebarModeRef.current;\n\n // Only fire on actual state transitions\n if (prevMode !== null && prevMode !== currentMode) {\n // onExpand: when becoming visible (collapsed \u2192 thin/expanded)\n if (prevMode === 'collapsed' && currentMode !== 'collapsed') {\n onExpand?.();\n }\n // onCollapse: when becoming hidden (any \u2192 collapsed)\n else if (currentMode === 'collapsed') {\n onCollapse?.();\n }\n prevSidebarModeRef.current = currentMode;\n }\n }, [shell.sidebarMode, shell.currentBreakpointReady, onExpand, onCollapse]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = shell.sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const shellForToggle = useShell();\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = resolvedSidebarDefault ?? (typeof defaultState === 'string' ? defaultState : undefined) ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [resolvedSidebarDefault, defaultState]);\n\n React.useEffect(() => {\n if (!shellForToggle.setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n shellForToggle.setSidebarToggleComputer(compute);\n return () => {\n shellForToggle.setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [shellForToggle, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (shell.sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = shell.sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = shell.sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [shell.sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && shell.sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setSidebarMode('collapsed'),\n requestToggle: () => shell.togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientWidth || window.innerWidth || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n width={{\n initial: `${open ? (shell.sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...sidebarDomProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={shell.sidebarMode}\n data-peek={shell.peekTarget === 'sidebar' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isContentVisible) || undefined}\n style={{\n ...style,\n ['--sidebar-size' as any]: `${expandedSize}px`,\n ['--sidebar-thin-size' as any]: `${thinSize}px`,\n ['--sidebar-min-size' as any]: `${minSize}px`,\n ['--sidebar-max-size' as any]: `${maxSize}px`,\n ...(shell.peekTarget === 'sidebar' && shell.sidebarMode === 'collapsed' && !isOverlay\n ? (() => {\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = shell.sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return {\n ['--peek-sidebar-width' as any]: `${thinSize}px`,\n } as React.CSSProperties;\n }\n return {\n ['--peek-sidebar-width' as any]: `var(--sidebar-size, ${expandedSize}px)`,\n } as React.CSSProperties;\n })()\n : {}),\n }}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n"],
5
+ "mappings": "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",
6
+ "names": ["shell_sidebar_exports", "__export", "Sidebar", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_prop_helpers", "import_shell_handles", "import_shell_types", "SIDEBAR_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "sidebarDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "stateIsResponsive", "resolvedSidebarDefault", "next", "initial", "lastNotifyModeRef", "prevSidebarModeRef", "hasInitializedRef", "currentMode", "prevMode", "isContentVisible", "persistenceAdapter", "key", "v", "mounted", "loaded", "shellForToggle", "resolveDefaultSidebarMode", "resolved", "compute", "current", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "controlledSize", "open", "o", "classNames"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/components/shell.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";"use client";var He=Object.create;var ye=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var Ie=Object.getOwnPropertyNames;var Fe=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var We=(n,a)=>{for(var d in a)ye(n,d,{get:a[d],enumerable:!0})},xe=(n,a,d,y)=>{if(a&&typeof a=="object"||typeof a=="function")for(let u of Ie(a))!Ue.call(n,u)&&u!==d&&ye(n,u,{get:()=>a[u],enumerable:!(y=Ve(a,u))||y.enumerable});return n};var Ee=(n,a,d)=>(d=n!=null?He(Fe(n)):{},xe(a||!n||!n.__esModule?ye(d,"default",{value:n,enumerable:!0}):d,n)),$e=n=>xe(ye({},"__esModule",{value:!0}),n);var Ke={};We(Ke,{Bottom:()=>ue.Bottom,Content:()=>ce,Header:()=>he,Inspector:()=>fe.Inspector,Left:()=>pe,Panel:()=>D,Rail:()=>Q,Root:()=>Ce,Sidebar:()=>te.Sidebar,Trigger:()=>ve,useResponsivePresentation:()=>ae.useResponsivePresentation,useShell:()=>c.useShell});module.exports=$e(Ke);var e=Ee(require("react")),G=Ee(require("classnames")),Se=Ee(require("./sheet.js")),Re=require("./visually-hidden.js"),ae=require("./shell.hooks.js"),ge=require("./_internal/shell-resize.js"),oe=require("./_internal/shell-handles.js"),le=require("./_internal/shell-prop-helpers.js"),te=require("./_internal/shell-sidebar.js"),ue=require("./_internal/shell-bottom.js"),fe=require("./_internal/shell-inspector.js"),Te=require("./shell.types.js"),c=require("./shell.context.js");function qe(){const[n,a]=e.useState("initial"),[d,y]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const x=Object.entries(Te._BREAKPOINTS).map(([f,r])=>[f,window.matchMedia(r)]),E=()=>{const f=x.filter(([,m])=>m.matches).map(([m])=>m),r=f[f.length-1]??"initial";a(r),y(!0)};E();const S=[];return x.forEach(([,f])=>{const r=f;typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"?(r.addEventListener("change",E),S.push(()=>r.removeEventListener?.("change",E))):typeof r.addListener=="function"&&typeof r.removeListener=="function"&&(r.addListener(E),S.push(()=>r.removeListener?.(E)))}),()=>{S.forEach(f=>{try{f()}catch{}})}},[]),{bp:n,ready:d}}const Pe=Symbol("rtShellSlot");function J(n,a){return n[Pe]=a,n}function Ye(n,a){if(!e.isValidElement(n))return!1;const d=n.type;if(d===a)return!0;const y=a?.[Pe];return!!(d?.[Pe]&&y&&d[Pe]===y)}J(te.Sidebar,"Shell.Sidebar"),J(fe.Inspector,"Shell.Inspector"),J(ue.Bottom,"Shell.Bottom");function Ge(n,a){switch(a.type){case"SET_LEFT_MODE":return a.mode==="collapsed"?{...n,leftMode:"collapsed",panelMode:"collapsed"}:{...n,leftMode:a.mode};case"SET_PANEL_MODE":return a.mode==="expanded"&&n.leftMode!=="expanded"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:a.mode};case"SET_SIDEBAR_MODE":return{...n,sidebarMode:a.mode};case"SET_INSPECTOR_MODE":return{...n,inspectorMode:a.mode};case"SET_BOTTOM_MODE":return{...n,bottomMode:a.mode};case"TOGGLE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:n.leftMode==="expanded"?"collapsed":"expanded",panelMode:n.leftMode==="expanded"?"collapsed":n.panelMode};case"panel":return n.leftMode==="collapsed"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:n.panelMode==="expanded"?"collapsed":"expanded"};case"sidebar":{const d=n.sidebarMode==="collapsed"?"expanded":n.sidebarMode==="expanded"?"collapsed":"expanded";return{...n,sidebarMode:d}}case"inspector":return{...n,inspectorMode:n.inspectorMode==="expanded"?"collapsed":"expanded"};case"bottom":return{...n,bottomMode:n.bottomMode==="expanded"?"collapsed":"expanded"};default:return n}return n}case"EXPAND_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"expanded"};case"panel":return{...n,leftMode:"expanded",panelMode:"expanded"};case"sidebar":return{...n,sidebarMode:"expanded"};case"inspector":return{...n,inspectorMode:"expanded"};case"bottom":return{...n,bottomMode:"expanded"};default:return n}return n}case"COLLAPSE_PANE":{switch(a.target){case"left":case"rail":return{...n,leftMode:"collapsed",panelMode:"collapsed"};case"panel":return{...n,panelMode:"collapsed"};case"sidebar":return{...n,sidebarMode:"collapsed"};case"inspector":return{...n,inspectorMode:"collapsed"};case"bottom":return{...n,bottomMode:"collapsed"};default:return n}return n}}return n}const Ce=e.forwardRef(({className:n,children:a,height:d="full",...y},u)=>{const{bp:x,ready:E}=qe(),S=e.Children.toArray(a),f=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Panel"&&!!t.props?.defaultOpen),r=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Rail"&&!!t.props?.defaultOpen),m=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&!!t.props?.defaultOpen),O=S.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&typeof t.props?.open<"u"&&!!t.props?.open),[i,R]=e.useReducer(Ge,{leftMode:f||r?"expanded":"collapsed",panelMode:f?"expanded":"collapsed",sidebarMode:"expanded",inspectorMode:m||O?"expanded":"collapsed",bottomMode:"collapsed"}),l=e.useCallback(t=>R({type:"SET_LEFT_MODE",mode:t}),[]),C=e.useCallback(t=>R({type:"SET_PANEL_MODE",mode:t}),[]),g=e.useCallback(t=>R({type:"SET_SIDEBAR_MODE",mode:t}),[]),L=e.useCallback(t=>R({type:"SET_INSPECTOR_MODE",mode:t}),[]),W=e.useCallback(t=>R({type:"SET_BOTTOM_MODE",mode:t}),[]),[w,I]=e.useState(!1),[A,F]=e.useState(!1),Z=e.useRef(t=>t==="collapsed"?"thin":t==="thin"?"expanded":"collapsed"),j=e.useCallback(t=>{Z.current=t},[]);e.useEffect(()=>{A&&w&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[A,w]);const[v,B]=e.useState(void 0),z=e.useCallback(t=>B(t),[]),k=e.useRef(64),T=e.useRef(288),s=e.useCallback(t=>{k.current=t},[]),$=e.useCallback(t=>{T.current=t},[]),K=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,ie)=>e.isValidElement(_)&&(_.type===ie||_.type?.displayName===ie.displayName);return t.some(_=>V(_,Q)||V(_,D))},[a]),X=e.useMemo(()=>{const t=e.Children.toArray(a),V=(_,ie)=>e.isValidElement(_)&&(_.type===ie||_.type?.displayName===ie.displayName);return t.some(_=>V(_,te.Sidebar))},[a]),P=e.useCallback(t=>{if(t==="sidebar"){const V=Z.current(i.sidebarMode);g(V);return}R({type:"TOGGLE_PANE",target:t})},[i.sidebarMode,g]),h=e.useCallback(t=>{if(t==="sidebar")return g("expanded");R({type:"EXPAND_PANE",target:t})},[g]),H=e.useCallback(t=>{if(t==="sidebar")return g("collapsed");R({type:"COLLAPSE_PANE",target:t})},[g]),re=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l,panelMode:i.panelMode,setPanelMode:C,sidebarMode:i.sidebarMode,setSidebarMode:g,inspectorMode:i.inspectorMode,setInspectorMode:L,bottomMode:i.bottomMode,setBottomMode:W,hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F,currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v,togglePane:P,expandPane:h,collapsePane:H,setSidebarToggleComputer:j,onLeftPres:z,onRailDefaults:s,onPanelDefaults:$}),[i.leftMode,l,i.panelMode,C,i.sidebarMode,g,i.inspectorMode,L,i.bottomMode,W,w,A,x,E,v,P,h,H,j,z,s,$]),U=e.Children.toArray(a),N=(t,V)=>e.isValidElement(t)&&(t.type===V||t.type?.displayName===V.displayName),se=U.filter(t=>N(t,he)),q=U.filter(t=>N(t,Q)),de=U.filter(t=>N(t,D)),be=U.filter(t=>N(t,te.Sidebar)),o=U.filter(t=>N(t,ce)),p=U.filter(t=>N(t,fe.Inspector)),b=U.filter(t=>N(t,ue.Bottom)),M=q[0]?.props?.open;e.useEffect(()=>{if(typeof M>"u")return;l(!!M?"expanded":"collapsed")},[M,l]);const ee=e.useMemo(()=>d==="full"?{height:"100vh"}:d==="auto"?{height:"auto"}:typeof d=="string"?{height:d}:typeof d=="number"?{height:`${d}px`}:{},[d]),[Y,ne]=e.useState(null),me=e.useCallback(t=>ne(t),[]),Me=e.useCallback(()=>ne(null),[]),Oe=e.useMemo(()=>({currentBreakpoint:x,currentBreakpointReady:E,leftResolvedPresentation:v}),[x,E,v]),Le=e.useMemo(()=>({leftMode:i.leftMode,setLeftMode:l}),[i.leftMode,l]),ze=e.useMemo(()=>({panelMode:i.panelMode,setPanelMode:C}),[i.panelMode,C]),ke=e.useMemo(()=>({sidebarMode:i.sidebarMode,setSidebarMode:g}),[i.sidebarMode,g]),Ne=e.useMemo(()=>({inspectorMode:i.inspectorMode,setInspectorMode:L}),[i.inspectorMode,L]),_e=e.useMemo(()=>({bottomMode:i.bottomMode,setBottomMode:W}),[i.bottomMode,W]),De=e.useMemo(()=>({hasLeft:w,setHasLeft:I,hasSidebar:A,setHasSidebar:F}),[w,I,A,F]),we=e.useMemo(()=>({peekTarget:Y,setPeekTarget:ne,peekPane:me,clearPeek:Me}),[Y,ne,me,Me]),Ae=e.useMemo(()=>({togglePane:P,expandPane:h,collapsePane:H,setSidebarToggleComputer:j}),[P,h,H,j]),Be=e.useMemo(()=>({...re,peekTarget:Y,setPeekTarget:ne,peekPane:me,clearPeek:Me}),[re,Y,ne,me,Me]);return e.createElement("div",{...y,ref:u,className:(0,G.default)("rt-ShellRoot",n),style:{...ee,...y.style}},e.createElement(c.ShellProvider,{value:Be},e.createElement(c.PresentationContext.Provider,{value:Oe},e.createElement(c.LeftModeContext.Provider,{value:Le},e.createElement(c.PanelModeContext.Provider,{value:ze},e.createElement(c.SidebarModeContext.Provider,{value:ke},e.createElement(c.InspectorModeContext.Provider,{value:Ne},e.createElement(c.BottomModeContext.Provider,{value:_e},e.createElement(c.CompositionContext.Provider,{value:De},e.createElement(c.PeekContext.Provider,{value:we},e.createElement(c.ActionsContext.Provider,{value:Ae},se,e.createElement("div",{className:"rt-ShellBody","data-peek-target":Y??void 0,style:Y==="rail"||Y==="panel"?{"--peek-rail-width":`${k.current}px`}:void 0},K&&!X?(()=>{const t=q[0],V=t?{onOpenChange:t.props?.onOpenChange,open:t.props?.open,defaultOpen:t.props?.defaultOpen,presentation:t.props?.presentation,collapsible:t.props?.collapsible,onExpand:t.props?.onExpand,onCollapse:t.props?.onCollapse}:{defaultOpen:f?!0:void 0};return e.createElement(pe,{...V},q,de)})():be,o,p),b)))))))))))});Ce.displayName="Shell.Root";const he=e.forwardRef(({className:n,height:a=64,style:d,...y},u)=>e.createElement("header",{...y,ref:u,className:(0,G.default)("rt-ShellHeader",n),style:{...d,"--shell-header-height":`${a}px`}}));he.displayName="Shell.Header";const Qe=["open","defaultOpen","onOpenChange","mode","defaultMode","onModeChange"],pe=e.forwardRef((n,a)=>{const{className:d,presentation:y={initial:"fixed",sm:"fixed"},collapsible:u=!0,onExpand:x,onCollapse:E,children:S,style:f,...r}=n,m=r.open,O=r.defaultOpen,i=r.onOpenChange,R=(0,le.omitPaneProps)(r,Qe),l=(0,c.useShell)(),C=(0,ae.useResponsivePresentation)(y),g=C==="overlay",L=C==="stacked",W=e.useRef(null);e.useEffect(()=>{l.onLeftPres?.(C)},[l,C]);const w=e.useCallback(v=>{W.current=v,typeof a=="function"?a(v):a&&(a.current=v)},[a]);e.useEffect(()=>(l.setHasLeft(!0),()=>l.setHasLeft(!1)),[l]);const I=e.useRef(null),A=e.useRef(!1),F=e.useMemo(()=>{if(!(typeof m>"u"))return m?"expanded":"collapsed"},[m]),Z=e.useMemo(()=>(0,le.mapResponsiveBooleanToPaneMode)(O),[O]);(0,ae.useResponsiveInitialState)({controlledValue:F,defaultValue:Z,currentValue:l.leftMode,setValue:l.setLeftMode,breakpointReady:l.currentBreakpointReady,onInit:v=>i?.(v==="expanded",{reason:"init"})}),e.useEffect(()=>{typeof m<"u"||(I.current!==null&&I.current!==l.leftMode&&i?.(l.leftMode==="expanded",{reason:"toggle"}),I.current=l.leftMode)},[l,i,m]),e.useEffect(()=>{l.leftMode==="expanded"?x?.():E?.()},[l.leftMode,x,E]);const j=l.leftMode==="expanded";if(g){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(h,H)=>e.isValidElement(h)&&h.type===H,k=B.find(h=>z(h,Q)),T=B.find(h=>z(h,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,X=!!T,P=(K?s:0)+(l.panelMode==="expanded"&&X?$:0);return e.createElement(Se.Root,{open:v,onOpenChange:h=>l.setLeftMode(h?"expanded":"collapsed")},e.createElement(Se.Content,{side:"start",style:{padding:0},width:{initial:`${P}px`}},e.createElement(Re.VisuallyHidden,null,e.createElement(Se.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},S)))}if(L){const v=l.leftMode==="expanded",B=e.Children.toArray(S),z=(h,H)=>e.isValidElement(h)&&h.type===H,k=B.find(h=>z(h,Q)),T=B.find(h=>z(h,D)),s=typeof k?.props?.expandedSize=="number"?k.props.expandedSize:64,$=typeof T?.props?.expandedSize=="number"?T.props.expandedSize:288,K=!!k,P=!!T&&(l.panelMode==="expanded"||l.peekTarget==="panel");return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f},"data-open":v||void 0},S)}return e.createElement("div",{...R,ref:w,className:(0,G.default)("rt-ShellLeft",d),"data-mode":l.leftMode,"data-peek":l.peekTarget==="left"||l.peekTarget==="rail"||l.peekTarget==="panel"||void 0,"data-presentation":C,style:{...f}},S)});pe.displayName="Shell.Left",J(pe,"Shell.Left");const Q=e.forwardRef((n,a)=>{const{className:d,presentation:y,expandedSize:u=64,collapsible:x,onExpand:E,onCollapse:S,children:f,style:r,open:m,defaultOpen:O,onOpenChange:i,...R}=n,l=(0,c.useShell)(),C=e.useRef(null);e.useEffect(()=>{const L=typeof m<"u";if(C.current===null){C.current=L;return}C.current!==L&&(console.warn("Shell.Rail: Switching between controlled and uncontrolled `open` is not supported."),C.current=L)},[m]),e.useEffect(()=>{l.onRailDefaults?.(u)},[l,u]);const g=l.leftMode==="expanded";return e.createElement("div",{...R,ref:a,className:(0,G.default)("rt-ShellRail",d),"data-mode":l.leftMode,"data-peek":l.currentBreakpointReady&&l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail"||void 0,style:{...r,"--rail-size":`${u}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":l.currentBreakpointReady&&(g||l.leftResolvedPresentation!=="overlay"&&l.peekTarget==="rail")||void 0},f))});Q.displayName="Shell.Rail",J(Q,"Shell.Rail");const je=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],D=J(e.forwardRef((n,a)=>{const{className:d,defaultOpen:y,open:u,onOpenChange:x,size:E,defaultSize:S,expandedSize:f=288,minSize:r,maxSize:m,resizable:O,collapsible:i=!0,onExpand:R,onCollapse:l,onResize:C,onResizeStart:g,onResizeEnd:L,snapPoints:W,snapTolerance:w,collapseThreshold:I,paneId:A,persistence:F,children:Z,style:j,onSizeChange:v,sizeUpdate:B,sizeUpdateMs:z=50}=n,k=(0,le.extractPaneDomProps)(n,je),T=e.useMemo(()=>{if(!v)return()=>{};if(B==="debounce"){let o=null;return(b,M)=>{o&&clearTimeout(o),o=setTimeout(()=>{v?.(b,M)},z)}}if(B==="throttle"){let o=0;return(p,b)=>{const M=Date.now();M-o>=z&&(o=M,v?.(p,b))}}return(o,p)=>v?.(o,p)},[v,B,z]),s=(0,c.useShell)(),$=e.useRef(null),K=e.useRef(null),X=e.useRef(!1);e.useEffect(()=>{typeof u>"u"&&typeof y=="boolean"&&(y?(s.setLeftMode("expanded"),s.setPanelMode("expanded")):s.setPanelMode("collapsed"))},[]),e.useEffect(()=>{typeof u>"u"||(u?(s.leftMode!=="expanded"&&s.setLeftMode("expanded"),s.panelMode!=="expanded"&&s.setPanelMode("expanded")):s.panelMode!=="collapsed"&&s.setPanelMode("collapsed"))},[s,u]),e.useEffect(()=>{const o=typeof u<"u";D._wasControlled=D._wasControlled??o,D._wasControlled!==o&&(console.warn("Shell.Panel: Switching between controlled and uncontrolled `open` is not supported."),D._wasControlled=o)},[u]),e.useEffect(()=>{X.current||typeof u>"u"&&y&&s.panelMode==="expanded"&&(x?.(!0,{reason:"init"}),X.current=!0)},[]),e.useEffect(()=>{s.onPanelDefaults?.(f)},[s,f]);const P=e.useRef(null),h=e.useCallback(o=>{P.current=o,typeof a=="function"?a(o):a&&(a.current=o)},[a]),H=e.Children.toArray(Z),re=H.filter(o=>e.isValidElement(o)&&o.type===oe.PanelHandle),U=H.filter(o=>!(e.isValidElement(o)&&o.type===oe.PanelHandle)),N=s.leftResolvedPresentation==="overlay",se=e.useCallback(o=>{if(o==null)return;if(typeof o=="number"&&Number.isFinite(o))return o;const p=String(o).trim();if(!p)return;if(p.endsWith("px"))return Number.parseFloat(p);if(p.endsWith("rem")){const M=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(p)*M}if(p.endsWith("%")){const M=Number.parseFloat(p),ee=document.documentElement.clientWidth||window.innerWidth||0;return M/100*ee}const b=Number.parseFloat(p);return Number.isFinite(b)?b:void 0},[]),q=e.useMemo(()=>{if(!A||F)return F;const o=`kookie-ui:shell:panel:${A}`;return{load:()=>{if(typeof window>"u")return;const b=window.localStorage.getItem(o);return b?Number(b):void 0},save:b=>{typeof window>"u"||window.localStorage.setItem(o,String(b))}}},[A,F]);e.useEffect(()=>{let o=!0;return(async()=>{if(!O||!q?.load||N)return;const p=await q.load();o&&typeof p=="number"&&P.current&&(P.current.style.setProperty("--panel-size",`${p}px`),C?.(p))})(),()=>{o=!1}},[O,q,C,N]),e.useEffect(()=>{P.current&&N&&P.current.style.setProperty("--panel-size",`${f}px`)},[N,f]),e.useEffect(()=>{if(P.current&&typeof E>"u"&&typeof S<"u"){const o=se(S);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"init"})}}},[]),e.useEffect(()=>{if(!P.current||typeof E>"u")return;const o=se(E);if(typeof o=="number"&&Number.isFinite(o)){const M=Math.min((typeof m=="number"?m:void 0)??o,Math.max((typeof r=="number"?r:void 0)??o,o));P.current.style.setProperty("--panel-size",`${M}px`),T(M,{reason:"controlled"})}},[E,r,m,se,T]),e.useEffect(()=>{if(P.current&&s.leftResolvedPresentation!=="overlay"&&s.leftMode==="expanded"&&s.panelMode==="expanded"){const o=P.current.parentElement||null;try{o?.style.removeProperty("width")}catch{}}},[s.leftResolvedPresentation,s.leftMode,s.panelMode]);const de=s.leftMode==="expanded"&&s.panelMode==="expanded";e.useEffect(()=>{const o=$.current,p=K.current;if(o!==null&&o!==s.panelMode){const b=s.panelMode==="expanded";let M="toggle";p!==s.leftMode&&s.leftMode==="collapsed"&&!b&&(M="left"),x?.(b,{reason:M})}$.current=s.panelMode,K.current=s.leftMode},[s.panelMode,s.leftMode,x]);const be=O&&s.leftResolvedPresentation!=="overlay"&&de?e.createElement(ge.PaneResizeContext.Provider,{value:{containerRef:P,cssVarName:"--panel-size",minSize:typeof r=="number"?r:100,maxSize:typeof m=="number"?m:800,defaultSize:f,orientation:"vertical",edge:"end",computeNext:(o,p,b)=>{const M=getComputedStyle(P.current).direction==="rtl",ee=o-p;return b+(M?-ee:ee)},onResize:C,onResizeStart:o=>{const b=P.current?.parentElement;try{b?.style.removeProperty("width")}catch{}g?.(o)},onResizeEnd:o=>{L?.(o),T(o,{reason:"resize"}),q?.save?.(o)},target:"panel",collapsible:!!i,snapPoints:W,snapTolerance:w??8,collapseThreshold:I,requestCollapse:()=>s.setPanelMode("collapsed"),requestToggle:()=>s.togglePane("panel")}},re.length>0?re.map((o,p)=>e.cloneElement(o,{key:o.key??p})):e.createElement(oe.PaneHandle,null)):null;return e.createElement("div",{...k,ref:h,className:(0,G.default)("rt-ShellPanel",d),"data-mode":s.panelMode,"data-visible":s.currentBreakpointReady&&(de||s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel")||void 0,"data-peek":s.currentBreakpointReady&&s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel"||void 0,style:{...j,"--panel-size":`${f}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":de||void 0},U),be)}),"Shell.Panel");D.displayName="Shell.Panel",D.Handle=oe.PanelHandle;const ce=e.forwardRef(({className:n,...a},d)=>e.createElement("main",{...a,ref:d,className:(0,G.default)("rt-ShellContent",n)}));ce.displayName="Shell.Content",J(ce,"Shell.Content");const ve=e.forwardRef(({target:n,action:a="toggle",peekOnHover:d,onClick:y,onMouseEnter:u,onMouseLeave:x,children:E,...S},f)=>{const r=(0,c.useShell)(),m=e.useCallback(l=>{switch(y?.(l),r.peekTarget===n&&r.clearPeek(),a){case"toggle":r.togglePane(n);break;case"expand":r.expandPane(n);break;case"collapse":r.collapsePane(n);break}},[r,n,a,y]),O=(()=>{switch(n){case"left":case"rail":return r.leftMode==="collapsed";case"panel":return r.leftMode==="collapsed"||r.panelMode==="collapsed";case"sidebar":return r.sidebarMode==="collapsed";case"inspector":return r.inspectorMode==="collapsed";case"bottom":return r.bottomMode==="collapsed"}})(),i=e.useCallback(l=>{u?.(l),!(!d||!O)&&r.peekPane(n)},[u,d,O,r,n]),R=e.useCallback(l=>{x?.(l),d&&r.peekTarget===n&&r.clearPeek()},[x,d,r,n]);return e.createElement("button",{...S,ref:f,onClick:m,onMouseEnter:i,onMouseLeave:R,"data-shell-trigger":n,"data-shell-action":a},E)});ve.displayName="Shell.Trigger";
1
+ "use strict";"use client";var Ie=Object.create;var Pe=Object.defineProperty;var Fe=Object.getOwnPropertyDescriptor;var Ue=Object.getOwnPropertyNames;var We=Object.getPrototypeOf,$e=Object.prototype.hasOwnProperty;var je=(n,l)=>{for(var d in l)Pe(n,d,{get:l[d],enumerable:!0})},Re=(n,l,d,y)=>{if(l&&typeof l=="object"||typeof l=="function")for(let u of Ue(l))!$e.call(n,u)&&u!==d&&Pe(n,u,{get:()=>l[u],enumerable:!(y=Fe(l,u))||y.enumerable});return n};var Ee=(n,l,d)=>(d=n!=null?Ie(We(n)):{},Re(l||!n||!n.__esModule?Pe(d,"default",{value:n,enumerable:!0}):d,n)),qe=n=>Re(Pe({},"__esModule",{value:!0}),n);var Ye={};je(Ye,{Bottom:()=>fe.Bottom,Content:()=>ue,Header:()=>he,Inspector:()=>me.Inspector,Left:()=>ce,Panel:()=>D,Rail:()=>Q,Root:()=>ve,Sidebar:()=>ae.Sidebar,Trigger:()=>xe,useResponsivePresentation:()=>re.useResponsivePresentation,useShell:()=>c.useShell});module.exports=qe(Ye);var e=Ee(require("react")),G=Ee(require("classnames")),Ce=Ee(require("./sheet.js")),ge=require("./visually-hidden.js"),re=require("./shell.hooks.js"),Te=require("./_internal/shell-resize.js"),le=require("./_internal/shell-handles.js"),se=require("./_internal/shell-prop-helpers.js"),ae=require("./_internal/shell-sidebar.js"),fe=require("./_internal/shell-bottom.js"),me=require("./_internal/shell-inspector.js"),Oe=require("./shell.types.js"),c=require("./shell.context.js");function Ge(){const[n,l]=e.useState("initial"),[d,y]=e.useState(!1);return e.useEffect(()=>{if(typeof window>"u")return;const x=Object.entries(Oe._BREAKPOINTS).map(([f,r])=>[f,window.matchMedia(r)]),h=()=>{const f=x.filter(([,m])=>m.matches).map(([m])=>m),r=f[f.length-1]??"initial";l(r),y(!0)};h();const P=[];return x.forEach(([,f])=>{const r=f;typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"?(r.addEventListener("change",h),P.push(()=>r.removeEventListener?.("change",h))):typeof r.addListener=="function"&&typeof r.removeListener=="function"&&(r.addListener(h),P.push(()=>r.removeListener?.(h)))}),()=>{P.forEach(f=>{try{f()}catch{}})}},[]),{bp:n,ready:d}}const be=Symbol("rtShellSlot");function Z(n,l){return n[be]=l,n}function Ze(n,l){if(!e.isValidElement(n))return!1;const d=n.type;if(d===l)return!0;const y=l?.[be];return!!(d?.[be]&&y&&d[be]===y)}Z(ae.Sidebar,"Shell.Sidebar"),Z(me.Inspector,"Shell.Inspector"),Z(fe.Bottom,"Shell.Bottom");function Qe(n,l){switch(l.type){case"SET_LEFT_MODE":return l.mode==="collapsed"?{...n,leftMode:"collapsed",panelMode:"collapsed"}:{...n,leftMode:l.mode};case"SET_PANEL_MODE":return l.mode==="expanded"&&n.leftMode!=="expanded"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:l.mode};case"SET_SIDEBAR_MODE":return{...n,sidebarMode:l.mode};case"SET_INSPECTOR_MODE":return{...n,inspectorMode:l.mode};case"SET_BOTTOM_MODE":return{...n,bottomMode:l.mode};case"TOGGLE_PANE":{switch(l.target){case"left":case"rail":return{...n,leftMode:n.leftMode==="expanded"?"collapsed":"expanded",panelMode:n.leftMode==="expanded"?"collapsed":n.panelMode};case"panel":return n.leftMode==="collapsed"?{...n,leftMode:"expanded",panelMode:"expanded"}:{...n,panelMode:n.panelMode==="expanded"?"collapsed":"expanded"};case"sidebar":{const d=n.sidebarMode==="collapsed"?"expanded":n.sidebarMode==="expanded"?"collapsed":"expanded";return{...n,sidebarMode:d}}case"inspector":return{...n,inspectorMode:n.inspectorMode==="expanded"?"collapsed":"expanded"};case"bottom":return{...n,bottomMode:n.bottomMode==="expanded"?"collapsed":"expanded"};default:return n}return n}case"EXPAND_PANE":{switch(l.target){case"left":case"rail":return{...n,leftMode:"expanded"};case"panel":return{...n,leftMode:"expanded",panelMode:"expanded"};case"sidebar":return{...n,sidebarMode:"expanded"};case"inspector":return{...n,inspectorMode:"expanded"};case"bottom":return{...n,bottomMode:"expanded"};default:return n}return n}case"COLLAPSE_PANE":{switch(l.target){case"left":case"rail":return{...n,leftMode:"collapsed",panelMode:"collapsed"};case"panel":return{...n,panelMode:"collapsed"};case"sidebar":return{...n,sidebarMode:"collapsed"};case"inspector":return{...n,inspectorMode:"collapsed"};case"bottom":return{...n,bottomMode:"collapsed"};default:return n}return n}}return n}const ve=e.forwardRef(({className:n,children:l,height:d="full",...y},u)=>{const{bp:x,ready:h}=Ge(),P=e.Children.toArray(l),f=P.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Panel"&&!!t.props?.defaultOpen),r=P.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Rail"&&!!t.props?.defaultOpen),m=P.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&!!t.props?.defaultOpen),z=P.some(t=>e.isValidElement(t)&&t.type?.displayName==="Shell.Inspector"&&typeof t.props?.open<"u"&&!!t.props?.open),V=()=>{const t=P.find(v=>e.isValidElement(v)&&v.type?.displayName==="Shell.Sidebar");if(!t)return"expanded";const i=t.props;if(typeof i?.state<"u"){if(typeof i.state=="string")return i.state;if(typeof i.state=="object")return i.state.initial??Object.values(i.state)[0]??"expanded"}if(typeof i?.defaultState<"u"){if(typeof i.defaultState=="string")return i.defaultState;if(typeof i.defaultState=="object")return i.defaultState.initial??Object.values(i.defaultState)[0]??"expanded"}return"expanded"},U=()=>{const t=P.find(v=>e.isValidElement(v)&&v.type?.displayName==="Shell.Bottom");if(!t)return"collapsed";const i=t.props;if(typeof i?.open<"u"){if(typeof i.open=="boolean")return i.open?"expanded":"collapsed";if(typeof i.open=="object")return i.open.initial??Object.values(i.open)[0]?"expanded":"collapsed"}return typeof i?.defaultOpen<"u"&&i.defaultOpen?"expanded":"collapsed"},[o,M]=e.useReducer(Qe,{leftMode:f||r?"expanded":"collapsed",panelMode:f?"expanded":"collapsed",sidebarMode:V(),inspectorMode:m||z?"expanded":"collapsed",bottomMode:U()}),N=e.useCallback(t=>M({type:"SET_LEFT_MODE",mode:t}),[]),k=e.useCallback(t=>M({type:"SET_PANEL_MODE",mode:t}),[]),T=e.useCallback(t=>M({type:"SET_SIDEBAR_MODE",mode:t}),[]),W=e.useCallback(t=>M({type:"SET_INSPECTOR_MODE",mode:t}),[]),I=e.useCallback(t=>M({type:"SET_BOTTOM_MODE",mode:t}),[]),[w,$]=e.useState(!1),[F,ee]=e.useState(!1),R=e.useRef(t=>t==="collapsed"?"thin":t==="thin"?"expanded":"collapsed"),O=e.useCallback(t=>{R.current=t},[]);e.useEffect(()=>{F&&w&&console.warn("Shell: Sidebar cannot coexist with Rail or Panel. Use either Rail+Panel OR Sidebar.")},[F,w]);const[L,A]=e.useState(void 0),g=e.useCallback(t=>A(t),[]),s=e.useRef(64),K=e.useRef(288),j=e.useCallback(t=>{s.current=t},[]),q=e.useCallback(t=>{K.current=t},[]),E=e.useMemo(()=>{const t=e.Children.toArray(l),i=(v,pe)=>e.isValidElement(v)&&(v.type===pe||v.type?.displayName===pe.displayName);return t.some(v=>i(v,Q)||i(v,D))},[l]),C=e.useMemo(()=>{const t=e.Children.toArray(l),i=(v,pe)=>e.isValidElement(v)&&(v.type===pe||v.type?.displayName===pe.displayName);return t.some(v=>i(v,ae.Sidebar))},[l]),B=e.useCallback(t=>{if(t==="sidebar"){const i=R.current(o.sidebarMode);T(i);return}M({type:"TOGGLE_PANE",target:t})},[o.sidebarMode,T]),X=e.useCallback(t=>{if(t==="sidebar")return T("expanded");M({type:"EXPAND_PANE",target:t})},[T]),ne=e.useCallback(t=>{if(t==="sidebar")return T("collapsed");M({type:"COLLAPSE_PANE",target:t})},[T]),Y=e.useMemo(()=>({leftMode:o.leftMode,setLeftMode:N,panelMode:o.panelMode,setPanelMode:k,sidebarMode:o.sidebarMode,setSidebarMode:T,inspectorMode:o.inspectorMode,setInspectorMode:W,bottomMode:o.bottomMode,setBottomMode:I,hasLeft:w,setHasLeft:$,hasSidebar:F,setHasSidebar:ee,currentBreakpoint:x,currentBreakpointReady:h,leftResolvedPresentation:L,togglePane:B,expandPane:X,collapsePane:ne,setSidebarToggleComputer:O,onLeftPres:g,onRailDefaults:j,onPanelDefaults:q}),[o.leftMode,N,o.panelMode,k,o.sidebarMode,T,o.inspectorMode,W,o.bottomMode,I,w,F,x,h,L,B,X,ne,O,g,j,q]),H=e.Children.toArray(l),_=(t,i)=>e.isValidElement(t)&&(t.type===i||t.type?.displayName===i.displayName),de=H.filter(t=>_(t,he)),ie=H.filter(t=>_(t,Q)),a=H.filter(t=>_(t,D)),p=H.filter(t=>_(t,ae.Sidebar)),b=H.filter(t=>_(t,ue)),S=H.filter(t=>_(t,me.Inspector)),te=H.filter(t=>_(t,fe.Bottom)),Se=ie[0]?.props?.open;e.useEffect(()=>{if(typeof Se>"u")return;N(!!Se?"expanded":"collapsed")},[Se,N]);const Le=e.useMemo(()=>d==="full"?{height:"100vh"}:d==="auto"?{height:"auto"}:typeof d=="string"?{height:d}:typeof d=="number"?{height:`${d}px`}:{},[d]),[J,oe]=e.useState(null),Me=e.useCallback(t=>oe(t),[]),ye=e.useCallback(()=>oe(null),[]),ze=e.useMemo(()=>({currentBreakpoint:x,currentBreakpointReady:h,leftResolvedPresentation:L}),[x,h,L]),Ne=e.useMemo(()=>({leftMode:o.leftMode,setLeftMode:N}),[o.leftMode,N]),ke=e.useMemo(()=>({panelMode:o.panelMode,setPanelMode:k}),[o.panelMode,k]),_e=e.useMemo(()=>({sidebarMode:o.sidebarMode,setSidebarMode:T}),[o.sidebarMode,T]),De=e.useMemo(()=>({inspectorMode:o.inspectorMode,setInspectorMode:W}),[o.inspectorMode,W]),we=e.useMemo(()=>({bottomMode:o.bottomMode,setBottomMode:I}),[o.bottomMode,I]),Ae=e.useMemo(()=>({hasLeft:w,setHasLeft:$,hasSidebar:F,setHasSidebar:ee}),[w,$,F,ee]),Be=e.useMemo(()=>({peekTarget:J,setPeekTarget:oe,peekPane:Me,clearPeek:ye}),[J,oe,Me,ye]),He=e.useMemo(()=>({togglePane:B,expandPane:X,collapsePane:ne,setSidebarToggleComputer:O}),[B,X,ne,O]),Ve=e.useMemo(()=>({...Y,peekTarget:J,setPeekTarget:oe,peekPane:Me,clearPeek:ye}),[Y,J,oe,Me,ye]);return e.createElement("div",{...y,ref:u,className:(0,G.default)("rt-ShellRoot",n),style:{...Le,...y.style}},e.createElement(c.ShellProvider,{value:Ve},e.createElement(c.PresentationContext.Provider,{value:ze},e.createElement(c.LeftModeContext.Provider,{value:Ne},e.createElement(c.PanelModeContext.Provider,{value:ke},e.createElement(c.SidebarModeContext.Provider,{value:_e},e.createElement(c.InspectorModeContext.Provider,{value:De},e.createElement(c.BottomModeContext.Provider,{value:we},e.createElement(c.CompositionContext.Provider,{value:Ae},e.createElement(c.PeekContext.Provider,{value:Be},e.createElement(c.ActionsContext.Provider,{value:He},de,e.createElement("div",{className:"rt-ShellBody","data-peek-target":J??void 0,style:J==="rail"||J==="panel"?{"--peek-rail-width":`${s.current}px`}:void 0},E&&!C?(()=>{const t=ie[0],i=t?{onOpenChange:t.props?.onOpenChange,open:t.props?.open,defaultOpen:t.props?.defaultOpen,presentation:t.props?.presentation,collapsible:t.props?.collapsible,onExpand:t.props?.onExpand,onCollapse:t.props?.onCollapse}:{defaultOpen:f?!0:void 0};return e.createElement(ce,{...i},ie,a)})():p,b,S),te)))))))))))});ve.displayName="Shell.Root";const he=e.forwardRef(({className:n,height:l=64,style:d,...y},u)=>e.createElement("header",{...y,ref:u,className:(0,G.default)("rt-ShellHeader",n),style:{...d,"--shell-header-height":`${l}px`}}));he.displayName="Shell.Header";const Ke=["open","defaultOpen","onOpenChange","mode","defaultMode","onModeChange"],ce=e.forwardRef((n,l)=>{const{className:d,presentation:y={initial:"fixed",sm:"fixed"},collapsible:u=!0,onExpand:x,onCollapse:h,children:P,style:f,...r}=n,m=r.open,z=r.defaultOpen,V=r.onOpenChange,U=(0,se.omitPaneProps)(r,Ke),o=(0,c.useShell)(),M=(0,re.useResponsivePresentation)(y),N=M==="overlay",k=M==="stacked",T=e.useRef(null);e.useEffect(()=>{o.onLeftPres?.(M)},[o,M]);const W=e.useCallback(R=>{T.current=R,typeof l=="function"?l(R):l&&(l.current=R)},[l]);e.useEffect(()=>(o.setHasLeft(!0),()=>o.setHasLeft(!1)),[o]);const I=e.useRef(null),w=e.useRef(!1),$=e.useMemo(()=>{if(!(typeof m>"u"))return m?"expanded":"collapsed"},[m]),F=e.useMemo(()=>(0,se.mapResponsiveBooleanToPaneMode)(z),[z]);(0,re.useResponsiveInitialState)({controlledValue:$,defaultValue:F,currentValue:o.leftMode,setValue:o.setLeftMode,breakpointReady:o.currentBreakpointReady,onInit:R=>V?.(R==="expanded",{reason:"init"})}),e.useEffect(()=>{typeof m<"u"||(I.current!==null&&I.current!==o.leftMode&&V?.(o.leftMode==="expanded",{reason:"toggle"}),I.current=o.leftMode)},[o,V,m]),e.useEffect(()=>{o.leftMode==="expanded"?x?.():h?.()},[o.leftMode,x,h]);const ee=o.leftMode==="expanded";if(N){const R=o.leftMode==="expanded",O=e.Children.toArray(P),L=(C,B)=>e.isValidElement(C)&&C.type===B,A=O.find(C=>L(C,Q)),g=O.find(C=>L(C,D)),s=typeof A?.props?.expandedSize=="number"?A.props.expandedSize:64,K=typeof g?.props?.expandedSize=="number"?g.props.expandedSize:288,j=!!A,q=!!g,E=(j?s:0)+(o.panelMode==="expanded"&&q?K:0);return e.createElement(Ce.Root,{open:R,onOpenChange:C=>o.setLeftMode(C?"expanded":"collapsed")},e.createElement(Ce.Content,{side:"start",style:{padding:0},width:{initial:`${E}px`}},e.createElement(ge.VisuallyHidden,null,e.createElement(Ce.Title,null,"Navigation")),e.createElement("div",{className:"rt-ShellLeft"},P)))}if(k){const R=o.leftMode==="expanded",O=e.Children.toArray(P),L=(C,B)=>e.isValidElement(C)&&C.type===B,A=O.find(C=>L(C,Q)),g=O.find(C=>L(C,D)),s=typeof A?.props?.expandedSize=="number"?A.props.expandedSize:64,K=typeof g?.props?.expandedSize=="number"?g.props.expandedSize:288,j=!!A,E=!!g&&(o.panelMode==="expanded"||o.peekTarget==="panel");return e.createElement("div",{...U,ref:W,className:(0,G.default)("rt-ShellLeft",d),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":M,style:{...f},"data-open":R||void 0},P)}return e.createElement("div",{...U,ref:W,className:(0,G.default)("rt-ShellLeft",d),"data-mode":o.leftMode,"data-peek":o.peekTarget==="left"||o.peekTarget==="rail"||o.peekTarget==="panel"||void 0,"data-presentation":M,style:{...f}},P)});ce.displayName="Shell.Left",Z(ce,"Shell.Left");const Q=e.forwardRef((n,l)=>{const{className:d,presentation:y,expandedSize:u=64,collapsible:x,onExpand:h,onCollapse:P,children:f,style:r,open:m,defaultOpen:z,onOpenChange:V,...U}=n,o=(0,c.useShell)(),M=e.useRef(null);e.useEffect(()=>{const k=typeof m<"u";if(M.current===null){M.current=k;return}M.current!==k&&(console.warn("Shell.Rail: Switching between controlled and uncontrolled `open` is not supported."),M.current=k)},[m]),e.useEffect(()=>{o.onRailDefaults?.(u)},[o,u]);const N=o.leftMode==="expanded";return e.createElement("div",{...U,ref:l,className:(0,G.default)("rt-ShellRail",d),"data-mode":o.leftMode,"data-peek":o.currentBreakpointReady&&o.leftResolvedPresentation!=="overlay"&&o.peekTarget==="rail"||void 0,style:{...r,"--rail-size":`${u}px`}},e.createElement("div",{className:"rt-ShellRailContent","data-visible":o.currentBreakpointReady&&(N||o.leftResolvedPresentation!=="overlay"&&o.peekTarget==="rail")||void 0},f))});Q.displayName="Shell.Rail",Z(Q,"Shell.Rail");const Xe=["className","children","defaultOpen","open","onOpenChange","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],D=Z(e.forwardRef((n,l)=>{const{className:d,defaultOpen:y,open:u,onOpenChange:x,size:h,defaultSize:P,expandedSize:f=288,minSize:r,maxSize:m,resizable:z,collapsible:V=!0,onExpand:U,onCollapse:o,onResize:M,onResizeStart:N,onResizeEnd:k,snapPoints:T,snapTolerance:W,collapseThreshold:I,paneId:w,persistence:$,children:F,style:ee,onSizeChange:R,sizeUpdate:O,sizeUpdateMs:L=50}=n,A=(0,se.extractPaneDomProps)(n,Xe),g=e.useMemo(()=>{if(!R)return()=>{};if(O==="debounce"){let a=null;return(b,S)=>{a&&clearTimeout(a),a=setTimeout(()=>{R?.(b,S)},L)}}if(O==="throttle"){let a=0;return(p,b)=>{const S=Date.now();S-a>=L&&(a=S,R?.(p,b))}}return(a,p)=>R?.(a,p)},[R,O,L]),s=(0,c.useShell)(),K=e.useRef(null),j=e.useRef(null),q=e.useRef(!1);e.useEffect(()=>{typeof u>"u"&&typeof y=="boolean"&&(y?(s.setLeftMode("expanded"),s.setPanelMode("expanded")):s.setPanelMode("collapsed"))},[]),e.useEffect(()=>{typeof u>"u"||(u?(s.leftMode!=="expanded"&&s.setLeftMode("expanded"),s.panelMode!=="expanded"&&s.setPanelMode("expanded")):s.panelMode!=="collapsed"&&s.setPanelMode("collapsed"))},[s,u]),e.useEffect(()=>{const a=typeof u<"u";D._wasControlled=D._wasControlled??a,D._wasControlled!==a&&(console.warn("Shell.Panel: Switching between controlled and uncontrolled `open` is not supported."),D._wasControlled=a)},[u]),e.useEffect(()=>{q.current||typeof u>"u"&&y&&s.panelMode==="expanded"&&(x?.(!0,{reason:"init"}),q.current=!0)},[]),e.useEffect(()=>{s.onPanelDefaults?.(f)},[s,f]);const E=e.useRef(null),C=e.useCallback(a=>{E.current=a,typeof l=="function"?l(a):l&&(l.current=a)},[l]),B=e.Children.toArray(F),X=B.filter(a=>e.isValidElement(a)&&a.type===le.PanelHandle),ne=B.filter(a=>!(e.isValidElement(a)&&a.type===le.PanelHandle)),Y=s.leftResolvedPresentation==="overlay",H=e.useCallback(a=>{if(a==null)return;if(typeof a=="number"&&Number.isFinite(a))return a;const p=String(a).trim();if(!p)return;if(p.endsWith("px"))return Number.parseFloat(p);if(p.endsWith("rem")){const S=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(p)*S}if(p.endsWith("%")){const S=Number.parseFloat(p),te=document.documentElement.clientWidth||window.innerWidth||0;return S/100*te}const b=Number.parseFloat(p);return Number.isFinite(b)?b:void 0},[]),_=e.useMemo(()=>{if(!w||$)return $;const a=`kookie-ui:shell:panel:${w}`;return{load:()=>{if(typeof window>"u")return;const b=window.localStorage.getItem(a);return b?Number(b):void 0},save:b=>{typeof window>"u"||window.localStorage.setItem(a,String(b))}}},[w,$]);e.useEffect(()=>{let a=!0;return(async()=>{if(!z||!_?.load||Y)return;const p=await _.load();a&&typeof p=="number"&&E.current&&(E.current.style.setProperty("--panel-size",`${p}px`),M?.(p))})(),()=>{a=!1}},[z,_,M,Y]),e.useEffect(()=>{E.current&&Y&&E.current.style.setProperty("--panel-size",`${f}px`)},[Y,f]),e.useEffect(()=>{if(E.current&&typeof h>"u"&&typeof P<"u"){const a=H(P);if(typeof a=="number"&&Number.isFinite(a)){const S=Math.min((typeof m=="number"?m:void 0)??a,Math.max((typeof r=="number"?r:void 0)??a,a));E.current.style.setProperty("--panel-size",`${S}px`),g(S,{reason:"init"})}}},[]),e.useEffect(()=>{if(!E.current||typeof h>"u")return;const a=H(h);if(typeof a=="number"&&Number.isFinite(a)){const S=Math.min((typeof m=="number"?m:void 0)??a,Math.max((typeof r=="number"?r:void 0)??a,a));E.current.style.setProperty("--panel-size",`${S}px`),g(S,{reason:"controlled"})}},[h,r,m,H,g]),e.useEffect(()=>{if(E.current&&s.leftResolvedPresentation!=="overlay"&&s.leftMode==="expanded"&&s.panelMode==="expanded"){const a=E.current.parentElement||null;try{a?.style.removeProperty("width")}catch{}}},[s.leftResolvedPresentation,s.leftMode,s.panelMode]);const de=s.leftMode==="expanded"&&s.panelMode==="expanded";e.useEffect(()=>{const a=K.current,p=j.current;if(a!==null&&a!==s.panelMode){const b=s.panelMode==="expanded";let S="toggle";p!==s.leftMode&&s.leftMode==="collapsed"&&!b&&(S="left"),x?.(b,{reason:S})}K.current=s.panelMode,j.current=s.leftMode},[s.panelMode,s.leftMode,x]);const ie=z&&s.leftResolvedPresentation!=="overlay"&&de?e.createElement(Te.PaneResizeContext.Provider,{value:{containerRef:E,cssVarName:"--panel-size",minSize:typeof r=="number"?r:100,maxSize:typeof m=="number"?m:800,defaultSize:f,orientation:"vertical",edge:"end",computeNext:(a,p,b)=>{const S=getComputedStyle(E.current).direction==="rtl",te=a-p;return b+(S?-te:te)},onResize:M,onResizeStart:a=>{const b=E.current?.parentElement;try{b?.style.removeProperty("width")}catch{}N?.(a)},onResizeEnd:a=>{k?.(a),g(a,{reason:"resize"}),_?.save?.(a)},target:"panel",collapsible:!!V,snapPoints:T,snapTolerance:W??8,collapseThreshold:I,requestCollapse:()=>s.setPanelMode("collapsed"),requestToggle:()=>s.togglePane("panel")}},X.length>0?X.map((a,p)=>e.cloneElement(a,{key:a.key??p})):e.createElement(le.PaneHandle,null)):null;return e.createElement("div",{...A,ref:C,className:(0,G.default)("rt-ShellPanel",d),"data-mode":s.panelMode,"data-visible":s.currentBreakpointReady&&(de||s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel")||void 0,"data-peek":s.currentBreakpointReady&&s.leftResolvedPresentation!=="overlay"&&s.peekTarget==="panel"||void 0,style:{...ee,"--panel-size":`${f}px`}},e.createElement("div",{className:"rt-ShellPanelContent","data-visible":de||void 0},ne),ie)}),"Shell.Panel");D.displayName="Shell.Panel",D.Handle=le.PanelHandle;const ue=e.forwardRef(({className:n,...l},d)=>e.createElement("main",{...l,ref:d,className:(0,G.default)("rt-ShellContent",n)}));ue.displayName="Shell.Content",Z(ue,"Shell.Content");const xe=e.forwardRef(({target:n,action:l="toggle",peekOnHover:d,onClick:y,onMouseEnter:u,onMouseLeave:x,children:h,...P},f)=>{const r=(0,c.useShell)(),m=e.useCallback(o=>{switch(y?.(o),r.peekTarget===n&&r.clearPeek(),l){case"toggle":r.togglePane(n);break;case"expand":r.expandPane(n);break;case"collapse":r.collapsePane(n);break}},[r,n,l,y]),z=(()=>{switch(n){case"left":case"rail":return r.leftMode==="collapsed";case"panel":return r.leftMode==="collapsed"||r.panelMode==="collapsed";case"sidebar":return r.sidebarMode==="collapsed";case"inspector":return r.inspectorMode==="collapsed";case"bottom":return r.bottomMode==="collapsed"}})(),V=e.useCallback(o=>{u?.(o),!(!d||!z)&&r.peekPane(n)},[u,d,z,r,n]),U=e.useCallback(o=>{x?.(o),d&&r.peekTarget===n&&r.clearPeek()},[x,d,r,n]);return e.createElement("button",{...P,ref:f,onClick:m,onMouseEnter:V,onMouseLeave:U,"data-shell-trigger":n,"data-shell-action":l},h)});xe.displayName="Shell.Trigger";
2
2
  //# sourceMappingURL=shell.js.map