36 lines
3.2 KiB
TypeScript
36 lines
3.2 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', symbol: '01' },
|
|
{ href: '/admin/notifications', label: 'Email & notifications', description: 'Invites, password resets and repair updates', symbol: '02' },
|
|
{ href: '/admin/issue-workflow', label: 'Issue follow-up', description: 'Confirmation emails and automatic closure', symbol: '03' },
|
|
{ href: '/admin/requests', label: 'Request updates', description: 'Refresh schedule and history retention', symbol: '04' },
|
|
{ href: '/users', label: 'Users', description: 'Accounts, email addresses and permissions', symbol: '05' },
|
|
{ href: '/admin/invites', label: 'Invite policy & access', description: 'Defaults, profiles and issued invites', symbol: '06' },
|
|
]},
|
|
{ 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')
|