@adapttable/mui 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["Button","Popover","Box","Stack","IconButton","Divider","TextField","TextField","FormControl","FormLabel","FormGroup","CircularProgress","FormControlLabel","Checkbox","RANGE_SUFFIXES","RANGE_OP_LABEL_KEYS","RANGE_OPS","Stack","Popper","ClickAwayListener","Paper","Box","Stack","Typography","Button","Badge","Button","Stack","TextField","InputAdornment","MenuItem","Chip","Typography","Tooltip","Pagination","Alert","Box","Skeleton","Drawer","IconButton","EyeIcon","Typography","PinIcon","ACTIONS_COLUMN_KEY","Divider","Stack","Box","Button","Popover","GripIcon","Box","IconButton","Stack","Tooltip","Typography","TableRow","TableCell","Checkbox","PIN_Z","Table","TableHead","TableSortLabel","TableBody","TableFooter","Card","CardContent","ACTIONS_COLUMN_KEY","Stack","Typography","Button","Paper","LinearProgress","Box"],"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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"}