@cupcodev/ui 1.0.7 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,52 +1,49 @@
1
- ## @cupcodev/ui
2
-
3
- Design system Cupcode pronto para uso (componentes React + estilos + preset Tailwind).
4
-
5
- ### Instalação
6
-
7
- ```bash
8
- npm install @cupcodev/ui
9
- ```
10
-
11
- Além do pacote, instale as peer dependencies listadas em `peerDependencies` (React 18, Tailwind 3, Radix UI, etc.). Um comando típico:
12
-
13
- ```bash
1
+ ## @cupcodev/ui
2
+
3
+ Design system Cupcode pronto para uso (componentes React + estilos + preset Tailwind).
4
+
5
+ ### Instalação
6
+
7
+ ```bash
8
+ npm install @cupcodev/ui
9
+ ```
10
+
11
+ Além do pacote, instale as peer dependencies listadas em `peerDependencies` (React 18, Tailwind 3, Radix UI, etc.). Um comando típico:
12
+
13
+ ```bash
14
14
  npm install react react-dom tailwindcss class-variance-authority tailwind-merge lucide-react \
15
15
  cmdk date-fns embla-carousel-react input-otp react-day-picker react-resizable-panels recharts sonner vaul \
16
- @radix-ui/react-accordion @radix-ui/react-alert-dialog @radix-ui/react-aspect-ratio @radix-ui/react-avatar \
17
- @radix-ui/react-checkbox @radix-ui/react-collapsible @radix-ui/react-context-menu @radix-ui/react-dialog \
18
- @radix-ui/react-dropdown-menu @radix-ui/react-hover-card @radix-ui/react-label @radix-ui/react-menubar \
19
- @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-progress @radix-ui/react-radio-group \
20
- @radix-ui/react-scroll-area @radix-ui/react-select @radix-ui/react-separator @radix-ui/react-slider \
21
- @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-toggle \
22
- @radix-ui/react-toggle-group @radix-ui/react-tooltip tailwindcss-animate @tailwindcss/typography
23
- ```
24
-
16
+ @radix-ui/react-accordion @radix-ui/react-alert-dialog @radix-ui/react-aspect-ratio @radix-ui/react-avatar \
17
+ @radix-ui/react-checkbox @radix-ui/react-collapsible @radix-ui/react-context-menu @radix-ui/react-dialog \
18
+ @radix-ui/react-dropdown-menu @radix-ui/react-hover-card @radix-ui/react-label @radix-ui/react-menubar \
19
+ @radix-ui/react-navigation-menu @radix-ui/react-popover @radix-ui/react-progress @radix-ui/react-radio-group \
20
+ @radix-ui/react-scroll-area @radix-ui/react-select @radix-ui/react-separator @radix-ui/react-slider \
21
+ @radix-ui/react-slot @radix-ui/react-switch @radix-ui/react-tabs @radix-ui/react-toast @radix-ui/react-toggle \
22
+ @radix-ui/react-toggle-group @radix-ui/react-tooltip tailwindcss-animate @tailwindcss/typography
23
+ ```
24
+
25
25
  Compatibilidade de runtime: Node.js `>=18.18.0`.
26
26
  Compatibilidade de estilo: Tailwind CSS v3 (`tailwindcss@^3.4.x`).
27
27
  Gerenciador oficial: `npm` (lockfile único: `package-lock.json`).
28
-
29
- ### Tailwind (obrigatorio para `styles.css`)
30
-
31
- Use o preset disponibilizado pelo pacote:
32
-
33
- ```js
34
- // tailwind.config.js
35
- module.exports = {
36
- presets: [require("@cupcodev/ui/tailwind-preset.cjs")],
37
- content: [
38
- "./src/**/*.{ts,tsx}",
39
- "./node_modules/@cupcodev/ui/dist/**/*.{js,jsx}",
40
- ],
41
- };
42
- ```
43
-
44
- E importe os estilos completos:
45
-
46
- ```ts
28
+
29
+ ### Styles (`styles.css` compilado)
30
+
31
+ Para carregar o visual completo dos componentes (incluindo `UserMenuCupcode`, chat e modal Telescup), basta:
32
+
33
+ ```ts
47
34
  import "@cupcodev/ui/styles.css";
48
35
  ```
49
36
 
37
+ Se o app também usa Tailwind, o preset continua disponível:
38
+
39
+ ```js
40
+ // tailwind.config.js
41
+ module.exports = {
42
+ presets: [require("@cupcodev/ui/tailwind-preset.cjs")],
43
+ content: ["./src/**/*.{ts,tsx}"],
44
+ };
45
+ ```
46
+
50
47
  Se voce quiser apenas variaveis + base minima (sem classes utilitarias/glass/dock), use:
51
48
 
52
49
  ```ts
@@ -54,97 +51,129 @@ import "@cupcodev/ui/styles/base.css";
54
51
  ```
55
52
 
56
53
  Importante:
57
- - `styles.css` pressupoe Tailwind + preset configurados no app consumidor.
54
+ - `styles.css` agora ja vem compilado para uso direto no app consumidor.
58
55
  - `styles/global.css` nao deve ser usado isoladamente, porque nao inclui os tokens.
59
56
  - `styles/base.css` e o entrypoint seguro para tema/tokens quando voce nao quer carregar o pacote visual completo.
60
-
61
- ### Uso básico
62
-
63
- ```tsx
64
- import { Button } from "@cupcodev/ui";
65
-
66
- export default function Example() {
67
- return <Button variant="default">Oi Cupcode</Button>;
68
- }
69
- ```
70
-
71
- Todos os componentes Cupcode e shadcn/ui base são reexportados de `@cupcodev/ui`.
72
-
73
- ### MainNavbar sem router obrigatório
74
-
75
- `MainNavbar` não depende de `react-router-dom`. Para integração SPA, passe `pathname` e `onNavigate`:
76
-
77
- ```tsx
78
- import { MainNavbar } from "@cupcodev/ui";
79
- import { useLocation, useNavigate } from "react-router-dom";
80
-
81
- export function Header() {
82
- const location = useLocation();
83
- const navigate = useNavigate();
84
-
85
- return (
86
- <MainNavbar
87
- pathname={location.pathname}
88
- onNavigate={(href) => navigate(href)}
89
- />
90
- );
91
- }
92
- ```
93
-
94
- ### ThemeToggle sem next-themes obrigatório
95
-
96
- `ThemeToggle` alterna a classe `dark` no `document.documentElement` quando usado de forma não-controlada:
97
-
98
- ```tsx
99
- import { ThemeToggle } from "@cupcodev/ui";
100
-
101
- export function HeaderActions() {
102
- return <ThemeToggle />;
103
- }
104
- ```
105
-
106
- Modo controlado (opcional):
107
-
108
- ```tsx
109
- <ThemeToggle theme={theme} onThemeChange={setTheme} />
110
- ```
111
-
112
- ### Qualidade e CI
113
-
114
- Validações automatizadas disponíveis no projeto:
115
-
116
- ```bash
117
- npm run lint
118
- npm run typecheck
119
- npm run build:lib
120
- npm run build:site
121
- npm run test:consumer
122
- ```
123
-
124
- - `lint` roda com `--max-warnings=0` (qualquer warning quebra o gate).
125
- - `typecheck`: valida tipos com `tsc -b` usando as configs estritas do projeto.
126
- - `build:lib`: gera o pacote publicável (`dist`) via `tsup` sem sourcemaps.
127
- - `build:site`: gera somente o site/docs via Vite.
128
- - `test:consumer`: cria um projeto externo temporário, instala o tarball de `@cupcodev/ui` e valida `typecheck + build`.
129
- - `prepublishOnly` executa `check:release` (`lint + typecheck + build:lib`) antes de qualquer publicação.
130
- - Pipeline CI em `.github/workflows/ci.yml` roda `check:release`, `build:site` e `test:consumer` em todo push/PR.
131
-
132
- App de consumo real versionado: `examples/vite-consumer`.
133
-
134
- ### Peers
135
-
136
- | Pacote | Versão mínima | Uso no DS |
137
- | --- | --- | --- |
138
- | `react`, `react-dom` | ^18.3.1 | base dos componentes |
139
- | `tailwindcss` | ^3.4.17 | util classes + preset |
140
- | `class-variance-authority`, `tailwind-merge` | ^0.7.1 / ^2.6.0 | variantes e merge de classes |
141
- | `lucide-react` | ^0.462.0 | ícones |
142
- | `@radix-ui/*` | conforme `package.json` | primitives dos componentes shadcn |
57
+
58
+ ### Config de runtime (env no app consumidor)
59
+
60
+ Para componentes que dependem de env em runtime (chat/supabase/telescup), configure uma vez no bootstrap do app:
61
+
62
+ ```ts
63
+ import { setCupcodeRuntimeEnv } from "@cupcodev/ui";
64
+
65
+ setCupcodeRuntimeEnv({
66
+ VITE_SUPABASE_URL: import.meta.env.VITE_SUPABASE_URL,
67
+ VITE_SUPABASE_ANON_KEY: import.meta.env.VITE_SUPABASE_ANON_KEY,
68
+ VITE_TELESCUP_BASE_URL: import.meta.env.VITE_TELESCUP_BASE_URL,
69
+ VITE_TELESCUP_API_BASE: import.meta.env.VITE_TELESCUP_API_BASE,
70
+ });
71
+ ```
72
+
73
+ ### Uso básico
74
+
75
+ ```tsx
76
+ import { Button } from "@cupcodev/ui";
77
+
78
+ export default function Example() {
79
+ return <Button variant="default">Oi Cupcode</Button>;
80
+ }
81
+ ```
82
+
83
+ Todos os componentes Cupcode e shadcn/ui base são reexportados de `@cupcodev/ui`.
84
+
85
+ ### MainNavbar sem router obrigatório
86
+
87
+ `MainNavbar` não depende de `react-router-dom`. Para integração SPA, passe `pathname` e `onNavigate`:
88
+
89
+ ```tsx
90
+ import { MainNavbar } from "@cupcodev/ui";
91
+ import { useLocation, useNavigate } from "react-router-dom";
92
+
93
+ export function Header() {
94
+ const location = useLocation();
95
+ const navigate = useNavigate();
96
+
97
+ return (
98
+ <MainNavbar
99
+ pathname={location.pathname}
100
+ onNavigate={(href) => navigate(href)}
101
+ />
102
+ );
103
+ }
104
+ ```
105
+
106
+ ### ThemeToggle sem next-themes obrigatório
107
+
108
+ `ThemeToggle` alterna a classe `dark` no `document.documentElement` quando usado de forma não-controlada:
109
+
110
+ ```tsx
111
+ import { ThemeToggle } from "@cupcodev/ui";
112
+
113
+ export function HeaderActions() {
114
+ return <ThemeToggle />;
115
+ }
116
+ ```
117
+
118
+ Modo controlado (opcional):
119
+
120
+ ```tsx
121
+ <ThemeToggle theme={theme} onThemeChange={setTheme} />
122
+ ```
123
+
124
+ ### Qualidade e CI
125
+
126
+ Validações automatizadas disponíveis no projeto:
127
+
128
+ ```bash
129
+ npm run lint
130
+ npm run typecheck
131
+ npm run build:lib
132
+ npm run build:site
133
+ npm run test:consumer
134
+ ```
135
+
136
+ - `lint` roda com `--max-warnings=0` (qualquer warning quebra o gate).
137
+ - `typecheck`: valida tipos com `tsc -b` usando as configs estritas do projeto.
138
+ - `build:lib`: gera o pacote publicável (`dist`) via `tsup` sem sourcemaps.
139
+ - `build:site`: gera somente o site/docs via Vite.
140
+ - `test:consumer`: cria um projeto externo temporário, instala o tarball de `@cupcodev/ui` e valida `typecheck + build`.
141
+ - `prepublishOnly` executa `check:release` (`lint + typecheck + build:lib`) antes de qualquer publicação.
142
+ - Pipeline CI em `.github/workflows/ci.yml` roda `check:release`, `build:site` e `test:consumer` em todo push/PR.
143
+
144
+ App de consumo real versionado: `examples/vite-consumer`.
145
+
146
+ ### Setup do chat (Supabase + Realtime)
147
+
148
+ Para configurar o chat com dados reais e notificacoes em tempo real:
149
+
150
+ 1. Use `.env.chat.example` como referencia para preencher seu `.env.local`.
151
+ 2. Rode no SQL Editor do Supabase:
152
+ - `scripts/supabase/chat/00_bootstrap_chat_public.sql`
153
+ - `scripts/supabase/chat/01_confirm_tables.sql`
154
+ - `scripts/supabase/chat/02_confirm_columns.sql`
155
+ - `scripts/supabase/chat/03_enable_realtime.sql`
156
+ - `scripts/supabase/chat/04_verify_realtime.sql`
157
+ - `scripts/supabase/chat/06_fix_rls_and_avatars_for_external_auth.sql` (se usar auth externa)
158
+ 3. Reinicie o app: `npm run dev`.
159
+ 4. Valide o fluxo com `scripts/supabase/chat/05_acceptance_checks.sql`.
160
+
161
+ Guia completo: `docs/chat-supabase-setup.md`.
162
+
163
+ ### Peers
164
+
165
+ | Pacote | Versão mínima | Uso no DS |
166
+ | --- | --- | --- |
167
+ | `react`, `react-dom` | ^18.3.1 | base dos componentes |
168
+ | `tailwindcss` | ^3.4.17 | util classes + preset |
169
+ | `class-variance-authority`, `tailwind-merge` | ^0.7.1 / ^2.6.0 | variantes e merge de classes |
170
+ | `lucide-react` | ^0.462.0 | ícones |
171
+ | `@radix-ui/*` | conforme `package.json` | primitives dos componentes shadcn |
143
172
  | `cmdk`, `date-fns`, `embla-carousel-react`, `react-day-picker`, `input-otp`, `react-resizable-panels`, `recharts`, `sonner`, `vaul` | conforme `package.json` | componentes específicos |
144
- | `tailwindcss-animate`, `@tailwindcss/typography` | ^1.0.7 / ^0.5.16 | plugins usados pelo preset |
145
-
146
- Consulte `peerDependencies` para a lista completa ao instalar.
147
-
148
- ### Tipos e superfícies
149
-
150
- Importe de `@cupcodev/ui` para manter tipos e estilos alinhados. Para gráficos, use também o submódulo `@cupcodev/ui/charts`.
173
+ | `tailwindcss-animate`, `@tailwindcss/typography` | ^1.0.7 / ^0.5.16 | plugins usados pelo preset |
174
+
175
+ Consulte `peerDependencies` para a lista completa ao instalar.
176
+
177
+ ### Tipos e superfícies
178
+
179
+ Importe de `@cupcodev/ui` para manter tipos e estilos alinhados. Para gráficos, use também o submódulo `@cupcodev/ui/charts`.