@logicplanes/kaeso-ui 0.4.8 → 0.5.1
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.
- package/ai/component-guides.md +5 -5
- package/ai/component-registry.json +1 -1
- package/ai/component-registry.md +1 -1
- package/ai/icons.md +1 -1
- package/ai/tokens.md +1 -1
- package/dist/blocks/pages.js +2 -2
- package/dist/chunks/{app-frame-D8sGcD0v.js → app-frame-B1FXVFYx.js} +3 -3
- package/dist/chunks/{app-frame-D8sGcD0v.js.map → app-frame-B1FXVFYx.js.map} +1 -1
- package/dist/chunks/{disclosure-BtYRTDO3.js → disclosure-3CIz2WZa.js} +2 -2
- package/dist/chunks/disclosure-3CIz2WZa.js.map +1 -0
- package/dist/chunks/{nav-sheet-D3U7MeaI.js → nav-sheet-S7tagFJT.js} +2 -2
- package/dist/chunks/{nav-sheet-D3U7MeaI.js.map → nav-sheet-S7tagFJT.js.map} +1 -1
- package/dist/chunks/{page-header-C5Bv1gKE.js → page-header-DUaKLpK3.js} +2 -2
- package/dist/chunks/{page-header-C5Bv1gKE.js.map → page-header-DUaKLpK3.js.map} +1 -1
- package/dist/chunks/{sidebar-K30Ae8N5.js → sidebar-BO1mnjVH.js} +2 -2
- package/dist/chunks/{sidebar-K30Ae8N5.js.map → sidebar-BO1mnjVH.js.map} +1 -1
- package/dist/components/app-frame.js +2 -2
- package/dist/components/collapsible.js +29 -30
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/index.js +4 -4
- package/package.json +2 -2
- package/dist/chunks/disclosure-BtYRTDO3.js.map +0 -1
package/ai/component-guides.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @logicplanes/kaeso-ui component guides
|
|
2
2
|
|
|
3
|
-
Version 0.
|
|
3
|
+
Version 0.5.1. Generated from the showcase's demo modules (apps/showcase/src/demos); do not edit. For each component: what it is for, its import, keyboard, accessibility, do and don't, and every example's code. Props and variants: `component-registry.md`.
|
|
4
4
|
|
|
5
5
|
## AgentAttribution
|
|
6
6
|
|
|
@@ -250,7 +250,7 @@ A standing notice about a state: a tint, an icon, the text and actions; errors a
|
|
|
250
250
|
```tsx
|
|
251
251
|
<div className="flex w-560 max-w-full flex-col gap-12">
|
|
252
252
|
<Banner tone="info" title="New models are available" actions={<Button size="sm">Review</Button>} onDismiss={() => undefined}>
|
|
253
|
-
|
|
253
|
+
KPMR added 4 models since the last sync.
|
|
254
254
|
</Banner>
|
|
255
255
|
<Banner tone="warning">This key expires in 5 days.</Banner>
|
|
256
256
|
<Banner tone="danger" title="This organization is scheduled for deletion" actions={<Button size="sm">Restore organization</Button>}>
|
|
@@ -2720,12 +2720,12 @@ function Wizard() {
|
|
|
2720
2720
|
const addCustom = () => custom.trim() && add(custom.trim());
|
|
2721
2721
|
const pick = {
|
|
2722
2722
|
title: "Add model",
|
|
2723
|
-
description: "Pick a model from the
|
|
2723
|
+
description: "Pick a model from the KPMR catalogue.",
|
|
2724
2724
|
toolbar: <SearchInput aria-label="Search models" placeholder="Search" value={query} onChange={(e) => setQuery(e.target.value)} data-autofocus />,
|
|
2725
2725
|
content: (
|
|
2726
2726
|
<div className="flex flex-col gap-12">
|
|
2727
2727
|
<List
|
|
2728
|
-
aria-label="Models
|
|
2728
|
+
aria-label="Models in KPMR"
|
|
2729
2729
|
density="compact"
|
|
2730
2730
|
items={models
|
|
2731
2731
|
.filter((x) => x.model.includes(query.trim().toLowerCase()))
|
|
@@ -2750,7 +2750,7 @@ function Wizard() {
|
|
|
2750
2750
|
const second = {
|
|
2751
2751
|
review: {
|
|
2752
2752
|
title: `Review ${model}`,
|
|
2753
|
-
description: "Prices come from
|
|
2753
|
+
description: "Prices come from KPMR; you can override them.",
|
|
2754
2754
|
content: m && (
|
|
2755
2755
|
<div className="flex flex-col gap-16">
|
|
2756
2756
|
<ModelLabel provider={m.provider} providerName={providerNames[m.provider]} model={m.model} name={m.name} capabilities={m.capabilities} />
|
package/ai/component-registry.md
CHANGED
package/ai/icons.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Icon vocabulary
|
|
2
2
|
|
|
3
|
-
Version 0.
|
|
3
|
+
Version 0.5.1. Generated from `src/icons/vocabulary.ts`; do not edit. Use the name, never an icon picked by look: `icons.key` always means a key. Hugeicons, Stroke Rounded. Rules: `foundations/icons.md`.
|
|
4
4
|
|
|
5
5
|
## Kaeso objects
|
|
6
6
|
|
package/ai/tokens.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @logicplanes/kaeso-ui tokens
|
|
2
2
|
|
|
3
|
-
Version 0.
|
|
3
|
+
Version 0.5.1. Generated from `@logicplanes/kaeso-tokens`; do not edit. Components use these through role names (`bg-panel`, `text-fg-secondary`, `h-36`, `rounded-pill`); a raw value never appears in a component. How to use them: `foundations/*.md`.
|
|
4
4
|
|
|
5
5
|
## Neutrals
|
|
6
6
|
|
package/dist/blocks/pages.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as e } from "../chunks/app-frame-
|
|
3
|
-
import { r as t } from "../chunks/page-header-
|
|
2
|
+
import { t as e } from "../chunks/app-frame-B1FXVFYx.js";
|
|
3
|
+
import { r as t } from "../chunks/page-header-DUaKLpK3.js";
|
|
4
4
|
import { t as n } from "../chunks/empty-BpiUgGzm.js";
|
|
5
5
|
import { a as r, t as i } from "../chunks/section-CFBYhsUi.js";
|
|
6
6
|
import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
@@ -6,7 +6,7 @@ import { i } from "./context-BELWW79w.js";
|
|
|
6
6
|
import { l as a, s as o } from "./tooltip-Tkm-urbi.js";
|
|
7
7
|
import { a as s } from "./button-DrmFgdIi.js";
|
|
8
8
|
import { t as c } from "./icon-button-6kOn2zrP.js";
|
|
9
|
-
import { l, t as u } from "./sidebar-
|
|
9
|
+
import { l, t as u } from "./sidebar-BO1mnjVH.js";
|
|
10
10
|
import { t as d } from "./when-idle-Cy3pinqO.js";
|
|
11
11
|
import { createContext as f, forwardRef as p, useCallback as m, useContext as h, useEffect as g, useId as _, useLayoutEffect as v, useMemo as y, useRef as b, useState as x } from "react";
|
|
12
12
|
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
@@ -109,7 +109,7 @@ function j({ banner: e, href: t, label: n, actions: r, open: a, onToggle: o, tog
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
process.env.NODE_ENV !== "production" && (j.displayName = "AppFrame.PhoneBar");
|
|
112
|
-
var M = 750, N = 160, P = /* @__PURE__ */ o(() => import("./nav-sheet-
|
|
112
|
+
var M = 750, N = 160, P = /* @__PURE__ */ o(() => import("./nav-sheet-S7tagFJT.js").then((e) => e.n), { base: () => import.meta.url });
|
|
113
113
|
function F({ navOpen: e, setNavOpen: t, toggle: n, ready: r, children: i }) {
|
|
114
114
|
let { peeking: o, setPeeking: s } = l(), [c, u] = x(!1);
|
|
115
115
|
g(() => d(() => u(!0)), []);
|
|
@@ -229,4 +229,4 @@ var H = /* @__PURE__ */ Object.assign(k, {
|
|
|
229
229
|
//#endregion
|
|
230
230
|
export { T as a, E as i, z as n, M as o, R as r, O as s, H as t };
|
|
231
231
|
|
|
232
|
-
//# sourceMappingURL=app-frame-
|
|
232
|
+
//# sourceMappingURL=app-frame-B1FXVFYx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-frame-D8sGcD0v.js","names":["__icon_SidebarLeftIcon","cn","GutterContent","useLazyModule","lazyModule","buttonClasses","IconButton","BrandWordmark","whenIdle","KAESO_APP_FRAME_VARIANTS","KAESO_APP_FRAME_DEFAULT_VARIANTS","Ctx","useAppFrame","useContext","Root","navOpen","setNavOpen","useState","toggle","useRef","sheetReady","mainId","useId","Main","fill","frame","useMemo","sheet","FrameSheet","sidebar","className","SkipLink","PhoneBar","brandHref","brandLabel","phoneActions","o","corner","PortalContainer","t","useUiText","target","main","Bar","banner","actions","toggleRef","SidebarLeftIcon","open","onToggle","PEEK_DELAY","PEEK_LEAVE","navSheet","n","useSidebar","idle","setIdle","dismiss","useCallback","setPeeking","NavSheet","peeking","pending","useLayoutEffect","usePendingDismiss","doc","onKeyDown","onPointerDown","MenuButton","intent","wide","collapsed","shortcut","setCollapsed","openNav","KAESO_APP_FRAME_BODY_VARIANTS","KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS","Body","props","padding","Settings","title","description","InsetContent","AppFrame"],"sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["import {\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 ReactNode,\n type RefObject,\n} from \"react\";\nimport { GutterContent, InsetContent } from \"../../utils/inset.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { buttonClasses } from \"../button/button.js\";\nimport { useSidebar, BrandWordmark } from \"../sidebar/sidebar.js\";\nimport { PortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_APP_FRAME_VARIANTS = {\n fill: {\n screen: { classes: \"h-dvh\" },\n parent: { classes: \"h-full\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_DEFAULT_VARIANTS = { fill: \"screen\" } as const;\n\nconst Ctx = /* @__PURE__ */ createContext<{ openNav: () => void; embedded: boolean; sheetReady: RefObject<boolean> }>({\n openNav: () => undefined,\n embedded: false,\n sheetReady: { current: false },\n});\nexport const useAppFrame = () => useContext(Ctx);\n\nexport interface AppFrameProps {\n sidebar: ReactNode;\n children: ReactNode;\n corner?: ReactNode | undefined;\n fill?: keyof typeof KAESO_APP_FRAME_VARIANTS.fill | undefined;\n brandHref?: string | undefined;\n brandLabel?: string | undefined;\n phoneActions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameProps>(function AppFrame(\n { sidebar, children, corner, fill = \"screen\", brandHref, brandLabel, phoneActions, className },\n ref,\n) {\n const [navOpen, setNavOpen] = useState(false);\n const toggle = useRef<HTMLButtonElement | null>(null);\n const sheetReady = useRef(false);\n const mainId = `k-main-${useId().replace(/[^\\w-]/g, \"\")}`;\n const Main = fill === \"screen\" ? \"main\" : \"div\";\n const frame = useMemo(() => ({ openNav: () => setNavOpen(true), embedded: fill === \"parent\", sheetReady }), [fill]);\n const sheet = (\n <FrameSheet navOpen={navOpen} setNavOpen={setNavOpen} toggle={toggle} ready={sheetReady}>\n {sidebar}\n </FrameSheet>\n );\n return (\n <Ctx.Provider value={frame}>\n <div\n ref={ref}\n data-app-frame={fill}\n className={cn(\n \"relative isolate flex w-full flex-col overflow-hidden bg-chrome text-fg lg:flex-row\",\n KAESO_APP_FRAME_VARIANTS.fill[fill].classes,\n className,\n )}\n >\n <SkipLink target={mainId} />\n <div className=\"hidden h-full lg:flex\">{sidebar}</div>\n <PhoneBar\n banner={fill === \"screen\"}\n href={brandHref}\n label={brandLabel}\n actions={phoneActions}\n open={navOpen}\n onToggle={() => setNavOpen((o) => !o)}\n toggleRef={toggle}\n />\n <Main\n id={mainId}\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-panel outline-none safe-area-panel lg:my-8 lg:mr-8 lg:rounded-panel lg:shadow-panel\"\n >\n {children}\n </Main>\n {corner && <div className={cn(fill === \"parent\" ? \"absolute\" : \"fixed\", \"right-16 bottom-16 z-10 flex items-center gap-8\")}>{corner}</div>}\n {fill === \"parent\" ? <PortalContainer className=\"contents\">{sheet}</PortalContainer> : sheet}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"AppFrame\";\n\nfunction SkipLink({ target }: { target: string }) {\n const t = useUiText();\n return (\n <a\n href={`#${target}`}\n onClick={(e) => {\n const main = document.getElementById(target);\n if (!main) return;\n e.preventDefault();\n main.setAttribute(\"tabindex\", \"-1\");\n main.addEventListener(\"blur\", () => main.removeAttribute(\"tabindex\"), { once: true });\n main.focus();\n }}\n className={cn(buttonClasses({ size: \"sm\" }), \"absolute top-16 left-16 z-50 not-focus:sr-only\")}\n >\n {t(\"appFrame.skipToContent\", \"Skip to content\")}\n </a>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SkipLink.displayName = \"AppFrame.SkipLink\";\n\nfunction PhoneBar({\n banner,\n href,\n label,\n actions,\n open,\n onToggle,\n toggleRef,\n}: {\n banner: boolean;\n href: string | undefined;\n label: string | undefined;\n actions: ReactNode;\n open: boolean;\n onToggle: () => void;\n toggleRef: RefObject<HTMLButtonElement | null>;\n}) {\n const Bar = banner ? \"header\" : \"div\";\n const t = useUiText();\n return (\n <Bar data-phone-bar=\"\" className=\"shrink-0 bg-panel safe-area-bar lg:hidden\">\n <div className=\"mt-8 flex h-52 items-center justify-between px-24\">\n <BrandWordmark href={href} label={label} />\n <span className=\"flex items-center\">\n {actions}\n <IconButton\n ref={toggleRef}\n icon={__icon_SidebarLeftIcon}\n aria-label={t(\"appFrame.openNavigation\", \"Open navigation\")}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n tooltip={false}\n onClick={onToggle}\n />\n </span>\n </div>\n </Bar>\n );\n}\nif (process.env.NODE_ENV !== \"production\") PhoneBar.displayName = \"AppFrame.PhoneBar\";\n\nexport const PEEK_DELAY = 750;\nconst PEEK_LEAVE = 160;\n\nconst navSheet = /* @__PURE__ */ lazyModule(() => import(\"./nav-sheet.js\"), { base: () => import.meta.url });\n\nfunction FrameSheet({\n navOpen,\n setNavOpen,\n toggle,\n ready,\n children,\n}: {\n navOpen: boolean;\n setNavOpen: (o: boolean) => void;\n toggle: RefObject<HTMLElement | null>;\n ready: RefObject<boolean>;\n children: ReactNode;\n}) {\n const { peeking, setPeeking } = useSidebar();\n const [idle, setIdle] = useState(false);\n useEffect(() => whenIdle(() => setIdle(true)), []);\n const dismiss = useCallback(() => {\n setNavOpen(false);\n setPeeking(false);\n }, [setNavOpen, setPeeking]);\n const NavSheet = useLazyModule(navSheet, idle || navOpen || peeking, () => {\n setIdle(false);\n dismiss();\n })?.NavSheet;\n const pending = (navOpen || peeking) && !NavSheet;\n useLayoutEffect(() => {\n ready.current = !!NavSheet;\n });\n usePendingDismiss(pending, toggle, dismiss);\n if (!NavSheet) return null;\n return (\n <NavSheet\n open={navOpen || peeking}\n peek={peeking && !navOpen}\n {...(navOpen ? { returnFocus: toggle } : {})}\n onOpenChange={(o) => {\n if (!o) dismiss();\n }}\n >\n {children}\n </NavSheet>\n );\n}\n\nfunction usePendingDismiss(pending: boolean, toggle: RefObject<HTMLElement | null>, dismiss: () => void) {\n useEffect(() => {\n if (!pending) return;\n const doc = toggle.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n dismiss();\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!toggle.current?.contains(e.target as Node)) dismiss();\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, toggle, dismiss]);\n}\n\nconst MenuButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function AppFrameMenuButton({ className }, ref) {\n const { openNav, sheetReady } = useAppFrame();\n const { collapsed, setCollapsed, peeking, setPeeking, shortcut } = useSidebar();\n const intent = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(intent.current), []);\n const t = useUiText();\n const wide = () => typeof window !== \"undefined\" && window.matchMedia(\"(min-width: 1024px)\").matches;\n return (\n <IconButton\n ref={ref}\n onPointerEnter={() => {\n clearTimeout(intent.current);\n if (collapsed && wide() && !peeking) intent.current = setTimeout(() => setPeeking(true), PEEK_DELAY);\n }}\n onPointerLeave={(e) => {\n clearTimeout(intent.current);\n if (!sheetReady.current || !peeking) return setPeeking(false);\n const doc = e.currentTarget.ownerDocument;\n intent.current = setTimeout(() => {\n if (!doc.querySelector(\"[data-nav-sheet]\")?.matches(\":hover\")) setPeeking(false);\n }, PEEK_LEAVE);\n }}\n icon={__icon_SidebarLeftIcon}\n data-sidebar-expand=\"\"\n aria-label={collapsed ? t(\"appFrame.expandSidebar\", \"Expand sidebar\") : t(\"appFrame.openNavigation\", \"Open navigation\")}\n shortcut={collapsed && shortcut ? [\"[\"] : undefined}\n onClick={() => {\n clearTimeout(intent.current);\n if (collapsed && wide()) setCollapsed(false);\n else openNav();\n }}\n className={cn(\"hidden\", collapsed && \"lg:inline-flex\", className)}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") MenuButton.displayName = \"AppFrame.MenuButton\";\n\nexport const KAESO_APP_FRAME_BODY_VARIANTS = {\n padding: {\n none: { classes: \"\" },\n list: { classes: \"pt-8 pb-24\" },\n page: { classes: \"px-24 pt-16 pb-48\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS = { padding: \"none\" } as const;\n\nexport interface AppFrameBodyProps extends HTMLAttributes<HTMLDivElement> {\n padding?: keyof typeof KAESO_APP_FRAME_BODY_VARIANTS.padding | undefined;\n}\n\nconst Body = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameBodyProps>(function AppFrameBody({ className, padding = \"none\", children, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-quiet\", KAESO_APP_FRAME_BODY_VARIANTS.padding[padding].classes, className)}\n {...props}\n >\n <GutterContent padded={padding === \"page\"}>{children}</GutterContent>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Body.displayName = \"AppFrame.Body\";\n\nexport interface SettingsPageProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: ReactNode;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n}\n\nconst Settings = /* @__PURE__ */ forwardRef<HTMLDivElement, SettingsPageProps>(function AppFrameSettings({ title, description, actions, className, children, ...props }, ref) {\n return (\n <Body ref={ref} className=\"relative\">\n <MenuButton className=\"absolute top-10 left-24 z-10\" />\n <div className={cn(\"w-full px-24 pt-16 pb-96 lg:mx-auto lg:max-w-settings lg:pt-64\", className)} {...props}>\n <header className=\"flex flex-wrap items-start justify-between gap-x-16 gap-y-8\">\n <h1 className=\"min-w-0 text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {actions && <div className=\"order-last flex h-34 shrink-0 items-center gap-8 sm:order-none sm:ml-auto\">{actions}</div>}\n {description && <p className=\"basis-full text-body-lg font-regular text-fg-secondary\">{description}</p>}\n </header>\n <div className=\"mt-8\">\n <InsetContent>\n <GutterContent>{children}</GutterContent>\n </InsetContent>\n </div>\n </div>\n </Body>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Settings.displayName = \"AppFrame.Settings\";\n\nexport const AppFrame = /* @__PURE__ */ Object.assign(Root, { MenuButton, Body, Settings });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-frame-B1FXVFYx.js","names":["__icon_SidebarLeftIcon","cn","GutterContent","useLazyModule","lazyModule","buttonClasses","IconButton","BrandWordmark","whenIdle","KAESO_APP_FRAME_VARIANTS","KAESO_APP_FRAME_DEFAULT_VARIANTS","Ctx","useAppFrame","useContext","Root","navOpen","setNavOpen","useState","toggle","useRef","sheetReady","mainId","useId","Main","fill","frame","useMemo","sheet","FrameSheet","sidebar","className","SkipLink","PhoneBar","brandHref","brandLabel","phoneActions","o","corner","PortalContainer","t","useUiText","target","main","Bar","banner","actions","toggleRef","SidebarLeftIcon","open","onToggle","PEEK_DELAY","PEEK_LEAVE","navSheet","n","useSidebar","idle","setIdle","dismiss","useCallback","setPeeking","NavSheet","peeking","pending","useLayoutEffect","usePendingDismiss","doc","onKeyDown","onPointerDown","MenuButton","intent","wide","collapsed","shortcut","setCollapsed","openNav","KAESO_APP_FRAME_BODY_VARIANTS","KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS","Body","props","padding","Settings","title","description","InsetContent","AppFrame"],"sources":["../../src/components/app-frame/app-frame.tsx"],"sourcesContent":["import {\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 ReactNode,\n type RefObject,\n} from \"react\";\nimport { GutterContent, InsetContent } from \"../../utils/inset.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { SidebarLeftIcon as __icon_SidebarLeftIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { buttonClasses } from \"../button/button.js\";\nimport { useSidebar, BrandWordmark } from \"../sidebar/sidebar.js\";\nimport { PortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModule } from \"../../utils/lazy-module.js\";\nimport { whenIdle } from \"../../utils/when-idle.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_APP_FRAME_VARIANTS = {\n fill: {\n screen: { classes: \"h-dvh\" },\n parent: { classes: \"h-full\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_DEFAULT_VARIANTS = { fill: \"screen\" } as const;\n\nconst Ctx = /* @__PURE__ */ createContext<{ openNav: () => void; embedded: boolean; sheetReady: RefObject<boolean> }>({\n openNav: () => undefined,\n embedded: false,\n sheetReady: { current: false },\n});\nexport const useAppFrame = () => useContext(Ctx);\n\nexport interface AppFrameProps {\n sidebar: ReactNode;\n children: ReactNode;\n corner?: ReactNode | undefined;\n fill?: keyof typeof KAESO_APP_FRAME_VARIANTS.fill | undefined;\n brandHref?: string | undefined;\n brandLabel?: string | undefined;\n phoneActions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameProps>(function AppFrame(\n { sidebar, children, corner, fill = \"screen\", brandHref, brandLabel, phoneActions, className },\n ref,\n) {\n const [navOpen, setNavOpen] = useState(false);\n const toggle = useRef<HTMLButtonElement | null>(null);\n const sheetReady = useRef(false);\n const mainId = `k-main-${useId().replace(/[^\\w-]/g, \"\")}`;\n const Main = fill === \"screen\" ? \"main\" : \"div\";\n const frame = useMemo(() => ({ openNav: () => setNavOpen(true), embedded: fill === \"parent\", sheetReady }), [fill]);\n const sheet = (\n <FrameSheet navOpen={navOpen} setNavOpen={setNavOpen} toggle={toggle} ready={sheetReady}>\n {sidebar}\n </FrameSheet>\n );\n return (\n <Ctx.Provider value={frame}>\n <div\n ref={ref}\n data-app-frame={fill}\n className={cn(\n \"relative isolate flex w-full flex-col overflow-hidden bg-chrome text-fg lg:flex-row\",\n KAESO_APP_FRAME_VARIANTS.fill[fill].classes,\n className,\n )}\n >\n <SkipLink target={mainId} />\n <div className=\"hidden h-full lg:flex\">{sidebar}</div>\n <PhoneBar\n banner={fill === \"screen\"}\n href={brandHref}\n label={brandLabel}\n actions={phoneActions}\n open={navOpen}\n onToggle={() => setNavOpen((o) => !o)}\n toggleRef={toggle}\n />\n <Main\n id={mainId}\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-panel outline-none safe-area-panel lg:my-8 lg:mr-8 lg:rounded-panel lg:shadow-panel\"\n >\n {children}\n </Main>\n {corner && <div className={cn(fill === \"parent\" ? \"absolute\" : \"fixed\", \"right-16 bottom-16 z-10 flex items-center gap-8\")}>{corner}</div>}\n {fill === \"parent\" ? <PortalContainer className=\"contents\">{sheet}</PortalContainer> : sheet}\n </div>\n </Ctx.Provider>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"AppFrame\";\n\nfunction SkipLink({ target }: { target: string }) {\n const t = useUiText();\n return (\n <a\n href={`#${target}`}\n onClick={(e) => {\n const main = document.getElementById(target);\n if (!main) return;\n e.preventDefault();\n main.setAttribute(\"tabindex\", \"-1\");\n main.addEventListener(\"blur\", () => main.removeAttribute(\"tabindex\"), { once: true });\n main.focus();\n }}\n className={cn(buttonClasses({ size: \"sm\" }), \"absolute top-16 left-16 z-50 not-focus:sr-only\")}\n >\n {t(\"appFrame.skipToContent\", \"Skip to content\")}\n </a>\n );\n}\nif (process.env.NODE_ENV !== \"production\") SkipLink.displayName = \"AppFrame.SkipLink\";\n\nfunction PhoneBar({\n banner,\n href,\n label,\n actions,\n open,\n onToggle,\n toggleRef,\n}: {\n banner: boolean;\n href: string | undefined;\n label: string | undefined;\n actions: ReactNode;\n open: boolean;\n onToggle: () => void;\n toggleRef: RefObject<HTMLButtonElement | null>;\n}) {\n const Bar = banner ? \"header\" : \"div\";\n const t = useUiText();\n return (\n <Bar data-phone-bar=\"\" className=\"shrink-0 bg-panel safe-area-bar lg:hidden\">\n <div className=\"mt-8 flex h-52 items-center justify-between px-24\">\n <BrandWordmark href={href} label={label} />\n <span className=\"flex items-center\">\n {actions}\n <IconButton\n ref={toggleRef}\n icon={__icon_SidebarLeftIcon}\n aria-label={t(\"appFrame.openNavigation\", \"Open navigation\")}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n tooltip={false}\n onClick={onToggle}\n />\n </span>\n </div>\n </Bar>\n );\n}\nif (process.env.NODE_ENV !== \"production\") PhoneBar.displayName = \"AppFrame.PhoneBar\";\n\nexport const PEEK_DELAY = 750;\nconst PEEK_LEAVE = 160;\n\nconst navSheet = /* @__PURE__ */ lazyModule(() => import(\"./nav-sheet.js\"), { base: () => import.meta.url });\n\nfunction FrameSheet({\n navOpen,\n setNavOpen,\n toggle,\n ready,\n children,\n}: {\n navOpen: boolean;\n setNavOpen: (o: boolean) => void;\n toggle: RefObject<HTMLElement | null>;\n ready: RefObject<boolean>;\n children: ReactNode;\n}) {\n const { peeking, setPeeking } = useSidebar();\n const [idle, setIdle] = useState(false);\n useEffect(() => whenIdle(() => setIdle(true)), []);\n const dismiss = useCallback(() => {\n setNavOpen(false);\n setPeeking(false);\n }, [setNavOpen, setPeeking]);\n const NavSheet = useLazyModule(navSheet, idle || navOpen || peeking, () => {\n setIdle(false);\n dismiss();\n })?.NavSheet;\n const pending = (navOpen || peeking) && !NavSheet;\n useLayoutEffect(() => {\n ready.current = !!NavSheet;\n });\n usePendingDismiss(pending, toggle, dismiss);\n if (!NavSheet) return null;\n return (\n <NavSheet\n open={navOpen || peeking}\n peek={peeking && !navOpen}\n {...(navOpen ? { returnFocus: toggle } : {})}\n onOpenChange={(o) => {\n if (!o) dismiss();\n }}\n >\n {children}\n </NavSheet>\n );\n}\n\nfunction usePendingDismiss(pending: boolean, toggle: RefObject<HTMLElement | null>, dismiss: () => void) {\n useEffect(() => {\n if (!pending) return;\n const doc = toggle.current?.ownerDocument ?? document;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== \"Escape\") return;\n e.stopPropagation();\n dismiss();\n };\n const onPointerDown = (e: PointerEvent) => {\n if (!toggle.current?.contains(e.target as Node)) dismiss();\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, toggle, dismiss]);\n}\n\nconst MenuButton = /* @__PURE__ */ forwardRef<HTMLButtonElement, { className?: string | undefined }>(function AppFrameMenuButton({ className }, ref) {\n const { openNav, sheetReady } = useAppFrame();\n const { collapsed, setCollapsed, peeking, setPeeking, shortcut } = useSidebar();\n const intent = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(intent.current), []);\n const t = useUiText();\n const wide = () => typeof window !== \"undefined\" && window.matchMedia(\"(min-width: 1024px)\").matches;\n return (\n <IconButton\n ref={ref}\n onPointerEnter={() => {\n clearTimeout(intent.current);\n if (collapsed && wide() && !peeking) intent.current = setTimeout(() => setPeeking(true), PEEK_DELAY);\n }}\n onPointerLeave={(e) => {\n clearTimeout(intent.current);\n if (!sheetReady.current || !peeking) return setPeeking(false);\n const doc = e.currentTarget.ownerDocument;\n intent.current = setTimeout(() => {\n if (!doc.querySelector(\"[data-nav-sheet]\")?.matches(\":hover\")) setPeeking(false);\n }, PEEK_LEAVE);\n }}\n icon={__icon_SidebarLeftIcon}\n data-sidebar-expand=\"\"\n aria-label={collapsed ? t(\"appFrame.expandSidebar\", \"Expand sidebar\") : t(\"appFrame.openNavigation\", \"Open navigation\")}\n shortcut={collapsed && shortcut ? [\"[\"] : undefined}\n onClick={() => {\n clearTimeout(intent.current);\n if (collapsed && wide()) setCollapsed(false);\n else openNav();\n }}\n className={cn(\"hidden\", collapsed && \"lg:inline-flex\", className)}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") MenuButton.displayName = \"AppFrame.MenuButton\";\n\nexport const KAESO_APP_FRAME_BODY_VARIANTS = {\n padding: {\n none: { classes: \"\" },\n list: { classes: \"pt-8 pb-24\" },\n page: { classes: \"px-24 pt-16 pb-48\" },\n },\n} as const;\nexport const KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS = { padding: \"none\" } as const;\n\nexport interface AppFrameBodyProps extends HTMLAttributes<HTMLDivElement> {\n padding?: keyof typeof KAESO_APP_FRAME_BODY_VARIANTS.padding | undefined;\n}\n\nconst Body = /* @__PURE__ */ forwardRef<HTMLDivElement, AppFrameBodyProps>(function AppFrameBody({ className, padding = \"none\", children, ...props }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\"min-h-0 flex-1 overflow-y-auto overscroll-contain scrollbar-quiet\", KAESO_APP_FRAME_BODY_VARIANTS.padding[padding].classes, className)}\n {...props}\n >\n <GutterContent padded={padding === \"page\"}>{children}</GutterContent>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Body.displayName = \"AppFrame.Body\";\n\nexport interface SettingsPageProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title: ReactNode;\n description?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n}\n\nconst Settings = /* @__PURE__ */ forwardRef<HTMLDivElement, SettingsPageProps>(function AppFrameSettings({ title, description, actions, className, children, ...props }, ref) {\n return (\n <Body ref={ref} className=\"relative\">\n <MenuButton className=\"absolute top-10 left-24 z-10\" />\n <div className={cn(\"w-full px-24 pt-16 pb-96 lg:mx-auto lg:max-w-settings lg:pt-64\", className)} {...props}>\n <header className=\"flex flex-wrap items-start justify-between gap-x-16 gap-y-8\">\n <h1 className=\"min-w-0 text-title-lg font-semibold text-fg text-balance\">{title}</h1>\n {actions && <div className=\"order-last flex h-34 shrink-0 items-center gap-8 sm:order-none sm:ml-auto\">{actions}</div>}\n {description && <p className=\"basis-full text-body-lg font-regular text-fg-secondary\">{description}</p>}\n </header>\n <div className=\"mt-8\">\n <InsetContent>\n <GutterContent>{children}</GutterContent>\n </InsetContent>\n </div>\n </div>\n </Body>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Settings.displayName = \"AppFrame.Settings\";\n\nexport const AppFrame = /* @__PURE__ */ Object.assign(Root, { MenuButton, Body, Settings });\n"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { ArrowRight01Icon as r } from "@hugeicons/core-free-icons";
|
|
|
7
7
|
var i = "group/dt relative flex w-full cursor-pointer items-center gap-8 rounded-pill px-12 text-left transition-control focus-ring-inset", a = /* @__PURE__ */ t(function(t, i) {
|
|
8
8
|
return /* @__PURE__ */ n("span", {
|
|
9
9
|
ref: i,
|
|
10
|
-
className: "flex shrink-0 text-fg-tertiary transition-control group-hover/dt:text-fg-secondary",
|
|
10
|
+
className: "-mx-6 flex shrink-0 text-fg-tertiary transition-control group-hover/dt:text-fg-secondary",
|
|
11
11
|
children: /* @__PURE__ */ n(e, {
|
|
12
12
|
icon: r,
|
|
13
13
|
size: "sm",
|
|
@@ -19,4 +19,4 @@ process.env.NODE_ENV !== "production" && (a.displayName = "DisclosureChevron");
|
|
|
19
19
|
//#endregion
|
|
20
20
|
export { a as n, i as t };
|
|
21
21
|
|
|
22
|
-
//# sourceMappingURL=disclosure-
|
|
22
|
+
//# sourceMappingURL=disclosure-3CIz2WZa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disclosure-3CIz2WZa.js","names":["__icon_ArrowRight01Icon","Icon","DISCLOSURE_TRIGGER","DisclosureChevron","ArrowRight01Icon"],"sources":["../../src/components/collapsible/disclosure.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\n\nexport const DISCLOSURE_TRIGGER =\n \"group/dt relative flex w-full cursor-pointer items-center gap-8 rounded-pill px-12 text-left transition-control focus-ring-inset\";\n\nexport const DisclosureChevron = /* @__PURE__ */ forwardRef<HTMLSpanElement>(function DisclosureChevron(_props, ref) {\n return (\n // The glyph sits 6px inside its 16px box: pulling the box out by 6px puts the glyph itself 12px from the row's end, as the title is from its start.\n <span ref={ref} className=\"-mx-6 flex shrink-0 text-fg-tertiary transition-control group-hover/dt:text-fg-secondary\">\n <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"transition-transform duration-200 ease-overlay group-data-panel-open/dt:rotate-90\" />\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisclosureChevron.displayName = \"DisclosureChevron\";\n"],"mappings":";;;;;;AAIA,IAAaE,IACX,oIAEWC,IAAoC,kBAA4B,SAA2B,GAAQ,GAAK;CACnH,OAEE,kBAAC,QAAD;EAAW;EAAK,WAAU;EACxB,UAAA,kBAACF,GAAD;GAAM,MAAMD;GAAyB,MAAK;GAAK,WAAU;EAAqF,CAAA;CAC1I,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAkB,cAAc"}
|
|
@@ -4,7 +4,7 @@ import { t } from "./cn-BjnOAUrA.js";
|
|
|
4
4
|
import { r as n } from "./portal-context-CTatR2Z8.js";
|
|
5
5
|
import { i as r } from "./context-BELWW79w.js";
|
|
6
6
|
import { t as i } from "./merge-refs-BN1FyQt9.js";
|
|
7
|
-
import { c as a, s as o } from "./sidebar-
|
|
7
|
+
import { c as a, s as o } from "./sidebar-BO1mnjVH.js";
|
|
8
8
|
import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
|
|
9
9
|
import { jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
10
10
|
import { Dialog as m } from "@base-ui/react/dialog";
|
|
@@ -64,4 +64,4 @@ process.env.NODE_ENV !== "production" && (_.displayName = "NavSheet");
|
|
|
64
64
|
//#endregion
|
|
65
65
|
export { h as n, _ as t };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=nav-sheet-
|
|
67
|
+
//# sourceMappingURL=nav-sheet-S7tagFJT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav-sheet-
|
|
1
|
+
{"version":3,"file":"nav-sheet-S7tagFJT.js","names":["__exportAll","usePortalContainer","useUiText","mergeRefs","SidebarSheetContext","SidebarFloatingContext","nav_sheet_exports","NavSheet","PEEK_LEAVE","leave","useRef","t","sheet","useMemo","onOpenChange","peek","open","wide","onChange","popup","contained","setContained","useState","refs","ref","el","place","Dialog","o","cn","returnFocus"],"sources":["../../src/components/app-frame/nav-sheet.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode, type RefObject } from \"react\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { SidebarFloatingContext, SidebarSheetContext } from \"../sidebar/sidebar.js\";\nimport { mergeRefs } from \"../../utils/merge-refs.js\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst PEEK_LEAVE = 160;\n\nexport interface NavSheetProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n peek?: boolean | undefined;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n children: ReactNode;\n}\n\nexport const NavSheet = /* @__PURE__ */ forwardRef<HTMLDivElement, NavSheetProps>(function NavSheet({ open, onOpenChange, peek = false, returnFocus, children }, ref) {\n const leave = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const t = useUiText();\n useEffect(() => () => clearTimeout(leave.current), []);\n const sheet = useMemo(() => ({ close: () => onOpenChange(false), peek }), [onOpenChange, peek]);\n useEffect(() => {\n if (!open || peek || typeof window === \"undefined\") return;\n const wide = window.matchMedia(\"(min-width: 1024px)\");\n const onChange = () => wide.matches && onOpenChange(false);\n onChange();\n wide.addEventListener(\"change\", onChange);\n return () => wide.removeEventListener(\"change\", onChange);\n }, [open, peek, onOpenChange]);\n const popup = useRef<HTMLDivElement | null>(null);\n const [contained, setContained] = useState(false);\n const refs = useMemo(\n () =>\n mergeRefs(popup, ref, (el: HTMLDivElement | null) => {\n if (el) setContained(!!el.closest('[data-app-frame=\"parent\"]'));\n }),\n [ref],\n );\n const place = contained ? \"absolute\" : \"fixed\";\n return (\n <Dialog.Root open={open} onOpenChange={(o: boolean) => onOpenChange(o)} modal={!peek}>\n <Dialog.Portal container={usePortalContainer()}>\n {!peek && <Dialog.Backdrop className={cn(place, \"inset-0 z-40 bg-overlay opacity-60 backdrop-motion\")} />}\n <Dialog.Popup\n ref={refs}\n aria-label={t(\"appFrame.navigation\", \"Navigation\")}\n data-side=\"left\"\n data-nav-sheet=\"\"\n initialFocus={peek ? false : () => popup.current?.querySelector<HTMLElement>('[aria-current=\"page\"]') ?? true}\n {...(returnFocus ? { finalFocus: returnFocus } : {})}\n className={cn(\n place,\n \"top-0 bottom-0 left-0 z-40 flex overflow-hidden rounded-r-sheet bg-chrome shadow-dialog outline-none safe-area-sheet sheet-motion\",\n )}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"a[href]\")) onOpenChange(false);\n }}\n onPointerEnter={() => clearTimeout(leave.current)}\n onPointerLeave={() => {\n if (!peek) return;\n leave.current = setTimeout(() => onOpenChange(false), PEEK_LEAVE);\n }}\n >\n <SidebarFloatingContext.Provider value>\n <SidebarSheetContext.Provider value={sheet}>{children}</SidebarSheetContext.Provider>\n </SidebarFloatingContext.Provider>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") NavSheet.displayName = \"NavSheet\";\n"],"mappings":";;;;;;;;;;;A,kDAQMQ,IAAa,KAUND,IAA2B,kBAA0C,SAAkB,EAAE,SAAM,iBAAc,UAAO,IAAO,gBAAa,eAAY,GAAK;CACpK,IAAME,IAAQC,EAAkD,KAAA,CAAS,GACnEC,IAAIT,EAAU;CACpB,cAAsB,aAAaO,EAAM,OAAO,GAAG,CAAC,CAAC;CACrD,IAAMG,IAAQC,SAAe;EAAE,aAAaC,EAAa,EAAK;EAAG;CAAK,IAAI,CAACA,GAAcC,CAAI,CAAC;CAC9F,QAAgB;EACd,IAAI,CAACC,KAAQD,KAAQ,OAAO,SAAW,KAAa;EACpD,IAAME,IAAO,OAAO,WAAW,qBAAqB,GAC9CC,UAAiBD,EAAK,WAAWH,EAAa,EAAK;EAGzD,OAFAI,EAAS,GACTD,EAAK,iBAAiB,UAAUC,CAAQ,SAC3BD,EAAK,oBAAoB,UAAUC,CAAQ;CAC1D,GAAG;EAACF;EAAMD;EAAMD;CAAY,CAAC;CAC7B,IAAMK,IAAQT,EAA8B,IAAI,GAC1C,CAACU,GAAWC,KAAgBC,EAAS,EAAK,GAC1CC,IAAOV,QAETV,EAAUgB,GAAOK,IAAM,MAA8B;EACnD,AAAIC,KAAIJ,EAAa,CAAC,CAACI,EAAG,QAAQ,6BAA2B,CAAC;CAChE,CAAC,GACH,CAACD,CAAG,CACN,GACME,IAAQN,IAAY,aAAa;CACvC,OACE,kBAACO,EAAO,MAAR;EAAmB;EAAM,eAAe,MAAeb,EAAac,CAAC;EAAG,OAAO,CAACb;EAC9E,UAAA,kBAACY,EAAO,QAAR;GAAe,WAAW1B,EAAmB;GAA7C,UAAA,CACG,CAACc,KAAQ,kBAACY,EAAO,UAAR,EAAiB,WAAWE,EAAGH,GAAO,oDAAoD,EAAI,CAAA,GACxG,kBAACC,EAAO,OAAR;IACE,KAAKJ;IACL,cAAYZ,EAAE,uBAAuB,YAAY;IACjD,aAAU;IACV,kBAAe;IACf,cAAcI,IAAO,WAAcI,EAAM,SAAS,cAA2B,yBAAuB,KAAK;IACzG,GAAKW,IAAc,EAAE,YAAYA,EAAY,IAAI,CAAC;IAClD,WAAWD,EACTH,GACA,mIACF;IACA,UAAU,MAAM;KACd,AAAK,EAAE,OAAuB,QAAQ,SAAS,KAAGZ,EAAa,EAAK;IACtE;IACA,sBAAsB,aAAaL,EAAM,OAAO;IAChD,sBAAsB;KACpB,AAAKM,MACL,EAAM,UAAU,iBAAiBD,EAAa,EAAK,GAAGN,CAAU;IAClE;IAEA,UAAA,kBAACH,EAAuB,UAAxB;KAAiC,OAAA;KAC/B,UAAA,kBAACD,EAAoB,UAArB;MAA8B,OAAOQ;MAAQ;KAAuC,CAAA;IACrD,CAAA;GACrB,CAAA,CACD;;CACJ,CAAA;AAEjB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { t as e } from "./cn-BjnOAUrA.js";
|
|
3
3
|
import { t } from "./icon-CBzOwqrX.js";
|
|
4
4
|
import { r as n } from "./text-DkKdTVUf.js";
|
|
5
|
-
import { s as r } from "./app-frame-
|
|
5
|
+
import { s as r } from "./app-frame-B1FXVFYx.js";
|
|
6
6
|
import { forwardRef as i } from "react";
|
|
7
7
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
8
8
|
//#region src/components/page-header/page-header.tsx
|
|
@@ -42,4 +42,4 @@ process.env.NODE_ENV !== "production" && (l.displayName = "PageHeader");
|
|
|
42
42
|
//#endregion
|
|
43
43
|
export { s as n, l as r, c as t };
|
|
44
44
|
|
|
45
|
-
//# sourceMappingURL=page-header-
|
|
45
|
+
//# sourceMappingURL=page-header-DUaKLpK3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-header-
|
|
1
|
+
{"version":3,"file":"page-header-DUaKLpK3.js","names":["cn","Text","useAppFrame","KAESO_PAGE_HEADER_VARIANTS","KAESO_PAGE_HEADER_DEFAULT_VARIANTS","PageHeader","Heading","className","start","title","icon","Icon","tabs","actions"],"sources":["../../src/components/page-header/page-header.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { useAppFrame } from \"../app-frame/app-frame.js\";\nimport { Text } from \"../text/text.js\";\n\nexport const KAESO_PAGE_HEADER_VARIANTS = {\n size: {\n md: {\n classes: \"min-h-52 flex-wrap gap-x-12 gap-y-8 px-24 py-10 sm:h-52 sm:flex-nowrap sm:py-0\",\n },\n },\n} as const;\nexport const KAESO_PAGE_HEADER_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface PageHeaderProps {\n title?: ReactNode | undefined;\n icon?: IconData | undefined;\n tabs?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n start?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const PageHeader = /* @__PURE__ */ forwardRef<HTMLElement, PageHeaderProps>(function PageHeader({ title, icon, tabs, actions, start, className }, ref) {\n const Heading = useAppFrame().embedded ? \"h2\" : \"h1\";\n return (\n <header ref={ref} className={cn(\"flex shrink-0 items-center\", KAESO_PAGE_HEADER_VARIANTS.size.md.classes, className)}>\n {start}\n {title && (\n <Heading className=\"flex min-w-0 flex-1 shrink-4 items-center gap-8 text-body-lg font-semibold text-fg sm:flex-initial\">\n {icon && <Icon icon={icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <Text truncate variant=\"body-lg\" weight=\"semibold\" tone=\"inherit\">\n {title}\n </Text>\n </Heading>\n )}\n {tabs && <div className=\"order-last min-w-0 basis-full sm:order-none sm:ml-8 sm:basis-auto\">{tabs}</div>}\n <div className=\"ml-auto flex shrink-0 items-center gap-8\">{actions}</div>\n </header>\n );\n});\nif (process.env.NODE_ENV !== \"production\") PageHeader.displayName = \"PageHeader\";\n"],"mappings":";;;;;;;;AAMA,IAAaG,IAA6B,EACxC,MAAM,EACJ,IAAI,EACF,SAAS,iFACX,EACF,EACF,GACaC,IAAqC,EAAE,MAAM,KAAK,GAWlDC,IAA6B,kBAAyC,SAAoB,EAAE,UAAO,SAAM,SAAM,YAAS,UAAO,gBAAa,GAAK;CAC5J,IAAMC,IAAUJ,EAAY,CAAC,CAAC,WAAW,OAAO;CAChD,OACE,kBAAC,UAAD;EAAa;EAAK,WAAWF,EAAG,8BAA8BG,EAA2B,KAAK,GAAG,SAASI,CAAS;EAAnH,UAAA;GACGC;GACAC,KACC,kBAACH,GAAD;IAAS,WAAU;IAAnB,UAAA,CACGI,KAAQ,kBAACC,GAAD;KAAY;KAAM,MAAK;KAAK,WAAU;IAA8B,CAAA,GAC7E,kBAACV,GAAD;KAAM,UAAA;KAAS,SAAQ;KAAU,QAAO;KAAW,MAAK;KACrD,UAAAQ;IACG,CAAA,CACC;;GAEVG,KAAQ,kBAAC,OAAD;IAAK,WAAU;IAAqE,UAAAA;GAAU,CAAA;GACvG,kBAAC,OAAD;IAAK,WAAU;IAA4C,UAAAC;GAAa,CAAA;EAClE;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc"}
|
|
@@ -8,7 +8,7 @@ import { t as d } from "./merge-refs-BN1FyQt9.js";
|
|
|
8
8
|
import { t as f } from "./observe-resize-DhxhmoyB.js";
|
|
9
9
|
import { t as p } from "./nav-wordmark-J4pB_vjr.js";
|
|
10
10
|
import { r as m } from "./skeleton-D-qk3mes.js";
|
|
11
|
-
import { n as h, t as g } from "./disclosure-
|
|
11
|
+
import { n as h, t as g } from "./disclosure-3CIz2WZa.js";
|
|
12
12
|
import { t as _ } from "./when-idle-Cy3pinqO.js";
|
|
13
13
|
import { createContext as v, forwardRef as y, useCallback as b, useContext as x, useEffect as S, useId as C, useLayoutEffect as w, useMemo as T, useRef as E, useState as D, useSyncExternalStore as O } from "react";
|
|
14
14
|
import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
@@ -661,4 +661,4 @@ var Se = /* @__PURE__ */ Object.assign(K, {
|
|
|
661
661
|
//#endregion
|
|
662
662
|
export { le as a, U as c, ue as i, V as l, oe as n, Se as o, z as r, H as s, Y as t };
|
|
663
663
|
|
|
664
|
-
//# sourceMappingURL=sidebar-
|
|
664
|
+
//# sourceMappingURL=sidebar-BO1mnjVH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-K30Ae8N5.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":";;;;;;;;;;;;;;;;;AAEA,IAAIwB,GACAC;AAEJ,SAASC,GAAK,GAA4B;CACxC,IAAI;EACF,IAAMC,IAAM,aAAa,QAAQC,CAAG;EACpC,IAAID,MAAQ,MAAM,OAAOA;CAC3B,QAAQ,CAAC;CACT,OAAOF,IAAQ,IAAIG,CAAG,KAAK;AAC7B;AAEA,SAASC,GAAU,GAAa,GAAkC;CAChE,sBAAc,IAAI,IAAI;CACtB,IAAIC,IAAMN,EAAU,IAAII,CAAG;CAE3B,AADKE,KAAKN,EAAU,IAAII,GAAM,oBAAM,IAAI,IAAI,CAAE,GAC9CE,EAAI,IAAIC,CAAQ;CAChB,IAAMC,KAAa,MAAoB;EACrC,AAAIC,EAAE,QAAQL,KAAKG,EAAS;CAC9B;CAEA,OADA,OAAO,iBAAiB,WAAWC,CAAS,SAC/B;EAEX,AADAF,EAAI,OAAOC,CAAQ,GACnB,OAAO,oBAAoB,WAAWC,CAAS;CACjD;AACF;AAEA,IAAME,iBAA6B,KAAA,GAC7BC,WAAgB;AAEtB,SAAgBC,EAAkB,GAAyB,GAAiC;CAC1F,IAAMC,IAAIT,IAAM,SAASA,MAAQ,KAAA,GAC3B,CAACU,GAAKC,KAAUC,EAAYC,CAAO,GACnCC,IAAMC,GAAa,MAA0BN,IAAIR,GAAUQ,GAAGN,CAAQ,UAAU,KAAA,GAAY,CAACM,CAAC,CAAC,GAC/FO,IAAWD,QAAmBN,IAAIX,GAAKW,CAAC,IAAI,MAAO,CAACA,CAAC,CAAC,GACtDV,IAAMkB,EAAqBR,IAAIK,IAAMR,IAAgBU,GAAUT,EAAO,GACtEW,IAASC,QAAc;EAC3B,IAAIpB,MAAQ,MACZ,IAAI;GACF,OAAO,EAAE,OAAO,KAAK,MAAMA,CAAG,EAAO;EACvC,QAAQ;GACN;EACF;CACF,GAAG,CAACA,CAAG,CAAC,GACFG,IAAMa,GACT,MAAS;EACR,IAAI,CAACN,GAAG;GACN,EAAOW,CAAC;GACR;EACF;EACA,IAAMC,IAAO,KAAK,UAAUD,CAAC;EAC7B,IAAI;GACF,aAAa,QAAQX,GAAGY,CAAI;EAC9B,QAAQ;GACN,CAAC,uBAAW,IAAI,IAAI,EAAA,CAAG,IAAIZ,GAAGY,CAAI;EACpC;EACA,GAAW,IAAIZ,CAAC,CAAC,EAAE,SAAS,MAAWa,EAAO,CAAC;CACjD,GACA,CAACb,CAAC,CACJ;CACA,OAAO,CAACA,IAAKS,IAASA,EAAO,QAAQL,IAAWH,GAAKR,CAAG;AAC1D;;;AC1BA,IAAMqB,KAAU,MACdC,EAAK,MAAM,IAAI,CAAC,CAAC,KAAK,GAAM,MAC1BC,IAAI,IACF,kBAAC,QAAD;CAAc,WAAU;CACrB,UAAAC;AACG,GAFKD,CAEL,IAENC,CAEJ,GAEWC,IAAyB;CACpC,MAAM;EACJ,UAAU,EAAE,SAAS,wBAAwB;EAC7C,MAAM,EAAE,SAAS,OAAO;CAC1B;CACA,MAAM;EACJ,SAAS,EAAE,SAAS,2CAA2C;EAC/D,QAAQ,EAAE,SAAS,oBAAoB;CACzC;CACA,SAAS;EACP,WAAW,EAAE,SAAS,oBAAoB;EAC1C,QAAQ,EAAE,SAAS,mBAAmB;CACxC;AACF,GACaC,KAAiC;CAAE,MAAM;CAAY,MAAM;CAAW,SAAS;AAAY,GAelGC,IAAsB,kBAA0B;CACpD,MAAM;CACN,eAAe,KAAA;CACf,WAAW;CACX,oBAAoB,KAAA;CACpB,SAAS;CACT,kBAAkB,KAAA;CAClB,OAAO;CACP,gBAAgB,KAAA;CAChB,oBAAoB,KAAA;CACpB,YAAY,KAAA;CACZ,UAAU;AACZ,CAAC,GACYC,UAAmBC,EAAWF,CAAG,GAEjCG,IAAyC,kBAAc,EAAK,GAC5DC,IAAsC,kBAA2D,IAAI;AASlH,SAASC,EAAS,EAAE,aAAU,eAAY,iBAAc,IAAO,cAAW,MAA8B;CACtG,IAAM,CAACC,GAAMC,KAAW5B,EAAe6B,IAAa,GAAGA,EAAW,SAAS,KAAA,GAAWC,CAAW,GAC3F,CAACC,GAAaC,KAAYhC,EAAe6B,IAAa,GAAGA,EAAW,UAAU,KAAA,GAAW,GAAG,GAC5F,CAACI,GAASC,KAAgB9B,EAAwB,IAAI,GACtD+B,IAAQC,EAAWH,KAAWF,CAAW,GACzC,CAACM,GAAWC,KAAqBtC,EAAe6B,IAAa,GAAGA,EAAW,cAAc,KAAA,GAAW,EAAK,GACzG,CAACU,GAASC,KAAcpC,EAAS,EAAK,GACtCqC,IAAYC,EAA2B,IAAI,GAC3CC,IAAepC,GAClB,MAAe;EACd,IAAMqC,IAAS,SAAS,yBAAyB,cAAc,SAAS,gBAAgB,MAClFC,IAAUjC,KAAK,CAAC,CAACgC,GAAQ,QAAQ,qBAAqB,GACtDE,IAAY,CAAClC,KAAK,CAAC,CAACgC,GAAQ,QAAQ,uBAAuB;EAKjE,AAJIC,MAAS,EAAU,UAAUD,IACjCN,EAAkB1B,CAAC,GACnB4B,EAAW,EAAK,GACZK,KAAS,4BAA4B,SAAS,cAA2B,uBAAuB,CAAC,EAAE,MAAM,CAAC,GAC1GC,KACF,4BAA4B;GAE1B,EADaL,EAAU,SAAS,cAAcA,EAAU,UAAU,SACzD,SAAS,cAA2B,6CAA6C,EAAA,EAAI,MAAM;EACtG,CAAC;CACL,GACA,CAACH,CAAiB,CACpB;CACA,QAAgB;EACd,IAAI,CAACS,GAAU;EACf,IAAMC,KAAS,MAAqB;GAClC,IAAI,EAAE,QAAQ,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,WAAY,EAAE,WAAW,CAAC,EAAE,QAAS;GAC9F,IAAM,IAAI,EAAE;GACZ,AAAI,aAAa,gBAAgB,EAAE,qBAAqB,EAAE,QAAQC,EAAM,MACpE,UAAS,cAAc,uBAAqB,KAAM,OAAO,WAAW,qBAAqB,CAAC,CAAC,WAC/FN,EAAa,CAACN,CAAS;EACzB;EAEA,OADA,OAAO,iBAAiB,WAAWW,CAAK,SAC3B,OAAO,oBAAoB,WAAWA,CAAK;CAC1D,GAAG;EAACX;EAAWM;EAAcI;CAAQ,CAAC;CACtC,IAAMG,IAAQvC,SACL;EAAE;EAAM;EAAS;EAAW;EAAc;EAAS;EAAY;EAAO;EAAU;EAAc;EAAY;CAAS,IAC1H;EAACgB;EAAMC;EAASS;EAAWM;EAAcJ;EAASJ;EAAOH;EAAUH;EAAYkB;CAAQ,CACzF;CACA,OAAO,kBAAC1B,EAAI,UAAL;EAAqB;EAAQ;CAAuB,CAAA;AAC7D;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAOlE,IAAM4B,KAAS,8IAETE,KAAa,KAENC,KAAc,KACdC,KAAc,KAErBjB,KAAc,MAAc,KAAK,MAAM,KAAK,IAAA,KAAiB,KAAK,IAAA,KAAiB,OAAO,SAASxB,CAAC,IAAIA,IAAI,GAAG,CAAC,CAAC,GAEjH0C,IAAuB,kBAAsC,SAAiB,EAAE,eAAY,IAAM,cAAW,aAAU,UAAO,cAAcC,GAAW,GAAGC,KAAS,GAAK;CAC5K,IAAM,EAAE,SAAM,UAAO,aAAU,iBAAc,cAAW,oBAAiBlC,EAAW,GAC9EmC,IAAItF,EAAU,GACd,CAACuF,GAAMC,KAAWvD,EAAwB,IAAI,GAC9CwD,IAAYlB,EAAkD,KAAA,CAAS;CAC7E,cAAsB,aAAakB,EAAU,OAAO,GAAG,CAAC,CAAC;CACzD,IAAM,CAACC,GAAUC,KAAe1D,EAAS,EAAK,GACxC2D,IAAUrB,EAA4B,IAAI;CAChD,cAAsBqB,EAAQ,UAAU,GAAG,CAAC,CAAC;CAC7C,IAAMC,IAAgBzD,GACnB,MAA0C;EACzC,IAAI,EAAE,WAAW,GAAG;EAEpB,AADA,EAAE,eAAe,GACjBwD,EAAQ,UAAU;EAClB,IAAME,IAAS,EAAE,eACXC,IAAS,EAAE,SACXC,IAAShC,GACXiC,IAAQ,IACRC,IAAOF,GACLG,KAAQ,MAAqB;GAKjC,AAJI,KAAK,IAAIC,EAAG,UAAUL,CAAM,IAAI,MAClC,IAAQ,IACRJ,EAAY,EAAI,IAEbM,MACL,IAAOhC,EAAW+B,IAASI,EAAG,UAAUL,CAAM,GAC9ChC,EAAamC,CAAI;EACnB,GACMG,UAAY;GAShB,AARAP,EAAO,oBAAoB,eAAeK,CAAI,GAC9CL,EAAO,oBAAoB,aAAaQ,CAAE,GAC1CR,EAAO,oBAAoB,iBAAiBO,CAAG,GAC/C,SAAS,KAAK,MAAM,SAAS,IAC7B,SAAS,KAAK,MAAM,aAAa,IACjC,EAAQ,UAAU,MAClBV,EAAY,EAAK,GACbM,KAAOpC,EAASqC,CAAI,GACxBnC,EAAa,IAAI;EACnB,GACMuC,UAAW;GAEf,AADAD,EAAI,GACCJ,KAAOzB,EAAa,EAAI;EAC/B;EAOA,AANAsB,EAAO,kBAAkB,EAAE,SAAS,GACpCA,EAAO,iBAAiB,eAAeK,CAAI,GAC3CL,EAAO,iBAAiB,aAAaQ,CAAE,GACvCR,EAAO,iBAAiB,iBAAiBO,CAAG,GAC5C,SAAS,KAAK,MAAM,SAAS,cAC7B,SAAS,KAAK,MAAM,aAAa,QACjC,EAAQ,UAAUA;CACpB,GACA;EAACrC;EAAOH;EAAUE;EAAcS;CAAY,CAC9C,GACM+B,IAAWnD,EAAWC,CAAsB,GAC5CmD,IAAStC,KAAa,CAACqC,GACvBE,IACJ,kBAAC,OAAD;EACO;EACL,cAAYrB,KAAaE,EAAE,gBAAgB,MAAM;EACjD,aAAW9B,KAAQ,KAAA;EACnB,qBAAkB;EAClB,WAAW1D,EACT,0EACA0D,IAAOR,EAAuB,KAAK,KAAK,UAAUA,EAAuB,KAAK,SAAS,SACvF0D,CACF;EACA,OAAO;GAAG,qBAAgC,GAAG1C,EAAM;GAAK,GAAG2C;EAAM;EACjE,GAAItB;EAEH;CACE,CAAA;CAGP,OADIkB,IAAiBE,IAEnB,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,kBAAC,OAAD;GACE,WAAU;GACV,OAAO,EAAE,OAAOD,IAAS,IAAIhD,IAAO,KAAKQ,EAAM;GAC/C,GAAKwC,IAAS;IAAE,kBAAkB;IAAI,OAAO;IAAM,eAAe;GAAK,IAAI,CAAC;GAE5E,UAAA,kBAAC,OAAD;IAAK,WAAU;IAAgC,OAAO,EAAE,OAAOhD,IAAO,KAAKQ,EAAM;IAC9E,UAAAyC;GACE,CAAA;EACF,CAAA,GACJG,KAAa,CAACpD,KAAQ,CAACgD,KACtB,kBAAC,OAAD;GACE,MAAK;GACL,oBAAiB;GACjB,cAAYlB,EAAE,4BAA4B,yCAAyC;GACnF,iBAAA;GACA,iBAAA;GACA,iBAAetB;GACf,kBAAgB,GAAGA,EAAM;GACzB,UAAU;GACK;GACf,iBAAiB,MAAM;IACrB,IAAM6C,IAAM,KAAK,MAAM,EAAE,UAAU,EAAE,cAAc,sBAAsB,CAAC,CAAC,GAAG;IAE9E,AADA,aAAapB,EAAU,OAAO,GAC9B,EAAU,UAAU,iBAAiBD,EAAQqB,CAAG,GAAG7B,EAAU;GAC/D;GACA,sBAAsB;IAEpB,AADA,aAAaS,EAAU,OAAO,GAC9BD,EAAQ,IAAI;GACd;GACA,YAAY,MAAM;IAChB,IAAMsB,IACJ,EAAE,QAAQ,cAAc9C,IAAQ,IAAI,EAAE,QAAQ,eAAeA,IAAQ,IAAI,EAAE,QAAQ,SAAA,MAAuB,EAAE,QAAQ,QAAA,MAAsB;IAK5I,AAJI8C,MAAO,SACT,EAAE,eAAe,GACjBjD,EAASI,EAAW6C,CAAE,CAAC,KAErB,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,eAAe,GACjBtC,EAAa,EAAI;GAErB;GACA,WAAU;GA/BZ,UAAA,CAiCE,kBAAC,QAAD;IAAM,eAAA;IAAY,WAAU;GAAuH,CAAA,GAClJe,MAAS,QAAQ,CAACG,KACjB,kBAAC,QAAD;IACE,eAAA;IACA,WAAU;IACV,OAAO,EAAE,KAAK,KAAK,IAAI,GAAGH,IAAO,EAAE,EAAE;IAHvC,UAAA,CAKE,kBAAC,QAAD,EAAA,UAAO3C,EAAO0C,EAAE,wBAAwB,oBAAoB,CAAC,EAAQ,CAAA,GACrE,kBAAC,QAAD,EAAA,UAAO1C,EAAO0C,EAAE,2BAA2B,uBAAuB,CAAC,EAAQ,CAAA,CACvE;GAEL,CAAA,CAAA;EAEJ,CAAA,CAAA;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAE9D,IAAMyB,IAAyB,kBAA2D,SAAuB,EAAE,cAAW,GAAG1B,KAAS,GAAK;CAC7I,OACE,kBAAC,OAAD;EACO;EACL,WAAWvF,EAAG,yHAAyH4G,CAAS;EAChJ,GAAIrB;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAShE,IAAM2B,IAAwB,kBAA8C,SAAsB,EAAE,SAAM,WAAQ,SAAS,aAAU,gBAAa,GAAK;CACrJ,IAAM,EAAE,YAAS7D,EAAW;CAQ5B,OAPIK,IAEA,kBAACuD,GAAD;EAAa;EAAK,WAAWjH,EAAG,uBAAuB4G,CAAS;EAC7D;CACK,CAAA,IAIV,kBAACK,GAAD;EAAa;EAAK,WAAWjH,EAAG,+BAA+B4G,CAAS;EAAxE,UAAA,CACE,kBAACO,GAAD;GAAqB;GAAa;EAAQ,CAAA,GACzCC,KAAY,kBAAC,QAAD;GAAM,WAAU;GAAqB;EAAe,CAAA,CAC3D;;AAEZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAO/D,IAAaD,IAAgC,kBAAkE,SAAuB,EAAE,SAAM,WAAQ,WAAW,GAAK;CACpK,IAAME,IAAWpH,EAAiB;CAClC,OAAOqH,IACL,kBAACD,GAAD;EAAe;EAAqC;EAAM,cAAYE;EAAO,WAAU;EACrF,UAAA,kBAAC1G,GAAD,EAAa,YAAA,GAAY,CAAA;CACjB,CAAA,IAEV,kBAACA,GAAD;EAAkB;EAA2B,OAAO0G;EAAO,WAAU;CAAW,CAAA;AAEpF,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAc,cAAc;AAEvE,IAAMC,KAA8B,wBAAiB,OAAO,+BAAsB,EAAE,YAAY,YAAY,IAAI,CAAC;AAEjH,SAASC,EAAS,EAChB,YACA,SACA,WACA,WACA,eAOC;CACD,IAAM,CAACC,GAAMC,KAAWxF,EAAS,EAAK,GAChC,CAACyF,GAAQC,KAAa1F,EAAS,EAAK,GACpC2F,IAAMxH,EAAckH,IAAaI,KAAUF,SAAY;EAE3D,AADAG,EAAU,EAAK,GACfF,EAAQ,EAAK;CACf,CAAC,GACK,CAACI,KAAS5F,EAAS5B,CAAiB,GACpCyH,IAASvD,EAA2B,IAAI,GACxCwD,IAASC,EAAQ,MAAiD,KAClEC,IAAYzF,QAAc/B,EAAUqH,GAAQC,CAAK,GAAG,CAACA,CAAK,CAAC,GAC3DG,IAAUV,KAAQ,CAACI;CAEzB,AADAO,QAAgBpH,QAAe4G,EAAU,EAAI,CAAC,GAAG,CAAC,CAAC,GACnDQ,QAAgB;EACd,IAAI,CAACD,GAAS;EACd,IAAME,IAAMN,EAAO,SAAS,iBAAiB,UACvCO,KAAa,MAAqB;GACtC,AAAI,EAAE,QAAQ,aACd,EAAE,gBAAgB,GAClBZ,EAAQ,EAAK;EACf,GACM5B,KAAiB,MAAoB;GACzC,AAAKiC,EAAO,SAAS,SAAS,EAAE,MAAc,KAAGL,EAAQ,EAAK;EAChE;EAGA,OAFAW,EAAI,iBAAiB,WAAWC,GAAW,EAAI,GAC/CD,EAAI,iBAAiB,eAAevC,GAAe,EAAI,SAC1C;GAEX,AADAuC,EAAI,oBAAoB,WAAWC,GAAW,EAAI,GAClDD,EAAI,oBAAoB,eAAevC,GAAe,EAAI;EAC5D;CACF,GAAG,CAACqC,CAAO,CAAC;CACZ,IAAMI,UAAaX,EAAU,EAAI,GAC3BY,IAAUX,IACZ,EAAE,KAAKK,EAAU,IACjB;EACE,KAAKA;EACL,iBAAiB;EACjB,iBAAiBT;EACjB,GAAIA,IAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;EACxC,gBAAgBc;EAChB,SAASA;EACT,eAAeb,GAAS,MAAM,CAACe,CAAC;EAChC,YAAY,MAA2B;GACrC,CAAI,EAAE,QAAQ,eAAe,EAAE,QAAQ,eACvC,EAAE,eAAe,GACjBf,EAAQ,EAAI;EACd;EACA,SAAS,MAAwB;GAC/B,AAAID,KAAQ,EAAE,iBAAiB,CAAC,EAAE,cAAc,SAAS,EAAE,aAAa,KAAGC,EAAQ,EAAK;EAC1F;CACF;CACJ,OACE,kBAAAhI,GAAA,EAAA,UAAA,CACE,kBAACS,GAAD;EAAsB;EAAO,OAAO0H,GAAK;EAAmB,OAAOW;EAChE,UAAAP;CACY,CAAA,GACdJ,KACC,kBAACA,EAAI,iBAAL;EAA2B;EAAM,cAAcH;EAAS,cAAcI;EAAa;EAAc;EAAgB;EAC9G;CACkB,CAAA,CAEvB,EAAA,CAAA;AAEN;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAgBlE,IAAMY,IAA2B,kBAAoD,SACnF,EAAE,WAAQ,UAAO,aAAU,YAAS,iBAAc,aAAa,aAAU,WAAQ,WAAQ,cAAcrD,GAAW,cAAW,cAAcsD,KAC3I,GACA;CACA,IAAM,EAAE,YAASvF,EAAW,GACtBmC,IAAItF,EAAU,GACd2I,IAAaxI,EAAUyI,CAAO,GAC9BC,IAAQ1I,EAAUkH,CAAK,GACvB9B,IAAOH,KAAaE,EAAE,gCAAgC,yBAAyB,GAC/EwD,IAAUxI,EAAqBuI,IAAQtD,IAAO,KAAA,CAAS;CAC7D,OACE,kBAAA9F,GAAA,EAAA,UAAA,CACE,kBAAC8H,GAAD;EACE,MAAK;EACG;EACA;EACR,SACE,kBAAC,UAAD;GACO;GACL,MAAK;GACL,GAAKsB,IAAQ,EAAE,oBAAoBC,EAAQ,GAAG,IAAI,EAAE,cAAcvD,EAAK;GACvE,GAAKmD,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;GACxC,WAAW5I,EACT,kOACA0D,KAAQ,uBACRkD,CACF;GATF,UAAA;IAWE,kBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACGqC,GACAvF,KAAQmF,KAAcK,MAAgB,YACrC,kBAAC/I,GAAD;MAAM,MAAMP;MAAoB,MAAK;MAAK,WAAU;KAAuE,CAAA,CAEzH;;IACL,CAAC8D,MACCmF,IACC,kBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACE,kBAAC,QAAD;MAAM,WAAU;MAAY,UAAAtB;KAAY,CAAA,GACxC,kBAAC,QAAD;MAAM,WAAWvH,EAAG,sCAAsCkD,EAAuB,QAAQgG,EAAY,CAAC,OAAO;MAAI,UAAAJ;KAAc,CAAA,CAC3H;IAEN,CAAA,IAAA,kBAAC,QAAD;KAAM,WAAU;KAA2B,UAAAvB;IAAY,CAAA;IAE1D7D,KAAQqF,KAAS,kBAAC,QAAD;KAAM,WAAU;KAAW,UAAAxB;IAAY,CAAA;IACxD7D,KAAQmF,KAAc,kBAAC,QAAD;KAAM,WAAU;KAAW,UAAAC;IAAc,CAAA;IAC/D,CAACpF,KAAQ0F;IACT,CAAC1F,KAAQ,kBAACvD,GAAD;KAAM,MAAMN;KAAuB,MAAK;KAAK,WAAU;IAAwE,CAAA;GACnI;;EAGT;CACO,CAAA,GACTmJ,EAAQ,IACT,EAAA,CAAA;AAEN,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAS,cAAc;AAclE,IAAMM,IAAwB,kBAA2C,SACvE,EAAE,WAAQ,UAAO,aAAU,SAAM,WAAQ,WAAQ,cAAchE,GAAW,cAAW,cAAcsD,KACnG,GACA;CACA,IAAM,EAAE,YAASvF,EAAW,GACtBmC,IAAItF,EAAU,GACdmH,IAAWpH,EAAiB,GAC5B8I,IAAQ1I,EAAUkH,CAAK,GACvB9B,IAAO2B,IAAY9B,KAAaE,EAAE,uBAAuB,gBAAgB,IAAKF,GAC9E0D,IAAUxI,EAAqBuI,IAAQtD,IAAO,KAAA,CAAS,GACvD8D,IAASR,IAASC,EAAQ,KAAK,EAAE,oBAAoBA,EAAQ,GAAG,IAAI,CAAC,IAAKvD,IAAO,EAAE,cAAcA,EAAK,IAAI,CAAC,GAC3G+D,IAAUxJ,EACd,uHACCoH,KAAYE,MAAS,kHACtB5D,KAAQ,uBACRkD,CACF,GACM6C,IACJ,kBAAA9J,GAAA,EAAA,UAAA;EACE,kBAAC,QAAD;GAAM,WAAU;GAAqD,UAAAsJ;EAAa,CAAA;EACjFvF,IAAO,kBAAC,QAAD;GAAM,WAAU;GAAW,UAAA6D;EAAY,CAAA,IAAI,kBAACmC,IAAD,EAAkB,SAAQ,CAAA;EAC5E,CAAChG,KAAQ0D,KAAY,kBAACjH,GAAD;GAAM,MAAMN;GAAuB,MAAK;GAAK,WAAU;EAA2E,CAAA;CACxJ,EAAA,CAAA,GAEE8J,IAAS;EAAE,WAAWH;EAAS,GAAIZ,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;CAAG;CAC/E,IAAIxB,GACF,OACE,kBAAAzH,GAAA,EAAA,UAAA,CACE,kBAAC8H,GAAD;EACE,MAAK;EACG;EACA;EACR,SACE,kBAAC,UAAD;GAAa;GAA+B,MAAK;GAAS,GAAI8B;GAAQ,GAAII;GACvE,UAAAF;EACK,CAAA;EAGT;CACO,CAAA,GACTT,EAAQ,IACT,EAAA,CAAA;CAGN,IAAMY,IAAKtC,IACT,kBAACD,GAAD;EAAe;EAAqC;EAAM,GAAIkC;EAAQ,GAAII;EACvE,UAAAF;CACO,CAAA,IAEV,kBAAC,OAAD;EAAU;EAA4B,GAAIE;EACvC,UAAAF;CACE,CAAA;CAEP,OACE,kBAAA9J,GAAA,EAAA,UAAA,CACG+D,IACC,kBAACjD,GAAD;EAAS,SAAS8G;EAAO,MAAK;EAC3B,UAAAqC;CACM,CAAA,IAETA,GAEDtC,KAAQ0B,EAAQ,IACjB,EAAA,CAAA;AAEN,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAM,cAAc;AAE/D,SAASa,GAAO,GAA0C,GAAkB;CAC1E,IAAM,CAACC,GAAKC,KAAU5H,EAAS,EAAK;CAQpC,OAPA6H,QAAsB;EACpB,IAAMC,IAAMC,EAAI;EAChB,IAAI,CAACC,KAAW,CAACF,KAAO,OAAO,iBAAmB,KAAa;EAC/D,IAAMG,UAAgBL,EAAOE,EAAI,cAAcA,EAAI,WAAW;EAE9D,OADAG,EAAQ,GACDxJ,EAAc,CAACqJ,CAAG,GAAGG,CAAO;CACrC,GAAG,CAACF,GAAKC,CAAO,CAAC,GACVA,KAAWL;AACpB;AAEA,SAASJ,GAAU,EAAE,YAA4B;CAC/C,IAAMQ,IAAMzF,EAAwB,IAAI,GAClCqF,IAAMD,GAAOK,GAAK,EAAI;CAC5B,OACE,kBAACzJ,GAAD;EAAS,SAAS8G;EAAO,MAAK;EAAQ,UAAU,CAACuC;EAC/C,UAAA,kBAAC,QAAD;GAAW;GAAK,WAAU;GACvB,UAAAvC;EACG,CAAA;CACC,CAAA;AAEb;AAEA,IAAM8C,KAA0B,kBAA2D,SAAwB,EAAE,cAAW,GAAG9E,KAAS,GAAK;CAC/I,IAAM,EAAE,YAASlC,EAAW,GACtBpB,IAAMwC,EAA8B,IAAI,GACxC6F,IAAO5H,QAAc/B,EAAUsB,GAAKiI,CAAG,GAAG,CAACA,CAAG,CAAC;CAmBrD,OAlBA7B,QAAgB;EACd,IAAMuB,IAAK3H,EAAI,SACTsI,IAAOX,GAAI,QAAQ,qBAAqB;EAC9C,IAAI,CAACA,KAAM,CAACW,GAAM;EAClB,IAAMC,UAAc;GAElB,AADAD,EAAK,gBAAgB,uBAAuBX,EAAG,eAAeA,EAAG,YAAYA,EAAG,eAAe,CAAC,GAChGW,EAAK,gBAAgB,sBAAsBX,EAAG,YAAY,CAAC;EAC7D;EAEA,AADAY,EAAM,GACNZ,EAAG,iBAAiB,UAAUY,GAAO,EAAE,SAAS,GAAK,CAAC;EACtD,IAAMC,IAAO7J,EAAc,CAACgJ,GAAI,GAAGA,EAAG,QAAQ,GAAGY,CAAK;EACtD,aAAa;GAIX,AAHAZ,EAAG,oBAAoB,UAAUY,CAAK,GACtCC,EAAK,GACLF,EAAK,gBAAgB,qBAAqB,GAC1CA,EAAK,gBAAgB,oBAAoB;EAC3C;CACF,GAAG,CAAC,CAAC,GAEH,kBAAC,OAAD;EACE,KAAKD;EACL,WAAWtK,EAAG,qGAAqG0D,IAAO,SAAS,SAASkD,CAAS;EACrJ,GAAIrB;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAQ,cAAc;AAEjE,IAAMmF,KAAyB,kBAA2D,SAAuB,EAAE,cAAW,GAAGnF,KAAS,GAAK;CAC7I,IAAM,EAAE,YAASlC,EAAW;CAC5B,OACE,kBAAC,OAAD;EACO;EACL,WAAWrD,EACT,sHACA0D,IAAO,SAAS,SAChBkD,CACF;EACA,GAAIrB;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAO,cAAc;AAWhE,IAAMoF,KAAwB,kBAA8C,SAC1E,EAAE,UAAO,OAAI,iBAAc,IAAM,iBAAc,IAAM,aAAU,gBAC/D,GACA;CACA,IAAM,EAAE,eAAY,YAAStH,EAAW,GAClC,CAACqE,GAAMC,KAAW5F,EAAe6B,KAAcgH,IAAK,GAAGhH,EAAW,SAASgH,MAAO,KAAA,GAAWC,CAAW,GACxGC,IAAUC,EAAM;CACtB,IAAI,CAACxD,KAAS,CAACyD,KAAetH,GAAM;EAClC,IAAMqF,IAAQ,CAAC,CAACxB,KAAS,CAAC7D;EAC1B,OACE,kBAAC,OAAD;GAAU;GAAK,GAAKqF,IAAQ;IAAE,MAAM;IAAS,mBAAmB+B;GAAQ,IAAI,CAAC;GAAI,WAAW9K,EAAG,iBAAiB4G,CAAS;GAAzH,UAAA,CACGmC,KACC,kBAAC,OAAD;IAAK,IAAI+B;IAAS,WAAU;IACzB,UAAAvD;GACE,CAAA,GAEP,kBAAC,MAAD;IAAI,WAAU;IAAuB;GAAa,CAAA,CAC/C;;CAET;CACA,OACE,kBAAC0D,EAAY,MAAb;EAAuB;EAAW;EAAM,eAAe,MAAetD,EAAQe,CAAC;EAAG,WAAW1I,EAAG,iBAAiB4G,CAAS;EAA1H,UAAA,CACE,kBAACqE,EAAY,SAAb;GACE,WAAWjL,EAAGgB,GAAoB,4GAA4G;GADhJ,UAAA,CAGE,kBAAC,QAAD;IAAM,WAAU;IAA2B,UAAAuG;GAAY,CAAA,GACvD,kBAACxG,GAAD,CAAoB,CAAA,CACD;EACrB,CAAA,GAAA,kBAACkK,EAAY,OAAb;GAAmB,WAAU;GAC3B,UAAA,kBAAC,MAAD;IAAI,WAAU;IAA4B;GAAa,CAAA;EACtC,CAAA,CACH;;AAEtB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAM,cAAc;AAiB/D,IAAMC,KAAQ;CAAC;CAAI;CAAS;AAAO,GAE7BC,KAAuB,kBAA0C,SACrE,EAAE,aAAU,SAAM,YAAS,SAAM,YAAS,WAAQ,UAAO,aAAU,WAAQ,GAAG,aAAU,cAAW,cAAcvC,KACjH,GACA;CACA,IAAM,EAAE,YAASvF,EAAW,GACtBgE,IAAWpH,EAAiB,GAC5BmL,IAAQ9H,EAAWE,CAAmB,GACtC+D,IAAQ9C,EAAwB,IAAI,GACpCqF,IAAMD,GAAOtC,GAAO,CAAC7D,CAAI,GACzB2H,KAAY,MAA+B;EAE/C,AADAC,IAAU,CAAC,GACPF,KAAS,CAACA,EAAM,QAAQ,CAAC9D,KAAQ,CAAC,EAAE,oBAAkB8D,EAAM,MAAM;CACxE,GACM5B,IAAUxJ,EACd,0KACA2E,IAASzB,EAAuB,KAAK,OAAO,UAAUA,EAAuB,KAAK,QAAQ,SAC1F,CAACQ,KAAQwH,GAAMK,IACf7H,KAAQ,uBACRkD,CACF,GACM6C,IACJ,kBAAA9J,GAAA,EAAA,UAAA;EACG6L,IACC,kBAAC,QAAD;GAAM,WAAU;GAAqD,UAAAA;EAAc,CAAA,IAEnFC,KAAQ,kBAACtL,GAAD;GAAY;GAAM,MAAK;GAAK,WAAWH,EAAG,+DAA+D2E,KAAU,SAAS;EAAI,CAAA;EAEzIjB,IACC,kBAAC,QAAD;GAAM,WAAU;GAAW;EAAe,CAAA,IAE1C,kBAAC,QAAD;GAAM,KAAK6D;GAAO,WAAU;GACzB;EACG,CAAA;EAEP,CAAC7D,KAAQgI,MAAU,KAAA,KAAa,kBAAC,QAAD;GAAM,WAAW1L,EAAG,oCAAoC2E,IAAS,YAAY,kBAAkB;GAAI,UAAA+G;EAAY,CAAA;EAC/I,CAAChI,KAAQ0F;CACV,EAAA,CAAA,GAEEO,IAAS;EACb,WAAWH;EACX,GAAI7E,IAAS,EAAE,gBAAgB,OAAgB,IAAI,CAAC;EACpD,GAAIiE,IAAQ,EAAE,cAAcA,EAAM,IAAI,CAAC;CACzC,GACMgB,IAAKtC,IACT,kBAACD,GAAD;EAAe;EAA2C;EAAM,GAAIsC;EAAQ,GAAK2B,IAAU,EAAE,WAAQ,IAAI,CAAC;EACvG,UAAA7B;CACO,CAAA,IAEV,kBAAC,UAAD;EAAa;EAAqC,MAAK;EAAS,GAAIE;EAAQ,SAAS0B;EAClF,UAAA5B;CACK,CAAA;CAEV,OACE,kBAAC,MAAD;EAAI,WAAU;EACZ,UAAA,kBAAChJ,GAAD;GAAS,SAAS2G;GAAU,MAAK;GAAQ,UAAU,CAAC1D,KAAQ,CAACoG;GAAK,GAAKpG,KAAQoB,IAAW,EAAE,YAAS,IAAI,CAAC;GACvG,UAAA8E;EACM,CAAA;CACP,CAAA;AAER,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAK,cAAc;AAE9D,IAAM+B,KAA2B,kBAAkH,SACjJ,EAAE,SAAM,aAAU,gBAClB,GACA;CACA,IAAMtE,IAAWpH,EAAiB,GAC5BuF,IAAItF,EAAU;CACpB,OACE,kBAACmH,GAAD;EACO;EACC;EACN,WAAWrH,EACT,0LACA4G,CACF;EANF,UAAA,CAQE,kBAACzG,GAAD;GAAM,MAAML;GAAwB,MAAK;EAAM,CAAA,GAC9CsH,KAAY5B,EAAE,qBAAqB,aAAa,CACzC;;AAEd,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAS,cAAc;AAElE,IAAMqG,KAA0B,kBAA0D,SAAwB,EAAE,UAAO,KAAK,GAAK;CACnI,IAAMrG,IAAItF,EAAU;CACpB,OACE,kBAAC,OAAD;EAAU;EAAK,MAAK;EAAS,cAAYsF,EAAE,mBAAmB,oBAAoB;EAAG,aAAA;EAAU,WAAU;EACtG,UAAA,MAAM,KAAK,EAAE,QAAQsG,EAAK,IAAI,GAAG,MAChC,kBAAC,OAAD;GAAa,WAAU;GAAvB,UAAA,CACE,kBAAChL,GAAD,EAAU,WAAU,uBAAwB,CAAA,GAC5C,kBAACA,GAAD;IAAU,WAAU;IAAoB,OAAO,EAAE,OAAO,GAAG,KAAOkC,IAAI,KAAM,GAAI,GAAG;GAAI,CAAA,CACpF;EAHK,GAAAA,CAGL,CACN;CACE,CAAA;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAQ,cAAc;AAEjE,IAAM+I,KAAiC,kBAAkE,SAA+B,EAAE,gBAAa,GAAK;CAC1J,IAAM,EAAE,cAAW,iBAAc,gBAAa1I,EAAW,GACnD+H,IAAQ9H,EAAWE,CAAmB,GACtCgC,IAAItF,EAAU,GACdqH,IAAQ6D,IACVA,EAAM,OACJ5F,EAAE,oBAAoB,mBAAmB,IACzCA,EAAE,2BAA2B,kBAAkB,IACjDpB,IACEoB,EAAE,kBAAkB,gBAAgB,IACpCA,EAAE,oBAAoB,kBAAkB,GACxC8F,UAAgB;EACpB,AAAIF,GAAO,OAAM1G,EAAa,EAAK,IAC1B0G,IAAOA,EAAM,MAAM,IACvB1G,EAAa,CAACN,CAAS;CAC9B;CACA,OACE,kBAAC3D,GAAD;EAAS,SAAS8G;EAAO,GAAKzC,MAAc,MAAUsG,EAAM,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC;EACzF,UAAA,kBAAC,UAAD;GACO;GACL,MAAK;GACL,yBAAsB;GACtB,cAAY7D;GACZ,GAAK6D,IAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAChH,EAAU;GACvC;GACT,WAAWpE,EACT,kMACA4G,CACF;GAEA,UAAA,kBAACzG,GAAD;IAAM,MAAMJ;IAAwB,MAAK;GAAM,CAAA;EACzC,CAAA;CACD,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,GAAe,cAAc;AAExE,IAAMkM,IAA6B,kBAAkE,SAA2B,EAAE,gBAAa,GAAK;CAClJ,IAAM,EAAE,SAAM,eAAY5I,EAAW,GAE/BkE,IADIrH,EACI,CAAA,CAAE,qBAAqB,YAAY;CACjD,OACE,kBAACO,GAAD;EAAS,SAAS8G;EAAO,MAAK;EAC5B,UAAA,kBAAC,UAAD;GACO;GACL,MAAK;GACL,cAAYA;GACZ,gBAAc7D;GACd,eAAeC,EAAQ,CAACD,CAAI;GAC5B,WAAW1D,EACT,8OACA4G,CACF;GAEA,UAAA,kBAACzG,GAAD;IAAM,MAAMJ;IAAwB,MAAK;GAAM,CAAA;EACzC,CAAA;CACD,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc;AAEpE,IAAamM,KAA0B,uBAAO,OAAO7G,GAAM;CACzD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/app-frame-
|
|
3
|
-
import { t as s } from "../chunks/nav-sheet-
|
|
2
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "../chunks/app-frame-B1FXVFYx.js";
|
|
3
|
+
import { t as s } from "../chunks/nav-sheet-S7tagFJT.js";
|
|
4
4
|
export { o as AppFrame, n as KAESO_APP_FRAME_BODY_DEFAULT_VARIANTS, i as KAESO_APP_FRAME_BODY_VARIANTS, t as KAESO_APP_FRAME_DEFAULT_VARIANTS, e as KAESO_APP_FRAME_VARIANTS, s as NavSheet, r as PEEK_DELAY, a as useAppFrame };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { t as e } from "../chunks/cn-BjnOAUrA.js";
|
|
3
|
-
import { n as t, t as n } from "../chunks/disclosure-
|
|
3
|
+
import { n as t, t as n } from "../chunks/disclosure-3CIz2WZa.js";
|
|
4
4
|
import { forwardRef as r } from "react";
|
|
5
5
|
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
6
|
import { Collapsible as o } from "@base-ui/react/collapsible";
|
|
@@ -9,26 +9,32 @@ import { Accordion as s } from "@base-ui/react/accordion";
|
|
|
9
9
|
var c = { state: {
|
|
10
10
|
closed: { classes: "" },
|
|
11
11
|
open: { classes: "group-data-panel-open/dt:rotate-90" }
|
|
12
|
-
} }, l = { state: "closed" }, u = `${n} min-h-40 py-8 text-body font-medium text-fg hover:bg-fill-1 active:bg-fill-2 coarse:min-h-44
|
|
12
|
+
} }, l = { state: "closed" }, u = `${n} min-h-40 py-8 text-body font-medium text-fg hover:bg-fill-1 active:bg-fill-2 coarse:min-h-44`;
|
|
13
|
+
function d({ title: e, hint: t }) {
|
|
14
|
+
return /* @__PURE__ */ a("span", {
|
|
15
|
+
className: "flex min-w-0 flex-1 items-baseline gap-8",
|
|
16
|
+
children: [/* @__PURE__ */ i("span", {
|
|
17
|
+
className: "min-w-0 flex-1",
|
|
18
|
+
children: e
|
|
19
|
+
}), t && /* @__PURE__ */ i("span", {
|
|
20
|
+
className: "shrink-0 text-small font-regular whitespace-nowrap text-fg-secondary tabular-nums",
|
|
21
|
+
children: t
|
|
22
|
+
})]
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
var f = /* @__PURE__ */ r(function({ title: n, children: r, open: s, defaultOpen: c, onOpenChange: l, hint: f, className: p }, m) {
|
|
13
26
|
return /* @__PURE__ */ a(o.Root, {
|
|
14
|
-
ref:
|
|
27
|
+
ref: m,
|
|
15
28
|
...s === void 0 ? {} : { open: s },
|
|
16
29
|
...c === void 0 ? {} : { defaultOpen: c },
|
|
17
30
|
...l ? { onOpenChange: (e) => l(e) } : {},
|
|
18
|
-
className: e("flex flex-col",
|
|
31
|
+
className: e("flex flex-col", p),
|
|
19
32
|
children: [/* @__PURE__ */ a(o.Trigger, {
|
|
20
33
|
className: u,
|
|
21
|
-
children: [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}),
|
|
26
|
-
d && /* @__PURE__ */ i("span", {
|
|
27
|
-
className: "text-small font-regular text-fg-secondary",
|
|
28
|
-
children: d
|
|
29
|
-
}),
|
|
30
|
-
/* @__PURE__ */ i(t, {})
|
|
31
|
-
]
|
|
34
|
+
children: [/* @__PURE__ */ i(d, {
|
|
35
|
+
title: n,
|
|
36
|
+
hint: f
|
|
37
|
+
}), /* @__PURE__ */ i(t, {})]
|
|
32
38
|
}), /* @__PURE__ */ i(o.Panel, {
|
|
33
39
|
className: "collapse-motion",
|
|
34
40
|
children: /* @__PURE__ */ i("div", {
|
|
@@ -38,8 +44,8 @@ var c = { state: {
|
|
|
38
44
|
})]
|
|
39
45
|
});
|
|
40
46
|
});
|
|
41
|
-
process.env.NODE_ENV !== "production" && (
|
|
42
|
-
var
|
|
47
|
+
process.env.NODE_ENV !== "production" && (f.displayName = "Collapsible");
|
|
48
|
+
var p = /* @__PURE__ */ r(function({ items: n, multiple: r = !1, defaultValue: o, className: c }, l) {
|
|
43
49
|
return /* @__PURE__ */ i(s.Root, {
|
|
44
50
|
ref: l,
|
|
45
51
|
...r ? { multiple: !0 } : {},
|
|
@@ -50,17 +56,10 @@ var f = /* @__PURE__ */ r(function({ items: n, multiple: r = !1, defaultValue: o
|
|
|
50
56
|
className: "py-4 hairline-b",
|
|
51
57
|
children: [/* @__PURE__ */ i(s.Header, { children: /* @__PURE__ */ a(s.Trigger, {
|
|
52
58
|
className: u,
|
|
53
|
-
children: [
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}),
|
|
58
|
-
e.hint && /* @__PURE__ */ i("span", {
|
|
59
|
-
className: "text-small font-regular text-fg-secondary",
|
|
60
|
-
children: e.hint
|
|
61
|
-
}),
|
|
62
|
-
/* @__PURE__ */ i(t, {})
|
|
63
|
-
]
|
|
59
|
+
children: [/* @__PURE__ */ i(d, {
|
|
60
|
+
title: e.title,
|
|
61
|
+
hint: e.hint
|
|
62
|
+
}), /* @__PURE__ */ i(t, {})]
|
|
64
63
|
}) }), /* @__PURE__ */ i(s.Panel, {
|
|
65
64
|
className: "collapse-motion",
|
|
66
65
|
children: /* @__PURE__ */ i("div", {
|
|
@@ -71,8 +70,8 @@ var f = /* @__PURE__ */ r(function({ items: n, multiple: r = !1, defaultValue: o
|
|
|
71
70
|
}, e.value))
|
|
72
71
|
});
|
|
73
72
|
});
|
|
74
|
-
process.env.NODE_ENV !== "production" && (
|
|
73
|
+
process.env.NODE_ENV !== "production" && (p.displayName = "Accordion");
|
|
75
74
|
//#endregion
|
|
76
|
-
export {
|
|
75
|
+
export { p as Accordion, f as Collapsible, l as KAESO_COLLAPSIBLE_DEFAULT_VARIANTS, c as KAESO_COLLAPSIBLE_VARIANTS };
|
|
77
76
|
|
|
78
77
|
//# sourceMappingURL=collapsible.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.js","names":["BaseCollapsible","BaseAccordion","cn","DisclosureChevron","DISCLOSURE_TRIGGER","Collapsible$1","Accordion$1","KAESO_COLLAPSIBLE_VARIANTS","KAESO_COLLAPSIBLE_DEFAULT_VARIANTS","TRIGGER","Collapsible","open","defaultOpen","onOpenChange","o","className","
|
|
1
|
+
{"version":3,"file":"collapsible.js","names":["BaseCollapsible","BaseAccordion","cn","DisclosureChevron","DISCLOSURE_TRIGGER","Collapsible$1","Accordion$1","KAESO_COLLAPSIBLE_VARIANTS","KAESO_COLLAPSIBLE_DEFAULT_VARIANTS","TRIGGER","DisclosureText","title","hint","Collapsible","open","defaultOpen","onOpenChange","o","className","Accordion","multiple","defaultValue","items","it"],"sources":["../../src/components/collapsible/collapsible.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from \"react\";\nimport { Collapsible as BaseCollapsible } from \"@base-ui/react/collapsible\";\nimport { Accordion as BaseAccordion } from \"@base-ui/react/accordion\";\nimport { cn } from \"../../utils/cn.js\";\nimport { DISCLOSURE_TRIGGER, DisclosureChevron } from \"./disclosure.js\";\n\nexport const KAESO_COLLAPSIBLE_VARIANTS = {\n state: {\n closed: { classes: \"\" },\n open: { classes: \"group-data-panel-open/dt:rotate-90\" },\n },\n} as const;\nexport const KAESO_COLLAPSIBLE_DEFAULT_VARIANTS = { state: \"closed\" } as const;\n\nconst TRIGGER = `${DISCLOSURE_TRIGGER} min-h-40 py-8 text-body font-medium text-fg hover:bg-fill-1 active:bg-fill-2 coarse:min-h-44`;\n\nfunction DisclosureText({ title, hint }: { title: ReactNode; hint: ReactNode | undefined }) {\n return (\n <span className=\"flex min-w-0 flex-1 items-baseline gap-8\">\n <span className=\"min-w-0 flex-1\">{title}</span>\n {hint && <span className=\"shrink-0 text-small font-regular whitespace-nowrap text-fg-secondary tabular-nums\">{hint}</span>}\n </span>\n );\n}\n\nexport interface CollapsibleProps {\n title: ReactNode;\n children: ReactNode;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n hint?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const Collapsible = /* @__PURE__ */ forwardRef<HTMLDivElement, CollapsibleProps>(function Collapsible(\n { title, children, open, defaultOpen, onOpenChange, hint, className },\n ref,\n) {\n return (\n <BaseCollapsible.Root\n ref={ref}\n {...(open !== undefined ? { open } : {})}\n {...(defaultOpen !== undefined ? { defaultOpen } : {})}\n {...(onOpenChange ? { onOpenChange: (o: boolean) => onOpenChange(o) } : {})}\n className={cn(\"flex flex-col\", className)}\n >\n <BaseCollapsible.Trigger className={TRIGGER}>\n <DisclosureText title={title} hint={hint} />\n <DisclosureChevron />\n </BaseCollapsible.Trigger>\n <BaseCollapsible.Panel className=\"collapse-motion\">\n <div className=\"px-12 pt-4 pb-12\">{children}</div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Collapsible.displayName = \"Collapsible\";\n\nexport interface AccordionItem {\n value: string;\n title: ReactNode;\n content: ReactNode;\n hint?: ReactNode | undefined;\n}\n\nexport interface AccordionProps {\n items: AccordionItem[];\n multiple?: boolean | undefined;\n defaultValue?: string[] | undefined;\n className?: string | undefined;\n}\n\nexport const Accordion = /* @__PURE__ */ forwardRef<HTMLDivElement, AccordionProps>(function Accordion({ items, multiple = false, defaultValue, className }, ref) {\n return (\n <BaseAccordion.Root\n ref={ref}\n {...(multiple ? { multiple: true } : {})}\n {...(defaultValue ? { defaultValue } : {})}\n className={cn(\"flex flex-col\", className)}\n >\n {items.map((it) => (\n <BaseAccordion.Item key={it.value} value={it.value} className=\"py-4 hairline-b\">\n <BaseAccordion.Header>\n <BaseAccordion.Trigger className={TRIGGER}>\n <DisclosureText title={it.title} hint={it.hint} />\n <DisclosureChevron />\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n <BaseAccordion.Panel className=\"collapse-motion\">\n <div className=\"px-12 pt-4 pb-12 text-body text-fg-secondary\">{it.content}</div>\n </BaseAccordion.Panel>\n </BaseAccordion.Item>\n ))}\n </BaseAccordion.Root>\n );\n});\nif (process.env.NODE_ENV !== \"production\") Accordion.displayName = \"Accordion\";\n"],"mappings":";;;;;;;;AAMA,IAAaO,IAA6B,EACxC,OAAO;CACL,QAAQ,EAAE,SAAS,GAAG;CACtB,MAAM,EAAE,SAAS,qCAAqC;AACxD,EACF,GACaC,IAAqC,EAAE,OAAO,SAAS,GAE9DC,IAAU,GAAGL,EAAmB;AAEtC,SAASM,EAAe,EAAE,UAAO,WAA2D;CAC1F,OACE,kBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CACE,kBAAC,QAAD;GAAM,WAAU;GAAkB,UAAAC;EAAY,CAAA,GAC7CC,KAAQ,kBAAC,QAAD;GAAM,WAAU;GAAqF,UAAAA;EAAW,CAAA,CACrH;;AAEV;AAYA,IAAaC,IAA8B,kBAA6C,SACtF,EAAE,UAAO,aAAU,SAAM,gBAAa,iBAAc,SAAM,gBAC1D,GACA;CACA,OACE,kBAACb,EAAgB,MAAjB;EACO;EACL,GAAKc,MAAS,KAAA,IAAuB,CAAC,IAAZ,EAAE,QAAK;EACjC,GAAKC,MAAgB,KAAA,IAA8B,CAAC,IAAnB,EAAE,eAAY;EAC/C,GAAKC,IAAe,EAAE,eAAe,MAAeA,EAAaC,CAAC,EAAE,IAAI,CAAC;EACzE,WAAWf,EAAG,iBAAiBgB,CAAS;EAL1C,UAAA,CAOE,kBAAClB,EAAgB,SAAjB;GAAyB,WAAWS;GAApC,UAAA,CACE,kBAACC,GAAD;IAAuB;IAAa;GAAO,CAAA,GAC3C,kBAACP,GAAD,CAAoB,CAAA,CACG;EACzB,CAAA,GAAA,kBAACH,EAAgB,OAAjB;GAAuB,WAAU;GAC/B,UAAA,kBAAC,OAAD;IAAK,WAAU;IAAoB;GAAc,CAAA;EAC5B,CAAA,CACH;;AAE1B,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAY,cAAc;AAgBrE,IAAamB,IAA4B,kBAA2C,SAAmB,EAAE,UAAO,cAAW,IAAO,iBAAc,gBAAa,GAAK;CAChK,OACE,kBAAClB,EAAc,MAAf;EACO;EACL,GAAKmB,IAAW,EAAE,UAAU,GAAK,IAAI,CAAC;EACtC,GAAKC,IAAe,EAAE,gBAAa,IAAI,CAAC;EACxC,WAAWnB,EAAG,iBAAiBgB,CAAS;EAEvC,UAAAI,EAAM,KAAK,MACV,kBAACrB,EAAc,MAAf;GAAmC,OAAOsB,EAAG;GAAO,WAAU;GAA9D,UAAA,CACE,kBAACtB,EAAc,QAAf,EAAA,UACE,kBAACA,EAAc,SAAf;IAAuB,WAAWQ;IAAlC,UAAA,CACE,kBAACC,GAAD;KAAgB,OAAOa,EAAG;KAAO,MAAMA,EAAG;IAAO,CAAA,GACjD,kBAACpB,GAAD,CAAoB,CAAA,CACC;GACH,CAAA,EAAA,CAAA,GACtB,kBAACF,EAAc,OAAf;IAAqB,WAAU;IAC7B,UAAA,kBAAC,OAAD;KAAK,WAAU;KAAgD,UAAAsB,EAAG;IAAa,CAAA;GAC5D,CAAA,CACH;EAVK,GAAAA,EAAG,KAUR,CACrB;CACiB,CAAA;AAExB,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as KAESO_PAGE_HEADER_DEFAULT_VARIANTS, n as KAESO_PAGE_HEADER_VARIANTS, r as PageHeader } from "../chunks/page-header-
|
|
2
|
+
export { t as KAESO_PAGE_HEADER_DEFAULT_VARIANTS, n as KAESO_PAGE_HEADER_VARIANTS, r as PageHeader } from "../chunks/page-header-DUaKLpK3.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { t as BrandWordmark, n as KAESO_SIDEBAR_DEFAULT_VARIANTS, r as KAESO_SIDEBAR_VARIANTS, i as SIDEBAR_MAX, a as SIDEBAR_MIN, o as Sidebar, s as SidebarFloatingContext, c as SidebarSheetContext, l as useSidebar } from "../chunks/sidebar-
|
|
2
|
+
export { t as BrandWordmark, n as KAESO_SIDEBAR_DEFAULT_VARIANTS, r as KAESO_SIDEBAR_VARIANTS, i as SIDEBAR_MAX, a as SIDEBAR_MIN, o as Sidebar, s as SidebarFloatingContext, c as SidebarSheetContext, l as useSidebar } from "../chunks/sidebar-BO1mnjVH.js";
|
package/dist/index.js
CHANGED
|
@@ -80,10 +80,10 @@ import { a as Wn, i as Gn, n as Kn, o as qn, r as Jn, s as Yn, t as Xn } from ".
|
|
|
80
80
|
import "./components/combobox.js";
|
|
81
81
|
import { i as Zn, n as Qn, r as $n, t as er } from "./chunks/skeleton-D-qk3mes.js";
|
|
82
82
|
import "./components/skeleton.js";
|
|
83
|
-
import { a as tr, c as nr, i as rr, l as ir, n as ar, o as or, r as sr, s as cr, t as lr } from "./chunks/sidebar-
|
|
83
|
+
import { a as tr, c as nr, i as rr, l as ir, n as ar, o as or, r as sr, s as cr, t as lr } from "./chunks/sidebar-BO1mnjVH.js";
|
|
84
84
|
import "./components/sidebar.js";
|
|
85
|
-
import { a as ur, i as dr, n as fr, o as pr, r as mr, s as hr, t as gr } from "./chunks/app-frame-
|
|
86
|
-
import { t as _r } from "./chunks/nav-sheet-
|
|
85
|
+
import { a as ur, i as dr, n as fr, o as pr, r as mr, s as hr, t as gr } from "./chunks/app-frame-B1FXVFYx.js";
|
|
86
|
+
import { t as _r } from "./chunks/nav-sheet-S7tagFJT.js";
|
|
87
87
|
import "./components/app-frame.js";
|
|
88
88
|
import { KAESO_THEME_MENU_DEFAULT_VARIANTS as vr, KAESO_THEME_MENU_VARIANTS as yr, ThemeMenu as br } from "./components/theme-menu.js";
|
|
89
89
|
import { KAESO_THEME_SELECT_DEFAULT_VARIANTS as xr, KAESO_THEME_SELECT_VARIANTS as Sr, ThemeSelect as Cr } from "./components/theme-select.js";
|
|
@@ -110,7 +110,7 @@ import { KAESO_TABLE_OF_CONTENTS_DEFAULT_VARIANTS as Bi, KAESO_TABLE_OF_CONTENTS
|
|
|
110
110
|
import { n as Ui, r as Wi, t as Gi } from "./chunks/toolbar-u0Gm7Q7-.js";
|
|
111
111
|
import "./components/toolbar.js";
|
|
112
112
|
import { FilterRow as Ki, KAESO_FILTER_ROW_DEFAULT_VARIANTS as qi, KAESO_FILTER_ROW_VARIANTS as Ji } from "./components/filter-row.js";
|
|
113
|
-
import { n as Yi, r as Xi, t as Zi } from "./chunks/page-header-
|
|
113
|
+
import { n as Yi, r as Xi, t as Zi } from "./chunks/page-header-DUaKLpK3.js";
|
|
114
114
|
import "./components/page-header.js";
|
|
115
115
|
import { n as Qi, r as $i, t as ea } from "./chunks/banner-BinTH032.js";
|
|
116
116
|
import "./components/banner.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logicplanes/kaeso-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Kaeso's UI library: React components on Base UI, Tailwind CSS v4 and the Kaeso tokens.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Devin Oldenburg",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"shiki": "4.5.0",
|
|
103
103
|
"tailwind-merge": "3.7.0",
|
|
104
104
|
"uqr": "0.1.3",
|
|
105
|
-
"@logicplanes/kaeso-tokens": "0.
|
|
105
|
+
"@logicplanes/kaeso-tokens": "0.5.1"
|
|
106
106
|
},
|
|
107
107
|
"devDependencies": {
|
|
108
108
|
"@hugeicons/core-free-icons": "4.3.5",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"disclosure-BtYRTDO3.js","names":["__icon_ArrowRight01Icon","Icon","DISCLOSURE_TRIGGER","DisclosureChevron","ArrowRight01Icon"],"sources":["../../src/components/collapsible/disclosure.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\n\nexport const DISCLOSURE_TRIGGER =\n \"group/dt relative flex w-full cursor-pointer items-center gap-8 rounded-pill px-12 text-left transition-control focus-ring-inset\";\n\nexport const DisclosureChevron = /* @__PURE__ */ forwardRef<HTMLSpanElement>(function DisclosureChevron(_props, ref) {\n return (\n <span ref={ref} className=\"flex shrink-0 text-fg-tertiary transition-control group-hover/dt:text-fg-secondary\">\n <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"transition-transform duration-200 ease-overlay group-data-panel-open/dt:rotate-90\" />\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisclosureChevron.displayName = \"DisclosureChevron\";\n"],"mappings":";;;;;;AAIA,IAAaE,IACX,oIAEWC,IAAoC,kBAA4B,SAA2B,GAAQ,GAAK;CACnH,OACE,kBAAC,QAAD;EAAW;EAAK,WAAU;EACxB,UAAA,kBAACF,GAAD;GAAM,MAAMD;GAAyB,MAAK;GAAK,WAAU;EAAqF,CAAA;CAC1I,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAkB,cAAc"}
|