101 lines
3.8 KiB
TypeScript
101 lines
3.8 KiB
TypeScript
type ConfigLink = { href: string; label: string; description: string; symbol?: string; service?: string };
|
|
type ConfigGroup = { title: string; description: string; advanced?: boolean; items: ConfigLink[] };
|
|
|
|
export const CONFIG_GROUPS: ConfigGroup[] = [
|
|
{
|
|
title: "Media services",
|
|
description: "Connect the services that collect, repair and play your content.",
|
|
items: [
|
|
{ href: "/admin/seerr", label: "Seerr", description: "Requests and approvals", symbol: "SE", service: "Seerr" },
|
|
{
|
|
href: "/admin/jellyfin",
|
|
label: "Jellyfin",
|
|
description: "Playback and library availability",
|
|
symbol: "JF",
|
|
service: "Jellyfin",
|
|
},
|
|
{
|
|
href: "/admin/jellystat",
|
|
label: "Jellystat",
|
|
description: "Personal viewing statistics",
|
|
symbol: "JS",
|
|
service: "Jellystat",
|
|
},
|
|
{
|
|
href: "/admin/sonarr",
|
|
label: "Sonarr",
|
|
description: "TV collection and quality",
|
|
symbol: "SO",
|
|
service: "Sonarr",
|
|
},
|
|
{
|
|
href: "/admin/radarr",
|
|
label: "Radarr",
|
|
description: "Movie collection and quality",
|
|
symbol: "RA",
|
|
service: "Radarr",
|
|
},
|
|
{ href: "/admin/bazarr", label: "Bazarr", description: "Subtitle repairs", symbol: "BA", service: "Bazarr" },
|
|
{ href: "/admin/prowlarr", label: "Prowlarr", description: "Search sources", symbol: "PR", service: "Prowlarr" },
|
|
{
|
|
href: "/admin/qbittorrent",
|
|
label: "qBittorrent",
|
|
description: "Download progress and recovery",
|
|
symbol: "QB",
|
|
service: "qBittorrent",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Preferences & access",
|
|
description: "Set the experience for your users and how issues are followed up.",
|
|
items: [
|
|
{ href: "/admin/site", label: "Site & sign-in", description: "Announcements and login options" },
|
|
{
|
|
href: "/admin/notifications",
|
|
label: "Email & notifications",
|
|
description: "Invites, password resets and repair updates",
|
|
},
|
|
{
|
|
href: "/admin/recaps",
|
|
label: "Monthly email recaps",
|
|
description: "Personal viewing emails, schedule and delivery history",
|
|
},
|
|
{
|
|
href: "/admin/newsletters",
|
|
label: "Newsletters",
|
|
description: "New arrivals, featured picks and weekly editions",
|
|
},
|
|
{
|
|
href: "/admin/issue-workflow",
|
|
label: "Issue follow-up",
|
|
description: "Confirmation emails and automatic closure",
|
|
},
|
|
{ href: "/admin/requests", label: "Request updates", description: "Refresh schedule and history retention" },
|
|
{ href: "/users", label: "User management", description: "Accounts, permissions, identity checks and repairs" },
|
|
{ href: "/admin/invites", label: "Invite policy & access", description: "Defaults, profiles and issued invites" },
|
|
],
|
|
},
|
|
{
|
|
title: "Advanced tools",
|
|
description: "Hosting and troubleshooting.",
|
|
advanced: true,
|
|
items: [
|
|
{ href: "/admin/general", label: "Hosting & proxy", description: "Public addresses and deployment options" },
|
|
{ href: "/admin/diagnostics", label: "System health", description: "Service checks and diagnostics" },
|
|
{ href: "/admin/logs", label: "Logs", description: "Recent activity and log settings" },
|
|
{ href: "/admin/cache", label: "Request cache", description: "Inspect saved request records" },
|
|
{ href: "/admin/artwork", label: "Artwork cache", description: "Poster storage and missing artwork" },
|
|
{ href: "/admin/maintenance", label: "Recovery & cleanup", description: "Database repair and history cleanup" },
|
|
],
|
|
},
|
|
];
|
|
|
|
export const serviceStatusLabel = (status?: string) =>
|
|
({
|
|
up: "Connected",
|
|
down: "Unavailable",
|
|
degraded: "Needs attention",
|
|
not_configured: "Not set up",
|
|
})[status ?? ""] ?? "Not checked";
|