Skip to content
COMPONENT LIBRARY

Components.

A complete catalog of UI primitives that ship with VELYON. Every piece is composable, accessible, and tuned to the system's motion and color language.

01 · Actions

Buttons

Primary actions with five variants, three sizes, and complete state coverage.

Variants
Sizes
States
Icon buttons
tsx
<Button variant="primary" size="md">Primary</Button>
<Button variant="secondary" icon={Download}>Download</Button>
<Button loading>Loading</Button>
<Button iconOnly icon={Settings} variant="ghost" />
02 · Containers

Cards

Surface primitives — glass, elevated, statistic, and interactive variants.

Glass Card

Backdrop blur surface

Translucent panels for layered interfaces. The default container in VELYON.

Elevated Card

Subtle elevation

Solid-feeling surface with directional shadow for prominent content.

Stat Card
24,839
+12.4%

Active components this week

Interactive Card

Explore tokens

Hover to see the lift and azure glow.

tsx
<GlassCard>
  <h3>Backdrop blur surface</h3>
  <p>Translucent panels for layered interfaces.</p>
</GlassCard>

<StatCard value="24,839" label="Active components" trend="+12.4%" />
03 · Labels

Badges

Compact status indicators in four semantic colors and two sizes.

Status colors
ActivePendingErrorInactive
With dot indicator
ActivePendingErrorInactive
Sizes
SmallMedium
tsx
<Badge variant="active" dot>Active</Badge>
<Badge variant="pending" size="sm">Pending</Badge>
<Badge variant="error">Error</Badge>
04 · Input

Form Elements

Inputs, selects, and selection controls with consistent focus and error states.

We'll never share this with anyone.

Must be at least 8 characters

Selection
tsx
<Input label="Email" placeholder="you@velyon.dev" helper="We'll never share this." />
<SearchInput placeholder="Search tokens…" />
<Select options={["Azure", "Obsidian"]} />
<Checkbox checked label="Subscribe" />
05 · Data

Tables

A data table with glass header, striped rows, and embedded status badges.

TokenValueTypeStatus
color.azure.500#3D7EFFcoloractive
space.lg24pxspacingactive
radius.xl16pxradiusactive
font.displaySuisse Intltypographypending
shadow.glow0 0 40px ...shadowactive
ease.standard[0.22, 1, ...]motioninactive
tsx
<Table>
  <TableHeader columns={["Token", "Value", "Type", "Status"]} />
  <TableBody data={tokens} striped />
</Table>
06 · Feedback

Callouts & Alerts

Inline messaging in five semantic flavors — each with icon, title, and body.

Heads up

All components are tree-shakable and ship as ESM modules.

Build passed

Your design tokens were synced successfully across 12 platforms.

Review required

Three tokens have proposed changes that need approval before release.

Something went wrong

The token validator detected 2 contrast failures in your palette.

Pro tip

Use the keyboard shortcut ⌘K to open the command palette anywhere.

tsx
<Callout variant="info" title="Heads up">
  All components are tree-shakable.
</Callout>

<Callout variant="success" title="Build passed">…</Callout>
<Callout variant="warning" title="Review required">…</Callout>
07 · Layouts

Hero Sections

Premium entrance layouts mapping high-stakes consulting frameworks, custom copy, and outcome metrics.

LIVE INTERACTIVE PREVIEW
Outcome-Backed: The 2X ROI Guarantee

Technology without strategy is overhead.

By combining fractional Chief Revenue Officer thinking with custom agentic AI infrastructure, VELYON turns human latency into digital velocity. We replace fragmented software, creative, and consulting agencies with a unified, ROI-aligned scale engine.

2.0x
Guaranteed ROI Ratio
12-month de-risking protocol
17
Specialized Agent Skills
Fiduciary, tax & legal expertise
$5M–$50M
ARR Scaling Engine
Target mid-market enterprise focus
Active
MCP database grids
UK-Law & Companies House feeds

Wavy Grid Hero

Centering on a beautiful fluid wavy mesh line background, Velyon's primary hero features bold display typography, de-risked CTAs, and a premium visual stats dashboard.

Strategic Velyon Features
Dynamic background wave mesh styling
Velyon typography display scale (Jakarta Display, font-light)
Premium triple statistics grid with hover glass-lift effects
Guaranteed 2.0x ROI ROI and 17 Specialized Agent skills highlighted
Copy Component Source Code (TSX)
tsx
"use client";

import React from "react";
import { motion } from "framer-motion";
import {
  ArrowRight,
  Shield,
  Zap,
  TrendingUp,
  Database,
  Briefcase,
  Scale,
} from "lucide-react";
import { cn } from "@/lib/utils";

interface WavyGridHeroProps {
  className?: string;
}

export function WavyGridHero({ className }: WavyGridHeroProps) {
  const containerVariants = {
    hidden: {},
    visible: {
      transition: {
        staggerChildren: 0.1,
        delayChildren: 0.2,
      },
    },
  };

  const itemVariants = {
    hidden: { opacity: 0, y: 30 },
    visible: {
      opacity: 1,
      y: 0,
      transition: {
        duration: 0.8,
        ease: [0.16, 1, 0.3, 1] as const, // Custom premium ease out
      },
    },
  };

  const metrics = [
    {
      value: "2.0x",
      label: "Guaranteed ROI Ratio",
      description: "12-month de-risking protocol",
      icon: TrendingUp,
      color: "text-emerald-400",
      glow: "rgba(16, 185, 129, 0.15)",
    },
    {
      value: "17",
      label: "Specialized Agent Skills",
      description: "Fiduciary, tax & legal expertise",
      icon: Briefcase,
      color: "text-[var(--velyon-azure)]",
      glow: "rgba(59, 130, 246, 0.15)",
    },
    {
      value: "$5M–$50M",
      label: "ARR Scaling Engine",
      description: "Target mid-market enterprise focus",
      icon: Zap,
      color: "text-[var(--velyon-gold)]",
      glow: "rgba(234, 179, 8, 0.15)",
    },
    {
      value: "Active",
      label: "MCP database grids",
      description: "UK-Law & Companies House feeds",
      icon: Database,
      color: "text-purple-400",
      glow: "rgba(139, 92, 246, 0.15)",
    },
  ];

  return (
    <div
      className={cn(
        "relative min-h-[90vh] w-full flex items-center justify-center py-20 overflow-hidden",
        className
      )}
    >
      {/* Background organic wave mesh grid */}
      <div className="absolute inset-0 z-0 pointer-events-none opacity-40 mix-blend-screen">
        <svg
          className="absolute w-[200%] h-[200%] -top-1/2 -left-1/2 animate-[spin_120s_linear_infinite]"
          viewBox="0 0 100 100"
          preserveAspectRatio="none"
        >
          <defs>
            <radialGradient id="wave-gradient" cx="50%" cy="50%" r="50%">
              <stop offset="0%" stopColor="var(--velyon-azure)" stopOpacity="0.15" />
              <stop offset="60%" stopColor="transparent" stopOpacity="0" />
            </radialGradient>
          </defs>
          <path
            d="M0,50 Q25,30 50,50 T100,50 L100,100 L0,100 Z"
            fill="url(#wave-gradient)"
            className="animate-[pulse_10s_ease-in-out_infinite]"
          />
          <path
            d="M0,60 Q25,80 50,60 T100,60 L100,100 L0,100 Z"
            fill="url(#wave-gradient)"
            className="animate-[pulse_15s_ease-in-out_infinite_1.5s]"
          />
        </svg>
        {/* Subtle grid backdrop */}
        <div
          className="absolute inset-0"
          style={{
            backgroundImage: `radial-gradient(circle at 1px 1px, rgba(255, 255, 255, 0.02) 1px, transparent 0)`,
            backgroundSize: "24px 24px",
          }}
        />
      </div>

      <motion.div
        variants={containerVariants}
        initial="hidden"
        whileInView="visible"
        viewport={{ once: true }}
        className="max-w-6xl w-full mx-auto px-6 md:px-10 relative z-10 flex flex-col items-center text-center"
      >
        {/* Elite Badge */}
        <motion.div
          variants={itemVariants}
          className="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-emerald-500/20 bg-emerald-500/5 backdrop-blur-xl text-xs font-mono text-emerald-300 mb-6 shadow-[0_0_15px_rgba(16,185,129,0.05)]"
        >
          <Shield className="h-3.5 w-3.5" />
          Outcome-Backed: The 2X ROI Guarantee
        </motion.div>

        {/* Display Headline */}
        <motion.h1
          variants={itemVariants}
          className="text-4xl sm:text-6xl md:text-7xl font-extralight tracking-tight text-white max-w-4xl leading-[1.1] mb-6"
        >
          Technology without strategy is{" "}
          <span className="relative inline-block font-normal">
            <span className="absolute -inset-x-2 -inset-y-1 bg-[var(--velyon-azure)]/10 rounded-lg blur-md" />
            <span className="relative bg-gradient-to-r from-[var(--velyon-azure)] to-purple-400 bg-clip-text text-transparent">
              overhead.
            </span>
          </span>
        </motion.h1>

        {/* Body Paragraph */}
        <motion.p
          variants={itemVariants}
          className="text-base sm:text-lg md:text-xl text-[var(--velyon-muted)] max-w-2xl leading-relaxed mb-10 font-light"
        >
          By combining fractional Chief Revenue Officer thinking with custom agentic AI
          infrastructure, VELYON turns{" "}
          <span className="text-white font-medium">human latency</span> into{" "}
          <span className="text-[var(--velyon-azure)] font-medium">digital velocity</span>.
          We replace fragmented software, creative, and consulting agencies with a unified,
          ROI-aligned scale engine.
        </motion.p>

        {/* CTA Buttons */}
        <motion.div
          variants={itemVariants}
          className="flex flex-col sm:flex-row items-center gap-4 mb-20"
        >
          {/* Primary CTA button with glowing shadow */}
          <button className="group relative h-12 px-6 rounded-lg font-medium text-white overflow-hidden transition-all duration-300 hover:scale-[1.02] active:scale-[0.98] cursor-pointer bg-[var(--velyon-azure)] shadow-[0_0_30px_-5px_var(--velyon-azure)]">
            <div className="absolute inset-0 bg-gradient-to-r from-purple-600 via-[var(--velyon-azure)] to-purple-600 bg-[size:200%_auto] opacity-0 group-hover:opacity-100 transition-all duration-500 animate-[shimmer_3s_linear_infinite]" />
            <span className="relative flex items-center justify-center gap-2">
              Accelerate Growth
              <ArrowRight className="h-4 w-4 group-hover:translate-x-1 transition-transform" />
            </span>
          </button>

          {/* Secondary Glass CTA with border-beam accent */}
          <button className="group relative h-12 px-6 rounded-lg font-medium text-[var(--velyon-offwhite)] bg-[var(--velyon-glass)] border border-[var(--velyon-border)] hover:bg-white/[0.06] transition-all duration-300 hover:border-white/20 hover:scale-[1.02] active:scale-[0.98] cursor-pointer backdrop-blur-xl">
            <span className="relative flex items-center justify-center gap-2">
              Audit Capabilities
              <Scale className="h-4 w-4 text-[var(--velyon-gold)] group-hover:rotate-12 transition-transform" />
            </span>
          </button>
        </motion.div>

        {/* Dynamic Metric Grid */}
        <motion.div
          variants={itemVariants}
          className="w-full grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"
        >
          {metrics.map((metric, index) => {
            const Icon = metric.icon;
            return (
              <div
                key={index}
                className="group relative rounded-2xl border border-[var(--velyon-border)] bg-[var(--velyon-glass)] backdrop-blur-xl p-6 text-left overflow-hidden transition-all duration-300 hover:border-white/10 hover:shadow-[0_8px_32px_rgba(0,0,0,0.5)]"
              >
                {/* Active glow backing */}
                <div
                  className="absolute -right-12 -bottom-12 w-24 h-24 rounded-full blur-2xl opacity-0 group-hover:opacity-100 transition-opacity duration-500"
                  style={{ backgroundColor: metric.glow }}
                />

                <div className="flex justify-between items-start mb-4">
                  <div className={cn("text-3xl sm:text-4xl font-light tracking-tight text-white", metric.color)}>
                    {metric.value}
                  </div>
                  <Icon className={cn("h-5 w-5 opacity-40 group-hover:opacity-100 group-hover:scale-110 transition-all", metric.color)} />
                </div>
                <div className="text-xs font-mono uppercase tracking-wider text-white/80 mb-1">
                  {metric.label}
                </div>
                <div className="text-xs text-[var(--velyon-muted)] leading-relaxed">
                  {metric.description}
                </div>
              </div>
            );
          })}
        </motion.div>
      </motion.div>

      {/* Styled custom keyframes */}
      <style>{`
        @keyframes shimmer {
          0% { background-position: 0% center; }
          100% { background-position: 200% center; }
        }
      `}</style>
    </div>
  );
}
08 · Atmosphere

Background Patterns

Atmospheric base canvases for dashboards, portals, and landing pages. Click a card to skin this showcase page instantly!

Interactive Page Skinning Enabled!

Selecting any background style in the list dynamically skins the entire showcase portal page in real-time. Feel the drifting mesh lines, floating canvas nodes, or space starfields live.

Dot Pattern (Minimal)

21st.dev/Free

Sleek, highly-optimized inline SVG dot lattice pattern designed to provide minimalist structural grid margins.

Technical Specifications
Super lightweight, zero-js SVG pattern implementation
Obsidian dark mode optimized color hues
Scales infinitely without layout shifting or redraw loops
Perfect skin for busy dashboards requiring zero distraction
Copy Background Component Source Code (TSX)
tsx
"use client";

import { useEffect, useRef } from "react";

export function DotPatternMinimal() {
  return (
    <div 
      className="absolute inset-0 opacity-[0.02] bg-[radial-gradient(#ffffff_1px,transparent_1px)] [background-size:24px_24px] pointer-events-none"
      style={{ minHeight: "100%" }}
    />
  );
}
Next

Ready to build with these primitives?

Explore tokens, patterns, and the full installation guide.