import { makeHelpersForOptions } from '../lib/makeHelpersForOptions' import { transformCase } from '../lib/strings' import type BadgeSmall from '../components/BadgeSmall.astro' import type { ServiceUserRole } from '@prisma/client' import type { ComponentProps } from 'astro/types' type ServiceUserRoleInfo = { value: T slug: string label: string icon: string order: number color: NonNullable['color']> } export const { dataArray: serviceUserRoles, dataObject: serviceUserRolesById, getFn: getServiceUserRoleInfo, } = makeHelpersForOptions( 'value', (value): ServiceUserRoleInfo => ({ value, slug: value ? value.toLowerCase() : '', label: value ? transformCase(value, 'title').replace('_', ' ') : String(value), icon: 'ri:user-3-line', order: Infinity, color: 'gray', }), [ { value: 'OWNER', slug: 'owner', label: 'Owner', icon: 'ri:vip-crown-2-fill', order: 1, color: 'lime', }, { value: 'ADMIN', slug: 'admin', label: 'Admin', icon: 'ri:shield-star-fill', order: 2, color: 'green', }, { value: 'MODERATOR', slug: 'moderator', label: 'Moderator', icon: 'ri:graduation-cap-fill', order: 3, color: 'teal', }, { value: 'SUPPORT', slug: 'support', label: 'Support', icon: 'ri:customer-service-2-fill', order: 4, color: 'blue', }, { value: 'TEAM_MEMBER', slug: 'team_member', label: 'Team Member', icon: 'ri:team-fill', order: 5, color: 'cyan', }, ] as const satisfies ServiceUserRoleInfo[] )