@adapttable/mui 0.2.2 → 0.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useSavedViews","Box","Button","Divider","IconButton","Popover","Stack","TextField","useState","SavedViewsMenu","t0","$","_c","options","labels","views","save","apply","remove","anchor","setAnchor","name","setName","t1","trim","trimmed","t2","t3","Symbol","for","e","currentTarget","t4","savedViews","t5","t6","t7","vertical","horizontal","t8","p","minWidth","t9","deleteView","t10","view","alignItems","justifyContent","map","my","t11","t12","viewName","htmlInput","t13","e_0","target","value","t14","t15","t16","t17","saveView","t18","t19","t20","t21","filterLabel","RANGE_OP_LABEL_KEYS","RANGE_OPS","RANGE_SUFFIXES","readRangeWidget","useFilterOptions","writeRangeWidget","Checkbox","CircularProgress","FormControl","FormControlLabel","FormGroup","FormLabel","Stack","TextField","useState","scalarText","value","String","selectedList","Array","isArray","TextFilter","t0","$","_c","def","source","t1","t2","placeholder","t3","extra","key","t4","t5","e","setExtra","target","t6","SelectFilter","options","loading","Symbol","for","select","native","inputLabel","shrink","t7","t8","map","_temp","t9","option","label","MultiSelectFilter","T0","T1","checked","toggle","on","next","filter","v","columnGap","includes","_","on_0","RangeFilter","type","labels","suffixes","lowKey","start","highKey","end","opLabelKeys","state","op","setOp","single","b","a","setExtras","commit","changeOp","raw","next_0","find","candidate","write","flex","minWidth","input","bounds","from","raw_0","to","raw_1","undefined","raw_2","width","mb","flexWrap","operator","t10","e_0","t11","t12","t13","t14","candidate_0","t15","t16","t17","FilterField","AutoFilterForm","defs","Box","Button","ClickAwayListener","Paper","Popper","Stack","Typography","useEffect","FilterPopover","t0","$","_c","open","onClose","anchorEl","filters","activeFilterCount","onClearFilters","labels","dir","t1","undefined","t2","t3","onKeyDown","event","key","document","addEventListener","removeEventListener","t4","t5","t6","t7","Symbol","for","name","options","offset","zIndex","t8","width","maxWidth","borderRadius","t9","p","display","flexDirection","gap","t10","justifyContent","alignItems","t11","fontWeight","t12","t13","t14","clearAll","t15","t16","t17","t18","t19","t20","pageSizeOptions","resolveDisabledReason","useBulkActionRunner","Alert","Badge","Box","Button","Chip","Drawer","InputAdornment","MenuItem","Pagination","Skeleton","Stack","TextField","Tooltip","Typography","useRef","FilterPopover","FiltersIcon","$","_c","t0","Symbol","for","SearchIcon","srOnly","position","width","height","padding","margin","overflow","clip","whiteSpace","border","Toolbar","table","hideSearch","searchPlaceholder","sortByOptions","customToolbar","hasFilters","activeFilterCount","showRowsPerPage","filtersMode","filters","filtersOpen","onToggleFilters","onFiltersTriggerPointerDown","onCloseFilters","onClearFilters","dir","columnMenu","labels","source","sortOptions","isMobile","undefined","searchProps","getSearchInputProps","placeholder","filtersAnchorRef","filtersButton","flexWrap","alignItems","justifyContent","value","htmlInput","search","type","input","startAdornment","onChange","flex","minWidth","maxWidth","length","sortBy","e","setSort","target","sortDir","map","o","label","current","rowsPerPage","limit","setLimit","Number","n","Chips","chips","onClearAll","t1","t2","listStyle","p","m","t3","clearAll","t4","chip","key","onRemove","t5","BulkBar","selection","total","bulkActions","confirm","selectedIds","selectedCount","headerState","visibleIds","allMatching","selectAllMatching","clear","cancel","cancelLabel","onComplete","pending","run","T0","T1","t10","t11","t12","t6","t7","t8","t9","ids","showBanner","t13","t14","t15","t16","allMatchingSelected","pageSelected","t17","action","reason","disabledReason","color","icon","Footer","pagination","setPage","String","_temp","fromIndex","toIndex","showing","from","to","_","page","page_0","goToPage","previousPage","nextPage","safePage","totalPages","ErrorState","error","onRetry","retry","errorTitle","message","LoadingState","rows","columns","loadingLabel","r","py","Array","Math","max","_temp2","__0","c","FilterDrawer","open","onClose","display","flexDirection","gap","applyFilters","ACTIONS_COLUMN_KEY","columnMenuRows","columnReorderKeyProps","EyeIcon","GripIcon","nextPinSide","pinActionLabel","PinIcon","useColumnDragState","Box","Button","Divider","IconButton","Popover","Stack","Typography","useState","VisibilityToggle","t0","$","_c","hidden","name","labels","onToggle","t1","showColumn","hideColumn","t2","t3","t4","t5","RowName","flex","color","textDecoration","PinToggle","active","label","onClick","Symbol","for","ActionsRow","layout","isHidden","pinned","state","my","px","py","alignItems","width","toggleVisible","t6","actions","t7","t8","unpin","pinRight","t9","setPinned","undefined","t10","t11","ColumnMenu","allColumns","hasRowActions","drag","anchor","setAnchor","e","currentTarget","columns","vertical","horizontal","p","minWidth","display","pb","fontWeight","textTransform","letterSpacing","r","indicator","rowAttrs","key","index","edge","edgeOffset","cursor","opacity","boxShadow","theme","palette","primary","main","rowDragProps","dropProps","move","moveLeft","moveRight","map","t12","t13","justifyContent","t14","reset","t15","resetColumns","t16","t17","t18","columnResizeHandleProps","edgePinStyle","headerGroupRow","PIN_Z","pinnedCellStyle","pinnedColumnWidth","resolveDisabledReason","resolveVirtualRows","rowClickProps","runRowAction","tableMinWidth","tableRenderModel","useHorizontalOverflow","memo","useCallback","useMemo","useRef","RESIZE_HANDLE_SX","position","insetInlineEnd","top","height","width","cursor","touchAction","userSelect","Box","Card","CardContent","Checkbox","IconButton","Stack","Table","TableBody","TableCell","TableFooter","TableHead","TableRow","TableSortLabel","Tooltip","Typography","muiColor","color","EXPAND_WIDTH","useStableToggle","target","ref","current","id","toggle","ExpandChevron","t0","$","_c","expanded","dir","transform","t1","display","transition","t2","Symbol","for","t3","ExpandToggle","onToggle","expandLabel","collapseLabel","t4","muiAlign","align","RowActionButtons","row","actions","confirm","cancelLabel","justifyContent","action","isHidden","reason","disabledReason","disabled","undefined","isDisabled","key","label","e","stopPropagation","icon","map","DESKTOP_ROW_COMPARED","desktopRowPropsAreEqual","prev","next","every","DesktopRowImpl","index","selected","columns","sx","columnSpan","className","hasSelection","hasExpansion","showActions","selectRowLabel","rowActions","renderRowDetail","onToggleSelect","onToggleExpand","onRowClick","prefetch","measureElement","expand","selection","input","t5","t6","column","cells","Cell","accessor","t7","t8","t9","DesktopRow","DesktopTable","table","rows","getRowId","size","rowClassName","summaryRow","expansion","rowEntries","paddingTop","paddingBottom","stickyHeader","stickyTop","pinOffset","maxHeight","virtualScrollRef","setWidth","columnWidths","resizeLabel","actionsPinned","labels","entries","groupRow","summaryCells","isExpanded","expandActive","hasPinned","some","c","overflow","inScrollBox","overflowing","headSx","zIndex","header","bgcolor","selectionWidth","actionsWidth","leadLeft","leadRight","leads","left","right","selectionLead","hasLeftPin","side","hasRightPin","stickActions","headCellSx","pin","headerPinned","needsRelative","Boolean","textAlign","edgeHeadSx","active","lead","insetInlineStart","rowSx","edge","body","boxSx","overflowX","minWidth","widths","extra","node","getTableProps","cell","span","fontWeight","selectAll","headerState","toggleAll","headerCellProps","getHeaderCellProps","ariaSort","sortIndex","sortable","getSortButtonProps","onClick","fontSize","ml","p","isSelected","selectRow","cancel","expandRow","collapseRow","mobileLabel","MobileCards","T0","compact","t10","pb","mb","length","mt","column_0","value","ACTIONS_COLUMN_KEY","isDeclarativeFilters","resolveLabels","useChromeBodyData","useChromeScrollReset","useFilterTriggerToggle","useTableChrome","useTableData","Box","Button","LinearProgress","Paper","Stack","Typography","useRef","useState","AutoFilterForm","BulkBar","Chips","ErrorState","FilterDrawer","Footer","LoadingState","Toolbar","ColumnMenu","SavedViewsMenu","DesktopTable","MobileCards","tableSize","size","density","resizeSetter","enabled","setWidth","undefined","resolveActionsColumn","declared","layout","hasRowActions","length","rowActions","isHidden","actionsPinned","state","pinned","useChromeProps","props","$","_c","t0","urlSync","urlAdapter","t1","columns","data","filters","loading","locale","onQueryChange","source","total","urlKey","adapter","runtime","filtersNode","t2","labels","defs","filterLabels","t3","DataTable","slots","className","filtersMode","chromeProps","c","table","confirm","getRowId","filtersOpen","setFiltersOpen","filtersTrigger","rootRef","virtualization","loadMoreRef","canLoadMore","virtualScrollRef","columnLayout","allColumns","isMobile","enableColumnMenu","columnMenu","t4","savedViews","savedViewsMenu","body","t5","skeletonRows","skeleton","limit","clearFilters","emptyVariant","empty","py","alignItems","noResults","noData","clearAll","detail","expansion","t6","rows","t7","dir","onRowClick","renderRowDetail","rowClassName","summaryRow","measureElement","paddingBottom","paddingTop","prefetch","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","stickyHeader","t18","stickyTop","t19","pinOffset","t20","maxHeight","t21","resizableColumns","t22","widths","resizeColumn","isRefreshing","Symbol","for","p","hideSearch","searchPlaceholder","sortByOptions","toolbar","Boolean","activeFilterCount","onClick","onPointerDown","mergedChips","bulkActions","selection","error","refetch","hasNextPage","display","justifyContent","isFetchingNextPage","fetchNextPage","loadMore","showFooter","setLimit","setPage","pagination","t23"],"sources":["../src/components/SavedViewsMenu.tsx","../src/components/AutoFilterForm.tsx","../src/components/FilterPopover.tsx","../src/components/chrome.tsx","../src/components/ColumnMenu.tsx","../src/components/tables.tsx","../src/DataTable.tsx"],"sourcesContent":["import {\n type TableLabels,\n useSavedViews,\n type UseSavedViewsOptions,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n Divider,\n IconButton,\n Popover,\n Stack,\n TextField,\n} from \"@mui/material\";\nimport { useState } from \"react\";\n\n/** The label subset the saved-views menu renders. */\nexport type SavedViewsMenuLabels = Pick<\n Required<TableLabels>,\n \"savedViews\" | \"saveView\" | \"viewName\" | \"deleteView\"\n>;\n\n/** Props for the saved-views menu. */\nexport interface SavedViewsMenuProps {\n /** Storage + URL backend wiring, forwarded to core's `useSavedViews`. */\n options: UseSavedViewsOptions;\n /** Resolved table labels (trigger, save row, delete action). */\n labels: SavedViewsMenuLabels;\n}\n\n/**\n * MUI saved-views menu: a toolbar button opening a popover that lists the\n * saved views — click applies one to the table, the trailing × deletes it —\n * above a save row that captures the table's CURRENT URL state (search,\n * sort, page, filters, column layout) under a typed name.\n */\nexport function SavedViewsMenu({\n options,\n labels,\n}: Readonly<SavedViewsMenuProps>) {\n const { views, save, apply, remove } = useSavedViews(options);\n const [anchor, setAnchor] = useState<null | HTMLElement>(null);\n const [name, setName] = useState(\"\");\n const trimmed = name.trim();\n return (\n <>\n <Button\n size=\"small\"\n variant=\"outlined\"\n aria-expanded={anchor !== null}\n aria-haspopup=\"true\"\n onClick={(e) => setAnchor(e.currentTarget)}\n >\n {labels.savedViews}\n </Button>\n <Popover\n anchorEl={anchor}\n open={anchor !== null}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n >\n <Box sx={{ p: 0.75, minWidth: 250 }}>\n {views.map((view) => (\n <Stack\n key={view.name}\n direction=\"row\"\n spacing={0.5}\n sx={{ alignItems: \"center\" }}\n >\n <Button\n size=\"small\"\n fullWidth\n sx={{ justifyContent: \"flex-start\" }}\n onClick={() => {\n apply(view.name);\n setAnchor(null);\n }}\n >\n {view.name}\n </Button>\n <IconButton\n size=\"small\"\n aria-label={`${labels.deleteView}: ${view.name}`}\n onClick={() => remove(view.name)}\n >\n ×\n </IconButton>\n </Stack>\n ))}\n <Divider sx={{ my: 0.5 }} />\n <Stack direction=\"row\" spacing={0.5} sx={{ alignItems: \"center\" }}>\n <TextField\n size=\"small\"\n value={name}\n placeholder={labels.viewName}\n slotProps={{ htmlInput: { \"aria-label\": labels.viewName } }}\n onChange={(e) => setName(e.target.value)}\n />\n <Button\n size=\"small\"\n variant=\"contained\"\n disabled={trimmed === \"\"}\n onClick={() => {\n save(trimmed);\n setName(\"\");\n }}\n >\n {labels.saveView}\n </Button>\n </Stack>\n </Box>\n </Popover>\n </>\n );\n}\n","import {\n type FilterDef,\n filterLabel,\n type FilterValue,\n RANGE_OP_LABEL_KEYS,\n RANGE_OPS,\n RANGE_SUFFIXES,\n type RangeOp,\n readRangeWidget,\n type TableLabels,\n type TableSource,\n useFilterOptions,\n writeRangeWidget,\n} from \"@adapttable/core\";\nimport {\n Checkbox,\n CircularProgress,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormLabel,\n Stack,\n TextField,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useState } from \"react\";\n\n/** The slice of the source the auto-built form reads and writes. */\ntype FilterBag<TRow> = Pick<\n TableSource<TRow>,\n \"extra\" | \"setExtra\" | \"setExtras\"\n>;\n\n/** Props for {@link AutoFilterForm}. */\nexport interface AutoFilterFormProps<TRow> {\n /** The resolved declarative definitions, in render order. */\n defs: readonly FilterDef<TRow>[];\n /** The filter bag the widgets read from and write to. */\n source: FilterBag<TRow>;\n /** Resolved labels for the operator-first range widgets. */\n labels: Required<TableLabels>;\n}\n\n/** Props for one rendered filter widget. */\ninterface FieldProps<TRow> {\n def: FilterDef<TRow>;\n source: FilterBag<TRow>;\n}\n\n/** Field props for the widgets that also render resolved labels. */\ninterface LabeledFieldProps<TRow> extends FieldProps<TRow> {\n labels: Required<TableLabels>;\n}\n\n/** A scalar filter value as input text (arrays/blanks render empty). */\nfunction scalarText(value: FilterValue): string {\n return typeof value === \"string\" || typeof value === \"number\"\n ? String(value)\n : \"\";\n}\n\n/** A multi-select filter value as the checked-value list. */\nfunction selectedList(value: FilterValue): readonly string[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction TextFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n return (\n <TextField\n size=\"small\"\n label={filterLabel(def)}\n placeholder={def.placeholder}\n value={scalarText(source.extra[def.key])}\n onChange={(e) => source.setExtra(def.key, e.target.value)}\n />\n );\n}\n\nfunction SelectFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n // The options source may be an array OR an async loader — never map it\n // directly. The hook resolves both (and reports loader progress).\n const { options, loading } = useFilterOptions(def);\n return (\n <TextField\n select\n size=\"small\"\n label={filterLabel(def)}\n value={scalarText(source.extra[def.key])}\n onChange={(e) => source.setExtra(def.key, e.target.value)}\n slotProps={{\n select: { native: true },\n inputLabel: { shrink: true },\n }}\n >\n <option value=\"\">All</option>\n {loading && (\n <option value=\"\" disabled>\n …\n </option>\n )}\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </TextField>\n );\n}\n\nfunction MultiSelectFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n const { options, loading } = useFilterOptions(def);\n const checked = selectedList(source.extra[def.key]);\n const toggle = (value: string, on: boolean) => {\n const next = on ? [...checked, value] : checked.filter((v) => v !== value);\n source.setExtra(def.key, next);\n };\n return (\n <FormControl component=\"fieldset\" variant=\"standard\">\n <FormLabel component=\"legend\">{filterLabel(def)}</FormLabel>\n <FormGroup row sx={{ columnGap: 1.5 }}>\n {loading ? (\n <CircularProgress size={16} />\n ) : (\n options.map((option) => (\n <FormControlLabel\n key={option.value}\n label={option.label}\n control={\n <Checkbox\n size=\"small\"\n checked={checked.includes(option.value)}\n onChange={(_, on) => toggle(option.value, on)}\n />\n }\n />\n ))\n )}\n </FormGroup>\n </FormControl>\n );\n}\n\n/**\n * Operator-first range widget: a comparison select, then one value input —\n * or a From/To pair for \"between\". The UI state is the operator alone; the\n * bounds always live in the source's `Min`/`Max` (`From`/`To`) pair, so\n * URLs, chips, and predicates are untouched by the operator presentation.\n */\nfunction RangeFilter<TRow>({\n def,\n type,\n source,\n labels,\n}: Readonly<LabeledFieldProps<TRow> & { type: keyof typeof RANGE_SUFFIXES }>) {\n const suffixes = RANGE_SUFFIXES[type];\n const lowKey = def.key + suffixes.start;\n const highKey = def.key + suffixes.end;\n const opLabelKeys =\n RANGE_OP_LABEL_KEYS[type === \"dateRange\" ? \"date\" : \"number\"];\n const state = readRangeWidget(source.extra, lowKey, highKey);\n // The operator is presentation state, seeded from the persisted pair so a\n // restored URL reopens on the comparison it encodes.\n const [op, setOp] = useState<RangeOp | undefined>(state.op);\n // The single bound lives under the high key for \"at most\", low otherwise.\n const single = op === \"lte\" ? state.b : state.a;\n const commit = (next: RangeOp | undefined, a: string, b: string) =>\n source.setExtras(writeRangeWidget(next, a, b, lowKey, highKey));\n const changeOp = (raw: string) => {\n const next = RANGE_OPS.find((candidate) => candidate === raw);\n setOp(next);\n // Carry the value into the new comparison; the upper bound only\n // survives while \"between\" keeps a field for it.\n commit(next, single, op === \"between\" ? state.b : \"\");\n };\n const input = (\n label: string,\n value: string,\n write: (raw: string) => void\n ) => (\n <TextField\n size=\"small\"\n sx={{ flex: \"1 1 7rem\", minWidth: \"7rem\" }}\n type={type === \"dateRange\" ? \"date\" : \"number\"}\n label={label}\n value={value}\n onChange={(e) => write(e.target.value)}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n );\n let bounds: ReactNode = null;\n if (op === \"between\") {\n bounds = (\n <>\n {input(labels.from, state.a, (raw) => commit(\"between\", raw, state.b))}\n {input(labels.to, state.b, (raw) => commit(\"between\", state.a, raw))}\n </>\n );\n } else if (op !== undefined) {\n bounds = input(labels.value, single, (raw) => commit(op, raw, \"\"));\n }\n return (\n <FormControl component=\"fieldset\" variant=\"standard\" sx={{ width: \"100%\" }}>\n <FormLabel component=\"legend\" sx={{ mb: 0.75 }}>\n {filterLabel(def)}\n </FormLabel>\n <Stack direction=\"row\" spacing={1} useFlexGap sx={{ flexWrap: \"wrap\" }}>\n <TextField\n select\n size=\"small\"\n label={labels.operator}\n value={op ?? \"\"}\n onChange={(e) => changeOp(e.target.value)}\n slotProps={{\n select: { native: true },\n inputLabel: { shrink: true },\n }}\n sx={{ flex: \"0 0 8.5rem\", width: \"8.5rem\" }}\n >\n <option value=\"\" />\n {RANGE_OPS.map((candidate) => (\n <option key={candidate} value={candidate}>\n {labels[opLabelKeys[candidate]]}\n </option>\n ))}\n </TextField>\n {bounds}\n </Stack>\n </FormControl>\n );\n}\n\nfunction FilterField<TRow>({\n def,\n source,\n labels,\n}: Readonly<LabeledFieldProps<TRow>>) {\n switch (def.type) {\n case \"text\":\n return <TextFilter def={def} source={source} />;\n case \"select\":\n return <SelectFilter def={def} source={source} />;\n case \"multiSelect\":\n return <MultiSelectFilter def={def} source={source} />;\n case \"dateRange\":\n case \"numberRange\":\n return (\n <RangeFilter\n def={def}\n type={def.type}\n source={source}\n labels={labels}\n />\n );\n }\n}\n\n/**\n * The auto-built filter form: one MUI widget per declarative definition,\n * reading and writing the source's extra-filter bag (so chips, URL state\n * and — on frontend data — the row predicate all stay in sync). The selects\n * render natively, so every control works inline, without portal menus.\n *\n * @typeParam TRow - The row type.\n */\nexport function AutoFilterForm<TRow>({\n defs,\n source,\n labels,\n}: Readonly<AutoFilterFormProps<TRow>>) {\n return (\n <Stack spacing={1.5}>\n {defs.map((def) => (\n <FilterField key={def.key} def={def} source={source} labels={labels} />\n ))}\n </Stack>\n );\n}\n","import type { Direction, TableLabels } from \"@adapttable/core\";\nimport {\n Box,\n Button,\n ClickAwayListener,\n Paper,\n Popper,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useEffect } from \"react\";\n\n/** Props for {@link FilterPopover}. */\nexport interface FilterPopoverProps {\n open: boolean;\n onClose: () => void;\n /** The element the popover is anchored to (the Filters button). */\n anchorEl: HTMLElement | null;\n filters: ReactNode;\n activeFilterCount: number;\n onClearFilters: () => void;\n labels: Required<TableLabels>;\n dir?: Direction;\n}\n\n/**\n * Anchored filter card (the default filter container). Opens under the Filters\n * button. Built on a non-modal `Popper` (+ `ClickAwayListener`) rather than the\n * Modal-based `Popover`, so it renders NO backdrop/scrim — the background stays\n * visible and interactive. Closes on outside click or Escape. Placement is\n * `bottom-end` (flips to `bottom-start` for RTL). Pair with\n * `filtersMode=\"drawer\"` for the slide-in panel instead.\n */\nexport function FilterPopover({\n open,\n onClose,\n anchorEl,\n filters,\n activeFilterCount,\n onClearFilters,\n labels,\n dir = \"ltr\",\n}: Readonly<FilterPopoverProps>) {\n // Escape must close the popover wherever focus sits (e.g. still on the\n // Filters trigger) — a keydown on the card alone misses that case.\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, onClose]);\n return (\n <Popper\n open={open && anchorEl !== null}\n anchorEl={anchorEl}\n placement={dir === \"rtl\" ? \"bottom-start\" : \"bottom-end\"}\n modifiers={[{ name: \"offset\", options: { offset: [0, 4] } }]}\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener mouseEvent=\"onMouseDown\" onClickAway={onClose}>\n <Paper\n elevation={8}\n sx={{\n width: 360,\n maxWidth: \"calc(100vw - 32px)\",\n borderRadius: 2,\n }}\n >\n <Box sx={{ p: 2, display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Stack\n direction=\"row\"\n sx={{ justifyContent: \"space-between\", alignItems: \"center\" }}\n >\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600 }}>\n {labels.filters}\n </Typography>\n <Button\n size=\"small\"\n onClick={onClearFilters}\n disabled={activeFilterCount === 0}\n >\n {labels.clearAll}\n </Button>\n </Stack>\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {filters}\n </Box>\n </Box>\n </Paper>\n </ClickAwayListener>\n </Popper>\n );\n}\n","import {\n type ActiveFilterChip,\n type BulkBarChromeProps,\n type Direction,\n pageSizeOptions,\n type PaginationInfo,\n resolveDisabledReason,\n type TableLabels,\n type ToolbarChromeProps,\n useBulkActionRunner,\n} from \"@adapttable/core\";\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Chip,\n Drawer,\n InputAdornment,\n MenuItem,\n Pagination,\n Skeleton,\n Stack,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport { type ReactNode, useRef } from \"react\";\n\nimport { FilterPopover } from \"./FilterPopover\";\n\n/** Funnel/filter glyph (currentColor, no icon-lib dependency). */\nfunction FiltersIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 5h18l-7 8v5l-4 2v-7L3 5Z\" />\n </svg>\n );\n}\n\n/** Magnifying-glass glyph for the search field (currentColor, no icon-lib). */\nfunction SearchIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n\n/** Inline equivalent of `@mui/utils` visuallyHidden (avoids an extra dep). */\nconst srOnly = {\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n whiteSpace: \"nowrap\",\n border: 0,\n} as const;\n\n/**\n * Toolbar props: the shared {@link ToolbarChromeProps} plus the filter-container\n * wiring (mode + open/close handlers) so the Filters button can act as either\n * the popover anchor (default) or the drawer trigger.\n */\nexport interface MuiToolbarProps<TRow> extends ToolbarChromeProps<TRow> {\n /** Which filter container the Filters button drives. */\n filtersMode: \"popover\" | \"drawer\";\n /** Filter content (rendered inside the popover when in popover mode). */\n filters?: ReactNode;\n /** Close the filter container (popover mode). */\n onCloseFilters: () => void;\n /** Clear all active filters. */\n onClearFilters: () => void;\n}\n\n/** Search field + sort select + filters button + rows-per-page. */\nexport function Toolbar<TRow>({\n table,\n hideSearch,\n searchPlaceholder,\n sortByOptions,\n customToolbar,\n hasFilters,\n activeFilterCount,\n showRowsPerPage,\n filtersMode,\n filters,\n filtersOpen,\n onToggleFilters,\n onFiltersTriggerPointerDown,\n onCloseFilters,\n onClearFilters,\n dir,\n columnMenu,\n}: Readonly<MuiToolbarProps<TRow>>) {\n const { labels, source } = table;\n const sortOptions =\n sortByOptions ?? (table.isMobile ? table.sortByOptions : undefined);\n const searchProps = table.getSearchInputProps(\n searchPlaceholder ? { placeholder: searchPlaceholder } : undefined\n );\n const filtersAnchorRef = useRef<HTMLButtonElement>(null);\n\n const filtersButton = hasFilters ? (\n <Badge color=\"primary\" badgeContent={activeFilterCount}>\n <Button\n ref={filtersAnchorRef}\n variant=\"outlined\"\n size=\"small\"\n startIcon={<FiltersIcon />}\n aria-expanded={filtersMode === \"popover\" ? filtersOpen : undefined}\n onPointerDown={onFiltersTriggerPointerDown}\n onClick={onToggleFilters}\n >\n {labels.filters}\n </Button>\n </Badge>\n ) : null;\n\n return (\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n {!hideSearch && (\n <TextField\n size=\"small\"\n value={searchProps.value}\n placeholder={searchProps.placeholder}\n slotProps={{\n htmlInput: { \"aria-label\": labels.search, type: \"search\" },\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon />\n </InputAdornment>\n ),\n },\n }}\n onChange={searchProps.onChange}\n sx={{ flex: 1, minWidth: 160, maxWidth: 360 }}\n />\n )}\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{ alignItems: \"center\", flexWrap: \"wrap\" }}\n >\n {sortOptions && sortOptions.length > 0 && (\n <TextField\n select\n size=\"small\"\n label={labels.sortBy}\n value={source.sortBy ?? \"\"}\n onChange={(e) =>\n source.setSort(\n e.target.value || undefined,\n source.sortDir ?? \"asc\"\n )\n }\n sx={{ minWidth: 160 }}\n >\n <MenuItem value=\"\">—</MenuItem>\n {sortOptions.map((o) => (\n <MenuItem key={o.value} value={o.value}>\n {o.label}\n </MenuItem>\n ))}\n </TextField>\n )}\n {customToolbar}\n {filtersButton}\n {hasFilters && filtersMode === \"popover\" && (\n <FilterPopover\n open={filtersOpen}\n onClose={onCloseFilters}\n anchorEl={filtersAnchorRef.current}\n filters={filters}\n activeFilterCount={activeFilterCount}\n onClearFilters={onClearFilters}\n labels={labels}\n dir={dir}\n />\n )}\n {columnMenu}\n {showRowsPerPage && (\n <TextField\n select\n size=\"small\"\n label={labels.rowsPerPage}\n value={source.limit}\n onChange={(e) => source.setLimit(Number(e.target.value))}\n sx={{ minWidth: 110 }}\n >\n {pageSizeOptions(source.limit).map((n) => (\n <MenuItem key={n} value={n}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n )}\n </Stack>\n </Stack>\n );\n}\n\n/** Removable MUI chips. */\nexport function Chips({\n chips,\n onClearAll,\n labels,\n}: Readonly<{\n chips: readonly ActiveFilterChip[];\n onClearAll: () => void;\n labels: Required<TableLabels>;\n}>) {\n if (chips.length === 0) return null;\n return (\n <Stack\n direction=\"row\"\n spacing={0.5}\n useFlexGap\n component=\"ul\"\n aria-label={labels.filters}\n sx={{ listStyle: \"none\", p: 0, m: 0, flexWrap: \"wrap\" }}\n >\n {chips.map((chip) => (\n <li key={chip.key}>\n <Chip\n label={chip.label}\n size=\"small\"\n onDelete={chip.onRemove}\n deleteIcon={\n <span aria-label={`${labels.clearAll}: ${chip.label}`}>×</span>\n }\n />\n </li>\n ))}\n <li>\n <Button size=\"small\" onClick={onClearAll}>\n {labels.clearAll}\n </Button>\n </li>\n </Stack>\n );\n}\n\n/** Selection toolbar. */\nexport function BulkBar({\n selection,\n total,\n bulkActions,\n confirm,\n labels,\n}: Readonly<BulkBarChromeProps>) {\n const {\n selectedIds,\n selectedCount,\n headerState,\n visibleIds,\n allMatching,\n selectAllMatching,\n clear,\n } = selection;\n const { pending, run } = useBulkActionRunner({\n confirm,\n cancelLabel: labels.cancel,\n onComplete: clear,\n });\n if (selectedCount === 0) return null;\n const ids = [...selectedIds];\n // Offer \"select all N matching\" only when the whole page is selected and\n // more rows match beyond it; once active, show the cross-page scope.\n const showBanner = headerState === \"all\" && total > visibleIds.length;\n return (\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n }}\n >\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{ alignItems: \"center\", flexWrap: \"wrap\" }}\n >\n <Typography variant=\"body2\">\n {labels.selectedCount(selectedCount)}\n </Typography>\n {showBanner &&\n (allMatching ? (\n <>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {labels.allMatchingSelected(total)}\n </Typography>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={clear}\n disabled={pending !== null}\n >\n {labels.clearAll}\n </Button>\n </>\n ) : (\n <>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {labels.pageSelected(visibleIds.length)}\n </Typography>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={selectAllMatching}\n disabled={pending !== null}\n >\n {labels.selectAllMatching(total)}\n </Button>\n </>\n ))}\n </Stack>\n <Stack direction=\"row\" spacing={1} useFlexGap sx={{ flexWrap: \"wrap\" }}>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={clear}\n disabled={pending !== null}\n >\n {labels.clearAll}\n </Button>\n {bulkActions.map((action) => {\n const reason = resolveDisabledReason(action.disabledReason?.(ids));\n return (\n <Tooltip key={action.key} title={reason ?? \"\"}>\n <span>\n <Button\n size=\"small\"\n variant=\"contained\"\n color={action.color as \"primary\" | undefined}\n startIcon={action.icon}\n disabled={reason !== undefined || pending !== null}\n onClick={() =>\n run(\n action,\n ids,\n allMatching ? { allMatching: true, total } : undefined\n )\n }\n >\n {action.label}\n </Button>\n </span>\n </Tooltip>\n );\n })}\n </Stack>\n </Stack>\n );\n}\n\n/** Paged footer: rows-per-page + range on the left, pager on the right. */\nexport function Footer({\n pagination,\n total,\n limit,\n setPage,\n setLimit,\n labels,\n}: Readonly<{\n pagination: PaginationInfo;\n total: number;\n limit: number;\n setPage: (n: number) => void;\n setLimit: (n: number) => void;\n labels: Required<TableLabels>;\n}>) {\n return (\n <Stack\n direction=\"row\"\n spacing={2}\n useFlexGap\n sx={{\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n }}\n >\n <Stack\n direction=\"row\"\n spacing={1.5}\n useFlexGap\n sx={{ alignItems: \"center\" }}\n >\n <TextField\n select\n size=\"small\"\n label={labels.rowsPerPage}\n value={String(limit)}\n onChange={(e) => setLimit(Number(e.target.value))}\n sx={{ minWidth: 100 }}\n >\n {pageSizeOptions(limit).map((n) => (\n <MenuItem key={n} value={String(n)}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n {total > 0 && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {labels.showing({\n from: pagination.fromIndex,\n to: pagination.toIndex,\n total,\n })}\n </Typography>\n )}\n </Stack>\n <Pagination\n count={pagination.totalPages}\n page={pagination.safePage}\n onChange={(_, page) => setPage(page)}\n size=\"small\"\n // Only page items and the previous/next controls render here\n // (no first/last buttons), so the mapping is total.\n getItemAriaLabel={(type, page) => {\n // Page items always carry their page number (null is reserved\n // for ellipsis/control items, which take the other branch).\n if (type === \"page\") return labels.goToPage(page!);\n return type === \"previous\" ? labels.previousPage : labels.nextPage;\n }}\n />\n </Stack>\n );\n}\n\n/** Error alert. */\nexport function ErrorState({\n error,\n labels,\n onRetry,\n}: Readonly<{\n error: Error;\n labels: Required<TableLabels>;\n onRetry?: () => void;\n}>) {\n return (\n <Alert\n severity=\"error\"\n action={\n onRetry ? (\n <Button color=\"inherit\" size=\"small\" onClick={onRetry}>\n {labels.retry}\n </Button>\n ) : undefined\n }\n >\n <strong>{labels.errorTitle}</strong> — {error.message}\n </Alert>\n );\n}\n\n/** Skeleton loading placeholder. */\nexport function LoadingState({\n rows,\n columns,\n loadingLabel,\n}: Readonly<{ rows: number; columns: number; loadingLabel?: string }>) {\n return (\n <Box\n role=\"status\"\n aria-busy=\"true\"\n aria-live=\"polite\"\n data-testid=\"adapttable-loading\"\n >\n {Array.from({ length: rows }, (_, r) => (\n <Stack key={r} direction=\"row\" spacing={2} sx={{ py: 1 }}>\n {Array.from({ length: Math.max(columns, 1) }, (_, c) => (\n <Skeleton key={c} variant=\"text\" width={c === 0 ? \"30%\" : \"20%\"} />\n ))}\n </Stack>\n ))}\n {loadingLabel ? (\n <Box component=\"span\" sx={srOnly}>\n {loadingLabel}\n </Box>\n ) : null}\n </Box>\n );\n}\n\n/** Filters drawer. */\nexport function FilterDrawer({\n open,\n onClose,\n filters,\n activeFilterCount,\n onClearFilters,\n labels,\n dir = \"ltr\",\n}: Readonly<{\n open: boolean;\n onClose: () => void;\n filters: ReactNode;\n activeFilterCount: number;\n onClearFilters: () => void;\n labels: Required<TableLabels>;\n dir?: Direction;\n}>) {\n return (\n <Drawer\n anchor={dir === \"rtl\" ? \"left\" : \"right\"}\n open={open}\n onClose={onClose}\n >\n <Box\n sx={{\n width: 360,\n p: 2,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n height: \"100%\",\n }}\n >\n <Typography variant=\"h6\">{labels.filters}</Typography>\n <Box sx={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {filters}\n </Box>\n <Stack direction=\"row\" sx={{ justifyContent: \"space-between\" }}>\n <Button onClick={onClearFilters} disabled={activeFilterCount === 0}>\n {labels.clearAll}\n </Button>\n <Button variant=\"contained\" onClick={onClose}>\n {labels.applyFilters}\n </Button>\n </Stack>\n </Box>\n </Drawer>\n );\n}\n","import type { ColumnMenuChromeProps } from \"@adapttable/core\";\nimport {\n ACTIONS_COLUMN_KEY,\n columnMenuRows,\n columnReorderKeyProps,\n EyeIcon,\n GripIcon,\n nextPinSide,\n pinActionLabel,\n PinIcon,\n useColumnDragState,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n Divider,\n IconButton,\n Popover,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport { useState } from \"react\";\n\n/** Props for the column menu — the shared core contract + actions wiring. */\nexport interface ColumnMenuProps<TRow> extends ColumnMenuChromeProps<TRow> {\n /** Resolved labels, including the trailing actions-column entry's name. */\n labels: ColumnMenuChromeProps<TRow>[\"labels\"] & { actions: string };\n /** Whether the table has row actions — lists the injected actions column. */\n hasRowActions?: boolean;\n}\n\n/** Labels the visibility toggle and the row name share. */\ninterface RowLabels {\n showColumn: string;\n hideColumn: string;\n}\n\n/** Eye show/hide toggle — shared by the data rows and the actions row. */\nfunction VisibilityToggle({\n hidden,\n name,\n labels,\n onToggle,\n}: Readonly<{\n hidden: boolean;\n name: string;\n labels: RowLabels;\n onToggle: () => void;\n}>) {\n return (\n <IconButton\n size=\"small\"\n aria-label={`${hidden ? labels.showColumn : labels.hideColumn}: ${name}`}\n aria-pressed={!hidden}\n color={hidden ? \"default\" : \"primary\"}\n onClick={onToggle}\n >\n <EyeIcon off={hidden} />\n </IconButton>\n );\n}\n\n/** Row name — struck through and dimmed while the column is hidden. */\nfunction RowName({\n hidden,\n name,\n}: Readonly<{ hidden: boolean; name: string }>) {\n return (\n <Typography\n variant=\"body2\"\n sx={{\n flex: 1,\n color: hidden ? \"text.disabled\" : \"text.primary\",\n textDecoration: hidden ? \"line-through\" : \"none\",\n }}\n >\n {name}\n </Typography>\n );\n}\n\n/** Pin button — shared markup; the caller decides the cycle and the label. */\nfunction PinToggle({\n active,\n label,\n onClick,\n}: Readonly<{ active: boolean; label: string; onClick: () => void }>) {\n return (\n <IconButton\n size=\"small\"\n color={active ? \"primary\" : \"default\"}\n aria-label={label}\n onClick={onClick}\n >\n <PinIcon />\n </IconButton>\n );\n}\n\n/**\n * Trailing menu row for the injected row-actions column. It is not a data\n * column — no reorder grip, no left pin — but the layout state treats the\n * reserved `\"actions\"` key like any other, so the eye hides it and the pin is\n * a ONE-CLICK right↔unpinned toggle (the column always trails, so a left pin\n * would be meaningless).\n */\nfunction ActionsRow<TRow>({\n layout,\n labels,\n}: Readonly<Pick<ColumnMenuProps<TRow>, \"layout\" | \"labels\">>) {\n const hidden = layout.isHidden(ACTIONS_COLUMN_KEY);\n const pinned = layout.state.pinned[ACTIONS_COLUMN_KEY] === \"right\";\n return (\n <>\n <Divider sx={{ my: 0.5 }} />\n <Stack\n direction=\"row\"\n spacing={0.5}\n sx={{ px: 0.5, py: 0.25, alignItems: \"center\" }}\n >\n {/* Spacer where data rows show the drag grip — actions never move. */}\n <Box aria-hidden sx={{ width: 24 }} />\n <VisibilityToggle\n hidden={hidden}\n name={labels.actions}\n labels={labels}\n onToggle={() => layout.toggleVisible(ACTIONS_COLUMN_KEY)}\n />\n <RowName hidden={hidden} name={labels.actions} />\n <PinToggle\n active={pinned}\n label={`${pinned ? labels.unpin : labels.pinRight}: ${labels.actions}`}\n onClick={() =>\n layout.setPinned(ACTIONS_COLUMN_KEY, pinned ? undefined : \"right\")\n }\n />\n </Stack>\n </>\n );\n}\n\n/**\n * MUI column-management popover: per-column drag grip (reorder), eye\n * (show/hide), and pin toggle. A `Popover` (not a `Menu`) so list keyboard\n * navigation never fights the grip's arrow-key reorder. With row actions, a\n * separated trailing row manages the injected actions column too.\n */\nexport function ColumnMenu<TRow>({\n allColumns,\n layout,\n labels,\n hasRowActions,\n}: Readonly<ColumnMenuProps<TRow>>) {\n const drag = useColumnDragState();\n const [anchor, setAnchor] = useState<null | HTMLElement>(null);\n return (\n <>\n <Button\n size=\"small\"\n variant=\"outlined\"\n aria-expanded={anchor !== null}\n aria-haspopup=\"true\"\n onClick={(e) => setAnchor(e.currentTarget)}\n >\n {labels.columns}\n </Button>\n <Popover\n anchorEl={anchor}\n open={anchor !== null}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n >\n <Box sx={{ p: 0.75, minWidth: 250 }}>\n <Typography\n variant=\"caption\"\n sx={{\n display: \"block\",\n px: 1,\n pb: 0.5,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n color: \"text.secondary\",\n }}\n >\n {labels.columns}\n </Typography>\n {columnMenuRows(allColumns, layout).map((r) => {\n // Drop-position feedback: dim the source, line the landing edge.\n const indicator = drag.rowAttrs(r.key, r.index);\n const edge = indicator[\"data-drop\"];\n const edgeOffset = edge === \"before\" ? \"2px\" : \"-2px\";\n return (\n <Stack\n key={r.key}\n direction=\"row\"\n spacing={0.5}\n sx={{\n alignItems: \"center\",\n px: 0.5,\n py: 0.25,\n cursor: \"grab\",\n opacity: \"data-dragging\" in indicator ? 0.4 : undefined,\n boxShadow: edge\n ? (theme) =>\n `inset 0 ${edgeOffset} 0 0 ${theme.palette.primary.main}`\n : undefined,\n }}\n {...drag.rowDragProps(r.key, r.index)}\n {...drag.dropProps(r.index, layout.move)}\n {...indicator}\n >\n <IconButton\n size=\"small\"\n sx={{ cursor: \"grab\", color: \"text.disabled\" }}\n {...columnReorderKeyProps(\n r.key,\n r.index,\n layout.move,\n `${labels.moveLeft} / ${labels.moveRight}: ${r.name}`\n )}\n >\n <GripIcon />\n </IconButton>\n <VisibilityToggle\n hidden={r.hidden}\n name={r.name}\n labels={labels}\n onToggle={() => layout.toggleVisible(r.key)}\n />\n <RowName hidden={r.hidden} name={r.name} />\n <PinToggle\n active={r.pinned !== undefined}\n label={`${pinActionLabel(r.pinned, labels)}: ${r.name}`}\n onClick={() => layout.setPinned(r.key, nextPinSide(r.pinned))}\n />\n </Stack>\n );\n })}\n {hasRowActions && <ActionsRow layout={layout} labels={labels} />}\n <Divider sx={{ my: 0.5 }} />\n <Button\n size=\"small\"\n fullWidth\n sx={{ justifyContent: \"flex-start\" }}\n onClick={() => layout.reset()}\n >\n {labels.resetColumns}\n </Button>\n </Box>\n </Popover>\n </>\n );\n}\n","import {\n type ColumnDef,\n columnResizeHandleProps,\n type ConfirmHandler,\n edgePinStyle,\n headerGroupRow,\n PIN_Z,\n type PinLeads,\n pinnedCellStyle,\n pinnedColumnWidth,\n resolveDisabledReason,\n resolveVirtualRows,\n type RowAction,\n rowClickProps,\n runRowAction,\n type SharedTableRenderProps,\n tableMinWidth,\n tableRenderModel,\n useHorizontalOverflow,\n} from \"@adapttable/core\";\nimport type { ReactNode } from \"react\";\nimport { memo, useCallback, useMemo, useRef } from \"react\";\n\n/** Sx for an absolutely-positioned column-resize handle. */\nconst RESIZE_HANDLE_SX = {\n position: \"absolute\",\n insetInlineEnd: 0,\n top: 0,\n height: \"100%\",\n width: 8,\n cursor: \"col-resize\",\n touchAction: \"none\",\n userSelect: \"none\",\n} as const;\nimport {\n Box,\n Card,\n CardContent,\n Checkbox,\n IconButton,\n Stack,\n type SxProps,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TableRow,\n TableSortLabel,\n type Theme,\n Tooltip,\n Typography,\n} from \"@mui/material\";\n\n/** Map a destructive colour token to MUI's `\"error\"` palette, else default. */\nfunction muiColor(color: string | undefined): \"default\" | \"error\" {\n return color === \"danger\" || color === \"red\" || color === \"error\"\n ? \"error\"\n : \"default\";\n}\n\ninterface SharedProps<TRow> extends SharedTableRenderProps<TRow> {\n size: \"small\" | \"medium\";\n /** Text direction — flips the collapsed expand chevron under RTL. */\n dir?: \"ltr\" | \"rtl\";\n /**\n * End-pin the trailing actions column on its own (the reserved \"actions\"\n * layout key pinned right from the Columns menu) — independent of whether\n * any DATA column is pinned right. Desktop only; cards have no columns.\n */\n actionsPinned?: boolean;\n}\n\n/** Width (px) of the leading expand-chevron column (MUI's checkbox cell). */\nconst EXPAND_WIDTH = 48;\n\n/**\n * Identity-stable dispatcher for `selection.toggle` / `expansion.toggle`.\n * `selection.toggle` is recreated whenever the selection changes, so handing\n * it straight to a memoized row would either defeat the memo (if compared)\n * or go stale (if not — in the controlled mode it computes from the captured\n * set). This wrapper never changes identity and always dispatches to the\n * CURRENT target, so skipped rows still toggle against fresh state.\n */\nexport function useStableToggle(\n target: { toggle: (id: string) => void } | null | undefined\n): (id: string) => void {\n // Latest-ref pattern (same as core's useFilterOptions): a render-time\n // write so the callback reads whatever target the last render supplied.\n const ref = useRef(target);\n ref.current = target;\n return useCallback((id: string) => ref.current?.toggle(id), []);\n}\n\n/** Inline chevron pointing at the reading end; rotates down when open. */\nfunction ExpandChevron({\n expanded,\n dir,\n}: Readonly<{ expanded: boolean; dir?: \"ltr\" | \"rtl\" }>) {\n let transform: string | undefined;\n if (expanded) transform = \"rotate(90deg)\";\n else if (dir === \"rtl\") transform = \"rotate(180deg)\";\n return (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ display: \"inline-flex\", transition: \"transform 150ms\", transform }}\n >\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </Box>\n );\n}\n\n/** The per-row expand/collapse chevron button (desktop cell + mobile card). */\nfunction ExpandToggle({\n id,\n expanded,\n onToggle,\n dir,\n expandLabel,\n collapseLabel,\n}: Readonly<{\n id: string;\n expanded: boolean;\n onToggle: (id: string) => void;\n dir?: \"ltr\" | \"rtl\";\n expandLabel: string;\n collapseLabel: string;\n}>) {\n return (\n <IconButton\n size=\"small\"\n aria-expanded={expanded}\n aria-label={expanded ? collapseLabel : expandLabel}\n onClick={() => onToggle(id)}\n >\n <ExpandChevron expanded={expanded} dir={dir} />\n </IconButton>\n );\n}\n\n/**\n * Logical (RTL-aware) `text-align` for a column. Applied via `sx` rather\n * than MUI's physical `align` prop so `\"end\"` follows the writing direction\n * (right in LTR, left in RTL).\n */\nfunction muiAlign(\n align: ColumnDef<unknown>[\"align\"]\n): \"start\" | \"center\" | \"end\" {\n if (align === \"center\") return \"center\";\n if (align === \"end\") return \"end\";\n return \"start\";\n}\n\nfunction RowActionButtons<TRow>({\n row,\n actions,\n confirm,\n cancelLabel,\n}: Readonly<{\n row: TRow;\n actions: RowAction<TRow>[];\n confirm: ConfirmHandler;\n cancelLabel: string;\n}>) {\n return (\n <Stack direction=\"row\" spacing={0.5} sx={{ justifyContent: \"flex-end\" }}>\n {actions.map((action) => {\n if (action.isHidden?.(row)) return null;\n const reason = resolveDisabledReason(action.disabledReason?.(row));\n const disabled =\n reason !== undefined || (action.isDisabled?.(row) ?? false);\n return (\n <Tooltip key={action.key} title={reason ?? action.label}>\n <span>\n <IconButton\n size=\"small\"\n color={muiColor(action.color)}\n disabled={disabled}\n aria-label={action.label}\n onClick={\n // The disabled attribute already blocks activation, so\n // attach the handler only when the action can run.\n disabled\n ? undefined\n : (e) => {\n e.stopPropagation();\n runRowAction(action, row, confirm, cancelLabel);\n }\n }\n >\n {action.icon ?? (\n <Typography variant=\"caption\">{action.label}</Typography>\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n })}\n </Stack>\n );\n}\n\n/**\n * Per-render-stable sx for the memoized desktop row. Built once per\n * `DesktopTable` render (memoized on the pin/width/column inputs), so the\n * row comparator can treat one object identity as \"the cell styling\".\n */\ninterface DesktopRowSx {\n /** Body-cell sx by column key (pin stickiness + logical text-align). */\n cells: Readonly<Record<string, SxProps<Theme>>>;\n /** Leading expand-chevron cell (edge-pinned alongside left data pins). */\n expand?: SxProps<Theme>;\n /** Leading selection cell (edge-pinned just past the expand column). */\n selection?: SxProps<Theme>;\n /** Trailing actions cell (edge-pinned, end-aligned). */\n actions: SxProps<Theme>;\n}\n\ninterface DesktopRowProps<TRow> {\n /* Visual inputs — compared by the memo (see DESKTOP_ROW_COMPARED). */\n row: TRow;\n index: number;\n selected: boolean;\n expanded: boolean;\n columns: ColumnDef<TRow>[];\n sx: DesktopRowSx;\n /** Full spacer span, INCLUDING the expand column when present. */\n columnSpan: number;\n size: \"small\" | \"medium\";\n dir?: \"ltr\" | \"rtl\";\n className?: string;\n hasSelection: boolean;\n hasExpansion: boolean;\n showActions: boolean;\n selectRowLabel: string;\n cancelLabel: string;\n expandLabel: string;\n collapseLabel: string;\n /* Stable wiring — excluded from the comparison (identity-stable, or at\n least latest-dispatching via useStableToggle), so a skipped row never\n holds a stale handler. */\n id: string;\n rowActions?: RowAction<TRow>[];\n confirm: ConfirmHandler;\n renderRowDetail?: (row: TRow) => ReactNode;\n onToggleSelect: (id: string) => void;\n onToggleExpand: (id: string) => void;\n onRowClick?: (row: TRow) => void;\n prefetch?: (row: TRow) => void;\n measureElement?: (element: Element | null) => void;\n}\n\n/**\n * The visual inputs a desktop row re-renders for. Deliberately NOT the\n * per-render `table` object or the handler props: handlers are stable (or\n * latest-dispatching wrappers), and everything that changes what the row\n * LOOKS like is listed here — row identity, selection/expansion flags,\n * density, column set, the precomputed sx map (pins + widths), the\n * rowClassName output, and direction.\n */\nconst DESKTOP_ROW_COMPARED: readonly (keyof DesktopRowProps<unknown>)[] = [\n \"row\",\n \"index\",\n \"selected\",\n \"expanded\",\n \"columns\",\n \"sx\",\n \"columnSpan\",\n \"size\",\n \"dir\",\n \"className\",\n \"hasSelection\",\n \"hasExpansion\",\n \"showActions\",\n \"selectRowLabel\",\n \"cancelLabel\",\n \"expandLabel\",\n \"collapseLabel\",\n];\n\nfunction desktopRowPropsAreEqual(\n prev: DesktopRowProps<unknown>,\n next: DesktopRowProps<unknown>\n): boolean {\n return DESKTOP_ROW_COMPARED.every((key) => prev[key] === next[key]);\n}\n\nfunction DesktopRowImpl<TRow>({\n row,\n index,\n selected,\n expanded,\n columns,\n sx,\n columnSpan,\n dir,\n className,\n hasSelection,\n hasExpansion,\n showActions,\n selectRowLabel,\n cancelLabel,\n expandLabel,\n collapseLabel,\n id,\n rowActions,\n confirm,\n renderRowDetail,\n onToggleSelect,\n onToggleExpand,\n onRowClick,\n prefetch,\n measureElement,\n}: Readonly<DesktopRowProps<TRow>>) {\n return (\n <>\n <TableRow\n {...rowClickProps(row, onRowClick)}\n className={className}\n ref={measureElement}\n data-index={index}\n hover\n selected={selected}\n onMouseEnter={prefetch ? () => prefetch(row) : undefined}\n >\n {hasExpansion && (\n <TableCell padding=\"checkbox\" sx={sx.expand}>\n <ExpandToggle\n id={id}\n expanded={expanded}\n onToggle={onToggleExpand}\n dir={dir}\n expandLabel={expandLabel}\n collapseLabel={collapseLabel}\n />\n </TableCell>\n )}\n {hasSelection && (\n <TableCell padding=\"checkbox\" sx={sx.selection}>\n <Checkbox\n slotProps={{ input: { \"aria-label\": selectRowLabel } }}\n checked={selected}\n onChange={() => onToggleSelect(id)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell key={column.key} sx={sx.cells[column.key]}>\n {column.Cell ? (\n <column.Cell row={row} rowIndex={index} />\n ) : (\n column.accessor?.(row)\n )}\n </TableCell>\n ))}\n {showActions && (\n <TableCell sx={sx.actions}>\n <RowActionButtons\n row={row}\n actions={rowActions!}\n confirm={confirm}\n cancelLabel={cancelLabel}\n />\n </TableCell>\n )}\n </TableRow>\n {expanded && (\n <TableRow>\n {/* `expanded` is only ever true when a detail renderer exists\n (DesktopTable derives it from `expansion && renderRowDetail`). */}\n <TableCell colSpan={columnSpan}>{renderRowDetail!(row)}</TableCell>\n </TableRow>\n )}\n </>\n );\n}\n\n/**\n * Memoized desktop row: a search keystroke (or any chrome re-render) must\n * not re-run every cell accessor, and toggling one row's checkbox must\n * re-render only that row. The cast restores the generic signature `memo`\n * erases.\n */\nconst DesktopRow = memo(\n DesktopRowImpl,\n desktopRowPropsAreEqual\n) as typeof DesktopRowImpl;\n\n/** Desktop MUI table. */\nexport function DesktopTable<TRow>({\n table,\n rows,\n rowActions,\n confirm,\n getRowId,\n size,\n dir,\n prefetch,\n onRowClick,\n rowClassName,\n renderRowDetail,\n summaryRow,\n expansion,\n rowEntries,\n paddingTop = 0,\n paddingBottom = 0,\n measureElement,\n stickyHeader = false,\n stickyTop = 0,\n pinOffset,\n maxHeight,\n virtualScrollRef,\n setWidth,\n columnWidths,\n resizeLabel = \"Resize column\",\n actionsPinned = false,\n}: Readonly<SharedProps<TRow>>) {\n // Core's span already counts the expand column (it sees `renderRowDetail`\n // + `expansion`), so spacer and detail rows use `columnSpan` as-is.\n const { columns, selection, labels, showActions, entries, columnSpan } =\n tableRenderModel({\n table,\n rows,\n rowActions,\n getRowId,\n rowEntries,\n renderRowDetail,\n expansion,\n });\n // Presentational header groups: contiguous visible columns sharing a\n // `group` merge into one spanning cell; `null` means no second header row.\n const groupRow = headerGroupRow(columns);\n // Footer summary cells for the CURRENT rows, keyed by column key.\n const summaryCells = summaryRow?.(rows);\n // Expansion is active only when BOTH halves arrived (the chrome supplies\n // `expansion` exactly when `renderRowDetail` is set).\n const isExpanded =\n expansion && renderRowDetail ? expansion.isExpanded : undefined;\n const expandActive = isExpanded !== undefined;\n const onToggleSelect = useStableToggle(selection);\n const onToggleExpand = useStableToggle(expansion);\n // `position: sticky` on a `<thead>` does not pin against the document\n // scroller, so we stick the header *cells* instead. Pinned cells also stick\n // left/right (corner-sticky in the header) with an opaque background.\n // Inside a maxHeight scroll box the box itself is the sticky context, so\n // the header pins to ITS top — a viewport offset would float it mid-box.\n const hasPinned =\n actionsPinned || table.columns.some((c) => pinOffset?.(c.key) != null);\n // Measured (ResizeObserver) horizontal overflow: with no maxHeight and no\n // pins, the wrapper only becomes a scroll container when the table is\n // actually wider than it — an unconditional `overflowX: auto` would trap\n // the page-scroll sticky header even when everything fits.\n const overflow = useHorizontalOverflow<HTMLDivElement>();\n // ANY scroll container (maxHeight, pins, measured overflow) is the sticky\n // context: pin to ITS top, not a viewport offset.\n const inScrollBox = maxHeight != null || hasPinned || overflow.overflowing;\n const headSx = stickyHeader\n ? {\n position: \"sticky\" as const,\n top: inScrollBox ? 0 : stickyTop,\n zIndex: PIN_Z.header,\n bgcolor: \"background.paper\",\n }\n : undefined;\n // The leading expand (48px) + checkbox (48px) and trailing actions (120px)\n // columns pin to the edge alongside the data columns, which therefore\n // start past them.\n const selectionWidth = 48;\n const actionsWidth = 120;\n const leadLeft =\n (expandActive ? EXPAND_WIDTH : 0) + (selection ? selectionWidth : 0);\n const leadRight = showActions ? actionsWidth : 0;\n const leads: PinLeads = { left: leadLeft, right: leadRight };\n // The selection cell itself sits past the expand column when both pin.\n const selectionLead = expandActive ? EXPAND_WIDTH : 0;\n const hasLeftPin = table.columns.some(\n (c) => pinOffset?.(c.key)?.side === \"left\"\n );\n const hasRightPin = table.columns.some(\n (c) => pinOffset?.(c.key)?.side === \"right\"\n );\n // The actions cells stick to the inline end when a data column is pinned\n // right (so it never scrolls under them) OR when the actions column itself\n // is pinned from the Columns menu — one click, no data pin required.\n const stickActions = hasRightPin || actionsPinned;\n // Built with conditional spreads so no key is ever `undefined` — that keeps\n // the object assignable to MUI's strict `sx` index signature with no cast.\n const headCellSx = (column: ColumnDef<TRow>) => {\n const pin = pinnedCellStyle(\n pinOffset?.(column.key),\n PIN_Z.headerPinned,\n leads\n );\n // A pinned column renders at the width its sticky inset assumed, so\n // stacked pins stay flush even with no declared width.\n const width = pin\n ? pinnedColumnWidth(column, columnWidths)\n : (columnWidths?.[column.key] ?? column.width);\n // The resize handle is absolute; an un-pinned/un-sticky cell still needs a\n // positioning context for it.\n const needsRelative = Boolean(setWidth) && !headSx && !pin;\n return {\n ...headSx,\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n ...(needsRelative && { position: \"relative\" as const }),\n textAlign: muiAlign(column.align),\n ...(width != null && { width }),\n };\n };\n // The expand / checkbox / actions cells pin to their edge when a data\n // column on that side is pinned (corner-sticky in the header). `lead`\n // shifts the selection cell past a pinned expand column.\n const edgeHeadSx = (side: \"left\" | \"right\", active: boolean, lead = 0) => {\n const pin = edgePinStyle(side, active, PIN_Z.headerPinned);\n return {\n ...headSx,\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n ...(pin && lead > 0 && { insetInlineStart: lead }),\n };\n };\n // One identity per pin/width layout: the memoized rows treat this object\n // as \"the cell styling\", so it must only change when the layout does.\n const rowSx = useMemo<DesktopRowSx>(() => {\n const edge = (side: \"left\" | \"right\", active: boolean, lead = 0) => {\n const pin = edgePinStyle(side, active, PIN_Z.body);\n if (!pin) return undefined;\n return {\n ...pin,\n ...(lead > 0 && { insetInlineStart: lead }),\n bgcolor: \"background.paper\",\n };\n };\n const cells: Record<string, SxProps<Theme>> = {};\n for (const column of columns) {\n const pin = pinnedCellStyle(pinOffset?.(column.key), PIN_Z.body, {\n left: leadLeft,\n right: leadRight,\n });\n cells[column.key] = {\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n textAlign: muiAlign(column.align),\n };\n }\n return {\n cells,\n expand: edge(\"left\", hasLeftPin),\n selection: edge(\"left\", hasLeftPin, selectionLead),\n actions: { ...edge(\"right\", stickActions), textAlign: \"end\" },\n };\n }, [\n columns,\n pinOffset,\n leadLeft,\n leadRight,\n hasLeftPin,\n stickActions,\n selectionLead,\n ]);\n\n let boxSx: SxProps<Theme> | undefined;\n if (maxHeight != null) {\n boxSx = { maxHeight, overflow: \"auto\" };\n } else if (hasPinned || overflow.overflowing) {\n boxSx = { overflowX: \"auto\" };\n }\n // Fixed-width columns get a real table min-width (their sum), so the table\n // overflows and scrolls horizontally instead of squishing columns to fit.\n const minWidth = tableMinWidth(columns, {\n widths: columnWidths,\n extra: leadLeft + leadRight,\n });\n\n return (\n <Box\n ref={(node: HTMLDivElement | null) => {\n overflow.ref(node);\n virtualScrollRef?.(node);\n }}\n sx={boxSx}\n >\n <Table\n size={size}\n aria-label={table.getTableProps()[\"aria-label\"]}\n sx={minWidth > 0 ? { minWidth } : undefined}\n >\n <TableHead>\n {groupRow && (\n // Decorative group row. It deliberately skips the sticky `headSx`\n // treatment: sticking both header rows at the same `top` would\n // overlap them, so only the sortable header row pins.\n <TableRow>\n {expandActive && <TableCell padding=\"checkbox\" />}\n {selection && <TableCell padding=\"checkbox\" />}\n {groupRow.map((cell) => (\n <TableCell\n key={cell.key}\n colSpan={cell.span}\n sx={{ textAlign: \"center\", fontWeight: 600 }}\n >\n {cell.label}\n </TableCell>\n ))}\n {showActions && <TableCell />}\n </TableRow>\n )}\n <TableRow>\n {expandActive && (\n <TableCell\n padding=\"checkbox\"\n sx={edgeHeadSx(\"left\", hasLeftPin)}\n />\n )}\n {selection && (\n <TableCell\n padding=\"checkbox\"\n sx={edgeHeadSx(\"left\", hasLeftPin, selectionLead)}\n >\n <Checkbox\n slotProps={{ input: { \"aria-label\": labels.selectAll } }}\n checked={selection.headerState === \"all\"}\n indeterminate={selection.headerState === \"some\"}\n onChange={selection.toggleAll}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const headerCellProps = table.getHeaderCellProps(column);\n // Core reports aria-sort=\"none\" for sortable-but-inactive\n // columns so screen readers announce them as sortable — and it\n // is chain-aware, covering every multi-sort level too.\n const ariaSort = headerCellProps[\"aria-sort\"] as\n | \"ascending\"\n | \"descending\"\n | \"none\"\n | undefined;\n const active =\n ariaSort === \"ascending\" || ariaSort === \"descending\";\n // 1-based multi-sort chain position, when the column is in it.\n const sortIndex = headerCellProps[\"data-sort-index\"];\n return (\n <TableCell\n key={column.key}\n aria-sort={ariaSort}\n data-sort-index={sortIndex}\n sx={headCellSx(column)}\n >\n {column.sortable ? (\n <TableSortLabel\n active={active}\n direction={ariaSort === \"descending\" ? \"desc\" : \"asc\"}\n // Core's handler, with the REAL click event passed\n // through: it reads `shiftKey` to chain the column when\n // `multiSort` is on, else single-sorts as before.\n onClick={table.getSortButtonProps(column).onClick}\n >\n {column.header}\n {sortIndex !== undefined && (\n <Box component=\"span\" sx={{ fontSize: 10, ml: 0.5 }}>\n {sortIndex}\n </Box>\n )}\n </TableSortLabel>\n ) : (\n column.header\n )}\n {setWidth && (\n <Box\n component=\"span\"\n sx={RESIZE_HANDLE_SX}\n {...columnResizeHandleProps(\n column.key,\n setWidth,\n `${resizeLabel}: ${\n typeof column.header === \"string\"\n ? column.header\n : column.key\n }`\n )}\n />\n )}\n </TableCell>\n );\n })}\n {showActions && (\n <TableCell\n sx={{ ...edgeHeadSx(\"right\", stickActions), textAlign: \"end\" }}\n >\n {labels.actions}\n </TableCell>\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {paddingTop > 0 && (\n <TableRow aria-hidden>\n <TableCell\n colSpan={columnSpan}\n sx={{ height: paddingTop, p: 0 }}\n />\n </TableRow>\n )}\n {entries.map(({ row, index, key }) => {\n const id = getRowId(row);\n return (\n <DesktopRow\n key={key}\n row={row}\n index={index}\n selected={selection?.isSelected(id) ?? false}\n expanded={isExpanded ? isExpanded(id) : false}\n columns={columns}\n sx={rowSx}\n columnSpan={columnSpan}\n size={size}\n dir={dir}\n className={rowClassName?.(row, index)}\n hasSelection={Boolean(selection)}\n hasExpansion={expandActive}\n showActions={showActions}\n selectRowLabel={labels.selectRow}\n cancelLabel={labels.cancel}\n expandLabel={labels.expandRow}\n collapseLabel={labels.collapseRow}\n id={id}\n rowActions={rowActions}\n confirm={confirm}\n renderRowDetail={renderRowDetail}\n onToggleSelect={onToggleSelect}\n onToggleExpand={onToggleExpand}\n onRowClick={onRowClick}\n prefetch={prefetch}\n measureElement={measureElement}\n />\n );\n })}\n {paddingBottom > 0 && (\n <TableRow aria-hidden>\n <TableCell\n colSpan={columnSpan}\n sx={{ height: paddingBottom, p: 0 }}\n />\n </TableRow>\n )}\n </TableBody>\n {summaryCells && (\n <TableFooter>\n <TableRow>\n {expandActive && <TableCell padding=\"checkbox\" />}\n {selection && <TableCell padding=\"checkbox\" />}\n {columns.map((column) => (\n // One cell per column keeps the summary aligned under its\n // column; keys absent from the result render empty cells.\n <TableCell\n key={column.key}\n sx={{ textAlign: muiAlign(column.align) }}\n >\n {summaryCells[column.key]}\n </TableCell>\n ))}\n {showActions && <TableCell />}\n </TableRow>\n </TableFooter>\n )}\n </Table>\n </Box>\n );\n}\n\nfunction mobileLabel<TRow>(column: ColumnDef<TRow>): string {\n return (\n column.mobileLabel ??\n (typeof column.header === \"string\" ? column.header : column.key)\n );\n}\n\n/** Mobile MUI card list. */\nexport function MobileCards<TRow>({\n table,\n rows,\n rowActions,\n confirm,\n getRowId,\n size,\n dir,\n onRowClick,\n rowClassName,\n renderRowDetail,\n summaryRow,\n expansion,\n rowEntries,\n paddingTop = 0,\n paddingBottom = 0,\n measureElement,\n}: Readonly<SharedProps<TRow>>) {\n const { columns, selection, labels } = table;\n const entries = resolveVirtualRows(rows, getRowId, rowEntries);\n const compact = size === \"small\";\n // Expansion is active only when BOTH halves arrived (the chrome supplies\n // `expansion` exactly when `renderRowDetail` is set).\n const expand = expansion && renderRowDetail ? expansion : undefined;\n // The summary renders as a final card. Header groups and multi-sort are\n // desktop-only concerns: cards have no column grid for a group to span and\n // no clickable headers to shift-click.\n const summaryCells = summaryRow?.(rows);\n return (\n <Stack\n spacing={compact ? 1 : 1.5}\n role=\"list\"\n aria-label={table.getTableProps()[\"aria-label\"]}\n >\n {paddingTop > 0 && <Box aria-hidden sx={{ height: paddingTop }} />}\n {entries.map(({ row, index, key }) => {\n const id = getRowId(row);\n return (\n <Card\n key={key}\n ref={measureElement}\n data-index={index}\n variant=\"outlined\"\n role=\"listitem\"\n className={rowClassName?.(row, index)}\n {...rowClickProps(row, onRowClick)}\n >\n <CardContent\n sx={\n compact ? { p: 1.25, \"&:last-child\": { pb: 1.25 } } : undefined\n }\n >\n {selection && (\n <Checkbox\n slotProps={{ input: { \"aria-label\": labels.selectRow } }}\n checked={selection.isSelected(id)}\n onChange={() => selection.toggle(id)}\n />\n )}\n {expand && (\n <ExpandToggle\n id={id}\n expanded={expand.isExpanded(id)}\n onToggle={expand.toggle}\n dir={dir}\n expandLabel={labels.expandRow}\n collapseLabel={labels.collapseRow}\n />\n )}\n {columns.map((column) => (\n <Box key={column.key} sx={{ mb: compact ? 0.5 : 1 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: \"block\" }}\n >\n {mobileLabel(column)}\n </Typography>\n {/* Cells are arbitrary ReactNode (often block elements) —\n a <p> wrapper would be invalid HTML. */}\n <Typography component=\"div\" variant=\"body2\">\n {column.Cell ? (\n <column.Cell row={row} rowIndex={index} />\n ) : (\n column.accessor?.(row)\n )}\n </Typography>\n </Box>\n ))}\n {rowActions && rowActions.length > 0 && (\n <RowActionButtons\n row={row}\n actions={rowActions}\n confirm={confirm}\n cancelLabel={labels.cancel}\n />\n )}\n {expand?.isExpanded(id) && (\n // Inside the card — and therefore inside the measured\n // element — so virtualization keeps accurate card heights.\n <Box sx={{ mt: 1 }}>{renderRowDetail!(row)}</Box>\n )}\n </CardContent>\n </Card>\n );\n })}\n {summaryCells && (\n <Card variant=\"outlined\" role=\"listitem\">\n <CardContent\n sx={compact ? { p: 1.25, \"&:last-child\": { pb: 1.25 } } : undefined}\n >\n {columns.map((column) => {\n const value = summaryCells[column.key];\n // Unlike the desktop footer, a card has no columns to keep\n // aligned, so columns without a summary are simply skipped.\n if (value === undefined) return null;\n return (\n <Box key={column.key} sx={{ mb: compact ? 0.5 : 1 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: \"block\" }}\n >\n {mobileLabel(column)}\n </Typography>\n <Typography component=\"div\" variant=\"body2\">\n {value}\n </Typography>\n </Box>\n );\n })}\n </CardContent>\n </Card>\n )}\n {paddingBottom > 0 && <Box aria-hidden sx={{ height: paddingBottom }} />}\n </Stack>\n );\n}\n","import type { RowAction, UseColumnLayoutResult } from \"@adapttable/core\";\nimport {\n ACTIONS_COLUMN_KEY,\n isDeclarativeFilters,\n resolveLabels,\n useChromeBodyData,\n useChromeScrollReset,\n useFilterTriggerToggle,\n useTableChrome,\n useTableData,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n LinearProgress,\n Paper,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\n\nimport { AutoFilterForm } from \"./components/AutoFilterForm\";\nimport {\n BulkBar,\n Chips,\n ErrorState,\n FilterDrawer,\n Footer,\n LoadingState,\n Toolbar,\n} from \"./components/chrome\";\nimport { ColumnMenu } from \"./components/ColumnMenu\";\nimport { SavedViewsMenu } from \"./components/SavedViewsMenu\";\nimport { DesktopTable, MobileCards } from \"./components/tables\";\nimport type { DataTableProps } from \"./types\";\n\n/**\n * Map row density to MUI's table `size`, independent of column pinning. An\n * explicit `size` prop still wins for backward compatibility.\n */\nfunction tableSize(\n size: \"small\" | \"medium\" | undefined,\n density: \"comfortable\" | \"compact\" | undefined\n): \"small\" | \"medium\" {\n if (size) return size;\n return density === \"compact\" ? \"small\" : \"medium\";\n}\n\n/** The width setter only when column resize is enabled (opt-in). */\nfunction resizeSetter(\n enabled: boolean | undefined,\n setWidth: (key: string, width: number) => void\n): ((key: string, width: number) => void) | undefined {\n return enabled ? setWidth : undefined;\n}\n\n/**\n * The injected actions column is first-class in column management: the\n * layout state treats keys opaquely, so the reserved \"actions\" key hides and\n * end-pins like any data column. Hiding strips `rowActions` BEFORE the\n * renderers, so the column, its pin lead, and the colSpans all disappear\n * consistently (desktop and mobile alike). `actionsPinned` reports the\n * Columns-menu end pin — only meaningful while the column renders.\n */\nfunction resolveActionsColumn<TRow>(\n declared: RowAction<TRow>[] | undefined,\n layout: UseColumnLayoutResult<TRow>\n): {\n hasRowActions: boolean;\n rowActions: RowAction<TRow>[] | undefined;\n actionsPinned: boolean;\n} {\n const hasRowActions = (declared?.length ?? 0) > 0;\n const rowActions =\n hasRowActions && !layout.isHidden(ACTIONS_COLUMN_KEY)\n ? declared\n : undefined;\n const actionsPinned =\n rowActions !== undefined &&\n layout.state.pinned[ACTIONS_COLUMN_KEY] === \"right\";\n return { hasRowActions, rowActions, actionsPinned };\n}\n\n/**\n * Resolve the data tier (`source` > `data` + `onQueryChange` > `data`) and\n * the filter content, then overlay them on the caller's props: caller JSX\n * filters pass through; the declarative array becomes the auto-built\n * {@link AutoFilterForm} (or nothing, when no definitions resolved); the\n * runtime's chip-label resolvers merge under any caller overrides.\n */\nfunction useChromeProps<TRow>(props: Readonly<DataTableProps<TRow>>) {\n const { source, runtime } = useTableData<TRow>({\n locale: props.locale,\n source: props.source,\n data: props.data,\n total: props.total,\n loading: props.loading,\n onQueryChange: props.onQueryChange,\n columns: props.columns,\n filters: props.filters,\n adapter: props.urlSync === false ? undefined : props.urlAdapter,\n enabled: props.urlSync,\n urlKey: props.urlKey,\n });\n let filtersNode: ReactNode;\n // Column-level `filter` shorthands alone must still render the auto form —\n // only explicit JSX takes over the drawing.\n if (isDeclarativeFilters(props.filters) || props.filters === undefined) {\n filtersNode =\n runtime.defs.length > 0 ? (\n <AutoFilterForm\n defs={runtime.defs}\n source={source}\n labels={resolveLabels(props.labels)}\n />\n ) : undefined;\n } else {\n filtersNode = props.filters;\n }\n return {\n ...props,\n source,\n filters: filtersNode,\n filterLabels: { ...runtime.filterLabels, ...props.filterLabels },\n };\n}\n\n/**\n * Batteries-included Material UI data table. Drop in `columns`, `data` (or\n * `data` + `onQueryChange` for server fetching, or a full `source`), and a\n * `rowKey` for a fully styled, sortable, filterable, paginated MUI table\n * with selection, bulk actions, RTL, and dark mode — a free DataGrid-style\n * experience on the headless `@adapttable/core` engine. Declarative\n * `filters` (and column `filter` shorthands) render an auto-built form.\n *\n * @typeParam TRow - The row type.\n */\nexport function DataTable<TRow>(props: Readonly<DataTableProps<TRow>>) {\n const { slots, className } = props;\n const size = tableSize(props.size, props.density);\n const { filtersMode = \"popover\" } = props;\n const chromeProps = useChromeProps(props);\n const { source, filters: filtersNode } = chromeProps;\n const c = useTableChrome<TRow>(chromeProps);\n const { table, confirm, getRowId } = c;\n const { labels } = table;\n const [filtersOpen, setFiltersOpen] = useState(false);\n const filtersTrigger = useFilterTriggerToggle(filtersOpen, setFiltersOpen);\n const rootRef = useRef<HTMLDivElement>(null);\n useChromeScrollReset(rootRef, c, chromeProps);\n const { virtualization, loadMoreRef, canLoadMore, virtualScrollRef } =\n useChromeBodyData(c, chromeProps);\n const { hasRowActions, rowActions, actionsPinned } = resolveActionsColumn(\n props.rowActions,\n c.columnLayout\n );\n const columnMenu = props.enableColumnMenu && !c.isMobile && (\n <ColumnMenu\n allColumns={c.allColumns}\n layout={c.columnLayout}\n labels={labels}\n hasRowActions={hasRowActions}\n />\n );\n // Saved views capture the table's own URL params, so the menu defaults to\n // the table's URL backend + namespace (an explicit option still wins).\n const savedViewsMenu = props.savedViews && (\n <SavedViewsMenu\n options={{\n adapter: props.urlAdapter,\n urlKey: props.urlKey,\n ...props.savedViews,\n }}\n labels={labels}\n />\n );\n\n let body: React.ReactNode;\n if (c.body === \"skeleton\") {\n body = slots?.skeleton ?? (\n <LoadingState\n rows={props.skeletonRows ?? source.limit}\n columns={table.columns.length}\n loadingLabel={labels.loading}\n />\n );\n } else if (c.body === \"empty\") {\n body = slots?.empty ?? (\n <Stack role=\"status\" spacing={1.5} sx={{ py: 6, alignItems: \"center\" }}>\n <Typography color=\"text.secondary\" align=\"center\">\n {c.emptyVariant === \"noResults\" ? labels.noResults : labels.noData}\n </Typography>\n {c.emptyVariant === \"noResults\" && (\n <Button variant=\"outlined\" size=\"small\" onClick={c.clearFilters}>\n {labels.clearAll}\n </Button>\n )}\n </Stack>\n );\n } else if (c.body === \"mobile\") {\n body = (\n <MobileCards\n table={table}\n rows={source.rows}\n rowActions={rowActions}\n confirm={confirm}\n getRowId={getRowId}\n size={size}\n dir={props.dir}\n onRowClick={props.onRowClick}\n rowClassName={props.rowClassName}\n renderRowDetail={props.renderRowDetail}\n summaryRow={props.summaryRow}\n expansion={c.detail?.expansion}\n rowEntries={virtualization.enabled ? virtualization.rows : undefined}\n paddingTop={virtualization.paddingTop}\n paddingBottom={virtualization.paddingBottom}\n measureElement={virtualization.measureElement}\n />\n );\n } else {\n body = (\n <DesktopTable\n table={table}\n rows={source.rows}\n rowActions={rowActions}\n actionsPinned={actionsPinned}\n confirm={confirm}\n getRowId={getRowId}\n size={size}\n dir={props.dir}\n prefetch={props.prefetch}\n onRowClick={props.onRowClick}\n rowClassName={props.rowClassName}\n renderRowDetail={props.renderRowDetail}\n summaryRow={props.summaryRow}\n expansion={c.detail?.expansion}\n rowEntries={virtualization.enabled ? virtualization.rows : undefined}\n paddingTop={virtualization.paddingTop}\n paddingBottom={virtualization.paddingBottom}\n measureElement={virtualization.measureElement}\n stickyHeader={props.stickyHeader}\n stickyTop={props.stickyTop}\n pinOffset={c.columnLayout.pinOffset}\n maxHeight={props.maxHeight}\n virtualScrollRef={virtualScrollRef}\n setWidth={resizeSetter(props.resizableColumns, c.columnLayout.setWidth)}\n columnWidths={c.columnLayout.state.widths}\n resizeLabel={labels.resizeColumn}\n />\n );\n }\n\n return (\n <Paper\n ref={rootRef}\n variant=\"outlined\"\n dir={props.dir}\n className={className}\n aria-busy={c.isRefreshing || undefined}\n sx={{ p: 1.5 }}\n >\n <Stack spacing={1.5}>\n <Toolbar\n table={table}\n hideSearch={props.hideSearch}\n searchPlaceholder={props.searchPlaceholder}\n sortByOptions={props.sortByOptions}\n customToolbar={\n <>\n {savedViewsMenu}\n {props.toolbar}\n </>\n }\n hasFilters={Boolean(filtersNode)}\n activeFilterCount={c.activeFilterCount}\n showRowsPerPage={canLoadMore}\n filtersMode={filtersMode}\n filters={filtersNode}\n filtersOpen={filtersOpen}\n onToggleFilters={filtersTrigger.onClick}\n onFiltersTriggerPointerDown={filtersTrigger.onPointerDown}\n onCloseFilters={() => setFiltersOpen(false)}\n onClearFilters={c.clearFilters}\n dir={props.dir}\n columnMenu={columnMenu}\n />\n {c.isRefreshing && <LinearProgress aria-label={labels.loading} />}\n <Chips\n chips={c.mergedChips}\n onClearAll={c.clearFilters}\n labels={labels}\n />\n {table.selection && props.bulkActions && (\n <BulkBar\n selection={table.selection}\n total={source.total}\n bulkActions={props.bulkActions}\n confirm={confirm}\n labels={labels}\n />\n )}\n {source.error ? (\n <ErrorState\n error={source.error}\n labels={labels}\n onRetry={source.refetch ? () => void source.refetch?.() : undefined}\n />\n ) : (\n body\n )}\n {canLoadMore && source.hasNextPage && (\n <Box\n ref={loadMoreRef}\n sx={{ display: \"flex\", justifyContent: \"center\", py: 1 }}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={source.isFetchingNextPage}\n onClick={() => source.fetchNextPage()}\n >\n {labels.loadMore}\n </Button>\n </Box>\n )}\n {c.showFooter && (\n <Footer\n pagination={table.pagination}\n total={source.total}\n limit={source.limit}\n setPage={source.setPage}\n setLimit={source.setLimit}\n labels={labels}\n />\n )}\n </Stack>\n {filtersNode && filtersMode === \"drawer\" && (\n <FilterDrawer\n open={filtersOpen}\n onClose={() => setFiltersOpen(false)}\n filters={filtersNode}\n activeFilterCount={c.activeFilterCount}\n onClearFilters={c.clearFilters}\n labels={labels}\n dir={props.dir}\n />\n )}\n </Paper>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["useSavedViews","Box","Button","Divider","IconButton","Popover","Stack","TextField","useState","SavedViewsMenu","t0","$","_c","options","labels","views","save","apply","remove","anchor","setAnchor","name","setName","t1","trim","trimmed","t2","t3","Symbol","for","e","currentTarget","t4","savedViews","t5","t6","t7","vertical","horizontal","t8","p","minWidth","t9","deleteView","t10","view","alignItems","justifyContent","map","my","t11","t12","viewName","htmlInput","t13","e_0","target","value","t14","t15","t16","t17","saveView","t18","t19","t20","t21","filterLabel","RANGE_OP_LABEL_KEYS","RANGE_OPS","RANGE_SUFFIXES","readRangeWidget","useFilterOptions","writeRangeWidget","Checkbox","CircularProgress","FormControl","FormControlLabel","FormGroup","FormLabel","Stack","TextField","useState","scalarText","value","String","selectedList","Array","isArray","TextFilter","t0","$","_c","def","source","t1","t2","placeholder","t3","extra","key","t4","t5","e","setExtra","target","t6","SelectFilter","options","loading","Symbol","for","select","native","inputLabel","shrink","t7","t8","map","_temp","t9","option","label","MultiSelectFilter","T0","T1","checked","toggle","on","next","filter","v","columnGap","includes","_","on_0","RangeFilter","type","labels","suffixes","lowKey","start","highKey","end","opLabelKeys","state","op","setOp","single","b","a","setExtras","commit","changeOp","raw","next_0","find","candidate","write","flex","minWidth","input","bounds","from","raw_0","to","raw_1","undefined","raw_2","width","mb","flexWrap","operator","t10","e_0","t11","t12","t13","t14","candidate_0","t15","t16","t17","FilterField","AutoFilterForm","defs","Box","Button","ClickAwayListener","Paper","Popper","Stack","Typography","useEffect","FilterPopover","t0","$","_c","open","onClose","anchorEl","filters","activeFilterCount","onClearFilters","labels","dir","t1","undefined","t2","t3","onKeyDown","event","key","document","addEventListener","removeEventListener","t4","t5","t6","t7","Symbol","for","name","options","offset","zIndex","t8","width","maxWidth","borderRadius","t9","p","display","flexDirection","gap","t10","justifyContent","alignItems","t11","fontWeight","t12","t13","t14","clearAll","t15","t16","t17","t18","t19","t20","pageSizeOptions","resolveDisabledReason","useBulkActionRunner","Alert","Badge","Box","Button","Chip","Drawer","InputAdornment","MenuItem","Pagination","Skeleton","Stack","TextField","Tooltip","Typography","useRef","FilterPopover","FiltersIcon","$","_c","t0","Symbol","for","SearchIcon","srOnly","position","width","height","padding","margin","overflow","clip","whiteSpace","border","Toolbar","table","hideSearch","searchPlaceholder","sortByOptions","customToolbar","hasFilters","activeFilterCount","showRowsPerPage","filtersMode","filters","filtersOpen","onToggleFilters","onFiltersTriggerPointerDown","onCloseFilters","onClearFilters","dir","columnMenu","labels","source","sortOptions","isMobile","undefined","searchProps","getSearchInputProps","placeholder","filtersAnchorRef","filtersButton","flexWrap","alignItems","justifyContent","value","htmlInput","search","type","input","startAdornment","onChange","flex","minWidth","maxWidth","length","sortBy","e","setSort","target","sortDir","map","o","label","current","rowsPerPage","limit","setLimit","Number","n","Chips","chips","onClearAll","t1","t2","listStyle","p","m","t3","clearAll","t4","chip","key","onRemove","t5","BulkBar","selection","total","bulkActions","confirm","selectedIds","selectedCount","headerState","visibleIds","allMatching","selectAllMatching","clear","cancel","cancelLabel","onComplete","pending","run","T0","T1","t10","t11","t12","t6","t7","t8","t9","ids","showBanner","t13","t14","t15","t16","allMatchingSelected","pageSelected","t17","action","reason","disabledReason","color","icon","Footer","pagination","setPage","String","_temp","fromIndex","toIndex","showing","from","to","_","page","page_0","goToPage","previousPage","nextPage","safePage","totalPages","ErrorState","error","onRetry","retry","errorTitle","message","LoadingState","rows","columns","loadingLabel","r","py","Array","Math","max","_temp2","__0","c","FilterDrawer","open","onClose","paper","display","flexDirection","gap","applyFilters","ACTIONS_COLUMN_KEY","columnMenuRows","columnReorderKeyProps","EyeIcon","GripIcon","nextPinSide","pinActionLabel","PinIcon","useColumnDragState","Box","Button","Divider","IconButton","Popover","Stack","Typography","useState","VisibilityToggle","t0","$","_c","hidden","name","labels","onToggle","t1","showColumn","hideColumn","t2","t3","t4","t5","RowName","flex","color","textDecoration","PinToggle","active","label","onClick","Symbol","for","ActionsRow","layout","isHidden","pinned","state","my","px","py","alignItems","width","toggleVisible","t6","actions","t7","t8","unpin","pinEnd","t9","setPinned","undefined","t10","t11","ColumnMenu","allColumns","hasRowActions","drag","anchor","setAnchor","e","currentTarget","columns","vertical","horizontal","p","minWidth","display","pb","fontWeight","textTransform","letterSpacing","r","indicator","rowAttrs","key","index","edge","edgeOffset","cursor","opacity","boxShadow","theme","palette","primary","main","rowDragProps","dropProps","move","moveStart","moveEnd","map","t12","t13","justifyContent","t14","reset","t15","resetColumns","t16","t17","t18","columnResizeHandleProps","edgePinStyle","headerGroupRow","PIN_Z","pinnedCellStyle","pinnedColumnWidth","resolveDisabledReason","resolveVirtualRows","rowClickProps","runRowAction","tableMinWidth","tableRenderModel","useHorizontalOverflow","memo","useCallback","useMemo","useRef","RESIZE_HANDLE_SX","position","insetInlineEnd","top","height","width","cursor","touchAction","userSelect","Box","Card","CardContent","Checkbox","IconButton","Stack","Table","TableBody","TableCell","TableFooter","TableHead","TableRow","TableSortLabel","Tooltip","Typography","muiColor","color","EXPAND_WIDTH","useStableToggle","target","ref","current","id","toggle","ExpandChevron","t0","$","_c","expanded","dir","transform","t1","display","transition","t2","Symbol","for","t3","ExpandToggle","onToggle","expandLabel","collapseLabel","t4","muiAlign","align","RowActionButtons","row","actions","confirm","cancelLabel","justifyContent","action","isHidden","reason","disabledReason","disabled","undefined","isDisabled","key","label","e","stopPropagation","icon","map","DESKTOP_ROW_COMPARED","desktopRowPropsAreEqual","prev","next","every","DesktopRowImpl","index","selected","columns","sx","columnSpan","className","hasSelection","hasExpansion","showActions","selectRowLabel","rowActions","renderRowDetail","onToggleSelect","onToggleExpand","onRowClick","prefetch","measureElement","expand","selection","input","t5","t6","column","cells","Cell","accessor","t7","t8","t9","DesktopRow","DesktopTable","table","rows","getRowId","size","rowClassName","summaryRow","expansion","rowEntries","paddingTop","paddingBottom","stickyHeader","stickyTop","pinOffset","maxHeight","virtualScrollRef","setWidth","columnWidths","resizeLabel","actionsPinned","labels","entries","groupRow","summaryCells","isExpanded","expandActive","hasPinned","some","c","overflow","inScrollBox","overflowing","headSx","zIndex","header","bgcolor","selectionWidth","actionsWidth","leadStart","leadEnd","leads","start","end","selectionLead","hasStartPin","side","hasEndPin","stickActions","headCellSx","pin","headerPinned","needsRelative","Boolean","textAlign","edgeHeadSx","active","lead","insetInlineStart","rowSx","edge","body","boxSx","overflowX","minWidth","widths","extra","node","getTableProps","cell","span","fontWeight","selectAll","headerState","toggleAll","headerCellProps","getHeaderCellProps","ariaSort","sortIndex","sortable","getSortButtonProps","onClick","fontSize","ml","p","isSelected","selectRow","cancel","expandRow","collapseRow","mobileLabel","MobileCards","T0","compact","t10","pb","mb","length","mt","column_0","value","ACTIONS_COLUMN_KEY","isDeclarativeFilters","resolveLabels","useChromeBodyData","useChromeScrollReset","useFilterTriggerToggle","useTableChrome","useTableData","Box","Button","LinearProgress","Paper","Stack","Typography","useRef","useState","AutoFilterForm","BulkBar","Chips","ErrorState","FilterDrawer","Footer","LoadingState","Toolbar","ColumnMenu","SavedViewsMenu","DesktopTable","MobileCards","tableSize","size","density","resizeSetter","enabled","setWidth","undefined","resolveActionsColumn","declared","layout","hasRowActions","length","rowActions","isHidden","actionsPinned","state","pinned","useChromeProps","props","$","_c","t0","urlSync","urlAdapter","t1","columns","data","filters","loading","locale","onQueryChange","source","total","urlKey","adapter","runtime","filtersNode","t2","labels","defs","filterLabels","t3","DataTable","slots","className","filtersMode","chromeProps","c","table","confirm","getRowId","filtersOpen","setFiltersOpen","filtersTrigger","rootRef","virtualization","loadMoreRef","canLoadMore","virtualScrollRef","columnLayout","allColumns","isMobile","enableColumnMenu","columnMenu","t4","savedViews","savedViewsMenu","body","t5","skeletonRows","skeleton","limit","clearFilters","emptyVariant","empty","py","alignItems","noResults","noData","clearAll","detail","expansion","t6","rows","t7","dir","onRowClick","renderRowDetail","rowClassName","summaryRow","measureElement","paddingBottom","paddingTop","prefetch","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","stickyHeader","t18","stickyTop","t19","pinOffset","t20","maxHeight","t21","resizableColumns","t22","widths","resizeColumn","isRefreshing","Symbol","for","p","hideSearch","searchPlaceholder","sortByOptions","toolbar","Boolean","activeFilterCount","onClick","onPointerDown","mergedChips","bulkActions","selection","error","refetch","hasNextPage","display","justifyContent","isFetchingNextPage","fetchNextPage","loadMore","showFooter","setLimit","setPage","pagination","t23"],"sources":["../src/components/SavedViewsMenu.tsx","../src/components/AutoFilterForm.tsx","../src/components/FilterPopover.tsx","../src/components/chrome.tsx","../src/components/ColumnMenu.tsx","../src/components/tables.tsx","../src/DataTable.tsx"],"sourcesContent":["import {\n type TableLabels,\n useSavedViews,\n type UseSavedViewsOptions,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n Divider,\n IconButton,\n Popover,\n Stack,\n TextField,\n} from \"@mui/material\";\nimport { useState } from \"react\";\n\n/** The label subset the saved-views menu renders. */\nexport type SavedViewsMenuLabels = Pick<\n Required<TableLabels>,\n \"savedViews\" | \"saveView\" | \"viewName\" | \"deleteView\"\n>;\n\n/** Props for the saved-views menu. */\nexport interface SavedViewsMenuProps {\n /** Storage + URL backend wiring, forwarded to core's `useSavedViews`. */\n options: UseSavedViewsOptions;\n /** Resolved table labels (trigger, save row, delete action). */\n labels: SavedViewsMenuLabels;\n}\n\n/**\n * MUI saved-views menu: a toolbar button opening a popover that lists the\n * saved views — click applies one to the table, the trailing × deletes it —\n * above a save row that captures the table's CURRENT URL state (search,\n * sort, page, filters, column layout) under a typed name.\n */\nexport function SavedViewsMenu({\n options,\n labels,\n}: Readonly<SavedViewsMenuProps>) {\n const { views, save, apply, remove } = useSavedViews(options);\n const [anchor, setAnchor] = useState<null | HTMLElement>(null);\n const [name, setName] = useState(\"\");\n const trimmed = name.trim();\n return (\n <>\n <Button\n size=\"small\"\n variant=\"outlined\"\n aria-expanded={anchor !== null}\n aria-haspopup=\"true\"\n onClick={(e) => setAnchor(e.currentTarget)}\n >\n {labels.savedViews}\n </Button>\n <Popover\n anchorEl={anchor}\n open={anchor !== null}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n >\n <Box sx={{ p: 0.75, minWidth: 250 }}>\n {views.map((view) => (\n <Stack\n key={view.name}\n direction=\"row\"\n spacing={0.5}\n sx={{ alignItems: \"center\" }}\n >\n <Button\n size=\"small\"\n fullWidth\n sx={{ justifyContent: \"flex-start\" }}\n onClick={() => {\n apply(view.name);\n setAnchor(null);\n }}\n >\n {view.name}\n </Button>\n <IconButton\n size=\"small\"\n aria-label={`${labels.deleteView}: ${view.name}`}\n onClick={() => remove(view.name)}\n >\n ×\n </IconButton>\n </Stack>\n ))}\n <Divider sx={{ my: 0.5 }} />\n <Stack direction=\"row\" spacing={0.5} sx={{ alignItems: \"center\" }}>\n <TextField\n size=\"small\"\n value={name}\n placeholder={labels.viewName}\n slotProps={{ htmlInput: { \"aria-label\": labels.viewName } }}\n onChange={(e) => setName(e.target.value)}\n />\n <Button\n size=\"small\"\n variant=\"contained\"\n disabled={trimmed === \"\"}\n onClick={() => {\n save(trimmed);\n setName(\"\");\n }}\n >\n {labels.saveView}\n </Button>\n </Stack>\n </Box>\n </Popover>\n </>\n );\n}\n","import {\n type FilterDef,\n filterLabel,\n type FilterValue,\n RANGE_OP_LABEL_KEYS,\n RANGE_OPS,\n RANGE_SUFFIXES,\n type RangeOp,\n readRangeWidget,\n type TableLabels,\n type TableSource,\n useFilterOptions,\n writeRangeWidget,\n} from \"@adapttable/core\";\nimport {\n Checkbox,\n CircularProgress,\n FormControl,\n FormControlLabel,\n FormGroup,\n FormLabel,\n Stack,\n TextField,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useState } from \"react\";\n\n/** The slice of the source the auto-built form reads and writes. */\ntype FilterBag<TRow> = Pick<\n TableSource<TRow>,\n \"extra\" | \"setExtra\" | \"setExtras\"\n>;\n\n/** Props for {@link AutoFilterForm}. */\nexport interface AutoFilterFormProps<TRow> {\n /** The resolved declarative definitions, in render order. */\n defs: readonly FilterDef<TRow>[];\n /** The filter bag the widgets read from and write to. */\n source: FilterBag<TRow>;\n /** Resolved labels for the operator-first range widgets. */\n labels: Required<TableLabels>;\n}\n\n/** Props for one rendered filter widget. */\ninterface FieldProps<TRow> {\n def: FilterDef<TRow>;\n source: FilterBag<TRow>;\n}\n\n/** Field props for the widgets that also render resolved labels. */\ninterface LabeledFieldProps<TRow> extends FieldProps<TRow> {\n labels: Required<TableLabels>;\n}\n\n/** A scalar filter value as input text (arrays/blanks render empty). */\nfunction scalarText(value: FilterValue): string {\n return typeof value === \"string\" || typeof value === \"number\"\n ? String(value)\n : \"\";\n}\n\n/** A multi-select filter value as the checked-value list. */\nfunction selectedList(value: FilterValue): readonly string[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction TextFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n return (\n <TextField\n size=\"small\"\n label={filterLabel(def)}\n placeholder={def.placeholder}\n value={scalarText(source.extra[def.key])}\n onChange={(e) => source.setExtra(def.key, e.target.value)}\n />\n );\n}\n\nfunction SelectFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n // The options source may be an array OR an async loader — never map it\n // directly. The hook resolves both (and reports loader progress).\n const { options, loading } = useFilterOptions(def);\n return (\n <TextField\n select\n size=\"small\"\n label={filterLabel(def)}\n value={scalarText(source.extra[def.key])}\n onChange={(e) => source.setExtra(def.key, e.target.value)}\n slotProps={{\n select: { native: true },\n inputLabel: { shrink: true },\n }}\n >\n <option value=\"\">All</option>\n {loading && (\n <option value=\"\" disabled>\n …\n </option>\n )}\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </TextField>\n );\n}\n\nfunction MultiSelectFilter<TRow>({ def, source }: Readonly<FieldProps<TRow>>) {\n const { options, loading } = useFilterOptions(def);\n const checked = selectedList(source.extra[def.key]);\n const toggle = (value: string, on: boolean) => {\n const next = on ? [...checked, value] : checked.filter((v) => v !== value);\n source.setExtra(def.key, next);\n };\n return (\n <FormControl component=\"fieldset\" variant=\"standard\">\n <FormLabel component=\"legend\">{filterLabel(def)}</FormLabel>\n <FormGroup row sx={{ columnGap: 1.5 }}>\n {loading ? (\n <CircularProgress size={16} />\n ) : (\n options.map((option) => (\n <FormControlLabel\n key={option.value}\n label={option.label}\n control={\n <Checkbox\n size=\"small\"\n checked={checked.includes(option.value)}\n onChange={(_, on) => toggle(option.value, on)}\n />\n }\n />\n ))\n )}\n </FormGroup>\n </FormControl>\n );\n}\n\n/**\n * Operator-first range widget: a comparison select, then one value input —\n * or a From/To pair for \"between\". The UI state is the operator alone; the\n * bounds always live in the source's `Min`/`Max` (`From`/`To`) pair, so\n * URLs, chips, and predicates are untouched by the operator presentation.\n */\nfunction RangeFilter<TRow>({\n def,\n type,\n source,\n labels,\n}: Readonly<LabeledFieldProps<TRow> & { type: keyof typeof RANGE_SUFFIXES }>) {\n const suffixes = RANGE_SUFFIXES[type];\n const lowKey = def.key + suffixes.start;\n const highKey = def.key + suffixes.end;\n const opLabelKeys =\n RANGE_OP_LABEL_KEYS[type === \"dateRange\" ? \"date\" : \"number\"];\n const state = readRangeWidget(source.extra, lowKey, highKey);\n // The operator is presentation state, seeded from the persisted pair so a\n // restored URL reopens on the comparison it encodes.\n const [op, setOp] = useState<RangeOp | undefined>(state.op);\n // The single bound lives under the high key for \"at most\", low otherwise.\n const single = op === \"lte\" ? state.b : state.a;\n const commit = (next: RangeOp | undefined, a: string, b: string) =>\n source.setExtras(writeRangeWidget(next, a, b, lowKey, highKey));\n const changeOp = (raw: string) => {\n const next = RANGE_OPS.find((candidate) => candidate === raw);\n setOp(next);\n // Carry the value into the new comparison; the upper bound only\n // survives while \"between\" keeps a field for it.\n commit(next, single, op === \"between\" ? state.b : \"\");\n };\n const input = (\n label: string,\n value: string,\n write: (raw: string) => void\n ) => (\n <TextField\n size=\"small\"\n sx={{ flex: \"1 1 7rem\", minWidth: \"7rem\" }}\n type={type === \"dateRange\" ? \"date\" : \"number\"}\n label={label}\n value={value}\n onChange={(e) => write(e.target.value)}\n slotProps={{ inputLabel: { shrink: true } }}\n />\n );\n let bounds: ReactNode = null;\n if (op === \"between\") {\n bounds = (\n <>\n {input(labels.from, state.a, (raw) => commit(\"between\", raw, state.b))}\n {input(labels.to, state.b, (raw) => commit(\"between\", state.a, raw))}\n </>\n );\n } else if (op !== undefined) {\n bounds = input(labels.value, single, (raw) => commit(op, raw, \"\"));\n }\n return (\n <FormControl component=\"fieldset\" variant=\"standard\" sx={{ width: \"100%\" }}>\n <FormLabel component=\"legend\" sx={{ mb: 0.75 }}>\n {filterLabel(def)}\n </FormLabel>\n <Stack direction=\"row\" spacing={1} useFlexGap sx={{ flexWrap: \"wrap\" }}>\n <TextField\n select\n size=\"small\"\n label={labels.operator}\n value={op ?? \"\"}\n onChange={(e) => changeOp(e.target.value)}\n slotProps={{\n select: { native: true },\n inputLabel: { shrink: true },\n }}\n sx={{ flex: \"0 0 8.5rem\", width: \"8.5rem\" }}\n >\n <option value=\"\" />\n {RANGE_OPS.map((candidate) => (\n <option key={candidate} value={candidate}>\n {labels[opLabelKeys[candidate]]}\n </option>\n ))}\n </TextField>\n {bounds}\n </Stack>\n </FormControl>\n );\n}\n\nfunction FilterField<TRow>({\n def,\n source,\n labels,\n}: Readonly<LabeledFieldProps<TRow>>) {\n switch (def.type) {\n case \"text\":\n return <TextFilter def={def} source={source} />;\n case \"select\":\n return <SelectFilter def={def} source={source} />;\n case \"multiSelect\":\n return <MultiSelectFilter def={def} source={source} />;\n case \"dateRange\":\n case \"numberRange\":\n return (\n <RangeFilter\n def={def}\n type={def.type}\n source={source}\n labels={labels}\n />\n );\n }\n}\n\n/**\n * The auto-built filter form: one MUI widget per declarative definition,\n * reading and writing the source's extra-filter bag (so chips, URL state\n * and — on frontend data — the row predicate all stay in sync). The selects\n * render natively, so every control works inline, without portal menus.\n *\n * @typeParam TRow - The row type.\n */\nexport function AutoFilterForm<TRow>({\n defs,\n source,\n labels,\n}: Readonly<AutoFilterFormProps<TRow>>) {\n return (\n <Stack spacing={1.5}>\n {defs.map((def) => (\n <FilterField key={def.key} def={def} source={source} labels={labels} />\n ))}\n </Stack>\n );\n}\n","import type { Direction, TableLabels } from \"@adapttable/core\";\nimport {\n Box,\n Button,\n ClickAwayListener,\n Paper,\n Popper,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useEffect } from \"react\";\n\n/** Props for {@link FilterPopover}. */\nexport interface FilterPopoverProps {\n open: boolean;\n onClose: () => void;\n /** The element the popover is anchored to (the Filters button). */\n anchorEl: HTMLElement | null;\n filters: ReactNode;\n activeFilterCount: number;\n onClearFilters: () => void;\n labels: Required<TableLabels>;\n dir?: Direction;\n}\n\n/**\n * Anchored filter card (the default filter container). Opens under the Filters\n * button. Built on a non-modal `Popper` (+ `ClickAwayListener`) rather than the\n * Modal-based `Popover`, so it renders NO backdrop/scrim — the background stays\n * visible and interactive. Closes on outside click or Escape. Placement is\n * `bottom-end` (flips to `bottom-start` for RTL). Pair with\n * `filtersMode=\"drawer\"` for the slide-in panel instead.\n */\nexport function FilterPopover({\n open,\n onClose,\n anchorEl,\n filters,\n activeFilterCount,\n onClearFilters,\n labels,\n dir = \"ltr\",\n}: Readonly<FilterPopoverProps>) {\n // Escape must close the popover wherever focus sits (e.g. still on the\n // Filters trigger) — a keydown on the card alone misses that case.\n useEffect(() => {\n if (!open) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [open, onClose]);\n return (\n <Popper\n open={open && anchorEl !== null}\n anchorEl={anchorEl}\n placement={dir === \"rtl\" ? \"bottom-start\" : \"bottom-end\"}\n modifiers={[{ name: \"offset\", options: { offset: [0, 4] } }]}\n style={{ zIndex: 1300 }}\n >\n <ClickAwayListener mouseEvent=\"onMouseDown\" onClickAway={onClose}>\n <Paper\n elevation={8}\n sx={{\n width: 360,\n maxWidth: \"calc(100vw - 32px)\",\n borderRadius: 2,\n }}\n >\n <Box sx={{ p: 2, display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n <Stack\n direction=\"row\"\n sx={{ justifyContent: \"space-between\", alignItems: \"center\" }}\n >\n <Typography variant=\"subtitle1\" sx={{ fontWeight: 600 }}>\n {labels.filters}\n </Typography>\n <Button\n size=\"small\"\n onClick={onClearFilters}\n disabled={activeFilterCount === 0}\n >\n {labels.clearAll}\n </Button>\n </Stack>\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {filters}\n </Box>\n </Box>\n </Paper>\n </ClickAwayListener>\n </Popper>\n );\n}\n","import {\n type ActiveFilterChip,\n type BulkBarChromeProps,\n type Direction,\n pageSizeOptions,\n type PaginationInfo,\n resolveDisabledReason,\n type TableLabels,\n type ToolbarChromeProps,\n useBulkActionRunner,\n} from \"@adapttable/core\";\nimport {\n Alert,\n Badge,\n Box,\n Button,\n Chip,\n Drawer,\n InputAdornment,\n MenuItem,\n Pagination,\n Skeleton,\n Stack,\n TextField,\n Tooltip,\n Typography,\n} from \"@mui/material\";\nimport { type ReactNode, useRef } from \"react\";\n\nimport { FilterPopover } from \"./FilterPopover\";\n\n/** Funnel/filter glyph (currentColor, no icon-lib dependency). */\nfunction FiltersIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M3 5h18l-7 8v5l-4 2v-7L3 5Z\" />\n </svg>\n );\n}\n\n/** Magnifying-glass glyph for the search field (currentColor, no icon-lib). */\nfunction SearchIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n\n/** Inline equivalent of `@mui/utils` visuallyHidden (avoids an extra dep). */\nconst srOnly = {\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n whiteSpace: \"nowrap\",\n border: 0,\n} as const;\n\n/**\n * Toolbar props: the shared {@link ToolbarChromeProps} plus the filter-container\n * wiring (mode + open/close handlers) so the Filters button can act as either\n * the popover anchor (default) or the drawer trigger.\n */\nexport interface MuiToolbarProps<TRow> extends ToolbarChromeProps<TRow> {\n /** Which filter container the Filters button drives. */\n filtersMode: \"popover\" | \"drawer\";\n /** Filter content (rendered inside the popover when in popover mode). */\n filters?: ReactNode;\n /** Close the filter container (popover mode). */\n onCloseFilters: () => void;\n /** Clear all active filters. */\n onClearFilters: () => void;\n}\n\n/** Search field + sort select + filters button + rows-per-page. */\nexport function Toolbar<TRow>({\n table,\n hideSearch,\n searchPlaceholder,\n sortByOptions,\n customToolbar,\n hasFilters,\n activeFilterCount,\n showRowsPerPage,\n filtersMode,\n filters,\n filtersOpen,\n onToggleFilters,\n onFiltersTriggerPointerDown,\n onCloseFilters,\n onClearFilters,\n dir,\n columnMenu,\n}: Readonly<MuiToolbarProps<TRow>>) {\n const { labels, source } = table;\n const sortOptions =\n sortByOptions ?? (table.isMobile ? table.sortByOptions : undefined);\n const searchProps = table.getSearchInputProps(\n searchPlaceholder ? { placeholder: searchPlaceholder } : undefined\n );\n const filtersAnchorRef = useRef<HTMLButtonElement>(null);\n\n const filtersButton = hasFilters ? (\n <Badge color=\"primary\" badgeContent={activeFilterCount}>\n <Button\n ref={filtersAnchorRef}\n variant=\"outlined\"\n size=\"small\"\n startIcon={<FiltersIcon />}\n aria-expanded={filtersMode === \"popover\" ? filtersOpen : undefined}\n onPointerDown={onFiltersTriggerPointerDown}\n onClick={onToggleFilters}\n >\n {labels.filters}\n </Button>\n </Badge>\n ) : null;\n\n return (\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n }}\n >\n {!hideSearch && (\n <TextField\n size=\"small\"\n value={searchProps.value}\n placeholder={searchProps.placeholder}\n slotProps={{\n htmlInput: { \"aria-label\": labels.search, type: \"search\" },\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchIcon />\n </InputAdornment>\n ),\n },\n }}\n onChange={searchProps.onChange}\n sx={{ flex: 1, minWidth: 160, maxWidth: 360 }}\n />\n )}\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{ alignItems: \"center\", flexWrap: \"wrap\" }}\n >\n {sortOptions && sortOptions.length > 0 && (\n <TextField\n select\n size=\"small\"\n label={labels.sortBy}\n value={source.sortBy ?? \"\"}\n onChange={(e) =>\n source.setSort(\n e.target.value || undefined,\n source.sortDir ?? \"asc\"\n )\n }\n sx={{ minWidth: 160 }}\n >\n <MenuItem value=\"\">—</MenuItem>\n {sortOptions.map((o) => (\n <MenuItem key={o.value} value={o.value}>\n {o.label}\n </MenuItem>\n ))}\n </TextField>\n )}\n {customToolbar}\n {filtersButton}\n {hasFilters && filtersMode === \"popover\" && (\n <FilterPopover\n open={filtersOpen}\n onClose={onCloseFilters}\n anchorEl={filtersAnchorRef.current}\n filters={filters}\n activeFilterCount={activeFilterCount}\n onClearFilters={onClearFilters}\n labels={labels}\n dir={dir}\n />\n )}\n {columnMenu}\n {showRowsPerPage && (\n <TextField\n select\n size=\"small\"\n label={labels.rowsPerPage}\n value={source.limit}\n onChange={(e) => source.setLimit(Number(e.target.value))}\n sx={{ minWidth: 110 }}\n >\n {pageSizeOptions(source.limit).map((n) => (\n <MenuItem key={n} value={n}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n )}\n </Stack>\n </Stack>\n );\n}\n\n/** Removable MUI chips. */\nexport function Chips({\n chips,\n onClearAll,\n labels,\n}: Readonly<{\n chips: readonly ActiveFilterChip[];\n onClearAll: () => void;\n labels: Required<TableLabels>;\n}>) {\n if (chips.length === 0) return null;\n return (\n <Stack\n direction=\"row\"\n spacing={0.5}\n useFlexGap\n component=\"ul\"\n aria-label={labels.filters}\n sx={{ listStyle: \"none\", p: 0, m: 0, flexWrap: \"wrap\" }}\n >\n {chips.map((chip) => (\n <li key={chip.key}>\n <Chip\n label={chip.label}\n size=\"small\"\n onDelete={chip.onRemove}\n deleteIcon={\n <span aria-label={`${labels.clearAll}: ${chip.label}`}>×</span>\n }\n />\n </li>\n ))}\n <li>\n <Button size=\"small\" onClick={onClearAll}>\n {labels.clearAll}\n </Button>\n </li>\n </Stack>\n );\n}\n\n/** Selection toolbar. */\nexport function BulkBar({\n selection,\n total,\n bulkActions,\n confirm,\n labels,\n}: Readonly<BulkBarChromeProps>) {\n const {\n selectedIds,\n selectedCount,\n headerState,\n visibleIds,\n allMatching,\n selectAllMatching,\n clear,\n } = selection;\n const { pending, run } = useBulkActionRunner({\n confirm,\n cancelLabel: labels.cancel,\n onComplete: clear,\n });\n if (selectedCount === 0) return null;\n const ids = [...selectedIds];\n // Offer \"select all N matching\" only when the whole page is selected and\n // more rows match beyond it; once active, show the cross-page scope.\n const showBanner = headerState === \"all\" && total > visibleIds.length;\n return (\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n }}\n >\n <Stack\n direction=\"row\"\n spacing={1}\n useFlexGap\n sx={{ alignItems: \"center\", flexWrap: \"wrap\" }}\n >\n <Typography variant=\"body2\">\n {labels.selectedCount(selectedCount)}\n </Typography>\n {showBanner &&\n (allMatching ? (\n <>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {labels.allMatchingSelected(total)}\n </Typography>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={clear}\n disabled={pending !== null}\n >\n {labels.clearAll}\n </Button>\n </>\n ) : (\n <>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {labels.pageSelected(visibleIds.length)}\n </Typography>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={selectAllMatching}\n disabled={pending !== null}\n >\n {labels.selectAllMatching(total)}\n </Button>\n </>\n ))}\n </Stack>\n <Stack direction=\"row\" spacing={1} useFlexGap sx={{ flexWrap: \"wrap\" }}>\n <Button\n size=\"small\"\n variant=\"text\"\n onClick={clear}\n disabled={pending !== null}\n >\n {labels.clearAll}\n </Button>\n {bulkActions.map((action) => {\n const reason = resolveDisabledReason(action.disabledReason?.(ids));\n return (\n <Tooltip key={action.key} title={reason ?? \"\"}>\n <span>\n <Button\n size=\"small\"\n variant=\"contained\"\n color={action.color as \"primary\" | undefined}\n startIcon={action.icon}\n disabled={reason !== undefined || pending !== null}\n onClick={() =>\n run(\n action,\n ids,\n allMatching ? { allMatching: true, total } : undefined\n )\n }\n >\n {action.label}\n </Button>\n </span>\n </Tooltip>\n );\n })}\n </Stack>\n </Stack>\n );\n}\n\n/** Paged footer: rows-per-page + range on the left, pager on the right. */\nexport function Footer({\n pagination,\n total,\n limit,\n setPage,\n setLimit,\n labels,\n}: Readonly<{\n pagination: PaginationInfo;\n total: number;\n limit: number;\n setPage: (n: number) => void;\n setLimit: (n: number) => void;\n labels: Required<TableLabels>;\n}>) {\n return (\n <Stack\n direction=\"row\"\n spacing={2}\n useFlexGap\n sx={{\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n }}\n >\n <Stack\n direction=\"row\"\n spacing={1.5}\n useFlexGap\n sx={{ alignItems: \"center\" }}\n >\n <TextField\n select\n size=\"small\"\n label={labels.rowsPerPage}\n value={String(limit)}\n onChange={(e) => setLimit(Number(e.target.value))}\n sx={{ minWidth: 100 }}\n >\n {pageSizeOptions(limit).map((n) => (\n <MenuItem key={n} value={String(n)}>\n {n}\n </MenuItem>\n ))}\n </TextField>\n {total > 0 && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {labels.showing({\n from: pagination.fromIndex,\n to: pagination.toIndex,\n total,\n })}\n </Typography>\n )}\n </Stack>\n <Pagination\n count={pagination.totalPages}\n page={pagination.safePage}\n onChange={(_, page) => setPage(page)}\n size=\"small\"\n // Only page items and the previous/next controls render here\n // (no first/last buttons), so the mapping is total.\n getItemAriaLabel={(type, page) => {\n // Page items always carry their page number (null is reserved\n // for ellipsis/control items, which take the other branch).\n if (type === \"page\") return labels.goToPage(page!);\n return type === \"previous\" ? labels.previousPage : labels.nextPage;\n }}\n />\n </Stack>\n );\n}\n\n/** Error alert. */\nexport function ErrorState({\n error,\n labels,\n onRetry,\n}: Readonly<{\n error: Error;\n labels: Required<TableLabels>;\n onRetry?: () => void;\n}>) {\n return (\n <Alert\n severity=\"error\"\n action={\n onRetry ? (\n <Button color=\"inherit\" size=\"small\" onClick={onRetry}>\n {labels.retry}\n </Button>\n ) : undefined\n }\n >\n <strong>{labels.errorTitle}</strong> — {error.message}\n </Alert>\n );\n}\n\n/** Skeleton loading placeholder. */\nexport function LoadingState({\n rows,\n columns,\n loadingLabel,\n}: Readonly<{ rows: number; columns: number; loadingLabel?: string }>) {\n return (\n <Box\n role=\"status\"\n aria-busy=\"true\"\n aria-live=\"polite\"\n data-testid=\"adapttable-loading\"\n >\n {Array.from({ length: rows }, (_, r) => (\n <Stack key={r} direction=\"row\" spacing={2} sx={{ py: 1 }}>\n {Array.from({ length: Math.max(columns, 1) }, (_, c) => (\n <Skeleton key={c} variant=\"text\" width={c === 0 ? \"30%\" : \"20%\"} />\n ))}\n </Stack>\n ))}\n {loadingLabel ? (\n <Box component=\"span\" sx={srOnly}>\n {loadingLabel}\n </Box>\n ) : null}\n </Box>\n );\n}\n\n/** Filters drawer. */\nexport function FilterDrawer({\n open,\n onClose,\n filters,\n activeFilterCount,\n onClearFilters,\n labels,\n dir = \"ltr\",\n}: Readonly<{\n open: boolean;\n onClose: () => void;\n filters: ReactNode;\n activeFilterCount: number;\n onClearFilters: () => void;\n labels: Required<TableLabels>;\n dir?: Direction;\n}>) {\n return (\n <Drawer\n anchor={dir === \"rtl\" ? \"left\" : \"right\"}\n open={open}\n onClose={onClose}\n slotProps={{ paper: { \"aria-label\": labels.filters } }}\n >\n <Box\n sx={{\n width: 360,\n p: 2,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n height: \"100%\",\n }}\n >\n <Typography variant=\"h6\">{labels.filters}</Typography>\n <Box sx={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: 2 }}>\n {filters}\n </Box>\n <Stack direction=\"row\" sx={{ justifyContent: \"space-between\" }}>\n <Button onClick={onClearFilters} disabled={activeFilterCount === 0}>\n {labels.clearAll}\n </Button>\n <Button variant=\"contained\" onClick={onClose}>\n {labels.applyFilters}\n </Button>\n </Stack>\n </Box>\n </Drawer>\n );\n}\n","import type { ColumnMenuChromeProps } from \"@adapttable/core\";\nimport {\n ACTIONS_COLUMN_KEY,\n columnMenuRows,\n columnReorderKeyProps,\n EyeIcon,\n GripIcon,\n nextPinSide,\n pinActionLabel,\n PinIcon,\n useColumnDragState,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n Divider,\n IconButton,\n Popover,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport { useState } from \"react\";\n\n/** Props for the column menu — the shared core contract + actions wiring. */\nexport interface ColumnMenuProps<TRow> extends ColumnMenuChromeProps<TRow> {\n /** Resolved labels, including the trailing actions-column entry's name. */\n labels: ColumnMenuChromeProps<TRow>[\"labels\"] & { actions: string };\n /** Whether the table has row actions — lists the injected actions column. */\n hasRowActions?: boolean;\n}\n\n/** Labels the visibility toggle and the row name share. */\ninterface RowLabels {\n showColumn: string;\n hideColumn: string;\n}\n\n/** Eye show/hide toggle — shared by the data rows and the actions row. */\nfunction VisibilityToggle({\n hidden,\n name,\n labels,\n onToggle,\n}: Readonly<{\n hidden: boolean;\n name: string;\n labels: RowLabels;\n onToggle: () => void;\n}>) {\n return (\n <IconButton\n size=\"small\"\n aria-label={`${hidden ? labels.showColumn : labels.hideColumn}: ${name}`}\n aria-pressed={!hidden}\n color={hidden ? \"default\" : \"primary\"}\n onClick={onToggle}\n >\n <EyeIcon off={hidden} />\n </IconButton>\n );\n}\n\n/** Row name — struck through and dimmed while the column is hidden. */\nfunction RowName({\n hidden,\n name,\n}: Readonly<{ hidden: boolean; name: string }>) {\n return (\n <Typography\n variant=\"body2\"\n sx={{\n flex: 1,\n color: hidden ? \"text.disabled\" : \"text.primary\",\n textDecoration: hidden ? \"line-through\" : \"none\",\n }}\n >\n {name}\n </Typography>\n );\n}\n\n/** Pin button — shared markup; the caller decides the cycle and the label. */\nfunction PinToggle({\n active,\n label,\n onClick,\n}: Readonly<{ active: boolean; label: string; onClick: () => void }>) {\n return (\n <IconButton\n size=\"small\"\n color={active ? \"primary\" : \"default\"}\n aria-label={label}\n onClick={onClick}\n >\n <PinIcon />\n </IconButton>\n );\n}\n\n/**\n * Trailing menu row for the injected row-actions column. It is not a data\n * column — no reorder grip, no left pin — but the layout state treats the\n * reserved `\"actions\"` key like any other, so the eye hides it and the pin is\n * a ONE-CLICK right↔unpinned toggle (the column always trails, so a left pin\n * would be meaningless).\n */\nfunction ActionsRow<TRow>({\n layout,\n labels,\n}: Readonly<Pick<ColumnMenuProps<TRow>, \"layout\" | \"labels\">>) {\n const hidden = layout.isHidden(ACTIONS_COLUMN_KEY);\n const pinned = layout.state.pinned[ACTIONS_COLUMN_KEY] === \"end\";\n return (\n <>\n <Divider sx={{ my: 0.5 }} />\n <Stack\n direction=\"row\"\n spacing={0.5}\n sx={{ px: 0.5, py: 0.25, alignItems: \"center\" }}\n >\n {/* Spacer where data rows show the drag grip — actions never move. */}\n <Box aria-hidden sx={{ width: 24 }} />\n <VisibilityToggle\n hidden={hidden}\n name={labels.actions}\n labels={labels}\n onToggle={() => layout.toggleVisible(ACTIONS_COLUMN_KEY)}\n />\n <RowName hidden={hidden} name={labels.actions} />\n <PinToggle\n active={pinned}\n label={`${pinned ? labels.unpin : labels.pinEnd}: ${labels.actions}`}\n onClick={() =>\n layout.setPinned(ACTIONS_COLUMN_KEY, pinned ? undefined : \"end\")\n }\n />\n </Stack>\n </>\n );\n}\n\n/**\n * MUI column-management popover: per-column drag grip (reorder), eye\n * (show/hide), and pin toggle. A `Popover` (not a `Menu`) so list keyboard\n * navigation never fights the grip's arrow-key reorder. With row actions, a\n * separated trailing row manages the injected actions column too.\n */\nexport function ColumnMenu<TRow>({\n allColumns,\n layout,\n labels,\n hasRowActions,\n}: Readonly<ColumnMenuProps<TRow>>) {\n const drag = useColumnDragState();\n const [anchor, setAnchor] = useState<null | HTMLElement>(null);\n return (\n <>\n <Button\n size=\"small\"\n variant=\"outlined\"\n aria-expanded={anchor !== null}\n aria-haspopup=\"true\"\n onClick={(e) => setAnchor(e.currentTarget)}\n >\n {labels.columns}\n </Button>\n <Popover\n anchorEl={anchor}\n open={anchor !== null}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n >\n <Box sx={{ p: 0.75, minWidth: 250 }}>\n <Typography\n variant=\"caption\"\n sx={{\n display: \"block\",\n px: 1,\n pb: 0.5,\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.06em\",\n color: \"text.secondary\",\n }}\n >\n {labels.columns}\n </Typography>\n {columnMenuRows(allColumns, layout).map((r) => {\n // Drop-position feedback: dim the source, line the landing edge.\n const indicator = drag.rowAttrs(r.key, r.index);\n const edge = indicator[\"data-drop\"];\n const edgeOffset = edge === \"before\" ? \"2px\" : \"-2px\";\n return (\n <Stack\n key={r.key}\n direction=\"row\"\n spacing={0.5}\n sx={{\n alignItems: \"center\",\n px: 0.5,\n py: 0.25,\n cursor: \"grab\",\n opacity: \"data-dragging\" in indicator ? 0.4 : undefined,\n boxShadow: edge\n ? (theme) =>\n `inset 0 ${edgeOffset} 0 0 ${theme.palette.primary.main}`\n : undefined,\n }}\n {...drag.rowDragProps(r.key, r.index)}\n {...drag.dropProps(r.index, layout.move)}\n {...indicator}\n >\n <IconButton\n size=\"small\"\n sx={{ cursor: \"grab\", color: \"text.disabled\" }}\n {...columnReorderKeyProps(\n r.key,\n r.index,\n layout.move,\n `${labels.moveStart} / ${labels.moveEnd}: ${r.name}`\n )}\n >\n <GripIcon />\n </IconButton>\n <VisibilityToggle\n hidden={r.hidden}\n name={r.name}\n labels={labels}\n onToggle={() => layout.toggleVisible(r.key)}\n />\n <RowName hidden={r.hidden} name={r.name} />\n <PinToggle\n active={r.pinned !== undefined}\n label={`${pinActionLabel(r.pinned, labels)}: ${r.name}`}\n onClick={() => layout.setPinned(r.key, nextPinSide(r.pinned))}\n />\n </Stack>\n );\n })}\n {hasRowActions && <ActionsRow layout={layout} labels={labels} />}\n <Divider sx={{ my: 0.5 }} />\n <Button\n size=\"small\"\n fullWidth\n sx={{ justifyContent: \"flex-start\" }}\n onClick={() => layout.reset()}\n >\n {labels.resetColumns}\n </Button>\n </Box>\n </Popover>\n </>\n );\n}\n","import {\n type ColumnDef,\n columnResizeHandleProps,\n type ConfirmHandler,\n edgePinStyle,\n headerGroupRow,\n PIN_Z,\n type PinLeads,\n pinnedCellStyle,\n pinnedColumnWidth,\n resolveDisabledReason,\n resolveVirtualRows,\n type RowAction,\n rowClickProps,\n runRowAction,\n type SharedTableRenderProps,\n tableMinWidth,\n tableRenderModel,\n useHorizontalOverflow,\n} from \"@adapttable/core\";\nimport type { ReactNode } from \"react\";\nimport { memo, useCallback, useMemo, useRef } from \"react\";\n\n/** Sx for an absolutely-positioned column-resize handle. */\nconst RESIZE_HANDLE_SX = {\n position: \"absolute\",\n insetInlineEnd: 0,\n top: 0,\n height: \"100%\",\n width: 8,\n cursor: \"col-resize\",\n touchAction: \"none\",\n userSelect: \"none\",\n} as const;\nimport {\n Box,\n Card,\n CardContent,\n Checkbox,\n IconButton,\n Stack,\n type SxProps,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TableRow,\n TableSortLabel,\n type Theme,\n Tooltip,\n Typography,\n} from \"@mui/material\";\n\n/** Map a destructive colour token to MUI's `\"error\"` palette, else default. */\nfunction muiColor(color: string | undefined): \"default\" | \"error\" {\n return color === \"danger\" || color === \"red\" || color === \"error\"\n ? \"error\"\n : \"default\";\n}\n\ninterface SharedProps<TRow> extends SharedTableRenderProps<TRow> {\n size: \"small\" | \"medium\";\n /** Text direction — flips the collapsed expand chevron under RTL. */\n dir?: \"ltr\" | \"rtl\";\n /**\n * End-pin the trailing actions column on its own (the reserved \"actions\"\n * layout key pinned right from the Columns menu) — independent of whether\n * any DATA column is pinned right. Desktop only; cards have no columns.\n */\n actionsPinned?: boolean;\n}\n\n/** Width (px) of the leading expand-chevron column (MUI's checkbox cell). */\nconst EXPAND_WIDTH = 48;\n\n/**\n * Identity-stable dispatcher for `selection.toggle` / `expansion.toggle`.\n * `selection.toggle` is recreated whenever the selection changes, so handing\n * it straight to a memoized row would either defeat the memo (if compared)\n * or go stale (if not — in the controlled mode it computes from the captured\n * set). This wrapper never changes identity and always dispatches to the\n * CURRENT target, so skipped rows still toggle against fresh state.\n */\nexport function useStableToggle(\n target: { toggle: (id: string) => void } | null | undefined\n): (id: string) => void {\n // Latest-ref pattern (same as core's useFilterOptions): a render-time\n // write so the callback reads whatever target the last render supplied.\n const ref = useRef(target);\n ref.current = target;\n return useCallback((id: string) => ref.current?.toggle(id), []);\n}\n\n/** Inline chevron pointing at the reading end; rotates down when open. */\nfunction ExpandChevron({\n expanded,\n dir,\n}: Readonly<{ expanded: boolean; dir?: \"ltr\" | \"rtl\" }>) {\n let transform: string | undefined;\n if (expanded) transform = \"rotate(90deg)\";\n else if (dir === \"rtl\") transform = \"rotate(180deg)\";\n return (\n <Box\n component=\"span\"\n aria-hidden\n sx={{ display: \"inline-flex\", transition: \"transform 150ms\", transform }}\n >\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </Box>\n );\n}\n\n/** The per-row expand/collapse chevron button (desktop cell + mobile card). */\nfunction ExpandToggle({\n id,\n expanded,\n onToggle,\n dir,\n expandLabel,\n collapseLabel,\n}: Readonly<{\n id: string;\n expanded: boolean;\n onToggle: (id: string) => void;\n dir?: \"ltr\" | \"rtl\";\n expandLabel: string;\n collapseLabel: string;\n}>) {\n return (\n <IconButton\n size=\"small\"\n aria-expanded={expanded}\n aria-label={expanded ? collapseLabel : expandLabel}\n onClick={() => onToggle(id)}\n >\n <ExpandChevron expanded={expanded} dir={dir} />\n </IconButton>\n );\n}\n\n/**\n * Logical (RTL-aware) `text-align` for a column. Applied via `sx` rather\n * than MUI's physical `align` prop so `\"end\"` follows the writing direction\n * (right in LTR, left in RTL).\n */\nfunction muiAlign(\n align: ColumnDef<unknown>[\"align\"]\n): \"start\" | \"center\" | \"end\" {\n if (align === \"center\") return \"center\";\n if (align === \"end\") return \"end\";\n return \"start\";\n}\n\nfunction RowActionButtons<TRow>({\n row,\n actions,\n confirm,\n cancelLabel,\n}: Readonly<{\n row: TRow;\n actions: RowAction<TRow>[];\n confirm: ConfirmHandler;\n cancelLabel: string;\n}>) {\n return (\n <Stack direction=\"row\" spacing={0.5} sx={{ justifyContent: \"flex-end\" }}>\n {actions.map((action) => {\n if (action.isHidden?.(row)) return null;\n const reason = resolveDisabledReason(action.disabledReason?.(row));\n const disabled =\n reason !== undefined || (action.isDisabled?.(row) ?? false);\n return (\n <Tooltip key={action.key} title={reason ?? action.label}>\n <span>\n <IconButton\n size=\"small\"\n color={muiColor(action.color)}\n disabled={disabled}\n aria-label={action.label}\n onClick={\n // The disabled attribute already blocks activation, so\n // attach the handler only when the action can run.\n disabled\n ? undefined\n : (e) => {\n e.stopPropagation();\n runRowAction(action, row, confirm, cancelLabel);\n }\n }\n >\n {action.icon ?? (\n <Typography variant=\"caption\">{action.label}</Typography>\n )}\n </IconButton>\n </span>\n </Tooltip>\n );\n })}\n </Stack>\n );\n}\n\n/**\n * Per-render-stable sx for the memoized desktop row. Built once per\n * `DesktopTable` render (memoized on the pin/width/column inputs), so the\n * row comparator can treat one object identity as \"the cell styling\".\n */\ninterface DesktopRowSx {\n /** Body-cell sx by column key (pin stickiness + logical text-align). */\n cells: Readonly<Record<string, SxProps<Theme>>>;\n /** Leading expand-chevron cell (edge-pinned alongside left data pins). */\n expand?: SxProps<Theme>;\n /** Leading selection cell (edge-pinned just past the expand column). */\n selection?: SxProps<Theme>;\n /** Trailing actions cell (edge-pinned, end-aligned). */\n actions: SxProps<Theme>;\n}\n\ninterface DesktopRowProps<TRow> {\n /* Visual inputs — compared by the memo (see DESKTOP_ROW_COMPARED). */\n row: TRow;\n index: number;\n selected: boolean;\n expanded: boolean;\n columns: ColumnDef<TRow>[];\n sx: DesktopRowSx;\n /** Full spacer span, INCLUDING the expand column when present. */\n columnSpan: number;\n size: \"small\" | \"medium\";\n dir?: \"ltr\" | \"rtl\";\n className?: string;\n hasSelection: boolean;\n hasExpansion: boolean;\n showActions: boolean;\n selectRowLabel: string;\n cancelLabel: string;\n expandLabel: string;\n collapseLabel: string;\n /* Stable wiring — excluded from the comparison (identity-stable, or at\n least latest-dispatching via useStableToggle), so a skipped row never\n holds a stale handler. */\n id: string;\n rowActions?: RowAction<TRow>[];\n confirm: ConfirmHandler;\n renderRowDetail?: (row: TRow) => ReactNode;\n onToggleSelect: (id: string) => void;\n onToggleExpand: (id: string) => void;\n onRowClick?: (row: TRow) => void;\n prefetch?: (row: TRow) => void;\n measureElement?: (element: Element | null) => void;\n}\n\n/**\n * The visual inputs a desktop row re-renders for. Deliberately NOT the\n * per-render `table` object or the handler props: handlers are stable (or\n * latest-dispatching wrappers), and everything that changes what the row\n * LOOKS like is listed here — row identity, selection/expansion flags,\n * density, column set, the precomputed sx map (pins + widths), the\n * rowClassName output, and direction.\n */\nconst DESKTOP_ROW_COMPARED: readonly (keyof DesktopRowProps<unknown>)[] = [\n \"row\",\n \"index\",\n \"selected\",\n \"expanded\",\n \"columns\",\n \"sx\",\n \"columnSpan\",\n \"size\",\n \"dir\",\n \"className\",\n \"hasSelection\",\n \"hasExpansion\",\n \"showActions\",\n \"selectRowLabel\",\n \"cancelLabel\",\n \"expandLabel\",\n \"collapseLabel\",\n];\n\nfunction desktopRowPropsAreEqual(\n prev: DesktopRowProps<unknown>,\n next: DesktopRowProps<unknown>\n): boolean {\n return DESKTOP_ROW_COMPARED.every((key) => prev[key] === next[key]);\n}\n\nfunction DesktopRowImpl<TRow>({\n row,\n index,\n selected,\n expanded,\n columns,\n sx,\n columnSpan,\n dir,\n className,\n hasSelection,\n hasExpansion,\n showActions,\n selectRowLabel,\n cancelLabel,\n expandLabel,\n collapseLabel,\n id,\n rowActions,\n confirm,\n renderRowDetail,\n onToggleSelect,\n onToggleExpand,\n onRowClick,\n prefetch,\n measureElement,\n}: Readonly<DesktopRowProps<TRow>>) {\n return (\n <>\n <TableRow\n {...rowClickProps(row, onRowClick)}\n className={className}\n ref={measureElement}\n data-index={index}\n hover\n selected={selected}\n onMouseEnter={prefetch ? () => prefetch(row) : undefined}\n >\n {hasExpansion && (\n <TableCell padding=\"checkbox\" sx={sx.expand}>\n <ExpandToggle\n id={id}\n expanded={expanded}\n onToggle={onToggleExpand}\n dir={dir}\n expandLabel={expandLabel}\n collapseLabel={collapseLabel}\n />\n </TableCell>\n )}\n {hasSelection && (\n <TableCell padding=\"checkbox\" sx={sx.selection}>\n <Checkbox\n slotProps={{ input: { \"aria-label\": selectRowLabel } }}\n checked={selected}\n onChange={() => onToggleSelect(id)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell key={column.key} sx={sx.cells[column.key]}>\n {column.Cell ? (\n <column.Cell row={row} rowIndex={index} />\n ) : (\n column.accessor?.(row)\n )}\n </TableCell>\n ))}\n {showActions && (\n <TableCell sx={sx.actions}>\n <RowActionButtons\n row={row}\n actions={rowActions!}\n confirm={confirm}\n cancelLabel={cancelLabel}\n />\n </TableCell>\n )}\n </TableRow>\n {expanded && (\n <TableRow>\n {/* `expanded` is only ever true when a detail renderer exists\n (DesktopTable derives it from `expansion && renderRowDetail`). */}\n <TableCell colSpan={columnSpan}>{renderRowDetail!(row)}</TableCell>\n </TableRow>\n )}\n </>\n );\n}\n\n/**\n * Memoized desktop row: a search keystroke (or any chrome re-render) must\n * not re-run every cell accessor, and toggling one row's checkbox must\n * re-render only that row. The cast restores the generic signature `memo`\n * erases.\n */\nconst DesktopRow = memo(\n DesktopRowImpl,\n desktopRowPropsAreEqual\n) as typeof DesktopRowImpl;\n\n/** Desktop MUI table. */\nexport function DesktopTable<TRow>({\n table,\n rows,\n rowActions,\n confirm,\n getRowId,\n size,\n dir,\n prefetch,\n onRowClick,\n rowClassName,\n renderRowDetail,\n summaryRow,\n expansion,\n rowEntries,\n paddingTop = 0,\n paddingBottom = 0,\n measureElement,\n stickyHeader = false,\n stickyTop = 0,\n pinOffset,\n maxHeight,\n virtualScrollRef,\n setWidth,\n columnWidths,\n resizeLabel = \"Resize column\",\n actionsPinned = false,\n}: Readonly<SharedProps<TRow>>) {\n // Core's span already counts the expand column (it sees `renderRowDetail`\n // + `expansion`), so spacer and detail rows use `columnSpan` as-is.\n const { columns, selection, labels, showActions, entries, columnSpan } =\n tableRenderModel({\n table,\n rows,\n rowActions,\n getRowId,\n rowEntries,\n renderRowDetail,\n expansion,\n });\n // Presentational header groups: contiguous visible columns sharing a\n // `group` merge into one spanning cell; `null` means no second header row.\n const groupRow = headerGroupRow(columns);\n // Footer summary cells for the CURRENT rows, keyed by column key.\n const summaryCells = summaryRow?.(rows);\n // Expansion is active only when BOTH halves arrived (the chrome supplies\n // `expansion` exactly when `renderRowDetail` is set).\n const isExpanded =\n expansion && renderRowDetail ? expansion.isExpanded : undefined;\n const expandActive = isExpanded !== undefined;\n const onToggleSelect = useStableToggle(selection);\n const onToggleExpand = useStableToggle(expansion);\n // `position: sticky` on a `<thead>` does not pin against the document\n // scroller, so we stick the header *cells* instead. Pinned cells also stick\n // left/right (corner-sticky in the header) with an opaque background.\n // Inside a maxHeight scroll box the box itself is the sticky context, so\n // the header pins to ITS top — a viewport offset would float it mid-box.\n const hasPinned =\n actionsPinned || table.columns.some((c) => pinOffset?.(c.key) != null);\n // Measured (ResizeObserver) horizontal overflow: with no maxHeight and no\n // pins, the wrapper only becomes a scroll container when the table is\n // actually wider than it — an unconditional `overflowX: auto` would trap\n // the page-scroll sticky header even when everything fits.\n const overflow = useHorizontalOverflow<HTMLDivElement>();\n // ANY scroll container (maxHeight, pins, measured overflow) is the sticky\n // context: pin to ITS top, not a viewport offset.\n const inScrollBox = maxHeight != null || hasPinned || overflow.overflowing;\n const headSx = stickyHeader\n ? {\n position: \"sticky\" as const,\n top: inScrollBox ? 0 : stickyTop,\n zIndex: PIN_Z.header,\n bgcolor: \"background.paper\",\n }\n : undefined;\n // The leading expand (48px) + checkbox (48px) and trailing actions (120px)\n // columns pin to the edge alongside the data columns, which therefore\n // start past them.\n const selectionWidth = 48;\n const actionsWidth = 120;\n const leadStart =\n (expandActive ? EXPAND_WIDTH : 0) + (selection ? selectionWidth : 0);\n const leadEnd = showActions ? actionsWidth : 0;\n const leads: PinLeads = { start: leadStart, end: leadEnd };\n // The selection cell itself sits past the expand column when both pin.\n const selectionLead = expandActive ? EXPAND_WIDTH : 0;\n const hasStartPin = table.columns.some(\n (c) => pinOffset?.(c.key)?.side === \"start\"\n );\n const hasEndPin = table.columns.some(\n (c) => pinOffset?.(c.key)?.side === \"end\"\n );\n // The actions cells stick to the inline end when a data column is pinned\n // right (so it never scrolls under them) OR when the actions column itself\n // is pinned from the Columns menu — one click, no data pin required.\n const stickActions = hasEndPin || actionsPinned;\n // Built with conditional spreads so no key is ever `undefined` — that keeps\n // the object assignable to MUI's strict `sx` index signature with no cast.\n const headCellSx = (column: ColumnDef<TRow>) => {\n const pin = pinnedCellStyle(\n pinOffset?.(column.key),\n PIN_Z.headerPinned,\n leads\n );\n // A pinned column renders at the width its sticky inset assumed, so\n // stacked pins stay flush even with no declared width.\n const width = pin\n ? pinnedColumnWidth(column, columnWidths)\n : (columnWidths?.[column.key] ?? column.width);\n // The resize handle is absolute; an un-pinned/un-sticky cell still needs a\n // positioning context for it.\n const needsRelative = Boolean(setWidth) && !headSx && !pin;\n return {\n ...headSx,\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n ...(needsRelative && { position: \"relative\" as const }),\n textAlign: muiAlign(column.align),\n ...(width != null && { width }),\n };\n };\n // The expand / checkbox / actions cells pin to their edge when a data\n // column on that side is pinned (corner-sticky in the header). `lead`\n // shifts the selection cell past a pinned expand column.\n const edgeHeadSx = (side: \"start\" | \"end\", active: boolean, lead = 0) => {\n const pin = edgePinStyle(side, active, PIN_Z.headerPinned);\n return {\n ...headSx,\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n ...(pin && lead > 0 && { insetInlineStart: lead }),\n };\n };\n // One identity per pin/width layout: the memoized rows treat this object\n // as \"the cell styling\", so it must only change when the layout does.\n const rowSx = useMemo<DesktopRowSx>(() => {\n const edge = (side: \"start\" | \"end\", active: boolean, lead = 0) => {\n const pin = edgePinStyle(side, active, PIN_Z.body);\n if (!pin) return undefined;\n return {\n ...pin,\n ...(lead > 0 && { insetInlineStart: lead }),\n bgcolor: \"background.paper\",\n };\n };\n const cells: Record<string, SxProps<Theme>> = {};\n for (const column of columns) {\n const pin = pinnedCellStyle(pinOffset?.(column.key), PIN_Z.body, {\n start: leadStart,\n end: leadEnd,\n });\n cells[column.key] = {\n ...(pin && { ...pin, bgcolor: \"background.paper\" }),\n textAlign: muiAlign(column.align),\n };\n }\n return {\n cells,\n expand: edge(\"start\", hasStartPin),\n selection: edge(\"start\", hasStartPin, selectionLead),\n actions: { ...edge(\"end\", stickActions), textAlign: \"end\" },\n };\n }, [\n columns,\n pinOffset,\n leadStart,\n leadEnd,\n hasStartPin,\n stickActions,\n selectionLead,\n ]);\n\n let boxSx: SxProps<Theme> | undefined;\n if (maxHeight != null) {\n boxSx = { maxHeight, overflow: \"auto\" };\n } else if (hasPinned || overflow.overflowing) {\n boxSx = { overflowX: \"auto\" };\n }\n // Fixed-width columns get a real table min-width (their sum), so the table\n // overflows and scrolls horizontally instead of squishing columns to fit.\n const minWidth = tableMinWidth(columns, {\n widths: columnWidths,\n extra: leadStart + leadEnd,\n });\n\n return (\n <Box\n ref={(node: HTMLDivElement | null) => {\n overflow.ref(node);\n virtualScrollRef?.(node);\n }}\n sx={boxSx}\n >\n <Table\n size={size}\n aria-label={table.getTableProps()[\"aria-label\"]}\n sx={minWidth > 0 ? { minWidth } : undefined}\n >\n <TableHead>\n {groupRow && (\n // Decorative group row. It deliberately skips the sticky `headSx`\n // treatment: sticking both header rows at the same `top` would\n // overlap them, so only the sortable header row pins.\n <TableRow>\n {expandActive && <TableCell padding=\"checkbox\" />}\n {selection && <TableCell padding=\"checkbox\" />}\n {groupRow.map((cell) => (\n <TableCell\n key={cell.key}\n colSpan={cell.span}\n sx={{ textAlign: \"center\", fontWeight: 600 }}\n >\n {cell.label}\n </TableCell>\n ))}\n {showActions && <TableCell />}\n </TableRow>\n )}\n <TableRow>\n {expandActive && (\n <TableCell\n padding=\"checkbox\"\n sx={edgeHeadSx(\"start\", hasStartPin)}\n />\n )}\n {selection && (\n <TableCell\n padding=\"checkbox\"\n sx={edgeHeadSx(\"start\", hasStartPin, selectionLead)}\n >\n <Checkbox\n slotProps={{ input: { \"aria-label\": labels.selectAll } }}\n checked={selection.headerState === \"all\"}\n indeterminate={selection.headerState === \"some\"}\n onChange={selection.toggleAll}\n />\n </TableCell>\n )}\n {columns.map((column) => {\n const headerCellProps = table.getHeaderCellProps(column);\n // Core reports aria-sort=\"none\" for sortable-but-inactive\n // columns so screen readers announce them as sortable — and it\n // is chain-aware, covering every multi-sort level too.\n const ariaSort = headerCellProps[\"aria-sort\"] as\n | \"ascending\"\n | \"descending\"\n | \"none\"\n | undefined;\n const active =\n ariaSort === \"ascending\" || ariaSort === \"descending\";\n // 1-based multi-sort chain position, when the column is in it.\n const sortIndex = headerCellProps[\"data-sort-index\"];\n return (\n <TableCell\n key={column.key}\n aria-sort={ariaSort}\n data-sort-index={sortIndex}\n sx={headCellSx(column)}\n >\n {column.sortable ? (\n <TableSortLabel\n active={active}\n direction={ariaSort === \"descending\" ? \"desc\" : \"asc\"}\n // Core's handler, with the REAL click event passed\n // through: it reads `shiftKey` to chain the column when\n // `multiSort` is on, else single-sorts as before.\n onClick={table.getSortButtonProps(column).onClick}\n >\n {column.header}\n {sortIndex !== undefined && (\n <Box component=\"span\" sx={{ fontSize: 10, ml: 0.5 }}>\n {sortIndex}\n </Box>\n )}\n </TableSortLabel>\n ) : (\n column.header\n )}\n {setWidth && (\n <Box\n component=\"span\"\n sx={RESIZE_HANDLE_SX}\n {...columnResizeHandleProps(\n column.key,\n setWidth,\n `${resizeLabel}: ${\n typeof column.header === \"string\"\n ? column.header\n : column.key\n }`\n )}\n />\n )}\n </TableCell>\n );\n })}\n {showActions && (\n <TableCell\n sx={{ ...edgeHeadSx(\"end\", stickActions), textAlign: \"end\" }}\n >\n {labels.actions}\n </TableCell>\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {paddingTop > 0 && (\n <TableRow aria-hidden>\n <TableCell\n colSpan={columnSpan}\n sx={{ height: paddingTop, p: 0 }}\n />\n </TableRow>\n )}\n {entries.map(({ row, index, key }) => {\n const id = getRowId(row);\n return (\n <DesktopRow\n key={key}\n row={row}\n index={index}\n selected={selection?.isSelected(id) ?? false}\n expanded={isExpanded ? isExpanded(id) : false}\n columns={columns}\n sx={rowSx}\n columnSpan={columnSpan}\n size={size}\n dir={dir}\n className={rowClassName?.(row, index)}\n hasSelection={Boolean(selection)}\n hasExpansion={expandActive}\n showActions={showActions}\n selectRowLabel={labels.selectRow}\n cancelLabel={labels.cancel}\n expandLabel={labels.expandRow}\n collapseLabel={labels.collapseRow}\n id={id}\n rowActions={rowActions}\n confirm={confirm}\n renderRowDetail={renderRowDetail}\n onToggleSelect={onToggleSelect}\n onToggleExpand={onToggleExpand}\n onRowClick={onRowClick}\n prefetch={prefetch}\n measureElement={measureElement}\n />\n );\n })}\n {paddingBottom > 0 && (\n <TableRow aria-hidden>\n <TableCell\n colSpan={columnSpan}\n sx={{ height: paddingBottom, p: 0 }}\n />\n </TableRow>\n )}\n </TableBody>\n {summaryCells && (\n <TableFooter>\n <TableRow>\n {expandActive && <TableCell padding=\"checkbox\" />}\n {selection && <TableCell padding=\"checkbox\" />}\n {columns.map((column) => (\n // One cell per column keeps the summary aligned under its\n // column; keys absent from the result render empty cells.\n <TableCell\n key={column.key}\n sx={{ textAlign: muiAlign(column.align) }}\n >\n {summaryCells[column.key]}\n </TableCell>\n ))}\n {showActions && <TableCell />}\n </TableRow>\n </TableFooter>\n )}\n </Table>\n </Box>\n );\n}\n\nfunction mobileLabel<TRow>(column: ColumnDef<TRow>): string {\n return (\n column.mobileLabel ??\n (typeof column.header === \"string\" ? column.header : column.key)\n );\n}\n\n/** Mobile MUI card list. */\nexport function MobileCards<TRow>({\n table,\n rows,\n rowActions,\n confirm,\n getRowId,\n size,\n dir,\n onRowClick,\n rowClassName,\n renderRowDetail,\n summaryRow,\n expansion,\n rowEntries,\n paddingTop = 0,\n paddingBottom = 0,\n measureElement,\n}: Readonly<SharedProps<TRow>>) {\n const { columns, selection, labels } = table;\n const entries = resolveVirtualRows(rows, getRowId, rowEntries);\n const compact = size === \"small\";\n // Expansion is active only when BOTH halves arrived (the chrome supplies\n // `expansion` exactly when `renderRowDetail` is set).\n const expand = expansion && renderRowDetail ? expansion : undefined;\n // The summary renders as a final card. Header groups and multi-sort are\n // desktop-only concerns: cards have no column grid for a group to span and\n // no clickable headers to shift-click.\n const summaryCells = summaryRow?.(rows);\n return (\n <Stack\n spacing={compact ? 1 : 1.5}\n role=\"list\"\n aria-label={table.getTableProps()[\"aria-label\"]}\n >\n {paddingTop > 0 && <Box aria-hidden sx={{ height: paddingTop }} />}\n {entries.map(({ row, index, key }) => {\n const id = getRowId(row);\n return (\n <Card\n key={key}\n ref={measureElement}\n data-index={index}\n variant=\"outlined\"\n role=\"listitem\"\n className={rowClassName?.(row, index)}\n {...rowClickProps(row, onRowClick)}\n >\n <CardContent\n sx={\n compact ? { p: 1.25, \"&:last-child\": { pb: 1.25 } } : undefined\n }\n >\n {selection && (\n <Checkbox\n slotProps={{ input: { \"aria-label\": labels.selectRow } }}\n checked={selection.isSelected(id)}\n onChange={() => selection.toggle(id)}\n />\n )}\n {expand && (\n <ExpandToggle\n id={id}\n expanded={expand.isExpanded(id)}\n onToggle={expand.toggle}\n dir={dir}\n expandLabel={labels.expandRow}\n collapseLabel={labels.collapseRow}\n />\n )}\n {columns.map((column) => (\n <Box key={column.key} sx={{ mb: compact ? 0.5 : 1 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: \"block\" }}\n >\n {mobileLabel(column)}\n </Typography>\n {/* Cells are arbitrary ReactNode (often block elements) —\n a <p> wrapper would be invalid HTML. */}\n <Typography component=\"div\" variant=\"body2\">\n {column.Cell ? (\n <column.Cell row={row} rowIndex={index} />\n ) : (\n column.accessor?.(row)\n )}\n </Typography>\n </Box>\n ))}\n {rowActions && rowActions.length > 0 && (\n <RowActionButtons\n row={row}\n actions={rowActions}\n confirm={confirm}\n cancelLabel={labels.cancel}\n />\n )}\n {expand?.isExpanded(id) && (\n // Inside the card — and therefore inside the measured\n // element — so virtualization keeps accurate card heights.\n <Box sx={{ mt: 1 }}>{renderRowDetail!(row)}</Box>\n )}\n </CardContent>\n </Card>\n );\n })}\n {summaryCells && (\n <Card variant=\"outlined\" role=\"listitem\">\n <CardContent\n sx={compact ? { p: 1.25, \"&:last-child\": { pb: 1.25 } } : undefined}\n >\n {columns.map((column) => {\n const value = summaryCells[column.key];\n // Unlike the desktop footer, a card has no columns to keep\n // aligned, so columns without a summary are simply skipped.\n if (value === undefined) return null;\n return (\n <Box key={column.key} sx={{ mb: compact ? 0.5 : 1 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{ display: \"block\" }}\n >\n {mobileLabel(column)}\n </Typography>\n <Typography component=\"div\" variant=\"body2\">\n {value}\n </Typography>\n </Box>\n );\n })}\n </CardContent>\n </Card>\n )}\n {paddingBottom > 0 && <Box aria-hidden sx={{ height: paddingBottom }} />}\n </Stack>\n );\n}\n","import type { RowAction, UseColumnLayoutResult } from \"@adapttable/core\";\nimport {\n ACTIONS_COLUMN_KEY,\n isDeclarativeFilters,\n resolveLabels,\n useChromeBodyData,\n useChromeScrollReset,\n useFilterTriggerToggle,\n useTableChrome,\n useTableData,\n} from \"@adapttable/core\";\nimport {\n Box,\n Button,\n LinearProgress,\n Paper,\n Stack,\n Typography,\n} from \"@mui/material\";\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\n\nimport { AutoFilterForm } from \"./components/AutoFilterForm\";\nimport {\n BulkBar,\n Chips,\n ErrorState,\n FilterDrawer,\n Footer,\n LoadingState,\n Toolbar,\n} from \"./components/chrome\";\nimport { ColumnMenu } from \"./components/ColumnMenu\";\nimport { SavedViewsMenu } from \"./components/SavedViewsMenu\";\nimport { DesktopTable, MobileCards } from \"./components/tables\";\nimport type { DataTableProps } from \"./types\";\n\n/**\n * Map row density to MUI's table `size`, independent of column pinning. An\n * explicit `size` prop still wins for backward compatibility.\n */\nfunction tableSize(\n size: \"small\" | \"medium\" | undefined,\n density: \"comfortable\" | \"compact\" | undefined\n): \"small\" | \"medium\" {\n if (size) return size;\n return density === \"compact\" ? \"small\" : \"medium\";\n}\n\n/** The width setter only when column resize is enabled (opt-in). */\nfunction resizeSetter(\n enabled: boolean | undefined,\n setWidth: (key: string, width: number) => void\n): ((key: string, width: number) => void) | undefined {\n return enabled ? setWidth : undefined;\n}\n\n/**\n * The injected actions column is first-class in column management: the\n * layout state treats keys opaquely, so the reserved \"actions\" key hides and\n * end-pins like any data column. Hiding strips `rowActions` BEFORE the\n * renderers, so the column, its pin lead, and the colSpans all disappear\n * consistently (desktop and mobile alike). `actionsPinned` reports the\n * Columns-menu end pin — only meaningful while the column renders.\n */\nfunction resolveActionsColumn<TRow>(\n declared: RowAction<TRow>[] | undefined,\n layout: UseColumnLayoutResult<TRow>\n): {\n hasRowActions: boolean;\n rowActions: RowAction<TRow>[] | undefined;\n actionsPinned: boolean;\n} {\n const hasRowActions = (declared?.length ?? 0) > 0;\n const rowActions =\n hasRowActions && !layout.isHidden(ACTIONS_COLUMN_KEY)\n ? declared\n : undefined;\n const actionsPinned =\n rowActions !== undefined &&\n layout.state.pinned[ACTIONS_COLUMN_KEY] === \"end\";\n return { hasRowActions, rowActions, actionsPinned };\n}\n\n/**\n * Resolve the data tier (`source` > `data` + `onQueryChange` > `data`) and\n * the filter content, then overlay them on the caller's props: caller JSX\n * filters pass through; the declarative array becomes the auto-built\n * {@link AutoFilterForm} (or nothing, when no definitions resolved); the\n * runtime's chip-label resolvers merge under any caller overrides.\n */\nfunction useChromeProps<TRow>(props: Readonly<DataTableProps<TRow>>) {\n const { source, runtime } = useTableData<TRow>({\n locale: props.locale,\n source: props.source,\n data: props.data,\n total: props.total,\n loading: props.loading,\n onQueryChange: props.onQueryChange,\n columns: props.columns,\n filters: props.filters,\n adapter: props.urlSync === false ? undefined : props.urlAdapter,\n enabled: props.urlSync,\n urlKey: props.urlKey,\n });\n let filtersNode: ReactNode;\n // Column-level `filter` shorthands alone must still render the auto form —\n // only explicit JSX takes over the drawing.\n if (isDeclarativeFilters(props.filters) || props.filters === undefined) {\n filtersNode =\n runtime.defs.length > 0 ? (\n <AutoFilterForm\n defs={runtime.defs}\n source={source}\n labels={resolveLabels(props.labels)}\n />\n ) : undefined;\n } else {\n filtersNode = props.filters;\n }\n return {\n ...props,\n source,\n filters: filtersNode,\n filterLabels: { ...runtime.filterLabels, ...props.filterLabels },\n };\n}\n\n/**\n * Batteries-included Material UI data table. Drop in `columns`, `data` (or\n * `data` + `onQueryChange` for server fetching, or a full `source`), and a\n * `rowKey` for a fully styled, sortable, filterable, paginated MUI table\n * with selection, bulk actions, RTL, and dark mode — a free DataGrid-style\n * experience on the headless `@adapttable/core` engine. Declarative\n * `filters` (and column `filter` shorthands) render an auto-built form.\n *\n * @typeParam TRow - The row type.\n */\nexport function DataTable<TRow>(props: Readonly<DataTableProps<TRow>>) {\n const { slots, className } = props;\n const size = tableSize(props.size, props.density);\n const { filtersMode = \"popover\" } = props;\n const chromeProps = useChromeProps(props);\n const { source, filters: filtersNode } = chromeProps;\n const c = useTableChrome<TRow>(chromeProps);\n const { table, confirm, getRowId } = c;\n const { labels } = table;\n const [filtersOpen, setFiltersOpen] = useState(false);\n const filtersTrigger = useFilterTriggerToggle(filtersOpen, setFiltersOpen);\n const rootRef = useRef<HTMLDivElement>(null);\n useChromeScrollReset(rootRef, c, chromeProps);\n const { virtualization, loadMoreRef, canLoadMore, virtualScrollRef } =\n useChromeBodyData(c, chromeProps);\n const { hasRowActions, rowActions, actionsPinned } = resolveActionsColumn(\n props.rowActions,\n c.columnLayout\n );\n const columnMenu = props.enableColumnMenu && !c.isMobile && (\n <ColumnMenu\n allColumns={c.allColumns}\n layout={c.columnLayout}\n labels={labels}\n hasRowActions={hasRowActions}\n />\n );\n // Saved views capture the table's own URL params, so the menu defaults to\n // the table's URL backend + namespace (an explicit option still wins).\n const savedViewsMenu = props.savedViews && (\n <SavedViewsMenu\n options={{\n adapter: props.urlAdapter,\n urlKey: props.urlKey,\n ...props.savedViews,\n }}\n labels={labels}\n />\n );\n\n let body: React.ReactNode;\n if (c.body === \"skeleton\") {\n body = slots?.skeleton ?? (\n <LoadingState\n rows={props.skeletonRows ?? source.limit}\n columns={table.columns.length}\n loadingLabel={labels.loading}\n />\n );\n } else if (c.body === \"empty\") {\n body = slots?.empty ?? (\n <Stack role=\"status\" spacing={1.5} sx={{ py: 6, alignItems: \"center\" }}>\n <Typography color=\"text.secondary\" align=\"center\">\n {c.emptyVariant === \"noResults\" ? labels.noResults : labels.noData}\n </Typography>\n {c.emptyVariant === \"noResults\" && (\n <Button variant=\"outlined\" size=\"small\" onClick={c.clearFilters}>\n {labels.clearAll}\n </Button>\n )}\n </Stack>\n );\n } else if (c.body === \"mobile\") {\n body = (\n <MobileCards\n table={table}\n rows={source.rows}\n rowActions={rowActions}\n confirm={confirm}\n getRowId={getRowId}\n size={size}\n dir={props.dir}\n onRowClick={props.onRowClick}\n rowClassName={props.rowClassName}\n renderRowDetail={props.renderRowDetail}\n summaryRow={props.summaryRow}\n expansion={c.detail?.expansion}\n rowEntries={virtualization.enabled ? virtualization.rows : undefined}\n paddingTop={virtualization.paddingTop}\n paddingBottom={virtualization.paddingBottom}\n measureElement={virtualization.measureElement}\n />\n );\n } else {\n body = (\n <DesktopTable\n table={table}\n rows={source.rows}\n rowActions={rowActions}\n actionsPinned={actionsPinned}\n confirm={confirm}\n getRowId={getRowId}\n size={size}\n dir={props.dir}\n prefetch={props.prefetch}\n onRowClick={props.onRowClick}\n rowClassName={props.rowClassName}\n renderRowDetail={props.renderRowDetail}\n summaryRow={props.summaryRow}\n expansion={c.detail?.expansion}\n rowEntries={virtualization.enabled ? virtualization.rows : undefined}\n paddingTop={virtualization.paddingTop}\n paddingBottom={virtualization.paddingBottom}\n measureElement={virtualization.measureElement}\n stickyHeader={props.stickyHeader}\n stickyTop={props.stickyTop}\n pinOffset={c.columnLayout.pinOffset}\n maxHeight={props.maxHeight}\n virtualScrollRef={virtualScrollRef}\n setWidth={resizeSetter(props.resizableColumns, c.columnLayout.setWidth)}\n columnWidths={c.columnLayout.state.widths}\n resizeLabel={labels.resizeColumn}\n />\n );\n }\n\n return (\n <Paper\n ref={rootRef}\n variant=\"outlined\"\n dir={props.dir}\n className={className}\n aria-busy={c.isRefreshing || undefined}\n sx={{ p: 1.5 }}\n >\n <Stack spacing={1.5}>\n <Toolbar\n table={table}\n hideSearch={props.hideSearch}\n searchPlaceholder={props.searchPlaceholder}\n sortByOptions={props.sortByOptions}\n customToolbar={\n <>\n {savedViewsMenu}\n {props.toolbar}\n </>\n }\n hasFilters={Boolean(filtersNode)}\n activeFilterCount={c.activeFilterCount}\n showRowsPerPage={canLoadMore}\n filtersMode={filtersMode}\n filters={filtersNode}\n filtersOpen={filtersOpen}\n onToggleFilters={filtersTrigger.onClick}\n onFiltersTriggerPointerDown={filtersTrigger.onPointerDown}\n onCloseFilters={() => setFiltersOpen(false)}\n onClearFilters={c.clearFilters}\n dir={props.dir}\n columnMenu={columnMenu}\n />\n {c.isRefreshing && <LinearProgress aria-label={labels.loading} />}\n <Chips\n chips={c.mergedChips}\n onClearAll={c.clearFilters}\n labels={labels}\n />\n {table.selection && props.bulkActions && (\n <BulkBar\n selection={table.selection}\n total={source.total}\n bulkActions={props.bulkActions}\n confirm={confirm}\n labels={labels}\n />\n )}\n {source.error ? (\n <ErrorState\n error={source.error}\n labels={labels}\n onRetry={source.refetch ? () => void source.refetch?.() : undefined}\n />\n ) : (\n body\n )}\n {canLoadMore && source.hasNextPage && (\n <Box\n ref={loadMoreRef}\n sx={{ display: \"flex\", justifyContent: \"center\", py: 1 }}\n >\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={source.isFetchingNextPage}\n onClick={() => source.fetchNextPage()}\n >\n {labels.loadMore}\n </Button>\n </Box>\n )}\n {c.showFooter && (\n <Footer\n pagination={table.pagination}\n total={source.total}\n limit={source.limit}\n setPage={source.setPage}\n setLimit={source.setLimit}\n labels={labels}\n />\n )}\n </Stack>\n {filtersNode && filtersMode === \"drawer\" && (\n <FilterDrawer\n open={filtersOpen}\n onClose={() => setFiltersOpen(false)}\n filters={filtersNode}\n activeFilterCount={c.activeFilterCount}\n onClearFilters={c.clearFilters}\n labels={labels}\n dir={props.dir}\n />\n )}\n </Paper>\n );\n}\n"],"mappings":"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"}