Recurso
Base

Entry points e instalação

Em projetos com bundler, escolha o entry point correto para manter Server Components livres de código cliente. Em páginas sem build, carregue o bundle global CmUI diretamente pelo unpkg.

Snippets

Trechos prontos para colar no projeto.

Instalação

bash
npm install cosmemilton-ui react react-dom

CSS global

Inclui o reset global e os tokens de todos os temas embutidos — nada mais é necessário para renderizar componentes estilizados.

tsx
import "cosmemilton-ui/styles.css";

Adoção incremental em app existente

components.css traz tokens e estilos de componentes sem o reset global: a página continua com o estilo do app e só as subárvores cm-* são normalizadas.

tsx
import "cosmemilton-ui/components.css";

Imports por ambiente

tsx
import { CmButton } from "cosmemilton-ui/client";
import { CmCard, CmStack } from "cosmemilton-ui/server";
import { CmThemeProvider } from "cosmemilton-ui/theme";
import { CmMap } from "cosmemilton-ui/map";

Mapa com Leaflet

CmMap fica num entry dedicado para manter Leaflet como peer opcional. Importe o CSS do Leaflet no layout raiz.

tsx
npm install leaflet

// app/layout.tsx
import "cosmemilton-ui/styles.css";
import "leaflet/dist/leaflet.css";

import { CmMap } from "cosmemilton-ui/map";

Script global (sem bundler)

Carregue CSS, React e ReactDOM antes da biblioteca. A versão da URL acompanha automaticamente o pacote instalado pela documentação.

html
<link rel="stylesheet" href="https://unpkg.com/cosmemilton-ui@3.15.0/styles.min.css" />

<script crossorigin src="https://unpkg.com/react@18.3.1/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/cosmemilton-ui@3.15.0"></script>

<div id="root"></div>
<script>
  const { CmButton } = window.CmUI;
  ReactDOM.createRoot(document.getElementById("root")).render(
    React.createElement(CmButton, null, "Salvar")
  );
</script>

Notas

`cosmemilton-ui/client` contém componentes interativos.

`cosmemilton-ui/server` contém componentes server-safe e utilitários.

`cosmemilton-ui/theme` concentra provider, script, toggle, temas e tokens.

`cosmemilton-ui/map` contém `CmMap` e exige o peer opcional `leaflet` apenas quando você usar mapas.

O bundle global expõe `window.CmUI`, não inclui React/ReactDOM e pode ser carregado pela URL raiz do pacote no unpkg. Ele não inclui o `CmMap`, para não tornar Leaflet obrigatório em páginas sem bundler.

Em uma tag `<script>` sem compilação, escreva os elementos com `React.createElement`; JSX exige uma etapa de transformação.

`cosmemilton-ui/styles.css` e `cosmemilton-ui/components.css` também existem minificados (`styles.min.css`, `components.min.css`).

Todo o CSS é publicado dentro de `@layer cm.reset, cm.tokens, cm.components` — qualquer CSS seu fora de layer sempre vence o da biblioteca, sem guerra de especificidade.