/** * Component: Plex Library Settings Section * Documentation: documentation/settings-pages.md */ import { Input } from '@/components/ui/Input'; import { Button } from '@/components/ui/Button'; import { Settings, PlexLibrary } from '../../lib/types'; import { AUDIBLE_REGIONS } from '@/lib/types/audible'; interface PlexSectionProps { settings: Settings; onChange: (settings: Settings) => void; onValidationChange: (section: string, isValid: boolean) => void; libraries: PlexLibrary[]; testing: boolean; testResult: { success: boolean; message: string } | null; onTestConnection: () => void; } export function PlexSection({ settings, onChange, onValidationChange, libraries, testing, testResult, onTestConnection, }: PlexSectionProps) { const handleUrlChange = (url: string) => { onChange({ ...settings, plex: { ...settings.plex, url }, }); onValidationChange('plex', false); }; const handleTokenChange = (token: string) => { onChange({ ...settings, plex: { ...settings.plex, token }, }); onValidationChange('plex', false); }; const handleLibraryChange = (libraryId: string) => { onChange({ ...settings, plex: { ...settings.plex, libraryId }, }); onValidationChange('plex', false); }; const handleTriggerScanChange = (triggerScanAfterImport: boolean) => { onChange({ ...settings, plex: { ...settings.plex, triggerScanAfterImport }, }); }; const handleAudibleRegionChange = (audibleRegion: string) => { onChange({ ...settings, audibleRegion, }); }; return (

Plex Media Server

Configure your Plex server connection and audiobook library.

handleUrlChange(e.target.value)} placeholder="http://localhost:32400" />
handleTokenChange(e.target.value)} placeholder="Enter your Plex token" />

Find your token in Plex settings → Network → Show Advanced

{libraries.length > 0 ? ( ) : (
Test your connection to load libraries.
)}
{/* Audible Region Selection */}
{AUDIBLE_REGIONS[settings.audibleRegion as keyof typeof AUDIBLE_REGIONS]?.language !== 'en' && (

Non-English Region

Many features such as search, discovery, and metadata matching are not yet fully supported for non-English regions. You may still proceed, but expect limited functionality.

)}

Select the Audible region that matches your metadata engine (Audnexus/Audible Agent) configuration in Plex. This ensures accurate book matching and metadata.

{testResult && (
{testResult.message}
)}
); }