@cognite/aura 1.47181.0 → 1.47284.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.
@@ -110,10 +110,10 @@ declare function DataGridCheckboxCell<TData>({ row }: {
110
110
  }): ReactElement;
111
111
  type DataGridSearchProps = Omit<ComponentProps<typeof Search>, "value" | "onChange" | "onClear">;
112
112
  declare const DataGridSearch: ForwardRefExoticComponent<DataGridSearchProps & RefAttributes<ComponentRef<typeof Search>>>;
113
- type DataGridResultCountBadgeProps = ComponentProps<"span"> & {
114
- label?: ReactNode;
113
+ type DataGridResultCountProps = Omit<ComponentProps<"output">, "children"> & {
114
+ formatLabel?: (filteredCount: number, totalCount?: number) => ReactNode;
115
115
  };
116
- declare const DataGridResultCountBadge: ForwardRefExoticComponent<DataGridResultCountBadgeProps & RefAttributes<HTMLSpanElement>>;
116
+ declare const DataGridResultCount: ForwardRefExoticComponent<DataGridResultCountProps & RefAttributes<HTMLOutputElement>>;
117
117
  type DataGridFilterTriggerProps = ComponentProps<typeof Button> & {
118
118
  activeCount?: number;
119
119
  label?: string;
@@ -122,7 +122,7 @@ type DataGridFilterTriggerProps = ComponentProps<typeof Button> & {
122
122
  };
123
123
  declare const DataGridFilterTrigger: ForwardRefExoticComponent<DataGridFilterTriggerProps & RefAttributes<ComponentRef<typeof Button>>>;
124
124
  declare function useDataGridContext(): DataGridContextValue;
125
- export { DataGrid, DataGridCheckboxCell, DataGridCheckboxHeader, DataGridResultCountBadge, DataGridFilterTrigger, DataGridSearch, useDataGridContext, type DataGridContextValue, type DataGridHandle, type DataGridLabels };
125
+ export { DataGrid, DataGridCheckboxCell, DataGridCheckboxHeader, DataGridResultCount, DataGridFilterTrigger, DataGridSearch, useDataGridContext, type DataGridContextValue, type DataGridHandle, type DataGridLabels };
126
126
  export { DataGridFilterPanel, type DataGridFilterColumn, type DataGridFilterPanelLabels } from "./data-grid-filter-panel";
127
127
  export { DataGridFooter, DataGridFooterEnd, DataGridFooterStart } from "./data-grid-footer";
128
128
  export { DataGridHeader, DataGridHeaderActions, DataGridHeaderEnd, DataGridHeaderStart, DataGridSubtitle, DataGridTitle } from "./data-grid-header";
@@ -10,6 +10,7 @@ import { Button } from "../button/button.js";
10
10
  import { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle } from "../empty-state/empty-state.js";
11
11
  import { Search } from "../search/search.js";
12
12
  import { Skeleton } from "../skeleton/skeleton.js";
13
+ import { StatusText } from "../status-text/status-text.js";
13
14
  import { DataGridCell } from "./data-grid-cell.js";
14
15
  import { DataGridHeaderRow } from "./data-grid-header-row.js";
15
16
  import { DataGridRow } from "./data-grid-row.js";
@@ -433,19 +434,26 @@ const DataGridSearch = /*#__PURE__*/ forwardRef(function DataGridSearch({ classN
433
434
  });
434
435
  });
435
436
  DataGridSearch.displayName = 'DataGridSearch';
436
- const DataGridResultCountBadge = /*#__PURE__*/ forwardRef(function DataGridResultCountBadge({ label, className, ...props }, ref) {
437
+ function defaultFormatResultCount(filteredCount, totalCount) {
438
+ const noun = (totalCount ?? filteredCount) === 1 ? 'result' : 'results';
439
+ return totalCount === undefined ? `Showing ${filteredCount.toLocaleString('en')} ${noun}` : `Showing ${filteredCount.toLocaleString('en')} of ${totalCount.toLocaleString('en')} ${noun}`;
440
+ }
441
+ const DataGridResultCount = /*#__PURE__*/ forwardRef(function DataGridResultCount({ formatLabel = defaultFormatResultCount, ...props }, ref) {
437
442
  const { filteredCount, totalCount } = useDataGridContext();
438
- const content = label ?? (filteredCount === undefined ? null : totalCount !== undefined ? `${filteredCount} of ${totalCount} results` : `${filteredCount} results`);
443
+ // Nothing to say until the grid has counted.
444
+ if (filteredCount === undefined) return null;
445
+ const content = formatLabel(filteredCount, totalCount);
439
446
  if (content == null) return null;
440
- return /*#__PURE__*/ _jsx("span", {
447
+ return(// Not live by default: it changes on every search keystroke, which screen readers would read out.
448
+ /*#__PURE__*/ _jsx(StatusText, {
441
449
  ref: ref,
442
- "data-slot": "data-grid-result-count-badge",
443
- className: cn('inline-flex h-5 shrink-0 items-center rounded-sm border border-border bg-muted-background px-1.5 text-xs font-medium text-muted-foreground', className),
450
+ "data-slot": "data-grid-result-count",
451
+ "aria-live": "off",
444
452
  ...props,
445
453
  children: content
446
- });
454
+ }));
447
455
  });
448
- DataGridResultCountBadge.displayName = 'DataGridResultCountBadge';
456
+ DataGridResultCount.displayName = 'DataGridResultCount';
449
457
  function renderDataGridState(state, fallback) {
450
458
  if (isDataGridStateCopy(state)) {
451
459
  return /*#__PURE__*/ _jsx(DataGridState, {
@@ -511,7 +519,7 @@ function useDataGridContext() {
511
519
  }
512
520
  return context;
513
521
  }
514
- export { DataGrid, DataGridCheckboxCell, DataGridCheckboxHeader, DataGridResultCountBadge, DataGridFilterTrigger, DataGridSearch, useDataGridContext };
522
+ export { DataGrid, DataGridCheckboxCell, DataGridCheckboxHeader, DataGridResultCount, DataGridFilterTrigger, DataGridSearch, useDataGridContext };
515
523
  export { DataGridFilterPanel } from "./data-grid-filter-panel.js";
516
524
  export { DataGridFooter, DataGridFooterEnd, DataGridFooterStart } from "./data-grid-footer.js";
517
525
  export { DataGridHeader, DataGridHeaderActions, DataGridHeaderEnd, DataGridHeaderStart, DataGridSubtitle, DataGridTitle } from "./data-grid-header.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ui/core/data-grid/data-grid.tsx"],"sourcesContent":["import {\n type ComponentProps,\n type ComponentRef,\n type CSSProperties,\n type ForwardRefExoticComponent,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n type RefObject,\n createContext,\n forwardRef,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { IconCheck, IconFilter, IconMinus } from '@tabler/icons-react';\nimport {\n type CellContext,\n type ColumnDef,\n type ColumnPinningState,\n type ColumnSizingState,\n type ExpandedState,\n type FilterFnOption,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type Table,\n type SortingState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nimport { useControllableState } from '../../../../lib/use-controllable-state';\nimport { cn, focusState } from '../../../../lib/utils';\nimport { Button } from '../button/button';\nimport {\n EmptyState,\n EmptyStateActions,\n EmptyStateDescription,\n EmptyStateIcon,\n EmptyStateTitle,\n} from '../empty-state/empty-state';\nimport type { EmptyStateType } from '../empty-state/empty-state.context';\nimport { Search } from '../search/search';\nimport { Skeleton } from '../skeleton/skeleton';\n\nimport { DataGridCell } from './data-grid-cell';\nimport { DataGridHeaderRow } from './data-grid-header-row';\nimport { DataGridRow } from './data-grid-row';\nimport {\n countSelectedRowIds,\n getDataGridCheckboxState,\n selectDataGridRowTree,\n} from './data-grid-selection-state';\nimport { DataGridSelectionToolbar } from './data-grid-selection-toolbar';\nimport type { DataGridSelectionActions } from './data-grid-selection.types';\nimport { PINNED_COLUMN_Z_INDEX, getTextValue } from './data-grid.utils';\n\nconst EMPTY_PINNED_COLUMNS: string[] = [];\n\nfunction defaultDataGridCell<TData>({\n renderValue,\n}: CellContext<TData, unknown>): ReactNode {\n const text = getTextValue(renderValue());\n if (text === undefined) return null;\n\n return (\n <span className=\"block min-w-0 truncate\" title={text}>\n {text}\n </span>\n );\n}\n\nconst DEFAULT_COLUMN = {\n cell: defaultDataGridCell,\n size: undefined,\n};\n\ntype DataGridContextValue = {\n searchValue: string;\n setSearchValue: (value: string) => void;\n filteredCount?: number;\n totalCount?: number;\n};\n\nconst DataGridContext = createContext<DataGridContextValue | undefined>(\n undefined\n);\n\ntype DataGridSize = 'default' | 'compact';\ntype DataGridQueryMode = 'client' | 'server';\ntype DataGridLoadingVariant = 'skeleton' | 'none';\n\ntype DataGridStateCopyFields = {\n title: string;\n description: string;\n action: ReactNode;\n};\n\ntype AtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends keyof T\n ? Pick<Required<T>, Keys> & Partial<Omit<T, Keys>>\n : never;\n\ntype DataGridStateCopy = AtLeastOne<DataGridStateCopyFields>;\n\ntype DataGridLabels = {\n clearSearch: string;\n clearFilters: string;\n};\n\nconst defaultDataGridLabels: DataGridLabels = {\n clearSearch: 'Clear search',\n clearFilters: 'Clear filters',\n};\n\ntype DataGridLoadingCellContext = {\n rowIndex: number;\n columnId: string;\n columnIndex: number;\n size: DataGridSize;\n};\n\nconst ROW_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\nconst HEADER_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\ntype DataGridHandle = {\n scrollToRow: (index: number) => void;\n resetSorting: () => void;\n resetSelection: () => void;\n resetSearch: () => void;\n};\n\ntype DataGridBaseProps<TData> = {\n data: TData[];\n columns: ColumnDef<TData>[];\n getRowId?: (originalRow: TData, index: number) => string;\n rowCount?: number;\n globalFilterFn?: FilterFnOption<TData>;\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean);\n enableSorting?: boolean;\n enableColumnResizing?: boolean;\n columnGrow?: boolean;\n columnSizing?: ColumnSizingState;\n defaultColumnSizing?: ColumnSizingState;\n onColumnSizingChange?: (value: ColumnSizingState) => void;\n manualPagination?: boolean;\n manualSorting?: boolean;\n rowSelection?: RowSelectionState;\n defaultRowSelection?: RowSelectionState;\n onRowSelectionChange?: (value: RowSelectionState) => void;\n selectionActions?: DataGridSelectionActions;\n sorting?: SortingState;\n defaultSorting?: SortingState;\n onSortingChange?: (value: SortingState) => void;\n pagination?: PaginationState;\n defaultPagination?: PaginationState;\n onPaginationChange?: (value: PaginationState) => void;\n getSubRows?: (row: TData, index: number) => TData[] | undefined;\n expanded?: ExpandedState;\n defaultExpanded?: ExpandedState;\n onExpandedChange?: (value: ExpandedState) => void;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n maxDepth?: number;\n pinnedColumns?: string[];\n // forwardRef cannot preserve the `TData` generic, so the imperative handle\n // is exposed via a ref-object prop instead of `forwardRef` + `useImperativeHandle`.\n // See https://github.com/facebook/react/issues/22018.\n gridRef?: RefObject<DataGridHandle | null>;\n size?: DataGridSize;\n children?: ReactNode;\n className?: string;\n onRowClick?: (row: Row<TData>) => void;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n queryMode?: DataGridQueryMode;\n loading?: boolean;\n loadingVariant?: DataGridLoadingVariant;\n loadingRowCount?: number;\n renderLoadingCell?: (ctx: DataGridLoadingCellContext) => ReactNode;\n emptyState?: ReactNode | DataGridStateCopy;\n noResultsState?: ReactNode | DataGridStateCopy;\n onClearSearch?: () => void;\n onClearFilters?: () => void;\n labels?: Partial<DataGridLabels>;\n filteredResultCount?: number;\n totalResultCount?: number;\n rowHeight?: number;\n headerHeight?: number;\n};\n\n// The grid renders with `role=\"table\"`, which requires an accessible name for\n// screen readers. It is bad practice to omit one, so the type requires at least\n// one of `aria-label` / `aria-labelledby` rather than leaving both optional.\ntype DataGridAccessibleNameProps =\n | { 'aria-label': string; 'aria-labelledby'?: string }\n | { 'aria-labelledby': string; 'aria-label'?: string };\n\ntype DataGridProps<TData> = DataGridBaseProps<TData> &\n DataGridAccessibleNameProps;\n\nfunction DataGrid<TData>({\n data,\n columns,\n getRowId,\n rowCount,\n globalFilterFn = 'auto',\n enableRowSelection = false,\n enableSorting = false,\n enableColumnResizing = false,\n columnGrow = false,\n columnSizing,\n defaultColumnSizing,\n onColumnSizingChange,\n manualPagination = false,\n manualSorting = false,\n rowSelection,\n defaultRowSelection,\n onRowSelectionChange,\n selectionActions,\n sorting,\n defaultSorting,\n onSortingChange,\n pagination,\n defaultPagination,\n onPaginationChange,\n getSubRows,\n expanded,\n defaultExpanded,\n onExpandedChange,\n getRowCanExpand,\n maxDepth = 5,\n pinnedColumns = EMPTY_PINNED_COLUMNS,\n gridRef,\n size = 'default',\n children,\n className,\n onRowClick,\n searchValue,\n defaultSearchValue,\n onSearchValueChange,\n queryMode = 'client',\n loading = false,\n loadingVariant = 'skeleton',\n loadingRowCount,\n renderLoadingCell,\n emptyState,\n noResultsState,\n filteredResultCount,\n totalResultCount,\n onClearSearch,\n onClearFilters,\n labels: labelOverrides,\n rowHeight,\n headerHeight,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}: DataGridProps<TData>): ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const labels = { ...defaultDataGridLabels, ...labelOverrides };\n\n const [resolvedSearchValue, setResolvedSearchValue] = useControllableState({\n prop: searchValue,\n defaultProp: defaultSearchValue ?? '',\n onChange: onSearchValueChange,\n });\n\n const [resolvedSorting, setResolvedSorting] =\n useControllableState<SortingState>({\n prop: sorting,\n defaultProp: defaultSorting ?? [],\n onChange: onSortingChange,\n });\n\n const [resolvedRowSelection, setResolvedRowSelection] =\n useControllableState<RowSelectionState>({\n prop: rowSelection,\n defaultProp: defaultRowSelection ?? {},\n onChange: onRowSelectionChange,\n });\n\n const hasPagination =\n pagination !== undefined || defaultPagination !== undefined;\n\n const [resolvedPagination, setResolvedPagination] =\n useControllableState<PaginationState>({\n prop: pagination,\n defaultProp: defaultPagination ?? { pageIndex: 0, pageSize: 10 },\n onChange: onPaginationChange,\n });\n\n const hasExpanding = getSubRows !== undefined;\n\n const [resolvedExpanded, setResolvedExpanded] =\n useControllableState<ExpandedState>({\n prop: expanded,\n defaultProp: defaultExpanded ?? {},\n onChange: onExpandedChange,\n });\n\n const [resolvedColumnSizing, setResolvedColumnSizing] =\n useControllableState<ColumnSizingState>({\n prop: columnSizing,\n defaultProp: defaultColumnSizing ?? {},\n onChange: onColumnSizingChange,\n });\n\n const isClientSorting = enableSorting && !manualSorting;\n const isClientPagination = hasPagination && !manualPagination;\n\n const columnPinning: ColumnPinningState = useMemo(\n () => ({ left: pinnedColumns, right: [] }),\n [pinnedColumns]\n );\n\n const pinnedColumnIds = useMemo(\n () => new Set(pinnedColumns),\n [pinnedColumns]\n );\n const lastPinnedColumnId = pinnedColumns[pinnedColumns.length - 1];\n // eslint-disable-next-line react-hooks/incompatible-library -- useReactTable in the DataGrid component is intentional and stable.\n const table = useReactTable({\n data,\n columns,\n state: {\n columnPinning,\n globalFilter: resolvedSearchValue,\n sorting: resolvedSorting,\n rowSelection: resolvedRowSelection,\n columnSizing: resolvedColumnSizing,\n ...(hasPagination ? { pagination: resolvedPagination } : {}),\n ...(hasExpanding ? { expanded: resolvedExpanded } : {}),\n },\n onSortingChange: setResolvedSorting,\n onRowSelectionChange: setResolvedRowSelection,\n onColumnSizingChange: setResolvedColumnSizing,\n ...(hasPagination ? { onPaginationChange: setResolvedPagination } : {}),\n ...(hasExpanding ? { onExpandedChange: setResolvedExpanded } : {}),\n // Preserve expanded rows across `data` changes (e.g. refetches) so the user\n // doesn't lose their place. Consumers fetching server-paged data should\n // ensure stable `getRowId` values; otherwise expanded keys can stick to\n // rows that no longer logically exist.\n autoResetExpanded: false,\n enableRowSelection,\n // Selecting a parent selects every descendant, including while it is collapsed.\n enableSubRowSelection: true,\n enableSorting,\n enableColumnResizing,\n columnResizeMode: 'onChange',\n defaultColumn: DEFAULT_COLUMN,\n manualPagination,\n manualSorting,\n manualFiltering: queryMode === 'server',\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n globalFilterFn,\n ...(isClientSorting ? { getSortedRowModel: getSortedRowModel() } : {}),\n ...(isClientPagination\n ? { getPaginationRowModel: getPaginationRowModel() }\n : {}),\n ...(hasExpanding ? { getExpandedRowModel: getExpandedRowModel() } : {}),\n getRowId,\n getSubRows,\n getRowCanExpand,\n });\n\n const { rows } = table.getRowModel();\n const headerGroups = table.getHeaderGroups();\n const visibleColumns = table.getVisibleFlatColumns();\n\n const resolvedRowHeight = rowHeight ?? ROW_HEIGHT_MAP[size];\n const resolvedHeaderHeight = headerHeight ?? HEADER_HEIGHT_MAP[size];\n const resolvedLoadingRowCount = loadingRowCount ?? 6;\n const shouldRenderSkeleton = loading && loadingVariant === 'skeleton';\n const hideRowsForLoading = loading && loadingVariant !== 'none';\n const hasActiveServerSearch =\n queryMode === 'server' && resolvedSearchValue !== '';\n const hasNoRows = !loading && data.length === 0 && !hasActiveServerSearch;\n const hasNoResults =\n !loading &&\n (hasActiveServerSearch\n ? data.length === 0\n : data.length > 0 && table.getFilteredRowModel().rows.length === 0);\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => resolvedRowHeight,\n overscan: 10,\n });\n const bodyHeight = shouldRenderSkeleton\n ? resolvedLoadingRowCount * resolvedRowHeight\n : virtualizer.getTotalSize();\n const bodyStyle: CSSProperties & {\n '--data-grid-body-height': string;\n '--data-grid-body-min-height': string;\n } = {\n '--data-grid-body-height': `${bodyHeight}px`,\n '--data-grid-body-min-height': `${resolvedRowHeight * 4}px`,\n };\n\n useImperativeHandle(gridRef, () => ({\n scrollToRow: (index: number) => virtualizer.scrollToIndex(index),\n resetSorting: () => setResolvedSorting([]),\n resetSelection: () => setResolvedRowSelection({}),\n resetSearch: () => setResolvedSearchValue(''),\n }));\n\n const hasFlexibleColumn =\n !enableColumnResizing &&\n !columnGrow &&\n visibleColumns.some(\n (column) =>\n column.columnDef.size === undefined && !pinnedColumnIds.has(column.id)\n );\n const gridTemplateColumns = visibleColumns\n .map((column, index) => {\n const columnSize = column.getSize();\n if (enableColumnResizing || pinnedColumnIds.has(column.id)) {\n return `${columnSize}px`;\n }\n if (columnGrow) {\n return `minmax(${columnSize}px, ${columnSize}fr)`;\n }\n const isLastColumn = index === visibleColumns.length - 1;\n if (column.columnDef.size !== undefined) {\n if (!hasFlexibleColumn && isLastColumn) {\n return `minmax(${columnSize}px, 1fr)`;\n }\n return `${columnSize}px`;\n }\n return `minmax(${columnSize}px, 1fr)`;\n })\n .join(' ');\n\n const scrollContainerStyle: CSSProperties & {\n '--data-grid-template-columns': string;\n } = {\n '--data-grid-template-columns': gridTemplateColumns,\n };\n\n const isResizingColumn = Boolean(\n table.getState().columnSizingInfo.isResizingColumn\n );\n const clientFilteredCount = table.getFilteredRowModel().rows.length;\n const clientTotalCount = table.getCoreRowModel().rows.length;\n\n const contextValue = useMemo<DataGridContextValue>(\n () => ({\n searchValue: resolvedSearchValue,\n setSearchValue: setResolvedSearchValue,\n filteredCount:\n queryMode === 'client' ? clientFilteredCount : filteredResultCount,\n totalCount: queryMode === 'client' ? clientTotalCount : totalResultCount,\n }),\n [\n resolvedSearchValue,\n setResolvedSearchValue,\n queryMode,\n clientFilteredCount,\n filteredResultCount,\n clientTotalCount,\n totalResultCount,\n ]\n );\n\n const selectedRowCount = countSelectedRowIds(resolvedRowSelection);\n\n return (\n <DataGridContext.Provider value={contextValue}>\n <div\n data-slot=\"data-grid\"\n data-query-mode={queryMode}\n data-filtered-result-count={filteredResultCount}\n data-total-result-count={totalResultCount}\n className={cn(\n 'relative flex min-h-0 w-full flex-col overflow-clip rounded-xl text-sm',\n className\n )}\n >\n {children}\n <div\n ref={scrollContainerRef}\n data-slot=\"data-grid-scroll-container\"\n className=\"relative order-2 min-h-0 w-full flex-1 overflow-auto\"\n style={scrollContainerStyle}\n role=\"table\"\n aria-rowcount={\n hideRowsForLoading\n ? headerGroups.length\n : (rowCount ?? rows.length) + headerGroups.length\n }\n aria-colcount={visibleColumns.length}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div\n className={cn(\n 'min-w-fit w-full',\n enableRowSelection !== false && selectedRowCount > 0 && 'pb-24'\n )}\n >\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-header-group\"\n className=\"contents\"\n >\n {headerGroups.map((headerGroup, headerRowIndex) => (\n <DataGridHeaderRow\n key={headerGroup.id}\n headerGroup={headerGroup}\n headerRowIndex={headerRowIndex}\n resolvedHeaderHeight={resolvedHeaderHeight}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n isResizingColumn={isResizingColumn}\n />\n ))}\n </div>\n\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-body\"\n className={cn(\n 'relative min-h-(--data-grid-body-min-height)',\n !hasNoRows && !hasNoResults && 'h-(--data-grid-body-height)'\n )}\n style={bodyStyle}\n >\n {shouldRenderSkeleton &&\n Array.from(\n { length: resolvedLoadingRowCount },\n (_, rowIndex) => (\n <div\n key={`skeleton-row-${rowIndex}`}\n data-slot=\"data-grid-row-loading\"\n aria-hidden=\"true\"\n className=\"absolute left-0 right-0 grid border-b bg-background\"\n style={{\n gridTemplateColumns:\n 'var(--data-grid-template-columns)',\n height: resolvedRowHeight,\n transform: `translateY(${rowIndex * resolvedRowHeight}px)`,\n }}\n >\n {visibleColumns.map((column, colIndex) => {\n const isPinned = pinnedColumnIds.has(column.id);\n const isLastPinned =\n isPinned && lastPinnedColumnId === column.id;\n return (\n <DataGridCell\n key={column.id}\n isPinned={isPinned}\n isLastPinned={isLastPinned}\n colIndex={colIndex + 1}\n style={\n isPinned\n ? {\n position: 'sticky',\n left: column.getStart('left'),\n zIndex: PINNED_COLUMN_Z_INDEX,\n }\n : undefined\n }\n >\n {renderLoadingCell?.({\n rowIndex,\n columnId: column.id,\n columnIndex: colIndex,\n size,\n }) ??\n (column.id === 'select' ? (\n <Skeleton className=\"h-4 w-4 rounded\" />\n ) : (\n <Skeleton\n className={cn(\n 'h-4 max-w-full',\n colIndex === 0 ? 'w-3/4' : 'w-2/3'\n )}\n />\n ))}\n </DataGridCell>\n );\n })}\n </div>\n )\n )}\n\n {!hideRowsForLoading &&\n !hasNoRows &&\n !hasNoResults &&\n virtualizer\n .getVirtualItems()\n .map((virtualRow) => (\n <DataGridRow\n key={rows[virtualRow.index].id}\n row={rows[virtualRow.index]}\n virtualRow={virtualRow}\n headerGroupCount={headerGroups.length}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n maxDepth={maxDepth}\n hasExpanding={hasExpanding}\n onRowClick={onRowClick}\n />\n ))}\n\n {!loading && hasNoRows && emptyState != null && (\n <div className=\"pt-2\">\n <div className=\"flex items-center justify-center rounded-lg bg-medium-background\">\n {renderDataGridState(emptyState, {\n type: 'new-object',\n title: 'No rows yet',\n description: 'Add data to populate this table.',\n })}\n </div>\n </div>\n )}\n\n {!loading && hasNoResults && (\n <div className=\"pt-2\">\n <div className=\"flex items-center justify-center bg-background\">\n {renderDataGridState(noResultsState, {\n type: 'no-results',\n title: 'No results found',\n description:\n queryMode === 'server'\n ? 'Apply a different query or clear filters.'\n : 'Try a different search term or clear filters.',\n action:\n onClearSearch || onClearFilters ? (\n <div className=\"mt-2 flex items-center justify-center gap-2\">\n {onClearSearch ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={onClearSearch}\n >\n {labels.clearSearch}\n </Button>\n ) : null}\n {onClearFilters ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={onClearFilters}\n >\n {labels.clearFilters}\n </Button>\n ) : null}\n </div>\n ) : undefined,\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n {enableRowSelection !== false ? (\n <DataGridSelectionToolbar\n // The count includes every selected id.\n // That covers parents and their children, rows on other pages, and rows hidden by search.\n selectedCount={selectedRowCount}\n rowSelection={resolvedRowSelection}\n selectionActions={selectionActions}\n onClear={() => setResolvedRowSelection({})}\n />\n ) : null}\n </div>\n </div>\n </DataGridContext.Provider>\n );\n}\n\ntype DataGridCheckboxProps = {\n checked: boolean | 'indeterminate';\n onCheckedChange: (checked: boolean | 'indeterminate') => void;\n disabled?: boolean;\n 'aria-label'?: string;\n};\n\nfunction DataGridCheckbox({\n checked,\n onCheckedChange,\n disabled,\n 'aria-label': checkboxAriaLabel,\n}: DataGridCheckboxProps): ReactElement {\n const isIndeterminate = checked === 'indeterminate';\n const isChecked = checked === true;\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n checked={isIndeterminate ? false : isChecked}\n indeterminate={isIndeterminate}\n disabled={disabled}\n onCheckedChange={(next) => onCheckedChange(next)}\n aria-label={checkboxAriaLabel}\n className={cn(\n 'peer relative size-4 shrink-0 rounded-sm border-[1.5px] border-muted-foreground bg-transparent text-foreground-on-primary outline-none transition-colors',\n '[&:is([data-checked],[data-indeterminate]):not([data-disabled])]:border-transparent [&:is([data-checked],[data-indeterminate]):not([data-disabled])]:bg-primary-background',\n 'hover:data-unchecked:not-data-disabled:border-muted-foreground-hover',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:border-transparent data-disabled:bg-disabled-background data-disabled:text-disabled-foreground data-disabled:data-unchecked:border-border',\n '[&[data-checked]_[data-slot=checkbox-check]]:block [&[data-indeterminate]_[data-slot=checkbox-dash]]:block',\n focusState\n )}\n >\n <CheckboxPrimitive.Indicator className=\"grid size-full place-content-center text-current transition-none\">\n <IconCheck\n aria-hidden=\"true\"\n data-slot=\"checkbox-check\"\n className=\"hidden size-3\"\n stroke={3}\n />\n <IconMinus\n aria-hidden=\"true\"\n data-slot=\"checkbox-dash\"\n className=\"hidden size-3\"\n stroke={3.5}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nfunction DataGridCheckboxHeader<TData>({\n table,\n}: {\n table: Table<TData>;\n}): ReactElement {\n const allSelected = table.getIsAllPageRowsSelected();\n const someSelected = table.getIsSomePageRowsSelected();\n const checked = allSelected ? true : someSelected ? 'indeterminate' : false;\n\n return (\n <DataGridCheckbox\n checked={checked}\n onCheckedChange={() => table.toggleAllPageRowsSelected(!allSelected)}\n aria-label=\"Select all rows\"\n />\n );\n}\n\nfunction DataGridCheckboxCell<TData>({\n row,\n}: {\n row: Row<TData>;\n}): ReactElement {\n return (\n <DataGridCheckbox\n checked={getDataGridCheckboxState(row)}\n disabled={!row.getCanSelect()}\n onCheckedChange={(next) => {\n if (next === true) {\n selectDataGridRowTree(row);\n return;\n }\n row.toggleSelected(false);\n }}\n aria-label=\"Select row\"\n />\n );\n}\n\ntype DataGridSearchProps = Omit<\n ComponentProps<typeof Search>,\n 'value' | 'onChange' | 'onClear'\n>;\n\nconst DataGridSearch: ForwardRefExoticComponent<\n DataGridSearchProps & RefAttributes<ComponentRef<typeof Search>>\n> = forwardRef<ComponentRef<typeof Search>, DataGridSearchProps>(\n function DataGridSearch(\n { className, placeholder = 'Search', ...props },\n ref\n ) {\n const { searchValue, setSearchValue } = useDataGridContext();\n\n return (\n <Search\n ref={ref}\n value={searchValue}\n onChange={(event) => setSearchValue(event.target.value)}\n onClear={() => setSearchValue('')}\n placeholder={placeholder}\n className={cn('py-4', className)}\n {...props}\n />\n );\n }\n);\nDataGridSearch.displayName = 'DataGridSearch';\n\ntype DataGridResultCountBadgeProps = ComponentProps<'span'> & {\n label?: ReactNode;\n};\n\nconst DataGridResultCountBadge: ForwardRefExoticComponent<\n DataGridResultCountBadgeProps & RefAttributes<HTMLSpanElement>\n> = forwardRef<ComponentRef<'span'>, DataGridResultCountBadgeProps>(\n function DataGridResultCountBadge({ label, className, ...props }, ref) {\n const { filteredCount, totalCount } = useDataGridContext();\n\n const content =\n label ??\n (filteredCount === undefined\n ? null\n : totalCount !== undefined\n ? `${filteredCount} of ${totalCount} results`\n : `${filteredCount} results`);\n\n if (content == null) return null;\n\n return (\n <span\n ref={ref}\n data-slot=\"data-grid-result-count-badge\"\n className={cn(\n 'inline-flex h-5 shrink-0 items-center rounded-sm border border-border bg-muted-background px-1.5 text-xs font-medium text-muted-foreground',\n className\n )}\n {...props}\n >\n {content}\n </span>\n );\n }\n);\nDataGridResultCountBadge.displayName = 'DataGridResultCountBadge';\n\nfunction renderDataGridState(\n state: ReactNode | DataGridStateCopy | undefined,\n fallback: { type: EmptyStateType } & Pick<\n DataGridStateCopyFields,\n 'title' | 'description'\n > &\n Partial<Pick<DataGridStateCopyFields, 'action'>>\n): ReactNode {\n if (isDataGridStateCopy(state)) {\n return (\n <DataGridState\n type={fallback.type}\n title={state.title ?? fallback.title}\n description={state.description ?? fallback.description}\n action={state.action !== undefined ? state.action : fallback.action}\n />\n );\n }\n\n if (state !== undefined) return state;\n\n return (\n <DataGridState\n type={fallback.type}\n title={fallback.title}\n description={fallback.description}\n action={fallback.action}\n />\n );\n}\n\nfunction isDataGridStateCopy(value: unknown): value is DataGridStateCopy {\n return (\n typeof value === 'object' &&\n value !== null &&\n !('type' in value) &&\n ('title' in value || 'description' in value || 'action' in value)\n );\n}\n\nfunction DataGridState({\n type,\n title,\n description,\n action,\n}: { type: EmptyStateType } & Pick<\n DataGridStateCopyFields,\n 'title' | 'description'\n> &\n Partial<Pick<DataGridStateCopyFields, 'action'>>): ReactElement {\n return (\n <EmptyState type={type} className=\"p-10\">\n <EmptyStateIcon />\n <EmptyStateTitle as=\"p\">{title}</EmptyStateTitle>\n <EmptyStateDescription>{description}</EmptyStateDescription>\n {action ? <EmptyStateActions>{action}</EmptyStateActions> : null}\n </EmptyState>\n );\n}\n\ntype DataGridFilterTriggerProps = ComponentProps<typeof Button> & {\n activeCount?: number;\n label?: string;\n activeLabel?: (activeCount: number) => string;\n placement?: 'toolbar' | 'column-header';\n};\n\nconst DataGridFilterTrigger: ForwardRefExoticComponent<\n DataGridFilterTriggerProps & RefAttributes<ComponentRef<typeof Button>>\n> = forwardRef<ComponentRef<typeof Button>, DataGridFilterTriggerProps>(\n function DataGridFilterTrigger(\n {\n activeCount = 0,\n label = 'Filters',\n activeLabel,\n placement = 'toolbar',\n className,\n children,\n ...props\n }: DataGridFilterTriggerProps,\n ref: Ref<ComponentRef<typeof Button>>\n ) {\n const hasActiveFilters = activeCount > 0;\n\n return (\n <Button\n ref={ref}\n data-slot=\"data-grid-filter-trigger\"\n data-placement={placement}\n data-active-count={activeCount}\n size={placement === 'column-header' ? 'icon-sm' : 'icon'}\n variant={hasActiveFilters ? 'secondary' : 'ghost'}\n className={cn('min-w-0', className)}\n aria-label={\n hasActiveFilters\n ? (activeLabel?.(activeCount) ?? `${label}, ${activeCount} active`)\n : label\n }\n {...props}\n >\n {children ?? (\n <IconFilter className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n )}\n </Button>\n );\n }\n);\nDataGridFilterTrigger.displayName = 'DataGridFilterTrigger';\n\nfunction useDataGridContext(): DataGridContextValue {\n const context = useContext(DataGridContext);\n if (!context) {\n throw new Error('useDataGridContext must be used within a DataGrid');\n }\n return context;\n}\nexport {\n DataGrid,\n DataGridCheckboxCell,\n DataGridCheckboxHeader,\n DataGridResultCountBadge,\n DataGridFilterTrigger,\n DataGridSearch,\n useDataGridContext,\n type DataGridContextValue,\n type DataGridHandle,\n type DataGridLabels,\n};\nexport {\n DataGridFilterPanel,\n type DataGridFilterColumn,\n type DataGridFilterPanelLabels,\n} from './data-grid-filter-panel';\nexport {\n DataGridFooter,\n DataGridFooterEnd,\n DataGridFooterStart,\n} from './data-grid-footer';\nexport {\n DataGridHeader,\n DataGridHeaderActions,\n DataGridHeaderEnd,\n DataGridHeaderStart,\n DataGridSubtitle,\n DataGridTitle,\n} from './data-grid-header';\n"],"names":["createContext","forwardRef","useContext","useImperativeHandle","useMemo","useRef","Checkbox","CheckboxPrimitive","IconCheck","IconFilter","IconMinus","getCoreRowModel","getExpandedRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","useReactTable","useVirtualizer","useControllableState","cn","focusState","Button","EmptyState","EmptyStateActions","EmptyStateDescription","EmptyStateIcon","EmptyStateTitle","Search","Skeleton","DataGridCell","DataGridHeaderRow","DataGridRow","countSelectedRowIds","getDataGridCheckboxState","selectDataGridRowTree","DataGridSelectionToolbar","PINNED_COLUMN_Z_INDEX","getTextValue","EMPTY_PINNED_COLUMNS","defaultDataGridCell","renderValue","text","undefined","span","className","title","DEFAULT_COLUMN","cell","size","DataGridContext","defaultDataGridLabels","clearSearch","clearFilters","ROW_HEIGHT_MAP","default","compact","HEADER_HEIGHT_MAP","DataGrid","data","columns","getRowId","rowCount","globalFilterFn","enableRowSelection","enableSorting","enableColumnResizing","columnGrow","columnSizing","defaultColumnSizing","onColumnSizingChange","manualPagination","manualSorting","rowSelection","defaultRowSelection","onRowSelectionChange","selectionActions","sorting","defaultSorting","onSortingChange","pagination","defaultPagination","onPaginationChange","getSubRows","expanded","defaultExpanded","onExpandedChange","getRowCanExpand","maxDepth","pinnedColumns","gridRef","children","onRowClick","searchValue","defaultSearchValue","onSearchValueChange","queryMode","loading","loadingVariant","loadingRowCount","renderLoadingCell","emptyState","noResultsState","filteredResultCount","totalResultCount","onClearSearch","onClearFilters","labels","labelOverrides","rowHeight","headerHeight","ariaLabel","ariaLabelledBy","scrollContainerRef","resolvedSearchValue","setResolvedSearchValue","prop","defaultProp","onChange","resolvedSorting","setResolvedSorting","resolvedRowSelection","setResolvedRowSelection","hasPagination","resolvedPagination","setResolvedPagination","pageIndex","pageSize","hasExpanding","resolvedExpanded","setResolvedExpanded","resolvedColumnSizing","setResolvedColumnSizing","isClientSorting","isClientPagination","columnPinning","left","right","pinnedColumnIds","Set","lastPinnedColumnId","length","table","state","globalFilter","autoResetExpanded","enableSubRowSelection","columnResizeMode","defaultColumn","manualFiltering","rows","getRowModel","headerGroups","getHeaderGroups","visibleColumns","getVisibleFlatColumns","resolvedRowHeight","resolvedHeaderHeight","resolvedLoadingRowCount","shouldRenderSkeleton","hideRowsForLoading","hasActiveServerSearch","hasNoRows","hasNoResults","virtualizer","count","getScrollElement","current","estimateSize","overscan","bodyHeight","getTotalSize","bodyStyle","scrollToRow","index","scrollToIndex","resetSorting","resetSelection","resetSearch","hasFlexibleColumn","some","column","columnDef","has","id","gridTemplateColumns","map","columnSize","getSize","isLastColumn","join","scrollContainerStyle","isResizingColumn","Boolean","getState","columnSizingInfo","clientFilteredCount","clientTotalCount","contextValue","setSearchValue","filteredCount","totalCount","selectedRowCount","Provider","value","div","data-slot","data-query-mode","data-filtered-result-count","data-total-result-count","ref","style","role","aria-rowcount","aria-colcount","aria-label","aria-labelledby","headerGroup","headerRowIndex","Array","from","_","rowIndex","aria-hidden","height","transform","colIndex","isPinned","isLastPinned","position","getStart","zIndex","columnId","columnIndex","getVirtualItems","virtualRow","row","headerGroupCount","renderDataGridState","type","description","action","variant","onClick","selectedCount","onClear","DataGridCheckbox","checked","onCheckedChange","disabled","checkboxAriaLabel","isIndeterminate","isChecked","Root","indeterminate","next","Indicator","stroke","DataGridCheckboxHeader","allSelected","getIsAllPageRowsSelected","someSelected","getIsSomePageRowsSelected","toggleAllPageRowsSelected","DataGridCheckboxCell","getCanSelect","toggleSelected","DataGridSearch","placeholder","props","useDataGridContext","event","target","displayName","DataGridResultCountBadge","label","content","fallback","isDataGridStateCopy","DataGridState","as","DataGridFilterTrigger","activeCount","activeLabel","placement","hasActiveFilters","data-placement","data-active-count","context","Error","DataGridFilterPanel","DataGridFooter","DataGridFooterEnd","DataGridFooterStart","DataGridHeader","DataGridHeaderActions","DataGridHeaderEnd","DataGridHeaderStart","DataGridSubtitle","DataGridTitle"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/data-grid/data-grid.tsx"],"sourcesContent":["import {\n type ComponentProps,\n type ComponentRef,\n type CSSProperties,\n type ForwardRefExoticComponent,\n type ReactElement,\n type ReactNode,\n type Ref,\n type RefAttributes,\n type RefObject,\n createContext,\n forwardRef,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { IconCheck, IconFilter, IconMinus } from '@tabler/icons-react';\nimport {\n type CellContext,\n type ColumnDef,\n type ColumnPinningState,\n type ColumnSizingState,\n type ExpandedState,\n type FilterFnOption,\n type PaginationState,\n type Row,\n type RowSelectionState,\n type Table,\n type SortingState,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useVirtualizer } from '@tanstack/react-virtual';\n\nimport { useControllableState } from '../../../../lib/use-controllable-state';\nimport { cn, focusState } from '../../../../lib/utils';\nimport { Button } from '../button/button';\nimport {\n EmptyState,\n EmptyStateActions,\n EmptyStateDescription,\n EmptyStateIcon,\n EmptyStateTitle,\n} from '../empty-state/empty-state';\nimport type { EmptyStateType } from '../empty-state/empty-state.context';\nimport { Search } from '../search/search';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { StatusText } from '../status-text/status-text';\n\nimport { DataGridCell } from './data-grid-cell';\nimport { DataGridHeaderRow } from './data-grid-header-row';\nimport { DataGridRow } from './data-grid-row';\nimport {\n countSelectedRowIds,\n getDataGridCheckboxState,\n selectDataGridRowTree,\n} from './data-grid-selection-state';\nimport { DataGridSelectionToolbar } from './data-grid-selection-toolbar';\nimport type { DataGridSelectionActions } from './data-grid-selection.types';\nimport { PINNED_COLUMN_Z_INDEX, getTextValue } from './data-grid.utils';\n\nconst EMPTY_PINNED_COLUMNS: string[] = [];\n\nfunction defaultDataGridCell<TData>({\n renderValue,\n}: CellContext<TData, unknown>): ReactNode {\n const text = getTextValue(renderValue());\n if (text === undefined) return null;\n\n return (\n <span className=\"block min-w-0 truncate\" title={text}>\n {text}\n </span>\n );\n}\n\nconst DEFAULT_COLUMN = {\n cell: defaultDataGridCell,\n size: undefined,\n};\n\ntype DataGridContextValue = {\n searchValue: string;\n setSearchValue: (value: string) => void;\n filteredCount?: number;\n totalCount?: number;\n};\n\nconst DataGridContext = createContext<DataGridContextValue | undefined>(\n undefined\n);\n\ntype DataGridSize = 'default' | 'compact';\ntype DataGridQueryMode = 'client' | 'server';\ntype DataGridLoadingVariant = 'skeleton' | 'none';\n\ntype DataGridStateCopyFields = {\n title: string;\n description: string;\n action: ReactNode;\n};\n\ntype AtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends keyof T\n ? Pick<Required<T>, Keys> & Partial<Omit<T, Keys>>\n : never;\n\ntype DataGridStateCopy = AtLeastOne<DataGridStateCopyFields>;\n\ntype DataGridLabels = {\n clearSearch: string;\n clearFilters: string;\n};\n\nconst defaultDataGridLabels: DataGridLabels = {\n clearSearch: 'Clear search',\n clearFilters: 'Clear filters',\n};\n\ntype DataGridLoadingCellContext = {\n rowIndex: number;\n columnId: string;\n columnIndex: number;\n size: DataGridSize;\n};\n\nconst ROW_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\nconst HEADER_HEIGHT_MAP: Record<DataGridSize, number> = {\n default: 36,\n compact: 32,\n};\n\ntype DataGridHandle = {\n scrollToRow: (index: number) => void;\n resetSorting: () => void;\n resetSelection: () => void;\n resetSearch: () => void;\n};\n\ntype DataGridBaseProps<TData> = {\n data: TData[];\n columns: ColumnDef<TData>[];\n getRowId?: (originalRow: TData, index: number) => string;\n rowCount?: number;\n globalFilterFn?: FilterFnOption<TData>;\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean);\n enableSorting?: boolean;\n enableColumnResizing?: boolean;\n columnGrow?: boolean;\n columnSizing?: ColumnSizingState;\n defaultColumnSizing?: ColumnSizingState;\n onColumnSizingChange?: (value: ColumnSizingState) => void;\n manualPagination?: boolean;\n manualSorting?: boolean;\n rowSelection?: RowSelectionState;\n defaultRowSelection?: RowSelectionState;\n onRowSelectionChange?: (value: RowSelectionState) => void;\n selectionActions?: DataGridSelectionActions;\n sorting?: SortingState;\n defaultSorting?: SortingState;\n onSortingChange?: (value: SortingState) => void;\n pagination?: PaginationState;\n defaultPagination?: PaginationState;\n onPaginationChange?: (value: PaginationState) => void;\n getSubRows?: (row: TData, index: number) => TData[] | undefined;\n expanded?: ExpandedState;\n defaultExpanded?: ExpandedState;\n onExpandedChange?: (value: ExpandedState) => void;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n maxDepth?: number;\n pinnedColumns?: string[];\n // forwardRef cannot preserve the `TData` generic, so the imperative handle\n // is exposed via a ref-object prop instead of `forwardRef` + `useImperativeHandle`.\n // See https://github.com/facebook/react/issues/22018.\n gridRef?: RefObject<DataGridHandle | null>;\n size?: DataGridSize;\n children?: ReactNode;\n className?: string;\n onRowClick?: (row: Row<TData>) => void;\n searchValue?: string;\n defaultSearchValue?: string;\n onSearchValueChange?: (value: string) => void;\n queryMode?: DataGridQueryMode;\n loading?: boolean;\n loadingVariant?: DataGridLoadingVariant;\n loadingRowCount?: number;\n renderLoadingCell?: (ctx: DataGridLoadingCellContext) => ReactNode;\n emptyState?: ReactNode | DataGridStateCopy;\n noResultsState?: ReactNode | DataGridStateCopy;\n onClearSearch?: () => void;\n onClearFilters?: () => void;\n labels?: Partial<DataGridLabels>;\n filteredResultCount?: number;\n totalResultCount?: number;\n rowHeight?: number;\n headerHeight?: number;\n};\n\n// The grid renders with `role=\"table\"`, which requires an accessible name for\n// screen readers. It is bad practice to omit one, so the type requires at least\n// one of `aria-label` / `aria-labelledby` rather than leaving both optional.\ntype DataGridAccessibleNameProps =\n | { 'aria-label': string; 'aria-labelledby'?: string }\n | { 'aria-labelledby': string; 'aria-label'?: string };\n\ntype DataGridProps<TData> = DataGridBaseProps<TData> &\n DataGridAccessibleNameProps;\n\nfunction DataGrid<TData>({\n data,\n columns,\n getRowId,\n rowCount,\n globalFilterFn = 'auto',\n enableRowSelection = false,\n enableSorting = false,\n enableColumnResizing = false,\n columnGrow = false,\n columnSizing,\n defaultColumnSizing,\n onColumnSizingChange,\n manualPagination = false,\n manualSorting = false,\n rowSelection,\n defaultRowSelection,\n onRowSelectionChange,\n selectionActions,\n sorting,\n defaultSorting,\n onSortingChange,\n pagination,\n defaultPagination,\n onPaginationChange,\n getSubRows,\n expanded,\n defaultExpanded,\n onExpandedChange,\n getRowCanExpand,\n maxDepth = 5,\n pinnedColumns = EMPTY_PINNED_COLUMNS,\n gridRef,\n size = 'default',\n children,\n className,\n onRowClick,\n searchValue,\n defaultSearchValue,\n onSearchValueChange,\n queryMode = 'client',\n loading = false,\n loadingVariant = 'skeleton',\n loadingRowCount,\n renderLoadingCell,\n emptyState,\n noResultsState,\n filteredResultCount,\n totalResultCount,\n onClearSearch,\n onClearFilters,\n labels: labelOverrides,\n rowHeight,\n headerHeight,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n}: DataGridProps<TData>): ReactElement {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const labels = { ...defaultDataGridLabels, ...labelOverrides };\n\n const [resolvedSearchValue, setResolvedSearchValue] = useControllableState({\n prop: searchValue,\n defaultProp: defaultSearchValue ?? '',\n onChange: onSearchValueChange,\n });\n\n const [resolvedSorting, setResolvedSorting] =\n useControllableState<SortingState>({\n prop: sorting,\n defaultProp: defaultSorting ?? [],\n onChange: onSortingChange,\n });\n\n const [resolvedRowSelection, setResolvedRowSelection] =\n useControllableState<RowSelectionState>({\n prop: rowSelection,\n defaultProp: defaultRowSelection ?? {},\n onChange: onRowSelectionChange,\n });\n\n const hasPagination =\n pagination !== undefined || defaultPagination !== undefined;\n\n const [resolvedPagination, setResolvedPagination] =\n useControllableState<PaginationState>({\n prop: pagination,\n defaultProp: defaultPagination ?? { pageIndex: 0, pageSize: 10 },\n onChange: onPaginationChange,\n });\n\n const hasExpanding = getSubRows !== undefined;\n\n const [resolvedExpanded, setResolvedExpanded] =\n useControllableState<ExpandedState>({\n prop: expanded,\n defaultProp: defaultExpanded ?? {},\n onChange: onExpandedChange,\n });\n\n const [resolvedColumnSizing, setResolvedColumnSizing] =\n useControllableState<ColumnSizingState>({\n prop: columnSizing,\n defaultProp: defaultColumnSizing ?? {},\n onChange: onColumnSizingChange,\n });\n\n const isClientSorting = enableSorting && !manualSorting;\n const isClientPagination = hasPagination && !manualPagination;\n\n const columnPinning: ColumnPinningState = useMemo(\n () => ({ left: pinnedColumns, right: [] }),\n [pinnedColumns]\n );\n\n const pinnedColumnIds = useMemo(\n () => new Set(pinnedColumns),\n [pinnedColumns]\n );\n const lastPinnedColumnId = pinnedColumns[pinnedColumns.length - 1];\n // eslint-disable-next-line react-hooks/incompatible-library -- useReactTable in the DataGrid component is intentional and stable.\n const table = useReactTable({\n data,\n columns,\n state: {\n columnPinning,\n globalFilter: resolvedSearchValue,\n sorting: resolvedSorting,\n rowSelection: resolvedRowSelection,\n columnSizing: resolvedColumnSizing,\n ...(hasPagination ? { pagination: resolvedPagination } : {}),\n ...(hasExpanding ? { expanded: resolvedExpanded } : {}),\n },\n onSortingChange: setResolvedSorting,\n onRowSelectionChange: setResolvedRowSelection,\n onColumnSizingChange: setResolvedColumnSizing,\n ...(hasPagination ? { onPaginationChange: setResolvedPagination } : {}),\n ...(hasExpanding ? { onExpandedChange: setResolvedExpanded } : {}),\n // Preserve expanded rows across `data` changes (e.g. refetches) so the user\n // doesn't lose their place. Consumers fetching server-paged data should\n // ensure stable `getRowId` values; otherwise expanded keys can stick to\n // rows that no longer logically exist.\n autoResetExpanded: false,\n enableRowSelection,\n // Selecting a parent selects every descendant, including while it is collapsed.\n enableSubRowSelection: true,\n enableSorting,\n enableColumnResizing,\n columnResizeMode: 'onChange',\n defaultColumn: DEFAULT_COLUMN,\n manualPagination,\n manualSorting,\n manualFiltering: queryMode === 'server',\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n globalFilterFn,\n ...(isClientSorting ? { getSortedRowModel: getSortedRowModel() } : {}),\n ...(isClientPagination\n ? { getPaginationRowModel: getPaginationRowModel() }\n : {}),\n ...(hasExpanding ? { getExpandedRowModel: getExpandedRowModel() } : {}),\n getRowId,\n getSubRows,\n getRowCanExpand,\n });\n\n const { rows } = table.getRowModel();\n const headerGroups = table.getHeaderGroups();\n const visibleColumns = table.getVisibleFlatColumns();\n\n const resolvedRowHeight = rowHeight ?? ROW_HEIGHT_MAP[size];\n const resolvedHeaderHeight = headerHeight ?? HEADER_HEIGHT_MAP[size];\n const resolvedLoadingRowCount = loadingRowCount ?? 6;\n const shouldRenderSkeleton = loading && loadingVariant === 'skeleton';\n const hideRowsForLoading = loading && loadingVariant !== 'none';\n const hasActiveServerSearch =\n queryMode === 'server' && resolvedSearchValue !== '';\n const hasNoRows = !loading && data.length === 0 && !hasActiveServerSearch;\n const hasNoResults =\n !loading &&\n (hasActiveServerSearch\n ? data.length === 0\n : data.length > 0 && table.getFilteredRowModel().rows.length === 0);\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => resolvedRowHeight,\n overscan: 10,\n });\n const bodyHeight = shouldRenderSkeleton\n ? resolvedLoadingRowCount * resolvedRowHeight\n : virtualizer.getTotalSize();\n const bodyStyle: CSSProperties & {\n '--data-grid-body-height': string;\n '--data-grid-body-min-height': string;\n } = {\n '--data-grid-body-height': `${bodyHeight}px`,\n '--data-grid-body-min-height': `${resolvedRowHeight * 4}px`,\n };\n\n useImperativeHandle(gridRef, () => ({\n scrollToRow: (index: number) => virtualizer.scrollToIndex(index),\n resetSorting: () => setResolvedSorting([]),\n resetSelection: () => setResolvedRowSelection({}),\n resetSearch: () => setResolvedSearchValue(''),\n }));\n\n const hasFlexibleColumn =\n !enableColumnResizing &&\n !columnGrow &&\n visibleColumns.some(\n (column) =>\n column.columnDef.size === undefined && !pinnedColumnIds.has(column.id)\n );\n const gridTemplateColumns = visibleColumns\n .map((column, index) => {\n const columnSize = column.getSize();\n if (enableColumnResizing || pinnedColumnIds.has(column.id)) {\n return `${columnSize}px`;\n }\n if (columnGrow) {\n return `minmax(${columnSize}px, ${columnSize}fr)`;\n }\n const isLastColumn = index === visibleColumns.length - 1;\n if (column.columnDef.size !== undefined) {\n if (!hasFlexibleColumn && isLastColumn) {\n return `minmax(${columnSize}px, 1fr)`;\n }\n return `${columnSize}px`;\n }\n return `minmax(${columnSize}px, 1fr)`;\n })\n .join(' ');\n\n const scrollContainerStyle: CSSProperties & {\n '--data-grid-template-columns': string;\n } = {\n '--data-grid-template-columns': gridTemplateColumns,\n };\n\n const isResizingColumn = Boolean(\n table.getState().columnSizingInfo.isResizingColumn\n );\n const clientFilteredCount = table.getFilteredRowModel().rows.length;\n const clientTotalCount = table.getCoreRowModel().rows.length;\n\n const contextValue = useMemo<DataGridContextValue>(\n () => ({\n searchValue: resolvedSearchValue,\n setSearchValue: setResolvedSearchValue,\n filteredCount:\n queryMode === 'client' ? clientFilteredCount : filteredResultCount,\n totalCount: queryMode === 'client' ? clientTotalCount : totalResultCount,\n }),\n [\n resolvedSearchValue,\n setResolvedSearchValue,\n queryMode,\n clientFilteredCount,\n filteredResultCount,\n clientTotalCount,\n totalResultCount,\n ]\n );\n\n const selectedRowCount = countSelectedRowIds(resolvedRowSelection);\n\n return (\n <DataGridContext.Provider value={contextValue}>\n <div\n data-slot=\"data-grid\"\n data-query-mode={queryMode}\n data-filtered-result-count={filteredResultCount}\n data-total-result-count={totalResultCount}\n className={cn(\n 'relative flex min-h-0 w-full flex-col overflow-clip rounded-xl text-sm',\n className\n )}\n >\n {children}\n <div\n ref={scrollContainerRef}\n data-slot=\"data-grid-scroll-container\"\n className=\"relative order-2 min-h-0 w-full flex-1 overflow-auto\"\n style={scrollContainerStyle}\n role=\"table\"\n aria-rowcount={\n hideRowsForLoading\n ? headerGroups.length\n : (rowCount ?? rows.length) + headerGroups.length\n }\n aria-colcount={visibleColumns.length}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div\n className={cn(\n 'min-w-fit w-full',\n enableRowSelection !== false && selectedRowCount > 0 && 'pb-24'\n )}\n >\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-header-group\"\n className=\"contents\"\n >\n {headerGroups.map((headerGroup, headerRowIndex) => (\n <DataGridHeaderRow\n key={headerGroup.id}\n headerGroup={headerGroup}\n headerRowIndex={headerRowIndex}\n resolvedHeaderHeight={resolvedHeaderHeight}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n isResizingColumn={isResizingColumn}\n />\n ))}\n </div>\n\n <div\n role=\"rowgroup\"\n data-slot=\"data-grid-body\"\n className={cn(\n 'relative min-h-(--data-grid-body-min-height)',\n !hasNoRows && !hasNoResults && 'h-(--data-grid-body-height)'\n )}\n style={bodyStyle}\n >\n {shouldRenderSkeleton &&\n Array.from(\n { length: resolvedLoadingRowCount },\n (_, rowIndex) => (\n <div\n key={`skeleton-row-${rowIndex}`}\n data-slot=\"data-grid-row-loading\"\n aria-hidden=\"true\"\n className=\"absolute left-0 right-0 grid border-b bg-background\"\n style={{\n gridTemplateColumns:\n 'var(--data-grid-template-columns)',\n height: resolvedRowHeight,\n transform: `translateY(${rowIndex * resolvedRowHeight}px)`,\n }}\n >\n {visibleColumns.map((column, colIndex) => {\n const isPinned = pinnedColumnIds.has(column.id);\n const isLastPinned =\n isPinned && lastPinnedColumnId === column.id;\n return (\n <DataGridCell\n key={column.id}\n isPinned={isPinned}\n isLastPinned={isLastPinned}\n colIndex={colIndex + 1}\n style={\n isPinned\n ? {\n position: 'sticky',\n left: column.getStart('left'),\n zIndex: PINNED_COLUMN_Z_INDEX,\n }\n : undefined\n }\n >\n {renderLoadingCell?.({\n rowIndex,\n columnId: column.id,\n columnIndex: colIndex,\n size,\n }) ??\n (column.id === 'select' ? (\n <Skeleton className=\"h-4 w-4 rounded\" />\n ) : (\n <Skeleton\n className={cn(\n 'h-4 max-w-full',\n colIndex === 0 ? 'w-3/4' : 'w-2/3'\n )}\n />\n ))}\n </DataGridCell>\n );\n })}\n </div>\n )\n )}\n\n {!hideRowsForLoading &&\n !hasNoRows &&\n !hasNoResults &&\n virtualizer\n .getVirtualItems()\n .map((virtualRow) => (\n <DataGridRow\n key={rows[virtualRow.index].id}\n row={rows[virtualRow.index]}\n virtualRow={virtualRow}\n headerGroupCount={headerGroups.length}\n pinnedColumnIds={pinnedColumnIds}\n lastPinnedColumnId={lastPinnedColumnId}\n maxDepth={maxDepth}\n hasExpanding={hasExpanding}\n onRowClick={onRowClick}\n />\n ))}\n\n {!loading && hasNoRows && emptyState != null && (\n <div className=\"pt-2\">\n <div className=\"flex items-center justify-center rounded-lg bg-medium-background\">\n {renderDataGridState(emptyState, {\n type: 'new-object',\n title: 'No rows yet',\n description: 'Add data to populate this table.',\n })}\n </div>\n </div>\n )}\n\n {!loading && hasNoResults && (\n <div className=\"pt-2\">\n <div className=\"flex items-center justify-center bg-background\">\n {renderDataGridState(noResultsState, {\n type: 'no-results',\n title: 'No results found',\n description:\n queryMode === 'server'\n ? 'Apply a different query or clear filters.'\n : 'Try a different search term or clear filters.',\n action:\n onClearSearch || onClearFilters ? (\n <div className=\"mt-2 flex items-center justify-center gap-2\">\n {onClearSearch ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={onClearSearch}\n >\n {labels.clearSearch}\n </Button>\n ) : null}\n {onClearFilters ? (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={onClearFilters}\n >\n {labels.clearFilters}\n </Button>\n ) : null}\n </div>\n ) : undefined,\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n {enableRowSelection !== false ? (\n <DataGridSelectionToolbar\n // The count includes every selected id.\n // That covers parents and their children, rows on other pages, and rows hidden by search.\n selectedCount={selectedRowCount}\n rowSelection={resolvedRowSelection}\n selectionActions={selectionActions}\n onClear={() => setResolvedRowSelection({})}\n />\n ) : null}\n </div>\n </div>\n </DataGridContext.Provider>\n );\n}\n\ntype DataGridCheckboxProps = {\n checked: boolean | 'indeterminate';\n onCheckedChange: (checked: boolean | 'indeterminate') => void;\n disabled?: boolean;\n 'aria-label'?: string;\n};\n\nfunction DataGridCheckbox({\n checked,\n onCheckedChange,\n disabled,\n 'aria-label': checkboxAriaLabel,\n}: DataGridCheckboxProps): ReactElement {\n const isIndeterminate = checked === 'indeterminate';\n const isChecked = checked === true;\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n checked={isIndeterminate ? false : isChecked}\n indeterminate={isIndeterminate}\n disabled={disabled}\n onCheckedChange={(next) => onCheckedChange(next)}\n aria-label={checkboxAriaLabel}\n className={cn(\n 'peer relative size-4 shrink-0 rounded-sm border-[1.5px] border-muted-foreground bg-transparent text-foreground-on-primary outline-none transition-colors',\n '[&:is([data-checked],[data-indeterminate]):not([data-disabled])]:border-transparent [&:is([data-checked],[data-indeterminate]):not([data-disabled])]:bg-primary-background',\n 'hover:data-unchecked:not-data-disabled:border-muted-foreground-hover',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:border-transparent data-disabled:bg-disabled-background data-disabled:text-disabled-foreground data-disabled:data-unchecked:border-border',\n '[&[data-checked]_[data-slot=checkbox-check]]:block [&[data-indeterminate]_[data-slot=checkbox-dash]]:block',\n focusState\n )}\n >\n <CheckboxPrimitive.Indicator className=\"grid size-full place-content-center text-current transition-none\">\n <IconCheck\n aria-hidden=\"true\"\n data-slot=\"checkbox-check\"\n className=\"hidden size-3\"\n stroke={3}\n />\n <IconMinus\n aria-hidden=\"true\"\n data-slot=\"checkbox-dash\"\n className=\"hidden size-3\"\n stroke={3.5}\n />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nfunction DataGridCheckboxHeader<TData>({\n table,\n}: {\n table: Table<TData>;\n}): ReactElement {\n const allSelected = table.getIsAllPageRowsSelected();\n const someSelected = table.getIsSomePageRowsSelected();\n const checked = allSelected ? true : someSelected ? 'indeterminate' : false;\n\n return (\n <DataGridCheckbox\n checked={checked}\n onCheckedChange={() => table.toggleAllPageRowsSelected(!allSelected)}\n aria-label=\"Select all rows\"\n />\n );\n}\n\nfunction DataGridCheckboxCell<TData>({\n row,\n}: {\n row: Row<TData>;\n}): ReactElement {\n return (\n <DataGridCheckbox\n checked={getDataGridCheckboxState(row)}\n disabled={!row.getCanSelect()}\n onCheckedChange={(next) => {\n if (next === true) {\n selectDataGridRowTree(row);\n return;\n }\n row.toggleSelected(false);\n }}\n aria-label=\"Select row\"\n />\n );\n}\n\ntype DataGridSearchProps = Omit<\n ComponentProps<typeof Search>,\n 'value' | 'onChange' | 'onClear'\n>;\n\nconst DataGridSearch: ForwardRefExoticComponent<\n DataGridSearchProps & RefAttributes<ComponentRef<typeof Search>>\n> = forwardRef<ComponentRef<typeof Search>, DataGridSearchProps>(\n function DataGridSearch(\n { className, placeholder = 'Search', ...props },\n ref\n ) {\n const { searchValue, setSearchValue } = useDataGridContext();\n\n return (\n <Search\n ref={ref}\n value={searchValue}\n onChange={(event) => setSearchValue(event.target.value)}\n onClear={() => setSearchValue('')}\n placeholder={placeholder}\n className={cn('py-4', className)}\n {...props}\n />\n );\n }\n);\nDataGridSearch.displayName = 'DataGridSearch';\n\ntype DataGridResultCountProps = Omit<ComponentProps<'output'>, 'children'> & {\n formatLabel?: (filteredCount: number, totalCount?: number) => ReactNode;\n};\n\nfunction defaultFormatResultCount(\n filteredCount: number,\n totalCount?: number\n): string {\n const noun = (totalCount ?? filteredCount) === 1 ? 'result' : 'results';\n return totalCount === undefined\n ? `Showing ${filteredCount.toLocaleString('en')} ${noun}`\n : `Showing ${filteredCount.toLocaleString('en')} of ${totalCount.toLocaleString('en')} ${noun}`;\n}\n\nconst DataGridResultCount: ForwardRefExoticComponent<\n DataGridResultCountProps & RefAttributes<HTMLOutputElement>\n> = forwardRef<ComponentRef<'output'>, DataGridResultCountProps>(\n function DataGridResultCount(\n { formatLabel = defaultFormatResultCount, ...props },\n ref\n ) {\n const { filteredCount, totalCount } = useDataGridContext();\n\n // Nothing to say until the grid has counted.\n if (filteredCount === undefined) return null;\n\n const content = formatLabel(filteredCount, totalCount);\n\n if (content == null) return null;\n\n return (\n // Not live by default: it changes on every search keystroke, which screen readers would read out.\n <StatusText\n ref={ref}\n data-slot=\"data-grid-result-count\"\n aria-live=\"off\"\n {...props}\n >\n {content}\n </StatusText>\n );\n }\n);\nDataGridResultCount.displayName = 'DataGridResultCount';\n\nfunction renderDataGridState(\n state: ReactNode | DataGridStateCopy | undefined,\n fallback: { type: EmptyStateType } & Pick<\n DataGridStateCopyFields,\n 'title' | 'description'\n > &\n Partial<Pick<DataGridStateCopyFields, 'action'>>\n): ReactNode {\n if (isDataGridStateCopy(state)) {\n return (\n <DataGridState\n type={fallback.type}\n title={state.title ?? fallback.title}\n description={state.description ?? fallback.description}\n action={state.action !== undefined ? state.action : fallback.action}\n />\n );\n }\n\n if (state !== undefined) return state;\n\n return (\n <DataGridState\n type={fallback.type}\n title={fallback.title}\n description={fallback.description}\n action={fallback.action}\n />\n );\n}\n\nfunction isDataGridStateCopy(value: unknown): value is DataGridStateCopy {\n return (\n typeof value === 'object' &&\n value !== null &&\n !('type' in value) &&\n ('title' in value || 'description' in value || 'action' in value)\n );\n}\n\nfunction DataGridState({\n type,\n title,\n description,\n action,\n}: { type: EmptyStateType } & Pick<\n DataGridStateCopyFields,\n 'title' | 'description'\n> &\n Partial<Pick<DataGridStateCopyFields, 'action'>>): ReactElement {\n return (\n <EmptyState type={type} className=\"p-10\">\n <EmptyStateIcon />\n <EmptyStateTitle as=\"p\">{title}</EmptyStateTitle>\n <EmptyStateDescription>{description}</EmptyStateDescription>\n {action ? <EmptyStateActions>{action}</EmptyStateActions> : null}\n </EmptyState>\n );\n}\n\ntype DataGridFilterTriggerProps = ComponentProps<typeof Button> & {\n activeCount?: number;\n label?: string;\n activeLabel?: (activeCount: number) => string;\n placement?: 'toolbar' | 'column-header';\n};\n\nconst DataGridFilterTrigger: ForwardRefExoticComponent<\n DataGridFilterTriggerProps & RefAttributes<ComponentRef<typeof Button>>\n> = forwardRef<ComponentRef<typeof Button>, DataGridFilterTriggerProps>(\n function DataGridFilterTrigger(\n {\n activeCount = 0,\n label = 'Filters',\n activeLabel,\n placement = 'toolbar',\n className,\n children,\n ...props\n }: DataGridFilterTriggerProps,\n ref: Ref<ComponentRef<typeof Button>>\n ) {\n const hasActiveFilters = activeCount > 0;\n\n return (\n <Button\n ref={ref}\n data-slot=\"data-grid-filter-trigger\"\n data-placement={placement}\n data-active-count={activeCount}\n size={placement === 'column-header' ? 'icon-sm' : 'icon'}\n variant={hasActiveFilters ? 'secondary' : 'ghost'}\n className={cn('min-w-0', className)}\n aria-label={\n hasActiveFilters\n ? (activeLabel?.(activeCount) ?? `${label}, ${activeCount} active`)\n : label\n }\n {...props}\n >\n {children ?? (\n <IconFilter className=\"size-4 shrink-0\" aria-hidden=\"true\" />\n )}\n </Button>\n );\n }\n);\nDataGridFilterTrigger.displayName = 'DataGridFilterTrigger';\n\nfunction useDataGridContext(): DataGridContextValue {\n const context = useContext(DataGridContext);\n if (!context) {\n throw new Error('useDataGridContext must be used within a DataGrid');\n }\n return context;\n}\nexport {\n DataGrid,\n DataGridCheckboxCell,\n DataGridCheckboxHeader,\n DataGridResultCount,\n DataGridFilterTrigger,\n DataGridSearch,\n useDataGridContext,\n type DataGridContextValue,\n type DataGridHandle,\n type DataGridLabels,\n};\nexport {\n DataGridFilterPanel,\n type DataGridFilterColumn,\n type DataGridFilterPanelLabels,\n} from './data-grid-filter-panel';\nexport {\n DataGridFooter,\n DataGridFooterEnd,\n DataGridFooterStart,\n} from './data-grid-footer';\nexport {\n DataGridHeader,\n DataGridHeaderActions,\n DataGridHeaderEnd,\n DataGridHeaderStart,\n DataGridSubtitle,\n DataGridTitle,\n} from './data-grid-header';\n"],"names":["createContext","forwardRef","useContext","useImperativeHandle","useMemo","useRef","Checkbox","CheckboxPrimitive","IconCheck","IconFilter","IconMinus","getCoreRowModel","getExpandedRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","useReactTable","useVirtualizer","useControllableState","cn","focusState","Button","EmptyState","EmptyStateActions","EmptyStateDescription","EmptyStateIcon","EmptyStateTitle","Search","Skeleton","StatusText","DataGridCell","DataGridHeaderRow","DataGridRow","countSelectedRowIds","getDataGridCheckboxState","selectDataGridRowTree","DataGridSelectionToolbar","PINNED_COLUMN_Z_INDEX","getTextValue","EMPTY_PINNED_COLUMNS","defaultDataGridCell","renderValue","text","undefined","span","className","title","DEFAULT_COLUMN","cell","size","DataGridContext","defaultDataGridLabels","clearSearch","clearFilters","ROW_HEIGHT_MAP","default","compact","HEADER_HEIGHT_MAP","DataGrid","data","columns","getRowId","rowCount","globalFilterFn","enableRowSelection","enableSorting","enableColumnResizing","columnGrow","columnSizing","defaultColumnSizing","onColumnSizingChange","manualPagination","manualSorting","rowSelection","defaultRowSelection","onRowSelectionChange","selectionActions","sorting","defaultSorting","onSortingChange","pagination","defaultPagination","onPaginationChange","getSubRows","expanded","defaultExpanded","onExpandedChange","getRowCanExpand","maxDepth","pinnedColumns","gridRef","children","onRowClick","searchValue","defaultSearchValue","onSearchValueChange","queryMode","loading","loadingVariant","loadingRowCount","renderLoadingCell","emptyState","noResultsState","filteredResultCount","totalResultCount","onClearSearch","onClearFilters","labels","labelOverrides","rowHeight","headerHeight","ariaLabel","ariaLabelledBy","scrollContainerRef","resolvedSearchValue","setResolvedSearchValue","prop","defaultProp","onChange","resolvedSorting","setResolvedSorting","resolvedRowSelection","setResolvedRowSelection","hasPagination","resolvedPagination","setResolvedPagination","pageIndex","pageSize","hasExpanding","resolvedExpanded","setResolvedExpanded","resolvedColumnSizing","setResolvedColumnSizing","isClientSorting","isClientPagination","columnPinning","left","right","pinnedColumnIds","Set","lastPinnedColumnId","length","table","state","globalFilter","autoResetExpanded","enableSubRowSelection","columnResizeMode","defaultColumn","manualFiltering","rows","getRowModel","headerGroups","getHeaderGroups","visibleColumns","getVisibleFlatColumns","resolvedRowHeight","resolvedHeaderHeight","resolvedLoadingRowCount","shouldRenderSkeleton","hideRowsForLoading","hasActiveServerSearch","hasNoRows","hasNoResults","virtualizer","count","getScrollElement","current","estimateSize","overscan","bodyHeight","getTotalSize","bodyStyle","scrollToRow","index","scrollToIndex","resetSorting","resetSelection","resetSearch","hasFlexibleColumn","some","column","columnDef","has","id","gridTemplateColumns","map","columnSize","getSize","isLastColumn","join","scrollContainerStyle","isResizingColumn","Boolean","getState","columnSizingInfo","clientFilteredCount","clientTotalCount","contextValue","setSearchValue","filteredCount","totalCount","selectedRowCount","Provider","value","div","data-slot","data-query-mode","data-filtered-result-count","data-total-result-count","ref","style","role","aria-rowcount","aria-colcount","aria-label","aria-labelledby","headerGroup","headerRowIndex","Array","from","_","rowIndex","aria-hidden","height","transform","colIndex","isPinned","isLastPinned","position","getStart","zIndex","columnId","columnIndex","getVirtualItems","virtualRow","row","headerGroupCount","renderDataGridState","type","description","action","variant","onClick","selectedCount","onClear","DataGridCheckbox","checked","onCheckedChange","disabled","checkboxAriaLabel","isIndeterminate","isChecked","Root","indeterminate","next","Indicator","stroke","DataGridCheckboxHeader","allSelected","getIsAllPageRowsSelected","someSelected","getIsSomePageRowsSelected","toggleAllPageRowsSelected","DataGridCheckboxCell","getCanSelect","toggleSelected","DataGridSearch","placeholder","props","useDataGridContext","event","target","displayName","defaultFormatResultCount","noun","toLocaleString","DataGridResultCount","formatLabel","content","aria-live","fallback","isDataGridStateCopy","DataGridState","as","DataGridFilterTrigger","activeCount","label","activeLabel","placement","hasActiveFilters","data-placement","data-active-count","context","Error","DataGridFilterPanel","DataGridFooter","DataGridFooterEnd","DataGridFooterStart","DataGridHeader","DataGridHeaderActions","DataGridHeaderEnd","DataGridHeaderStart","DataGridSubtitle","DataGridTitle"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export type { ColumnDef, PaginationState } from "@tanstack/react-table";
2
- export { DataGrid, DataGridFilterTrigger, DataGridResultCountBadge, DataGridSearch, useDataGridContext, type DataGridContextValue, type DataGridHandle, type DataGridLabels } from "./data-grid";
2
+ export { DataGrid, DataGridFilterTrigger, DataGridFooter, DataGridFooterEnd, DataGridFooterStart, DataGridHeader, DataGridHeaderActions, DataGridHeaderEnd, DataGridHeaderStart, DataGridResultCount, DataGridSearch, DataGridSubtitle, DataGridTitle, useDataGridContext, type DataGridContextValue, type DataGridHandle, type DataGridLabels } from "./data-grid";
3
3
  export type { DataGridSecondaryAction, DataGridSelectionAction, DataGridSelectionActions } from "./data-grid-selection.types";
4
4
  export { applyDataGridFilterClauses, matchesDataGridFilterClause, type DataGridFilterClause, type DataGridFilterJoin, type DataGridFilterOperator } from "./data-grid-filter-clauses";
5
5
  export { DataGridFilterPanel, type DataGridFilterColumn, type DataGridFilterPanelLabels } from "./data-grid-filter-panel";
@@ -1,4 +1,4 @@
1
- export { DataGrid, DataGridFilterTrigger, DataGridResultCountBadge, DataGridSearch, useDataGridContext } from "./data-grid.js";
1
+ export { DataGrid, DataGridFilterTrigger, DataGridFooter, DataGridFooterEnd, DataGridFooterStart, DataGridHeader, DataGridHeaderActions, DataGridHeaderEnd, DataGridHeaderStart, DataGridResultCount, DataGridSearch, DataGridSubtitle, DataGridTitle, useDataGridContext } from "./data-grid.js";
2
2
  export { applyDataGridFilterClauses, matchesDataGridFilterClause } from "./data-grid-filter-clauses.js";
3
3
  export { DataGridFilterPanel } from "./data-grid-filter-panel.js";
4
4
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ui/core/data-grid/index.ts"],"sourcesContent":["export type { ColumnDef, PaginationState } from '@tanstack/react-table';\nexport {\n DataGrid,\n DataGridFilterTrigger,\n DataGridResultCountBadge,\n DataGridSearch,\n useDataGridContext,\n type DataGridContextValue,\n type DataGridHandle,\n type DataGridLabels,\n} from './data-grid';\nexport type {\n DataGridSecondaryAction,\n DataGridSelectionAction,\n DataGridSelectionActions,\n} from './data-grid-selection.types';\nexport {\n applyDataGridFilterClauses,\n matchesDataGridFilterClause,\n type DataGridFilterClause,\n type DataGridFilterJoin,\n type DataGridFilterOperator,\n} from './data-grid-filter-clauses';\nexport {\n DataGridFilterPanel,\n type DataGridFilterColumn,\n type DataGridFilterPanelLabels,\n} from './data-grid-filter-panel';\n"],"names":["DataGrid","DataGridFilterTrigger","DataGridResultCountBadge","DataGridSearch","useDataGridContext","applyDataGridFilterClauses","matchesDataGridFilterClause","DataGridFilterPanel"],"mappings":"AACA,SACEA,QAAQ,EACRC,qBAAqB,EACrBC,wBAAwB,EACxBC,cAAc,EACdC,kBAAkB,QAIb,iBAAc;AAMrB,SACEC,0BAA0B,EAC1BC,2BAA2B,QAItB,gCAA6B;AACpC,SACEC,mBAAmB,QAGd,8BAA2B"}
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/data-grid/index.ts"],"sourcesContent":["export type { ColumnDef, PaginationState } from '@tanstack/react-table';\nexport {\n DataGrid,\n DataGridFilterTrigger,\n DataGridFooter,\n DataGridFooterEnd,\n DataGridFooterStart,\n DataGridHeader,\n DataGridHeaderActions,\n DataGridHeaderEnd,\n DataGridHeaderStart,\n DataGridResultCount,\n DataGridSearch,\n DataGridSubtitle,\n DataGridTitle,\n useDataGridContext,\n type DataGridContextValue,\n type DataGridHandle,\n type DataGridLabels,\n} from './data-grid';\nexport type {\n DataGridSecondaryAction,\n DataGridSelectionAction,\n DataGridSelectionActions,\n} from './data-grid-selection.types';\nexport {\n applyDataGridFilterClauses,\n matchesDataGridFilterClause,\n type DataGridFilterClause,\n type DataGridFilterJoin,\n type DataGridFilterOperator,\n} from './data-grid-filter-clauses';\nexport {\n DataGridFilterPanel,\n type DataGridFilterColumn,\n type DataGridFilterPanelLabels,\n} from './data-grid-filter-panel';\n"],"names":["DataGrid","DataGridFilterTrigger","DataGridFooter","DataGridFooterEnd","DataGridFooterStart","DataGridHeader","DataGridHeaderActions","DataGridHeaderEnd","DataGridHeaderStart","DataGridResultCount","DataGridSearch","DataGridSubtitle","DataGridTitle","useDataGridContext","applyDataGridFilterClauses","matchesDataGridFilterClause","DataGridFilterPanel"],"mappings":"AACA,SACEA,QAAQ,EACRC,qBAAqB,EACrBC,cAAc,EACdC,iBAAiB,EACjBC,mBAAmB,EACnBC,cAAc,EACdC,qBAAqB,EACrBC,iBAAiB,EACjBC,mBAAmB,EACnBC,mBAAmB,EACnBC,cAAc,EACdC,gBAAgB,EAChBC,aAAa,EACbC,kBAAkB,QAIb,iBAAc;AAMrB,SACEC,0BAA0B,EAC1BC,2BAA2B,QAItB,gCAA6B;AACpC,SACEC,mBAAmB,QAGd,8BAA2B"}
@@ -5,6 +5,7 @@ import { cva } from "class-variance-authority";
5
5
  import { cn } from "../../../../lib/utils.js";
6
6
  import { Button } from "../button/button.js";
7
7
  import { SelectTrigger } from "../select/select.js";
8
+ import { StatusText } from "../status-text/status-text.js";
8
9
  import { PaginationSizeContext, usePaginationSize } from "./pagination-size-context.js";
9
10
  import { PaginationTeleport } from "./pagination-teleport.js";
10
11
  const paginationLinkVariants = cva('border border-transparent text-base font-normal leading-5 tracking-tightest focus-visible:shadow-focus-ring', {
@@ -111,11 +112,10 @@ const PaginationItem = /*#__PURE__*/ forwardRef((props, ref)=>{
111
112
  });
112
113
  });
113
114
  PaginationItem.displayName = 'PaginationItem';
114
- const PaginationStatus = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>{
115
- return /*#__PURE__*/ _jsx("output", {
115
+ const PaginationStatus = /*#__PURE__*/ forwardRef((props, ref)=>{
116
+ return /*#__PURE__*/ _jsx(StatusText, {
116
117
  ref: ref,
117
118
  "data-slot": "pagination-status",
118
- className: cn('flex items-center text-sm leading-4.5 tracking-tight font-normal text-muted-foreground', className),
119
119
  ...props
120
120
  });
121
121
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ui/core/pagination/pagination.tsx"],"sourcesContent":["import {\n type ForwardRefExoticComponent,\n type RefAttributes,\n type ComponentProps,\n type ComponentRef,\n type MouseEvent,\n type ReactNode,\n forwardRef,\n} from 'react';\n\nimport type { SelectTriggerProps } from '@base-ui/react';\nimport {\n IconChevronLeft,\n IconChevronRight,\n IconChevronsLeft,\n IconChevronsRight,\n IconDots,\n} from '@tabler/icons-react';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../../../lib/utils';\nimport { Button } from '../button/button';\nimport { SelectTrigger } from '../select/select';\n\nimport {\n type PaginationSize,\n PaginationSizeContext,\n usePaginationSize,\n} from './pagination-size-context';\nimport { PaginationTeleport } from './pagination-teleport';\n\nconst paginationLinkVariants = cva(\n 'border border-transparent text-base font-normal leading-5 tracking-tightest focus-visible:shadow-focus-ring',\n {\n variants: {\n size: {\n default: '',\n small: 'text-sm leading-4.5 tracking-tight',\n },\n active: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n active: false,\n className:\n 'text-medium-foreground hover:bg-base-background-hover hover:text-base-foreground focus-visible:bg-medium-background focus-visible:text-base-foreground',\n },\n {\n active: true,\n className:\n 'border-emphasized bg-secondary-background text-secondary-foreground hover:bg-base-background-hover hover:text-secondary-foreground focus-visible:bg-secondary-background focus-visible:text-secondary-foreground',\n },\n ],\n defaultVariants: {\n size: 'default',\n active: false,\n },\n }\n);\n\nconst paginationEllipsisVariants = cva(\n 'flex items-center justify-center text-medium-foreground',\n {\n variants: {\n size: {\n default: 'h-9 w-9',\n small: 'h-7 w-7',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nconst paginationSelectTriggerVariants = cva(\n 'w-auto whitespace-nowrap min-h-0',\n {\n variants: {\n size: {\n default: 'h-9 gap-2 rounded-lg px-3 min-w-19',\n sm: 'h-7 gap-1.5 rounded-md px-2 min-w-16',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nconst ICON_BUTTON_WIDTH_BY_SIZE: Record<PaginationSize, string> = {\n small: 'max-w-7',\n default: 'max-w-9',\n};\n\nconst TEXT_LINK_WIDTH_BY_SIZE: Record<PaginationSize, string> = {\n small: 'min-w-7',\n default: 'min-w-9',\n};\n\ntype PaginationButtonSize = 'default' | 'sm';\ntype PaginationRadiusClass = 'rounded-md' | 'rounded-lg';\n\nconst getPaginationButtonStyles = (size: PaginationSize = 'default') => {\n const buttonSize: PaginationButtonSize = size === 'small' ? 'sm' : 'default';\n const radiusClass: PaginationRadiusClass =\n size === 'small' ? 'rounded-md' : 'rounded-lg';\n const iconButtonWidth = ICON_BUTTON_WIDTH_BY_SIZE[size];\n const textLinkWidth = TEXT_LINK_WIDTH_BY_SIZE[size];\n\n return {\n buttonSize,\n radiusClass,\n iconButtonWidth,\n textLinkWidth,\n };\n};\n\nconst Pagination: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'nav'> & {\n size?: PaginationSize;\n },\n 'ref'\n > &\n RefAttributes<HTMLElement>\n> = forwardRef<\n ComponentRef<'nav'>,\n ComponentProps<'nav'> & { size?: PaginationSize }\n>(({ className, size = 'default', ...props }, ref) => {\n return (\n <PaginationSizeContext.Provider value={size}>\n <nav\n ref={ref}\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center gap-2', className)}\n {...props}\n />\n </PaginationSizeContext.Provider>\n );\n});\nPagination.displayName = 'Pagination';\n\nconst PaginationContent: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'ul'> & {\n size?: PaginationSize;\n },\n 'ref'\n > &\n RefAttributes<HTMLUListElement>\n> = forwardRef<\n ComponentRef<'ul'>,\n ComponentProps<'ul'> & { size?: PaginationSize }\n>(({ className, size, ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n return (\n <PaginationSizeContext.Provider value={resolvedSize}>\n <ul\n ref={ref}\n data-slot=\"pagination-content\"\n data-size={resolvedSize}\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n </PaginationSizeContext.Provider>\n );\n});\nPaginationContent.displayName = 'PaginationContent';\n\nconst PaginationItem: ForwardRefExoticComponent<\n ComponentProps<'li'> & RefAttributes<HTMLLIElement>\n> = forwardRef<ComponentRef<'li'>, ComponentProps<'li'>>((props, ref) => {\n return <li ref={ref} data-slot=\"pagination-item\" {...props} />;\n});\nPaginationItem.displayName = 'PaginationItem';\n\nconst PaginationStatus: ForwardRefExoticComponent<\n ComponentProps<'output'> & RefAttributes<HTMLOutputElement>\n> = forwardRef<ComponentRef<'output'>, ComponentProps<'output'>>(\n ({ className, ...props }, ref) => {\n return (\n <output\n ref={ref}\n data-slot=\"pagination-status\"\n className={cn(\n 'flex items-center text-sm leading-4.5 tracking-tight font-normal text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n }\n);\nPaginationStatus.displayName = 'PaginationStatus';\n\nconst PaginationSelectTrigger: ForwardRefExoticComponent<\n Omit<\n SelectTriggerProps & {\n size?: 'sm' | 'default';\n errorMessage?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLButtonElement>\n> = forwardRef<\n ComponentRef<typeof SelectTrigger>,\n ComponentProps<typeof SelectTrigger>\n>(({ className, size, style, ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const isPaginationSmall = inheritedSize === 'small' && size === undefined;\n const resolvedSize = size ?? (isPaginationSmall ? 'sm' : 'default');\n\n return (\n <SelectTrigger\n ref={ref}\n size={resolvedSize}\n data-slot=\"pagination-select-trigger\"\n style={style}\n className={cn(\n paginationSelectTriggerVariants({ size: resolvedSize }),\n className\n )}\n {...props}\n />\n );\n});\nPaginationSelectTrigger.displayName = 'PaginationSelectTrigger';\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n isDisabled?: boolean;\n size?: PaginationSize;\n} & ComponentProps<'a'>;\n\nconst PaginationLink: ForwardRefExoticComponent<\n Omit<PaginationLinkProps, 'ref'> & RefAttributes<HTMLAnchorElement>\n> = forwardRef<ComponentRef<'a'>, PaginationLinkProps>(\n (\n { children, className, isActive, isDisabled, onClick, size, ...props },\n ref\n ) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { buttonSize, radiusClass, textLinkWidth } =\n getPaginationButtonStyles(resolvedSize);\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Button\n variant=\"ghost\"\n size={buttonSize}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n radiusClass,\n textLinkWidth,\n paginationLinkVariants({ size: resolvedSize, active: isActive }),\n isDisabled && 'pointer-events-none text-base-foreground-disabled',\n className\n )}\n render={\n <a\n ref={ref}\n aria-current={isActive ? 'page' : undefined}\n aria-disabled={isDisabled || undefined}\n onClick={handleClick}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {children}\n </a>\n }\n />\n );\n }\n);\nPaginationLink.displayName = 'PaginationLink';\n\ntype PaginationIconLinkProps = {\n ariaLabel: string;\n dataSlot: string;\n icon: ReactNode;\n isDisabled?: boolean;\n size?: PaginationSize;\n} & Omit<ComponentProps<'a'>, 'children'>;\n\nconst PaginationIconLink = forwardRef<\n ComponentRef<'a'>,\n PaginationIconLinkProps\n>(\n (\n {\n ariaLabel,\n className,\n dataSlot,\n icon,\n isDisabled,\n onClick,\n size,\n ...linkProps\n },\n ref\n ) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { buttonSize, radiusClass, iconButtonWidth } =\n getPaginationButtonStyles(resolvedSize);\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Button\n variant=\"ghost\"\n size={buttonSize}\n data-slot={dataSlot}\n className={cn(\n radiusClass,\n iconButtonWidth,\n paginationLinkVariants({ size: resolvedSize, active: false }),\n isDisabled && 'pointer-events-none text-base-foreground-disabled',\n className\n )}\n render={\n <a\n ref={ref}\n aria-label={ariaLabel}\n aria-disabled={isDisabled || undefined}\n onClick={handleClick}\n tabIndex={isDisabled ? -1 : undefined}\n {...linkProps}\n >\n {icon}\n </a>\n }\n />\n );\n }\n);\nPaginationIconLink.displayName = 'PaginationIconLink';\n\nconst PaginationFirst: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to first page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-first\"\n ariaLabel={label}\n icon={<IconChevronsLeft />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationFirst.displayName = 'PaginationFirst';\n\nconst PaginationPrevious: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to previous page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-previous\"\n ariaLabel={label}\n icon={<IconChevronLeft />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationPrevious.displayName = 'PaginationPrevious';\n\nconst PaginationNext: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to next page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-next\"\n ariaLabel={label}\n icon={<IconChevronRight />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationNext.displayName = 'PaginationNext';\n\nconst PaginationLast: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to last page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-last\"\n ariaLabel={label}\n icon={<IconChevronsRight />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationLast.displayName = 'PaginationLast';\n\nconst PaginationEllipsis: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'span'> & {\n size?: PaginationSize;\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLSpanElement>\n> = forwardRef<\n ComponentRef<'span'>,\n ComponentProps<'span'> & { size?: PaginationSize; label?: string }\n>(({ className, size, label = 'More pages', ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { iconButtonWidth } = getPaginationButtonStyles(resolvedSize);\n\n return (\n <span\n ref={ref}\n data-slot=\"pagination-ellipsis\"\n className={cn(\n iconButtonWidth,\n paginationEllipsisVariants({ size: resolvedSize }),\n className\n )}\n {...props}\n >\n <IconDots aria-hidden=\"true\" className=\"h-4 w-4\" />\n <span className=\"sr-only\">{label}</span>\n </span>\n );\n});\nPaginationEllipsis.displayName = 'PaginationEllipsis';\n\nconst PaginationResultsPerPage: ForwardRefExoticComponent<\n ComponentProps<'li'> & RefAttributes<HTMLLIElement>\n> = forwardRef<ComponentRef<'li'>, ComponentProps<'li'>>(\n ({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n data-slot=\"pagination-results-per-page\"\n className={cn('flex items-center gap-2 pl-3', className)}\n {...props}\n />\n );\n }\n);\nPaginationResultsPerPage.displayName = 'PaginationResultsPerPage';\n\nconst PaginationResultsPerPageLabel: ForwardRefExoticComponent<\n ComponentProps<'span'> & RefAttributes<HTMLSpanElement>\n> = forwardRef<ComponentRef<'span'>, ComponentProps<'span'>>(\n ({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n data-slot=\"pagination-results-per-page-label\"\n className={cn(\n 'text-sm leading-4.5 tracking-tight font-normal text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n }\n);\nPaginationResultsPerPageLabel.displayName = 'PaginationResultsPerPageLabel';\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n PaginationResultsPerPage,\n PaginationResultsPerPageLabel,\n PaginationSelectTrigger,\n PaginationStatus,\n PaginationTeleport,\n};\n"],"names":["forwardRef","IconChevronLeft","IconChevronRight","IconChevronsLeft","IconChevronsRight","IconDots","cva","cn","Button","SelectTrigger","PaginationSizeContext","usePaginationSize","PaginationTeleport","paginationLinkVariants","variants","size","default","small","active","true","false","compoundVariants","className","defaultVariants","paginationEllipsisVariants","paginationSelectTriggerVariants","sm","ICON_BUTTON_WIDTH_BY_SIZE","TEXT_LINK_WIDTH_BY_SIZE","getPaginationButtonStyles","buttonSize","radiusClass","iconButtonWidth","textLinkWidth","Pagination","props","ref","Provider","value","nav","aria-label","data-slot","displayName","PaginationContent","inheritedSize","resolvedSize","ul","data-size","PaginationItem","li","PaginationStatus","output","PaginationSelectTrigger","style","isPaginationSmall","undefined","PaginationLink","children","isActive","isDisabled","onClick","handleClick","event","preventDefault","variant","data-active","render","a","aria-current","aria-disabled","tabIndex","PaginationIconLink","ariaLabel","dataSlot","icon","linkProps","PaginationFirst","label","PaginationPrevious","PaginationNext","PaginationLast","PaginationEllipsis","span","aria-hidden","PaginationResultsPerPage","PaginationResultsPerPageLabel"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/pagination/pagination.tsx"],"sourcesContent":["import {\n type ForwardRefExoticComponent,\n type RefAttributes,\n type ComponentProps,\n type ComponentRef,\n type MouseEvent,\n type ReactNode,\n forwardRef,\n} from 'react';\n\nimport type { SelectTriggerProps } from '@base-ui/react';\nimport {\n IconChevronLeft,\n IconChevronRight,\n IconChevronsLeft,\n IconChevronsRight,\n IconDots,\n} from '@tabler/icons-react';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../../../lib/utils';\nimport { Button } from '../button/button';\nimport { SelectTrigger } from '../select/select';\nimport { StatusText } from '../status-text/status-text';\n\nimport {\n type PaginationSize,\n PaginationSizeContext,\n usePaginationSize,\n} from './pagination-size-context';\nimport { PaginationTeleport } from './pagination-teleport';\n\nconst paginationLinkVariants = cva(\n 'border border-transparent text-base font-normal leading-5 tracking-tightest focus-visible:shadow-focus-ring',\n {\n variants: {\n size: {\n default: '',\n small: 'text-sm leading-4.5 tracking-tight',\n },\n active: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n active: false,\n className:\n 'text-medium-foreground hover:bg-base-background-hover hover:text-base-foreground focus-visible:bg-medium-background focus-visible:text-base-foreground',\n },\n {\n active: true,\n className:\n 'border-emphasized bg-secondary-background text-secondary-foreground hover:bg-base-background-hover hover:text-secondary-foreground focus-visible:bg-secondary-background focus-visible:text-secondary-foreground',\n },\n ],\n defaultVariants: {\n size: 'default',\n active: false,\n },\n }\n);\n\nconst paginationEllipsisVariants = cva(\n 'flex items-center justify-center text-medium-foreground',\n {\n variants: {\n size: {\n default: 'h-9 w-9',\n small: 'h-7 w-7',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nconst paginationSelectTriggerVariants = cva(\n 'w-auto whitespace-nowrap min-h-0',\n {\n variants: {\n size: {\n default: 'h-9 gap-2 rounded-lg px-3 min-w-19',\n sm: 'h-7 gap-1.5 rounded-md px-2 min-w-16',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n }\n);\n\nconst ICON_BUTTON_WIDTH_BY_SIZE: Record<PaginationSize, string> = {\n small: 'max-w-7',\n default: 'max-w-9',\n};\n\nconst TEXT_LINK_WIDTH_BY_SIZE: Record<PaginationSize, string> = {\n small: 'min-w-7',\n default: 'min-w-9',\n};\n\ntype PaginationButtonSize = 'default' | 'sm';\ntype PaginationRadiusClass = 'rounded-md' | 'rounded-lg';\n\nconst getPaginationButtonStyles = (size: PaginationSize = 'default') => {\n const buttonSize: PaginationButtonSize = size === 'small' ? 'sm' : 'default';\n const radiusClass: PaginationRadiusClass =\n size === 'small' ? 'rounded-md' : 'rounded-lg';\n const iconButtonWidth = ICON_BUTTON_WIDTH_BY_SIZE[size];\n const textLinkWidth = TEXT_LINK_WIDTH_BY_SIZE[size];\n\n return {\n buttonSize,\n radiusClass,\n iconButtonWidth,\n textLinkWidth,\n };\n};\n\nconst Pagination: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'nav'> & {\n size?: PaginationSize;\n },\n 'ref'\n > &\n RefAttributes<HTMLElement>\n> = forwardRef<\n ComponentRef<'nav'>,\n ComponentProps<'nav'> & { size?: PaginationSize }\n>(({ className, size = 'default', ...props }, ref) => {\n return (\n <PaginationSizeContext.Provider value={size}>\n <nav\n ref={ref}\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center gap-2', className)}\n {...props}\n />\n </PaginationSizeContext.Provider>\n );\n});\nPagination.displayName = 'Pagination';\n\nconst PaginationContent: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'ul'> & {\n size?: PaginationSize;\n },\n 'ref'\n > &\n RefAttributes<HTMLUListElement>\n> = forwardRef<\n ComponentRef<'ul'>,\n ComponentProps<'ul'> & { size?: PaginationSize }\n>(({ className, size, ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n return (\n <PaginationSizeContext.Provider value={resolvedSize}>\n <ul\n ref={ref}\n data-slot=\"pagination-content\"\n data-size={resolvedSize}\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n </PaginationSizeContext.Provider>\n );\n});\nPaginationContent.displayName = 'PaginationContent';\n\nconst PaginationItem: ForwardRefExoticComponent<\n ComponentProps<'li'> & RefAttributes<HTMLLIElement>\n> = forwardRef<ComponentRef<'li'>, ComponentProps<'li'>>((props, ref) => {\n return <li ref={ref} data-slot=\"pagination-item\" {...props} />;\n});\nPaginationItem.displayName = 'PaginationItem';\n\nconst PaginationStatus: ForwardRefExoticComponent<\n ComponentProps<'output'> & RefAttributes<HTMLOutputElement>\n> = forwardRef<ComponentRef<'output'>, ComponentProps<'output'>>(\n (props, ref) => {\n return <StatusText ref={ref} data-slot=\"pagination-status\" {...props} />;\n }\n);\nPaginationStatus.displayName = 'PaginationStatus';\n\nconst PaginationSelectTrigger: ForwardRefExoticComponent<\n Omit<\n SelectTriggerProps & {\n size?: 'sm' | 'default';\n errorMessage?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLButtonElement>\n> = forwardRef<\n ComponentRef<typeof SelectTrigger>,\n ComponentProps<typeof SelectTrigger>\n>(({ className, size, style, ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const isPaginationSmall = inheritedSize === 'small' && size === undefined;\n const resolvedSize = size ?? (isPaginationSmall ? 'sm' : 'default');\n\n return (\n <SelectTrigger\n ref={ref}\n size={resolvedSize}\n data-slot=\"pagination-select-trigger\"\n style={style}\n className={cn(\n paginationSelectTriggerVariants({ size: resolvedSize }),\n className\n )}\n {...props}\n />\n );\n});\nPaginationSelectTrigger.displayName = 'PaginationSelectTrigger';\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n isDisabled?: boolean;\n size?: PaginationSize;\n} & ComponentProps<'a'>;\n\nconst PaginationLink: ForwardRefExoticComponent<\n Omit<PaginationLinkProps, 'ref'> & RefAttributes<HTMLAnchorElement>\n> = forwardRef<ComponentRef<'a'>, PaginationLinkProps>(\n (\n { children, className, isActive, isDisabled, onClick, size, ...props },\n ref\n ) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { buttonSize, radiusClass, textLinkWidth } =\n getPaginationButtonStyles(resolvedSize);\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Button\n variant=\"ghost\"\n size={buttonSize}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n radiusClass,\n textLinkWidth,\n paginationLinkVariants({ size: resolvedSize, active: isActive }),\n isDisabled && 'pointer-events-none text-base-foreground-disabled',\n className\n )}\n render={\n <a\n ref={ref}\n aria-current={isActive ? 'page' : undefined}\n aria-disabled={isDisabled || undefined}\n onClick={handleClick}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {children}\n </a>\n }\n />\n );\n }\n);\nPaginationLink.displayName = 'PaginationLink';\n\ntype PaginationIconLinkProps = {\n ariaLabel: string;\n dataSlot: string;\n icon: ReactNode;\n isDisabled?: boolean;\n size?: PaginationSize;\n} & Omit<ComponentProps<'a'>, 'children'>;\n\nconst PaginationIconLink = forwardRef<\n ComponentRef<'a'>,\n PaginationIconLinkProps\n>(\n (\n {\n ariaLabel,\n className,\n dataSlot,\n icon,\n isDisabled,\n onClick,\n size,\n ...linkProps\n },\n ref\n ) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { buttonSize, radiusClass, iconButtonWidth } =\n getPaginationButtonStyles(resolvedSize);\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Button\n variant=\"ghost\"\n size={buttonSize}\n data-slot={dataSlot}\n className={cn(\n radiusClass,\n iconButtonWidth,\n paginationLinkVariants({ size: resolvedSize, active: false }),\n isDisabled && 'pointer-events-none text-base-foreground-disabled',\n className\n )}\n render={\n <a\n ref={ref}\n aria-label={ariaLabel}\n aria-disabled={isDisabled || undefined}\n onClick={handleClick}\n tabIndex={isDisabled ? -1 : undefined}\n {...linkProps}\n >\n {icon}\n </a>\n }\n />\n );\n }\n);\nPaginationIconLink.displayName = 'PaginationIconLink';\n\nconst PaginationFirst: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to first page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-first\"\n ariaLabel={label}\n icon={<IconChevronsLeft />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationFirst.displayName = 'PaginationFirst';\n\nconst PaginationPrevious: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to previous page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-previous\"\n ariaLabel={label}\n icon={<IconChevronLeft />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationPrevious.displayName = 'PaginationPrevious';\n\nconst PaginationNext: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to next page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-next\"\n ariaLabel={label}\n icon={<IconChevronRight />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationNext.displayName = 'PaginationNext';\n\nconst PaginationLast: ForwardRefExoticComponent<\n Omit<\n Omit<PaginationLinkProps, 'isActive'> & {\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLAnchorElement>\n> = forwardRef<\n ComponentRef<'a'>,\n Omit<PaginationLinkProps, 'isActive'> & { label?: string }\n>(({ className, size, label = 'Go to last page', ...props }, ref) => {\n return (\n <PaginationIconLink\n ref={ref}\n dataSlot=\"pagination-last\"\n ariaLabel={label}\n icon={<IconChevronsRight />}\n className={className}\n size={size}\n {...props}\n />\n );\n});\nPaginationLast.displayName = 'PaginationLast';\n\nconst PaginationEllipsis: ForwardRefExoticComponent<\n Omit<\n ComponentProps<'span'> & {\n size?: PaginationSize;\n label?: string;\n },\n 'ref'\n > &\n RefAttributes<HTMLSpanElement>\n> = forwardRef<\n ComponentRef<'span'>,\n ComponentProps<'span'> & { size?: PaginationSize; label?: string }\n>(({ className, size, label = 'More pages', ...props }, ref) => {\n const inheritedSize = usePaginationSize();\n const resolvedSize = size ?? inheritedSize;\n const { iconButtonWidth } = getPaginationButtonStyles(resolvedSize);\n\n return (\n <span\n ref={ref}\n data-slot=\"pagination-ellipsis\"\n className={cn(\n iconButtonWidth,\n paginationEllipsisVariants({ size: resolvedSize }),\n className\n )}\n {...props}\n >\n <IconDots aria-hidden=\"true\" className=\"h-4 w-4\" />\n <span className=\"sr-only\">{label}</span>\n </span>\n );\n});\nPaginationEllipsis.displayName = 'PaginationEllipsis';\n\nconst PaginationResultsPerPage: ForwardRefExoticComponent<\n ComponentProps<'li'> & RefAttributes<HTMLLIElement>\n> = forwardRef<ComponentRef<'li'>, ComponentProps<'li'>>(\n ({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n data-slot=\"pagination-results-per-page\"\n className={cn('flex items-center gap-2 pl-3', className)}\n {...props}\n />\n );\n }\n);\nPaginationResultsPerPage.displayName = 'PaginationResultsPerPage';\n\nconst PaginationResultsPerPageLabel: ForwardRefExoticComponent<\n ComponentProps<'span'> & RefAttributes<HTMLSpanElement>\n> = forwardRef<ComponentRef<'span'>, ComponentProps<'span'>>(\n ({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n data-slot=\"pagination-results-per-page-label\"\n className={cn(\n 'text-sm leading-4.5 tracking-tight font-normal text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n }\n);\nPaginationResultsPerPageLabel.displayName = 'PaginationResultsPerPageLabel';\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationFirst,\n PaginationItem,\n PaginationLast,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n PaginationResultsPerPage,\n PaginationResultsPerPageLabel,\n PaginationSelectTrigger,\n PaginationStatus,\n PaginationTeleport,\n};\n"],"names":["forwardRef","IconChevronLeft","IconChevronRight","IconChevronsLeft","IconChevronsRight","IconDots","cva","cn","Button","SelectTrigger","StatusText","PaginationSizeContext","usePaginationSize","PaginationTeleport","paginationLinkVariants","variants","size","default","small","active","true","false","compoundVariants","className","defaultVariants","paginationEllipsisVariants","paginationSelectTriggerVariants","sm","ICON_BUTTON_WIDTH_BY_SIZE","TEXT_LINK_WIDTH_BY_SIZE","getPaginationButtonStyles","buttonSize","radiusClass","iconButtonWidth","textLinkWidth","Pagination","props","ref","Provider","value","nav","aria-label","data-slot","displayName","PaginationContent","inheritedSize","resolvedSize","ul","data-size","PaginationItem","li","PaginationStatus","PaginationSelectTrigger","style","isPaginationSmall","undefined","PaginationLink","children","isActive","isDisabled","onClick","handleClick","event","preventDefault","variant","data-active","render","a","aria-current","aria-disabled","tabIndex","PaginationIconLink","ariaLabel","dataSlot","icon","linkProps","PaginationFirst","label","PaginationPrevious","PaginationNext","PaginationLast","PaginationEllipsis","span","aria-hidden","PaginationResultsPerPage","PaginationResultsPerPageLabel"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { type ComponentProps, type ForwardRefExoticComponent, type RefAttributes } from "react";
2
+ /** Muted status line, such as "Showing 1–10 of 243". An `<output>`, so changes are announced. */
3
+ declare const StatusText: ForwardRefExoticComponent<ComponentProps<"output"> & RefAttributes<HTMLOutputElement>>;
4
+ export { StatusText };
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { cn } from "../../../../lib/utils.js";
4
+ /** Muted status line, such as "Showing 1–10 of 243". An `<output>`, so changes are announced. */ const StatusText = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>{
5
+ return /*#__PURE__*/ _jsx("output", {
6
+ ref: ref,
7
+ className: cn('flex items-center text-sm leading-4.5 tracking-tight font-normal text-muted-foreground', className),
8
+ ...props
9
+ });
10
+ });
11
+ StatusText.displayName = 'StatusText';
12
+ export { StatusText };
13
+
14
+ //# sourceMappingURL=status-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/status-text/status-text.tsx"],"sourcesContent":["import {\n type ComponentProps,\n type ComponentRef,\n type ForwardRefExoticComponent,\n type RefAttributes,\n forwardRef,\n} from 'react';\n\nimport { cn } from '../../../../lib/utils';\n\n/** Muted status line, such as \"Showing 1–10 of 243\". An `<output>`, so changes are announced. */\nconst StatusText: ForwardRefExoticComponent<\n ComponentProps<'output'> & RefAttributes<HTMLOutputElement>\n> = forwardRef<ComponentRef<'output'>, ComponentProps<'output'>>(\n ({ className, ...props }, ref) => {\n return (\n <output\n ref={ref}\n className={cn(\n 'flex items-center text-sm leading-4.5 tracking-tight font-normal text-muted-foreground',\n className\n )}\n {...props}\n />\n );\n }\n);\nStatusText.displayName = 'StatusText';\n\nexport { StatusText };\n"],"names":["forwardRef","cn","StatusText","className","props","ref","output","displayName"],"mappings":";AAAA,SAKEA,UAAU,QACL,QAAQ;AAEf,SAASC,EAAE,QAAQ,2BAAwB;AAE3C,+FAA+F,GAC/F,MAAMC,2BAEFF,WACF,CAAC,EAAEG,SAAS,EAAE,GAAGC,OAAO,EAAEC;IACxB,qBACE,KAACC;QACCD,KAAKA;QACLF,WAAWF,GACT,0FACAE;QAED,GAAGC,KAAK;;AAGf;AAEFF,WAAWK,WAAW,GAAG;AAEzB,SAASL,UAAU,GAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/aura",
3
- "version": "1.47181.0",
3
+ "version": "1.47284.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": [