@cognite/aura 1.46884.0 → 1.47174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +5 -0
- package/dist/components/ui/core/banner/banner.gallery.d.ts +2 -0
- package/dist/components/ui/core/banner/banner.gallery.js +56 -0
- package/dist/components/ui/core/banner/banner.gallery.js.map +1 -0
- package/dist/components/ui/core/data-grid/data-grid.js +1 -19
- package/dist/components/ui/core/data-grid/data-grid.js.map +1 -1
- package/dist/components/ui/core/input/input.gallery.d.ts +2 -0
- package/dist/components/ui/core/input/input.gallery.js +89 -0
- package/dist/components/ui/core/input/input.gallery.js.map +1 -0
- package/dist/components/ui/core/label/label.gallery.d.ts +2 -0
- package/dist/components/ui/core/label/label.gallery.js +57 -0
- package/dist/components/ui/core/label/label.gallery.js.map +1 -0
- package/dist/components/ui/core/radio-group/radio-group.gallery.d.ts +2 -0
- package/dist/components/ui/core/radio-group/radio-group.gallery.js +44 -0
- package/dist/components/ui/core/radio-group/radio-group.gallery.js.map +1 -0
- package/dist/components/ui/core/textarea/textarea.gallery.d.ts +2 -0
- package/dist/components/ui/core/textarea/textarea.gallery.js +51 -0
- package/dist/components/ui/core/textarea/textarea.gallery.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/components/ui/core/banner/banner.md +51 -0
- package/src/components/ui/core/input/input.md +48 -0
- package/src/components/ui/core/label/label.md +35 -0
- package/src/components/ui/core/radio-group/radio-group.md +38 -0
- package/src/components/ui/core/textarea/textarea.md +42 -0
package/DESIGN.md
CHANGED
|
@@ -1182,6 +1182,7 @@ Compact label for status, category, or metadata.
|
|
|
1182
1182
|
|
|
1183
1183
|
**Storybook-slug:** banner
|
|
1184
1184
|
**Docs-slug:** banner-alert
|
|
1185
|
+
**Full guidance:** [banner.md](./src/components/ui/core/banner/banner.md)
|
|
1185
1186
|
|
|
1186
1187
|
**Definition**
|
|
1187
1188
|
Persistent or dismissible message scoped at page or section level — stronger than inline helper text, broader than a single-field `Alert` in some layouts.
|
|
@@ -1665,6 +1666,7 @@ A structural wrapper for form fields that manages layout, spacing, validation st
|
|
|
1665
1666
|
|
|
1666
1667
|
**Storybook-slug:** input
|
|
1667
1668
|
**Docs-slug:** input
|
|
1669
|
+
**Full guidance:** [input.md](./src/components/ui/core/input/input.md)
|
|
1668
1670
|
|
|
1669
1671
|
**Definition**
|
|
1670
1672
|
Single-line text field for capturing short text-based information in forms and toolbars.
|
|
@@ -1740,6 +1742,7 @@ A flexible list-row primitive for displaying a title, optional description, lead
|
|
|
1740
1742
|
|
|
1741
1743
|
**Storybook-slug:** label
|
|
1742
1744
|
**Docs-slug:** label
|
|
1745
|
+
**Full guidance:** [label.md](./src/components/ui/core/label/label.md)
|
|
1743
1746
|
|
|
1744
1747
|
**Definition**
|
|
1745
1748
|
A form label that identifies and is programmatically associated with an input field. Not intended as general-purpose text.
|
|
@@ -1862,6 +1865,7 @@ A click-triggered panel for interactive or structured supplemental content. Stay
|
|
|
1862
1865
|
|
|
1863
1866
|
**Storybook-slug:** radio
|
|
1864
1867
|
**Docs-slug:** radio
|
|
1868
|
+
**Full guidance:** [radio-group.md](./src/components/ui/core/radio-group/radio-group.md)
|
|
1865
1869
|
|
|
1866
1870
|
**Definition**
|
|
1867
1871
|
Allows users to select exactly one option from a small set of mutually exclusive choices.
|
|
@@ -2176,6 +2180,7 @@ Organizes related content into switchable sections, allowing users to navigate b
|
|
|
2176
2180
|
|
|
2177
2181
|
**Storybook-slug:** textarea
|
|
2178
2182
|
**Docs-slug:** textarea
|
|
2183
|
+
**Full guidance:** [textarea.md](./src/components/ui/core/textarea/textarea.md)
|
|
2179
2184
|
|
|
2180
2185
|
**Definition**
|
|
2181
2186
|
A multi-line text field for extended free-form input such as comments, feedback, messages, descriptions, or notes.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconAlertCircleFilled, IconAlertTriangleFilled, IconInfoCircleFilled } from "@tabler/icons-react";
|
|
3
|
+
import { Banner, BannerIcon, BannerTitle } from "./banner.js";
|
|
4
|
+
export function BannerGallery() {
|
|
5
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
6
|
+
className: "w-full space-y-4",
|
|
7
|
+
children: [
|
|
8
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
|
9
|
+
variant: "default",
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ _jsx(BannerIcon, {
|
|
12
|
+
icon: IconInfoCircleFilled
|
|
13
|
+
}),
|
|
14
|
+
/*#__PURE__*/ _jsx(BannerTitle, {
|
|
15
|
+
children: "Default variant"
|
|
16
|
+
})
|
|
17
|
+
]
|
|
18
|
+
}),
|
|
19
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
|
20
|
+
variant: "info",
|
|
21
|
+
children: [
|
|
22
|
+
/*#__PURE__*/ _jsx(BannerIcon, {
|
|
23
|
+
icon: IconInfoCircleFilled
|
|
24
|
+
}),
|
|
25
|
+
/*#__PURE__*/ _jsx(BannerTitle, {
|
|
26
|
+
children: "Info variant"
|
|
27
|
+
})
|
|
28
|
+
]
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
|
31
|
+
variant: "warning",
|
|
32
|
+
children: [
|
|
33
|
+
/*#__PURE__*/ _jsx(BannerIcon, {
|
|
34
|
+
icon: IconAlertTriangleFilled
|
|
35
|
+
}),
|
|
36
|
+
/*#__PURE__*/ _jsx(BannerTitle, {
|
|
37
|
+
children: "Warning variant"
|
|
38
|
+
})
|
|
39
|
+
]
|
|
40
|
+
}),
|
|
41
|
+
/*#__PURE__*/ _jsxs(Banner, {
|
|
42
|
+
variant: "destructive",
|
|
43
|
+
children: [
|
|
44
|
+
/*#__PURE__*/ _jsx(BannerIcon, {
|
|
45
|
+
icon: IconAlertCircleFilled
|
|
46
|
+
}),
|
|
47
|
+
/*#__PURE__*/ _jsx(BannerTitle, {
|
|
48
|
+
children: "Destructive variant"
|
|
49
|
+
})
|
|
50
|
+
]
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=banner.gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ui/core/banner/banner.gallery.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\n\nimport {\n IconAlertCircleFilled,\n IconAlertTriangleFilled,\n IconInfoCircleFilled,\n} from '@tabler/icons-react';\n\nimport { Banner, BannerIcon, BannerTitle } from './banner';\n\nexport function BannerGallery(): ReactElement {\n return (\n <div className=\"w-full space-y-4\">\n <Banner variant=\"default\">\n <BannerIcon icon={IconInfoCircleFilled} />\n <BannerTitle>Default variant</BannerTitle>\n </Banner>\n <Banner variant=\"info\">\n <BannerIcon icon={IconInfoCircleFilled} />\n <BannerTitle>Info variant</BannerTitle>\n </Banner>\n <Banner variant=\"warning\">\n <BannerIcon icon={IconAlertTriangleFilled} />\n <BannerTitle>Warning variant</BannerTitle>\n </Banner>\n <Banner variant=\"destructive\">\n <BannerIcon icon={IconAlertCircleFilled} />\n <BannerTitle>Destructive variant</BannerTitle>\n </Banner>\n </div>\n );\n}\n"],"names":["IconAlertCircleFilled","IconAlertTriangleFilled","IconInfoCircleFilled","Banner","BannerIcon","BannerTitle","BannerGallery","div","className","variant","icon"],"mappings":";AAEA,SACEA,qBAAqB,EACrBC,uBAAuB,EACvBC,oBAAoB,QACf,sBAAsB;AAE7B,SAASC,MAAM,EAAEC,UAAU,EAAEC,WAAW,QAAQ,cAAW;AAE3D,OAAO,SAASC;IACd,qBACE,MAACC;QAAIC,WAAU;;0BACb,MAACL;gBAAOM,SAAQ;;kCACd,KAACL;wBAAWM,MAAMR;;kCAClB,KAACG;kCAAY;;;;0BAEf,MAACF;gBAAOM,SAAQ;;kCACd,KAACL;wBAAWM,MAAMR;;kCAClB,KAACG;kCAAY;;;;0BAEf,MAACF;gBAAOM,SAAQ;;kCACd,KAACL;wBAAWM,MAAMT;;kCAClB,KAACI;kCAAY;;;;0BAEf,MAACF;gBAAOM,SAAQ;;kCACd,KAACL;wBAAWM,MAAMV;;kCAClB,KAACK;kCAAY;;;;;;AAIrB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, forwardRef, useContext,
|
|
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,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from "react";
|
|
3
|
+
import { HelperText } from "../helper-text/helper-text.js";
|
|
4
|
+
import { Label } from "../label/label.js";
|
|
5
|
+
import { Input } from "./input.js";
|
|
6
|
+
export function InputGallery() {
|
|
7
|
+
const id = useId();
|
|
8
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
9
|
+
className: "w-75 space-y-4",
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
12
|
+
className: "grid w-full items-center gap-1",
|
|
13
|
+
children: [
|
|
14
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
15
|
+
htmlFor: `${id}-default`,
|
|
16
|
+
children: "Default"
|
|
17
|
+
}),
|
|
18
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
19
|
+
id: `${id}-default`,
|
|
20
|
+
placeholder: "Placeholder"
|
|
21
|
+
})
|
|
22
|
+
]
|
|
23
|
+
}),
|
|
24
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
25
|
+
className: "grid w-full items-center gap-1",
|
|
26
|
+
children: [
|
|
27
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
28
|
+
htmlFor: `${id}-filled`,
|
|
29
|
+
children: "Filled"
|
|
30
|
+
}),
|
|
31
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
32
|
+
id: `${id}-filled`,
|
|
33
|
+
defaultValue: "Input text"
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
}),
|
|
37
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
38
|
+
className: "group grid w-full items-center gap-1",
|
|
39
|
+
"data-disabled": "true",
|
|
40
|
+
children: [
|
|
41
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
42
|
+
htmlFor: `${id}-disabled`,
|
|
43
|
+
children: "Disabled"
|
|
44
|
+
}),
|
|
45
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
46
|
+
id: `${id}-disabled`,
|
|
47
|
+
placeholder: "Placeholder",
|
|
48
|
+
disabled: true
|
|
49
|
+
})
|
|
50
|
+
]
|
|
51
|
+
}),
|
|
52
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
53
|
+
className: "grid w-full items-center gap-1",
|
|
54
|
+
children: [
|
|
55
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
56
|
+
htmlFor: `${id}-readonly`,
|
|
57
|
+
children: "Read-only"
|
|
58
|
+
}),
|
|
59
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
60
|
+
id: `${id}-readonly`,
|
|
61
|
+
defaultValue: "Input text",
|
|
62
|
+
readOnly: true
|
|
63
|
+
})
|
|
64
|
+
]
|
|
65
|
+
}),
|
|
66
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
67
|
+
className: "grid w-full items-center gap-1",
|
|
68
|
+
children: [
|
|
69
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
70
|
+
htmlFor: `${id}-error`,
|
|
71
|
+
children: "Error"
|
|
72
|
+
}),
|
|
73
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
74
|
+
id: `${id}-error`,
|
|
75
|
+
placeholder: "Placeholder",
|
|
76
|
+
"aria-invalid": true
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsx(HelperText, {
|
|
79
|
+
isError: true,
|
|
80
|
+
className: "pt-1",
|
|
81
|
+
children: "Help text"
|
|
82
|
+
})
|
|
83
|
+
]
|
|
84
|
+
})
|
|
85
|
+
]
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=input.gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ui/core/input/input.gallery.tsx"],"sourcesContent":["import { type ReactElement, useId } from 'react';\n\nimport { HelperText } from '../helper-text/helper-text';\nimport { Label } from '../label/label';\n\nimport { Input } from './input';\n\nexport function InputGallery(): ReactElement {\n const id = useId();\n\n return (\n <div className=\"w-75 space-y-4\">\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-default`}>Default</Label>\n <Input id={`${id}-default`} placeholder=\"Placeholder\" />\n </div>\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-filled`}>Filled</Label>\n <Input id={`${id}-filled`} defaultValue=\"Input text\" />\n </div>\n <div\n className=\"group grid w-full items-center gap-1\"\n data-disabled=\"true\"\n >\n <Label htmlFor={`${id}-disabled`}>Disabled</Label>\n <Input id={`${id}-disabled`} placeholder=\"Placeholder\" disabled />\n </div>\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-readonly`}>Read-only</Label>\n <Input id={`${id}-readonly`} defaultValue=\"Input text\" readOnly />\n </div>\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-error`}>Error</Label>\n <Input id={`${id}-error`} placeholder=\"Placeholder\" aria-invalid />\n <HelperText isError className=\"pt-1\">\n Help text\n </HelperText>\n </div>\n </div>\n );\n}\n"],"names":["useId","HelperText","Label","Input","InputGallery","id","div","className","htmlFor","placeholder","defaultValue","data-disabled","disabled","readOnly","aria-invalid","isError"],"mappings":";AAAA,SAA4BA,KAAK,QAAQ,QAAQ;AAEjD,SAASC,UAAU,QAAQ,gCAA6B;AACxD,SAASC,KAAK,QAAQ,oBAAiB;AAEvC,SAASC,KAAK,QAAQ,aAAU;AAEhC,OAAO,SAASC;IACd,MAAMC,KAAKL;IAEX,qBACE,MAACM;QAAIC,WAAU;;0BACb,MAACD;gBAAIC,WAAU;;kCACb,KAACL;wBAAMM,SAAS,GAAGH,GAAG,QAAQ,CAAC;kCAAE;;kCACjC,KAACF;wBAAME,IAAI,GAAGA,GAAG,QAAQ,CAAC;wBAAEI,aAAY;;;;0BAE1C,MAACH;gBAAIC,WAAU;;kCACb,KAACL;wBAAMM,SAAS,GAAGH,GAAG,OAAO,CAAC;kCAAE;;kCAChC,KAACF;wBAAME,IAAI,GAAGA,GAAG,OAAO,CAAC;wBAAEK,cAAa;;;;0BAE1C,MAACJ;gBACCC,WAAU;gBACVI,iBAAc;;kCAEd,KAACT;wBAAMM,SAAS,GAAGH,GAAG,SAAS,CAAC;kCAAE;;kCAClC,KAACF;wBAAME,IAAI,GAAGA,GAAG,SAAS,CAAC;wBAAEI,aAAY;wBAAcG,QAAQ;;;;0BAEjE,MAACN;gBAAIC,WAAU;;kCACb,KAACL;wBAAMM,SAAS,GAAGH,GAAG,SAAS,CAAC;kCAAE;;kCAClC,KAACF;wBAAME,IAAI,GAAGA,GAAG,SAAS,CAAC;wBAAEK,cAAa;wBAAaG,QAAQ;;;;0BAEjE,MAACP;gBAAIC,WAAU;;kCACb,KAACL;wBAAMM,SAAS,GAAGH,GAAG,MAAM,CAAC;kCAAE;;kCAC/B,KAACF;wBAAME,IAAI,GAAGA,GAAG,MAAM,CAAC;wBAAEI,aAAY;wBAAcK,cAAY;;kCAChE,KAACb;wBAAWc,OAAO;wBAACR,WAAU;kCAAO;;;;;;AAM7C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from "react";
|
|
3
|
+
import { Input } from "../input/input.js";
|
|
4
|
+
import { Label } from "./label.js";
|
|
5
|
+
export function LabelGallery() {
|
|
6
|
+
const id = useId();
|
|
7
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
8
|
+
className: "w-75 space-y-4",
|
|
9
|
+
children: [
|
|
10
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
11
|
+
className: "grid w-full items-center gap-1",
|
|
12
|
+
children: [
|
|
13
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
14
|
+
htmlFor: `${id}-name`,
|
|
15
|
+
children: "Name"
|
|
16
|
+
}),
|
|
17
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
18
|
+
id: `${id}-name`,
|
|
19
|
+
placeholder: "Enter name"
|
|
20
|
+
})
|
|
21
|
+
]
|
|
22
|
+
}),
|
|
23
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
24
|
+
className: "grid w-full items-center gap-1",
|
|
25
|
+
children: [
|
|
26
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
27
|
+
htmlFor: `${id}-email`,
|
|
28
|
+
required: true,
|
|
29
|
+
children: "Email address"
|
|
30
|
+
}),
|
|
31
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
32
|
+
id: `${id}-email`,
|
|
33
|
+
type: "email",
|
|
34
|
+
required: true
|
|
35
|
+
})
|
|
36
|
+
]
|
|
37
|
+
}),
|
|
38
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
39
|
+
className: "group grid w-full items-center gap-1",
|
|
40
|
+
"data-disabled": "true",
|
|
41
|
+
children: [
|
|
42
|
+
/*#__PURE__*/ _jsx(Label, {
|
|
43
|
+
htmlFor: `${id}-workspace`,
|
|
44
|
+
children: "Workspace"
|
|
45
|
+
}),
|
|
46
|
+
/*#__PURE__*/ _jsx(Input, {
|
|
47
|
+
id: `${id}-workspace`,
|
|
48
|
+
defaultValue: "Default",
|
|
49
|
+
disabled: true
|
|
50
|
+
})
|
|
51
|
+
]
|
|
52
|
+
})
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=label.gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ui/core/label/label.gallery.tsx"],"sourcesContent":["import { type ReactElement, useId } from 'react';\n\nimport { Input } from '../input/input';\n\nimport { Label } from './label';\n\nexport function LabelGallery(): ReactElement {\n const id = useId();\n\n return (\n <div className=\"w-75 space-y-4\">\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-name`}>Name</Label>\n <Input id={`${id}-name`} placeholder=\"Enter name\" />\n </div>\n <div className=\"grid w-full items-center gap-1\">\n <Label htmlFor={`${id}-email`} required>\n Email address\n </Label>\n <Input id={`${id}-email`} type=\"email\" required />\n </div>\n <div\n className=\"group grid w-full items-center gap-1\"\n data-disabled=\"true\"\n >\n <Label htmlFor={`${id}-workspace`}>Workspace</Label>\n <Input id={`${id}-workspace`} defaultValue=\"Default\" disabled />\n </div>\n </div>\n );\n}\n"],"names":["useId","Input","Label","LabelGallery","id","div","className","htmlFor","placeholder","required","type","data-disabled","defaultValue","disabled"],"mappings":";AAAA,SAA4BA,KAAK,QAAQ,QAAQ;AAEjD,SAASC,KAAK,QAAQ,oBAAiB;AAEvC,SAASC,KAAK,QAAQ,aAAU;AAEhC,OAAO,SAASC;IACd,MAAMC,KAAKJ;IAEX,qBACE,MAACK;QAAIC,WAAU;;0BACb,MAACD;gBAAIC,WAAU;;kCACb,KAACJ;wBAAMK,SAAS,GAAGH,GAAG,KAAK,CAAC;kCAAE;;kCAC9B,KAACH;wBAAMG,IAAI,GAAGA,GAAG,KAAK,CAAC;wBAAEI,aAAY;;;;0BAEvC,MAACH;gBAAIC,WAAU;;kCACb,KAACJ;wBAAMK,SAAS,GAAGH,GAAG,MAAM,CAAC;wBAAEK,QAAQ;kCAAC;;kCAGxC,KAACR;wBAAMG,IAAI,GAAGA,GAAG,MAAM,CAAC;wBAAEM,MAAK;wBAAQD,QAAQ;;;;0BAEjD,MAACJ;gBACCC,WAAU;gBACVK,iBAAc;;kCAEd,KAACT;wBAAMK,SAAS,GAAGH,GAAG,UAAU,CAAC;kCAAE;;kCACnC,KAACH;wBAAMG,IAAI,GAAGA,GAAG,UAAU,CAAC;wBAAEQ,cAAa;wBAAUC,QAAQ;;;;;;AAIrE"}
|