= ({ selectedThemeId, onSelect, filterType, showAutoOption }) => {
const { t } = useI18n();
const customThemes = useCustomThemes();
const deletedSelectedTheme = useMemo(
() => (selectedThemeId
&& selectedThemeId !== TERMINAL_THEME_AUTO
&& !isUiMatchTerminalThemeId(selectedThemeId)
&& !TERMINAL_THEMES.some((theme) => theme.id === selectedThemeId)
&& !customThemes.some((theme) => theme.id === selectedThemeId)
? selectedThemeId
: null),
[customThemes, selectedThemeId],
);
const hiddenSelectedTheme = useMemo(
() => (isUiMatchTerminalThemeId(selectedThemeId)
? TERMINAL_THEMES.find(theme => theme.id === selectedThemeId) || null
: null),
[selectedThemeId],
);
const { darkThemes, lightThemes } = useMemo(() => {
const dark = USER_VISIBLE_TERMINAL_THEMES.filter(t => t.type === 'dark');
const light = USER_VISIBLE_TERMINAL_THEMES.filter(t => t.type === 'light');
return { darkThemes: dark, lightThemes: light };
}, []);
const visibleCustomThemes = filterType
? customThemes.filter(theme => theme.type === filterType)
: customThemes;
const isAutoSelected = selectedThemeId === TERMINAL_THEME_AUTO;
return (
<>
{showAutoOption && (
)}
{hiddenSelectedTheme && (
{t('terminal.hiddenTheme.title')}
{hiddenSelectedTheme.name}
{t('terminal.hiddenTheme.desc')}
)}
{deletedSelectedTheme && (
Missing Theme
{deletedSelectedTheme}
This custom theme is no longer available. Pick another theme to replace it.
)}
{/* Dark Themes Section */}
{(!filterType || filterType === 'dark') && (
{t('settings.terminal.themeModal.darkThemes')}
{darkThemes.map(theme => (
))}
)}
{/* Light Themes Section */}
{(!filterType || filterType === 'light') && (
{t('settings.terminal.themeModal.lightThemes')}
{lightThemes.map(theme => (
))}
)}
{/* Custom Themes Section */}
{visibleCustomThemes.length > 0 && (
{t('terminal.customTheme.section')}
{visibleCustomThemes.map(theme => (
))}
)}
>
);
};