Add COSS toast notifications and swap in the new logo

Wire COSS's (Base UI) Sonner-style stacked toast into the app:

- Install @coss/toast (components/ui/toast.tsx) and mount <ToastProvider> in
  the root layout; add a small notify.{success,error,info,warning} helper
  (lib/toast.ts) over toastManager so callers don't repeat the toast shape.
- Toast on the events requested: clinic created (onboarding), auth actions
  (sign in / sign up / sign out / password reset request + reset), patient
  saved (create/edit), and all failure branches as error toasts (kept inline
  errors as a fallback). New auth toast strings added to the en translation.
- Replace the logo everywhere: overwrite public/temetro-logo.png with the new
  1024² square mark (same aspect ratio as the old 500², so existing 32×32
  next/image usages stay undistorted; no reference changes needed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Khalid Abdi
2026-06-04 18:58:04 +03:00
parent 415961ab52
commit 2c5624e049
13 changed files with 435 additions and 13 deletions
@@ -18,7 +18,9 @@
"submitting": "Signing in…",
"noAccount": "Don't have an account?",
"signUpLink": "Sign up",
"error": "Could not sign in. Check your email and password and try again."
"error": "Could not sign in. Check your email and password and try again.",
"errorTitle": "Sign in failed",
"welcomeBack": "Welcome back"
},
"signup": {
"title": "Create your account",
@@ -36,7 +38,10 @@
"submitting": "Creating account…",
"haveAccount": "Already have an account?",
"signInLink": "Sign in",
"error": "Could not create your account."
"error": "Could not create your account.",
"errorTitle": "Sign up failed",
"created": "Account created",
"createdHint": "Set up your clinic to get started."
}
},
"nav": {
+16
View File
@@ -0,0 +1,16 @@
import { toastManager } from "@/components/ui/toast";
// Thin wrapper over COSS's (Base UI) toast manager so callers don't repeat the
// `{ type, title, description }` shape. COSS ships its own Sonner-style stacked
// toast — this is the app-wide notification entry point. The matching
// <ToastProvider> lives in app/layout.tsx.
export const notify = {
success: (title: string, description?: string) =>
toastManager.add({ type: "success", title, description }),
error: (title: string, description?: string) =>
toastManager.add({ type: "error", title, description }),
info: (title: string, description?: string) =>
toastManager.add({ type: "info", title, description }),
warning: (title: string, description?: string) =>
toastManager.add({ type: "warning", title, description }),
};