updates on the bookings page and updated ai and more thngs

This commit is contained in:
2026-09-11 11:20:38 +05:30
parent 1caa7b71a9
commit 49ee0c5076
40 changed files with 5796 additions and 359 deletions

View File

@@ -42,6 +42,7 @@ export function DataTable({
/* Selection — pass `selectedIds` to enable */
selectedIds,
onSelectionChange,
selectAllPages = true,
/* Pagination — pass `pageSize` to enable */
pageSize: initialPageSize,
@@ -138,15 +139,22 @@ export function DataTable({
/* ── Selection ───────────────────────────────────────────────────────── */
const selectable = selectedIds !== undefined;
const selected = React.useMemo(() => new Set(selectedIds || []), [selectedIds]);
const allRowIds = React.useMemo(
() => sortedRows.map((row, i) => getRowId(row, i)),
[sortedRows, getRowId]
);
const pageIds = visibleRows.map((row, i) => getRowId(row, i));
const allOnPageSelected = pageIds.length > 0 && pageIds.every((id) => selected.has(id));
const someOnPageSelected = pageIds.some((id) => selected.has(id));
const targetIds = selectAllPages && !serverPaginated ? allRowIds : pageIds;
const allTargetSelected = targetIds.length > 0 && targetIds.every((id) => selected.has(id));
const someTargetSelected = targetIds.some((id) => selected.has(id));
const toggleAll = () => {
if (allOnPageSelected) {
onSelectionChange?.(selectedIds.filter((id) => !pageIds.includes(id)));
if (allTargetSelected) {
onSelectionChange?.(selectedIds.filter((id) => !targetIds.includes(id)));
} else {
onSelectionChange?.([...new Set([...selectedIds, ...pageIds])]);
onSelectionChange?.([...new Set([...selectedIds, ...targetIds])]);
}
};
@@ -202,9 +210,13 @@ export function DataTable({
{selectable && (
<th scope="col" className={cn('w-10 px-4', cellPad)}>
<Checkbox
checked={allOnPageSelected ? true : someOnPageSelected ? 'indeterminate' : false}
checked={allTargetSelected ? true : someTargetSelected ? 'indeterminate' : false}
onCheckedChange={toggleAll}
aria-label="Select all rows on this page"
aria-label={
selectAllPages && !serverPaginated
? 'Select all rows'
: 'Select all rows on this page'
}
/>
</th>
)}