diff --git a/frontend/components/auth/auth-ui.tsx b/frontend/components/auth/auth-ui.tsx index 34ea1bb..3b3e823 100644 --- a/frontend/components/auth/auth-ui.tsx +++ b/frontend/components/auth/auth-ui.tsx @@ -14,9 +14,10 @@ import { cn } from "@/lib/utils"; export function AuthBrand() { return (
+ {/* White fox mark — inverted to black in light mode. */} temetro([]); const [selected, setSelected] = useState(null); const [sheetOpen, setSheetOpen] = useState(false); + const [query, setQuery] = useState(""); useEffect(() => { let active = true; @@ -169,6 +171,20 @@ export function PrescriptionsView() { } }; + // Case-insensitive substring match, same pattern as the Patients page. + const search = query.trim().toLowerCase(); + const filtered = useMemo(() => { + if (!search) return list; + return list.filter( + (rx) => + rx.name.toLowerCase().includes(search) || + rx.fileNumber.includes(search) || + rx.medication.toLowerCase().includes(search) || + rx.prescriber.toLowerCase().includes(search) || + rx.status.toLowerCase().includes(search), + ); + }, [list, search]); + const kpis = useMemo( () => [ { @@ -201,14 +217,25 @@ export function PrescriptionsView() { {t("prescriptions.subtitle")}

- +
+
+ + setQuery(event.target.value)} + placeholder={t("prescriptions.searchPlaceholder")} + value={query} + /> +
+ +
@@ -222,9 +249,16 @@ export function PrescriptionsView() { title={t("prescriptions.recent")} >
- {list.map((rx) => ( + {filtered.map((rx) => ( openRx(rx)} rx={rx} /> ))} + {filtered.length === 0 && ( +

+ {search + ? t("prescriptions.noMatches") + : t("prescriptions.emptyList")} +

+ )}
diff --git a/frontend/components/sidebar-02/app-sidebar.tsx b/frontend/components/sidebar-02/app-sidebar.tsx index 1b42400..3d16648 100644 --- a/frontend/components/sidebar-02/app-sidebar.tsx +++ b/frontend/components/sidebar-02/app-sidebar.tsx @@ -60,9 +60,10 @@ export function DashboardSidebar() { className="flex items-center justify-center" href="#" > + {/* White fox mark — inverted to black in light mode. */}