You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog' |
|
import { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription } from '@/components/ui/drawer' |
|
import { useScreenSize } from '@/providers/ScreenSizeProvider' |
|
import { Dispatch, useCallback } from 'react' |
|
import AccountManager from '../AccountManager' |
|
|
|
export default function LoginDialog({ |
|
open, |
|
setOpen, |
|
blockClose = false |
|
}: { |
|
open: boolean |
|
setOpen: Dispatch<boolean> |
|
/** Keep open while a NIP-07 extension authorize dialog is in progress. */ |
|
blockClose?: boolean |
|
}) { |
|
const { isSmallScreen } = useScreenSize() |
|
|
|
const handleOpenChange = useCallback( |
|
(next: boolean) => { |
|
if (!next && blockClose) return |
|
setOpen(next) |
|
}, |
|
[blockClose, setOpen] |
|
) |
|
|
|
if (isSmallScreen) { |
|
return ( |
|
<Drawer open={open} onOpenChange={handleOpenChange}> |
|
<DrawerContent className="max-h-[90vh]"> |
|
<DrawerHeader className="sr-only"> |
|
<DrawerTitle>Account Manager</DrawerTitle> |
|
<DrawerDescription>Manage your Nostr account and settings</DrawerDescription> |
|
</DrawerHeader> |
|
<div className="flex flex-col p-4 gap-4 overflow-auto"> |
|
<AccountManager close={() => setOpen(false)} /> |
|
</div> |
|
</DrawerContent> |
|
</Drawer> |
|
) |
|
} |
|
|
|
return ( |
|
<Dialog open={open} onOpenChange={handleOpenChange}> |
|
<DialogContent className="w-[520px] max-h-[90vh] py-8 overflow-auto"> |
|
<DialogHeader className="sr-only"> |
|
<DialogTitle>Account Manager</DialogTitle> |
|
<DialogDescription>Manage your Nostr account and settings</DialogDescription> |
|
</DialogHeader> |
|
<AccountManager close={() => setOpen(false)} /> |
|
</DialogContent> |
|
</Dialog> |
|
) |
|
}
|
|
|