Add discussion creation and reply composer UI (#128)
* feat(web): add createReply API client function
* feat(web): add AuthGate component
Sign-in prompt bar for unauthenticated users, displayed as a fixed
bottom bar replacing interactive elements like the reply composer.
* feat(web): add reply button to ReplyCard
* feat(web): add NewTopicButton component
* feat(web): wire NewTopicButton into header and category pages
* feat(web): add ReplyComposer component
Fixed bottom bar for replying to topics and replies with
collapse/expand states, reply targeting with quote banner,
locked topic notice, and markdown editing support.
* feat(web): wire reply composer into topic detail page
* feat(web): add keyboard shortcuts and focus management for reply composer
Add `r` shortcut to open the reply composer (guarded against input/textarea/contenteditable
and modifier keys), `Escape` to collapse it, and focus restoration when collapsing.
ReplyComposer now uses forwardRef with useImperativeHandle to expose expand() to parent.
* fix(web): resolve lint errors and fix new topic page test mock
Prefix unused destructured props (topicCid, communityDid) with underscore,
remove unused variable in test, and add useSearchParams to page.test.tsx
navigation mock.
* style(web): format files with prettier
authored by