Finitless

Typography

Geist-inspired typography system with numbered heading scales, button/label/copy variants, and the Text component.

Font Family

UI Font: Inter

Aa Bb Cc

All UI text, headings, body, and captions use Inter from Google Fonts.

font-family: 'Inter', -apple-system, sans-serif;

Mono Font

01 23 45

Code blocks and technical content use the system monospace stack.

font-family: ui-monospace, SFMono-Regular, Menlo, monospace;

Logo Font: BEASIGNE

The BEASIGNE font is used only in the logo wordmark. Never use it for UI text. Always render the logo from supplied image assets, never from the font.

Heading Scale

Numbered heading scale from 72px to 14px with precise line-height and letter-spacing for each size.

heading-72

Never Miss a Sale

72px / 76pxTracking: -0.04emBoldHero headlines
heading-64

Never Miss a Sale

64px / 68pxTracking: -0.04emBoldMajor section titles
heading-56

Never Miss a Sale

56px / 60pxTracking: -0.03emBoldSection headers
heading-48

The quick brown fox jumps over the lazy dog

48px / 52pxTracking: -0.03emBoldPage titles
heading-40

The quick brown fox jumps over the lazy dog

40px / 44pxTracking: -0.02emSemiboldLarge headings
heading-32

The quick brown fox jumps over the lazy dog

32px / 40pxTracking: -0.02emSemiboldSection headings
heading-24

The quick brown fox jumps over the lazy dog

24px / 32pxTracking: -0.01emSemiboldCard titles
heading-20
The quick brown fox jumps over the lazy dog
20px / 28pxTracking: -0.01emSemiboldSubsection headings
heading-16
The quick brown fox jumps over the lazy dog
16px / 24pxTracking: 0SemiboldComponent titles
heading-14
The quick brown fox jumps over the lazy dog
14px / 20pxTracking: 0SemiboldSmall headings, labels

Button Typography

button-16
Button Text
button-14
Button Text
button-12
Button Text

Label Typography

label-16
label-14
label-12
label-11

Copy Typography

copy-20

The quick brown fox jumps over the lazy dog.

copy-16

The quick brown fox jumps over the lazy dog.

copy-14

The quick brown fox jumps over the lazy dog.

copy-12

The quick brown fox jumps over the lazy dog.

Text Component

The Text component provides type-safe access to all typography variants.

import { Text } from '@finitless/design-system';

// Heading variants
<Text variant="heading-48">Page Title</Text>
<Text variant="heading-24">Card Title</Text>

// With semantic element
<Text variant="heading-32" as="h1">Main Heading</Text>

// Button/Label variants
<Text variant="button-14">Button Label</Text>
<Text variant="label-12">Form Label</Text>

// Copy variants with color
<Text variant="copy-16">Body text</Text>
<Text variant="copy-14" color="muted">Secondary text</Text>

// Modifiers
<Text variant="copy-16" weight="semibold">Bold text</Text>
<Text variant="heading-24" color="link">Link colored</Text>
Live Demo

Heading 32

Heading 20 (muted)

This is body copy at 16px with comfortable line height.

Secondary text in muted color at 14px.

Font Weights

Aa

Regular

400

font-normal

Aa

Medium

500

font-medium

Aa

Semibold

600

font-semibold

Aa

Bold

700

font-bold

Aa

Extrabold

800

font-extrabold

Helper Functions

import {
  getHeadingClass,
  getButtonClass,
  getLabelClass,
  getCopyClass,
} from '@finitless/design-system';

// Get Tailwind classes for any typography style
getHeadingClass(48)  // Returns class string for heading-48
getButtonClass(14)   // Returns class string for button-14
getLabelClass(12)    // Returns class string for label-12
getCopyClass(16)     // Returns class string for copy-16

Font Loading

HTML

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">

Next.js (App Router)

import { Inter } from 'next/font/google';

const inter = Inter({
  subsets: ['latin'],
  weight: ['400', '500', '600', '700', '800'],
  display: 'swap',
});

export default function RootLayout({ children }) {
  return (
    <html className={inter.className}>
      <body>{children}</body>
    </html>
  );
}

Best Practices

Hierarchy

  • Use heading-72/64 for hero sections only
  • Limit to 2-3 heading levels per page
  • Use copy variants for body text, not headings

Accessibility

  • Minimum 16px for body text (prevents iOS zoom)
  • 4.5:1 contrast ratio for normal text (WCAG AA)
  • Use antialiased font rendering on dark backgrounds