@wow-two-beta/ui 0.0.29 → 0.0.30

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 (84) hide show
  1. package/dist/actions/backToTopButton/BackToTopButton.d.ts +1 -5
  2. package/dist/actions/backToTopButton/BackToTopButton.d.ts.map +1 -1
  3. package/dist/actions/button/Button.d.ts +16 -2
  4. package/dist/actions/button/Button.d.ts.map +1 -1
  5. package/dist/actions/button/Button.variants.d.ts +1 -17
  6. package/dist/actions/button/Button.variants.d.ts.map +1 -1
  7. package/dist/actions/buttonGroup/ButtonGroup.d.ts +1 -5
  8. package/dist/actions/buttonGroup/ButtonGroup.d.ts.map +1 -1
  9. package/dist/actions/copyButton/CopyButton.d.ts +1 -4
  10. package/dist/actions/copyButton/CopyButton.d.ts.map +1 -1
  11. package/dist/actions/disclosureButton/DisclosureButton.d.ts +1 -5
  12. package/dist/actions/disclosureButton/DisclosureButton.d.ts.map +1 -1
  13. package/dist/actions/fab/FAB.d.ts +1 -4
  14. package/dist/actions/fab/FAB.d.ts.map +1 -1
  15. package/dist/actions/iconButton/IconButton.d.ts +1 -4
  16. package/dist/actions/iconButton/IconButton.d.ts.map +1 -1
  17. package/dist/actions/index.js +4 -4
  18. package/dist/actions/link/Link.d.ts +1 -4
  19. package/dist/actions/link/Link.d.ts.map +1 -1
  20. package/dist/actions/overlayButton/OverlayButton.d.ts +1 -10
  21. package/dist/actions/overlayButton/OverlayButton.d.ts.map +1 -1
  22. package/dist/actions/segmentedControl/SegmentedControl.d.ts +1 -5
  23. package/dist/actions/segmentedControl/SegmentedControl.d.ts.map +1 -1
  24. package/dist/actions/toggleButton/ToggleButton.d.ts +1 -4
  25. package/dist/actions/toggleButton/ToggleButton.d.ts.map +1 -1
  26. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts +1 -5
  27. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts.map +1 -1
  28. package/dist/{chunk-VYPSZ7AL.js → chunk-CKFM2H7O.js} +4 -4
  29. package/dist/{chunk-VYPSZ7AL.js.map → chunk-CKFM2H7O.js.map} +1 -1
  30. package/dist/{chunk-4ZVQMR44.js → chunk-D3CGJMKB.js} +3 -3
  31. package/dist/{chunk-4ZVQMR44.js.map → chunk-D3CGJMKB.js.map} +1 -1
  32. package/dist/{chunk-J4XMD4JP.js → chunk-DWWF7QPK.js} +3 -3
  33. package/dist/{chunk-J4XMD4JP.js.map → chunk-DWWF7QPK.js.map} +1 -1
  34. package/dist/{chunk-SNTCCYUC.js → chunk-FFOGR3WH.js} +6 -6
  35. package/dist/{chunk-SNTCCYUC.js.map → chunk-FFOGR3WH.js.map} +1 -1
  36. package/dist/{chunk-JBYVZSAH.js → chunk-G7K64TW2.js} +3 -3
  37. package/dist/{chunk-JBYVZSAH.js.map → chunk-G7K64TW2.js.map} +1 -1
  38. package/dist/{chunk-QUQONIWF.js → chunk-GWIFNLGS.js} +7 -31
  39. package/dist/chunk-GWIFNLGS.js.map +1 -0
  40. package/dist/{chunk-WIVBNBRJ.js → chunk-HECIUFDS.js} +7 -7
  41. package/dist/{chunk-WIVBNBRJ.js.map → chunk-HECIUFDS.js.map} +1 -1
  42. package/dist/{chunk-7URULVNU.js → chunk-NJDUGXFL.js} +8 -8
  43. package/dist/{chunk-7URULVNU.js.map → chunk-NJDUGXFL.js.map} +1 -1
  44. package/dist/{chunk-76ZIAFWD.js → chunk-NUMFGKPY.js} +21 -3
  45. package/dist/chunk-NUMFGKPY.js.map +1 -0
  46. package/dist/{chunk-EPLT3244.js → chunk-NXVK3VSQ.js} +6 -6
  47. package/dist/{chunk-EPLT3244.js.map → chunk-NXVK3VSQ.js.map} +1 -1
  48. package/dist/{chunk-2LML37JF.js → chunk-VDE5B3IY.js} +5 -5
  49. package/dist/{chunk-2LML37JF.js.map → chunk-VDE5B3IY.js.map} +1 -1
  50. package/dist/{chunk-XOCNAQ36.js → chunk-VZNIJCMD.js} +109 -13
  51. package/dist/chunk-VZNIJCMD.js.map +1 -0
  52. package/dist/{chunk-637KI4TG.js → chunk-XSTHHOAN.js} +6 -6
  53. package/dist/{chunk-637KI4TG.js.map → chunk-XSTHHOAN.js.map} +1 -1
  54. package/dist/{chunk-QMU6QSG6.js → chunk-XTAFNWLG.js} +3 -3
  55. package/dist/{chunk-QMU6QSG6.js.map → chunk-XTAFNWLG.js.map} +1 -1
  56. package/dist/{chunk-B66J6KWM.js → chunk-ZJMDHG7B.js} +31 -19
  57. package/dist/chunk-ZJMDHG7B.js.map +1 -0
  58. package/dist/display/index.js +5 -5
  59. package/dist/feedback/index.js +5 -5
  60. package/dist/forms/index.js +9 -9
  61. package/dist/hooks/index.d.ts +1 -0
  62. package/dist/hooks/index.d.ts.map +1 -1
  63. package/dist/hooks/index.js +1 -1
  64. package/dist/hooks/useDebounceHandler.d.ts +13 -0
  65. package/dist/hooks/useDebounceHandler.d.ts.map +1 -0
  66. package/dist/icons/Spinner.d.ts +1 -8
  67. package/dist/icons/Spinner.d.ts.map +1 -1
  68. package/dist/icons/index.js +2 -2
  69. package/dist/index.js +15 -15
  70. package/dist/layout/index.js +5 -5
  71. package/dist/nav/index.js +6 -6
  72. package/dist/overlays/index.js +5 -5
  73. package/dist/utils/CssExtensions.d.ts +14 -20
  74. package/dist/utils/CssExtensions.d.ts.map +1 -1
  75. package/dist/utils/OptionalExtensions.d.ts +13 -0
  76. package/dist/utils/OptionalExtensions.d.ts.map +1 -0
  77. package/dist/utils/index.d.ts +3 -1
  78. package/dist/utils/index.d.ts.map +1 -1
  79. package/dist/utils/index.js +1 -1
  80. package/package.json +1 -1
  81. package/dist/chunk-76ZIAFWD.js.map +0 -1
  82. package/dist/chunk-B66J6KWM.js.map +0 -1
  83. package/dist/chunk-QUQONIWF.js.map +0 -1
  84. package/dist/chunk-XOCNAQ36.js.map +0 -1
@@ -7,6 +7,7 @@ var hooks_exports = {};
7
7
  __export(hooks_exports, {
8
8
  useClipboard: () => useClipboard,
9
9
  useControlled: () => useControlled,
10
+ useDebounceHandler: () => useDebounceHandler,
10
11
  useDisclosure: () => useDisclosure,
11
12
  useEscape: () => useEscape,
12
13
  useEventListener: () => useEventListener,
@@ -202,7 +203,24 @@ function useClipboard({ resetAfter = 2e3 } = {}) {
202
203
  }, []);
203
204
  return { copied, error, copy, reset };
204
205
  }
206
+ function useDebounceHandler(handler, ms) {
207
+ const lastTimeRef = useRef(0);
208
+ return useCallback(
209
+ (event) => {
210
+ if (ms !== void 0) {
211
+ const now = Date.now();
212
+ if (now - lastTimeRef.current < ms) {
213
+ event.preventDefault();
214
+ return;
215
+ }
216
+ lastTimeRef.current = now;
217
+ }
218
+ handler?.(event);
219
+ },
220
+ [handler, ms]
221
+ );
222
+ }
205
223
 
206
- export { hooks_exports, useClipboard, useControlled, useDisclosure, useEscape, useEventListener, useFocusTrap, useMediaQuery, useOutsideClick, useReducedMotion, useResizeObserver };
207
- //# sourceMappingURL=chunk-76ZIAFWD.js.map
208
- //# sourceMappingURL=chunk-76ZIAFWD.js.map
224
+ export { hooks_exports, useClipboard, useControlled, useDebounceHandler, useDisclosure, useEscape, useEventListener, useFocusTrap, useMediaQuery, useOutsideClick, useReducedMotion, useResizeObserver };
225
+ //# sourceMappingURL=chunk-NUMFGKPY.js.map
226
+ //# sourceMappingURL=chunk-NUMFGKPY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/index.ts","../src/hooks/useControlled.ts","../src/hooks/useDisclosure.ts","../src/hooks/useEventListener.ts","../src/hooks/useOutsideClick.ts","../src/hooks/useEscape.ts","../src/hooks/useFocusTrap.ts","../src/hooks/useResizeObserver.ts","../src/hooks/useMediaQuery.ts","../src/hooks/useReducedMotion.ts","../src/hooks/useClipboard.ts","../src/hooks/useDebounceHandler.ts"],"names":["useState","useCallback","useRef","useEffect"],"mappings":"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","file":"chunk-NUMFGKPY.js","sourcesContent":["export { useId } from './useId';\nexport { useControlled } from './useControlled';\nexport { useDisclosure, type DisclosureControls } from './useDisclosure';\nexport { useEventListener } from './useEventListener';\nexport { useOutsideClick } from './useOutsideClick';\nexport { useEscape } from './useEscape';\nexport { useFocusTrap } from './useFocusTrap';\nexport { useScrollLock } from './useScrollLock';\nexport { useResizeObserver } from './useResizeObserver';\nexport { useMediaQuery } from './useMediaQuery';\nexport { useReducedMotion } from './useReducedMotion';\nexport { useClipboard, type UseClipboardOptions, type ClipboardControls } from './useClipboard';\nexport { useDebounceHandler } from './useDebounceHandler';\n","import { useCallback, useRef, useState } from 'react';\n\ninterface UseControlledOptions<T> {\n controlled: T | undefined;\n default: T;\n onChange?: (value: T) => void;\n}\n\n/**\n * Standard controlled/uncontrolled pattern.\n *\n * - If `controlled` is defined, the component is controlled — internal state is\n * ignored, `setValue` only fires `onChange`.\n * - Otherwise the component owns its state, `setValue` updates it, and `onChange`\n * still fires for consumers that want to observe changes.\n */\nexport function useControlled<T>({\n controlled,\n default: defaultValue,\n onChange,\n}: UseControlledOptions<T>): [T, (value: T) => void] {\n const [uncontrolled, setUncontrolled] = useState<T>(defaultValue);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const isControlled = controlled !== undefined;\n const value = isControlled ? controlled : uncontrolled;\n\n const setValue = useCallback(\n (next: T) => {\n if (!isControlled) setUncontrolled(next);\n onChangeRef.current?.(next);\n },\n [isControlled],\n );\n\n return [value, setValue];\n}\n","import { useCallback, useState } from 'react';\n\nexport interface DisclosureControls {\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n setOpen: (next: boolean) => void;\n}\n\n/**\n * Minimal open/close state with stable callbacks. The standard backbone for\n * Modal, Drawer, Popover, Menu, Accordion, etc. Use `useControlled` underneath\n * when the consumer may also pass a controlled `open` prop.\n */\nexport function useDisclosure(initial = false): DisclosureControls {\n const [isOpen, setIsOpen] = useState(initial);\n const open = useCallback(() => setIsOpen(true), []);\n const close = useCallback(() => setIsOpen(false), []);\n const toggle = useCallback(() => setIsOpen((o) => !o), []);\n return { isOpen, open, close, toggle, setOpen: setIsOpen };\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react';\n\ntype Target = Window | Document | HTMLElement | null;\n\n/**\n * Add an event listener and clean it up automatically. Handler is read from\n * a ref so consumers don't need to memoize it.\n */\nexport function useEventListener<K extends string>(\n event: K,\n handler: (event: Event) => void,\n target: Target = document,\n options?: boolean | AddEventListenerOptions,\n): void {\n const handlerRef = useRef(handler);\n useLayoutEffect(() => {\n handlerRef.current = handler;\n }, [handler]);\n\n useEffect(() => {\n if (!target) return;\n const listener = (e: Event) => handlerRef.current(e);\n target.addEventListener(event, listener, options);\n return () => target.removeEventListener(event, listener, options);\n }, [event, target, options]);\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/**\n * Fire `handler` when the user clicks outside any of the provided refs.\n * Uses `pointerdown` so it fires before focus shifts (avoids losing focus\n * inside an overlay before a click on a trigger registers).\n */\nexport function useOutsideClick(\n refs: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[],\n handler: (event: PointerEvent) => void,\n enabled = true,\n): void {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n if (!enabled) return;\n const refList = Array.isArray(refs) ? refs : [refs];\n\n const onPointerDown = (e: PointerEvent) => {\n const target = e.target as Node | null;\n if (!target) return;\n for (const ref of refList) {\n if (ref.current && ref.current.contains(target)) return;\n }\n handlerRef.current(e);\n };\n\n document.addEventListener('pointerdown', onPointerDown, true);\n return () => document.removeEventListener('pointerdown', onPointerDown, true);\n }, [refs, enabled]);\n}\n","import { useEffect, useRef } from 'react';\n\n/**\n * Fire `handler` when the Escape key is pressed at the document level.\n * For nested overlays, the topmost should call `event.stopPropagation()` in\n * its handler — `DismissableLayer` handles this stack-style.\n */\nexport function useEscape(handler: (event: KeyboardEvent) => void, enabled = true): void {\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n if (!enabled) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') handlerRef.current(e);\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [enabled]);\n}\n","import { useEffect, type RefObject } from 'react';\n\nconst FOCUSABLE_SELECTOR = [\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 '[contenteditable=\"true\"]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)).filter(\n (el) => !el.hasAttribute('aria-hidden') && el.offsetParent !== null,\n );\n}\n\n/**\n * Trap Tab / Shift+Tab focus inside the referenced element. On mount, focuses\n * the first focusable child (unless already focused inside). On unmount,\n * returns focus to the element that had it before mounting.\n *\n * For richer behavior (sentinels, nested traps), wrap `FocusScope` instead —\n * this hook is the lower primitive.\n */\nexport function useFocusTrap(ref: RefObject<HTMLElement | null>, enabled = true): void {\n useEffect(() => {\n if (!enabled || !ref.current) return;\n const container = ref.current;\n const previouslyFocused = document.activeElement as HTMLElement | null;\n\n const focusables = getFocusable(container);\n if (focusables.length > 0 && !container.contains(document.activeElement)) {\n focusables[0]?.focus();\n } else if (focusables.length === 0) {\n container.tabIndex = -1;\n container.focus();\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n const items = getFocusable(container);\n if (items.length === 0) {\n e.preventDefault();\n return;\n }\n const first = items[0];\n const last = items[items.length - 1];\n if (!first || !last) return;\n const active = document.activeElement;\n if (e.shiftKey && active === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n container.addEventListener('keydown', onKeyDown);\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n previouslyFocused?.focus?.();\n };\n }, [ref, enabled]);\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/**\n * Run `callback` whenever the referenced element's size changes. Returns\n * synchronously after layout, before paint. Cleans up automatically.\n */\nexport function useResizeObserver<T extends HTMLElement>(\n ref: RefObject<T | null>,\n callback: (entry: ResizeObserverEntry) => void,\n enabled = true,\n): void {\n const callbackRef = useRef(callback);\n callbackRef.current = callback;\n\n useEffect(() => {\n if (!enabled || !ref.current || typeof ResizeObserver === 'undefined') return;\n const element = ref.current;\n const observer = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) callbackRef.current(entry);\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref, enabled]);\n}\n","import { useEffect, useState } from 'react';\n\n/**\n * Reactively follow a CSS media query. Pass a query string like\n * `'(min-width: 768px)'` or `'(prefers-reduced-motion: reduce)'`.\n */\nexport function useMediaQuery(query: string): boolean {\n const [matches, setMatches] = useState(() => window.matchMedia(query).matches);\n\n useEffect(() => {\n const mql = window.matchMedia(query);\n setMatches(mql.matches);\n const onChange = (e: MediaQueryListEvent) => setMatches(e.matches);\n mql.addEventListener('change', onChange);\n return () => mql.removeEventListener('change', onChange);\n }, [query]);\n\n return matches;\n}\n","import { useMediaQuery } from './useMediaQuery';\n\n/**\n * Returns `true` when the user has requested reduced motion via OS settings.\n * Components should short-circuit looping/transitional animations to a\n * static final state when this is `true`.\n */\nexport function useReducedMotion(): boolean {\n return useMediaQuery('(prefers-reduced-motion: reduce)');\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport interface UseClipboardOptions {\n /** Reset `copied` back to false after this many ms. Default 2000. Set 0 to keep state until explicitly reset. */\n resetAfter?: number;\n}\n\nexport interface ClipboardControls {\n /** True for `resetAfter` ms after a successful copy. */\n copied: boolean;\n /** Last error from `navigator.clipboard.writeText`, if any. */\n error: Error | null;\n /** Write `text` to the system clipboard. Returns the promise. */\n copy: (text: string) => Promise<void>;\n /** Force-clear the `copied` flag. */\n reset: () => void;\n}\n\n/**\n * Wraps `navigator.clipboard.writeText` with a transient `copied` flag for\n * post-action UI (icon swap, \"Copied!\" tooltip). Pass `resetAfter: 0` to\n * keep `copied` true until you call `reset()`.\n */\nexport function useClipboard({ resetAfter = 2000 }: UseClipboardOptions = {}): ClipboardControls {\n const [copied, setCopied] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const reset = useCallback(() => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n setCopied(false);\n setError(null);\n }, []);\n\n const copy = useCallback(\n async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setError(null);\n setCopied(true);\n if (resetAfter > 0) {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setCopied(false), resetAfter);\n }\n } catch (err) {\n setCopied(false);\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n },\n [resetAfter],\n );\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return { copied, error, copy, reset };\n}\n","import { useCallback, useRef } from 'react';\nimport type { SyntheticEvent } from 'react';\n\n/**\n * Throttle a React event handler. First call in a `ms` window fires; subsequent\n * within the window are swallowed via `event.preventDefault()`. When `ms` is\n * `undefined`, the handler passes through unchanged. Use to prevent rapid-fire\n * gestures (double-clicks, double-submits, repeated touches) without wiring\n * timer state in the consumer.\n *\n * Functionally a *throttle* (first wins). The `Debounce` naming is kept for\n * vocabulary consistency with the `debounceMs` props on consuming components.\n */\nexport function useDebounceHandler<E extends SyntheticEvent>(\n handler: ((event: E) => void) | undefined,\n ms: number | undefined,\n): (event: E) => void {\n const lastTimeRef = useRef(0);\n return useCallback(\n (event: E) => {\n if (ms !== undefined) {\n const now = Date.now();\n if (now - lastTimeRef.current < ms) {\n event.preventDefault();\n return;\n }\n lastTimeRef.current = now;\n }\n handler?.(event);\n },\n [handler, ms],\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { Drawer, DrawerContent } from './chunk-QMU6QSG6.js';
2
- import { Spinner } from './chunk-JBYVZSAH.js';
3
- import { useControlled, useMediaQuery } from './chunk-76ZIAFWD.js';
4
- import { tv } from './chunk-B66J6KWM.js';
1
+ import { Drawer, DrawerContent } from './chunk-XTAFNWLG.js';
2
+ import { Spinner } from './chunk-G7K64TW2.js';
3
+ import { useControlled, useMediaQuery } from './chunk-NUMFGKPY.js';
4
+ import { tv } from './chunk-ZJMDHG7B.js';
5
5
  import { Announce } from './chunk-BMABNEZX.js';
6
6
  import { cn } from './chunk-LDRFQG44.js';
7
7
  import { forwardRef, createContext, useRef, useEffect, useCallback, useMemo, Children, isValidElement, useState, useContext } from 'react';
@@ -901,5 +901,5 @@ function useAppShell() {
901
901
  }
902
902
 
903
903
  export { AppShell, AppShellAside, AppShellContent, AppShellFooter, AppShellHeader, AppShellMain, AppShellSidebar, AspectRatio, Box, Center, Cluster, Container, Flex, Frame, Grid, HStack, Inline, PullToRefresh, ResizablePanel, ResizablePanels, ResizableSeparator, ScrollArea, Spacer, Stack, TwoColumn, VStack, containerVariants, gridVariants, stackVariants, useAppShell };
904
- //# sourceMappingURL=chunk-EPLT3244.js.map
905
- //# sourceMappingURL=chunk-EPLT3244.js.map
904
+ //# sourceMappingURL=chunk-NXVK3VSQ.js.map
905
+ //# sourceMappingURL=chunk-NXVK3VSQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/layout/box/Box.tsx","../src/layout/stack/Stack.variants.ts","../src/layout/stack/Stack.tsx","../src/layout/hStack/HStack.tsx","../src/layout/vStack/VStack.tsx","../src/layout/grid/Grid.variants.ts","../src/layout/grid/Grid.tsx","../src/layout/container/Container.variants.ts","../src/layout/container/Container.tsx","../src/layout/flex/Flex.tsx","../src/layout/aspectRatio/AspectRatio.tsx","../src/layout/spacer/Spacer.tsx","../src/layout/center/Center.tsx","../src/layout/scrollArea/ScrollArea.tsx","../src/layout/inline/Inline.tsx","../src/layout/cluster/Cluster.tsx","../src/layout/frame/Frame.tsx","../src/layout/twoColumn/TwoColumn.tsx","../src/layout/resizablePanels/ResizablePanels.tsx","../src/layout/pullToRefresh/PullToRefresh.tsx","../src/layout/appShell/AppShell.tsx"],"names":["forwardRef","jsx","GAP","ResizablePanels","ResizablePanel","ResizableSeparator","PullToRefresh","useRef","useState","reached","jsxs","createContext","useContext","AppShell","useMemo","AppShellHeader","AppShellSidebar","AppShellMain","AppShellContent","AppShellAside","AppShellFooter"],"mappings":"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","file":"chunk-EPLT3244.js","sourcesContent":["import { forwardRef, type ComponentPropsWithoutRef, type ElementType, type Ref } from 'react';\nimport { cn } from '../../utils';\n\nexport interface BoxProps extends Omit<ComponentPropsWithoutRef<'div'>, 'as'> {\n /** HTML element to render. Default `div`. */\n as?: ElementType;\n}\n\n/**\n * The lowest-level layout primitive. Renders any element (default `div`)\n * with className passthrough. Use as a styling shell when no other layout\n * atom fits.\n */\nexport const Box = forwardRef<HTMLElement, BoxProps>(\n ({ as: Component = 'div', className, ...props }, ref) => (\n <Component ref={ref as Ref<HTMLElement>} className={cn(className)} {...props} />\n ),\n);\nBox.displayName = 'Box';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const stackVariants = tv({\n base: 'flex',\n variants: {\n direction: {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n },\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n gap: {\n '0': 'gap-0',\n '1': 'gap-1',\n '2': 'gap-2',\n '3': 'gap-3',\n '4': 'gap-4',\n '5': 'gap-5',\n '6': 'gap-6',\n '8': 'gap-8',\n '10': 'gap-10',\n '12': 'gap-12',\n },\n wrap: {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n },\n },\n defaultVariants: {\n direction: 'column',\n gap: '4',\n },\n});\n\nexport type StackVariants = VariantProps<typeof stackVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { stackVariants, type StackVariants } from './Stack.variants';\n\nexport interface StackProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n StackVariants {\n as?: ElementType;\n}\n\n/**\n * Vertical (default) or horizontal flex container with gap and alignment\n * variants. For row preset use `HStack`, for column use `VStack`.\n */\nexport const Stack = forwardRef<HTMLElement, StackProps>(\n ({ as: Component = 'div', className, direction, align, justify, gap, wrap, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(stackVariants({ direction, align, justify, gap, wrap }), className)}\n {...props}\n />\n ),\n);\nStack.displayName = 'Stack';\n","import { forwardRef, type Ref } from 'react';\nimport { Stack, type StackProps } from '../stack/Stack';\n\nexport type HStackProps = Omit<StackProps, 'direction'>;\n\n/** Stack preset: `direction=\"row\"`. */\nexport const HStack = forwardRef<HTMLElement, HStackProps>((props, ref) => (\n <Stack ref={ref as Ref<HTMLElement>} direction=\"row\" {...props} />\n));\nHStack.displayName = 'HStack';\n","import { forwardRef, type Ref } from 'react';\nimport { Stack, type StackProps } from '../stack/Stack';\n\nexport type VStackProps = Omit<StackProps, 'direction'>;\n\n/** Stack preset: `direction=\"column\"` (default). Provided for symmetry with HStack. */\nexport const VStack = forwardRef<HTMLElement, VStackProps>((props, ref) => (\n <Stack ref={ref as Ref<HTMLElement>} direction=\"column\" {...props} />\n));\nVStack.displayName = 'VStack';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const gridVariants = tv({\n base: 'grid',\n variants: {\n columns: {\n '1': 'grid-cols-1',\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n '5': 'grid-cols-5',\n '6': 'grid-cols-6',\n '8': 'grid-cols-8',\n '12': 'grid-cols-12',\n },\n gap: {\n '0': 'gap-0',\n '1': 'gap-1',\n '2': 'gap-2',\n '3': 'gap-3',\n '4': 'gap-4',\n '5': 'gap-5',\n '6': 'gap-6',\n '8': 'gap-8',\n '10': 'gap-10',\n '12': 'gap-12',\n },\n },\n defaultVariants: {\n columns: '2',\n gap: '4',\n },\n});\n\nexport type GridVariants = VariantProps<typeof gridVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { gridVariants, type GridVariants } from './Grid.variants';\n\nexport interface GridProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n GridVariants {\n as?: ElementType;\n}\n\n/**\n * CSS grid container with column and gap variants. For non-uniform tracks\n * pass an explicit `style={{ gridTemplateColumns }}` — the variant covers\n * the equal-column case.\n */\nexport const Grid = forwardRef<HTMLElement, GridProps>(\n ({ as: Component = 'div', className, columns, gap, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(gridVariants({ columns, gap }), className)}\n {...props}\n />\n ),\n);\nGrid.displayName = 'Grid';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const containerVariants = tv({\n base: 'mx-auto w-full px-4',\n variants: {\n size: {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n full: 'max-w-full',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport type ContainerVariants = VariantProps<typeof containerVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { containerVariants, type ContainerVariants } from './Container.variants';\n\nexport interface ContainerProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n ContainerVariants {\n as?: ElementType;\n}\n\n/**\n * Centered max-width wrapper with horizontal padding. Use at page-level to\n * constrain content width.\n */\nexport const Container = forwardRef<HTMLElement, ContainerProps>(\n ({ as: Component = 'div', className, size, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(containerVariants({ size }), className)}\n {...props}\n />\n ),\n);\nContainer.displayName = 'Container';\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\n\nexport interface FlexProps extends Omit<ComponentPropsWithoutRef<'div'>, 'as'> {\n as?: ElementType;\n}\n\n/**\n * Bare flex container — no opinions on direction, gap, or alignment.\n * Use for one-off flex layouts that don't fit `Stack`'s variant matrix.\n */\nexport const Flex = forwardRef<HTMLElement, FlexProps>(\n ({ as: Component = 'div', className, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('flex', className)}\n {...props}\n />\n ),\n);\nFlex.displayName = 'Flex';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface AspectRatioProps extends ComponentPropsWithoutRef<'div'> {\n /** Numeric ratio (width/height). Default 1 (square). */\n ratio?: number;\n}\n\n/**\n * Constrain children to an aspect ratio (width / height). Children are\n * absolutely positioned and stretched to fill — typically pass a single\n * `<img>`, `<video>`, or `<iframe>` with `className=\"absolute inset-0 w-full h-full\"`.\n */\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n ({ ratio = 1, className, style, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('relative w-full', className)}\n style={{ aspectRatio: `${ratio}`, ...style }}\n {...props}\n >\n {children}\n </div>\n ),\n);\nAspectRatio.displayName = 'AspectRatio';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface SpacerProps extends ComponentPropsWithoutRef<'div'> {\n /** Optional explicit size (CSS length). When inside a flex/grid parent,\n * the default `flex: 1` already pushes siblings apart. */\n size?: number | string;\n axis?: 'horizontal' | 'vertical';\n}\n\n/**\n * A flexible empty box. In a flex parent it expands (`flex: 1`) and pushes\n * siblings to opposite ends. Pass `size` for a fixed gap.\n */\nexport const Spacer = forwardRef<HTMLDivElement, SpacerProps>(\n ({ size, axis = 'horizontal', className, style, ...props }, ref) => {\n const fixed: React.CSSProperties | undefined =\n size !== undefined\n ? axis === 'horizontal'\n ? { width: typeof size === 'number' ? `${size}px` : size, flexShrink: 0 }\n : { height: typeof size === 'number' ? `${size}px` : size, flexShrink: 0 }\n : undefined;\n\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(size === undefined && 'flex-1', className)}\n style={{ ...fixed, ...style }}\n {...props}\n />\n );\n },\n);\nSpacer.displayName = 'Spacer';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type CenterProps = ComponentPropsWithoutRef<'div'>;\n\n/** Flex shorthand that centers its children both axes. */\nexport const Center = forwardRef<HTMLDivElement, CenterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center justify-center', className)}\n {...props}\n />\n ),\n);\nCenter.displayName = 'Center';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ScrollAreaProps extends ComponentPropsWithoutRef<'div'> {\n axis?: 'vertical' | 'horizontal' | 'both';\n}\n\n/**\n * Native scrollable container with stable visuals. For custom-styled\n * scrollbars (track + thumb separately animated) use the L5 ScrollArea\n * organism. This atom exists for the common case.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ axis = 'vertical', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'relative',\n axis === 'vertical' && 'overflow-y-auto overflow-x-hidden',\n axis === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n axis === 'both' && 'overflow-auto',\n className,\n )}\n {...props}\n />\n ),\n);\nScrollArea.displayName = 'ScrollArea';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InlineProps extends ComponentPropsWithoutRef<'div'> {\n /** Gap between children (Tailwind spacing). Default `2`. */\n gap?: '0' | '1' | '2' | '3' | '4' | '6' | '8';\n /** Vertical alignment. Default `center`. */\n align?: 'start' | 'center' | 'end' | 'baseline';\n}\n\nconst GAP: Record<NonNullable<InlineProps['gap']>, string> = {\n '0': 'gap-0', '1': 'gap-1', '2': 'gap-2', '3': 'gap-3', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8',\n};\nconst ALIGN: Record<NonNullable<InlineProps['align']>, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n baseline: 'items-baseline',\n};\n\n/**\n * Wrapping horizontal row with consistent gap. Use for chips/tag rows,\n * inline button groups, breadcrumb-like sequences.\n */\nexport const Inline = forwardRef<HTMLDivElement, InlineProps>(\n ({ gap = '2', align = 'center', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap', GAP[gap], ALIGN[align], className)}\n {...props}\n />\n ),\n);\nInline.displayName = 'Inline';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ClusterProps extends ComponentPropsWithoutRef<'div'> {\n /** Gap between children. Default `4`. */\n gap?: '2' | '3' | '4' | '6' | '8';\n /** Justify on cross axis. Default `center`. */\n justify?: 'start' | 'center' | 'end';\n}\n\nconst GAP: Record<NonNullable<ClusterProps['gap']>, string> = {\n '2': 'gap-2', '3': 'gap-3', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8',\n};\nconst JUSTIFY: Record<NonNullable<ClusterProps['justify']>, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n};\n\n/**\n * Centered wrapping row — for auth-page action clusters, hero CTAs, footer\n * link groups. `Inline` left-aligns; `Cluster` centers by default.\n */\nexport const Cluster = forwardRef<HTMLDivElement, ClusterProps>(\n ({ gap = '4', justify = 'center', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center', GAP[gap], JUSTIFY[justify], className)}\n {...props}\n />\n ),\n);\nCluster.displayName = 'Cluster';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface FrameProps extends ComponentPropsWithoutRef<'div'> {\n /** Padding. Default `4`. */\n padding?: '0' | '2' | '3' | '4' | '6' | '8';\n /** Border radius. Default `md`. */\n radius?: 'none' | 'sm' | 'md' | 'lg';\n /** Surface background — `card` (raised) or `muted` (recessed). Default `card`. */\n surface?: 'card' | 'muted' | 'transparent';\n /** Show the border. Default `true`. */\n bordered?: boolean;\n}\n\nconst PADDING: Record<NonNullable<FrameProps['padding']>, string> = {\n '0': '', '2': 'p-2', '3': 'p-3', '4': 'p-4', '6': 'p-6', '8': 'p-8',\n};\nconst RADIUS: Record<NonNullable<FrameProps['radius']>, string> = {\n none: '', sm: 'rounded-sm', md: 'rounded-md', lg: 'rounded-lg',\n};\nconst SURFACE: Record<NonNullable<FrameProps['surface']>, string> = {\n card: 'bg-card text-card-foreground',\n muted: 'bg-muted text-foreground',\n transparent: '',\n};\n\n/**\n * Bordered shell with padding + radius — `Card` without slot semantics.\n * Use when you want the visual but not the structured Header/Body/Footer.\n */\nexport const Frame = forwardRef<HTMLDivElement, FrameProps>(\n ({ padding = '4', radius = 'md', surface = 'card', bordered = true, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n SURFACE[surface],\n PADDING[padding],\n RADIUS[radius],\n bordered && 'border border-border',\n className,\n )}\n {...props}\n />\n ),\n);\nFrame.displayName = 'Frame';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface TwoColumnProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Sidebar / aside content. */\n aside: ReactNode;\n /** Main content. */\n children: ReactNode;\n /** Aside width — Tailwind class string (e.g. `w-64`). Default `w-64`. */\n asideWidth?: string;\n /** Side the aside sits on. Default `left`. */\n asideSide?: 'left' | 'right';\n /** Gap between aside and main. Default `6`. */\n gap?: '0' | '4' | '6' | '8' | '10';\n}\n\nconst GAP: Record<NonNullable<TwoColumnProps['gap']>, string> = {\n '0': 'gap-0', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8', '10': 'gap-10',\n};\n\n/**\n * Two-pane layout — fixed-width aside + flexible main. Sidebar+content,\n * filter+results, table-of-contents+article patterns.\n */\nexport const TwoColumn = forwardRef<HTMLDivElement, TwoColumnProps>(\n (\n { aside, children, asideWidth = 'w-64', asideSide = 'left', gap = '6', className, ...props },\n ref,\n ) => (\n <div\n ref={ref}\n className={cn(\n 'flex w-full',\n asideSide === 'right' && 'flex-row-reverse',\n GAP[gap],\n className,\n )}\n {...props}\n >\n <aside className={cn('shrink-0', asideWidth)}>{aside}</aside>\n <main className=\"min-w-0 flex-1\">{children}</main>\n </div>\n ),\n);\nTwoColumn.displayName = 'TwoColumn';\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\n\ninterface PanelInfo {\n index: number;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n}\n\ninterface ResizableContextValue {\n orientation: 'horizontal' | 'vertical';\n sizes: number[];\n panels: React.MutableRefObject<PanelInfo[]>;\n containerRef: React.MutableRefObject<HTMLDivElement | null>;\n beginDrag: (separatorIndex: number, event: ReactMouseEvent) => void;\n nudge: (separatorIndex: number, deltaPct: number) => void;\n resetPair: (separatorIndex: number) => void;\n}\n\nconst ResizableContext = createContext<ResizableContextValue | null>(null);\n\nfunction useResizableContext() {\n const ctx = useContext(ResizableContext);\n if (!ctx) throw new Error('ResizablePanels.* must be used inside <ResizablePanels>');\n return ctx;\n}\n\nexport interface ResizablePanelsProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n defaultSizes?: number[];\n sizes?: number[];\n onSizesChange?: (sizes: number[]) => void;\n children: ReactNode;\n}\n\nfunction countPanels(children: ReactNode): number {\n let n = 0;\n Children.forEach(children, (child) => {\n if (isValidElement(child) && (child.type as { displayName?: string }).displayName === 'ResizablePanel') {\n n += 1;\n }\n });\n return n;\n}\n\nexport const ResizablePanels = forwardRef<HTMLDivElement, ResizablePanelsProps>(\n function ResizablePanels(\n { orientation = 'horizontal', defaultSizes, sizes: sizesProp, onSizesChange, className, children, ...rest },\n forwardedRef,\n ) {\n const panels = useRef<PanelInfo[]>([]);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const panelCount = countPanels(children);\n\n const initialSizes =\n defaultSizes && defaultSizes.length === panelCount\n ? defaultSizes\n : Array(panelCount).fill(100 / Math.max(panelCount, 1));\n\n const [sizes, setSizes] = useControlled<number[]>({\n controlled: sizesProp,\n default: initialSizes,\n onChange: onSizesChange,\n });\n\n // If the panel count changes (children added/removed), reset to equal sizes.\n useEffect(() => {\n if (sizes.length === panelCount) return;\n setSizes(Array(panelCount).fill(100 / Math.max(panelCount, 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panelCount]);\n\n const applyDelta = useCallback(\n (separatorIndex: number, deltaPct: number) => {\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n const next = sizes.slice();\n let nextA = next[a]! + deltaPct;\n let nextB = next[b]! - deltaPct;\n\n // Clamp by min/max — adjust deltaPct on overshoot.\n if (nextA < aInfo.minSize) {\n const adj = aInfo.minSize - nextA;\n nextA += adj;\n nextB -= adj;\n }\n if (nextB < bInfo.minSize) {\n const adj = bInfo.minSize - nextB;\n nextB += adj;\n nextA -= adj;\n }\n if (nextA > aInfo.maxSize) {\n const adj = nextA - aInfo.maxSize;\n nextA -= adj;\n nextB += adj;\n }\n if (nextB > bInfo.maxSize) {\n const adj = nextB - bInfo.maxSize;\n nextB -= adj;\n nextA += adj;\n }\n\n next[a] = nextA;\n next[b] = nextB;\n setSizes(next);\n },\n [sizes, setSizes],\n );\n\n const beginDrag = useCallback(\n (separatorIndex: number, event: ReactMouseEvent) => {\n const container = containerRef.current;\n if (!container) return;\n const startX = event.clientX;\n const startY = event.clientY;\n const rect = container.getBoundingClientRect();\n const total = orientation === 'horizontal' ? rect.width : rect.height;\n if (total === 0) return;\n\n const startSizes = sizes.slice();\n\n const onMove = (e: MouseEvent) => {\n const deltaPx =\n orientation === 'horizontal' ? e.clientX - startX : e.clientY - startY;\n const deltaPct = (deltaPx / total) * 100;\n // Recompute against the start state, not the live state, to prevent drift.\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n let nextA = startSizes[a]! + deltaPct;\n let nextB = startSizes[b]! - deltaPct;\n nextA = Math.max(aInfo.minSize, Math.min(aInfo.maxSize, nextA));\n nextB = Math.max(bInfo.minSize, Math.min(bInfo.maxSize, nextB));\n // Restore the locked total after clamping.\n const sum = nextA + nextB;\n const startSum = startSizes[a]! + startSizes[b]!;\n if (sum !== startSum) {\n const diff = startSum - sum;\n // Push surplus onto whichever side has slack.\n if (nextA + diff <= aInfo.maxSize && nextA + diff >= aInfo.minSize) {\n nextA = nextA + diff;\n } else {\n nextB = nextB + diff;\n }\n }\n const next = startSizes.slice();\n next[a] = nextA;\n next[b] = nextB;\n setSizes(next);\n };\n\n const onUp = () => {\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n\n document.body.style.cursor = orientation === 'horizontal' ? 'col-resize' : 'row-resize';\n document.body.style.userSelect = 'none';\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n },\n [orientation, sizes, setSizes],\n );\n\n const resetPair = useCallback(\n (separatorIndex: number) => {\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n const next = sizes.slice();\n const total = next[a]! + next[b]!;\n next[a] = (total * aInfo.defaultSize) / (aInfo.defaultSize + bInfo.defaultSize);\n next[b] = total - next[a]!;\n setSizes(next);\n },\n [sizes, setSizes],\n );\n\n const ctx = useMemo<ResizableContextValue>(\n () => ({\n orientation,\n sizes,\n panels,\n containerRef,\n beginDrag,\n nudge: applyDelta,\n resetPair,\n }),\n [orientation, sizes, beginDrag, applyDelta, resetPair],\n );\n\n // Render children with separator indices threaded through.\n let panelIdx = 0;\n let sepIdx = 0;\n const elements = Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const displayName = (child.type as { displayName?: string }).displayName;\n if (displayName === 'ResizablePanel') {\n const node = (\n <ResizablePanelInner\n key={`p-${panelIdx}`}\n index={panelIdx}\n {...(child.props as ResizablePanelProps)}\n />\n );\n panelIdx += 1;\n return node;\n }\n if (displayName === 'ResizableSeparator') {\n const node = (\n <ResizableSeparatorInner\n key={`s-${sepIdx}`}\n index={sepIdx}\n {...(child.props as ResizableSeparatorProps)}\n />\n );\n sepIdx += 1;\n return node;\n }\n return child;\n });\n\n return (\n <ResizableContext.Provider value={ctx}>\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n data-orientation={orientation}\n className={cn(\n 'flex h-full w-full',\n orientation === 'horizontal' ? 'flex-row' : 'flex-col',\n className,\n )}\n {...rest}\n >\n {elements}\n </div>\n </ResizableContext.Provider>\n );\n },\n);\n\nexport interface ResizablePanelProps extends HTMLAttributes<HTMLDivElement> {\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n children?: ReactNode;\n}\n\ninterface ResizablePanelInnerProps extends ResizablePanelProps {\n index: number;\n}\n\nfunction ResizablePanelInner({\n index,\n defaultSize = 100,\n minSize = 0,\n maxSize = 100,\n className,\n children,\n ...rest\n}: ResizablePanelInnerProps) {\n const ctx = useResizableContext();\n\n // Register panel info before first paint so beginDrag can reference it.\n if (!ctx.panels.current[index]) {\n ctx.panels.current[index] = { index, defaultSize, minSize, maxSize };\n } else {\n ctx.panels.current[index] = { index, defaultSize, minSize, maxSize };\n }\n\n const size = ctx.sizes[index] ?? defaultSize;\n\n return (\n <div\n data-panel-index={index}\n className={cn('overflow-auto', className)}\n style={\n ctx.orientation === 'horizontal'\n ? { width: `${size}%`, height: '100%' }\n : { height: `${size}%`, width: '100%' }\n }\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n// Marker component — ResizablePanels swaps each <ResizablePanel> for its inner\n// impl via Children.map. The wrapper exists only as a typed slot.\nexport const ResizablePanel = forwardRef<HTMLDivElement, ResizablePanelProps>(\n function ResizablePanel() {\n return null;\n },\n);\nResizablePanel.displayName = 'ResizablePanel';\n\nexport interface ResizableSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n}\n\ninterface ResizableSeparatorInnerProps extends ResizableSeparatorProps {\n index: number;\n}\n\nfunction ResizableSeparatorInner({\n index,\n disabled,\n className,\n onKeyDown,\n onDoubleClick,\n ...rest\n}: ResizableSeparatorInnerProps) {\n const ctx = useResizableContext();\n const [dragging, setDragging] = useState(false);\n\n const handleMouseDown = (e: ReactMouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.button !== 0) return;\n e.preventDefault();\n setDragging(true);\n ctx.beginDrag(index, e);\n const onUp = () => {\n setDragging(false);\n window.removeEventListener('mouseup', onUp);\n };\n window.addEventListener('mouseup', onUp);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n const step = e.shiftKey ? 10 : 1;\n if (ctx.orientation === 'horizontal') {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n ctx.nudge(index, -step);\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n ctx.nudge(index, step);\n }\n } else {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n ctx.nudge(index, -step);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n ctx.nudge(index, step);\n }\n }\n };\n\n const ariaValueNow = ctx.sizes[index + 1] ?? 50;\n const nextPanel = ctx.panels.current[index + 1];\n\n return (\n <div\n role=\"separator\"\n aria-orientation={ctx.orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(ariaValueNow)}\n aria-valuemin={nextPanel?.minSize ?? 0}\n aria-valuemax={nextPanel?.maxSize ?? 100}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n data-dragging={dragging || undefined}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onDoubleClick={(e) => {\n onDoubleClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.resetPair(index);\n }}\n className={cn(\n 'flex shrink-0 items-center justify-center bg-border transition-colors',\n ctx.orientation === 'horizontal'\n ? 'w-1 cursor-col-resize hover:bg-border-strong data-[dragging]:bg-primary'\n : 'h-1 cursor-row-resize hover:bg-border-strong data-[dragging]:bg-primary',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled && 'cursor-default opacity-50 hover:bg-border',\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport const ResizableSeparator = forwardRef<HTMLDivElement, ResizableSeparatorProps>(\n function ResizableSeparator() {\n return null;\n },\n);\nResizableSeparator.displayName = 'ResizableSeparator';\n\ntype ResizablePanelsComponent = typeof ResizablePanels & {\n Panel: typeof ResizablePanel;\n Separator: typeof ResizableSeparator;\n};\n\n(ResizablePanels as ResizablePanelsComponent).Panel = ResizablePanel;\n(ResizablePanels as ResizablePanelsComponent).Separator = ResizableSeparator;\n\nexport default ResizablePanels as ResizablePanelsComponent;\n","import {\n forwardRef,\n useRef,\n useState,\n type HTMLAttributes,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { Announce } from '../../primitives';\nimport { Spinner } from '../../feedback/spinner';\n\nexport interface PullToRefreshProps extends HTMLAttributes<HTMLDivElement> {\n onRefresh: () => Promise<void> | void;\n threshold?: number;\n maxPull?: number;\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * Pull-to-refresh wrapper. Listen to pointer drag at scrollTop=0; once past\n * `threshold`, fire `onRefresh`. Visual indicator: spinner that scales in as\n * the user pulls.\n */\nexport const PullToRefresh = forwardRef<HTMLDivElement, PullToRefreshProps>(\n function PullToRefresh(\n { onRefresh, threshold = 60, maxPull = 120, disabled, className, children, ...rest },\n forwardedRef,\n ) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const startYRef = useRef<number | null>(null);\n const [pull, setPull] = useState(0);\n const [refreshing, setRefreshing] = useState(false);\n\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || refreshing) return;\n const el = containerRef.current;\n if (!el || el.scrollTop > 0) return;\n startYRef.current = e.clientY;\n };\n\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n const dy = e.clientY - startYRef.current;\n if (dy < 0) {\n setPull(0);\n return;\n }\n // Resistance: sub-linear growth past threshold.\n const eased = dy < threshold ? dy : threshold + (dy - threshold) * 0.4;\n setPull(Math.min(maxPull, eased));\n };\n\n const onPointerUp = async () => {\n if (startYRef.current == null) return;\n const reached = pull >= threshold;\n startYRef.current = null;\n if (reached) {\n setRefreshing(true);\n setPull(threshold);\n try {\n await onRefresh();\n } finally {\n setRefreshing(false);\n setPull(0);\n }\n } else {\n setPull(0);\n }\n };\n\n const reached = pull >= threshold;\n\n return (\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n className={cn('relative h-full overflow-y-auto', className)}\n style={{ touchAction: 'pan-y' }}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-x-0 top-0 z-10 flex items-center justify-center\"\n style={{\n height: pull,\n transition: startYRef.current == null ? 'height 200ms ease-out' : 'none',\n }}\n >\n {pull > 8 && (\n <div\n className={cn(\n 'transition-opacity',\n refreshing ? 'opacity-100' : reached ? 'opacity-100' : 'opacity-60',\n )}\n style={{ transform: `scale(${Math.min(1, pull / threshold)})` }}\n >\n <Spinner size=\"md\" tone={reached ? 'brand' : 'default'} />\n </div>\n )}\n </div>\n <div\n style={{\n transform: `translateY(${pull}px)`,\n transition: startYRef.current == null ? 'transform 200ms ease-out' : 'none',\n }}\n >\n {children}\n </div>\n <Announce politeness=\"polite\">\n {refreshing ? 'Refreshing' : ''}\n </Announce>\n </div>\n );\n },\n);\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled, useMediaQuery } from '../../hooks';\nimport { Drawer, DrawerContent } from '../../overlays/drawer';\n\ntype Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nconst BREAKPOINT_PX: Record<Breakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\ninterface AppShellContextValue {\n sidebarWidth: string;\n asideWidth: string;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n isSidebarCollapsed: boolean;\n isAsideHidden: boolean;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nfunction useAppShellContext() {\n const ctx = useContext(AppShellContext);\n if (!ctx) throw new Error('AppShell.* must be used inside <AppShell>');\n return ctx;\n}\n\nexport interface AppShellProps extends HTMLAttributes<HTMLDivElement> {\n sidebarWidth?: string;\n asideWidth?: string;\n sidebarBreakpoint?: Breakpoint;\n asideBreakpoint?: Breakpoint;\n sidebarOpen?: boolean;\n defaultSidebarOpen?: boolean;\n onSidebarOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}\n\n/**\n * Top-level page frame. Children: `AppShell.Header / Sidebar / Main / Aside /\n * Footer`. CSS-grid layout; sidebar collapses to a Drawer below\n * `sidebarBreakpoint`.\n */\nexport const AppShell = forwardRef<HTMLDivElement, AppShellProps>(function AppShell(\n {\n sidebarWidth = '240px',\n asideWidth = '280px',\n sidebarBreakpoint = 'lg',\n asideBreakpoint = 'xl',\n sidebarOpen: sidebarOpenProp,\n defaultSidebarOpen = false,\n onSidebarOpenChange,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [sidebarOpen, setSidebarOpen] = useControlled({\n controlled: sidebarOpenProp,\n default: defaultSidebarOpen,\n onChange: onSidebarOpenChange,\n });\n\n const isSidebarCollapsed = !useMediaQuery(`(min-width: ${BREAKPOINT_PX[sidebarBreakpoint]}px)`);\n const isAsideHidden = !useMediaQuery(`(min-width: ${BREAKPOINT_PX[asideBreakpoint]}px)`);\n\n const ctx = useMemo<AppShellContextValue>(\n () => ({\n sidebarWidth,\n asideWidth,\n sidebarOpen,\n setSidebarOpen,\n isSidebarCollapsed,\n isAsideHidden,\n }),\n [sidebarWidth, asideWidth, sidebarOpen, setSidebarOpen, isSidebarCollapsed, isAsideHidden],\n );\n\n const gridTemplate = isSidebarCollapsed\n ? `'header header' auto 'main main' 1fr 'footer footer' auto / 1fr`\n : `'header header' auto 'sidebar main' 1fr 'sidebar footer' auto / ${sidebarWidth} 1fr`;\n\n return (\n <AppShellContext.Provider value={ctx}>\n <div\n ref={ref}\n className={cn('grid min-h-svh bg-background text-foreground', className)}\n style={{ gridTemplate }}\n {...rest}\n >\n <a\n href=\"#app-shell-main\"\n className=\"sr-only focus:not-sr-only focus:fixed focus:left-2 focus:top-2 focus:z-50 focus:rounded-md focus:bg-card focus:px-3 focus:py-2 focus:shadow\"\n >\n Skip to content\n </a>\n {children}\n </div>\n </AppShellContext.Provider>\n );\n});\n\nexport type AppShellHeaderProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellHeader = forwardRef<HTMLElement, AppShellHeaderProps>(\n function AppShellHeader({ className, ...rest }, ref) {\n return (\n <header\n ref={ref}\n role=\"banner\"\n className={cn(\n 'sticky top-0 z-30 flex h-14 items-center gap-3 border-b border-border bg-card px-4 [grid-area:header]',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type AppShellSidebarProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellSidebar = forwardRef<HTMLElement, AppShellSidebarProps>(\n function AppShellSidebar({ className, children, ...rest }, ref) {\n const ctx = useAppShellContext();\n\n if (ctx.isSidebarCollapsed) {\n return (\n <Drawer open={ctx.sidebarOpen} onOpenChange={ctx.setSidebarOpen} side=\"left\">\n <DrawerContent className=\"w-72 max-w-[80%]\">\n <nav className={cn('flex h-full flex-col', className)}>{children}</nav>\n </DrawerContent>\n </Drawer>\n );\n }\n return (\n <aside\n ref={ref}\n className={cn(\n 'sticky top-14 hidden h-[calc(100svh-3.5rem)] overflow-y-auto border-r border-border bg-card [grid-area:sidebar] lg:flex',\n className,\n )}\n {...rest}\n >\n <nav className=\"flex h-full w-full flex-col p-3\">{children}</nav>\n </aside>\n );\n },\n);\n\nexport type AppShellMainProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellMain = forwardRef<HTMLElement, AppShellMainProps>(\n function AppShellMain({ className, children, ...rest }, ref) {\n return (\n <main\n ref={ref}\n id=\"app-shell-main\"\n className={cn(\n 'flex flex-col [grid-area:main] focus:outline-none',\n className,\n )}\n tabIndex={-1}\n {...rest}\n >\n {children}\n </main>\n );\n },\n);\n\nexport type AppShellContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const AppShellContent = forwardRef<HTMLDivElement, AppShellContentProps>(\n function AppShellContent({ className, ...rest }, ref) {\n return <div ref={ref} className={cn('flex-1 overflow-y-auto p-6', className)} {...rest} />;\n },\n);\n\nexport type AppShellAsideProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellAside = forwardRef<HTMLElement, AppShellAsideProps>(\n function AppShellAside({ className, ...rest }, ref) {\n const ctx = useAppShellContext();\n if (ctx.isAsideHidden) return null;\n return (\n <aside\n ref={ref}\n style={{ width: ctx.asideWidth }}\n className={cn(\n 'sticky top-14 h-[calc(100svh-3.5rem)] shrink-0 overflow-y-auto border-l border-border bg-card p-4',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type AppShellFooterProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellFooter = forwardRef<HTMLElement, AppShellFooterProps>(\n function AppShellFooter({ className, ...rest }, ref) {\n return (\n <footer\n ref={ref}\n role=\"contentinfo\"\n className={cn(\n 'border-t border-border bg-card px-4 py-3 text-sm text-muted-foreground [grid-area:footer]',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\ntype AppShellComponent = typeof AppShell & {\n Header: typeof AppShellHeader;\n Sidebar: typeof AppShellSidebar;\n Main: typeof AppShellMain;\n Content: typeof AppShellContent;\n Aside: typeof AppShellAside;\n Footer: typeof AppShellFooter;\n};\n\n(AppShell as AppShellComponent).Header = AppShellHeader;\n(AppShell as AppShellComponent).Sidebar = AppShellSidebar;\n(AppShell as AppShellComponent).Main = AppShellMain;\n(AppShell as AppShellComponent).Content = AppShellContent;\n(AppShell as AppShellComponent).Aside = AppShellAside;\n(AppShell as AppShellComponent).Footer = AppShellFooter;\n\nexport function useAppShell() {\n return useAppShellContext();\n}\n\nexport default AppShell as AppShellComponent;\n"]}
1
+ {"version":3,"sources":["../src/layout/box/Box.tsx","../src/layout/stack/Stack.variants.ts","../src/layout/stack/Stack.tsx","../src/layout/hStack/HStack.tsx","../src/layout/vStack/VStack.tsx","../src/layout/grid/Grid.variants.ts","../src/layout/grid/Grid.tsx","../src/layout/container/Container.variants.ts","../src/layout/container/Container.tsx","../src/layout/flex/Flex.tsx","../src/layout/aspectRatio/AspectRatio.tsx","../src/layout/spacer/Spacer.tsx","../src/layout/center/Center.tsx","../src/layout/scrollArea/ScrollArea.tsx","../src/layout/inline/Inline.tsx","../src/layout/cluster/Cluster.tsx","../src/layout/frame/Frame.tsx","../src/layout/twoColumn/TwoColumn.tsx","../src/layout/resizablePanels/ResizablePanels.tsx","../src/layout/pullToRefresh/PullToRefresh.tsx","../src/layout/appShell/AppShell.tsx"],"names":["forwardRef","jsx","GAP","ResizablePanels","ResizablePanel","ResizableSeparator","PullToRefresh","useRef","useState","reached","jsxs","createContext","useContext","AppShell","useMemo","AppShellHeader","AppShellSidebar","AppShellMain","AppShellContent","AppShellAside","AppShellFooter"],"mappings":"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","file":"chunk-NXVK3VSQ.js","sourcesContent":["import { forwardRef, type ComponentPropsWithoutRef, type ElementType, type Ref } from 'react';\nimport { cn } from '../../utils';\n\nexport interface BoxProps extends Omit<ComponentPropsWithoutRef<'div'>, 'as'> {\n /** HTML element to render. Default `div`. */\n as?: ElementType;\n}\n\n/**\n * The lowest-level layout primitive. Renders any element (default `div`)\n * with className passthrough. Use as a styling shell when no other layout\n * atom fits.\n */\nexport const Box = forwardRef<HTMLElement, BoxProps>(\n ({ as: Component = 'div', className, ...props }, ref) => (\n <Component ref={ref as Ref<HTMLElement>} className={cn(className)} {...props} />\n ),\n);\nBox.displayName = 'Box';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const stackVariants = tv({\n base: 'flex',\n variants: {\n direction: {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n },\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n },\n gap: {\n '0': 'gap-0',\n '1': 'gap-1',\n '2': 'gap-2',\n '3': 'gap-3',\n '4': 'gap-4',\n '5': 'gap-5',\n '6': 'gap-6',\n '8': 'gap-8',\n '10': 'gap-10',\n '12': 'gap-12',\n },\n wrap: {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n },\n },\n defaultVariants: {\n direction: 'column',\n gap: '4',\n },\n});\n\nexport type StackVariants = VariantProps<typeof stackVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { stackVariants, type StackVariants } from './Stack.variants';\n\nexport interface StackProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n StackVariants {\n as?: ElementType;\n}\n\n/**\n * Vertical (default) or horizontal flex container with gap and alignment\n * variants. For row preset use `HStack`, for column use `VStack`.\n */\nexport const Stack = forwardRef<HTMLElement, StackProps>(\n ({ as: Component = 'div', className, direction, align, justify, gap, wrap, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(stackVariants({ direction, align, justify, gap, wrap }), className)}\n {...props}\n />\n ),\n);\nStack.displayName = 'Stack';\n","import { forwardRef, type Ref } from 'react';\nimport { Stack, type StackProps } from '../stack/Stack';\n\nexport type HStackProps = Omit<StackProps, 'direction'>;\n\n/** Stack preset: `direction=\"row\"`. */\nexport const HStack = forwardRef<HTMLElement, HStackProps>((props, ref) => (\n <Stack ref={ref as Ref<HTMLElement>} direction=\"row\" {...props} />\n));\nHStack.displayName = 'HStack';\n","import { forwardRef, type Ref } from 'react';\nimport { Stack, type StackProps } from '../stack/Stack';\n\nexport type VStackProps = Omit<StackProps, 'direction'>;\n\n/** Stack preset: `direction=\"column\"` (default). Provided for symmetry with HStack. */\nexport const VStack = forwardRef<HTMLElement, VStackProps>((props, ref) => (\n <Stack ref={ref as Ref<HTMLElement>} direction=\"column\" {...props} />\n));\nVStack.displayName = 'VStack';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const gridVariants = tv({\n base: 'grid',\n variants: {\n columns: {\n '1': 'grid-cols-1',\n '2': 'grid-cols-2',\n '3': 'grid-cols-3',\n '4': 'grid-cols-4',\n '5': 'grid-cols-5',\n '6': 'grid-cols-6',\n '8': 'grid-cols-8',\n '12': 'grid-cols-12',\n },\n gap: {\n '0': 'gap-0',\n '1': 'gap-1',\n '2': 'gap-2',\n '3': 'gap-3',\n '4': 'gap-4',\n '5': 'gap-5',\n '6': 'gap-6',\n '8': 'gap-8',\n '10': 'gap-10',\n '12': 'gap-12',\n },\n },\n defaultVariants: {\n columns: '2',\n gap: '4',\n },\n});\n\nexport type GridVariants = VariantProps<typeof gridVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { gridVariants, type GridVariants } from './Grid.variants';\n\nexport interface GridProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n GridVariants {\n as?: ElementType;\n}\n\n/**\n * CSS grid container with column and gap variants. For non-uniform tracks\n * pass an explicit `style={{ gridTemplateColumns }}` — the variant covers\n * the equal-column case.\n */\nexport const Grid = forwardRef<HTMLElement, GridProps>(\n ({ as: Component = 'div', className, columns, gap, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(gridVariants({ columns, gap }), className)}\n {...props}\n />\n ),\n);\nGrid.displayName = 'Grid';\n","import { tv, type VariantProps } from '../../utils';\n\nexport const containerVariants = tv({\n base: 'mx-auto w-full px-4',\n variants: {\n size: {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n full: 'max-w-full',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport type ContainerVariants = VariantProps<typeof containerVariants>;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\nimport { containerVariants, type ContainerVariants } from './Container.variants';\n\nexport interface ContainerProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'as'>,\n ContainerVariants {\n as?: ElementType;\n}\n\n/**\n * Centered max-width wrapper with horizontal padding. Use at page-level to\n * constrain content width.\n */\nexport const Container = forwardRef<HTMLElement, ContainerProps>(\n ({ as: Component = 'div', className, size, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn(containerVariants({ size }), className)}\n {...props}\n />\n ),\n);\nContainer.displayName = 'Container';\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { cn } from '../../utils';\n\nexport interface FlexProps extends Omit<ComponentPropsWithoutRef<'div'>, 'as'> {\n as?: ElementType;\n}\n\n/**\n * Bare flex container — no opinions on direction, gap, or alignment.\n * Use for one-off flex layouts that don't fit `Stack`'s variant matrix.\n */\nexport const Flex = forwardRef<HTMLElement, FlexProps>(\n ({ as: Component = 'div', className, ...props }, ref) => (\n <Component\n ref={ref as Ref<HTMLElement>}\n className={cn('flex', className)}\n {...props}\n />\n ),\n);\nFlex.displayName = 'Flex';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface AspectRatioProps extends ComponentPropsWithoutRef<'div'> {\n /** Numeric ratio (width/height). Default 1 (square). */\n ratio?: number;\n}\n\n/**\n * Constrain children to an aspect ratio (width / height). Children are\n * absolutely positioned and stretched to fill — typically pass a single\n * `<img>`, `<video>`, or `<iframe>` with `className=\"absolute inset-0 w-full h-full\"`.\n */\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n ({ ratio = 1, className, style, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('relative w-full', className)}\n style={{ aspectRatio: `${ratio}`, ...style }}\n {...props}\n >\n {children}\n </div>\n ),\n);\nAspectRatio.displayName = 'AspectRatio';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface SpacerProps extends ComponentPropsWithoutRef<'div'> {\n /** Optional explicit size (CSS length). When inside a flex/grid parent,\n * the default `flex: 1` already pushes siblings apart. */\n size?: number | string;\n axis?: 'horizontal' | 'vertical';\n}\n\n/**\n * A flexible empty box. In a flex parent it expands (`flex: 1`) and pushes\n * siblings to opposite ends. Pass `size` for a fixed gap.\n */\nexport const Spacer = forwardRef<HTMLDivElement, SpacerProps>(\n ({ size, axis = 'horizontal', className, style, ...props }, ref) => {\n const fixed: React.CSSProperties | undefined =\n size !== undefined\n ? axis === 'horizontal'\n ? { width: typeof size === 'number' ? `${size}px` : size, flexShrink: 0 }\n : { height: typeof size === 'number' ? `${size}px` : size, flexShrink: 0 }\n : undefined;\n\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={cn(size === undefined && 'flex-1', className)}\n style={{ ...fixed, ...style }}\n {...props}\n />\n );\n },\n);\nSpacer.displayName = 'Spacer';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport type CenterProps = ComponentPropsWithoutRef<'div'>;\n\n/** Flex shorthand that centers its children both axes. */\nexport const Center = forwardRef<HTMLDivElement, CenterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex items-center justify-center', className)}\n {...props}\n />\n ),\n);\nCenter.displayName = 'Center';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ScrollAreaProps extends ComponentPropsWithoutRef<'div'> {\n axis?: 'vertical' | 'horizontal' | 'both';\n}\n\n/**\n * Native scrollable container with stable visuals. For custom-styled\n * scrollbars (track + thumb separately animated) use the L5 ScrollArea\n * organism. This atom exists for the common case.\n */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n ({ axis = 'vertical', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'relative',\n axis === 'vertical' && 'overflow-y-auto overflow-x-hidden',\n axis === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n axis === 'both' && 'overflow-auto',\n className,\n )}\n {...props}\n />\n ),\n);\nScrollArea.displayName = 'ScrollArea';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface InlineProps extends ComponentPropsWithoutRef<'div'> {\n /** Gap between children (Tailwind spacing). Default `2`. */\n gap?: '0' | '1' | '2' | '3' | '4' | '6' | '8';\n /** Vertical alignment. Default `center`. */\n align?: 'start' | 'center' | 'end' | 'baseline';\n}\n\nconst GAP: Record<NonNullable<InlineProps['gap']>, string> = {\n '0': 'gap-0', '1': 'gap-1', '2': 'gap-2', '3': 'gap-3', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8',\n};\nconst ALIGN: Record<NonNullable<InlineProps['align']>, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n baseline: 'items-baseline',\n};\n\n/**\n * Wrapping horizontal row with consistent gap. Use for chips/tag rows,\n * inline button groups, breadcrumb-like sequences.\n */\nexport const Inline = forwardRef<HTMLDivElement, InlineProps>(\n ({ gap = '2', align = 'center', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap', GAP[gap], ALIGN[align], className)}\n {...props}\n />\n ),\n);\nInline.displayName = 'Inline';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface ClusterProps extends ComponentPropsWithoutRef<'div'> {\n /** Gap between children. Default `4`. */\n gap?: '2' | '3' | '4' | '6' | '8';\n /** Justify on cross axis. Default `center`. */\n justify?: 'start' | 'center' | 'end';\n}\n\nconst GAP: Record<NonNullable<ClusterProps['gap']>, string> = {\n '2': 'gap-2', '3': 'gap-3', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8',\n};\nconst JUSTIFY: Record<NonNullable<ClusterProps['justify']>, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n};\n\n/**\n * Centered wrapping row — for auth-page action clusters, hero CTAs, footer\n * link groups. `Inline` left-aligns; `Cluster` centers by default.\n */\nexport const Cluster = forwardRef<HTMLDivElement, ClusterProps>(\n ({ gap = '4', justify = 'center', className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-wrap items-center', GAP[gap], JUSTIFY[justify], className)}\n {...props}\n />\n ),\n);\nCluster.displayName = 'Cluster';\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport { cn } from '../../utils';\n\nexport interface FrameProps extends ComponentPropsWithoutRef<'div'> {\n /** Padding. Default `4`. */\n padding?: '0' | '2' | '3' | '4' | '6' | '8';\n /** Border radius. Default `md`. */\n radius?: 'none' | 'sm' | 'md' | 'lg';\n /** Surface background — `card` (raised) or `muted` (recessed). Default `card`. */\n surface?: 'card' | 'muted' | 'transparent';\n /** Show the border. Default `true`. */\n bordered?: boolean;\n}\n\nconst PADDING: Record<NonNullable<FrameProps['padding']>, string> = {\n '0': '', '2': 'p-2', '3': 'p-3', '4': 'p-4', '6': 'p-6', '8': 'p-8',\n};\nconst RADIUS: Record<NonNullable<FrameProps['radius']>, string> = {\n none: '', sm: 'rounded-sm', md: 'rounded-md', lg: 'rounded-lg',\n};\nconst SURFACE: Record<NonNullable<FrameProps['surface']>, string> = {\n card: 'bg-card text-card-foreground',\n muted: 'bg-muted text-foreground',\n transparent: '',\n};\n\n/**\n * Bordered shell with padding + radius — `Card` without slot semantics.\n * Use when you want the visual but not the structured Header/Body/Footer.\n */\nexport const Frame = forwardRef<HTMLDivElement, FrameProps>(\n ({ padding = '4', radius = 'md', surface = 'card', bordered = true, className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n SURFACE[surface],\n PADDING[padding],\n RADIUS[radius],\n bordered && 'border border-border',\n className,\n )}\n {...props}\n />\n ),\n);\nFrame.displayName = 'Frame';\n","import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport { cn } from '../../utils';\n\nexport interface TwoColumnProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n /** Sidebar / aside content. */\n aside: ReactNode;\n /** Main content. */\n children: ReactNode;\n /** Aside width — Tailwind class string (e.g. `w-64`). Default `w-64`. */\n asideWidth?: string;\n /** Side the aside sits on. Default `left`. */\n asideSide?: 'left' | 'right';\n /** Gap between aside and main. Default `6`. */\n gap?: '0' | '4' | '6' | '8' | '10';\n}\n\nconst GAP: Record<NonNullable<TwoColumnProps['gap']>, string> = {\n '0': 'gap-0', '4': 'gap-4', '6': 'gap-6', '8': 'gap-8', '10': 'gap-10',\n};\n\n/**\n * Two-pane layout — fixed-width aside + flexible main. Sidebar+content,\n * filter+results, table-of-contents+article patterns.\n */\nexport const TwoColumn = forwardRef<HTMLDivElement, TwoColumnProps>(\n (\n { aside, children, asideWidth = 'w-64', asideSide = 'left', gap = '6', className, ...props },\n ref,\n ) => (\n <div\n ref={ref}\n className={cn(\n 'flex w-full',\n asideSide === 'right' && 'flex-row-reverse',\n GAP[gap],\n className,\n )}\n {...props}\n >\n <aside className={cn('shrink-0', asideWidth)}>{aside}</aside>\n <main className=\"min-w-0 flex-1\">{children}</main>\n </div>\n ),\n);\nTwoColumn.displayName = 'TwoColumn';\n","import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\n\ninterface PanelInfo {\n index: number;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n}\n\ninterface ResizableContextValue {\n orientation: 'horizontal' | 'vertical';\n sizes: number[];\n panels: React.MutableRefObject<PanelInfo[]>;\n containerRef: React.MutableRefObject<HTMLDivElement | null>;\n beginDrag: (separatorIndex: number, event: ReactMouseEvent) => void;\n nudge: (separatorIndex: number, deltaPct: number) => void;\n resetPair: (separatorIndex: number) => void;\n}\n\nconst ResizableContext = createContext<ResizableContextValue | null>(null);\n\nfunction useResizableContext() {\n const ctx = useContext(ResizableContext);\n if (!ctx) throw new Error('ResizablePanels.* must be used inside <ResizablePanels>');\n return ctx;\n}\n\nexport interface ResizablePanelsProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n defaultSizes?: number[];\n sizes?: number[];\n onSizesChange?: (sizes: number[]) => void;\n children: ReactNode;\n}\n\nfunction countPanels(children: ReactNode): number {\n let n = 0;\n Children.forEach(children, (child) => {\n if (isValidElement(child) && (child.type as { displayName?: string }).displayName === 'ResizablePanel') {\n n += 1;\n }\n });\n return n;\n}\n\nexport const ResizablePanels = forwardRef<HTMLDivElement, ResizablePanelsProps>(\n function ResizablePanels(\n { orientation = 'horizontal', defaultSizes, sizes: sizesProp, onSizesChange, className, children, ...rest },\n forwardedRef,\n ) {\n const panels = useRef<PanelInfo[]>([]);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const panelCount = countPanels(children);\n\n const initialSizes =\n defaultSizes && defaultSizes.length === panelCount\n ? defaultSizes\n : Array(panelCount).fill(100 / Math.max(panelCount, 1));\n\n const [sizes, setSizes] = useControlled<number[]>({\n controlled: sizesProp,\n default: initialSizes,\n onChange: onSizesChange,\n });\n\n // If the panel count changes (children added/removed), reset to equal sizes.\n useEffect(() => {\n if (sizes.length === panelCount) return;\n setSizes(Array(panelCount).fill(100 / Math.max(panelCount, 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panelCount]);\n\n const applyDelta = useCallback(\n (separatorIndex: number, deltaPct: number) => {\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n const next = sizes.slice();\n let nextA = next[a]! + deltaPct;\n let nextB = next[b]! - deltaPct;\n\n // Clamp by min/max — adjust deltaPct on overshoot.\n if (nextA < aInfo.minSize) {\n const adj = aInfo.minSize - nextA;\n nextA += adj;\n nextB -= adj;\n }\n if (nextB < bInfo.minSize) {\n const adj = bInfo.minSize - nextB;\n nextB += adj;\n nextA -= adj;\n }\n if (nextA > aInfo.maxSize) {\n const adj = nextA - aInfo.maxSize;\n nextA -= adj;\n nextB += adj;\n }\n if (nextB > bInfo.maxSize) {\n const adj = nextB - bInfo.maxSize;\n nextB -= adj;\n nextA += adj;\n }\n\n next[a] = nextA;\n next[b] = nextB;\n setSizes(next);\n },\n [sizes, setSizes],\n );\n\n const beginDrag = useCallback(\n (separatorIndex: number, event: ReactMouseEvent) => {\n const container = containerRef.current;\n if (!container) return;\n const startX = event.clientX;\n const startY = event.clientY;\n const rect = container.getBoundingClientRect();\n const total = orientation === 'horizontal' ? rect.width : rect.height;\n if (total === 0) return;\n\n const startSizes = sizes.slice();\n\n const onMove = (e: MouseEvent) => {\n const deltaPx =\n orientation === 'horizontal' ? e.clientX - startX : e.clientY - startY;\n const deltaPct = (deltaPx / total) * 100;\n // Recompute against the start state, not the live state, to prevent drift.\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n let nextA = startSizes[a]! + deltaPct;\n let nextB = startSizes[b]! - deltaPct;\n nextA = Math.max(aInfo.minSize, Math.min(aInfo.maxSize, nextA));\n nextB = Math.max(bInfo.minSize, Math.min(bInfo.maxSize, nextB));\n // Restore the locked total after clamping.\n const sum = nextA + nextB;\n const startSum = startSizes[a]! + startSizes[b]!;\n if (sum !== startSum) {\n const diff = startSum - sum;\n // Push surplus onto whichever side has slack.\n if (nextA + diff <= aInfo.maxSize && nextA + diff >= aInfo.minSize) {\n nextA = nextA + diff;\n } else {\n nextB = nextB + diff;\n }\n }\n const next = startSizes.slice();\n next[a] = nextA;\n next[b] = nextB;\n setSizes(next);\n };\n\n const onUp = () => {\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n\n document.body.style.cursor = orientation === 'horizontal' ? 'col-resize' : 'row-resize';\n document.body.style.userSelect = 'none';\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n },\n [orientation, sizes, setSizes],\n );\n\n const resetPair = useCallback(\n (separatorIndex: number) => {\n const a = separatorIndex;\n const b = separatorIndex + 1;\n const aInfo = panels.current[a];\n const bInfo = panels.current[b];\n if (!aInfo || !bInfo) return;\n const next = sizes.slice();\n const total = next[a]! + next[b]!;\n next[a] = (total * aInfo.defaultSize) / (aInfo.defaultSize + bInfo.defaultSize);\n next[b] = total - next[a]!;\n setSizes(next);\n },\n [sizes, setSizes],\n );\n\n const ctx = useMemo<ResizableContextValue>(\n () => ({\n orientation,\n sizes,\n panels,\n containerRef,\n beginDrag,\n nudge: applyDelta,\n resetPair,\n }),\n [orientation, sizes, beginDrag, applyDelta, resetPair],\n );\n\n // Render children with separator indices threaded through.\n let panelIdx = 0;\n let sepIdx = 0;\n const elements = Children.map(children, (child) => {\n if (!isValidElement(child)) return child;\n const displayName = (child.type as { displayName?: string }).displayName;\n if (displayName === 'ResizablePanel') {\n const node = (\n <ResizablePanelInner\n key={`p-${panelIdx}`}\n index={panelIdx}\n {...(child.props as ResizablePanelProps)}\n />\n );\n panelIdx += 1;\n return node;\n }\n if (displayName === 'ResizableSeparator') {\n const node = (\n <ResizableSeparatorInner\n key={`s-${sepIdx}`}\n index={sepIdx}\n {...(child.props as ResizableSeparatorProps)}\n />\n );\n sepIdx += 1;\n return node;\n }\n return child;\n });\n\n return (\n <ResizableContext.Provider value={ctx}>\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n data-orientation={orientation}\n className={cn(\n 'flex h-full w-full',\n orientation === 'horizontal' ? 'flex-row' : 'flex-col',\n className,\n )}\n {...rest}\n >\n {elements}\n </div>\n </ResizableContext.Provider>\n );\n },\n);\n\nexport interface ResizablePanelProps extends HTMLAttributes<HTMLDivElement> {\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n children?: ReactNode;\n}\n\ninterface ResizablePanelInnerProps extends ResizablePanelProps {\n index: number;\n}\n\nfunction ResizablePanelInner({\n index,\n defaultSize = 100,\n minSize = 0,\n maxSize = 100,\n className,\n children,\n ...rest\n}: ResizablePanelInnerProps) {\n const ctx = useResizableContext();\n\n // Register panel info before first paint so beginDrag can reference it.\n if (!ctx.panels.current[index]) {\n ctx.panels.current[index] = { index, defaultSize, minSize, maxSize };\n } else {\n ctx.panels.current[index] = { index, defaultSize, minSize, maxSize };\n }\n\n const size = ctx.sizes[index] ?? defaultSize;\n\n return (\n <div\n data-panel-index={index}\n className={cn('overflow-auto', className)}\n style={\n ctx.orientation === 'horizontal'\n ? { width: `${size}%`, height: '100%' }\n : { height: `${size}%`, width: '100%' }\n }\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n// Marker component — ResizablePanels swaps each <ResizablePanel> for its inner\n// impl via Children.map. The wrapper exists only as a typed slot.\nexport const ResizablePanel = forwardRef<HTMLDivElement, ResizablePanelProps>(\n function ResizablePanel() {\n return null;\n },\n);\nResizablePanel.displayName = 'ResizablePanel';\n\nexport interface ResizableSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n disabled?: boolean;\n}\n\ninterface ResizableSeparatorInnerProps extends ResizableSeparatorProps {\n index: number;\n}\n\nfunction ResizableSeparatorInner({\n index,\n disabled,\n className,\n onKeyDown,\n onDoubleClick,\n ...rest\n}: ResizableSeparatorInnerProps) {\n const ctx = useResizableContext();\n const [dragging, setDragging] = useState(false);\n\n const handleMouseDown = (e: ReactMouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n if (e.button !== 0) return;\n e.preventDefault();\n setDragging(true);\n ctx.beginDrag(index, e);\n const onUp = () => {\n setDragging(false);\n window.removeEventListener('mouseup', onUp);\n };\n window.addEventListener('mouseup', onUp);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n const step = e.shiftKey ? 10 : 1;\n if (ctx.orientation === 'horizontal') {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n ctx.nudge(index, -step);\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n ctx.nudge(index, step);\n }\n } else {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n ctx.nudge(index, -step);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n ctx.nudge(index, step);\n }\n }\n };\n\n const ariaValueNow = ctx.sizes[index + 1] ?? 50;\n const nextPanel = ctx.panels.current[index + 1];\n\n return (\n <div\n role=\"separator\"\n aria-orientation={ctx.orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n aria-valuenow={Math.round(ariaValueNow)}\n aria-valuemin={nextPanel?.minSize ?? 0}\n aria-valuemax={nextPanel?.maxSize ?? 100}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n data-dragging={dragging || undefined}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onDoubleClick={(e) => {\n onDoubleClick?.(e);\n if (e.defaultPrevented || disabled) return;\n ctx.resetPair(index);\n }}\n className={cn(\n 'flex shrink-0 items-center justify-center bg-border transition-colors',\n ctx.orientation === 'horizontal'\n ? 'w-1 cursor-col-resize hover:bg-border-strong data-[dragging]:bg-primary'\n : 'h-1 cursor-row-resize hover:bg-border-strong data-[dragging]:bg-primary',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n disabled && 'cursor-default opacity-50 hover:bg-border',\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport const ResizableSeparator = forwardRef<HTMLDivElement, ResizableSeparatorProps>(\n function ResizableSeparator() {\n return null;\n },\n);\nResizableSeparator.displayName = 'ResizableSeparator';\n\ntype ResizablePanelsComponent = typeof ResizablePanels & {\n Panel: typeof ResizablePanel;\n Separator: typeof ResizableSeparator;\n};\n\n(ResizablePanels as ResizablePanelsComponent).Panel = ResizablePanel;\n(ResizablePanels as ResizablePanelsComponent).Separator = ResizableSeparator;\n\nexport default ResizablePanels as ResizablePanelsComponent;\n","import {\n forwardRef,\n useRef,\n useState,\n type HTMLAttributes,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { Announce } from '../../primitives';\nimport { Spinner } from '../../feedback/spinner';\n\nexport interface PullToRefreshProps extends HTMLAttributes<HTMLDivElement> {\n onRefresh: () => Promise<void> | void;\n threshold?: number;\n maxPull?: number;\n disabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * Pull-to-refresh wrapper. Listen to pointer drag at scrollTop=0; once past\n * `threshold`, fire `onRefresh`. Visual indicator: spinner that scales in as\n * the user pulls.\n */\nexport const PullToRefresh = forwardRef<HTMLDivElement, PullToRefreshProps>(\n function PullToRefresh(\n { onRefresh, threshold = 60, maxPull = 120, disabled, className, children, ...rest },\n forwardedRef,\n ) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const startYRef = useRef<number | null>(null);\n const [pull, setPull] = useState(0);\n const [refreshing, setRefreshing] = useState(false);\n\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (disabled || refreshing) return;\n const el = containerRef.current;\n if (!el || el.scrollTop > 0) return;\n startYRef.current = e.clientY;\n };\n\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n const dy = e.clientY - startYRef.current;\n if (dy < 0) {\n setPull(0);\n return;\n }\n // Resistance: sub-linear growth past threshold.\n const eased = dy < threshold ? dy : threshold + (dy - threshold) * 0.4;\n setPull(Math.min(maxPull, eased));\n };\n\n const onPointerUp = async () => {\n if (startYRef.current == null) return;\n const reached = pull >= threshold;\n startYRef.current = null;\n if (reached) {\n setRefreshing(true);\n setPull(threshold);\n try {\n await onRefresh();\n } finally {\n setRefreshing(false);\n setPull(0);\n }\n } else {\n setPull(0);\n }\n };\n\n const reached = pull >= threshold;\n\n return (\n <div\n ref={(el) => {\n containerRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n className={cn('relative h-full overflow-y-auto', className)}\n style={{ touchAction: 'pan-y' }}\n {...rest}\n >\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-x-0 top-0 z-10 flex items-center justify-center\"\n style={{\n height: pull,\n transition: startYRef.current == null ? 'height 200ms ease-out' : 'none',\n }}\n >\n {pull > 8 && (\n <div\n className={cn(\n 'transition-opacity',\n refreshing ? 'opacity-100' : reached ? 'opacity-100' : 'opacity-60',\n )}\n style={{ transform: `scale(${Math.min(1, pull / threshold)})` }}\n >\n <Spinner size=\"md\" tone={reached ? 'brand' : 'default'} />\n </div>\n )}\n </div>\n <div\n style={{\n transform: `translateY(${pull}px)`,\n transition: startYRef.current == null ? 'transform 200ms ease-out' : 'none',\n }}\n >\n {children}\n </div>\n <Announce politeness=\"polite\">\n {refreshing ? 'Refreshing' : ''}\n </Announce>\n </div>\n );\n },\n);\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled, useMediaQuery } from '../../hooks';\nimport { Drawer, DrawerContent } from '../../overlays/drawer';\n\ntype Breakpoint = 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nconst BREAKPOINT_PX: Record<Breakpoint, number> = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\ninterface AppShellContextValue {\n sidebarWidth: string;\n asideWidth: string;\n sidebarOpen: boolean;\n setSidebarOpen: (open: boolean) => void;\n isSidebarCollapsed: boolean;\n isAsideHidden: boolean;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nfunction useAppShellContext() {\n const ctx = useContext(AppShellContext);\n if (!ctx) throw new Error('AppShell.* must be used inside <AppShell>');\n return ctx;\n}\n\nexport interface AppShellProps extends HTMLAttributes<HTMLDivElement> {\n sidebarWidth?: string;\n asideWidth?: string;\n sidebarBreakpoint?: Breakpoint;\n asideBreakpoint?: Breakpoint;\n sidebarOpen?: boolean;\n defaultSidebarOpen?: boolean;\n onSidebarOpenChange?: (open: boolean) => void;\n children: ReactNode;\n}\n\n/**\n * Top-level page frame. Children: `AppShell.Header / Sidebar / Main / Aside /\n * Footer`. CSS-grid layout; sidebar collapses to a Drawer below\n * `sidebarBreakpoint`.\n */\nexport const AppShell = forwardRef<HTMLDivElement, AppShellProps>(function AppShell(\n {\n sidebarWidth = '240px',\n asideWidth = '280px',\n sidebarBreakpoint = 'lg',\n asideBreakpoint = 'xl',\n sidebarOpen: sidebarOpenProp,\n defaultSidebarOpen = false,\n onSidebarOpenChange,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [sidebarOpen, setSidebarOpen] = useControlled({\n controlled: sidebarOpenProp,\n default: defaultSidebarOpen,\n onChange: onSidebarOpenChange,\n });\n\n const isSidebarCollapsed = !useMediaQuery(`(min-width: ${BREAKPOINT_PX[sidebarBreakpoint]}px)`);\n const isAsideHidden = !useMediaQuery(`(min-width: ${BREAKPOINT_PX[asideBreakpoint]}px)`);\n\n const ctx = useMemo<AppShellContextValue>(\n () => ({\n sidebarWidth,\n asideWidth,\n sidebarOpen,\n setSidebarOpen,\n isSidebarCollapsed,\n isAsideHidden,\n }),\n [sidebarWidth, asideWidth, sidebarOpen, setSidebarOpen, isSidebarCollapsed, isAsideHidden],\n );\n\n const gridTemplate = isSidebarCollapsed\n ? `'header header' auto 'main main' 1fr 'footer footer' auto / 1fr`\n : `'header header' auto 'sidebar main' 1fr 'sidebar footer' auto / ${sidebarWidth} 1fr`;\n\n return (\n <AppShellContext.Provider value={ctx}>\n <div\n ref={ref}\n className={cn('grid min-h-svh bg-background text-foreground', className)}\n style={{ gridTemplate }}\n {...rest}\n >\n <a\n href=\"#app-shell-main\"\n className=\"sr-only focus:not-sr-only focus:fixed focus:left-2 focus:top-2 focus:z-50 focus:rounded-md focus:bg-card focus:px-3 focus:py-2 focus:shadow\"\n >\n Skip to content\n </a>\n {children}\n </div>\n </AppShellContext.Provider>\n );\n});\n\nexport type AppShellHeaderProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellHeader = forwardRef<HTMLElement, AppShellHeaderProps>(\n function AppShellHeader({ className, ...rest }, ref) {\n return (\n <header\n ref={ref}\n role=\"banner\"\n className={cn(\n 'sticky top-0 z-30 flex h-14 items-center gap-3 border-b border-border bg-card px-4 [grid-area:header]',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type AppShellSidebarProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellSidebar = forwardRef<HTMLElement, AppShellSidebarProps>(\n function AppShellSidebar({ className, children, ...rest }, ref) {\n const ctx = useAppShellContext();\n\n if (ctx.isSidebarCollapsed) {\n return (\n <Drawer open={ctx.sidebarOpen} onOpenChange={ctx.setSidebarOpen} side=\"left\">\n <DrawerContent className=\"w-72 max-w-[80%]\">\n <nav className={cn('flex h-full flex-col', className)}>{children}</nav>\n </DrawerContent>\n </Drawer>\n );\n }\n return (\n <aside\n ref={ref}\n className={cn(\n 'sticky top-14 hidden h-[calc(100svh-3.5rem)] overflow-y-auto border-r border-border bg-card [grid-area:sidebar] lg:flex',\n className,\n )}\n {...rest}\n >\n <nav className=\"flex h-full w-full flex-col p-3\">{children}</nav>\n </aside>\n );\n },\n);\n\nexport type AppShellMainProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellMain = forwardRef<HTMLElement, AppShellMainProps>(\n function AppShellMain({ className, children, ...rest }, ref) {\n return (\n <main\n ref={ref}\n id=\"app-shell-main\"\n className={cn(\n 'flex flex-col [grid-area:main] focus:outline-none',\n className,\n )}\n tabIndex={-1}\n {...rest}\n >\n {children}\n </main>\n );\n },\n);\n\nexport type AppShellContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const AppShellContent = forwardRef<HTMLDivElement, AppShellContentProps>(\n function AppShellContent({ className, ...rest }, ref) {\n return <div ref={ref} className={cn('flex-1 overflow-y-auto p-6', className)} {...rest} />;\n },\n);\n\nexport type AppShellAsideProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellAside = forwardRef<HTMLElement, AppShellAsideProps>(\n function AppShellAside({ className, ...rest }, ref) {\n const ctx = useAppShellContext();\n if (ctx.isAsideHidden) return null;\n return (\n <aside\n ref={ref}\n style={{ width: ctx.asideWidth }}\n className={cn(\n 'sticky top-14 h-[calc(100svh-3.5rem)] shrink-0 overflow-y-auto border-l border-border bg-card p-4',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type AppShellFooterProps = HTMLAttributes<HTMLElement>;\n\nexport const AppShellFooter = forwardRef<HTMLElement, AppShellFooterProps>(\n function AppShellFooter({ className, ...rest }, ref) {\n return (\n <footer\n ref={ref}\n role=\"contentinfo\"\n className={cn(\n 'border-t border-border bg-card px-4 py-3 text-sm text-muted-foreground [grid-area:footer]',\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\ntype AppShellComponent = typeof AppShell & {\n Header: typeof AppShellHeader;\n Sidebar: typeof AppShellSidebar;\n Main: typeof AppShellMain;\n Content: typeof AppShellContent;\n Aside: typeof AppShellAside;\n Footer: typeof AppShellFooter;\n};\n\n(AppShell as AppShellComponent).Header = AppShellHeader;\n(AppShell as AppShellComponent).Sidebar = AppShellSidebar;\n(AppShell as AppShellComponent).Main = AppShellMain;\n(AppShell as AppShellComponent).Content = AppShellContent;\n(AppShell as AppShellComponent).Aside = AppShellAside;\n(AppShell as AppShellComponent).Footer = AppShellFooter;\n\nexport function useAppShell() {\n return useAppShellContext();\n}\n\nexport default AppShell as AppShellComponent;\n"]}
@@ -1,7 +1,7 @@
1
- import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-QMU6QSG6.js';
2
- import { DialogContent, DialogClose, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-4ZVQMR44.js';
1
+ import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-XTAFNWLG.js';
2
+ import { DialogContent, DialogClose, Dialog, DialogTrigger, DialogHeader, DialogTitle, DialogDescription, DialogBody, DialogFooter } from './chunk-D3CGJMKB.js';
3
3
  import { Backdrop } from './chunk-CBMPWDRA.js';
4
- import { useControlled } from './chunk-76ZIAFWD.js';
4
+ import { useControlled } from './chunk-NUMFGKPY.js';
5
5
  import { Slot, Portal, AnchoredPositioner, DismissableLayer, ScrollLockProvider, OverlayArrow } from './chunk-BMABNEZX.js';
6
6
  import { cn, composeRefs } from './chunk-LDRFQG44.js';
7
7
  import { forwardRef, createContext, useState, useRef, useEffect, useMemo, useContext, useCallback, isValidElement, cloneElement } from 'react';
@@ -538,5 +538,5 @@ var BottomSheet = forwardRef(function BottomSheet2({
538
538
  });
539
539
 
540
540
  export { ActionSheet, ActionSheetAction, ActionSheetCancel, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, BottomSheet, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger, useBottomSheet };
541
- //# sourceMappingURL=chunk-2LML37JF.js.map
542
- //# sourceMappingURL=chunk-2LML37JF.js.map
541
+ //# sourceMappingURL=chunk-VDE5B3IY.js.map
542
+ //# sourceMappingURL=chunk-VDE5B3IY.js.map