@mastra/playground-ui 51.3.2-alpha.0 → 51.4.0-alpha.2
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 +57 -0
- package/dist/Badge-DcllBqFg.cjs +125 -0
- package/dist/Badge-DcllBqFg.cjs.map +1 -0
- package/dist/Badge-uGehUtus.js +123 -0
- package/dist/Badge-uGehUtus.js.map +1 -0
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/DataList.cjs.js +4 -4
- package/dist/components/DataList.es.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
- package/dist/components/ItemList.cjs.js +59 -40
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +58 -41
- package/dist/components/ItemList.es.js.map +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/ai/ask-user.cjs.js +3 -3
- package/dist/components/ai/ask-user.cjs.js.map +1 -1
- package/dist/components/ai/ask-user.es.js +3 -3
- package/dist/components/ai/ask-user.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +3 -3
- package/dist/components/ai/plan.cjs.js.map +1 -1
- package/dist/components/ai/plan.es.js +3 -3
- package/dist/components/ai/plan.es.js.map +1 -1
- package/dist/{data-list-BOI8fRuk.js → data-list-C3tjx5Vb.js} +2 -2
- package/dist/{data-list-BOI8fRuk.js.map → data-list-C3tjx5Vb.js.map} +1 -1
- package/dist/{data-list-CCacNODd.cjs → data-list-CRDewYj9.cjs} +2 -2
- package/dist/{data-list-CCacNODd.cjs.map → data-list-CRDewYj9.cjs.map} +1 -1
- package/dist/{data-list-skeleton-DDO_OE14.js → data-list-skeleton-BCrkk6wG.js} +2 -2
- package/dist/{data-list-skeleton-DDO_OE14.js.map → data-list-skeleton-BCrkk6wG.js.map} +1 -1
- package/dist/{data-list-skeleton-BHBSIQHN.cjs → data-list-skeleton-CONfqzH2.cjs} +2 -2
- package/dist/{data-list-skeleton-BHBSIQHN.cjs.map → data-list-skeleton-CONfqzH2.cjs.map} +1 -1
- package/dist/{data-list-top-cell-BOXO5s7I.cjs → data-list-top-cell-DAztx3m8.cjs} +6 -1
- package/dist/data-list-top-cell-DAztx3m8.cjs.map +1 -0
- package/dist/{data-list-top-cell-CC5jjv5s.js → data-list-top-cell-hNkk6S-Q.js} +6 -2
- package/dist/data-list-top-cell-hNkk6S-Q.js.map +1 -0
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/traces/components/format-hierarchical-spans.cjs.js +2 -1
- package/dist/domains/traces/components/format-hierarchical-spans.cjs.js.map +1 -1
- package/dist/domains/traces/components/format-hierarchical-spans.es.js +2 -1
- package/dist/domains/traces/components/format-hierarchical-spans.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +10 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +10 -1
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +17 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +17 -5
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +7 -9
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +7 -9
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js +10 -4
- package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js +10 -4
- package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.cjs.js +1 -1
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.es.js +1 -1
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
- package/dist/domains/traces/types.cjs.js.map +1 -1
- package/dist/domains/traces/types.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
- package/dist/hooks/use-scroll-to-first-highlight.cjs.js +44 -0
- package/dist/hooks/use-scroll-to-first-highlight.cjs.js.map +1 -0
- package/dist/hooks/use-scroll-to-first-highlight.d.ts +2 -0
- package/dist/hooks/use-scroll-to-first-highlight.es.js +40 -0
- package/dist/hooks/use-scroll-to-first-highlight.es.js.map +1 -0
- package/dist/hooks/use-text-highlight.cjs.js +49 -2
- package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
- package/dist/hooks/use-text-highlight.es.js +48 -3
- package/dist/hooks/use-text-highlight.es.js.map +1 -1
- package/dist/{logs-data-list-Xayqbjw4.cjs → logs-data-list-D88JF2lo.cjs} +2 -2
- package/dist/{logs-data-list-Xayqbjw4.cjs.map → logs-data-list-D88JF2lo.cjs.map} +1 -1
- package/dist/{logs-data-list-DRXJ89IZ.js → logs-data-list-DnAXTwr7.js} +2 -2
- package/dist/{logs-data-list-DRXJ89IZ.js.map → logs-data-list-DnAXTwr7.js.map} +1 -1
- package/dist/src/domains/traces/components/format-hierarchical-spans.d.ts +1 -0
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +1 -1
- package/dist/src/domains/traces/hooks/use-trace-search.d.ts +7 -0
- package/dist/src/domains/traces/types.d.ts +5 -0
- package/dist/src/ds/components/Badge/Badge.d.ts +86 -12
- package/dist/src/ds/components/Badge/badge.stories.d.ts +3 -0
- package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +2 -3
- package/dist/src/ds/components/DataList/data-list-cells.d.ts +5 -0
- package/dist/src/ds/components/ItemList/helpers.d.ts +8 -0
- package/dist/src/ds/components/ItemList/item-list-link-cell.d.ts +2 -1
- package/dist/src/ds/components/ItemList/item-list-row-button.d.ts +2 -1
- package/dist/src/ds/components/ai/plan/plan.d.ts +1 -1
- package/dist/src/hooks/use-scroll-to-first-highlight.d.ts +20 -0
- package/dist/src/hooks/use-text-highlight.d.ts +18 -0
- package/dist/src/test/highlight-api.d.ts +6 -4
- package/dist/style.css +364 -219
- package/dist/{traces-data-list-BLZgf-Es.cjs → traces-data-list-COksp2d4.cjs} +12 -13
- package/dist/traces-data-list-COksp2d4.cjs.map +1 -0
- package/dist/{traces-data-list-DmXGwe4Q.js → traces-data-list-c5I-8hwt.js} +12 -13
- package/dist/traces-data-list-c5I-8hwt.js.map +1 -0
- package/dist/use-text-highlight.css +8 -0
- package/package.json +7 -7
- package/theme.css +53 -0
- package/dist/Badge-BlJpI3fY.cjs +0 -57
- package/dist/Badge-BlJpI3fY.cjs.map +0 -1
- package/dist/Badge-woV6OD8k.js +0 -55
- package/dist/Badge-woV6OD8k.js.map +0 -1
- package/dist/chip-9P9t0dvN.cjs +0 -68
- package/dist/chip-9P9t0dvN.cjs.map +0 -1
- package/dist/chip-Bg0-95sX.js +0 -66
- package/dist/chip-Bg0-95sX.js.map +0 -1
- package/dist/components/Chip.cjs.js +0 -27
- package/dist/components/Chip.cjs.js.map +0 -1
- package/dist/components/Chip.d.ts +0 -2
- package/dist/components/Chip.es.js +0 -22
- package/dist/components/Chip.es.js.map +0 -1
- package/dist/components/StatusBadge.cjs.js +0 -76
- package/dist/components/StatusBadge.cjs.js.map +0 -1
- package/dist/components/StatusBadge.d.ts +0 -2
- package/dist/components/StatusBadge.es.js +0 -72
- package/dist/components/StatusBadge.es.js.map +0 -1
- package/dist/data-list-top-cell-BOXO5s7I.cjs.map +0 -1
- package/dist/data-list-top-cell-CC5jjv5s.js.map +0 -1
- package/dist/src/ds/components/Chip/chip.d.ts +0 -8
- package/dist/src/ds/components/Chip/chip.stories.d.ts +0 -11
- package/dist/src/ds/components/Chip/chips-group.d.ts +0 -2
- package/dist/src/ds/components/Chip/index.d.ts +0 -2
- package/dist/src/ds/components/StatusBadge/StatusBadge.d.ts +0 -13
- package/dist/src/ds/components/StatusBadge/index.d.ts +0 -2
- package/dist/src/ds/components/StatusBadge/status-badge.stories.d.ts +0 -8
- package/dist/traces-data-list-BLZgf-Es.cjs.map +0 -1
- package/dist/traces-data-list-DmXGwe4Q.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemList.cjs.js","sources":["../../src/ds/components/ItemList/item-list-cell.tsx","../../src/ds/components/ItemList/item-list-date-cell.tsx","../../src/ds/components/ItemList/shared.tsx","../../src/ds/components/ItemList/item-list-header.tsx","../../src/ds/components/ItemList/item-list-header-col.tsx","../../src/ds/components/ItemList/item-list-id-cell.tsx","../../src/ds/components/ItemList/item-list-items.tsx","../../src/ds/components/ItemList/item-list-items-scroller.tsx","../../src/ds/components/ItemList/item-list-label-cell.tsx","../../src/ds/components/ItemList/item-list-link-cell.tsx","../../src/ds/components/ItemList/item-list-message.tsx","../../src/ds/components/ItemList/item-list-next-page-loading.tsx","../../src/ds/components/ItemList/item-list-pagination.tsx","../../src/ds/components/ItemList/item-list-root.tsx","../../src/ds/components/ItemList/item-list-row.tsx","../../src/ds/components/ItemList/item-list-row-button.tsx","../../src/ds/components/ItemList/item-list-status-cell.tsx","../../src/ds/components/ItemList/item-list-text-cell.tsx","../../src/ds/components/ItemList/item-list-version-cell.tsx","../../src/ds/components/ItemList/item-list.tsx","../../src/ds/components/ItemList/item-list-items-skeleton.tsx","../../src/ds/components/ItemList/item-list-skeleton.tsx","../../src/ds/components/ItemList/helpers.ts"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListCell({ children, className }: ItemListTextCellProps) {\n return <div className={cn('', className)}>{children}</div>;\n}\n","import { isThisYear } from 'date-fns';\nimport { format } from 'date-fns/format';\nimport { isToday } from 'date-fns/isToday';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListDateCellProps = {\n date: Date | string | null;\n className?: string;\n withTime?: boolean;\n};\n\nexport function ItemListDateCell({ date, className, withTime = false }: ItemListDateCellProps) {\n const isThisYearDate = date ? isThisYear(new Date(date)) : false;\n\n const displayDayAndMonth = date ? (isToday(new Date(date)) ? 'Today' : format(new Date(date), 'MMM dd')) : '';\n const displayYear = date && !isThisYearDate ? format(new Date(date), 'yyyy') : '';\n const displayTime = date && withTime ? `${format(new Date(date), \"'at' h:mm aaa\")}` : '';\n\n return (\n <div className={cn('truncate text-ui-md text-neutral2', className)}>\n {displayDayAndMonth} {displayYear} {displayTime}\n </div>\n );\n}\n","import type { ItemListColumn } from './types';\n\nexport function getItemListColumnTemplate(columns?: ItemListColumn[]): string {\n if (!columns || columns.length === 0) {\n return '';\n }\n\n return columns\n ?.map(column => {\n return column.size;\n })\n .join(' ');\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListHeaderProps = {\n columns?: ItemListColumn[];\n isSelectionActive?: boolean;\n children?: React.ReactNode;\n};\n\nexport function ItemListHeader({ columns, isSelectionActive, children }: ItemListHeaderProps) {\n return (\n <div className={cn('sticky top-0 z-10 mb-4 rounded-lg bg-surface3 px-4')}>\n <div\n className={cn('grid items-center gap-4 text-left text-ui-xs tracking-widest text-neutral3 uppercase', {\n 'pl-12 [&>label]:absolute [&>label]:left-0': isSelectionActive,\n })}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListHeaderColProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListHeaderCol({ children, className }: ItemListHeaderColProps) {\n return <span className={cn('py-3', className)}>{children}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListIdCellProps = {\n id: string;\n className?: string;\n isShortened?: boolean;\n};\n\nexport function ItemListIdCell({ id, className, isShortened = true }: ItemListIdCellProps) {\n const displayId = isShortened ? id.slice(0, 8) : id;\n return <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral2', className)}>{displayId}</div>;\n}\n","import React from 'react';\n\nexport type ItemListItemsProps = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItems({ children }: ItemListItemsProps) {\n return <ul className=\"grid content-start\">{children}</ul>;\n}\n","import React, { useRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListItemsScroller = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItemsScroller({ children }: ItemListItemsScroller) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div ref={containerRef} className={cn('overflow-y-auto')}>\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListLabelCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListLabelCell({ children, className }: ItemListLabelCellProps) {\n return (\n <label className={cn('flex h-full w-14 items-center justify-center rounded-lg hover:bg-surface5', className)}>\n {children}\n </label>\n );\n}\n","import { transitions, focusRing } from '@/ds/primitives/transitions';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListLinkCellProps = {\n children?: React.ReactNode;\n className?: string;\n href: string;\n LinkComponent: LinkComponent;\n};\n\nexport function ItemListLinkCell({ children, href, className, LinkComponent: Link }: ItemListLinkCellProps) {\n return (\n <Link\n href={href}\n className={cn(\n 'flex w-full items-center justify-center gap-6 rounded-lg px-3 py-[0.6rem] text-left',\n 'hover:bg-surface4',\n transitions.colors,\n focusRing.visible,\n\n className,\n )}\n >\n {children}\n </Link>\n );\n}\n","import { InfoIcon, TriangleAlertIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListMessageProps = {\n children?: React.ReactNode;\n message?: string;\n className?: string;\n type?: 'info' | 'error';\n};\n\nexport function ItemListMessage({ children, message, className, type }: ItemListMessageProps) {\n if (!children && !message) {\n return null;\n }\n\n return (\n <div className={cn('grid border-t border-border1', className)}>\n {message ? (\n <p\n className={cn(\n 'grid justify-center justify-items-center gap-2 p-8 text-center text-ui-md text-neutral3',\n '[&>svg]:size-[1.5em] [&>svg]:opacity-75',\n {\n '[&>svg]:text-red-500': type === 'error',\n },\n )}\n >\n {type === 'error' ? <TriangleAlertIcon /> : <InfoIcon />} {message}\n </p>\n ) : (\n children\n )}\n </div>\n );\n}\n","export type ItemListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n noMoreDataText?: string;\n};\n\nexport function ItemListNextPageLoading({\n isLoading,\n hasMore,\n setEndOfListElement,\n loadingText = 'Loading more data...',\n noMoreDataText = 'No more data to load',\n}: ItemListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div ref={setEndOfListElement} className=\"text-ui-md text-neutral3 mt-8 flex justify-center opacity-50\">\n {isLoading && loadingText}\n {!hasMore && !isLoading && noMoreDataText}\n </div>\n );\n}\n","import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function ItemListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: ItemListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className={cn('flex items-center justify-center gap-8 pt-6 text-ui-md text-neutral3')}>\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div\n className={cn(\n 'flex gap-4',\n '[&>button]:flex [&>button]:items-center [&>button]:gap-2 [&>button]:rounded-md [&>button]:border [&>button]:border-border1 [&>button]:p-1 [&>button]:px-2 [&>button]:text-neutral4 [&>button]:transition-colors [&>button:hover]:text-neutral5',\n '[&_svg]:size-[1em] [&_svg]:text-neutral3',\n )}\n >\n {typeof currentPage === 'number' && currentPage > 0 && (\n <button onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </button>\n )}\n {hasMore && (\n <button onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListRoot({ children, className }: ItemListRootProps) {\n return <div className={cn('grid grid-rows-[auto_1fr] overflow-y-auto', className)}>{children}</div>;\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowProps = {\n isSelected?: boolean;\n children?: React.ReactNode;\n columns?: ItemListColumn[];\n};\n\nexport function ItemListRow({ isSelected, children, columns }: ItemListRowProps) {\n return (\n <li\n className={cn(\n 'flex overflow-hidden rounded-lg border border-transparent border-t-border1 py-[3px] pb-[2px] text-ui-md text-neutral5 first:border-t-transparent',\n '[&:last-child>button]:rounded-b-lg',\n '[&.selected-row]:border [&.selected-row]:border-dashed [&.selected-row]:border-white/50 [&.selected-row]:pr-[3px] [&.selected-row]:first:border-t',\n '[&:has(+.selected-row)]:rounded-b-none [&:has(+.selected-row)]:border-b-transparent',\n '[.selected-row+&]:rounded-t-none',\n transitions.colors,\n {\n 'selected-row': isSelected,\n 'grid px-4 gap-4 ': columns,\n },\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </li>\n );\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n item?: any;\n isFeatured?: boolean;\n children?: React.ReactNode;\n onClick?: (itemId: string) => void;\n columns?: ItemListColumn[];\n className?: string;\n disabled?: boolean;\n};\n\nexport function ItemListRowButton({\n item,\n isFeatured,\n onClick,\n children,\n columns,\n className,\n disabled,\n ...props\n}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n return (\n <button\n {...props}\n onClick={handleClick}\n className={cn(\n 'grid w-full items-center gap-4 rounded-lg px-4 text-left',\n transitions.colors,\n focusRing.visible,\n {\n 'bg-surface4': isFeatured,\n // hover effect only not for skeleton and featured\n 'hover:bg-surface4': item && !isFeatured && !disabled,\n },\n className,\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n disabled={disabled}\n >\n {children}\n </button>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListStatusCellProps = {\n status?: string;\n};\n\nfunction capitalize(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport function ItemListStatusCell({ status }: ItemListStatusCellProps) {\n if (!status) {\n return null;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={cn('relative flex h-full w-10 items-center justify-center bg-transparent')}>\n <div\n className={cn('size-2 rounded-full', {\n 'bg-green-600': ['success', 'completed'].includes(status),\n 'bg-red-700': ['error', 'failed'].includes(status),\n 'bg-yellow-500': ['pending', 'running'].includes(status),\n })}\n ></div>\n </div>\n </TooltipTrigger>\n <TooltipContent>{capitalize(status)}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function ItemListTextCell({ children, isLoading, className }: ItemListTextCellProps) {\n return (\n <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral4', className)}>\n {isLoading ? (\n <div className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"></div>\n ) : (\n children\n )}\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport { BanIcon, ClockIcon } from 'lucide-react';\nimport { Chip } from '../Chip';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { ItemListCell } from './item-list-cell';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListVersionCellProps = {\n version: string | number;\n date?: Date | string | null;\n isLatest?: boolean;\n isDeleted?: boolean;\n};\n\nexport function ItemListVersionCell({ version, date, isLatest, isDeleted }: ItemListVersionCellProps) {\n return (\n <ItemListCell className={cn('grid grid-cols-[1fr_auto] pl-1')}>\n <div\n className={cn('grid gap-1 leading-none text-neutral3', {\n 'text-neutral4': isLatest,\n })}\n >\n <strong className=\"font-normal\">v. {version}</strong>\n <em className=\"text-ui-sm text-neutral2 font-normal\">\n {date ? format(new Date(date), 'MMM d, yyyy HH:mm') : null}\n </em>\n </div>\n {(isLatest || isDeleted) && (\n <div className=\"flex items-center gap-1\">\n {isLatest && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Chip color=\"blue\">\n <ClockIcon />\n </Chip>\n </TooltipTrigger>\n <TooltipContent>Latest version</TooltipContent>\n </Tooltip>\n )}\n {isDeleted && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Chip color=\"red\">\n <BanIcon />\n </Chip>\n </TooltipTrigger>\n <TooltipContent>Deleted in this version</TooltipContent>\n </Tooltip>\n )}\n </div>\n )}\n </ItemListCell>\n );\n}\n","import { ItemListCell } from './item-list-cell';\nimport { ItemListDateCell } from './item-list-date-cell';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListHeaderCol } from './item-list-header-col';\nimport { ItemListIdCell } from './item-list-id-cell';\nimport { ItemListItems } from './item-list-items';\nimport { ItemListItemsScroller } from './item-list-items-scroller';\nimport { ItemListLabelCell } from './item-list-label-cell';\nimport { ItemListLinkCell } from './item-list-link-cell';\nimport { ItemListMessage } from './item-list-message';\nimport { ItemListNextPageLoading } from './item-list-next-page-loading';\nimport { ItemListPagination } from './item-list-pagination';\nimport { ItemListRoot } from './item-list-root';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport { ItemListStatusCell } from './item-list-status-cell';\nimport { ItemListTextCell } from './item-list-text-cell';\nimport { ItemListVersionCell } from './item-list-version-cell';\n\nexport const ItemList = Object.assign(ItemListRoot, {\n Header: ItemListHeader,\n HeaderCol: ItemListHeaderCol,\n Items: ItemListItems,\n Scroller: ItemListItemsScroller,\n Row: ItemListRow,\n RowButton: ItemListRowButton,\n Message: ItemListMessage,\n NextPageLoading: ItemListNextPageLoading,\n Pagination: ItemListPagination,\n Cell: ItemListCell,\n TextCell: ItemListTextCell,\n StatusCell: ItemListStatusCell,\n VersionCell: ItemListVersionCell,\n IdCell: ItemListIdCell,\n DateCell: ItemListDateCell,\n LinkCell: ItemListLinkCell,\n LabelCell: ItemListLabelCell,\n});\n","import { ItemListItems } from './item-list-items';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport type { ItemListColumn } from './types';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'];\n\nexport type ItemListItemsSkeletonProps = {\n columns?: ItemListColumn[];\n numberOfRows?: number;\n};\n\nexport function ItemListItemsSkeleton({ columns, numberOfRows = 3 }: ItemListItemsSkeletonProps) {\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths.length;\n return widths[index];\n };\n\n return (\n <ItemListItems>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <ItemListRow key={rowIdx}>\n <ItemListRowButton columns={columns}>\n {(columns || []).map((col, colIdx) => {\n const key = `${col.name}-${colIdx}`;\n return (\n <div\n key={key}\n className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"\n style={{ width: `${getPseudoRandomWidth(rowIdx, colIdx)}` }}\n ></div>\n );\n })}\n </ItemListRowButton>\n </ItemListRow>\n ))}\n </ItemListItems>\n );\n}\n","import { ItemList } from './item-list';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListItemsSkeleton } from './item-list-items-skeleton';\nimport type { ItemListItemsSkeletonProps } from './item-list-items-skeleton';\n\nexport function ItemListSkeleton({ columns, numberOfRows }: ItemListItemsSkeletonProps) {\n return (\n <ItemList>\n <ItemListHeader columns={columns} />\n <ItemListItemsSkeleton columns={columns} numberOfRows={numberOfRows} />\n </ItemList>\n );\n}\n","type getToItemFnParams = {\n entries: { id: string }[];\n id: string | undefined;\n update: (id: string) => void;\n};\n\nexport function getToNextItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsNextItem = currentIndex < entries.length - 1;\n\n if (thereIsNextItem) {\n return () => {\n const nextItem = entries[currentIndex + 1];\n if (!nextItem) return;\n update(nextItem.id);\n };\n }\n\n return undefined;\n}\n\nexport function getToPreviousItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsPreviousItem = currentIndex > 0;\n\n if (thereIsPreviousItem) {\n return () => {\n const previousItem = entries[currentIndex - 1];\n if (!previousItem) return;\n update(previousItem.id);\n };\n }\n\n return undefined;\n}\n"],"names":["cn","isThisYear","isToday","format","jsx","useRef","transitions","focusRing","jsxs","TriangleAlertIcon","InfoIcon","ArrowLeftIcon","ArrowRightIcon","Tooltip","TooltipTrigger","TooltipContent","Chip","ClockIcon","BanIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemList.cjs.js","sources":["../../src/ds/components/ItemList/item-list-cell.tsx","../../src/ds/components/ItemList/item-list-date-cell.tsx","../../src/ds/components/ItemList/shared.tsx","../../src/ds/components/ItemList/item-list-header.tsx","../../src/ds/components/ItemList/item-list-header-col.tsx","../../src/ds/components/ItemList/item-list-id-cell.tsx","../../src/ds/components/ItemList/item-list-items.tsx","../../src/ds/components/ItemList/item-list-items-scroller.tsx","../../src/ds/components/ItemList/item-list-label-cell.tsx","../../src/ds/components/ItemList/item-list-link-cell.tsx","../../src/ds/components/ItemList/item-list-message.tsx","../../src/ds/components/ItemList/item-list-next-page-loading.tsx","../../src/ds/components/ItemList/item-list-pagination.tsx","../../src/ds/components/ItemList/item-list-root.tsx","../../src/ds/components/ItemList/item-list-row.tsx","../../src/ds/components/ItemList/item-list-row-button.tsx","../../src/ds/components/ItemList/item-list-status-cell.tsx","../../src/ds/components/ItemList/item-list-text-cell.tsx","../../src/ds/components/ItemList/helpers.ts","../../src/ds/components/ItemList/item-list-version-cell.tsx","../../src/ds/components/ItemList/item-list.tsx","../../src/ds/components/ItemList/item-list-items-skeleton.tsx","../../src/ds/components/ItemList/item-list-skeleton.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListCell({ children, className }: ItemListTextCellProps) {\n return <div className={cn('', className)}>{children}</div>;\n}\n","import { isThisYear } from 'date-fns';\nimport { format } from 'date-fns/format';\nimport { isToday } from 'date-fns/isToday';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListDateCellProps = {\n date: Date | string | null;\n className?: string;\n withTime?: boolean;\n};\n\nexport function ItemListDateCell({ date, className, withTime = false }: ItemListDateCellProps) {\n const isThisYearDate = date ? isThisYear(new Date(date)) : false;\n\n const displayDayAndMonth = date ? (isToday(new Date(date)) ? 'Today' : format(new Date(date), 'MMM dd')) : '';\n const displayYear = date && !isThisYearDate ? format(new Date(date), 'yyyy') : '';\n const displayTime = date && withTime ? `${format(new Date(date), \"'at' h:mm aaa\")}` : '';\n\n return (\n <div className={cn('truncate text-ui-md text-neutral2', className)}>\n {displayDayAndMonth} {displayYear} {displayTime}\n </div>\n );\n}\n","import type { ItemListColumn } from './types';\n\nexport function getItemListColumnTemplate(columns?: ItemListColumn[]): string {\n if (!columns || columns.length === 0) {\n return '';\n }\n\n return columns\n ?.map(column => {\n return column.size;\n })\n .join(' ');\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListHeaderProps = {\n columns?: ItemListColumn[];\n isSelectionActive?: boolean;\n children?: React.ReactNode;\n};\n\nexport function ItemListHeader({ columns, isSelectionActive, children }: ItemListHeaderProps) {\n return (\n <div className={cn('sticky top-0 z-10 mb-4 rounded-lg bg-surface3 px-4')}>\n <div\n className={cn('grid items-center gap-4 text-left text-ui-xs tracking-widest text-neutral3 uppercase', {\n 'pl-12 [&>label]:absolute [&>label]:left-0': isSelectionActive,\n })}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListHeaderColProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListHeaderCol({ children, className }: ItemListHeaderColProps) {\n return <span className={cn('py-3', className)}>{children}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListIdCellProps = {\n id: string;\n className?: string;\n isShortened?: boolean;\n};\n\nexport function ItemListIdCell({ id, className, isShortened = true }: ItemListIdCellProps) {\n const displayId = isShortened ? id.slice(0, 8) : id;\n return <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral2', className)}>{displayId}</div>;\n}\n","import React from 'react';\n\nexport type ItemListItemsProps = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItems({ children }: ItemListItemsProps) {\n return <ul className=\"grid content-start\">{children}</ul>;\n}\n","import React, { useRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListItemsScroller = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItemsScroller({ children }: ItemListItemsScroller) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div ref={containerRef} className={cn('overflow-y-auto')}>\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListLabelCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListLabelCell({ children, className }: ItemListLabelCellProps) {\n return (\n <label className={cn('flex h-full w-14 items-center justify-center rounded-lg hover:bg-surface5', className)}>\n {children}\n </label>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListLinkCellProps = {\n children?: React.ReactNode;\n className?: string;\n href: string;\n LinkComponent: LinkComponent;\n tooltip?: React.ReactNode;\n};\n\nexport function ItemListLinkCell({ children, href, className, LinkComponent: Link, tooltip }: ItemListLinkCellProps) {\n const link = (\n <Link\n href={href}\n className={cn(\n 'flex w-full items-center justify-center gap-6 rounded-lg px-3 py-[0.6rem] text-left',\n 'hover:bg-surface4',\n transitions.colors,\n focusRing.visible,\n\n className,\n )}\n >\n {children}\n </Link>\n );\n\n if (tooltip == null) return link;\n\n return (\n <Tooltip>\n <TooltipTrigger render={link} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n","import { InfoIcon, TriangleAlertIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListMessageProps = {\n children?: React.ReactNode;\n message?: string;\n className?: string;\n type?: 'info' | 'error';\n};\n\nexport function ItemListMessage({ children, message, className, type }: ItemListMessageProps) {\n if (!children && !message) {\n return null;\n }\n\n return (\n <div className={cn('grid border-t border-border1', className)}>\n {message ? (\n <p\n className={cn(\n 'grid justify-center justify-items-center gap-2 p-8 text-center text-ui-md text-neutral3',\n '[&>svg]:size-[1.5em] [&>svg]:opacity-75',\n {\n '[&>svg]:text-red-500': type === 'error',\n },\n )}\n >\n {type === 'error' ? <TriangleAlertIcon /> : <InfoIcon />} {message}\n </p>\n ) : (\n children\n )}\n </div>\n );\n}\n","export type ItemListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n noMoreDataText?: string;\n};\n\nexport function ItemListNextPageLoading({\n isLoading,\n hasMore,\n setEndOfListElement,\n loadingText = 'Loading more data...',\n noMoreDataText = 'No more data to load',\n}: ItemListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div ref={setEndOfListElement} className=\"text-ui-md text-neutral3 mt-8 flex justify-center opacity-50\">\n {isLoading && loadingText}\n {!hasMore && !isLoading && noMoreDataText}\n </div>\n );\n}\n","import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function ItemListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: ItemListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className={cn('flex items-center justify-center gap-8 pt-6 text-ui-md text-neutral3')}>\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div\n className={cn(\n 'flex gap-4',\n '[&>button]:flex [&>button]:items-center [&>button]:gap-2 [&>button]:rounded-md [&>button]:border [&>button]:border-border1 [&>button]:p-1 [&>button]:px-2 [&>button]:text-neutral4 [&>button]:transition-colors [&>button:hover]:text-neutral5',\n '[&_svg]:size-[1em] [&_svg]:text-neutral3',\n )}\n >\n {typeof currentPage === 'number' && currentPage > 0 && (\n <button onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </button>\n )}\n {hasMore && (\n <button onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListRoot({ children, className }: ItemListRootProps) {\n return <div className={cn('grid grid-rows-[auto_1fr] overflow-y-auto', className)}>{children}</div>;\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowProps = {\n isSelected?: boolean;\n children?: React.ReactNode;\n columns?: ItemListColumn[];\n};\n\nexport function ItemListRow({ isSelected, children, columns }: ItemListRowProps) {\n return (\n <li\n className={cn(\n 'flex overflow-hidden rounded-lg border border-transparent border-t-border1 py-[3px] pb-[2px] text-ui-md text-neutral5 first:border-t-transparent',\n '[&:last-child>button]:rounded-b-lg',\n '[&.selected-row]:border [&.selected-row]:border-dashed [&.selected-row]:border-white/50 [&.selected-row]:pr-[3px] [&.selected-row]:first:border-t',\n '[&:has(+.selected-row)]:rounded-b-none [&:has(+.selected-row)]:border-b-transparent',\n '[.selected-row+&]:rounded-t-none',\n transitions.colors,\n {\n 'selected-row': isSelected,\n 'grid px-4 gap-4 ': columns,\n },\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </li>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n item?: any;\n isFeatured?: boolean;\n children?: React.ReactNode;\n onClick?: (itemId: string) => void;\n columns?: ItemListColumn[];\n className?: string;\n disabled?: boolean;\n tooltip?: React.ReactNode;\n};\n\nexport function ItemListRowButton({\n item,\n isFeatured,\n onClick,\n children,\n columns,\n className,\n disabled,\n tooltip,\n ...props\n}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n const button = (\n <button\n {...props}\n onClick={handleClick}\n className={cn(\n 'grid w-full items-center gap-4 rounded-lg px-4 text-left',\n transitions.colors,\n focusRing.visible,\n {\n 'bg-surface4': isFeatured,\n 'hover:bg-surface4': item && !isFeatured && !disabled,\n },\n className,\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n disabled={disabled}\n >\n {children}\n </button>\n );\n\n if (tooltip == null) return button;\n\n return (\n <Tooltip>\n <TooltipTrigger render={button} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListStatusCellProps = {\n status?: string;\n};\n\nfunction capitalize(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport function ItemListStatusCell({ status }: ItemListStatusCellProps) {\n if (!status) {\n return null;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={cn('relative flex h-full w-10 items-center justify-center bg-transparent')}>\n <div\n className={cn('size-2 rounded-full', {\n 'bg-green-600': ['success', 'completed'].includes(status),\n 'bg-red-700': ['error', 'failed'].includes(status),\n 'bg-yellow-500': ['pending', 'running'].includes(status),\n })}\n ></div>\n </div>\n </TooltipTrigger>\n <TooltipContent>{capitalize(status)}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function ItemListTextCell({ children, isLoading, className }: ItemListTextCellProps) {\n return (\n <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral4', className)}>\n {isLoading ? (\n <div className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"></div>\n ) : (\n children\n )}\n </div>\n );\n}\n","type getToItemFnParams = {\n entries: { id: string }[];\n id: string | undefined;\n update: (id: string) => void;\n};\n\nexport const ITEM_LIST_VERSION_STATUS_LABELS = {\n latest: 'Latest version',\n deleted: 'Deleted in this version',\n} as const;\n\nexport function getItemListVersionStatusLabel({\n isLatest,\n isDeleted,\n}: {\n isLatest?: boolean;\n isDeleted?: boolean;\n}): string | undefined {\n const labels: string[] = [];\n if (isLatest) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.latest);\n if (isDeleted) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.deleted);\n return labels.length > 0 ? labels.join(' · ') : undefined;\n}\n\nexport function getToNextItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsNextItem = currentIndex < entries.length - 1;\n\n if (thereIsNextItem) {\n return () => {\n const nextItem = entries[currentIndex + 1];\n if (!nextItem) return;\n update(nextItem.id);\n };\n }\n\n return undefined;\n}\n\nexport function getToPreviousItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsPreviousItem = currentIndex > 0;\n\n if (thereIsPreviousItem) {\n return () => {\n const previousItem = entries[currentIndex - 1];\n if (!previousItem) return;\n update(previousItem.id);\n };\n }\n\n return undefined;\n}\n","import { format } from 'date-fns';\nimport { BanIcon, ClockIcon } from 'lucide-react';\nimport { Badge } from '../Badge/Badge';\nimport { ITEM_LIST_VERSION_STATUS_LABELS } from './helpers';\nimport { ItemListCell } from './item-list-cell';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListVersionCellProps = {\n version: string | number;\n date?: Date | string | null;\n isLatest?: boolean;\n isDeleted?: boolean;\n};\n\nexport function ItemListVersionCell({ version, date, isLatest, isDeleted }: ItemListVersionCellProps) {\n return (\n <ItemListCell className={cn('grid grid-cols-[1fr_auto] pl-1')}>\n <div\n className={cn('grid gap-1 leading-none text-neutral3', {\n 'text-neutral4': isLatest,\n })}\n >\n <strong className=\"font-normal\">v. {version}</strong>\n <em className={cn('text-ui-sm', 'font-normal', 'text-neutral2')}>\n {date ? format(new Date(date), 'MMM d, yyyy HH:mm') : null}\n </em>\n </div>\n {(isLatest || isDeleted) && (\n <div className=\"flex items-center gap-1\">\n {isLatest && (\n <span className=\"inline-flex\" role=\"img\" aria-label={ITEM_LIST_VERSION_STATUS_LABELS.latest}>\n <Badge variant=\"blue\" size=\"sm\" icon={<ClockIcon />} />\n </span>\n )}\n {isDeleted && (\n <span className=\"inline-flex\" role=\"img\" aria-label={ITEM_LIST_VERSION_STATUS_LABELS.deleted}>\n <Badge variant=\"red\" size=\"sm\" icon={<BanIcon />} />\n </span>\n )}\n </div>\n )}\n </ItemListCell>\n );\n}\n","import { ItemListCell } from './item-list-cell';\nimport { ItemListDateCell } from './item-list-date-cell';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListHeaderCol } from './item-list-header-col';\nimport { ItemListIdCell } from './item-list-id-cell';\nimport { ItemListItems } from './item-list-items';\nimport { ItemListItemsScroller } from './item-list-items-scroller';\nimport { ItemListLabelCell } from './item-list-label-cell';\nimport { ItemListLinkCell } from './item-list-link-cell';\nimport { ItemListMessage } from './item-list-message';\nimport { ItemListNextPageLoading } from './item-list-next-page-loading';\nimport { ItemListPagination } from './item-list-pagination';\nimport { ItemListRoot } from './item-list-root';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport { ItemListStatusCell } from './item-list-status-cell';\nimport { ItemListTextCell } from './item-list-text-cell';\nimport { ItemListVersionCell } from './item-list-version-cell';\n\nexport const ItemList = Object.assign(ItemListRoot, {\n Header: ItemListHeader,\n HeaderCol: ItemListHeaderCol,\n Items: ItemListItems,\n Scroller: ItemListItemsScroller,\n Row: ItemListRow,\n RowButton: ItemListRowButton,\n Message: ItemListMessage,\n NextPageLoading: ItemListNextPageLoading,\n Pagination: ItemListPagination,\n Cell: ItemListCell,\n TextCell: ItemListTextCell,\n StatusCell: ItemListStatusCell,\n VersionCell: ItemListVersionCell,\n IdCell: ItemListIdCell,\n DateCell: ItemListDateCell,\n LinkCell: ItemListLinkCell,\n LabelCell: ItemListLabelCell,\n});\n","import { ItemListItems } from './item-list-items';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport type { ItemListColumn } from './types';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'];\n\nexport type ItemListItemsSkeletonProps = {\n columns?: ItemListColumn[];\n numberOfRows?: number;\n};\n\nexport function ItemListItemsSkeleton({ columns, numberOfRows = 3 }: ItemListItemsSkeletonProps) {\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths.length;\n return widths[index];\n };\n\n return (\n <ItemListItems>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <ItemListRow key={rowIdx}>\n <ItemListRowButton columns={columns}>\n {(columns || []).map((col, colIdx) => {\n const key = `${col.name}-${colIdx}`;\n return (\n <div\n key={key}\n className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"\n style={{ width: `${getPseudoRandomWidth(rowIdx, colIdx)}` }}\n ></div>\n );\n })}\n </ItemListRowButton>\n </ItemListRow>\n ))}\n </ItemListItems>\n );\n}\n","import { ItemList } from './item-list';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListItemsSkeleton } from './item-list-items-skeleton';\nimport type { ItemListItemsSkeletonProps } from './item-list-items-skeleton';\n\nexport function ItemListSkeleton({ columns, numberOfRows }: ItemListItemsSkeletonProps) {\n return (\n <ItemList>\n <ItemListHeader columns={columns} />\n <ItemListItemsSkeleton columns={columns} numberOfRows={numberOfRows} />\n </ItemList>\n );\n}\n"],"names":["cn","isThisYear","isToday","format","jsx","useRef","tooltip","transitions","focusRing","Tooltip","TooltipTrigger","TooltipContent","jsxs","TriangleAlertIcon","InfoIcon","ArrowLeftIcon","ArrowRightIcon","Badge","ClockIcon","BanIcon"],"mappings":";;;;;;;;;;;;;;;AAOO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAU,EAA0B;AAC3E,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,EAAA,EAAI,SAAS,GAAI,QAAA,EAAS,CAAA;AACtD;;ACEO,SAAS,iBAAiB,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,GAAW,OAAM,EAA0B;AAC7F,EAAA,MAAM,iBAAiB,IAAA,GAAOC,kBAAA,CAAW,IAAI,IAAA,CAAK,IAAI,CAAC,CAAA,GAAI,KAAA;AAE3D,EAAA,MAAM,kBAAA,GAAqB,IAAA,GAAQC,eAAA,CAAQ,IAAI,KAAK,IAAI,CAAC,CAAA,GAAI,OAAA,GAAUC,cAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,QAAQ,CAAA,GAAK,EAAA;AAC3G,EAAA,MAAM,WAAA,GAAc,IAAA,IAAQ,CAAC,cAAA,GAAiBA,aAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,MAAM,CAAA,GAAI,EAAA;AAC/E,EAAA,MAAM,WAAA,GAAc,IAAA,IAAQ,QAAA,GAAW,CAAA,EAAGA,aAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,eAAe,CAAC,CAAA,CAAA,GAAK,EAAA;AAEtF,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWH,WAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EAC9D,QAAA,EAAA;AAAA,IAAA,kBAAA;AAAA,IAAmB,GAAA;AAAA,IAAE,WAAA;AAAA,IAAY,GAAA;AAAA,IAAE;AAAA,GAAA,EACtC,CAAA;AAEJ;;ACrBO,SAAS,0BAA0B,OAAA,EAAoC;AAC5E,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACpC,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAA,EACH,IAAI,CAAA,MAAA,KAAU;AACd,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACb;;ACDO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,iBAAA,EAAmB,UAAS,EAAwB;AAC5F,EAAA,uBACEI,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWJ,WAAA,CAAG,oDAAoD,CAAA,EACrE,QAAA,kBAAAI,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWJ,YAAG,uFAAA,EAAyF;AAAA,QACrG,2CAAA,EAA6C;AAAA,OAC9C,CAAA;AAAA,MACD,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MAEhE;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACjBO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA2B;AACjF,EAAA,sCAAQ,MAAA,EAAA,EAAK,SAAA,EAAWA,YAAG,MAAA,EAAQ,SAAS,GAAI,QAAA,EAAS,CAAA;AAC3D;;ACDO,SAAS,eAAe,EAAE,EAAA,EAAI,SAAA,EAAW,WAAA,GAAc,MAAK,EAAwB;AACzF,EAAA,MAAM,YAAY,WAAA,GAAc,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,GAAI,EAAA;AACjD,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,+CAAA,EAAiD,SAAS,GAAI,QAAA,EAAA,SAAA,EAAU,CAAA;AACpG;;ACLO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAS,EAAuB;AAC9D,EAAA,uBAAOI,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAS,CAAA;AACtD;;ACDO,SAAS,qBAAA,CAAsB,EAAE,QAAA,EAAS,EAA0B;AACzE,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAEhD,EAAA,uBACED,cAAA,CAAC,SAAI,GAAA,EAAK,YAAA,EAAc,WAAWJ,WAAA,CAAG,iBAAiB,GACpD,QAAA,EACH,CAAA;AAEJ;;ACRO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA2B;AACjF,EAAA,sCACG,OAAA,EAAA,EAAM,SAAA,EAAWA,YAAG,2EAAA,EAA6E,SAAS,GACxG,QAAA,EACH,CAAA;AAEJ;;ACAO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,IAAA,EAAM,WAAW,aAAA,EAAe,IAAA,WAAMM,WAAQ,EAA0B;AACnH,EAAA,MAAM,IAAA,mBACJF,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,SAAA,EAAWJ,WAAA;AAAA,QACT,qFAAA;AAAA,QACA,mBAAA;AAAA,QACAO,kCAAA,CAAY,MAAA;AAAA,QACZC,gCAAA,CAAU,OAAA;AAAA,QAEV;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAGF,EAAA,IAAIF,SAAA,IAAW,MAAM,OAAO,IAAA;AAE5B,EAAA,uCACGG,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAACM,sBAAA,EAAA,EAAe,QAAQ,IAAA,EAAM,CAAA;AAAA,oBAC9BN,cAAA,CAACO,0BAAgB,QAAA,EAAAL,SAAA,EAAQ;AAAA,GAAA,EAC3B,CAAA;AAEJ;;AC5BO,SAAS,gBAAgB,EAAE,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,MAAK,EAAyB;AAC5F,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,OAAA,EAAS;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAWN,YAAG,8BAAA,EAAgC,SAAS,GACzD,QAAA,EAAA,OAAA,mBACCY,eAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWZ,WAAA;AAAA,QACT,yFAAA;AAAA,QACA,yCAAA;AAAA,QACA;AAAA,UACE,wBAAwB,IAAA,KAAS;AAAA;AACnC,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,OAAA,mBAAUI,cAAA,CAACS,6BAAA,EAAA,EAAkB,CAAA,kCAAMC,oBAAA,EAAA,EAAS,CAAA;AAAA,QAAG,GAAA;AAAA,QAAE;AAAA;AAAA;AAAA,MAG7D,QAAA,EAEJ,CAAA;AAEJ;;AC1BO,SAAS,uBAAA,CAAwB;AAAA,EACtC,SAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA,GAAc,sBAAA;AAAA,EACd,cAAA,GAAiB;AACnB,CAAA,EAAiC;AAC/B,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEF,eAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,mBAAA,EAAqB,WAAU,8DAAA,EACtC,QAAA,EAAA;AAAA,IAAA,SAAA,IAAa,WAAA;AAAA,IACb,CAAC,OAAA,IAAW,CAAC,SAAA,IAAa;AAAA,GAAA,EAC7B,CAAA;AAEJ;;ACdO,SAAS,mBAAmB,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,YAAW,EAA4B;AAC5G,EAAA,MAAM,cAAA,GAAkB,OAAO,WAAA,KAAgB,QAAA,IAAY,cAAc,CAAA,IAAM,OAAA;AAE/E,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWZ,WAAA,CAAG,sEAAsE,CAAA,EACvF,QAAA,EAAA;AAAA,oBAAAY,eAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACCR,cAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,GAAc,WAAA,GAAc,IAAI,GAAA,EAAI;AAAA,KAAA,EAC/C,CAAA;AAAA,IACC,cAAA,oBACCQ,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWZ,WAAA;AAAA,UACT,YAAA;AAAA,UACA,gPAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAO,gBAAgB,QAAA,IAAY,WAAA,GAAc,qBAChDY,eAAA,CAAC,QAAA,EAAA,EAAO,SAAS,UAAA,EACf,QAAA,EAAA;AAAA,4BAAAR,cAAA,CAACW,yBAAA,EAAA,EAAc,CAAA;AAAA,YAAE;AAAA,WAAA,EAEnB,CAAA;AAAA,UAED,OAAA,oBACCH,eAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,UAAA,EAAY,QAAA,EAAA;AAAA,YAAA,MAAA;AAAA,2CAE1BI,0BAAA,EAAA,EAAe;AAAA,WAAA,EAClB;AAAA;AAAA;AAAA;AAEJ,GAAA,EAEJ,CAAA;AAEJ;;ACnCO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsB;AACvE,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWhB,YAAG,2CAAA,EAA6C,SAAS,GAAI,QAAA,EAAS,CAAA;AAC/F;;ACCO,SAAS,WAAA,CAAY,EAAE,UAAA,EAAY,QAAA,EAAU,SAAQ,EAAqB;AAC/E,EAAA,uBACEI,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWJ,WAAA;AAAA,QACT,kJAAA;AAAA,QACA,oCAAA;AAAA,QACA,mJAAA;AAAA,QACA,qFAAA;AAAA,QACA,kCAAA;AAAA,QACAO,kCAAA,CAAY,MAAA;AAAA,QACZ;AAAA,UACE,cAAA,EAAgB,UAAA;AAAA,UAChB,kBAAA,EAAoB;AAAA;AACtB,OACF;AAAA,MACA,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MAEhE;AAAA;AAAA,GACH;AAEJ;;ACdO,SAAS,iBAAA,CAAkB;AAAA,EAChC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,WACAD,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,GAAU,MAAM,EAAE,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,MAAA,mBACJF,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAWJ,WAAA;AAAA,QACT,0DAAA;AAAA,QACAO,kCAAA,CAAY,MAAA;AAAA,QACZC,gCAAA,CAAU,OAAA;AAAA,QACV;AAAA,UACE,aAAA,EAAe,UAAA;AAAA,UACf,mBAAA,EAAqB,IAAA,IAAQ,CAAC,UAAA,IAAc,CAAC;AAAA,SAC/C;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MACjE,QAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAGF,EAAA,IAAIF,SAAA,IAAW,MAAM,OAAO,MAAA;AAE5B,EAAA,uCACGG,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAACM,sBAAA,EAAA,EAAe,QAAQ,MAAA,EAAQ,CAAA;AAAA,oBAChCN,cAAA,CAACO,0BAAgB,QAAA,EAAAL,SAAA,EAAQ;AAAA,GAAA,EAC3B,CAAA;AAEJ;;ACtDA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,KAAA,CAAM,MAAM,CAAC,CAAA;AACtD;AAEO,SAAS,kBAAA,CAAmB,EAAE,MAAA,EAAO,EAA4B;AACtE,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uCACGG,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAL,cAAA,CAACM,sBAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAAN,cAAA,CAAC,SAAI,SAAA,EAAWJ,WAAA,CAAG,sEAAsE,CAAA,EACvF,QAAA,kBAAAI,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWJ,YAAG,qBAAA,EAAuB;AAAA,UACnC,gBAAgB,CAAC,SAAA,EAAW,WAAW,CAAA,CAAE,SAAS,MAAM,CAAA;AAAA,UACxD,cAAc,CAAC,OAAA,EAAS,QAAQ,CAAA,CAAE,SAAS,MAAM,CAAA;AAAA,UACjD,iBAAiB,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,SAAS,MAAM;AAAA,SACxD;AAAA;AAAA,OAEL,CAAA,EACF,CAAA;AAAA,oBACAI,cAAA,CAACO,sBAAA,EAAA,EAAgB,QAAA,EAAA,UAAA,CAAW,MAAM,CAAA,EAAE;AAAA,GAAA,EACtC,CAAA;AAEJ;;ACxBO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,WAAU,EAA0B;AAC1F,EAAA,uBACEP,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWJ,WAAA,CAAG,gDAAA,EAAkD,SAAS,CAAA,EAC3E,QAAA,EAAA,SAAA,mBACCI,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EAAwE,IAEvF,QAAA,EAEJ,CAAA;AAEJ;;ACZO,MAAM,+BAAA,GAAkC;AAAA,EAC7C,MAAA,EAAQ,gBAAA;AAAA,EACR,OAAA,EAAS;AACX;AAEO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,QAAA;AAAA,EACA;AACF,CAAA,EAGuB;AACrB,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,IAAI,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,+BAAA,CAAgC,MAAM,CAAA;AAChE,EAAA,IAAI,SAAA,EAAW,MAAA,CAAO,IAAA,CAAK,+BAAA,CAAgC,OAAO,CAAA;AAClE,EAAA,OAAO,OAAO,MAAA,GAAS,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,GAAI,MAAA;AAClD;AAEO,SAAS,eAAA,CAAgB,EAAE,OAAA,EAAS,EAAA,EAAI,QAAO,EAAsB;AAC1E,EAAA,MAAM,eAAe,OAAA,CAAQ,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AAC/D,EAAA,MAAM,eAAA,GAAkB,YAAA,GAAe,OAAA,CAAQ,MAAA,GAAS,CAAA;AAExD,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,YAAA,GAAe,CAAC,CAAA;AACzC,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,MAAA,CAAO,SAAS,EAAE,CAAA;AAAA,IACpB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,mBAAA,CAAoB,EAAE,OAAA,EAAS,EAAA,EAAI,QAAO,EAAsB;AAC9E,EAAA,MAAM,eAAe,OAAA,CAAQ,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AAC/D,EAAA,MAAM,sBAAsB,YAAA,GAAe,CAAA;AAE3C,EAAA,IAAI,mBAAA,EAAqB;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,GAAe,CAAC,CAAA;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,MAAA,CAAO,aAAa,EAAE,CAAA;AAAA,IACxB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;ACtCO,SAAS,oBAAoB,EAAE,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,WAAU,EAA6B;AACpG,EAAA,uBACEQ,eAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAWZ,WAAA,CAAG,gCAAgC,CAAA,EAC1D,QAAA,EAAA;AAAA,oBAAAY,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWZ,YAAG,uCAAA,EAAyC;AAAA,UACrD,eAAA,EAAiB;AAAA,SAClB,CAAA;AAAA,QAED,QAAA,EAAA;AAAA,0BAAAY,eAAA,CAAC,QAAA,EAAA,EAAO,WAAU,aAAA,EAAc,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,YAAI;AAAA,WAAA,EAAQ,CAAA;AAAA,yCAC3C,IAAA,EAAA,EAAG,SAAA,EAAWZ,WAAA,CAAG,YAAA,EAAc,eAAe,eAAe,CAAA,EAC3D,QAAA,EAAA,IAAA,GAAOG,cAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,mBAAmB,IAAI,IAAA,EACxD;AAAA;AAAA;AAAA,KACF;AAAA,IAAA,CACE,QAAA,IAAY,SAAA,qBACZS,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,QAAA,mCACE,MAAA,EAAA,EAAK,SAAA,EAAU,eAAc,IAAA,EAAK,KAAA,EAAM,cAAY,+BAAA,CAAgC,MAAA,EACnF,yCAACK,WAAA,EAAA,EAAM,OAAA,EAAQ,QAAO,IAAA,EAAK,IAAA,EAAK,sBAAMb,cAAA,CAACc,qBAAA,EAAA,EAAU,GAAI,CAAA,EACvD,CAAA;AAAA,MAED,SAAA,mCACE,MAAA,EAAA,EAAK,SAAA,EAAU,eAAc,IAAA,EAAK,KAAA,EAAM,cAAY,+BAAA,CAAgC,OAAA,EACnF,yCAACD,WAAA,EAAA,EAAM,OAAA,EAAQ,OAAM,IAAA,EAAK,IAAA,EAAK,sBAAMb,cAAA,CAACe,mBAAA,EAAA,EAAQ,GAAI,CAAA,EACpD;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;;ACxBO,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,MAAA,EAAQ,cAAA;AAAA,EACR,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,QAAA,EAAU,qBAAA;AAAA,EACV,GAAA,EAAK,WAAA;AAAA,EACL,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM,YAAA;AAAA,EACN,QAAA,EAAU,gBAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,WAAA,EAAa,mBAAA;AAAA,EACb,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAC;;AChCD,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAOjD,SAAS,qBAAA,CAAsB,EAAE,OAAA,EAAS,YAAA,GAAe,GAAE,EAA+B;AAC/F,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,SAAS,MAAA,IAAU,OAAA,EAAS,UAAU,CAAA,CAAA,IAAM,YAAA,IAAgB,MAAM,MAAA,CAAO,MAAA;AACxF,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,uBACEf,cAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,YAAA,EAAc,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,2BAC5CA,cAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,iBAAA,EAAA,EAAkB,OAAA,EACf,QAAA,EAAA,CAAA,OAAA,IAAW,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,EAAK,MAAA,KAAW;AACpC,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,GAAA,CAAI,IAAI,IAAI,MAAM,CAAA,CAAA;AACjC,IAAA,uBACEA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uEAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,qBAAqB,MAAA,EAAQ,MAAM,CAAC,CAAA,CAAA;AAAG,OAAA;AAAA,MAFrD;AAAA,KAGN;AAAA,EAEL,CAAC,CAAA,EACH,CAAA,EAAA,EAZgB,MAalB,CACD,CAAA,EACH,CAAA;AAEJ;;ACjCO,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAS,YAAA,EAAa,EAA+B;AACtF,EAAA,uCACG,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,cAAA,CAAC,kBAAe,OAAA,EAAkB,CAAA;AAAA,oBAClCA,cAAA,CAAC,qBAAA,EAAA,EAAsB,OAAA,EAAkB,YAAA,EAA4B;AAAA,GAAA,EACvE,CAAA;AAEJ;;;;;;;;;;"}
|
|
@@ -4,10 +4,10 @@ import { isThisYear, format as format$1 } from 'date-fns';
|
|
|
4
4
|
import { format } from 'date-fns/format';
|
|
5
5
|
import { isToday } from 'date-fns/isToday';
|
|
6
6
|
import { useRef } from 'react';
|
|
7
|
+
import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../tooltip-CF30mRAe.js';
|
|
7
8
|
import { focusRing, transitions } from '../primitives/transitions.es.js';
|
|
8
9
|
import { TriangleAlertIcon, InfoIcon, ArrowLeftIcon, ArrowRightIcon, ClockIcon, BanIcon } from 'lucide-react';
|
|
9
|
-
import {
|
|
10
|
-
import { C as Chip } from '../chip-Bg0-95sX.js';
|
|
10
|
+
import { B as Badge } from '../Badge-uGehUtus.js';
|
|
11
11
|
|
|
12
12
|
function ItemListCell({ children, className }) {
|
|
13
13
|
return /* @__PURE__ */ jsx("div", { className: cn("", className), children });
|
|
@@ -71,8 +71,8 @@ function ItemListLabelCell({ children, className }) {
|
|
|
71
71
|
return /* @__PURE__ */ jsx("label", { className: cn("flex h-full w-14 items-center justify-center rounded-lg hover:bg-surface5", className), children });
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
function ItemListLinkCell({ children, href, className, LinkComponent: Link }) {
|
|
75
|
-
|
|
74
|
+
function ItemListLinkCell({ children, href, className, LinkComponent: Link, tooltip }) {
|
|
75
|
+
const link = /* @__PURE__ */ jsx(
|
|
76
76
|
Link,
|
|
77
77
|
{
|
|
78
78
|
href,
|
|
@@ -86,6 +86,11 @@ function ItemListLinkCell({ children, href, className, LinkComponent: Link }) {
|
|
|
86
86
|
children
|
|
87
87
|
}
|
|
88
88
|
);
|
|
89
|
+
if (tooltip == null) return link;
|
|
90
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
91
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { render: link }),
|
|
92
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: tooltip })
|
|
93
|
+
] });
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
function ItemListMessage({ children, message, className, type }) {
|
|
@@ -191,12 +196,13 @@ function ItemListRowButton({
|
|
|
191
196
|
columns,
|
|
192
197
|
className,
|
|
193
198
|
disabled,
|
|
199
|
+
tooltip,
|
|
194
200
|
...props
|
|
195
201
|
}) {
|
|
196
202
|
const handleClick = () => {
|
|
197
203
|
onClick?.(item?.id);
|
|
198
204
|
};
|
|
199
|
-
|
|
205
|
+
const button = /* @__PURE__ */ jsx(
|
|
200
206
|
"button",
|
|
201
207
|
{
|
|
202
208
|
...props,
|
|
@@ -207,7 +213,6 @@ function ItemListRowButton({
|
|
|
207
213
|
focusRing.visible,
|
|
208
214
|
{
|
|
209
215
|
"bg-surface4": isFeatured,
|
|
210
|
-
// hover effect only not for skeleton and featured
|
|
211
216
|
"hover:bg-surface4": item && !isFeatured && !disabled
|
|
212
217
|
},
|
|
213
218
|
className
|
|
@@ -217,6 +222,11 @@ function ItemListRowButton({
|
|
|
217
222
|
children
|
|
218
223
|
}
|
|
219
224
|
);
|
|
225
|
+
if (tooltip == null) return button;
|
|
226
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
227
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { render: button }),
|
|
228
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: tooltip })
|
|
229
|
+
] });
|
|
220
230
|
}
|
|
221
231
|
|
|
222
232
|
function capitalize(value) {
|
|
@@ -245,6 +255,44 @@ function ItemListTextCell({ children, isLoading, className }) {
|
|
|
245
255
|
return /* @__PURE__ */ jsx("div", { className: cn("truncate py-[0.6rem] text-ui-md text-neutral4", className), children: isLoading ? /* @__PURE__ */ jsx("div", { className: "bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none" }) : children });
|
|
246
256
|
}
|
|
247
257
|
|
|
258
|
+
const ITEM_LIST_VERSION_STATUS_LABELS = {
|
|
259
|
+
latest: "Latest version",
|
|
260
|
+
deleted: "Deleted in this version"
|
|
261
|
+
};
|
|
262
|
+
function getItemListVersionStatusLabel({
|
|
263
|
+
isLatest,
|
|
264
|
+
isDeleted
|
|
265
|
+
}) {
|
|
266
|
+
const labels = [];
|
|
267
|
+
if (isLatest) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.latest);
|
|
268
|
+
if (isDeleted) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.deleted);
|
|
269
|
+
return labels.length > 0 ? labels.join(" · ") : void 0;
|
|
270
|
+
}
|
|
271
|
+
function getToNextItemFn({ entries, id, update }) {
|
|
272
|
+
const currentIndex = entries.findIndex((entry) => entry.id === id);
|
|
273
|
+
const thereIsNextItem = currentIndex < entries.length - 1;
|
|
274
|
+
if (thereIsNextItem) {
|
|
275
|
+
return () => {
|
|
276
|
+
const nextItem = entries[currentIndex + 1];
|
|
277
|
+
if (!nextItem) return;
|
|
278
|
+
update(nextItem.id);
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
return void 0;
|
|
282
|
+
}
|
|
283
|
+
function getToPreviousItemFn({ entries, id, update }) {
|
|
284
|
+
const currentIndex = entries.findIndex((entry) => entry.id === id);
|
|
285
|
+
const thereIsPreviousItem = currentIndex > 0;
|
|
286
|
+
if (thereIsPreviousItem) {
|
|
287
|
+
return () => {
|
|
288
|
+
const previousItem = entries[currentIndex - 1];
|
|
289
|
+
if (!previousItem) return;
|
|
290
|
+
update(previousItem.id);
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
return void 0;
|
|
294
|
+
}
|
|
295
|
+
|
|
248
296
|
function ItemListVersionCell({ version, date, isLatest, isDeleted }) {
|
|
249
297
|
return /* @__PURE__ */ jsxs(ItemListCell, { className: cn("grid grid-cols-[1fr_auto] pl-1"), children: [
|
|
250
298
|
/* @__PURE__ */ jsxs(
|
|
@@ -258,19 +306,13 @@ function ItemListVersionCell({ version, date, isLatest, isDeleted }) {
|
|
|
258
306
|
"v. ",
|
|
259
307
|
version
|
|
260
308
|
] }),
|
|
261
|
-
/* @__PURE__ */ jsx("em", { className: "text-ui-sm
|
|
309
|
+
/* @__PURE__ */ jsx("em", { className: cn("text-ui-sm", "font-normal", "text-neutral2"), children: date ? format$1(new Date(date), "MMM d, yyyy HH:mm") : null })
|
|
262
310
|
]
|
|
263
311
|
}
|
|
264
312
|
),
|
|
265
313
|
(isLatest || isDeleted) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
266
|
-
isLatest && /* @__PURE__ */
|
|
267
|
-
|
|
268
|
-
/* @__PURE__ */ jsx(TooltipContent, { children: "Latest version" })
|
|
269
|
-
] }),
|
|
270
|
-
isDeleted && /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
271
|
-
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Chip, { color: "red", children: /* @__PURE__ */ jsx(BanIcon, {}) }) }),
|
|
272
|
-
/* @__PURE__ */ jsx(TooltipContent, { children: "Deleted in this version" })
|
|
273
|
-
] })
|
|
314
|
+
isLatest && /* @__PURE__ */ jsx("span", { className: "inline-flex", role: "img", "aria-label": ITEM_LIST_VERSION_STATUS_LABELS.latest, children: /* @__PURE__ */ jsx(Badge, { variant: "blue", size: "sm", icon: /* @__PURE__ */ jsx(ClockIcon, {}) }) }),
|
|
315
|
+
isDeleted && /* @__PURE__ */ jsx("span", { className: "inline-flex", role: "img", "aria-label": ITEM_LIST_VERSION_STATUS_LABELS.deleted, children: /* @__PURE__ */ jsx(Badge, { variant: "red", size: "sm", icon: /* @__PURE__ */ jsx(BanIcon, {}) }) })
|
|
274
316
|
] })
|
|
275
317
|
] });
|
|
276
318
|
}
|
|
@@ -321,30 +363,5 @@ function ItemListSkeleton({ columns, numberOfRows }) {
|
|
|
321
363
|
] });
|
|
322
364
|
}
|
|
323
365
|
|
|
324
|
-
|
|
325
|
-
const currentIndex = entries.findIndex((entry) => entry.id === id);
|
|
326
|
-
const thereIsNextItem = currentIndex < entries.length - 1;
|
|
327
|
-
if (thereIsNextItem) {
|
|
328
|
-
return () => {
|
|
329
|
-
const nextItem = entries[currentIndex + 1];
|
|
330
|
-
if (!nextItem) return;
|
|
331
|
-
update(nextItem.id);
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
return void 0;
|
|
335
|
-
}
|
|
336
|
-
function getToPreviousItemFn({ entries, id, update }) {
|
|
337
|
-
const currentIndex = entries.findIndex((entry) => entry.id === id);
|
|
338
|
-
const thereIsPreviousItem = currentIndex > 0;
|
|
339
|
-
if (thereIsPreviousItem) {
|
|
340
|
-
return () => {
|
|
341
|
-
const previousItem = entries[currentIndex - 1];
|
|
342
|
-
if (!previousItem) return;
|
|
343
|
-
update(previousItem.id);
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
return void 0;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
export { ItemList, ItemListSkeleton, getItemListColumnTemplate, getToNextItemFn, getToPreviousItemFn };
|
|
366
|
+
export { ITEM_LIST_VERSION_STATUS_LABELS, ItemList, ItemListSkeleton, getItemListColumnTemplate, getItemListVersionStatusLabel, getToNextItemFn, getToPreviousItemFn };
|
|
350
367
|
//# sourceMappingURL=ItemList.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemList.es.js","sources":["../../src/ds/components/ItemList/item-list-cell.tsx","../../src/ds/components/ItemList/item-list-date-cell.tsx","../../src/ds/components/ItemList/shared.tsx","../../src/ds/components/ItemList/item-list-header.tsx","../../src/ds/components/ItemList/item-list-header-col.tsx","../../src/ds/components/ItemList/item-list-id-cell.tsx","../../src/ds/components/ItemList/item-list-items.tsx","../../src/ds/components/ItemList/item-list-items-scroller.tsx","../../src/ds/components/ItemList/item-list-label-cell.tsx","../../src/ds/components/ItemList/item-list-link-cell.tsx","../../src/ds/components/ItemList/item-list-message.tsx","../../src/ds/components/ItemList/item-list-next-page-loading.tsx","../../src/ds/components/ItemList/item-list-pagination.tsx","../../src/ds/components/ItemList/item-list-root.tsx","../../src/ds/components/ItemList/item-list-row.tsx","../../src/ds/components/ItemList/item-list-row-button.tsx","../../src/ds/components/ItemList/item-list-status-cell.tsx","../../src/ds/components/ItemList/item-list-text-cell.tsx","../../src/ds/components/ItemList/item-list-version-cell.tsx","../../src/ds/components/ItemList/item-list.tsx","../../src/ds/components/ItemList/item-list-items-skeleton.tsx","../../src/ds/components/ItemList/item-list-skeleton.tsx","../../src/ds/components/ItemList/helpers.ts"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListCell({ children, className }: ItemListTextCellProps) {\n return <div className={cn('', className)}>{children}</div>;\n}\n","import { isThisYear } from 'date-fns';\nimport { format } from 'date-fns/format';\nimport { isToday } from 'date-fns/isToday';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListDateCellProps = {\n date: Date | string | null;\n className?: string;\n withTime?: boolean;\n};\n\nexport function ItemListDateCell({ date, className, withTime = false }: ItemListDateCellProps) {\n const isThisYearDate = date ? isThisYear(new Date(date)) : false;\n\n const displayDayAndMonth = date ? (isToday(new Date(date)) ? 'Today' : format(new Date(date), 'MMM dd')) : '';\n const displayYear = date && !isThisYearDate ? format(new Date(date), 'yyyy') : '';\n const displayTime = date && withTime ? `${format(new Date(date), \"'at' h:mm aaa\")}` : '';\n\n return (\n <div className={cn('truncate text-ui-md text-neutral2', className)}>\n {displayDayAndMonth} {displayYear} {displayTime}\n </div>\n );\n}\n","import type { ItemListColumn } from './types';\n\nexport function getItemListColumnTemplate(columns?: ItemListColumn[]): string {\n if (!columns || columns.length === 0) {\n return '';\n }\n\n return columns\n ?.map(column => {\n return column.size;\n })\n .join(' ');\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListHeaderProps = {\n columns?: ItemListColumn[];\n isSelectionActive?: boolean;\n children?: React.ReactNode;\n};\n\nexport function ItemListHeader({ columns, isSelectionActive, children }: ItemListHeaderProps) {\n return (\n <div className={cn('sticky top-0 z-10 mb-4 rounded-lg bg-surface3 px-4')}>\n <div\n className={cn('grid items-center gap-4 text-left text-ui-xs tracking-widest text-neutral3 uppercase', {\n 'pl-12 [&>label]:absolute [&>label]:left-0': isSelectionActive,\n })}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListHeaderColProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListHeaderCol({ children, className }: ItemListHeaderColProps) {\n return <span className={cn('py-3', className)}>{children}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListIdCellProps = {\n id: string;\n className?: string;\n isShortened?: boolean;\n};\n\nexport function ItemListIdCell({ id, className, isShortened = true }: ItemListIdCellProps) {\n const displayId = isShortened ? id.slice(0, 8) : id;\n return <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral2', className)}>{displayId}</div>;\n}\n","import React from 'react';\n\nexport type ItemListItemsProps = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItems({ children }: ItemListItemsProps) {\n return <ul className=\"grid content-start\">{children}</ul>;\n}\n","import React, { useRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListItemsScroller = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItemsScroller({ children }: ItemListItemsScroller) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div ref={containerRef} className={cn('overflow-y-auto')}>\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListLabelCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListLabelCell({ children, className }: ItemListLabelCellProps) {\n return (\n <label className={cn('flex h-full w-14 items-center justify-center rounded-lg hover:bg-surface5', className)}>\n {children}\n </label>\n );\n}\n","import { transitions, focusRing } from '@/ds/primitives/transitions';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListLinkCellProps = {\n children?: React.ReactNode;\n className?: string;\n href: string;\n LinkComponent: LinkComponent;\n};\n\nexport function ItemListLinkCell({ children, href, className, LinkComponent: Link }: ItemListLinkCellProps) {\n return (\n <Link\n href={href}\n className={cn(\n 'flex w-full items-center justify-center gap-6 rounded-lg px-3 py-[0.6rem] text-left',\n 'hover:bg-surface4',\n transitions.colors,\n focusRing.visible,\n\n className,\n )}\n >\n {children}\n </Link>\n );\n}\n","import { InfoIcon, TriangleAlertIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListMessageProps = {\n children?: React.ReactNode;\n message?: string;\n className?: string;\n type?: 'info' | 'error';\n};\n\nexport function ItemListMessage({ children, message, className, type }: ItemListMessageProps) {\n if (!children && !message) {\n return null;\n }\n\n return (\n <div className={cn('grid border-t border-border1', className)}>\n {message ? (\n <p\n className={cn(\n 'grid justify-center justify-items-center gap-2 p-8 text-center text-ui-md text-neutral3',\n '[&>svg]:size-[1.5em] [&>svg]:opacity-75',\n {\n '[&>svg]:text-red-500': type === 'error',\n },\n )}\n >\n {type === 'error' ? <TriangleAlertIcon /> : <InfoIcon />} {message}\n </p>\n ) : (\n children\n )}\n </div>\n );\n}\n","export type ItemListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n noMoreDataText?: string;\n};\n\nexport function ItemListNextPageLoading({\n isLoading,\n hasMore,\n setEndOfListElement,\n loadingText = 'Loading more data...',\n noMoreDataText = 'No more data to load',\n}: ItemListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div ref={setEndOfListElement} className=\"text-ui-md text-neutral3 mt-8 flex justify-center opacity-50\">\n {isLoading && loadingText}\n {!hasMore && !isLoading && noMoreDataText}\n </div>\n );\n}\n","import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function ItemListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: ItemListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className={cn('flex items-center justify-center gap-8 pt-6 text-ui-md text-neutral3')}>\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div\n className={cn(\n 'flex gap-4',\n '[&>button]:flex [&>button]:items-center [&>button]:gap-2 [&>button]:rounded-md [&>button]:border [&>button]:border-border1 [&>button]:p-1 [&>button]:px-2 [&>button]:text-neutral4 [&>button]:transition-colors [&>button:hover]:text-neutral5',\n '[&_svg]:size-[1em] [&_svg]:text-neutral3',\n )}\n >\n {typeof currentPage === 'number' && currentPage > 0 && (\n <button onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </button>\n )}\n {hasMore && (\n <button onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListRoot({ children, className }: ItemListRootProps) {\n return <div className={cn('grid grid-rows-[auto_1fr] overflow-y-auto', className)}>{children}</div>;\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowProps = {\n isSelected?: boolean;\n children?: React.ReactNode;\n columns?: ItemListColumn[];\n};\n\nexport function ItemListRow({ isSelected, children, columns }: ItemListRowProps) {\n return (\n <li\n className={cn(\n 'flex overflow-hidden rounded-lg border border-transparent border-t-border1 py-[3px] pb-[2px] text-ui-md text-neutral5 first:border-t-transparent',\n '[&:last-child>button]:rounded-b-lg',\n '[&.selected-row]:border [&.selected-row]:border-dashed [&.selected-row]:border-white/50 [&.selected-row]:pr-[3px] [&.selected-row]:first:border-t',\n '[&:has(+.selected-row)]:rounded-b-none [&:has(+.selected-row)]:border-b-transparent',\n '[.selected-row+&]:rounded-t-none',\n transitions.colors,\n {\n 'selected-row': isSelected,\n 'grid px-4 gap-4 ': columns,\n },\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </li>\n );\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n item?: any;\n isFeatured?: boolean;\n children?: React.ReactNode;\n onClick?: (itemId: string) => void;\n columns?: ItemListColumn[];\n className?: string;\n disabled?: boolean;\n};\n\nexport function ItemListRowButton({\n item,\n isFeatured,\n onClick,\n children,\n columns,\n className,\n disabled,\n ...props\n}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n return (\n <button\n {...props}\n onClick={handleClick}\n className={cn(\n 'grid w-full items-center gap-4 rounded-lg px-4 text-left',\n transitions.colors,\n focusRing.visible,\n {\n 'bg-surface4': isFeatured,\n // hover effect only not for skeleton and featured\n 'hover:bg-surface4': item && !isFeatured && !disabled,\n },\n className,\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n disabled={disabled}\n >\n {children}\n </button>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListStatusCellProps = {\n status?: string;\n};\n\nfunction capitalize(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport function ItemListStatusCell({ status }: ItemListStatusCellProps) {\n if (!status) {\n return null;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={cn('relative flex h-full w-10 items-center justify-center bg-transparent')}>\n <div\n className={cn('size-2 rounded-full', {\n 'bg-green-600': ['success', 'completed'].includes(status),\n 'bg-red-700': ['error', 'failed'].includes(status),\n 'bg-yellow-500': ['pending', 'running'].includes(status),\n })}\n ></div>\n </div>\n </TooltipTrigger>\n <TooltipContent>{capitalize(status)}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function ItemListTextCell({ children, isLoading, className }: ItemListTextCellProps) {\n return (\n <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral4', className)}>\n {isLoading ? (\n <div className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"></div>\n ) : (\n children\n )}\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport { BanIcon, ClockIcon } from 'lucide-react';\nimport { Chip } from '../Chip';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { ItemListCell } from './item-list-cell';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListVersionCellProps = {\n version: string | number;\n date?: Date | string | null;\n isLatest?: boolean;\n isDeleted?: boolean;\n};\n\nexport function ItemListVersionCell({ version, date, isLatest, isDeleted }: ItemListVersionCellProps) {\n return (\n <ItemListCell className={cn('grid grid-cols-[1fr_auto] pl-1')}>\n <div\n className={cn('grid gap-1 leading-none text-neutral3', {\n 'text-neutral4': isLatest,\n })}\n >\n <strong className=\"font-normal\">v. {version}</strong>\n <em className=\"text-ui-sm text-neutral2 font-normal\">\n {date ? format(new Date(date), 'MMM d, yyyy HH:mm') : null}\n </em>\n </div>\n {(isLatest || isDeleted) && (\n <div className=\"flex items-center gap-1\">\n {isLatest && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Chip color=\"blue\">\n <ClockIcon />\n </Chip>\n </TooltipTrigger>\n <TooltipContent>Latest version</TooltipContent>\n </Tooltip>\n )}\n {isDeleted && (\n <Tooltip>\n <TooltipTrigger asChild>\n <Chip color=\"red\">\n <BanIcon />\n </Chip>\n </TooltipTrigger>\n <TooltipContent>Deleted in this version</TooltipContent>\n </Tooltip>\n )}\n </div>\n )}\n </ItemListCell>\n );\n}\n","import { ItemListCell } from './item-list-cell';\nimport { ItemListDateCell } from './item-list-date-cell';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListHeaderCol } from './item-list-header-col';\nimport { ItemListIdCell } from './item-list-id-cell';\nimport { ItemListItems } from './item-list-items';\nimport { ItemListItemsScroller } from './item-list-items-scroller';\nimport { ItemListLabelCell } from './item-list-label-cell';\nimport { ItemListLinkCell } from './item-list-link-cell';\nimport { ItemListMessage } from './item-list-message';\nimport { ItemListNextPageLoading } from './item-list-next-page-loading';\nimport { ItemListPagination } from './item-list-pagination';\nimport { ItemListRoot } from './item-list-root';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport { ItemListStatusCell } from './item-list-status-cell';\nimport { ItemListTextCell } from './item-list-text-cell';\nimport { ItemListVersionCell } from './item-list-version-cell';\n\nexport const ItemList = Object.assign(ItemListRoot, {\n Header: ItemListHeader,\n HeaderCol: ItemListHeaderCol,\n Items: ItemListItems,\n Scroller: ItemListItemsScroller,\n Row: ItemListRow,\n RowButton: ItemListRowButton,\n Message: ItemListMessage,\n NextPageLoading: ItemListNextPageLoading,\n Pagination: ItemListPagination,\n Cell: ItemListCell,\n TextCell: ItemListTextCell,\n StatusCell: ItemListStatusCell,\n VersionCell: ItemListVersionCell,\n IdCell: ItemListIdCell,\n DateCell: ItemListDateCell,\n LinkCell: ItemListLinkCell,\n LabelCell: ItemListLabelCell,\n});\n","import { ItemListItems } from './item-list-items';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport type { ItemListColumn } from './types';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'];\n\nexport type ItemListItemsSkeletonProps = {\n columns?: ItemListColumn[];\n numberOfRows?: number;\n};\n\nexport function ItemListItemsSkeleton({ columns, numberOfRows = 3 }: ItemListItemsSkeletonProps) {\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths.length;\n return widths[index];\n };\n\n return (\n <ItemListItems>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <ItemListRow key={rowIdx}>\n <ItemListRowButton columns={columns}>\n {(columns || []).map((col, colIdx) => {\n const key = `${col.name}-${colIdx}`;\n return (\n <div\n key={key}\n className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"\n style={{ width: `${getPseudoRandomWidth(rowIdx, colIdx)}` }}\n ></div>\n );\n })}\n </ItemListRowButton>\n </ItemListRow>\n ))}\n </ItemListItems>\n );\n}\n","import { ItemList } from './item-list';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListItemsSkeleton } from './item-list-items-skeleton';\nimport type { ItemListItemsSkeletonProps } from './item-list-items-skeleton';\n\nexport function ItemListSkeleton({ columns, numberOfRows }: ItemListItemsSkeletonProps) {\n return (\n <ItemList>\n <ItemListHeader columns={columns} />\n <ItemListItemsSkeleton columns={columns} numberOfRows={numberOfRows} />\n </ItemList>\n );\n}\n","type getToItemFnParams = {\n entries: { id: string }[];\n id: string | undefined;\n update: (id: string) => void;\n};\n\nexport function getToNextItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsNextItem = currentIndex < entries.length - 1;\n\n if (thereIsNextItem) {\n return () => {\n const nextItem = entries[currentIndex + 1];\n if (!nextItem) return;\n update(nextItem.id);\n };\n }\n\n return undefined;\n}\n\nexport function getToPreviousItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsPreviousItem = currentIndex > 0;\n\n if (thereIsPreviousItem) {\n return () => {\n const previousItem = entries[currentIndex - 1];\n if (!previousItem) return;\n update(previousItem.id);\n };\n }\n\n return undefined;\n}\n"],"names":["format"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemList.es.js","sources":["../../src/ds/components/ItemList/item-list-cell.tsx","../../src/ds/components/ItemList/item-list-date-cell.tsx","../../src/ds/components/ItemList/shared.tsx","../../src/ds/components/ItemList/item-list-header.tsx","../../src/ds/components/ItemList/item-list-header-col.tsx","../../src/ds/components/ItemList/item-list-id-cell.tsx","../../src/ds/components/ItemList/item-list-items.tsx","../../src/ds/components/ItemList/item-list-items-scroller.tsx","../../src/ds/components/ItemList/item-list-label-cell.tsx","../../src/ds/components/ItemList/item-list-link-cell.tsx","../../src/ds/components/ItemList/item-list-message.tsx","../../src/ds/components/ItemList/item-list-next-page-loading.tsx","../../src/ds/components/ItemList/item-list-pagination.tsx","../../src/ds/components/ItemList/item-list-root.tsx","../../src/ds/components/ItemList/item-list-row.tsx","../../src/ds/components/ItemList/item-list-row-button.tsx","../../src/ds/components/ItemList/item-list-status-cell.tsx","../../src/ds/components/ItemList/item-list-text-cell.tsx","../../src/ds/components/ItemList/helpers.ts","../../src/ds/components/ItemList/item-list-version-cell.tsx","../../src/ds/components/ItemList/item-list.tsx","../../src/ds/components/ItemList/item-list-items-skeleton.tsx","../../src/ds/components/ItemList/item-list-skeleton.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListCell({ children, className }: ItemListTextCellProps) {\n return <div className={cn('', className)}>{children}</div>;\n}\n","import { isThisYear } from 'date-fns';\nimport { format } from 'date-fns/format';\nimport { isToday } from 'date-fns/isToday';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListDateCellProps = {\n date: Date | string | null;\n className?: string;\n withTime?: boolean;\n};\n\nexport function ItemListDateCell({ date, className, withTime = false }: ItemListDateCellProps) {\n const isThisYearDate = date ? isThisYear(new Date(date)) : false;\n\n const displayDayAndMonth = date ? (isToday(new Date(date)) ? 'Today' : format(new Date(date), 'MMM dd')) : '';\n const displayYear = date && !isThisYearDate ? format(new Date(date), 'yyyy') : '';\n const displayTime = date && withTime ? `${format(new Date(date), \"'at' h:mm aaa\")}` : '';\n\n return (\n <div className={cn('truncate text-ui-md text-neutral2', className)}>\n {displayDayAndMonth} {displayYear} {displayTime}\n </div>\n );\n}\n","import type { ItemListColumn } from './types';\n\nexport function getItemListColumnTemplate(columns?: ItemListColumn[]): string {\n if (!columns || columns.length === 0) {\n return '';\n }\n\n return columns\n ?.map(column => {\n return column.size;\n })\n .join(' ');\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListHeaderProps = {\n columns?: ItemListColumn[];\n isSelectionActive?: boolean;\n children?: React.ReactNode;\n};\n\nexport function ItemListHeader({ columns, isSelectionActive, children }: ItemListHeaderProps) {\n return (\n <div className={cn('sticky top-0 z-10 mb-4 rounded-lg bg-surface3 px-4')}>\n <div\n className={cn('grid items-center gap-4 text-left text-ui-xs tracking-widest text-neutral3 uppercase', {\n 'pl-12 [&>label]:absolute [&>label]:left-0': isSelectionActive,\n })}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </div>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListHeaderColProps = {\n children?: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListHeaderCol({ children, className }: ItemListHeaderColProps) {\n return <span className={cn('py-3', className)}>{children}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListIdCellProps = {\n id: string;\n className?: string;\n isShortened?: boolean;\n};\n\nexport function ItemListIdCell({ id, className, isShortened = true }: ItemListIdCellProps) {\n const displayId = isShortened ? id.slice(0, 8) : id;\n return <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral2', className)}>{displayId}</div>;\n}\n","import React from 'react';\n\nexport type ItemListItemsProps = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItems({ children }: ItemListItemsProps) {\n return <ul className=\"grid content-start\">{children}</ul>;\n}\n","import React, { useRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListItemsScroller = {\n children?: React.ReactNode;\n};\n\nexport function ItemListItemsScroller({ children }: ItemListItemsScroller) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n return (\n <div ref={containerRef} className={cn('overflow-y-auto')}>\n {children}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListLabelCellProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListLabelCell({ children, className }: ItemListLabelCellProps) {\n return (\n <label className={cn('flex h-full w-14 items-center justify-center rounded-lg hover:bg-surface5', className)}>\n {children}\n </label>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListLinkCellProps = {\n children?: React.ReactNode;\n className?: string;\n href: string;\n LinkComponent: LinkComponent;\n tooltip?: React.ReactNode;\n};\n\nexport function ItemListLinkCell({ children, href, className, LinkComponent: Link, tooltip }: ItemListLinkCellProps) {\n const link = (\n <Link\n href={href}\n className={cn(\n 'flex w-full items-center justify-center gap-6 rounded-lg px-3 py-[0.6rem] text-left',\n 'hover:bg-surface4',\n transitions.colors,\n focusRing.visible,\n\n className,\n )}\n >\n {children}\n </Link>\n );\n\n if (tooltip == null) return link;\n\n return (\n <Tooltip>\n <TooltipTrigger render={link} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n","import { InfoIcon, TriangleAlertIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListMessageProps = {\n children?: React.ReactNode;\n message?: string;\n className?: string;\n type?: 'info' | 'error';\n};\n\nexport function ItemListMessage({ children, message, className, type }: ItemListMessageProps) {\n if (!children && !message) {\n return null;\n }\n\n return (\n <div className={cn('grid border-t border-border1', className)}>\n {message ? (\n <p\n className={cn(\n 'grid justify-center justify-items-center gap-2 p-8 text-center text-ui-md text-neutral3',\n '[&>svg]:size-[1.5em] [&>svg]:opacity-75',\n {\n '[&>svg]:text-red-500': type === 'error',\n },\n )}\n >\n {type === 'error' ? <TriangleAlertIcon /> : <InfoIcon />} {message}\n </p>\n ) : (\n children\n )}\n </div>\n );\n}\n","export type ItemListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n noMoreDataText?: string;\n};\n\nexport function ItemListNextPageLoading({\n isLoading,\n hasMore,\n setEndOfListElement,\n loadingText = 'Loading more data...',\n noMoreDataText = 'No more data to load',\n}: ItemListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div ref={setEndOfListElement} className=\"text-ui-md text-neutral3 mt-8 flex justify-center opacity-50\">\n {isLoading && loadingText}\n {!hasMore && !isLoading && noMoreDataText}\n </div>\n );\n}\n","import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nexport type ItemListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function ItemListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: ItemListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className={cn('flex items-center justify-center gap-8 pt-6 text-ui-md text-neutral3')}>\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div\n className={cn(\n 'flex gap-4',\n '[&>button]:flex [&>button]:items-center [&>button]:gap-2 [&>button]:rounded-md [&>button]:border [&>button]:border-border1 [&>button]:p-1 [&>button]:px-2 [&>button]:text-neutral4 [&>button]:transition-colors [&>button:hover]:text-neutral5',\n '[&_svg]:size-[1em] [&_svg]:text-neutral3',\n )}\n >\n {typeof currentPage === 'number' && currentPage > 0 && (\n <button onClick={onPrevPage}>\n <ArrowLeftIcon />\n Previous\n </button>\n )}\n {hasMore && (\n <button onClick={onNextPage}>\n Next\n <ArrowRightIcon />\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRootProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function ItemListRoot({ children, className }: ItemListRootProps) {\n return <div className={cn('grid grid-rows-[auto_1fr] overflow-y-auto', className)}>{children}</div>;\n}\n","import { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowProps = {\n isSelected?: boolean;\n children?: React.ReactNode;\n columns?: ItemListColumn[];\n};\n\nexport function ItemListRow({ isSelected, children, columns }: ItemListRowProps) {\n return (\n <li\n className={cn(\n 'flex overflow-hidden rounded-lg border border-transparent border-t-border1 py-[3px] pb-[2px] text-ui-md text-neutral5 first:border-t-transparent',\n '[&:last-child>button]:rounded-b-lg',\n '[&.selected-row]:border [&.selected-row]:border-dashed [&.selected-row]:border-white/50 [&.selected-row]:pr-[3px] [&.selected-row]:first:border-t',\n '[&:has(+.selected-row)]:rounded-b-none [&:has(+.selected-row)]:border-b-transparent',\n '[.selected-row+&]:rounded-t-none',\n transitions.colors,\n {\n 'selected-row': isSelected,\n 'grid px-4 gap-4 ': columns,\n },\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n >\n {children}\n </li>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip';\nimport { getItemListColumnTemplate } from './shared';\nimport type { ItemListColumn } from './types';\nimport { transitions, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListRowButtonProps = React.ComponentPropsWithoutRef<'button'> & {\n item?: any;\n isFeatured?: boolean;\n children?: React.ReactNode;\n onClick?: (itemId: string) => void;\n columns?: ItemListColumn[];\n className?: string;\n disabled?: boolean;\n tooltip?: React.ReactNode;\n};\n\nexport function ItemListRowButton({\n item,\n isFeatured,\n onClick,\n children,\n columns,\n className,\n disabled,\n tooltip,\n ...props\n}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n const button = (\n <button\n {...props}\n onClick={handleClick}\n className={cn(\n 'grid w-full items-center gap-4 rounded-lg px-4 text-left',\n transitions.colors,\n focusRing.visible,\n {\n 'bg-surface4': isFeatured,\n 'hover:bg-surface4': item && !isFeatured && !disabled,\n },\n className,\n )}\n style={{ gridTemplateColumns: getItemListColumnTemplate(columns) }}\n disabled={disabled}\n >\n {children}\n </button>\n );\n\n if (tooltip == null) return button;\n\n return (\n <Tooltip>\n <TooltipTrigger render={button} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListStatusCellProps = {\n status?: string;\n};\n\nfunction capitalize(value: string): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport function ItemListStatusCell({ status }: ItemListStatusCellProps) {\n if (!status) {\n return null;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <div className={cn('relative flex h-full w-10 items-center justify-center bg-transparent')}>\n <div\n className={cn('size-2 rounded-full', {\n 'bg-green-600': ['success', 'completed'].includes(status),\n 'bg-red-700': ['error', 'failed'].includes(status),\n 'bg-yellow-500': ['pending', 'running'].includes(status),\n })}\n ></div>\n </div>\n </TooltipTrigger>\n <TooltipContent>{capitalize(status)}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type ItemListTextCellProps = {\n children: React.ReactNode;\n isLoading?: boolean;\n className?: string;\n};\n\nexport function ItemListTextCell({ children, isLoading, className }: ItemListTextCellProps) {\n return (\n <div className={cn('truncate py-[0.6rem] text-ui-md text-neutral4', className)}>\n {isLoading ? (\n <div className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"></div>\n ) : (\n children\n )}\n </div>\n );\n}\n","type getToItemFnParams = {\n entries: { id: string }[];\n id: string | undefined;\n update: (id: string) => void;\n};\n\nexport const ITEM_LIST_VERSION_STATUS_LABELS = {\n latest: 'Latest version',\n deleted: 'Deleted in this version',\n} as const;\n\nexport function getItemListVersionStatusLabel({\n isLatest,\n isDeleted,\n}: {\n isLatest?: boolean;\n isDeleted?: boolean;\n}): string | undefined {\n const labels: string[] = [];\n if (isLatest) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.latest);\n if (isDeleted) labels.push(ITEM_LIST_VERSION_STATUS_LABELS.deleted);\n return labels.length > 0 ? labels.join(' · ') : undefined;\n}\n\nexport function getToNextItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsNextItem = currentIndex < entries.length - 1;\n\n if (thereIsNextItem) {\n return () => {\n const nextItem = entries[currentIndex + 1];\n if (!nextItem) return;\n update(nextItem.id);\n };\n }\n\n return undefined;\n}\n\nexport function getToPreviousItemFn({ entries, id, update }: getToItemFnParams) {\n const currentIndex = entries.findIndex(entry => entry.id === id);\n const thereIsPreviousItem = currentIndex > 0;\n\n if (thereIsPreviousItem) {\n return () => {\n const previousItem = entries[currentIndex - 1];\n if (!previousItem) return;\n update(previousItem.id);\n };\n }\n\n return undefined;\n}\n","import { format } from 'date-fns';\nimport { BanIcon, ClockIcon } from 'lucide-react';\nimport { Badge } from '../Badge/Badge';\nimport { ITEM_LIST_VERSION_STATUS_LABELS } from './helpers';\nimport { ItemListCell } from './item-list-cell';\nimport { cn } from '@/lib/utils';\n\nexport type ItemListVersionCellProps = {\n version: string | number;\n date?: Date | string | null;\n isLatest?: boolean;\n isDeleted?: boolean;\n};\n\nexport function ItemListVersionCell({ version, date, isLatest, isDeleted }: ItemListVersionCellProps) {\n return (\n <ItemListCell className={cn('grid grid-cols-[1fr_auto] pl-1')}>\n <div\n className={cn('grid gap-1 leading-none text-neutral3', {\n 'text-neutral4': isLatest,\n })}\n >\n <strong className=\"font-normal\">v. {version}</strong>\n <em className={cn('text-ui-sm', 'font-normal', 'text-neutral2')}>\n {date ? format(new Date(date), 'MMM d, yyyy HH:mm') : null}\n </em>\n </div>\n {(isLatest || isDeleted) && (\n <div className=\"flex items-center gap-1\">\n {isLatest && (\n <span className=\"inline-flex\" role=\"img\" aria-label={ITEM_LIST_VERSION_STATUS_LABELS.latest}>\n <Badge variant=\"blue\" size=\"sm\" icon={<ClockIcon />} />\n </span>\n )}\n {isDeleted && (\n <span className=\"inline-flex\" role=\"img\" aria-label={ITEM_LIST_VERSION_STATUS_LABELS.deleted}>\n <Badge variant=\"red\" size=\"sm\" icon={<BanIcon />} />\n </span>\n )}\n </div>\n )}\n </ItemListCell>\n );\n}\n","import { ItemListCell } from './item-list-cell';\nimport { ItemListDateCell } from './item-list-date-cell';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListHeaderCol } from './item-list-header-col';\nimport { ItemListIdCell } from './item-list-id-cell';\nimport { ItemListItems } from './item-list-items';\nimport { ItemListItemsScroller } from './item-list-items-scroller';\nimport { ItemListLabelCell } from './item-list-label-cell';\nimport { ItemListLinkCell } from './item-list-link-cell';\nimport { ItemListMessage } from './item-list-message';\nimport { ItemListNextPageLoading } from './item-list-next-page-loading';\nimport { ItemListPagination } from './item-list-pagination';\nimport { ItemListRoot } from './item-list-root';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport { ItemListStatusCell } from './item-list-status-cell';\nimport { ItemListTextCell } from './item-list-text-cell';\nimport { ItemListVersionCell } from './item-list-version-cell';\n\nexport const ItemList = Object.assign(ItemListRoot, {\n Header: ItemListHeader,\n HeaderCol: ItemListHeaderCol,\n Items: ItemListItems,\n Scroller: ItemListItemsScroller,\n Row: ItemListRow,\n RowButton: ItemListRowButton,\n Message: ItemListMessage,\n NextPageLoading: ItemListNextPageLoading,\n Pagination: ItemListPagination,\n Cell: ItemListCell,\n TextCell: ItemListTextCell,\n StatusCell: ItemListStatusCell,\n VersionCell: ItemListVersionCell,\n IdCell: ItemListIdCell,\n DateCell: ItemListDateCell,\n LinkCell: ItemListLinkCell,\n LabelCell: ItemListLabelCell,\n});\n","import { ItemListItems } from './item-list-items';\nimport { ItemListRow } from './item-list-row';\nimport { ItemListRowButton } from './item-list-row-button';\nimport type { ItemListColumn } from './types';\n\nconst widths = ['75%', '50%', '65%', '90%', '60%', '80%'];\n\nexport type ItemListItemsSkeletonProps = {\n columns?: ItemListColumn[];\n numberOfRows?: number;\n};\n\nexport function ItemListItemsSkeleton({ columns, numberOfRows = 3 }: ItemListItemsSkeletonProps) {\n const getPseudoRandomWidth = (rowIdx: number, colIdx: number) => {\n const index = (rowIdx + colIdx + (columns?.length || 0) + (numberOfRows || 0)) % widths.length;\n return widths[index];\n };\n\n return (\n <ItemListItems>\n {Array.from({ length: numberOfRows }).map((_, rowIdx) => (\n <ItemListRow key={rowIdx}>\n <ItemListRowButton columns={columns}>\n {(columns || []).map((col, colIdx) => {\n const key = `${col.name}-${colIdx}`;\n return (\n <div\n key={key}\n className=\"bg-surface4 h-4 animate-pulse rounded-md text-transparent select-none\"\n style={{ width: `${getPseudoRandomWidth(rowIdx, colIdx)}` }}\n ></div>\n );\n })}\n </ItemListRowButton>\n </ItemListRow>\n ))}\n </ItemListItems>\n );\n}\n","import { ItemList } from './item-list';\nimport { ItemListHeader } from './item-list-header';\nimport { ItemListItemsSkeleton } from './item-list-items-skeleton';\nimport type { ItemListItemsSkeletonProps } from './item-list-items-skeleton';\n\nexport function ItemListSkeleton({ columns, numberOfRows }: ItemListItemsSkeletonProps) {\n return (\n <ItemList>\n <ItemListHeader columns={columns} />\n <ItemListItemsSkeleton columns={columns} numberOfRows={numberOfRows} />\n </ItemList>\n );\n}\n"],"names":["format"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const logsDataList = require('../logs-data-list-
|
|
6
|
-
const dataListSkeleton = require('../data-list-skeleton-
|
|
5
|
+
const logsDataList = require('../logs-data-list-D88JF2lo.cjs');
|
|
6
|
+
const dataListSkeleton = require('../data-list-skeleton-CONfqzH2.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { L as LogsDataList } from '../logs-data-list-
|
|
2
|
-
export { D as LogsDataListSkeleton } from '../data-list-skeleton-
|
|
1
|
+
export { L as LogsDataList } from '../logs-data-list-DnAXTwr7.js';
|
|
2
|
+
export { D as LogsDataListSkeleton } from '../data-list-skeleton-BCrkk6wG.js';
|
|
3
3
|
//# sourceMappingURL=LogsDataList.es.js.map
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const Badge = require('../../Badge-
|
|
7
|
+
const Badge = require('../../Badge-DcllBqFg.cjs');
|
|
8
8
|
const Button = require('../../Button-DA5XLUon.cjs');
|
|
9
9
|
const input = require('../../input-0R-fQTCF.cjs');
|
|
10
10
|
const utils_cn = require('../../cn-vA5sWo9W.cjs');
|
|
@@ -37,7 +37,7 @@ const AskUserOutput = ({ result, className, ...props }) => /* @__PURE__ */ jsxRu
|
|
|
37
37
|
className: utils_cn.cn("space-y-2 rounded-md bg-surface3 p-3 text-neutral5", result.isError && "text-error", className),
|
|
38
38
|
...props,
|
|
39
39
|
children: [
|
|
40
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { size: "xs", variant: result.isError ? "
|
|
40
|
+
/* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { size: "xs", variant: result.isError ? "red" : "green", children: result.isError ? "Error" : "Answered" }),
|
|
41
41
|
/* @__PURE__ */ jsxRuntime.jsx("p", { children: result.content })
|
|
42
42
|
]
|
|
43
43
|
}
|
|
@@ -61,7 +61,7 @@ const AskUserInput = ({
|
|
|
61
61
|
if (result || isAnswered) {
|
|
62
62
|
return /* @__PURE__ */ jsxRuntime.jsxs(AskUserContainer, { "data-testid": "ask-user", ...props, children: [
|
|
63
63
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-neutral6 mb-2 font-medium", children: payload.question }),
|
|
64
|
-
result ? /* @__PURE__ */ jsxRuntime.jsx(AskUserOutput, { result }) : /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "
|
|
64
|
+
result ? /* @__PURE__ */ jsxRuntime.jsx(AskUserOutput, { result }) : /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "green", children: "Answered" })
|
|
65
65
|
] });
|
|
66
66
|
}
|
|
67
67
|
const submitText = () => {
|