Agents (llms.txt)

Hero

Oversized two-title headline with optional description, CTAs, and media slot.

Built forteams who ship.

A pragmatic design system for productivity apps — built by Playstack on top of significa/foundations.

import { Hero } from '@/foundations/blocks/hero';
import { Button } from '@/components/button';

export default function HeroPreview() {
  return (
    <Hero
      eyebrow="Built for"
      title="teams who ship."
      description="A pragmatic design system for productivity apps — built by Playstack on top of significa/foundations."
      action={<Button>Get started</Button>}
      secondaryAction={<Button variant="outline">View on GitHub</Button>}
    />
  );
}

export const meta = {
  layout: 'fullscreen',
};

Dependencies

Source Code

import {
  Container,
  type ContainerProps,
} from '@/components/container';
import { cn } from '@/lib/utils/classnames';

interface HeroProps
  extends Omit<React.ComponentPropsWithRef<'section'>, 'title'> {
  /** Smaller secondary line above the main title (the signature significa two-title pattern). */
  eyebrow?: React.ReactNode;
  title: React.ReactNode;
  description?: React.ReactNode;
  /** Primary action — typically a `<Button>`. */
  action?: React.ReactNode;
  /** Optional secondary action. */
  secondaryAction?: React.ReactNode;
  /** Optional media slot — image, video, or any node — rendered below the copy. */
  media?: React.ReactNode;
  /** Alignment of the copy. Defaults to `'start'`. */
  align?: 'start' | 'center';
  /** Gutter passed to the inner Container. Defaults to `'md'`. */
  gutter?: ContainerProps['gutter'];
}

const Hero = ({
  ref,
  className,
  eyebrow,
  title,
  description,
  action,
  secondaryAction,
  media,
  align = 'start',
  gutter,
  ...rest
}: HeroProps) => (
  <section
    ref={ref}
    className={cn('w-full py-16 md:py-24 lg:py-32', className)}
    {...rest}
  >
    <Container gutter={gutter}>
      <div
        className={cn(
          'flex flex-col gap-6',
          align === 'center' && 'items-center text-center'
        )}
      >
        <h1
          className={cn(
            'text-balance font-bold text-5xl md:text-6xl lg:text-7xl',
            'max-w-4xl'
          )}
        >
          {eyebrow && (
            <span className="block text-foreground-secondary">{eyebrow}</span>
          )}
          {title}
        </h1>

        {description && (
          <p className="max-w-2xl text-pretty text-2xl text-foreground-secondary">
            {description}
          </p>
        )}

        {(action || secondaryAction) && (
          <div
            className={cn(
              'mt-4 flex flex-wrap gap-3',
              align === 'center' && 'justify-center'
            )}
          >
            {action}
            {secondaryAction}
          </div>
        )}
      </div>

      {media && <div className="mt-12 md:mt-16 lg:mt-20">{media}</div>}
    </Container>
  </section>
);

export type { HeroProps };
export { Hero };

Hero is the top-of-page block: an oversized headline, optional description, action buttons, and a media slot. Use the eyebrow prop for the signature two-line title pattern (secondary tone + foreground tone).

Anatomy


          <Hero
  eyebrow="Built for"
  title="teams who ship."
  description="A design system for productivity apps."
  action={<Button>Get started</Button>}
  secondaryAction={<Button variant="secondary">Learn more</Button>}
/>
        

API Reference

Extends the section element.

Prop Default Type
eyebrow - ReactNode
title * - ReactNode
description - ReactNode
action - ReactNode
secondaryAction - ReactNode
media - ReactNode
align 'start' 'start''center'

Examples

Default

Built forteams who ship.

A pragmatic design system for productivity apps — built by Playstack on top of significa/foundations.

import { Hero } from '@/foundations/blocks/hero';
import { Button } from '@/components/button';

export default function HeroPreview() {
  return (
    <Hero
      eyebrow="Built for"
      title="teams who ship."
      description="A pragmatic design system for productivity apps — built by Playstack on top of significa/foundations."
      action={<Button>Get started</Button>}
      secondaryAction={<Button variant="outline">View on GitHub</Button>}
    />
  );
}

export const meta = {
  layout: 'fullscreen',
};

Previous

FAQs

Next

Logo Cloud