From 6be3335ada80a93af3d4cc5b35f67bad59c51dbc Mon Sep 17 00:00:00 2001 From: Carlos Gutierrez Date: Sun, 15 Feb 2026 11:10:25 -0500 Subject: [PATCH] Apply UI updates: tags gap, notifications, card click, breadcrumb, move share input Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/App.tsx | 6 +- src/components/CreatePostModal.tsx | 28 ++++----- src/components/MarkdownModal.tsx | 27 ++++++++ src/components/MarkdownPreview.tsx | 32 ++++++++++ src/components/NotificationCenter.tsx | 22 +++++++ src/components/PostCard.tsx | 88 ++++++++++++++++++++++----- src/components/UserCard.tsx | 23 ++++++- src/index.css | 23 ++++++- src/mock/seedData.ts | 6 +- src/routes/CreateUser.tsx | 41 ++++++------- src/routes/Home.tsx | 13 ++-- src/routes/PostDetail.tsx | 59 ++++++++++++++++-- src/routes/Profile.tsx | 17 ++++++ src/store/useAppStore.ts | 34 +++++++++-- src/types/Post.ts | 6 +- src/utils/fileHelpers.ts | 21 +++++++ 16 files changed, 370 insertions(+), 76 deletions(-) create mode 100644 src/components/MarkdownModal.tsx create mode 100644 src/components/MarkdownPreview.tsx create mode 100644 src/components/NotificationCenter.tsx diff --git a/src/App.tsx b/src/App.tsx index df2d563..ff2b3ab 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,7 +6,8 @@ import CreateUser from './routes/CreateUser' import PostDetail from './routes/PostDetail' import Navbar from './components/Navbar' import CreatePostModal from './components/CreatePostModal' -import PDFModal from './components/PDFModal' +import MarkdownModal from './components/MarkdownModal' +import NotificationCenter from './components/NotificationCenter' import useAppStore from './store/useAppStore' const App: React.FC = () => { @@ -20,8 +21,9 @@ const App: React.FC = () => {
+ - +
} /> diff --git a/src/components/CreatePostModal.tsx b/src/components/CreatePostModal.tsx index 4eebfc4..646ff5e 100644 --- a/src/components/CreatePostModal.tsx +++ b/src/components/CreatePostModal.tsx @@ -1,5 +1,7 @@ import React, { useState, startTransition } from 'react' import useAppStore from '../store/useAppStore' +import { generateRandomMarkdown } from '../utils/fileHelpers' +import MarkdownPreview from './MarkdownPreview' const CreatePostModal: React.FC = () => { const isOpen = useAppStore((s) => s.ui.isCreatePostOpen) @@ -8,28 +10,32 @@ const CreatePostModal: React.FC = () => { const createPost = useAppStore((s) => s.createPost) const [content, setContent] = useState('') - const [file, setFile] = useState(null) + const [attachedMarkdown, setAttachedMarkdown] = useState<{name:string,content:string} | null>(null) const [error, setError] = useState(null) if (!isOpen) return null + const onGenerate = () => { + const md = generateRandomMarkdown() + setAttachedMarkdown(md) + } + const onSubmit = (e: React.FormEvent) => { e.preventDefault() if (!currentUserId) { setError('Select a user first') return } - if (!content.trim()) { - setError('Content required') + if (!content.trim() && !attachedMarkdown) { + setError('Content or markdown required') return } setError(null) startTransition(() => { - const attachedPDF = file ? { name: file.name, url: URL.createObjectURL(file) } : undefined - createPost({ authorId: currentUserId, content: content.trim(), attachedPDF }) + createPost({ authorId: currentUserId, content: content.trim(), attachedMarkdown: attachedMarkdown ?? undefined }) toggle() setContent('') - setFile(null) + setAttachedMarkdown(null) }) } @@ -40,14 +46,8 @@ const CreatePostModal: React.FC = () => {