From 36de16af7a70c902435a792e8ef72d63bcf6e185 Mon Sep 17 00:00:00 2001 From: Wanjohi Date: Fri, 2 Oct 2026 05:42:11 +0300 Subject: [PATCH] fix(auth): say what went wrong under the input, and drop the default headline Alerts were a bordered, tinted box with an icon, above the fields. They are now a line of small text under the fields: red when something went wrong, green when something just happened, no box and no icon. The sign-in screens no longer carry the "One place for all the ways you play" heading. Screens that pass their own heading (device approve, deny and the rest) keep it. --- packages/auth/src/ui/base.tsx | 15 +---------- packages/auth/src/ui/css.ts | 38 ++++---------------------- packages/auth/src/ui/render.tsx | 48 +++++++++++---------------------- packages/auth/src/ui/screen.ts | 2 +- 4 files changed, 22 insertions(+), 81 deletions(-) diff --git a/packages/auth/src/ui/base.tsx b/packages/auth/src/ui/base.tsx index 0fd3a30c..839341a6 100644 --- a/packages/auth/src/ui/base.tsx +++ b/packages/auth/src/ui/base.tsx @@ -79,20 +79,7 @@ export function Layout(
- {props.headline ?? ( -

- One place for all the ways we play.{' '} - - Gather Around - - . - - -

- )} + {props.headline}
{props.children}
diff --git a/packages/auth/src/ui/css.ts b/packages/auth/src/ui/css.ts index f866b85e..1889d9c9 100644 --- a/packages/auth/src/ui/css.ts +++ b/packages/auth/src/ui/css.ts @@ -41,9 +41,7 @@ export default ` --color-muted-foreground2: var(--color-gray-800); --color-red-600: hsl(358 75% 59%); - --color-red-100: hsl(357 37% 12%); --color-green-600: hsl(151 55% 42%); - --color-green-100: hsl(154 49% 9%); --font-sans: 'Geist Variable', ui-sans-serif, system-ui, sans-serif; --font-mona: 'Mona Sans Variable', var(--font-sans); @@ -359,46 +357,20 @@ body { } [data-component='form-alert'] { - display: flex; - align-items: center; - gap: 0.5rem; - border-radius: 0.75rem; - border: 1px solid var(--color-red-600); - background: var(--color-red-100); - padding: 0.75rem 1rem; + margin: -0.25rem 0 0; font-size: 0.8125rem; line-height: 1.25rem; - color: var(--color-foreground); + font-weight: 500; + color: var(--color-red-600); text-align: left; } [data-component='form-alert'][data-color='success'] { - border-color: var(--color-green-600); - background: var(--color-green-100); -} - -[data-component='form-alert'] svg { - height: 1.25rem; - width: 1.25rem; - flex-shrink: 0; -} - -[data-component='form-alert'] [data-slot='icon-success'] { - display: none; color: var(--color-green-600); } -[data-component='form-alert'] [data-slot='icon-danger'] { - display: block; - color: var(--color-red-600); -} - -[data-component='form-alert'][data-color='success'] [data-slot='icon-success'] { - display: block; -} - -[data-component='form-alert'][data-color='success'] [data-slot='icon-danger'] { - display: none; +[data-component='form-alert'] + [data-component='form-alert'] { + margin-top: -0.5rem; } /* The secondary action: a way in that is not the one being recommended, and diff --git a/packages/auth/src/ui/render.tsx b/packages/auth/src/ui/render.tsx index 9f9e0317..b5910a7c 100644 --- a/packages/auth/src/ui/render.tsx +++ b/packages/auth/src/ui/render.tsx @@ -107,12 +107,12 @@ function Form(props: { theme?: Theme; screen: FormScreen }) { return (
- {screen.alerts?.map((alert) => ( - - ))} {screen.fields.map((field) => ( ))} + {screen.alerts?.map((alert) => ( + + ))} @@ -284,37 +284,19 @@ function Input(props: { field: Field }) { ); } -function Banner(props: { alert: Alert }) { +/** + * A line of small text under the fields: red when something went wrong, green + * when something just happened. No box and no icon, so it reads as part of the + * input it is about rather than as a second thing on the page. + */ +function Note(props: { alert: Alert }) { return ( -
- - - - - - - {props.alert.message} -
+

+ {props.alert.message} +

); } diff --git a/packages/auth/src/ui/screen.ts b/packages/auth/src/ui/screen.ts index 90c8f305..9634fe0b 100644 --- a/packages/auth/src/ui/screen.ts +++ b/packages/auth/src/ui/screen.ts @@ -52,7 +52,7 @@ export interface Link { external?: boolean; } -/** The banner above a form saying what went wrong, or what just happened. */ +/** The small line under a form's fields saying what went wrong, or what just happened. */ export interface Alert { tone: 'danger' | 'success'; message: string;