@mastra/playground-ui 51.3.0-alpha.3 → 51.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/dist/components/ItemList.cjs.js +3 -1
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +3 -1
- package/dist/components/ItemList.es.js.map +1 -1
- package/dist/components/KeyValueList.cjs.js +2 -2
- package/dist/components/KeyValueList.cjs.js.map +1 -1
- package/dist/components/KeyValueList.es.js +2 -2
- package/dist/components/KeyValueList.es.js.map +1 -1
- package/dist/src/ds/components/ItemList/item-list-row-button.d.ts +2 -2
- package/dist/src/ds/components/KeyValueList/key-value-list.d.ts +2 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# @mastra/playground-ui
|
|
2
2
|
|
|
3
|
+
## 51.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Added `@mastra/playground-ui/components/ai/message-reveal`, which paces a whole assistant message — prose, reasoning, tool rows, cards — on one clock, so its parts arrive in the order the model wrote them. ([#22408](https://github.com/mastra-ai/mastra/pull/22408))
|
|
8
|
+
|
|
9
|
+
Before, a renderer paced its own text with `useRevealedText`, which could only slow prose down: everything written between two passages landed at once, so a tool row appeared while the sentence before it was still being typed out.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { useRevealedParts } from '@mastra/playground-ui/components/ai/message-reveal';
|
|
13
|
+
|
|
14
|
+
const parts = useRevealedParts(message.content.parts, streaming);
|
|
15
|
+
|
|
16
|
+
<MessageFactory message={{ ...message, content: { ...message.content, parts } }} {...renderers} />;
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The projection happens above the renderers, so none of them has to know a reveal is running.
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Search the spans of a trace from the timeline in Studio ([#22456](https://github.com/mastra-ai/mastra/pull/22456))
|
|
24
|
+
|
|
25
|
+
A long trace made you scroll to find the one span you cared about. The trace timeline now has a search field, sitting on the left of the span type legend. Type in it and the timeline narrows to the matching spans.
|
|
26
|
+
|
|
27
|
+
Matching runs over the whole span payload, not a fixed list of fields, so a span is reachable by anything it carries: a tool argument, a model name, an error message, or a value nested deep in its metadata. Field names are searchable too, so you can look for the shape of a payload and not only its content. Matching is case-insensitive, and the work of flattening each span happens once when the trace loads rather than on every keystroke.
|
|
28
|
+
|
|
29
|
+
A matching span is never shown out of context. Its full parent chain stays visible so you can see where it sits in the trace, and its own subtree stays visible too, so searching for a tool call still shows you what that tool call did. The field keeps working whatever order the spans arrive in, a query that matches nothing leaves the field in place so you can undo it, and clearing the field restores the whole trace.
|
|
30
|
+
|
|
31
|
+
- Add a Cmd+Shift+F (Ctrl+Shift+F on Windows/Linux) shortcut to `ListSearch` that focuses and selects the search field, so every Studio list page (agents, tools, workflows, MCP servers, processors, schedules, datasets, experiments, ...) can be filtered without reaching for the mouse. Pass `shortcutDisabled` on a secondary `ListSearch` if a page renders two at once. ([#22461](https://github.com/mastra-ai/mastra/pull/22461))
|
|
32
|
+
|
|
33
|
+
- Load the full trace when a trace is opened in Studio. The trace list keeps using the lightweight ([#22475](https://github.com/mastra-ai/mastra/pull/22475))
|
|
34
|
+
projection, but the trace detail panel, the logs page featured trace and the topics trace panel now
|
|
35
|
+
read `getTrace`, so span input, output, attributes, tags and links are available to the timeline,
|
|
36
|
+
the span panel and trace search instead of being silently missing.
|
|
37
|
+
|
|
38
|
+
- Search terms typed into the trace search field are now highlighted where the matches actually are: on the span names in the timeline tree, and throughout the span side panel, so a match is easy to spot inside a large payload. ([#22475](https://github.com/mastra-ai/mastra/pull/22475))
|
|
39
|
+
|
|
40
|
+
Regions opt in to highlighting rather than opting out, so the chrome around a trace — the panel header, the trace metadata, the tab labels, the span type legend — is never painted, and nothing added later has to remember to exclude itself. Highlighting starts from the second character: a single letter matches almost everywhere and paints noise rather than results.
|
|
41
|
+
|
|
42
|
+
It uses the CSS Custom Highlight API, so no wrapper element is injected: the text stays exactly as rendered, and selection and copy/paste are unaffected. Browsers without the API simply show no highlight.
|
|
43
|
+
|
|
44
|
+
- Added Storybook examples for every published Playground UI component that did not already have coverage. ([#22422](https://github.com/mastra-ai/mastra/pull/22422))
|
|
45
|
+
|
|
46
|
+
- Updated dependencies [[`bae1502`](https://github.com/mastra-ai/mastra/commit/bae150254b06a4da6964d7c137af97f336362359), [`0885364`](https://github.com/mastra-ai/mastra/commit/0885364c2fc7fa31febcfc444fc1ba5231ac1257), [`295e506`](https://github.com/mastra-ai/mastra/commit/295e506b9e6cec99e7181c5f712648888cd9486f), [`b8cb683`](https://github.com/mastra-ai/mastra/commit/b8cb683ba66499df254ddd1f7edd8cae3f89d2e7), [`8c3be07`](https://github.com/mastra-ai/mastra/commit/8c3be0761a862c5c035ed6e5d633de87cbba20e7), [`e28eba7`](https://github.com/mastra-ai/mastra/commit/e28eba73e3c98835be44d8ebc6489cb2499c7c57), [`078affd`](https://github.com/mastra-ai/mastra/commit/078affdaea57ac5e95a77e9e7b197d1878190684), [`9e3403e`](https://github.com/mastra-ai/mastra/commit/9e3403e9868240cb18841898e84cf008ebd7a87e), [`791bf5e`](https://github.com/mastra-ai/mastra/commit/791bf5e81cd27e2e1cff66122f1380ab8a3dda41)]:
|
|
47
|
+
- @mastra/core@1.63.1
|
|
48
|
+
- @mastra/memory@1.28.1
|
|
49
|
+
- @mastra/client-js@1.42.3
|
|
50
|
+
- @mastra/react@1.4.8
|
|
51
|
+
|
|
3
52
|
## 51.3.0-alpha.3
|
|
4
53
|
|
|
5
54
|
### Patch Changes
|
|
@@ -194,7 +194,8 @@ function ItemListRowButton({
|
|
|
194
194
|
children,
|
|
195
195
|
columns,
|
|
196
196
|
className,
|
|
197
|
-
disabled
|
|
197
|
+
disabled,
|
|
198
|
+
...props
|
|
198
199
|
}) {
|
|
199
200
|
const handleClick = () => {
|
|
200
201
|
onClick?.(item?.id);
|
|
@@ -202,6 +203,7 @@ function ItemListRowButton({
|
|
|
202
203
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
203
204
|
"button",
|
|
204
205
|
{
|
|
206
|
+
...props,
|
|
205
207
|
onClick: handleClick,
|
|
206
208
|
className: utils_cn.cn(
|
|
207
209
|
"grid w-full items-center gap-4 rounded-lg px-4 text-left",
|
|
@@ -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 = {\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}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n return (\n <button\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":";;;;;;;;;;;;;;;AAOO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAU,EAA0B;AAC3E,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,EAAA,EAAI,SAAS,GAAI,QAAA,EAAS,CAAA;AACtD;;ACEO,SAAS,iBAAiB,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,GAAW,OAAM,EAA0B;AAC7F,EAAA,MAAM,iBAAiB,IAAA,GAAOC,kBAAA,CAAW,IAAI,IAAA,CAAK,IAAI,CAAC,CAAA,GAAI,KAAA;AAE3D,EAAA,MAAM,kBAAA,GAAqB,IAAA,GAAQC,eAAA,CAAQ,IAAI,KAAK,IAAI,CAAC,CAAA,GAAI,OAAA,GAAUC,cAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,QAAQ,CAAA,GAAK,EAAA;AAC3G,EAAA,MAAM,WAAA,GAAc,IAAA,IAAQ,CAAC,cAAA,GAAiBA,aAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,MAAM,CAAA,GAAI,EAAA;AAC/E,EAAA,MAAM,WAAA,GAAc,IAAA,IAAQ,QAAA,GAAW,CAAA,EAAGA,aAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,eAAe,CAAC,CAAA,CAAA,GAAK,EAAA;AAEtF,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWH,WAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EAC9D,QAAA,EAAA;AAAA,IAAA,kBAAA;AAAA,IAAmB,GAAA;AAAA,IAAE,WAAA;AAAA,IAAY,GAAA;AAAA,IAAE;AAAA,GAAA,EACtC,CAAA;AAEJ;;ACrBO,SAAS,0BAA0B,OAAA,EAAoC;AAC5E,EAAA,IAAI,CAAC,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG;AACpC,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAA,EACH,IAAI,CAAA,MAAA,KAAU;AACd,IAAA,OAAO,MAAA,CAAO,IAAA;AAAA,EAChB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AACb;;ACDO,SAAS,cAAA,CAAe,EAAE,OAAA,EAAS,iBAAA,EAAmB,UAAS,EAAwB;AAC5F,EAAA,uBACEI,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWJ,WAAA,CAAG,oDAAoD,CAAA,EACrE,QAAA,kBAAAI,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWJ,YAAG,uFAAA,EAAyF;AAAA,QACrG,2CAAA,EAA6C;AAAA,OAC9C,CAAA;AAAA,MACD,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MAEhE;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACjBO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA2B;AACjF,EAAA,sCAAQ,MAAA,EAAA,EAAK,SAAA,EAAWA,YAAG,MAAA,EAAQ,SAAS,GAAI,QAAA,EAAS,CAAA;AAC3D;;ACDO,SAAS,eAAe,EAAE,EAAA,EAAI,SAAA,EAAW,WAAA,GAAc,MAAK,EAAwB;AACzF,EAAA,MAAM,YAAY,WAAA,GAAc,EAAA,CAAG,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,GAAI,EAAA;AACjD,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,+CAAA,EAAiD,SAAS,GAAI,QAAA,EAAA,SAAA,EAAU,CAAA;AACpG;;ACLO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAS,EAAuB;AAC9D,EAAA,uBAAOI,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,oBAAA,EAAsB,QAAA,EAAS,CAAA;AACtD;;ACDO,SAAS,qBAAA,CAAsB,EAAE,QAAA,EAAS,EAA0B;AACzE,EAAA,MAAM,YAAA,GAAeC,aAAuB,IAAI,CAAA;AAEhD,EAAA,uBACED,cAAA,CAAC,SAAI,GAAA,EAAK,YAAA,EAAc,WAAWJ,WAAA,CAAG,iBAAiB,GACpD,QAAA,EACH,CAAA;AAEJ;;ACRO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA2B;AACjF,EAAA,sCACG,OAAA,EAAA,EAAM,SAAA,EAAWA,YAAG,2EAAA,EAA6E,SAAS,GACxG,QAAA,EACH,CAAA;AAEJ;;ACFO,SAAS,iBAAiB,EAAE,QAAA,EAAU,MAAM,SAAA,EAAW,aAAA,EAAe,MAAK,EAA0B;AAC1G,EAAA,uBACEI,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,SAAA,EAAWJ,WAAA;AAAA,QACT,qFAAA;AAAA,QACA,mBAAA;AAAA,QACAM,kCAAA,CAAY,MAAA;AAAA,QACZC,gCAAA,CAAU,OAAA;AAAA,QAEV;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;ACjBO,SAAS,gBAAgB,EAAE,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,MAAK,EAAyB;AAC5F,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,OAAA,EAAS;AACzB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAWP,YAAG,8BAAA,EAAgC,SAAS,GACzD,QAAA,EAAA,OAAA,mBACCQ,eAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWR,WAAA;AAAA,QACT,yFAAA;AAAA,QACA,yCAAA;AAAA,QACA;AAAA,UACE,wBAAwB,IAAA,KAAS;AAAA;AACnC,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,OAAA,mBAAUI,cAAA,CAACK,6BAAA,EAAA,EAAkB,CAAA,kCAAMC,oBAAA,EAAA,EAAS,CAAA;AAAA,QAAG,GAAA;AAAA,QAAE;AAAA;AAAA;AAAA,MAG7D,QAAA,EAEJ,CAAA;AAEJ;;AC1BO,SAAS,uBAAA,CAAwB;AAAA,EACtC,SAAA;AAAA,EACA,OAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA,GAAc,sBAAA;AAAA,EACd,cAAA,GAAiB;AACnB,CAAA,EAAiC;AAC/B,EAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEF,eAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,mBAAA,EAAqB,WAAU,8DAAA,EACtC,QAAA,EAAA;AAAA,IAAA,SAAA,IAAa,WAAA;AAAA,IACb,CAAC,OAAA,IAAW,CAAC,SAAA,IAAa;AAAA,GAAA,EAC7B,CAAA;AAEJ;;ACdO,SAAS,mBAAmB,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,EAAY,YAAW,EAA4B;AAC5G,EAAA,MAAM,cAAA,GAAkB,OAAO,WAAA,KAAgB,QAAA,IAAY,cAAc,CAAA,IAAM,OAAA;AAE/E,EAAA,uBACEA,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWR,WAAA,CAAG,sEAAsE,CAAA,EACvF,QAAA,EAAA;AAAA,oBAAAQ,eAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA;AAAA,MAAA,OAAA;AAAA,sBACCJ,cAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,WAAA,GAAc,WAAA,GAAc,IAAI,GAAA,EAAI;AAAA,KAAA,EAC/C,CAAA;AAAA,IACC,cAAA,oBACCI,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWR,WAAA;AAAA,UACT,YAAA;AAAA,UACA,gPAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAO,gBAAgB,QAAA,IAAY,WAAA,GAAc,qBAChDQ,eAAA,CAAC,QAAA,EAAA,EAAO,SAAS,UAAA,EACf,QAAA,EAAA;AAAA,4BAAAJ,cAAA,CAACO,yBAAA,EAAA,EAAc,CAAA;AAAA,YAAE;AAAA,WAAA,EAEnB,CAAA;AAAA,UAED,OAAA,oBACCH,eAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,UAAA,EAAY,QAAA,EAAA;AAAA,YAAA,MAAA;AAAA,2CAE1BI,0BAAA,EAAA,EAAe;AAAA,WAAA,EAClB;AAAA;AAAA;AAAA;AAEJ,GAAA,EAEJ,CAAA;AAEJ;;ACnCO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsB;AACvE,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWZ,YAAG,2CAAA,EAA6C,SAAS,GAAI,QAAA,EAAS,CAAA;AAC/F;;ACCO,SAAS,WAAA,CAAY,EAAE,UAAA,EAAY,QAAA,EAAU,SAAQ,EAAqB;AAC/E,EAAA,uBACEI,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWJ,WAAA;AAAA,QACT,kJAAA;AAAA,QACA,oCAAA;AAAA,QACA,mJAAA;AAAA,QACA,qFAAA;AAAA,QACA,kCAAA;AAAA,QACAM,kCAAA,CAAY,MAAA;AAAA,QACZ;AAAA,UACE,cAAA,EAAgB,UAAA;AAAA,UAChB,kBAAA,EAAoB;AAAA;AACtB,OACF;AAAA,MACA,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MAEhE;AAAA;AAAA,GACH;AAEJ;;AChBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,OAAA,GAAU,MAAM,EAAE,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,uBACEF,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAWJ,WAAA;AAAA,QACT,0DAAA;AAAA,QACAM,kCAAA,CAAY,MAAA;AAAA,QACZC,gCAAA,CAAU,OAAA;AAAA,QACV;AAAA,UACE,aAAA,EAAe,UAAA;AAAA;AAAA,UAEf,mBAAA,EAAqB,IAAA,IAAQ,CAAC,UAAA,IAAc,CAAC;AAAA,SAC/C;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO,EAAE,mBAAA,EAAqB,yBAAA,CAA0B,OAAO,CAAA,EAAE;AAAA,MACjE,QAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;ACzCA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,OAAO,KAAA,CAAM,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,KAAA,CAAM,MAAM,CAAC,CAAA;AACtD;AAEO,SAAS,kBAAA,CAAmB,EAAE,MAAA,EAAO,EAA4B;AACtE,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uCACGM,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAT,cAAA,CAACU,sBAAA,EAAA,EAAe,SAAO,IAAA,EACrB,QAAA,kBAAAV,cAAA,CAAC,SAAI,SAAA,EAAWJ,WAAA,CAAG,sEAAsE,CAAA,EACvF,QAAA,kBAAAI,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWJ,YAAG,qBAAA,EAAuB;AAAA,UACnC,gBAAgB,CAAC,SAAA,EAAW,WAAW,CAAA,CAAE,SAAS,MAAM,CAAA;AAAA,UACxD,cAAc,CAAC,OAAA,EAAS,QAAQ,CAAA,CAAE,SAAS,MAAM,CAAA;AAAA,UACjD,iBAAiB,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,SAAS,MAAM;AAAA,SACxD;AAAA;AAAA,OAEL,CAAA,EACF,CAAA;AAAA,oBACAI,cAAA,CAACW,sBAAA,EAAA,EAAgB,QAAA,EAAA,UAAA,CAAW,MAAM,CAAA,EAAE;AAAA,GAAA,EACtC,CAAA;AAEJ;;ACxBO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,SAAA,EAAW,WAAU,EAA0B;AAC1F,EAAA,uBACEX,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWJ,WAAA,CAAG,gDAAA,EAAkD,SAAS,CAAA,EAC3E,QAAA,EAAA,SAAA,mBACCI,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uEAAA,EAAwE,IAEvF,QAAA,EAEJ,CAAA;AAEJ;;ACJO,SAAS,oBAAoB,EAAE,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,WAAU,EAA6B;AACpG,EAAA,uBACEI,eAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAWR,WAAA,CAAG,gCAAgC,CAAA,EAC1D,QAAA,EAAA;AAAA,oBAAAQ,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWR,YAAG,uCAAA,EAAyC;AAAA,UACrD,eAAA,EAAiB;AAAA,SAClB,CAAA;AAAA,QAED,QAAA,EAAA;AAAA,0BAAAQ,eAAA,CAAC,QAAA,EAAA,EAAO,WAAU,aAAA,EAAc,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,YAAI;AAAA,WAAA,EAAQ,CAAA;AAAA,0BAC5CJ,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sCAAA,EACX,QAAA,EAAA,IAAA,GAAOD,cAAA,CAAO,IAAI,IAAA,CAAK,IAAI,CAAA,EAAG,mBAAmB,CAAA,GAAI,IAAA,EACxD;AAAA;AAAA;AAAA,KACF;AAAA,IAAA,CACE,QAAA,IAAY,SAAA,qBACZK,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,QAAA,oCACEK,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAT,cAAA,CAACU,sBAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAV,cAAA,CAACY,SAAA,EAAA,EAAK,OAAM,MAAA,EACV,QAAA,kBAAAZ,cAAA,CAACa,qBAAA,EAAA,EAAU,CAAA,EACb,CAAA,EACF,CAAA;AAAA,wBACAb,cAAA,CAACW,0BAAe,QAAA,EAAA,gBAAA,EAAc;AAAA,OAAA,EAChC,CAAA;AAAA,MAED,SAAA,oCACEF,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAT,cAAA,CAACU,sBAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAV,cAAA,CAACY,SAAA,EAAA,EAAK,OAAM,KAAA,EACV,QAAA,kBAAAZ,cAAA,CAACc,mBAAA,EAAA,EAAQ,CAAA,EACX,CAAA,EACF,CAAA;AAAA,wBACAd,cAAA,CAACW,0BAAe,QAAA,EAAA,yBAAA,EAAuB;AAAA,OAAA,EACzC;AAAA,KAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ;;AClCO,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc;AAAA,EAClD,MAAA,EAAQ,cAAA;AAAA,EACR,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,aAAA;AAAA,EACP,QAAA,EAAU,qBAAA;AAAA,EACV,GAAA,EAAK,WAAA;AAAA,EACL,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,UAAA,EAAY,kBAAA;AAAA,EACZ,IAAA,EAAM,YAAA;AAAA,EACN,QAAA,EAAU,gBAAA;AAAA,EACV,UAAA,EAAY,kBAAA;AAAA,EACZ,WAAA,EAAa,mBAAA;AAAA,EACb,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,SAAA,EAAW;AACb,CAAC;;AChCD,MAAM,SAAS,CAAC,KAAA,EAAO,OAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAOjD,SAAS,qBAAA,CAAsB,EAAE,OAAA,EAAS,YAAA,GAAe,GAAE,EAA+B;AAC/F,EAAA,MAAM,oBAAA,GAAuB,CAAC,MAAA,EAAgB,MAAA,KAAmB;AAC/D,IAAA,MAAM,KAAA,GAAA,CAAS,SAAS,MAAA,IAAU,OAAA,EAAS,UAAU,CAAA,CAAA,IAAM,YAAA,IAAgB,MAAM,MAAA,CAAO,MAAA;AACxF,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,uBACEX,cAAA,CAAC,aAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,YAAA,EAAc,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,2BAC5CA,cAAA,CAAC,WAAA,EAAA,EACC,QAAA,kBAAAA,cAAA,CAAC,iBAAA,EAAA,EAAkB,OAAA,EACf,QAAA,EAAA,CAAA,OAAA,IAAW,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,EAAK,MAAA,KAAW;AACpC,IAAA,MAAM,GAAA,GAAM,CAAA,EAAG,GAAA,CAAI,IAAI,IAAI,MAAM,CAAA,CAAA;AACjC,IAAA,uBACEA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAU,uEAAA;AAAA,QACV,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,qBAAqB,MAAA,EAAQ,MAAM,CAAC,CAAA,CAAA;AAAG,OAAA;AAAA,MAFrD;AAAA,KAGN;AAAA,EAEL,CAAC,CAAA,EACH,CAAA,EAAA,EAZgB,MAalB,CACD,CAAA,EACH,CAAA;AAEJ;;ACjCO,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAS,YAAA,EAAa,EAA+B;AACtF,EAAA,uCACG,QAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,cAAA,CAAC,kBAAe,OAAA,EAAkB,CAAA;AAAA,oBAClCA,cAAA,CAAC,qBAAA,EAAA,EAAsB,OAAA,EAAkB,YAAA,EAA4B;AAAA,GAAA,EACvE,CAAA;AAEJ;;ACNO,SAAS,eAAA,CAAgB,EAAE,OAAA,EAAS,EAAA,EAAI,QAAO,EAAsB;AAC1E,EAAA,MAAM,eAAe,OAAA,CAAQ,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AAC/D,EAAA,MAAM,eAAA,GAAkB,YAAA,GAAe,OAAA,CAAQ,MAAA,GAAS,CAAA;AAExD,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,YAAA,GAAe,CAAC,CAAA;AACzC,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,MAAA,CAAO,SAAS,EAAE,CAAA;AAAA,IACpB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,mBAAA,CAAoB,EAAE,OAAA,EAAS,EAAA,EAAI,QAAO,EAAsB;AAC9E,EAAA,MAAM,eAAe,OAAA,CAAQ,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,CAAM,OAAO,EAAE,CAAA;AAC/D,EAAA,MAAM,sBAAsB,YAAA,GAAe,CAAA;AAE3C,EAAA,IAAI,mBAAA,EAAqB;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,YAAA,GAAe,CAAC,CAAA;AAC7C,MAAA,IAAI,CAAC,YAAA,EAAc;AACnB,MAAA,MAAA,CAAO,aAAa,EAAE,CAAA;AAAA,IACxB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;;;;;;"}
|
|
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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"}
|
|
@@ -190,7 +190,8 @@ function ItemListRowButton({
|
|
|
190
190
|
children,
|
|
191
191
|
columns,
|
|
192
192
|
className,
|
|
193
|
-
disabled
|
|
193
|
+
disabled,
|
|
194
|
+
...props
|
|
194
195
|
}) {
|
|
195
196
|
const handleClick = () => {
|
|
196
197
|
onClick?.(item?.id);
|
|
@@ -198,6 +199,7 @@ function ItemListRowButton({
|
|
|
198
199
|
return /* @__PURE__ */ jsx(
|
|
199
200
|
"button",
|
|
200
201
|
{
|
|
202
|
+
...props,
|
|
201
203
|
onClick: handleClick,
|
|
202
204
|
className: cn(
|
|
203
205
|
"grid w-full items-center gap-4 rounded-lg px-4 text-left",
|
|
@@ -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 = {\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}: ItemListRowButtonProps) {\n const handleClick = () => {\n onClick?.(item?.id);\n };\n\n return (\n <button\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/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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"}
|
|
@@ -16,7 +16,7 @@ function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkCompone
|
|
|
16
16
|
if (!data || data.length === 0) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
return /* @__PURE__ */ jsxRuntime.jsx("dl", { className: utils_cn.cn("grid grid-cols-[auto_1fr] content-start items-start gap-x-4", className), children: data.map(({ label, value, icon, separator }, index) => {
|
|
19
|
+
return /* @__PURE__ */ jsxRuntime.jsx("dl", { className: utils_cn.cn("grid grid-cols-[auto_1fr] content-start items-start gap-x-4", className), children: data.map(({ key, label, value, icon, separator }, index) => {
|
|
20
20
|
const isValueItemArray = Array.isArray(value);
|
|
21
21
|
return /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
|
|
22
22
|
/* @__PURE__ */ jsxRuntime.jsxs("dt", { className: utils_cn.cn("flex min-h-9 items-center justify-between gap-8 text-ui-md text-neutral3"), children: [
|
|
@@ -74,7 +74,7 @@ function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkCompone
|
|
|
74
74
|
}) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: value ? value : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-sm text-neutral3", children: "n/a" }) })
|
|
75
75
|
}
|
|
76
76
|
)
|
|
77
|
-
] },
|
|
77
|
+
] }, key ?? index);
|
|
78
78
|
}) });
|
|
79
79
|
}
|
|
80
80
|
function RelationWrapper({ description, children }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyValueList.cjs.js","sources":["../../src/ds/components/KeyValueList/key-value-list.tsx"],"sourcesContent":["import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type KeyValueListItemValue = {\n id: string;\n name: React.ReactNode;\n path?: string;\n description?: React.ReactNode;\n};\n\nexport type KeyValueListItemData = {\n key: string;\n label:
|
|
1
|
+
{"version":3,"file":"KeyValueList.cjs.js","sources":["../../src/ds/components/KeyValueList/key-value-list.tsx"],"sourcesContent":["import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type KeyValueListItemValue = {\n id: string;\n name: React.ReactNode;\n path?: string;\n description?: React.ReactNode;\n};\n\nexport type KeyValueListItemData = {\n key: string;\n /** Plain text in most cases; a node when the label itself is interactive (e.g. a link). */\n label: React.ReactNode;\n value: Value;\n icon?: React.ReactNode;\n separator?: React.ReactNode;\n};\n\ntype Value = React.ReactNode | KeyValueListItemValue[];\nexport type KeyValueListProps = {\n data: KeyValueListItemData[];\n labelsAreHidden?: boolean;\n className?: string;\n isLoading?: boolean;\n LinkComponent?: LinkComponent;\n};\n\nexport function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkComponent: Link }: KeyValueListProps) {\n const LabelWrapper = ({ children }: { children: React.ReactNode }) => {\n return labelsAreHidden ? <VisuallyHidden>{children}</VisuallyHidden> : children;\n };\n\n if (!data || data.length === 0) {\n return null;\n }\n\n return (\n <dl className={cn('grid grid-cols-[auto_1fr] content-start items-start gap-x-4', className)}>\n {data.map(({ key, label, value, icon, separator }, index) => {\n const isValueItemArray = Array.isArray(value);\n\n return (\n <React.Fragment key={key ?? index}>\n <dt className={cn('flex min-h-9 items-center justify-between gap-8 text-ui-md text-neutral3')}>\n <span\n className={cn(\n 'flex items-center gap-2',\n '[&>svg]:size-[1.4em] [&>svg]:text-neutral3 [&>svg]:opacity-50',\n {\n '[&>svg]:opacity-20': isLoading,\n },\n )}\n >\n {icon} <LabelWrapper>{label}</LabelWrapper>\n </span>\n {!labelsAreHidden && (\n <span className={cn('text-neutral3', '[&>svg]:size-[1em] [&>svg]:text-neutral3')}>{separator}</span>\n )}\n </dt>\n <dd\n className={cn(\n 'flex min-h-9 flex-wrap items-center gap-2 py-1 text-ui-md text-wrap text-neutral5',\n 'truncate [&>a]:flex [&>a]:min-h-7 [&>a]:w-auto [&>a]:max-w-full [&>a]:items-center [&>a]:gap-2 [&>a]:rounded-md [&>a]:bg-surface4 [&>a]:px-2 [&>a]:py-0.5 [&>a]:text-ui-md [&>a]:leading-none [&>a]:text-neutral5 [&>a]:transition-colors',\n '[&>a:hover]:bg-surface6 [&>a:hover]:text-neutral6',\n '[&>a>svg]:ml-[-0.5em] [&>a>svg]:size-[1em] [&>a>svg]:text-neutral3',\n )}\n >\n {isLoading ? (\n <span\n className={cn('w-full rounded-e-lg bg-surface4')}\n style={{ width: `${Math.floor(Math.random() * (90 - 30 + 1)) + 50}%` }}\n >\n \n </span>\n ) : isValueItemArray ? (\n value?.map(item => {\n if (item.path && Link) {\n return (\n <RelationWrapper description={item.description} key={item.id}>\n <Link href={item.path}>\n {item?.name} <ChevronRightIcon />\n </Link>\n </RelationWrapper>\n );\n }\n if (item.path) {\n return (\n <RelationWrapper description={item.description} key={item.id}>\n <a href={item.path}>\n {item?.name} <ChevronRightIcon />\n </a>\n </RelationWrapper>\n );\n }\n return <span key={item.id}>{item?.name}</span>;\n })\n ) : (\n <>{value ? value : <span className=\"text-ui-sm text-neutral3\">n/a</span>}</>\n )}\n </dd>\n </React.Fragment>\n );\n })}\n </dl>\n );\n}\n\ntype RelationWrapperProps = {\n description?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nfunction RelationWrapper({ description, children }: RelationWrapperProps) {\n return description ? (\n <HoverCard>\n <HoverCardTrigger render={React.isValidElement(children) ? (children as React.ReactElement) : undefined} />\n <HoverCardContent className=\"max-w-60 text-center\">{description}</HoverCardContent>\n </HoverCard>\n ) : (\n children\n );\n}\n"],"names":["jsx","VisuallyHidden","cn","jsxs","ChevronRightIcon","Fragment","HoverCard","HoverCardTrigger","HoverCardContent"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkCompone
|
|
|
12
12
|
if (!data || data.length === 0) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
return /* @__PURE__ */ jsx("dl", { className: cn("grid grid-cols-[auto_1fr] content-start items-start gap-x-4", className), children: data.map(({ label, value, icon, separator }, index) => {
|
|
15
|
+
return /* @__PURE__ */ jsx("dl", { className: cn("grid grid-cols-[auto_1fr] content-start items-start gap-x-4", className), children: data.map(({ key, label, value, icon, separator }, index) => {
|
|
16
16
|
const isValueItemArray = Array.isArray(value);
|
|
17
17
|
return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
|
|
18
18
|
/* @__PURE__ */ jsxs("dt", { className: cn("flex min-h-9 items-center justify-between gap-8 text-ui-md text-neutral3"), children: [
|
|
@@ -70,7 +70,7 @@ function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkCompone
|
|
|
70
70
|
}) : /* @__PURE__ */ jsx(Fragment, { children: value ? value : /* @__PURE__ */ jsx("span", { className: "text-ui-sm text-neutral3", children: "n/a" }) })
|
|
71
71
|
}
|
|
72
72
|
)
|
|
73
|
-
] },
|
|
73
|
+
] }, key ?? index);
|
|
74
74
|
}) });
|
|
75
75
|
}
|
|
76
76
|
function RelationWrapper({ description, children }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyValueList.es.js","sources":["../../src/ds/components/KeyValueList/key-value-list.tsx"],"sourcesContent":["import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type KeyValueListItemValue = {\n id: string;\n name: React.ReactNode;\n path?: string;\n description?: React.ReactNode;\n};\n\nexport type KeyValueListItemData = {\n key: string;\n label:
|
|
1
|
+
{"version":3,"file":"KeyValueList.es.js","sources":["../../src/ds/components/KeyValueList/key-value-list.tsx"],"sourcesContent":["import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type KeyValueListItemValue = {\n id: string;\n name: React.ReactNode;\n path?: string;\n description?: React.ReactNode;\n};\n\nexport type KeyValueListItemData = {\n key: string;\n /** Plain text in most cases; a node when the label itself is interactive (e.g. a link). */\n label: React.ReactNode;\n value: Value;\n icon?: React.ReactNode;\n separator?: React.ReactNode;\n};\n\ntype Value = React.ReactNode | KeyValueListItemValue[];\nexport type KeyValueListProps = {\n data: KeyValueListItemData[];\n labelsAreHidden?: boolean;\n className?: string;\n isLoading?: boolean;\n LinkComponent?: LinkComponent;\n};\n\nexport function KeyValueList({ data, className, labelsAreHidden, isLoading, LinkComponent: Link }: KeyValueListProps) {\n const LabelWrapper = ({ children }: { children: React.ReactNode }) => {\n return labelsAreHidden ? <VisuallyHidden>{children}</VisuallyHidden> : children;\n };\n\n if (!data || data.length === 0) {\n return null;\n }\n\n return (\n <dl className={cn('grid grid-cols-[auto_1fr] content-start items-start gap-x-4', className)}>\n {data.map(({ key, label, value, icon, separator }, index) => {\n const isValueItemArray = Array.isArray(value);\n\n return (\n <React.Fragment key={key ?? index}>\n <dt className={cn('flex min-h-9 items-center justify-between gap-8 text-ui-md text-neutral3')}>\n <span\n className={cn(\n 'flex items-center gap-2',\n '[&>svg]:size-[1.4em] [&>svg]:text-neutral3 [&>svg]:opacity-50',\n {\n '[&>svg]:opacity-20': isLoading,\n },\n )}\n >\n {icon} <LabelWrapper>{label}</LabelWrapper>\n </span>\n {!labelsAreHidden && (\n <span className={cn('text-neutral3', '[&>svg]:size-[1em] [&>svg]:text-neutral3')}>{separator}</span>\n )}\n </dt>\n <dd\n className={cn(\n 'flex min-h-9 flex-wrap items-center gap-2 py-1 text-ui-md text-wrap text-neutral5',\n 'truncate [&>a]:flex [&>a]:min-h-7 [&>a]:w-auto [&>a]:max-w-full [&>a]:items-center [&>a]:gap-2 [&>a]:rounded-md [&>a]:bg-surface4 [&>a]:px-2 [&>a]:py-0.5 [&>a]:text-ui-md [&>a]:leading-none [&>a]:text-neutral5 [&>a]:transition-colors',\n '[&>a:hover]:bg-surface6 [&>a:hover]:text-neutral6',\n '[&>a>svg]:ml-[-0.5em] [&>a>svg]:size-[1em] [&>a>svg]:text-neutral3',\n )}\n >\n {isLoading ? (\n <span\n className={cn('w-full rounded-e-lg bg-surface4')}\n style={{ width: `${Math.floor(Math.random() * (90 - 30 + 1)) + 50}%` }}\n >\n \n </span>\n ) : isValueItemArray ? (\n value?.map(item => {\n if (item.path && Link) {\n return (\n <RelationWrapper description={item.description} key={item.id}>\n <Link href={item.path}>\n {item?.name} <ChevronRightIcon />\n </Link>\n </RelationWrapper>\n );\n }\n if (item.path) {\n return (\n <RelationWrapper description={item.description} key={item.id}>\n <a href={item.path}>\n {item?.name} <ChevronRightIcon />\n </a>\n </RelationWrapper>\n );\n }\n return <span key={item.id}>{item?.name}</span>;\n })\n ) : (\n <>{value ? value : <span className=\"text-ui-sm text-neutral3\">n/a</span>}</>\n )}\n </dd>\n </React.Fragment>\n );\n })}\n </dl>\n );\n}\n\ntype RelationWrapperProps = {\n description?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nfunction RelationWrapper({ description, children }: RelationWrapperProps) {\n return description ? (\n <HoverCard>\n <HoverCardTrigger render={React.isValidElement(children) ? (children as React.ReactElement) : undefined} />\n <HoverCardContent className=\"max-w-60 text-center\">{description}</HoverCardContent>\n </HoverCard>\n ) : (\n children\n );\n}\n"],"names":["React"],"mappings":";;;;;;;AAgCO,SAAS,YAAA,CAAa,EAAE,IAAA,EAAM,SAAA,EAAW,iBAAiB,SAAA,EAAW,aAAA,EAAe,MAAK,EAAsB;AACpH,EAAA,MAAM,YAAA,GAAe,CAAC,EAAE,QAAA,EAAS,KAAqC;AACpE,IAAA,OAAO,eAAA,mBAAkB,GAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAS,CAAA,GAAoB,QAAA;AAAA,EACzE,CAAA;AAEA,EAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,2BACG,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,6DAAA,EAA+D,SAAS,CAAA,EACvF,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,EAAE,GAAA,EAAK,KAAA,EAAO,OAAO,IAAA,EAAM,SAAA,IAAa,KAAA,KAAU;AAC3D,IAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AAE5C,IAAA,uBACE,IAAA,CAACA,cAAA,CAAM,QAAA,EAAN,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,0EAA0E,CAAA,EAC1F,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,yBAAA;AAAA,cACA,+DAAA;AAAA,cACA;AAAA,gBACE,oBAAA,EAAsB;AAAA;AACxB,aACF;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,IAAA;AAAA,cAAK,GAAA;AAAA,8BAAC,GAAA,CAAC,gBAAc,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA,SAC9B;AAAA,QACC,CAAC,mCACA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,eAAA,EAAiB,0CAA0C,CAAA,EAAI,QAAA,EAAA,SAAA,EAAU;AAAA,OAAA,EAEjG,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,mFAAA;AAAA,YACA,2OAAA;AAAA,YACA,mDAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEC,QAAA,EAAA,SAAA,mBACC,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,GAAG,iCAAiC,CAAA;AAAA,cAC/C,KAAA,EAAO,EAAE,KAAA,EAAO,CAAA,EAAG,KAAK,KAAA,CAAM,IAAA,CAAK,MAAA,EAAO,IAAK,EAAA,GAAK,EAAA,GAAK,CAAA,CAAE,CAAA,GAAI,EAAE,CAAA,CAAA,CAAA,EAAI;AAAA,cACtE,QAAA,EAAA;AAAA;AAAA,WAED,GACE,gBAAA,GACF,KAAA,EAAO,GAAA,CAAI,CAAA,IAAA,KAAQ;AACjB,YAAA,IAAI,IAAA,CAAK,QAAQ,IAAA,EAAM;AACrB,cAAA,uBACE,GAAA,CAAC,mBAAgB,WAAA,EAAa,IAAA,CAAK,aACjC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,IAAA,CAAK,IAAA,EACd,QAAA,EAAA;AAAA,gBAAA,IAAA,EAAM,IAAA;AAAA,gBAAK,GAAA;AAAA,oCAAE,gBAAA,EAAA,EAAiB;AAAA,eAAA,EACjC,CAAA,EAAA,EAHmD,KAAK,EAI1D,CAAA;AAAA,YAEJ;AACA,YAAA,IAAI,KAAK,IAAA,EAAM;AACb,cAAA,uBACE,GAAA,CAAC,mBAAgB,WAAA,EAAa,IAAA,CAAK,aACjC,QAAA,kBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EACX,QAAA,EAAA;AAAA,gBAAA,IAAA,EAAM,IAAA;AAAA,gBAAK,GAAA;AAAA,oCAAE,gBAAA,EAAA,EAAiB;AAAA,eAAA,EACjC,CAAA,EAAA,EAHmD,KAAK,EAI1D,CAAA;AAAA,YAEJ;AACA,YAAA,uBAAO,GAAA,CAAC,MAAA,EAAA,EAAoB,QAAA,EAAA,IAAA,EAAM,IAAA,EAAA,EAAhB,KAAK,EAAgB,CAAA;AAAA,UACzC,CAAC,CAAA,mBAED,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,KAAA,GAAQ,KAAA,uBAAS,MAAA,EAAA,EAAK,SAAA,EAAU,0BAAA,EAA2B,QAAA,EAAA,KAAA,EAAG,CAAA,EAAQ;AAAA;AAAA;AAE7E,KAAA,EAAA,EAzDmB,OAAO,KA0D5B,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAOA,SAAS,eAAA,CAAgB,EAAE,WAAA,EAAa,QAAA,EAAS,EAAyB;AACxE,EAAA,OAAO,WAAA,wBACJ,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,oBAAiB,MAAA,EAAQA,cAAA,CAAM,eAAe,QAAQ,CAAA,GAAK,WAAkC,MAAA,EAAW,CAAA;AAAA,oBACzG,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,WAAA,EAAY;AAAA,GAAA,EAClE,CAAA,GAEA,QAAA;AAEJ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ItemListColumn } from './types';
|
|
2
|
-
export type ItemListRowButtonProps = {
|
|
2
|
+
export type ItemListRowButtonProps = React.ComponentPropsWithoutRef<'button'> & {
|
|
3
3
|
item?: any;
|
|
4
4
|
isFeatured?: boolean;
|
|
5
5
|
children?: React.ReactNode;
|
|
@@ -8,4 +8,4 @@ export type ItemListRowButtonProps = {
|
|
|
8
8
|
className?: string;
|
|
9
9
|
disabled?: boolean;
|
|
10
10
|
};
|
|
11
|
-
export declare function ItemListRowButton({ item, isFeatured, onClick, children, columns, className, disabled, }: ItemListRowButtonProps): import("react").JSX.Element;
|
|
11
|
+
export declare function ItemListRowButton({ item, isFeatured, onClick, children, columns, className, disabled, ...props }: ItemListRowButtonProps): import("react").JSX.Element;
|
|
@@ -8,7 +8,8 @@ export type KeyValueListItemValue = {
|
|
|
8
8
|
};
|
|
9
9
|
export type KeyValueListItemData = {
|
|
10
10
|
key: string;
|
|
11
|
-
label
|
|
11
|
+
/** Plain text in most cases; a node when the label itself is interactive (e.g. a link). */
|
|
12
|
+
label: React.ReactNode;
|
|
12
13
|
value: Value;
|
|
13
14
|
icon?: React.ReactNode;
|
|
14
15
|
separator?: React.ReactNode;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/playground-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "51.3.0
|
|
4
|
+
"version": "51.3.0",
|
|
5
5
|
"description": "Mastra Playground components",
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -161,8 +161,8 @@
|
|
|
161
161
|
"react": ">=19.0.0",
|
|
162
162
|
"react-dom": ">=19.0.0",
|
|
163
163
|
"tailwindcss": "^4.0.0",
|
|
164
|
-
"@mastra/client-js": "^1.42.3
|
|
165
|
-
"@mastra/react": "1.4.8
|
|
164
|
+
"@mastra/client-js": "^1.42.3",
|
|
165
|
+
"@mastra/react": "1.4.8"
|
|
166
166
|
},
|
|
167
167
|
"devDependencies": {
|
|
168
168
|
"@storybook/addon-a11y": "^10.4.1",
|
|
@@ -202,11 +202,11 @@
|
|
|
202
202
|
"vite-plugin-dts": "^4.5.4",
|
|
203
203
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
204
204
|
"vitest": "4.1.10",
|
|
205
|
-
"@internal/lint": "0.0.
|
|
206
|
-
"@mastra/client-js": "^1.42.3
|
|
207
|
-
"@mastra/core": "1.63.1
|
|
208
|
-
"@mastra/memory": "1.28.1
|
|
209
|
-
"@mastra/react": "1.4.8
|
|
205
|
+
"@internal/lint": "0.0.128",
|
|
206
|
+
"@mastra/client-js": "^1.42.3",
|
|
207
|
+
"@mastra/core": "1.63.1",
|
|
208
|
+
"@mastra/memory": "1.28.1",
|
|
209
|
+
"@mastra/react": "1.4.8"
|
|
210
210
|
},
|
|
211
211
|
"homepage": "https://mastra.ai",
|
|
212
212
|
"repository": {
|