ModelsList: memo feature chips

This commit is contained in:
Enrico Ros
2026-01-29 12:31:50 -08:00
parent 557e1ce293
commit 2201f6ff5a
+13 -4
View File
@@ -157,6 +157,18 @@ export const ModelItem = React.memo(function ModelItem(props: {
}).reverse();
}, [llm.interfaces]);
const featuresChipMemo = React.useMemo(() => {
if (!isNotSymlink) return null;
let fs = '';
if (llm.interfaces.includes(LLM_IF_OAI_Reasoning)) fs += '🧠 ';
if (llm.interfaces.includes(LLM_IF_Tools_WebSearch)) fs += '🌐 ';
if (llm.interfaces.includes(LLM_IF_Outputs_Audio)) fs += '🔊 ';
if (llm.interfaces.includes(LLM_IF_Outputs_Image)) fs += '🖼️ ';
return !fs ? null : <Chip size='sm' variant='plain' sx={styles.chipCapability}>{fs.trim()}</Chip>;
}, [isNotSymlink, llm.interfaces]);
return (
<ListItem>
<ListItemButton
@@ -202,10 +214,7 @@ export const ModelItem = React.memo(function ModelItem(props: {
</>}
{/* Features Chips - sync with `useLLMSelect.tsx` */}
{llm.interfaces.includes(LLM_IF_OAI_Reasoning) && isNotSymlink && <Chip size='sm' variant='plain' sx={styles.chipCapability}>🧠</Chip>}
{llm.interfaces.includes(LLM_IF_Tools_WebSearch) && isNotSymlink && <Chip size='sm' variant='plain' sx={styles.chipCapability}>🌐</Chip>}
{llm.interfaces.includes(LLM_IF_Outputs_Audio) && isNotSymlink && <Chip size='sm' variant='plain' sx={styles.chipCapability}>🔊</Chip>}
{llm.interfaces.includes(LLM_IF_Outputs_Image) && isNotSymlink && <Chip size='sm' variant='plain' sx={styles.chipCapability}>🖼</Chip>}
{featuresChipMemo}
{seemsFree && isNotSymlink && <Chip size='sm' color='success' variant='plain' sx={styles.chipFree}>free</Chip>}