From ab4529fcb34f7fb6fd675eb3a10aae70d62ca8e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Fri, 15 May 2026 19:19:14 +0200 Subject: [PATCH] chore(settings,admin): consolidate Withings credentials, SettingsToggle stacking, and feedback tabs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v1.4.27 MB7 — four settings/admin polish items in one commit: - CF-53: the Withings credentials grid drops from a 3-column row (client-id / secret / save) to a 2-column row of inputs with the Save button lifted into its own row below. The previous invisible- label hack collided on Galaxy Fold; the new row places the Save button at `justify-end` on every viewport and fills the column on ` void; disabled: boolean; }) { + // v1.4.27 MB7 / CF-56 — stack the toggle row vertically on ` -
- {Icon && } -
+
+
+ {Icon && } +

{label}

{description && (

{description}

@@ -210,6 +217,7 @@ export function SettingsToggle({ checked={checked} onCheckedChange={onCheckedChange} disabled={disabled} + className="self-end sm:self-auto" />
); diff --git a/src/components/admin/feedback-inbox-section.tsx b/src/components/admin/feedback-inbox-section.tsx index 589808fa3..76852cff5 100644 --- a/src/components/admin/feedback-inbox-section.tsx +++ b/src/components/admin/feedback-inbox-section.tsx @@ -85,20 +85,28 @@ export function FeedbackInboxSection() { onValueChange={(v) => setActiveStatus(v as FeedbackStatusType)} className="mt-4" > - - {FEEDBACK_STATUS_TABS.map((s) => ( - - - {t( - `admin.feedback.tab${s.charAt(0) + s.slice(1).toLowerCase()}`, - )} - - - {counts[s] ?? 0} - - - ))} - + {/* v1.4.27 MB7 / CF-55 — wrap the TabsList in an + overflow-x-auto strip so the 4 status pills + their count + badges scroll horizontally on Pixel 5 / Galaxy Fold + instead of squashing the badge text below the legibility + floor. Hide the scrollbar visually but keep the gesture + working (matches the Insights tab-strip pattern). */} +
+ + {FEEDBACK_STATUS_TABS.map((s) => ( + + + {t( + `admin.feedback.tab${s.charAt(0) + s.slice(1).toLowerCase()}`, + )} + + + {counts[s] ?? 0} + + + ))} + +
{FEEDBACK_STATUS_TABS.map((s) => ( diff --git a/src/components/admin/general-settings-section.tsx b/src/components/admin/general-settings-section.tsx index 14e5236b3..61ca20bfe 100644 --- a/src/components/admin/general-settings-section.tsx +++ b/src/components/admin/general-settings-section.tsx @@ -41,8 +41,10 @@ export function GeneralSettingsSection() { disabled={updateSettings.isPending} /> -
-
+ {/* v1.4.27 MB7 / CF-56 — match the SettingsToggle stacking + contract: stack on ` +

{t("admin.defaultLanguage")}

{t("admin.defaultLanguageDescription")} @@ -54,7 +56,7 @@ export function GeneralSettingsSection() { updateSettings.mutate({ defaultLocale: e.target.value }) } disabled={updateSettings.isPending} - className="w-auto" + className="self-end sm:w-auto sm:self-auto" > diff --git a/src/components/settings/integrations-section.tsx b/src/components/settings/integrations-section.tsx index d58415f6e..3518bace0 100644 --- a/src/components/settings/integrations-section.tsx +++ b/src/components/settings/integrations-section.tsx @@ -389,7 +389,16 @@ function WithingsCard({ {t("settings.withingsCredentials")}

-
+ {/* v1.4.27 MB7 / CF-53 — the credentials grid drops from + a 3-column row (client-id / secret / save) to a + 2-column row of inputs at `sm:`, with the Save button + lifted out into its own row below. The previous + "invisible Label" hack to align the button with the + input baselines fell apart on Galaxy Fold; lifting + the button into a dedicated `flex justify-end` row + gives it consistent placement on every viewport and + lets the input pair span the full width. */} +
-
- - -
+
+
+
{credsMsg && (

-

+ {/* v1.4.27 MB7 / CF-57 — the action row already wraps via + `flex-wrap`, but on Pixel 5 the four AlertDialog + + test-connection triggers each took a fractional slot + that read jagged. Force each button to a `min-w-[10rem]` + on `