@logicplanes/kaeso-ui 0.4.5 → 0.4.7

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 (56) hide show
  1. package/ai/component-guides.md +1 -1
  2. package/ai/component-registry.json +1 -1
  3. package/ai/component-registry.md +1 -1
  4. package/ai/icons.md +1 -1
  5. package/ai/tokens.md +1 -1
  6. package/dist/blocks/pages.js +2 -2
  7. package/dist/blocks/resource-list.js +1 -1
  8. package/dist/chunks/{app-frame-DysOel2X.js → app-frame-CfJ7s3Q0.js} +2 -2
  9. package/dist/chunks/{app-frame-DysOel2X.js.map → app-frame-CfJ7s3Q0.js.map} +1 -1
  10. package/dist/chunks/{core-CmK-8ObW.js → core-B0bULn-t.js} +9 -8
  11. package/dist/chunks/core-B0bULn-t.js.map +1 -0
  12. package/dist/chunks/data-table-z7z6DqMJ.js +602 -0
  13. package/dist/chunks/data-table-z7z6DqMJ.js.map +1 -0
  14. package/dist/chunks/{domain-obd_w9xk.js → domain-BsM9UmAg.js} +2 -2
  15. package/dist/chunks/{domain-obd_w9xk.js.map → domain-BsM9UmAg.js.map} +1 -1
  16. package/dist/chunks/{identity-3Foi5F8w.js → identity-BQoh-UpW.js} +7 -3
  17. package/dist/chunks/identity-BQoh-UpW.js.map +1 -0
  18. package/dist/chunks/{list-B4G-sWwV.js → list-CU_AoVY3.js} +115 -92
  19. package/dist/chunks/list-CU_AoVY3.js.map +1 -0
  20. package/dist/chunks/{page-header-kS5tdmvb.js → page-header-BQijP6Rp.js} +2 -2
  21. package/dist/chunks/{page-header-kS5tdmvb.js.map → page-header-BQijP6Rp.js.map} +1 -1
  22. package/dist/chunks/{theme-provider-DJhORMlc.js → theme-provider-BjXTggqM.js} +6 -2
  23. package/dist/chunks/theme-provider-BjXTggqM.js.map +1 -0
  24. package/dist/chunks/{timeseries-Ck-q0wWn.js → timeseries-nDviPxvQ.js} +3 -3
  25. package/dist/chunks/{timeseries-Ck-q0wWn.js.map → timeseries-nDviPxvQ.js.map} +1 -1
  26. package/dist/components/app-frame.js +1 -1
  27. package/dist/components/charts/bar.js +2 -2
  28. package/dist/components/charts/donut.js +1 -1
  29. package/dist/components/charts/gauge.js +1 -1
  30. package/dist/components/charts/heatmap.js +1 -1
  31. package/dist/components/charts/sankey.js +2 -2
  32. package/dist/components/charts/timeseries.js +1 -1
  33. package/dist/components/charts.js +2 -2
  34. package/dist/components/data-table.js +1 -1
  35. package/dist/components/kaeso/identity.js +1 -1
  36. package/dist/components/kaeso/usage.js +1 -1
  37. package/dist/components/kaeso.js +3 -3
  38. package/dist/components/kaeso.js.map +1 -1
  39. package/dist/components/list.js +1 -1
  40. package/dist/components/page-header.js +1 -1
  41. package/dist/components/playground.js +1 -1
  42. package/dist/components/theme-menu.js +1 -1
  43. package/dist/components/theme-select.js +1 -1
  44. package/dist/components/toast.js +40 -38
  45. package/dist/components/toast.js.map +1 -1
  46. package/dist/index.js +8 -8
  47. package/dist/kaeso.css +8 -0
  48. package/dist/styles.css +1 -1
  49. package/dist/theme.js +1 -1
  50. package/package.json +2 -2
  51. package/dist/chunks/core-CmK-8ObW.js.map +0 -1
  52. package/dist/chunks/data-table-CqY8_6IS.js +0 -581
  53. package/dist/chunks/data-table-CqY8_6IS.js.map +0 -1
  54. package/dist/chunks/identity-3Foi5F8w.js.map +0 -1
  55. package/dist/chunks/list-B4G-sWwV.js.map +0 -1
  56. package/dist/chunks/theme-provider-DJhORMlc.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-z7z6DqMJ.js","names":["_Fragment","__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","cn","useInset","useGutterPadded","useRaised","Icon","Tooltip","observeResize","Text","Button","CheckboxBox","ContextMenu","Skeleton","Pagination","Empty","TruncatedText","StatusDot","useScrollFadeX","Avatar","scrollParent","useCoarsePointer","STATUS_TONE_TEXT","useScrollMargin","Fragment$1","TIME_COLUMNS","KAESO_DATA_TABLE_VARIANTS","KAESO_DATA_TABLE_DEFAULT_VARIANTS","ROW_H","DATA_TABLE_GROW_MIN","fitColumns","width","byPriority","columns","a","b","used","reserve","keep","c","kept","full","least","growMin","last","contentWidth","style","el","nameColumn","labelled","rowName","column","text","row","raw","FOCUSABLE","TEXT_ENTRY","cellWidgets","w","headTargets","head","target","th","rowTone","on","raised","DataTableInner","userColumns","sortingProp","ariaLabel","forceRow","inset","padded","t","useUiText","sortingInner","setSortingInner","useState","selectionInner","setSelectionInner","focusRow","setFocusRow","zone","setZone","headStop","setHeadStop","anchor","useRef","sorting","rowSelection","selection","useMemo","selectable","table","name","useReactTable","next","u","onSortingChange","onSelectionChange","getCoreRowModel","getSortedRowModel","manualSorting","canSelectRow","getRowId","r","root","body","leaf","fitInput","fitKey","hiddenFor","fit","hiddenForRef","hiddenKey","setHiddenKey","useLayoutEffect","mode","hiddenIds","tight","overflow","hidden","onHiddenRef","onHiddenColumnsChange","cols","trackMin","gridStyle","pinEnd","rows","virtual","virtualizeAbove","rowHeight","density","getScrollElement","scrollMargin","virtualizer","useVirtualizer","cellPad","i","onRaised","stickyCol","stickyFirstColumn","header","focusable","onRowClick","bodyZone","stop","focusAt","line","now","focusHead","targets","rovingHead","own","tabindex","observer","quiet","resizeBy","columnId","min","max","old","step","onHeadKeyDown","at","to","page","selectRange","found","from","start","onRowKeyDown","widgets","first","cellDeps","drawn","d","drawnRows","renderRow","active","activeRowId","selected","state","cells","drawCells","freshRowIds","rowMenu","meta","cell","content","flexRender","tone","h","sortable","resizable","dir","label","ArrowDown01Icon","ArrowUp01Icon","ref","className","loading","hg","error","onRetry","empty","v","hasMore","loadingMore","DataTableBase","DataTable","time","make","get","ctx","sortingFn","Tokens","exact","formatNumber","value","formatTokens","RelativeTime","formatDate","formatRelative","col","formatUSD","options","id","formatDuration"],"sources":["../../src/components/data-table/time-columns.ts","../../src/components/data-table/data-table.tsx","../../src/components/data-table/columns.tsx"],"sourcesContent":["export const TIME_COLUMNS = new WeakSet<object>();\n","import type * as React from \"react\";\nimport { forwardRef, useLayoutEffect, useMemo, useRef, useState, type CSSProperties, type KeyboardEvent, type ReactNode } from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useGutterPadded, useInset, useRaised } from \"../../utils/inset.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CheckboxBox } from \"../checkbox/checkbox.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { Empty } from \"../empty/empty.js\";\nimport { Button } from \"../button/button.js\";\nimport { Pagination } from \"../pagination/pagination.js\";\nimport { ContextMenu } from \"../menu/menu.js\";\nimport { Text } from \"../text/text.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\nimport { STATUS_TONE_TEXT, type StatusTone } from \"../../utils/tone.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useScrollMargin } from \"../../hooks/use-scroll-margin.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useScrollFadeX } from \"../../hooks/use-scroll-fade.js\";\nimport { useCoarsePointer } from \"../../hooks/use-coarse-pointer.js\";\nimport { TIME_COLUMNS } from \"./time-columns.js\";\n\nexport const KAESO_DATA_TABLE_VARIANTS = {\n density: {\n compact: { classes: \"h-36 coarse:h-44\" },\n default: { classes: \"h-40 coarse:h-44\" },\n comfortable: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_DATA_TABLE_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData, TValue> {\n align?: \"start\" | \"end\" | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n mono?: boolean | undefined;\n text?: ((row: TData) => string) | undefined;\n tone?: ((row: TData) => StatusTone | undefined) | undefined;\n }\n}\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: ColumnDef<T, any>[];\n getRowId?: ((row: T) => string) | undefined;\n density?: keyof typeof KAESO_DATA_TABLE_VARIANTS.density | undefined;\n onRowClick?: ((row: T) => void) | undefined;\n rowMenu?: ((row: T) => ReactNode) | undefined;\n selectable?: boolean | undefined;\n canSelectRow?: ((row: T) => boolean) | undefined;\n selection?: RowSelectionState | undefined;\n onSelectionChange?: ((selection: RowSelectionState) => void) | undefined;\n sorting?: SortingState | undefined;\n onSortingChange?: ((sorting: SortingState) => void) | undefined;\n manualSorting?: boolean | undefined;\n loading?: boolean | undefined;\n error?: ReactNode | undefined;\n onRetry?: (() => void) | undefined;\n empty?: ReactNode | undefined;\n hasMore?: boolean | undefined;\n loadingMore?: boolean | undefined;\n onLoadMore?: (() => void) | undefined;\n stickyFirstColumn?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n activeRowId?: string | undefined;\n freshRowIds?: ReadonlySet<string> | undefined;\n onHiddenColumnsChange?: ((ids: string[]) => void) | undefined;\n \"data-force-row\"?: string | undefined;\n}\n\nconst ROW_H = { compact: 36, default: 40, comfortable: 48 } as const;\n\nexport const DATA_TABLE_GROW_MIN = 136;\n\ntype FitColumn = { id: string; size: number; priority: number; grow: boolean; minWidth: number | undefined; fixed?: boolean | undefined };\n\nexport function fitColumns(columns: FitColumn[], width: number, reserve = 48): { hidden: string[]; tight: boolean; overflow: boolean } {\n if (!width) return { hidden: [], tight: false, overflow: false };\n const byPriority = [...columns].sort((a, b) => a.priority - b.priority);\n let used = reserve;\n const keep = new Set<string>();\n for (const c of byPriority) {\n used += c.size;\n if (used <= width || c.priority <= 1 || c.fixed) keep.add(c.id);\n }\n const kept = columns.filter((c) => keep.has(c.id));\n const full = kept.reduce((a, c) => a + c.size, reserve);\n let least = kept.reduce((a, c) => a + (c.grow ? growMin(c) : c.size), 0);\n if (least > width && kept.some((c) => c.grow)) {\n const last = kept[kept.length - 1];\n for (const c of [...kept].reverse()) {\n if (least <= width) break;\n if (c.grow || c.fixed || c === last) continue;\n keep.delete(c.id);\n least -= c.size;\n }\n }\n return { hidden: columns.filter((c) => !keep.has(c.id)).map((c) => c.id), tight: full > width, overflow: least > width };\n}\n\nfunction contentWidth(el: HTMLElement): number {\n const style = getComputedStyle(el);\n return el.getBoundingClientRect().width - (parseFloat(style.paddingLeft) || 0) - (parseFloat(style.paddingRight) || 0);\n}\n\nfunction nameColumn<T>(columns: ColumnDef<T, any>[]): ColumnDef<T, any> | undefined {\n const labelled = columns.filter((c) => c.id && c.meta?.text && c.meta.align !== \"end\");\n return labelled.find((c) => !TIME_COLUMNS.has(c)) ?? labelled[0] ?? columns[0];\n}\n\nfunction rowName<T>(column: ColumnDef<T, any> | undefined, row: Row<T>): string | undefined {\n if (!column?.id) return undefined;\n const text = column.meta?.text?.(row.original);\n if (text) return text;\n const raw = row.getValue(column.id);\n return typeof raw === \"string\" && raw ? raw : undefined;\n}\n\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 cellWidgets(row: HTMLElement): HTMLElement[] {\n return [...row.querySelectorAll<HTMLElement>(FOCUSABLE)].filter(\n (w) => !w.closest(\"[role=checkbox], [aria-hidden=true], [hidden]\") && !w.matches(\":disabled, input[type=checkbox]\"),\n );\n}\n\nfunction headTargets(head: HTMLElement | null): HTMLElement[] {\n if (!head) return [];\n return [...head.querySelectorAll<HTMLElement>(\"[role=columnheader]\")].flatMap((th) => {\n const target = th.querySelector<HTMLElement>(\"[role=checkbox], button\") ?? th.querySelector<HTMLElement>(\"[role=separator]\");\n return target ? [target] : [];\n });\n}\n\nfunction rowTone(raised: boolean, on: boolean) {\n if (on)\n return cn(\n \"controls-on-fill\",\n raised ? \"bg-raised-pressed hover:raised-selected-hover active:raised-selected-hover\" : \"bg-fill-2 hover:bg-fill-3 active:bg-fill-3\",\n );\n return raised ? \"hover:bg-raised-hover active:bg-raised-pressed hover:controls-on-fill\" : \"hover:bg-fill-1 active:bg-fill-2 hover:controls-on-fill\";\n}\n\nconst growMin = (c: { size: number; minWidth: number | undefined }) => Math.min(c.size, c.minWidth ?? DATA_TABLE_GROW_MIN);\n\nfunction DataTableInner<T>(\n {\n data,\n columns: userColumns,\n getRowId,\n density = \"default\",\n onRowClick,\n rowMenu,\n selectable,\n canSelectRow,\n selection,\n onSelectionChange,\n sorting: sortingProp,\n onSortingChange,\n manualSorting,\n loading,\n error,\n onRetry,\n empty,\n hasMore,\n loadingMore,\n onLoadMore,\n stickyFirstColumn,\n virtualizeAbove = 100,\n className,\n activeRowId,\n freshRowIds,\n onHiddenColumnsChange,\n \"aria-label\": ariaLabel,\n \"data-force-row\": forceRow,\n }: DataTableProps<T>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const inset = useInset();\n const raised = useRaised();\n const padded = useGutterPadded();\n const t = useUiText();\n const [sortingInner, setSortingInner] = useState<SortingState>([]);\n const [selectionInner, setSelectionInner] = useState<RowSelectionState>({});\n const [focusRow, setFocusRow] = useState(0);\n const [zone, setZone] = useState<\"head\" | \"body\">(\"body\");\n const [headStop, setHeadStop] = useState(0);\n const anchor = useRef<{ id: string; base: RowSelectionState } | null>(null);\n const sorting = sortingProp ?? sortingInner;\n const rowSelection = selection ?? selectionInner;\n const columns = useMemo<ColumnDef<T, any>[]>(() => {\n if (!selectable) return userColumns;\n return [\n {\n id: \"__select\",\n size: 44,\n enableSorting: false,\n enableResizing: false,\n meta: { priority: 1 },\n header: ({ table }) => (\n <CheckboxBox\n aria-label={t(\"dataTable.selectAllRows\", \"Select all rows\")}\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected() && !table.getIsAllRowsSelected()}\n onCheckedChange={(c) => table.toggleAllRowsSelected(c)}\n />\n ),\n cell: ({ row }) => {\n const name = rowName(nameColumn(userColumns), row);\n return (\n <CheckboxBox\n aria-label={name ? t(\"dataTable.selectNamed\", \"Select {name}\", { name }) : t(\"dataTable.selectRow\", \"Select row\")}\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onCheckedChange={(c) => row.toggleSelected(c)}\n />\n );\n },\n },\n ...userColumns,\n ];\n }, [userColumns, selectable, t]);\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: (u) => {\n const next = typeof u === \"function\" ? u(sorting) : u;\n anchor.current = null;\n if (!sortingProp) setSortingInner(next);\n onSortingChange?.(next);\n },\n onRowSelectionChange: (u) => {\n const next = typeof u === \"function\" ? u(rowSelection) : u;\n if (!selection) setSelectionInner(next);\n onSelectionChange?.(next);\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualSorting: !!manualSorting,\n enableRowSelection: selectable ? (canSelectRow ? (row) => canSelectRow(row.original) : true) : false,\n columnResizeMode: \"onChange\",\n ...(getRowId ? { getRowId: (r: T) => getRowId(r) } : {}),\n defaultColumn: { size: 140, minSize: 64, maxSize: 640 },\n });\n\n const root = useRef<HTMLDivElement | null>(null);\n const head = useRef<HTMLDivElement | null>(null);\n const body = useRef<HTMLDivElement | null>(null);\n const leaf = table.getVisibleLeafColumns();\n const fitInput = leaf.map((c) => ({\n id: c.id,\n size: c.getSize(),\n priority: c.columnDef.meta?.priority ?? 2,\n grow: !!c.columnDef.meta?.grow,\n minWidth: c.columnDef.meta?.minWidth,\n fixed: c.id === \"__select\",\n }));\n const fitKey = JSON.stringify(fitInput);\n const hiddenFor = (width: number) => {\n const fit = fitColumns(fitInput, width, inset ? 48 : 0);\n return `${fit.tight ? \"!\" : \"\"}${fit.overflow ? \">\" : \"\"}|${fit.hidden.join(\" \")}`;\n };\n const hiddenForRef = useRef(hiddenFor);\n hiddenForRef.current = hiddenFor;\n const [hiddenKey, setHiddenKey] = useState(\"|\");\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n return observeResize([el], ([e]) => setHiddenKey(hiddenForRef.current(Math.round(e?.contentRect.width ?? 0))));\n }, []);\n useLayoutEffect(() => {\n if (root.current) setHiddenKey(hiddenForRef.current(Math.round(contentWidth(root.current))));\n }, [fitKey]);\n const [mode = \"\", hiddenIds = \"\"] = hiddenKey.split(\"|\");\n const tight = mode.includes(\"!\");\n const overflow = mode.includes(\">\");\n const hidden = useMemo(() => new Set(hiddenIds.split(\" \").filter(Boolean)), [hiddenIds]);\n const onHiddenRef = useRef(onHiddenColumnsChange);\n onHiddenRef.current = onHiddenColumnsChange;\n useLayoutEffect(() => {\n onHiddenRef.current?.([...hidden]);\n }, [hidden]);\n const cols = leaf.filter((c) => !hidden.has(c.id));\n const trackMin = (c: (typeof cols)[number]) =>\n c.columnDef.meta?.grow ? (tight ? growMin({ size: c.getSize(), minWidth: c.columnDef.meta.minWidth }) : c.getSize()) : c.getSize();\n const template = cols.map((c) => (c.columnDef.meta?.grow ? `minmax(${trackMin(c)}px, 1fr)` : `${c.getSize()}px`)).join(\" \");\n const gridStyle: CSSProperties = { gridTemplateColumns: template, minWidth: cols.reduce((a, c) => a + trackMin(c), 0) };\n const pinEnd = overflow && cols.length > 1 && !cols[cols.length - 1]?.columnDef.meta?.grow;\n\n const rows = table.getRowModel().rows;\n const virtual = rows.length > virtualizeAbove;\n const rowHeight = Math.max(ROW_H[density], useCoarsePointer() ? 44 : 0);\n const getScrollElement = () => scrollParent(root.current);\n const scrollMargin = useScrollMargin(body, getScrollElement, rows.length, virtual);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement,\n estimateSize: () => rowHeight,\n overscan: 16,\n enabled: virtual,\n scrollMargin,\n });\n\n const cellPad = (i: number) => cn(\"flex min-w-0 items-center px-12\", inset && i === 0 && \"pl-20\", inset && i === cols.length - 1 && \"pr-20\");\n const onRaised = inset || raised;\n const stickyCol = (i: number, header = false, on = false) =>\n ((stickyFirstColumn && i === 0) || (pinEnd && i === cols.length - 1)) &&\n cn(\n \"sticky z-10\",\n header\n ? onRaised\n ? \"bg-raised\"\n : \"bg-panel\"\n : on\n ? \"bg-inherit\"\n : onRaised\n ? \"bg-raised group-hover/tr:bg-raised-hover group-active/tr:bg-raised-pressed\"\n : \"bg-panel group-hover/tr:bg-fill-1 group-active/tr:bg-fill-2\",\n i === 0 ? \"left-0\" : \"right-0\",\n !inset && !header && (i === 0 ? \"rounded-l-item\" : \"rounded-r-item\"),\n );\n\n const focusable = !!onRowClick || !!selectable;\n const bodyZone = focusable && rows.length > 0 && zone === \"body\";\n const stop = Math.min(focusRow, Math.max(rows.length - 1, 0));\n const focusAt = (i: number) => {\n const next = Math.max(0, Math.min(rows.length - 1, i));\n setZone(\"body\");\n setFocusRow(next);\n if (virtual) virtualizer.scrollToIndex(next, { align: \"auto\" });\n const line = () => body.current?.querySelector<HTMLElement>(`[data-row-index=\"${next}\"]`);\n const now = line();\n if (now) now.focus();\n else requestAnimationFrame(() => line()?.focus());\n };\n const focusHead = (i: number) => {\n const targets = headTargets(head.current);\n const target = targets[Math.max(0, Math.min(targets.length - 1, i))];\n if (!target) return false;\n setZone(\"head\");\n setHeadStop(targets.indexOf(target));\n target.focus();\n return true;\n };\n const rovingHead = useRef(() => {});\n rovingHead.current = () => {\n const targets = headTargets(head.current);\n const own = Math.min(headStop, targets.length - 1);\n for (const el of head.current?.querySelectorAll<HTMLElement>(FOCUSABLE) ?? []) {\n const tabindex = targets.indexOf(el) === own && !bodyZone ? \"0\" : \"-1\";\n if (el.getAttribute(\"tabindex\") !== tabindex) el.setAttribute(\"tabindex\", tabindex);\n }\n };\n useLayoutEffect(() => rovingHead.current());\n useLayoutEffect(() => {\n const el = head.current;\n if (!el) return;\n const observer = new MutationObserver(() => rovingHead.current());\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, []);\n useLayoutEffect(() => {\n const el = body.current;\n if (!el || !focusable) return;\n const quiet = () => {\n for (const line of el.querySelectorAll<HTMLElement>(\"[data-row-index]\"))\n for (const w of line.querySelectorAll<HTMLElement>(FOCUSABLE)) if (w.getAttribute(\"tabindex\") !== \"-1\") w.setAttribute(\"tabindex\", \"-1\");\n };\n quiet();\n const observer = new MutationObserver(quiet);\n observer.observe(el, { subtree: true, childList: true, attributes: true, attributeFilter: [\"tabindex\"] });\n return () => observer.disconnect();\n }, [focusable]);\n useScrollFadeX(body, \"[role=row]\");\n\n const resizeBy = (columnId: string | undefined, step: number) => {\n const column = columnId ? table.getColumn(columnId) : undefined;\n if (!column?.getCanResize()) return false;\n const min = column.columnDef.minSize ?? 64;\n const max = column.columnDef.maxSize ?? 640;\n table.setColumnSizing((old) => ({ ...old, [column.id]: Math.max(min, Math.min(max, column.getSize() + step)) }));\n return true;\n };\n const onHeadKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.altKey || e.metaKey || e.ctrlKey) return;\n const targets = headTargets(head.current);\n const at = targets.indexOf(e.target as HTMLElement);\n if (at < 0) return;\n const step = { ArrowLeft: -16, ArrowRight: 16 }[e.key];\n if (e.shiftKey) {\n if (step !== undefined && resizeBy((e.target as HTMLElement).closest<HTMLElement>(\"[role=columnheader]\")?.dataset.col, step)) e.preventDefault();\n return;\n }\n const to = { ArrowLeft: at - 1, ArrowRight: at + 1, Home: 0, End: targets.length - 1 }[e.key];\n if (to !== undefined) {\n e.preventDefault();\n if (to >= 0 && to < targets.length) focusHead(to);\n } else if (e.key === \"ArrowDown\" && focusable && rows.length) {\n e.preventDefault();\n focusAt(stop);\n }\n };\n\n const page = () => Math.max(1, Math.floor((getScrollElement()?.clientHeight ?? 400) / rowHeight) - 1);\n const selectRange = (from: number, to: number) => {\n const found = anchor.current ? rows.findIndex((r) => r.id === anchor.current?.id) : -1;\n if (found < 0) anchor.current = { id: rows[from]!.id, base: rowSelection };\n const start = found < 0 ? from : found;\n const next = { ...anchor.current?.base };\n for (const r of rows.slice(Math.min(start, to), Math.max(start, to) + 1)) if (r.getCanSelect()) next[r.id] = true;\n table.setRowSelection(next);\n };\n const onRowKeyDown = (e: KeyboardEvent<HTMLDivElement>, row: Row<T>, i: number) => {\n const line = e.currentTarget;\n const target = e.target as HTMLElement;\n if (target !== line) {\n if (e.altKey || e.metaKey || e.ctrlKey || target.closest(TEXT_ENTRY)) return;\n const widgets = cellWidgets(line);\n const at = widgets.indexOf(target);\n if (at < 0) return;\n // A tooltip trigger prevents Escape's default even while its tooltip is closed; only an open popup keeps the key.\n if (e.key === \"Escape\" && !target.closest(\"[data-popup-open], [aria-expanded=true]\")) {\n e.preventDefault();\n line.focus();\n } else if (e.defaultPrevented) {\n return;\n } else if (e.key === \"ArrowRight\" && widgets[at + 1]) {\n e.preventDefault();\n widgets[at + 1]?.focus();\n } else if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n (widgets[at - 1] ?? line).focus();\n }\n return;\n }\n if (e.altKey) return;\n if (e.metaKey || e.ctrlKey) {\n if (e.key.toLowerCase() === \"a\" && selectable && !e.shiftKey) {\n e.preventDefault();\n anchor.current = null;\n table.toggleAllRowsSelected(true);\n }\n return;\n }\n const to = { ArrowDown: i + 1, ArrowUp: i - 1, Home: 0, End: rows.length - 1, PageDown: i + page(), PageUp: i - page() }[e.key];\n if (to !== undefined) {\n e.preventDefault();\n if (e.key === \"ArrowUp\" && !e.shiftKey && to < 0 && focusHead(headStop)) return;\n const next = Math.max(0, Math.min(rows.length - 1, to));\n if (e.shiftKey && selectable) selectRange(i, next);\n else anchor.current = null;\n focusAt(next);\n } else if (e.shiftKey) {\n return;\n } else if (e.key === \"ArrowRight\") {\n const first = cellWidgets(line)[0];\n if (!first) return;\n e.preventDefault();\n first.focus();\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n onRowClick?.(row.original);\n } else if ((e.key === \" \" || e.key === \"x\") && selectable) {\n e.preventDefault();\n anchor.current = null;\n if (row.getCanSelect()) row.toggleSelected();\n } else if (e.key === \"Escape\" && selectable && Object.keys(rowSelection).length) {\n e.preventDefault();\n anchor.current = null;\n table.toggleAllRowsSelected(false);\n }\n };\n\n // The virtualizer renders the table again for every scroll event, but a row's cells change only\n // with its data, the columns shown and whether it is active or selected. A row hands back the\n // cells it drew last time, so React skips them instead of drawing every visible row again.\n const cellDeps = [columns, cols.map((c) => c.id).join(\" \"), inset, pinEnd, stickyFirstColumn, onRaised];\n const drawn = useRef<{ deps: unknown[]; rows: WeakMap<Row<T>, { state: string; cells: ReactNode }> } | null>(null);\n if (!drawn.current || cellDeps.some((d, i) => d !== drawn.current?.deps[i])) drawn.current = { deps: cellDeps, rows: new WeakMap() };\n const drawnRows = drawn.current.rows;\n\n const renderRow = (row: Row<T>, i: number, style?: CSSProperties) => {\n const active = row.id === activeRowId;\n const selected = !!selectable && row.getIsSelected();\n const on = active || selected;\n const state = `${active} ${selected}`;\n const kept = drawnRows.get(row);\n const cells = kept?.state === state ? kept.cells : drawCells(row, on);\n if (kept?.state !== state) drawnRows.set(row, { state, cells });\n const el = (\n <div\n role=\"row\"\n aria-rowindex={i + 2}\n aria-selected={selectable ? row.getIsSelected() : undefined}\n aria-current={active || undefined}\n data-active={active || undefined}\n data-fresh={freshRowIds?.has(row.id) || undefined}\n data-row-index={i}\n {...(forceRow && i === 0 ? { \"data-force\": forceRow } : {})}\n tabIndex={focusable ? (bodyZone && i === stop ? 0 : -1) : undefined}\n onFocus={(e) => {\n if (e.target !== e.currentTarget) return;\n setZone(\"body\");\n if (i !== focusRow) setFocusRow(i);\n }}\n onClick={(e) => {\n anchor.current = null;\n if ((e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n onRowClick?.(row.original);\n }}\n onKeyDown={(e) => onRowKeyDown(e, row, i)}\n style={{ ...gridStyle, ...style }}\n className={cn(\n \"group/tr grid w-full text-body text-fg transition-control focus-ring-inset\",\n !inset && \"rounded-item\",\n KAESO_DATA_TABLE_VARIANTS.density[density].classes,\n onRowClick && \"cursor-pointer\",\n rowTone(onRaised, on),\n \"data-fresh:animate-row-fresh\",\n \"forced-colors:data-active:outline-2 forced-colors:data-active:-outline-offset-2 forced-colors:data-active:outline-solid\",\n )}\n >\n {cells}\n </div>\n );\n if (!rowMenu) return <div key={row.id}>{el}</div>;\n return (\n <ContextMenu key={row.id}>\n <ContextMenu.Trigger>{el}</ContextMenu.Trigger>\n <ContextMenu.Content>{rowMenu(row.original)}</ContextMenu.Content>\n </ContextMenu>\n );\n };\n\n function drawCells(row: Row<T>, on: boolean) {\n return row\n .getVisibleCells()\n .filter((c) => !hidden.has(c.column.id))\n .map((cell, i) => {\n const meta = cell.column.columnDef.meta;\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n const raw = cell.getValue();\n const text = meta?.text ? meta.text(row.original) : typeof raw === \"string\" ? raw : undefined;\n const tone = meta?.tone?.(row.original);\n return (\n <div\n key={cell.id}\n role=\"cell\"\n className={cn(\n cellPad(i),\n meta?.align === \"end\" && \"justify-end text-right tabular\",\n meta?.mono && \"mono text-small\",\n tone && STATUS_TONE_TEXT[tone],\n stickyCol(i, false, on),\n )}\n >\n {text !== undefined && typeof content !== \"object\" ? (\n <Text truncate tone={tone ?? \"default\"} className={cn(\"min-w-0\", meta?.mono && \"text-small\")} mono={!!meta?.mono}>\n {text}\n </Text>\n ) : cell.column.id === \"__select\" ? (\n <span className=\"flex\">{content}</span>\n ) : (\n <TruncatedText className={cn(\"min-w-0 cell-fit\", meta?.grow && \"flex-1\")}>{content}</TruncatedText>\n )}\n </div>\n );\n });\n }\n\n const header = (h: ReturnType<typeof table.getHeaderGroups>[number][\"headers\"][number], i: number) => {\n const meta = h.column.columnDef.meta;\n const sortable = h.column.getCanSort();\n const resizable = h.column.getCanResize();\n const dir = h.column.getIsSorted();\n const label = flexRender(h.column.columnDef.header, h.getContext());\n const content = (\n <>\n {sortable ? (\n <button\n type=\"button\"\n onClick={h.column.getToggleSortingHandler()}\n className={cn(\n \"relative -mx-6 inline-flex h-28 min-w-0 cursor-pointer items-center gap-4 rounded-pill px-6 text-caption font-medium transition-control focus-ring tap-target\",\n onRaised ? \"hover:bg-raised-hover active:bg-raised-pressed\" : \"hover:bg-fill-1 active:bg-fill-2\",\n \"hover:text-fg\",\n dir ? \"text-fg\" : \"text-fg-secondary\",\n meta?.align === \"end\" && \"flex-row-reverse\",\n )}\n >\n <TruncatedText>{label}</TruncatedText>\n <Icon\n icon={dir === \"desc\" ? __icon_ArrowDown01Icon : __icon_ArrowUp01Icon}\n size=\"xs\"\n className={cn(\"shrink-0 transition-control\", dir ? \"opacity-100\" : \"opacity-0 group-hover/th:opacity-60\")}\n />\n </button>\n ) : (\n <TruncatedText className=\"text-caption font-medium text-fg-secondary\">{label}</TruncatedText>\n )}\n {resizable && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"dataTable.resizeColumn\", \"Resize column\")}\n aria-valuenow={h.column.getSize()}\n aria-valuemin={h.column.columnDef.minSize ?? 64}\n aria-valuemax={h.column.columnDef.maxSize ?? 640}\n tabIndex={-1}\n onMouseDown={h.getResizeHandler()}\n onTouchStart={h.getResizeHandler()}\n onDoubleClick={() => h.column.resetSize()}\n className=\"absolute inset-y-0 -right-8 z-10 w-16 cursor-col-resize after:absolute after:inset-y-8 after:right-8 after:w-1 after:bg-transparent after:transition-control group-hover/th:after:bg-line-strong coarse:after:bg-line focus-ring-inset\"\n />\n )}\n </>\n );\n return (\n <div\n key={h.id}\n role=\"columnheader\"\n data-col={h.column.id}\n aria-sort={dir === \"asc\" ? \"ascending\" : dir === \"desc\" ? \"descending\" : sortable ? \"none\" : undefined}\n className={cn(\"group/th relative\", cellPad(i), meta?.align === \"end\" && \"justify-end\", stickyCol(i, true), stickyCol(i, true) && \"hairline-b-strong\")}\n >\n {resizable ? (\n <ContextMenu>\n <ContextMenu.Trigger className={cn(\"flex min-w-0 flex-1 items-center self-stretch\", meta?.align === \"end\" && \"justify-end\")}>\n {content}\n </ContextMenu.Trigger>\n <ContextMenu.Content>\n <ContextMenu.Item onClick={() => resizeBy(h.column.id, 32)}>{t(\"dataTable.widenColumn\", \"Widen column\")}</ContextMenu.Item>\n <ContextMenu.Item onClick={() => resizeBy(h.column.id, -32)}>{t(\"dataTable.narrowColumn\", \"Narrow column\")}</ContextMenu.Item>\n <ContextMenu.Item onClick={() => h.column.resetSize()}>{t(\"dataTable.resetWidth\", \"Reset width\")}</ContextMenu.Item>\n </ContextMenu.Content>\n </ContextMenu>\n ) : (\n content\n )}\n </div>\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 as { current: HTMLDivElement | null }).current = e;\n }}\n className={cn(\"relative w-full min-w-0\", !inset && !padded && \"px-24\", className)}\n >\n <div\n role=\"table\"\n aria-label={ariaLabel}\n aria-rowcount={rows.length + 1}\n aria-busy={loading || undefined}\n className={cn(\"w-full overflow-clip\", inset && \"rounded-group bg-raised shadow-xs\")}\n >\n <div\n ref={head}\n role=\"rowgroup\"\n className={cn(\"sticky top-0 z-20 overflow-hidden\", onRaised ? \"bg-raised\" : \"bg-panel\")}\n onKeyDown={onHeadKeyDown}\n onFocus={(e) => {\n const at = headTargets(head.current).indexOf(e.target as HTMLElement);\n if (at < 0) return;\n anchor.current = null;\n setZone(\"head\");\n setHeadStop(at);\n }}\n onScroll={(e) => {\n if (body.current && body.current.scrollLeft !== e.currentTarget.scrollLeft) body.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {table.getHeaderGroups().map((hg) => (\n <div key={hg.id} role=\"row\" aria-rowindex={1} className=\"grid h-36 hairline-b-strong\" style={gridStyle}>\n {hg.headers.filter((h) => !hidden.has(h.column.id)).map(header)}\n </div>\n ))}\n </div>\n <div\n ref={body}\n role=\"rowgroup\"\n className=\"overflow-x-auto scrollbar-quiet scroll-fade-x\"\n onScroll={(e) => {\n if (head.current && head.current.scrollLeft !== e.currentTarget.scrollLeft) head.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {error ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n <div role=\"alert\">\n <Empty\n size=\"compact\"\n title={t(\"dataTable.loadFailed\", \"Couldn't load these rows\")}\n {...(onRetry ? {} : { description: t(\"dataTable.reloadToRetry\", \"Reload the page to try again.\") })}\n actions={\n onRetry && (\n <Button size=\"sm\" onClick={onRetry}>\n {t(\"dataTable.tryAgain\", \"Try again\")}\n </Button>\n )\n }\n />\n </div>\n </div>\n </div>\n ) : loading && rows.length === 0 ? (\n Array.from({ length: 8 }, (_, r) => (\n <div key={r} role=\"row\" className={cn(\"grid\", KAESO_DATA_TABLE_VARIANTS.density[density].classes)} style={gridStyle}>\n {cols.map((c, i) => (\n <div key={c.id} role=\"cell\" className={cn(cellPad(i), c.columnDef.meta?.align === \"end\" && \"justify-end\")}>\n <Skeleton shape=\"line\" style={{ width: `${40 + ((r * 7 + i * 13) % 45)}%` }} />\n </div>\n ))}\n </div>\n ))\n ) : rows.length === 0 ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n {empty ?? <Empty size=\"compact\" title={t(\"dataTable.noRows\", \"No rows\")} />}\n </div>\n </div>\n ) : virtual ? (\n <div className=\"relative\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((v) =>\n renderRow(rows[v.index]!, v.index, {\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: `translateY(${Math.round(v.start - scrollMargin)}px)`,\n }),\n )}\n </div>\n ) : (\n rows.map((r, i) => renderRow(r, i))\n )}\n </div>\n </div>\n <Pagination variant=\"load-more\" hasMore={!!hasMore} loading={loadingMore} onLoadMore={onLoadMore} />\n </div>\n );\n}\n\nconst DataTableBase = /* @__PURE__ */ forwardRef(DataTableInner);\nif (process.env.NODE_ENV !== \"production\") DataTableBase.displayName = \"DataTable\";\nexport const DataTable = DataTableBase as unknown as <T>(\n p: DataTableProps<T> & { ref?: React.Ref<HTMLDivElement> | undefined },\n) => ReturnType<typeof DataTableInner>;\n","import type { ColumnDef } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\nimport { formatDate, formatDuration, formatRelative, formatTokens, formatUSD, formatNumber } from \"../../format/index.js\";\nimport { StatusDot, type StatusDotProps } from \"../status-dot/status-dot.js\";\nimport { Avatar } from \"../avatar/avatar.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { TruncatedText } from \"../text/truncated.js\";\nimport type { StatusTone } from \"../../utils/tone.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { TIME_COLUMNS } from \"./time-columns.js\";\n\nfunction time<C extends object>(column: C): C {\n TIME_COLUMNS.add(column);\n return column;\n}\n\ntype Base<T = never> = {\n id: string;\n header: ReactNode;\n size?: number | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n tone?: ((row: T) => StatusTone | undefined) | undefined;\n};\ntype Accessor<T, V> = (row: T) => V;\n\nfunction make<T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: object = {},\n sortingFn?: ColumnDef<T, V>[\"sortingFn\"],\n): ColumnDef<T, V> {\n return {\n id: b.id,\n header: () => b.header,\n accessorFn: get,\n cell: (ctx) => cell(ctx.getValue() as V, ctx.row.original),\n ...(b.size ? { size: b.size } : {}),\n ...(sortingFn ? { sortingFn } : {}),\n meta: {\n ...(b.priority !== undefined ? { priority: b.priority } : {}),\n ...(b.grow ? { grow: true } : {}),\n ...(b.minWidth !== undefined ? { minWidth: b.minWidth } : {}),\n ...(b.tone ? { tone: b.tone } : {}),\n ...meta,\n },\n };\n}\n\nfunction Tokens({ value }: { value: number }) {\n const t = useUiText();\n const exact = t(\"dataTable.tokenCount\", \"{count} tokens\", { count: formatNumber(value) });\n return (\n <Tooltip content={exact}>\n <span>\n <span aria-hidden>{formatTokens(value)}</span>\n <span className=\"sr-only\">{exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nfunction RelativeTime({ value, now }: { value: string | Date; now: Date | number }) {\n const exact = formatDate(value, { time: true, seconds: true });\n return (\n <Tooltip content={`${exact} · ${formatDate(value, { time: true, utc: true })}`} shape=\"multiline\">\n <span className=\"text-fg-secondary\">\n <time dateTime={new Date(value).toISOString()}>{formatRelative(value, now)}</time>\n <span className=\"sr-only\"> {exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nexport const col = {\n text: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { text: (r: T) => get(r) }),\n mono: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { mono: true, text: (r: T) => get(r) }),\n number: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatNumber(v), { align: \"end\" }),\n money: <T,>(b: Base<T>, get: Accessor<T, string>, options: { decimals?: number | undefined } = {}) =>\n make(\n b,\n get,\n (v) => formatUSD(v, options.decimals === undefined ? {} : { decimals: options.decimals }),\n { align: \"end\", mono: false },\n (a, c, id) => Number(a.getValue(id)) - Number(c.getValue(id)),\n ),\n tokens: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => <Tokens value={v} />, { align: \"end\" }),\n duration: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatDuration(v), { align: \"end\" }),\n date: <T,>(b: Base<T>, get: Accessor<T, string | Date>) =>\n time(\n make(\n b,\n get,\n (v) => <time dateTime={new Date(v).toISOString()}>{formatDate(v, { time: true })}</time>,\n { text: (r: T) => formatDate(get(r), { time: true }) },\n \"datetime\",\n ),\n ),\n relative: <T,>(b: Base<T>, get: Accessor<T, string | Date>, options: { now?: Date | number | undefined } = {}) =>\n time(\n make(\n b,\n get,\n (v) => <RelativeTime value={v} now={options.now ?? Date.now()} />,\n { text: (r: T) => formatDate(get(r), { time: true }) },\n (a, c, id) => new Date(a.getValue(id) as string).getTime() - new Date(c.getValue(id) as string).getTime(),\n ),\n ),\n status: <T,>(b: Base<T>, get: Accessor<T, { tone: NonNullable<StatusDotProps[\"tone\"]>; label: string }>) =>\n make(b, get, (v) => <StatusDot tone={v.tone}>{v.label}</StatusDot>, { text: undefined }),\n avatar: <T,>(b: Base<T>, get: Accessor<T, { name: string; src?: string | undefined }>) =>\n make(\n b,\n get,\n (v) => (\n <span className=\"inline-flex min-w-0 items-center gap-8\">\n <Avatar name={v.name} {...(v.src ? { src: v.src } : {})} size={24} decorative />\n <TruncatedText>{v.name}</TruncatedText>\n </span>\n ),\n { text: (r: T) => get(r).name },\n ),\n custom: <T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: { align?: \"start\" | \"end\" | undefined; mono?: boolean | undefined } = {},\n ) => make(b, get, cell, meta),\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { formatTokens as e } from "../format.js";
3
- import { h as t, t as n } from "./core-CmK-8ObW.js";
3
+ import { h as t, t as n } from "./core-B0bULn-t.js";
4
4
  //#region src/components/charts/domain.ts
5
5
  var r = (e) => e.filter(Number.isFinite), i = (e) => e.some(Number.isFinite), a = (e) => i(e) && r(e).every((e) => e === 0);
6
6
  function o(e, t = []) {
@@ -25,4 +25,4 @@ function l(e, r, i = n.label.fontSize) {
25
25
  //#endregion
26
26
  export { i as a, l as i, s as n, a as o, r, o as s, c as t };
27
27
 
28
- //# sourceMappingURL=domain-obd_w9xk.js.map
28
+ //# sourceMappingURL=domain-BsM9UmAg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-obd_w9xk.js","names":["labelWidth","AXIS","finite","values","hasPoints","onlyZero","v","valueExtent","all","also","lo","hi","compactAxis","formatTokens","axisRoom","widest","labels","max","min","gap","fitLabel","scale","fontSize","label","room","chars","out","ch"],"sources":["../../src/components/charts/domain.ts"],"sourcesContent":["import { formatTokens } from \"../../format/index.js\";\nimport { AXIS, labelWidth } from \"./core.js\";\n\nexport const finite = (values: readonly number[]): number[] => values.filter(Number.isFinite);\n\nexport const hasPoints = (values: readonly number[]): boolean => values.some(Number.isFinite);\n\nexport const onlyZero = (values: readonly number[]): boolean => hasPoints(values) && finite(values).every((v) => v === 0);\n\nexport function valueExtent(values: readonly number[], also: readonly number[] = []): [number, number] {\n const all = finite([...values, ...also]);\n const lo = Math.min(0, ...all);\n const hi = Math.max(0, ...all);\n if (lo === 0 && hi === 0) return [0, 1];\n return [lo * 1.08, hi * 1.08];\n}\n\nexport const compactAxis = (v: number): string => formatTokens(v);\n\nexport function axisRoom(\n labels: readonly string[],\n { gap = 12, min = 52, max = Infinity }: { gap?: number | undefined; min?: number | undefined; max?: number | undefined } = {},\n): number {\n const widest = Math.max(0, ...labels.map(labelWidth));\n return Math.round(Math.min(max, Math.max(min, gap + widest + 4)));\n}\n\nexport function fitLabel(label: string, room: number, fontSize: number = AXIS.label.fontSize): string {\n const scale = fontSize / AXIS.label.fontSize;\n if (labelWidth(label) * scale <= room) return label;\n const chars = [...label];\n let out = \"\";\n for (const ch of chars) {\n if (labelWidth(`${out}${ch}…`) * scale > room) break;\n out += ch;\n }\n return `${out.trimEnd()}…`;\n}\n"],"mappings":";;;;AAGA,IAAaE,KAAU,MAAwCC,EAAO,OAAO,OAAO,QAAQ,GAE/EC,KAAa,MAAuCD,EAAO,KAAK,OAAO,QAAQ,GAE/EE,KAAY,MAAuCD,EAAUD,CAAM,KAAKD,EAAOC,CAAM,CAAC,CAAC,OAAO,MAAMG,MAAM,CAAC;AAExH,SAAgBC,EAAY,GAA2B,IAA0B,CAAC,GAAqB;CACrG,IAAMC,IAAMN,EAAO,CAAC,GAAGC,GAAQ,GAAGM,CAAI,CAAC,GACjCC,IAAK,KAAK,IAAI,GAAG,GAAGF,CAAG,GACvBG,IAAK,KAAK,IAAI,GAAG,GAAGH,CAAG;CAE7B,OADIE,MAAO,KAAKC,MAAO,IAAU,CAAC,GAAG,CAAC,IAC/B,CAACD,IAAK,MAAMC,IAAK,IAAI;AAC9B;AAEA,IAAaC,KAAe,MAAsBC,EAAaP,CAAC;AAEhE,SAAgBQ,EACd,GACA,EAAE,SAAM,IAAI,SAAM,IAAI,SAAM,aAA+F,CAAC,GACpH;CACR,IAAMC,IAAS,KAAK,IAAI,GAAG,GAAGC,EAAO,IAAIhB,CAAU,CAAC;CACpD,OAAO,KAAK,MAAM,KAAK,IAAIiB,GAAK,KAAK,IAAIC,GAAKC,IAAMJ,IAAS,CAAC,CAAC,CAAC;AAClE;AAEA,SAAgBK,EAAS,GAAe,GAAc,IAAmBnB,EAAK,MAAM,UAAkB;CACpG,IAAMoB,IAAQC,IAAWrB,EAAK,MAAM;CACpC,IAAID,EAAWuB,CAAK,IAAIF,KAASG,GAAM,OAAOD;CAC9C,IAAME,IAAQ,CAAC,GAAGF,CAAK,GACnBG,IAAM;CACV,KAAK,IAAMC,KAAMF,GAAO;EACtB,IAAIzB,EAAW,GAAG0B,IAAMC,EAAG,EAAE,IAAIN,IAAQG,GAAM;EAC/C,KAAOG;CACT;CACA,OAAO,GAAGD,EAAI,QAAQ,EAAE;AAC1B"}
1
+ {"version":3,"file":"domain-BsM9UmAg.js","names":["labelWidth","AXIS","finite","values","hasPoints","onlyZero","v","valueExtent","all","also","lo","hi","compactAxis","formatTokens","axisRoom","widest","labels","max","min","gap","fitLabel","scale","fontSize","label","room","chars","out","ch"],"sources":["../../src/components/charts/domain.ts"],"sourcesContent":["import { formatTokens } from \"../../format/index.js\";\nimport { AXIS, labelWidth } from \"./core.js\";\n\nexport const finite = (values: readonly number[]): number[] => values.filter(Number.isFinite);\n\nexport const hasPoints = (values: readonly number[]): boolean => values.some(Number.isFinite);\n\nexport const onlyZero = (values: readonly number[]): boolean => hasPoints(values) && finite(values).every((v) => v === 0);\n\nexport function valueExtent(values: readonly number[], also: readonly number[] = []): [number, number] {\n const all = finite([...values, ...also]);\n const lo = Math.min(0, ...all);\n const hi = Math.max(0, ...all);\n if (lo === 0 && hi === 0) return [0, 1];\n return [lo * 1.08, hi * 1.08];\n}\n\nexport const compactAxis = (v: number): string => formatTokens(v);\n\nexport function axisRoom(\n labels: readonly string[],\n { gap = 12, min = 52, max = Infinity }: { gap?: number | undefined; min?: number | undefined; max?: number | undefined } = {},\n): number {\n const widest = Math.max(0, ...labels.map(labelWidth));\n return Math.round(Math.min(max, Math.max(min, gap + widest + 4)));\n}\n\nexport function fitLabel(label: string, room: number, fontSize: number = AXIS.label.fontSize): string {\n const scale = fontSize / AXIS.label.fontSize;\n if (labelWidth(label) * scale <= room) return label;\n const chars = [...label];\n let out = \"\";\n for (const ch of chars) {\n if (labelWidth(`${out}${ch}…`) * scale > room) break;\n out += ch;\n }\n return `${out.trimEnd()}…`;\n}\n"],"mappings":";;;;AAGA,IAAaE,KAAU,MAAwCC,EAAO,OAAO,OAAO,QAAQ,GAE/EC,KAAa,MAAuCD,EAAO,KAAK,OAAO,QAAQ,GAE/EE,KAAY,MAAuCD,EAAUD,CAAM,KAAKD,EAAOC,CAAM,CAAC,CAAC,OAAO,MAAMG,MAAM,CAAC;AAExH,SAAgBC,EAAY,GAA2B,IAA0B,CAAC,GAAqB;CACrG,IAAMC,IAAMN,EAAO,CAAC,GAAGC,GAAQ,GAAGM,CAAI,CAAC,GACjCC,IAAK,KAAK,IAAI,GAAG,GAAGF,CAAG,GACvBG,IAAK,KAAK,IAAI,GAAG,GAAGH,CAAG;CAE7B,OADIE,MAAO,KAAKC,MAAO,IAAU,CAAC,GAAG,CAAC,IAC/B,CAACD,IAAK,MAAMC,IAAK,IAAI;AAC9B;AAEA,IAAaC,KAAe,MAAsBC,EAAaP,CAAC;AAEhE,SAAgBQ,EACd,GACA,EAAE,SAAM,IAAI,SAAM,IAAI,SAAM,aAA+F,CAAC,GACpH;CACR,IAAMC,IAAS,KAAK,IAAI,GAAG,GAAGC,EAAO,IAAIhB,CAAU,CAAC;CACpD,OAAO,KAAK,MAAM,KAAK,IAAIiB,GAAK,KAAK,IAAIC,GAAKC,IAAMJ,IAAS,CAAC,CAAC,CAAC;AAClE;AAEA,SAAgBK,EAAS,GAAe,GAAc,IAAmBnB,EAAK,MAAM,UAAkB;CACpG,IAAMoB,IAAQC,IAAWrB,EAAK,MAAM;CACpC,IAAID,EAAWuB,CAAK,IAAIF,KAASG,GAAM,OAAOD;CAC9C,IAAME,IAAQ,CAAC,GAAGF,CAAK,GACnBG,IAAM;CACV,KAAK,IAAMC,KAAMF,GAAO;EACtB,IAAIzB,EAAW,GAAG0B,IAAMC,EAAG,EAAE,IAAIN,IAAQG,GAAM;EAC/C,KAAOG;CACT;CACA,OAAO,GAAGD,EAAI,QAAQ,EAAE;AAC1B"}
@@ -42,6 +42,10 @@ var g = {
42
42
  mistral: {
43
43
  d: "M8 5H5v3h3zm0 9H5v3h3zm3 3H2v3h9zm0-9H5v3h6zm3 6h-3v3h3zm6-3H5v3h15zm0-3h-6v3h6zm0-3h-3v3h3zm0 9h-3v3h3zm3 3h-9v3h9z",
44
44
  color: "text-mark-mistral"
45
+ },
46
+ vercel: {
47
+ d: "M12 1.608 24 22.392H0Z",
48
+ color: "text-mark-vercel"
45
49
  }
46
50
  }, _ = { provider: {
47
51
  sm: { classes: "size-16 rounded-cell text-micro" },
@@ -277,10 +281,10 @@ var L = /* @__PURE__ */ s(function({ ttfbMs: r, totalMs: i, width: a = 240, clas
277
281
  }),
278
282
  children: [/* @__PURE__ */ u("div", {
279
283
  className: "flex h-6 w-full gap-2 overflow-hidden rounded-pill",
280
- children: [/* @__PURE__ */ l("span", {
284
+ children: [d > 0 && /* @__PURE__ */ l("span", {
281
285
  className: "h-full rounded-l-pill bg-viz-1",
282
286
  style: { width: `${d * 100}%` }
283
- }), /* @__PURE__ */ l("span", { className: "h-full flex-1 rounded-r-pill bg-fill-3" })]
287
+ }), d < 1 && /* @__PURE__ */ l("span", { className: "h-full flex-1 rounded-r-pill bg-fill-3" })]
284
288
  }), /* @__PURE__ */ u("div", {
285
289
  className: "flex justify-between gap-8 text-caption font-medium text-fg-tertiary",
286
290
  children: [/* @__PURE__ */ u("span", {
@@ -358,4 +362,4 @@ process.env.NODE_ENV !== "production" && (R.displayName = "ProviderCard");
358
362
  //#endregion
359
363
  export { j as a, S as c, I as d, y as f, M as i, R as l, v as n, N as o, _ as r, E as s, D as t, L as u };
360
364
 
361
- //# sourceMappingURL=identity-3Foi5F8w.js.map
365
+ //# sourceMappingURL=identity-BQoh-UpW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-BQoh-UpW.js","names":["__icon_ToolsIcon","__icon_CpuIcon","__icon_Image01Icon","__icon_Pdf01Icon","__icon_SourceCodeIcon","_Fragment","cn","useUiText","Icon","Tooltip","CopyButton","Badge","Fragment$1","PROVIDER_MARKS","KAESO_IDENTITY_VARIANTS","KAESO_IDENTITY_DEFAULT_VARIANTS","providerName","name","id","providerLetter","MARK_SIZE","ProviderBadge","mark","provider","label","tile","withName","size","className","CAP_ICON","ToolsIcon","CpuIcon","Image01Icon","Pdf01Icon","SourceCodeIcon","capabilityLabels","t","SHORT_ID","ModelLabel","providerDisplayName","model","capabilities","CapabilityIcons","capLabel","c","KEY_TONE","accessLabels","stateLabels","KAESO_KEY_DISPLAY_VARIANTS","KAESO_KEY_DISPLAY_DEFAULT_VARIANTS","KeyDisplay","state","redacted","stateBadge","access","copy","STATUS_CLASS","code","statusTexts","StatusCode","text","tone","color","el","showText","RequestTimeline","ratio","totalMs","ttfbMs","fmt","ms","formatNumber","width","ProviderCard","status","connected","keyLabel","detail","actions"],"sources":["../../src/components/kaeso/provider-marks.ts","../../src/components/kaeso/identity.tsx"],"sourcesContent":["export interface ProviderMark {\n d: string;\n color: string;\n}\n\nexport const PROVIDER_MARKS: Record<string, ProviderMark> = {\n openai: {\n d: \"M9.205 8.765v-2.26c0-.19.071-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.567 0 .166 0 .356-.024.547l-4.71-2.76a.8.8 0 0 0-.856 0zm10.608 8.8v-5.399c0-.333-.142-.57-.428-.737l-5.97-3.472 1.95-1.118a.43.43 0 0 1 .476 0l4.544 2.616c1.308.761 2.188 2.379 2.188 3.948 0 1.808-1.07 3.473-2.76 4.163ZM7.802 12.81l-1.95-1.142a.45.45 0 0 1-.239-.428V6.006c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.174c-.285.166-.428.404-.428.737zM12 15.235l-2.795-1.57v-3.33L12 8.765l2.795 1.57v3.33zm1.796 7.23a4.45 4.45 0 0 1-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472Zm-5.638-5.303-4.543-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.48 4.48 0 0 1 4.21 6.434v5.424c0 .333.142.57.428.737l5.947 3.449-1.951 1.118a.43.43 0 0 1-.476 0m-.261 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71a.8.8 0 0 0 .857 0l5.97-3.448v2.26c0 .19-.072.333-.238.428l-4.543 2.616c-.619.357-1.356.524-2.117.524Zm5.899 2.831a5.95 5.95 0 0 0 5.828-4.757c2.663-.69 4.376-3.188 4.376-5.733a6 6 0 0 0-1.998-4.447c.119-.5.19-1 .19-1.499 0-3.401-2.759-5.947-5.946-5.947a5.7 5.7 0 0 0-1.88.31A5.96 5.96 0 0 0 10.205.107a5.95 5.95 0 0 0-5.828 4.757C1.712 5.554 0 8.052 0 10.597c0 1.665.713 3.282 1.998 4.448-.12.5-.19.999-.19 1.498 0 3.401 2.759 5.947 5.946 5.947a5.7 5.7 0 0 0 1.88-.31 5.96 5.96 0 0 0 4.162 1.713\",\n color: \"text-mark-openai\",\n },\n anthropic: {\n d: \"M17.304 3.541h-3.672l6.696 16.918H24zm-10.608 0L0 20.459h3.744l1.37-3.553h7.005l1.369 3.553h3.744L10.536 3.541zm-.372 10.223L8.616 7.82l2.292 5.945z\",\n color: \"text-fg\",\n },\n deepseek: {\n d: \"M23.748 4.651c-.254-.124-.364.113-.512.233-.051.04-.094.09-.137.137-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.155-.708-.311-.955-.65-.172-.24-.219-.509-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.094.172.187.129.323-.082.28-.18.553-.266.833-.055.179-.137.218-.328.14a5.5 5.5 0 0 1-1.737-1.179c-.857-.828-1.631-1.743-2.597-2.46a12 12 0 0 0-.689-.47c-.985-.957.13-1.743.387-1.836.27-.098.094-.433-.778-.428-.872.003-1.67.295-2.687.685a3 3 0 0 1-.465.136 9.6 9.6 0 0 0-2.883-.101c-1.885.21-3.39 1.1-4.497 2.622C.082 8.776-.231 10.854.152 13.02c.403 2.284 1.568 4.175 3.36 5.653 1.857 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.132-.284 4.994-1.86.47.234.962.328 1.78.398.629.058 1.235-.031 1.705-.129.735-.155.684-.836.418-.961-2.155-1.004-1.682-.595-2.112-.926 1.095-1.295 2.768-3.598 3.284-6.733.05-.346.115-.834.108-1.114-.005-.171.035-.238.23-.257a4.2 4.2 0 0 0 1.545-.475c1.397-.763 1.96-2.016 2.093-3.517.02-.23-.005-.467-.247-.588M11.58 18.168c-2.088-1.642-3.101-2.183-3.52-2.16-.39.024-.32.472-.234.763.09.288.207.487.371.74.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.168-1.361-.801-2.5-1.86-3.301-3.306-.775-1.393-1.225-2.888-1.299-4.482-.02-.385.094-.522.477-.592a4.7 4.7 0 0 1 1.53-.038c2.131.311 3.946 1.264 5.467 2.774.868.86 1.525 1.887 2.202 2.89.72 1.066 1.494 2.082 2.48 2.915.348.291.626.513.892.677-.802.09-2.14.109-3.055-.615zm1.001-6.44a.306.306 0 0 1 .415-.287.3.3 0 0 1 .113.074.3.3 0 0 1 .086.214c0 .17-.136.307-.308.307a.303.303 0 0 1-.306-.307m3.11 1.596c-.2.081-.4.151-.591.16a1.25 1.25 0 0 1-.798-.254c-.274-.23-.47-.358-.551-.758a1.7 1.7 0 0 1 .015-.588c.07-.327-.007-.537-.238-.727-.188-.156-.426-.199-.689-.199a.6.6 0 0 1-.254-.078.253.253 0 0 1-.114-.358 1 1 0 0 1 .192-.21c.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.392.451.462.576.685.915.176.264.336.536.446.848.066.194-.02.353-.25.45\",\n color: \"text-fg\",\n },\n xai: {\n d: \"M7.168 12.02.391 7.035h5.766l4.182 3.01q-1.677.964-3.17 1.975m9.512 7.1-5.077-3.745q1.7-1.287 2.872-2.114l7.995 5.859Zm-10.844 0H0l.69-.644q3.17-3.101 8.741-6.812Q14.622 8.207 24 4.88v1.931q-1.085.482-2.196 1.005-8.846 4.158-15.968 11.304\",\n color: \"text-mark-xai\",\n },\n togetherai: {\n d: \"M21.33 5.172a5 5 0 0 0-6.83-1.83 4.98 4.98 0 0 0-2.496 4.111L17 7.46v.428h-4.996a5 5 0 1 0 9.325-2.716M2.67 5.17A5 5 0 0 0 4.5 12a4.98 4.98 0 0 0 4.808.105l-2.492-4.33.371-.214 2.498 4.327A5 5 0 1 0 2.67 5.17M11.999 21.33a5 5 0 0 0 4.999-5c0-1.775-.916-3.33-2.312-4.216l-2.504 4.324-.37-.215 2.497-4.327A5 5 0 1 0 12 21.33Z\",\n color: \"text-mark-togetherai\",\n },\n groq: {\n d: \"M15.955 0 3.944 12.538l7.43 1.904L8.045 24l12.011-12.538-7.43-1.904z\",\n color: \"text-fg\",\n },\n openrouter: {\n d: \"M18.376 3.806c2.693 0 4.876 2.201 4.876 4.917s-2.183 4.916-4.876 4.916l4.836 4.876c.615.62.18 1.679-.689 1.679H8.626C4.138 20.194.5 16.525.5 12s3.638-8.194 8.126-8.194zm-9.75 3.278c-2.693 0-4.876 2.2-4.876 4.916 0 2.715 2.183 4.916 4.876 4.916 2.692 0 4.875-2.2 4.875-4.916 0-2.715-2.183-4.916-4.875-4.916\",\n color: \"text-mark-openrouter\",\n },\n mistral: {\n d: \"M8 5H5v3h3zm0 9H5v3h3zm3 3H2v3h9zm0-9H5v3h6zm3 6h-3v3h3zm6-3H5v3h15zm0-3h-6v3h6zm0-3h-3v3h3zm0 9h-3v3h3zm3 3h-9v3h9z\",\n color: \"text-mark-mistral\",\n },\n vercel: {\n d: \"M12 1.608 24 22.392H0Z\",\n color: \"text-mark-vercel\",\n },\n};\n","import { forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { ToolsIcon as __icon_ToolsIcon, CpuIcon as __icon_CpuIcon, Image01Icon as __icon_Image01Icon, Pdf01Icon as __icon_Pdf01Icon, SourceCodeIcon as __icon_SourceCodeIcon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport { Badge } from \"../badge/badge.js\";\nimport { CopyButton } from \"../copy-button/copy-button.js\";\nimport { PROVIDER_MARKS } from \"./provider-marks.js\";\nimport { formatNumber } from \"../../format/index.js\";\nimport { useUiText, type UiText } from \"../../i18n/context.js\";\n\nexport const KAESO_IDENTITY_VARIANTS = {\n provider: {\n sm: { classes: \"size-16 rounded-cell text-micro\" },\n md: { classes: \"size-20 rounded-avatar text-micro\" },\n lg: { classes: \"size-28 rounded-org text-caption\" },\n xl: { classes: \"size-40 rounded-org text-body\" },\n },\n} as const;\nexport const KAESO_IDENTITY_DEFAULT_VARIANTS = { provider: \"md\" } as const;\n\nexport const providerName = (id: string, name?: string | undefined) => name?.trim() || id;\nconst providerLetter = (id: string, name?: string | undefined) => (/[\\p{L}\\p{N}]/u.exec(providerName(id, name))?.[0] ?? id.slice(0, 1)).toLocaleUpperCase();\n\nconst MARK_SIZE = { sm: \"size-10\", md: \"size-12\", lg: \"size-16\", xl: \"size-24\" } as const;\n\nexport const ProviderBadge = /* @__PURE__ */ forwardRef<\n HTMLSpanElement,\n {\n provider: string;\n name?: string | undefined;\n size?: keyof typeof KAESO_IDENTITY_VARIANTS.provider | undefined;\n withName?: boolean | undefined;\n className?: string | undefined;\n }\n>(function ProviderBadge({ provider, name, size = \"md\", withName, className }, ref) {\n const mark = PROVIDER_MARKS[provider];\n const label = providerName(provider, name);\n const tile = (\n <span\n aria-hidden={withName || undefined}\n {...(!withName ? { role: \"img\", \"aria-label\": label } : {})}\n className={cn(\n \"inline-flex shrink-0 items-center justify-center bg-fill-1 font-semibold shadow-ring\",\n mark ? mark.color : \"text-fg-secondary\",\n KAESO_IDENTITY_VARIANTS.provider[size].classes,\n )}\n >\n {mark ? (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" fillRule=\"evenodd\" aria-hidden focusable=\"false\" className={MARK_SIZE[size]}>\n <path d={mark.d} />\n </svg>\n ) : (\n providerLetter(provider, name)\n )}\n </span>\n );\n if (!withName)\n return (\n <span ref={ref} className={cn(\"inline-flex\", className)}>\n {tile}\n </span>\n );\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8 text-body text-fg\", className)}>\n {tile}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderBadge.displayName = \"ProviderBadge\";\n\nexport type Capability = \"tools\" | \"reasoning\" | \"vision\" | \"pdf\" | \"structuredOutput\";\nconst CAP_ICON: Record<Capability, IconData> = {\n tools: __icon_ToolsIcon,\n reasoning: __icon_CpuIcon,\n vision: __icon_Image01Icon,\n pdf: __icon_Pdf01Icon,\n structuredOutput: __icon_SourceCodeIcon,\n};\nfunction capabilityLabels(t: UiText): Record<Capability, string> {\n return {\n tools: t(\"modelLabel.toolCalling\", \"Tool calling\"),\n reasoning: t(\"modelLabel.reasoning\", \"Reasoning\"),\n vision: t(\"modelLabel.imageInput\", \"Image input\"),\n pdf: t(\"modelLabel.pdfInput\", \"PDF input\"),\n structuredOutput: t(\"modelLabel.structuredOutput\", \"Structured output\"),\n };\n}\n\nconst SHORT_ID = 14;\n\nexport interface ModelLabelProps {\n provider: string;\n providerName?: string | undefined;\n model: string;\n name?: string | undefined;\n capabilities?: Capability[] | undefined;\n mark?: boolean | undefined;\n className?: string | undefined;\n}\n\nexport const ModelLabel = /* @__PURE__ */ forwardRef<HTMLSpanElement, ModelLabelProps>(function ModelLabel(\n { provider, providerName: providerDisplayName, model, name, capabilities = [], mark = true, className },\n ref,\n) {\n return (\n <span ref={ref} className={cn(\"inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n {mark && <ProviderBadge provider={provider} name={providerDisplayName} />}\n {name ? (\n <>\n <span className=\"min-w-0 truncate text-body text-fg\">{name}</span>\n <span className=\"flex h-20 min-w-0 flex-1 basis-0 flex-wrap content-start items-center overflow-hidden\">\n <span aria-hidden className=\"h-20 w-0\" />\n <span className={cn(\"flex-1 truncate mono text-small text-fg-secondary\", model.length <= SHORT_ID ? \"min-w-max\" : \"min-w-96\")}>{model}</span>\n </span>\n </>\n ) : (\n <span className=\"min-w-0 truncate mono text-small text-fg\">{model}</span>\n )}\n {capabilities.length > 0 && <CapabilityIcons capabilities={capabilities} className=\"hidden sm:flex\" />}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ModelLabel.displayName = \"ModelLabel\";\n\nexport const CapabilityIcons = /* @__PURE__ */ forwardRef<HTMLSpanElement, { capabilities: Capability[]; className?: string | undefined }>(function CapabilityIcons(\n { capabilities, className },\n ref,\n) {\n const t = useUiText();\n const capLabel = capabilityLabels(t);\n if (capabilities.length === 0) return null;\n return (\n <span\n ref={ref}\n role=\"img\"\n className={cn(\"flex shrink-0 items-center gap-2\", className)}\n aria-label={t(\"modelLabel.capabilities\", \"Capabilities: {list}\", {\n list: capabilities.map((c) => capLabel[c]).join(t(\"modelLabel.listSeparator\", \", \")),\n })}\n >\n {capabilities.map((c) => (\n <Tooltip key={c} content={capLabel[c]}>\n <span className=\"inline-flex size-20 items-center justify-center rounded-pill text-fg-tertiary hover:text-fg\">\n <Icon icon={CAP_ICON[c]} size=\"xs\" />\n </span>\n </Tooltip>\n ))}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") CapabilityIcons.displayName = \"CapabilityIcons\";\n\nexport type KeyState = \"active\" | \"disabled\" | \"expired\" | \"archived\";\nconst KEY_TONE: Record<KeyState, \"success\" | \"neutral\" | \"warning\"> = { active: \"success\", disabled: \"neutral\", expired: \"warning\", archived: \"neutral\" };\n\nexport interface KeyDisplayProps {\n redacted: string;\n state?: KeyState | undefined;\n access?: \"inference\" | \"platform\" | \"both\" | undefined;\n copy?: boolean | undefined;\n className?: string | undefined;\n stateBadge?: boolean | undefined;\n}\n\nfunction accessLabels(t: UiText) {\n return {\n inference: t(\"keyDisplay.inference\", \"Inference\"),\n platform: t(\"keyDisplay.platform\", \"Platform\"),\n both: t(\"keyDisplay.inferenceAndPlatform\", \"Inference + platform\"),\n };\n}\n\nfunction stateLabels(t: UiText): Record<KeyState, string> {\n return {\n active: t(\"keyDisplay.active\", \"Active\"),\n disabled: t(\"keyDisplay.disabled\", \"Disabled\"),\n expired: t(\"keyDisplay.expired\", \"Expired\"),\n archived: t(\"keyDisplay.archived\", \"Archived\"),\n };\n}\n\nexport const KAESO_KEY_DISPLAY_VARIANTS = {} as const;\nexport const KAESO_KEY_DISPLAY_DEFAULT_VARIANTS = {} as const;\n\nexport const KeyDisplay = /* @__PURE__ */ forwardRef<HTMLSpanElement, KeyDisplayProps>(function KeyDisplay(\n { redacted, state = \"active\", stateBadge = true, access, copy = true, className },\n ref,\n) {\n const t = useUiText();\n return (\n <span ref={ref} className={cn(\"group/key inline-flex max-w-full min-w-0 items-center gap-8\", className)}>\n <span className={cn(\"min-w-0 truncate mono text-small\", state === \"active\" ? \"text-fg\" : \"text-fg-secondary\")}>{redacted}</span>\n {stateBadge && state !== \"active\" && <Badge tone={KEY_TONE[state] === \"warning\" ? \"warning\" : \"neutral\"}>{stateLabels(t)[state]}</Badge>}\n {access && <Badge tone=\"outline\">{accessLabels(t)[access]}</Badge>}\n {copy && (\n <span className=\"opacity-0 transition-control group-hover/key:opacity-100 coarse:opacity-100 focus-within:opacity-100\">\n <CopyButton value={redacted} size=\"xs\" label={t(\"keyDisplay.copyRedactedKey\", \"Copy redacted key\")} />\n </span>\n )}\n </span>\n );\n});\nif (process.env.NODE_ENV !== \"production\") KeyDisplay.displayName = \"KeyDisplay\";\n\nconst STATUS_CLASS = (code: number) => (code >= 500 ? \"danger\" : code >= 400 ? \"warning\" : \"neutral\") as \"danger\" | \"warning\" | \"neutral\";\nfunction statusTexts(t: UiText): Record<number, string> {\n return {\n 200: t(\"statusCode.ok\", \"OK\"),\n 201: t(\"statusCode.created\", \"Created\"),\n 204: t(\"statusCode.noContent\", \"No content\"),\n 400: t(\"statusCode.badRequest\", \"Bad request\"),\n 401: t(\"statusCode.unauthorized\", \"Unauthorized\"),\n 403: t(\"statusCode.forbidden\", \"Forbidden\"),\n 404: t(\"statusCode.notFound\", \"Not found\"),\n 408: t(\"statusCode.timeout\", \"Timeout\"),\n 409: t(\"statusCode.conflict\", \"Conflict\"),\n 413: t(\"statusCode.tooLarge\", \"Too large\"),\n 422: t(\"statusCode.unprocessable\", \"Unprocessable\"),\n 429: t(\"statusCode.rateLimited\", \"Rate limited\"),\n 499: t(\"statusCode.clientClosed\", \"Client closed\"),\n 500: t(\"statusCode.serverError\", \"Server error\"),\n 502: t(\"statusCode.badGateway\", \"Bad gateway\"),\n 503: t(\"statusCode.unavailable\", \"Unavailable\"),\n 504: t(\"statusCode.gatewayTimeout\", \"Gateway timeout\"),\n 529: t(\"statusCode.overloaded\", \"Overloaded\"),\n };\n}\n\nexport const StatusCode = /* @__PURE__ */ forwardRef<HTMLSpanElement, { code: number; showText?: boolean | undefined; className?: string | undefined }>(function StatusCode(\n { code, showText, className },\n ref,\n) {\n const t = useUiText();\n const text = statusTexts(t)[code];\n const tone = STATUS_CLASS(code);\n const color = { danger: \"text-danger-text\", warning: \"text-warning-text\", neutral: code >= 200 && code < 300 ? \"text-fg\" : \"text-fg-secondary\" }[tone];\n const el = (\n <span ref={ref} tabIndex={showText ? undefined : 0} className={cn(\"inline-flex items-center gap-6 outline-none\", className)}>\n <span className={cn(\"mono text-small font-medium tabular\", color)}>{code}</span>\n {showText && <span className=\"text-small text-fg-secondary\">{text ?? \"\"}</span>}\n <span className=\"sr-only\">{text ?? \"\"}</span>\n </span>\n );\n return showText || !text ? el : <Tooltip content={t(\"statusCode.tooltip\", \"{code} {text}\", { code: String(code), text })}>{el}</Tooltip>;\n});\nif (process.env.NODE_ENV !== \"production\") StatusCode.displayName = \"StatusCode\";\n\nexport const RequestTimeline = /* @__PURE__ */ forwardRef<\n HTMLDivElement,\n { ttfbMs: number; totalMs: number; width?: 160 | 240 | \"full\" | undefined; className?: string | undefined }\n>(function RequestTimeline({ ttfbMs, totalMs, width = 240, className }, ref) {\n const t = useUiText();\n const ratio = totalMs > 0 ? Math.min(1, ttfbMs / totalMs) : 0;\n const fmt = (ms: number) =>\n ms < 1000 ? `${Math.round(ms)} ms` : `${formatNumber(ms / 1000, { minimumFractionDigits: 1, maximumFractionDigits: 1, useGrouping: false })} s`;\n return (\n <div\n ref={ref}\n className={cn(\"flex flex-col gap-6\", width === \"full\" ? \"w-full\" : width === 240 ? \"w-240\" : \"w-160\", className)}\n role=\"img\"\n aria-label={t(\"requestTimeline.label\", \"Time to first byte {ttfb} of {total} total\", { ttfb: fmt(ttfbMs), total: fmt(totalMs) })}\n >\n <div className=\"flex h-6 w-full gap-2 overflow-hidden rounded-pill\">\n {ratio > 0 && <span className=\"h-full rounded-l-pill bg-viz-1\" style={{ width: `${ratio * 100}%` }} />}\n {ratio < 1 && <span className=\"h-full flex-1 rounded-r-pill bg-fill-3\" />}\n </div>\n <div className=\"flex justify-between gap-8 text-caption font-medium text-fg-tertiary\">\n <span className=\"flex min-w-0 flex-col\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(ttfbMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.firstByte\", \"First byte\")}</span>\n </span>\n <span className=\"flex min-w-0 flex-col items-end text-right\">\n <span className=\"whitespace-nowrap text-fg-secondary tabular\">{fmt(totalMs)}</span>\n <span className=\"wrap-break-word\">{t(\"requestTimeline.totalTime\", \"Total\")}</span>\n </span>\n </div>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") RequestTimeline.displayName = \"RequestTimeline\";\n\nexport interface ProviderCardProps {\n provider: string;\n name?: string | undefined;\n connected: boolean;\n status: ReactNode;\n keyLabel?: ReactNode | undefined;\n detail?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nexport const ProviderCard = /* @__PURE__ */ forwardRef<HTMLDivElement, ProviderCardProps>(function ProviderCard(\n { provider, name, connected, status, keyLabel, detail, actions, className },\n ref,\n) {\n const t = useUiText();\n const label = providerName(provider, name);\n return (\n <section ref={ref} aria-label={label} className={cn(\"flex min-w-0 flex-col gap-16 rounded-group bg-raised p-20 shadow-xs\", className)}>\n <div className=\"flex min-w-0 items-center gap-12\">\n <ProviderBadge provider={provider} name={name} size=\"xl\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <h3 className=\"truncate text-body-lg font-semibold text-fg\">{label}</h3>\n <span className=\"text-small text-fg-secondary text-pretty\">{status}</span>\n </div>\n <Badge tone={connected ? \"success\" : \"neutral\"}>\n {connected ? t(\"providerCard.connected\", \"Connected\") : t(\"providerCard.notConnected\", \"Not connected\")}\n </Badge>\n </div>\n {(keyLabel || detail) && (\n <div className=\"flex min-w-0 flex-col gap-2 rounded-well bg-fill-1 px-12 py-10\">\n {keyLabel && <span className=\"truncate text-body text-fg\">{keyLabel}</span>}\n {detail && <span className=\"truncate text-small text-fg-tertiary\">{detail}</span>}\n </div>\n )}\n {actions && <div className=\"mt-auto flex flex-wrap items-center gap-8\">{actions}</div>}\n </section>\n );\n});\nif (process.env.NODE_ENV !== \"production\") ProviderCard.displayName = \"ProviderCard\";\n"],"mappings":";;;;;;;;;;;;AAKA,IAAaa,IAA+C;CAC1D,QAAQ;EACN,GAAG;EACH,OAAO;CACT;CACA,WAAW;EACT,GAAG;EACH,OAAO;CACT;CACA,UAAU;EACR,GAAG;EACH,OAAO;CACT;CACA,KAAK;EACH,GAAG;EACH,OAAO;CACT;CACA,YAAY;EACV,GAAG;EACH,OAAO;CACT;CACA,MAAM;EACJ,GAAG;EACH,OAAO;CACT;CACA,YAAY;EACV,GAAG;EACH,OAAO;CACT;CACA,SAAS;EACP,GAAG;EACH,OAAO;CACT;CACA,QAAQ;EACN,GAAG;EACH,OAAO;CACT;AACF,GC/BaC,IAA0B,EACrC,UAAU;CACR,IAAI,EAAE,SAAS,kCAAkC;CACjD,IAAI,EAAE,SAAS,oCAAoC;CACnD,IAAI,EAAE,SAAS,mCAAmC;CAClD,IAAI,EAAE,SAAS,gCAAgC;AACjD,EACF,GACaC,IAAkC,EAAE,UAAU,KAAK,GAEnDC,KAAgB,GAAY,MAA8BC,GAAM,KAAK,KAAKC,GACjFC,KAAkB,GAAY,OAA+B,gBAAgB,KAAKH,EAAaE,GAAID,CAAI,CAAC,CAAC,GAAG,MAAMC,EAAG,MAAM,GAAG,CAAC,EAAA,CAAG,kBAAkB,GAEpJE,IAAY;CAAE,IAAI;CAAW,IAAI;CAAW,IAAI;CAAW,IAAI;AAAU,GAElEC,IAAgC,kBAS3C,SAAuB,EAAE,aAAU,SAAM,UAAO,MAAM,aAAU,gBAAa,GAAK;CAClF,IAAMC,IAAOT,EAAeU,IACtBC,IAAQR,EAAaO,GAAUN,CAAI,GACnCQ,IACJ,kBAAC,QAAD;EACE,eAAaC,KAAY,KAAA;EACzB,GAAMA,IAAkD,CAAC,IAAxC;GAAE,MAAM;GAAO,cAAcF;EAAM;EACpD,WAAWlB,EACT,wFACAgB,IAAOA,EAAK,QAAQ,qBACpBR,EAAwB,SAASa,EAAK,CAAC,OACzC;EAEC,UAAAL,IACC,kBAAC,OAAD;GAAK,SAAQ;GAAY,MAAK;GAAe,UAAS;GAAU,eAAA;GAAY,WAAU;GAAQ,WAAWF,EAAUO;GACjH,UAAA,kBAAC,QAAD,EAAM,GAAGL,EAAK,EAAI,CAAA;EACf,CAAA,IAELH,EAAeI,GAAUN,CAAI;CAE3B,CAAA;CAQR,OANKS,IAOH,kBAAC,QAAD;EAAW;EAAK,WAAWpB,EAAG,uEAAuEsB,CAAS;EAA9G,UAAA,CACGH,GACD,kBAAC,QAAD;GAAM,WAAU;GAAoB,UAAAD;EAAY,CAAA,CAC5C;C,KARJ,kBAAC,QAAD;EAAW;EAAK,WAAWlB,EAAG,eAAesB,CAAS;EACnD,UAAAH;CACG,CAAA;AAQZ,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAc,cAAc;AAGvE,IAAMI,IAAyC;CAC7C,OAAO7B;CACP,WAAWC;CACX,QAAQC;CACR,KAAKC;CACL,kBAAkBC;AACpB;AACA,SAAS+B,EAAiB,GAAuC;CAC/D,OAAO;EACL,OAAOC,EAAE,0BAA0B,cAAc;EACjD,WAAWA,EAAE,wBAAwB,WAAW;EAChD,QAAQA,EAAE,yBAAyB,aAAa;EAChD,KAAKA,EAAE,uBAAuB,WAAW;EACzC,kBAAkBA,EAAE,+BAA+B,mBAAmB;CACxE;AACF;AAEA,IAAMC,IAAW,IAYJC,IAA6B,kBAA6C,SACrF,EAAE,aAAU,cAAcC,GAAqB,UAAO,SAAM,kBAAe,CAAC,GAAG,UAAO,IAAM,gBAC5F,GACA;CACA,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWjC,EAAG,qDAAqDsB,CAAS;EAA5F,UAAA;GACGN,KAAQ,kBAACD,GAAD;IAAyB;IAAU,MAAMkB;GAAsB,CAAA;GACvEtB,IACC,kBAAAZ,GAAA,EAAA,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAAsC,UAAAY;GAAW,CAAA,GACjE,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,kBAAC,QAAD;KAAM,eAAA;KAAY,WAAU;IAAY,CAAA,GACxC,kBAAC,QAAD;KAAM,WAAWX,EAAG,qDAAqDkC,EAAM,UAAUH,IAAW,cAAc,UAAU;KAAI,UAAAG;IAAY,CAAA,CACxI;GACN,CAAA,CAAA,EAAA,CAAA,IAEF,kBAAC,QAAD;IAAM,WAAU;IAA4C,UAAAA;GAAY,CAAA;GAEzEC,EAAa,SAAS,KAAK,kBAACC,GAAD;IAA+B;IAAc,WAAU;GAAkB,CAAA;EACjG;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc;AAEpE,IAAaA,IAAkC,kBAA4F,SACzI,EAAE,iBAAc,gBAChB,GACA;CACA,IAAMN,IAAI7B,EAAU,GACdoC,IAAWR,EAAiBC,CAAC;CAEnC,OADIK,EAAa,WAAW,IAAU,OAEpC,kBAAC,QAAD;EACO;EACL,MAAK;EACL,WAAWnC,EAAG,oCAAoCsB,CAAS;EAC3D,cAAYQ,EAAE,2BAA2B,wBAAwB,EAC/D,MAAMK,EAAa,KAAK,MAAME,EAASC,EAAE,CAAC,CAAC,KAAKR,EAAE,4BAA4B,IAAI,CAAC,EACrF,CAAC;EAEA,UAAAK,EAAa,KAAK,MACjB,kBAAChC,GAAD;GAAiB,SAASkC,EAASC;GACjC,UAAA,kBAAC,QAAD;IAAM,WAAU;IACd,UAAA,kBAACpC,GAAD;KAAM,MAAMqB,EAASe;KAAI,MAAK;IAAM,CAAA;GAChC,CAAA;EACC,GAJKA,CAIL,CACV;CACG,CAAA;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAGzE,IAAMC,IAAgE;CAAE,QAAQ;CAAW,UAAU;CAAW,SAAS;CAAW,UAAU;AAAU;AAWxJ,SAASC,EAAa,GAAW;CAC/B,OAAO;EACL,WAAWV,EAAE,wBAAwB,WAAW;EAChD,UAAUA,EAAE,uBAAuB,UAAU;EAC7C,MAAMA,EAAE,mCAAmC,sBAAsB;CACnE;AACF;AAEA,SAASW,EAAY,GAAqC;CACxD,OAAO;EACL,QAAQX,EAAE,qBAAqB,QAAQ;EACvC,UAAUA,EAAE,uBAAuB,UAAU;EAC7C,SAASA,EAAE,sBAAsB,SAAS;EAC1C,UAAUA,EAAE,uBAAuB,UAAU;CAC/C;AACF;AAEA,IAAaY,IAA6B,CAAC,GAC9BC,IAAqC,CAAC,GAEtCC,IAA6B,kBAA6C,SACrF,EAAE,aAAU,WAAQ,UAAU,gBAAa,IAAM,WAAQ,UAAO,IAAM,gBACtE,GACA;CACA,IAAMd,IAAI7B,EAAU;CACpB,OACE,kBAAC,QAAD;EAAW;EAAK,WAAWD,EAAG,+DAA+DsB,CAAS;EAAtG,UAAA;GACE,kBAAC,QAAD;IAAM,WAAWtB,EAAG,oCAAoC6C,MAAU,WAAW,YAAY,mBAAmB;IAAI,UAAAC;GAAe,CAAA;GAC9HC,KAAcF,MAAU,YAAY,kBAACxC,GAAD;IAAO,MAAMkC,EAASM,OAAW,YAAY,YAAY;IAAY,UAAAJ,EAAYX,CAAC,CAAC,CAACe;GAAc,CAAA;GACtIG,KAAU,kBAAC3C,GAAD;IAAO,MAAK;IAAW,UAAAmC,EAAaV,CAAC,CAAC,CAACkB;GAAe,CAAA;GAChEC,KACC,kBAAC,QAAD;IAAM,WAAU;IACd,UAAA,kBAAC7C,GAAD;KAAY,OAAO0C;KAAU,MAAK;KAAK,OAAOhB,EAAE,8BAA8B,mBAAmB;IAAI,CAAA;GACjG,CAAA;EAEJ;;AAEV,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc;AAEpE,IAAMoB,KAAgB,MAAkBC,KAAQ,MAAM,WAAWA,KAAQ,MAAM,YAAY;AAC3F,SAASC,EAAY,GAAmC;CACtD,OAAO;EACL,KAAKtB,EAAE,iBAAiB,IAAI;EAC5B,KAAKA,EAAE,sBAAsB,SAAS;EACtC,KAAKA,EAAE,wBAAwB,YAAY;EAC3C,KAAKA,EAAE,yBAAyB,aAAa;EAC7C,KAAKA,EAAE,2BAA2B,cAAc;EAChD,KAAKA,EAAE,wBAAwB,WAAW;EAC1C,KAAKA,EAAE,uBAAuB,WAAW;EACzC,KAAKA,EAAE,sBAAsB,SAAS;EACtC,KAAKA,EAAE,uBAAuB,UAAU;EACxC,KAAKA,EAAE,uBAAuB,WAAW;EACzC,KAAKA,EAAE,4BAA4B,eAAe;EAClD,KAAKA,EAAE,0BAA0B,cAAc;EAC/C,KAAKA,EAAE,2BAA2B,eAAe;EACjD,KAAKA,EAAE,0BAA0B,cAAc;EAC/C,KAAKA,EAAE,yBAAyB,aAAa;EAC7C,KAAKA,EAAE,0BAA0B,aAAa;EAC9C,KAAKA,EAAE,6BAA6B,iBAAiB;EACrD,KAAKA,EAAE,yBAAyB,YAAY;CAC9C;AACF;AAEA,IAAauB,IAA6B,kBAA8G,SACtJ,EAAE,SAAM,aAAU,gBAClB,GACA;CACA,IAAMvB,IAAI7B,EAAU,GACdqD,IAAOF,EAAYtB,CAAC,CAAC,CAACqB,IACtBI,IAAOL,EAAaC,CAAI,GACxBK,IAAQ;EAAE,QAAQ;EAAoB,SAAS;EAAqB,SAASL,KAAQ,OAAOA,IAAO,MAAM,YAAY;CAAoB,EAAEI,IAC3IE,IACJ,kBAAC,QAAD;EAAW;EAAK,UAAUC,IAAW,KAAA,IAAY;EAAG,WAAW1D,EAAG,+CAA+CsB,CAAS;EAA1H,UAAA;GACE,kBAAC,QAAD;IAAM,WAAWtB,EAAG,uCAAuCwD,CAAK;IAAI,UAAAL;GAAW,CAAA;GAC9EO,KAAY,kBAAC,QAAD;IAAM,WAAU;IAAgC,UAAAJ,KAAQ;GAAS,CAAA;GAC9E,kBAAC,QAAD;IAAM,WAAU;IAAW,UAAAA,KAAQ;GAAS,CAAA;EACxC;;CAER,OAAOI,KAAY,CAACJ,IAAOG,IAAK,kBAACtD,GAAD;EAAS,SAAS2B,EAAE,sBAAsB,iBAAiB;GAAE,MAAM,OAAOqB,CAAI;GAAG;EAAK,CAAC;EAAI,UAAAM;CAAY,CAAA;AACzI,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAW,cAAc;AAEpE,IAAaE,IAAkC,kBAG7C,SAAyB,EAAE,WAAQ,YAAS,WAAQ,KAAK,gBAAa,GAAK;CAC3E,IAAM7B,IAAI7B,EAAU,GACd2D,IAAQC,IAAU,IAAI,KAAK,IAAI,GAAGC,IAASD,CAAO,IAAI,GACtDE,KAAO,MACXC,IAAK,MAAO,GAAG,KAAK,MAAMA,CAAE,EAAE,OAAO,GAAGC,EAAaD,IAAK,KAAM;EAAE,uBAAuB;EAAG,uBAAuB;EAAG,aAAa;CAAM,CAAC,EAAE;CAC9I,OACE,kBAAC,OAAD;EACO;EACL,WAAWhE,EAAG,uBAAuBkE,MAAU,SAAS,WAAWA,MAAU,MAAM,UAAU,SAAS5C,CAAS;EAC/G,MAAK;EACL,cAAYQ,EAAE,yBAAyB,8CAA8C;GAAE,MAAMiC,EAAID,CAAM;GAAG,OAAOC,EAAIF,CAAO;EAAE,CAAC;EAJjI,UAAA,CAME,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACGD,IAAQ,KAAK,kBAAC,QAAD;IAAM,WAAU;IAAiC,OAAO,EAAE,OAAO,GAAGA,IAAQ,IAAI,GAAG;GAAI,CAAA,GACpGA,IAAQ,KAAK,kBAAC,QAAD,EAAM,WAAU,yCAA0C,CAAA,CACrE;EACL,CAAA,GAAA,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,kBAAC,QAAD;KAAM,WAAU;KAA+C,UAAAG,EAAID,CAAM;IAAQ,CAAA,GACjF,kBAAC,QAAD;KAAM,WAAU;KAAmB,UAAAhC,EAAE,6BAA6B,YAAY;IAAQ,CAAA,CAClF;GACN,CAAA,GAAA,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,kBAAC,QAAD;KAAM,WAAU;KAA+C,UAAAiC,EAAIF,CAAO;IAAQ,CAAA,GAClF,kBAAC,QAAD;KAAM,WAAU;KAAmB,UAAA/B,EAAE,6BAA6B,OAAO;IAAQ,CAAA,CAC7E;GACH,CAAA,CAAA;EACF,CAAA,CAAA;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAgB,cAAc;AAazE,IAAaqC,IAA+B,kBAA8C,SACxF,EAAE,aAAU,SAAM,cAAW,WAAQ,aAAU,WAAQ,YAAS,gBAChE,GACA;CACA,IAAMrC,IAAI7B,EAAU,GACdiB,IAAQR,EAAaO,GAAUN,CAAI;CACzC,OACE,kBAAC,WAAD;EAAc;EAAK,cAAYO;EAAO,WAAWlB,EAAG,uEAAuEsB,CAAS;EAApI,UAAA;GACE,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAACP,GAAD;MAAyB;MAAgB;MAAM,MAAK;KAAM,CAAA;KAC1D,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,kBAAC,MAAD;OAAI,WAAU;OAA+C,UAAAG;MAAU,CAAA,GACvE,kBAAC,QAAD;OAAM,WAAU;OAA4C,UAAAkD;MAAa,CAAA,CACtE;;KACL,kBAAC/D,GAAD;MAAO,MAAMgE,IAAY,YAAY;MAClC,UAAAA,IAAYvC,EAAE,0BAA0B,WAAW,IAAIA,EAAE,6BAA6B,eAAe;KACjG,CAAA;IACJ;;IACHwC,KAAYC,MACZ,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACGD,KAAY,kBAAC,QAAD;KAAM,WAAU;KAA8B,UAAAA;IAAe,CAAA,GACzEC,KAAU,kBAAC,QAAD;KAAM,WAAU;KAAwC,UAAAA;IAAa,CAAA,CAC7E;;GAENC,KAAW,kBAAC,OAAD;IAAK,WAAU;IAA6C,UAAAA;GAAa,CAAA;EAC9E;;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAa,cAAc"}