"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 */}
{/* 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 => (
))}
{/* 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 => (
))}
{/* Border Styles */}
{/* GRADIENTE */}
Gradiente
Gradiente principal da marca
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 => (
))}
{/* ÍCONES */}
Ícones
Heroicons - biblioteca completa (outline)
{iconList.map(({ name, component: Icon }) => (
))}
{/* BOTÕES */}
Botões
Variações de botões com Headless UI
{/* 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)';
}
}}>
Interactive Card
Clique para interagir
{/* INPUTS */}
{/* BADGES */}
Badges
Tags, badges e status indicators
{/* Status Badges */}
Status Badges
Success
Info
Warning
Error
{/* Pill Badges */}
Pill Badges
Premium
New
Popular
{/* Count Badges */}
{/* Dot Indicators */}
{/* Footer */}
Design System criado para Aggios Platform
Versão 1.2 • 2025
);
}