ProductBrand
Join us
Foundations
  • Introduction
  • Guidelines
  • Colors
  • Typography
  • Breakpoints
  • Elevation
  • Patterns
Identity
  • Logos
  • Mr Rogo
  • Assets
Components
  • Button
  • Carousel
  • CTA Headline
  • Navigation Menu
  • Popover
  • Separator Dot
  • Sheet
  • Skeleton
  • Video Player

Button

The marketing call to action, from the brand package.

Not the product Button

There are two Buttons and they are not interchangeable:

ProductBrand
Import@rogo-technologies/ui/button@rogo-technologies/brand/button
Shapesquare-cornered, product radiipill
Paletteproduct tokens--marketing-*
Statesloading, disabled, icon-only, destructivelink-out only
Use onthe web app, Excel add-in, internal toolsthe marketing site, campaign pages

A marketing page only ever asks someone to go somewhere, so this one has no loading or icon-only state and no destructive variant. If you need those, you are on a product surface and want the other Button. See the design-brand skill for the full split.

tsx
import { Button } from "@rogo-technologies/brand/button";

<Button asChild>
  <Link href="/demo">Request demo</Link>
</Button>

<Button asChild variant="arrow" inverted size="lg">
  <Link href="/demo">Request access</Link>
</Button>

Variants

VariantUse for
primaryThe page's single most important action. Brand green.
secondaryA second action beside a primary one, or a CTA on a busy surface.
ghostA quiet text action with a trailing 16px arrow. No fill, no disc.
arrowThe quiet ask under a hero: label plus a trailing arrow disc.

Pass inverted on a dark band (--marketing-forest, --marketing-dark). It is a flag, not a fifth variant — primary, secondary, ghost, and arrow each have an inverted treatment.

Ghost and arrow ship their mark. Pass the label only; do not add your own icon.

Sizes

md is the default in chrome and body content, 32px (h-8 / py-1.5 / px-4) on type-marketing-body-medium-sm; lg is a standalone CTA, 36px (h-9 / py-2 / px-4) on type-marketing-body-medium-md. Arrow uses the same container heights; the disc stays 24px (md) / 28px (lg), with a 16px arrow at both sizes. Resting gap is 8px; hover opens it to 12px without moving the icon inside the disc. Every size presses to 0.98 on a Framer-matched spring (duration: 450ms, bounce: 0.25); color still transitions in 200ms.

Props

PropTypeDefault
variant"primary" | "secondary" | "ghost" | "arrow""primary"
invertedbooleanfalse
size"md" | "lg""md"
asChildbooleanfalse

asChild is how you get a link. The component renders a <button> by default; pass asChild and it renders your child instead, keeping the styling. That is the right way to wrap Next's Link, because nesting an <a> inside a <button> is invalid HTML and breaks keyboard activation.

PreviousAssets
NextCarousel
Made in NYC© 2026 Rogo Technologies Inc.

Design at Rogo

We’re redesigning an entire industry. Come design it with us.

See open roles

Design at Rogo

  • How we workThe mission of design at Rogo, and the open roles
  • About RogoThe company and the product