{"_id":"@clube-bravos/design-system","_rev":"2-d3aaa836500273603cf600cbfd46b03f","name":"@clube-bravos/design-system","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@clube-bravos/design-system","version":"1.0.0","keywords":["react","design-system","components","ui","clube-bravos","tailwind"],"author":{"name":"Clube Bravos de Benefícios"},"license":"MIT","_id":"@clube-bravos/design-system@1.0.0","maintainers":[{"name":"danilo.romano.ombrello","email":"danilo.romano@ombrelloseguros.com.br"}],"homepage":"https://github.com/clubebravos/design-system#readme","bugs":{"url":"https://github.com/clubebravos/design-system/issues"},"dist":{"shasum":"986dc5a9e6d20426732c9d835d74a995efd987a2","tarball":"https://registry.npmjs.org/@clube-bravos/design-system/-/design-system-1.0.0.tgz","fileCount":11,"integrity":"sha512-A31FCUtDHuy51gpqRIznbKTPAGkyKWu/SC0bkjf6cPyQpuIfbOCns7PO9+M0zNlbJAseEciDdiLYnrAf0ccO0A==","signatures":[{"sig":"MEQCIFckJw6SPQS4BXDrf3eyo6bEwh67aT8POlYzal0tg+syAiAftgZOeZOR0PxKy00wpcIDjBlqTcMlJ5uXjojDnJap2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513312},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./fonts":"./dist/styles/fonts.css","./styles":"./dist/styles/theme.css","./assets/*":"./dist/assets/*"},"gitHead":"a65ba72c6a09b81dc4c9ea339cee44ba99247474","scripts":{"build:lib":"vite build --config vite.config.lib.ts && tsc --project tsconfig.lib.json --emitDeclarationOnly --outDir dist && tsx scripts/copy-styles.ts","pack:test":"npm run build:lib && npm pack","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"danilo.romano.ombrello","email":"danilo.romano@ombrelloseguros.com.br"},"repository":{"url":"git+https://github.com/clubebravos/design-system.git","type":"git"},"_npmVersion":"10.9.7","description":"Design System oficial do Clube Bravos de Benefícios","directories":{},"_nodeVersion":"22.22.2","dependencies":{"clsx":"^2.1.1","lucide-react":"^0.487.0","tailwind-merge":"^3.2.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vite":"^6.3.5","typescript":"^5.0.0","@types/node":"^20.0.0","tailwindcss":"^4.1.12","@types/react":"^18.3.1","@types/react-dom":"^18.3.1","@tailwindcss/vite":"^4.1.12","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/design-system_1.0.0_1778264223270_0.34607628039775773","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@clube-bravos/design-system","version":"1.0.1","description":"Design System oficial do Clube Bravos de Benefícios","type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./styles":"./dist/styles/theme.css","./fonts":"./dist/styles/fonts.css","./assets/*":"./dist/assets/*"},"scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --config vite.config.lib.ts && tsc --project tsconfig.lib.json --emitDeclarationOnly --outDir dist && tsx scripts/copy-styles.ts","pack:test":"npm run build:lib && npm pack","prepublishOnly":"npm run build:lib","prepare":"husky","release":"./scripts/release.sh","release:patch":"./scripts/release.sh patch","release:minor":"./scripts/release.sh minor","release:major":"./scripts/release.sh major"},"keywords":["react","design-system","components","ui","clube-bravos","tailwind"],"author":{"name":"Clube Bravos de Benefícios"},"license":"MIT","repository":{"type":"git","url":"git+https://bitbucket.org/ombrello-seguros/clube-bravos-design-system.git"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"dependencies":{"clsx":"^2.1.1","lucide-react":"^0.487.0","tailwind-merge":"^3.2.0"},"devDependencies":{"@commitlint/cli":"^21.0.1","@commitlint/config-conventional":"^21.0.1","@emotion/react":"11.14.0","@emotion/styled":"11.14.1","@mui/icons-material":"7.3.5","@mui/material":"7.3.5","@popperjs/core":"2.11.8","@radix-ui/react-accordion":"1.2.3","@radix-ui/react-alert-dialog":"1.1.6","@radix-ui/react-aspect-ratio":"1.1.2","@radix-ui/react-avatar":"1.1.3","@radix-ui/react-checkbox":"1.1.4","@radix-ui/react-collapsible":"1.1.3","@radix-ui/react-context-menu":"2.2.6","@radix-ui/react-dialog":"1.1.6","@radix-ui/react-dropdown-menu":"2.1.6","@radix-ui/react-hover-card":"1.1.6","@radix-ui/react-label":"2.1.2","@radix-ui/react-menubar":"1.1.6","@radix-ui/react-navigation-menu":"1.2.5","@radix-ui/react-popover":"1.1.6","@radix-ui/react-progress":"1.1.2","@radix-ui/react-radio-group":"1.2.3","@radix-ui/react-scroll-area":"1.2.3","@radix-ui/react-select":"2.1.6","@radix-ui/react-separator":"1.1.2","@radix-ui/react-slider":"1.2.3","@radix-ui/react-slot":"1.1.2","@radix-ui/react-switch":"1.1.3","@radix-ui/react-tabs":"1.1.3","@radix-ui/react-toggle":"1.1.2","@radix-ui/react-toggle-group":"1.1.2","@radix-ui/react-tooltip":"1.1.8","@tailwindcss/vite":"^4.1.12","@types/node":"^20.0.0","@types/react":"^18.3.1","@types/react-dom":"^18.3.1","@vitejs/plugin-react":"^4.7.0","canvas-confetti":"1.9.4","class-variance-authority":"0.7.1","cmdk":"1.1.1","conventional-changelog":"^7.2.0","conventional-recommended-bump":"^11.2.0","date-fns":"3.6.0","embla-carousel-react":"8.6.0","husky":"^9.1.7","input-otp":"1.4.2","motion":"12.23.24","next-themes":"0.4.6","react-day-picker":"8.10.1","react-dnd":"16.0.1","react-dnd-html5-backend":"16.0.1","react-hook-form":"7.55.0","react-popper":"2.3.0","react-resizable-panels":"2.1.7","react-responsive-masonry":"2.7.1","react-router":"7.13.0","react-slick":"0.31.0","recharts":"2.15.2","sonner":"2.0.3","tailwindcss":"^4.1.12","tsx":"^4.7.0","tw-animate-css":"1.3.8","typescript":"^5.0.0","vaul":"1.1.2","vite":"^6.3.5"},"gitHead":"2c0ed9a4249d8953a1f18a34baec8fbd156103f0","_id":"@clube-bravos/design-system@1.0.1","bugs":{"url":"https://bitbucket.org/ombrello-seguros/clube-bravos-design-system/issues"},"homepage":"https://bitbucket.org/ombrello-seguros/clube-bravos-design-system#readme","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-1mvzK869Fg6hgTgxCisxeFLmGqf7ebexpaFx1ulhtL5i+MGJMCYjPMFqoQMomk/eV78J7ldPkN7kmqqkXzt/qA==","shasum":"8bb8a331e9bc4554cc0c4f9cd04f78a9fd0e88d7","tarball":"https://registry.npmjs.org/@clube-bravos/design-system/-/design-system-1.0.1.tgz","fileCount":135,"unpackedSize":626716,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDeBuOZ52s7UQWrU3oWhu/yOzN8DmD/ltZFnesG7i/juQIgDqbNDCfFqRyJ3i8F6AoWI0mS/nTwzecmFKrRxV0+BLg="}]},"_npmUser":{"name":"danilo.romano.ombrello","email":"danilo.romano@ombrelloseguros.com.br"},"directories":{},"maintainers":[{"name":"danilo.romano.ombrello","email":"danilo.romano@ombrelloseguros.com.br"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/design-system_1.0.1_1778611257502_0.36175799558046995"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-08T18:17:03.139Z","modified":"2026-05-12T18:40:57.774Z","1.0.0":"2026-05-08T18:17:03.449Z","1.0.1":"2026-05-12T18:40:57.658Z"},"bugs":{"url":"https://bitbucket.org/ombrello-seguros/clube-bravos-design-system/issues"},"author":{"name":"Clube Bravos de Benefícios"},"license":"MIT","homepage":"https://bitbucket.org/ombrello-seguros/clube-bravos-design-system#readme","keywords":["react","design-system","components","ui","clube-bravos","tailwind"],"repository":{"type":"git","url":"git+https://bitbucket.org/ombrello-seguros/clube-bravos-design-system.git"},"description":"Design System oficial do Clube Bravos de Benefícios","maintainers":[{"name":"danilo.romano.ombrello","email":"danilo.romano@ombrelloseguros.com.br"}],"readme":"# Clube Bravos Design System\n\nDesign System oficial do Clube Bravos de Benefícios. Publicado como `@clube-bravos/design-system` no **registry privado da Figma**.\n\n## Estrutura do repositório\n\n```\n.\n├── src/                            # Componentes, estilos, assets\n│   ├── index.ts                    # Entry point da lib (o que é exportado)\n│   ├── app/components/             # Componentes Bravos* (publicados)\n│   ├── imports/                    # Assets (logos, imagens)\n│   └── styles/                     # CSS (theme.css, fonts.css, etc.)\n├── scripts/\n│   ├── copy-styles.ts              # Pós-build: copia CSS + assets pro dist/\n│   └── release.sh                  # Bump semver + changelog + tag\n├── .husky/commit-msg               # Hook que valida msg via commitlint\n├── commitlint.config.cjs           # Conventional Commits\n├── bitbucket-pipelines.yml         # CI: commitlint em PRs, publish em tags\n├── vite.config.ts                  # Preview do Figma Make (dev)\n├── vite.config.lib.ts              # Build da lib (gera dist/)\n├── tsconfig.json                   # tsconfig base (noEmit: true — dev)\n├── tsconfig.lib.json               # Override: emit declarations (.d.ts)\n└── package.json                    # Único package.json: dev + lib + tooling\n```\n\nExiste **um único `package.json`**:\n- `dependencies` — só o que a lib carrega em runtime (`clsx`, `lucide-react`, `tailwind-merge`).\n- `devDependencies` — preview do Figma Make (MUI, Radix, etc.), build tools (Vite, TS, Tailwind), tooling de release (husky, commitlint, conventional-*).\n- `peerDependencies` — `react` e `react-dom` ^18.\n- `files: [\"dist\", \"README.md\", \"LICENSE\"]` — restringe o que vai pro registry.\n\nConsumidor instalando o pacote recebe apenas `dependencies` + `peerDependencies`. As deps pesadas do preview ficam só no dev local/CI.\n\n## Setup local\n\n```bash\nnpm install     # instala tudo + ativa husky (commit-msg hook)\nnpm run dev     # preview Figma Make em :5173\n```\n\nA primeira `npm install` ativa o hook `commit-msg` via husky — a partir daí todo commit passa pelo `commitlint`.\n\n## Convenção de commits\n\nConventional Commits. Exemplos:\n\n```\nfeat(button): adiciona variante ghost\nfix(card): corrige padding no mobile\nchore(deps): atualiza lucide-react\ndocs: melhora exemplo no README\n```\n\nTipos comuns: `feat`, `fix`, `chore`, `docs`, `refactor`, `test`, `perf`, `style`, `build`, `ci`.\n\n- `feat:` → bump **minor**\n- `fix:` → bump **patch**\n- `BREAKING CHANGE:` no corpo ou `feat!:` → bump **major**\n\nO `bitbucket-pipelines.yml` roda `commitlint` em PRs e bloqueia merge se algum commit estiver fora do padrão.\n\n## Como liberar uma nova versão\n\n### Fluxo automatizado (recomendado)\n\nEstando na `main` com tudo commitado:\n\n```bash\n# Detecta o bump pelos commits desde a última tag\nnpm run release\n\n# Ou força o bump\nnpm run release:patch\nnpm run release:minor\nnpm run release:major\n```\n\nO `scripts/release.sh`:\n\n1. Lê commits convencionais desde a última tag e calcula o bump.\n2. Bumpa `version` em `package.json`.\n3. Atualiza `CHANGELOG.md`.\n4. Commita `chore(release): vX.Y.Z` e cria a tag `vX.Y.Z`.\n5. **Não publica** — só prepara.\n\nDepois:\n\n```bash\ngit push origin main\ngit push origin v1.2.3\n```\n\nO push da tag dispara o `bitbucket-pipelines.yml`, que builda e publica `@clube-bravos/design-system@1.2.3` no registry da Figma.\n\n### Fluxo manual (sem CI)\n\nPra hotfix/emergência sem passar pelo Bitbucket:\n\n```bash\n# Build\nnpm ci\nnpm run build:lib\n\n# .npmrc local (LOCAL — não commitar; já está no .gitignore)\ncat > .npmrc <<EOF\n@clube-bravos:registry=https://registry.figma.com/npm/b16de91e-5c85-47bb-8dc8-1a87d10ef689/registry/\n//registry.figma.com/npm/b16de91e-5c85-47bb-8dc8-1a87d10ef689/registry/:_authToken=SEU_TOKEN_AQUI\nEOF\n\nnpm publish --ignore-scripts\n\nrm -f .npmrc\n```\n\n## Configurar o Bitbucket Pipelines\n\nPra o pipeline publicar com sucesso, uma vez:\n\n1. **Habilitar Pipelines** no repo: *Repository settings → Pipelines → Settings → Enable*.\n2. **Cadastrar o token do Figma** como variável segura:\n   - *Repository settings → Repository variables*\n   - Nome: `FIGMA_NPM_TOKEN`\n   - Valor: token `figp_...` (Figma → Settings → Account → Personal access tokens → Registry)\n   - Marcar **Secured**.\n\nSem `FIGMA_NPM_TOKEN`, o `npm publish` no pipeline falha com 401.\n\n### O que cada pipeline faz\n\n| Trigger              | Job                                | Publica? |\n|----------------------|------------------------------------|----------|\n| PR → qualquer branch | `commitlint --from origin/<dest>`  | Não      |\n| Push em `main`       | `npm ci && npm run build:lib`      | Não      |\n| Push de tag `v*`     | Build + `npm publish`              | **Sim**  |\n\nA separação entre `main` (só valida) e `tags` (publica) garante que cada versão publicada tem uma tag rastreável.\n\n## Consumindo o pacote\n\nEm qualquer projeto que vá usar o DS:\n\n1. **`.npmrc`** (gitignored) na raiz do projeto consumidor:\n\n   ```\n   @clube-bravos:registry=https://registry.figma.com/npm/b16de91e-5c85-47bb-8dc8-1a87d10ef689/registry/\n   //registry.figma.com/npm/b16de91e-5c85-47bb-8dc8-1a87d10ef689/registry/:_authToken=${FIGMA_NPM_TOKEN}\n   ```\n\n2. **Instalar**:\n\n   ```bash\n   FIGMA_NPM_TOKEN=figp_... npm install @clube-bravos/design-system\n   ```\n\n3. **Usar**:\n\n   ```tsx\n   import { BravosButton } from '@clube-bravos/design-system';\n   import '@clube-bravos/design-system/styles';\n   import '@clube-bravos/design-system/fonts';\n\n   <BravosButton variant=\"primary\">Olá</BravosButton>\n   ```\n\n## Segurança\n\n- **`.npmrc` nunca vai pro git** — está em `.gitignore`. Tokens só ficam em:\n  - Variável segura `FIGMA_NPM_TOKEN` no Bitbucket Pipelines.\n  - `.npmrc` local da máquina do dev.\n- Se um token vazar (commit acidental, screenshot, etc.), **revogá-lo imediatamente** em Figma → Settings → Account → Personal access tokens e emitir um novo.\n\n## Troubleshooting\n\n- **`npm publish` falha com 401**: token expirado ou faltando `FIGMA_NPM_TOKEN` no Bitbucket.\n- **`npm publish` falha com 409 / \"cannot publish over existing version\"**: a versão em `package.json` já existe no registry. Bumpe via `npm run release` antes de fazer push da tag.\n- **`commitlint` falhando em PR**: algum commit do PR não está no formato Conventional Commits. Rebase/edit + force push.\n- **Sem `.d.ts` no `dist/`**: garanta que `tsconfig.lib.json` tem `\"noEmit\": false` (o `tsconfig.json` base tem `noEmit: true`, e o `lib` precisa sobrescrever).\n","readmeFilename":"README.md"}