@mastra/playground-ui 33.0.0-alpha.4 → 34.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +212 -0
- package/dist/components/DataList.cjs.js +2 -2
- package/dist/components/DataList.es.js +2 -2
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainSidebar.cjs.js +1 -1
- package/dist/components/MainSidebar.es.js +1 -1
- package/dist/components/MetricsDataTable.cjs.js +1 -1
- package/dist/components/MetricsDataTable.es.js +1 -1
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/{data-list-skeleton-C9Ncz3jM.js → data-list-skeleton-B3bHGBlU.js} +91 -13
- package/dist/data-list-skeleton-B3bHGBlU.js.map +1 -0
- package/dist/{data-list-skeleton-Bges_t5u.cjs → data-list-skeleton-DR7cqfzq.cjs} +91 -12
- package/dist/data-list-skeleton-DR7cqfzq.cjs.map +1 -0
- package/dist/{horizontal-bars-DkJlf6-x.cjs → horizontal-bars-C9qp4r47.cjs} +2 -2
- package/dist/{horizontal-bars-DkJlf6-x.cjs.map → horizontal-bars-C9qp4r47.cjs.map} +1 -1
- package/dist/{horizontal-bars-B43f5B_S.js → horizontal-bars-DjLETHvH.js} +2 -2
- package/dist/{horizontal-bars-B43f5B_S.js.map → horizontal-bars-DjLETHvH.js.map} +1 -1
- package/dist/index.cjs.js +10 -9
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.css +153 -1
- package/dist/index.es.js +12 -11
- package/dist/index.es.js.map +1 -1
- package/dist/{logs-data-list-B0Y5AHWL.js → logs-data-list-Be970xP6.js} +2 -2
- package/dist/{logs-data-list-B0Y5AHWL.js.map → logs-data-list-Be970xP6.js.map} +1 -1
- package/dist/{logs-data-list-DikL8ZQ0.cjs → logs-data-list-De4DHIW9.cjs} +2 -2
- package/dist/{logs-data-list-DikL8ZQ0.cjs.map → logs-data-list-De4DHIW9.cjs.map} +1 -1
- package/dist/{main-sidebar-0q7MXh2j.js → main-sidebar-Bk2U9O57.js} +2 -2
- package/dist/{main-sidebar-0q7MXh2j.js.map → main-sidebar-Bk2U9O57.js.map} +1 -1
- package/dist/{main-sidebar-H8NQ7njm.cjs → main-sidebar-CWoM-yrH.cjs} +2 -2
- package/dist/{main-sidebar-H8NQ7njm.cjs.map → main-sidebar-CWoM-yrH.cjs.map} +1 -1
- package/dist/{metrics-data-table-BpEAlJi0.cjs → metrics-data-table-D7vx2WEJ.cjs} +2 -2
- package/dist/{metrics-data-table-BpEAlJi0.cjs.map → metrics-data-table-D7vx2WEJ.cjs.map} +1 -1
- package/dist/{metrics-data-table-Dds2TkvE.js → metrics-data-table-DryqJWoI.js} +2 -2
- package/dist/{metrics-data-table-Dds2TkvE.js.map → metrics-data-table-DryqJWoI.js.map} +1 -1
- package/dist/{scroll-area-KogxLVrV.cjs → scroll-area-BqJfcT94.cjs} +11 -2
- package/dist/scroll-area-BqJfcT94.cjs.map +1 -0
- package/dist/{scroll-area-BCZiAvhR.js → scroll-area-BtDqmqBK.js} +11 -2
- package/dist/scroll-area-BtDqmqBK.js.map +1 -0
- package/dist/src/ds/components/DataList/data-list-root.d.ts +10 -1
- package/dist/src/ds/components/DataList/data-list-row-link.d.ts +1 -1
- package/dist/src/ds/components/DataList/data-list.stories.d.ts +16 -1
- package/dist/src/ds/components/DataList/shared.d.ts +13 -0
- package/dist/src/ds/components/ScrollArea/scroll-area.d.ts +12 -0
- package/dist/{traces-data-list-Dru2XnRN.js → traces-data-list-JWUFbWnS.js} +7 -4
- package/dist/traces-data-list-JWUFbWnS.js.map +1 -0
- package/dist/{traces-data-list-5GA3JumQ.cjs → traces-data-list-kc8O_Yyd.cjs} +7 -4
- package/dist/traces-data-list-kc8O_Yyd.cjs.map +1 -0
- package/package.json +18 -18
- package/dist/data-list-skeleton-Bges_t5u.cjs.map +0 -1
- package/dist/data-list-skeleton-C9Ncz3jM.js.map +0 -1
- package/dist/scroll-area-BCZiAvhR.js.map +0 -1
- package/dist/scroll-area-KogxLVrV.cjs.map +0 -1
- package/dist/traces-data-list-5GA3JumQ.cjs.map +0 -1
- package/dist/traces-data-list-Dru2XnRN.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-list-skeleton-C9Ncz3jM.js","sources":["../src/ds/icons/AgentIcon.tsx","../src/ds/icons/WorkflowIcon.tsx","../src/ds/components/DataList/data-list-cells.tsx","../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-root.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/shared.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-spacer.tsx","../src/ds/components/DataList/data-list-top.tsx","../src/ds/components/DataList/data-list-top-cell.tsx","../src/ds/components/DataList/data-list-skeleton.tsx"],"sourcesContent":["import React from 'react';\n\nexport const AgentIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 8.82265 8.51434\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M6.76646 6.16953C6.56909 6.10559 6.40521 5.96585 6.31087 5.78107C6.21653 5.5963 6.19945 5.38161 6.2634 5.18424C6.32735 4.98687 6.46708 4.82299 6.65186 4.72865C6.83663 4.63431 7.05132 4.61723 7.24869 4.68118C7.45933 4.74996 7.6849 4.75913 7.90043 4.70768C8.11596 4.65622 8.31306 4.54615 8.46992 4.38963C8.62678 4.23312 8.73729 4.03626 8.78921 3.82084C8.84114 3.60542 8.83246 3.37984 8.76414 3.16904C8.69582 2.95825 8.57052 2.77046 8.4021 2.62646C8.23368 2.48246 8.02871 2.38785 7.80986 2.35311C7.59101 2.31836 7.36681 2.34484 7.16208 2.4296C6.95734 2.51436 6.78004 2.6541 6.64979 2.83337C6.39274 3.18567 6.05613 3.47228 5.66736 3.66987C5.27858 3.86747 4.84864 3.97046 4.41254 3.97046C3.97643 3.97046 3.54649 3.86747 3.15772 3.66987C2.76895 3.47228 2.43234 3.18567 2.17528 2.83337C2.04528 2.65368 1.86807 2.51346 1.66329 2.42826C1.45852 2.34306 1.23415 2.3162 1.01505 2.35065C0.795944 2.3851 0.590648 2.47951 0.421892 2.62344C0.253137 2.76736 0.127507 2.95519 0.0589124 3.16611C-0.00968171 3.37703 -0.0185632 3.60282 0.0332514 3.81848C0.0850661 4.03414 0.195555 4.23125 0.352484 4.38799C0.509413 4.54472 0.706659 4.65497 0.92238 4.70652C1.1381 4.75808 1.36388 4.74892 1.57472 4.68007C1.77224 4.61634 1.98698 4.63369 2.1717 4.72829C2.35643 4.82289 2.49601 4.987 2.55973 5.18452C2.62346 5.38203 2.60611 5.59677 2.51151 5.7815C2.41691 5.96623 2.2528 6.10581 2.05528 6.16953C1.84456 6.23788 1.65684 6.36317 1.51288 6.53155C1.36893 6.69993 1.27434 6.90485 1.23959 7.12364C1.20483 7.34242 1.23126 7.56656 1.31596 7.77126C1.40065 7.97597 1.5403 8.15326 1.71948 8.28354C1.89865 8.41382 2.11036 8.49201 2.33121 8.50946C2.55205 8.52692 2.77342 8.48296 2.97083 8.38244C3.16825 8.28193 3.33402 8.12877 3.44981 7.93992C3.56561 7.75106 3.62692 7.53386 3.62697 7.31233C3.62697 7.10501 3.70933 6.90619 3.85592 6.7596C4.00251 6.613 4.20134 6.53065 4.40865 6.53065C4.61596 6.53065 4.81479 6.613 4.96138 6.7596C5.10797 6.90619 5.19033 7.10501 5.19033 7.31233C5.19027 7.53399 5.25152 7.75136 5.36731 7.94037C5.4831 8.12939 5.64892 8.2827 5.84642 8.38334C6.04392 8.48399 6.26541 8.52804 6.4864 8.51063C6.70738 8.49322 6.91924 8.41502 7.09854 8.28469C7.27785 8.15436 7.41761 7.97698 7.50237 7.77216C7.58713 7.56734 7.61359 7.34307 7.57882 7.12414C7.54404 6.90522 7.44939 6.70018 7.30534 6.53171C7.16128 6.36323 6.97344 6.23789 6.76257 6.16953H6.76646Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M4.41198 2.40337C5.07565 2.40337 5.61367 1.86536 5.61367 1.20168C5.61367 0.538012 5.07565 0 4.41198 0C3.74831 0 3.2103 0.538012 3.2103 1.20168C3.2103 1.86536 3.74831 2.40337 4.41198 2.40337Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\n\nexport const WorkflowIcon = (props: React.SVGProps<SVGSVGElement>) => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 9.08789 8.97168\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M1.98047 5.00977C2.17347 5.00977 2.33002 5.16639 2.33008 5.35938C2.33008 5.55242 2.17351 5.70898 1.98047 5.70898C1.27292 5.70915 0.699436 6.2827 0.699219 6.99023C0.699219 7.69795 1.27279 8.2723 1.98047 8.27246C2.68829 8.27246 3.2627 7.69805 3.2627 6.99023C3.26291 6.79738 3.4194 6.64063 3.6123 6.64062C3.80503 6.64084 3.9617 6.79751 3.96191 6.99023C3.96191 8.08413 3.07437 8.97168 1.98047 8.97168C0.886706 8.97152 0 8.08403 0 6.99023C0.000217392 5.89662 0.886841 5.00993 1.98047 5.00977ZM7.10742 5.00977C8.20105 5.00992 9.08767 5.89662 9.08789 6.99023C9.08789 8.08404 8.20119 8.97152 7.10742 8.97168C6.01359 8.97159 5.12598 8.08408 5.12598 6.99023C5.1262 6.79757 5.28294 6.64092 5.47559 6.64062C5.66849 6.64063 5.82497 6.79738 5.8252 6.99023C5.8252 7.698 6.39968 8.27238 7.10742 8.27246C7.81511 8.2723 8.38867 7.69796 8.38867 6.99023C8.38845 6.2827 7.81497 5.70914 7.10742 5.70898C6.91445 5.7089 6.75781 5.55236 6.75781 5.35938C6.75788 5.16644 6.91449 5.00985 7.10742 5.00977ZM4.54395 0C5.44471 0 6.17465 0.730134 6.1748 1.63086C6.1748 2.27964 5.79613 2.83941 5.24768 3.102C5.0501 3.1966 4.89355 3.37979 4.89355 3.59885V4.08919C4.89355 4.21279 4.94266 4.33133 5.03006 4.41873L6.80071 6.18938C6.87996 6.26863 6.99535 6.29199 7.10742 6.29199C7.49331 6.29206 7.80642 6.60438 7.80664 6.99023C7.80664 7.37627 7.49344 7.68938 7.10742 7.68945C6.72134 7.68945 6.4082 7.37632 6.4082 6.99023C6.40827 6.87818 6.38483 6.76276 6.3056 6.68353L4.8726 5.25053C4.69056 5.06849 4.39541 5.06853 4.21343 5.25061L2.78139 6.68339C2.70211 6.76271 2.67963 6.87809 2.67969 6.99023C2.67969 7.37632 2.36655 7.68945 1.98047 7.68945C1.59452 7.68929 1.28125 7.37622 1.28125 6.99023C1.28146 6.60443 1.59466 6.29215 1.98047 6.29199C2.09246 6.29199 2.2079 6.26771 2.28711 6.18854L4.05776 4.41874C4.1452 4.33133 4.19434 4.21276 4.19434 4.08912V3.59881C4.19434 3.37977 4.03781 3.19659 3.84026 3.10199C3.29183 2.83937 2.91309 2.2796 2.91309 1.63086C2.91324 0.730162 3.64322 4.61864e-05 4.54395 0Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { format, isToday } from 'date-fns';\nimport { Children, cloneElement, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { cn } from '@/lib/utils';\n\nexport type DataListCellProps = {\n children?: ReactNode;\n className?: string;\n height?: 'default' | 'compact';\n /**\n * HTML element rendered for the cell. Defaults to `span`. Use `'label'` when\n * the cell wraps a labelable control (e.g. a Checkbox), so the whole cell\n * area acts as the click/hover target.\n */\n as?: ElementType;\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className'>;\n\nexport function DataListCell({ children, className, height = 'default', as, ...rest }: DataListCellProps) {\n const Component = as || 'span';\n return (\n <Component\n className={cn(\n 'relative grid min-w-0 max-w-full items-center overflow-hidden text-ui-md whitespace-nowrap text-neutral3 empty:before:content-[\"—\"] empty:before:text-neutral2',\n height === 'compact' ? 'py-1.5' : 'py-2.5',\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n}\n\nconst dataListTruncateContentStyles =\n 'block min-w-0 max-w-full truncate empty:before:content-[\"—\"] empty:before:text-neutral2 [&>*]:min-w-0 [&>*]:max-w-full [&>*]:overflow-hidden [&>*]:text-ellipsis [&>*]:whitespace-nowrap';\nconst dataListInlineTextTruncateStyles = 'min-w-0 flex-1 truncate';\n\nfunction DataListInlineText({ children }: { children: string | number }) {\n return <span className={dataListInlineTextTruncateStyles}>{children}</span>;\n}\n\nfunction DataListTruncatedTextNodes({ children }: { children: ReactNode }) {\n return Children.map(children, child => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <DataListInlineText>{child}</DataListInlineText>;\n }\n\n return child;\n });\n}\n\nfunction DataListTruncatedCellContent({ children }: { children: ReactNode }) {\n return Children.map(children, child => {\n if (!isValidElement<{ children?: ReactNode; className?: string }>(child) || typeof child.type !== 'string') {\n return child;\n }\n\n return cloneElement(child, {\n className: cn('min-w-0 max-w-full overflow-hidden', child.props.className),\n children: <DataListTruncatedTextNodes>{child.props.children}</DataListTruncatedTextNodes>,\n });\n });\n}\n\nexport function DataListTextCell({ children, className, ...rest }: DataListCellProps) {\n return (\n <DataListCell className={className} {...rest}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport function DataListNameCell({ children, className }: DataListCellProps) {\n return (\n <DataListCell className={cn('text-left text-neutral4', className)}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nexport function DataListDescriptionCell({ children, className }: DataListCellProps) {\n return (\n <DataListCell className={cn('text-neutral2', className)}>\n <span className={dataListTruncateContentStyles}>\n <DataListTruncatedCellContent>{children}</DataListTruncatedCellContent>\n </span>\n </DataListCell>\n );\n}\n\nfunction getShortId(id: string | undefined): string {\n if (!id) return '';\n return id.length > 8 ? id.slice(0, 8) : id;\n}\n\nexport interface DataListIdCellProps {\n id: string;\n}\n\nexport function DataListIdCell({ id }: DataListIdCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd font-mono text-neutral3\">\n {getShortId(id)}\n </DataListCell>\n );\n}\n\nexport interface DataListSelectCellProps {\n checked: boolean;\n /**\n * Called when the checkbox is clicked. Receives the click event's `shiftKey`\n * so callers can implement range-select. The event's propagation is stopped\n * before `onToggle` runs, so the host row's `onClick` doesn't fire.\n */\n onToggle: (shiftKey: boolean) => void;\n 'aria-label'?: string;\n}\n\nexport function DataListSelectCell({ checked, onToggle, ...rest }: DataListSelectCellProps) {\n return (\n <DataListCell\n as=\"label\"\n height=\"compact\"\n className=\"h-8 w-8 self-center cursor-pointer justify-items-center overflow-visible px-0 py-0!\"\n onClick={e => e.stopPropagation()}\n >\n <Checkbox\n checked={checked}\n onCheckedChange={() => {}} // no-op: selection handled by onClick to capture shiftKey\n onClick={e => {\n e.stopPropagation();\n onToggle(e.shiftKey);\n }}\n aria-label={rest['aria-label']}\n />\n </DataListCell>\n );\n}\n\nexport interface DataListMonoCellProps {\n children: ReactNode;\n /** Override classes on the inner span (e.g. swap the default `text-neutral3` tone). */\n className?: string;\n /** Cell vertical padding. Defaults to `compact` to match other identifier cells. */\n height?: 'default' | 'compact';\n}\n\n/**\n * Mono-typography cell with truncation. Shared by any column that\n * shows code-like text (input previews, JSON summaries, identifiers, etc.).\n */\nexport function DataListMonoCell({ children, className, height = 'compact' }: DataListMonoCellProps) {\n return (\n <DataListCell height={height}>\n <span\n className={cn(\n 'block min-w-0 max-w-full text-ui-smd font-mono text-neutral3 truncate empty:before:content-[\"—\"]',\n className,\n )}\n >\n {children}\n </span>\n </DataListCell>\n );\n}\n\nfunction toDate(value: Date | string): Date | null {\n const date = value instanceof Date ? value : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n}\n\nexport interface DataListDateCellProps {\n timestamp: Date | string;\n}\n\n/** Compact date cell — `Today` or `MMM dd` (e.g. `May 19`). */\nexport function DataListDateCell({ timestamp }: DataListDateCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral2\">\n {date ? (isToday(date) ? 'Today' : format(date, 'MMM dd')) : null}\n </DataListCell>\n );\n}\n\nexport interface DataListTimeCellProps {\n timestamp: Date | string;\n}\n\n/** Compact monospace time cell — `HH:mm:ss.SSS` with the millisecond portion tinted. */\nexport function DataListTimeCell({ timestamp }: DataListTimeCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd font-mono text-neutral3 flex\">\n {date ? (\n <>\n {format(date, 'HH:mm:ss')}\n <span className=\"text-neutral2\">.{String(date.getMilliseconds()).padStart(3, '0')}</span>\n </>\n ) : null}\n </DataListCell>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n className={cn('col-span-full text-ui-md text-neutral3 opacity-50 flex justify-center min-h-1', {\n 'py-4': isLoading,\n 'py-0': !hasMore,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = {\n message?: string;\n className?: string;\n};\n\nexport function DataListNoMatch({ message = 'Nothing matches your search', className }: DataListNoMatchProps) {\n return (\n <div className={cn('col-span-full flex flex-col items-center justify-center gap-2 py-12 text-neutral3', className)}>\n <p className=\"text-ui-md\">{message}</p>\n </div>\n );\n}\n","import type { ReactNode, RefObject } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRootProps = {\n children: ReactNode;\n columns: string;\n className?: string;\n /**\n * Ref to the scroll container — pass this to TanStack Virtual's\n * `getScrollElement` when virtualizing. Without it, the list behaves as a\n * normal scrollable grid.\n */\n scrollRef?: RefObject<HTMLDivElement | null>;\n};\n\nexport function DataListRoot({ children, columns, className, scrollRef }: DataListRootProps) {\n return (\n <div\n ref={scrollRef}\n className={cn(\n 'grid min-w-0 max-w-full bg-surface2 border max-h-full border-border1 rounded-xl overflow-auto content-start',\n className,\n )}\n style={{ gridTemplateColumns: columns }}\n >\n {children}\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","/**\n * Row-level styling for the element that participates in the row sibling\n * chain — applied to `DataList.RowButton` / `DataList.RowLink` when used\n * standalone, and to `DataList.RowWrapper` when used as a shell around them.\n *\n * Contains the `.data-list-row` marker class (used by the sibling-aware\n * separator rules), the full-width separator treatment, and rounded corners.\n */\nexport const dataListRowOuterStyles = [\n 'data-list-row col-span-full relative mt-[3px] mb-1',\n 'after:absolute after:inset-x-[-0.25rem] after:bottom-[-0.25rem] after:h-px after:bg-border1 after:content-[\"\"] after:pointer-events-none',\n '[&:has(+.data-list-subheader)]:after:hidden [&:not(:has(~.data-list-row))]:after:hidden',\n 'transition-colors duration-200 rounded-lg',\n] as const;\n\nexport const dataListRowInteractiveStyles = [\n 'grid grid-cols-subgrid gap-8 px-5 outline-none cursor-pointer',\n 'hover:bg-surface4 focus-visible:bg-surface4 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-accent1',\n 'transition-colors duration-200 rounded-lg',\n] as const;\n\nexport const dataListRowStyles = ['mx-1', ...dataListRowInteractiveStyles, ...dataListRowOuterStyles] as const;\n\nexport const dataListRowStaticStyles = ['mx-1 grid grid-cols-subgrid gap-8 px-5', ...dataListRowOuterStyles] as const;\n\n/**\n * Layout/state modifiers shared by interactive row primitives\n * (`DataList.RowButton`, `DataList.RowLink`).\n */\nexport type DataListRowSharedProps = {\n /**\n * Drop the row's default left margin. Use when the row is wrapped in a\n * `DataList.RowWrapper` that owns the leading inset (e.g. for selection rows where\n * the checkbox cell sits on the left).\n */\n flushLeft?: boolean;\n /**\n * Drop the row's default right margin. Use when the row is wrapped in a\n * `DataList.RowWrapper` that owns the trailing inset (e.g. for rows with a\n * trailing actions cell on the right).\n */\n flushRight?: boolean;\n /**\n * Place the row starting at this column line. Defaults to column 1. Use\n * when the row sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n /**\n * Place the row ending at this column line (use negative values to count\n * from the end, e.g. `-2`). Defaults to `-1` (the last line). Use when the\n * row sits beside a trailing cell that owns the last column.\n */\n colEnd?: number;\n /**\n * Apply the highlighted background. Use to mark the row that is currently\n * featured (e.g. the row whose detail is open in a side panel).\n */\n featured?: boolean;\n};\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n (\n { children, className, type = 'button', flushLeft, flushRight, colStart, colEnd, featured, style, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={ref}\n type={type}\n className={cn(\n ...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles),\n 'text-left',\n !isWrapped && flushLeft && 'ml-0!',\n !isWrapped && flushRight && 'mr-0!',\n featured && 'bg-surface4',\n className,\n )}\n style={resolvedStyle}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import type { CSSProperties, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent: LinkComponent;\n};\n\nexport function DataListRowLink({\n children,\n to,\n className,\n style,\n LinkComponent: Link,\n flushLeft,\n flushRight,\n colStart,\n colEnd,\n featured,\n}: DataListRowLinkProps) {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n href={to}\n className={cn(\n ...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles),\n !isWrapped && flushLeft && 'ml-0!',\n !isWrapped && flushRight && 'mr-0!',\n featured && 'bg-surface4',\n className,\n )}\n style={resolvedStyle}\n >\n {children}\n </Link>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'>;\n\n/**\n * Non-interactive grid wrapper. Used to host a leading or trailing cell (e.g. a\n * selection checkbox or row actions) alongside a `DataList.RowButton` so\n * hover/focus/click only apply to the button portion. For standalone\n * interactive rows, use `DataList.RowButton` directly without this wrapper.\n *\n * Carries the row-level border + `.data-list-row` marker so separators and\n * sibling-aware rules behave the same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={ref}\n className={cn('grid grid-cols-subgrid gap-0 mx-1', ...dataListRowOuterStyles, className)}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopProps = {\n children: ReactNode;\n className?: string;\n /**\n * Switch to a \"leading cell\" layout: drops the default gap between children\n * and the default left padding, so a leading cell (e.g. `TopSelectCell`)\n * sits flush against the grid edge and an inner `TopCells` group owns the\n * remaining column spacing. Mirrors how `Row` + `RowButton` compose.\n */\n hasLeadingCell?: boolean;\n};\n\nexport function DataListTop({ children, className, hasLeadingCell }: DataListTopProps) {\n return (\n <div\n className={cn(\n 'data-list-top mx-1 grid grid-cols-subgrid gap-8 col-span-full relative px-5 bg-surface2 sticky top-0 z-10 after:absolute after:inset-x-[-0.25rem] after:bottom-0 after:h-px after:bg-border1 after:content-[\"\"] after:pointer-events-none',\n hasLeadingCell && 'gap-0 pl-0!',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellProps = {\n children: ReactNode;\n className?: string;\n /**\n * HTML element rendered for the top cell. Defaults to `span`. Use `'label'`\n * when the cell wraps a labelable control (e.g. a select-all Checkbox).\n */\n as?: ElementType;\n} & Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'className' | 'ref'>;\n\nexport const DataListTopCell = forwardRef<HTMLSpanElement, DataListTopCellProps>(\n ({ children, className, as, ...rest }, ref) => {\n const Component = as || 'span';\n return (\n <Component\n ref={ref}\n className={cn(\n 'h-8 min-w-0 max-w-full overflow-hidden py-1 flex items-center uppercase whitespace-nowrap text-neutral2 tracking-widest text-ui-xs',\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport type DataListTopCellWithTooltipProps = {\n children: ReactNode;\n tooltip: ReactNode;\n className?: string;\n};\n\nexport function DataListTopCellWithTooltip({ children, tooltip, className }: DataListTopCellWithTooltipProps) {\n return (\n <Tooltip>\n <TooltipTrigger>\n <DataListTopCell className={className}>{children}</DataListTopCell>\n </TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n\nexport type DataListTopCellSmartProps = {\n long: ReactNode;\n short: ReactNode;\n tooltip?: string;\n breakpoint?: 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n className?: string;\n};\n\nconst breakpointClasses: Record<string, { show: string; hide: string }> = {\n sm: { show: 'hidden sm:inline-flex', hide: 'inline-flex sm:hidden' },\n md: { show: 'hidden md:inline-flex', hide: 'inline-flex md:hidden' },\n lg: { show: 'hidden lg:inline-flex', hide: 'inline-flex lg:hidden' },\n xl: { show: 'hidden xl:inline-flex', hide: 'inline-flex xl:hidden' },\n '2xl': { show: 'hidden 2xl:inline-flex', hide: 'inline-flex 2xl:hidden' },\n};\n\nexport function DataListTopCellSmart({\n long,\n short,\n tooltip,\n breakpoint = '2xl',\n className,\n}: DataListTopCellSmartProps) {\n const tooltipText = tooltip ?? (typeof long === 'string' ? long : undefined);\n const bp = breakpointClasses[breakpoint];\n\n const content = (\n <>\n <span className={cn('items-center gap-1', bp.show)}>{long}</span>\n <span className={cn('items-center gap-1', bp.hide)}>{short}</span>\n </>\n );\n\n if (tooltipText) {\n return (\n <DataListTopCellWithTooltip\n tooltip={tooltipText}\n className={cn('flex [&_svg]:w-[1.3em] [&_svg]:h-[1.3em]', className)}\n >\n {content}\n </DataListTopCellWithTooltip>\n );\n }\n\n return (\n <DataListTopCell className={cn('flex [&_svg]:w-[1.3em] [&_svg]:h-[1.3em]', className)}>{content}</DataListTopCell>\n );\n}\n\nexport interface DataListTopSelectCellProps {\n /** Pass `'indeterminate'` when some — but not all — rows are selected. */\n checked: boolean | 'indeterminate';\n /** Toggles the global selection. Typically clears when fully selected, otherwise selects all. */\n onToggle: () => void;\n 'aria-label'?: string;\n}\n\nexport function DataListTopSelectCell({ checked, onToggle, ...rest }: DataListTopSelectCellProps) {\n return (\n <DataListTopCell\n as=\"label\"\n className=\"w-8 cursor-pointer justify-center overflow-visible px-0 py-0!\"\n onClick={e => e.stopPropagation()}\n >\n <Checkbox checked={checked} onCheckedChange={() => onToggle()} aria-label={rest['aria-label']} />\n </DataListTopCell>\n );\n}\n","import { DataListCell } from './data-list-cells';\nimport { DataListRoot } from './data-list-root';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'];\n\nexport type DataListSkeletonProps = {\n columns?: string;\n numberOfRows?: number;\n};\n\nexport function DataListSkeleton({ columns = 'auto 1fr auto auto', numberOfRows = 3 }: DataListSkeletonProps) {\n const columnParts = columns.trim().split(/\\s+/);\n const columnCount = columnParts.length;\n const skeletonColumns = columnParts.map(col => (col === 'auto' ? 'minmax(6rem, auto)' : col)).join(' ');\n\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + columnCount + numberOfRows) % widths.length;\n return widths[index];\n };\n\n return (\n <DataListRoot columns={skeletonColumns}>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <div\n key={rowIdx}\n className=\"data-list-row grid grid-cols-subgrid gap-6 lg:gap-8 xl:gap-10 2xl:gap-12 3xl:gap-14 col-span-full px-5 border-y border-b-border1 border-t-transparent transition-colors duration-200 rounded-lg\"\n >\n {Array.from({ length: columnCount }).map((_, colIdx) => (\n <DataListCell key={colIdx}>\n <div\n className=\"bg-surface4 rounded-md animate-pulse text-transparent h-[1rem] select-none\"\n style={{ width: getPseudoRandomWidth(rowIdx, colIdx) }}\n />\n </DataListCell>\n ))}\n </div>\n ))}\n </DataListRoot>\n );\n}\n"],"names":["_"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-BCZiAvhR.js","sources":["../src/hooks/use-autoscroll.tsx","../src/ds/components/ScrollArea/scroll-area.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nexport interface UseAutoscrollOptions {\n enabled?: boolean;\n}\n\nconst SCROLL_END_THRESHOLD = 8;\n\nexport const useAutoscroll = (ref: React.RefObject<HTMLElement | null>, { enabled = true }: UseAutoscrollOptions) => {\n const shouldScrollRef = useRef(enabled);\n const scrollFrameRef = useRef<number | null>(null);\n const userScrollIntentRef = useRef(false);\n const userScrollIntentTimeoutRef = useRef<number | null>(null);\n\n React.useEffect(() => {\n if (!enabled) return;\n if (!ref?.current) return;\n\n const area = ref.current;\n\n const scrollToEnd = () => {\n if (!shouldScrollRef.current) return;\n\n if (scrollFrameRef.current !== null) {\n cancelAnimationFrame(scrollFrameRef.current);\n }\n\n scrollFrameRef.current = requestAnimationFrame(() => {\n if (shouldScrollRef.current) {\n area.scrollTop = area.scrollHeight;\n }\n scrollFrameRef.current = null;\n });\n };\n\n const mutationObserver = new MutationObserver(scrollToEnd);\n\n mutationObserver.observe(area, {\n childList: true, // observe direct children changes\n subtree: true, // observe all descendants\n characterData: true, // observe text content changes\n });\n\n const resizeObserver = new ResizeObserver(scrollToEnd);\n resizeObserver.observe(area);\n\n const cancelPendingScroll = () => {\n if (scrollFrameRef.current !== null) {\n cancelAnimationFrame(scrollFrameRef.current);\n scrollFrameRef.current = null;\n }\n };\n\n const stopFollowing = () => {\n shouldScrollRef.current = false;\n cancelPendingScroll();\n };\n\n const registerUserScrollIntent = () => {\n userScrollIntentRef.current = true;\n\n if (userScrollIntentTimeoutRef.current !== null) {\n window.clearTimeout(userScrollIntentTimeoutRef.current);\n }\n\n userScrollIntentTimeoutRef.current = window.setTimeout(() => {\n userScrollIntentRef.current = false;\n userScrollIntentTimeoutRef.current = null;\n }, 250);\n };\n\n const handleWheel = (event: WheelEvent) => {\n registerUserScrollIntent();\n\n if (event.deltaY < 0) {\n stopFollowing();\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n registerUserScrollIntent();\n\n if (['ArrowUp', 'PageUp', 'Home'].includes(event.key)) {\n stopFollowing();\n }\n };\n\n const handleScroll = (e: Event) => {\n const scrollElement = e.target as HTMLElement;\n const currentPosition = scrollElement.scrollTop + scrollElement.clientHeight;\n const totalHeight = scrollElement.scrollHeight;\n const isAtEnd = currentPosition >= totalHeight - SCROLL_END_THRESHOLD;\n\n if (isAtEnd) {\n shouldScrollRef.current = true;\n return;\n }\n\n if (userScrollIntentRef.current) {\n shouldScrollRef.current = false;\n cancelPendingScroll();\n }\n };\n\n area.addEventListener('wheel', handleWheel, { passive: true });\n area.addEventListener('touchmove', registerUserScrollIntent, { passive: true });\n area.addEventListener('pointerdown', registerUserScrollIntent);\n area.addEventListener('keydown', handleKeyDown);\n area.addEventListener('scroll', handleScroll);\n scrollToEnd();\n\n return () => {\n area.removeEventListener('wheel', handleWheel);\n area.removeEventListener('touchmove', registerUserScrollIntent);\n area.removeEventListener('pointerdown', registerUserScrollIntent);\n area.removeEventListener('keydown', handleKeyDown);\n area.removeEventListener('scroll', handleScroll);\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n cancelPendingScroll();\n\n if (userScrollIntentTimeoutRef.current !== null) {\n window.clearTimeout(userScrollIntentTimeoutRef.current);\n userScrollIntentTimeoutRef.current = null;\n }\n };\n }, [enabled, ref]);\n};\n","import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\nimport * as React from 'react';\n\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'vertical' | 'horizontal' | 'both';\n\nexport type MaskSides = {\n top?: boolean;\n bottom?: boolean;\n left?: boolean;\n right?: boolean;\n /** Shorthand: sets both `left` and `right`. Per-side keys override. */\n x?: boolean;\n /** Shorthand: sets both `top` and `bottom`. Per-side keys override. */\n y?: boolean;\n};\n\n/**\n * - `true` / omitted: fade the edges that match `orientation`.\n * - `false`: no fade.\n * - object: per-side override on top of the orientation default.\n */\nexport type ScrollAreaMask = boolean | MaskSides;\n\nexport type ScrollAreaProps = React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {\n viewPortClassName?: string;\n maxHeight?: string;\n autoScroll?: boolean;\n orientation?: Orientation;\n /** Fade content at the edges where it's clipped by overflow. Defaults to the axes matching `orientation`. */\n mask?: ScrollAreaMask;\n /** @deprecated Use `mask` instead. Retained for backward compatibility. */\n showMask?: boolean;\n};\n\ntype ResolvedMask = { top: boolean; bottom: boolean; left: boolean; right: boolean };\n\nfunction resolveMask(mask: ScrollAreaMask | undefined, orientation: Orientation): ResolvedMask {\n if (mask === false) return { top: false, bottom: false, left: false, right: false };\n\n const vertical = orientation === 'vertical' || orientation === 'both';\n const horizontal = orientation === 'horizontal' || orientation === 'both';\n const sides: ResolvedMask = { top: vertical, bottom: vertical, left: horizontal, right: horizontal };\n\n if (mask === true || mask === undefined) return sides;\n\n if (mask.y !== undefined) {\n sides.top = mask.y;\n sides.bottom = mask.y;\n }\n if (mask.x !== undefined) {\n sides.left = mask.x;\n sides.right = mask.x;\n }\n if (mask.top !== undefined) sides.top = mask.top;\n if (mask.bottom !== undefined) sides.bottom = mask.bottom;\n if (mask.left !== undefined) sides.left = mask.left;\n if (mask.right !== undefined) sides.right = mask.right;\n\n return sides;\n}\n\nfunction maskClasses(sides: ResolvedMask) {\n return cn(\n sides.top && 'data-[overflow-y-start]:mask-t-from-[calc(100%-2rem)]',\n sides.bottom && 'data-[overflow-y-end]:mask-b-from-[calc(100%-2rem)]',\n sides.left && 'data-[overflow-x-start]:mask-l-from-[calc(100%-2rem)]',\n sides.right && 'data-[overflow-x-end]:mask-r-from-[calc(100%-2rem)]',\n );\n}\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n className,\n children,\n viewPortClassName,\n maxHeight,\n autoScroll = false,\n orientation = 'vertical',\n mask,\n showMask,\n ...props\n },\n ref,\n ) => {\n const areaRef = React.useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: autoScroll });\n\n const effectiveMask: ScrollAreaMask | undefined = mask !== undefined ? mask : showMask;\n const sides = resolveMask(effectiveMask, orientation);\n\n const viewportStyle: React.CSSProperties = {};\n if (maxHeight) viewportStyle.maxHeight = maxHeight;\n if (orientation === 'vertical') {\n viewportStyle.overflowX = 'hidden';\n viewportStyle.overflowY = 'scroll';\n } else if (orientation === 'horizontal') {\n viewportStyle.overflowX = 'scroll';\n viewportStyle.overflowY = 'hidden';\n }\n\n // Base UI's ScrollAreaContent forces `min-width: fit-content` so the\n // content can grow wider than the viewport (required for horizontal scroll\n // measurement). For vertical-only scroll we override it so children shrink\n // to the viewport width instead of forcing horizontal scroll.\n const contentStyle: React.CSSProperties | undefined =\n orientation === 'vertical'\n ? { minWidth: '0px' }\n : orientation === 'horizontal'\n ? { minHeight: '0px' }\n : undefined;\n\n return (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n ref={areaRef}\n className={cn('h-full w-full rounded-[inherit]', maskClasses(sides), viewPortClassName)}\n style={viewportStyle}\n >\n <ScrollAreaPrimitive.Content style={contentStyle}>{children}</ScrollAreaPrimitive.Content>\n </ScrollAreaPrimitive.Viewport>\n {(orientation === 'vertical' || orientation === 'both') && <ScrollBar orientation=\"vertical\" />}\n {(orientation === 'horizontal' || orientation === 'both') && <ScrollBar orientation=\"horizontal\" />}\n {orientation === 'both' && <ScrollAreaPrimitive.Corner />}\n </ScrollAreaPrimitive.Root>\n );\n },\n);\nScrollArea.displayName = 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Scrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.Scrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-opacity duration-normal ease-out-custom',\n 'opacity-0 data-[hovering]:opacity-100 data-[scrolling]:opacity-100 data-[scrolling]:duration-0',\n orientation === 'vertical' && 'h-full w-1.5 p-px',\n orientation === 'horizontal' && 'h-1.5 w-full flex-col p-px',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb className=\"relative flex-1 rounded-full bg-neutral4/30 hover:bg-neutral4/60 transition-colors duration-normal\" />\n </ScrollAreaPrimitive.Scrollbar>\n));\nScrollBar.displayName = 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\n"],"names":["React","ScrollAreaPrimitive"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-area-KogxLVrV.cjs","sources":["../src/hooks/use-autoscroll.tsx","../src/ds/components/ScrollArea/scroll-area.tsx"],"sourcesContent":["import React, { useRef } from 'react';\n\nexport interface UseAutoscrollOptions {\n enabled?: boolean;\n}\n\nconst SCROLL_END_THRESHOLD = 8;\n\nexport const useAutoscroll = (ref: React.RefObject<HTMLElement | null>, { enabled = true }: UseAutoscrollOptions) => {\n const shouldScrollRef = useRef(enabled);\n const scrollFrameRef = useRef<number | null>(null);\n const userScrollIntentRef = useRef(false);\n const userScrollIntentTimeoutRef = useRef<number | null>(null);\n\n React.useEffect(() => {\n if (!enabled) return;\n if (!ref?.current) return;\n\n const area = ref.current;\n\n const scrollToEnd = () => {\n if (!shouldScrollRef.current) return;\n\n if (scrollFrameRef.current !== null) {\n cancelAnimationFrame(scrollFrameRef.current);\n }\n\n scrollFrameRef.current = requestAnimationFrame(() => {\n if (shouldScrollRef.current) {\n area.scrollTop = area.scrollHeight;\n }\n scrollFrameRef.current = null;\n });\n };\n\n const mutationObserver = new MutationObserver(scrollToEnd);\n\n mutationObserver.observe(area, {\n childList: true, // observe direct children changes\n subtree: true, // observe all descendants\n characterData: true, // observe text content changes\n });\n\n const resizeObserver = new ResizeObserver(scrollToEnd);\n resizeObserver.observe(area);\n\n const cancelPendingScroll = () => {\n if (scrollFrameRef.current !== null) {\n cancelAnimationFrame(scrollFrameRef.current);\n scrollFrameRef.current = null;\n }\n };\n\n const stopFollowing = () => {\n shouldScrollRef.current = false;\n cancelPendingScroll();\n };\n\n const registerUserScrollIntent = () => {\n userScrollIntentRef.current = true;\n\n if (userScrollIntentTimeoutRef.current !== null) {\n window.clearTimeout(userScrollIntentTimeoutRef.current);\n }\n\n userScrollIntentTimeoutRef.current = window.setTimeout(() => {\n userScrollIntentRef.current = false;\n userScrollIntentTimeoutRef.current = null;\n }, 250);\n };\n\n const handleWheel = (event: WheelEvent) => {\n registerUserScrollIntent();\n\n if (event.deltaY < 0) {\n stopFollowing();\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n registerUserScrollIntent();\n\n if (['ArrowUp', 'PageUp', 'Home'].includes(event.key)) {\n stopFollowing();\n }\n };\n\n const handleScroll = (e: Event) => {\n const scrollElement = e.target as HTMLElement;\n const currentPosition = scrollElement.scrollTop + scrollElement.clientHeight;\n const totalHeight = scrollElement.scrollHeight;\n const isAtEnd = currentPosition >= totalHeight - SCROLL_END_THRESHOLD;\n\n if (isAtEnd) {\n shouldScrollRef.current = true;\n return;\n }\n\n if (userScrollIntentRef.current) {\n shouldScrollRef.current = false;\n cancelPendingScroll();\n }\n };\n\n area.addEventListener('wheel', handleWheel, { passive: true });\n area.addEventListener('touchmove', registerUserScrollIntent, { passive: true });\n area.addEventListener('pointerdown', registerUserScrollIntent);\n area.addEventListener('keydown', handleKeyDown);\n area.addEventListener('scroll', handleScroll);\n scrollToEnd();\n\n return () => {\n area.removeEventListener('wheel', handleWheel);\n area.removeEventListener('touchmove', registerUserScrollIntent);\n area.removeEventListener('pointerdown', registerUserScrollIntent);\n area.removeEventListener('keydown', handleKeyDown);\n area.removeEventListener('scroll', handleScroll);\n mutationObserver.disconnect();\n resizeObserver.disconnect();\n cancelPendingScroll();\n\n if (userScrollIntentTimeoutRef.current !== null) {\n window.clearTimeout(userScrollIntentTimeoutRef.current);\n userScrollIntentTimeoutRef.current = null;\n }\n };\n }, [enabled, ref]);\n};\n","import { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\nimport * as React from 'react';\n\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'vertical' | 'horizontal' | 'both';\n\nexport type MaskSides = {\n top?: boolean;\n bottom?: boolean;\n left?: boolean;\n right?: boolean;\n /** Shorthand: sets both `left` and `right`. Per-side keys override. */\n x?: boolean;\n /** Shorthand: sets both `top` and `bottom`. Per-side keys override. */\n y?: boolean;\n};\n\n/**\n * - `true` / omitted: fade the edges that match `orientation`.\n * - `false`: no fade.\n * - object: per-side override on top of the orientation default.\n */\nexport type ScrollAreaMask = boolean | MaskSides;\n\nexport type ScrollAreaProps = React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & {\n viewPortClassName?: string;\n maxHeight?: string;\n autoScroll?: boolean;\n orientation?: Orientation;\n /** Fade content at the edges where it's clipped by overflow. Defaults to the axes matching `orientation`. */\n mask?: ScrollAreaMask;\n /** @deprecated Use `mask` instead. Retained for backward compatibility. */\n showMask?: boolean;\n};\n\ntype ResolvedMask = { top: boolean; bottom: boolean; left: boolean; right: boolean };\n\nfunction resolveMask(mask: ScrollAreaMask | undefined, orientation: Orientation): ResolvedMask {\n if (mask === false) return { top: false, bottom: false, left: false, right: false };\n\n const vertical = orientation === 'vertical' || orientation === 'both';\n const horizontal = orientation === 'horizontal' || orientation === 'both';\n const sides: ResolvedMask = { top: vertical, bottom: vertical, left: horizontal, right: horizontal };\n\n if (mask === true || mask === undefined) return sides;\n\n if (mask.y !== undefined) {\n sides.top = mask.y;\n sides.bottom = mask.y;\n }\n if (mask.x !== undefined) {\n sides.left = mask.x;\n sides.right = mask.x;\n }\n if (mask.top !== undefined) sides.top = mask.top;\n if (mask.bottom !== undefined) sides.bottom = mask.bottom;\n if (mask.left !== undefined) sides.left = mask.left;\n if (mask.right !== undefined) sides.right = mask.right;\n\n return sides;\n}\n\nfunction maskClasses(sides: ResolvedMask) {\n return cn(\n sides.top && 'data-[overflow-y-start]:mask-t-from-[calc(100%-2rem)]',\n sides.bottom && 'data-[overflow-y-end]:mask-b-from-[calc(100%-2rem)]',\n sides.left && 'data-[overflow-x-start]:mask-l-from-[calc(100%-2rem)]',\n sides.right && 'data-[overflow-x-end]:mask-r-from-[calc(100%-2rem)]',\n );\n}\n\nconst ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n className,\n children,\n viewPortClassName,\n maxHeight,\n autoScroll = false,\n orientation = 'vertical',\n mask,\n showMask,\n ...props\n },\n ref,\n ) => {\n const areaRef = React.useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: autoScroll });\n\n const effectiveMask: ScrollAreaMask | undefined = mask !== undefined ? mask : showMask;\n const sides = resolveMask(effectiveMask, orientation);\n\n const viewportStyle: React.CSSProperties = {};\n if (maxHeight) viewportStyle.maxHeight = maxHeight;\n if (orientation === 'vertical') {\n viewportStyle.overflowX = 'hidden';\n viewportStyle.overflowY = 'scroll';\n } else if (orientation === 'horizontal') {\n viewportStyle.overflowX = 'scroll';\n viewportStyle.overflowY = 'hidden';\n }\n\n // Base UI's ScrollAreaContent forces `min-width: fit-content` so the\n // content can grow wider than the viewport (required for horizontal scroll\n // measurement). For vertical-only scroll we override it so children shrink\n // to the viewport width instead of forcing horizontal scroll.\n const contentStyle: React.CSSProperties | undefined =\n orientation === 'vertical'\n ? { minWidth: '0px' }\n : orientation === 'horizontal'\n ? { minHeight: '0px' }\n : undefined;\n\n return (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n ref={areaRef}\n className={cn('h-full w-full rounded-[inherit]', maskClasses(sides), viewPortClassName)}\n style={viewportStyle}\n >\n <ScrollAreaPrimitive.Content style={contentStyle}>{children}</ScrollAreaPrimitive.Content>\n </ScrollAreaPrimitive.Viewport>\n {(orientation === 'vertical' || orientation === 'both') && <ScrollBar orientation=\"vertical\" />}\n {(orientation === 'horizontal' || orientation === 'both') && <ScrollBar orientation=\"horizontal\" />}\n {orientation === 'both' && <ScrollAreaPrimitive.Corner />}\n </ScrollAreaPrimitive.Root>\n );\n },\n);\nScrollArea.displayName = 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Scrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.Scrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-opacity duration-normal ease-out-custom',\n 'opacity-0 data-[hovering]:opacity-100 data-[scrolling]:opacity-100 data-[scrolling]:duration-0',\n orientation === 'vertical' && 'h-full w-1.5 p-px',\n orientation === 'horizontal' && 'h-1.5 w-full flex-col p-px',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb className=\"relative flex-1 rounded-full bg-neutral4/30 hover:bg-neutral4/60 transition-colors duration-normal\" />\n </ScrollAreaPrimitive.Scrollbar>\n));\nScrollBar.displayName = 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\n"],"names":["useRef","cn","React","jsxs","ScrollAreaPrimitive","jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traces-data-list-5GA3JumQ.cjs","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx","../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex py-4 items-center justify-center text-neutral3 text-ui-md gap-8\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, flushLeft, flushRight, colStart, colEnd, featured, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(\n isWrapped\n ? 'grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200 rounded-lg'\n : dataListRowStaticStyles,\n !isWrapped && flushLeft && 'ml-0!',\n !isWrapped && flushRight && 'mr-0!',\n featured && 'bg-surface4',\n className,\n )}\n style={resolvedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-4 py-3 border-none text-ui-md text-neutral4 font-medium mx-1',\n 'before:absolute before:inset-x-0 before:inset-y-1 before:bg-surface4 before:rounded-md before:-z-1',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-ui-sm text-neutral2 font-normal', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('grid grid-cols-subgrid gap-8 col-span-full px-5', flushLeft && 'pl-0!', className)}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListSelectCell,\n DataListMonoCell,\n DataListDateCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n MonoCell: DataListMonoCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n","import { format, isToday } from 'date-fns';\nimport { DataListCell } from '../data-list-cells';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toDate(value: Date | string): Date | null {\n const date = value instanceof Date ? value : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n}\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral2\">\n {date ? (isToday(date) ? 'Today' : format(date, 'MMM dd')) : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral3\">\n {date ? format(date, 'h:mm:ss aaa') : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"min-w-0\">\n <span className=\"block text-neutral3 text-ui-smd font-mono truncate\">\n {input != null ? JSON.stringify(input) : '-'}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"min-w-0\">\n <span className=\"block text-ui-smd truncate\">{entityId || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd font-mono text-neutral3\">\n {display}\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n","import { EntityType } from '@mastra/core/observability';\nimport { CornerDownRightIcon, ListTreeIcon } from 'lucide-react';\nimport { DataListCell, DataListMonoCell } from '../data-list-cells';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { Colors } from '@/ds/tokens/colors';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-neutral3' : 'text-neutral2')} aria-hidden />\n </span>\n );\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 flex items-center gap-2\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListMonoCell>{input || '-'}</DataListMonoCell>;\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface TracesDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function TracesDataListEntityCell({ entityType, entityName }: TracesDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst STATUS_CONFIG: Record<string, { label: string; color: string }> = {\n completed: { label: 'OK', color: Colors.accent2 },\n ok: { label: 'OK', color: Colors.accent2 },\n error: { label: 'ERR', color: Colors.error },\n unset: { label: '-', color: Colors.neutral4 },\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? STATUS_CONFIG['unset'];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListDateCell, DataListIdCell, DataListTimeCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListEntityCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n EntityCell: TracesDataListEntityCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["jsxs","jsx","Button","ArrowLeftIcon","ArrowRightIcon","forwardRef","useDataListRowWrapperContext","cn","dataListRowStaticStyles","DataListRoot","DataListTop","DataListTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListCell","DataListTextCell","DataListNameCell","DataListDescriptionCell","DataListIdCell","DataListMonoCell","DataListDateCell","DataListTimeCell","DataListSelectCell","DataListTopSelectCell","DataListNoMatch","DataListSpacer","DataListNextPageLoading","isToday","format","ListTreeIcon","CornerDownRightIcon","Tooltip","TooltipTrigger","TooltipContent","EntityType","AgentIcon","WorkflowIcon","Colors"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traces-data-list-Dru2XnRN.js","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx","../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex py-4 items-center justify-center text-neutral3 text-ui-md gap-8\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, flushLeft, flushRight, colStart, colEnd, featured, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(\n isWrapped\n ? 'grid grid-cols-subgrid gap-8 px-5 transition-colors duration-200 rounded-lg'\n : dataListRowStaticStyles,\n !isWrapped && flushLeft && 'ml-0!',\n !isWrapped && flushRight && 'mr-0!',\n featured && 'bg-surface4',\n className,\n )}\n style={resolvedStyle}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-4 py-3 border-none text-ui-md text-neutral4 font-medium mx-1',\n 'before:absolute before:inset-x-0 before:inset-y-1 before:bg-surface4 before:rounded-md before:-z-1',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-ui-sm text-neutral2 font-normal', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('grid grid-cols-subgrid gap-8 col-span-full px-5', flushLeft && 'pl-0!', className)}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListSelectCell,\n DataListMonoCell,\n DataListDateCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n MonoCell: DataListMonoCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n","import { format, isToday } from 'date-fns';\nimport { DataListCell } from '../data-list-cells';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction toDate(value: Date | string): Date | null {\n const date = value instanceof Date ? value : new Date(value);\n return isNaN(date.getTime()) ? null : date;\n}\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral2\">\n {date ? (isToday(date) ? 'Today' : format(date, 'MMM dd')) : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n const date = toDate(timestamp);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd text-neutral3\">\n {date ? format(date, 'h:mm:ss aaa') : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"min-w-0\">\n <span className=\"block text-neutral3 text-ui-smd font-mono truncate\">\n {input != null ? JSON.stringify(input) : '-'}\n </span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n return (\n <DataListCell height=\"compact\" className=\"min-w-0\">\n <span className=\"block text-ui-smd truncate\">{entityId || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell height=\"compact\" className=\"text-ui-smd font-mono text-neutral3\">\n {display}\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n","import { EntityType } from '@mastra/core/observability';\nimport { CornerDownRightIcon, ListTreeIcon } from 'lucide-react';\nimport { DataListCell, DataListMonoCell } from '../data-list-cells';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { Colors } from '@/ds/tokens/colors';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-neutral3' : 'text-neutral2')} aria-hidden />\n </span>\n );\n return (\n <DataListCell height=\"compact\" className=\"text-neutral4 text-ui-smd min-w-0 flex items-center gap-2\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListMonoCell>{input || '-'}</DataListMonoCell>;\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nfunction EntityTypeIcon({ entityType, className }: { entityType: string; className?: string }) {\n const iconClass = cn('size-3.5 shrink-0 text-neutral2', className);\n const normalizedEntityType = entityType.toLowerCase();\n\n switch (normalizedEntityType) {\n case EntityType.AGENT:\n return <AgentIcon className={iconClass} aria-hidden />;\n case 'workflow':\n case EntityType.WORKFLOW_RUN:\n return <WorkflowIcon className={iconClass} aria-hidden />;\n default:\n return null;\n }\n}\n\nexport interface TracesDataListEntityCellProps {\n entityType?: string | null;\n entityName?: string | null;\n}\n\nexport function TracesDataListEntityCell({ entityType, entityName }: TracesDataListEntityCellProps) {\n const type = entityType ?? '';\n\n return (\n <DataListCell height=\"compact\" className=\"flex min-w-0 items-center gap-2\">\n <EntityTypeIcon entityType={type} />\n {entityName ? <span className=\"min-w-0 text-ui-smd truncate\">{entityName}</span> : '-'}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst STATUS_CONFIG: Record<string, { label: string; color: string }> = {\n completed: { label: 'OK', color: Colors.accent2 },\n ok: { label: 'OK', color: Colors.accent2 },\n error: { label: 'ERR', color: Colors.error },\n unset: { label: '-', color: Colors.neutral4 },\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? STATUS_CONFIG['unset'];\n\n return (\n <DataListCell height=\"compact\">\n <span className=\"uppercase text-ui-sm font-semibold\" style={{ color: config.color }}>\n {config.label}\n </span>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListDateCell, DataListIdCell, DataListTimeCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListEntityCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n DateCell: DataListDateCell,\n TimeCell: DataListTimeCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n EntityCell: TracesDataListEntityCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
|