Calendar Schedule Hero

Smart Scheduling

Time management, simplified

AI-powered scheduling that finds the perfect time for everyone. Sync calendars, manage availability, and never miss a meeting.

January 2025

Mon

13

Team Standup

9:00 AM· 30m
Alex
Emma

Tue

14

Product Review

10:00 AM· 1h
Room A
Sarah
Mike
Lisa

Focus Time

2:00 PM· 2h

Wed

15

Client Call

11:00 AM· 45m
John

Product Review starting

in 5 minutes

About this block

Calendar Schedule HeroPRO

Split-layout hero with weekly calendar mockup showing events, attendees, and floating reminder notification. Perfect for scheduling and calendar apps.

Hero77: Calendar Schedule Hero

Split hero built around a weekly calendar mockup: each day is a column of event cards showing time, duration, location, and attendee avatars, colored by event type, with a floating reminder card animating beside it.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/hero77?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/hero77?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/hero77.tsx and the shadcn/ui badge, button, and card components it depends on.

Quick start

The installed file exports hero77Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.

tsx
import { Hero77, hero77Demo } from "@/components/beste/block/hero77";

export default function Page() {
  return <Hero77 {...hero77Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Video } from "lucide-react";
import { Hero77 } from "@/components/beste/block/hero77";

export default function Page() {
  return (
    <Hero77
      badge={{ label: "Smart Scheduling", variant: "outline" }}
      heading="Time management, simplified"
      description="AI-powered scheduling that finds the perfect time for everyone."
      buttons={[{ label: "Get Started", href: "/signup" }]}
      currentMonth="January 2025"
      schedule={[
        { day: "Mon", date: 13, events: [{ title: "Team Standup", time: "9:00 AM", duration: "30m" }] },
        { day: "Tue", date: 14, isToday: true, events: [{ title: "Product Review", time: "10:00 AM", type: "meeting" }] },
      ]}
      upcomingReminder={{ icon: Video, title: "Product Review starting", time: "in 5 minutes" }}
      displayPosition="left"
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Badge above the heading
headingstringMain headline (required prop, no default)
descriptionstringSupporting paragraph
buttonsHeroButton[][]CTA buttons below the description
currentMonthstringLabel shown next to the mock prev/next-month controls
scheduleDaySchedule[][]Days rendered as columns inside the calendar mockup
upcomingReminderUpcomingReminderSingle floating reminder card pinned beside the mockup
displayPosition"left" | "right""left"Which side the calendar mockup renders on at the lg breakpoint
classNamestringExtra classes for the outer <section>
ts
type HeroButton = {
  label: string;
  href: string;
  variant?: "default" | "outline" | "secondary" | "ghost" | "link";
};

type EventAttendee = { name: string; avatar?: string };

type EventItem = {
  title: string;
  time: string;
  duration?: string;
  type?: "meeting" | "focus" | "event";
  location?: string;
  attendees?: EventAttendee[];
  isNow?: boolean;
};

type DaySchedule = {
  day: string;
  date: number;
  isToday?: boolean;
  events: EventItem[];
};

type UpcomingReminder = {
  icon: LucideIcon;
  title: string;
  time: string;
};

Behavior notes

  • event.isNow is accepted by the type and set in the demo data, but nothing in the render output reads it; only day.isToday currently affects styling (it tints the day column with bg-primary/5 and fills the date badge). Treat isNow as reserved rather than functional today.
  • Each day column renders events in array order with no time-based sorting or overlap detection; ordering within a day is entirely the caller's responsibility.
  • event.type selects a soft background tint from a fixed map (meeting blue, focus violet, event emerald) and falls back to the meeting tint when omitted (eventTypeStyles[event.type ?? "meeting"]).
  • Attendee avatars are capped visually at 3 per event with a +N overflow counter computed from attendees.length - 3.
  • upcomingReminder is a single floating card, not a list, and animates with the same CSS float keyframe used across this hero mockup family.

More Hero blocks

View all Hero
PRO

hero25

Dashboard Preview Hero

Split-layout hero with interactive dashboard mockup featuring stats cards, line chart, and recent activity feed. Perfect for SaaS and analytics platforms.

PRO

hero76

Kanban Board Hero

Split-layout hero with interactive kanban board mockup showing tasks with priorities, tags, assignees, and floating completion stats. Perfect for project management tools.

PRO

hero43

Email App Hero with Inbox Mockup

Split-layout hero with interactive email client mockup featuring sidebar, message list, and floating notification. Perfect for email and communication apps.

PRO

hero75

Team Chat App Hero

Split-layout hero with full chat interface mockup featuring channels sidebar, message threads, online users, and floating notification. Perfect for collaboration and messaging apps.

PRO

hero102

Split Hero with Timeline Steps

50/50 split hero with content left and vertical numbered timeline overlay on video right

PRO

hero166

Split Headline Hero

An editorial hero that breaks its display heading across two lines and slots a square image tile floating a live payment card into the gap, with the paragraph and action landing under a hairline.