feat: complete verifiable birth-time rectification flow

This commit is contained in:
Jesse_Chen
2026-07-21 22:16:18 +08:00
parent eb8ed8bee4
commit bfc6870614
117 changed files with 6215 additions and 1038 deletions
+7 -3
View File
@@ -91,12 +91,16 @@ export function SidebarProvider({
const open = controlledOpen ?? uncontrolledOpen;
const isMobile = viewport === "mobile";
const setOpen = useCallback((nextOpen: boolean) => {
const commitOpen = useCallback((nextOpen: boolean) => {
userChangedDesktopState.current = true;
if (!isControlled) setUncontrolledOpen(nextOpen);
onOpenChange?.(nextOpen);
}, [isControlled, onOpenChange]);
const setOpen = useCallback((nextOpen: boolean) => {
commitOpen(nextOpen);
}, [commitOpen]);
const setOpenMobile = useCallback((nextOpen: boolean) => {
if (openMobileRef.current === nextOpen) return;
openMobileRef.current = nextOpen;
@@ -121,7 +125,7 @@ export function SidebarProvider({
if (shouldHandleSidebarShortcut(event)) {
event.preventDefault();
if (isMobile) setOpenMobile(!openMobile);
else setOpen(!open);
else commitOpen(!open);
}
if (event.key === "Escape" && isMobile && openMobile && !escapeBlocked) {
event.preventDefault();
@@ -131,7 +135,7 @@ export function SidebarProvider({
window.addEventListener("keydown", handleKeydown);
return () => window.removeEventListener("keydown", handleKeydown);
}, [escapeBlocked, isMobile, open, openMobile, setOpen, setOpenMobile]);
}, [commitOpen, escapeBlocked, isMobile, open, openMobile, setOpenMobile]);
useEffect(() => {
if (openMobile && !wasMobileOpen.current) {
+22
View File
@@ -0,0 +1,22 @@
"use client"
import { Toaster as Sonner, type ToasterProps } from "sonner"
function Toaster(props: ToasterProps) {
return (
<Sonner
position="bottom-right"
closeButton={false}
toastOptions={{
classNames: {
toast: "group toast",
title: "toast-title",
description: "toast-description",
},
}}
{...props}
/>
)
}
export { Toaster }