@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.
- package/ai/component-guides.md +1 -1
- package/ai/component-registry.json +1 -1
- package/ai/component-registry.md +1 -1
- package/ai/icons.md +1 -1
- package/ai/tokens.md +1 -1
- package/dist/blocks/pages.js +2 -2
- package/dist/blocks/resource-list.js +1 -1
- package/dist/chunks/{app-frame-DysOel2X.js → app-frame-CfJ7s3Q0.js} +2 -2
- package/dist/chunks/{app-frame-DysOel2X.js.map → app-frame-CfJ7s3Q0.js.map} +1 -1
- package/dist/chunks/{core-CmK-8ObW.js → core-B0bULn-t.js} +9 -8
- package/dist/chunks/core-B0bULn-t.js.map +1 -0
- package/dist/chunks/data-table-z7z6DqMJ.js +602 -0
- package/dist/chunks/data-table-z7z6DqMJ.js.map +1 -0
- package/dist/chunks/{domain-obd_w9xk.js → domain-BsM9UmAg.js} +2 -2
- package/dist/chunks/{domain-obd_w9xk.js.map → domain-BsM9UmAg.js.map} +1 -1
- package/dist/chunks/{identity-3Foi5F8w.js → identity-BQoh-UpW.js} +7 -3
- package/dist/chunks/identity-BQoh-UpW.js.map +1 -0
- package/dist/chunks/{list-B4G-sWwV.js → list-CU_AoVY3.js} +115 -92
- package/dist/chunks/list-CU_AoVY3.js.map +1 -0
- package/dist/chunks/{page-header-kS5tdmvb.js → page-header-BQijP6Rp.js} +2 -2
- package/dist/chunks/{page-header-kS5tdmvb.js.map → page-header-BQijP6Rp.js.map} +1 -1
- package/dist/chunks/{theme-provider-DJhORMlc.js → theme-provider-BjXTggqM.js} +6 -2
- package/dist/chunks/theme-provider-BjXTggqM.js.map +1 -0
- package/dist/chunks/{timeseries-Ck-q0wWn.js → timeseries-nDviPxvQ.js} +3 -3
- package/dist/chunks/{timeseries-Ck-q0wWn.js.map → timeseries-nDviPxvQ.js.map} +1 -1
- package/dist/components/app-frame.js +1 -1
- package/dist/components/charts/bar.js +2 -2
- package/dist/components/charts/donut.js +1 -1
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/heatmap.js +1 -1
- package/dist/components/charts/sankey.js +2 -2
- package/dist/components/charts/timeseries.js +1 -1
- package/dist/components/charts.js +2 -2
- package/dist/components/data-table.js +1 -1
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +3 -3
- package/dist/components/kaeso.js.map +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/playground.js +1 -1
- package/dist/components/theme-menu.js +1 -1
- package/dist/components/theme-select.js +1 -1
- package/dist/components/toast.js +40 -38
- package/dist/components/toast.js.map +1 -1
- package/dist/index.js +8 -8
- package/dist/kaeso.css +8 -0
- package/dist/styles.css +1 -1
- package/dist/theme.js +1 -1
- package/package.json +2 -2
- package/dist/chunks/core-CmK-8ObW.js.map +0 -1
- package/dist/chunks/data-table-CqY8_6IS.js +0 -581
- package/dist/chunks/data-table-CqY8_6IS.js.map +0 -1
- package/dist/chunks/identity-3Foi5F8w.js.map +0 -1
- package/dist/chunks/list-B4G-sWwV.js.map +0 -1
- 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-
|
|
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-
|
|
28
|
+
//# sourceMappingURL=domain-BsM9UmAg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-
|
|
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-
|
|
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":"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"}
|