"use client"; import { useState } from "react"; import Link from "next/link"; import { Listbox } from "@headlessui/react"; import { SunIcon, MoonIcon, HomeIcon, UserIcon, Cog6ToothIcon, BellIcon, MagnifyingGlassIcon, HeartIcon, StarIcon, DocumentIcon, FolderIcon, EnvelopeIcon, PhoneIcon, CalendarIcon, ClockIcon, MapPinIcon, PhotoIcon, VideoCameraIcon, MusicalNoteIcon, ArrowDownTrayIcon, ArrowUpTrayIcon, ShareIcon, PencilIcon, TrashIcon, CheckIcon, XMarkIcon, PlusIcon, RocketLaunchIcon, EllipsisHorizontalIcon, ArrowRightIcon, FireIcon, ShoppingCartIcon, ChevronUpDownIcon, } from "@heroicons/react/24/outline"; const options = [ { id: 1, name: 'Opção 1' }, { id: 2, name: 'Opção 2' }, { id: 3, name: 'Opção 3' }, ]; export default function DesignSystemPage() { const [darkMode, setDarkMode] = useState(false); const [selectedOption, setSelectedOption] = useState(options[0]); const toggleDarkMode = () => { setDarkMode(!darkMode); document.documentElement.classList.toggle('dark'); }; const iconList = [ { name: 'HomeIcon', component: HomeIcon }, { name: 'UserIcon', component: UserIcon }, { name: 'Cog6ToothIcon', component: Cog6ToothIcon }, { name: 'BellIcon', component: BellIcon }, { name: 'MagnifyingGlassIcon', component: MagnifyingGlassIcon }, { name: 'HeartIcon', component: HeartIcon }, { name: 'StarIcon', component: StarIcon }, { name: 'DocumentIcon', component: DocumentIcon }, { name: 'FolderIcon', component: FolderIcon }, { name: 'EnvelopeIcon', component: EnvelopeIcon }, { name: 'PhoneIcon', component: PhoneIcon }, { name: 'CalendarIcon', component: CalendarIcon }, { name: 'ClockIcon', component: ClockIcon }, { name: 'MapPinIcon', component: MapPinIcon }, { name: 'PhotoIcon', component: PhotoIcon }, { name: 'VideoCameraIcon', component: VideoCameraIcon }, { name: 'MusicalNoteIcon', component: MusicalNoteIcon }, { name: 'ArrowDownTrayIcon', component: ArrowDownTrayIcon }, { name: 'ArrowUpTrayIcon', component: ArrowUpTrayIcon }, { name: 'ShareIcon', component: ShareIcon }, { name: 'PencilIcon', component: PencilIcon }, { name: 'TrashIcon', component: TrashIcon }, { name: 'CheckIcon', component: CheckIcon }, { name: 'XMarkIcon', component: XMarkIcon }, ]; return (
{/* Header fixo */}
A

Design System

Aggios Platform v1.2

Home
{/* Navegação rápida */} {/* CORES */}

Cores

Paleta de cores da plataforma Aggios

{/* Brand Gradient */}

Brand Gradient

linear-gradient(135deg, #ff3a05, #ff0080)

{/* Gray Scale */}

Gray Scale

{[50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950].map(shade => (

gray-{shade}

))}
{/* Surface & Text Colors */}

Surface Colors

{[ { name: 'surface-light', var: '--color-surface-light' }, { name: 'surface-dark', var: '--color-surface-dark' }, { name: 'surface-muted', var: '--color-surface-muted' }, { name: 'surface-card', var: '--color-surface-card' }, ].map(color => (

{color.name}

var({color.var})

))}

Text Colors

{[ { name: 'text-primary', var: '--color-text-primary' }, { name: 'text-secondary', var: '--color-text-secondary' }, { name: 'text-inverse', var: '--color-text-inverse' }, ].map(color => (

{color.name}

var({color.var})

))}
{/* ESPAÇAMENTOS */}

Espaçamentos

Sistema de espaçamento compacto

{[ { name: 'xs', value: '0.125rem', pixels: '2px' }, { name: 'sm', value: '0.25rem', pixels: '4px' }, { name: 'md', value: '0.5rem', pixels: '8px' }, { name: 'lg', value: '0.75rem', pixels: '12px' }, { name: 'xl', value: '1rem', pixels: '16px' }, { name: '2xl', value: '1.5rem', pixels: '24px' }, ].map(space => (

spacing-{space.name}

{space.value} ({space.pixels})

var(--spacing-{space.name})
))}
{/* TIPOGRAFIA */}

Tipografia

Hierarquia de texto e famílias de fontes

{/* Headings */}

Headings (Arimo)

Heading 1

font-heading font-bold text-4xl

Heading 2

font-heading font-bold text-3xl

Heading 3

font-heading font-bold text-2xl

Heading 4

font-heading font-bold text-xl

{/* Body Text */}

Body Text (Inter)

Text Base - The quick brown fox jumps over the lazy dog

text-base

Text SM - The quick brown fox jumps over the lazy dog

text-sm

Text XS - The quick brown fox jumps over the lazy dog

text-xs

{/* Code Text */}

Code (Fira Code)

const message = "Hello, Aggios!";

font-mono - Fira Code

{/* BORDAS */}

Bordas

Border radius e estilos de borda

{/* Border Radius */}

Border Radius

{[ { name: 'rounded-none', class: 'rounded-none' }, { name: 'rounded-sm', class: 'rounded-sm' }, { name: 'rounded', class: 'rounded' }, { name: 'rounded-lg', class: 'rounded-lg' }, { name: 'rounded-xl', class: 'rounded-xl' }, { name: 'rounded-2xl', class: 'rounded-2xl' }, { name: 'rounded-full', class: 'rounded-full' }, ].map(radius => (

{radius.name}

))}
{/* Border Styles */}

Border Styles

border border-zinc-200

border-2 border-zinc-200

border border-dashed

{/* GRADIENTE */}

Gradiente

Gradiente principal da marca

Brand Gradient

background: linear-gradient(135deg, #ff3a05, #ff0080)

{/* Gradient Text */}

Gradient Text

Texto com gradiente

<span className="gradient-text">

{/* SOMBRAS */}

Sombras

Sistema de elevação com sombras

{[ { name: 'shadow-sm', class: 'shadow-sm' }, { name: 'shadow', class: 'shadow' }, { name: 'shadow-md', class: 'shadow-md' }, { name: 'shadow-lg', class: 'shadow-lg' }, ].map(shadow => (

{shadow.name}

{shadow.class}

))}
{/* ÍCONES */}

Ícones

Heroicons - biblioteca completa (outline)

{iconList.map(({ name, component: Icon }) => (

{name}

))}
{/* BOTÕES */}

Botões

Variações de botões com Headless UI

{/* Primary Buttons */}

Primary Buttons

{/* Secondary Buttons */}

Secondary Buttons

{/* Icon Buttons */}

Icon Buttons

{/* CARDS */}

Cards

Diferentes estilos de cards

{/* Basic Card */}

Basic Card

Card simples com borda e padding

{/* Elevated Card */}

Elevated Card

Card com sombra e hover effect

{/* Gradient Card */}

Gradient Card

Card com fundo gradiente

{/* Icon Card */}

Icon Card

Card com ícone em destaque

{/* Stat Card */}

Total Revenue

R$ 128K

+18% este mês

{/* Interactive Card */}
e.currentTarget.style.borderColor = '#ff3a05'} onMouseLeave={(e) => { if (darkMode) { e.currentTarget.style.borderColor = 'rgb(39 39 42)'; } else { e.currentTarget.style.borderColor = 'rgb(228 228 231)'; } }}>
3

Interactive Card

Clique para interagir

{/* INPUTS */}

Inputs

Campos de formulário com Headless UI

{/* Text Input */}
{/* Email Input */}
{/* Input with Icon */}
{/* Textarea */}
{/* Select with Headless UI */}
{selectedOption.name} {options.map((option) => ( {({ selected, active }) => (
{option.name} {selected ? ( ) : null}
)}
))}
{/* Checkbox */}
{/* Radio */}
{/* BADGES */}

Badges

Tags, badges e status indicators

{/* Status Badges */}

Status Badges

Success Info Warning Error
{/* Pill Badges */}

Pill Badges

Premium New Popular
{/* Count Badges */}

Count Badges

3
9
12
{/* Dot Indicators */}

Dot Indicators

Online
Away
Busy
Offline
{/* Footer */}

Design System criado para Aggios Platform

Versão 1.2 • 2025

); }