diff --git a/src/app/(protected)/team-members/_components/add-team-member-dialog.tsx b/src/app/(protected)/team-members/_components/add-team-member-dialog.tsx index 21aea977..170f3ccf 100644 --- a/src/app/(protected)/team-members/_components/add-team-member-dialog.tsx +++ b/src/app/(protected)/team-members/_components/add-team-member-dialog.tsx @@ -36,26 +36,16 @@ import { PERMISSION_LABELS, permissionOverrides, } from "./team-member-permissions"; +import { TEAM_MEMBER_COLORS, TEAM_MEMBER_ROLES } from "./team-member-form-options"; -const ROLES: TeamMemberRole[] = ["Dispatcher", "Scheduler", "Admin"]; -const COLORS = [ - "#F59E0B", - "#0D9488", - "#6366F1", - "#F43F5E", - "#7C3AED", - "#0EA5E9", - "#16A34A", - "#EA580C", - "#0891B2", - "#C026D3", -] as const; +const LEGACY_ROLE_OPTION = "__legacy-role__"; function emptyForm() { return { name: "", - role: "Dispatcher" as TeamMemberRole, + role: "Dispatcher" as TeamMemberRole | "", color: "", + colorNotice: "", email: "", phone: "", active: true, @@ -109,6 +99,53 @@ function PermissionsSection({ ); } +function RoleSelectField({ + role, + roleError, + updateRole, + disabled, + legacyRole, +}: { + role: TeamMemberRole | ""; + roleError: string; + updateRole: (role: TeamMemberRole) => void; + disabled: boolean; + legacyRole: string; +}) { + const legacyRolePending = Boolean(legacyRole) && !role; + + return ( + + Role + + {legacyRolePending && ( + + {legacyRole} is a legacy role and can no longer be saved. Choose Dispatcher, Scheduler, or + Admin. + + )} + {!legacyRolePending && Boolean(roleError) && {roleError}} + + ); +} + export function TeamMemberFormFields({ form, setForm, @@ -117,6 +154,7 @@ export function TeamMemberFormFields({ toggleArea, togglePermission, roleDisabled = false, + legacyRole = "", }: { form: TeamMemberForm; setForm: Dispatch>; @@ -125,6 +163,7 @@ export function TeamMemberFormFields({ toggleArea: (area: string) => void; togglePermission: (key: string) => void; roleDisabled?: boolean; + legacyRole?: string; }) { return ( @@ -138,36 +177,26 @@ export function TeamMemberFormFields({ required fullWidth /> - - Role - - {Boolean(errors.role) && {errors.role}} - + Color - {COLORS.map((color) => ( + {TEAM_MEMBER_COLORS.map((color) => (