@logicplanes/kaeso-ui 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/NOTICE.md +1 -1
  2. package/ai/component-guides.md +36 -2
  3. package/ai/component-registry.json +67 -5
  4. package/ai/component-registry.md +23 -5
  5. package/ai/icons.md +1 -1
  6. package/ai/tokens.md +1 -1
  7. package/dist/blocks/delete-resource.js +1 -1
  8. package/dist/blocks/pages.js +2 -2
  9. package/dist/blocks/resource-list.js +3 -3
  10. package/dist/chunks/{app-frame-DysOel2X.js → app-frame-D8sGcD0v.js} +6 -6
  11. package/dist/chunks/{app-frame-DysOel2X.js.map → app-frame-D8sGcD0v.js.map} +1 -1
  12. package/dist/chunks/{banner-B3DGLTBu.js → banner-BinTH032.js} +2 -2
  13. package/dist/chunks/{banner-B3DGLTBu.js.map → banner-BinTH032.js.map} +1 -1
  14. package/dist/chunks/{button-IblhXUyZ.js → button-DrmFgdIi.js} +2 -2
  15. package/dist/chunks/button-DrmFgdIi.js.map +1 -0
  16. package/dist/chunks/{checkbox-9tbimmF3.js → checkbox-ahl1SOqU.js} +2 -2
  17. package/dist/chunks/{checkbox-9tbimmF3.js.map → checkbox-ahl1SOqU.js.map} +1 -1
  18. package/dist/chunks/{code-block-KIvuE8jg.js → code-block-CE3H3nMu.js} +3 -3
  19. package/dist/chunks/{code-block-KIvuE8jg.js.map → code-block-CE3H3nMu.js.map} +1 -1
  20. package/dist/chunks/{code-block-64e-Cy1S.js → code-block-O_EPmMIQ.js} +2 -2
  21. package/dist/chunks/{code-block-64e-Cy1S.js.map → code-block-O_EPmMIQ.js.map} +1 -1
  22. package/dist/chunks/{combobox-DkcjkWc6.js → combobox-DghYPLVQ.js} +7 -3
  23. package/dist/chunks/combobox-DghYPLVQ.js.map +1 -0
  24. package/dist/chunks/{command-list-CypqsC4T.js → command-list-BUmEaaBi.js} +3 -3
  25. package/dist/chunks/{command-list-CypqsC4T.js.map → command-list-BUmEaaBi.js.map} +1 -1
  26. package/dist/chunks/{copy-button-CwU8t_9_.js → copy-button-DBPAA1g0.js} +2 -2
  27. package/dist/chunks/{copy-button-CwU8t_9_.js.map → copy-button-DBPAA1g0.js.map} +1 -1
  28. package/dist/chunks/{core-CmK-8ObW.js → core-Cw3pNRp3.js} +10 -9
  29. package/dist/chunks/core-Cw3pNRp3.js.map +1 -0
  30. package/dist/chunks/data-table-CGecI-FI.js +602 -0
  31. package/dist/chunks/data-table-CGecI-FI.js.map +1 -0
  32. package/dist/chunks/{date-popup-DAnjptFt.js → date-popup-C6vVOOWF.js} +2 -2
  33. package/dist/chunks/{date-popup-DAnjptFt.js.map → date-popup-C6vVOOWF.js.map} +1 -1
  34. package/dist/chunks/{dialog-2zb6ClNR.js → dialog-s3_LUPBi.js} +4 -4
  35. package/dist/chunks/{dialog-2zb6ClNR.js.map → dialog-s3_LUPBi.js.map} +1 -1
  36. package/dist/chunks/{domain-obd_w9xk.js → domain-CrQX3p6E.js} +2 -2
  37. package/dist/chunks/{domain-obd_w9xk.js.map → domain-CrQX3p6E.js.map} +1 -1
  38. package/dist/chunks/{icon-button-Dfwpvmav.js → icon-button-6kOn2zrP.js} +2 -2
  39. package/dist/chunks/{icon-button-Dfwpvmav.js.map → icon-button-6kOn2zrP.js.map} +1 -1
  40. package/dist/chunks/identity-BwYixi8Q.js +520 -0
  41. package/dist/chunks/identity-BwYixi8Q.js.map +1 -0
  42. package/dist/chunks/{input-Bo5-UZg2.js → input-D1SeLe3X.js} +2 -2
  43. package/dist/chunks/{input-Bo5-UZg2.js.map → input-D1SeLe3X.js.map} +1 -1
  44. package/dist/chunks/{input-group-jPcK9T_a.js → input-group-BbxwEAUP.js} +2 -2
  45. package/dist/chunks/{input-group-jPcK9T_a.js.map → input-group-BbxwEAUP.js.map} +1 -1
  46. package/dist/chunks/{iso-field-DoqHBg8n.js → iso-field-BVOKAY4H.js} +2 -2
  47. package/dist/chunks/{iso-field-DoqHBg8n.js.map → iso-field-BVOKAY4H.js.map} +1 -1
  48. package/dist/chunks/{list-B4G-sWwV.js → list-o8wcuBOz.js} +117 -94
  49. package/dist/chunks/list-o8wcuBOz.js.map +1 -0
  50. package/dist/chunks/{markdown-C565aBR7.js → markdown-BZKZi9d8.js} +4 -4
  51. package/dist/chunks/{markdown-C565aBR7.js.map → markdown-BZKZi9d8.js.map} +1 -1
  52. package/dist/chunks/{menu-Clvv6ftq.js → menu-BDce2kiw.js} +2 -2
  53. package/dist/chunks/{menu-Clvv6ftq.js.map → menu-BDce2kiw.js.map} +1 -1
  54. package/dist/chunks/{nav-sheet-Dt6JSvzX.js → nav-sheet-D3U7MeaI.js} +3 -3
  55. package/dist/chunks/{nav-sheet-Dt6JSvzX.js.map → nav-sheet-D3U7MeaI.js.map} +1 -1
  56. package/dist/chunks/{page-header-kS5tdmvb.js → page-header-C5Bv1gKE.js} +2 -2
  57. package/dist/chunks/{page-header-kS5tdmvb.js.map → page-header-C5Bv1gKE.js.map} +1 -1
  58. package/dist/chunks/{pagination-D7fAm8qg.js → pagination-D9hM6W2z.js} +3 -3
  59. package/dist/chunks/{pagination-D7fAm8qg.js.map → pagination-D9hM6W2z.js.map} +1 -1
  60. package/dist/chunks/{picker-popover-1FHb1LQG.js → picker-popover-PzVOo62-.js} +4 -4
  61. package/dist/chunks/{picker-popover-1FHb1LQG.js.map → picker-popover-PzVOo62-.js.map} +1 -1
  62. package/dist/chunks/{range-popup-lGiZsG3s.js → range-popup-Dt6Q0Ryw.js} +3 -3
  63. package/dist/chunks/{range-popup-lGiZsG3s.js.map → range-popup-Dt6Q0Ryw.js.map} +1 -1
  64. package/dist/chunks/{rights-B68ocZuq.js → rights-DAHTG_kH.js} +4 -4
  65. package/dist/chunks/{rights-B68ocZuq.js.map → rights-DAHTG_kH.js.map} +1 -1
  66. package/dist/chunks/{select-BqjmQOqx.js → select-UTdHKubp.js} +2 -2
  67. package/dist/chunks/{select-BqjmQOqx.js.map → select-UTdHKubp.js.map} +1 -1
  68. package/dist/chunks/{sidebar-Dq7oGOje.js → sidebar-K30Ae8N5.js} +2 -2
  69. package/dist/chunks/{sidebar-Dq7oGOje.js.map → sidebar-K30Ae8N5.js.map} +1 -1
  70. package/dist/chunks/{sidebar-menu-QSSNu1jJ.js → sidebar-menu-C0qJsQF5.js} +2 -2
  71. package/dist/chunks/{sidebar-menu-QSSNu1jJ.js.map → sidebar-menu-C0qJsQF5.js.map} +1 -1
  72. package/dist/chunks/styles-8fn_bHRP.js +21 -0
  73. package/dist/chunks/styles-8fn_bHRP.js.map +1 -0
  74. package/dist/chunks/{textarea-CO0HP6fK.js → textarea-CRmvC4jd.js} +3 -3
  75. package/dist/chunks/{textarea-CO0HP6fK.js.map → textarea-CRmvC4jd.js.map} +1 -1
  76. package/dist/chunks/{theme-provider-DJhORMlc.js → theme-provider-BjXTggqM.js} +6 -2
  77. package/dist/chunks/theme-provider-BjXTggqM.js.map +1 -0
  78. package/dist/chunks/{timeseries-Ck-q0wWn.js → timeseries-CK86u7M0.js} +3 -3
  79. package/dist/chunks/{timeseries-Ck-q0wWn.js.map → timeseries-CK86u7M0.js.map} +1 -1
  80. package/dist/components/app-frame.js +2 -2
  81. package/dist/components/banner.js +1 -1
  82. package/dist/components/button-group.js +1 -1
  83. package/dist/components/button.js +1 -1
  84. package/dist/components/charts/bar.js +2 -2
  85. package/dist/components/charts/donut.js +1 -1
  86. package/dist/components/charts/gauge.js +1 -1
  87. package/dist/components/charts/heatmap.js +1 -1
  88. package/dist/components/charts/sankey.js +2 -2
  89. package/dist/components/charts/timeseries.js +1 -1
  90. package/dist/components/charts.js +2 -2
  91. package/dist/components/checkbox.js +1 -1
  92. package/dist/components/code-block.js +2 -2
  93. package/dist/components/combobox.js +1 -1
  94. package/dist/components/command-list.js +2 -2
  95. package/dist/components/command-palette.js +1 -1
  96. package/dist/components/copy-button.js +1 -1
  97. package/dist/components/data-table.js +1 -1
  98. package/dist/components/date-picker.js +2 -2
  99. package/dist/components/dialog.js +2 -2
  100. package/dist/components/display-options.js +2 -2
  101. package/dist/components/filter-chip.js +3 -3
  102. package/dist/components/filter-toggle.js +35 -0
  103. package/dist/components/filter-toggle.js.map +1 -0
  104. package/dist/components/icon-button.js +1 -1
  105. package/dist/components/input.js +3 -3
  106. package/dist/components/kaeso/conversation.js +2 -2
  107. package/dist/components/kaeso/identity.js +1 -1
  108. package/dist/components/kaeso/moments.js +3 -3
  109. package/dist/components/kaeso/rights.js +1 -1
  110. package/dist/components/kaeso/usage.js +1 -1
  111. package/dist/components/kaeso.js +11 -16
  112. package/dist/components/kaeso.js.map +1 -1
  113. package/dist/components/key-value.js +1 -1
  114. package/dist/components/list.js +1 -1
  115. package/dist/components/markdown.js +1 -1
  116. package/dist/components/menu.js +2 -2
  117. package/dist/components/page-header.js +1 -1
  118. package/dist/components/pagination.js +1 -1
  119. package/dist/components/playground.js +9 -9
  120. package/dist/components/select.js +1 -1
  121. package/dist/components/sheet.js +1 -1
  122. package/dist/components/sidebar.js +1 -1
  123. package/dist/components/tabs.js +4 -4
  124. package/dist/components/tabs.js.map +1 -1
  125. package/dist/components/theme-menu.js +3 -3
  126. package/dist/components/theme-select.js +2 -2
  127. package/dist/components/toast.js +40 -38
  128. package/dist/components/toast.js.map +1 -1
  129. package/dist/index.js +69 -68
  130. package/dist/kaeso.css +19 -12
  131. package/dist/styles.css +1 -1
  132. package/dist/theme.js +1 -1
  133. package/dist/types/components/combobox/combobox.d.ts +2 -0
  134. package/dist/types/components/filter-toggle/docs.d.ts +11 -0
  135. package/dist/types/components/filter-toggle/filter-toggle.d.ts +23 -0
  136. package/dist/types/components/filter-toggle/index.d.ts +1 -0
  137. package/dist/types/components/kaeso/docs.d.ts +1 -0
  138. package/dist/types/components/kaeso/identity.d.ts +1 -0
  139. package/dist/types/components/kaeso/provider-marks.d.ts +27 -2
  140. package/dist/types/components/menu/styles.d.ts +1 -1
  141. package/dist/types/components/tabs/tabs.d.ts +2 -2
  142. package/dist/types/index.d.ts +1 -0
  143. package/package.json +5 -5
  144. package/dist/chunks/button-IblhXUyZ.js.map +0 -1
  145. package/dist/chunks/combobox-DkcjkWc6.js.map +0 -1
  146. package/dist/chunks/core-CmK-8ObW.js.map +0 -1
  147. package/dist/chunks/data-table-CqY8_6IS.js +0 -581
  148. package/dist/chunks/data-table-CqY8_6IS.js.map +0 -1
  149. package/dist/chunks/identity-3Foi5F8w.js +0 -361
  150. package/dist/chunks/identity-3Foi5F8w.js.map +0 -1
  151. package/dist/chunks/list-B4G-sWwV.js.map +0 -1
  152. package/dist/chunks/styles-hkFkoBbi.js +0 -21
  153. package/dist/chunks/styles-hkFkoBbi.js.map +0 -1
  154. package/dist/chunks/theme-provider-DJhORMlc.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-B4G-sWwV.js","names":["__icon_Add01Icon","__icon_Cancel01Icon","cn","usePortalContainer","useInset","useGutterPadded","Icon","lazyModule","useLazyModuleRetried","Text","IconButton","useLayoutWidth","Skeleton","TruncatedText","scrollParent","useCoarsePointer","checkbox","n","RowCheckbox","ariaLabel","mod","retry","over","setOver","useState","pressed","setPressed","useEffect","timer","release","onToggle","checked","virtualRows","KAESO_LIST_VARIANTS","KAESO_LIST_DEFAULT_VARIANTS","ID_W","NARROW","FOCUSABLE","TEXT_ENTRY","removeWidgetsFromTabOrder","line","root","primary","widget","List","selectedProp","forceRow","inset","selectedInner","setSelectedInner","selected","setSelected","useCallback","s","onSelectedChange","collapsed","setCollapsed","groups","g","active","setActive","anchor","setAnchor","useRef","bar","width","narrow","flat","useMemo","rows","list","item","c","i","a","items","firstRow","f","none","virtual","virtualizeAbove","coarse","estimateSize","density","rowsModule","retryRows","VirtualRows","scrollTo","tabStop","focusLine","reach","el","clearOfBar","now","hadVirtualRows","useLayoutEffect","observer","toggle","id","enabledIds","lines","onKeyDown","target","onPrimary","index","row","selectable","moveTo","from","next","widgets","w","at","onOpen","selecting","focused","render","GroupHeader","ListRow","ref","loading","className","LoadingRows","empty","FirstRows","selectionBar","SelectionBar","selectionActions","rowTone","card","selectsText","selection","top","covered","view","total","extra","count","j","padded","grouped","force","t","useUiText","stacked","wraps","wrapSubtitle","off","trailing","onSelect","depth","lastChild","idWidth","first","indent","glyph","title","onAdd","Add01Icon","addLabel","container","createPortal","children","onClear","Cancel01Icon","SelectionAction","danger","icon"],"sources":["../../src/components/list/row-checkbox.tsx","../../src/components/list/list.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\n\nconst checkbox = /* @__PURE__ */ lazyModule(() => import(\"../checkbox/checkbox.js\"), { base: () => import.meta.url });\n\nexport function RowCheckbox({ checked, onToggle, \"aria-label\": ariaLabel }: { checked: boolean; onToggle: () => void; \"aria-label\": string }) {\n const [mod, retry] = useLazyModuleRetried(checkbox, true);\n const [over, setOver] = useState(false);\n const [pressed, setPressed] = useState(false);\n useEffect(() => {\n if (!pressed) return;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const release = () => {\n timer = setTimeout(() => setPressed(false));\n };\n window.addEventListener(\"pointerup\", release, true);\n window.addEventListener(\"pointercancel\", release, true);\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"pointerup\", release, true);\n window.removeEventListener(\"pointercancel\", release, true);\n };\n }, [pressed]);\n if (mod && !over && !pressed) return <mod.CheckboxBox checked={checked} onCheckedChange={onToggle} aria-label={ariaLabel} />;\n return (\n <span\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n onPointerEnter={() => {\n setOver(true);\n retry();\n }}\n onPointerLeave={() => setOver(false)}\n onPointerDown={() => setPressed(true)}\n onClick={() => {\n onToggle();\n setOver(false);\n setPressed(false);\n }}\n className=\"relative -m-3 inline-flex size-24 shrink-0 cursor-pointer items-center justify-center rounded-checkbox\"\n >\n <span aria-hidden className={cn(\"flex size-18 items-center justify-center rounded-checkbox\", checked ? \"bg-ink\" : \"bg-raised shadow-selector\")} />\n </span>\n );\n}\n","import { forwardRef, useCallback, useLayoutEffect, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useGutterPadded, useInset } from \"../../utils/inset.js\";\nimport { Add01Icon as __icon_Add01Icon, Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Text } from \"../text/text.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useLayoutWidth } from \"../../hooks/use-layout-width.js\";\nimport { useCoarsePointer } from \"../../hooks/use-coarse-pointer.js\";\nimport { createPortal } from \"react-dom\";\nimport { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { lazyModule, useLazyModuleRetried } from \"../../utils/lazy-module.js\";\nimport { RowCheckbox } from \"./row-checkbox.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nconst virtualRows = /* @__PURE__ */ lazyModule(() => import(\"./virtual-rows.js\"), { base: () => import.meta.url });\n\nexport const KAESO_LIST_VARIANTS = {\n density: {\n default: { classes: \"h-44\" },\n compact: { classes: \"h-36 coarse:h-44\" },\n },\n} as const;\nexport const KAESO_LIST_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\nexport interface ListItemData {\n id: string;\n title: ReactNode;\n textValue?: string | undefined;\n subtitle?: ReactNode | undefined;\n glyph?: ReactNode | undefined;\n leading?: ReactNode | undefined;\n displayId?: string | undefined;\n meta?: ReactNode | undefined;\n date?: ReactNode | undefined;\n avatar?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children?: ListItemData[] | undefined;\n disabled?: boolean | undefined;\n}\n\nexport interface ListGroup {\n id: string;\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n items: ListItemData[];\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n defaultCollapsed?: boolean | undefined;\n}\n\ntype Flat = { kind: \"header\"; group: ListGroup; key: string } | { kind: \"row\"; item: ListItemData; depth: 0 | 1; lastChild: boolean; key: string };\n\nexport interface ListProps {\n items?: ListItemData[] | undefined;\n groups?: ListGroup[] | undefined;\n onOpen?: ((item: ListItemData) => void) | undefined;\n selectable?: boolean | undefined;\n selected?: Set<string> | undefined;\n onSelectedChange?: ((selected: Set<string>) => void) | undefined;\n idWidth?: 48 | 64 | 80 | 96 | 120 | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n selectionActions?: ReactNode | undefined;\n selectionBar?: boolean | undefined;\n loading?: boolean | undefined;\n empty?: ReactNode | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ID_W = { 48: \"w-48\", 64: \"w-64\", 80: \"w-80\", 96: \"w-96\", 120: \"w-120\" } as const;\n\nconst NARROW = 520;\nconst FOCUSABLE = \"a[href], button, input, select, textarea, [tabindex], [contenteditable=true]\";\nconst TEXT_ENTRY = \"input:not([type=checkbox]):not([type=radio]), textarea, select, [contenteditable=true]\";\n\nfunction removeWidgetsFromTabOrder(root: HTMLElement) {\n for (const line of root.querySelectorAll<HTMLElement>(\"[role=row]\")) {\n const primary = line.querySelector(\"[data-index]\");\n if (!primary) continue;\n for (const widget of line.querySelectorAll<HTMLElement>(FOCUSABLE)) {\n if (widget !== primary && widget.getAttribute(\"tabindex\") !== \"-1\") widget.setAttribute(\"tabindex\", \"-1\");\n }\n }\n}\n\nexport const List = /* @__PURE__ */ forwardRef<HTMLDivElement, ListProps>(function List(\n {\n items,\n groups,\n onOpen,\n selectable,\n selected: selectedProp,\n onSelectedChange,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n virtualizeAbove = 100,\n selectionActions,\n selectionBar = true,\n loading,\n empty,\n className,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n },\n ref,\n) {\n const inset = useInset();\n const [selectedInner, setSelectedInner] = useState<Set<string>>(new Set());\n const selected = selectedProp ?? selectedInner;\n const setSelected = useCallback(\n (s: Set<string>) => {\n if (!selectedProp) setSelectedInner(s);\n onSelectedChange?.(s);\n },\n [selectedProp, onSelectedChange],\n );\n const [collapsed, setCollapsed] = useState<Set<string>>(() => new Set((groups ?? []).filter((g) => g.defaultCollapsed).map((g) => g.id)));\n const [active, setActive] = useState(-1);\n const [anchor, setAnchor] = useState<number | null>(null);\n const root = useRef<HTMLDivElement | null>(null);\n const bar = useRef<HTMLDivElement | null>(null);\n const width = useLayoutWidth(root);\n const narrow = !!width && width < NARROW;\n\n const flat = useMemo<Flat[]>(() => {\n const rows = (list: ListItemData[]): Flat[] =>\n list.flatMap((item) => [\n { kind: \"row\" as const, item, depth: 0 as const, lastChild: false, key: item.id },\n ...(item.children ?? []).map((c, i, a) => ({ kind: \"row\" as const, item: c, depth: 1 as const, lastChild: i === a.length - 1, key: c.id })),\n ]);\n if (groups) return groups.flatMap((g) => [{ kind: \"header\" as const, group: g, key: `h-${g.id}` }, ...(collapsed.has(g.id) ? [] : rows(g.items))]);\n return rows(items ?? []);\n }, [items, groups, collapsed]);\n const firstRow = flat.findIndex((f) => f.kind === \"row\");\n const none = groups ? groups.every((g) => g.items.length === 0) : (items ?? []).length === 0;\n\n const virtual = flat.length > virtualizeAbove;\n const coarse = useCoarsePointer();\n const estimateSize = (i: number) => (flat[i]?.kind === \"header\" ? (i === 0 ? 36 : 52) : narrow ? 64 : density === \"compact\" && !coarse ? 36 : 44);\n const [rowsModule, retryRows] = useLazyModuleRetried(virtualRows, virtual);\n const VirtualRows = rowsModule?.VirtualRows;\n const scrollTo = useRef<((index: number) => void) | null>(null);\n\n if (active >= flat.length) setActive(-1);\n const tabStop = active >= 0 ? active : flat.length ? 0 : -1;\n const focusLine = (i: number) => {\n setActive(i);\n if (virtual) scrollTo.current?.(i);\n const line = () => root.current?.querySelector<HTMLElement>(`[data-index=\"${i}\"]`);\n const reach = (el: HTMLElement | null | undefined) => {\n if (!el) return;\n el.focus();\n clearOfBar(el, bar.current);\n };\n const now = line();\n if (now) reach(now);\n else requestAnimationFrame(() => reach(line()));\n };\n const hadVirtualRows = useRef(!!VirtualRows);\n useLayoutEffect(() => {\n if (VirtualRows && !hadVirtualRows.current && active >= 0 && document.activeElement === document.body) {\n root.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`)?.focus();\n }\n hadVirtualRows.current = !!VirtualRows;\n });\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n removeWidgetsFromTabOrder(el);\n const observer = new MutationObserver(() => removeWidgetsFromTabOrder(el));\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n const toggle = (id: string) => {\n const s = new Set(selected);\n if (s.has(id)) s.delete(id);\n else s.add(id);\n setSelected(s);\n };\n const enabledIds = (lines: Flat[]) => lines.flatMap((f) => (f.kind === \"row\" && !f.item.disabled ? [f.item.id] : []));\n const onKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n const target = e.target as HTMLElement;\n if (!e.currentTarget.contains(target) || target.closest(TEXT_ENTRY)) return;\n const line = target.closest<HTMLElement>(\"[role=row]\");\n const primary = line?.querySelector<HTMLElement>(\"[data-index]\");\n if (!line || !primary) return;\n const onPrimary = target === primary;\n // A tooltip trigger prevents Escape's default even while its tooltip is still closed; only an open popup keeps the key.\n if (e.key === \"Escape\" && !onPrimary && !e.altKey && !e.metaKey && !e.ctrlKey && !target.closest(\"[data-popup-open], [aria-expanded=true]\")) {\n e.preventDefault();\n primary.focus();\n return;\n }\n if (e.defaultPrevented) return;\n const index = Number(primary.dataset.index);\n const f = flat[index];\n const row = f?.kind === \"row\" ? f.item : undefined;\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n setSelected(new Set(enabledIds(flat)));\n }\n return;\n }\n const moveTo = (next: number) => {\n e.preventDefault();\n if (e.shiftKey && selectable) {\n const from = anchor ?? index;\n setAnchor(from);\n const s = new Set(selected);\n enabledIds(flat.slice(Math.min(from, next), Math.max(from, next) + 1)).forEach((id) => s.add(id));\n setSelected(s);\n } else setAnchor(null);\n focusLine(next);\n };\n const widgets = () =>\n [...line.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => w !== primary && !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n if (e.key === \"ArrowDown\" || (e.key === \"j\" && !e.shiftKey)) moveTo(Math.min(flat.length - 1, index + 1));\n else if (e.key === \"ArrowUp\" || (e.key === \"k\" && !e.shiftKey)) moveTo(Math.max(0, index - 1));\n else if (e.key === \"Home\") moveTo(0);\n else if (e.key === \"End\") moveTo(flat.length - 1);\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowLeft\") {\n const list = widgets();\n const at = onPrimary ? -1 : list.indexOf(target);\n const next = e.key === \"ArrowRight\" ? list[at + 1] : at > 0 ? list[at - 1] : at === 0 ? primary : undefined;\n if (!next) return;\n e.preventDefault();\n next.focus();\n } else if (!onPrimary || !row || e.shiftKey) {\n return;\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n if (!row.disabled) toggle(row.id);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n if (!row.disabled) onOpen?.(row);\n } else if (e.key === \"Escape\" && selectable && selected.size) {\n setSelected(new Set());\n }\n };\n const selecting = selected.size > 0;\n useLayoutEffect(() => {\n const focused = document.activeElement;\n if (selecting && focused instanceof HTMLElement && root.current?.contains(focused)) clearOfBar(focused, bar.current);\n }, [selecting]);\n const render = (f: Flat, i: number) =>\n f.kind === \"header\" ? (\n <GroupHeader\n key={f.key}\n title={f.group.title}\n glyph={f.group.glyph}\n count={f.group.count ?? f.group.items.length}\n collapsed={collapsed.has(f.group.id)}\n onToggle={() => {\n const s = new Set(collapsed);\n if (s.has(f.group.id)) s.delete(f.group.id);\n else s.add(f.group.id);\n setCollapsed(s);\n }}\n onAdd={f.group.onAdd}\n addLabel={f.group.addLabel}\n indent={!!selectable}\n first={i === 0}\n index={i}\n active={i === tabStop}\n onFocus={() => setActive(i)}\n />\n ) : (\n <ListRow\n key={f.key}\n index={i}\n item={f.item}\n depth={f.depth}\n lastChild={f.lastChild}\n idWidth={idWidth}\n density={density}\n wrapSubtitle={wrapSubtitle}\n narrow={narrow}\n active={i === tabStop}\n selected={selected.has(f.item.id)}\n selectable={!!selectable}\n selecting={selecting}\n onSelect={() => toggle(f.item.id)}\n onOpen={() => onOpen?.(f.item)}\n onFocus={() => setActive(i)}\n {...(forceRow && i === firstRow ? { \"data-force\": forceRow } : {})}\n />\n );\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) ref.current = e;\n }}\n role=\"grid\"\n aria-label={ariaLabel}\n aria-rowcount={flat.length || undefined}\n aria-multiselectable={selectable || undefined}\n aria-busy={loading || undefined}\n onKeyDown={(e) => {\n retryRows();\n onKeyDown(e);\n }}\n onPointerEnter={retryRows}\n onPointerDown={retryRows}\n onFocus={retryRows}\n onWheel={retryRows}\n className={cn(\"relative flex flex-col outline-none\", inset && \"overflow-hidden rounded-group bg-raised shadow-xs\", className)}\n >\n {loading && (none || flat.length === 0) ? (\n <LoadingRows density={density} grouped={!!groups} />\n ) : none && empty ? (\n <div role=\"row\">\n <div role=\"gridcell\">{empty}</div>\n </div>\n ) : virtual && VirtualRows ? (\n <VirtualRows\n count={flat.length}\n estimateSize={estimateSize}\n getScrollElement={() => scrollParent(root.current)}\n scrollTo={scrollTo}\n row={(i) => render(flat[i]!, i)}\n measure={narrow}\n />\n ) : virtual ? (\n <FirstRows count={flat.length} estimateSize={estimateSize} row={(i) => render(flat[i]!, i)} />\n ) : (\n flat.map(render)\n )}\n {selectable && selecting && selectionBar && (\n <SelectionBar ref={bar} count={selected.size} onClear={() => setSelected(new Set())}>\n {selectionActions}\n </SelectionBar>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") List.displayName = \"List\";\n\nfunction rowTone(card: boolean, selected: boolean) {\n if (selected)\n return card\n ? \"bg-raised-pressed controls-on-fill hover:raised-selected-hover active:raised-selected-hover\"\n : \"bg-fill-2 controls-on-fill hover:bg-fill-3 active:bg-fill-3\";\n return card ? \"hover:bg-raised-hover hover:controls-on-fill active:bg-raised-pressed\" : \"hover:bg-fill-1 hover:controls-on-fill active:bg-fill-2\";\n}\n\nfunction selectsText(row: HTMLElement) {\n const selection = typeof window === \"undefined\" ? null : window.getSelection();\n return !!selection && !selection.isCollapsed && !!selection.anchorNode && row.contains(selection.anchorNode);\n}\n\nfunction clearOfBar(el: HTMLElement, bar: HTMLElement | null) {\n const top = bar?.firstElementChild?.getBoundingClientRect().top;\n if (top === undefined) return;\n const covered = el.getBoundingClientRect().bottom + 8 - top;\n if (covered > 0) scrollParent(el)?.scrollBy({ top: covered });\n}\n\nfunction FirstRows({ count, estimateSize, row }: { count: number; estimateSize: (index: number) => number; row: (index: number) => ReactNode }) {\n const view = typeof window === \"undefined\" ? 1024 : window.innerHeight;\n const rows: ReactNode[] = [];\n let total = 0;\n let extra = 12;\n for (let i = 0; i < count; i++) {\n if (total >= view && extra-- <= 0) {\n for (let j = i; j < count; j++) total += estimateSize(j);\n break;\n }\n rows.push(\n <div key={i} role=\"presentation\" className=\"absolute top-0 left-0 w-full\" style={{ transform: `translateY(${Math.round(total)}px)` }}>\n {row(i)}\n </div>,\n );\n total += estimateSize(i);\n }\n return (\n <div role=\"presentation\" className=\"relative w-full\" style={{ height: total }}>\n {rows}\n </div>\n );\n}\n\nfunction LoadingRows({ density, grouped }: { density: keyof typeof KAESO_LIST_VARIANTS.density; grouped: boolean }) {\n const padded = useGutterPadded();\n return (\n <div role=\"presentation\">\n {grouped && (\n <div role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className=\"flex h-36 items-center px-12\">\n <Skeleton shape=\"line\" className=\"w-80\" />\n </div>\n </div>\n )}\n {[62, 48, 70, 54, 40, 58].map((w, i) => (\n <div key={i} role=\"presentation\" className={padded ? \"px-0\" : \"px-24\"}>\n <div className={cn(\"flex items-center gap-12 px-12\", KAESO_LIST_VARIANTS.density[density].classes)}>\n <Skeleton shape=\"line\" className=\"min-w-0\" style={{ width: `${w}%` }} />\n <span className=\"flex-1\" />\n <Skeleton shape=\"line\" className=\"w-64 shrink-0\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport interface ListRowProps {\n item: ListItemData;\n index?: number | undefined;\n depth?: 0 | 1 | undefined;\n lastChild?: boolean | undefined;\n idWidth?: keyof typeof ID_W | undefined;\n density?: keyof typeof KAESO_LIST_VARIANTS.density | undefined;\n wrapSubtitle?: boolean | undefined;\n narrow?: boolean | undefined;\n active?: boolean | undefined;\n selected?: boolean | undefined;\n selectable?: boolean | undefined;\n selecting?: boolean | undefined;\n onSelect?: (() => void) | undefined;\n onOpen?: (() => void) | undefined;\n onFocus?: (() => void) | undefined;\n \"data-force\"?: string | undefined;\n}\n\nexport const ListRow = /* @__PURE__ */ forwardRef<HTMLDivElement, ListRowProps>(function ListRow(\n {\n item,\n index,\n depth = 0,\n lastChild,\n idWidth,\n density = \"default\",\n wrapSubtitle = false,\n narrow = false,\n active,\n selected,\n selectable,\n selecting,\n onSelect,\n onOpen,\n onFocus,\n \"data-force\": force,\n },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n const lines = narrow && !!(item.meta || item.date);\n const stacked = (card || lines) && !!item.subtitle;\n const wraps = stacked && wrapSubtitle;\n const off = !!item.disabled;\n const trailing = item.avatar && <span className={cn(\"flex shrink-0\", off && \"opacity-50\")}>{item.avatar}</span>;\n return (\n <div\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n className={card ? cn(\"px-0\", index !== undefined && index > 0 && \"hairline-t\") : padded ? \"px-0\" : \"px-24\"}\n >\n <div\n ref={ref}\n role=\"gridcell\"\n aria-selected={selectable ? !!selected : undefined}\n aria-disabled={off || undefined}\n data-index={index}\n data-row=\"\"\n tabIndex={active === false ? -1 : 0}\n onFocus={onFocus}\n onClick={(e: MouseEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.target as Node) || (e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n if (selectsText(e.currentTarget)) return;\n if (selecting && selectable) onSelect?.();\n else onOpen?.();\n }}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/row relative flex cursor-pointer items-center gap-12 text-body transition-control focus-ring-inset\",\n card ? \"rounded-none px-20\" : \"rounded-item px-12\",\n stacked || lines || wraps ? \"min-h-56 py-8\" : card && density === \"default\" ? \"h-48\" : KAESO_LIST_VARIANTS.density[density].classes,\n rowTone(card, !!selected),\n off && \"pointer-events-none text-fg-disabled\",\n )}\n >\n {selectable && (\n <span\n className={cn(\n \"flex shrink-0 transition-control select-none\",\n selecting || selected ? \"opacity-100\" : \"opacity-0 group-hover/row:opacity-100 group-focus-visible/row:opacity-100 coarse:opacity-100\",\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <RowCheckbox\n checked={!!selected}\n onToggle={() => onSelect?.()}\n aria-label={t(\"list.selectItem\", \"Select {name}\", { name: item.textValue ?? (typeof item.title === \"string\" ? item.title : item.id) })}\n />\n </span>\n )}\n {depth === 1 && (\n <span aria-hidden className=\"relative -ml-4 h-full w-16 shrink-0 self-stretch\">\n <span className={cn(\"absolute left-6 w-1 bg-line-strong forced-line\", lastChild ? \"top-0 h-1/2\" : \"inset-y-0\")} />\n <span className=\"absolute top-1/2 left-6 h-1 w-10 bg-line-strong forced-line\" />\n </span>\n )}\n {item.glyph && <span className={cn(\"flex size-16 shrink-0 items-center justify-center\", off && \"opacity-50\")}>{item.glyph}</span>}\n {item.leading && <span className={cn(\"-mr-4 flex shrink-0\", stacked && \"self-start\", off && \"opacity-50\")}>{item.leading}</span>}\n {item.displayId && (\n <TruncatedText\n className={cn(\n \"shrink-0 mono text-small tabular\",\n off ? \"text-fg-disabled\" : selected ? \"text-fg-secondary\" : \"text-fg-tertiary\",\n idWidth && ID_W[idWidth],\n )}\n >\n {item.displayId}\n </TruncatedText>\n )}\n <span className={cn(\"flex min-w-0 flex-1\", lines ? \"flex-col items-stretch gap-4\" : \"contents\")}>\n <span className={cn(\"flex min-w-0\", lines ? \"w-full\" : \"flex-1\", stacked ? \"flex-col items-start gap-2\" : \"items-baseline gap-8\")}>\n {typeof item.title === \"string\" ? (\n <Text truncate weight=\"medium\" tone={off ? \"inherit\" : \"default\"} className={cn(\"min-w-0 shrink\", stacked && \"max-w-full\")}>\n {item.title}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate font-medium\", off ? \"text-inherit\" : \"text-fg\", stacked && \"max-w-full\")}>{item.title}</span>\n )}\n {item.subtitle && (\n <TruncatedText\n wrap={wraps}\n className={cn(\"min-w-0\", off ? \"text-fg-disabled\" : \"text-fg-secondary\", stacked ? \"max-w-full text-small\" : \"flex-1 basis-0\")}\n >\n {item.subtitle}\n </TruncatedText>\n )}\n </span>\n {lines && (\n <span className=\"flex h-24 min-w-0 items-center gap-8\">\n {item.meta && <span className={cn(\"flex min-w-0 items-center gap-6 overflow-hidden\", off && \"opacity-50\")}>{item.meta}</span>}\n {item.date && (\n <span className={cn(\"shrink-0 text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>{item.date}</span>\n )}\n {trailing}\n {item.actions && <span className=\"ml-auto flex shrink-0 items-center gap-2\">{item.actions}</span>}\n </span>\n )}\n </span>\n {!lines && (item.meta || item.actions) && (\n <span className=\"relative flex shrink-0 items-center gap-6\">\n <span\n className={cn(\n \"flex items-center gap-6\",\n item.actions && \"transition-control group-hover/row:opacity-0 group-focus-within/row:opacity-0\",\n off && \"opacity-50\",\n )}\n >\n {item.meta}\n </span>\n {item.actions && (\n <span\n className={cn(\n \"flex items-center gap-2 opacity-0 transition-control group-hover/row:opacity-100 group-focus-within/row:opacity-100 coarse:opacity-100\",\n item.meta && \"absolute inset-y-0 right-0 coarse:static\",\n )}\n >\n {item.actions}\n </span>\n )}\n </span>\n )}\n {!lines && item.date && (\n <span className={cn(\"min-w-80 shrink-0 text-right text-small whitespace-nowrap tabular\", off ? \"text-fg-disabled\" : \"text-fg-secondary\")}>\n {item.date}\n </span>\n )}\n {!lines && trailing}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ListRow.displayName = \"ListRow\";\n\nexport interface GroupHeaderProps {\n title: ReactNode;\n glyph?: ReactNode | undefined;\n count?: number | undefined;\n collapsed?: boolean | undefined;\n onToggle?: (() => void) | undefined;\n onAdd?: (() => void) | undefined;\n addLabel?: string | undefined;\n indent?: boolean | undefined;\n first?: boolean | undefined;\n index?: number | undefined;\n active?: boolean | undefined;\n onFocus?: (() => void) | undefined;\n}\n\nexport const GroupHeader = /* @__PURE__ */ forwardRef<HTMLDivElement, GroupHeaderProps>(function GroupHeader(\n { title, glyph, count, collapsed, onToggle, onAdd, addLabel, indent, first, index, active, onFocus },\n ref,\n) {\n const card = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n return (\n <div\n ref={ref}\n role=\"row\"\n aria-rowindex={index !== undefined ? index + 1 : undefined}\n onFocus={onFocus}\n className={card ? cn(\"group/gh bg-fill-1\", !first && \"hairline-t\") : cn(\"group/gh\", !first && \"pt-16\", padded ? \"px-0\" : \"px-24\")}\n >\n <div role=\"gridcell\" className={cn(\"flex h-36 items-center gap-4\", card && \"pr-12 pl-8\")}>\n <button\n type=\"button\"\n aria-expanded={!collapsed}\n data-index={index}\n tabIndex={active === false ? -1 : 0}\n onClick={onToggle}\n className={cn(\n \"relative flex h-28 min-w-0 cursor-pointer items-center gap-8 rounded-pill px-12 text-small transition-control focus-ring tap-target\",\n card ? \"hover:bg-fill-2 active:bg-fill-3\" : \"hover:bg-fill-1 active:bg-fill-2\",\n )}\n >\n {indent && !card && <span aria-hidden className=\"w-22 shrink-0\" />}\n {glyph && <span className=\"flex size-16 items-center justify-center\">{glyph}</span>}\n <span className=\"truncate font-medium text-fg-secondary\">{title}</span>\n {count !== undefined && <span className=\"text-fg-tertiary tabular\">{count}</span>}\n <svg\n viewBox=\"0 0 8 8\"\n aria-hidden\n className={cn(\"size-10 text-fg-tertiary transition-transform duration-200 ease-standard\", !collapsed && \"rotate-90\")}\n >\n <path d=\"M2.5 1.5 5.5 4l-3 2.5z\" fill=\"currentColor\" />\n </svg>\n </button>\n <span className=\"flex-1\" />\n {onAdd && (\n <span className=\"flex opacity-0 transition-control group-hover/gh:opacity-100 group-focus-within/gh:opacity-100 coarse:opacity-100\">\n <IconButton icon={__icon_Add01Icon} aria-label={addLabel ?? t(\"list.add\", \"Add\")} size=\"xs\" onClick={onAdd} />\n </span>\n )}\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") GroupHeader.displayName = \"GroupHeader\";\n\nexport interface SelectionBarProps {\n count: number;\n onClear: () => void;\n children?: ReactNode | undefined;\n}\n\nexport const SelectionBar = /* @__PURE__ */ forwardRef<HTMLDivElement, SelectionBarProps>(function SelectionBar({ count, onClear, children }, ref) {\n const container = usePortalContainer();\n const t = useUiText();\n if (typeof document === \"undefined\") return null;\n return createPortal(\n <div\n ref={ref}\n role=\"region\"\n aria-label={t(\"list.selection\", \"Selection\")}\n className=\"pointer-events-none fixed right-0 bottom-24 left-0 z-50 flex justify-center px-16\"\n >\n <div className=\"pointer-events-auto flex min-h-44 items-center gap-4 rounded-pill bg-toast py-6 pr-6 pl-16 text-body font-medium text-toast-fg shadow-toast popup-motion\">\n <span className=\"pr-8 tabular\">{t(\"list.selected\", \"{count} selected\", { count: String(count) })}</span>\n <span className=\"mr-4 h-20 w-1 bg-toast-action\" aria-hidden />\n {children}\n <button\n type=\"button\"\n onClick={onClear}\n aria-label={t(\"list.clearSelection\", \"Clear selection\")}\n className=\"inline-flex size-32 cursor-pointer items-center justify-center rounded-pill text-toast-fg-secondary transition-control hover:bg-toast-action hover:text-toast-fg focus-ring\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"sm\" />\n </button>\n </div>\n </div>,\n container ?? document.body,\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionBar.displayName = \"SelectionBar\";\n\nexport interface SelectionActionProps {\n children: ReactNode;\n onClick?: (() => void) | undefined;\n icon?: IconData | undefined;\n danger?: boolean | undefined;\n}\n\nexport const SelectionAction = /* @__PURE__ */ forwardRef<HTMLButtonElement, SelectionActionProps>(function SelectionAction({ children, onClick, icon, danger }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n className={cn(\n \"inline-flex h-32 cursor-pointer items-center gap-6 rounded-pill px-12 text-body font-medium transition-control hover:bg-toast-action focus-ring\",\n danger ? \"text-toast-danger\" : \"text-toast-fg\",\n icon && \"pl-10\",\n )}\n >\n {icon && <Icon icon={icon} size=\"sm\" className={danger ? undefined : \"text-toast-fg-secondary\"} />}\n {children}\n </button>\n );\n});\nif (process.env.NODE_ENV !== \"production\") SelectionAction.displayName = \"SelectionAction\";\n"],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- //#region \0rolldown/runtime.js
2
- var e = Object.defineProperty, t = (t, n) => {
3
- let r = {};
4
- for (var i in t) e(r, i, {
5
- get: t[i],
6
- enumerable: !0
7
- });
8
- return n || e(r, Symbol.toStringTag, { value: "Module" }), r;
9
- }, n = /* @__PURE__ */ t({
10
- MENU_DANGER: () => o,
11
- MENU_HINT: () => l,
12
- MENU_ICON: () => a,
13
- MENU_ITEM: () => i,
14
- MENU_LABEL: () => s,
15
- MENU_POPUP: () => r,
16
- MENU_SEPARATOR: () => c
17
- }), r = "z-50 flex min-w-220 max-w-360 flex-col overflow-y-auto overscroll-contain rounded-menu bg-raised p-6 text-body text-fg shadow-raised outline-none popup-motion scrollbar-quiet max-h-(--available-height)", i = "group/item relative flex min-h-34 w-full cursor-default items-center gap-10 rounded-item px-10 text-left text-body font-medium text-fg outline-none select-none coarse:min-h-44 highlighted:bg-item-hover active:bg-item-pressed disabled:pointer-events-none disabled:text-fg-disabled", a = "text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled forced-colors:text-current", o = "text-danger-text highlighted:bg-danger-tint active:bg-danger-tint", s = "flex h-28 items-center px-10 text-caption font-medium text-fg-secondary", c = "mx-10 my-4 h-1 shrink-0 bg-line-subtle", l = "ml-auto flex shrink-0 items-center gap-4 pl-16 text-caption font-medium text-fg-tertiary tabular group-data-highlighted/item:text-fg-secondary forced-colors:text-current";
18
- //#endregion
19
- export { s as a, n as c, i, t as l, l as n, r as o, a as r, c as s, o as t };
20
-
21
- //# sourceMappingURL=styles-hkFkoBbi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"styles-hkFkoBbi.js","names":["__defProp","__exportAll","target","name","all","no_symbols","styles_exports","MENU_DANGER","MENU_HINT","MENU_ICON","MENU_ITEM","MENU_LABEL","MENU_POPUP","MENU_SEPARATOR"],"sources":["../../src/components/menu/styles.ts"],"sourcesContent":["export const MENU_POPUP =\n \"z-50 flex min-w-220 max-w-360 flex-col overflow-y-auto overscroll-contain rounded-menu bg-raised p-6 text-body text-fg shadow-raised outline-none popup-motion scrollbar-quiet max-h-(--available-height)\";\n\nexport const MENU_ITEM =\n \"group/item relative flex min-h-34 w-full cursor-default items-center gap-10 rounded-item px-10 text-left text-body font-medium text-fg outline-none select-none coarse:min-h-44 highlighted:bg-item-hover active:bg-item-pressed disabled:pointer-events-none disabled:text-fg-disabled\";\n\nexport const MENU_ICON = \"text-fg-secondary group-data-highlighted/item:text-fg group-data-disabled/item:text-fg-disabled forced-colors:text-current\";\n\nexport const MENU_DANGER = \"text-danger-text highlighted:bg-danger-tint active:bg-danger-tint\";\n\nexport const MENU_LABEL = \"flex h-28 items-center px-10 text-caption font-medium text-fg-secondary\";\n\nexport const MENU_SEPARATOR = \"mx-10 my-4 h-1 shrink-0 bg-line-subtle\";\n\nexport const MENU_HINT =\n \"ml-auto flex shrink-0 items-center gap-4 pl-16 text-caption font-medium text-fg-tertiary tabular group-data-highlighted/item:text-fg-secondary forced-colors:text-current\";\n"],"mappings":";;;;;;;;;;;;;;;;A,IAAaY,IACX,6MAEWF,IACX,2RAEWD,IAAY,8HAEZF,IAAc,qEAEdI,IAAa,2EAEbE,IAAiB,0CAEjBL,IACX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme-provider-DJhORMlc.js","names":["THEME_STORAGE_KEY","THEME_EVENT","modalitySource","installFocusModality","w","d","themeScript","key","ThemeContext","readStored","v","fallback","systemTheme","ThemeProvider","chosen","setThemeState","useState","system","setSystem","theme","defaultTheme","useEffect","mq","onChange","follow","event","el","target","setTheme","useCallback","next","value","useMemo","useTheme","useContext"],"sources":["../../src/theme/theme-provider.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useState, type ReactNode } from \"react\";\n\nexport type ThemePreference = \"system\" | \"light\" | \"dark\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\nexport const THEME_STORAGE_KEY = \"kaeso:theme\";\nconst THEME_EVENT = \"kaeso:theme-change\";\n\nconst modalitySource = `if(!window.__kModality){window.__kModality=1;document.addEventListener(\"pointerdown\",function(){d.setAttribute(\"data-k-pointer\",\"\")},true);document.addEventListener(\"keydown\",function(e){if(!e.metaKey&&!e.ctrlKey&&!e.altKey){d.removeAttribute(\"data-k-pointer\")}},true)}`;\n\nexport function installFocusModality(): void {\n if (typeof document === \"undefined\") return;\n const w = window as unknown as { __kModality?: number | undefined };\n if (w.__kModality) return;\n w.__kModality = 1;\n const d = document.documentElement;\n document.addEventListener(\"pointerdown\", () => d.setAttribute(\"data-k-pointer\", \"\"), true);\n document.addEventListener(\n \"keydown\",\n (e) => {\n if (!e.metaKey && !e.ctrlKey && !e.altKey) d.removeAttribute(\"data-k-pointer\");\n },\n true,\n );\n}\n\nconst themeScriptFor = (key: string) =>\n `(function(){var d=document.documentElement;try{var t=localStorage.getItem(\"${key}\");if(t===\"light\"||t===\"dark\"){d.setAttribute(\"data-theme\",t)}}catch(e){}${modalitySource}})();`;\n\nexport const themeScript = /* @__PURE__ */ themeScriptFor(THEME_STORAGE_KEY);\n\ninterface ThemeContextValue {\n theme: ThemePreference;\n resolvedTheme: ResolvedTheme;\n setTheme: (theme: ThemePreference) => void;\n}\n\nconst ThemeContext = /* @__PURE__ */ createContext<ThemeContextValue | null>(null);\n\nfunction readStored(fallback: ThemePreference): ThemePreference {\n try {\n const v = localStorage.getItem(THEME_STORAGE_KEY);\n return v === \"light\" || v === \"dark\" ? v : fallback;\n } catch {\n return fallback;\n }\n}\n\nfunction systemTheme(): ResolvedTheme {\n if (typeof window === \"undefined\" || !window.matchMedia) return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches ? \"dark\" : \"light\";\n}\n\nexport interface ThemeProviderProps {\n children: ReactNode;\n defaultTheme?: ThemePreference | undefined;\n target?: (() => HTMLElement) | undefined;\n}\n\nexport function ThemeProvider({ children, defaultTheme = \"system\", target }: ThemeProviderProps) {\n const [chosen, setThemeState] = useState<ThemePreference | null>(null);\n const [system, setSystem] = useState<ResolvedTheme>(\"light\");\n const theme = chosen ?? defaultTheme;\n\n useEffect(() => {\n installFocusModality();\n setThemeState(readStored(defaultTheme));\n setSystem(systemTheme());\n const mq = window.matchMedia?.(\"(prefers-color-scheme: dark)\");\n const onChange = () => setSystem(mq.matches ? \"dark\" : \"light\");\n const follow = (event: Event) => setThemeState((event as CustomEvent<ThemePreference>).detail);\n mq?.addEventListener(\"change\", onChange);\n window.addEventListener(THEME_EVENT, follow);\n return () => {\n mq?.removeEventListener(\"change\", onChange);\n window.removeEventListener(THEME_EVENT, follow);\n };\n }, [defaultTheme]);\n\n useEffect(() => {\n if (chosen === null) return;\n const el = target ? target() : document.documentElement;\n if (chosen === \"system\") el.removeAttribute(\"data-theme\");\n else el.setAttribute(\"data-theme\", chosen);\n }, [chosen, target]);\n\n const setTheme = useCallback((next: ThemePreference) => {\n setThemeState(next);\n try {\n if (next === \"system\") localStorage.removeItem(THEME_STORAGE_KEY);\n else localStorage.setItem(THEME_STORAGE_KEY, next);\n } catch {}\n window.dispatchEvent(new CustomEvent<ThemePreference>(THEME_EVENT, { detail: next }));\n }, []);\n\n const value = useMemo<ThemeContextValue>(() => ({ theme, resolvedTheme: theme === \"system\" ? system : theme, setTheme }), [theme, system, setTheme]);\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\nif (process.env.NODE_ENV !== \"production\") ThemeProvider.displayName = \"ThemeProvider\";\n\nexport function useTheme(): ThemeContextValue {\n const ctx = useContext(ThemeContext);\n if (!ctx) {\n return { theme: \"system\", resolvedTheme: \"light\", setTheme: () => undefined };\n }\n return ctx;\n}\n"],"mappings":";;;;AAKA,IAAaA,IAAoB,eAC3BC,IAAc,sBAEdC,IAAiB;AAEvB,SAAgBC,IAA6B;CAC3C,IAAI,OAAO,WAAa,KAAa;CACrC,IAAMC,IAAI;CACV,IAAIA,EAAE,aAAa;CACnB,EAAE,cAAc;CAChB,IAAMC,IAAI,SAAS;CAEnB,AADA,SAAS,iBAAiB,qBAAqBA,EAAE,aAAa,kBAAkB,EAAE,GAAG,EAAI,GACzF,SAAS,iBACP,YACC,MAAM;EACL,AAAI,CAAC,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,UAAQA,EAAE,gBAAgB,gBAAgB;CAC/E,GACA,EACF;AACF;AAKA,IAAaC,IAA8B,kBAHnB,MACtB,8EAA8EC,EAAI,2EAA2EL,EAAe,OAEnI,CAAeF,CAAiB,GAQrEQ,IAA+B,kBAAwC,IAAI;AAEjF,SAASC,EAAW,GAA4C;CAC9D,IAAI;EACF,IAAMC,IAAI,aAAa,QAAQV,CAAiB;EAChD,OAAOU,MAAM,WAAWA,MAAM,SAASA,IAAIC;CAC7C,QAAQ;EACN,OAAOA;CACT;AACF;AAEA,SAASC,IAA6B;CAEpC,OADI,OAAO,SAAW,OAAe,CAAC,OAAO,aAAmB,UACzD,OAAO,WAAW,8BAA8B,CAAC,CAAC,UAAU,SAAS;AAC9E;AAQA,SAAgBC,EAAc,EAAE,aAAU,kBAAe,UAAU,aAA8B;CAC/F,IAAM,CAACC,GAAQC,KAAiBC,EAAiC,IAAI,GAC/D,CAACC,GAAQC,KAAaF,EAAwB,OAAO,GACrDG,IAAQL,KAAUM;CAiBxB,AAfAC,QAAgB;EAGd,AAFAlB,EAAqB,GACrBY,EAAcN,EAAWW,CAAY,CAAC,GACtCF,EAAUN,EAAY,CAAC;EACvB,IAAMU,IAAK,OAAO,aAAa,8BAA8B,GACvDC,UAAiBL,EAAUI,EAAG,UAAU,SAAS,OAAO,GACxDE,KAAU,MAAiBT,EAAeU,EAAuC,MAAM;EAG7F,OAFAH,GAAI,iBAAiB,UAAUC,CAAQ,GACvC,OAAO,iBAAiBtB,GAAauB,CAAM,SAC9B;GAEX,AADAF,GAAI,oBAAoB,UAAUC,CAAQ,GAC1C,OAAO,oBAAoBtB,GAAauB,CAAM;EAChD;CACF,GAAG,CAACJ,CAAY,CAAC,GAEjBC,QAAgB;EACd,IAAIP,MAAW,MAAM;EACrB,IAAMY,IAAKC,IAASA,EAAO,IAAI,SAAS;EACxC,AAAIb,MAAW,WAAUY,EAAG,gBAAgB,YAAY,IACnDA,EAAG,aAAa,cAAcZ,CAAM;CAC3C,GAAG,CAACA,GAAQa,CAAM,CAAC;CAEnB,IAAMC,IAAWC,GAAa,MAA0B;EACtD,EAAcC,CAAI;EAClB,IAAI;GACF,AAAIA,MAAS,WAAU,aAAa,WAAW9B,CAAiB,IAC3D,aAAa,QAAQA,GAAmB8B,CAAI;EACnD,QAAQ,CAAC;EACT,OAAO,cAAc,IAAI,YAA6B7B,GAAa,EAAE,QAAQ6B,EAAK,CAAC,CAAC;CACtF,GAAG,CAAC,CAAC,GAECC,IAAQC,SAAkC;EAAE;EAAO,eAAeb,MAAU,WAAWF,IAASE;EAAO;CAAS,IAAI;EAACA;EAAOF;EAAQW;CAAQ,CAAC;CACnJ,OAAO,kBAACpB,EAAa,UAAd;EAA8B;EAAQ;CAAgC,CAAA;AAC/E;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAc,cAAc;AAEvE,SAAgByB,IAA8B;CAK5C,OAJYC,EAAW1B,CAClB,KACI;EAAE,OAAO;EAAU,eAAe;EAAS,gBAAgB,KAAA;CAAU;AAGhF"}