All-Access · 22 templates$1270.97$99/year — save 92%Get access
  • HomeHome
  • TemplatesTemplates23
  • ComponentsComponents78
  • PricingPricing
  • Need a Website?Need a Website?New
Unlock All AccessUnlock All Access

Our latest template collection

Ready-to-launch sites for real estate agents, service businesses, and local brands — built to rank, load fast, and convert.

Explore All TemplatesExplore All Templates

Orvaine - Luxury Equestrian & Horse Breeding Website Template

Orvaine is a premium website template for stud farms, sport horse breeders and equestrian estates: horse pages with pedigrees, events, films. Next.js, Astro, Sanity.

Download Template
Orvaine - Luxury Equestrian & Horse Breeding Website Template

Maressa - Luxury Yacht Charter & Sales Website Template

Maressa is a premium website template for yacht charter, brokerage and superyacht brands: 21 editable sections, full-screen films, Next.js and Astro versions. Sanity.

Download Template
Maressa - Luxury Yacht Charter & Sales Website Template

Krishi – Agriculture & Farm Website Template

Krishi is a premium website template for farms, agritech and food brands: 17 editable sections, cinematic GSAP motion and both Next.js and Astro versions. Built with Sanity.

Download Template
Krishi – Agriculture & Farm Website Template
ComponentsFeature

Editorial Front Page

View code
Full screen

A magazine front page with a headline list, a lead story and a thumbnail list that stack on phones. React and Tailwind CSS, no dependencies.

EditorialFrontPage.tsx
// Magazine front page: a headline list on the left, the lead story in the
// middle and a thumbnail list on the right (stacks on phones).
// Pure Tailwind, no dependencies. Works with Tailwind v3 and v4.

type Story = { title: string; excerpt?: string; image?: string; href?: string; date?: string };

type Props = {
  lead?: Story;
  headlines?: Story[];
  thumbs?: Story[];
};

const img = (id: string, w = 1200) => `https://images.unsplash.com/photo-${id}?w=${w}&q=80&auto=format&fit=crop`;

const DEFAULT_LEAD: Story = {
  title: "The quiet islands still worth the journey",
  excerpt: "Ferries, fishing villages and not a cruise ship in sight: our writers pick the Mediterranean's last calm corners.",
  image: img("1783442799263-65dfd26d1813"),
};

const DEFAULT_HEADLINES: Story[] = [
  { title: "Inside the restaurant with a two-year waiting list", excerpt: "Twelve seats, one chef and a menu that changes daily." },
  { title: "Why everyone is moving to the coast", excerpt: "Remote work has redrawn the map of where people live." },
  { title: "The return of the overnight train", excerpt: "Sleeper routes are back, and they're fully booked." },
];

const DEFAULT_THUMBS: Story[] = [
  { title: "A long weekend in Monaco", image: img("1581819896533-f8ab6767ce7e", 300), date: "Mar 12" },
  { title: "Positano after the crowds", image: img("1561956021-947f09ae0101", 300), date: "Mar 10" },
  { title: "Dubrovnik's old town at dawn", image: img("1414862625453-d87604a607e4", 300), date: "Mar 08" },
  { title: "The Golden Gate in fog", image: img("1501594907352-04cda38ebc29", 300), date: "Mar 05" },
];

export default function EditorialFrontPage({ lead = DEFAULT_LEAD, headlines = DEFAULT_HEADLINES, thumbs = DEFAULT_THUMBS }: Props) {
  return (
    <section className="bg-white px-4 py-12 font-['Manrope',ui-sans-serif,system-ui,sans-serif] text-black antialiased md:px-8 md:py-16">
      <div className="mx-auto grid max-w-6xl gap-8 md:grid-cols-2 lg:grid-cols-4">
        <article className="group md:col-span-2 lg:col-start-2 lg:row-start-1">
          <a href={lead.href ?? "#"} className="block">
            <div className="relative aspect-[484/345] overflow-hidden bg-[#dadada]">
              {lead.image && <img src={lead.image} alt="" className="absolute inset-0 h-full w-full object-cover" />}
            </div>
            <h2 className="mt-5 text-2xl font-bold group-hover:underline md:text-3xl">{lead.title}</h2>
            {lead.excerpt && <p className="mt-2.5 text-[#727272]">{lead.excerpt}</p>}
          </a>
        </article>

        <div className="lg:col-start-1 lg:row-start-1">
          {headlines.map((s, i) => (
            <article key={s.title} className={`border-b border-[#9f9e9c] pb-5 ${i > 0 ? "pt-5" : ""}`}>
              <a href={s.href ?? "#"} className="group block">
                <h3 className="text-lg font-bold group-hover:underline">{s.title}</h3>
                {s.excerpt && <p className="mt-2.5 text-[#727272]">{s.excerpt}</p>}
              </a>
            </article>
          ))}
        </div>

        <div className="lg:col-start-4 lg:row-start-1">
          <ul className="flex flex-col gap-5">
            {thumbs.map((s) => (
              <li key={s.title}>
                <a href={s.href ?? "#"} className="group flex gap-4">
                  {s.image && <img src={s.image} alt="" loading="lazy" className="h-20 w-20 shrink-0 object-cover" />}
                  <div>
                    {s.date && <p className="text-xs uppercase text-[#727272]">{s.date}</p>}
                    <h3 className="mt-1 font-bold leading-snug group-hover:underline">{s.title}</h3>
                  </div>
                </a>
              </li>
            ))}
          </ul>
        </div>
      </div>
    </section>
  );
}

How to use it

  1. Make sure your Next.js or React project has Tailwind CSS set up (v3 or v4 both work).
  2. Create components/EditorialFrontPage.tsx and paste the code.
  3. Import it into a page and replace the sample text and images with your own.
Influenza - Editorial News & Magazine Template for Next.js and Sanity

From the full template

Influenza$49

Every page, Sanity CMS and SEO already set up. This section is one of 1 you can try free.

Get the full template Get the full template Live preview Live preview
Share
Category
Features
Template
Influenza
Dependencies
None, just React
Works with
Next.js, React, Tailwind CSS v3 & v4
Added
Oct 29, 2026

More features

View all
Alternating Feature Rows
Feature

Alternating Feature Rows

Awards Checkerboard
Feature

Awards Checkerboard

Class Timetable
Feature

Class Timetable

Ready for a faster site that's easier to edit?

Book a free 30-minute call. We'll review your current site and send a fixed-price plan. No pressure, no pitch.

Book Free Call Book Free Call No commitment required

Fast Next.js + Sanity websites, built for you or ready to launch with our templates.

Book a Free Call Book a Free Call
Services
  • Web Design
  • UI/UX Design
  • Framer Dev
  • Webflow Dev
  • Custom Dev
  • Sanity CMS
Resources
  • Templates
  • Pricing
  • License
  • Components
  • Case Studies
Company
  • About Us
  • Contact
  • Privacy Policy
© 2026 rayso.studio — All rights reservedDesigned & built in-house Remote-first agency
Let's TalkLet's Talk