mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-12 14:16:12 +00:00
style(settings): uniform vertical spacing across all sections
Pre-fix the per-card vertical rhythm was either `space-y-3` (AI provider config forms), `space-y-5` (dashboard layout card) or `space-y-4` (Account → Profile form). Three competing strides for forms that visually live in the same shell, so the eye picks up the discontinuity even though the section-level `space-y-6` outer rhythm was already consistent. Standardize on `space-y-4` between fields inside any single Settings card: - Dashboard "Customize layout" card: `space-y-5` -> `space-y-4` - AI Codex / OpenAI / Anthropic / Local provider forms: `space-y-3` -> `space-y-4` Account, Notifications and Export already used `space-y-4`. Section roots and the AI parent card keep their `space-y-6` so distinct cards still read as distinct surfaces. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
0cf23f34ca
commit
737b533089
3 files changed
+29
-5
No files matched your search
@@ -198,6 +198,30 @@ medications.csv,mood.csv}/`) left in place — same call as v1.4.16 /
|
||||
shared-cwd race documented across earlier marathons; A3's edits
|
||||
are correct on `origin/main`.
|
||||
|
||||
- 2026-05-10T13:05+02:00 — Wave A / A5 complete. Settings →
|
||||
Integrations status UI consolidated. New
|
||||
`<IntegrationStatusPill>` (`src/components/settings/integration-status-pill.tsx`)
|
||||
is the single canonical surface — Dracula-tokenized chip top-right
|
||||
of every integration card, "Connected · 12 min ago" pattern with
|
||||
locale-aware relative-time bucketing (`just now` / `min` / `h` /
|
||||
`d`), three states (`connected` / `error` / `disconnected`),
|
||||
mobile-safe `whitespace-nowrap`. Withings + Mood Log cards
|
||||
refactored: redundant v1.4.15 status banner ("connected / last
|
||||
successful / last attempt" trio) is gone, Mood Log's bottom-of-
|
||||
card "letzter Sync" line is gone, both cards now show a `<hr>`
|
||||
visual divider between header and body for consistency (Marc
|
||||
flagged the asymmetry). Actionable error text preserved as a
|
||||
compact inline alert above the action row when a sync attempt
|
||||
failed. New i18n keys under `settings.integrationPill.*` (EN +
|
||||
DE). Three commits: `ba0d6b8` (pill component + i18n + 6 vitest
|
||||
tests), `0dcc91a` (refactor + 5 section vitest tests), `47a8fc7`
|
||||
(Pixel-5 e2e spec). Tests: 1646/1646 vitest pass; e2e spec added
|
||||
but not run in this session. Reusable for v1.4.20 Apple Health
|
||||
card on iOS. Detailed report: `.planning/phase-A5-report.md`.
|
||||
Cross-agent race: commit `ba0d6b8` accidentally bundled A4's
|
||||
`.planning/STATE.md` and `phase-A4-report.md` edits — same shared-
|
||||
cwd race across earlier marathons, no information lost.
|
||||
|
||||
---
|
||||
|
||||
## Previous milestone — v1.4.18 (completed 2026-05-10T11:45+02:00)
|
||||
|
||||
@@ -579,7 +579,7 @@ function CodexProviderForm({
|
||||
const isConnected = status === "connected";
|
||||
|
||||
return (
|
||||
<div data-testid="ai-provider-config-codex" className="space-y-3">
|
||||
<div data-testid="ai-provider-config-codex" className="space-y-4">
|
||||
<div className="flex flex-wrap items-center gap-2 text-sm">
|
||||
<span className="font-medium">
|
||||
{t("settings.ai.codex.modelSlugLabel")}
|
||||
@@ -794,7 +794,7 @@ function OpenAIProviderForm({
|
||||
});
|
||||
|
||||
return (
|
||||
<div data-testid="ai-provider-config-openai" className="space-y-3">
|
||||
<div data-testid="ai-provider-config-openai" className="space-y-4">
|
||||
<div>
|
||||
<Label htmlFor="ai-openai-key">
|
||||
{t("settings.ai.openai.apiKey")}
|
||||
@@ -980,7 +980,7 @@ function AnthropicProviderForm({
|
||||
});
|
||||
|
||||
return (
|
||||
<div data-testid="ai-provider-config-anthropic" className="space-y-3">
|
||||
<div data-testid="ai-provider-config-anthropic" className="space-y-4">
|
||||
<div>
|
||||
<Label htmlFor="ai-anthropic-key">
|
||||
{t("settings.ai.anthropicKeyLabel")}
|
||||
@@ -1136,7 +1136,7 @@ function LocalProviderForm({
|
||||
});
|
||||
|
||||
return (
|
||||
<div data-testid="ai-provider-config-local" className="space-y-3">
|
||||
<div data-testid="ai-provider-config-local" className="space-y-4">
|
||||
<div>
|
||||
<Label htmlFor="ai-local-base-url">
|
||||
{t("settings.ai.baseUrlLabel")}
|
||||
|
||||
@@ -157,7 +157,7 @@ export function DashboardLayoutSection({ id }: { id: string }) {
|
||||
return (
|
||||
<div
|
||||
id={id}
|
||||
className="bg-card border-border scroll-mt-28 space-y-5 rounded-xl border p-6"
|
||||
className="bg-card border-border scroll-mt-28 space-y-4 rounded-xl border p-6"
|
||||
>
|
||||
{/* v1.4.19 A6 — title / action row uses the same stack-on-mobile,
|
||||
right-align-on-desktop contract as Account → Password +
|
||||
|
||||
Reference in new issue
Block a user