'use client'; import { Switch } from './ui/switch'; import { Label } from './ui/label'; import { Permission } from '@/lib/types'; interface PermissionSelectorProps { permissions: Permission[]; isAdmin: boolean; onPermissionsChange: (permissions: Permission[]) => void; onAdminChange: (isAdmin: boolean) => void; } const permissionLabels: { [key: string]: string } = { habit: 'Habit / Task', wishlist: 'Wishlist', coins: 'Coins' }; export function PermissionSelector({ permissions, isAdmin, onPermissionsChange, onAdminChange, }: PermissionSelectorProps) { const currentPermissions = isAdmin ? { habit: { write: true, interact: true }, wishlist: { write: true, interact: true }, coins: { write: true, interact: true } } : permissions[0] || { habit: { write: false, interact: true }, wishlist: { write: false, interact: true }, coins: { write: false, interact: true } }; const handlePermissionChange = (resource: keyof Permission, type: 'write' | 'interact', checked: boolean) => { const newPermissions = [{ ...currentPermissions, [resource]: { ...currentPermissions[resource], [type]: checked } }]; onPermissionsChange(newPermissions); }; return (
Admin Access
{isAdmin ? (

Admins have full permission to all data for all users

) : (
{['habit', 'wishlist', 'coins'].map((resource) => (
{permissionLabels[resource]}
handlePermissionChange(resource as keyof Permission, 'write', checked) } />
handlePermissionChange(resource as keyof Permission, 'interact', checked) } />
))}
)}
) }