fix(tv): add keyboard focus to text inputs and polish poster styling

This commit is contained in:
Fredrik Burmester
2026-01-18 16:13:53 +01:00
parent a667723d93
commit 7af4b913d7
4 changed files with 8 additions and 13 deletions

View File

@@ -1,7 +1,7 @@
import { Ionicons } from "@expo/vector-icons";
import { SubtitlePlaybackMode } from "@jellyfin/sdk/lib/generated-client";
import { useAtom } from "jotai";
import React, { useMemo, useState } from "react";
import React, { useMemo, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import { Animated, Pressable, ScrollView, TextInput, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
@@ -319,6 +319,7 @@ const TVSettingsTextInput: React.FC<{
secureTextEntry,
disabled,
}) => {
const inputRef = useRef<TextInput>(null);
const { focused, handleFocus, handleBlur, animatedStyle } =
useTVFocusAnimation({ scaleAmount: 1.02 });
@@ -329,6 +330,7 @@ const TVSettingsTextInput: React.FC<{
return (
<Pressable
onPress={() => inputRef.current?.focus()}
onFocus={handleFocus}
onBlur={handleInputBlur}
disabled={disabled}
@@ -352,6 +354,7 @@ const TVSettingsTextInput: React.FC<{
{label}
</Text>
<TextInput
ref={inputRef}
value={value}
placeholder={placeholder}
placeholderTextColor='#6B7280'

View File

@@ -66,9 +66,7 @@ const ContinueWatchingPoster: React.FC<ContinueWatchingPosterProps> = ({
style={{
width: TV_LANDSCAPE_WIDTH,
aspectRatio: 16 / 9,
borderWidth: 1,
borderColor: "#262626",
borderRadius: 12,
borderRadius: 24,
}}
/>
);
@@ -80,10 +78,8 @@ const ContinueWatchingPoster: React.FC<ContinueWatchingPosterProps> = ({
position: "relative",
width: TV_LANDSCAPE_WIDTH,
aspectRatio: 16 / 9,
borderRadius: 12,
borderRadius: 24,
overflow: "hidden",
borderWidth: 1,
borderColor: "#262626",
}}
>
<View

View File

@@ -39,10 +39,8 @@ const MoviePoster: React.FC<MoviePosterProps> = ({
<View
style={{
position: "relative",
borderRadius: 12,
borderRadius: 24,
overflow: "hidden",
borderWidth: 1,
borderColor: "#262626",
width: TV_POSTER_WIDTH,
aspectRatio: 10 / 15,
}}

View File

@@ -38,10 +38,8 @@ const SeriesPoster: React.FC<SeriesPosterProps> = ({ item }) => {
width: TV_POSTER_WIDTH,
aspectRatio: 10 / 15,
position: "relative",
borderRadius: 12,
borderRadius: 24,
overflow: "hidden",
borderWidth: 1,
borderColor: "#262626",
}}
>
<Image