refactor: add reusable select controls and enhance data table columns

This commit is contained in:
2026-06-17 20:32:50 +05:30
parent b325975282
commit 463ee0835f
20 changed files with 418 additions and 26 deletions

View File

@@ -5,18 +5,27 @@ import type { ReactNode } from 'react';
type PermissionGuardProps = {
children: ReactNode;
permissions?: PermissionInput;
permissions?: PermissionInput | PermissionInput[];
/** When `permissions` is an array: `any` (default) or `all` must pass. */
match?: 'any' | 'all';
fallback?: ReactNode;
};
export function PermissionGuard({
children,
permissions,
match = 'any',
fallback = null,
}: PermissionGuardProps) {
const { hasPermission } = usePermissions();
const { hasPermission, hasAnyPermission } = usePermissions();
if (!hasPermission(permissions)) return fallback;
const allowed = Array.isArray(permissions)
? match === 'all'
? permissions.every((permission) => hasPermission(permission))
: hasAnyPermission(permissions)
: hasPermission(permissions);
if (!allowed) return fallback;
return children;
}