Cookest
Componentes UI

Visão Geral dos Componentes UI

CUCL — a biblioteca de componentes React do Cookest, construída com TailwindCSS 4 e Framer Motion

Visão Geral dos Componentes UI

CUCL (Cookest UI Components Library) é o sistema de design partilhado que alimenta a camada web do Cookest. Disponibiliza 12 componentes prontos para produção, uma API tipada de tokens de design e integração completa com Storybook.

Repositório: Cookest/cookest-ui-components-library
Nome do pacote: @cookest/ui
Versão: 0.1.0

Stack tecnológica

FerramentaVersãoFunção
React19Runtime de interface
TypeScript6Segurança de tipos
TailwindCSS4Estilização utilitária
Framer Motion12Animações e transições
clsx + tailwind-mergelatestUtilitários de composição de classes
Storybook10Desenvolvimento e documentação de componentes
Vitest4Testes unitários e de integração
Testing Library16Auxiliares de interação com o DOM
tsup8Bundler da biblioteca (ESM + CJS)
Bun1.xGestor de pacotes e executor de scripts

Instalação

bun add @cookest/ui

Dependências par

bun add react react-dom framer-motion

Importar a folha de estilos

Importe @cookest/ui/styles.css uma vez na raiz da aplicação — carrega os tokens de design como propriedades personalizadas CSS e as fontes web Playfair Display e Inter:

// app/layout.tsx (Next.js) ou main.tsx (Vite)
import "@cookest/ui/styles.css";

Início rápido

import { Button, Card, Input } from "@cookest/ui";
import "@cookest/ui/styles.css";

export default function CartaoDeLogin() {
  return (
    <Card>
      <Input label="Email" type="email" placeholder="utilizador@exemplo.com" />
      <Input label="Palavra-passe" type="password" />
      <Button variant="primary" fullWidth>
        Entrar
      </Button>
    </Card>
  );
}

Tokens de design

Aceda aos objetos de tokens tipados diretamente — útil para lógica sensível ao tema ou decoradores do Storybook:

import { colors, spacing, typography } from "@cookest/ui/tokens";

// ex.: obter a cor primária da marca em tempo de execução
const primary = colors.primary.DEFAULT; // "#7A9A65"

Lista de componentes

ComponenteExportaçãoDescrição
ButtonButtonVariantes primário, secundário, ghost e danger com estado de carregamento
InputInputCampo de texto com rótulo, texto auxiliar, estado de erro e ícones
CardCard, CardHeader, CardBody, CardFooterContentor com secções opcionais de cabeçalho, corpo e rodapé
BadgeBadgeIndicadores de estado com ponto opcional e botão de remoção
AvatarAvatar, AvatarGroupAvatar do utilizador — imagem ou iniciais como fallback; grupos sobrepostos
ModalModalDiálogo acessível com foco preso e fechar por teclado
TooltipTooltipTooltip posicionado com seta e animação Framer Motion
ToggleToggleInterruptor com rótulo e estado desativado
SelectSelectDropdown personalizado com navegação por teclado e pesquisa opcional
SkeletonSkeleton, SkeletonCardPlaceholder de carregamento com animação de pulso
AlertAlertFeedback contextual — informação, sucesso, aviso, erro
DividerDividerSeparador visual horizontal ou vertical

Estrutura do projeto

cookest-ui-components-library/
  src/
    components/
      Alert/
        Alert.tsx
        Alert.test.tsx
        Alert.stories.tsx
        index.ts
      Avatar/    Badge/    Button/
      Card/      Divider/  Input/
      Modal/     Select/   Skeleton/
      Toggle/    Tooltip/
    tokens/
      colors.ts
      typography.ts
      spacing.ts
      effects.ts
      index.ts
    utils/
      cn.ts          ← utilitário clsx + tailwind-merge
    styles.css       ← TailwindCSS 4 @theme + propriedades CSS personalizadas
    index.ts         ← API pública (barrel)
  .storybook/        ← Configuração do Storybook

Fluxo de desenvolvimento

# Instalar dependências
bun install

# Iniciar Storybook (sandbox de componentes)
bun run storybook

# Executar testes unitários
bun run test

# Executar testes em modo de observação
bun run test:watch

# Verificar TypeScript
bun run lint

# Formatar ficheiros de código
bun run format

# Compilar a biblioteca
bun run build

Exportações

A biblioteca tem três caminhos de exportação:

CaminhoConteúdo
@cookest/uiTodos os componentes e o utilitário cn
@cookest/ui/tokensObjetos de tokens de design (colors, spacing, typography, effects)
@cookest/ui/styles.cssPropriedades CSS personalizadas e importações de fontes web

A biblioteca disponibiliza compilações ESM (dist/index.js) e CJS (dist/index.cjs), sendo compatível com o App Router do Next.js, Vite e qualquer ambiente CommonJS.

On this page