Commit Graph

1391 Commits

Author SHA1 Message Date
Alex Gleason 042489a39f Replace Saturn FAB with user's avatar shape (circle default, emoji mask when set) 2026-03-23 23:03:03 -05:00
Alex Gleason 187081199c Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-23 22:56:15 -05:00
Chad Curtis 9ef6f085a0 Harsher arc curves and move bottom nav items up 2026-03-23 22:40:31 -05:00
Alex Gleason 0baeca6ce7 Render Bluesky posts as full feed-style thread on /i/ detail pages
Replace the compact ExternalPostCard with a full feed-style layout
matching the /bluesky feed when viewing individual Bluesky posts.
Shows large avatar, full text, image/link embeds, and interactive
action buttons (comment, repost, react, share) for a thread-like feel.
2026-03-23 22:30:45 -05:00
Alex Gleason 4c1576f704 Add Bluesky to sidebar navigation and update icon to Simple Icons SVG 2026-03-23 22:18:10 -05:00
Alex Gleason 9947c17ddd Merge remote-tracking branch 'origin/main' into bluesky 2026-03-23 22:12:33 -05:00
Alex Gleason 4ea657a7b7 Restyle Bluesky disclaimer as a cheeky amber warning 2026-03-23 22:10:55 -05:00
Alex Gleason 715c58ceba Restore original Bluesky disclaimer text with styled callout 2026-03-23 22:10:28 -05:00
Alex Gleason 4f9f2c10bf Style Bluesky disclaimer as a branded callout banner 2026-03-23 22:09:32 -05:00
Alex Gleason d1c434050f Add Bluesky disclaimer in compose modal when replying to bsky.app URLs 2026-03-23 22:08:46 -05:00
Alex Gleason 87a295c974 Hide images in compose modal reply indicator and external post embeds
Thread hideImage prop through LinkEmbed -> BlueskyEmbed -> ExternalPostCard
so images are suppressed in the compose dialog preview, matching the
behavior of normal post reply indicators.
2026-03-23 21:57:22 -05:00
Alex Gleason 6c9a584b46 Link avatar and display name to Bluesky profile /i/ page
Clicking the avatar, display name, or handle now navigates to
/i/{bsky.app/profile/handle} instead of the post's /i/ page.
Clicks stop propagation so the card-level navigation still works.
2026-03-23 21:55:00 -05:00
Alex Gleason 0c03b78b56 Show link preview in compose modal when commenting on external URLs
ReplyComposeModal now renders a LinkPreview card when the event is a URL,
so users see what they're commenting on. Previously the preview was skipped
entirely for URL-based comments.
2026-03-23 21:52:29 -05:00
Alex Gleason dac751b0a9 Show Bluesky like counts and open comment compose dialog inline
Pass post.likeCount to ExternalReactionButton via new count prop so like
counts display from the Bluesky API. Comment button now opens the
ReplyComposeModal with the post URL instead of navigating away.
2026-03-23 21:46:14 -05:00
Alex Gleason b4eecd2588 Extract shared ExternalReactionButton with emoji picker for NIP-73 reactions
The Bluesky page had a broken inline reaction that just published '+' with
no emoji picker. The /i/ page had the full implementation with Popover,
QuickReactMenu, hover-to-open, and custom emoji support. Extracted the
reaction logic into a reusable ExternalReactionButton component and wired
it into both pages, removing ~230 lines of duplicated/inferior code.
2026-03-23 21:13:27 -05:00
Alex Gleason 0ec844c519 Add Bluesky discovery page with trending posts and search 2026-03-23 20:28:15 -05:00
Alex Gleason a1b2c23e46 Merge origin/main into feat/curves 2026-03-23 15:31:05 -05:00
Alex Gleason a80b667327 Add Wikipedia and Archive results to autocomplete search dropdown
Integrate useWikipediaSearch and useArchiveSearch into both the desktop
sidebar dropdown (ProfileSearchDropdown) and mobile bottom-nav sheet
(MobileSearchSheet). At most 1 result from each source is shown, always
positioned after Nostr profiles to preserve profile precedence. Keyboard
navigation indices updated to include the new items.
2026-03-23 13:53:04 -05:00
Alex Gleason 894f692dea Display rich Wikipedia article content on /i/ pages instead of generic link preview
Detect Wikipedia URLs and render a custom WikipediaArticleHeader with hero
image, article title, Wikidata description, expandable extract, and a
Read on Wikipedia footer link. Also uses the Wikipedia API for accurate
page titles in the header bar and SEO metadata, and navigates back to
/wikipedia on the back button.
2026-03-23 13:31:40 -05:00
Alex Gleason 02a16cad90 Fix Wikipedia icon to use the correct Simple Icons SVG path 2026-03-23 13:24:13 -05:00
Alex Gleason 4dd1ceb9b4 Add custom Wikipedia icon, use it in page header, card fallbacks, and sidebar 2026-03-23 13:23:22 -05:00
Alex Gleason a10feef57d Add 3-dots menu to badge detail page for sidebar and other actions 2026-03-23 12:37:27 -05:00
Alex Gleason 358e25560f Make only tabs sticky on follow pack detail page 2026-03-23 12:28:55 -05:00
Lemon c1ebe3a03d Increase nav bar opacity to 95%, add top margin to bottom nav icons for arc clearance 2026-03-22 23:36:40 -07:00
Lemon 1cfee425ac Restore text labels under bottom nav icons 2026-03-22 23:36:40 -07:00
Lemon 9b5c9767a8 Fix relay back button, add hasSubHeader to ListDetailPage, make relay names clickable 2026-03-22 23:36:40 -07:00
Lemon 3acd41490b Replace backdrop-blur headers with PageHeader in LiveStream, CSAE, and Privacy pages 2026-03-22 23:36:40 -07:00
Lemon 5bb485e5f9 Remove gradient from planet FAB, use solid primary color 2026-03-22 23:36:40 -07:00
Lemon b94ef0a46c Cleanup: scope drawer clip-path ID with useId(), fix indentation, add layout comments 2026-03-22 23:36:40 -07:00
Lemon ae0c90e1ce Fix prose text color to use theme foreground instead of hardcoded grays
Replace dark:prose-invert with text-foreground on all prose containers so
markdown content matches the active theme colors. Also bump article preview
text size from text-sm to text-[15px] to match note content in the feed.
2026-03-22 23:36:40 -07:00
Lemon 31e6810fcb Disable decorative arcs on vines page for clean full-bleed video 2026-03-22 23:36:40 -07:00
Lemon 2b8b7a1750 Cleanup: remove dead code, hoist styles, adopt PageHeader across remaining pages 2026-03-22 23:36:40 -07:00
Lemon ef2b99ff2d Hoist inline style objects to module-level constants
Avoid recreating style objects on every render in MobileBottomNav,
FloatingComposeButton, and MobileDrawer by extracting them to
module-level constants.
2026-03-22 23:35:56 -07:00
Lemon b09c78df92 Cleanup: migrate remaining pages from sticky headers, extract CSS custom properties
- Remove STICKY_HEADER_CLASS + backdrop-blur from TagFeedPage, ListDetailPage,
  RelayPage, and DomainFeedPage to match the arc-based header style
- Migrate ListDetailPage tab bar to SubHeaderBar
- Migrate ThemesPage header to use shared PageHeader component
- Extract --top-bar-height and --bottom-nav-height CSS custom properties in
  index.css, replacing hardcoded 2.5rem/2.75rem in all calc() expressions
- Document MobileDrawer DRAWER_BG_WIDTH constant (300px + 36px arc overhang)
- Remove unused STICKY_HEADER_CLASS import from ProfilePage
2026-03-22 23:35:56 -07:00
Lemon 98954e19b8 Refactor: extract ArcBackground, PlanetButton, and PageHeader shared components
Consolidate duplicated patterns from iterative development into reusable
components:

- ArcBackground: shared SVG arc shape used by SubHeaderBar, MobileTopBar,
  and MobileBottomNav (eliminates 3x duplicated SVG paths and magic numbers)
- PlanetButton: extracted FAB planet SVG with useId()-scoped gradient IDs
  to prevent collisions if multiple instances ever coexist
- PageHeader: standardized back+icon+title header used across 10 pages

Net reduction of ~144 lines with no behavioral changes.
2026-03-22 23:33:06 -07:00
Lemon 613e794c14 Unify all header arc+background into single SVG shapes to prevent seams
Create SubHeaderBar component that draws the tab background and
decorative arc as one combined SVG path (rect + curve). Replace all 9
sub-header instances across Feed, Search, Notifications, Videos, Vines,
Photos, Themes, Events, and Books pages.

Also update MobileTopBar to draw its background as a unified SVG shape
(rect-only when sub-header present, rect+arc when standalone).

Eliminates the sub-pixel transparent seam between bg-background/80
containers and their separate SVG arc overlays.
2026-03-22 23:33:06 -07:00
Lemon 7fad0770f0 Hide bottom nav fully including arc overhang on scroll
Replace translate-y-full (100%) with translateY(calc(100% + 20px))
to account for the 20px arc extending above the nav element.
2026-03-22 23:33:06 -07:00
Lemon e3301765f6 Match bottom nav arc curvature to top header arc
Use same physical deflection (20px) as the top header's decorative arc
so both curves have identical curvature radius.
2026-03-22 23:33:06 -07:00
Lemon 2f5f284ac9 Unify bottom nav arc and bar into single SVG shape
Draw the arc and rectangle as one combined path instead of a separate
SVG arc over a bg-background/80 div. Single fill layer eliminates both
the sub-pixel seam during animation and the double-opacity overlap line.
2026-03-22 23:33:06 -07:00
Lemon b907c27be4 Fix sub-pixel seam between bottom nav arc and bar during scroll animation
Overlap the SVG arc 1px into the nav bar (bottom: calc(100% - 1px))
and add will-change-transform to promote the entire nav to a single
compositing layer. Prevents the transparent seam that appeared during
fast scroll-triggered show/hide transitions.
2026-03-22 23:33:06 -07:00
Lemon d7c662ec7c Invert Saturn ring mask: middle arc passes in front, edges pass behind 2026-03-22 23:33:06 -07:00
Lemon 6a8d1505f1 Split Saturn ring into explicit front/back arc segments for Safari-safe mask
Replaced the pathLength/strokeDasharray trick with two literal front-arc
path segments in the mask (computed by splitting the cubic bezier at
circle intersection points). The ring visually passes in front of the
planet body at the bottom-left and top-right, and behind it through the
middle — identical to the previous Chrome rendering, now cross-browser.
2026-03-22 23:33:06 -07:00
Lemon c2309a0bd7 Fix Saturn FAB mask rendering on iOS Safari
Remove pathLength/strokeDasharray/strokeDashoffset from the SVG mask,
which WebKit renders inconsistently. Use a simple full-path black
stroke instead — cross-browser safe with nearly identical visual result
at FAB size.
2026-03-22 23:33:06 -07:00
Lemon 982b1af312 Add gradient fill and colored drop-shadow to Saturn FAB
Planet body uses accent→primary diagonal gradient, ring uses
primary→accent horizontal gradient. Replaced generic drop-shadow-lg
with a primary-colored layered drop-shadow for a glowing float effect
that adapts to the current theme.
2026-03-22 23:33:06 -07:00
Lemon 0baab2521c Reduce mobile bottom nav height from h-14 (56px) to h-11 (44px)
Update all CSS utilities referencing bottom nav height (bottom-fab,
bottom-mobile-nav, pb-overscroll, ai-chat-height, livestream-height,
vine-slide-height) from 3.5rem to 2.75rem.
2026-03-22 23:33:06 -07:00
Lemon 2637cb2b1d Remove text labels from mobile bottom nav, keep icons only 2026-03-22 23:33:06 -07:00
Lemon ecfa74721b Revert logo size back to 28px in mobile top bar 2026-03-22 23:33:06 -07:00
Lemon 87092f0cad Reduce mobile top bar height from h-12 (48px) to h-10 (40px)
Update all CSS utilities that reference the top bar height (top-mobile-bar,
-mt-mobile-bar, ai-chat-height, livestream-height, vine-slide-height) from
3rem to 2.5rem. Scale logo from 28px to 24px to fit.
2026-03-22 23:33:06 -07:00
Lemon 14df0ba54d Further reduce tab sub-header height from py-2 to py-1.5 (~32px) 2026-03-22 23:33:06 -07:00
Lemon fe786415ad Reduce tab sub-header height from py-3.5 to py-2
Affects all shared tab bars (Follows/Ditto, Posts/Accounts,
All/Mentions, Follows/Global, etc.) via the single TabButton
component. Brings total height from ~48px to ~36px for a more
compact mobile experience.
2026-03-22 23:33:06 -07:00