Skip to content

feat: Bento-style grid layout option for link buttons #36

Description

@KotaHusky

Summary

Replace (or offer as an alternative to) the current two-column link button list with a Bento grid layout. Bento-style grids allow links to have varying sizes, icons, preview images, or short descriptions — making the page feel more like a rich personal hub and less like a plain Linktree clone.

Inspiration

  • Bento.me popularized the grid-of-blocks layout for personal pages; it was acquired by Linktree in 2024 specifically because this pattern resonates with creators
  • The current homepage already has a 2-column grid on sm: breakpoints — extending this to a proper Bento grid is a natural evolution
  • Visual differentiation between links (e.g. a larger "Photo Commission" card vs a smaller "Tip" card) helps guide visitors toward the most important actions

Proposed Layout

┌──────────────────────┬───────────┐
│  Photo Commission    │   Tip     │
│  [large card, 2col]  │           │
├───────────┬──────────┴───────────┤
│  Gallery  │  Furtrack            │
│           │                      │
├───────────┴──────────┬───────────┤
│  Barks & Rec         │ Technique │
│                      │  (soon)   │
└──────────────────────┴───────────┘

Each card can optionally carry:

  • An icon (emoji or Heroicon)
  • A short subtitle (1 line)
  • A "coming soon" dimmed state (already used for "Technique (Soon)")

Acceptance Criteria

  • BentoGrid component renders a CSS Grid layout with configurable column spans per card
  • Card config is data-driven (array of objects in app/config.ts or page.tsx) — not hardcoded JSX for each button
  • Cards support span property (1 or 2 columns) to create asymmetric layouts
  • "Disabled" / coming-soon cards are visually distinct (dimmed, cursor-not-allowed, no hover effect)
  • Layout is responsive: single column on mobile, grid on sm: and above
  • Existing HomepageButton tests remain passing (or component is replaced and tests updated)
  • Snapshot/visual test for the grid layout

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatureNew distinct featureuxUser experience improvement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions