Pular para o conteúdo principal

Design System

O Design System da QuettaCode está no pacote @quettacode/ui, construído com Radix UI e Tailwind CSS.

Instalação

import { Button, Input, Dialog } from '@quettacode/ui';

Atoms

Componentes básicos e atômicos.

ComponenteDescriçãoProps Principais
AvatarImagem de perfilsrc, fallback, size
BadgeEtiqueta/Tagvariant, children
BarIconÍcone de barraicon, size
ButtonBotão interativovariant, size, disabled, loading
CardContainer com bordachildren, className
CheckboxCaixa de seleçãochecked, onCheckedChange
InputCampo de textotype, placeholder, error
LabelRótulo de formhtmlFor, children
MessageStatusIconÍcone de statusstatus
RadioGroupGrupo de opçõesvalue, onValueChange, options
ScrollAreaÁrea com scrollchildren, className
SeparatorLinha divisóriaorientation
SidebarItemItem de menuicon, label, active, href
SkeletonPlaceholder loadingclassName
SwitchToggle on/offchecked, onCheckedChange
TextareaÁrea de textorows, placeholder
TooltipDica flutuantecontent, children

Molecules

Componentes compostos.

ComponenteDescriçãoProps Principais
AccordionLista expansívelitems, type
AlertMensagem de alertavariant, title, children
AlertDialogModal de confirmaçãoopen, onConfirm, onCancel
CalendarSeletor de dataselected, onSelect
CalendarWidgetWidget de calendárioevents
ChartGráficos (Recharts)data, type
ChatInputInput de chatonSend, onFileSelect
ConversationItemItem de conversacontact, lastMessage, unread
DialogModal genéricoopen, onOpenChange, title
DropdownMenuMenu suspensotrigger, items
FileUploadUpload de arquivosonFileSelect, accept
FormWrapper de formulárioonSubmit, children
GlobalSearchBusca globalonSearch, results
MessageBubbleBalão de mensagemmessage, direction
NavItemItem de navegaçãoicon, label, href
NotificationButtonBotão de notificaçõescount, onClick
SelectSeletor dropdownoptions, value, onChange
StepperPassos de wizardsteps, currentStep
TabsAbas de conteúdotabs, defaultValue
ThemeSwitcherTroca de tema-
ToasterContainer de toasts-
UsageChartGráfico de usodata

Organisms

Componentes complexos e layouts.

ComponenteDescriçãoProps Principais
ChatLayoutLayout de chatsidebar, content
ChatListLista de chatsconversations, onSelect
ContactDetailsSidebarSidebar de contatocontact, onClose
DocumentViewerVisualizador de PDFurl, onClose
FooterRodapé da landing-
HeaderCabeçalho principaluser, notifications
NavbarNavegação principalitems
SidebarMenu lateralitems, collapsed
TableTabela de dadoscolumns, data, pagination
TemplateModalModal de templatetemplates, onSelect
TimelineLinha do tempoevents

Exemplos de Uso

Button

import { Button } from '@quettacode/ui';

<Button variant="default" size="md">
Salvar
</Button>

<Button variant="destructive" loading>
Excluindo...
</Button>

<Button variant="outline" disabled>
Desabilitado
</Button>

Dialog

import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle } from '@quettacode/ui';

<Dialog>
<DialogTrigger asChild>
<Button>Abrir Modal</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Título do Modal</DialogTitle>
</DialogHeader>
<p>Conteúdo aqui</p>
</DialogContent>
</Dialog>

Form com Input

import { Form, Input, Button } from '@quettacode/ui';
import { useForm } from 'react-hook-form';

function ContactForm() {
const form = useForm();

return (
<Form {...form}>
<Input
{...form.register('name')}
placeholder="Nome"
error={form.formState.errors.name?.message}
/>
<Button type="submit">Salvar</Button>
</Form>
);
}

Storybook

Visualize todos os componentes interativamente:

cd packages/ui
pnpm storybook

Acesse: http://localhost:6006


Temas

O design system suporta modo claro e escuro via CSS variables:

import { ThemeProvider } from '@quettacode/ui';

<ThemeProvider defaultTheme="system">
<App />
</ThemeProvider>

Cores Principais

TokenUso
--backgroundFundo da página
--foregroundTexto principal
--primaryCor de destaque
--destructiveAções destrutivas
--mutedTexto secundário
--accentHover/Focus
--borderBordas