mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-10 05:12:14 +00:00
fix(coach): label the quick-settings fields alike and give the lookback full width
The model fields carried the form label's colon and the lookback picker an uppercase section-style label and a fit-content 36 px trigger. All four fields now share one unadorned label and the full-width 44/40 px control.
This commit is contained in:
1 parent
a2ef2eec24
commit
07f4961f27
3 files changed
+14
-10
No files matched your search
@@ -212,7 +212,7 @@ export function CoachModelPicker() {
|
||||
return (
|
||||
<div data-slot="coach-model-picker" className="flex flex-col gap-4">
|
||||
<div>
|
||||
<Label htmlFor="coach-quick-provider">
|
||||
<Label htmlFor="coach-quick-provider" noColon>
|
||||
{t("insights.coach.frame.provider")}
|
||||
</Label>
|
||||
<NativeSelect
|
||||
@@ -241,7 +241,7 @@ export function CoachModelPicker() {
|
||||
|
||||
{model.kind === "preset" ? (
|
||||
<div>
|
||||
<Label htmlFor="coach-quick-model">
|
||||
<Label htmlFor="coach-quick-model" noColon>
|
||||
{t("settings.ai.modelLabel")}
|
||||
</Label>
|
||||
<NativeSelect
|
||||
@@ -284,6 +284,7 @@ export function CoachModelPicker() {
|
||||
{reasoning ? (
|
||||
<ReasoningEffortField
|
||||
id="coach-quick-reasoning"
|
||||
noColon
|
||||
value={reasoning.value}
|
||||
onChange={(next) => patchProvider.mutate({ [reasoning.field]: next })}
|
||||
/>
|
||||
@@ -324,7 +325,7 @@ function GatewayModelField({
|
||||
if (changed) onSave(draft.trim() || null);
|
||||
}}
|
||||
>
|
||||
<Label htmlFor="coach-quick-gateway-model">
|
||||
<Label htmlFor="coach-quick-gateway-model" noColon>
|
||||
{t("settings.ai.modelLabel")}
|
||||
</Label>
|
||||
<div className="flex items-center gap-2">
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useState } from "react";
|
||||
import { Eye, Loader2, Target } from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
|
||||
import { Label } from "@/components/ui/label";
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import {
|
||||
Select,
|
||||
@@ -162,12 +163,9 @@ export function SourcesRail({ className, activeScopeLabel }: SourcesRailProps) {
|
||||
under the picker states what the Coach reads at this setting, with
|
||||
the numbers the server readers use. */}
|
||||
<div data-slot="coach-sources-window" className="flex flex-col gap-1">
|
||||
<label
|
||||
htmlFor="coach-sources-window-select"
|
||||
className="text-muted-foreground text-xs font-medium tracking-wide uppercase"
|
||||
>
|
||||
<Label htmlFor="coach-sources-window-select" noColon>
|
||||
{t("insights.coach.lookback.label")}
|
||||
</label>
|
||||
</Label>
|
||||
<Select
|
||||
value={activeWindow}
|
||||
onValueChange={(v) => setWindow(v as CoachDefaultWindow)}
|
||||
@@ -177,7 +175,7 @@ export function SourcesRail({ className, activeScopeLabel }: SourcesRailProps) {
|
||||
id="coach-sources-window-select"
|
||||
data-slot="coach-sources-window-trigger"
|
||||
size="default"
|
||||
className="h-9 text-sm"
|
||||
className="w-full text-sm"
|
||||
aria-describedby="coach-sources-window-detail"
|
||||
>
|
||||
<SelectValue />
|
||||
|
||||
@@ -16,15 +16,20 @@ export function ReasoningEffortField({
|
||||
id,
|
||||
value,
|
||||
onChange,
|
||||
noColon = false,
|
||||
}: {
|
||||
id: string;
|
||||
value: ReasoningEffort | null;
|
||||
onChange: (next: ReasoningEffort | null) => void;
|
||||
/** The Coach's quick settings label their fields without a colon. */
|
||||
noColon?: boolean;
|
||||
}) {
|
||||
const { t } = useTranslations();
|
||||
return (
|
||||
<div>
|
||||
<Label htmlFor={id}>{t("settings.ai.reasoning.label")}</Label>
|
||||
<Label htmlFor={id} noColon={noColon}>
|
||||
{t("settings.ai.reasoning.label")}
|
||||
</Label>
|
||||
<NativeSelect
|
||||
id={id}
|
||||
value={value ?? ""}
|
||||
|
||||
Reference in new issue
Block a user