import { useTranslations } from 'next-intl' import { PermissionsMatrix } from '@nextsparkjs/core/components/permissions' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@nextsparkjs/core/components/ui/tabs' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@nextsparkjs/core/components/ui/card' // Use PermissionService which reads from the build-time generated registry import { PermissionService } from '@nextsparkjs/core/lib/services/permission.service' import { getTemplateOrDefault } from '@nextsparkjs/core/lib/template-resolver' /** * Team Permissions Page * * Displays a visual permissions matrix showing what each team role can do. * Organized by categories with tabs for easy navigation. */ function TeamPermissionsPage() { const t = useTranslations('permissions') // Get all unique categories from registry const categories = PermissionService.getCategories() return (
{/* Header */}

{t('title')}

{t('description')}

{/* Info Card with Role Overview */} {t('rolesOverview')} {t('rolesOverviewDescription')}
{/* Permissions Matrix with Tabs */} {t('allPermissions')} {categories.map(cat => ( {cat} ))} {categories.map(cat => ( ))}
) } /** * RoleCard component * * Displays a visual card for each team role with color coding */ function RoleCard({ role }: { role: 'owner' | 'admin' | 'member' | 'viewer' }) { const t = useTranslations('permissions') const roleColors = { owner: 'border-purple-200 bg-purple-50 dark:border-purple-800 dark:bg-purple-900/20', admin: 'border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-900/20', member: 'border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-900/20', viewer: 'border-gray-200 bg-gray-50 dark:border-gray-700 dark:bg-gray-800/20', } return (

{t(`roles.${role}.title`)}

{t(`roles.${role}.description`)}

) } export default getTemplateOrDefault('app/dashboard/settings/teams/permissions/page.tsx', TeamPermissionsPage)