Design System

Marketing Molecules

ImportCC

Available via @stackmates/ui-marketing

TestimonialCard

Customer quote card with author attribution. Three size variants for different layouts.

Stackmates cut our proposal turnaround from 2 weeks to 48 hours.

Sarah ChenVP Sales · TechCorp

The AI-powered analysis gave us confidence to bid on projects we would have passed on before.

Marcus JohnsonDirector of Operations · BuildRight

We won 3 enterprise contracts in the first month. The ROI speaks for itself.

Priya PatelNova Industries

TestimonialCardProps

PropTypeDefaultDescription
testimonial*{ id, quote, author, role?, company?, avatarUrl? }Testimonial data object
variant'default' | 'compact' | 'featured''default'Card size and padding variant
showQuotesbooleantrueShow decorative quotation marks

Installation

typescript
import { TestimonialCard } from '@stackmates/ui-marketing';

Usage

Default

tsx
<TestimonialCard
  testimonial={{
    id: '1',
    quote: 'Great product!',
    author: 'Jane Doe',
    role: 'CEO',
    company: 'Acme',
  }}
/>

Featured variant

tsx
<TestimonialCard
  testimonial={testimonial}
  variant="featured"
  showQuotes={false}
/>

Accessibility

  • Uses semantic <blockquote> for the testimonial text
  • Author attribution is text-based, not color-dependent

FeatureCard

Feature highlight with icon, title, and description. Used standalone or inside FeatureGrid.

🤖

AI Analysis

Automatically extract requirements and score fit against your capabilities.

👥

Team Collaboration

Assign sections to SMEs and track contributions in real time.

📋

Smart Templates

Reuse winning content with context-aware template suggestions.

FeatureCardProps

PropTypeDefaultDescription
feature*{ id, title, description, icon? }Feature data object
variant'default' | 'bordered' | 'filled''default'Card visual style
iconSize'sm' | 'md' | 'lg''md'Icon container size

Installation

typescript
import { FeatureCard } from '@stackmates/ui-marketing';

Usage

Bordered

tsx
<FeatureCard
  feature={{ id: '1', title: 'AI Analysis', description: '...', icon: '🤖' }}
  variant="bordered"
/>

Accessibility

  • Icon is supplementary — title + description carry the meaning
  • Supports custom icon renderers for accessible SVG icons

CategoryCard

Category grouping with title, description, and tag pills. Ideal for pattern libraries.

Connection Patterns

Safe wallet connection flows without exposing private keys.

Safe ConnectDisconnect ConfirmationMulti-Wallet

Transaction Patterns

User-friendly transaction signing with clear fee breakdown.

Sign & SendFee EstimationRetry LogicReceipt

CategoryCardProps

PropTypeDefaultDescription
title*stringCategory title
description*stringCategory description
patterns*string[]Array of pattern/tag names displayed as pills

Installation

typescript
import { CategoryCard } from '@stackmates/ui-marketing';

Usage

Basic

tsx
<CategoryCard
  title="Connection Patterns"
  description="Safe wallet connection flows."
  patterns={['Safe Connect', 'Disconnect Confirmation']}
/>

Accessibility

  • Pattern pills are plain text spans — readable by screen readers
  • Card structure uses heading for title hierarchy

NavigationCard

Clickable card linking to another page with icon, badge, and optional tags.

NavigationCardProps

PropTypeDefaultDescription
href*stringLink destination
title*stringCard title
descriptionstringCard description
iconstringEmoji or icon string
badgestringOptional badge/status text
badgeVariant'default' | 'success' | 'warning' | 'info''default'Badge color variant
disabledbooleanfalseWhether the card is disabled/inactive

Installation

typescript
import { NavigationCard } from '@stackmates/ui-marketing';

Usage

With icon and badge

tsx
<NavigationCard
  href="/proposals"
  icon="📄"
  title="Cover Letter"
  badge="Required"
  badgeVariant="warning"
/>

Disabled state

tsx
<NavigationCard
  href="/pricing"
  title="Pricing"
  disabled
  badge="Locked"
/>

Accessibility

  • Renders as Next.js Link for keyboard navigation
  • Disabled variant renders as div (not focusable)
  • Badge provides textual status, not color alone

PrincipleCard

Icon + rule + detail for displaying principles, guidelines, or safety rules.

🔐

App never sees private keys

Wallet adapters handle all signing operations. Keys stay in the wallet.

🛡️

Validate all inputs at boundaries

Zod schemas at every system boundary. No as-casts on external data.

🧪

Tests prove transformations

Every value transformation has a test proving input A produces output B.

PrincipleCardProps

PropTypeDefaultDescription
icon*stringEmoji or icon string
rule*stringThe principle/rule title
detail*stringSupporting detail/explanation

Installation

typescript
import { PrincipleCard } from '@stackmates/ui-marketing';

Usage

Basic

tsx
<PrincipleCard
  icon="🔐"
  rule="App never sees private keys"
  detail="Wallet adapters handle all signing."
/>

Accessibility

  • Icon is decorative — rule text is the primary content
  • Detail text provides expanded explanation

TeamMember

Team member profile with auto-generated initials avatar, role, and credentials.

SC
Project Manager
Sarah Chen
PMP, 12 commercial projects
MJ
Lead Engineer
Marcus Johnson
15 years structural
PP
Safety Officer
Priya Patel
OSHA certified
TW
QA Lead
Tom Williams

TeamMemberProps

PropTypeDefaultDescription
role*stringTeam role/position
name*stringPerson's name
credentialstringCredentials or experience
initialsstringAvatar initials (2 chars, auto-derived from name if omitted)

Installation

typescript
import { TeamMember } from '@stackmates/ui-marketing';

Usage

With credential

tsx
<TeamMember
  role="Project Manager"
  name="Sarah Chen"
  credential="PMP, 12 commercial projects"
/>

Accessibility

  • Initials are auto-derived from name when not specified
  • Role and name are plain text — fully accessible

DataCard

Card with title and bulleted item list for requirements, features, or data summaries.

Required Documents

  • Company registration certificate
  • Professional indemnity insurance
  • Past project references (min 3)
  • Health & safety policy

Technical Requirements

  • ISO 9001:2015 certified processes
  • BIM Level 2 capability
  • Environmental management plan

DataCardProps

PropTypeDefaultDescription
title*stringCard title
items*string[]List of items to display as bullet points
variant'default' | 'muted''default'Card background variant

Installation

typescript
import { DataCard } from '@stackmates/ui-marketing';

Usage

Default

tsx
<DataCard
  title="Required Documents"
  items={['Certificate', 'Insurance', 'References']}
/>

Muted variant

tsx
<DataCard title="Tech Requirements" items={items} variant="muted" />

Accessibility

  • Uses semantic <ul> list with bullet markers
  • Bullet dots use currentColor for theme compatibility

CertBadge

Certification or trust signal badge with checkmark, name, and optional detail.

ISO 9001:2015
Quality Management System
SOC 2 Type II
Security & Availability
GDPR Compliant

CertBadgeProps

PropTypeDefaultDescription
name*stringCertification name
detailstringSupporting detail or description

Installation

typescript
import { CertBadge } from '@stackmates/ui-marketing';

Usage

With detail

tsx
<CertBadge name="ISO 9001:2015" detail="Quality Management" />

Name only

tsx
<CertBadge name="GDPR Compliant" />

Accessibility

  • Checkmark is decorative — certification name is the primary content
  • Detail text provides context for the certification