@cognite/aura 1.47006.0 → 1.47181.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.
Files changed (29) hide show
  1. package/DESIGN.md +6 -0
  2. package/dist/components/ui/core/count/count.gallery.d.ts +2 -0
  3. package/dist/components/ui/core/count/count.gallery.js +55 -0
  4. package/dist/components/ui/core/count/count.gallery.js.map +1 -0
  5. package/dist/components/ui/core/data-grid/data-grid.js +1 -19
  6. package/dist/components/ui/core/data-grid/data-grid.js.map +1 -1
  7. package/dist/components/ui/core/separator/separator.gallery.d.ts +2 -0
  8. package/dist/components/ui/core/separator/separator.gallery.js +63 -0
  9. package/dist/components/ui/core/separator/separator.gallery.js.map +1 -0
  10. package/dist/components/ui/core/skeleton/skeleton.gallery.d.ts +2 -0
  11. package/dist/components/ui/core/skeleton/skeleton.gallery.js +22 -0
  12. package/dist/components/ui/core/skeleton/skeleton.gallery.js.map +1 -0
  13. package/dist/components/ui/core/slider/slider.gallery.d.ts +2 -0
  14. package/dist/components/ui/core/slider/slider.gallery.js +62 -0
  15. package/dist/components/ui/core/slider/slider.gallery.js.map +1 -0
  16. package/dist/components/ui/core/toggle/toggle.gallery.d.ts +2 -0
  17. package/dist/components/ui/core/toggle/toggle.gallery.js +32 -0
  18. package/dist/components/ui/core/toggle/toggle.gallery.js.map +1 -0
  19. package/dist/components/ui/core/tooltip/tooltip.gallery.d.ts +2 -0
  20. package/dist/components/ui/core/tooltip/tooltip.gallery.js +52 -0
  21. package/dist/components/ui/core/tooltip/tooltip.gallery.js.map +1 -0
  22. package/dist/styles.css +1 -1
  23. package/package.json +1 -1
  24. package/src/components/ui/core/count/count.md +33 -0
  25. package/src/components/ui/core/separator/separator.md +32 -0
  26. package/src/components/ui/core/skeleton/skeleton.md +33 -0
  27. package/src/components/ui/core/slider/slider.md +41 -0
  28. package/src/components/ui/core/toggle/toggle.md +39 -0
  29. package/src/components/ui/core/tooltip/tooltip.md +41 -0
package/DESIGN.md CHANGED
@@ -1458,6 +1458,7 @@ A keyboard-first search interface for discovering and executing actions, navigat
1458
1458
  #### Count
1459
1459
 
1460
1460
  **Storybook-slug:** count
1461
+ **Full guidance:** [count.md](./src/components/ui/core/count/count.md)
1461
1462
 
1462
1463
  **Definition**
1463
1464
  A compact numeric indicator used to surface quantities inline — for example, unread messages, selected items, or totals attached to labels or tabs.
@@ -1989,6 +1990,7 @@ Enables users to choose one or more predefined options from a dropdown list. Use
1989
1990
 
1990
1991
  **Storybook-slug:** separator
1991
1992
  **Docs-slug:** separator
1993
+ **Full guidance:** [separator.md](./src/components/ui/core/separator/separator.md)
1992
1994
 
1993
1995
  **Definition**
1994
1996
  A 1px visual divider between distinct content sections. Improves readability while remaining visually subtle.
@@ -2017,6 +2019,7 @@ A 1px visual divider between distinct content sections. Improves readability whi
2017
2019
  #### Skeleton
2018
2020
 
2019
2021
  **Storybook-slug:** skeleton
2022
+ **Full guidance:** [skeleton.md](./src/components/ui/core/skeleton/skeleton.md)
2020
2023
 
2021
2024
  **Definition**
2022
2025
  A loading placeholder that mimics the shape of incoming content, reducing perceived wait time and preventing layout shift.
@@ -2044,6 +2047,7 @@ A loading placeholder that mimics the shape of incoming content, reducing percei
2044
2047
 
2045
2048
  **Storybook-slug:** slider
2046
2049
  **Docs-slug:** slider
2050
+ **Full guidance:** [slider.md](./src/components/ui/core/slider/slider.md)
2047
2051
 
2048
2052
  **Definition**
2049
2053
  An interactive control for selecting a single value or a range from a continuous scale. Provides visual feedback and quick approximate value selection.
@@ -2242,6 +2246,7 @@ Allows users to select a time value through a clock interface.
2242
2246
  #### Toggle
2243
2247
 
2244
2248
  **Storybook-slug:** toggle
2249
+ **Full guidance:** [toggle.md](./src/components/ui/core/toggle/toggle.md)
2245
2250
 
2246
2251
  **Definition**
2247
2252
  A single pressable button with active/inactive state, used to toggle one option or formatting command on or off.
@@ -2351,6 +2356,7 @@ The single, persistent navigation bar at the top of every authenticated CDF and
2351
2356
 
2352
2357
  **Storybook-slug:** tooltip
2353
2358
  **Docs-slug:** tooltip
2359
+ **Full guidance:** [tooltip.md](./src/components/ui/core/tooltip/tooltip.md)
2354
2360
 
2355
2361
  **Definition**
2356
2362
  A short hint that appears on hover or focus. No heavy interaction inside.
@@ -0,0 +1,2 @@
1
+ import type { ReactElement } from "react";
2
+ export declare function CountGallery(): ReactElement;
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Count, CountUnit, CountValue } from "./count.js";
3
+ export function CountGallery() {
4
+ return /*#__PURE__*/ _jsxs("div", {
5
+ className: "flex items-center gap-3",
6
+ children: [
7
+ /*#__PURE__*/ _jsxs(Count, {
8
+ variant: "default",
9
+ children: [
10
+ /*#__PURE__*/ _jsx(CountValue, {
11
+ children: "19"
12
+ }),
13
+ /*#__PURE__*/ _jsx(CountUnit, {
14
+ children: "℃"
15
+ })
16
+ ]
17
+ }),
18
+ /*#__PURE__*/ _jsxs(Count, {
19
+ variant: "success",
20
+ children: [
21
+ /*#__PURE__*/ _jsx(CountValue, {
22
+ children: "19"
23
+ }),
24
+ /*#__PURE__*/ _jsx(CountUnit, {
25
+ children: "℃"
26
+ })
27
+ ]
28
+ }),
29
+ /*#__PURE__*/ _jsxs(Count, {
30
+ variant: "warning",
31
+ children: [
32
+ /*#__PURE__*/ _jsx(CountValue, {
33
+ children: "19"
34
+ }),
35
+ /*#__PURE__*/ _jsx(CountUnit, {
36
+ children: "℉"
37
+ })
38
+ ]
39
+ }),
40
+ /*#__PURE__*/ _jsxs(Count, {
41
+ variant: "critical",
42
+ children: [
43
+ /*#__PURE__*/ _jsx(CountValue, {
44
+ children: "19"
45
+ }),
46
+ /*#__PURE__*/ _jsx(CountUnit, {
47
+ children: "℉"
48
+ })
49
+ ]
50
+ })
51
+ ]
52
+ });
53
+ }
54
+
55
+ //# sourceMappingURL=count.gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/count/count.gallery.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\n\nimport { Count, CountUnit, CountValue } from './count';\n\nexport function CountGallery(): ReactElement {\n return (\n <div className=\"flex items-center gap-3\">\n <Count variant=\"default\">\n <CountValue>19</CountValue>\n <CountUnit>℃</CountUnit>\n </Count>\n <Count variant=\"success\">\n <CountValue>19</CountValue>\n <CountUnit>℃</CountUnit>\n </Count>\n <Count variant=\"warning\">\n <CountValue>19</CountValue>\n <CountUnit>℉</CountUnit>\n </Count>\n <Count variant=\"critical\">\n <CountValue>19</CountValue>\n <CountUnit>℉</CountUnit>\n </Count>\n </div>\n );\n}\n"],"names":["Count","CountUnit","CountValue","CountGallery","div","className","variant"],"mappings":";AAEA,SAASA,KAAK,EAAEC,SAAS,EAAEC,UAAU,QAAQ,aAAU;AAEvD,OAAO,SAASC;IACd,qBACE,MAACC;QAAIC,WAAU;;0BACb,MAACL;gBAAMM,SAAQ;;kCACb,KAACJ;kCAAW;;kCACZ,KAACD;kCAAU;;;;0BAEb,MAACD;gBAAMM,SAAQ;;kCACb,KAACJ;kCAAW;;kCACZ,KAACD;kCAAU;;;;0BAEb,MAACD;gBAAMM,SAAQ;;kCACb,KAACJ;kCAAW;;kCACZ,KAACD;kCAAU;;;;0BAEb,MAACD;gBAAMM,SAAQ;;kCACb,KAACJ;kCAAW;;kCACZ,KAACD;kCAAU;;;;;;AAInB"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { createContext, forwardRef, useContext, useEffect, useImperativeHandle, useMemo, useRef } from "react";
2
+ import { createContext, forwardRef, useContext, useImperativeHandle, useMemo, useRef } from "react";
3
3
  import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
4
4
  import { IconCheck, IconFilter, IconMinus } from "@tabler/icons-react";
5
5
  import { getCoreRowModel, getExpandedRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
@@ -86,7 +86,6 @@ function DataGrid({ data, columns, getRowId, rowCount, globalFilterFn = 'auto',
86
86
  });
87
87
  const isClientSorting = enableSorting && !manualSorting;
88
88
  const isClientPagination = hasPagination && !manualPagination;
89
- useSearchPaginationReset(resolvedSearchValue, hasPagination, setResolvedPagination);
90
89
  const columnPinning = useMemo(()=>({
91
90
  left: pinnedColumns,
92
91
  right: []
@@ -127,7 +126,6 @@ function DataGrid({ data, columns, getRowId, rowCount, globalFilterFn = 'auto',
127
126
  // doesn't lose their place. Consumers fetching server-paged data should
128
127
  // ensure stable `getRowId` values; otherwise expanded keys can stick to
129
128
  // rows that no longer logically exist.
130
- autoResetPageIndex: false,
131
129
  autoResetExpanded: false,
132
130
  enableRowSelection,
133
131
  // Selecting a parent selects every descendant, including while it is collapsed.
@@ -487,22 +485,6 @@ function DataGridState({ type, title, description, action }) {
487
485
  ]
488
486
  });
489
487
  }
490
- function useSearchPaginationReset(searchValue, hasPagination, setPagination) {
491
- const previousSearchValueRef = useRef(searchValue);
492
- useEffect(()=>{
493
- if (previousSearchValueRef.current === searchValue) return;
494
- previousSearchValueRef.current = searchValue;
495
- if (!hasPagination) return;
496
- setPagination((current)=>current.pageIndex === 0 ? current : {
497
- ...current,
498
- pageIndex: 0
499
- });
500
- }, [
501
- searchValue,
502
- hasPagination,
503
- setPagination
504
- ]);
505
- }
506
488
  const DataGridFilterTrigger = /*#__PURE__*/ forwardRef(function DataGridFilterTrigger({ activeCount = 0, label = 'Filters', activeLabel, placement = 'toolbar', className, children, ...props }, ref) {
507
489
  const hasActiveFilters = activeCount > 0;
508
490
  return /*#__PURE__*/ _jsx(Button, {
@@ -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 useEffect,\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 // pageIndex resets to 0 only when the search string changes. Callers reset\n // it when `data` shrinks.\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 useSearchPaginationReset(\n resolvedSearchValue,\n hasPagination,\n setResolvedPagination\n );\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 autoResetPageIndex: false,\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}\nfunction useSearchPaginationReset(\n searchValue: string,\n hasPagination: boolean,\n setPagination: (\n next: PaginationState | ((prev: PaginationState) => PaginationState)\n ) => void\n): void {\n const previousSearchValueRef = useRef(searchValue);\n\n useEffect(() => {\n if (previousSearchValueRef.current === searchValue) return;\n previousSearchValueRef.current = searchValue;\n if (!hasPagination) return;\n setPagination((current) =>\n current.pageIndex === 0 ? current : { ...current, pageIndex: 0 }\n );\n }, [searchValue, hasPagination, setPagination]);\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","useEffect","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","useSearchPaginationReset","columnPinning","left","right","pinnedColumnIds","Set","lastPinnedColumnId","length","table","state","globalFilter","autoResetPageIndex","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","setPagination","previousSearchValueRef","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';\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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"}
@@ -0,0 +1,2 @@
1
+ import type { ReactElement } from "react";
2
+ export declare function SeparatorGallery(): ReactElement;
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Separator } from "./separator.js";
3
+ export function SeparatorGallery() {
4
+ return /*#__PURE__*/ _jsxs("div", {
5
+ className: "space-y-8",
6
+ children: [
7
+ /*#__PURE__*/ _jsxs("div", {
8
+ children: [
9
+ /*#__PURE__*/ _jsx("h3", {
10
+ className: "text-sm font-medium mb-4",
11
+ children: "Horizontal"
12
+ }),
13
+ /*#__PURE__*/ _jsxs("div", {
14
+ className: "w-75 space-y-4",
15
+ children: [
16
+ /*#__PURE__*/ _jsx("p", {
17
+ className: "text-sm",
18
+ children: "Content above"
19
+ }),
20
+ /*#__PURE__*/ _jsx(Separator, {
21
+ orientation: "horizontal"
22
+ }),
23
+ /*#__PURE__*/ _jsx("p", {
24
+ className: "text-sm",
25
+ children: "Content below"
26
+ })
27
+ ]
28
+ })
29
+ ]
30
+ }),
31
+ /*#__PURE__*/ _jsxs("div", {
32
+ children: [
33
+ /*#__PURE__*/ _jsx("h3", {
34
+ className: "text-sm font-medium mb-4",
35
+ children: "Vertical"
36
+ }),
37
+ /*#__PURE__*/ _jsxs("div", {
38
+ className: "flex h-5 items-center space-x-4 text-sm",
39
+ children: [
40
+ /*#__PURE__*/ _jsx("span", {
41
+ children: "Item 1"
42
+ }),
43
+ /*#__PURE__*/ _jsx(Separator, {
44
+ orientation: "vertical"
45
+ }),
46
+ /*#__PURE__*/ _jsx("span", {
47
+ children: "Item 2"
48
+ }),
49
+ /*#__PURE__*/ _jsx(Separator, {
50
+ orientation: "vertical"
51
+ }),
52
+ /*#__PURE__*/ _jsx("span", {
53
+ children: "Item 3"
54
+ })
55
+ ]
56
+ })
57
+ ]
58
+ })
59
+ ]
60
+ });
61
+ }
62
+
63
+ //# sourceMappingURL=separator.gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/separator/separator.gallery.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\n\nimport { Separator } from './separator';\n\nexport function SeparatorGallery(): ReactElement {\n return (\n <div className=\"space-y-8\">\n <div>\n <h3 className=\"text-sm font-medium mb-4\">Horizontal</h3>\n <div className=\"w-75 space-y-4\">\n <p className=\"text-sm\">Content above</p>\n <Separator orientation=\"horizontal\" />\n <p className=\"text-sm\">Content below</p>\n </div>\n </div>\n <div>\n <h3 className=\"text-sm font-medium mb-4\">Vertical</h3>\n <div className=\"flex h-5 items-center space-x-4 text-sm\">\n <span>Item 1</span>\n <Separator orientation=\"vertical\" />\n <span>Item 2</span>\n <Separator orientation=\"vertical\" />\n <span>Item 3</span>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["Separator","SeparatorGallery","div","className","h3","p","orientation","span"],"mappings":";AAEA,SAASA,SAAS,QAAQ,iBAAc;AAExC,OAAO,SAASC;IACd,qBACE,MAACC;QAAIC,WAAU;;0BACb,MAACD;;kCACC,KAACE;wBAAGD,WAAU;kCAA2B;;kCACzC,MAACD;wBAAIC,WAAU;;0CACb,KAACE;gCAAEF,WAAU;0CAAU;;0CACvB,KAACH;gCAAUM,aAAY;;0CACvB,KAACD;gCAAEF,WAAU;0CAAU;;;;;;0BAG3B,MAACD;;kCACC,KAACE;wBAAGD,WAAU;kCAA2B;;kCACzC,MAACD;wBAAIC,WAAU;;0CACb,KAACI;0CAAK;;0CACN,KAACP;gCAAUM,aAAY;;0CACvB,KAACC;0CAAK;;0CACN,KAACP;gCAAUM,aAAY;;0CACvB,KAACC;0CAAK;;;;;;;;AAKhB"}
@@ -0,0 +1,2 @@
1
+ import type { ReactElement } from "react";
2
+ export declare function SkeletonGallery(): ReactElement;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Skeleton } from "./skeleton.js";
3
+ export function SkeletonGallery() {
4
+ return /*#__PURE__*/ _jsxs("div", {
5
+ className: "flex flex-col gap-4 items-start",
6
+ role: "status",
7
+ "aria-label": "Loading skeleton",
8
+ children: [
9
+ /*#__PURE__*/ _jsx(Skeleton, {
10
+ className: "w-100 h-4"
11
+ }),
12
+ /*#__PURE__*/ _jsx(Skeleton, {
13
+ className: "size-12 rounded-full"
14
+ }),
15
+ /*#__PURE__*/ _jsx(Skeleton, {
16
+ className: "w-75 h-32"
17
+ })
18
+ ]
19
+ });
20
+ }
21
+
22
+ //# sourceMappingURL=skeleton.gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/skeleton/skeleton.gallery.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\n\nimport { Skeleton } from './skeleton';\n\nexport function SkeletonGallery(): ReactElement {\n return (\n <div\n className=\"flex flex-col gap-4 items-start\"\n role=\"status\"\n aria-label=\"Loading skeleton\"\n >\n <Skeleton className=\"w-100 h-4\" />\n <Skeleton className=\"size-12 rounded-full\" />\n <Skeleton className=\"w-75 h-32\" />\n </div>\n );\n}\n"],"names":["Skeleton","SkeletonGallery","div","className","role","aria-label"],"mappings":";AAEA,SAASA,QAAQ,QAAQ,gBAAa;AAEtC,OAAO,SAASC;IACd,qBACE,MAACC;QACCC,WAAU;QACVC,MAAK;QACLC,cAAW;;0BAEX,KAACL;gBAASG,WAAU;;0BACpB,KAACH;gBAASG,WAAU;;0BACpB,KAACH;gBAASG,WAAU;;;;AAG1B"}
@@ -0,0 +1,2 @@
1
+ import { type ReactElement } from "react";
2
+ export declare function SliderGallery(): ReactElement;
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from "react";
3
+ import { Label } from "../label/label.js";
4
+ import { Slider } from "./slider.js";
5
+ export function SliderGallery() {
6
+ const id = useId();
7
+ return /*#__PURE__*/ _jsxs("div", {
8
+ className: "w-80 space-y-6",
9
+ children: [
10
+ /*#__PURE__*/ _jsxs("div", {
11
+ className: "grid gap-2",
12
+ children: [
13
+ /*#__PURE__*/ _jsx(Label, {
14
+ id: `${id}-volume`,
15
+ children: "Volume"
16
+ }),
17
+ /*#__PURE__*/ _jsx(Slider, {
18
+ defaultValue: [
19
+ 50
20
+ ],
21
+ "aria-labelledby": `${id}-volume`
22
+ })
23
+ ]
24
+ }),
25
+ /*#__PURE__*/ _jsxs("div", {
26
+ className: "grid gap-2",
27
+ children: [
28
+ /*#__PURE__*/ _jsx(Label, {
29
+ id: `${id}-price`,
30
+ children: "Price range"
31
+ }),
32
+ /*#__PURE__*/ _jsx(Slider, {
33
+ defaultValue: [
34
+ 20,
35
+ 80
36
+ ],
37
+ "aria-labelledby": `${id}-price`
38
+ })
39
+ ]
40
+ }),
41
+ /*#__PURE__*/ _jsxs("div", {
42
+ className: "group grid gap-2",
43
+ "data-disabled": "true",
44
+ children: [
45
+ /*#__PURE__*/ _jsx(Label, {
46
+ id: `${id}-brightness`,
47
+ children: "Brightness"
48
+ }),
49
+ /*#__PURE__*/ _jsx(Slider, {
50
+ defaultValue: [
51
+ 30
52
+ ],
53
+ "aria-labelledby": `${id}-brightness`,
54
+ disabled: true
55
+ })
56
+ ]
57
+ })
58
+ ]
59
+ });
60
+ }
61
+
62
+ //# sourceMappingURL=slider.gallery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/ui/core/slider/slider.gallery.tsx"],"sourcesContent":["import { type ReactElement, useId } from 'react';\n\nimport { Label } from '../label/label';\n\nimport { Slider } from './slider';\n\nexport function SliderGallery(): ReactElement {\n const id = useId();\n\n return (\n <div className=\"w-80 space-y-6\">\n <div className=\"grid gap-2\">\n <Label id={`${id}-volume`}>Volume</Label>\n <Slider defaultValue={[50]} aria-labelledby={`${id}-volume`} />\n </div>\n <div className=\"grid gap-2\">\n <Label id={`${id}-price`}>Price range</Label>\n <Slider defaultValue={[20, 80]} aria-labelledby={`${id}-price`} />\n </div>\n <div className=\"group grid gap-2\" data-disabled=\"true\">\n <Label id={`${id}-brightness`}>Brightness</Label>\n <Slider\n defaultValue={[30]}\n aria-labelledby={`${id}-brightness`}\n disabled\n />\n </div>\n </div>\n );\n}\n"],"names":["useId","Label","Slider","SliderGallery","id","div","className","defaultValue","aria-labelledby","data-disabled","disabled"],"mappings":";AAAA,SAA4BA,KAAK,QAAQ,QAAQ;AAEjD,SAASC,KAAK,QAAQ,oBAAiB;AAEvC,SAASC,MAAM,QAAQ,cAAW;AAElC,OAAO,SAASC;IACd,MAAMC,KAAKJ;IAEX,qBACE,MAACK;QAAIC,WAAU;;0BACb,MAACD;gBAAIC,WAAU;;kCACb,KAACL;wBAAMG,IAAI,GAAGA,GAAG,OAAO,CAAC;kCAAE;;kCAC3B,KAACF;wBAAOK,cAAc;4BAAC;yBAAG;wBAAEC,mBAAiB,GAAGJ,GAAG,OAAO,CAAC;;;;0BAE7D,MAACC;gBAAIC,WAAU;;kCACb,KAACL;wBAAMG,IAAI,GAAGA,GAAG,MAAM,CAAC;kCAAE;;kCAC1B,KAACF;wBAAOK,cAAc;4BAAC;4BAAI;yBAAG;wBAAEC,mBAAiB,GAAGJ,GAAG,MAAM,CAAC;;;;0BAEhE,MAACC;gBAAIC,WAAU;gBAAmBG,iBAAc;;kCAC9C,KAACR;wBAAMG,IAAI,GAAGA,GAAG,WAAW,CAAC;kCAAE;;kCAC/B,KAACF;wBACCK,cAAc;4BAAC;yBAAG;wBAClBC,mBAAiB,GAAGJ,GAAG,WAAW,CAAC;wBACnCM,QAAQ;;;;;;AAKlB"}
@@ -0,0 +1,2 @@
1
+ import type { ReactElement } from "react";
2
+ export declare function ToggleGallery(): ReactElement;