Some checks are pending
E2E / Playwright e2e (push) Waiting to run
- Replaced hardcoded "Agenda" labels with dynamic ULTICAL_APP_NAME in various components for consistency. - Introduced new AiUsageSection and CompteAiUsageSection components to track AI usage and costs. - Updated settings and metadata to reflect changes in AI cost policies and usage limits. - Enhanced user interface elements for better accessibility and user experience across admin settings.
121 lines
3.5 KiB
TypeScript
121 lines
3.5 KiB
TypeScript
"use client"
|
|
|
|
import dynamic from "next/dynamic"
|
|
import type { ComponentType } from "react"
|
|
import {
|
|
resolveAdminSettingsSection,
|
|
type AdminSettingsSectionId,
|
|
} from "@/lib/admin-settings/settings-nav"
|
|
import { AdminAccessGuard } from "@/components/admin/settings/admin-access-guard"
|
|
|
|
function loadSection<P = object>(
|
|
loader: () => Promise<{ default: ComponentType<P> }>
|
|
) {
|
|
return dynamic(loader, { ssr: false })
|
|
}
|
|
|
|
const SECTIONS: Record<AdminSettingsSectionId, ComponentType> = {
|
|
overview: loadSection(() =>
|
|
import("@/components/admin/settings/sections/overview-section").then((m) => ({
|
|
default: m.OverviewSection,
|
|
}))
|
|
),
|
|
users: loadSection(() =>
|
|
import("@/components/admin/settings/sections/users-section").then((m) => ({
|
|
default: m.UsersSection,
|
|
}))
|
|
),
|
|
authentication: loadSection(() =>
|
|
import("@/components/admin/settings/sections/authentication-section").then((m) => ({
|
|
default: m.AuthenticationSection,
|
|
}))
|
|
),
|
|
security: loadSection(() =>
|
|
import("@/components/admin/settings/sections/security-section").then((m) => ({
|
|
default: m.SecuritySection,
|
|
}))
|
|
),
|
|
quotas: loadSection(() =>
|
|
import("@/components/admin/settings/sections/quotas-section").then((m) => ({
|
|
default: m.QuotasSection,
|
|
}))
|
|
),
|
|
"file-policies": loadSection(() =>
|
|
import("@/components/admin/settings/sections/file-policies-section").then((m) => ({
|
|
default: m.FilePoliciesSection,
|
|
}))
|
|
),
|
|
"public-shares": loadSection(() =>
|
|
import("@/components/admin/settings/sections/public-shares-section").then((m) => ({
|
|
default: m.PublicSharesSection,
|
|
}))
|
|
),
|
|
llm: loadSection(() =>
|
|
import("@/components/admin/settings/sections/ai-assistant-section").then((m) => ({
|
|
default: m.AiAssistantSection,
|
|
}))
|
|
),
|
|
search: loadSection(() =>
|
|
import("@/components/admin/settings/sections/search-section").then((m) => ({
|
|
default: m.SearchSection,
|
|
}))
|
|
),
|
|
plugins: loadSection(() =>
|
|
import("@/components/admin/settings/sections/plugins-section").then((m) => ({
|
|
default: m.PluginsSection,
|
|
}))
|
|
),
|
|
agenda: loadSection(() =>
|
|
import("@/components/admin/settings/sections/agenda-section").then((m) => ({
|
|
default: m.AgendaSection,
|
|
}))
|
|
),
|
|
ultimeet: loadSection(() =>
|
|
import("@/components/admin/settings/sections/ultimeet-section").then((m) => ({
|
|
default: m.UltimeetSection,
|
|
}))
|
|
),
|
|
"mail-domains": loadSection(() =>
|
|
import("@/components/admin/settings/sections/mail-domains-section").then((m) => ({
|
|
default: m.MailDomainsSection,
|
|
}))
|
|
),
|
|
"ai-assistant": loadSection(() =>
|
|
import("@/components/admin/settings/sections/ai-assistant-section").then((m) => ({
|
|
default: m.AiAssistantSection,
|
|
}))
|
|
),
|
|
"ai-usage": loadSection(() =>
|
|
import("@/components/admin/settings/sections/ai-usage-section").then((m) => ({
|
|
default: m.AiUsageSection,
|
|
}))
|
|
),
|
|
audit: loadSection(() =>
|
|
import("@/components/admin/settings/sections/audit-section").then((m) => ({
|
|
default: m.AuditSection,
|
|
}))
|
|
),
|
|
}
|
|
|
|
export function AdminSettingsSectionView({
|
|
sectionId,
|
|
}: {
|
|
sectionId: AdminSettingsSectionId
|
|
}) {
|
|
const Section = SECTIONS[sectionId]
|
|
return (
|
|
<AdminAccessGuard>
|
|
<Section />
|
|
</AdminAccessGuard>
|
|
)
|
|
}
|
|
|
|
export function AdminSettingsSectionFromSegments({
|
|
segments,
|
|
}: {
|
|
segments?: string[]
|
|
}) {
|
|
const sectionId = resolveAdminSettingsSection(segments)
|
|
return <AdminSettingsSectionView sectionId={sectionId} />
|
|
}
|