/** * Policy Type Badge Configuration * Maps Intune policy types to Shadcn Badge variants and colors */ export type PolicyBadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline'; interface PolicyBadgeConfig { variant: PolicyBadgeVariant; label: string; } /** * Maps policy type to badge configuration * Based on Microsoft Intune policy categories */ export function getPolicyBadgeConfig(policyType: string): PolicyBadgeConfig { const type = policyType.toLowerCase(); // Security & Protection if (type.includes('security') || type.includes('defender') || type.includes('threat')) { return { variant: 'destructive', label: formatPolicyType(policyType) }; } // Compliance & Conditional Access if (type.includes('compliance') || type.includes('conditional')) { return { variant: 'default', label: formatPolicyType(policyType) }; } // Configuration Profiles if (type.includes('configuration') || type.includes('profile') || type.includes('settings')) { return { variant: 'secondary', label: formatPolicyType(policyType) }; } // App Management if (type.includes('app') || type.includes('application')) { return { variant: 'outline', label: formatPolicyType(policyType) }; } // Default for unknown types return { variant: 'secondary', label: formatPolicyType(policyType) }; } /** * Formats policy type string for display * Converts camelCase/PascalCase to readable format */ function formatPolicyType(policyType: string): string { return policyType .replace(/([A-Z])/g, ' $1') // Add space before capital letters .trim() .replace(/\s+/g, ' ') // Collapse multiple spaces .split(' ') .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) .join(' '); }