diff --git a/src/components/settings/ai-section.tsx b/src/components/settings/ai-section.tsx index 5dc57d6b9..a0e88a6ed 100644 --- a/src/components/settings/ai-section.tsx +++ b/src/components/settings/ai-section.tsx @@ -31,6 +31,7 @@ import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { NativeSelect } from "@/components/ui/native-select"; import { Switch } from "@/components/ui/switch"; import { PasswordInput } from "@/components/ui/password-input"; import { useAuth } from "@/hooks/use-auth"; @@ -341,12 +342,14 @@ function ProviderStatusBadges({ } /** - * The single Pulldown that drives every form below it. Uses a native - * `` is `h-9`); tap target stays comfortable thanks to the - * full-width chevron region. + * The single Pulldown that drives every form below it. Uses the + * shared `` primitive so the SSR-only settings test + * renders deterministically without a portal-based Radix tree, and so + * the visual contract stays uniform with the other settings pickers + * that landed behind the same primitive in MB7 / CF-52. Mobile: + * full-width, height matched to the shared 36 px input contract used + * everywhere else in Settings; tap target stays comfortable thanks to + * the full-width chevron region. */ function ActiveProviderSelect({ value, @@ -367,7 +370,7 @@ function ActiveProviderSelect({ - + ); } @@ -820,12 +823,12 @@ function OpenAIProviderForm({ - + {modelChoice === CUSTOM_MODEL_SENTINEL && ( @@ -1005,11 +1008,11 @@ function AnthropicProviderForm({ - + {modelChoice === CUSTOM_MODEL_SENTINEL && ( @@ -1163,11 +1166,11 @@ function LocalProviderForm({
- +
{modelChoice === CUSTOM_MODEL_SENTINEL && (
@@ -1507,18 +1510,18 @@ function AddProviderControl({ return (
- +