@wow-two-beta/ui 0.0.57 → 0.0.59

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 (205) hide show
  1. package/dist/actions/button/Button.d.ts +0 -9
  2. package/dist/actions/buttonGroup/ButtonGroup.d.ts +2 -2
  3. package/dist/actions/disclosureButton/DisclosureButton.d.ts +1 -1
  4. package/dist/actions/index.js +4 -4
  5. package/dist/actions/speedDial/SpeedDial.d.ts +2 -2
  6. package/dist/actions/toggleButton/ToggleButton.d.ts +1 -1
  7. package/dist/actions/toggleButtonGroup/ToggleButtonGroup.d.ts +1 -1
  8. package/dist/{chunk-VR5HH4SX.js → chunk-4XWLEKH2.js} +10 -4
  9. package/dist/chunk-4XWLEKH2.js.map +1 -0
  10. package/dist/{chunk-3GZOE7JF.js → chunk-577JZ2A2.js} +3 -3
  11. package/dist/{chunk-3GZOE7JF.js.map → chunk-577JZ2A2.js.map} +1 -1
  12. package/dist/{chunk-BI6JZY2O.js → chunk-DJJOQWOG.js} +6 -6
  13. package/dist/chunk-DJJOQWOG.js.map +1 -0
  14. package/dist/{chunk-FEXH7YWU.js → chunk-EEHJHPAP.js} +30 -30
  15. package/dist/chunk-EEHJHPAP.js.map +1 -0
  16. package/dist/{chunk-5Y43MUOK.js → chunk-EJCO7AWR.js} +11 -11
  17. package/dist/chunk-EJCO7AWR.js.map +1 -0
  18. package/dist/{chunk-ZFNGOAHR.js → chunk-EX4AOJCN.js} +58 -58
  19. package/dist/chunk-EX4AOJCN.js.map +1 -0
  20. package/dist/{chunk-4WYHY6KV.js → chunk-FNSC4LAL.js} +3 -3
  21. package/dist/{chunk-4WYHY6KV.js.map → chunk-FNSC4LAL.js.map} +1 -1
  22. package/dist/{chunk-WPTF6ZRR.js → chunk-GSAOM2ZR.js} +67 -38
  23. package/dist/chunk-GSAOM2ZR.js.map +1 -0
  24. package/dist/{chunk-JOOE4KS5.js → chunk-HG7NX6GP.js} +509 -380
  25. package/dist/chunk-HG7NX6GP.js.map +1 -0
  26. package/dist/{chunk-XDP6GEBA.js → chunk-JYGC5SRP.js} +39 -5
  27. package/dist/chunk-JYGC5SRP.js.map +1 -0
  28. package/dist/{chunk-4QOCAFCA.js → chunk-MTD4RTGO.js} +19 -19
  29. package/dist/chunk-MTD4RTGO.js.map +1 -0
  30. package/dist/{chunk-WOKIYORV.js → chunk-MTE5E6OQ.js} +308 -28
  31. package/dist/chunk-MTE5E6OQ.js.map +1 -0
  32. package/dist/{chunk-USGZGMLY.js → chunk-NR5DYKSJ.js} +3 -3
  33. package/dist/{chunk-USGZGMLY.js.map → chunk-NR5DYKSJ.js.map} +1 -1
  34. package/dist/{chunk-VYOQYXK6.js → chunk-OBW7JUNL.js} +12 -12
  35. package/dist/chunk-OBW7JUNL.js.map +1 -0
  36. package/dist/{chunk-UI4RT5JF.js → chunk-TTSJZEL7.js} +25 -25
  37. package/dist/chunk-TTSJZEL7.js.map +1 -0
  38. package/dist/{chunk-5PMOT5MD.js → chunk-V267IMBH.js} +86 -4
  39. package/dist/chunk-V267IMBH.js.map +1 -0
  40. package/dist/{chunk-ZH6BB54G.js → chunk-XDATW7NF.js} +3 -3
  41. package/dist/{chunk-ZH6BB54G.js.map → chunk-XDATW7NF.js.map} +1 -1
  42. package/dist/{chunk-4OKJVYBV.js → chunk-Y5GS4CLT.js} +221 -186
  43. package/dist/chunk-Y5GS4CLT.js.map +1 -0
  44. package/dist/display/accordion/Accordion.d.ts +15 -11
  45. package/dist/display/activityFeed/ActivityFeed.d.ts +2 -2
  46. package/dist/display/annotationMarker/AnnotationMarker.d.ts +6 -7
  47. package/dist/display/audioPlayer/AudioPlayer.d.ts +1 -1
  48. package/dist/display/audioWaveform/AudioWaveform.d.ts +1 -1
  49. package/dist/display/avatar/Avatar.d.ts +1 -1
  50. package/dist/display/badgeOverlay/BadgeOverlay.d.ts +1 -1
  51. package/dist/display/carousel/Carousel.d.ts +1 -1
  52. package/dist/display/chatBubble/ChatBubble.d.ts +2 -2
  53. package/dist/display/collapsible/Collapsible.d.ts +2 -2
  54. package/dist/display/commentThread/CommentThread.d.ts +1 -1
  55. package/dist/display/confetti/Confetti.d.ts +2 -2
  56. package/dist/display/countBadge/CountBadge.d.ts +3 -4
  57. package/dist/display/countUp/CountUp.d.ts +2 -2
  58. package/dist/display/dataGrid/DataGrid.d.ts +2 -2
  59. package/dist/display/dataTable/DataTable.d.ts +5 -5
  60. package/dist/display/diffViewer/DiffViewer.d.ts +1 -1
  61. package/dist/display/eventCalendar/EventCalendar.d.ts +1 -1
  62. package/dist/display/gantt/Gantt.d.ts +1 -1
  63. package/dist/display/gradientText/GradientText.d.ts +2 -2
  64. package/dist/display/heatmapCalendar/HeatmapCalendar.d.ts +1 -1
  65. package/dist/display/highlight/Highlight.d.ts +2 -2
  66. package/dist/display/index.js +6 -6
  67. package/dist/display/list/List.d.ts +2 -2
  68. package/dist/display/marquee/Marquee.d.ts +1 -1
  69. package/dist/display/messageList/MessageList.d.ts +3 -3
  70. package/dist/display/notificationDot/NotificationDot.d.ts +1 -1
  71. package/dist/display/pdfViewer/PDFViewer.d.ts +1 -1
  72. package/dist/display/reactionBar/ReactionBar.d.ts +6 -6
  73. package/dist/display/scrollReveal/ScrollReveal.d.ts +1 -1
  74. package/dist/display/sectionHeader/SectionHeader.d.ts +1 -1
  75. package/dist/display/separator/Separator.d.ts +2 -3
  76. package/dist/display/sparkline/Sparkline.d.ts +1 -1
  77. package/dist/display/status/Status.d.ts +1 -1
  78. package/dist/display/swipeActions/SwipeActions.d.ts +1 -1
  79. package/dist/display/table/Table.d.ts +17 -5
  80. package/dist/display/table/index.d.ts +1 -1
  81. package/dist/display/tabs/Tabs.d.ts +1 -1
  82. package/dist/display/text/Text.variants.d.ts +14 -14
  83. package/dist/display/threadView/ThreadView.d.ts +2 -2
  84. package/dist/display/tilt/Tilt.d.ts +2 -3
  85. package/dist/display/tooltip/Tooltip.d.ts +2 -2
  86. package/dist/display/tree/Tree.d.ts +2 -2
  87. package/dist/display/typewriter/Typewriter.d.ts +2 -2
  88. package/dist/feedback/index.js +6 -6
  89. package/dist/feedback/liveCursor/LiveCursor.d.ts +4 -6
  90. package/dist/feedback/loadingOverlay/LoadingOverlay.d.ts +5 -6
  91. package/dist/feedback/notificationCenter/NotificationCenter.d.ts +1 -1
  92. package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +3 -3
  93. package/dist/feedback/presenceIndicator/PresenceIndicator.d.ts +1 -1
  94. package/dist/feedback/statusIndicator/StatusIndicator.d.ts +1 -1
  95. package/dist/feedback/toaster/Toaster.d.ts +2 -2
  96. package/dist/feedback/tour/Tour.d.ts +2 -2
  97. package/dist/feedback/trendIndicator/TrendIndicator.d.ts +2 -2
  98. package/dist/feedback/typingIndicator/TypingIndicator.d.ts +1 -1
  99. package/dist/feedback/undoBar/UndoBar.d.ts +4 -4
  100. package/dist/forms/addressForm/AddressForm.d.ts +3 -3
  101. package/dist/forms/characterCount/CharacterCount.d.ts +1 -1
  102. package/dist/forms/chatComposer/ChatComposer.d.ts +2 -2
  103. package/dist/forms/checkbox/Checkbox.d.ts +1 -1
  104. package/dist/forms/checkboxGroup/CheckboxGroup.d.ts +1 -1
  105. package/dist/forms/codeEditor/CodeEditor.d.ts +2 -2
  106. package/dist/forms/colorArea/ColorArea.d.ts +1 -1
  107. package/dist/forms/colorField/ColorField.d.ts +1 -1
  108. package/dist/forms/colorPicker/ColorPicker.d.ts +2 -2
  109. package/dist/forms/colorSlider/ColorSlider.d.ts +1 -1
  110. package/dist/forms/colorSwatch/ColorSwatch.variants.d.ts +14 -14
  111. package/dist/forms/colorSwatchPicker/ColorSwatchPicker.d.ts +2 -2
  112. package/dist/forms/colorWheel/ColorWheel.d.ts +1 -1
  113. package/dist/forms/combobox/Combobox.d.ts +4 -4
  114. package/dist/forms/cronInput/CronInput.d.ts +2 -2
  115. package/dist/forms/datePicker/DatePicker.d.ts +1 -1
  116. package/dist/forms/dateRangePicker/DateRangePicker.d.ts +1 -1
  117. package/dist/forms/editable/Editable.d.ts +7 -7
  118. package/dist/forms/emojiPicker/EmojiPicker.d.ts +1 -1
  119. package/dist/forms/fileUpload/FileUpload.d.ts +1 -1
  120. package/dist/forms/fontPicker/FontPicker.d.ts +1 -1
  121. package/dist/forms/gradientPicker/GradientPicker.d.ts +1 -1
  122. package/dist/forms/iconPicker/IconPicker.d.ts +1 -1
  123. package/dist/forms/index.js +11 -11
  124. package/dist/forms/jsonEditor/JSONEditor.d.ts +3 -3
  125. package/dist/forms/knob/Knob.d.ts +2 -2
  126. package/dist/forms/label/Label.d.ts +1 -1
  127. package/dist/forms/listbox/Listbox.d.ts +8 -4
  128. package/dist/forms/markdownEditor/MarkdownEditor.d.ts +1 -1
  129. package/dist/forms/multiSelect/MultiSelect.d.ts +4 -4
  130. package/dist/forms/passwordInput/PasswordInput.d.ts +1 -1
  131. package/dist/forms/passwordStrength/PasswordStrength.d.ts +1 -1
  132. package/dist/forms/phoneInput/PhoneInput.d.ts +3 -3
  133. package/dist/forms/pinInput/PinInput.d.ts +2 -2
  134. package/dist/forms/radioGroup/RadioGroup.d.ts +1 -1
  135. package/dist/forms/reactionPicker/ReactionPicker.d.ts +1 -1
  136. package/dist/forms/recurrenceEditor/RecurrenceEditor.d.ts +2 -2
  137. package/dist/forms/searchInput/SearchInput.d.ts +1 -1
  138. package/dist/forms/select/Select.d.ts +14 -7
  139. package/dist/forms/select/Select.variants.d.ts +46 -3
  140. package/dist/forms/stepper/Stepper.d.ts +1 -1
  141. package/dist/forms/tagsInput/TagsInput.d.ts +2 -2
  142. package/dist/forms/timePicker/TimePicker.d.ts +1 -1
  143. package/dist/forms/wizard/Wizard.d.ts +5 -5
  144. package/dist/hooks/index.d.ts +1 -0
  145. package/dist/hooks/index.js +1 -1
  146. package/dist/hooks/useTypeahead.d.ts +37 -0
  147. package/dist/icons/index.js +1 -1
  148. package/dist/index.js +18 -18
  149. package/dist/layout/appShell/AppShell.d.ts +2 -2
  150. package/dist/layout/divider/Divider.d.ts +19 -0
  151. package/dist/layout/divider/Divider.variants.d.ts +45 -0
  152. package/dist/layout/divider/index.d.ts +2 -0
  153. package/dist/layout/frame/Frame.d.ts +1 -1
  154. package/dist/layout/grid/Grid.d.ts +17 -5
  155. package/dist/layout/grid/Grid.variants.d.ts +15 -0
  156. package/dist/layout/grid/index.d.ts +1 -1
  157. package/dist/layout/index.d.ts +3 -0
  158. package/dist/layout/index.js +9 -9
  159. package/dist/layout/inline/Inline.d.ts +5 -0
  160. package/dist/layout/navbar/Navbar.d.ts +37 -0
  161. package/dist/layout/navbar/Navbar.variants.d.ts +76 -0
  162. package/dist/layout/navbar/index.d.ts +2 -0
  163. package/dist/layout/pullToRefresh/PullToRefresh.d.ts +1 -1
  164. package/dist/layout/resizablePanels/ResizablePanels.d.ts +1 -1
  165. package/dist/layout/section/Section.d.ts +26 -0
  166. package/dist/layout/section/Section.variants.d.ts +62 -0
  167. package/dist/layout/section/index.d.ts +2 -0
  168. package/dist/nav/commandPalette/CommandPalette.d.ts +1 -1
  169. package/dist/nav/contextMenu/ContextMenu.d.ts +1 -1
  170. package/dist/nav/index.js +8 -8
  171. package/dist/nav/menu/Menu.d.ts +1 -1
  172. package/dist/nav/navItem/NavItem.d.ts +2 -3
  173. package/dist/nav/tableOfContents/TableOfContents.d.ts +1 -1
  174. package/dist/overlays/actionSheet/ActionSheet.d.ts +1 -1
  175. package/dist/overlays/backdrop/Backdrop.d.ts +3 -6
  176. package/dist/overlays/dialog/Dialog.d.ts +1 -1
  177. package/dist/overlays/drawer/Drawer.d.ts +1 -1
  178. package/dist/overlays/index.js +8 -8
  179. package/dist/overlays/popover/Popover.d.ts +1 -1
  180. package/dist/primitives/anchoredPositioner/AnchoredPositioner.d.ts +1 -1
  181. package/dist/primitives/dismissableLayer/DismissableLayer.d.ts +2 -2
  182. package/dist/primitives/index.js +1 -1
  183. package/dist/primitives/presence/Presence.d.ts +3 -3
  184. package/dist/primitives/rovingFocusGroup/RovingFocusGroup.d.ts +3 -6
  185. package/dist/primitives/scrollLockProvider/ScrollLockProvider.d.ts +2 -2
  186. package/dist/utils/Environment.d.ts +8 -0
  187. package/dist/utils/SurfaceStyles.d.ts +7 -0
  188. package/dist/utils/Tones.d.ts +1 -1
  189. package/dist/utils/index.d.ts +1 -0
  190. package/dist/utils/index.js +1 -1
  191. package/package.json +1 -1
  192. package/dist/chunk-4OKJVYBV.js.map +0 -1
  193. package/dist/chunk-4QOCAFCA.js.map +0 -1
  194. package/dist/chunk-5PMOT5MD.js.map +0 -1
  195. package/dist/chunk-5Y43MUOK.js.map +0 -1
  196. package/dist/chunk-BI6JZY2O.js.map +0 -1
  197. package/dist/chunk-FEXH7YWU.js.map +0 -1
  198. package/dist/chunk-JOOE4KS5.js.map +0 -1
  199. package/dist/chunk-UI4RT5JF.js.map +0 -1
  200. package/dist/chunk-VR5HH4SX.js.map +0 -1
  201. package/dist/chunk-VYOQYXK6.js.map +0 -1
  202. package/dist/chunk-WOKIYORV.js.map +0 -1
  203. package/dist/chunk-WPTF6ZRR.js.map +0 -1
  204. package/dist/chunk-XDP6GEBA.js.map +0 -1
  205. package/dist/chunk-ZFNGOAHR.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/primitives/index.ts","../src/primitives/slot/Slot.tsx","../src/primitives/portal/Portal.tsx","../src/primitives/visuallyHidden/VisuallyHidden.tsx","../src/primitives/presence/Presence.tsx","../src/primitives/directionProvider/DirectionProvider.tsx","../src/primitives/accessibleIcon/AccessibleIcon.tsx","../src/primitives/focusScope/FocusScope.tsx","../src/primitives/dismissableLayer/DismissableLayer.tsx","../src/primitives/anchoredPositioner/AnchoredPositioner.tsx","../src/primitives/rovingFocusGroup/RovingFocusGroup.tsx","../src/primitives/collection/Collection.tsx","../src/primitives/formControlContext/FormControlContext.tsx","../src/primitives/scrollLockProvider/ScrollLockProvider.tsx","../src/primitives/overlayArrow/OverlayArrow.tsx","../src/primitives/announce/Announce.tsx"],"names":["forwardRef","jsx","useState","isValidElement","useEffect","cloneElement","RadixFocusScope","useRef","offset","offsetMiddleware","sizeMiddleware","createContext","RovingFocusGroup","useContext","useId","useCallback","useMemo","Fragment","OverlayArrow"],"mappings":"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","file":"chunk-UI4RT5JF.js","sourcesContent":["// L2 — headless primitives. Behavior + a11y, no visual styling beyond layout.\n// Foundation layer; cannot import upward (enforced by ESLint boundaries).\n\nexport * from './slot';\nexport * from './portal';\nexport * from './visuallyHidden';\nexport * from './presence';\nexport * from './directionProvider';\nexport * from './accessibleIcon';\nexport * from './focusScope';\nexport * from './dismissableLayer';\nexport * from './anchoredPositioner';\nexport * from './rovingFocusGroup';\nexport * from './collection';\nexport * from './formControlContext';\nexport * from './scrollLockProvider';\nexport * from './overlayArrow';\nexport * from './announce';\n","import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { useComposedRefs } from '../../utils/composeRefs';\n\nexport interface SlotProps extends HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\ntype AnyProps = Record<string, unknown>;\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps {\n const merged: AnyProps = { ...childProps };\n for (const key of Object.keys(slotProps)) {\n const slotVal = slotProps[key];\n const childVal = childProps[key];\n if (key === 'className') {\n merged.className = [slotVal, childVal].filter(Boolean).join(' ');\n } else if (key === 'style') {\n merged.style = { ...(slotVal as CSSProperties), ...(childVal as CSSProperties) };\n } else if (/^on[A-Z]/.test(key)) {\n const slotFn = slotVal as ((...args: unknown[]) => void) | undefined;\n const childFn = childVal as ((...args: unknown[]) => void) | undefined;\n if (slotFn && childFn) {\n merged[key] = (...args: unknown[]) => {\n childFn(...args);\n slotFn(...args);\n };\n } else if (slotFn) {\n merged[key] = slotFn;\n }\n } else if (childVal === undefined) {\n merged[key] = slotVal;\n }\n }\n return merged;\n}\n\n/**\n * Polymorphic slot — renders the single child element with the parent's props\n * merged in (className concatenated, handlers chained, refs composed).\n *\n * Use to enable an `asChild` API on a component:\n * ```tsx\n * <Button asChild><a href=\"/x\">Open</a></Button>\n * ```\n */\nexport const Slot = forwardRef<HTMLElement, SlotProps>(\n ({ children, ...slotProps }, forwardedRef) => {\n const child = isValidElement(children)\n ? (children as ReactElement<AnyProps> & { ref?: Ref<HTMLElement> })\n : null;\n const composedRef = useComposedRefs(forwardedRef, child?.ref);\n if (!child) {\n return Children.count(children) > 1 ? Children.only(null) : null;\n }\n const merged = mergeProps(slotProps as AnyProps, (child.props ?? {}) as AnyProps);\n return cloneElement(child, {\n ...merged,\n ref: composedRef,\n });\n },\n);\nSlot.displayName = 'Slot';\n","import { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n children: ReactNode;\n /** Container to render into. Default: `document.body`. */\n container?: HTMLElement | null;\n /** Optional named layer — sets `data-portal-name` on the wrapper. */\n name?: string;\n}\n\n/**\n * Render children into a different DOM node (default `document.body`).\n * SSR-inert — renders nothing on the server, portals in after mount on the client.\n */\nexport function Portal({ children, container, name }: PortalProps): ReactNode {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) return null;\n const target = container ?? document.body;\n return createPortal(<div data-portal-name={name}>{children}</div>, target);\n}\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type VisuallyHiddenProps = HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Visually hidden span — content removed from the visual layout but still\n * announced to screen readers. Use for accessible labels on icon-only\n * affordances and live-region announcements.\n */\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0',\n 'm-[-1px] [clip:rect(0_0_0_0)] [clip-path:inset(50%)]',\n className,\n )}\n {...props}\n />\n ),\n);\nVisuallyHidden.displayName = 'VisuallyHidden';\n","import {\n cloneElement,\n isValidElement,\n useEffect,\n useRef,\n useState,\n type ReactElement,\n type Ref,\n} from 'react';\nimport { useComposedRefs } from '../../utils/composeRefs';\n\nexport interface PresenceProps {\n /** Whether the content should be present. Toggle false to trigger exit. */\n present: boolean;\n /** Single React element child — receives `ref` and `data-state` (\"open\" | \"closed\"). */\n children: ReactElement;\n}\n\nfunction parseTimes(value: string): number[] {\n return value.split(',').map((part) => {\n const trimmed = part.trim();\n const ms = trimmed.endsWith('ms') ? parseFloat(trimmed) : parseFloat(trimmed) * 1000;\n return Number.isFinite(ms) ? ms : 0;\n });\n}\n\n/** Longest computed transition/animation (duration + delay) in ms. */\nfunction getTotalDurationMs(node: HTMLElement): number {\n const cs = getComputedStyle(node);\n const maxOf = (durations: number[], delays: number[]) =>\n durations.reduce(\n (max, duration, i) => Math.max(max, duration + (delays[i % delays.length] ?? 0)),\n 0,\n );\n return Math.max(\n maxOf(parseTimes(cs.transitionDuration), parseTimes(cs.transitionDelay)),\n maxOf(parseTimes(cs.animationDuration), parseTimes(cs.animationDelay)),\n );\n}\n\n/**\n * Defer unmount until the child's exit animation/transition finishes.\n * Pass `present={false}` to start the exit; the child stays mounted with\n * `data-state=\"closed\"` until its own `animationend`/`transitionend` fires\n * (or a computed-duration timeout as a fallback). If no exit animation\n * actually starts, the child unmounts immediately. On enter, the child\n * mounts with `data-state=\"closed\"` and flips to `\"open\"` on the next\n * frame so enter transitions play.\n */\nexport function Presence({ present, children }: PresenceProps): ReactElement | null {\n const [rendered, setRendered] = useState(present);\n const [dataState, setDataState] = useState<'open' | 'closed'>('closed');\n const ref = useRef<HTMLElement | null>(null);\n\n const child = isValidElement(children)\n ? (children as ReactElement<{ ref?: Ref<HTMLElement> }> & { ref?: Ref<HTMLElement> })\n : null;\n const composedRef = useComposedRefs(ref, child?.ref);\n\n // Enter — mount closed, then flip to open on the next frame (double rAF\n // so the closed styles are committed and painted first) to run transitions.\n useEffect(() => {\n if (!present) return;\n if (!rendered) {\n setRendered(true);\n return;\n }\n if (dataState === 'open') return;\n let raf2 = 0;\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setDataState('open'));\n });\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n };\n }, [present, rendered, dataState]);\n\n // Exit — flip to closed, then unmount when the child's own exit\n // animation/transition ends; immediately if none starts within a frame\n // window; or after the computed total duration as a safety net.\n useEffect(() => {\n if (present) return;\n const node = ref.current;\n if (!node) {\n setRendered(false);\n return;\n }\n let started = false;\n let timer: number | undefined;\n let raf2 = 0;\n const onStart = (event: Event) => {\n if (event.target === node) started = true;\n };\n const onEnd = (event: Event) => {\n if (event.target === node) setRendered(false);\n };\n node.addEventListener('animationstart', onStart);\n node.addEventListener('transitionrun', onStart);\n node.addEventListener('animationend', onEnd);\n node.addEventListener('transitionend', onEnd);\n // Flip the DOM synchronously so the start-detection window below is\n // deterministic; React re-renders to the same value via setDataState.\n node.setAttribute('data-state', 'closed');\n setDataState('closed');\n const raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => {\n const animating = started || (node.getAnimations?.().length ?? 0) > 0;\n if (!animating) {\n setRendered(false);\n return;\n }\n timer = window.setTimeout(() => setRendered(false), getTotalDurationMs(node) + 100);\n });\n });\n return () => {\n node.removeEventListener('animationstart', onStart);\n node.removeEventListener('transitionrun', onStart);\n node.removeEventListener('animationend', onEnd);\n node.removeEventListener('transitionend', onEnd);\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n if (timer !== undefined) window.clearTimeout(timer);\n };\n }, [present]);\n\n if (!rendered || !child) return null;\n return cloneElement(child, {\n ref: composedRef,\n 'data-state': dataState,\n } as Partial<typeof child.props>);\n}\n","import { createContext, useContext, type ReactNode } from 'react';\n\nexport type Direction = 'ltr' | 'rtl';\n\nconst DirectionContext = createContext<Direction>('ltr');\n\nexport interface DirectionProviderProps {\n dir: Direction;\n children: ReactNode;\n}\n\n/**\n * Provide reading direction to descendants. Components that mirror in RTL\n * (Tabs arrow keys, Slider, Carousel, etc.) read this via `useDirection()`.\n */\nexport function DirectionProvider({ dir, children }: DirectionProviderProps) {\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n}\n\nexport function useDirection(): Direction {\n return useContext(DirectionContext);\n}\n","import { cloneElement, isValidElement, type ReactElement } from 'react';\nimport { VisuallyHidden } from '../visuallyHidden/VisuallyHidden';\n\nexport interface AccessibleIconProps {\n /** Required accessible label for the icon. */\n label: string;\n /** Single icon element — will receive `aria-hidden` so SR reads only the label. */\n children: ReactElement;\n}\n\n/**\n * Wrap an icon-only element with an accessible label. The icon is hidden\n * from assistive tech and a `VisuallyHidden` sibling provides the label.\n */\nexport function AccessibleIcon({ label, children }: AccessibleIconProps) {\n const icon = isValidElement(children)\n ? cloneElement(children as ReactElement<{ 'aria-hidden'?: boolean | string; focusable?: string }>, {\n 'aria-hidden': 'true',\n focusable: 'false',\n })\n : children;\n return (\n <>\n {icon}\n <VisuallyHidden>{label}</VisuallyHidden>\n </>\n );\n}\n","import { FocusScope as RadixFocusScope } from '@radix-ui/react-focus-scope';\n\nexport type FocusScopeProps = React.ComponentProps<typeof RadixFocusScope>;\n\n/**\n * Trap focus within children. On unmount, returns focus to the previously\n * focused element. Pass `loop` to wrap Tab navigation; `trapped` to enable\n * the trap (default true while mounted).\n *\n * Wraps `@radix-ui/react-focus-scope` — battle-tested implementation.\n */\nexport const FocusScope = RadixFocusScope;\n","import {\n forwardRef,\n useEffect,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { useComposedRefs } from '../../utils/composeRefs';\n\ninterface LayerEntry {\n node: HTMLElement;\n onEscape?: (event: KeyboardEvent) => void;\n onOutsidePointerDown?: (event: PointerEvent) => void;\n}\n\nconst layerStack: LayerEntry[] = [];\n\nexport interface DismissableLayerProps extends HTMLAttributes<HTMLDivElement> {\n /** Called when Escape is pressed and this is the topmost layer. */\n onEscape?: (event: KeyboardEvent) => void;\n /** Called when a pointerdown lands outside this layer's DOM and this is topmost. */\n onOutsidePointerDown?: (event: PointerEvent) => void;\n /** Disable the Escape listener for this layer. */\n disableEscape?: boolean;\n /** Disable the outside-pointer-down listener for this layer. */\n disableOutsideClick?: boolean;\n}\n\n/**\n * Stack-aware dismissal layer. Multiple layers may stack (modal > popover);\n * only the topmost reacts to Escape / outside click. Used as the base of\n * Modal, Drawer, Popover, Menu, HoverCard, ContextMenu.\n */\nexport const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(\n (\n { onEscape, onOutsidePointerDown, disableEscape, disableOutsideClick, ...props },\n forwardedRef,\n ) => {\n const ref = useRef<HTMLDivElement | null>(null);\n\n // Keep callbacks in refs so the registration effect runs exactly once on\n // mount — re-registering on callback identity changes would splice the\n // layer to the end of the stack and corrupt dismissal ordering.\n const onEscapeRef = useRef(onEscape);\n const onOutsidePointerDownRef = useRef(onOutsidePointerDown);\n useEffect(() => {\n onEscapeRef.current = onEscape;\n onOutsidePointerDownRef.current = onOutsidePointerDown;\n });\n\n useEffect(() => {\n const node = ref.current;\n if (!node) return;\n const entry: LayerEntry = {\n node,\n onEscape: (event) => onEscapeRef.current?.(event),\n onOutsidePointerDown: (event) => onOutsidePointerDownRef.current?.(event),\n };\n layerStack.push(entry);\n return () => {\n const idx = layerStack.indexOf(entry);\n if (idx >= 0) layerStack.splice(idx, 1);\n };\n }, []);\n\n useEffect(() => {\n if (disableEscape) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Escape') return;\n const top = layerStack[layerStack.length - 1];\n if (top && top.node === ref.current) top.onEscape?.(e);\n };\n document.addEventListener('keydown', onKeyDown);\n return () => document.removeEventListener('keydown', onKeyDown);\n }, [disableEscape]);\n\n useEffect(() => {\n if (disableOutsideClick) return;\n const onPointer = (e: PointerEvent) => {\n const top = layerStack[layerStack.length - 1];\n if (!top || top.node !== ref.current) return;\n const target = e.target as Node | null;\n if (!target || ref.current?.contains(target)) return;\n top.onOutsidePointerDown?.(e);\n };\n document.addEventListener('pointerdown', onPointer, true);\n return () => document.removeEventListener('pointerdown', onPointer, true);\n }, [disableOutsideClick]);\n\n const composedRef = useComposedRefs(forwardedRef, ref);\n return <div ref={composedRef} {...props} />;\n },\n);\nDismissableLayer.displayName = 'DismissableLayer';\n","import {\n autoUpdate,\n flip,\n offset as offsetMiddleware,\n shift,\n size as sizeMiddleware,\n useFloating,\n type Placement,\n} from '@floating-ui/react';\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { composeRefs } from '../../utils/composeRefs';\n\nexport interface AnchoredPositionerProps extends HTMLAttributes<HTMLDivElement> {\n /** The element the floating layer should be anchored to. */\n anchor: HTMLElement | null;\n /** Floating UI placement. Default `bottom`. */\n placement?: Placement;\n /** Distance between anchor and floating element in px. Default 8. */\n offset?: number;\n /** Render the floating element only when open. */\n open?: boolean;\n children: ReactNode;\n}\n\n/**\n * Position children relative to an anchor element using Floating UI.\n * Auto-flips and shifts to stay in viewport. Use as the positioning surface\n * for Tooltip, Popover, Menu, HoverCard.\n *\n * Exposes the anchor's measured size as CSS variables on the floating\n * element, enabling consumers to size content relative to the trigger:\n *\n * style=\"--anchor-width: 240px; --anchor-height: 36px;\"\n *\n * Common pattern: `min-w-[var(--anchor-width)]` on a Select dropdown so\n * the panel never narrows below the trigger.\n */\nexport const AnchoredPositioner = forwardRef<HTMLDivElement, AnchoredPositionerProps>(\n (\n { anchor, placement = 'bottom', offset = 8, open = true, children, style, ...props },\n forwardedRef,\n ) => {\n const { refs, floatingStyles } = useFloating({\n open,\n placement,\n middleware: [\n offsetMiddleware(offset),\n flip(),\n shift({ padding: 8 }),\n sizeMiddleware({\n apply({ rects, elements }) {\n elements.floating.style.setProperty('--anchor-width', `${rects.reference.width}px`);\n elements.floating.style.setProperty(\n '--anchor-height',\n `${rects.reference.height}px`,\n );\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n elements: { reference: anchor },\n });\n\n if (!open) return null;\n\n return (\n <div\n ref={composeRefs(forwardedRef, refs.setFloating)}\n style={{ ...floatingStyles, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nAnchoredPositioner.displayName = 'AnchoredPositioner';\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport { useComposedRefs } from '../../utils/composeRefs';\nimport { useDirection } from '../directionProvider';\n\nexport type Orientation = 'horizontal' | 'vertical' | 'both';\n\ninterface ItemEntry {\n id: string;\n node: HTMLElement | null;\n}\n\ninterface RovingFocusContextValue {\n register: (id: string, node: HTMLElement | null) => void;\n unregister: (id: string) => void;\n focusedId: string | null;\n setFocusedId: (id: string) => void;\n onItemKeyDown: (event: KeyboardEvent, id: string) => void;\n /** True once the user has interacted with the group; reset when focus leaves. */\n interactedRef: RefObject<boolean>;\n groupRef: RefObject<HTMLDivElement | null>;\n}\n\nconst RovingFocusContext = createContext<RovingFocusContextValue | null>(null);\n\nexport interface RovingFocusGroupProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n loop?: boolean;\n children: ReactNode;\n}\n\n/**\n * Provide arrow-key navigation for a group of focusable children. Children\n * call `useRovingFocusItem()` to register and receive `tabIndex` / event\n * handlers. Used by Tabs, ToggleGroup, RadioGroup, Menu.\n */\nexport const RovingFocusGroup = forwardRef<HTMLDivElement, RovingFocusGroupProps>(\n function RovingFocusGroup(\n { orientation = 'horizontal', loop = true, children, ...props },\n ref,\n ) {\n const items = useRef<ItemEntry[]>([]);\n const [focusedId, setFocusedId] = useState<string | null>(null);\n const interactedRef = useRef(false);\n const groupRef = useRef<HTMLDivElement | null>(null);\n const composedRef = useComposedRefs(ref, groupRef);\n const direction = useDirection();\n\n const register = useCallback((id: string, node: HTMLElement | null) => {\n if (!items.current.some((item) => item.id === id)) {\n const entry: ItemEntry = { id, node };\n // Insert by DOM order (not mount order) so dynamically inserted\n // items navigate in visual order.\n const index = node\n ? items.current.findIndex(\n (item) =>\n item.node !== null &&\n (node.compareDocumentPosition(item.node) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0,\n )\n : -1;\n if (index === -1) items.current.push(entry);\n else items.current.splice(index, 0, entry);\n }\n setFocusedId((current) => current ?? id);\n }, []);\n\n const unregister = useCallback((id: string) => {\n const idx = items.current.findIndex((item) => item.id === id);\n items.current = items.current.filter((item) => item.id !== id);\n // If the tab stop unmounts, advance to the next remaining item (or\n // the first) so the group keeps exactly one tabbable item.\n setFocusedId((current) => {\n if (current !== id) return current;\n const next = items.current[idx] ?? items.current[0];\n return next ? next.id : null;\n });\n }, []);\n\n // Reset the interaction flag when focus leaves the group so tab-stop\n // bookkeeping (focusedId updates) never steals focus back.\n useEffect(() => {\n const node = groupRef.current;\n if (!node) return;\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n if (!next || !node.contains(next)) interactedRef.current = false;\n };\n node.addEventListener('focusout', onFocusOut);\n return () => node.removeEventListener('focusout', onFocusOut);\n }, []);\n\n const onItemKeyDown = useCallback(\n (event: KeyboardEvent, id: string) => {\n const list = items.current;\n const idx = list.findIndex((item) => item.id === id);\n if (idx === -1) return;\n const isVert = orientation === 'vertical' || orientation === 'both';\n const isHoriz = orientation === 'horizontal' || orientation === 'both';\n // Horizontal arrows mirror in RTL.\n const nextHorizKey = direction === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n const prevHorizKey = direction === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n let next = idx;\n if ((event.key === nextHorizKey && isHoriz) || (event.key === 'ArrowDown' && isVert)) {\n next = idx + 1;\n if (next >= list.length) next = loop ? 0 : list.length - 1;\n } else if ((event.key === prevHorizKey && isHoriz) || (event.key === 'ArrowUp' && isVert)) {\n next = idx - 1;\n if (next < 0) next = loop ? list.length - 1 : 0;\n } else if (event.key === 'Home') {\n next = 0;\n } else if (event.key === 'End') {\n next = list.length - 1;\n } else {\n return;\n }\n event.preventDefault();\n interactedRef.current = true;\n const entry = list[next];\n if (entry) setFocusedId(entry.id);\n },\n [orientation, loop, direction],\n );\n\n const value = useMemo(\n () => ({\n register,\n unregister,\n focusedId,\n setFocusedId,\n onItemKeyDown,\n interactedRef,\n groupRef,\n }),\n [register, unregister, focusedId, onItemKeyDown],\n );\n\n return (\n <RovingFocusContext.Provider value={value}>\n <div ref={composedRef} role=\"group\" {...props}>\n {children}\n </div>\n </RovingFocusContext.Provider>\n );\n },\n);\n\nexport interface UseRovingFocusItemOptions {\n /**\n * Marks this item as the preferred tab stop while focus is outside the\n * group (e.g. the selected tab), per the APG composite-widget pattern.\n */\n active?: boolean;\n}\n\nexport interface UseRovingFocusItemReturn {\n ref: (node: HTMLElement | null) => void;\n tabIndex: 0 | -1;\n onKeyDown: (event: KeyboardEvent) => void;\n onFocus: () => void;\n 'data-roving-focus-item': boolean;\n}\n\n/**\n * Inside a `RovingFocusGroup`, returns props to spread onto a focusable item.\n * Outside, returns inert props (tabIndex 0).\n */\nexport function useRovingFocusItem(\n options: UseRovingFocusItemOptions = {},\n): UseRovingFocusItemReturn {\n const { active = false } = options;\n const context = useContext(RovingFocusContext);\n const id = useId();\n const ref = useRef<HTMLElement | null>(null);\n\n const register = context?.register;\n const unregister = context?.unregister;\n useEffect(() => {\n register?.(id, ref.current);\n return () => unregister?.(id);\n }, [register, unregister, id]);\n\n // Move DOM focus only after user interaction — never on initial mount.\n const focusedId = context?.focusedId;\n const interactedRef = context?.interactedRef;\n useEffect(() => {\n if (\n focusedId === id &&\n interactedRef?.current &&\n ref.current &&\n document.activeElement !== ref.current\n ) {\n ref.current.focus();\n }\n }, [focusedId, interactedRef, id]);\n\n // Keep the active item (e.g. selected tab) as the tab stop whenever focus\n // is outside the group.\n const setFocusedId = context?.setFocusedId;\n const groupRef = context?.groupRef;\n useEffect(() => {\n if (!active || !setFocusedId || !groupRef) return;\n const groupNode = groupRef.current;\n if (!groupNode || !groupNode.contains(document.activeElement)) setFocusedId(id);\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n if (!next || !groupNode?.contains(next)) setFocusedId(id);\n };\n groupNode?.addEventListener('focusout', onFocusOut);\n return () => groupNode?.removeEventListener('focusout', onFocusOut);\n }, [active, setFocusedId, groupRef, id]);\n\n return {\n ref: (node) => {\n ref.current = node;\n },\n tabIndex: !context || context.focusedId === id ? 0 : -1,\n onKeyDown: (e) => context?.onItemKeyDown(e, id),\n onFocus: () => {\n if (!context) return;\n context.interactedRef.current = true;\n context.setFocusedId(id);\n },\n 'data-roving-focus-item': true,\n };\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type Context,\n type ReactNode,\n} from 'react';\n\nexport interface CollectionContextValue<T> {\n items: T[];\n register: (item: T) => void;\n unregister: (item: T) => void;\n}\n\n/**\n * Factory for a typed children-registry context. Compound components\n * (Menu, Tabs, Listbox) use this so the parent can iterate ordered children\n * without prop-drilling.\n */\nexport function createCollection<T>(): {\n Provider: (props: { children: ReactNode }) => ReactNode;\n useCollection: () => CollectionContextValue<T>;\n Context: Context<CollectionContextValue<T> | null>;\n} {\n const CollectionContext = createContext<CollectionContextValue<T> | null>(null);\n\n function Provider({ children }: { children: ReactNode }) {\n const [items, setItems] = useState<T[]>([]);\n const register = useCallback((item: T) => {\n setItems((prev) => (prev.includes(item) ? prev : [...prev, item]));\n }, []);\n const unregister = useCallback((item: T) => {\n setItems((prev) => prev.filter((i) => i !== item));\n }, []);\n const value = useMemo(() => ({ items, register, unregister }), [items, register, unregister]);\n return <CollectionContext.Provider value={value}>{children}</CollectionContext.Provider>;\n }\n\n function useCollection(): CollectionContextValue<T> {\n const ctx = useContext(CollectionContext);\n if (!ctx) {\n throw new Error('useCollection must be used inside its Provider');\n }\n return ctx;\n }\n\n return { Provider, useCollection, Context: CollectionContext };\n}\n","import { createContext, useContext, type ReactNode } from 'react';\nimport { useId } from '../../hooks/useId';\n\nexport interface FormControlContextValue {\n id: string;\n labelId: string;\n helperId: string;\n errorId: string;\n isInvalid: boolean;\n isDisabled: boolean;\n isRequired: boolean;\n isReadOnly: boolean;\n}\n\nconst Context = createContext<FormControlContextValue | null>(null);\n\nexport interface FormControlProviderProps {\n /** Override the auto-generated id (also used as control's `id`). */\n id?: string;\n isInvalid?: boolean;\n isDisabled?: boolean;\n isRequired?: boolean;\n isReadOnly?: boolean;\n children: ReactNode;\n}\n\n/**\n * Wires Label ↔ control ↔ HelperText/ErrorMessage via stable IDs and shared\n * state flags. Used by `FormField` (L4) — atoms (Input, Label, etc.) read\n * via `useFormControl()` to get the right `id`/`htmlFor`/`aria-describedby`.\n */\nexport function FormControlProvider({\n id: providedId,\n isInvalid = false,\n isDisabled = false,\n isRequired = false,\n isReadOnly = false,\n children,\n}: FormControlProviderProps) {\n const generatedId = useId();\n const id = providedId ?? generatedId;\n const value: FormControlContextValue = {\n id,\n labelId: `${id}-label`,\n helperId: `${id}-helper`,\n errorId: `${id}-error`,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n };\n return <Context.Provider value={value}>{children}</Context.Provider>;\n}\n\n/**\n * Read the surrounding form-control context. Returns `null` when used\n * outside a provider — atoms gracefully degrade to standalone mode.\n */\nexport function useFormControl(): FormControlContextValue | null {\n return useContext(Context);\n}\n","import { type ReactNode } from 'react';\nimport { useScrollLock } from '../../hooks/useScrollLock';\n\nexport interface ScrollLockProviderProps {\n enabled?: boolean;\n children: ReactNode;\n}\n\n/**\n * Component wrapper around `useScrollLock` — handy when scroll lock should\n * follow a child's mount lifecycle (e.g. inside a Modal's portal).\n * Multiple wrappers stack; lock releases when the count reaches zero.\n */\nexport function ScrollLockProvider({ enabled = true, children }: ScrollLockProviderProps) {\n useScrollLock(enabled);\n return <>{children}</>;\n}\n","import { forwardRef, type SVGAttributes } from 'react';\n\nexport interface OverlayArrowProps extends SVGAttributes<SVGSVGElement> {\n /** Arrow width in px. Default 12. */\n width?: number;\n /** Arrow height in px. Default 6. */\n height?: number;\n}\n\n/**\n * Tip-arrow primitive for floating overlays (Tooltip, Popover, HoverCard).\n *\n * Renders a minimal SVG triangle with `fill=\"currentColor\"` — color follows\n * the consuming overlay's background via Tailwind's `text-*` utilities.\n *\n * Pair with Floating UI's `arrow()` middleware to position. The middleware\n * exposes the arrow's `x` / `y` offset on the resolved data; consumers apply\n * those as inline styles to the wrapping span.\n */\nexport const OverlayArrow = forwardRef<SVGSVGElement, OverlayArrowProps>(\n function OverlayArrow({ width = 12, height = 6, fill = 'currentColor', ...rest }, ref) {\n return (\n <svg\n ref={ref}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n {...rest}\n >\n <polygon points={`0,0 ${width},0 ${width / 2},${height}`} fill={fill} />\n </svg>\n );\n },\n);\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AnnounceProps extends HTMLAttributes<HTMLDivElement> {\n /** `polite` → `role=\"status\"`, `assertive` → `role=\"alert\"`. Default `polite`. */\n politeness?: 'polite' | 'assertive';\n children?: ReactNode;\n}\n\n/**\n * Visually-hidden ARIA live region. Children are announced by screen readers\n * whenever they change. Pair with a stable mount + swappable children for\n * lightweight transient announcements (status updates, toast messages, etc.).\n */\nexport const Announce = forwardRef<HTMLDivElement, AnnounceProps>(\n ({ politeness = 'polite', className, children, ...rest }, ref) => (\n <div\n ref={ref}\n role={politeness === 'assertive' ? 'alert' : 'status'}\n aria-live={politeness}\n aria-atomic=\"true\"\n className={cn(\n 'absolute h-px w-px overflow-hidden whitespace-nowrap border-0 p-0',\n 'm-[-1px] [clip:rect(0_0_0_0)] [clip-path:inset(50%)]',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n ),\n);\nAnnounce.displayName = 'Announce';\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/layout/inline/Inline.tsx"],"names":[],"mappings":";;;;AAUA,IAAM,GAAA,GAAuD;AAAA,EAC3D,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK,OAAA;AAAA,EAAS,GAAA,EAAK;AAC3F,CAAA;AACA,IAAM,KAAA,GAA2D;AAAA,EAC/D,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,GAAA,EAAK,WAAA;AAAA,EACL,QAAA,EAAU;AACZ,CAAA;AAMO,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,GAAA,GAAM,GAAA,EAAK,KAAA,GAAQ,UAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrD,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,GAAG,gBAAA,EAAkB,GAAA,CAAI,GAAG,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,EAAG,SAAS,CAAA;AAAA,MAChE,GAAG;AAAA;AAAA;AAGV;AACA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-VR5HH4SX.js","sourcesContent":["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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerContent"],"mappings":"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","file":"chunk-VYOQYXK6.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nexport function Drawer({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nconst SIDE_BASE: Record<DrawerSide, string> = {\n right: 'inset-y-0 right-0 h-full w-full border-l animate-in slide-in-from-right',\n left: 'inset-y-0 left-0 h-full w-full border-r animate-in slide-in-from-left',\n top: 'inset-x-0 top-0 w-full border-b animate-in slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 w-full border-t animate-in slide-in-from-bottom',\n};\n\nconst HORIZONTAL_SIZE: Record<DrawerSize, string> = {\n sm: 'sm:max-w-sm',\n md: 'sm:max-w-md',\n lg: 'sm:max-w-lg',\n xl: 'sm:max-w-2xl',\n full: '',\n};\n\nconst VERTICAL_SIZE: Record<DrawerSize, string> = {\n sm: 'max-h-[40vh]',\n md: 'max-h-[60vh]',\n lg: 'max-h-[75vh]',\n xl: 'max-h-[85vh]',\n full: 'max-h-screen',\n};\n\n/** Represents the prop surface of `Drawer.Content`. */\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement>, SurfaceVariants {\n hideBackdrop?: boolean;\n blur?: boolean;\n /** Per-side max-size token. Default `md` (preserves prior behavior for right/left at `sm`-ish width via `sm:max-w-md`). */\n size?: DrawerSize;\n children: ReactNode;\n}\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n {\n hideBackdrop,\n blur,\n variant,\n tone,\n radius,\n padding,\n elevation,\n size = 'md',\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n const isHorizontal = ctx.side === 'right' || ctx.side === 'left';\n const sizeClass = isHorizontal ? HORIZONTAL_SIZE[size] : VERTICAL_SIZE[size];\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n if (!ctx.open) return null;\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n inline\n blur={blur}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n disableEscape={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n disableOutsideClick\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state=\"open\"\n data-side={ctx.side}\n className={cn(\n 'fixed z-modal flex flex-col gap-4 outline-none',\n surfaceVariants({\n variant: variant ?? 'elevated',\n tone,\n radius: radius ?? 'none',\n padding: padding ?? 'xl',\n elevation: elevation ?? 3,\n }),\n SIDE_BASE[ctx.side],\n sizeClass,\n className,\n )}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\ntype DrawerComponent = typeof Drawer & {\n Trigger: typeof DrawerTrigger;\n Content: typeof DrawerContent;\n Header: typeof DrawerHeader;\n Title: typeof DrawerTitle;\n Description: typeof DrawerDescription;\n Body: typeof DrawerBody;\n Footer: typeof DrawerFooter;\n Close: typeof DrawerClose;\n};\n\n(Drawer as DrawerComponent).Trigger = DrawerTrigger;\n(Drawer as DrawerComponent).Content = DrawerContent;\n(Drawer as DrawerComponent).Header = DrawerHeader;\n(Drawer as DrawerComponent).Title = DrawerTitle;\n(Drawer as DrawerComponent).Description = DrawerDescription;\n(Drawer as DrawerComponent).Body = DrawerBody;\n(Drawer as DrawerComponent).Footer = DrawerFooter;\n(Drawer as DrawerComponent).Close = DrawerClose;\n\nexport default Drawer as DrawerComponent;\n"]}
@@ -1 +0,0 @@
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/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","../src/layout/overlay/Overlay.variants.ts","../src/layout/overlay/Overlay.tsx","../src/layout/surface/Surface.tsx"],"names":["forwardRef","jsx","GAP","ResizablePanels","ResizablePanel","ResizableSeparator","PullToRefresh","useRef","useState","reached","useEffect","jsxs","createContext","useContext","AppShell","useMemo","AppShellHeader","AppShellSidebar","AppShellMain","AppShellContent","AppShellAside","AppShellFooter","isValidElement","COMPONENT_NAME","Surface"],"mappings":"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","file":"chunk-WOKIYORV.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 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 dragCleanupRef = useRef<(() => void) | null>(null);\n const panelCount = countPanels(children);\n\n // Unmounting mid-drag must release the window listeners + body style overrides.\n useEffect(() => () => dragCleanupRef.current?.(), []);\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 dragCleanupRef.current = null;\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 dragCleanupRef.current = 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 // Announce the panel BEFORE the separator — ArrowRight/ArrowDown grow that one,\n // so its size moves in the same direction as the key.\n const ariaValueNow = ctx.sizes[index] ?? 50;\n const panelBefore = ctx.panels.current[index];\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={panelBefore?.minSize ?? 0}\n aria-valuemax={panelBefore?.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 useEffect,\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 // Pointer was released outside the container — abandon the gesture.\n if (e.buttons === 0) {\n startYRef.current = null;\n setPull(0);\n return;\n }\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 // Touch: the browser's native vertical pan would fire pointercancel and kill\n // the gesture. preventDefault the touchmove only when a pull is in progress\n // (started at scrollTop 0, moving down) — normal scrolling stays native.\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const onTouchMove = (e: TouchEvent) => {\n if (startYRef.current == null || !e.cancelable) return;\n if (el.scrollTop > 0) return;\n const touch = e.touches[0];\n if (!touch) return;\n if (touch.clientY - startYRef.current > 0) e.preventDefault();\n };\n el.addEventListener('touchmove', onTouchMove, { passive: false });\n return () => el.removeEventListener('touchmove', onTouchMove);\n }, []);\n\n // Releasing the pointer outside the container must still finish the gesture.\n useEffect(() => {\n if (pull === 0) return;\n const finish = () => {\n void onPointerUp();\n };\n window.addEventListener('pointerup', finish);\n window.addEventListener('pointercancel', finish);\n return () => {\n window.removeEventListener('pointerup', finish);\n window.removeEventListener('pointercancel', finish);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pull]);\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 {...rest}\n >\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-x-0 top-0 z-raised 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\n// Complete class strings per breakpoint — Tailwind can't see interpolated names.\nconst SIDEBAR_STATIC_CLASSES: Record<Breakpoint, string> = {\n sm: 'hidden sm:flex',\n md: 'hidden md:flex',\n lg: 'hidden lg:flex',\n xl: 'hidden xl:flex',\n '2xl': 'hidden 2xl:flex',\n};\n\ninterface AppShellContextValue {\n sidebarWidth: string;\n asideWidth: string;\n sidebarBreakpoint: Breakpoint;\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 sidebarBreakpoint,\n sidebarOpen,\n setSidebarOpen,\n isSidebarCollapsed,\n isAsideHidden,\n }),\n [sidebarWidth, asideWidth, sidebarBreakpoint, 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-modal 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-sticky 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 h-[calc(100svh-3.5rem)] overflow-y-auto border-r border-border bg-card [grid-area:sidebar]',\n SIDEBAR_STATIC_CLASSES[ctx.sidebarBreakpoint],\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","import { tv, type VariantProps } from '../../utils';\n\n/* Overlay positioning + visibility + transition surface — see Overlay.standard.md + Overlay.spec.md. */\nexport const overlayVariants = tv({\n base: 'absolute',\n variants: {\n position: {\n 'top-right': 'top-[var(--ui-overlay-inset,0.5rem)] right-[var(--ui-overlay-inset,0.5rem)]',\n 'top-left': 'top-[var(--ui-overlay-inset,0.5rem)] left-[var(--ui-overlay-inset,0.5rem)]',\n 'bottom-right': 'bottom-[var(--ui-overlay-inset,0.5rem)] right-[var(--ui-overlay-inset,0.5rem)]',\n 'bottom-left': 'bottom-[var(--ui-overlay-inset,0.5rem)] left-[var(--ui-overlay-inset,0.5rem)]',\n 'top': 'top-[var(--ui-overlay-inset,0.5rem)] left-1/2 -translate-x-1/2',\n 'bottom': 'bottom-[var(--ui-overlay-inset,0.5rem)] left-1/2 -translate-x-1/2',\n 'left': 'left-[var(--ui-overlay-inset,0.5rem)] top-1/2 -translate-y-1/2',\n 'right': 'right-[var(--ui-overlay-inset,0.5rem)] top-1/2 -translate-y-1/2',\n 'center': 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'custom': '', // consumer passed inset object — positioning via inline style\n },\n visibilityMode: {\n 'always': '',\n 'hover': 'opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 group-hover:[transition-duration:var(--ui-overlay-enter,200ms)] group-focus-within:[transition-duration:var(--ui-overlay-enter,200ms)]',\n 'focus-within': 'opacity-0 group-focus-within:opacity-100 group-focus-within:[transition-duration:var(--ui-overlay-enter,200ms)]',\n 'presence': 'data-[state=closed]:opacity-0 data-[state=open]:[transition-duration:var(--ui-overlay-enter,200ms)]',\n },\n transition: {\n 'none': '',\n 'fade': 'transition-opacity duration-[var(--ui-overlay-exit,200ms)] ease-out',\n 'fade-scale': 'transition-[opacity,transform] duration-[var(--ui-overlay-exit,200ms)] ease-out',\n 'fade-slide-up': 'transition-[opacity,transform] duration-[var(--ui-overlay-exit,200ms)] ease-out',\n 'fade-slide-down': 'transition-[opacity,transform] duration-[var(--ui-overlay-exit,200ms)] ease-out',\n 'fade-slide-left': 'transition-[opacity,transform] duration-[var(--ui-overlay-exit,200ms)] ease-out',\n 'fade-slide-right': 'transition-[opacity,transform] duration-[var(--ui-overlay-exit,200ms)] ease-out',\n },\n },\n compoundVariants: [\n // === HOVER mode + transform-bearing transitions ===\n {\n visibilityMode: 'hover', transition: 'fade-scale',\n class:\n 'scale-95 group-hover:scale-100 group-focus-within:scale-100 ' +\n 'motion-reduce:scale-100 motion-reduce:group-hover:scale-100 motion-reduce:group-focus-within:scale-100',\n },\n {\n visibilityMode: 'hover', transition: 'fade-slide-up',\n class:\n 'translate-y-1 group-hover:translate-y-0 group-focus-within:translate-y-0 ' +\n 'motion-reduce:translate-y-0 motion-reduce:group-hover:translate-y-0 motion-reduce:group-focus-within:translate-y-0',\n },\n {\n visibilityMode: 'hover', transition: 'fade-slide-down',\n class:\n '-translate-y-1 group-hover:translate-y-0 group-focus-within:translate-y-0 ' +\n 'motion-reduce:translate-y-0 motion-reduce:group-hover:translate-y-0 motion-reduce:group-focus-within:translate-y-0',\n },\n {\n visibilityMode: 'hover', transition: 'fade-slide-left',\n class:\n 'translate-x-1 group-hover:translate-x-0 group-focus-within:translate-x-0 ' +\n 'motion-reduce:translate-x-0 motion-reduce:group-hover:translate-x-0 motion-reduce:group-focus-within:translate-x-0',\n },\n {\n visibilityMode: 'hover', transition: 'fade-slide-right',\n class:\n '-translate-x-1 group-hover:translate-x-0 group-focus-within:translate-x-0 ' +\n 'motion-reduce:translate-x-0 motion-reduce:group-hover:translate-x-0 motion-reduce:group-focus-within:translate-x-0',\n },\n\n // === FOCUS-WITHIN mode + transform-bearing transitions ===\n {\n visibilityMode: 'focus-within', transition: 'fade-scale',\n class: 'scale-95 group-focus-within:scale-100 motion-reduce:scale-100 motion-reduce:group-focus-within:scale-100',\n },\n {\n visibilityMode: 'focus-within', transition: 'fade-slide-up',\n class: 'translate-y-1 group-focus-within:translate-y-0 motion-reduce:translate-y-0 motion-reduce:group-focus-within:translate-y-0',\n },\n {\n visibilityMode: 'focus-within', transition: 'fade-slide-down',\n class: '-translate-y-1 group-focus-within:translate-y-0 motion-reduce:translate-y-0 motion-reduce:group-focus-within:translate-y-0',\n },\n {\n visibilityMode: 'focus-within', transition: 'fade-slide-left',\n class: 'translate-x-1 group-focus-within:translate-x-0 motion-reduce:translate-x-0 motion-reduce:group-focus-within:translate-x-0',\n },\n {\n visibilityMode: 'focus-within', transition: 'fade-slide-right',\n class: '-translate-x-1 group-focus-within:translate-x-0 motion-reduce:translate-x-0 motion-reduce:group-focus-within:translate-x-0',\n },\n\n // === PRESENCE mode (data-state-driven) + transform-bearing transitions ===\n {\n visibilityMode: 'presence', transition: 'fade-scale',\n class: 'data-[state=closed]:scale-95 motion-reduce:data-[state=closed]:scale-100',\n },\n {\n visibilityMode: 'presence', transition: 'fade-slide-up',\n class: 'data-[state=closed]:translate-y-1 motion-reduce:data-[state=closed]:translate-y-0',\n },\n {\n visibilityMode: 'presence', transition: 'fade-slide-down',\n class: 'data-[state=closed]:-translate-y-1 motion-reduce:data-[state=closed]:translate-y-0',\n },\n {\n visibilityMode: 'presence', transition: 'fade-slide-left',\n class: 'data-[state=closed]:translate-x-1 motion-reduce:data-[state=closed]:translate-x-0',\n },\n {\n visibilityMode: 'presence', transition: 'fade-slide-right',\n class: 'data-[state=closed]:-translate-x-1 motion-reduce:data-[state=closed]:translate-x-0',\n },\n ],\n defaultVariants: {\n position: 'top-right',\n visibilityMode: 'always',\n transition: 'none',\n },\n});\n\nexport type OverlayVariants = VariantProps<typeof overlayVariants>;\n","import {\n forwardRef,\n isValidElement,\n type CSSProperties,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {\n cn,\n CssExtensions,\n TransitionExtensions,\n type SizeValue,\n type AbsolutePosition,\n type AbsolutePositionPreset,\n type AbsoluteInsetOverrides,\n type PresenceAnimationDurationProp,\n} from '../../utils';\nimport { Slot, Presence } from '../../primitives';\nimport { overlayVariants } from './Overlay.variants';\n\nconst COMPONENT_NAME = 'Overlay';\n\n/* Re-exported for ergonomic consumer imports — same shape as the shared types. */\nexport type OverlayPosition = AbsolutePosition;\nexport type OverlayAppearOn = 'always' | 'hover' | 'focus-within';\nexport type OverlayTransition =\n | 'none'\n | 'fade'\n | 'fade-scale'\n | 'fade-slide-up'\n | 'fade-slide-down'\n | 'fade-slide-left'\n | 'fade-slide-right';\nexport type OverlayDuration = PresenceAnimationDurationProp;\n\nexport interface OverlayProps {\n /* Anchor location — preset corner/edge/center, or raw inset object. Default 'top-right'. */\n position?: OverlayPosition;\n\n /* Spacing from edge for preset positions. Default '0.5rem'. Ignored for custom inset object. */\n inset?: SizeValue;\n\n /* z-index. Default 10. */\n zIndex?: number | string;\n\n /* Visibility trigger while mounted. Default 'always'. Hover / focus-within modes require parent `className=\"group\"`. */\n appearOn?: OverlayAppearOn;\n\n /* Optional presence — when provided, controls mount/unmount with exit transition (defers unmount until transitionend). */\n isOpen?: boolean;\n\n /* Animation effect for show/hide. Defaults to 'fade' if any visibility gating is active, else 'none'. */\n transition?: OverlayTransition;\n\n /* Duration in ms. Number = symmetric; object = asymmetric enter/exit. Default 200. */\n transitionDuration?: OverlayDuration;\n\n /* CSS timing function. Default 'ease-out'. */\n transitionEasing?: string;\n\n /* Render as the single child element via Slot (no extra wrapper div). Default true. */\n asChild?: boolean;\n\n /* Extra classes merged onto the rendered element (or wrapper when asChild=false). */\n className?: string;\n\n /* Extra inline styles merged onto the rendered element. */\n style?: CSSProperties;\n\n /* Single React element when asChild=true (default), or arbitrary content when asChild=false. */\n children: ReactNode;\n}\n\n/* Renders a positioned overlay anchored to its nearest positioned ancestor — for image-corner controls, badges, hover-revealed actions, and conditionally mounted floating elements. */\nexport const Overlay = forwardRef<HTMLElement, OverlayProps>(\n (\n {\n position = 'top-right',\n inset,\n zIndex = 10,\n appearOn = 'always',\n isOpen,\n transition,\n transitionDuration,\n transitionEasing,\n asChild = true,\n className,\n style,\n children,\n },\n forwardedRef,\n ) => {\n const isPresenceMode = isOpen !== undefined;\n const isCustomPosition = typeof position === 'object' && position !== null;\n\n const effectiveTransition: OverlayTransition =\n transition ??\n (isPresenceMode || appearOn !== 'always' ? 'fade' : 'none');\n\n const visibilityMode: 'always' | 'hover' | 'focus-within' | 'presence' =\n isPresenceMode\n ? 'presence'\n : appearOn === 'hover'\n ? 'hover'\n : appearOn === 'focus-within'\n ? 'focus-within'\n : 'always';\n\n const { enter, exit } = TransitionExtensions.resolveDuration(transitionDuration);\n\n const inlineStyle: CSSProperties & Record<string, string | number> = {\n ...style,\n zIndex,\n // CSS vars consumed by tailwind variants — exit is the baseline\n // transition-duration; enter overrides it on hover / focus-within / open.\n ['--ui-overlay-enter' as string]: `${enter}ms`,\n ['--ui-overlay-exit' as string]: `${exit}ms`,\n };\n\n if (inset !== undefined) {\n inlineStyle['--ui-overlay-inset'] = CssExtensions.toCss(inset);\n }\n\n if (transitionEasing) {\n inlineStyle.transitionTimingFunction = transitionEasing;\n }\n\n if (isCustomPosition) {\n const p = position as AbsoluteInsetOverrides;\n if (p.top !== undefined) inlineStyle.top = CssExtensions.toCss(p.top);\n if (p.right !== undefined) inlineStyle.right = CssExtensions.toCss(p.right);\n if (p.bottom !== undefined) inlineStyle.bottom = CssExtensions.toCss(p.bottom);\n if (p.left !== undefined) inlineStyle.left = CssExtensions.toCss(p.left);\n }\n\n const classes = cn(\n overlayVariants({\n position: isCustomPosition ? 'custom' : (position as AbsolutePositionPreset),\n visibilityMode,\n transition: effectiveTransition,\n }),\n className,\n );\n\n const renderRoot = (extra?: Record<string, unknown>): ReactElement | null => {\n if (asChild) {\n if (!isValidElement(children)) return null;\n return (\n <Slot\n ref={forwardedRef as Ref<HTMLElement>}\n className={classes}\n style={inlineStyle}\n {...extra}\n >\n {children}\n </Slot>\n );\n }\n return (\n <div\n ref={forwardedRef as Ref<HTMLDivElement>}\n className={classes}\n style={inlineStyle}\n {...extra}\n >\n {children}\n </div>\n );\n };\n\n if (isPresenceMode) {\n const root = renderRoot();\n if (!root) return null;\n return <Presence present={isOpen}>{root}</Presence>;\n }\n\n return renderRoot();\n },\n);\n\nOverlay.displayName = COMPONENT_NAME;\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ElementType,\n type Ref,\n} from 'react';\nimport { Slot } from '../../primitives';\nimport { cn, surfaceVariants, type SurfaceVariants } from '../../utils';\n\nconst COMPONENT_NAME = 'Surface';\n\n/** Represents the prop surface of the `Surface` atom. */\nexport interface SurfaceProps\n extends Omit<ComponentPropsWithoutRef<'div'>, 'children'>,\n SurfaceVariants {\n /** Names the HTML element to render; defaults to `div`. */\n as?: ElementType;\n /** Merges styles onto the immediate child instead of rendering a wrapper. */\n asChild?: boolean;\n children?: React.ReactNode;\n}\n\n/** Provides a styled visual surface composed from the `surfaceVariants` matrix. */\nexport const Surface = forwardRef<HTMLElement, SurfaceProps>(function Surface(\n {\n as: Component = 'div',\n asChild = false,\n variant,\n tone,\n radius,\n padding,\n elevation,\n className,\n children,\n ...rest\n },\n ref,\n) {\n const composed = cn(\n surfaceVariants({ variant, tone, radius, padding, elevation }),\n className,\n );\n\n if (asChild) {\n return (\n <Slot ref={ref as Ref<HTMLElement>} className={composed} {...rest}>\n {children}\n </Slot>\n );\n }\n\n return (\n <Component ref={ref as Ref<HTMLElement>} className={composed} {...rest}>\n {children}\n </Component>\n );\n});\n\nSurface.displayName = COMPONENT_NAME;\n"]}