@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.
Files changed (138) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/dist/Badge-DcllBqFg.cjs +125 -0
  3. package/dist/Badge-DcllBqFg.cjs.map +1 -0
  4. package/dist/Badge-uGehUtus.js +123 -0
  5. package/dist/Badge-uGehUtus.js.map +1 -0
  6. package/dist/components/Badge.cjs.js +1 -1
  7. package/dist/components/Badge.es.js +1 -1
  8. package/dist/components/DataList.cjs.js +4 -4
  9. package/dist/components/DataList.es.js +4 -4
  10. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  11. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  12. package/dist/components/ItemList.cjs.js +59 -40
  13. package/dist/components/ItemList.cjs.js.map +1 -1
  14. package/dist/components/ItemList.es.js +58 -41
  15. package/dist/components/ItemList.es.js.map +1 -1
  16. package/dist/components/LogsDataList.cjs.js +2 -2
  17. package/dist/components/LogsDataList.es.js +2 -2
  18. package/dist/components/ai/ask-user.cjs.js +3 -3
  19. package/dist/components/ai/ask-user.cjs.js.map +1 -1
  20. package/dist/components/ai/ask-user.es.js +3 -3
  21. package/dist/components/ai/ask-user.es.js.map +1 -1
  22. package/dist/components/ai/plan.cjs.js +3 -3
  23. package/dist/components/ai/plan.cjs.js.map +1 -1
  24. package/dist/components/ai/plan.es.js +3 -3
  25. package/dist/components/ai/plan.es.js.map +1 -1
  26. package/dist/{data-list-BOI8fRuk.js → data-list-C3tjx5Vb.js} +2 -2
  27. package/dist/{data-list-BOI8fRuk.js.map → data-list-C3tjx5Vb.js.map} +1 -1
  28. package/dist/{data-list-CCacNODd.cjs → data-list-CRDewYj9.cjs} +2 -2
  29. package/dist/{data-list-CCacNODd.cjs.map → data-list-CRDewYj9.cjs.map} +1 -1
  30. package/dist/{data-list-skeleton-DDO_OE14.js → data-list-skeleton-BCrkk6wG.js} +2 -2
  31. package/dist/{data-list-skeleton-DDO_OE14.js.map → data-list-skeleton-BCrkk6wG.js.map} +1 -1
  32. package/dist/{data-list-skeleton-BHBSIQHN.cjs → data-list-skeleton-CONfqzH2.cjs} +2 -2
  33. package/dist/{data-list-skeleton-BHBSIQHN.cjs.map → data-list-skeleton-CONfqzH2.cjs.map} +1 -1
  34. package/dist/{data-list-top-cell-BOXO5s7I.cjs → data-list-top-cell-DAztx3m8.cjs} +6 -1
  35. package/dist/data-list-top-cell-DAztx3m8.cjs.map +1 -0
  36. package/dist/{data-list-top-cell-CC5jjv5s.js → data-list-top-cell-hNkk6S-Q.js} +6 -2
  37. package/dist/data-list-top-cell-hNkk6S-Q.js.map +1 -0
  38. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  39. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  40. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  41. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  42. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  43. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  44. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  45. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  46. package/dist/domains/traces/components/format-hierarchical-spans.cjs.js +2 -1
  47. package/dist/domains/traces/components/format-hierarchical-spans.cjs.js.map +1 -1
  48. package/dist/domains/traces/components/format-hierarchical-spans.es.js +2 -1
  49. package/dist/domains/traces/components/format-hierarchical-spans.es.js.map +1 -1
  50. package/dist/domains/traces/components/timeline-name-col.cjs.js +10 -1
  51. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  52. package/dist/domains/traces/components/timeline-name-col.es.js +10 -1
  53. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  54. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +17 -5
  55. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  56. package/dist/domains/traces/components/trace-data-panel-view.es.js +17 -5
  57. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  58. package/dist/domains/traces/components/traces-list-view.cjs.js +7 -9
  59. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  60. package/dist/domains/traces/components/traces-list-view.es.js +7 -9
  61. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  62. package/dist/domains/traces/hooks/use-trace-search.cjs.js +10 -4
  63. package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
  64. package/dist/domains/traces/hooks/use-trace-search.es.js +10 -4
  65. package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
  66. package/dist/domains/traces/trace-list-columns.cjs.js +1 -1
  67. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  68. package/dist/domains/traces/trace-list-columns.es.js +1 -1
  69. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  70. package/dist/domains/traces/types.cjs.js.map +1 -1
  71. package/dist/domains/traces/types.es.js.map +1 -1
  72. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  73. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  74. package/dist/hooks/use-scroll-to-first-highlight.cjs.js +44 -0
  75. package/dist/hooks/use-scroll-to-first-highlight.cjs.js.map +1 -0
  76. package/dist/hooks/use-scroll-to-first-highlight.d.ts +2 -0
  77. package/dist/hooks/use-scroll-to-first-highlight.es.js +40 -0
  78. package/dist/hooks/use-scroll-to-first-highlight.es.js.map +1 -0
  79. package/dist/hooks/use-text-highlight.cjs.js +49 -2
  80. package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
  81. package/dist/hooks/use-text-highlight.es.js +48 -3
  82. package/dist/hooks/use-text-highlight.es.js.map +1 -1
  83. package/dist/{logs-data-list-Xayqbjw4.cjs → logs-data-list-D88JF2lo.cjs} +2 -2
  84. package/dist/{logs-data-list-Xayqbjw4.cjs.map → logs-data-list-D88JF2lo.cjs.map} +1 -1
  85. package/dist/{logs-data-list-DRXJ89IZ.js → logs-data-list-DnAXTwr7.js} +2 -2
  86. package/dist/{logs-data-list-DRXJ89IZ.js.map → logs-data-list-DnAXTwr7.js.map} +1 -1
  87. package/dist/src/domains/traces/components/format-hierarchical-spans.d.ts +1 -0
  88. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +1 -1
  89. package/dist/src/domains/traces/hooks/use-trace-search.d.ts +7 -0
  90. package/dist/src/domains/traces/types.d.ts +5 -0
  91. package/dist/src/ds/components/Badge/Badge.d.ts +86 -12
  92. package/dist/src/ds/components/Badge/badge.stories.d.ts +3 -0
  93. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +2 -3
  94. package/dist/src/ds/components/DataList/data-list-cells.d.ts +5 -0
  95. package/dist/src/ds/components/ItemList/helpers.d.ts +8 -0
  96. package/dist/src/ds/components/ItemList/item-list-link-cell.d.ts +2 -1
  97. package/dist/src/ds/components/ItemList/item-list-row-button.d.ts +2 -1
  98. package/dist/src/ds/components/ai/plan/plan.d.ts +1 -1
  99. package/dist/src/hooks/use-scroll-to-first-highlight.d.ts +20 -0
  100. package/dist/src/hooks/use-text-highlight.d.ts +18 -0
  101. package/dist/src/test/highlight-api.d.ts +6 -4
  102. package/dist/style.css +364 -219
  103. package/dist/{traces-data-list-BLZgf-Es.cjs → traces-data-list-COksp2d4.cjs} +12 -13
  104. package/dist/traces-data-list-COksp2d4.cjs.map +1 -0
  105. package/dist/{traces-data-list-DmXGwe4Q.js → traces-data-list-c5I-8hwt.js} +12 -13
  106. package/dist/traces-data-list-c5I-8hwt.js.map +1 -0
  107. package/dist/use-text-highlight.css +8 -0
  108. package/package.json +7 -7
  109. package/theme.css +53 -0
  110. package/dist/Badge-BlJpI3fY.cjs +0 -57
  111. package/dist/Badge-BlJpI3fY.cjs.map +0 -1
  112. package/dist/Badge-woV6OD8k.js +0 -55
  113. package/dist/Badge-woV6OD8k.js.map +0 -1
  114. package/dist/chip-9P9t0dvN.cjs +0 -68
  115. package/dist/chip-9P9t0dvN.cjs.map +0 -1
  116. package/dist/chip-Bg0-95sX.js +0 -66
  117. package/dist/chip-Bg0-95sX.js.map +0 -1
  118. package/dist/components/Chip.cjs.js +0 -27
  119. package/dist/components/Chip.cjs.js.map +0 -1
  120. package/dist/components/Chip.d.ts +0 -2
  121. package/dist/components/Chip.es.js +0 -22
  122. package/dist/components/Chip.es.js.map +0 -1
  123. package/dist/components/StatusBadge.cjs.js +0 -76
  124. package/dist/components/StatusBadge.cjs.js.map +0 -1
  125. package/dist/components/StatusBadge.d.ts +0 -2
  126. package/dist/components/StatusBadge.es.js +0 -72
  127. package/dist/components/StatusBadge.es.js.map +0 -1
  128. package/dist/data-list-top-cell-BOXO5s7I.cjs.map +0 -1
  129. package/dist/data-list-top-cell-CC5jjv5s.js.map +0 -1
  130. package/dist/src/ds/components/Chip/chip.d.ts +0 -8
  131. package/dist/src/ds/components/Chip/chip.stories.d.ts +0 -11
  132. package/dist/src/ds/components/Chip/chips-group.d.ts +0 -2
  133. package/dist/src/ds/components/Chip/index.d.ts +0 -2
  134. package/dist/src/ds/components/StatusBadge/StatusBadge.d.ts +0 -13
  135. package/dist/src/ds/components/StatusBadge/index.d.ts +0 -2
  136. package/dist/src/ds/components/StatusBadge/status-badge.stories.d.ts +0 -8
  137. package/dist/traces-data-list-BLZgf-Es.cjs.map +0 -1
  138. 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":"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"}
@@ -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 { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../tooltip-CF30mRAe.js';
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
- return /* @__PURE__ */ jsx(
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
- return /* @__PURE__ */ jsx(
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 text-neutral2 font-normal", children: date ? format$1(new Date(date), "MMM d, yyyy HH:mm") : null })
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__ */ jsxs(Tooltip, { children: [
267
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Chip, { color: "blue", children: /* @__PURE__ */ jsx(ClockIcon, {}) }) }),
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
- function getToNextItemFn({ entries, id, update }) {
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-Xayqbjw4.cjs');
6
- const dataListSkeleton = require('../data-list-skeleton-BHBSIQHN.cjs');
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-DRXJ89IZ.js';
2
- export { D as LogsDataListSkeleton } from '../data-list-skeleton-DDO_OE14.js';
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-BlJpI3fY.cjs');
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 ? "error" : "success", children: result.isError ? "Error" : "Answered" }),
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: "success", children: "Answered" })
64
+ result ? /* @__PURE__ */ jsxRuntime.jsx(AskUserOutput, { result }) : /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "green", children: "Answered" })
65
65
  ] });
66
66
  }
67
67
  const submitText = () => {