Data Table
virtuoso/data-tableFreeComponent
A virtualized data table with row and column virtualization.
Install it
npx shadcn@latest add https://virtuoso.dev/r/data-table.jsonSource
1'use client'23import * as React from 'react'45import {6 VirtuosoDataTable,7 Column,8 ColumnHeader,9 HeaderEdge,10 HeaderEnd,11 HeaderOverlay,12 HeaderStart,13 Cell,14 GroupHeaderCell,15 ColumnGroup,16 ColumnGroupHeader,17 setColumnSticky$,18 loadingState$,19 useVirtuosoLocation,20 useCurrentlyRenderedData,21 useVirtuosoLoadingState,22} from '@virtuoso.dev/data-table'23import { reorderColumns$ } from '@virtuoso.dev/data-table/column-reorder'24import { AlertCircle, Loader2 } from 'lucide-react'25import '@virtuoso.dev/data-table/styles.css'26import { cn } from '@/lib/utils'2728import type {29 VirtuosoDataTableProps,30 CellRenderParams,31 CellRenderFunction,32 ColumnHeaderChildren,33 ColumnHeaderRenderParams,34 ColumnHeaderRenderFunction,35 ColumnHeaderCustomComponent,36 HeaderSlotRenderParams,37 HeaderSlotRenderFunction,38 HeaderSlotCustomComponent,39 ColumnState,40 ColumnInfo,41 RowLocation,42 ListScrollLocation,43 Row,44 GroupHeaderCellProps,45 GroupHeaderRenderParams,46 GroupHeaderRenderFunction,47 GroupHeaderCustomComponent,48 ColumnGroupInfo,49 ColumnGroupHeaderRenderParams,50 ColumnGroupHeaderRenderFunction,51 ColumnGroupHeaderCustomComponent,52 SetColumnStickyPayload,53 DataTableComponents,54 RowComponentProps,55 StickyHeaderComponentProps,56 StickyColumnContainerComponentProps,57 LoadingComponentProps,58 DataTableLoadingState,59} from '@virtuoso.dev/data-table'60import type { ReorderColumnsPayload } from '@virtuoso.dev/data-table/column-reorder'6162const TableRow = React.forwardRef<HTMLDivElement, RowComponentProps & { context?: unknown }>(function TableRow(63 { context: _context, ...props },64 ref65) {66 return (67 <div68 ref={ref}69 className={cn(70 'border-b border-transparent bg-clip-padding transition-colors hover:bg-[var(--data-table-row-hover)]',71 'after:content-[""] after:absolute after:-bottom-px after:inset-x-0 after:h-px after:bg-[var(--data-table-border)] after:z-3'72 )}73 {...props}74 />75 )76})7778const TableStickyHeader = React.forwardRef<HTMLDivElement, StickyHeaderComponentProps & { context?: unknown }>(function TableStickyHeader(79 { context: _context, style, ...props },80 ref81) {82 const mergedStyle = React.useMemo(() => ({ position: 'sticky' as const, top: 0, zIndex: 1, ...style }), [style])83 return <div ref={ref} className="border-b border-[var(--data-table-border)] bg-[var(--data-table-bg)]" style={mergedStyle} {...props} />84})8586// … truncated
What it pulls in
npm packages
Files it writes
More from virtuoso
All 6 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Data Table Draggable Group Headerdata-table-draggable-group-header | virtuoso | Components | Free | 1 dep | |
| Data Table Reorder Drop Zonedata-table-reorder-drop-zone | virtuoso | Components | Free | 2 deps · 4 files | |
| Data Table Reorder Gripdata-table-reorder-grip | virtuoso | Components | Free | 2 deps · 4 files | |
| Data Table Resize Handledata-table-resize-handle | virtuoso | Components | Free | 1 dep · 2 files | |
| Data Table Sort Header Buttondata-table-sort-header-button | virtuoso | Components | Free | 2 deps · 2 files |
