'use client'; import type { ComponentProps } from 'react'; import type { FieldErrors, UseFormRegister, UseFormReturn } from 'react-hook-form'; import { Loader2 } from 'lucide-react'; import { FormField } from '@/components/form'; import { PermissionTree } from '@/components/permission-tree'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from '@/components/ui/sheet'; import type { PermissionTreeItem } from '@/types'; import type { RoleFormValues } from '../hooks/useRoleForm'; interface RoleSheetProps { open: boolean; onOpenChange: (open: boolean) => void; roleId?: number; register: UseFormRegister; errors: FieldErrors; touchedFields: UseFormReturn['formState']['touchedFields']; onSubmit: ComponentProps<'form'>['onSubmit']; permissionTree: PermissionTreeItem[]; permissionIds: number[]; onPermissionIdsChange: (ids: number[]) => void; isPermissionsLoading: boolean; canSubmit: boolean; isSaving: boolean; } export function RoleSheet({ open, onOpenChange, roleId, register, errors, touchedFields, onSubmit, permissionTree, permissionIds, onPermissionIdsChange, isPermissionsLoading, canSubmit, isSaving, }: RoleSheetProps) { const nameErrorMessage = touchedFields.name ? errors.name?.message : undefined; const displayNameErrorMessage = touchedFields.display_name ? errors.display_name?.message : undefined; return ( {roleId ? 'Edit Role' : 'Create Role'} Assign the role details and permission access for this organization.