@evoapi/design-system

中文文档
0.0.6发布于 2025/12/04MITTypeScriptESM + CJS近 30 天下载 4059

EvoAI Design System for React

原始使用文档
文档目录25 节
  1. Sumário
  2. Instalação
  3. Uso
  4. Importando
  5. Usando Componentes
  6. Componentes Disponíveis
  7. Formulários e Inputs
  8. Navegação
  9. Layout e Estrutura
  10. Feedback e Notificações
  11. Overlays e Modais
  12. Data Display
  13. Sistema de Design
  14. Estrutura de Tokens
  15. Temas
  16. Variantes de Componentes
  17. Documentação
  18. Componentes Documentados
  19. Desenvolvimento
  20. Estrutura do Projeto
  21. Migração
  22. Componentes Depreciados
  23. Guia de Migração
  24. Tecnologias
  25. Licença

Design System React

Um design system moderno construído com shadcn/ui, Radix UI e Tailwind CSS v4. Oferece componentes reutilizáveis, acessíveis e altamente personalizáveis para aplicações React.

Sumário

Instalação

npm install @evoapi/design-system

Uso

Importando

O design system agora possui entrypoints separados por componente, e um entry dedicado para os estilos.

Importe assim:

import "@evoapi/design-system/styles"; // CSS global
import { Button } from "@evoapi/design-system/button";
import { Input } from "@evoapi/design-system/input";
import { Select } from "@evoapi/design-system/select";
import { Tabs } from "@evoapi/design-system/tabs";

O import direto do root ainda funciona, mas é considerado modo legacy:

import "@evoapi/design-system/dist/index.css"; // CSS global
import { Button } from "@evoapi/design-system";

Usando Componentes

import "@evoapi/design-system/styles";

import { Button } from "@evoapi/design-system/button";
import { Input } from "@evoapi/design-system/input";
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@evoapi/design-system/select";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@evoapi/design-system/tabs";

function App() {
  return (
    <div className="p-4 space-y-4">
      <Button variant="default" size="lg">
        Clique Aqui
      </Button>

      <Tabs defaultValue="account" className="w-[400px]">
        <TabsList>
          <TabsTrigger value="account">Conta</TabsTrigger>
          <TabsTrigger value="password">Senha</TabsTrigger>
        </TabsList>

        <TabsContent value="account">Conteúdo da aba conta</TabsContent>
        <TabsContent value="password">Conteúdo da aba senha</TabsContent>
      </Tabs>

      <Select>
        <SelectTrigger className="w-[180px]">
          <SelectValue placeholder="Selecione uma opção" />
        </SelectTrigger>

        <SelectContent>
          <SelectItem value="option1">Opção 1</SelectItem>
          <SelectItem value="option2">Opção 2</SelectItem>
          <SelectItem value="option3">Opção 3</SelectItem>
        </SelectContent>
      </Select>
    </div>
  );
}

Componentes Disponíveis

Nosso design system inclui uma biblioteca completa de 45+ componentes baseados no shadcn/ui:

Formulários e Inputs

  • Button: Botões com múltiplas variantes (default, destructive, outline, secondary, ghost, link)
  • Input: Campos de entrada de texto com suporte a diferentes tipos
  • Textarea: Área de texto multilinha
  • Label: Rótulos para formulários
  • Checkbox: Caixas de seleção
  • Radio Group: Grupos de botões radio
  • Switch: Controles de alternância (toggle)
  • Toggle: Botões de alternância
  • Toggle Group: Grupos de toggles para seleção única ou múltipla
  • Select: Menus dropdown para seleção
  • Slider: Controles deslizantes para valores numéricos
  • Input OTP: Campos para códigos de verificação
  • Form: Sistema completo de formulários com validação

Navegação

  • Navigation Menu: Menus de navegação com dropdown
  • Menubar: Barra de menu estilo desktop
  • Dropdown Menu: Menus dropdown com suporte a submenus, checkboxes e radio buttons
  • Context Menu: Menus contextuais (clique direito)
  • Breadcrumb: Navegação hierárquica
  • Pagination: Controles de paginação
  • Sidebar: Barras laterais responsivas

Layout e Estrutura

  • Table: Tabelas com suporte a seleção, ordenação e ações
  • Card: Cards para exibir conteúdo
  • Accordion: Painéis expansíveis
  • Collapsible: Seções recolhíveis
  • Separator: Divisores visuais
  • Aspect Ratio: Controle de proporção de elementos
  • Scroll Area: Áreas de scroll customizadas
  • Resizable: Painéis redimensionáveis
  • Tabs: Sistema de abas navegáveis

Feedback e Notificações

  • Alert: Alertas para diferentes tipos de mensagem
  • Alert Dialog: Diálogos de confirmação
  • Progress: Barras de progresso
  • Badge: Etiquetas para status e categorização
  • Skeleton: Placeholders de carregamento
  • Sonner (Toaster): Sistema de notificações toast
  • Tooltip: Dicas contextuais

Overlays e Modais

  • Dialog: Modais e diálogos
  • Sheet: Gavetas deslizantes (top, bottom, left, right)
  • Drawer: Gavetas deslizantes mobile
  • Popover: Popovers para conteúdo contextual
  • Hover Card: Cards que aparecem no hover
  • Command: Interface de comando com busca

Data Display

  • Avatar: Avatares de usuário
  • Calendar: Calendário para seleção de datas
  • Carousel: Carrosséis de conteúdo
  • Chart: Gráficos e visualizações de dados

Sistema de Design

Estrutura de Tokens

O design system utiliza Tailwind CSS v4 com CSS Custom Properties para máxima flexibilidade:

@import "tailwindcss";

@theme {
  --color-background: 0 0% 100%;
  --color-foreground: 240 10% 3.9%;
  --color-primary: 240 5.9% 10%;
  --color-primary-foreground: 0 0% 98%;
  --color-secondary: 240 4.8% 95.9%;
  --color-secondary-foreground: 240 5.9% 10%;
  --color-muted: 240 4.8% 95.9%;
  --color-muted-foreground: 240 3.8% 46.1%;
  --color-accent: 240 4.8% 95.9%;
  --color-accent-foreground: 240 5.9% 10%;
  --color-destructive: 0 84.2% 60.2%;
  --color-destructive-foreground: 0 0% 98%;
  --color-border: 240 5.9% 90%;
  --color-input: 240 5.9% 90%;
  --color-ring: 240 5% 64.9%;
  --radius: 0.5rem;
}

Temas

O sistema suporta temas claro e escuro automaticamente através de CSS variables:

@media (prefers-color-scheme: dark) {
  :root {
    --color-background: 240 10% 3.9%;
    --color-foreground: 0 0% 98%;
    --color-primary: 0 0% 98%;
    --color-primary-foreground: 240 5.9% 10%;
    /* ... */
  }
}

Variantes de Componentes

Cada componente possui variantes bem definidas usando Class Variance Authority (CVA):

// Exemplo: Button variants
<Button variant="default">Default</Button>
<Button variant="destructive">Destructive</Button>
<Button variant="outline">Outline</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="link">Link</Button>

// Tamanhos
<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
<Button size="icon">Icon</Button>

// Exemplo: Select variants
<Select>
  <SelectTrigger size="sm">Small</SelectTrigger>
  <SelectTrigger size="default">Default</SelectTrigger>
</Select>

// Exemplo: Tabs orientações
<Tabs orientation="horizontal">...</Tabs>
<Tabs orientation="vertical">...</Tabs>

Documentação

Para ver a documentação completa dos componentes, execute:

npm run storybook

Isso iniciará o Storybook na porta 6006, onde você pode explorar:

  • ✅ 45+ Stories com exemplos práticos
  • ✅ Documentação interativa de todos os componentes
  • ✅ Casos de uso reais para cada componente
  • ✅ Controles dinâmicos para testar variações
  • ✅ Código fonte de cada exemplo
  • ✅ Acessibilidade demonstrada em cada componente

Componentes Documentados

Formulários:

  • Button: 6 variações (Default, Variants, Sizes, With Icons, Icon Only, States)
  • Form: 5 variações (Default, Profile Form, Login Form, Realtime Validation, Survey Form)
  • Input: 6 variações (Default, With Label, File Input, Disabled, With Icon, Password)
  • Textarea: 6 variações (Default, With Label, States, Sizes, Feedback Form, Controlled)
  • Select: 6 variações (Default, With Label, With Groups, States, Sizes, Controlled)
  • Switch: 5 variações (Default, With Label, States, Settings, Controlled)
  • Slider: 7 variações (Default, With Label, Range, States, Vertical, Settings, Different Scales)
  • Toggle: 6 variações (Default, Variants, Sizes, With Icons, States, Formatting Toolbar)
  • Toggle Group: 6 variações (Default, Selection Types, Variants, Sizes, Formatting Toolbar, States)

Layout e Navegação:

  • Tabs: 6 variações (Default, Simple, With Icons, States, Controlled, Product Navigation)
  • Scroll Area: 4 variações (Default, Horizontal, Long Text, Sizes)
  • Table: 6 variações (Default, Selectable, With Actions, Sortable, With Footer, Empty)
  • Accordion: 5 variações (Default, Multiple, With Icons, Custom Styling, FAQ)
  • Card: 6 variações (Default, With Image, Profile Card, Statistics, Product Card, Interactive)

Feedback:

  • Sonner: 6 variações (Default, All Types, With Actions, Positioning, Advanced Settings, Form Example)
  • Alert: 5 variações (Default, With Icon, Variants, Custom, Dismissible)
  • Progress: 6 variações (Default, With Label, Variants, Sizes, Animated, Multi-step)

E muitos outros...

Desenvolvimento

Para contribuir com o design system:

  1. Clone o repositório
  2. Instale as dependências: npm install
  3. Inicie o Storybook: npm run storybook
  4. Faça suas alterações
  5. Execute os testes: npm run test
  6. Faça o build: npm run build

Estrutura do Projeto

ui-design-system/
├── src/
│   ├── components/
│   │   ├── ui/           # Componentes base (shadcn/ui)
│   │   └── stories/      # Stories do Storybook (45+ stories)
│   ├── utils/            # Utilitários (cn, etc.)
│   ├── hooks/            # Hooks customizados (use-mobile)
│   └── index.ts          # Exportações principais
├── .storybook/           # Configuração do Storybook
└── docs/                 # Documentação adicional

Migração

Componentes Depreciados

⚠️ Importante: Os seguintes componentes foram depreciados e substituídos por versões baseadas no shadcn/ui:

  • BAccordion → Accordion
  • BAlert → Alert
  • BMenu → DropdownMenu / NavigationMenu
  • BProfile → Avatar + custom components
  • BAppBar → custom implementation using Button + DropdownMenu

Guia de Migração

// ❌ Antes (depreciado)
import { BButton, BAlert } from "@evoapi/design-system";

<BButton variant="primary">Click me</BButton>
<BAlert type="success">Success message</BAlert>

// ✅ Depois (novo)
import { Button, Alert } from "@evoapi/design-system";

<Button variant="default">Click me</Button>
<Alert>
  <CheckCircle className="h-4 w-4" />
  <AlertTitle>Success</AlertTitle>
  <AlertDescription>Success message</AlertDescription>
</Alert>

Tecnologias

  • React 18: Biblioteca principal
  • shadcn/ui: Componentes base
  • Radix UI: Primitivos acessíveis
  • Tailwind CSS v4: Sistema de design e estilização
  • Class Variance Authority: Gerenciamento de variantes
  • Lucide React: Ícones consistentes
  • React Hook Form: Gerenciamento de formulários
  • Zod: Validação de schemas
  • Sonner: Sistema de notificações toast
  • Storybook 8: Documentação interativa
  • TypeScript: Tipagem estática completa

Licença

MIT

版本与发布记录

@evoapi/design-system 共发布 5 个版本,首次发布于 2025/05/15;过去 12 个月发布了 1 个版本。

版本发布日期距今
0.0.6latest2025/12/0411 个月前
0.0.52025/07/021.4 年前
0.0.32025/05/201.5 年前
0.0.22025/05/151.5 年前
0.0.12025/05/151.5 年前

关于 @evoapi/design-system 的常见问题

@evoapi/design-system 是什么?

EvoAI Design System for React

如何安装 @evoapi/design-system?

在项目目录运行 npm install @evoapi/design-system,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0)、react-dom(>=18.0.0)、tailwindcss(^4.1.10)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@evoapi/design-system 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@evoapi/design-system 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@evoapi/design-system 可以商用吗?

@evoapi/design-system 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@evoapi/design-system 的下载量有多少?

根据 npm 官方下载统计,@evoapi/design-system 在 2026/10/14 – 2026/11/12 这 30 天内被下载 4,059 次,日均约 135 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@evoapi/design-system 还在维护吗?

最新版本 0.0.6 发布于 2025/12/04(11 个月前);至今共发布 5 个版本,其中过去 12 个月发布了 1 个;首次发布于 2025/05/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。