Files
eden/packages/ui/src/index.ts
Matheus (Handix) f96c465ee5 feat(web): telas de negócio reais no EDEN Core (Empresas, Produtos, Revendas, CRM, Ofertas)
Prioriza a parte web a pedido do usuário. 2 subagentes eden-frontend em
paralelo sobre o shell autenticado já pronto:

- Empresas/Produtos/Revendas: CRUD completo (lista + criar/editar),
  layout modelado nas páginas reais do tema DreamsERP comprado
  (purchase/vendors.tsx, inventory/products.tsx) — máscara de moeda para
  as 5 faixas de preço + implantação. Novo componente Table<T> genérico
  em packages/ui.
- CRM: Leads (lista, criar/editar, converter em oportunidade) e
  Oportunidades, modelados em crm/leads.tsx/dealsDetails.tsx.
- Ofertas/Quotes: o módulo mais rico — criação com lista dinâmica de
  itens produto/quantidade, fidelidade reduzida opcional, desconto
  opcional, totais calculados pelo servidor; detalhe com aprovar/rejeitar
  e fechar negócio. Modelado em sales/salesQuotes*.tsx. Novo componente
  Select em packages/ui.

Correção de instrução no meio da leva: usuário pediu para seguir de
perto o layout real do tema comprado, não só os tokens visuais já
extraídos — as páginas React relevantes do tema foram extraídas para
.tmp/theme-reference/ (nunca versionado) em cada worktree e os agentes
já em execução foram redirecionados via mensagem (não relançados).

Bug real do próprio agente, corrigindo meu brief: Leads/Opportunities
respondem em camelCase (mapLead/mapOpportunity), não snake_case como o
resto da API — verificado contra o código-fonte real antes de aceitar.

Integração manual: um dos 2 agentes não conseguiu git merge no próprio
sandbox e restaurou o shell existente por leitura+escrita — cada arquivo
restaurado foi comparado byte a byte contra main (diff -rq) antes de
aceitar. App.tsx/AuthenticatedLayout.tsx/packages/ui/index.ts
reconciliados manualmente juntando as rotas/exports dos dois agentes.

Verificado: pnpm turbo run typecheck build (28/28); containers
eden-api/eden-core reconstruídos; bundle de produção contém todas as
novas telas; login simulando Origin de browser real; listagens
retornando dados reais; criação de lead confirmando o formato camelCase.

Claude-Session: https://claude.ai/code/session_01BcWWuKfykGtUweXmHD6cKx

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 18:31:07 -03:00

38 lines
1.4 KiB
TypeScript

/**
* EDEN Design System, derived from the purchased DreamsERP theme
* (tema_do_Eden.zip → dreamserp-v1.0.1/react.zip). See
* docs/project-inventory.md §2 and the eden-frontend agent
* (.claude/agents/eden-frontend.md) for the extraction plan and
* `./tailwind-preset` for the extracted visual tokens.
*/
export const UI_PACKAGE_VERSION = "0.2.0";
export { Button } from "./components/Button.js";
export type { ButtonProps, ButtonVariant, ButtonSize } from "./components/Button.js";
export { Input } from "./components/Input.js";
export type { InputProps } from "./components/Input.js";
export { Select } from "./components/Select.js";
export type { SelectProps, SelectOption } from "./components/Select.js";
export { Table } from "./components/Table.js";
export type { TableProps, TableColumn } from "./components/Table.js";
export { Card } from "./components/Card.js";
export type { CardProps } from "./components/Card.js";
export { Badge } from "./components/Badge.js";
export type { BadgeProps, BadgeVariant } from "./components/Badge.js";
export { Alert } from "./components/Alert.js";
export type { AlertProps, AlertVariant } from "./components/Alert.js";
export { PageHeader } from "./components/PageHeader.js";
export type { PageHeaderProps } from "./components/PageHeader.js";
export { AppShell } from "./components/AppShell.js";
export type { AppShellProps, AppShellNavItem } from "./components/AppShell.js";
export { cn } from "./utils/cn.js";