@misael703/ui 1.41.0 → 1.41.2

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 (122) hide show
  1. package/dist/{chunk-42EYBIRW.js → chunk-2PNXLTEM.js} +3 -3
  2. package/dist/{chunk-42EYBIRW.js.map → chunk-2PNXLTEM.js.map} +1 -1
  3. package/dist/{chunk-M5LAEA7D.mjs → chunk-3AW3TK6D.mjs} +3 -3
  4. package/dist/{chunk-M5LAEA7D.mjs.map → chunk-3AW3TK6D.mjs.map} +1 -1
  5. package/dist/{chunk-4WGXCRNN.js → chunk-3JRP3DGM.js} +3 -3
  6. package/dist/{chunk-4WGXCRNN.js.map → chunk-3JRP3DGM.js.map} +1 -1
  7. package/dist/{chunk-726G5C65.mjs → chunk-3JYYZOEJ.mjs} +3 -3
  8. package/dist/{chunk-726G5C65.mjs.map → chunk-3JYYZOEJ.mjs.map} +1 -1
  9. package/dist/{chunk-ABN634QO.js → chunk-565UJQ2M.js} +4 -4
  10. package/dist/{chunk-ABN634QO.js.map → chunk-565UJQ2M.js.map} +1 -1
  11. package/dist/{chunk-JZ3JAEK4.mjs → chunk-63LUAWJS.mjs} +5 -5
  12. package/dist/{chunk-JZ3JAEK4.mjs.map → chunk-63LUAWJS.mjs.map} +1 -1
  13. package/dist/{chunk-3PRLAG7L.mjs → chunk-7HYCP6SX.mjs} +4 -4
  14. package/dist/{chunk-3PRLAG7L.mjs.map → chunk-7HYCP6SX.mjs.map} +1 -1
  15. package/dist/{chunk-TW54NMEG.js → chunk-AGMDYCGG.js} +4 -4
  16. package/dist/{chunk-TW54NMEG.js.map → chunk-AGMDYCGG.js.map} +1 -1
  17. package/dist/{chunk-K5B6WQFI.js → chunk-C7UG47HQ.js} +5 -5
  18. package/dist/{chunk-K5B6WQFI.js.map → chunk-C7UG47HQ.js.map} +1 -1
  19. package/dist/{chunk-BB4WO2VU.js → chunk-D44PGK5V.js} +4 -4
  20. package/dist/{chunk-BB4WO2VU.js.map → chunk-D44PGK5V.js.map} +1 -1
  21. package/dist/{chunk-Z5PAD5A6.mjs → chunk-DH3IXJRJ.mjs} +4 -4
  22. package/dist/{chunk-Z5PAD5A6.mjs.map → chunk-DH3IXJRJ.mjs.map} +1 -1
  23. package/dist/{chunk-NZKXHTM4.js → chunk-F3PTSBHH.js} +6 -6
  24. package/dist/{chunk-NZKXHTM4.js.map → chunk-F3PTSBHH.js.map} +1 -1
  25. package/dist/{chunk-4GF3YGPG.mjs → chunk-FD3Y5IP7.mjs} +4 -4
  26. package/dist/{chunk-4GF3YGPG.mjs.map → chunk-FD3Y5IP7.mjs.map} +1 -1
  27. package/dist/{chunk-RO6HVZYY.mjs → chunk-FHOI6O37.mjs} +3 -3
  28. package/dist/{chunk-RO6HVZYY.mjs.map → chunk-FHOI6O37.mjs.map} +1 -1
  29. package/dist/{chunk-I7URH4F2.mjs → chunk-FR4JV3JA.mjs} +3 -3
  30. package/dist/{chunk-I7URH4F2.mjs.map → chunk-FR4JV3JA.mjs.map} +1 -1
  31. package/dist/{chunk-3TFYIWFE.mjs → chunk-G5I2VVOC.mjs} +3 -3
  32. package/dist/{chunk-3TFYIWFE.mjs.map → chunk-G5I2VVOC.mjs.map} +1 -1
  33. package/dist/{chunk-732BPQGZ.js → chunk-HCTY5QYL.js} +3 -3
  34. package/dist/{chunk-732BPQGZ.js.map → chunk-HCTY5QYL.js.map} +1 -1
  35. package/dist/{chunk-3T7MQEQG.mjs → chunk-HWOG3TZD.mjs} +3 -3
  36. package/dist/{chunk-3T7MQEQG.mjs.map → chunk-HWOG3TZD.mjs.map} +1 -1
  37. package/dist/{chunk-YOGHWG36.js → chunk-JFYTJUT3.js} +4 -4
  38. package/dist/{chunk-YOGHWG36.js.map → chunk-JFYTJUT3.js.map} +1 -1
  39. package/dist/{chunk-WFLK2VUW.mjs → chunk-JHSQYS7K.mjs} +4 -4
  40. package/dist/{chunk-WFLK2VUW.mjs.map → chunk-JHSQYS7K.mjs.map} +1 -1
  41. package/dist/{chunk-OQXOF34S.js → chunk-JJ54RD36.js} +5 -5
  42. package/dist/{chunk-OQXOF34S.js.map → chunk-JJ54RD36.js.map} +1 -1
  43. package/dist/{chunk-QR6X2UOT.mjs → chunk-JMFDIN5R.mjs} +3 -3
  44. package/dist/{chunk-QR6X2UOT.mjs.map → chunk-JMFDIN5R.mjs.map} +1 -1
  45. package/dist/{chunk-KJ6YAYWS.js → chunk-MW7HQCFC.js} +3 -3
  46. package/dist/{chunk-KJ6YAYWS.js.map → chunk-MW7HQCFC.js.map} +1 -1
  47. package/dist/{chunk-PURAG4KZ.js → chunk-NGHLETWP.js} +89 -89
  48. package/dist/chunk-NGHLETWP.js.map +1 -0
  49. package/dist/{chunk-POHLWLZI.mjs → chunk-NOOE5MAD.mjs} +89 -89
  50. package/dist/chunk-NOOE5MAD.mjs.map +1 -0
  51. package/dist/{chunk-PUEGDRTJ.mjs → chunk-NS6CI6RP.mjs} +3 -3
  52. package/dist/{chunk-PUEGDRTJ.mjs.map → chunk-NS6CI6RP.mjs.map} +1 -1
  53. package/dist/{chunk-JZNUYA42.js → chunk-NU4GAGUV.js} +3 -3
  54. package/dist/{chunk-JZNUYA42.js.map → chunk-NU4GAGUV.js.map} +1 -1
  55. package/dist/{chunk-VC46KCRL.mjs → chunk-OIYIWG53.mjs} +4 -4
  56. package/dist/{chunk-VC46KCRL.mjs.map → chunk-OIYIWG53.mjs.map} +1 -1
  57. package/dist/{chunk-SAAU2FYV.js → chunk-P6ZVZXTC.js} +4 -4
  58. package/dist/{chunk-SAAU2FYV.js.map → chunk-P6ZVZXTC.js.map} +1 -1
  59. package/dist/{chunk-5ELGA7CC.js → chunk-PFPD2HFZ.js} +3 -3
  60. package/dist/{chunk-5ELGA7CC.js.map → chunk-PFPD2HFZ.js.map} +1 -1
  61. package/dist/{chunk-LKWQ3TDU.js → chunk-T2LO33GM.js} +3 -3
  62. package/dist/{chunk-LKWQ3TDU.js.map → chunk-T2LO33GM.js.map} +1 -1
  63. package/dist/{chunk-MATGDAGX.js → chunk-TX4BUYX4.js} +4 -4
  64. package/dist/{chunk-MATGDAGX.js.map → chunk-TX4BUYX4.js.map} +1 -1
  65. package/dist/{chunk-IRYSQWA3.js → chunk-UOWBU443.js} +4 -4
  66. package/dist/{chunk-IRYSQWA3.js.map → chunk-UOWBU443.js.map} +1 -1
  67. package/dist/{chunk-Y3IPKGOU.mjs → chunk-VOSVV3LL.mjs} +6 -6
  68. package/dist/{chunk-Y3IPKGOU.mjs.map → chunk-VOSVV3LL.mjs.map} +1 -1
  69. package/dist/{chunk-HFRMDYNW.mjs → chunk-X36H75RR.mjs} +3 -3
  70. package/dist/{chunk-HFRMDYNW.mjs.map → chunk-X36H75RR.mjs.map} +1 -1
  71. package/dist/{chunk-3J4FCDMO.js → chunk-YIGSCVHS.js} +5 -5
  72. package/dist/{chunk-3J4FCDMO.js.map → chunk-YIGSCVHS.js.map} +1 -1
  73. package/dist/{chunk-ZTAAFZNC.mjs → chunk-YXUYWO2W.mjs} +3 -3
  74. package/dist/{chunk-ZTAAFZNC.mjs.map → chunk-YXUYWO2W.mjs.map} +1 -1
  75. package/dist/{chunk-7URTBILN.mjs → chunk-ZK6OK55L.mjs} +3 -3
  76. package/dist/{chunk-7URTBILN.mjs.map → chunk-ZK6OK55L.mjs.map} +1 -1
  77. package/dist/components/AdvancedPickers.js +8 -8
  78. package/dist/components/AdvancedPickers.mjs +4 -4
  79. package/dist/components/AppShell.js +8 -8
  80. package/dist/components/AppShell.mjs +6 -6
  81. package/dist/components/Comments.js +7 -7
  82. package/dist/components/Comments.mjs +4 -4
  83. package/dist/components/Commerce.js +18 -18
  84. package/dist/components/Commerce.mjs +7 -7
  85. package/dist/components/ContextMenu.js +3 -3
  86. package/dist/components/ContextMenu.mjs +2 -2
  87. package/dist/components/DataTable.js +8 -8
  88. package/dist/components/DataTable.mjs +2 -2
  89. package/dist/components/Display2.js +7 -7
  90. package/dist/components/Display2.mjs +3 -3
  91. package/dist/components/Display3.js +11 -11
  92. package/dist/components/Display3.mjs +5 -5
  93. package/dist/components/Editing.js +12 -12
  94. package/dist/components/Editing.mjs +7 -7
  95. package/dist/components/HoverCard.js +3 -3
  96. package/dist/components/HoverCard.mjs +2 -2
  97. package/dist/components/InputsExtra.js +11 -11
  98. package/dist/components/InputsExtra.mjs +2 -2
  99. package/dist/components/Layout.js +21 -21
  100. package/dist/components/Layout.mjs +2 -2
  101. package/dist/components/Logo.js +3 -3
  102. package/dist/components/Logo.mjs +2 -2
  103. package/dist/components/Menubar.js +3 -3
  104. package/dist/components/Menubar.mjs +2 -2
  105. package/dist/components/NavigationMenu.js +4 -4
  106. package/dist/components/NavigationMenu.mjs +3 -3
  107. package/dist/components/Overlay.js +8 -8
  108. package/dist/components/Overlay.mjs +6 -6
  109. package/dist/components/Pickers.js +9 -9
  110. package/dist/components/Pickers.mjs +4 -4
  111. package/dist/components/Popover.js +3 -3
  112. package/dist/components/Popover.mjs +2 -2
  113. package/dist/components/TimeAgo.js +5 -5
  114. package/dist/components/TimeAgo.mjs +3 -3
  115. package/dist/hooks/index.js +10 -10
  116. package/dist/hooks/index.mjs +2 -2
  117. package/dist/index.js +245 -245
  118. package/dist/index.mjs +31 -31
  119. package/dist/styles.css +1 -1
  120. package/package.json +1 -1
  121. package/dist/chunk-POHLWLZI.mjs.map +0 -1
  122. package/dist/chunk-PURAG4KZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Layout.tsx"],"names":["React","jsx","cx","Table","usePopoverPosition","jsxs","Portal","Divider","Separator","Stack","HStack","VStack","Cluster","Fragment","ListGroup","ListGroupItem","Check"],"mappings":"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","file":"chunk-LKWQ3TDU.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { Separator } from './Primitives';\n\n// ---------- Tabs ---------------------------------------------------------\ninterface TabsContextValue {\n value: string;\n setValue: (v: string) => void;\n}\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport interface TabsProps {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Tabs({ value, defaultValue, onChange, children, className }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? '');\n const v = value ?? internal;\n const setV = (next: string) => {\n if (value === undefined) setInternal(next);\n onChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ value: v, setValue: setV }}>\n <div className={cx('tabs', className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabList({ children, className }: { children: React.ReactNode; className?: string }) {\n return <div role=\"tablist\" className={cx('tabs__list', className)}>{children}</div>;\n}\n\nexport interface TabProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<Tab> must be used inside <Tabs>');\n const active = ctx.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={cx('tabs__tab', active && 'is-active', className)}\n onClick={() => ctx.setValue(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport function TabPanel({ value, children, className }: { value: string; children: React.ReactNode; className?: string }) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<TabPanel> must be used inside <Tabs>');\n if (ctx.value !== value) return null;\n return <div role=\"tabpanel\" className={cx('tabs__panel', className)}>{children}</div>;\n}\n\n// ---------- Table --------------------------------------------------------\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n function Table({ className, ...rest }, ref) {\n return (\n <div className=\"table-wrap\">\n <table ref={ref} className={cx('table', className)} {...rest} />\n </div>\n );\n }\n);\n\n// ---------- Tooltip (CSS hover) ------------------------------------------\nexport interface TooltipProps {\n label: React.ReactNode;\n children: React.ReactElement;\n side?: 'top' | 'bottom' | 'left' | 'right';\n}\n\nexport function Tooltip({ label, children, side = 'top' }: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLSpanElement>(null);\n const bubbleRef = React.useRef<HTMLSpanElement>(null);\n const reactId = React.useId();\n const bubbleId = `${reactId}-tooltip`;\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n const show = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), 150);\n };\n const hide = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), 80);\n };\n\n React.useEffect(() => () => clear(), []);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false);\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open]);\n\n const pos = usePopoverPosition(wrapRef, bubbleRef, {\n open,\n side,\n align: 'center',\n offset: 8,\n });\n\n const child = React.cloneElement(children, {\n 'aria-describedby': open ? bubbleId : children.props['aria-describedby'],\n });\n\n return (\n <span\n ref={wrapRef}\n className={cx('tooltip', `tooltip--${side}`)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {child}\n {open && (\n <Portal>\n <span\n ref={bubbleRef}\n id={bubbleId}\n role=\"tooltip\"\n className={cx('tooltip__bubble', 'is-floating')}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n opacity: pos.ready ? 1 : 0,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {label}\n </span>\n </Portal>\n )}\n </span>\n );\n}\n\n// ---------- Divider ------------------------------------------------------\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * @deprecated Use `Separator` instead. `Divider` is a non-breaking alias kept\n * for existing consumers: it delegates to `Separator` with `decorative={false}`\n * (preserving the original `role=\"separator\"` semantics) and keeps emitting the\n * legacy `divider` / `divider--vertical` classes so styling is unchanged. New\n * code should import `Separator`.\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', className, ...rest },\n ref\n) {\n return (\n <Separator\n ref={ref}\n orientation={orientation}\n decorative={false}\n className={cx('divider', orientation === 'vertical' && 'divider--vertical', className)}\n {...rest}\n />\n );\n});\n\n// ---------- Stack / HStack / VStack -------------------------------------\ntype SpaceToken = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'row' | 'column';\n gap?: SpaceToken;\n align?: React.CSSProperties['alignItems'];\n justify?: React.CSSProperties['justifyContent'];\n wrap?: boolean;\n inline?: boolean;\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(function Stack(\n { direction = 'column', gap = 4, align, justify, wrap, inline, className, style, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('stack', className)}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: `var(--space-${gap})`,\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? 'wrap' : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function HStack(props, ref) {\n return <Stack ref={ref} direction=\"row\" align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport const VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function VStack(props, ref) {\n return <Stack ref={ref} direction=\"column\" {...props} />;\n }\n);\n\n// ---------- Container ----------------------------------------------------\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nconst CONTAINER_MAX = { sm: 640, md: 768, lg: 1024, xl: 1280, full: '100%' };\n\nexport function Container({ size = 'lg', className, style, ...rest }: ContainerProps) {\n return (\n <div\n className={cx('container', `container--${size}`, className)}\n style={{\n // border-box so `width: 100%` includes the inline gutter. Without\n // it (content-box default) the padding adds OUTSIDE the 100%, so\n // the container renders 2×var(--space-4) wider than its parent and\n // overflows any width-constrained context (a column, a card, a\n // narrow viewport). Masked on a full-viewport page by the body's\n // own margins, but a real bug elsewhere.\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: CONTAINER_MAX[size],\n marginInline: 'auto',\n paddingInline: 'var(--space-4)',\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- Grid ---------------------------------------------------------\n/**\n * Column count. A number/string is fixed; an object is responsive per\n * breakpoint (each breakpoint inherits the previous one if omitted).\n * Breakpoints match the kit tokens: sm 480 · md 768 · lg 1024 · xl 1280.\n */\nexport type ResponsiveColumns =\n | number\n | string\n | { base?: number; sm?: number; md?: number; lg?: number; xl?: number };\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: ResponsiveColumns;\n gap?: SpaceToken;\n /** Intrinsically responsive auto-fit columns; takes precedence over `columns`. */\n minColWidth?: number | string;\n}\n\nexport function Grid({ columns, gap = 4, minColWidth, className, style, ...rest }: GridProps) {\n const gapVar = `var(--space-${gap})`;\n\n // auto-fit: intrinsic responsiveness, no breakpoints needed.\n if (minColWidth) {\n const w = typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth;\n return (\n <div\n className={cx('grid', className)}\n style={{ display: 'grid', gridTemplateColumns: `repeat(auto-fit, minmax(${w}, 1fr))`, gap: gapVar, ...style }}\n {...rest}\n />\n );\n }\n\n // Responsive object: emit per-breakpoint custom props; `.grid--responsive`\n // (in index.css) reads them through media queries with an inherit chain.\n if (columns && typeof columns === 'object') {\n const vars: Record<string, string> = {};\n if (columns.base != null) vars['--grid-cols'] = String(columns.base);\n if (columns.sm != null) vars['--grid-cols-sm'] = String(columns.sm);\n if (columns.md != null) vars['--grid-cols-md'] = String(columns.md);\n if (columns.lg != null) vars['--grid-cols-lg'] = String(columns.lg);\n if (columns.xl != null) vars['--grid-cols-xl'] = String(columns.xl);\n return (\n <div\n className={cx('grid', 'grid--responsive', className)}\n style={{ gap: gapVar, ...vars, ...style } as React.CSSProperties}\n {...rest}\n />\n );\n }\n\n const tpl = typeof columns === 'number'\n ? `repeat(${columns}, minmax(0, 1fr))`\n : columns ?? 'repeat(12, minmax(0, 1fr))';\n return (\n <div\n className={cx('grid', className)}\n style={{ display: 'grid', gridTemplateColumns: tpl, gap: gapVar, ...style }}\n {...rest}\n />\n );\n}\n\n// ---------- Cluster / Spacer --------------------------------------------\n/**\n * Horizontal group that wraps — the \"cluster\" layout primitive (Braid /\n * Every Layout). Sugar for `<Stack direction=\"row\" wrap>`. Use for tag\n * lists, button rows, filter chips: items flow and wrap, gap stays even.\n */\nexport const Cluster = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction' | 'wrap'>>(\n function Cluster(props, ref) {\n return <Stack ref={ref} direction=\"row\" wrap align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport interface SpacerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Fixed size on a space token. Omit for a flexible spacer (`flex: 1`). */\n size?: SpaceToken;\n}\n\n/**\n * Spacing element. With `size`, a fixed gap on the space scale. Without it,\n * a flexible spacer that eats remaining space in a flex container (pushes\n * siblings apart) — e.g. a toolbar with left items + `<Spacer />` + right\n * items.\n */\nexport function Spacer({ size, style, ...rest }: SpacerProps) {\n return (\n <div\n aria-hidden=\"true\"\n style={\n size != null\n ? { flex: '0 0 auto', width: `var(--space-${size})`, height: `var(--space-${size})`, ...style }\n : { flex: '1 1 auto', ...style }\n }\n {...rest}\n />\n );\n}\n\n// ---------- KeyValue ----------------------------------------------------\nexport interface KeyValueProps extends React.HTMLAttributes<HTMLDListElement> {\n /** Override del ancho de la columna de keys (default 200px) */\n keyWidth?: number | string;\n}\n\nexport function KeyValue({ keyWidth, className, style, ...rest }: KeyValueProps) {\n return (\n <dl\n className={cx('kv', className)}\n style={keyWidth ? { gridTemplateColumns: `${typeof keyWidth === 'number' ? `${keyWidth}px` : keyWidth} 1fr`, ...style } : style}\n {...rest}\n />\n );\n}\n\nexport interface KeyValueRowProps {\n label: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function KeyValueRow({ label, children }: KeyValueRowProps) {\n return (\n <>\n <dt className=\"kv__k\">{label}</dt>\n <dd className=\"kv__v\">{children}</dd>\n </>\n );\n}\n\n// ---------- ListGroup ---------------------------------------------------\nexport const ListGroup = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n function ListGroup({ className, ...rest }, ref) {\n return <ul ref={ref} className={cx('list-group', className)} {...rest} />;\n }\n);\n\nexport interface ListGroupItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n interactive?: boolean;\n}\n\nexport const ListGroupItem = React.forwardRef<HTMLLIElement, ListGroupItemProps>(\n function ListGroupItem({ interactive, className, ...rest }, ref) {\n return (\n <li\n ref={ref}\n className={cx('list-group__item', interactive && 'list-group__item--interactive', className)}\n {...rest}\n />\n );\n }\n);\n\n// ---------- Stepper ------------------------------------------------------\nexport interface StepperProps {\n steps: Array<{ label: string; description?: string }>;\n current: number;\n className?: string;\n}\n\nexport function Stepper({ steps, current, className }: StepperProps) {\n return (\n <ol className={cx('stepper', className)}>\n {steps.map((s, i) => {\n const state = i < current ? 'is-done' : i === current ? 'is-current' : '';\n return (\n <li key={i} className={cx('stepper__item', state)}>\n <span className=\"stepper__circle\">{i < current ? <Check size={16} /> : i + 1}</span>\n <div>\n <div className=\"stepper__label\">{s.label}</div>\n {s.description && <div className=\"stepper__desc\">{s.description}</div>}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Layout.tsx"],"names":["React","jsx","cx","Table","usePopoverPosition","jsxs","Portal","Divider","Separator","Stack","HStack","VStack","Cluster","Fragment","ListGroup","ListGroupItem","Check"],"mappings":"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","file":"chunk-T2LO33GM.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Check } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { Separator } from './Primitives';\n\n// ---------- Tabs ---------------------------------------------------------\ninterface TabsContextValue {\n value: string;\n setValue: (v: string) => void;\n}\nconst TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport interface TabsProps {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Tabs({ value, defaultValue, onChange, children, className }: TabsProps) {\n const [internal, setInternal] = React.useState(defaultValue ?? '');\n const v = value ?? internal;\n const setV = (next: string) => {\n if (value === undefined) setInternal(next);\n onChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ value: v, setValue: setV }}>\n <div className={cx('tabs', className)}>{children}</div>\n </TabsContext.Provider>\n );\n}\n\nexport function TabList({ children, className }: { children: React.ReactNode; className?: string }) {\n return <div role=\"tablist\" className={cx('tabs__list', className)}>{children}</div>;\n}\n\nexport interface TabProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nexport function Tab({ value, className, children, ...rest }: TabProps) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<Tab> must be used inside <Tabs>');\n const active = ctx.value === value;\n return (\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n className={cx('tabs__tab', active && 'is-active', className)}\n onClick={() => ctx.setValue(value)}\n {...rest}\n >\n {children}\n </button>\n );\n}\n\nexport function TabPanel({ value, children, className }: { value: string; children: React.ReactNode; className?: string }) {\n const ctx = React.useContext(TabsContext);\n if (!ctx) throw new Error('<TabPanel> must be used inside <Tabs>');\n if (ctx.value !== value) return null;\n return <div role=\"tabpanel\" className={cx('tabs__panel', className)}>{children}</div>;\n}\n\n// ---------- Table --------------------------------------------------------\nexport const Table = React.forwardRef<HTMLTableElement, React.TableHTMLAttributes<HTMLTableElement>>(\n function Table({ className, ...rest }, ref) {\n return (\n <div className=\"table-wrap\">\n <table ref={ref} className={cx('table', className)} {...rest} />\n </div>\n );\n }\n);\n\n// ---------- Tooltip (CSS hover) ------------------------------------------\nexport interface TooltipProps {\n label: React.ReactNode;\n children: React.ReactElement;\n side?: 'top' | 'bottom' | 'left' | 'right';\n}\n\nexport function Tooltip({ label, children, side = 'top' }: TooltipProps) {\n const [open, setOpen] = React.useState(false);\n const wrapRef = React.useRef<HTMLSpanElement>(null);\n const bubbleRef = React.useRef<HTMLSpanElement>(null);\n const reactId = React.useId();\n const bubbleId = `${reactId}-tooltip`;\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n const show = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), 150);\n };\n const hide = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), 80);\n };\n\n React.useEffect(() => () => clear(), []);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false);\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open]);\n\n const pos = usePopoverPosition(wrapRef, bubbleRef, {\n open,\n side,\n align: 'center',\n offset: 8,\n });\n\n const child = React.cloneElement(children, {\n 'aria-describedby': open ? bubbleId : children.props['aria-describedby'],\n });\n\n return (\n <span\n ref={wrapRef}\n className={cx('tooltip', `tooltip--${side}`)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {child}\n {open && (\n <Portal>\n <span\n ref={bubbleRef}\n id={bubbleId}\n role=\"tooltip\"\n className={cx('tooltip__bubble', 'is-floating')}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n opacity: pos.ready ? 1 : 0,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {label}\n </span>\n </Portal>\n )}\n </span>\n );\n}\n\n// ---------- Divider ------------------------------------------------------\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * @deprecated Use `Separator` instead. `Divider` is a non-breaking alias kept\n * for existing consumers: it delegates to `Separator` with `decorative={false}`\n * (preserving the original `role=\"separator\"` semantics) and keeps emitting the\n * legacy `divider` / `divider--vertical` classes so styling is unchanged. New\n * code should import `Separator`.\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(function Divider(\n { orientation = 'horizontal', className, ...rest },\n ref\n) {\n return (\n <Separator\n ref={ref}\n orientation={orientation}\n decorative={false}\n className={cx('divider', orientation === 'vertical' && 'divider--vertical', className)}\n {...rest}\n />\n );\n});\n\n// ---------- Stack / HStack / VStack -------------------------------------\ntype SpaceToken = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: 'row' | 'column';\n gap?: SpaceToken;\n align?: React.CSSProperties['alignItems'];\n justify?: React.CSSProperties['justifyContent'];\n wrap?: boolean;\n inline?: boolean;\n}\n\nexport const Stack = React.forwardRef<HTMLDivElement, StackProps>(function Stack(\n { direction = 'column', gap = 4, align, justify, wrap, inline, className, style, ...rest },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cx('stack', className)}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: `var(--space-${gap})`,\n alignItems: align,\n justifyContent: justify,\n flexWrap: wrap ? 'wrap' : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport const HStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function HStack(props, ref) {\n return <Stack ref={ref} direction=\"row\" align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport const VStack = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction'>>(\n function VStack(props, ref) {\n return <Stack ref={ref} direction=\"column\" {...props} />;\n }\n);\n\n// ---------- Container ----------------------------------------------------\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nconst CONTAINER_MAX = { sm: 640, md: 768, lg: 1024, xl: 1280, full: '100%' };\n\nexport function Container({ size = 'lg', className, style, ...rest }: ContainerProps) {\n return (\n <div\n className={cx('container', `container--${size}`, className)}\n style={{\n // border-box so `width: 100%` includes the inline gutter. Without\n // it (content-box default) the padding adds OUTSIDE the 100%, so\n // the container renders 2×var(--space-4) wider than its parent and\n // overflows any width-constrained context (a column, a card, a\n // narrow viewport). Masked on a full-viewport page by the body's\n // own margins, but a real bug elsewhere.\n boxSizing: 'border-box',\n width: '100%',\n maxWidth: CONTAINER_MAX[size],\n marginInline: 'auto',\n paddingInline: 'var(--space-4)',\n ...style,\n }}\n {...rest}\n />\n );\n}\n\n// ---------- Grid ---------------------------------------------------------\n/**\n * Column count. A number/string is fixed; an object is responsive per\n * breakpoint (each breakpoint inherits the previous one if omitted).\n * Breakpoints match the kit tokens: sm 480 · md 768 · lg 1024 · xl 1280.\n */\nexport type ResponsiveColumns =\n | number\n | string\n | { base?: number; sm?: number; md?: number; lg?: number; xl?: number };\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: ResponsiveColumns;\n gap?: SpaceToken;\n /** Intrinsically responsive auto-fit columns; takes precedence over `columns`. */\n minColWidth?: number | string;\n}\n\nexport function Grid({ columns, gap = 4, minColWidth, className, style, ...rest }: GridProps) {\n const gapVar = `var(--space-${gap})`;\n\n // auto-fit: intrinsic responsiveness, no breakpoints needed.\n if (minColWidth) {\n const w = typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth;\n return (\n <div\n className={cx('grid', className)}\n style={{ display: 'grid', gridTemplateColumns: `repeat(auto-fit, minmax(${w}, 1fr))`, gap: gapVar, ...style }}\n {...rest}\n />\n );\n }\n\n // Responsive object: emit per-breakpoint custom props; `.grid--responsive`\n // (in index.css) reads them through media queries with an inherit chain.\n if (columns && typeof columns === 'object') {\n const vars: Record<string, string> = {};\n if (columns.base != null) vars['--grid-cols'] = String(columns.base);\n if (columns.sm != null) vars['--grid-cols-sm'] = String(columns.sm);\n if (columns.md != null) vars['--grid-cols-md'] = String(columns.md);\n if (columns.lg != null) vars['--grid-cols-lg'] = String(columns.lg);\n if (columns.xl != null) vars['--grid-cols-xl'] = String(columns.xl);\n return (\n <div\n className={cx('grid', 'grid--responsive', className)}\n style={{ gap: gapVar, ...vars, ...style } as React.CSSProperties}\n {...rest}\n />\n );\n }\n\n const tpl = typeof columns === 'number'\n ? `repeat(${columns}, minmax(0, 1fr))`\n : columns ?? 'repeat(12, minmax(0, 1fr))';\n return (\n <div\n className={cx('grid', className)}\n style={{ display: 'grid', gridTemplateColumns: tpl, gap: gapVar, ...style }}\n {...rest}\n />\n );\n}\n\n// ---------- Cluster / Spacer --------------------------------------------\n/**\n * Horizontal group that wraps — the \"cluster\" layout primitive (Braid /\n * Every Layout). Sugar for `<Stack direction=\"row\" wrap>`. Use for tag\n * lists, button rows, filter chips: items flow and wrap, gap stays even.\n */\nexport const Cluster = React.forwardRef<HTMLDivElement, Omit<StackProps, 'direction' | 'wrap'>>(\n function Cluster(props, ref) {\n return <Stack ref={ref} direction=\"row\" wrap align={props.align ?? 'center'} {...props} />;\n }\n);\n\nexport interface SpacerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Fixed size on a space token. Omit for a flexible spacer (`flex: 1`). */\n size?: SpaceToken;\n}\n\n/**\n * Spacing element. With `size`, a fixed gap on the space scale. Without it,\n * a flexible spacer that eats remaining space in a flex container (pushes\n * siblings apart) — e.g. a toolbar with left items + `<Spacer />` + right\n * items.\n */\nexport function Spacer({ size, style, ...rest }: SpacerProps) {\n return (\n <div\n aria-hidden=\"true\"\n style={\n size != null\n ? { flex: '0 0 auto', width: `var(--space-${size})`, height: `var(--space-${size})`, ...style }\n : { flex: '1 1 auto', ...style }\n }\n {...rest}\n />\n );\n}\n\n// ---------- KeyValue ----------------------------------------------------\nexport interface KeyValueProps extends React.HTMLAttributes<HTMLDListElement> {\n /** Override del ancho de la columna de keys (default 200px) */\n keyWidth?: number | string;\n}\n\nexport function KeyValue({ keyWidth, className, style, ...rest }: KeyValueProps) {\n return (\n <dl\n className={cx('kv', className)}\n style={keyWidth ? { gridTemplateColumns: `${typeof keyWidth === 'number' ? `${keyWidth}px` : keyWidth} 1fr`, ...style } : style}\n {...rest}\n />\n );\n}\n\nexport interface KeyValueRowProps {\n label: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport function KeyValueRow({ label, children }: KeyValueRowProps) {\n return (\n <>\n <dt className=\"kv__k\">{label}</dt>\n <dd className=\"kv__v\">{children}</dd>\n </>\n );\n}\n\n// ---------- ListGroup ---------------------------------------------------\nexport const ListGroup = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n function ListGroup({ className, ...rest }, ref) {\n return <ul ref={ref} className={cx('list-group', className)} {...rest} />;\n }\n);\n\nexport interface ListGroupItemProps extends React.LiHTMLAttributes<HTMLLIElement> {\n interactive?: boolean;\n}\n\nexport const ListGroupItem = React.forwardRef<HTMLLIElement, ListGroupItemProps>(\n function ListGroupItem({ interactive, className, ...rest }, ref) {\n return (\n <li\n ref={ref}\n className={cx('list-group__item', interactive && 'list-group__item--interactive', className)}\n {...rest}\n />\n );\n }\n);\n\n// ---------- Stepper ------------------------------------------------------\nexport interface StepperProps {\n steps: Array<{ label: string; description?: string }>;\n current: number;\n className?: string;\n}\n\nexport function Stepper({ steps, current, className }: StepperProps) {\n return (\n <ol className={cx('stepper', className)}>\n {steps.map((s, i) => {\n const state = i < current ? 'is-done' : i === current ? 'is-current' : '';\n return (\n <li key={i} className={cx('stepper__item', state)}>\n <span className=\"stepper__circle\">{i < current ? <Check size={16} /> : i + 1}</span>\n <div>\n <div className=\"stepper__label\">{s.label}</div>\n {s.description && <div className=\"stepper__desc\">{s.description}</div>}\n </div>\n </li>\n );\n })}\n </ol>\n );\n}\n"]}
@@ -2,10 +2,10 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkWAGWB35Q_js = require('./chunk-WAGWB35Q.js');
5
- var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
6
- var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
7
5
  var chunkXMLBKK7X_js = require('./chunk-XMLBKK7X.js');
8
6
  var chunkCRKYET66_js = require('./chunk-CRKYET66.js');
7
+ var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
8
+ var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
9
9
  var React = require('react');
10
10
  var jsxRuntime = require('react/jsx-runtime');
11
11
 
@@ -195,5 +195,5 @@ function NavigationMenu({ items, className, ariaLabel = "Navegaci\xF3n principal
195
195
  }
196
196
 
197
197
  exports.NavigationMenu = NavigationMenu;
198
- //# sourceMappingURL=chunk-MATGDAGX.js.map
199
- //# sourceMappingURL=chunk-MATGDAGX.js.map
198
+ //# sourceMappingURL=chunk-TX4BUYX4.js.map
199
+ //# sourceMappingURL=chunk-TX4BUYX4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/NavigationMenu.tsx"],"names":["React","usePopoverPosition","useDismiss","cx","jsxs","Fragment","jsx","ChevronDown","Portal"],"mappings":"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","file":"chunk-MATGDAGX.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronDown } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\nexport interface NavLink {\n id: string;\n label: React.ReactNode;\n href?: string;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface NavMenuItem {\n id: string;\n label: React.ReactNode;\n href?: string;\n links?: NavLink[];\n featured?: NavLink;\n}\n\nexport interface NavigationMenuProps {\n items: NavMenuItem[];\n className?: string;\n ariaLabel?: string;\n linkAs?: (link: NavLink, content: React.ReactNode, className: string) => React.ReactNode;\n rootLinkAs?: (item: NavMenuItem, content: React.ReactNode, className: string) => React.ReactNode;\n}\n\nexport function NavigationMenu({ items, className, ariaLabel = 'Navegación principal', linkAs, rootLinkAs }: NavigationMenuProps) {\n const [openId, setOpenId] = React.useState<string | null>(null);\n // When the panel was opened by keyboard we move focus into it; pointer\n // (click/hover) opens leave focus with the user's cursor.\n const focusOnOpen = React.useRef(false);\n const rootRef = React.useRef<HTMLElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n // The currently-open trigger; usePopoverPosition anchors to this and\n // focus returns here on close. One panel is open at a time, so a single\n // anchor ref is correct (see todo.md risk note).\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const triggerRefs = React.useRef<Record<string, HTMLButtonElement | null>>({});\n\n const open = openId !== null;\n\n const pos = usePopoverPosition(anchorRef, panelRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 8,\n });\n\n // Outside-click closes; Escape is handled on the panel so it can also\n // return focus to the trigger (WAI-ARIA disclosure/menu pattern).\n useDismiss({\n open,\n onDismiss: () => setOpenId(null),\n refs: [rootRef, panelRef],\n closeOnEscape: false,\n });\n\n const closeAndFocusTrigger = () => {\n const id = openId;\n setOpenId(null);\n if (id) triggerRefs.current[id]?.focus();\n };\n\n // `.nav-menu__link` is applied to every link node (default <a> and the\n // `linkAs` render-prop alike), so querying by class manages focus\n // uniformly regardless of how the consumer renders links.\n const panelLinks = (): HTMLElement[] =>\n Array.from(panelRef.current?.querySelectorAll<HTMLElement>('.nav-menu__link') ?? []);\n\n const focusLinkAt = (index: number) => {\n const links = panelLinks();\n if (links.length === 0) return;\n const wrapped = ((index % links.length) + links.length) % links.length;\n links[wrapped]?.focus();\n };\n\n React.useEffect(() => {\n if (open && focusOnOpen.current) {\n focusOnOpen.current = false;\n focusLinkAt(0);\n }\n }, [open]);\n\n const onPanelKeyDown = (e: React.KeyboardEvent) => {\n const links = panelLinks();\n const current = links.indexOf(document.activeElement as HTMLElement);\n if (e.key === 'Escape') {\n e.preventDefault();\n closeAndFocusTrigger();\n } else if (e.key === 'Tab') {\n setOpenId(null);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n focusLinkAt(current + 1);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n focusLinkAt(current - 1);\n } else if (e.key === 'Home') {\n e.preventDefault();\n focusLinkAt(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n focusLinkAt(links.length - 1);\n }\n };\n\n return (\n <nav ref={rootRef} aria-label={ariaLabel} className={cx('nav-menu', className)}>\n <ul className=\"nav-menu__list\">\n {items.map((item) => {\n const hasChildren = !!item.links?.length;\n const isOpen = openId === item.id;\n const triggerCls = cx('nav-menu__trigger', isOpen && 'is-open');\n const content = (\n <>\n <span>{item.label}</span>\n {hasChildren && <ChevronDown size={14} className=\"nav-menu__chevron\" />}\n </>\n );\n\n return (\n <li key={item.id} className=\"nav-menu__item\">\n {hasChildren ? (\n <button\n type=\"button\"\n ref={(el) => { triggerRefs.current[item.id] = el; }}\n className={triggerCls}\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n onClick={(e) => {\n if (isOpen) { setOpenId(null); return; }\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setOpenId(item.id);\n }}\n onMouseEnter={(e) => {\n if (!openId) return;\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setOpenId(item.id);\n }}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (isOpen) { focusLinkAt(0); return; }\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = true;\n setOpenId(item.id);\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault();\n setOpenId(null);\n }\n }}\n >\n {content}\n </button>\n ) : rootLinkAs && item.href ? (\n rootLinkAs(item, content, triggerCls)\n ) : (\n <a className={triggerCls} href={item.href}>\n {content}\n </a>\n )}\n {hasChildren && isOpen && (\n <Portal>\n <div\n ref={panelRef}\n className=\"nav-menu__panel\"\n role=\"menu\"\n aria-label={typeof item.label === 'string' ? item.label : undefined}\n onKeyDown={onPanelKeyDown}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {item.featured && (\n <div className=\"nav-menu__featured\">\n <strong>{item.featured.label}</strong>\n {item.featured.description && <p>{item.featured.description}</p>}\n </div>\n )}\n <ul className=\"nav-menu__sublist\">\n {item.links!.map((link) => {\n const linkCls = 'nav-menu__link';\n const linkContent = (\n <>\n {link.icon && <span className=\"nav-menu__link-icon\">{link.icon}</span>}\n <span className=\"nav-menu__link-body\">\n <span className=\"nav-menu__link-label\">{link.label}</span>\n {link.description && <span className=\"nav-menu__link-desc\">{link.description}</span>}\n </span>\n </>\n );\n return (\n <li key={link.id} role=\"none\">\n {linkAs ? (\n linkAs(link, linkContent, linkCls)\n ) : (\n <a\n role=\"menuitem\"\n tabIndex={-1}\n className={linkCls}\n href={link.href}\n onClick={(e) => {\n if (link.onClick) {\n e.preventDefault();\n link.onClick();\n }\n closeAndFocusTrigger();\n }}\n >\n {linkContent}\n </a>\n )}\n </li>\n );\n })}\n </ul>\n </div>\n </Portal>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/NavigationMenu.tsx"],"names":["React","usePopoverPosition","useDismiss","cx","jsxs","Fragment","jsx","ChevronDown","Portal"],"mappings":"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","file":"chunk-TX4BUYX4.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { ChevronDown } from './Icons';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\nexport interface NavLink {\n id: string;\n label: React.ReactNode;\n href?: string;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface NavMenuItem {\n id: string;\n label: React.ReactNode;\n href?: string;\n links?: NavLink[];\n featured?: NavLink;\n}\n\nexport interface NavigationMenuProps {\n items: NavMenuItem[];\n className?: string;\n ariaLabel?: string;\n linkAs?: (link: NavLink, content: React.ReactNode, className: string) => React.ReactNode;\n rootLinkAs?: (item: NavMenuItem, content: React.ReactNode, className: string) => React.ReactNode;\n}\n\nexport function NavigationMenu({ items, className, ariaLabel = 'Navegación principal', linkAs, rootLinkAs }: NavigationMenuProps) {\n const [openId, setOpenId] = React.useState<string | null>(null);\n // When the panel was opened by keyboard we move focus into it; pointer\n // (click/hover) opens leave focus with the user's cursor.\n const focusOnOpen = React.useRef(false);\n const rootRef = React.useRef<HTMLElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n // The currently-open trigger; usePopoverPosition anchors to this and\n // focus returns here on close. One panel is open at a time, so a single\n // anchor ref is correct (see todo.md risk note).\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const triggerRefs = React.useRef<Record<string, HTMLButtonElement | null>>({});\n\n const open = openId !== null;\n\n const pos = usePopoverPosition(anchorRef, panelRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 8,\n });\n\n // Outside-click closes; Escape is handled on the panel so it can also\n // return focus to the trigger (WAI-ARIA disclosure/menu pattern).\n useDismiss({\n open,\n onDismiss: () => setOpenId(null),\n refs: [rootRef, panelRef],\n closeOnEscape: false,\n });\n\n const closeAndFocusTrigger = () => {\n const id = openId;\n setOpenId(null);\n if (id) triggerRefs.current[id]?.focus();\n };\n\n // `.nav-menu__link` is applied to every link node (default <a> and the\n // `linkAs` render-prop alike), so querying by class manages focus\n // uniformly regardless of how the consumer renders links.\n const panelLinks = (): HTMLElement[] =>\n Array.from(panelRef.current?.querySelectorAll<HTMLElement>('.nav-menu__link') ?? []);\n\n const focusLinkAt = (index: number) => {\n const links = panelLinks();\n if (links.length === 0) return;\n const wrapped = ((index % links.length) + links.length) % links.length;\n links[wrapped]?.focus();\n };\n\n React.useEffect(() => {\n if (open && focusOnOpen.current) {\n focusOnOpen.current = false;\n focusLinkAt(0);\n }\n }, [open]);\n\n const onPanelKeyDown = (e: React.KeyboardEvent) => {\n const links = panelLinks();\n const current = links.indexOf(document.activeElement as HTMLElement);\n if (e.key === 'Escape') {\n e.preventDefault();\n closeAndFocusTrigger();\n } else if (e.key === 'Tab') {\n setOpenId(null);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n focusLinkAt(current + 1);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n focusLinkAt(current - 1);\n } else if (e.key === 'Home') {\n e.preventDefault();\n focusLinkAt(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n focusLinkAt(links.length - 1);\n }\n };\n\n return (\n <nav ref={rootRef} aria-label={ariaLabel} className={cx('nav-menu', className)}>\n <ul className=\"nav-menu__list\">\n {items.map((item) => {\n const hasChildren = !!item.links?.length;\n const isOpen = openId === item.id;\n const triggerCls = cx('nav-menu__trigger', isOpen && 'is-open');\n const content = (\n <>\n <span>{item.label}</span>\n {hasChildren && <ChevronDown size={14} className=\"nav-menu__chevron\" />}\n </>\n );\n\n return (\n <li key={item.id} className=\"nav-menu__item\">\n {hasChildren ? (\n <button\n type=\"button\"\n ref={(el) => { triggerRefs.current[item.id] = el; }}\n className={triggerCls}\n aria-expanded={isOpen}\n aria-haspopup=\"menu\"\n onClick={(e) => {\n if (isOpen) { setOpenId(null); return; }\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setOpenId(item.id);\n }}\n onMouseEnter={(e) => {\n if (!openId) return;\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = false;\n setOpenId(item.id);\n }}\n onKeyDown={(e) => {\n if (e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (isOpen) { focusLinkAt(0); return; }\n anchorRef.current = e.currentTarget;\n focusOnOpen.current = true;\n setOpenId(item.id);\n } else if (e.key === 'Escape' && isOpen) {\n e.preventDefault();\n setOpenId(null);\n }\n }}\n >\n {content}\n </button>\n ) : rootLinkAs && item.href ? (\n rootLinkAs(item, content, triggerCls)\n ) : (\n <a className={triggerCls} href={item.href}>\n {content}\n </a>\n )}\n {hasChildren && isOpen && (\n <Portal>\n <div\n ref={panelRef}\n className=\"nav-menu__panel\"\n role=\"menu\"\n aria-label={typeof item.label === 'string' ? item.label : undefined}\n onKeyDown={onPanelKeyDown}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {item.featured && (\n <div className=\"nav-menu__featured\">\n <strong>{item.featured.label}</strong>\n {item.featured.description && <p>{item.featured.description}</p>}\n </div>\n )}\n <ul className=\"nav-menu__sublist\">\n {item.links!.map((link) => {\n const linkCls = 'nav-menu__link';\n const linkContent = (\n <>\n {link.icon && <span className=\"nav-menu__link-icon\">{link.icon}</span>}\n <span className=\"nav-menu__link-body\">\n <span className=\"nav-menu__link-label\">{link.label}</span>\n {link.description && <span className=\"nav-menu__link-desc\">{link.description}</span>}\n </span>\n </>\n );\n return (\n <li key={link.id} role=\"none\">\n {linkAs ? (\n linkAs(link, linkContent, linkCls)\n ) : (\n <a\n role=\"menuitem\"\n tabIndex={-1}\n className={linkCls}\n href={link.href}\n onClick={(e) => {\n if (link.onClick) {\n e.preventDefault();\n link.onClick();\n }\n closeAndFocusTrigger();\n }}\n >\n {linkContent}\n </a>\n )}\n </li>\n );\n })}\n </ul>\n </div>\n </Portal>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n"]}
@@ -5,10 +5,10 @@ var chunkW725MLGN_js = require('./chunk-W725MLGN.js');
5
5
  var chunkMVJITG75_js = require('./chunk-MVJITG75.js');
6
6
  var chunkWAGWB35Q_js = require('./chunk-WAGWB35Q.js');
7
7
  var chunkUBSBSZPB_js = require('./chunk-UBSBSZPB.js');
8
- var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
9
- var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
10
8
  var chunkXMLBKK7X_js = require('./chunk-XMLBKK7X.js');
11
9
  var chunkCRKYET66_js = require('./chunk-CRKYET66.js');
10
+ var chunkC4AKMVDZ_js = require('./chunk-C4AKMVDZ.js');
11
+ var chunkPASF6T4H_js = require('./chunk-PASF6T4H.js');
12
12
  var React = require('react');
13
13
  var jsxRuntime = require('react/jsx-runtime');
14
14
 
@@ -531,5 +531,5 @@ exports.CommandPalette = CommandPalette;
531
531
  exports.DateRangePicker = DateRangePicker;
532
532
  exports.MultiCombobox = MultiCombobox;
533
533
  exports.useCommandPalette = useCommandPalette;
534
- //# sourceMappingURL=chunk-IRYSQWA3.js.map
535
- //# sourceMappingURL=chunk-IRYSQWA3.js.map
534
+ //# sourceMappingURL=chunk-UOWBU443.js.map
535
+ //# sourceMappingURL=chunk-UOWBU443.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AdvancedPickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","format","jsx","X","Portal","Check","resolveDateFormat","startOfMonth","buildMonthGrid","isSameDay","formatDate","CalendarIcon","addMonths","ChevronLeft","ChevronRight","Search"],"mappings":"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","file":"chunk-IRYSQWA3.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X, Check, Search } from './Icons';\nimport { resolveDateFormat, formatDate, startOfMonth, addMonths, isSameDay, buildMonthGrid, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format as formatMsg } from '../locale/messages';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- MultiCombobox -----------------------------------------------\nexport interface MultiComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface MultiComboboxProps<T = string> {\n value: T[];\n onChange: (v: T[]) => void;\n options: MultiComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: MultiComboboxOption<T>, query: string) => boolean;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n maxVisibleChips?: number;\n}\n\nconst dfilter = <T,>(o: MultiComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function MultiCombobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = dfilter,\n invalid, disabled, className, id, maxVisibleChips = 3,\n}: MultiComboboxProps<T>) {\n const locale = useLocale();\n const ph = placeholder ?? locale['common.search'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n // Build the lookup Set once per `value` change, not on every keystroke or\n // hover-driven re-render.\n const selSet = React.useMemo(() => new Set(value), [value]);\n\n const filtered = React.useMemo(\n () => (query ? options.filter((o) => filter(o, query)) : options),\n [options, query, filter]\n );\n\n const pos = usePopoverPosition(wrapRef, listRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n matchAnchorWidth: true,\n });\n\n // Escape is handled by the input's onKeyDown; only outside-click here.\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n const toggle = (v: T) => {\n if (selSet.has(v)) onChange(value.filter((x) => x !== v));\n else onChange([...value, v]);\n };\n\n const onKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') { e.preventDefault(); setOpen(true); setActive((a) => Math.min(filtered.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) { toggle(opt.value); setQuery(''); }\n } else if (e.key === 'Escape') { setOpen(false); }\n else if (e.key === 'Backspace' && !query && value.length) { onChange(value.slice(0, -1)); }\n };\n\n const selectedItems = options.filter((o) => selSet.has(o.value));\n const visible = selectedItems.slice(0, maxVisibleChips);\n const overflow = selectedItems.length - visible.length;\n\n return (\n <div ref={wrapRef} className={cx('multicombo', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <div className=\"multicombo__chips\" onClick={() => inputRef.current?.focus()}>\n {visible.map((o) => (\n <span key={String(o.value)} className=\"multicombo__chip\">\n {o.label}\n <button type=\"button\" aria-label={formatMsg(locale['combobox.remove'], { label: o.label })} onClick={(e) => { e.stopPropagation(); toggle(o.value); }}><X size={12} /></button>\n </span>\n ))}\n {overflow > 0 && <span className=\"multicombo__chip multicombo__chip--more\">+{overflow}</span>}\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"multicombo__input\"\n placeholder={selectedItems.length === 0 ? ph : ''}\n disabled={disabled}\n value={query}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); setActive(0); }}\n onKeyDown={onKey}\n />\n </div>\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cx('multicombo__list', 'is-floating')}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n width: pos.width,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {filtered.length === 0 ? (\n <li className=\"multicombo__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => {\n const checked = selSet.has(o.value);\n return (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={checked}\n aria-disabled={o.disabled}\n className={cx('multicombo__option', i === active && 'is-active', checked && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); if (!o.disabled) toggle(o.value); }}\n >\n <span className={cx('multicombo__check', checked && 'is-checked')} aria-hidden=\"true\">{checked ? <Check size={14} /> : null}</span>\n <span className=\"multicombo__option-body\">\n <span className=\"multicombo__option-label\">{o.label}</span>\n {o.description && <span className=\"multicombo__option-desc\">{o.description}</span>}\n </span>\n </li>\n );\n })\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DateRangePicker --------------------------------------------\nexport interface DateRange { from: Date | null; to: Date | null }\n\nexport interface DateRangePickerProps {\n /** Controlled value. Omit to make the picker uncontrolled (see `defaultValue`). */\n value?: DateRange;\n /**\n * In legacy mode, fires on every day click. In apply mode (when `onApply` is\n * provided), fires only at apply time so a controlled `value` can stay in sync.\n */\n onChange?: (v: DateRange) => void;\n /** Initial value when uncontrolled. Ignored if `value` is provided. */\n defaultValue?: DateRange;\n /**\n * Opt-in: enables apply mode. Day clicks only mutate an internal draft; the\n * consumer is notified when the user confirms (button \"Apply\" or a preset).\n * Closing the popover without applying reverts the draft to the last applied\n * value. Useful when each commit triggers a server-side query.\n */\n onApply?: (v: DateRange) => void;\n /** Fires on open/close transitions. */\n onOpenChange?: (open: boolean) => void;\n minDate?: Date;\n maxDate?: Date;\n /**\n * Disable arbitrary days (holidays, blackout dates, specific weekdays). A\n * day for which this returns `true` renders disabled — greyed, not\n * focusable, not clickable. Composes with `minDate`/`maxDate`. A range\n * endpoint can never land on a disabled day; a disabled day that falls\n * inside an otherwise-valid span stays greyed but is included visually\n * (the span is allowed). E.g. disable Sundays: `d => d.getDay() === 0`.\n */\n isDateDisabled?: (date: Date) => boolean;\n presets?: Array<{ label: string; range: () => DateRange }>;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n /**\n * Display format. Default `'auto'` derives from `configureBrand().locale`.\n */\n format?: DateFormat;\n}\n\nconst EMPTY_RANGE: DateRange = { from: null, to: null };\n\nexport function DateRangePicker({\n value, onChange, defaultValue, onApply, onOpenChange,\n minDate, maxDate, isDateDisabled, presets,\n invalid, disabled, className, id, format = 'auto',\n}: DateRangePickerProps) {\n const locale = useLocale();\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const fmt = resolveDateFormat(format);\n const isControlled = value !== undefined;\n const applyMode = !!onApply;\n const initial = isControlled ? (value as DateRange) : (defaultValue ?? EMPTY_RANGE);\n const [draft, setDraft] = React.useState<DateRange>(initial);\n const [lastApplied, setLastApplied] = React.useState<DateRange>(initial);\n // Resync draft/lastApplied when controlled `value` changes externally.\n const vFrom = value?.from?.getTime() ?? 0;\n const vTo = value?.to?.getTime() ?? 0;\n React.useEffect(() => {\n if (!isControlled) return;\n setDraft(value as DateRange);\n setLastApplied(value as DateRange);\n }, [isControlled, vFrom, vTo]);\n // Legacy-controlled (no `onApply`) keeps prior semantics: `value` drives render\n // directly. Otherwise the draft is truth.\n const current: DateRange = isControlled && !applyMode ? (value as DateRange) : draft;\n // The trigger label shows the last-committed range in apply mode; in legacy it\n // tracks `current` (so live edits stay reflected, as before).\n const displayed: DateRange = applyMode ? lastApplied : current;\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(initial.from ?? new Date()));\n const [hover, setHover] = React.useState<Date | null>(null);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition; Escape and outside-click return focus to the\n // trigger (a11y) — same primitive as MultiCombobox above.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 6,\n });\n\n const closeWithoutCommit = React.useCallback(() => {\n if (applyMode) setDraft(lastApplied);\n setOpen(false);\n onOpenChange?.(false);\n }, [applyMode, lastApplied, onOpenChange]);\n\n useDismiss({\n open,\n onDismiss: closeWithoutCommit,\n refs: [wrapRef, popoverRef],\n returnFocusRef: triggerRef,\n });\n\n // Each panel renders ~42 Date cells. Without memoization, every\n // setHover() triggered a full rebuild of both panels' grids on every\n // mouse movement over the calendar. Memo keyed on `view` only.\n const monthGrid0 = React.useMemo(() => buildMonthGrid(view, 0), [view]);\n const monthGrid1 = React.useMemo(() => buildMonthGrid(view, 1), [view]);\n\n const isDisabled = (d: Date) =>\n !!(\n (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) ||\n (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) ||\n isDateDisabled?.(d)\n );\n\n const inRange = (d: Date) => {\n if (!current.from) return false;\n const end = current.to ?? hover;\n if (!end) return isSameDay(d, current.from);\n const a = current.from < end ? current.from : end;\n const b = current.from < end ? end : current.from;\n return d >= new Date(a.getFullYear(), a.getMonth(), a.getDate()) &&\n d <= new Date(b.getFullYear(), b.getMonth(), b.getDate());\n };\n\n const click = (d: Date) => {\n let next: DateRange;\n if (!current.from || (current.from && current.to)) next = { from: d, to: null };\n else {\n const from = current.from;\n next = d < from ? { from: d, to: from } : { from, to: d };\n }\n if (applyMode) setDraft(next);\n else onChange?.(next);\n };\n\n // Commits a range and closes. In apply mode this fires `onApply` (and `onChange`\n // when controlled, to keep `value` in sync). In legacy mode, only preset commits\n // propagate via `onChange`; the bare \"Apply\" button stays close-only as before.\n const commit = (next: DateRange, fromPreset = false) => {\n if (applyMode) {\n onApply!(next);\n setLastApplied(next);\n setDraft(next);\n if (isControlled) onChange?.(next);\n } else if (fromPreset) {\n onChange?.(next);\n }\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const clear = () => {\n if (applyMode) setDraft(EMPTY_RANGE);\n else onChange?.(EMPTY_RANGE);\n };\n\n const toggleOpen = () => {\n if (open) closeWithoutCommit();\n else { setOpen(true); onOpenChange?.(true); }\n };\n\n const label = displayed.from\n ? displayed.to\n ? `${formatDate(displayed.from, fmt)} → ${formatDate(displayed.to, fmt)}`\n : `${formatDate(displayed.from, fmt)} → …`\n : locale['picker.selectRange'];\n\n const renderMonth = (offset: number) => {\n const { month: m, cells } = offset === 0 ? monthGrid0 : monthGrid1;\n return (\n <div className=\"daterange__month\">\n <div className=\"daterange__title\">{months[m.getMonth()]} {m.getFullYear()}</div>\n <div className=\"daterange__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"daterange__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = (current.from && isSameDay(d, current.from)) || (current.to && isSameDay(d, current.to));\n const ir = inRange(d);\n const today = isSameDay(d, new Date());\n const off = isDisabled(d);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('daterange__day', sel && 'is-selected', ir && !sel && 'is-range', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onMouseEnter={() => setHover(d)}\n onClick={() => click(d)}\n >{d.getDate()}</button>\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <div ref={wrapRef} className={cx('daterange', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <button\n ref={triggerRef}\n id={id}\n type=\"button\"\n className=\"daterange__trigger\"\n disabled={disabled}\n onClick={toggleOpen}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n >\n <span className=\"daterange__icon\" aria-hidden=\"true\"><CalendarIcon size={16} /></span>\n <span>{label}</span>\n </button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('daterange__popover', 'is-floating')}\n role=\"dialog\"\n onMouseLeave={() => setHover(null)}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {presets && presets.length > 0 && (\n <ul className=\"daterange__presets\">\n {presets.map((p, i) => (\n <li key={i}>\n <button type=\"button\" onClick={() => commit(p.range(), true)}>{p.label}</button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"daterange__panes\">\n <div className=\"daterange__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span />\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, 1))} aria-label={locale['calendar.nextMonth']}><ChevronRight size={16} /></button>\n </div>\n <div className=\"daterange__months\">\n {renderMonth(0)}\n {renderMonth(1)}\n </div>\n <div className=\"daterange__actions\">\n <button type=\"button\" className=\"daterange__clear\" onClick={clear}>{locale['common.clear']}</button>\n <button type=\"button\" className=\"daterange__apply\" onClick={() => commit(current)} disabled={!current.from || !current.to}>{locale['common.apply']}</button>\n </div>\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- Command Palette (⌘K) ----------------------------------------\nexport interface CommandItem {\n id: string;\n label: string;\n description?: string;\n group?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n keywords?: string[];\n onRun: () => void;\n}\n\nexport interface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n items: CommandItem[];\n placeholder?: string;\n emptyMessage?: string;\n hotkey?: string; // 'mod+k'\n}\n\nfunction matchesHotkey(e: KeyboardEvent, hk: string) {\n const parts = hk.toLowerCase().split('+');\n const key = parts[parts.length - 1];\n const mods = parts.slice(0, -1);\n if (e.key.toLowerCase() !== key) return false;\n for (const m of mods) {\n if (m === 'mod' && !(e.metaKey || e.ctrlKey)) return false;\n if (m === 'ctrl' && !e.ctrlKey) return false;\n if (m === 'meta' && !e.metaKey) return false;\n if (m === 'shift' && !e.shiftKey) return false;\n if (m === 'alt' && !e.altKey) return false;\n }\n return true;\n}\n\nexport function CommandPalette({\n open, onClose, items,\n placeholder,\n emptyMessage,\n}: CommandPaletteProps) {\n const locale = useLocale();\n const ph = placeholder ?? locale['picker.searchCommands'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const filtered = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((it) => {\n const hay = [it.label, it.description, it.group, ...(it.keywords ?? [])].join(' ').toLowerCase();\n return hay.includes(q);\n });\n }, [items, query]);\n\n // group preserve order\n const grouped = React.useMemo(() => {\n const order: string[] = [];\n const map = new Map<string, CommandItem[]>();\n for (const it of filtered) {\n const g = it.group ?? '';\n if (!map.has(g)) { map.set(g, []); order.push(g); }\n map.get(g)!.push(it);\n }\n return { order, map };\n }, [filtered]);\n\n const flat = filtered;\n\n React.useEffect(() => {\n if (open) {\n setQuery(''); setActive(0);\n requestAnimationFrame(() => inputRef.current?.focus());\n }\n }, [open]);\n\n React.useEffect(() => { setActive(0); }, [query]);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n else if (e.key === 'ArrowDown') { e.preventDefault(); setActive((a) => Math.min(flat.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const it = flat[active];\n if (it) { it.onRun(); onClose(); }\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, flat, active, onClose]);\n\n React.useEffect(() => {\n const el = listRef.current?.querySelector(`[data-cmd-idx=\"${active}\"]`);\n el?.scrollIntoView({ block: 'nearest' });\n }, [active]);\n\n if (!open) return null;\n let idx = -1;\n return (\n <div className=\"cmdk__overlay\" role=\"dialog\" aria-modal=\"true\" aria-label={locale['picker.commandPalette']} onMouseDown={(e) => { if (e.target === e.currentTarget) onClose(); }}>\n <div className=\"cmdk__panel\">\n <div className=\"cmdk__searchbar\">\n <span className=\"cmdk__icon\" aria-hidden=\"true\"><Search size={16} /></span>\n <input\n ref={inputRef}\n className=\"cmdk__input\"\n value={query}\n placeholder={ph}\n onChange={(e) => setQuery(e.target.value)}\n />\n <kbd className=\"cmdk__esc\">Esc</kbd>\n </div>\n <ul ref={listRef} className=\"cmdk__list\" role=\"listbox\">\n {flat.length === 0 && <li className=\"cmdk__empty\">{empty}</li>}\n {grouped.order.map((g) => (\n <React.Fragment key={g || '__none'}>\n {g && <li className=\"cmdk__group\" aria-hidden=\"true\">{g}</li>}\n {grouped.map.get(g)!.map((it) => {\n idx++;\n const i = idx;\n return (\n <li\n key={it.id}\n role=\"option\"\n aria-selected={i === active}\n data-cmd-idx={i}\n className={cx('cmdk__item', i === active && 'is-active')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); it.onRun(); onClose(); }}\n >\n {it.icon && <span className=\"cmdk__item-icon\" aria-hidden=\"true\">{it.icon}</span>}\n <span className=\"cmdk__item-body\">\n <span className=\"cmdk__item-label\">{it.label}</span>\n {it.description && <span className=\"cmdk__item-desc\">{it.description}</span>}\n </span>\n {it.shortcut && <kbd className=\"cmdk__kbd\">{it.shortcut}</kbd>}\n </li>\n );\n })}\n </React.Fragment>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n\nexport interface UseCommandPaletteOptions {\n hotkey?: string; // default 'mod+k'\n}\n\nexport function useCommandPalette({ hotkey = 'mod+k' }: UseCommandPaletteOptions = {}) {\n const [open, setOpen] = React.useState(false);\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (matchesHotkey(e, hotkey)) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [hotkey]);\n return { open, setOpen, close: () => setOpen(false), toggle: () => setOpen((o) => !o) };\n}\n"]}
1
+ {"version":3,"sources":["../src/components/AdvancedPickers.tsx"],"names":["useLocale","React","usePopoverPosition","useDismiss","jsxs","cx","format","jsx","X","Portal","Check","resolveDateFormat","startOfMonth","buildMonthGrid","isSameDay","formatDate","CalendarIcon","addMonths","ChevronLeft","ChevronRight","Search"],"mappings":"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","file":"chunk-UOWBU443.js","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { CalendarIcon, ChevronLeft, ChevronRight, X, Check, Search } from './Icons';\nimport { resolveDateFormat, formatDate, startOfMonth, addMonths, isSameDay, buildMonthGrid, type DateFormat } from '../utils/dateFormat';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { format as formatMsg } from '../locale/messages';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\nimport { useDismiss } from '../hooks/useDismiss';\n\n// ---------- MultiCombobox -----------------------------------------------\nexport interface MultiComboboxOption<T = string> {\n value: T;\n label: string;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface MultiComboboxProps<T = string> {\n value: T[];\n onChange: (v: T[]) => void;\n options: MultiComboboxOption<T>[];\n placeholder?: string;\n emptyMessage?: string;\n filter?: (option: MultiComboboxOption<T>, query: string) => boolean;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n maxVisibleChips?: number;\n}\n\nconst dfilter = <T,>(o: MultiComboboxOption<T>, q: string) =>\n o.label.toLowerCase().includes(q.toLowerCase());\n\nexport function MultiCombobox<T = string>({\n value, onChange, options, placeholder,\n emptyMessage, filter = dfilter,\n invalid, disabled, className, id, maxVisibleChips = 3,\n}: MultiComboboxProps<T>) {\n const locale = useLocale();\n const ph = placeholder ?? locale['common.search'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n const reactId = React.useId();\n const listboxId = `${id ?? reactId}-listbox`;\n // Build the lookup Set once per `value` change, not on every keystroke or\n // hover-driven re-render.\n const selSet = React.useMemo(() => new Set(value), [value]);\n\n const filtered = React.useMemo(\n () => (query ? options.filter((o) => filter(o, query)) : options),\n [options, query, filter]\n );\n\n const pos = usePopoverPosition(wrapRef, listRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 4,\n matchAnchorWidth: true,\n });\n\n // Escape is handled by the input's onKeyDown; only outside-click here.\n useDismiss({\n open,\n onDismiss: () => setOpen(false),\n refs: [wrapRef, listRef],\n closeOnEscape: false,\n });\n\n const toggle = (v: T) => {\n if (selSet.has(v)) onChange(value.filter((x) => x !== v));\n else onChange([...value, v]);\n };\n\n const onKey = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowDown') { e.preventDefault(); setOpen(true); setActive((a) => Math.min(filtered.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const opt = filtered[active];\n if (opt && !opt.disabled) { toggle(opt.value); setQuery(''); }\n } else if (e.key === 'Escape') { setOpen(false); }\n else if (e.key === 'Backspace' && !query && value.length) { onChange(value.slice(0, -1)); }\n };\n\n const selectedItems = options.filter((o) => selSet.has(o.value));\n const visible = selectedItems.slice(0, maxVisibleChips);\n const overflow = selectedItems.length - visible.length;\n\n return (\n <div ref={wrapRef} className={cx('multicombo', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <div className=\"multicombo__chips\" onClick={() => inputRef.current?.focus()}>\n {visible.map((o) => (\n <span key={String(o.value)} className=\"multicombo__chip\">\n {o.label}\n <button type=\"button\" aria-label={formatMsg(locale['combobox.remove'], { label: o.label })} onClick={(e) => { e.stopPropagation(); toggle(o.value); }}><X size={12} /></button>\n </span>\n ))}\n {overflow > 0 && <span className=\"multicombo__chip multicombo__chip--more\">+{overflow}</span>}\n <input\n ref={inputRef}\n id={id}\n type=\"text\"\n role=\"combobox\"\n aria-expanded={open}\n aria-controls={listboxId}\n className=\"multicombo__input\"\n placeholder={selectedItems.length === 0 ? ph : ''}\n disabled={disabled}\n value={query}\n onFocus={() => setOpen(true)}\n onChange={(e) => { setQuery(e.target.value); setOpen(true); setActive(0); }}\n onKeyDown={onKey}\n />\n </div>\n {open && (\n <Portal>\n <ul\n ref={listRef}\n id={listboxId}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className={cx('multicombo__list', 'is-floating')}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n width: pos.width,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {filtered.length === 0 ? (\n <li className=\"multicombo__empty\">{empty}</li>\n ) : (\n filtered.map((o, i) => {\n const checked = selSet.has(o.value);\n return (\n <li\n key={String(o.value)}\n role=\"option\"\n aria-selected={checked}\n aria-disabled={o.disabled}\n className={cx('multicombo__option', i === active && 'is-active', checked && 'is-selected', o.disabled && 'is-disabled')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); if (!o.disabled) toggle(o.value); }}\n >\n <span className={cx('multicombo__check', checked && 'is-checked')} aria-hidden=\"true\">{checked ? <Check size={14} /> : null}</span>\n <span className=\"multicombo__option-body\">\n <span className=\"multicombo__option-label\">{o.label}</span>\n {o.description && <span className=\"multicombo__option-desc\">{o.description}</span>}\n </span>\n </li>\n );\n })\n )}\n </ul>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- DateRangePicker --------------------------------------------\nexport interface DateRange { from: Date | null; to: Date | null }\n\nexport interface DateRangePickerProps {\n /** Controlled value. Omit to make the picker uncontrolled (see `defaultValue`). */\n value?: DateRange;\n /**\n * In legacy mode, fires on every day click. In apply mode (when `onApply` is\n * provided), fires only at apply time so a controlled `value` can stay in sync.\n */\n onChange?: (v: DateRange) => void;\n /** Initial value when uncontrolled. Ignored if `value` is provided. */\n defaultValue?: DateRange;\n /**\n * Opt-in: enables apply mode. Day clicks only mutate an internal draft; the\n * consumer is notified when the user confirms (button \"Apply\" or a preset).\n * Closing the popover without applying reverts the draft to the last applied\n * value. Useful when each commit triggers a server-side query.\n */\n onApply?: (v: DateRange) => void;\n /** Fires on open/close transitions. */\n onOpenChange?: (open: boolean) => void;\n minDate?: Date;\n maxDate?: Date;\n /**\n * Disable arbitrary days (holidays, blackout dates, specific weekdays). A\n * day for which this returns `true` renders disabled — greyed, not\n * focusable, not clickable. Composes with `minDate`/`maxDate`. A range\n * endpoint can never land on a disabled day; a disabled day that falls\n * inside an otherwise-valid span stays greyed but is included visually\n * (the span is allowed). E.g. disable Sundays: `d => d.getDay() === 0`.\n */\n isDateDisabled?: (date: Date) => boolean;\n presets?: Array<{ label: string; range: () => DateRange }>;\n invalid?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n /**\n * Display format. Default `'auto'` derives from `configureBrand().locale`.\n */\n format?: DateFormat;\n}\n\nconst EMPTY_RANGE: DateRange = { from: null, to: null };\n\nexport function DateRangePicker({\n value, onChange, defaultValue, onApply, onOpenChange,\n minDate, maxDate, isDateDisabled, presets,\n invalid, disabled, className, id, format = 'auto',\n}: DateRangePickerProps) {\n const locale = useLocale();\n const weekdays = locale['picker.weekdaysShort'];\n const months = locale['calendar.months'];\n const fmt = resolveDateFormat(format);\n const isControlled = value !== undefined;\n const applyMode = !!onApply;\n const initial = isControlled ? (value as DateRange) : (defaultValue ?? EMPTY_RANGE);\n const [draft, setDraft] = React.useState<DateRange>(initial);\n const [lastApplied, setLastApplied] = React.useState<DateRange>(initial);\n // Resync draft/lastApplied when controlled `value` changes externally.\n const vFrom = value?.from?.getTime() ?? 0;\n const vTo = value?.to?.getTime() ?? 0;\n React.useEffect(() => {\n if (!isControlled) return;\n setDraft(value as DateRange);\n setLastApplied(value as DateRange);\n }, [isControlled, vFrom, vTo]);\n // Legacy-controlled (no `onApply`) keeps prior semantics: `value` drives render\n // directly. Otherwise the draft is truth.\n const current: DateRange = isControlled && !applyMode ? (value as DateRange) : draft;\n // The trigger label shows the last-committed range in apply mode; in legacy it\n // tracks `current` (so live edits stay reflected, as before).\n const displayed: DateRange = applyMode ? lastApplied : current;\n const [open, setOpen] = React.useState(false);\n const [view, setView] = React.useState(() => startOfMonth(initial.from ?? new Date()));\n const [hover, setHover] = React.useState<Date | null>(null);\n const wrapRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n // Portaled to body (escapes overflow ancestors) with flip/clamp and\n // scroll/resize reposition; Escape and outside-click return focus to the\n // trigger (a11y) — same primitive as MultiCombobox above.\n const pos = usePopoverPosition(wrapRef, popoverRef, {\n open,\n side: 'bottom',\n align: 'start',\n offset: 6,\n });\n\n const closeWithoutCommit = React.useCallback(() => {\n if (applyMode) setDraft(lastApplied);\n setOpen(false);\n onOpenChange?.(false);\n }, [applyMode, lastApplied, onOpenChange]);\n\n useDismiss({\n open,\n onDismiss: closeWithoutCommit,\n refs: [wrapRef, popoverRef],\n returnFocusRef: triggerRef,\n });\n\n // Each panel renders ~42 Date cells. Without memoization, every\n // setHover() triggered a full rebuild of both panels' grids on every\n // mouse movement over the calendar. Memo keyed on `view` only.\n const monthGrid0 = React.useMemo(() => buildMonthGrid(view, 0), [view]);\n const monthGrid1 = React.useMemo(() => buildMonthGrid(view, 1), [view]);\n\n const isDisabled = (d: Date) =>\n !!(\n (minDate && d < new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate())) ||\n (maxDate && d > new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate())) ||\n isDateDisabled?.(d)\n );\n\n const inRange = (d: Date) => {\n if (!current.from) return false;\n const end = current.to ?? hover;\n if (!end) return isSameDay(d, current.from);\n const a = current.from < end ? current.from : end;\n const b = current.from < end ? end : current.from;\n return d >= new Date(a.getFullYear(), a.getMonth(), a.getDate()) &&\n d <= new Date(b.getFullYear(), b.getMonth(), b.getDate());\n };\n\n const click = (d: Date) => {\n let next: DateRange;\n if (!current.from || (current.from && current.to)) next = { from: d, to: null };\n else {\n const from = current.from;\n next = d < from ? { from: d, to: from } : { from, to: d };\n }\n if (applyMode) setDraft(next);\n else onChange?.(next);\n };\n\n // Commits a range and closes. In apply mode this fires `onApply` (and `onChange`\n // when controlled, to keep `value` in sync). In legacy mode, only preset commits\n // propagate via `onChange`; the bare \"Apply\" button stays close-only as before.\n const commit = (next: DateRange, fromPreset = false) => {\n if (applyMode) {\n onApply!(next);\n setLastApplied(next);\n setDraft(next);\n if (isControlled) onChange?.(next);\n } else if (fromPreset) {\n onChange?.(next);\n }\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const clear = () => {\n if (applyMode) setDraft(EMPTY_RANGE);\n else onChange?.(EMPTY_RANGE);\n };\n\n const toggleOpen = () => {\n if (open) closeWithoutCommit();\n else { setOpen(true); onOpenChange?.(true); }\n };\n\n const label = displayed.from\n ? displayed.to\n ? `${formatDate(displayed.from, fmt)} → ${formatDate(displayed.to, fmt)}`\n : `${formatDate(displayed.from, fmt)} → …`\n : locale['picker.selectRange'];\n\n const renderMonth = (offset: number) => {\n const { month: m, cells } = offset === 0 ? monthGrid0 : monthGrid1;\n return (\n <div className=\"daterange__month\">\n <div className=\"daterange__title\">{months[m.getMonth()]} {m.getFullYear()}</div>\n <div className=\"daterange__grid\">\n {weekdays.map((w, i) => <span key={i} className=\"daterange__dow\">{w}</span>)}\n {cells.map((d, i) => {\n if (!d) return <span key={`b${i}`} />;\n const sel = (current.from && isSameDay(d, current.from)) || (current.to && isSameDay(d, current.to));\n const ir = inRange(d);\n const today = isSameDay(d, new Date());\n const off = isDisabled(d);\n return (\n <button\n key={i}\n type=\"button\"\n className={cx('daterange__day', sel && 'is-selected', ir && !sel && 'is-range', today && 'is-today', off && 'is-disabled')}\n disabled={!!off}\n onMouseEnter={() => setHover(d)}\n onClick={() => click(d)}\n >{d.getDate()}</button>\n );\n })}\n </div>\n </div>\n );\n };\n\n return (\n <div ref={wrapRef} className={cx('daterange', invalid && 'is-invalid', disabled && 'is-disabled', className)}>\n <button\n ref={triggerRef}\n id={id}\n type=\"button\"\n className=\"daterange__trigger\"\n disabled={disabled}\n onClick={toggleOpen}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n >\n <span className=\"daterange__icon\" aria-hidden=\"true\"><CalendarIcon size={16} /></span>\n <span>{label}</span>\n </button>\n {open && (\n <Portal>\n <div\n ref={popoverRef}\n className={cx('daterange__popover', 'is-floating')}\n role=\"dialog\"\n onMouseLeave={() => setHover(null)}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n >\n {presets && presets.length > 0 && (\n <ul className=\"daterange__presets\">\n {presets.map((p, i) => (\n <li key={i}>\n <button type=\"button\" onClick={() => commit(p.range(), true)}>{p.label}</button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"daterange__panes\">\n <div className=\"daterange__nav\">\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, -1))} aria-label={locale['calendar.prevMonth']}><ChevronLeft size={16} /></button>\n <span />\n <button type=\"button\" onClick={() => setView((v) => addMonths(v, 1))} aria-label={locale['calendar.nextMonth']}><ChevronRight size={16} /></button>\n </div>\n <div className=\"daterange__months\">\n {renderMonth(0)}\n {renderMonth(1)}\n </div>\n <div className=\"daterange__actions\">\n <button type=\"button\" className=\"daterange__clear\" onClick={clear}>{locale['common.clear']}</button>\n <button type=\"button\" className=\"daterange__apply\" onClick={() => commit(current)} disabled={!current.from || !current.to}>{locale['common.apply']}</button>\n </div>\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}\n\n// ---------- Command Palette (⌘K) ----------------------------------------\nexport interface CommandItem {\n id: string;\n label: string;\n description?: string;\n group?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n keywords?: string[];\n onRun: () => void;\n}\n\nexport interface CommandPaletteProps {\n open: boolean;\n onClose: () => void;\n items: CommandItem[];\n placeholder?: string;\n emptyMessage?: string;\n hotkey?: string; // 'mod+k'\n}\n\nfunction matchesHotkey(e: KeyboardEvent, hk: string) {\n const parts = hk.toLowerCase().split('+');\n const key = parts[parts.length - 1];\n const mods = parts.slice(0, -1);\n if (e.key.toLowerCase() !== key) return false;\n for (const m of mods) {\n if (m === 'mod' && !(e.metaKey || e.ctrlKey)) return false;\n if (m === 'ctrl' && !e.ctrlKey) return false;\n if (m === 'meta' && !e.metaKey) return false;\n if (m === 'shift' && !e.shiftKey) return false;\n if (m === 'alt' && !e.altKey) return false;\n }\n return true;\n}\n\nexport function CommandPalette({\n open, onClose, items,\n placeholder,\n emptyMessage,\n}: CommandPaletteProps) {\n const locale = useLocale();\n const ph = placeholder ?? locale['picker.searchCommands'];\n const empty = emptyMessage ?? locale['common.noResults'];\n const [query, setQuery] = React.useState('');\n const [active, setActive] = React.useState(0);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n\n const filtered = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((it) => {\n const hay = [it.label, it.description, it.group, ...(it.keywords ?? [])].join(' ').toLowerCase();\n return hay.includes(q);\n });\n }, [items, query]);\n\n // group preserve order\n const grouped = React.useMemo(() => {\n const order: string[] = [];\n const map = new Map<string, CommandItem[]>();\n for (const it of filtered) {\n const g = it.group ?? '';\n if (!map.has(g)) { map.set(g, []); order.push(g); }\n map.get(g)!.push(it);\n }\n return { order, map };\n }, [filtered]);\n\n const flat = filtered;\n\n React.useEffect(() => {\n if (open) {\n setQuery(''); setActive(0);\n requestAnimationFrame(() => inputRef.current?.focus());\n }\n }, [open]);\n\n React.useEffect(() => { setActive(0); }, [query]);\n\n React.useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n else if (e.key === 'ArrowDown') { e.preventDefault(); setActive((a) => Math.min(flat.length - 1, a + 1)); }\n else if (e.key === 'ArrowUp') { e.preventDefault(); setActive((a) => Math.max(0, a - 1)); }\n else if (e.key === 'Enter') {\n e.preventDefault();\n const it = flat[active];\n if (it) { it.onRun(); onClose(); }\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [open, flat, active, onClose]);\n\n React.useEffect(() => {\n const el = listRef.current?.querySelector(`[data-cmd-idx=\"${active}\"]`);\n el?.scrollIntoView({ block: 'nearest' });\n }, [active]);\n\n if (!open) return null;\n let idx = -1;\n return (\n <div className=\"cmdk__overlay\" role=\"dialog\" aria-modal=\"true\" aria-label={locale['picker.commandPalette']} onMouseDown={(e) => { if (e.target === e.currentTarget) onClose(); }}>\n <div className=\"cmdk__panel\">\n <div className=\"cmdk__searchbar\">\n <span className=\"cmdk__icon\" aria-hidden=\"true\"><Search size={16} /></span>\n <input\n ref={inputRef}\n className=\"cmdk__input\"\n value={query}\n placeholder={ph}\n onChange={(e) => setQuery(e.target.value)}\n />\n <kbd className=\"cmdk__esc\">Esc</kbd>\n </div>\n <ul ref={listRef} className=\"cmdk__list\" role=\"listbox\">\n {flat.length === 0 && <li className=\"cmdk__empty\">{empty}</li>}\n {grouped.order.map((g) => (\n <React.Fragment key={g || '__none'}>\n {g && <li className=\"cmdk__group\" aria-hidden=\"true\">{g}</li>}\n {grouped.map.get(g)!.map((it) => {\n idx++;\n const i = idx;\n return (\n <li\n key={it.id}\n role=\"option\"\n aria-selected={i === active}\n data-cmd-idx={i}\n className={cx('cmdk__item', i === active && 'is-active')}\n onMouseEnter={() => setActive(i)}\n onMouseDown={(e) => { e.preventDefault(); it.onRun(); onClose(); }}\n >\n {it.icon && <span className=\"cmdk__item-icon\" aria-hidden=\"true\">{it.icon}</span>}\n <span className=\"cmdk__item-body\">\n <span className=\"cmdk__item-label\">{it.label}</span>\n {it.description && <span className=\"cmdk__item-desc\">{it.description}</span>}\n </span>\n {it.shortcut && <kbd className=\"cmdk__kbd\">{it.shortcut}</kbd>}\n </li>\n );\n })}\n </React.Fragment>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n\nexport interface UseCommandPaletteOptions {\n hotkey?: string; // default 'mod+k'\n}\n\nexport function useCommandPalette({ hotkey = 'mod+k' }: UseCommandPaletteOptions = {}) {\n const [open, setOpen] = React.useState(false);\n React.useEffect(() => {\n const onKey = (e: KeyboardEvent) => {\n if (matchesHotkey(e, hotkey)) {\n e.preventDefault();\n setOpen((o) => !o);\n }\n };\n document.addEventListener('keydown', onKey);\n return () => document.removeEventListener('keydown', onKey);\n }, [hotkey]);\n return { open, setOpen, close: () => setOpen(false), toggle: () => setOpen((o) => !o) };\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  'use client';
2
- import { useLocale } from './chunk-SXAGF7EG.mjs';
3
- import { X } from './chunk-BJGMROKL.mjs';
4
- import { cx } from './chunk-IEPCH3JB.mjs';
5
- import { useScrollLock } from './chunk-R5DCDEB5.mjs';
6
2
  import { useDelayedUnmount } from './chunk-U3JH4T3A.mjs';
7
3
  import { useEscape } from './chunk-6W7ZGWNA.mjs';
8
4
  import { useFocusTrap } from './chunk-XOV4D6J3.mjs';
5
+ import { useScrollLock } from './chunk-R5DCDEB5.mjs';
6
+ import { useLocale } from './chunk-SXAGF7EG.mjs';
7
+ import { X } from './chunk-BJGMROKL.mjs';
8
+ import { cx } from './chunk-IEPCH3JB.mjs';
9
9
  import * as React from 'react';
10
10
  import { createPortal } from 'react-dom';
11
11
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -123,5 +123,5 @@ function Drawer({
123
123
  }
124
124
 
125
125
  export { Drawer, Modal };
126
- //# sourceMappingURL=chunk-Y3IPKGOU.mjs.map
127
- //# sourceMappingURL=chunk-Y3IPKGOU.mjs.map
126
+ //# sourceMappingURL=chunk-VOSVV3LL.mjs.map
127
+ //# sourceMappingURL=chunk-VOSVV3LL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Overlay.tsx"],"names":[],"mappings":"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","file":"chunk-Y3IPKGOU.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { useDelayedUnmount } from '../hooks/useDelayedUnmount';\nimport { useFocusTrap, useEscape, useScrollLock } from '../hooks';\n\n// Exit animation duration in ms. Must match `--duration-exit` and the\n// `is-closing` keyframes in src/styles/index.css (`.modal-backdrop`,\n// `.drawer-backdrop`).\nconst EXIT_MS = 150;\n\nexport interface OverlayProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n className?: string;\n}\n\nexport function Modal({\n open, onClose, title, children, footer, size = 'md',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: OverlayProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n // useDelayedUnmount keeps the DOM mounted during exit animation. The\n // a11y/scroll-lock hooks still consume `open` (the user's intent), not\n // `mounted` — we don't want to trap focus or block scroll while\n // animating out.\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('modal-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('modal', `modal--${size}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"modal__header\">\n <div id={titleId} className=\"modal__title\">{title}</div>\n <button type=\"button\" className=\"modal__close\" onClick={onClose} aria-label={t['modal.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"modal__body\">{children}</div>\n {footer && <div className=\"modal__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n\nexport interface DrawerProps extends OverlayProps {\n side?: 'left' | 'right';\n}\n\nexport function Drawer({\n open, onClose, title, children, footer, side = 'right',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: DrawerProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('drawer-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('drawer', `drawer--${side}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"drawer__header\">\n <div id={titleId} className=\"drawer__title\">{title}</div>\n <button type=\"button\" className=\"drawer__close\" onClick={onClose} aria-label={t['drawer.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"drawer__body\">{children}</div>\n {footer && <div className=\"drawer__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/Overlay.tsx"],"names":[],"mappings":"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","file":"chunk-VOSVV3LL.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cx } from '../utils/cx';\nimport { X } from './Icons';\nimport { useLocale } from '../locale/LocaleProvider';\nimport { useDelayedUnmount } from '../hooks/useDelayedUnmount';\nimport { useFocusTrap, useEscape, useScrollLock } from '../hooks';\n\n// Exit animation duration in ms. Must match `--duration-exit` and the\n// `is-closing` keyframes in src/styles/index.css (`.modal-backdrop`,\n// `.drawer-backdrop`).\nconst EXIT_MS = 150;\n\nexport interface OverlayProps {\n open: boolean;\n onClose: () => void;\n title?: React.ReactNode;\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg';\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n className?: string;\n}\n\nexport function Modal({\n open, onClose, title, children, footer, size = 'md',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: OverlayProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n // useDelayedUnmount keeps the DOM mounted during exit animation. The\n // a11y/scroll-lock hooks still consume `open` (the user's intent), not\n // `mounted` — we don't want to trap focus or block scroll while\n // animating out.\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('modal-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('modal', `modal--${size}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"modal__header\">\n <div id={titleId} className=\"modal__title\">{title}</div>\n <button type=\"button\" className=\"modal__close\" onClick={onClose} aria-label={t['modal.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"modal__body\">{children}</div>\n {footer && <div className=\"modal__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n\nexport interface DrawerProps extends OverlayProps {\n side?: 'left' | 'right';\n}\n\nexport function Drawer({\n open, onClose, title, children, footer, side = 'right',\n closeOnBackdrop = true, closeOnEsc = true, className,\n}: DrawerProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n // True only when the press both started AND ended on the backdrop itself.\n // Fixes: press inside (e.g. text-selecting in an input) released over the\n // backdrop must NOT dismiss.\n const downOnBackdrop = React.useRef(false);\n const titleId = React.useId();\n const t = useLocale();\n const { mounted, closing } = useDelayedUnmount(open, EXIT_MS);\n useEscape(open, onClose, closeOnEsc);\n useFocusTrap(ref, open);\n useScrollLock(open);\n if (!mounted || typeof document === 'undefined') return null;\n return createPortal(\n <div\n className={cx('drawer-backdrop', closing && 'is-closing')}\n onMouseDown={(e) => { downOnBackdrop.current = e.target === e.currentTarget; }}\n onClick={(e) => {\n if (closeOnBackdrop && downOnBackdrop.current && e.target === e.currentTarget) onClose();\n downOnBackdrop.current = false;\n }}\n >\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n className={cx('drawer', `drawer--${side}`, closing && 'is-closing', className)}\n >\n {title && (\n <div className=\"drawer__header\">\n <div id={titleId} className=\"drawer__title\">{title}</div>\n <button type=\"button\" className=\"drawer__close\" onClick={onClose} aria-label={t['drawer.close']}><X size={18} /></button>\n </div>\n )}\n <div className=\"drawer__body\">{children}</div>\n {footer && <div className=\"drawer__footer\">{footer}</div>}\n </div>\n </div>,\n document.body\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { Portal } from './chunk-FKBQYQQD.mjs';
3
- import { cx } from './chunk-IEPCH3JB.mjs';
4
3
  import { usePopoverPosition } from './chunk-5XT2LX3I.mjs';
4
+ import { cx } from './chunk-IEPCH3JB.mjs';
5
5
  import * as React from 'react';
6
6
  import { jsxs, jsx } from 'react/jsx-runtime';
7
7
 
@@ -72,5 +72,5 @@ function HoverCard({
72
72
  }
73
73
 
74
74
  export { HoverCard };
75
- //# sourceMappingURL=chunk-HFRMDYNW.mjs.map
76
- //# sourceMappingURL=chunk-HFRMDYNW.mjs.map
75
+ //# sourceMappingURL=chunk-X36H75RR.mjs.map
76
+ //# sourceMappingURL=chunk-X36H75RR.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/HoverCard.tsx"],"names":[],"mappings":";;;;;;AAmBO,SAAS,SAAA,CAAU;AAAA,EACxB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,SAAA,GAAY,GAAA;AAAA,EACZ,UAAA,GAAa,GAAA;AAAA,EACb,MAAA,GAAS,CAAA;AAAA,EACT,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAmB,aAAwB,IAAI,CAAA;AACrD,EAAA,MAAM,UAAA,GAAmB,aAAuB,IAAI,CAAA;AACpD,EAAA,MAAM,SAAA,GAAkB,aAA6C,IAAI,CAAA;AACzE,EAAA,MAAM,UAAA,GAAmB,aAA6C,IAAI,CAAA;AAE1E,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA;AACrD,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,SAAA,CAAU,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,SAAS,CAAA;AAAA,EAC/D,CAAA;AACA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,UAAU,CAAA;AAAA,EAClE,CAAA;AAEA,EAAM,gBAAU,MAAM,MAAM,KAAA,EAAM,EAAG,EAAE,CAAA;AAEvC,EAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,UAAA,EAAY,UAAA,EAAY;AAAA,IACrD,IAAA;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP;AAAA,GACD,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACrC,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,OAAA;AAAA,MACd,OAAA,EAAS,OAAA;AAAA,MACT,MAAA,EAAQ,OAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAK,UAAA,EAAY,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC/D,IAAA,wBACE,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,aAAA,EAAe,gBAAgB,CAAA;AAAA,YACpE,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,OAAA;AAAA,cACV,KAAK,GAAA,CAAI,GAAA;AAAA,cACT,MAAM,GAAA,CAAI,IAAA;AAAA,cACV,UAAA,EAAY,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAY;AAAA,aACtC;AAAA,YACA,YAAA,EAAc,OAAA;AAAA,YACd,YAAA,EAAc,OAAA;AAAA,YAEb;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ","file":"chunk-HFRMDYNW.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\n\nexport type HoverCardPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface HoverCardProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n placement?: HoverCardPlacement;\n openDelay?: number;\n closeDelay?: number;\n offset?: number;\n className?: string;\n contentClassName?: string;\n}\n\nexport function HoverCard({\n trigger,\n children,\n placement = 'bottom',\n openDelay = 250,\n closeDelay = 150,\n offset = 8,\n className,\n contentClassName,\n}: HoverCardProps) {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n\n const onEnter = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n };\n const onLeave = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n };\n\n React.useEffect(() => () => clear(), []);\n\n const pos = usePopoverPosition(triggerRef, contentRef, {\n open,\n side: placement,\n align: 'center',\n offset,\n });\n\n return (\n <span\n className={cx('hover-card', className)}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n onFocus={onEnter}\n onBlur={onLeave}\n >\n <span ref={triggerRef} className=\"hover-card__trigger\">{trigger}</span>\n {open && (\n <Portal>\n <div\n ref={contentRef}\n role=\"tooltip\"\n className={cx('hover-card__content', 'is-floating', contentClassName)}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n {children}\n </div>\n </Portal>\n )}\n </span>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/HoverCard.tsx"],"names":[],"mappings":";;;;;;AAmBO,SAAS,SAAA,CAAU;AAAA,EACxB,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,SAAA,GAAY,GAAA;AAAA,EACZ,UAAA,GAAa,GAAA;AAAA,EACb,MAAA,GAAS,CAAA;AAAA,EACT,SAAA;AAAA,EACA;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAU,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,UAAA,GAAmB,aAAwB,IAAI,CAAA;AACrD,EAAA,MAAM,UAAA,GAAmB,aAAuB,IAAI,CAAA;AACpD,EAAA,MAAM,SAAA,GAAkB,aAA6C,IAAI,CAAA;AACzE,EAAA,MAAM,UAAA,GAAmB,aAA6C,IAAI,CAAA;AAE1E,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,IAAI,SAAA,CAAU,OAAA,EAAS,YAAA,CAAa,SAAA,CAAU,OAAO,CAAA;AACrD,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,YAAA,CAAa,UAAA,CAAW,OAAO,CAAA;AAAA,EACzD,CAAA;AAEA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,SAAA,CAAU,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,IAAI,GAAG,SAAS,CAAA;AAAA,EAC/D,CAAA;AACA,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,KAAA,EAAM;AACN,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,MAAM,OAAA,CAAQ,KAAK,GAAG,UAAU,CAAA;AAAA,EAClE,CAAA;AAEA,EAAM,gBAAU,MAAM,MAAM,KAAA,EAAM,EAAG,EAAE,CAAA;AAEvC,EAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,UAAA,EAAY,UAAA,EAAY;AAAA,IACrD,IAAA;AAAA,IACA,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP;AAAA,GACD,CAAA;AAED,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,YAAA,EAAc,SAAS,CAAA;AAAA,MACrC,YAAA,EAAc,OAAA;AAAA,MACd,YAAA,EAAc,OAAA;AAAA,MACd,OAAA,EAAS,OAAA;AAAA,MACT,MAAA,EAAQ,OAAA;AAAA,MAER,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAK,UAAA,EAAY,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,QAC/D,IAAA,wBACE,MAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,SAAA;AAAA,YACL,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,aAAA,EAAe,gBAAgB,CAAA;AAAA,YACpE,KAAA,EAAO;AAAA,cACL,QAAA,EAAU,OAAA;AAAA,cACV,KAAK,GAAA,CAAI,GAAA;AAAA,cACT,MAAM,GAAA,CAAI,IAAA;AAAA,cACV,UAAA,EAAY,GAAA,CAAI,KAAA,GAAQ,SAAA,GAAY;AAAA,aACtC;AAAA,YACA,YAAA,EAAc,OAAA;AAAA,YACd,YAAA,EAAc,OAAA;AAAA,YAEb;AAAA;AAAA,SACH,EACF;AAAA;AAAA;AAAA,GAEJ;AAEJ","file":"chunk-X36H75RR.mjs","sourcesContent":["'use client';\nimport * as React from 'react';\nimport { cx } from '../utils/cx';\nimport { Portal } from './Portal';\nimport { usePopoverPosition } from '../hooks/usePopoverPosition';\n\nexport type HoverCardPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface HoverCardProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n placement?: HoverCardPlacement;\n openDelay?: number;\n closeDelay?: number;\n offset?: number;\n className?: string;\n contentClassName?: string;\n}\n\nexport function HoverCard({\n trigger,\n children,\n placement = 'bottom',\n openDelay = 250,\n closeDelay = 150,\n offset = 8,\n className,\n contentClassName,\n}: HoverCardProps) {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLSpanElement>(null);\n const contentRef = React.useRef<HTMLDivElement>(null);\n const openTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = () => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n };\n\n const onEnter = () => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n };\n const onLeave = () => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n };\n\n React.useEffect(() => () => clear(), []);\n\n const pos = usePopoverPosition(triggerRef, contentRef, {\n open,\n side: placement,\n align: 'center',\n offset,\n });\n\n return (\n <span\n className={cx('hover-card', className)}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n onFocus={onEnter}\n onBlur={onLeave}\n >\n <span ref={triggerRef} className=\"hover-card__trigger\">{trigger}</span>\n {open && (\n <Portal>\n <div\n ref={contentRef}\n role=\"tooltip\"\n className={cx('hover-card__content', 'is-floating', contentClassName)}\n style={{\n position: 'fixed',\n top: pos.top,\n left: pos.left,\n visibility: pos.ready ? 'visible' : 'hidden',\n }}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n {children}\n </div>\n </Portal>\n )}\n </span>\n );\n}\n"]}