From 858ec3beaaa4840a8a4d40d9f3b628ebc27b8795 Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Mon, 16 Feb 2026 17:50:46 -0600 Subject: [PATCH] Add post preview to More menu, blur modal backdrops, polish compose modal - NoteMoreMenu now shows a compact post preview at the top (avatar, author name, timestamp, and 3-line-clamped content) before menu items - Dialog overlay updated globally: bg-black/60 + backdrop-blur-sm for a frosted-glass effect behind all modals - FloatingComposeButton modal reworked to match the same presentation pattern: rounded-2xl, hidden default close button replaced with a centered header (X / "New post" title), separator, compose area Co-authored-by: shakespeare.diy --- src/components/FloatingComposeButton.tsx | 25 +++++++++++--- src/components/NoteMoreMenu.tsx | 44 +++++++++++++++++++----- src/components/ui/dialog.tsx | 2 +- 3 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/components/FloatingComposeButton.tsx b/src/components/FloatingComposeButton.tsx index 8b98c34a..dd63c120 100644 --- a/src/components/FloatingComposeButton.tsx +++ b/src/components/FloatingComposeButton.tsx @@ -1,7 +1,12 @@ import { useState } from 'react'; -import { Pencil } from 'lucide-react'; +import { Pencil, X } from 'lucide-react'; import { Button } from '@/components/ui/button'; -import { Dialog, DialogContent, DialogTitle } from '@/components/ui/dialog'; +import { + Dialog, + DialogContent, + DialogTitle, +} from '@/components/ui/dialog'; +import { Separator } from '@/components/ui/separator'; import { ComposeBox } from '@/components/ComposeBox'; import { useCurrentUser } from '@/hooks/useCurrentUser'; @@ -22,10 +27,22 @@ export function FloatingComposeButton() { - -
+ + {/* Header */} +
+ New post +
+ + + + {/* Compose area */} setOpen(false)} placeholder="What's happening?" />
diff --git a/src/components/NoteMoreMenu.tsx b/src/components/NoteMoreMenu.tsx index 0fdea8da..2beb4c8a 100644 --- a/src/components/NoteMoreMenu.tsx +++ b/src/components/NoteMoreMenu.tsx @@ -1,4 +1,3 @@ -import { useState } from 'react'; import { nip19 } from 'nostr-tools'; import { ArrowUpDown, @@ -15,11 +14,14 @@ import { DialogContent, DialogTitle, } from '@/components/ui/dialog'; +import { Avatar, AvatarImage, AvatarFallback } from '@/components/ui/avatar'; import { Separator } from '@/components/ui/separator'; import { Button } from '@/components/ui/button'; +import { NoteContent } from '@/components/NoteContent'; import { useBookmarks } from '@/hooks/useBookmarks'; import { useAuthor } from '@/hooks/useAuthor'; import { genUserName } from '@/lib/genUserName'; +import { timeAgo } from '@/lib/timeAgo'; import { toast } from '@/hooks/useToast'; import { cn } from '@/lib/utils'; import type { NostrEvent } from '@nostrify/nostrify'; @@ -42,7 +44,7 @@ function MenuItem({ icon, label, onClick, destructive }: MenuItemProps) {