Skip to content

Redesign entire UI/UX with editorial grayscale design language - #153

Merged
malkoG merged 64 commits into
devfrom
feature/redesign-entire-screen
Mar 19, 2026
Merged

malkoG merged 64 commits into
devfrom
feature/redesign-entire-screen

Conversation

@malkoG

@malkoG malkoG commented Mar 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Full UI/UX redesign replacing the AI-slopped design (decorative gradients, emoji categories, uniform roundedness, emerald accents) with an editorial grayscale design language driven by typography, weight contrast, and intentional borders.

Key changes:

  • Design tokens: Grayscale palette, reduced border-radius (0.375rem base), no emerald colors
  • Primitives: Card (no shadow/rounded-xl), Badge (rounded-sm), Button/Input (grayscale focus rings)
  • Navigation: Editorial wordmark + grayscale logo, uppercase nav, hamburger mobile menu, editorial footer
  • All pages redesigned: Homepage (carousel + date-grouped events), event detail, event/group create wizards, places/check-ins, place detail, calendar (ledger-style grid), group profile, my groups, categories, settings, polls, notes, auth
  • Removed: All decorative gradients (pickGradient), emoji from category labels, colored accent palette, Card wrappers on most pages (replaced with plain sections + editorial headers)

Test plan

  • Visual check all public pages (homepage, events, event detail, groups, places, categories)
  • Visual check organizer pages (group dashboard, event dashboard, create wizards)
  • Mobile responsive: hamburger menu, bottom bar CTAs, stacked layouts
  • RSVP flow works (register button in sidebar + mobile bottom bar)
  • Calendar: event type distinction (RSVP/hosting/bookmarked), month navigation
  • Map interactions (click-to-expand on event detail, place check-ins)
  • Auth flow (sign-in OTP, Mastodon/Misskey dialogs, onboarding wizard)

Summary by CodeRabbit

Release Notes

  • New Features

    • Added mobile hamburger navigation menu for easier navigation on smaller screens.
  • Styling & Visual Updates

    • Redesigned UI to use grayscale color scheme with editorial typography instead of gradient/colorful theme.
    • Removed emoji icons from category labels throughout the app.
    • Updated button, card, badge, and form component styling for cleaner appearance.
    • Redesigned event, category, group, and places page layouts with improved visual hierarchy.

malkoG added 30 commits March 19, 2026 13:23
Design spec for full UI/UX overhaul replacing AI-slopped gradients,
emoji labels, and uniform roundedness with editorial grayscale
typography-driven design language.
…ion notes

- Map hex palette to CSS variables (globals.css / shadcn theming)
- Add categories, auth, polls, notes, calendar page designs
- Add navigation change documentation (bottom tabs → hamburger)
- Add implementation notes: font, Tailwind config, component changes
- Add focus state accessibility guidance
- Clarify dark mode is out of scope
- Note homepage grid → list is intentional layout change
18-task plan covering: design tokens, shared primitives (Card, Badge,
Button, Input, Tabs, Select, Checkbox), navigation, gradient removal,
emoji removal, and page-by-page editorial treatment for all screens.
…sses

- Badge: ring-[3px] → ring-1 ring-ring/20
- Button ghost: remove dark:hover:bg-accent/50
- TabsTrigger: ring-2 ring-offset-2 → ring-1 ring-ring/20
Apply full editorial design pass to event detail page: split hero into
image/no-image variants (no-image gets #fafafa bg, border-b-2, extrabold
title, muted badge, watermark date, and bordered organizer buttons;
image hero gets bg-black/50 category badge), update section headers to
xs/bold/uppercase/tracking-wide, normalize organizer avatar fallback to
bg-muted, use rounded+border on organizer cards, and remove shadow-sm
from register page tier selection.
- Image thumbnails: 140x94px with rounded corners (matching spec)
- Date fallback: 3px left border + large day number + month (no wrapping)
- More spacing between rows
Events are now grouped under date headers (e.g., "Wednesday, March 19")
with sticky positioning. Removes the per-row date column in favor of
group headers. Image thumbnails shown when available.
Use inline width/height/min/max to ensure images don't break out of
their containers regardless of CSS specificity.
Mobile menu now includes: Events, Groups, Places, My Groups,
My Calendar, Settings, Create Group, Create Event, Admin Panel
(if admin), and Sign out — matching the desktop dropdown.
- Page title: font-extrabold
- Section headers: uppercase tracking-wide editorial style
- Remove emoji from selected place, dialog title, nearby dialog cards
- Place detail: 2px editorial border on header, uppercase section titles
- Nearby cards: rounded corners
malkoG added 27 commits March 19, 2026 14:38
- Header: 2px editorial border, extrabold title
- Calendar grid: bordered container, uppercase weekday headers on
  fafafa background, hover states on cells, larger day numbers
- Month header: extrabold
- Mobile list: editorial date headers with border-b, divide-y events
- Legend: refined with rounded indicator dots, border-t separator
- Calendar subscription: section with editorial header, no Card wrapper
- Remove unused Card/Separator/CalendarDays imports
- RSVP'd: inverted black bg + white text (strongest contrast)
- Hosting: gray bg + black left border
- Bookmarked: light bg + star prefix
- Mobile list: right-aligned type badges (Going/Host/★)
- Legend matches new visual styles with inline badge examples
Desktop grid redesign:
- 2px bottom border on weekday headers (editorial signature)
- Row-based layout (per-week rows with border-b) instead of flat grid
- Day numbers: plain text, bold when has events, extrabold for today
  with inline "today" label — no rounded-full pill
- Events: plain text with square dot indicator (■) instead of colored
  chips/pills. RSVP'd = black dot + bold, Hosting = gray dot + medium,
  Bookmarked = light dot + muted
- Hover: underline on text, not background color change
- Empty days: light opacity, not colored background
- Legend: square dot indicators matching grid

This feels like a newspaper schedule, not a SaaS widget.
- Row-based weeks with border-b instead of flat grid
- Day numbers: plain text (bold with events, extrabold for today
  with inline label) — no rounded-full pill
- Events: plain text with square dot + font-medium title
  — no background chips, no colored left borders
- Selected day: subtle #f5f5f5 background only
- Matches My Calendar editorial ledger treatment
- Events show time + title with thin 2px left border (not black squares)
- Today: underline instead of inline label
- Times in 9px muted, titles in 10px medium
- No background chips, no dot indicators
- Keeps row-based week layout with border separators
- Editorial section header with 2px border
- Remove verbose "checked in at 📍" format
- Each row: avatar + name/timestamp + place name (link) + note
- No Card wrapper, plain divide-y list
- Remove colored pin emoji, use plain text place link
Header:
- Avatar + name/handle/summary/website/stats/categories all in one
  block with 2px editorial border bottom
- Follow + Events + Dashboard buttons left-aligned
- No Card wrapper

Places:
- Editorial section header, divide-y list with hover underline
- Category as plain text border pill

Activity timeline:
- Square dots instead of rounded circles
- Events: 3px left border accent, uppercase date, bold title, hover state
- Notes: 3px left border (light), prose content, permalink
- Type badges as tiny uppercase bordered labels
- No Card wrappers around timeline items

Remove unused Card/Calendar/renderMarkdown imports
- Header: 2px editorial border, extrabold title, compact Create button
- Each group row: avatar + bold name (hover underline) + role badge
  (tiny uppercase bordered label) + handle + stats
- Stats: bold numbers for followers/members/upcoming
- Empty state: plain centered text, no Card wrapper
- Remove unused Badge/Card imports
Listing:
- Editorial header with 2px border
- List layout with divide-y (not grid cards)
- Each row: bold category name + feed handle + chevron
- No Card wrappers

Detail:
- Clean header: back link, extrabold title, description, feed handle
- Follow/ICS as small text buttons (not icon-only)
- Calendar without Card wrapper
- Remove unused Card/CalendarPlus/UserPlus imports
- Header: 2px editorial border, extrabold title
- Federation section: editorial section header, no Card wrapper
- Linked Accounts: 2px border-t section separator, editorial header
- Remove unused Card/Separator imports
Polls:
- 2px editorial border header with extrabold question
- Type/status as tiny uppercase bordered labels
- Results with border-t separator, bold voter count
- Remove Card/Badge imports

Notes:
- Author header: avatar + name/handle + date on right
- 2px editorial border
- Content as clean prose below
- Remove Card imports
- Grayscale logo + extrabold title + subtitle (centered)
- No Card wrapper — clean open layout
- "Get started" link in border-t separated footer
- Remove unused Card imports
- Step dots centered at top (smaller, subtle)
- Back/Next buttons at bottom in border-t separated row
- Last step shows "Sign in →" primary button
- Clearer wizard flow: content in middle, navigation at bottom
…yout

- Remove all Card/CardContent/CardHeader/CardTitle wrappers
- Two-column with border-right separator (not gap)
- Date/Location in main column top (desktop), not sidebar
- Sidebar: map → attendee avatars → RSVP → bookmark (clean, no Card)
- About/Organizers/Discussion as plain sections with editorial headers
- Attendees (organizer-only) as plain section
- Mobile: bordered div instead of Card for info section
- Remove -mt-14 hero overlap trick
- Remove unused Card imports
- Stepper: bar-based progress (3px height) instead of numbered circles
- Editorial page header with 2px border
- Remove all Card wrappers from form steps
- Section headers: uppercase editorial style
- Blue info alert → grayscale neutral
- Green success alert → grayscale neutral
- Remove unused Card imports
- Stepper: bar-based progress matching group create wizard
- Editorial page header with 2px border
- Blue info alert → grayscale neutral
- Error section: remove Card wrapper
- Remove unused Card imports
@coderabbitai

coderabbitai Bot commented Mar 19, 2026 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 87fc8bee-3fb3-4ba4-94e1-a0e293cefbc9

📥 Commits

Reviewing files that changed from the base of the PR and between e8877ba and f972929.

📒 Files selected for processing (41)
  • .gitignore
  • docs/superpowers/plans/2026-03-19-ui-redesign-editorial-grayscale.md
  • docs/superpowers/specs/2026-03-19-ui-redesign-editorial-grayscale-design.md
  • src/components/EventCalendar.tsx
  • src/components/PlaceCategorySelect.tsx
  • src/components/PlacePicker.tsx
  • src/components/UpcomingEventList.tsx
  • src/components/dashboard/DashboardSidebar.tsx
  • src/components/dashboard/GaugeBar.tsx
  • src/components/event-form/Stepper.tsx
  • src/components/ui/badge.tsx
  • src/components/ui/button.tsx
  • src/components/ui/card.tsx
  • src/components/ui/checkbox.tsx
  • src/components/ui/input.tsx
  • src/components/ui/select.tsx
  • src/components/ui/tabs.tsx
  • src/components/ui/textarea.tsx
  • src/routes/__root.tsx
  • src/routes/auth/onboarding.tsx
  • src/routes/auth/signin.tsx
  • src/routes/calendar/index.tsx
  • src/routes/categories/$categoryId.tsx
  • src/routes/categories/index.tsx
  • src/routes/events/$eventId/index.tsx
  • src/routes/events/$eventId/register.tsx
  • src/routes/events/create.tsx
  • src/routes/events/index.tsx
  • src/routes/groups/$identifier/dashboard/members.tsx
  • src/routes/groups/$identifier/edit.tsx
  • src/routes/groups/$identifier/index.tsx
  • src/routes/groups/create.tsx
  • src/routes/groups/my.tsx
  • src/routes/index.tsx
  • src/routes/notes/$noteId.tsx
  • src/routes/places/$placeId/index.tsx
  • src/routes/places/index.tsx
  • src/routes/polls/$pollId.tsx
  • src/routes/settings/index.tsx
  • src/shared/gradients.ts
  • src/styles/globals.css

📝 Walkthrough

Walkthrough

This PR implements a comprehensive UI redesign transitioning the application from an emerald and gradient-based design system to an editorial grayscale aesthetic. The changes encompass design token updates, removal of gradient utilities and emoji category labels, styling updates across shared UI primitives, layout restructuring on multiple pages, and simplified visual hierarchy throughout the application.

Changes

Cohort / File(s) Summary
Git Configuration
.gitignore
Added .superpowers/ directory to ignore patterns.
Documentation & Specifications
docs/superpowers/plans/2026-03-19-ui-redesign-editorial-grayscale.md, docs/superpowers/specs/2026-03-19-ui-redesign-editorial-grayscale-design.md
Added comprehensive implementation plan and design specification documents for the grayscale redesign, detailing file mappings, task sequences, component updates, and page-by-page restyling targets.
Design Tokens & Gradients
src/styles/globals.css, src/shared/gradients.ts
Replaced Oklch color definitions with fixed hex grayscale values, removed emerald color variables, reduced border radius, deleted HERO_GRADIENTS and pickGradient() function.
UI Primitive Components
src/components/ui/badge.tsx, src/components/ui/button.tsx, src/components/ui/card.tsx, src/components/ui/checkbox.tsx, src/components/ui/input.tsx, src/components/ui/select.tsx, src/components/ui/tabs.tsx, src/components/ui/textarea.tsx
Updated focus ring styling, removed dark-mode variants, replaced rounded-xl/rounded-full with rounded-sm/rounded, removed shadow-sm classes, updated border and color token references.
Feature Components - Calendar & Events
src/components/EventCalendar.tsx, src/components/UpcomingEventList.tsx, src/components/event-form/Stepper.tsx
Removed pickGradient dependency, refactored grid/week rendering logic, replaced card/shadow styling with border-based layouts, simplified color indicators, redesigned stepper from circle-based to horizontal segment layout.
Feature Components - Places & Navigation
src/components/PlaceCategorySelect.tsx, src/components/PlacePicker.tsx, src/components/dashboard/DashboardSidebar.tsx, src/components/dashboard/GaugeBar.tsx
Removed emoji rendering, replaced emerald color tokens with grayscale, updated hover/active states to use foreground/muted colors, converted gauge color palette from saturated to grayscale shades.
Root Layout & Navigation
src/routes/__root.tsx
Added mobile hamburger menu with overlay navigation, updated desktop nav styling to uppercase/tracked letters, replaced header background styling, changed footer layout, renamed "Check-ins" to "Places", updated brand rendering with grayscale logo.
Auth Pages
src/routes/auth/onboarding.tsx, src/routes/auth/signin.tsx
Updated step indicators and badges from primary to foreground colors, moved navigation controls, changed logo to grayscale, updated emoji poll styling from primary to bordered foreground approach.
Calendar Page
src/routes/calendar/index.tsx
Replaced card-based layout with bordered ledger design, updated calendar grid and mobile list rendering, removed gradient category colors, changed event link rendering with type indicators, removed Bookmark icon usage.
Event Pages
src/routes/events/$eventId/index.tsx, src/routes/events/$eventId/register.tsx, src/routes/events/create.tsx, src/routes/events/index.tsx
Removed pickGradient usage, replaced hero gradient sections with border-based headers and image-aware backgrounds, converted grid layout to date-grouped list, updated badge/metadata styling, simplified event card to row layout with optional image thumbnails.
Category Pages
src/routes/categories/$categoryId.tsx, src/routes/categories/index.tsx
Removed gradient hero banner, replaced card layout with divided list, updated category links with chevron indicator, simplified feed handle display, removed color-card styling.
Group Pages
src/routes/groups/$identifier/dashboard/members.tsx, src/routes/groups/$identifier/edit.tsx, src/routes/groups/$identifier/index.tsx, src/routes/groups/create.tsx, src/routes/groups/my.tsx
Changed avatar fallback backgrounds from bg-primary/10 to bg-muted, replaced card wrappers with bordered sections, updated timeline rendering without gradient dots, simplified group cards to link rows with stats, updated callout styling to neutral colors.
Place & Check-in Pages
src/routes/places/$placeId/index.tsx, src/routes/places/index.tsx
Removed emoji from category displays, replaced card-based layout with bordered sections, updated check-in dialog title formatting, changed confirmation badge to custom SVG indicator, adjusted grid to two-column layout, updated nearby places card styling.
Settings, Notes & Polls Pages
src/routes/notes/$noteId.tsx, src/routes/polls/$pollId.tsx, src/routes/settings/index.tsx
Removed Card/CardContent wrappers, replaced with plain div sections and explicit styling, updated alert colors from green/blue to neutral muted tones, removed shadow classes, adjusted typography/spacing throughout.
Home Page
src/routes/index.tsx
Removed pickGradient and gradient backgrounds, replaced event grid with EventListRow vertical stack, redesigned carousel with per-slide indicator bars, updated check-in UI with simplified row layout, added watermark day numbers for slides without images.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Poem

🐰 ✨ From emerald dreams to grayscale grace,
We've trimmed the frills and found our place,
No gradients flow, no emojis dance,
Just borders clean and a measured glance—
The UI whispers: less is more! 🌙

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/redesign-entire-screen
📝 Coding Plan
  • Generate coding plan for human review comments

Comment @coderabbitai help to get the list of available commands and usage tips.

@malkoG
malkoG merged commit 103fc7e into dev Mar 19, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant