@rsc-kit/press 0.30.49 → 0.30.51

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":"data-table.js","sourceRoot":"","sources":["../../src/shadcn/data-table.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useMemo, useRef, useState, useTransition } from 'react'\nimport type { ReactNode } from 'react'\nimport {\n type ColumnDef,\n type ColumnVisibilityState,\n type PaginationState,\n type SortingState,\n columnVisibilityFeature,\n createPaginatedRowModel,\n createSortedRowModel,\n rowPaginationFeature,\n rowSortingFeature,\n tableFeatures,\n useTable,\n} from '@tanstack/react-table'\nimport Link from '@rsc-kit/core/Link'\nimport { visit } from '@rsc-kit/core/router'\nimport { ArrowDown, ArrowUp, ArrowUpDown, ChevronLeft, ChevronRight, Columns3, MoreHorizontal, Pencil, Search, Trash2, X } from 'lucide-react'\nimport type { TableBulkAction, TableProps, TableQuery, TableRowData } from '../admin/theme.js'\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from './components/ui/alert-dialog.js'\nimport { Button } from './components/ui/button.js'\nimport { Checkbox } from './components/ui/checkbox.js'\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from './components/ui/dropdown-menu.js'\nimport { Input } from './components/ui/input.js'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './components/ui/select.js'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './components/ui/table.js'\n\n/** What is asked before it happens: one row's delete, or an action over the ticked rows. */\ntype Confirming = { row: TableRowData } | { action: TableBulkAction; ids: string[] }\n\nconst features = tableFeatures({\n rowSortingFeature,\n rowPaginationFeature,\n columnVisibilityFeature,\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n})\n\ntype Features = typeof features\n\nconst ALL = '__all__'\n\n/**\n * Every resource's table. One component for both modes, so a table looks and\n * behaves the same wherever its rows are searched:\n *\n * server the url is the state. Typing, a filter, a header and the pager\n * each visit a url, the page asks the source for one page, and a\n * link works with no javascript and can be shared.\n * client every row arrived at once; search, filters, sort and the pager\n * happen here, with no request.\n */\nexport function DataTable({\n mode,\n href,\n columns,\n rows,\n total,\n perPage,\n query,\n filters,\n noun,\n bulk,\n}: TableProps) {\n const server = mode === 'server'\n const [q, setQ] = useState(query.q)\n const [chosen, setChosen] = useState<Record<string, string>>(query.filters)\n const [sorting, setSorting] = useState<SortingState>(query.sort ? [{ id: query.sort, desc: query.dir === 'desc' }] : [])\n const [columnVisibility, setColumnVisibility] = useState<ColumnVisibilityState>(() =>\n Object.fromEntries(columns.filter((column) => !column.visible).map((column) => [column.key, false])),\n )\n const [pagination, setPagination] = useState<PaginationState>({ pageIndex: server ? query.page - 1 : 0, pageSize: perPage })\n const [confirming, setConfirming] = useState<Confirming | null>(null)\n const [deleting, startDelete] = useTransition()\n const [selected, setSelected] = useState<ReadonlySet<string>>(() => new Set())\n const [running, startRun] = useTransition()\n\n // New rows - another page, a search, the table after an action - start\n // with nothing ticked: a selection is of rows the visitor can see.\n useEffect(() => setSelected(new Set()), [rows])\n const [, startVisit] = useTransition()\n\n // Server mode: the url this state names. Empty values are left out, so a\n // cleared search is the plain list url and not ?q=.\n const urlFor = (changes: Partial<Omit<TableQuery, 'filters'>> & { filters?: Record<string, string> }) => {\n const next = { ...query, q, filters: chosen, ...changes }\n const search = new URLSearchParams()\n\n if (next.q) search.set('q', next.q)\n if (next.sort) search.set('sort', next.sort)\n if (next.sort && next.dir === 'desc') search.set('dir', 'desc')\n if (next.page > 1) search.set('page', String(next.page))\n for (const [key, value] of Object.entries(next.filters)) if (value) search.set(key, value)\n\n const qs = search.toString()\n\n return qs ? `${href}?${qs}` : href\n }\n\n const go = (url: string) => startVisit(() => void visit(url as never, { replace: true }))\n\n // Typing searches after a pause, not per keystroke; the page resets to the first.\n const typed = useRef(false)\n\n useEffect(() => {\n if (!server || !typed.current) return\n\n const timer = setTimeout(() => go(urlFor({ q, page: 1 })), 300)\n\n return () => clearTimeout(timer)\n }, [q])\n\n // Client mode: search and filters here, before the table sorts and pages.\n const visible = useMemo(() => {\n if (server) return rows\n\n const needle = q.trim().toLowerCase()\n const searchable = columns.filter((column) => column.searchable).map((column) => column.key)\n\n return rows.filter(\n (row) =>\n Object.entries(chosen).every(([key, value]) => !value || String(row.values[key]) === value) &&\n (!needle || searchable.some((key) => String(row.values[key] ?? '').toLowerCase().includes(needle))),\n )\n }, [server, rows, q, chosen, columns])\n\n const columnDefs = useMemo<ColumnDef<Features, TableRowData>[]>(\n () =>\n columns.map((column) => ({\n id: column.key,\n accessorFn: (row: TableRowData) => row.values[column.key],\n header: column.label,\n cell: ({ row }: { row: { original: TableRowData } }) => row.original.cells[column.key],\n enableSorting: column.sortable,\n enableHiding: true,\n sortFn: (a, b, id) => compare(a.getValue(id), b.getValue(id)),\n })) as ColumnDef<Features, TableRowData>[],\n [columns],\n )\n\n const table = useTable({\n features,\n data: visible,\n columns: columnDefs,\n getRowId: (row: TableRowData) => row.id,\n manualSorting: server,\n manualPagination: server,\n ...(server ? { pageCount: Math.max(1, Math.ceil(total / perPage)) } : {}),\n onSortingChange: setSorting,\n onPaginationChange: setPagination,\n onColumnVisibilityChange: setColumnVisibility,\n state: { sorting, pagination, columnVisibility },\n })\n\n const onPage = table.getRowModel().rows.map((row) => row.id)\n const ticked = onPage.filter((id) => selected.has(id))\n const allTicked = onPage.length > 0 && ticked.length === onPage.length\n\n const tick = (ids: string[], on: boolean) =>\n setSelected((current) => {\n const next = new Set(current)\n\n for (const id of ids) on ? next.add(id) : next.delete(id)\n\n return next\n })\n\n const runBulk = (action: TableBulkAction, ids: string[]) =>\n startRun(async () => {\n await bulk?.run(action.name, ids)\n setSelected(new Set())\n setConfirming(null)\n })\n\n const searchable = columns.some((column) => column.searchable)\n const hasActions = rows.some((row) => row.edit || row.remove)\n const pageCount = server ? Math.max(1, Math.ceil(total / perPage)) : Math.max(1, table.getPageCount())\n const page = server ? query.page : pagination.pageIndex + 1\n const count = server ? total : visible.length\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {searchable && (\n // A form, so Enter searches and a server-mode search works before\n // the page has javascript: it is a GET of the list url.\n <form\n action={href}\n method=\"get\"\n className=\"relative w-full sm:max-w-xs\"\n onSubmit={(event) => {\n event.preventDefault()\n if (server) go(urlFor({ q, page: 1 }))\n }}\n >\n <Search className=\"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n name=\"q\"\n type=\"search\"\n placeholder={`Search ${noun.many.toLowerCase()}…`}\n aria-label={`Search ${noun.many.toLowerCase()}`}\n className=\"pl-8\"\n value={q}\n onChange={(event) => {\n typed.current = true\n setQ(event.target.value)\n if (!server) table.setPageIndex(0)\n }}\n />\n </form>\n )}\n {filters.map((filter) => (\n <Select\n key={filter.key}\n items={[{ value: ALL, label: `All ${filter.label.toLowerCase()}` }, ...filter.options]}\n value={chosen[filter.key] || ALL}\n onValueChange={(value) => {\n const next = { ...chosen, [filter.key]: value === ALL || value === null ? '' : String(value) }\n\n setChosen(next)\n if (server) go(urlFor({ filters: next, page: 1 }))\n else table.setPageIndex(0)\n }}\n >\n <SelectTrigger aria-label={filter.label} className=\"w-full sm:w-44\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>All {filter.label.toLowerCase()}</SelectItem>\n {filter.options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ))}\n <DropdownMenu>\n <DropdownMenuTrigger render={<Button variant=\"outline\" className=\"ml-auto\" />}>\n <Columns3 />\n <span className=\"hidden sm:inline\">Columns</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-44\">\n <DropdownMenuGroup>\n <DropdownMenuLabel>Show columns</DropdownMenuLabel>\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {columns.find((candidate) => candidate.key === column.id)?.label}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"overflow-hidden rounded-lg border\">\n <Table>\n <TableHeader className=\"bg-muted/50\">\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {bulk && (\n <TableHead className=\"w-10\">\n <Checkbox\n aria-label={`Select every ${noun.one.toLowerCase()} on this page`}\n checked={allTicked}\n indeterminate={ticked.length > 0 && !allTicked}\n disabled={onPage.length === 0}\n onCheckedChange={() => tick(onPage, !allTicked)}\n />\n </TableHead>\n )}\n {group.headers.map((header) => {\n const column = header.column\n const label = columns.find((candidate) => candidate.key === column.id)?.label\n const sorted = server ? (query.sort === column.id ? query.dir : false) : column.getIsSorted()\n const Arrow = sorted === 'asc' ? ArrowUp : sorted === 'desc' ? ArrowDown : ArrowUpDown\n\n return (\n <TableHead key={header.id} aria-sort={sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : undefined}>\n {!column.getCanSort() ? (\n label\n ) : server ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2.5 h-8\"\n nativeButton={false}\n render={<Link href={urlFor({ sort: column.id, dir: sorted === 'asc' ? 'desc' : 'asc', page: 1 }) as never} replace />}\n >\n {label}\n <Arrow className={sorted ? undefined : 'text-muted-foreground/60'} />\n </Button>\n ) : (\n <Button variant=\"ghost\" size=\"sm\" className=\"-ml-2.5 h-8\" onClick={() => column.toggleSorting(sorted === 'asc')}>\n {label}\n <Arrow className={sorted ? undefined : 'text-muted-foreground/60'} />\n </Button>\n )}\n </TableHead>\n )\n })}\n {hasActions && (\n <TableHead className=\"w-12\">\n <span className=\"sr-only\">Actions</span>\n </TableHead>\n )}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={selected.has(row.id) ? 'selected' : undefined}>\n {bulk && (\n <TableCell>\n <Checkbox aria-label=\"Select row\" checked={selected.has(row.id)} onCheckedChange={(on) => tick([row.id], on)} />\n </TableCell>\n )}\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n <table.FlexRender cell={cell} />\n </TableCell>\n ))}\n {hasActions && (\n <TableCell className=\"text-right\">\n <RowActions row={row.original} onDelete={() => setConfirming({ row: row.original })} />\n </TableCell>\n )}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length + (hasActions ? 1 : 0) + (bulk ? 1 : 0)} className=\"h-24 text-center text-muted-foreground\">\n No {noun.many.toLowerCase()} found.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex items-center justify-between gap-2\">\n {/* The ticked rows' actions take the count's place, below the table:\n above it they would push the rows down under the next click. */}\n {bulk && ticked.length > 0 ? (\n <div role=\"toolbar\" aria-label=\"Selected rows\" className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-medium\">{ticked.length} selected</span>\n {bulk.actions.map((action) => (\n <Button\n key={action.name}\n size=\"sm\"\n variant={action.destructive ? 'destructive' : 'outline'}\n disabled={running}\n onClick={() => (action.destructive ? setConfirming({ action, ids: ticked }) : runBulk(action, ticked))}\n >\n {action.name === 'delete' && <Trash2 />}\n {action.label}\n </Button>\n ))}\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Clear selection\" disabled={running} onClick={() => setSelected(new Set())}>\n <X />\n </Button>\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n {count} {count === 1 ? noun.one.toLowerCase() : noun.many.toLowerCase()}\n </p>\n )}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Page {page} of {pageCount}\n </span>\n {server ? (\n <>\n <Pager to={page > 1 ? urlFor({ page: page - 1 }) : null} label=\"Previous page\">\n <ChevronLeft />\n </Pager>\n <Pager to={page < pageCount ? urlFor({ page: page + 1 }) : null} label=\"Next page\">\n <ChevronRight />\n </Pager>\n </>\n ) : (\n <>\n <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Previous page\" disabled={!table.getCanPreviousPage()} onClick={() => table.previousPage()}>\n <ChevronLeft />\n </Button>\n <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Next page\" disabled={!table.getCanNextPage()} onClick={() => table.nextPage()}>\n <ChevronRight />\n </Button>\n </>\n )}\n </div>\n </div>\n\n <AlertDialog open={confirming !== null} onOpenChange={(open) => !open && !deleting && !running && setConfirming(null)}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{confirmTitle(confirming, noun)}</AlertDialogTitle>\n <AlertDialogDescription>\n {confirmDescription(confirming)}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={deleting || running}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n variant=\"destructive\"\n disabled={deleting || running}\n onClick={() => {\n if (confirming && 'ids' in confirming) return runBulk(confirming.action, confirming.ids)\n\n startDelete(async () => {\n await confirming?.row.remove?.()\n setConfirming(null)\n })\n }}\n >\n {confirming && 'ids' in confirming ? (running ? 'Working…' : confirming.action.label) : deleting ? 'Deleting…' : 'Delete'}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n )\n}\n\nfunction confirmTitle(confirming: Confirming | null, noun: { one: string; many: string }): string {\n if (!confirming || 'row' in confirming) return `Delete this ${noun.one.toLowerCase()}?`\n\n const { action, ids } = confirming\n const counted = `${ids.length} ${(ids.length === 1 ? noun.one : noun.many).toLowerCase()}`\n\n return action.name === 'delete' ? `Delete ${counted}?` : `${action.label}: ${counted}?`\n}\n\nfunction confirmDescription(confirming: Confirming | null): string {\n if (confirming && 'ids' in confirming && confirming.action.name !== 'delete') return 'This cannot be undone.'\n\n const many = confirming !== null && 'ids' in confirming && confirming.ids.length > 1\n\n return `${many ? 'They are' : 'It is'} removed for good. This cannot be undone.`\n}\n\nfunction Pager({ to, label, children }: { to: string | null; label: string; children: ReactNode }) {\n if (!to) {\n return (\n <Button variant=\"outline\" size=\"icon-sm\" aria-label={label} disabled>\n {children}\n </Button>\n )\n }\n\n return <Button variant=\"outline\" size=\"icon-sm\" aria-label={label} nativeButton={false} render={<Link href={to as never} replace />}>{children}</Button>\n}\n\nfunction RowActions({ row, onDelete }: { row: TableRowData; onDelete: () => void }) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger render={<Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Actions\" />}>\n <MoreHorizontal />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n {row.edit && (\n <DropdownMenuItem render={<Link href={row.edit as never} />}>\n <Pencil />\n Edit\n </DropdownMenuItem>\n )}\n {row.edit && row.remove && <DropdownMenuSeparator />}\n {row.remove && (\n <DropdownMenuItem variant=\"destructive\" onClick={onDelete}>\n <Trash2 />\n Delete\n </DropdownMenuItem>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction compare(a: unknown, b: unknown): number {\n if (a === b) return 0\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n if (typeof a === 'number' && typeof b === 'number') return a - b\n if (typeof a === 'boolean' && typeof b === 'boolean') return Number(a) - Number(b)\n\n return String(a).localeCompare(String(b), undefined, { numeric: true })\n}\n"]}
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../src/shadcn/data-table.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client'\n\nimport { useEffect, useMemo, useRef, useState, useTransition } from 'react'\nimport type { ReactNode } from 'react'\nimport {\n type ColumnDef,\n type ColumnVisibilityState,\n type PaginationState,\n type SortingState,\n columnVisibilityFeature,\n createPaginatedRowModel,\n createSortedRowModel,\n rowPaginationFeature,\n rowSortingFeature,\n tableFeatures,\n useTable,\n} from '@tanstack/react-table'\nimport Link from '@rsc-kit/core/Link'\nimport { visit } from '@rsc-kit/core/router'\nimport { ArrowDown, ArrowUp, ArrowUpDown, ChevronLeft, ChevronRight, Columns3, MoreHorizontal, Pencil, Search, Trash2, X } from 'lucide-react'\nimport type { TableBulkAction, TableProps, TableQuery, TableRowData } from '../admin/theme.js'\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from './components/ui/alert-dialog.js'\nimport { Button } from './components/ui/button.js'\nimport { Checkbox } from './components/ui/checkbox.js'\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from './components/ui/dropdown-menu.js'\nimport { Input } from './components/ui/input.js'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './components/ui/select.js'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './components/ui/table.js'\n\n/** What is asked before it happens: one row's delete, or an action over the ticked rows. */\ntype Confirming = { row: TableRowData } | { action: TableBulkAction; ids: string[] }\n\nconst features = tableFeatures({\n rowSortingFeature,\n rowPaginationFeature,\n columnVisibilityFeature,\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n})\n\ntype Features = typeof features\n\nconst ALL = '__all__'\n\n/**\n * Every resource's table. One component for both modes, so a table looks and\n * behaves the same wherever its rows are searched:\n *\n * server the url is the state. Typing, a filter, a header and the pager\n * each visit a url, the page asks the source for one page, and a\n * link works with no javascript and can be shared.\n * client every row arrived at once; search, filters, sort and the pager\n * happen here, with no request.\n */\nexport function DataTable({\n mode,\n href,\n columns,\n rows,\n total,\n cursors,\n perPage,\n query,\n filters,\n noun,\n bulk,\n}: TableProps) {\n const server = mode === 'server'\n const [q, setQ] = useState(query.q)\n const [chosen, setChosen] = useState<Record<string, string>>(query.filters)\n const [sorting, setSorting] = useState<SortingState>(query.sort ? [{ id: query.sort, desc: query.dir === 'desc' }] : [])\n const [columnVisibility, setColumnVisibility] = useState<ColumnVisibilityState>(() =>\n Object.fromEntries(columns.filter((column) => !column.visible).map((column) => [column.key, false])),\n )\n const [pagination, setPagination] = useState<PaginationState>({ pageIndex: server ? query.page - 1 : 0, pageSize: perPage })\n const [confirming, setConfirming] = useState<Confirming | null>(null)\n const [deleting, startDelete] = useTransition()\n const [selected, setSelected] = useState<ReadonlySet<string>>(() => new Set())\n const [running, startRun] = useTransition()\n\n // New rows - another page, a search, the table after an action - start\n // with nothing ticked: a selection is of rows the visitor can see.\n useEffect(() => setSelected(new Set()), [rows])\n const [, startVisit] = useTransition()\n\n // Server mode: the url this state names. Empty values are left out, so a\n // cleared search is the plain list url and not ?q=.\n const urlFor = (changes: Partial<Omit<TableQuery, 'filters'>> & { filters?: Record<string, string> }) => {\n const next = { ...query, q, filters: chosen, ...changes }\n const search = new URLSearchParams()\n\n if (next.q) search.set('q', next.q)\n if (next.sort) search.set('sort', next.sort)\n if (next.sort && next.dir === 'desc') search.set('dir', 'desc')\n if (next.page > 1) search.set('page', String(next.page))\n for (const [key, value] of Object.entries(next.filters)) if (value) search.set(key, value)\n\n const qs = search.toString()\n\n return qs ? `${href}?${qs}` : href\n }\n\n const go = (url: string) => startVisit(() => void visit(url as never, { replace: true }))\n\n // Typing searches after a pause, not per keystroke; the page resets to the first.\n const typed = useRef(false)\n\n useEffect(() => {\n if (!server || !typed.current) return\n\n const timer = setTimeout(() => go(urlFor({ q, page: 1 })), 300)\n\n return () => clearTimeout(timer)\n }, [q])\n\n // Client mode: search and filters here, before the table sorts and pages.\n const visible = useMemo(() => {\n if (server) return rows\n\n const needle = q.trim().toLowerCase()\n const searchable = columns.filter((column) => column.searchable).map((column) => column.key)\n\n return rows.filter(\n (row) =>\n Object.entries(chosen).every(([key, value]) => !value || String(row.values[key]) === value) &&\n (!needle || searchable.some((key) => String(row.values[key] ?? '').toLowerCase().includes(needle))),\n )\n }, [server, rows, q, chosen, columns])\n\n const columnDefs = useMemo<ColumnDef<Features, TableRowData>[]>(\n () =>\n columns.map((column) => ({\n id: column.key,\n accessorFn: (row: TableRowData) => row.values[column.key],\n header: column.label,\n cell: ({ row }: { row: { original: TableRowData } }) => row.original.cells[column.key],\n enableSorting: column.sortable,\n enableHiding: true,\n sortFn: (a, b, id) => compare(a.getValue(id), b.getValue(id)),\n })) as ColumnDef<Features, TableRowData>[],\n [columns],\n )\n\n const table = useTable({\n features,\n data: visible,\n columns: columnDefs,\n getRowId: (row: TableRowData) => row.id,\n manualSorting: server,\n manualPagination: server,\n ...(server ? { pageCount: Math.max(1, Math.ceil((total ?? 0) / perPage)) } : {}),\n onSortingChange: setSorting,\n onPaginationChange: setPagination,\n onColumnVisibilityChange: setColumnVisibility,\n state: { sorting, pagination, columnVisibility },\n })\n\n const onPage = table.getRowModel().rows.map((row) => row.id)\n const ticked = onPage.filter((id) => selected.has(id))\n const allTicked = onPage.length > 0 && ticked.length === onPage.length\n\n const tick = (ids: string[], on: boolean) =>\n setSelected((current) => {\n const next = new Set(current)\n\n for (const id of ids) on ? next.add(id) : next.delete(id)\n\n return next\n })\n\n const runBulk = (action: TableBulkAction, ids: string[]) =>\n startRun(async () => {\n await bulk?.run(action.name, ids)\n setSelected(new Set())\n setConfirming(null)\n })\n\n const searchable = columns.some((column) => column.searchable)\n const hasActions = rows.some((row) => row.edit || row.remove)\n const pageCount = server ? Math.max(1, Math.ceil((total ?? 0) / perPage)) : Math.max(1, table.getPageCount())\n const page = server ? query.page : pagination.pageIndex + 1\n // A list paged by cursor may not be counted: then it says nothing of how many.\n const count = server ? total : visible.length\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {searchable && (\n // A form, so Enter searches and a server-mode search works before\n // the page has javascript: it is a GET of the list url.\n <form\n action={href}\n method=\"get\"\n className=\"relative w-full sm:max-w-xs\"\n onSubmit={(event) => {\n event.preventDefault()\n if (server) go(urlFor({ q, page: 1 }))\n }}\n >\n <Search className=\"pointer-events-none absolute top-1/2 left-2.5 size-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n name=\"q\"\n type=\"search\"\n placeholder={`Search ${noun.many.toLowerCase()}…`}\n aria-label={`Search ${noun.many.toLowerCase()}`}\n className=\"pl-8\"\n value={q}\n onChange={(event) => {\n typed.current = true\n setQ(event.target.value)\n if (!server) table.setPageIndex(0)\n }}\n />\n </form>\n )}\n {filters.map((filter) => (\n <Select\n key={filter.key}\n items={[{ value: ALL, label: `All ${filter.label.toLowerCase()}` }, ...filter.options]}\n value={chosen[filter.key] || ALL}\n onValueChange={(value) => {\n const next = { ...chosen, [filter.key]: value === ALL || value === null ? '' : String(value) }\n\n setChosen(next)\n if (server) go(urlFor({ filters: next, page: 1 }))\n else table.setPageIndex(0)\n }}\n >\n <SelectTrigger aria-label={filter.label} className=\"w-full sm:w-44\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={ALL}>All {filter.label.toLowerCase()}</SelectItem>\n {filter.options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ))}\n <DropdownMenu>\n <DropdownMenuTrigger render={<Button variant=\"outline\" className=\"ml-auto\" />}>\n <Columns3 />\n <span className=\"hidden sm:inline\">Columns</span>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-44\">\n <DropdownMenuGroup>\n <DropdownMenuLabel>Show columns</DropdownMenuLabel>\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {columns.find((candidate) => candidate.key === column.id)?.label}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <div className=\"overflow-hidden rounded-lg border\">\n <Table>\n <TableHeader className=\"bg-muted/50\">\n {table.getHeaderGroups().map((group) => (\n <TableRow key={group.id}>\n {bulk && (\n <TableHead className=\"w-10\">\n <Checkbox\n aria-label={`Select every ${noun.one.toLowerCase()} on this page`}\n checked={allTicked}\n indeterminate={ticked.length > 0 && !allTicked}\n disabled={onPage.length === 0}\n onCheckedChange={() => tick(onPage, !allTicked)}\n />\n </TableHead>\n )}\n {group.headers.map((header) => {\n const column = header.column\n const label = columns.find((candidate) => candidate.key === column.id)?.label\n const sorted = server ? (query.sort === column.id ? query.dir : false) : column.getIsSorted()\n const Arrow = sorted === 'asc' ? ArrowUp : sorted === 'desc' ? ArrowDown : ArrowUpDown\n\n return (\n <TableHead key={header.id} aria-sort={sorted === 'asc' ? 'ascending' : sorted === 'desc' ? 'descending' : undefined}>\n {!column.getCanSort() ? (\n label\n ) : server ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2.5 h-8\"\n nativeButton={false}\n render={<Link href={urlFor({ sort: column.id, dir: sorted === 'asc' ? 'desc' : 'asc', page: 1 }) as never} replace />}\n >\n {label}\n <Arrow className={sorted ? undefined : 'text-muted-foreground/60'} />\n </Button>\n ) : (\n <Button variant=\"ghost\" size=\"sm\" className=\"-ml-2.5 h-8\" onClick={() => column.toggleSorting(sorted === 'asc')}>\n {label}\n <Arrow className={sorted ? undefined : 'text-muted-foreground/60'} />\n </Button>\n )}\n </TableHead>\n )\n })}\n {hasActions && (\n <TableHead className=\"w-12\">\n <span className=\"sr-only\">Actions</span>\n </TableHead>\n )}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={selected.has(row.id) ? 'selected' : undefined}>\n {bulk && (\n <TableCell>\n <Checkbox aria-label=\"Select row\" checked={selected.has(row.id)} onCheckedChange={(on) => tick([row.id], on)} />\n </TableCell>\n )}\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n <table.FlexRender cell={cell} />\n </TableCell>\n ))}\n {hasActions && (\n <TableCell className=\"text-right\">\n <RowActions row={row.original} onDelete={() => setConfirming({ row: row.original })} />\n </TableCell>\n )}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length + (hasActions ? 1 : 0) + (bulk ? 1 : 0)} className=\"h-24 text-center text-muted-foreground\">\n No {noun.many.toLowerCase()} found.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n <div className=\"flex items-center justify-between gap-2\">\n {/* The ticked rows' actions take the count's place, below the table:\n above it they would push the rows down under the next click. */}\n {bulk && ticked.length > 0 ? (\n <div role=\"toolbar\" aria-label=\"Selected rows\" className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-medium\">{ticked.length} selected</span>\n {bulk.actions.map((action) => (\n <Button\n key={action.name}\n size=\"sm\"\n variant={action.destructive ? 'destructive' : 'outline'}\n disabled={running}\n onClick={() => (action.destructive ? setConfirming({ action, ids: ticked }) : runBulk(action, ticked))}\n >\n {action.name === 'delete' && <Trash2 />}\n {action.label}\n </Button>\n ))}\n <Button size=\"icon-sm\" variant=\"ghost\" aria-label=\"Clear selection\" disabled={running} onClick={() => setSelected(new Set())}>\n <X />\n </Button>\n </div>\n ) : count === null ? (\n <span />\n ) : (\n <p className=\"text-sm text-muted-foreground\">\n {count} {count === 1 ? noun.one.toLowerCase() : noun.many.toLowerCase()}\n </p>\n )}\n <div className=\"flex items-center gap-2\">\n {!cursors && (\n <span className=\"text-sm text-muted-foreground\">\n Page {page} of {pageCount}\n </span>\n )}\n {server && cursors ? (\n <>\n <Pager to={cursors.prev} label=\"Previous page\">\n <ChevronLeft />\n </Pager>\n <Pager to={cursors.next} label=\"Next page\">\n <ChevronRight />\n </Pager>\n </>\n ) : server ? (\n <>\n <Pager to={page > 1 ? urlFor({ page: page - 1 }) : null} label=\"Previous page\">\n <ChevronLeft />\n </Pager>\n <Pager to={page < pageCount ? urlFor({ page: page + 1 }) : null} label=\"Next page\">\n <ChevronRight />\n </Pager>\n </>\n ) : (\n <>\n <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Previous page\" disabled={!table.getCanPreviousPage()} onClick={() => table.previousPage()}>\n <ChevronLeft />\n </Button>\n <Button variant=\"outline\" size=\"icon-sm\" aria-label=\"Next page\" disabled={!table.getCanNextPage()} onClick={() => table.nextPage()}>\n <ChevronRight />\n </Button>\n </>\n )}\n </div>\n </div>\n\n <AlertDialog open={confirming !== null} onOpenChange={(open) => !open && !deleting && !running && setConfirming(null)}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>{confirmTitle(confirming, noun)}</AlertDialogTitle>\n <AlertDialogDescription>\n {confirmDescription(confirming)}\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel disabled={deleting || running}>Cancel</AlertDialogCancel>\n <AlertDialogAction\n variant=\"destructive\"\n disabled={deleting || running}\n onClick={() => {\n if (confirming && 'ids' in confirming) return runBulk(confirming.action, confirming.ids)\n\n startDelete(async () => {\n await confirming?.row.remove?.()\n setConfirming(null)\n })\n }}\n >\n {confirming && 'ids' in confirming ? (running ? 'Working…' : confirming.action.label) : deleting ? 'Deleting…' : 'Delete'}\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </div>\n )\n}\n\nfunction confirmTitle(confirming: Confirming | null, noun: { one: string; many: string }): string {\n if (!confirming || 'row' in confirming) return `Delete this ${noun.one.toLowerCase()}?`\n\n const { action, ids } = confirming\n const counted = `${ids.length} ${(ids.length === 1 ? noun.one : noun.many).toLowerCase()}`\n\n return action.name === 'delete' ? `Delete ${counted}?` : `${action.label}: ${counted}?`\n}\n\nfunction confirmDescription(confirming: Confirming | null): string {\n if (confirming && 'ids' in confirming && confirming.action.name !== 'delete') return 'This cannot be undone.'\n\n const many = confirming !== null && 'ids' in confirming && confirming.ids.length > 1\n\n return `${many ? 'They are' : 'It is'} removed for good. This cannot be undone.`\n}\n\nfunction Pager({ to, label, children }: { to: string | null; label: string; children: ReactNode }) {\n if (!to) {\n return (\n <Button variant=\"outline\" size=\"icon-sm\" aria-label={label} disabled>\n {children}\n </Button>\n )\n }\n\n return <Button variant=\"outline\" size=\"icon-sm\" aria-label={label} nativeButton={false} render={<Link href={to as never} replace />}>{children}</Button>\n}\n\nfunction RowActions({ row, onDelete }: { row: TableRowData; onDelete: () => void }) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger render={<Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Actions\" />}>\n <MoreHorizontal />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n {row.edit && (\n <DropdownMenuItem render={<Link href={row.edit as never} />}>\n <Pencil />\n Edit\n </DropdownMenuItem>\n )}\n {row.edit && row.remove && <DropdownMenuSeparator />}\n {row.remove && (\n <DropdownMenuItem variant=\"destructive\" onClick={onDelete}>\n <Trash2 />\n Delete\n </DropdownMenuItem>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nfunction compare(a: unknown, b: unknown): number {\n if (a === b) return 0\n if (a === null || a === undefined) return 1\n if (b === null || b === undefined) return -1\n if (typeof a === 'number' && typeof b === 'number') return a - b\n if (typeof a === 'boolean' && typeof b === 'boolean') return Number(a) - Number(b)\n\n return String(a).localeCompare(String(b), undefined, { numeric: true })\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsc-kit/press",
3
- "version": "0.30.49",
3
+ "version": "0.30.51",
4
4
  "description": "Admin panels, public forms and pages built from blocks for rsc-kit: resources, data sources, tenants and plugins, with the drawing in a theme - shadcn/ui is the one that ships.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -50,7 +50,7 @@
50
50
  "prepack": "bun run build"
51
51
  },
52
52
  "peerDependencies": {
53
- "@rsc-kit/core": "^0.30.49",
53
+ "@rsc-kit/core": "^0.30.51",
54
54
  "react": "^19.2.0",
55
55
  "react-dom": "^19.2.0",
56
56
  "tailwindcss": "^4.0.0"