Files
myeasycms-v2/packages/features/team-accounts/src/components/members/membership-role-selector.tsx
Giancarlo Buomprisco 7ebff31475 Next.js Supabase V3 (#463)
Version 3 of the kit:
- Radix UI replaced with Base UI (using the Shadcn UI patterns)
- next-intl replaces react-i18next
- enhanceAction deprecated; usage moved to next-safe-action
- main layout now wrapped with [locale] path segment
- Teams only mode
- Layout updates
- Zod v4
- Next.js 16.2
- Typescript 6
- All other dependencies updated
- Removed deprecated Edge CSRF
- Dynamic Github Action runner
2026-03-24 13:40:38 +08:00

61 lines
1.3 KiB
TypeScript

import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@kit/ui/select';
import { Trans } from '@kit/ui/trans';
type Role = string;
export function MembershipRoleSelector({
roles,
value,
currentUserRole,
onChange,
triggerClassName,
}: {
roles: Role[];
value: Role;
currentUserRole?: Role;
onChange: (role: Role | null) => unknown;
triggerClassName?: string;
}) {
return (
<Select value={value} onValueChange={onChange}>
<SelectTrigger
className={triggerClassName}
data-test={'role-selector-trigger'}
>
<SelectValue>
{(value) =>
value ? (
<Trans i18nKey={`common.roles.${value}.label`} defaults={value} />
) : (
''
)
}
</SelectValue>
</SelectTrigger>
<SelectContent>
{roles.map((role) => {
return (
<SelectItem
key={role}
data-test={`role-option-${role}`}
disabled={currentUserRole === role}
value={role}
>
<span className={'text-sm capitalize'}>
<Trans i18nKey={`common.roles.${role}.label`} defaults={role} />
</span>
</SelectItem>
);
})}
</SelectContent>
</Select>
);
}