@logicplanes/kaeso-ui 0.4.7 → 0.5.0

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 (150) hide show
  1. package/NOTICE.md +1 -1
  2. package/ai/component-guides.md +40 -6
  3. package/ai/component-registry.json +67 -5
  4. package/ai/component-registry.md +23 -5
  5. package/ai/icons.md +1 -1
  6. package/ai/tokens.md +1 -1
  7. package/dist/blocks/delete-resource.js +1 -1
  8. package/dist/blocks/pages.js +2 -2
  9. package/dist/blocks/resource-list.js +3 -3
  10. package/dist/chunks/{app-frame-CfJ7s3Q0.js → app-frame-B1FXVFYx.js} +5 -5
  11. package/dist/chunks/{app-frame-CfJ7s3Q0.js.map → app-frame-B1FXVFYx.js.map} +1 -1
  12. package/dist/chunks/{banner-B3DGLTBu.js → banner-BinTH032.js} +2 -2
  13. package/dist/chunks/{banner-B3DGLTBu.js.map → banner-BinTH032.js.map} +1 -1
  14. package/dist/chunks/{button-IblhXUyZ.js → button-DrmFgdIi.js} +2 -2
  15. package/dist/chunks/button-DrmFgdIi.js.map +1 -0
  16. package/dist/chunks/{checkbox-9tbimmF3.js → checkbox-ahl1SOqU.js} +2 -2
  17. package/dist/chunks/{checkbox-9tbimmF3.js.map → checkbox-ahl1SOqU.js.map} +1 -1
  18. package/dist/chunks/{code-block-KIvuE8jg.js → code-block-CE3H3nMu.js} +3 -3
  19. package/dist/chunks/{code-block-KIvuE8jg.js.map → code-block-CE3H3nMu.js.map} +1 -1
  20. package/dist/chunks/{code-block-64e-Cy1S.js → code-block-O_EPmMIQ.js} +2 -2
  21. package/dist/chunks/{code-block-64e-Cy1S.js.map → code-block-O_EPmMIQ.js.map} +1 -1
  22. package/dist/chunks/{combobox-DkcjkWc6.js → combobox-DghYPLVQ.js} +7 -3
  23. package/dist/chunks/combobox-DghYPLVQ.js.map +1 -0
  24. package/dist/chunks/{command-list-CypqsC4T.js → command-list-BUmEaaBi.js} +3 -3
  25. package/dist/chunks/{command-list-CypqsC4T.js.map → command-list-BUmEaaBi.js.map} +1 -1
  26. package/dist/chunks/{copy-button-CwU8t_9_.js → copy-button-DBPAA1g0.js} +2 -2
  27. package/dist/chunks/{copy-button-CwU8t_9_.js.map → copy-button-DBPAA1g0.js.map} +1 -1
  28. package/dist/chunks/{core-B0bULn-t.js → core-Cw3pNRp3.js} +2 -2
  29. package/dist/chunks/{core-B0bULn-t.js.map → core-Cw3pNRp3.js.map} +1 -1
  30. package/dist/chunks/{data-table-z7z6DqMJ.js → data-table-CGecI-FI.js} +6 -6
  31. package/dist/chunks/data-table-CGecI-FI.js.map +1 -0
  32. package/dist/chunks/{date-popup-DAnjptFt.js → date-popup-C6vVOOWF.js} +2 -2
  33. package/dist/chunks/{date-popup-DAnjptFt.js.map → date-popup-C6vVOOWF.js.map} +1 -1
  34. package/dist/chunks/{dialog-2zb6ClNR.js → dialog-s3_LUPBi.js} +4 -4
  35. package/dist/chunks/{dialog-2zb6ClNR.js.map → dialog-s3_LUPBi.js.map} +1 -1
  36. package/dist/chunks/{disclosure-BtYRTDO3.js → disclosure-3CIz2WZa.js} +2 -2
  37. package/dist/chunks/disclosure-3CIz2WZa.js.map +1 -0
  38. package/dist/chunks/{domain-BsM9UmAg.js → domain-CrQX3p6E.js} +2 -2
  39. package/dist/chunks/{domain-BsM9UmAg.js.map → domain-CrQX3p6E.js.map} +1 -1
  40. package/dist/chunks/{icon-button-Dfwpvmav.js → icon-button-6kOn2zrP.js} +2 -2
  41. package/dist/chunks/{icon-button-Dfwpvmav.js.map → icon-button-6kOn2zrP.js.map} +1 -1
  42. package/dist/chunks/identity-BwYixi8Q.js +520 -0
  43. package/dist/chunks/identity-BwYixi8Q.js.map +1 -0
  44. package/dist/chunks/{input-Bo5-UZg2.js → input-D1SeLe3X.js} +2 -2
  45. package/dist/chunks/{input-Bo5-UZg2.js.map → input-D1SeLe3X.js.map} +1 -1
  46. package/dist/chunks/{input-group-jPcK9T_a.js → input-group-BbxwEAUP.js} +2 -2
  47. package/dist/chunks/{input-group-jPcK9T_a.js.map → input-group-BbxwEAUP.js.map} +1 -1
  48. package/dist/chunks/{iso-field-DoqHBg8n.js → iso-field-BVOKAY4H.js} +2 -2
  49. package/dist/chunks/{iso-field-DoqHBg8n.js.map → iso-field-BVOKAY4H.js.map} +1 -1
  50. package/dist/chunks/{list-CU_AoVY3.js → list-o8wcuBOz.js} +3 -3
  51. package/dist/chunks/{list-CU_AoVY3.js.map → list-o8wcuBOz.js.map} +1 -1
  52. package/dist/chunks/{markdown-C565aBR7.js → markdown-BZKZi9d8.js} +4 -4
  53. package/dist/chunks/{markdown-C565aBR7.js.map → markdown-BZKZi9d8.js.map} +1 -1
  54. package/dist/chunks/{menu-Clvv6ftq.js → menu-BDce2kiw.js} +2 -2
  55. package/dist/chunks/{menu-Clvv6ftq.js.map → menu-BDce2kiw.js.map} +1 -1
  56. package/dist/chunks/{nav-sheet-Dt6JSvzX.js → nav-sheet-S7tagFJT.js} +3 -3
  57. package/dist/chunks/{nav-sheet-Dt6JSvzX.js.map → nav-sheet-S7tagFJT.js.map} +1 -1
  58. package/dist/chunks/{page-header-BQijP6Rp.js → page-header-DUaKLpK3.js} +2 -2
  59. package/dist/chunks/{page-header-BQijP6Rp.js.map → page-header-DUaKLpK3.js.map} +1 -1
  60. package/dist/chunks/{pagination-D7fAm8qg.js → pagination-D9hM6W2z.js} +3 -3
  61. package/dist/chunks/{pagination-D7fAm8qg.js.map → pagination-D9hM6W2z.js.map} +1 -1
  62. package/dist/chunks/{picker-popover-1FHb1LQG.js → picker-popover-PzVOo62-.js} +4 -4
  63. package/dist/chunks/{picker-popover-1FHb1LQG.js.map → picker-popover-PzVOo62-.js.map} +1 -1
  64. package/dist/chunks/{range-popup-lGiZsG3s.js → range-popup-Dt6Q0Ryw.js} +3 -3
  65. package/dist/chunks/{range-popup-lGiZsG3s.js.map → range-popup-Dt6Q0Ryw.js.map} +1 -1
  66. package/dist/chunks/{rights-B68ocZuq.js → rights-DAHTG_kH.js} +4 -4
  67. package/dist/chunks/{rights-B68ocZuq.js.map → rights-DAHTG_kH.js.map} +1 -1
  68. package/dist/chunks/{select-BqjmQOqx.js → select-UTdHKubp.js} +2 -2
  69. package/dist/chunks/{select-BqjmQOqx.js.map → select-UTdHKubp.js.map} +1 -1
  70. package/dist/chunks/{sidebar-Dq7oGOje.js → sidebar-BO1mnjVH.js} +3 -3
  71. package/dist/chunks/{sidebar-Dq7oGOje.js.map → sidebar-BO1mnjVH.js.map} +1 -1
  72. package/dist/chunks/{sidebar-menu-QSSNu1jJ.js → sidebar-menu-C0qJsQF5.js} +2 -2
  73. package/dist/chunks/{sidebar-menu-QSSNu1jJ.js.map → sidebar-menu-C0qJsQF5.js.map} +1 -1
  74. package/dist/chunks/styles-8fn_bHRP.js +21 -0
  75. package/dist/chunks/styles-8fn_bHRP.js.map +1 -0
  76. package/dist/chunks/{textarea-CO0HP6fK.js → textarea-CRmvC4jd.js} +3 -3
  77. package/dist/chunks/{textarea-CO0HP6fK.js.map → textarea-CRmvC4jd.js.map} +1 -1
  78. package/dist/chunks/{timeseries-nDviPxvQ.js → timeseries-CK86u7M0.js} +3 -3
  79. package/dist/chunks/{timeseries-nDviPxvQ.js.map → timeseries-CK86u7M0.js.map} +1 -1
  80. package/dist/components/app-frame.js +2 -2
  81. package/dist/components/banner.js +1 -1
  82. package/dist/components/button-group.js +1 -1
  83. package/dist/components/button.js +1 -1
  84. package/dist/components/charts/bar.js +2 -2
  85. package/dist/components/charts/donut.js +1 -1
  86. package/dist/components/charts/gauge.js +1 -1
  87. package/dist/components/charts/heatmap.js +1 -1
  88. package/dist/components/charts/sankey.js +2 -2
  89. package/dist/components/charts/timeseries.js +1 -1
  90. package/dist/components/charts.js +2 -2
  91. package/dist/components/checkbox.js +1 -1
  92. package/dist/components/code-block.js +2 -2
  93. package/dist/components/collapsible.js +29 -30
  94. package/dist/components/collapsible.js.map +1 -1
  95. package/dist/components/combobox.js +1 -1
  96. package/dist/components/command-list.js +2 -2
  97. package/dist/components/command-palette.js +1 -1
  98. package/dist/components/copy-button.js +1 -1
  99. package/dist/components/data-table.js +1 -1
  100. package/dist/components/date-picker.js +2 -2
  101. package/dist/components/dialog.js +2 -2
  102. package/dist/components/display-options.js +2 -2
  103. package/dist/components/filter-chip.js +3 -3
  104. package/dist/components/filter-toggle.js +35 -0
  105. package/dist/components/filter-toggle.js.map +1 -0
  106. package/dist/components/icon-button.js +1 -1
  107. package/dist/components/input.js +3 -3
  108. package/dist/components/kaeso/conversation.js +2 -2
  109. package/dist/components/kaeso/identity.js +1 -1
  110. package/dist/components/kaeso/moments.js +3 -3
  111. package/dist/components/kaeso/rights.js +1 -1
  112. package/dist/components/kaeso/usage.js +1 -1
  113. package/dist/components/kaeso.js +9 -14
  114. package/dist/components/kaeso.js.map +1 -1
  115. package/dist/components/key-value.js +1 -1
  116. package/dist/components/list.js +1 -1
  117. package/dist/components/markdown.js +1 -1
  118. package/dist/components/menu.js +2 -2
  119. package/dist/components/page-header.js +1 -1
  120. package/dist/components/pagination.js +1 -1
  121. package/dist/components/playground.js +9 -9
  122. package/dist/components/select.js +1 -1
  123. package/dist/components/sheet.js +1 -1
  124. package/dist/components/sidebar.js +1 -1
  125. package/dist/components/tabs.js +4 -4
  126. package/dist/components/tabs.js.map +1 -1
  127. package/dist/components/theme-menu.js +2 -2
  128. package/dist/components/theme-select.js +1 -1
  129. package/dist/index.js +68 -67
  130. package/dist/kaeso.css +11 -12
  131. package/dist/styles.css +1 -1
  132. package/dist/types/components/combobox/combobox.d.ts +2 -0
  133. package/dist/types/components/filter-toggle/docs.d.ts +11 -0
  134. package/dist/types/components/filter-toggle/filter-toggle.d.ts +23 -0
  135. package/dist/types/components/filter-toggle/index.d.ts +1 -0
  136. package/dist/types/components/kaeso/docs.d.ts +1 -0
  137. package/dist/types/components/kaeso/identity.d.ts +1 -0
  138. package/dist/types/components/kaeso/provider-marks.d.ts +27 -2
  139. package/dist/types/components/menu/styles.d.ts +1 -1
  140. package/dist/types/components/tabs/tabs.d.ts +2 -2
  141. package/dist/types/index.d.ts +1 -0
  142. package/package.json +5 -5
  143. package/dist/chunks/button-IblhXUyZ.js.map +0 -1
  144. package/dist/chunks/combobox-DkcjkWc6.js.map +0 -1
  145. package/dist/chunks/data-table-z7z6DqMJ.js.map +0 -1
  146. package/dist/chunks/disclosure-BtYRTDO3.js.map +0 -1
  147. package/dist/chunks/identity-BQoh-UpW.js +0 -365
  148. package/dist/chunks/identity-BQoh-UpW.js.map +0 -1
  149. package/dist/chunks/styles-hkFkoBbi.js +0 -21
  150. package/dist/chunks/styles-hkFkoBbi.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-Dq7oGOje.js","names":["_Fragment","__icon_Alert02Icon","__icon_UnfoldMoreIcon","__icon_ArrowLeft01Icon","__icon_SidebarLeftIcon","cn","useLinkComponent","useUiText","Icon","HandedTrigger","showsText","useLazyModule","triggerPropsStore","useHiddenDescription","Tooltip","lazyModule","mergeRefs","observeResize","NavWordmark","Skeleton","DisclosureChevron","DISCLOSURE_TRIGGER","whenIdle","Fragment$1","listeners","memory","read","raw","key","subscribe","set","onChange","onStorage","e","noSubscription","nothing","useStoredState","k","own","setOwn","useState","initial","sub","useCallback","snapshot","useSyncExternalStore","stored","useMemo","v","json","notify","strong","text","i","part","KAESO_SIDEBAR_VARIANTS","KAESO_SIDEBAR_DEFAULT_VARIANTS","Ctx","useSidebar","useContext","SidebarFloatingContext","SidebarSheetContext","Provider","rail","setRail","storageKey","defaultRail","storedWidth","setWidth","preview","previewWidth","width","clampWidth","collapsed","setCollapsedState","peeking","setPeeking","lastFocus","useRef","setCollapsed","active","leaving","returning","shortcut","onKey","TYPING","value","HINT_DELAY","SIDEBAR_MIN","SIDEBAR_MAX","Root","ariaLabel","props","t","hint","setHint","hintTimer","dragging","setDragging","endDrag","onPointerDown","handle","startX","startW","moved","last","move","ev","end","up","floating","hidden","nav","className","style","resizable","top","to","Header","Brand","BrandWordmark","children","LinkComp","href","label","sidebarMenu","LazyMenu","open","setOpen","wanted","setWanted","mod","store","button","given","trigger","buttonRef","pending","useEffect","doc","onKeyDown","want","waiting","o","Switcher","force","hasCaption","caption","named","purpose","avatar","captionTone","Alert02Icon","trailing","UnfoldMoreIcon","Place","naming","classes","inner","PlaceName","common","el","useCut","cut","setCut","useLayoutEffect","box","ref","enabled","measure","Content","refs","root","check","stop","Footer","Group","id","defaultOpen","labelId","useId","collapsible","Collapsible","DEPTH","Item","sheet","activate","onClick","depth","leading","icon","count","BackLink","ArrowLeft01Icon","Loading","rows","CollapseToggle","SidebarLeftIcon","RailToggle","Sidebar"],"sources":["../../src/hooks/use-stored-state.ts","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import { useCallback, useMemo, useState, useSyncExternalStore } from \"react\";\n\nlet listeners: Map<string, Set<() => void>> | undefined;\nlet memory: Map<string, string> | undefined;\n\nfunction read(key: string): string | null {\n try {\n const raw = localStorage.getItem(key);\n if (raw !== null) return raw;\n } catch {}\n return memory?.get(key) ?? null;\n}\n\nfunction subscribe(key: string, onChange: () => void): () => void {\n listeners ??= new Map();\n let set = listeners.get(key);\n if (!set) listeners.set(key, (set = new Set()));\n set.add(onChange);\n const onStorage = (e: StorageEvent) => {\n if (e.key === key) onChange();\n };\n window.addEventListener(\"storage\", onStorage);\n return () => {\n set.delete(onChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\nconst noSubscription = () => () => undefined;\nconst nothing = () => null;\n\nexport function useStoredState<T>(key: string | undefined, initial: T): [T, (v: T) => void] {\n const k = key ? `kaeso:${key}` : undefined;\n const [own, setOwn] = useState<T>(initial);\n const sub = useCallback((onChange: () => void) => (k ? subscribe(k, onChange) : () => undefined), [k]);\n const snapshot = useCallback(() => (k ? read(k) : null), [k]);\n const raw = useSyncExternalStore(k ? sub : noSubscription, snapshot, nothing);\n const stored = useMemo(() => {\n if (raw === null) return undefined;\n try {\n return { value: JSON.parse(raw) as T };\n } catch {\n return undefined;\n }\n }, [raw]);\n const set = useCallback(\n (v: T) => {\n if (!k) {\n setOwn(v);\n return;\n }\n const json = JSON.stringify(v);\n try {\n localStorage.setItem(k, json);\n } catch {\n (memory ??= new Map()).set(k, json);\n }\n listeners?.get(k)?.forEach((notify) => notify());\n },\n [k],\n );\n return [k ? (stored ? stored.value : initial) : own, set];\n}\n","import type * as React from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { DISCLOSURE_TRIGGER, DisclosureChevron } from \"../collapsible/disclosure.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useLinkComponent } from \"../../utils/link-provider.js\";\nimport { showsText, useHiddenDescription } from \"../../utils/hidden-description.js\";\nimport { useStoredState } from \"../../hooks/use-stored-state.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Alert02Icon as __icon_Alert02Icon, UnfoldMoreIcon as __icon_UnfoldMoreIcon, ArrowLeft01Icon as __icon_ArrowLeft01Icon, SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { HandedTrigger, triggerPropsStore } from \"../tooltip/trigger-props.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst strong = (text: string) =>\n text.split(\"**\").map((part, i) =>\n i % 2 ? (\n <span key={i} className=\"font-semibold text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n );\n\nexport const KAESO_SIDEBAR_VARIANTS = {\n mode: {\n expanded: { classes: \"w-(--k-sidebar-width)\" },\n rail: { classes: \"w-60\" },\n },\n item: {\n default: { classes: \"text-fg hover:bg-fill-2 active:bg-fill-3\" },\n active: { classes: \"bg-fill-3 text-fg\" },\n },\n caption: {\n secondary: { classes: \"text-fg-secondary\" },\n danger: { classes: \"text-danger-text\" },\n },\n} as const;\nexport const KAESO_SIDEBAR_DEFAULT_VARIANTS = { mode: \"expanded\", item: \"default\", caption: \"secondary\" } as const;\n\ninterface SidebarCtx {\n rail: boolean;\n setRail: (v: boolean) => void;\n collapsed: boolean;\n setCollapsed: (v: boolean) => void;\n peeking: boolean;\n setPeeking: (v: boolean) => void;\n width: number;\n setWidth: (v: number) => void;\n previewWidth: (v: number | null) => void;\n storageKey: string | undefined;\n shortcut: boolean;\n}\nconst Ctx = /* @__PURE__ */ createContext<SidebarCtx>({\n rail: false,\n setRail: () => undefined,\n collapsed: false,\n setCollapsed: () => undefined,\n peeking: false,\n setPeeking: () => undefined,\n width: 248,\n setWidth: () => undefined,\n previewWidth: () => undefined,\n storageKey: undefined,\n shortcut: false,\n});\nexport const useSidebar = () => useContext(Ctx);\n\nexport const SidebarFloatingContext = /* @__PURE__ */ createContext(false);\nexport const SidebarSheetContext = /* @__PURE__ */ createContext<{ close: () => void; peek: boolean } | null>(null);\n\nexport interface SidebarProviderProps {\n children: ReactNode;\n storageKey?: string | undefined;\n defaultRail?: boolean | undefined;\n shortcut?: boolean | undefined;\n}\n\nfunction Provider({ children, storageKey, defaultRail = false, shortcut = true }: SidebarProviderProps) {\n const [rail, setRail] = useStoredState(storageKey ? `${storageKey}:rail` : undefined, defaultRail);\n const [storedWidth, setWidth] = useStoredState(storageKey ? `${storageKey}:width` : undefined, 248);\n const [preview, previewWidth] = useState<number | null>(null);\n const width = clampWidth(preview ?? storedWidth);\n const [collapsed, setCollapsedState] = useStoredState(storageKey ? `${storageKey}:collapsed` : undefined, false);\n const [peeking, setPeeking] = useState(false);\n const lastFocus = useRef<HTMLElement | null>(null);\n const setCollapsed = useCallback(\n (v: boolean) => {\n const active = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n const leaving = v && !!active?.closest(\"[data-sidebar-root]\");\n const returning = !v && !!active?.closest(\"[data-sidebar-expand]\");\n if (leaving) lastFocus.current = active;\n setCollapsedState(v);\n setPeeking(false);\n if (leaving) requestAnimationFrame(() => document.querySelector<HTMLElement>(\"[data-sidebar-expand]\")?.focus());\n if (returning)\n requestAnimationFrame(() => {\n const back = lastFocus.current?.isConnected ? lastFocus.current : null;\n (back ?? document.querySelector<HTMLElement>(\"[data-sidebar-root] [data-sidebar-collapse]\"))?.focus();\n });\n },\n [setCollapsedState],\n );\n useEffect(() => {\n if (!shortcut) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== \"[\" || e.defaultPrevented || e.repeat || e.metaKey || (e.ctrlKey && !e.altKey)) return;\n const t = e.target;\n if (t instanceof HTMLElement && (t.isContentEditable || t.closest(TYPING))) return;\n if (document.querySelector('[aria-modal=\"true\"]') || !window.matchMedia(\"(min-width: 1024px)\").matches) return;\n setCollapsed(!collapsed);\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [collapsed, setCollapsed, shortcut]);\n const value = useMemo(\n () => ({ rail, setRail, collapsed, setCollapsed, peeking, setPeeking, width, setWidth, previewWidth, storageKey, shortcut }),\n [rail, setRail, collapsed, setCollapsed, peeking, width, setWidth, storageKey, shortcut],\n );\n return <Ctx.Provider value={value}>{children}</Ctx.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") Provider.displayName = \"Sidebar.Provider\";\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n resizable?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n}\n\nconst TYPING = 'input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"textbox\"], [role=\"combobox\"], [role=\"searchbox\"]';\n\nconst HINT_DELAY = 500;\n\nexport const SIDEBAR_MIN = 232;\nexport const SIDEBAR_MAX = 280;\n\nconst clampWidth = (v: number) => Math.round(Math.min(SIDEBAR_MAX, Math.max(SIDEBAR_MIN, Number.isFinite(v) ? v : 248)));\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLElement, SidebarProps>(function Sidebar({ resizable = true, className, children, style, \"aria-label\": ariaLabel, ...props }, ref) {\n const { rail, width, setWidth, previewWidth, collapsed, setCollapsed } = useSidebar();\n const t = useUiText();\n const [hint, setHint] = useState<number | null>(null);\n const hintTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(hintTimer.current), []);\n const [dragging, setDragging] = useState(false);\n const endDrag = useRef<(() => void) | null>(null);\n useEffect(() => () => endDrag.current?.(), []);\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n e.preventDefault();\n endDrag.current?.();\n const handle = e.currentTarget;\n const startX = e.clientX;\n const startW = width;\n let moved = false;\n let last = startW;\n const move = (ev: PointerEvent) => {\n if (Math.abs(ev.clientX - startX) > 3) {\n moved = true;\n setDragging(true);\n }\n if (!moved) return;\n last = clampWidth(startW + ev.clientX - startX);\n previewWidth(last);\n };\n const end = () => {\n handle.removeEventListener(\"pointermove\", move);\n handle.removeEventListener(\"pointerup\", up);\n handle.removeEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n endDrag.current = null;\n setDragging(false);\n if (moved) setWidth(last);\n previewWidth(null);\n };\n const up = () => {\n end();\n if (!moved) setCollapsed(true);\n };\n handle.setPointerCapture(e.pointerId);\n handle.addEventListener(\"pointermove\", move);\n handle.addEventListener(\"pointerup\", up);\n handle.addEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n endDrag.current = end;\n },\n [width, setWidth, previewWidth, setCollapsed],\n );\n const floating = useContext(SidebarFloatingContext);\n const hidden = collapsed && !floating;\n const nav = (\n <nav\n ref={ref}\n aria-label={ariaLabel ?? t(\"sidebar.main\", \"Main\")}\n data-rail={rail || undefined}\n data-sidebar-root=\"\"\n className={cn(\n \"group/sidebar relative flex h-full shrink-0 flex-col bg-chrome text-fg\",\n rail ? KAESO_SIDEBAR_VARIANTS.mode.rail.classes : KAESO_SIDEBAR_VARIANTS.mode.expanded.classes,\n className,\n )}\n style={{ [\"--k-sidebar-width\" as string]: `${width}px`, ...style }}\n {...props}\n >\n {children}\n </nav>\n );\n if (floating) return nav;\n return (\n <div className=\"relative flex h-full shrink-0\">\n <div\n className=\"sidebar-motion relative h-full shrink-0\"\n style={{ width: hidden ? 8 : rail ? 60 : width }}\n {...(hidden ? { \"data-collapsed\": \"\", inert: true, \"aria-hidden\": true } : {})}\n >\n <div className=\"sidebar-content-motion h-full\" style={{ width: rail ? 60 : width }}>\n {nav}\n </div>\n </div>\n {resizable && !rail && !hidden && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"sidebar.resizeOrCollapse\", \"Resize sidebar; press Enter to collapse\")}\n aria-valuemin={SIDEBAR_MIN}\n aria-valuemax={SIDEBAR_MAX}\n aria-valuenow={width}\n aria-valuetext={`${width} px`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onPointerEnter={(e) => {\n const top = Math.round(e.clientY - e.currentTarget.getBoundingClientRect().top);\n clearTimeout(hintTimer.current);\n hintTimer.current = setTimeout(() => setHint(top), HINT_DELAY);\n }}\n onPointerLeave={() => {\n clearTimeout(hintTimer.current);\n setHint(null);\n }}\n onKeyDown={(e) => {\n const to =\n e.key === \"ArrowLeft\" ? width - 8 : e.key === \"ArrowRight\" ? width + 8 : e.key === \"Home\" ? SIDEBAR_MIN : e.key === \"End\" ? SIDEBAR_MAX : null;\n if (to !== null) {\n e.preventDefault();\n setWidth(clampWidth(to));\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setCollapsed(true);\n }\n }}\n className=\"group/edge absolute top-0 right-0 z-10 h-full w-8 cursor-col-resize rounded-pill focus-ring-inset\"\n >\n <span aria-hidden className=\"absolute inset-y-0 right-0 w-1 bg-line-strong opacity-0 transition-control group-hover/edge:opacity-100 forced-line\" />\n {hint !== null && !dragging && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute left-16 flex w-max flex-col gap-2 rounded-tooltip-lg bg-tooltip px-12 py-8 text-small text-fg-secondary shadow-raised\"\n style={{ top: Math.max(8, hint - 24) }}\n >\n <span>{strong(t(\"sidebar.dragToResize\", \"**Drag** to resize\"))}</span>\n <span>{strong(t(\"sidebar.clickToCollapse\", \"**Click** to collapse\"))}</span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Sidebar\";\n\nconst Header = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"mt-8 flex h-52 shrink-0 items-center gap-4 px-8 transition-control group-data-scrolled-over/sidebar:hairline-b-strong\", className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Header.displayName = \"Sidebar.Header\";\n\nexport interface SidebarBrandProps {\n href?: string | undefined;\n label?: string | undefined;\n children?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Brand = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarBrandProps>(function SidebarBrand({ href, label = \"Kaeso\", children, className }, ref) {\n const { rail } = useSidebar();\n if (rail) {\n return (\n <Header ref={ref} className={cn(\"justify-center px-0\", className)}>\n {children}\n </Header>\n );\n }\n return (\n <Header ref={ref} className={cn(\"justify-between pr-16 pl-28\", className)}>\n <BrandWordmark href={href} label={label} />\n {children && <span className=\"flex items-center\">{children}</span>}\n </Header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Brand.displayName = \"Sidebar.Brand\";\n\nexport interface BrandWordmarkProps {\n href?: string | undefined;\n label?: string | undefined;\n}\n\nexport const BrandWordmark = /* @__PURE__ */ forwardRef<HTMLAnchorElement | SVGSVGElement, BrandWordmarkProps>(function BrandWordmark({ href, label = \"Kaeso\" }, ref) {\n const LinkComp = useLinkComponent();\n return href ? (\n <LinkComp ref={ref as Ref<HTMLAnchorElement>} href={href} aria-label={label} className=\"-mx-4 flex h-32 items-center rounded-code px-4 text-fg focus-ring\">\n <NavWordmark decorative />\n </LinkComp>\n ) : (\n <NavWordmark ref={ref as Ref<SVGSVGElement>} title={label} className=\"text-fg\" />\n );\n});\nif (process.env.NODE_ENV !== \"production\") BrandWordmark.displayName = \"BrandWordmark\";\n\nconst sidebarMenu = /* @__PURE__ */ lazyModule(() => import(\"./sidebar-menu.js\"), { base: () => import.meta.url });\n\nfunction LazyMenu({\n trigger,\n side,\n header,\n footer,\n children,\n}: {\n trigger: ReactElement;\n side: \"top\" | \"bottom\";\n header: ReactNode;\n footer: ReactNode;\n children: ReactNode;\n}) {\n const [open, setOpen] = useState(false);\n const [wanted, setWanted] = useState(false);\n const mod = useLazyModule(sidebarMenu, wanted || open, () => {\n setWanted(false);\n setOpen(false);\n });\n const [store] = useState(triggerPropsStore);\n const button = useRef<HTMLElement | null>(null);\n const given = (trigger.props as { ref?: Ref<HTMLElement> | undefined }).ref;\n const buttonRef = useMemo(() => mergeRefs(button, given), [given]);\n const pending = open && !mod;\n useEffect(() => whenIdle(() => setWanted(true)), []);\n useEffect(() => {\n if (!pending) return;\n const doc = button.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n setOpen(false);\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!button.current?.contains(e.target as Node)) setOpen(false);\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending]);\n const want = () => setWanted(true);\n const waiting = mod\n ? { ref: buttonRef }\n : {\n ref: buttonRef,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n ...(open ? { \"data-popup-open\": \"\" } : {}),\n onPointerEnter: want,\n onFocus: want,\n onClick: () => setOpen((o) => !o),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key !== \"ArrowDown\" && e.key !== \"ArrowUp\") return;\n e.preventDefault();\n setOpen(true);\n },\n onBlur: (e: React.FocusEvent) => {\n if (open && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget)) setOpen(false);\n },\n };\n return (\n <>\n <HandedTrigger store={store} merge={mod?.mergeTriggerProps} extra={waiting}>\n {trigger}\n </HandedTrigger>\n {mod && (\n <mod.SidebarMenuRoot open={open} onOpenChange={setOpen} triggerProps={store} side={side} header={header} footer={footer}>\n {children}\n </mod.SidebarMenuRoot>\n )}\n </>\n );\n}\nif (process.env.NODE_ENV !== \"production\") LazyMenu.displayName = \"Sidebar.Menu\";\n\nexport interface SidebarSwitcherProps {\n avatar: ReactNode;\n label: ReactNode;\n trailing?: ReactNode | undefined;\n caption?: ReactNode | undefined;\n captionTone?: keyof typeof KAESO_SIDEBAR_VARIANTS.caption | undefined;\n children: ReactNode;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Switcher = /* @__PURE__ */ forwardRef<HTMLButtonElement, SidebarSwitcherProps>(function SidebarSwitcher(\n { avatar, label, trailing, caption, captionTone = \"secondary\", children, header, footer, \"aria-label\": ariaLabel, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const t = useUiText();\n const hasCaption = showsText(caption);\n const named = showsText(label);\n const hint = ariaLabel ?? t(\"sidebar.switchOrOpenSettings\", \"Switch or open settings\");\n const purpose = useHiddenDescription(named ? hint : undefined);\n return (\n <>\n <LazyMenu\n side=\"top\"\n header={header}\n footer={footer}\n trigger={\n <button\n ref={ref}\n type=\"button\"\n {...(named ? { \"aria-describedby\": purpose.id } : { \"aria-label\": hint })}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/sw flex h-36 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium text-fg transition-control hover:bg-fill-2 active:bg-fill-3 open:bg-fill-3 focus-ring-inset coarse:h-44\",\n rail && \"justify-center px-0\",\n className,\n )}\n >\n <span className=\"relative flex size-18 shrink-0 items-center justify-center\">\n {avatar}\n {rail && hasCaption && captionTone === \"danger\" && (\n <Icon icon={__icon_Alert02Icon} size=\"xs\" className=\"absolute -right-6 -bottom-6 rounded-pill bg-chrome text-danger-text\" />\n )}\n </span>\n {!rail &&\n (hasCaption ? (\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{label}</span>\n <span className={cn(\"truncate text-caption font-regular\", KAESO_SIDEBAR_VARIANTS.caption[captionTone].classes)}>{caption}</span>\n </span>\n ) : (\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n ))}\n {rail && named && <span className=\"sr-only\">{label}</span>}\n {rail && hasCaption && <span className=\"sr-only\">{caption}</span>}\n {!rail && trailing}\n {!rail && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/sw:text-fg-secondary\" />}\n </button>\n }\n >\n {children}\n </LazyMenu>\n {purpose.node}\n </>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Switcher.displayName = \"Sidebar.Switcher\";\n\nexport interface SidebarPlaceProps {\n avatar: ReactNode;\n label: string;\n children?: ReactNode | undefined;\n href?: string | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Place = /* @__PURE__ */ forwardRef<HTMLElement, SidebarPlaceProps>(function SidebarPlace(\n { avatar, label, children, href, header, footer, \"aria-label\": ariaLabel, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const t = useUiText();\n const LinkComp = useLinkComponent();\n const named = showsText(label);\n const hint = children ? (ariaLabel ?? t(\"sidebar.switchPlace\", \"Switch project\")) : ariaLabel;\n const purpose = useHiddenDescription(named ? hint : undefined);\n const naming = named ? (purpose.id ? { \"aria-describedby\": purpose.id } : {}) : hint ? { \"aria-label\": hint } : {};\n const classes = cn(\n \"group/place flex h-36 w-full min-w-0 items-center gap-8 rounded-pill px-12 text-left text-body font-medium text-fg\",\n (children || href) && \"cursor-pointer transition-control hover:bg-fill-2 active:bg-fill-3 open:bg-fill-3 focus-ring-inset coarse:h-44\",\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{avatar}</span>\n {rail ? <span className=\"sr-only\">{label}</span> : <PlaceName label={label} />}\n {!rail && children && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/place:text-fg-secondary\" />}\n </>\n );\n const common = { className: classes, ...(force ? { \"data-force\": force } : {}) };\n if (children) {\n return (\n <>\n <LazyMenu\n side=\"bottom\"\n header={header}\n footer={footer}\n trigger={\n <button ref={ref as Ref<HTMLButtonElement>} type=\"button\" {...naming} {...common}>\n {inner}\n </button>\n }\n >\n {children}\n </LazyMenu>\n {purpose.node}\n </>\n );\n }\n const el = href ? (\n <LinkComp ref={ref as Ref<HTMLAnchorElement>} href={href} {...naming} {...common}>\n {inner}\n </LinkComp>\n ) : (\n <div ref={ref as Ref<HTMLDivElement>} {...common}>\n {inner}\n </div>\n );\n return (\n <>\n {rail ? (\n <Tooltip content={label} side=\"right\">\n {el}\n </Tooltip>\n ) : (\n el\n )}\n {href && purpose.node}\n </>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Place.displayName = \"Sidebar.Place\";\n\nfunction useCut(ref: React.RefObject<HTMLElement | null>, enabled: boolean) {\n const [cut, setCut] = useState(false);\n useLayoutEffect(() => {\n const box = ref.current;\n if (!enabled || !box || typeof ResizeObserver === \"undefined\") return;\n const measure = () => setCut(box.scrollWidth > box.clientWidth);\n measure();\n return observeResize([box], measure);\n }, [ref, enabled]);\n return enabled && cut;\n}\n\nfunction PlaceName({ label }: { label: string }) {\n const ref = useRef<HTMLSpanElement>(null);\n const cut = useCut(ref, true);\n return (\n <Tooltip content={label} side=\"right\" disabled={!cut}>\n <span ref={ref} className=\"min-w-0 flex-1 truncate\">\n {label}\n </span>\n </Tooltip>\n );\n}\n\nconst Content = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarContent({ className, ...props }, ref) {\n const { rail } = useSidebar();\n const own = useRef<HTMLDivElement | null>(null);\n const refs = useMemo(() => mergeRefs(own, ref), [ref]);\n useEffect(() => {\n const el = own.current;\n const root = el?.closest(\"[data-sidebar-root]\");\n if (!el || !root) return;\n const check = () => {\n root.toggleAttribute(\"data-scrolled-under\", el.scrollHeight - el.scrollTop - el.clientHeight > 1);\n root.toggleAttribute(\"data-scrolled-over\", el.scrollTop > 1);\n };\n check();\n el.addEventListener(\"scroll\", check, { passive: true });\n const stop = observeResize([el, ...el.children], check);\n return () => {\n el.removeEventListener(\"scroll\", check);\n stop();\n root.removeAttribute(\"data-scrolled-under\");\n root.removeAttribute(\"data-scrolled-over\");\n };\n }, []);\n return (\n <div\n ref={refs}\n className={cn(\"flex min-h-0 flex-1 flex-col gap-16 overflow-y-auto overscroll-contain pt-8 pb-16 scrollbar-quiet\", rail ? \"px-8\" : \"px-16\", className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Content.displayName = \"Sidebar.Content\";\n\nconst Footer = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarFooter({ className, ...props }, ref) {\n const { rail } = useSidebar();\n return (\n <div\n ref={ref}\n className={cn(\n \"flex shrink-0 items-center gap-4 pt-8 pb-12 transition-control group-data-scrolled-under/sidebar:hairline-t-strong\",\n rail ? \"px-8\" : \"px-16\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Footer.displayName = \"Sidebar.Footer\";\n\nexport interface SidebarGroupProps {\n label?: ReactNode | undefined;\n id?: string | undefined;\n defaultOpen?: boolean | undefined;\n collapsible?: boolean | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nconst Group = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarGroupProps>(function SidebarGroup(\n { label, id, defaultOpen = true, collapsible = true, children, className },\n ref,\n) {\n const { storageKey, rail } = useSidebar();\n const [open, setOpen] = useStoredState(storageKey && id ? `${storageKey}:group:${id}` : undefined, defaultOpen);\n const labelId = useId();\n if (!label || !collapsible || rail) {\n const named = !!label && !rail;\n return (\n <div ref={ref} {...(named ? { role: \"group\", \"aria-labelledby\": labelId } : {})} className={cn(\"flex flex-col\", className)}>\n {named && (\n <div id={labelId} className=\"flex h-32 items-center px-12 text-caption font-medium text-fg-secondary\">\n {label}\n </div>\n )}\n <ul className=\"flex flex-col gap-2\">{children}</ul>\n </div>\n );\n }\n return (\n <Collapsible.Root ref={ref} open={open} onOpenChange={(o: boolean) => setOpen(o)} className={cn(\"flex flex-col\", className)}>\n <Collapsible.Trigger\n className={cn(DISCLOSURE_TRIGGER, \"h-32 text-caption font-medium text-fg-secondary hover:bg-fill-2 hover:text-fg active:bg-fill-3 coarse:h-44\")}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n <DisclosureChevron />\n </Collapsible.Trigger>\n <Collapsible.Panel className=\"collapse-motion\">\n <ul className=\"flex flex-col gap-2 pt-2\">{children}</ul>\n </Collapsible.Panel>\n </Collapsible.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Group.displayName = \"Sidebar.Group\";\n\nexport interface SidebarItemProps {\n children: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n href?: string | undefined;\n onClick?: ((e: MouseEvent<HTMLElement>) => void) | undefined;\n active?: boolean | undefined;\n count?: number | undefined;\n trailing?: ReactNode | undefined;\n depth?: 0 | 1 | 2 | undefined;\n shortcut?: string[] | string[][] | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst DEPTH = [\"\", \"pl-32\", \"pl-52\"] as const;\n\nconst Item = /* @__PURE__ */ forwardRef<HTMLElement, SidebarItemProps>(function SidebarItem(\n { children, icon, leading, href, onClick, active, count, trailing, depth = 0, shortcut, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const LinkComp = useLinkComponent();\n const sheet = useContext(SidebarSheetContext);\n const label = useRef<HTMLSpanElement>(null);\n const cut = useCut(label, !rail);\n const activate = (e: MouseEvent<HTMLElement>) => {\n onClick?.(e);\n if (sheet && !sheet.peek && !href && !e.defaultPrevented) sheet.close();\n };\n const classes = cn(\n \"group/si flex h-32 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium transition-control focus-ring-inset coarse:h-44\",\n active ? KAESO_SIDEBAR_VARIANTS.item.active.classes : KAESO_SIDEBAR_VARIANTS.item.default.classes,\n !rail && DEPTH[depth],\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n {leading ? (\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{leading}</span>\n ) : (\n icon && <Icon icon={icon} size=\"md\" className={cn(\"text-fg-secondary transition-control group-hover/si:text-fg\", active && \"text-fg\")} />\n )}\n {rail ? (\n <span className=\"sr-only\">{children}</span>\n ) : (\n <span ref={label} className=\"min-w-0 flex-1 truncate\">\n {children}\n </span>\n )}\n {!rail && count !== undefined && <span className={cn(\"text-caption font-medium tabular\", active ? \"text-fg\" : \"text-fg-tertiary\")}>{count}</span>}\n {!rail && trailing}\n </>\n );\n const common = {\n className: classes,\n ...(active ? { \"aria-current\": \"page\" as const } : {}),\n ...(force ? { \"data-force\": force } : {}),\n };\n const el = href ? (\n <LinkComp ref={ref as React.Ref<HTMLAnchorElement>} href={href} {...common} {...(onClick ? { onClick } : {})}>\n {inner}\n </LinkComp>\n ) : (\n <button ref={ref as React.Ref<HTMLButtonElement>} type=\"button\" {...common} onClick={activate}>\n {inner}\n </button>\n );\n return (\n <li className=\"flex\">\n <Tooltip content={children} side=\"right\" disabled={!rail && !cut} {...(rail && shortcut ? { shortcut } : {})}>\n {el}\n </Tooltip>\n </li>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Item.displayName = \"Sidebar.Item\";\n\nconst BackLink = /* @__PURE__ */ forwardRef<HTMLAnchorElement, { href: string; children?: ReactNode | undefined; className?: string | undefined }>(function SidebarBackLink(\n { href, children, className },\n ref,\n) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"flex h-32 items-center gap-8 rounded-pill px-12 text-body font-medium text-fg-secondary transition-control hover:bg-fill-2 hover:text-fg active:bg-fill-3 focus-ring-inset coarse:h-44\",\n className,\n )}\n >\n <Icon icon={__icon_ArrowLeft01Icon} size=\"md\" />\n {children ?? t(\"sidebar.backToApp\", \"Back to app\")}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") BackLink.displayName = \"Sidebar.BackLink\";\n\nconst Loading = /* @__PURE__ */ forwardRef<HTMLDivElement, { rows?: number | undefined }>(function SidebarLoading({ rows = 5 }, ref) {\n const t = useUiText();\n return (\n <div ref={ref} role=\"status\" aria-label={t(\"sidebar.loading\", \"Loading navigation\")} aria-busy className=\"flex flex-col gap-2\">\n {Array.from({ length: rows }, (_, i) => (\n <div key={i} className=\"flex h-32 items-center gap-8 px-12\">\n <Skeleton className=\"size-18 rounded-pill\" />\n <Skeleton className=\"h-12 rounded-pill\" style={{ width: `${48 + ((i * 37) % 40)}%` }} />\n </div>\n ))}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Loading.displayName = \"Sidebar.Loading\";\n\nconst CollapseToggle = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function SidebarCollapseToggle({ className }, ref) {\n const { collapsed, setCollapsed, shortcut } = useSidebar();\n const sheet = useContext(SidebarSheetContext);\n const t = useUiText();\n const label = sheet\n ? sheet.peek\n ? t(\"sidebar.keepOpen\", \"Keep sidebar open\")\n : t(\"sidebar.closeNavigation\", \"Close navigation\")\n : collapsed\n ? t(\"sidebar.expand\", \"Expand sidebar\")\n : t(\"sidebar.collapse\", \"Collapse sidebar\");\n const onClick = () => {\n if (sheet?.peek) setCollapsed(false);\n else if (sheet) sheet.close();\n else setCollapsed(!collapsed);\n };\n return (\n <Tooltip content={label} {...(shortcut && !(sheet && !sheet.peek) ? { shortcut: [\"[\"] } : {})}>\n <button\n ref={ref}\n type=\"button\"\n data-sidebar-collapse=\"\"\n aria-label={label}\n {...(sheet ? {} : { \"aria-expanded\": !collapsed })}\n onClick={onClick}\n className={cn(\n \"relative inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-fg-secondary transition-control tap-target hover:bg-fill-2 hover:text-fg active:bg-fill-3 focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") CollapseToggle.displayName = \"Sidebar.CollapseToggle\";\n\nconst RailToggle = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function SidebarRailToggle({ className }, ref) {\n const { rail, setRail } = useSidebar();\n const t = useUiText();\n const label = t(\"sidebar.iconsOnly\", \"Icons only\");\n return (\n <Tooltip content={label} side=\"right\">\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n aria-pressed={rail}\n onClick={() => setRail(!rail)}\n className={cn(\n \"relative inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-fg-secondary transition-control tap-target hover:bg-fill-2 hover:text-fg active:bg-fill-3 aria-pressed:bg-fill-3 aria-pressed:text-fg focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RailToggle.displayName = \"Sidebar.RailToggle\";\n\nexport const Sidebar = /* @__PURE__ */ Object.assign(Root, {\n Provider,\n Header,\n Brand,\n Switcher,\n Place,\n Content,\n Footer,\n Group,\n Item,\n BackLink,\n Loading,\n RailToggle,\n CollapseToggle,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar-BO1mnjVH.js","names":["_Fragment","__icon_Alert02Icon","__icon_UnfoldMoreIcon","__icon_ArrowLeft01Icon","__icon_SidebarLeftIcon","cn","useLinkComponent","useUiText","Icon","HandedTrigger","showsText","useLazyModule","triggerPropsStore","useHiddenDescription","Tooltip","lazyModule","mergeRefs","observeResize","NavWordmark","Skeleton","DisclosureChevron","DISCLOSURE_TRIGGER","whenIdle","Fragment$1","listeners","memory","read","raw","key","subscribe","set","onChange","onStorage","e","noSubscription","nothing","useStoredState","k","own","setOwn","useState","initial","sub","useCallback","snapshot","useSyncExternalStore","stored","useMemo","v","json","notify","strong","text","i","part","KAESO_SIDEBAR_VARIANTS","KAESO_SIDEBAR_DEFAULT_VARIANTS","Ctx","useSidebar","useContext","SidebarFloatingContext","SidebarSheetContext","Provider","rail","setRail","storageKey","defaultRail","storedWidth","setWidth","preview","previewWidth","width","clampWidth","collapsed","setCollapsedState","peeking","setPeeking","lastFocus","useRef","setCollapsed","active","leaving","returning","shortcut","onKey","TYPING","value","HINT_DELAY","SIDEBAR_MIN","SIDEBAR_MAX","Root","ariaLabel","props","t","hint","setHint","hintTimer","dragging","setDragging","endDrag","onPointerDown","handle","startX","startW","moved","last","move","ev","end","up","floating","hidden","nav","className","style","resizable","top","to","Header","Brand","BrandWordmark","children","LinkComp","href","label","sidebarMenu","LazyMenu","open","setOpen","wanted","setWanted","mod","store","button","given","trigger","buttonRef","pending","useEffect","doc","onKeyDown","want","waiting","o","Switcher","force","hasCaption","caption","named","purpose","avatar","captionTone","Alert02Icon","trailing","UnfoldMoreIcon","Place","naming","classes","inner","PlaceName","common","el","useCut","cut","setCut","useLayoutEffect","box","ref","enabled","measure","Content","refs","root","check","stop","Footer","Group","id","defaultOpen","labelId","useId","collapsible","Collapsible","DEPTH","Item","sheet","activate","onClick","depth","leading","icon","count","BackLink","ArrowLeft01Icon","Loading","rows","CollapseToggle","SidebarLeftIcon","RailToggle","Sidebar"],"sources":["../../src/hooks/use-stored-state.ts","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import { useCallback, useMemo, useState, useSyncExternalStore } from \"react\";\n\nlet listeners: Map<string, Set<() => void>> | undefined;\nlet memory: Map<string, string> | undefined;\n\nfunction read(key: string): string | null {\n try {\n const raw = localStorage.getItem(key);\n if (raw !== null) return raw;\n } catch {}\n return memory?.get(key) ?? null;\n}\n\nfunction subscribe(key: string, onChange: () => void): () => void {\n listeners ??= new Map();\n let set = listeners.get(key);\n if (!set) listeners.set(key, (set = new Set()));\n set.add(onChange);\n const onStorage = (e: StorageEvent) => {\n if (e.key === key) onChange();\n };\n window.addEventListener(\"storage\", onStorage);\n return () => {\n set.delete(onChange);\n window.removeEventListener(\"storage\", onStorage);\n };\n}\n\nconst noSubscription = () => () => undefined;\nconst nothing = () => null;\n\nexport function useStoredState<T>(key: string | undefined, initial: T): [T, (v: T) => void] {\n const k = key ? `kaeso:${key}` : undefined;\n const [own, setOwn] = useState<T>(initial);\n const sub = useCallback((onChange: () => void) => (k ? subscribe(k, onChange) : () => undefined), [k]);\n const snapshot = useCallback(() => (k ? read(k) : null), [k]);\n const raw = useSyncExternalStore(k ? sub : noSubscription, snapshot, nothing);\n const stored = useMemo(() => {\n if (raw === null) return undefined;\n try {\n return { value: JSON.parse(raw) as T };\n } catch {\n return undefined;\n }\n }, [raw]);\n const set = useCallback(\n (v: T) => {\n if (!k) {\n setOwn(v);\n return;\n }\n const json = JSON.stringify(v);\n try {\n localStorage.setItem(k, json);\n } catch {\n (memory ??= new Map()).set(k, json);\n }\n listeners?.get(k)?.forEach((notify) => notify());\n },\n [k],\n );\n return [k ? (stored ? stored.value : initial) : own, set];\n}\n","import type * as React from \"react\";\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { DISCLOSURE_TRIGGER, DisclosureChevron } from \"../collapsible/disclosure.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useLinkComponent } from \"../../utils/link-provider.js\";\nimport { showsText, useHiddenDescription } from \"../../utils/hidden-description.js\";\nimport { useStoredState } from \"../../hooks/use-stored-state.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Alert02Icon as __icon_Alert02Icon, UnfoldMoreIcon as __icon_UnfoldMoreIcon, ArrowLeft01Icon as __icon_ArrowLeft01Icon, SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { NavWordmark } from \"../logo/nav-wordmark.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { HandedTrigger, triggerPropsStore } from \"../tooltip/trigger-props.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst strong = (text: string) =>\n text.split(\"**\").map((part, i) =>\n i % 2 ? (\n <span key={i} className=\"font-semibold text-fg\">\n {part}\n </span>\n ) : (\n part\n ),\n );\n\nexport const KAESO_SIDEBAR_VARIANTS = {\n mode: {\n expanded: { classes: \"w-(--k-sidebar-width)\" },\n rail: { classes: \"w-60\" },\n },\n item: {\n default: { classes: \"text-fg hover:bg-fill-2 active:bg-fill-3\" },\n active: { classes: \"bg-fill-3 text-fg\" },\n },\n caption: {\n secondary: { classes: \"text-fg-secondary\" },\n danger: { classes: \"text-danger-text\" },\n },\n} as const;\nexport const KAESO_SIDEBAR_DEFAULT_VARIANTS = { mode: \"expanded\", item: \"default\", caption: \"secondary\" } as const;\n\ninterface SidebarCtx {\n rail: boolean;\n setRail: (v: boolean) => void;\n collapsed: boolean;\n setCollapsed: (v: boolean) => void;\n peeking: boolean;\n setPeeking: (v: boolean) => void;\n width: number;\n setWidth: (v: number) => void;\n previewWidth: (v: number | null) => void;\n storageKey: string | undefined;\n shortcut: boolean;\n}\nconst Ctx = /* @__PURE__ */ createContext<SidebarCtx>({\n rail: false,\n setRail: () => undefined,\n collapsed: false,\n setCollapsed: () => undefined,\n peeking: false,\n setPeeking: () => undefined,\n width: 248,\n setWidth: () => undefined,\n previewWidth: () => undefined,\n storageKey: undefined,\n shortcut: false,\n});\nexport const useSidebar = () => useContext(Ctx);\n\nexport const SidebarFloatingContext = /* @__PURE__ */ createContext(false);\nexport const SidebarSheetContext = /* @__PURE__ */ createContext<{ close: () => void; peek: boolean } | null>(null);\n\nexport interface SidebarProviderProps {\n children: ReactNode;\n storageKey?: string | undefined;\n defaultRail?: boolean | undefined;\n shortcut?: boolean | undefined;\n}\n\nfunction Provider({ children, storageKey, defaultRail = false, shortcut = true }: SidebarProviderProps) {\n const [rail, setRail] = useStoredState(storageKey ? `${storageKey}:rail` : undefined, defaultRail);\n const [storedWidth, setWidth] = useStoredState(storageKey ? `${storageKey}:width` : undefined, 248);\n const [preview, previewWidth] = useState<number | null>(null);\n const width = clampWidth(preview ?? storedWidth);\n const [collapsed, setCollapsedState] = useStoredState(storageKey ? `${storageKey}:collapsed` : undefined, false);\n const [peeking, setPeeking] = useState(false);\n const lastFocus = useRef<HTMLElement | null>(null);\n const setCollapsed = useCallback(\n (v: boolean) => {\n const active = document.activeElement instanceof HTMLElement ? document.activeElement : null;\n const leaving = v && !!active?.closest(\"[data-sidebar-root]\");\n const returning = !v && !!active?.closest(\"[data-sidebar-expand]\");\n if (leaving) lastFocus.current = active;\n setCollapsedState(v);\n setPeeking(false);\n if (leaving) requestAnimationFrame(() => document.querySelector<HTMLElement>(\"[data-sidebar-expand]\")?.focus());\n if (returning)\n requestAnimationFrame(() => {\n const back = lastFocus.current?.isConnected ? lastFocus.current : null;\n (back ?? document.querySelector<HTMLElement>(\"[data-sidebar-root] [data-sidebar-collapse]\"))?.focus();\n });\n },\n [setCollapsedState],\n );\n useEffect(() => {\n if (!shortcut) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key !== \"[\" || e.defaultPrevented || e.repeat || e.metaKey || (e.ctrlKey && !e.altKey)) return;\n const t = e.target;\n if (t instanceof HTMLElement && (t.isContentEditable || t.closest(TYPING))) return;\n if (document.querySelector('[aria-modal=\"true\"]') || !window.matchMedia(\"(min-width: 1024px)\").matches) return;\n setCollapsed(!collapsed);\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [collapsed, setCollapsed, shortcut]);\n const value = useMemo(\n () => ({ rail, setRail, collapsed, setCollapsed, peeking, setPeeking, width, setWidth, previewWidth, storageKey, shortcut }),\n [rail, setRail, collapsed, setCollapsed, peeking, width, setWidth, storageKey, shortcut],\n );\n return <Ctx.Provider value={value}>{children}</Ctx.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") Provider.displayName = \"Sidebar.Provider\";\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n resizable?: boolean | undefined;\n \"aria-label\"?: string | undefined;\n}\n\nconst TYPING = 'input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"textbox\"], [role=\"combobox\"], [role=\"searchbox\"]';\n\nconst HINT_DELAY = 500;\n\nexport const SIDEBAR_MIN = 232;\nexport const SIDEBAR_MAX = 280;\n\nconst clampWidth = (v: number) => Math.round(Math.min(SIDEBAR_MAX, Math.max(SIDEBAR_MIN, Number.isFinite(v) ? v : 248)));\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLElement, SidebarProps>(function Sidebar({ resizable = true, className, children, style, \"aria-label\": ariaLabel, ...props }, ref) {\n const { rail, width, setWidth, previewWidth, collapsed, setCollapsed } = useSidebar();\n const t = useUiText();\n const [hint, setHint] = useState<number | null>(null);\n const hintTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(hintTimer.current), []);\n const [dragging, setDragging] = useState(false);\n const endDrag = useRef<(() => void) | null>(null);\n useEffect(() => () => endDrag.current?.(), []);\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.button !== 0) return;\n e.preventDefault();\n endDrag.current?.();\n const handle = e.currentTarget;\n const startX = e.clientX;\n const startW = width;\n let moved = false;\n let last = startW;\n const move = (ev: PointerEvent) => {\n if (Math.abs(ev.clientX - startX) > 3) {\n moved = true;\n setDragging(true);\n }\n if (!moved) return;\n last = clampWidth(startW + ev.clientX - startX);\n previewWidth(last);\n };\n const end = () => {\n handle.removeEventListener(\"pointermove\", move);\n handle.removeEventListener(\"pointerup\", up);\n handle.removeEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n endDrag.current = null;\n setDragging(false);\n if (moved) setWidth(last);\n previewWidth(null);\n };\n const up = () => {\n end();\n if (!moved) setCollapsed(true);\n };\n handle.setPointerCapture(e.pointerId);\n handle.addEventListener(\"pointermove\", move);\n handle.addEventListener(\"pointerup\", up);\n handle.addEventListener(\"pointercancel\", end);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n endDrag.current = end;\n },\n [width, setWidth, previewWidth, setCollapsed],\n );\n const floating = useContext(SidebarFloatingContext);\n const hidden = collapsed && !floating;\n const nav = (\n <nav\n ref={ref}\n aria-label={ariaLabel ?? t(\"sidebar.main\", \"Main\")}\n data-rail={rail || undefined}\n data-sidebar-root=\"\"\n className={cn(\n \"group/sidebar relative flex h-full shrink-0 flex-col bg-chrome text-fg\",\n rail ? KAESO_SIDEBAR_VARIANTS.mode.rail.classes : KAESO_SIDEBAR_VARIANTS.mode.expanded.classes,\n className,\n )}\n style={{ [\"--k-sidebar-width\" as string]: `${width}px`, ...style }}\n {...props}\n >\n {children}\n </nav>\n );\n if (floating) return nav;\n return (\n <div className=\"relative flex h-full shrink-0\">\n <div\n className=\"sidebar-motion relative h-full shrink-0\"\n style={{ width: hidden ? 8 : rail ? 60 : width }}\n {...(hidden ? { \"data-collapsed\": \"\", inert: true, \"aria-hidden\": true } : {})}\n >\n <div className=\"sidebar-content-motion h-full\" style={{ width: rail ? 60 : width }}>\n {nav}\n </div>\n </div>\n {resizable && !rail && !hidden && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"sidebar.resizeOrCollapse\", \"Resize sidebar; press Enter to collapse\")}\n aria-valuemin={SIDEBAR_MIN}\n aria-valuemax={SIDEBAR_MAX}\n aria-valuenow={width}\n aria-valuetext={`${width} px`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onPointerEnter={(e) => {\n const top = Math.round(e.clientY - e.currentTarget.getBoundingClientRect().top);\n clearTimeout(hintTimer.current);\n hintTimer.current = setTimeout(() => setHint(top), HINT_DELAY);\n }}\n onPointerLeave={() => {\n clearTimeout(hintTimer.current);\n setHint(null);\n }}\n onKeyDown={(e) => {\n const to =\n e.key === \"ArrowLeft\" ? width - 8 : e.key === \"ArrowRight\" ? width + 8 : e.key === \"Home\" ? SIDEBAR_MIN : e.key === \"End\" ? SIDEBAR_MAX : null;\n if (to !== null) {\n e.preventDefault();\n setWidth(clampWidth(to));\n }\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n setCollapsed(true);\n }\n }}\n className=\"group/edge absolute top-0 right-0 z-10 h-full w-8 cursor-col-resize rounded-pill focus-ring-inset\"\n >\n <span aria-hidden className=\"absolute inset-y-0 right-0 w-1 bg-line-strong opacity-0 transition-control group-hover/edge:opacity-100 forced-line\" />\n {hint !== null && !dragging && (\n <span\n aria-hidden\n className=\"pointer-events-none absolute left-16 flex w-max flex-col gap-2 rounded-tooltip-lg bg-tooltip px-12 py-8 text-small text-fg-secondary shadow-raised\"\n style={{ top: Math.max(8, hint - 24) }}\n >\n <span>{strong(t(\"sidebar.dragToResize\", \"**Drag** to resize\"))}</span>\n <span>{strong(t(\"sidebar.clickToCollapse\", \"**Click** to collapse\"))}</span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Sidebar\";\n\nconst Header = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarHeader({ className, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"mt-8 flex h-52 shrink-0 items-center gap-4 px-8 transition-control group-data-scrolled-over/sidebar:hairline-b-strong\", className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Header.displayName = \"Sidebar.Header\";\n\nexport interface SidebarBrandProps {\n href?: string | undefined;\n label?: string | undefined;\n children?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Brand = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarBrandProps>(function SidebarBrand({ href, label = \"Kaeso\", children, className }, ref) {\n const { rail } = useSidebar();\n if (rail) {\n return (\n <Header ref={ref} className={cn(\"justify-center px-0\", className)}>\n {children}\n </Header>\n );\n }\n return (\n <Header ref={ref} className={cn(\"justify-between pr-16 pl-28\", className)}>\n <BrandWordmark href={href} label={label} />\n {children && <span className=\"flex items-center\">{children}</span>}\n </Header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Brand.displayName = \"Sidebar.Brand\";\n\nexport interface BrandWordmarkProps {\n href?: string | undefined;\n label?: string | undefined;\n}\n\nexport const BrandWordmark = /* @__PURE__ */ forwardRef<HTMLAnchorElement | SVGSVGElement, BrandWordmarkProps>(function BrandWordmark({ href, label = \"Kaeso\" }, ref) {\n const LinkComp = useLinkComponent();\n return href ? (\n <LinkComp ref={ref as Ref<HTMLAnchorElement>} href={href} aria-label={label} className=\"-mx-4 flex h-32 items-center rounded-code px-4 text-fg focus-ring\">\n <NavWordmark decorative />\n </LinkComp>\n ) : (\n <NavWordmark ref={ref as Ref<SVGSVGElement>} title={label} className=\"text-fg\" />\n );\n});\nif (process.env.NODE_ENV !== \"production\") BrandWordmark.displayName = \"BrandWordmark\";\n\nconst sidebarMenu = /* @__PURE__ */ lazyModule(() => import(\"./sidebar-menu.js\"), { base: () => import.meta.url });\n\nfunction LazyMenu({\n trigger,\n side,\n header,\n footer,\n children,\n}: {\n trigger: ReactElement;\n side: \"top\" | \"bottom\";\n header: ReactNode;\n footer: ReactNode;\n children: ReactNode;\n}) {\n const [open, setOpen] = useState(false);\n const [wanted, setWanted] = useState(false);\n const mod = useLazyModule(sidebarMenu, wanted || open, () => {\n setWanted(false);\n setOpen(false);\n });\n const [store] = useState(triggerPropsStore);\n const button = useRef<HTMLElement | null>(null);\n const given = (trigger.props as { ref?: Ref<HTMLElement> | undefined }).ref;\n const buttonRef = useMemo(() => mergeRefs(button, given), [given]);\n const pending = open && !mod;\n useEffect(() => whenIdle(() => setWanted(true)), []);\n useEffect(() => {\n if (!pending) return;\n const doc = button.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n setOpen(false);\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!button.current?.contains(e.target as Node)) setOpen(false);\n };\n doc.addEventListener(\"keydown\", onKeyDown, true);\n doc.addEventListener(\"pointerdown\", onPointerDown, true);\n return () => {\n doc.removeEventListener(\"keydown\", onKeyDown, true);\n doc.removeEventListener(\"pointerdown\", onPointerDown, true);\n };\n }, [pending]);\n const want = () => setWanted(true);\n const waiting = mod\n ? { ref: buttonRef }\n : {\n ref: buttonRef,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n ...(open ? { \"data-popup-open\": \"\" } : {}),\n onPointerEnter: want,\n onFocus: want,\n onClick: () => setOpen((o) => !o),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key !== \"ArrowDown\" && e.key !== \"ArrowUp\") return;\n e.preventDefault();\n setOpen(true);\n },\n onBlur: (e: React.FocusEvent) => {\n if (open && e.relatedTarget && !e.currentTarget.contains(e.relatedTarget)) setOpen(false);\n },\n };\n return (\n <>\n <HandedTrigger store={store} merge={mod?.mergeTriggerProps} extra={waiting}>\n {trigger}\n </HandedTrigger>\n {mod && (\n <mod.SidebarMenuRoot open={open} onOpenChange={setOpen} triggerProps={store} side={side} header={header} footer={footer}>\n {children}\n </mod.SidebarMenuRoot>\n )}\n </>\n );\n}\nif (process.env.NODE_ENV !== \"production\") LazyMenu.displayName = \"Sidebar.Menu\";\n\nexport interface SidebarSwitcherProps {\n avatar: ReactNode;\n label: ReactNode;\n trailing?: ReactNode | undefined;\n caption?: ReactNode | undefined;\n captionTone?: keyof typeof KAESO_SIDEBAR_VARIANTS.caption | undefined;\n children: ReactNode;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Switcher = /* @__PURE__ */ forwardRef<HTMLButtonElement, SidebarSwitcherProps>(function SidebarSwitcher(\n { avatar, label, trailing, caption, captionTone = \"secondary\", children, header, footer, \"aria-label\": ariaLabel, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const t = useUiText();\n const hasCaption = showsText(caption);\n const named = showsText(label);\n const hint = ariaLabel ?? t(\"sidebar.switchOrOpenSettings\", \"Switch or open settings\");\n const purpose = useHiddenDescription(named ? hint : undefined);\n return (\n <>\n <LazyMenu\n side=\"top\"\n header={header}\n footer={footer}\n trigger={\n <button\n ref={ref}\n type=\"button\"\n {...(named ? { \"aria-describedby\": purpose.id } : { \"aria-label\": hint })}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/sw flex h-36 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium text-fg transition-control hover:bg-fill-2 active:bg-fill-3 open:bg-fill-3 focus-ring-inset coarse:h-44\",\n rail && \"justify-center px-0\",\n className,\n )}\n >\n <span className=\"relative flex size-18 shrink-0 items-center justify-center\">\n {avatar}\n {rail && hasCaption && captionTone === \"danger\" && (\n <Icon icon={__icon_Alert02Icon} size=\"xs\" className=\"absolute -right-6 -bottom-6 rounded-pill bg-chrome text-danger-text\" />\n )}\n </span>\n {!rail &&\n (hasCaption ? (\n <span className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate\">{label}</span>\n <span className={cn(\"truncate text-caption font-regular\", KAESO_SIDEBAR_VARIANTS.caption[captionTone].classes)}>{caption}</span>\n </span>\n ) : (\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n ))}\n {rail && named && <span className=\"sr-only\">{label}</span>}\n {rail && hasCaption && <span className=\"sr-only\">{caption}</span>}\n {!rail && trailing}\n {!rail && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/sw:text-fg-secondary\" />}\n </button>\n }\n >\n {children}\n </LazyMenu>\n {purpose.node}\n </>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Switcher.displayName = \"Sidebar.Switcher\";\n\nexport interface SidebarPlaceProps {\n avatar: ReactNode;\n label: string;\n children?: ReactNode | undefined;\n href?: string | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n \"aria-label\"?: string | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst Place = /* @__PURE__ */ forwardRef<HTMLElement, SidebarPlaceProps>(function SidebarPlace(\n { avatar, label, children, href, header, footer, \"aria-label\": ariaLabel, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const t = useUiText();\n const LinkComp = useLinkComponent();\n const named = showsText(label);\n const hint = children ? (ariaLabel ?? t(\"sidebar.switchPlace\", \"Switch project\")) : ariaLabel;\n const purpose = useHiddenDescription(named ? hint : undefined);\n const naming = named ? (purpose.id ? { \"aria-describedby\": purpose.id } : {}) : hint ? { \"aria-label\": hint } : {};\n const classes = cn(\n \"group/place flex h-36 w-full min-w-0 items-center gap-8 rounded-pill px-12 text-left text-body font-medium text-fg\",\n (children || href) && \"cursor-pointer transition-control hover:bg-fill-2 active:bg-fill-3 open:bg-fill-3 focus-ring-inset coarse:h-44\",\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{avatar}</span>\n {rail ? <span className=\"sr-only\">{label}</span> : <PlaceName label={label} />}\n {!rail && children && <Icon icon={__icon_UnfoldMoreIcon} size=\"sm\" className=\"text-fg-tertiary transition-control group-hover/place:text-fg-secondary\" />}\n </>\n );\n const common = { className: classes, ...(force ? { \"data-force\": force } : {}) };\n if (children) {\n return (\n <>\n <LazyMenu\n side=\"bottom\"\n header={header}\n footer={footer}\n trigger={\n <button ref={ref as Ref<HTMLButtonElement>} type=\"button\" {...naming} {...common}>\n {inner}\n </button>\n }\n >\n {children}\n </LazyMenu>\n {purpose.node}\n </>\n );\n }\n const el = href ? (\n <LinkComp ref={ref as Ref<HTMLAnchorElement>} href={href} {...naming} {...common}>\n {inner}\n </LinkComp>\n ) : (\n <div ref={ref as Ref<HTMLDivElement>} {...common}>\n {inner}\n </div>\n );\n return (\n <>\n {rail ? (\n <Tooltip content={label} side=\"right\">\n {el}\n </Tooltip>\n ) : (\n el\n )}\n {href && purpose.node}\n </>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Place.displayName = \"Sidebar.Place\";\n\nfunction useCut(ref: React.RefObject<HTMLElement | null>, enabled: boolean) {\n const [cut, setCut] = useState(false);\n useLayoutEffect(() => {\n const box = ref.current;\n if (!enabled || !box || typeof ResizeObserver === \"undefined\") return;\n const measure = () => setCut(box.scrollWidth > box.clientWidth);\n measure();\n return observeResize([box], measure);\n }, [ref, enabled]);\n return enabled && cut;\n}\n\nfunction PlaceName({ label }: { label: string }) {\n const ref = useRef<HTMLSpanElement>(null);\n const cut = useCut(ref, true);\n return (\n <Tooltip content={label} side=\"right\" disabled={!cut}>\n <span ref={ref} className=\"min-w-0 flex-1 truncate\">\n {label}\n </span>\n </Tooltip>\n );\n}\n\nconst Content = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarContent({ className, ...props }, ref) {\n const { rail } = useSidebar();\n const own = useRef<HTMLDivElement | null>(null);\n const refs = useMemo(() => mergeRefs(own, ref), [ref]);\n useEffect(() => {\n const el = own.current;\n const root = el?.closest(\"[data-sidebar-root]\");\n if (!el || !root) return;\n const check = () => {\n root.toggleAttribute(\"data-scrolled-under\", el.scrollHeight - el.scrollTop - el.clientHeight > 1);\n root.toggleAttribute(\"data-scrolled-over\", el.scrollTop > 1);\n };\n check();\n el.addEventListener(\"scroll\", check, { passive: true });\n const stop = observeResize([el, ...el.children], check);\n return () => {\n el.removeEventListener(\"scroll\", check);\n stop();\n root.removeAttribute(\"data-scrolled-under\");\n root.removeAttribute(\"data-scrolled-over\");\n };\n }, []);\n return (\n <div\n ref={refs}\n className={cn(\"flex min-h-0 flex-1 flex-col gap-16 overflow-y-auto overscroll-contain pt-8 pb-16 scrollbar-quiet\", rail ? \"px-8\" : \"px-16\", className)}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Content.displayName = \"Sidebar.Content\";\n\nconst Footer = /* @__PURE__ */ forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(function SidebarFooter({ className, ...props }, ref) {\n const { rail } = useSidebar();\n return (\n <div\n ref={ref}\n className={cn(\n \"flex shrink-0 items-center gap-4 pt-8 pb-12 transition-control group-data-scrolled-under/sidebar:hairline-t-strong\",\n rail ? \"px-8\" : \"px-16\",\n className,\n )}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Footer.displayName = \"Sidebar.Footer\";\n\nexport interface SidebarGroupProps {\n label?: ReactNode | undefined;\n id?: string | undefined;\n defaultOpen?: boolean | undefined;\n collapsible?: boolean | undefined;\n children: ReactNode;\n className?: string | undefined;\n}\n\nconst Group = /* @__PURE__ */ forwardRef<HTMLDivElement, SidebarGroupProps>(function SidebarGroup(\n { label, id, defaultOpen = true, collapsible = true, children, className },\n ref,\n) {\n const { storageKey, rail } = useSidebar();\n const [open, setOpen] = useStoredState(storageKey && id ? `${storageKey}:group:${id}` : undefined, defaultOpen);\n const labelId = useId();\n if (!label || !collapsible || rail) {\n const named = !!label && !rail;\n return (\n <div ref={ref} {...(named ? { role: \"group\", \"aria-labelledby\": labelId } : {})} className={cn(\"flex flex-col\", className)}>\n {named && (\n <div id={labelId} className=\"flex h-32 items-center px-12 text-caption font-medium text-fg-secondary\">\n {label}\n </div>\n )}\n <ul className=\"flex flex-col gap-2\">{children}</ul>\n </div>\n );\n }\n return (\n <Collapsible.Root ref={ref} open={open} onOpenChange={(o: boolean) => setOpen(o)} className={cn(\"flex flex-col\", className)}>\n <Collapsible.Trigger\n className={cn(DISCLOSURE_TRIGGER, \"h-32 text-caption font-medium text-fg-secondary hover:bg-fill-2 hover:text-fg active:bg-fill-3 coarse:h-44\")}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n <DisclosureChevron />\n </Collapsible.Trigger>\n <Collapsible.Panel className=\"collapse-motion\">\n <ul className=\"flex flex-col gap-2 pt-2\">{children}</ul>\n </Collapsible.Panel>\n </Collapsible.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Group.displayName = \"Sidebar.Group\";\n\nexport interface SidebarItemProps {\n children: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n href?: string | undefined;\n onClick?: ((e: MouseEvent<HTMLElement>) => void) | undefined;\n active?: boolean | undefined;\n count?: number | undefined;\n trailing?: ReactNode | undefined;\n depth?: 0 | 1 | 2 | undefined;\n shortcut?: string[] | string[][] | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst DEPTH = [\"\", \"pl-32\", \"pl-52\"] as const;\n\nconst Item = /* @__PURE__ */ forwardRef<HTMLElement, SidebarItemProps>(function SidebarItem(\n { children, icon, leading, href, onClick, active, count, trailing, depth = 0, shortcut, className, \"data-force\": force },\n ref,\n) {\n const { rail } = useSidebar();\n const LinkComp = useLinkComponent();\n const sheet = useContext(SidebarSheetContext);\n const label = useRef<HTMLSpanElement>(null);\n const cut = useCut(label, !rail);\n const activate = (e: MouseEvent<HTMLElement>) => {\n onClick?.(e);\n if (sheet && !sheet.peek && !href && !e.defaultPrevented) sheet.close();\n };\n const classes = cn(\n \"group/si flex h-32 w-full min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-left text-body font-medium transition-control focus-ring-inset coarse:h-44\",\n active ? KAESO_SIDEBAR_VARIANTS.item.active.classes : KAESO_SIDEBAR_VARIANTS.item.default.classes,\n !rail && DEPTH[depth],\n rail && \"justify-center px-0\",\n className,\n );\n const inner = (\n <>\n {leading ? (\n <span className=\"flex size-18 shrink-0 items-center justify-center\">{leading}</span>\n ) : (\n icon && <Icon icon={icon} size=\"md\" className={cn(\"text-fg-secondary transition-control group-hover/si:text-fg\", active && \"text-fg\")} />\n )}\n {rail ? (\n <span className=\"sr-only\">{children}</span>\n ) : (\n <span ref={label} className=\"min-w-0 flex-1 truncate\">\n {children}\n </span>\n )}\n {!rail && count !== undefined && <span className={cn(\"text-caption font-medium tabular\", active ? \"text-fg\" : \"text-fg-tertiary\")}>{count}</span>}\n {!rail && trailing}\n </>\n );\n const common = {\n className: classes,\n ...(active ? { \"aria-current\": \"page\" as const } : {}),\n ...(force ? { \"data-force\": force } : {}),\n };\n const el = href ? (\n <LinkComp ref={ref as React.Ref<HTMLAnchorElement>} href={href} {...common} {...(onClick ? { onClick } : {})}>\n {inner}\n </LinkComp>\n ) : (\n <button ref={ref as React.Ref<HTMLButtonElement>} type=\"button\" {...common} onClick={activate}>\n {inner}\n </button>\n );\n return (\n <li className=\"flex\">\n <Tooltip content={children} side=\"right\" disabled={!rail && !cut} {...(rail && shortcut ? { shortcut } : {})}>\n {el}\n </Tooltip>\n </li>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Item.displayName = \"Sidebar.Item\";\n\nconst BackLink = /* @__PURE__ */ forwardRef<HTMLAnchorElement, { href: string; children?: ReactNode | undefined; className?: string | undefined }>(function SidebarBackLink(\n { href, children, className },\n ref,\n) {\n const LinkComp = useLinkComponent();\n const t = useUiText();\n return (\n <LinkComp\n ref={ref}\n href={href}\n className={cn(\n \"flex h-32 items-center gap-8 rounded-pill px-12 text-body font-medium text-fg-secondary transition-control hover:bg-fill-2 hover:text-fg active:bg-fill-3 focus-ring-inset coarse:h-44\",\n className,\n )}\n >\n <Icon icon={__icon_ArrowLeft01Icon} size=\"md\" />\n {children ?? t(\"sidebar.backToApp\", \"Back to app\")}\n </LinkComp>\n );\n});\nif (process.env.NODE_ENV !== \"production\") BackLink.displayName = \"Sidebar.BackLink\";\n\nconst Loading = /* @__PURE__ */ forwardRef<HTMLDivElement, { rows?: number | undefined }>(function SidebarLoading({ rows = 5 }, ref) {\n const t = useUiText();\n return (\n <div ref={ref} role=\"status\" aria-label={t(\"sidebar.loading\", \"Loading navigation\")} aria-busy className=\"flex flex-col gap-2\">\n {Array.from({ length: rows }, (_, i) => (\n <div key={i} className=\"flex h-32 items-center gap-8 px-12\">\n <Skeleton className=\"size-18 rounded-pill\" />\n <Skeleton className=\"h-12 rounded-pill\" style={{ width: `${48 + ((i * 37) % 40)}%` }} />\n </div>\n ))}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Loading.displayName = \"Sidebar.Loading\";\n\nconst CollapseToggle = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function SidebarCollapseToggle({ className }, ref) {\n const { collapsed, setCollapsed, shortcut } = useSidebar();\n const sheet = useContext(SidebarSheetContext);\n const t = useUiText();\n const label = sheet\n ? sheet.peek\n ? t(\"sidebar.keepOpen\", \"Keep sidebar open\")\n : t(\"sidebar.closeNavigation\", \"Close navigation\")\n : collapsed\n ? t(\"sidebar.expand\", \"Expand sidebar\")\n : t(\"sidebar.collapse\", \"Collapse sidebar\");\n const onClick = () => {\n if (sheet?.peek) setCollapsed(false);\n else if (sheet) sheet.close();\n else setCollapsed(!collapsed);\n };\n return (\n <Tooltip content={label} {...(shortcut && !(sheet && !sheet.peek) ? { shortcut: [\"[\"] } : {})}>\n <button\n ref={ref}\n type=\"button\"\n data-sidebar-collapse=\"\"\n aria-label={label}\n {...(sheet ? {} : { \"aria-expanded\": !collapsed })}\n onClick={onClick}\n className={cn(\n \"relative inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-fg-secondary transition-control tap-target hover:bg-fill-2 hover:text-fg active:bg-fill-3 focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") CollapseToggle.displayName = \"Sidebar.CollapseToggle\";\n\nconst RailToggle = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function SidebarRailToggle({ className }, ref) {\n const { rail, setRail } = useSidebar();\n const t = useUiText();\n const label = t(\"sidebar.iconsOnly\", \"Icons only\");\n return (\n <Tooltip content={label} side=\"right\">\n <button\n ref={ref}\n type=\"button\"\n aria-label={label}\n aria-pressed={rail}\n onClick={() => setRail(!rail)}\n className={cn(\n \"relative inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-fg-secondary transition-control tap-target hover:bg-fill-2 hover:text-fg active:bg-fill-3 aria-pressed:bg-fill-3 aria-pressed:text-fg focus-ring\",\n className,\n )}\n >\n <Icon icon={__icon_SidebarLeftIcon} size=\"sm\" />\n </button>\n </Tooltip>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RailToggle.displayName = \"Sidebar.RailToggle\";\n\nexport const Sidebar = /* @__PURE__ */ Object.assign(Root, {\n Provider,\n Header,\n Brand,\n Switcher,\n Place,\n Content,\n Footer,\n Group,\n Item,\n BackLink,\n Loading,\n RailToggle,\n CollapseToggle,\n});\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { c as e } from "./menu-Clvv6ftq.js";
2
+ import { c as e } from "./menu-BDce2kiw.js";
3
3
  import { useEffect as t, useLayoutEffect as n, useState as r } from "react";
4
4
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
5
  import { mergeProps as o } from "@base-ui/react/merge-props";
@@ -30,4 +30,4 @@ function l(e, t) {
30
30
  //#endregion
31
31
  export { s as SidebarMenuRoot, l as mergeTriggerProps };
32
32
 
33
- //# sourceMappingURL=sidebar-menu-QSSNu1jJ.js.map
33
+ //# sourceMappingURL=sidebar-menu-C0qJsQF5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar-menu-QSSNu1jJ.js","names":["Menu","SidebarMenuRoot","mounted","setMounted","useState","useEffect","open","HandOver","triggerProps","header","footer","props","useLayoutEffect","store","mergeTriggerProps","_ref","given","mergeProps","own"],"sources":["../../src/components/sidebar/sidebar-menu.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type ReactNode } from \"react\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { Menu } from \"../menu/menu.js\";\nimport type { TriggerProps, TriggerPropsStore } from \"../tooltip/trigger-props.js\";\n\nexport interface SidebarMenuRootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n triggerProps: TriggerPropsStore;\n side: \"top\" | \"bottom\";\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n children: ReactNode;\n}\n\nexport function SidebarMenuRoot({ open, onOpenChange, triggerProps, side, header, footer, children }: SidebarMenuRootProps) {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n return (\n <Menu open={open && mounted} onOpenChange={onOpenChange}>\n <Menu.Trigger>\n <HandOver store={triggerProps} />\n </Menu.Trigger>\n <Menu.Content side={side} align=\"start\" {...(header ? { header } : {})} {...(footer ? { footer } : {})}>\n {children}\n </Menu.Content>\n </Menu>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SidebarMenuRoot.displayName = \"Sidebar.MenuRoot\";\n\nfunction HandOver({ store, ...props }: TriggerProps & { store: TriggerPropsStore }) {\n useLayoutEffect(() => store.set(props));\n useLayoutEffect(() => () => store.set(null), [store]);\n return null;\n}\nif (process.env.NODE_ENV !== \"production\") HandOver.displayName = \"Sidebar.MenuHandOver\";\n\nexport function mergeTriggerProps(given: TriggerProps, own: object): object {\n const { ref: _ref, ...props } = given;\n return mergeProps<\"button\">(props, own);\n}\n"],"mappings":";;;;;;AAeA,SAAgBC,EAAgB,EAAE,SAAM,iBAAc,iBAAc,SAAM,WAAQ,WAAQ,eAAkC;CAC1H,IAAM,CAACC,GAASC,KAAcC,EAAS,EAAK;CAE5C,OADAC,QAAgBF,EAAW,EAAI,GAAG,CAAC,CAAC,GAElC,kBAACH,GAAD;EAAM,MAAMM,KAAQJ;EAAuB;EAA3C,UAAA,CACE,kBAACF,EAAK,SAAN,EAAA,UACE,kBAACO,GAAD,EAAU,OAAOC,EAAe,CAAA,EACpB,CAAA,GACd,kBAACR,EAAK,SAAN;GAAoB;GAAM,OAAM;GAAQ,GAAKS,IAAS,EAAE,UAAO,IAAI,CAAC;GAAI,GAAKC,IAAS,EAAE,UAAO,IAAI,CAAC;GACjG;EACW,CAAA,CACV;;AAEV;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAEzE,SAASH,EAAS,EAAE,UAAO,GAAGI,KAAsD;CAGlF,OAFAC,QAAsBC,EAAM,IAAIF,CAAK,CAAC,GACtCC,cAA4BC,EAAM,IAAI,IAAI,GAAG,CAACA,CAAK,CAAC,GAC7C;AACT;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAElE,SAAgBC,EAAkB,GAAqB,GAAqB;CAC1E,IAAM,EAAE,KAAKC,GAAM,GAAGJ,MAAUK;CAChC,OAAOC,EAAqBN,GAAOO,CAAG;AACxC"}
1
+ {"version":3,"file":"sidebar-menu-C0qJsQF5.js","names":["Menu","SidebarMenuRoot","mounted","setMounted","useState","useEffect","open","HandOver","triggerProps","header","footer","props","useLayoutEffect","store","mergeTriggerProps","_ref","given","mergeProps","own"],"sources":["../../src/components/sidebar/sidebar-menu.tsx"],"sourcesContent":["import { useEffect, useLayoutEffect, useState, type ReactNode } from \"react\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { Menu } from \"../menu/menu.js\";\nimport type { TriggerProps, TriggerPropsStore } from \"../tooltip/trigger-props.js\";\n\nexport interface SidebarMenuRootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n triggerProps: TriggerPropsStore;\n side: \"top\" | \"bottom\";\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n children: ReactNode;\n}\n\nexport function SidebarMenuRoot({ open, onOpenChange, triggerProps, side, header, footer, children }: SidebarMenuRootProps) {\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n return (\n <Menu open={open && mounted} onOpenChange={onOpenChange}>\n <Menu.Trigger>\n <HandOver store={triggerProps} />\n </Menu.Trigger>\n <Menu.Content side={side} align=\"start\" {...(header ? { header } : {})} {...(footer ? { footer } : {})}>\n {children}\n </Menu.Content>\n </Menu>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SidebarMenuRoot.displayName = \"Sidebar.MenuRoot\";\n\nfunction HandOver({ store, ...props }: TriggerProps & { store: TriggerPropsStore }) {\n useLayoutEffect(() => store.set(props));\n useLayoutEffect(() => () => store.set(null), [store]);\n return null;\n}\nif (process.env.NODE_ENV !== \"production\") HandOver.displayName = \"Sidebar.MenuHandOver\";\n\nexport function mergeTriggerProps(given: TriggerProps, own: object): object {\n const { ref: _ref, ...props } = given;\n return mergeProps<\"button\">(props, own);\n}\n"],"mappings":";;;;;;AAeA,SAAgBC,EAAgB,EAAE,SAAM,iBAAc,iBAAc,SAAM,WAAQ,WAAQ,eAAkC;CAC1H,IAAM,CAACC,GAASC,KAAcC,EAAS,EAAK;CAE5C,OADAC,QAAgBF,EAAW,EAAI,GAAG,CAAC,CAAC,GAElC,kBAACH,GAAD;EAAM,MAAMM,KAAQJ;EAAuB;EAA3C,UAAA,CACE,kBAACF,EAAK,SAAN,EAAA,UACE,kBAACO,GAAD,EAAU,OAAOC,EAAe,CAAA,EACpB,CAAA,GACd,kBAACR,EAAK,SAAN;GAAoB;GAAM,OAAM;GAAQ,GAAKS,IAAS,EAAE,UAAO,IAAI,CAAC;GAAI,GAAKC,IAAS,EAAE,UAAO,IAAI,CAAC;GACjG;EACW,CAAA,CACV;;AAEV;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAEzE,SAASH,EAAS,EAAE,UAAO,GAAGI,KAAsD;CAGlF,OAFAC,QAAsBC,EAAM,IAAIF,CAAK,CAAC,GACtCC,cAA4BC,EAAM,IAAI,IAAI,GAAG,CAACA,CAAK,CAAC,GAC7C;AACT;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAElE,SAAgBC,EAAkB,GAAqB,GAAqB;CAC1E,IAAM,EAAE,KAAKC,GAAM,GAAGJ,MAAUK;CAChC,OAAOC,EAAqBN,GAAOO,CAAG;AACxC"}
@@ -0,0 +1,21 @@
1
+ //#region \0rolldown/runtime.js
2
+ var e = Object.defineProperty, t = (t, n) => {
3
+ let r = {};
4
+ for (var i in t) e(r, i, {
5
+ get: t[i],
6
+ enumerable: !0
7
+ });
8
+ return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
+ }, n = /* @__PURE__ */ t({
10
+ MENU_DANGER: () => o,
11
+ MENU_HINT: () => l,
12
+ MENU_ICON: () => a,
13
+ MENU_ITEM: () => i,
14
+ MENU_LABEL: () => s,
15
+ MENU_POPUP: () => r,
16
+ MENU_SEPARATOR: () => c
17
+ }), r = "z-50 flex min-w-220 max-w-360 flex-col overflow-y-auto overscroll-contain rounded-menu bg-raised p-6 text-body text-fg shadow-raised outline-none popup-motion scrollbar-quiet max-h-(--available-height)", i = "group/item relative flex min-h-34 w-full shrink-0 cursor-default items-center gap-10 rounded-item px-10 text-left text-body font-medium text-fg outline-none select-none coarse:min-h-44 highlighted:bg-item-hover active:bg-item-pressed disabled:pointer-events-none disabled:text-fg-disabled", a = "text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled forced-colors:text-current", o = "text-danger-text highlighted:bg-danger-tint active:bg-danger-tint", s = "flex h-28 items-center px-10 text-caption font-medium text-fg-secondary", c = "mx-10 my-4 h-1 shrink-0 bg-line-subtle", l = "ml-auto flex shrink-0 items-center gap-4 pl-16 text-caption font-medium text-fg-tertiary tabular group-data-highlighted/item:text-fg-secondary forced-colors:text-current";
18
+ //#endregion
19
+ export { s as a, n as c, i, t as l, l as n, r as o, a as r, c as s, o as t };
20
+
21
+ //# sourceMappingURL=styles-8fn_bHRP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles-8fn_bHRP.js","names":["__defProp","__exportAll","target","name","all","no_symbols","styles_exports","MENU_DANGER","MENU_HINT","MENU_ICON","MENU_ITEM","MENU_LABEL","MENU_POPUP","MENU_SEPARATOR"],"sources":["../../src/components/menu/styles.ts"],"sourcesContent":["export const MENU_POPUP =\n \"z-50 flex min-w-220 max-w-360 flex-col overflow-y-auto overscroll-contain rounded-menu bg-raised p-6 text-body text-fg shadow-raised outline-none popup-motion scrollbar-quiet max-h-(--available-height)\";\n\nexport const MENU_ITEM =\n \"group/item relative flex min-h-34 w-full shrink-0 cursor-default items-center gap-10 rounded-item px-10 text-left text-body font-medium text-fg outline-none select-none coarse:min-h-44 highlighted:bg-item-hover active:bg-item-pressed disabled:pointer-events-none disabled:text-fg-disabled\";\n\nexport const MENU_ICON = \"text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled forced-colors:text-current\";\n\nexport const MENU_DANGER = \"text-danger-text highlighted:bg-danger-tint active:bg-danger-tint\";\n\nexport const MENU_LABEL = \"flex h-28 items-center px-10 text-caption font-medium text-fg-secondary\";\n\nexport const MENU_SEPARATOR = \"mx-10 my-4 h-1 shrink-0 bg-line-subtle\";\n\nexport const MENU_HINT =\n \"ml-auto flex shrink-0 items-center gap-4 pl-16 text-caption font-medium text-fg-tertiary tabular group-data-highlighted/item:text-fg-secondary forced-colors:text-current\";\n"],"mappings":";;;;;;;;;;;;;;;;A,IAAaY,IACX,6MAEWF,IACX,oSAEWD,IAAY,8HAEZF,IAAc,qEAEdI,IAAa,2EAEbE,IAAiB,0CAEjBL,IACX"}
@@ -2,9 +2,9 @@
2
2
  import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { i as t } from "./dev-CR1p7gCm.js";
4
4
  import { i as n, r } from "./context-BELWW79w.js";
5
- import { n as i } from "./button-IblhXUyZ.js";
5
+ import { n as i } from "./button-DrmFgdIi.js";
6
6
  import { a, o, s } from "./field-D7m-yl-D.js";
7
- import { t as c } from "./input-Bo5-UZg2.js";
7
+ import { t as c } from "./input-D1SeLe3X.js";
8
8
  import { forwardRef as l, useCallback as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
9
9
  import { jsx as h, jsxs as g } from "react/jsx-runtime";
10
10
  import { Add01Icon as _, MinusSignIcon as v } from "@hugeicons/core-free-icons";
@@ -168,4 +168,4 @@ process.env.NODE_ENV !== "production" && (N.displayName = "Textarea");
168
168
  //#endregion
169
169
  export { O as a, S as c, k as i, T as l, j as n, A as o, N as r, x as s, M as t };
170
170
 
171
- //# sourceMappingURL=textarea-CO0HP6fK.js.map
171
+ //# sourceMappingURL=textarea-CRmvC4jd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-CO0HP6fK.js","names":["__icon_Add01Icon","__icon_MinusSignIcon","cn","warnStylingClassName","useUiText","Button","Input","split","m","v","isDecimal","addDecimal","x","a","y","b","scale","toBig","p","sum","neg","digits","int","frac","compareDecimal","d","ENGLISH","decimalSeparators","locale","parts","groupDecimal","seps","localizeDecimal","ungroup","out","KAESO_NUMBER_INPUT_VARIANTS","KAESO_NUMBER_INPUT_DEFAULT_VARIANTS","NumberInput","props","t","useLocale","useMemo","inner","setInner","useState","defaultValue","focused","setFocused","controlled","value","raw","set","onValueChange","clamp","min","max","stepBy","dir","step","display","integer","live","disabled","readOnly","buttonSize","atLimit","limit","stepButton","Add01Icon","MinusSignIcon","stepper","hideStepper","numeric","unit","onFocus","onBlur","onKeyDown","KAESO_TEXTAREA_VARIANTS","KAESO_TEXTAREA_DEFAULT_VARIANTS","Textarea","rest","className","field","useField","fc","useFieldControl","useRef","grow","useCallback","el","resize","style","line","pad","maxRows","control","ref","onChange","mono","label","description","error","id","invalid","withField"],"sources":["../../src/components/input/decimal.ts","../../src/components/input/number-input.tsx","../../src/components/input/textarea.tsx"],"sourcesContent":["function split(v: string): { neg: boolean; int: string; frac: string } {\n const m = /^(-)?(\\d*)(?:\\.(\\d*))?$/.exec(v.trim());\n if (!m) return { neg: false, int: \"0\", frac: \"\" };\n return { neg: m[1] === \"-\", int: (m[2] || \"0\").replace(/^0+(?=\\d)/, \"\"), frac: m[3] ?? \"\" };\n}\n\nexport function isDecimal(v: string): boolean {\n return /^-?\\d*(?:\\.\\d*)?$/.test(v.trim());\n}\n\nexport function addDecimal(a: string, b: string): string {\n const x = split(a || \"0\");\n const y = split(b || \"0\");\n const scale = Math.max(x.frac.length, y.frac.length);\n const toBig = (p: { neg: boolean; int: string; frac: string }) => BigInt((p.neg ? \"-\" : \"\") + p.int + p.frac.padEnd(scale, \"0\"));\n const sum = toBig(x) + toBig(y);\n const neg = sum < 0n;\n const digits = (neg ? -sum : sum).toString().padStart(scale + 1, \"0\");\n const int = digits.slice(0, digits.length - scale) || \"0\";\n const frac = scale ? digits.slice(-scale) : \"\";\n return `${neg ? \"-\" : \"\"}${int}${frac ? `.${frac}` : \"\"}`;\n}\n\nexport function compareDecimal(a: string, b: string): number {\n const d = addDecimal(a, b.startsWith(\"-\") ? b.slice(1) : `-${b}`);\n if (d.startsWith(\"-\") && /[1-9]/.test(d)) return -1;\n return /[1-9]/.test(d) ? 1 : 0;\n}\n\nexport interface DecimalSeparators {\n group: string;\n decimal: string;\n}\n\nconst ENGLISH: DecimalSeparators = { group: \",\", decimal: \".\" };\n\nexport function decimalSeparators(locale: string): DecimalSeparators {\n if (locale === \"en\") return ENGLISH;\n const parts = new Intl.NumberFormat(locale).formatToParts(1234.5);\n return { group: parts.find((p) => p.type === \"group\")?.value ?? \",\", decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\" };\n}\n\nexport function groupDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n const p = split(v);\n if (!isDecimal(v) || v.trim() === \"\") return v;\n return `${p.neg ? \"-\" : \"\"}${p.int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, seps.group)}${v.includes(\".\") ? `${seps.decimal}${p.frac}` : \"\"}`;\n}\n\nexport function localizeDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n return seps.decimal === \".\" ? v : v.replace(\".\", seps.decimal);\n}\n\nexport function ungroup(v: string, seps: DecimalSeparators = ENGLISH): string {\n const out = seps.group === \".\" ? v : v.split(seps.group).join(\"\");\n return seps.decimal === \".\" ? out : out.split(seps.decimal).join(\".\");\n}\n","import { forwardRef, useMemo, useState, type ChangeEvent, type FocusEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Input, type InputProps } from \"./input.js\";\nimport { Button } from \"../button/button.js\";\nimport { Add01Icon as __icon_Add01Icon, MinusSignIcon as __icon_MinusSignIcon } from \"@hugeicons/core-free-icons\";\nimport { addDecimal, compareDecimal, decimalSeparators, groupDecimal, isDecimal, localizeDecimal, ungroup } from \"./decimal.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_NUMBER_INPUT_VARIANTS = {\n align: {\n end: { classes: \"text-end\" },\n start: { classes: \"text-start\" },\n },\n} as const;\nexport const KAESO_NUMBER_INPUT_DEFAULT_VARIANTS = { align: \"end\" } as const;\n\nexport interface NumberInputProps extends Omit<InputProps, \"type\" | \"value\" | \"defaultValue\" | \"onChange\" | \"min\" | \"max\" | \"step\"> {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n unit?: string | undefined;\n step?: string | undefined;\n min?: string | undefined;\n max?: string | undefined;\n hideStepper?: boolean | undefined;\n integer?: boolean | undefined;\n align?: keyof typeof KAESO_NUMBER_INPUT_VARIANTS.align | undefined;\n}\n\nexport const NumberInput = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value,\n defaultValue = \"\",\n onValueChange,\n unit,\n step = \"1\",\n min,\n max,\n hideStepper,\n integer,\n align = \"end\",\n onBlur,\n onFocus,\n onKeyDown,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const seps = useMemo(() => decimalSeparators(locale), [locale]);\n const [inner, setInner] = useState(defaultValue);\n const [focused, setFocused] = useState(false);\n const controlled = value !== undefined;\n const raw = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n const clamp = (v: string) => {\n if (v === \"\" || v === \"-\") return v;\n if (min !== undefined && compareDecimal(v, min) < 0) return min;\n if (max !== undefined && compareDecimal(v, max) > 0) return max;\n return v;\n };\n const stepBy = (dir: 1 | -1) => set(clamp(addDecimal(raw || \"0\", dir === 1 ? step : `-${step}`)));\n const display = integer ? raw : focused ? localizeDecimal(raw, seps) : groupDecimal(raw, seps);\n const live = !disabled && !readOnly;\n const buttonSize = props.size === \"xl\" ? \"md\" : props.size === \"sm\" ? \"xs\" : \"sm\";\n const atLimit = (dir: 1 | -1) => {\n const limit = dir === 1 ? max : min;\n return limit !== undefined && isDecimal(raw) && raw !== \"\" && raw !== \"-\" && compareDecimal(raw, limit) * dir >= 0;\n };\n const stepButton = (dir: 1 | -1) => (\n <Button\n shape=\"circle\"\n variant=\"quiet\"\n size={buttonSize}\n tabIndex={-1}\n icon={dir === 1 ? __icon_Add01Icon : __icon_MinusSignIcon}\n aria-label={dir === 1 ? t(\"numberInput.increase\", \"Increase\") : t(\"numberInput.decrease\", \"Decrease\")}\n onClick={() => stepBy(dir)}\n disabled={!live || atLimit(dir)}\n />\n );\n const stepper = !hideStepper && (\n <span className={cn(\"flex shrink-0 items-center\", !live && \"invisible\")} {...(live ? {} : { \"aria-hidden\": true })}>\n {stepButton(-1)}\n {stepButton(1)}\n </span>\n );\n const numeric = raw !== \"\" && raw !== \"-\" ? Number(raw) : undefined;\n return (\n <Input\n ref={ref}\n type=\"text\"\n role=\"spinbutton\"\n {...(numeric !== undefined && Number.isFinite(numeric) ? { \"aria-valuenow\": numeric, \"aria-valuetext\": unit ? `${display} ${unit}` : display } : {})}\n {...(min !== undefined ? { \"aria-valuemin\": Number(min) } : {})}\n {...(max !== undefined ? { \"aria-valuemax\": Number(max) } : {})}\n inputMode={integer ? \"numeric\" : \"decimal\"}\n autoComplete=\"off\"\n spellCheck={false}\n value={display}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n suffix={unit}\n trailing={stepper || undefined}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (integer) {\n if (/^-?\\d*$/.test(e.target.value)) set(e.target.value);\n return;\n }\n const v = ungroup(e.target.value, seps);\n if (isDecimal(v)) set(v);\n }}\n onFocus={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (raw !== clamp(raw)) set(clamp(raw));\n onBlur?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepBy(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepBy(-1);\n }\n onKeyDown?.(e);\n }}\n align={align}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") NumberInput.displayName = \"NumberInput\";\n","import { forwardRef, useCallback, useLayoutEffect, useRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\n\nexport const KAESO_TEXTAREA_VARIANTS = {\n resize: {\n auto: { classes: \"resize-none\" },\n vertical: { classes: \"resize-y\" },\n },\n} as const;\nexport const KAESO_TEXTAREA_DEFAULT_VARIANTS = { resize: \"auto\" } as const;\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FieldWrapProps {\n resize?: keyof typeof KAESO_TEXTAREA_VARIANTS.resize | undefined;\n maxRows?: number | undefined;\n invalid?: boolean | undefined;\n mono?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(props, ref) {\n const {\n resize = \"auto\",\n maxRows = 8,\n rows = 3,\n invalid,\n mono,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n id,\n disabled,\n onChange,\n ...rest\n } = props;\n warnStylingClassName(\"Textarea\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = useRef<HTMLTextAreaElement | null>(null);\n const grow = useCallback(() => {\n const el = inner.current;\n if (!el || resize !== \"auto\") return;\n const style = getComputedStyle(el);\n const line = parseFloat(style.lineHeight) || 20;\n const pad = (parseFloat(style.paddingTop) || 0) + (parseFloat(style.paddingBottom) || 0);\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxRows * line + pad)}px`;\n }, [maxRows, resize]);\n useLayoutEffect(grow, [grow, rest.value]);\n const control = (\n <textarea\n ref={(el) => {\n inner.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n rows={rows}\n disabled={disabled}\n required={required}\n onChange={(e) => {\n grow();\n onChange?.(e);\n }}\n className={cn(\n \"block w-full min-w-0 rounded-textarea px-16 py-10 text-body text-fg material-field transition-control outline-none placeholder:text-fg-tertiary scrollbar-quiet\",\n \"disabled:cursor-not-allowed\",\n mono && \"mono text-small\",\n KAESO_TEXTAREA_VARIANTS.resize[resize].classes,\n !(label || description || error) && className,\n )}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Textarea.displayName = \"Textarea\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"textarea-CRmvC4jd.js","names":["__icon_Add01Icon","__icon_MinusSignIcon","cn","warnStylingClassName","useUiText","Button","Input","split","m","v","isDecimal","addDecimal","x","a","y","b","scale","toBig","p","sum","neg","digits","int","frac","compareDecimal","d","ENGLISH","decimalSeparators","locale","parts","groupDecimal","seps","localizeDecimal","ungroup","out","KAESO_NUMBER_INPUT_VARIANTS","KAESO_NUMBER_INPUT_DEFAULT_VARIANTS","NumberInput","props","t","useLocale","useMemo","inner","setInner","useState","defaultValue","focused","setFocused","controlled","value","raw","set","onValueChange","clamp","min","max","stepBy","dir","step","display","integer","live","disabled","readOnly","buttonSize","atLimit","limit","stepButton","Add01Icon","MinusSignIcon","stepper","hideStepper","numeric","unit","onFocus","onBlur","onKeyDown","KAESO_TEXTAREA_VARIANTS","KAESO_TEXTAREA_DEFAULT_VARIANTS","Textarea","rest","className","field","useField","fc","useFieldControl","useRef","grow","useCallback","el","resize","style","line","pad","maxRows","control","ref","onChange","mono","label","description","error","id","invalid","withField"],"sources":["../../src/components/input/decimal.ts","../../src/components/input/number-input.tsx","../../src/components/input/textarea.tsx"],"sourcesContent":["function split(v: string): { neg: boolean; int: string; frac: string } {\n const m = /^(-)?(\\d*)(?:\\.(\\d*))?$/.exec(v.trim());\n if (!m) return { neg: false, int: \"0\", frac: \"\" };\n return { neg: m[1] === \"-\", int: (m[2] || \"0\").replace(/^0+(?=\\d)/, \"\"), frac: m[3] ?? \"\" };\n}\n\nexport function isDecimal(v: string): boolean {\n return /^-?\\d*(?:\\.\\d*)?$/.test(v.trim());\n}\n\nexport function addDecimal(a: string, b: string): string {\n const x = split(a || \"0\");\n const y = split(b || \"0\");\n const scale = Math.max(x.frac.length, y.frac.length);\n const toBig = (p: { neg: boolean; int: string; frac: string }) => BigInt((p.neg ? \"-\" : \"\") + p.int + p.frac.padEnd(scale, \"0\"));\n const sum = toBig(x) + toBig(y);\n const neg = sum < 0n;\n const digits = (neg ? -sum : sum).toString().padStart(scale + 1, \"0\");\n const int = digits.slice(0, digits.length - scale) || \"0\";\n const frac = scale ? digits.slice(-scale) : \"\";\n return `${neg ? \"-\" : \"\"}${int}${frac ? `.${frac}` : \"\"}`;\n}\n\nexport function compareDecimal(a: string, b: string): number {\n const d = addDecimal(a, b.startsWith(\"-\") ? b.slice(1) : `-${b}`);\n if (d.startsWith(\"-\") && /[1-9]/.test(d)) return -1;\n return /[1-9]/.test(d) ? 1 : 0;\n}\n\nexport interface DecimalSeparators {\n group: string;\n decimal: string;\n}\n\nconst ENGLISH: DecimalSeparators = { group: \",\", decimal: \".\" };\n\nexport function decimalSeparators(locale: string): DecimalSeparators {\n if (locale === \"en\") return ENGLISH;\n const parts = new Intl.NumberFormat(locale).formatToParts(1234.5);\n return { group: parts.find((p) => p.type === \"group\")?.value ?? \",\", decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\" };\n}\n\nexport function groupDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n const p = split(v);\n if (!isDecimal(v) || v.trim() === \"\") return v;\n return `${p.neg ? \"-\" : \"\"}${p.int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, seps.group)}${v.includes(\".\") ? `${seps.decimal}${p.frac}` : \"\"}`;\n}\n\nexport function localizeDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n return seps.decimal === \".\" ? v : v.replace(\".\", seps.decimal);\n}\n\nexport function ungroup(v: string, seps: DecimalSeparators = ENGLISH): string {\n const out = seps.group === \".\" ? v : v.split(seps.group).join(\"\");\n return seps.decimal === \".\" ? out : out.split(seps.decimal).join(\".\");\n}\n","import { forwardRef, useMemo, useState, type ChangeEvent, type FocusEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Input, type InputProps } from \"./input.js\";\nimport { Button } from \"../button/button.js\";\nimport { Add01Icon as __icon_Add01Icon, MinusSignIcon as __icon_MinusSignIcon } from \"@hugeicons/core-free-icons\";\nimport { addDecimal, compareDecimal, decimalSeparators, groupDecimal, isDecimal, localizeDecimal, ungroup } from \"./decimal.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_NUMBER_INPUT_VARIANTS = {\n align: {\n end: { classes: \"text-end\" },\n start: { classes: \"text-start\" },\n },\n} as const;\nexport const KAESO_NUMBER_INPUT_DEFAULT_VARIANTS = { align: \"end\" } as const;\n\nexport interface NumberInputProps extends Omit<InputProps, \"type\" | \"value\" | \"defaultValue\" | \"onChange\" | \"min\" | \"max\" | \"step\"> {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n unit?: string | undefined;\n step?: string | undefined;\n min?: string | undefined;\n max?: string | undefined;\n hideStepper?: boolean | undefined;\n integer?: boolean | undefined;\n align?: keyof typeof KAESO_NUMBER_INPUT_VARIANTS.align | undefined;\n}\n\nexport const NumberInput = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value,\n defaultValue = \"\",\n onValueChange,\n unit,\n step = \"1\",\n min,\n max,\n hideStepper,\n integer,\n align = \"end\",\n onBlur,\n onFocus,\n onKeyDown,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const seps = useMemo(() => decimalSeparators(locale), [locale]);\n const [inner, setInner] = useState(defaultValue);\n const [focused, setFocused] = useState(false);\n const controlled = value !== undefined;\n const raw = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n const clamp = (v: string) => {\n if (v === \"\" || v === \"-\") return v;\n if (min !== undefined && compareDecimal(v, min) < 0) return min;\n if (max !== undefined && compareDecimal(v, max) > 0) return max;\n return v;\n };\n const stepBy = (dir: 1 | -1) => set(clamp(addDecimal(raw || \"0\", dir === 1 ? step : `-${step}`)));\n const display = integer ? raw : focused ? localizeDecimal(raw, seps) : groupDecimal(raw, seps);\n const live = !disabled && !readOnly;\n const buttonSize = props.size === \"xl\" ? \"md\" : props.size === \"sm\" ? \"xs\" : \"sm\";\n const atLimit = (dir: 1 | -1) => {\n const limit = dir === 1 ? max : min;\n return limit !== undefined && isDecimal(raw) && raw !== \"\" && raw !== \"-\" && compareDecimal(raw, limit) * dir >= 0;\n };\n const stepButton = (dir: 1 | -1) => (\n <Button\n shape=\"circle\"\n variant=\"quiet\"\n size={buttonSize}\n tabIndex={-1}\n icon={dir === 1 ? __icon_Add01Icon : __icon_MinusSignIcon}\n aria-label={dir === 1 ? t(\"numberInput.increase\", \"Increase\") : t(\"numberInput.decrease\", \"Decrease\")}\n onClick={() => stepBy(dir)}\n disabled={!live || atLimit(dir)}\n />\n );\n const stepper = !hideStepper && (\n <span className={cn(\"flex shrink-0 items-center\", !live && \"invisible\")} {...(live ? {} : { \"aria-hidden\": true })}>\n {stepButton(-1)}\n {stepButton(1)}\n </span>\n );\n const numeric = raw !== \"\" && raw !== \"-\" ? Number(raw) : undefined;\n return (\n <Input\n ref={ref}\n type=\"text\"\n role=\"spinbutton\"\n {...(numeric !== undefined && Number.isFinite(numeric) ? { \"aria-valuenow\": numeric, \"aria-valuetext\": unit ? `${display} ${unit}` : display } : {})}\n {...(min !== undefined ? { \"aria-valuemin\": Number(min) } : {})}\n {...(max !== undefined ? { \"aria-valuemax\": Number(max) } : {})}\n inputMode={integer ? \"numeric\" : \"decimal\"}\n autoComplete=\"off\"\n spellCheck={false}\n value={display}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n suffix={unit}\n trailing={stepper || undefined}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (integer) {\n if (/^-?\\d*$/.test(e.target.value)) set(e.target.value);\n return;\n }\n const v = ungroup(e.target.value, seps);\n if (isDecimal(v)) set(v);\n }}\n onFocus={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (raw !== clamp(raw)) set(clamp(raw));\n onBlur?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepBy(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepBy(-1);\n }\n onKeyDown?.(e);\n }}\n align={align}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") NumberInput.displayName = \"NumberInput\";\n","import { forwardRef, useCallback, useLayoutEffect, useRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\n\nexport const KAESO_TEXTAREA_VARIANTS = {\n resize: {\n auto: { classes: \"resize-none\" },\n vertical: { classes: \"resize-y\" },\n },\n} as const;\nexport const KAESO_TEXTAREA_DEFAULT_VARIANTS = { resize: \"auto\" } as const;\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FieldWrapProps {\n resize?: keyof typeof KAESO_TEXTAREA_VARIANTS.resize | undefined;\n maxRows?: number | undefined;\n invalid?: boolean | undefined;\n mono?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(props, ref) {\n const {\n resize = \"auto\",\n maxRows = 8,\n rows = 3,\n invalid,\n mono,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n id,\n disabled,\n onChange,\n ...rest\n } = props;\n warnStylingClassName(\"Textarea\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = useRef<HTMLTextAreaElement | null>(null);\n const grow = useCallback(() => {\n const el = inner.current;\n if (!el || resize !== \"auto\") return;\n const style = getComputedStyle(el);\n const line = parseFloat(style.lineHeight) || 20;\n const pad = (parseFloat(style.paddingTop) || 0) + (parseFloat(style.paddingBottom) || 0);\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxRows * line + pad)}px`;\n }, [maxRows, resize]);\n useLayoutEffect(grow, [grow, rest.value]);\n const control = (\n <textarea\n ref={(el) => {\n inner.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n rows={rows}\n disabled={disabled}\n required={required}\n onChange={(e) => {\n grow();\n onChange?.(e);\n }}\n className={cn(\n \"block w-full min-w-0 rounded-textarea px-16 py-10 text-body text-fg material-field transition-control outline-none placeholder:text-fg-tertiary scrollbar-quiet\",\n \"disabled:cursor-not-allowed\",\n mono && \"mono text-small\",\n KAESO_TEXTAREA_VARIANTS.resize[resize].classes,\n !(label || description || error) && className,\n )}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Textarea.displayName = \"Textarea\";\n"],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
  import { t as e } from "./cn-BjnOAUrA.js";
3
3
  import { i as t, r as n } from "./context-BELWW79w.js";
4
4
  import { dateFormatter as r, formatNumber as i, formatPercent as a, formatTimeZone as o } from "../format.js";
5
- import { A as ee, D as s, E as c, O as l, S as te, _ as u, b as ne, g as re, i as ie, n as ae, p as oe, r as se, s as ce, t as d, v as le } from "./core-B0bULn-t.js";
5
+ import { A as ee, D as s, E as c, O as l, S as te, _ as u, b as ne, g as re, i as ie, n as ae, p as oe, r as se, s as ce, t as d, v as le } from "./core-Cw3pNRp3.js";
6
6
  import { t as ue } from "./linear-scale-BWKeRqDX.js";
7
- import { a as de, n as fe, o as pe, r as me, s as he, t as ge } from "./domain-BsM9UmAg.js";
7
+ import { a as de, n as fe, o as pe, r as me, s as he, t as ge } from "./domain-CrQX3p6E.js";
8
8
  import { forwardRef as f, useId as _e, useMemo as ve, useState as ye } from "react";
9
9
  import { Fragment as be, jsx as p, jsxs as m } from "react/jsx-runtime";
10
10
  import { area as xe, curveMonotoneX as h, line as Se, stack as Ce, stackOffsetDiverging as we } from "d3-shape";
@@ -378,4 +378,4 @@ process.env.NODE_ENV !== "production" && (ze.displayName = "TimeseriesChart");
378
378
  //#endregion
379
379
  export { Me as n, ze as r, Ne as t };
380
380
 
381
- //# sourceMappingURL=timeseries-nDviPxvQ.js.map
381
+ //# sourceMappingURL=timeseries-CK86u7M0.js.map