+ {book?.coverImageUrl ? (
+ // eslint-disable-next-line @next/next/no-img-element
+
+ ) : null}
+
+ {book?.title ?? ''}
+ {sectionLabel && (
+ {sectionLabel}
+ )}
+
+ {hasTimeline ? (
+
+ ) : (
+ chapterRemainingSec !== null && (
+
+ {_('{{time}} left in chapter', { time: formatPlaybackTime(chapterRemainingSec) })}
+
+ )
+ )}
+
+ onBackward(false)}
+ >
+
+
+ onBackward(true)}
+ >
+
+
+
+ {isPlaying ? : }
+
+ onForward(true)}
+ >
+
+
+ onForward(false)}
+ >
+
+
+
+
+ setView('speed')}
+ className='not-eink:bg-base-200 eink-bordered flex h-14 min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-xl'
+ >
+ {formatRate(rate)}
+ {_('Speed')}
+
+ setView('voice')}
+ className='not-eink:bg-base-200 eink-bordered flex h-14 min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-xl'
+ >
+
+
+ {currentVoiceName ?? _('Voice')}
+
+
+ setView('timer')}
+ className='not-eink:bg-base-200 eink-bordered flex h-14 min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-xl'
+ >
+
+
+ {timerCaption}
+
+
+
+
+ )}
+ {view === 'speed' && (
+
+ {voiceGroups.map((voiceGroup) => (
+
+
+ {_('{{engine}}: {{count}} voices', {
+ engine: _(voiceGroup.name),
+ count: voiceGroup.voices.length,
+ })}
+
+ {voiceGroup.voices.map((voice) => (
+
handleSelectVoice(voice.id, voice.lang)}
+ className='flex w-full items-center gap-2 rounded-lg px-2 py-2 text-start'
+ >
+
+ {selectedVoice === voice.id && }
+
+
+ {_(voice.name)}
+
+
+ ))}
+
+ ))}
+
+ )}
+ {view === 'timer' && (
+