@rainersoft/design-tokens 1.0.6 → 2.3.0
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 +167 -519
- package/dist/index.d.mts +8485 -0
- package/dist/index.d.ts +1052 -31
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +16 -2
- package/dist/index.mjs.map +1 -1
- package/formats/tokens.json +7 -4
- package/package.json +37 -85
- package/themes/dark.ts +0 -89
- package/themes/index.ts +0 -99
- package/themes/light.ts +0 -88
- package/tokens/accessibility.ts +0 -280
- package/tokens/animations.json +0 -142
- package/tokens/breakpoints.json +0 -30
- package/tokens/colors/dark.json +0 -296
- package/tokens/colors/light.json +0 -272
- package/tokens/components/celestial-background.json +0 -106
- package/tokens/effects.json +0 -125
- package/tokens/hero.json +0 -69
- package/tokens/index.ts +0 -443
- package/tokens/motion.json +0 -33
- package/tokens/radius.json +0 -16
- package/tokens/shadows.json +0 -33
- package/tokens/spacing.json +0 -42
- package/tokens/typography.json +0 -264
- package/tokens/utilities.ts +0 -594
- package/tokens/z-index.json +0 -27
package/README.md
CHANGED
|
@@ -1,593 +1,241 @@
|
|
|
1
1
|
# @rainersoft/design-tokens
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://github.com/RainerTeixeira/rainer-design-tokens)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-

|
|
7
|
-

|
|
8
|
-

|
|
9
|
-

|
|
6
|
+
> Design tokens globais (CSS Variables, Tailwind config, temas) para o ecossistema Rainersoft
|
|
10
7
|
|
|
11
|
-
**
|
|
8
|
+
**Versão 2.2.0** - Arquitetura limpa, zero redundância, fonte única de verdade
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
## 📦 Responsabilidade
|
|
14
11
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`@rainersoft/design-tokens` é uma biblioteca profissional de design tokens que define a linguagem visual do RainerSoft Design System. Agnóstica de tecnologia, escalável e pronta para produção.
|
|
12
|
+
Este pacote é a **fonte única de verdade** para todos os tokens de design:
|
|
13
|
+
- Cores, tipografia, espaçamento, radius, sombras
|
|
14
|
+
- CSS Variables para temas dinâmicos
|
|
15
|
+
- Configuração Tailwind pronta para uso
|
|
16
|
+
- Suporte a múltiplos temas (light/dark)
|
|
22
17
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- 🎨 **Temas Light & Dark** - Paletas profissionais para qualquer contexto
|
|
26
|
-
- 🚀 **Zero Dependencies** - Pura performance, sem bloat
|
|
27
|
-
- 📦 **Múltiplos Formatos** - Tailwind, CSS Vars, JSON universal
|
|
28
|
-
- 🎯 **Type-Safe** - 100% TypeScript com tipos completos
|
|
29
|
-
- 🌐 **Platform Agnostic** - Use em web, mobile, desktop, jogos
|
|
30
|
-
- ♿ **Acessível** - WCAG AA compliant por padrão
|
|
31
|
-
- 📏 **8pt Grid** - Sistema de espaçamento consistente
|
|
32
|
-
- 🎭 **Cyberpunk Theme** - Dark mode com efeitos neon
|
|
33
|
-
- 🎬 **Animações** - Keyframes e animações prontas (accordion, slide-in, fade-in)
|
|
34
|
-
- 📚 **Storybook** - Documentação visual interativa de todos os tokens
|
|
35
|
-
- ✏️ **Token Editor** - Interface web completa para editar tokens visualmente
|
|
36
|
-
- ✅ Validação de schema JSON
|
|
37
|
-
- ✅ Preview visual dos tokens
|
|
38
|
-
- ✅ Histórico de alterações (undo/redo)
|
|
39
|
-
- ✅ Geração de formatos: CSS, Tailwind, Figma, Android XML, iOS Swift (100% local no navegador)
|
|
40
|
-
- 🧪 **Testes Completos** - 302 testes com 100% de cobertura do Token Editor
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 🚀 Installation
|
|
18
|
+
## 🚀 Instalação
|
|
45
19
|
|
|
46
20
|
```bash
|
|
21
|
+
# Com pnpm (recomendado)
|
|
47
22
|
pnpm add @rainersoft/design-tokens
|
|
48
|
-
```
|
|
49
23
|
|
|
50
|
-
|
|
24
|
+
# Com npm
|
|
51
25
|
npm install @rainersoft/design-tokens
|
|
52
26
|
```
|
|
53
27
|
|
|
54
|
-
|
|
55
|
-
yarn add @rainersoft/design-tokens
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
---
|
|
28
|
+
## 📖 Uso
|
|
59
29
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
### TypeScript/JavaScript
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
import { tokens, lightTheme, darkTheme } from '@rainersoft/design-tokens';
|
|
66
|
-
|
|
67
|
-
// Use tokens diretamente
|
|
68
|
-
const primaryColor = tokens.colors.light.primary.base; // #0891b2
|
|
69
|
-
const spacing = tokens.spacing['4']; // 1rem
|
|
70
|
-
const fontSize = tokens.typography.headings.h1.fontSize; // 2.25rem
|
|
71
|
-
|
|
72
|
-
// Ou use temas
|
|
73
|
-
const theme = lightTheme;
|
|
74
|
-
console.log(theme.colors.background.primary); // #ffffff
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Tailwind CSS
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
// tailwind.config.ts
|
|
81
|
-
import { tailwindConfig } from '@rainersoft/design-tokens/formats/tailwind.config';
|
|
82
|
-
|
|
83
|
-
export default {
|
|
84
|
-
...tailwindConfig,
|
|
85
|
-
content: ['./src/**/*.{js,ts,jsx,tsx}'],
|
|
86
|
-
};
|
|
87
|
-
```
|
|
30
|
+
### CSS Variables (Recomendado)
|
|
88
31
|
|
|
89
32
|
```tsx
|
|
90
|
-
// Use
|
|
91
|
-
|
|
33
|
+
// ✅ Use o formato gerado automaticamente (v2.1.0+)
|
|
34
|
+
import '@rainersoft/design-tokens/formats/css-vars.css';
|
|
35
|
+
|
|
36
|
+
// Os tokens estarão disponíveis globalmente
|
|
37
|
+
<div style={{ color: 'var(--color-primary)' }}>
|
|
92
38
|
Hello World
|
|
93
39
|
</div>
|
|
94
40
|
```
|
|
95
41
|
|
|
96
|
-
|
|
42
|
+
> **Nota**: `src/css-vars.css` está **deprecated** desde v2.1.0 e será removido na v3.0.0.
|
|
43
|
+
> Use `formats/css-vars.css` que é gerado automaticamente dos tokens JSON.
|
|
97
44
|
|
|
98
|
-
|
|
99
|
-
/* Import CSS vars */
|
|
100
|
-
@import '@rainersoft/design-tokens/formats/css-vars.css';
|
|
101
|
-
|
|
102
|
-
/* Use variables */
|
|
103
|
-
.button {
|
|
104
|
-
background: var(--color-brand-primary);
|
|
105
|
-
padding: var(--spacing-4);
|
|
106
|
-
border-radius: var(--radius-md);
|
|
107
|
-
}
|
|
108
|
-
```
|
|
45
|
+
### Tokens TypeScript
|
|
109
46
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
O Storybook da lib é focado **apenas em design tokens**, não em componentes UI.
|
|
47
|
+
```tsx
|
|
48
|
+
import { colors, spacing, radius } from '@rainersoft/design-tokens';
|
|
113
49
|
|
|
114
|
-
|
|
115
|
-
|
|
50
|
+
// Usar tokens programaticamente
|
|
51
|
+
const primaryColor = colors.primary.DEFAULT;
|
|
52
|
+
const largePadding = spacing['16'];
|
|
116
53
|
```
|
|
117
54
|
|
|
118
|
-
|
|
119
|
-
- 🎨 **ColorPalette** - Paletas completas (Light & Dark themes)
|
|
120
|
-
- 🎭 **ThemePreview** - Preview dos temas mostrando tokens trabalhando juntos
|
|
121
|
-
- 📝 **Typography** - Sistema de tipografia completo
|
|
122
|
-
- 📏 **Spacing** - Escala de espaçamento (8pt grid)
|
|
123
|
-
- 🔲 **Radius** - Raios de borda
|
|
124
|
-
- 🌑 **Shadows** - Sombras e efeitos glow
|
|
125
|
-
- 🎬 **Animations** - Animações e keyframes (accordion, slide-in, fade-in)
|
|
55
|
+
### Temas Dinâmicos
|
|
126
56
|
|
|
127
|
-
|
|
57
|
+
```html
|
|
58
|
+
<!-- Tema claro (padrão) -->
|
|
59
|
+
<body data-theme="light">
|
|
128
60
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
## 📁 Structure
|
|
132
|
-
|
|
133
|
-
```
|
|
134
|
-
@rainersoft/design-tokens/
|
|
135
|
-
│
|
|
136
|
-
├── 📄 index.ts # Ponto de entrada principal da biblioteca
|
|
137
|
-
├── 📄 package.json # Configuração do pacote npm
|
|
138
|
-
├── 📄 pnpm-lock.yaml # Lock file do pnpm
|
|
139
|
-
├── 📄 tsconfig.json # Configuração TypeScript
|
|
140
|
-
├── 📄 tsup.config.ts # Configuração do bundler tsup
|
|
141
|
-
├── 📄 LICENSE # Licença MIT
|
|
142
|
-
├── 📄 README.md # Este arquivo
|
|
143
|
-
│
|
|
144
|
-
├── 🔧 Configurações
|
|
145
|
-
│ ├── .npmrc # Configuração pnpm (isolamento workspace)
|
|
146
|
-
│ ├── .gitignore # Arquivos ignorados pelo Git
|
|
147
|
-
│ ├── .npmignore # Arquivos ignorados na publicação npm
|
|
148
|
-
│ ├── .prettierrc.json # Configuração Prettier
|
|
149
|
-
│ ├── .eslintrc.json # Configuração ESLint
|
|
150
|
-
│ ├── .cspell.json # Configuração CSpell (verificação ortográfica)
|
|
151
|
-
│ └── .env # Variáveis de ambiente (local, não commitado)
|
|
152
|
-
│
|
|
153
|
-
├── 🎯 tokens/ # FONTE ÚNICA DE VERDADE (JSON + TypeScript)
|
|
154
|
-
│ ├── index.ts # Exportações principais dos tokens
|
|
155
|
-
│ ├── accessibility.ts # Utilitários de acessibilidade (WCAG)
|
|
156
|
-
│ ├── utilities.ts # Utilitários e helpers
|
|
157
|
-
│ ├── colors/
|
|
158
|
-
│ │ ├── light.json # Paleta do tema claro
|
|
159
|
-
│ │ └── dark.json # Paleta do tema escuro (cyberpunk)
|
|
160
|
-
│ ├── typography.json # Sistema de tipografia completo
|
|
161
|
-
│ ├── spacing.json # Escala de espaçamento (8pt grid)
|
|
162
|
-
│ ├── radius.json # Escala de raio de borda
|
|
163
|
-
│ ├── shadows.json # Sombras e efeitos glow
|
|
164
|
-
│ └── animations.json # Animações e keyframes
|
|
165
|
-
│
|
|
166
|
-
├── 🎨 themes/ # Temas compostos
|
|
167
|
-
│ ├── index.ts # Exportações dos temas
|
|
168
|
-
│ ├── light.ts # Tema claro profissional
|
|
169
|
-
│ └── dark.ts # Tema escuro cyberpunk
|
|
170
|
-
│
|
|
171
|
-
├── 📤 formats/ # FORMATOS GERADOS AUTOMATICAMENTE
|
|
172
|
-
│ ├── tailwind.config.ts # Configuração Tailwind (gerado)
|
|
173
|
-
│ ├── css-vars.css # CSS custom properties (gerado)
|
|
174
|
-
│ └── tokens.json # Export JSON universal (gerado)
|
|
175
|
-
│
|
|
176
|
-
├── 🔧 scripts/ # Scripts de build e utilitários
|
|
177
|
-
│ ├── build-formats.ts # Orquestrador principal de build
|
|
178
|
-
│ ├── build-css.ts # Gera CSS variables
|
|
179
|
-
│ ├── build-tailwind.ts # Gera Tailwind config
|
|
180
|
-
│ ├── build-tokens-json.ts # Gera tokens.json
|
|
181
|
-
│ ├── prepare-publish.js # Prepara publicação npm
|
|
182
|
-
│ ├── setup-github.sh # Setup GitHub Actions
|
|
183
|
-
│ ├── fix-storybook.ps1 # Script PowerShell para Storybook
|
|
184
|
-
│ ├── update-dates.ts # Atualiza datas na documentação
|
|
185
|
-
│ └── update-version.ts # Atualiza versão no README automaticamente
|
|
186
|
-
│
|
|
187
|
-
├── 📚 stories/ # Stories do Storybook (apenas tokens)
|
|
188
|
-
│ ├── assets/ # Assets das stories
|
|
189
|
-
│ ├── Accessibility.stories.tsx # Documentação de acessibilidade
|
|
190
|
-
│ ├── ColorPalette.stories.tsx # Paleta completa de cores
|
|
191
|
-
│ ├── ColorStates.stories.tsx # Estados de cores
|
|
192
|
-
│ ├── ThemePreview.stories.tsx # Preview dos temas
|
|
193
|
-
│ ├── Typography.stories.tsx # Sistema de tipografia
|
|
194
|
-
│ ├── TypographyHierarchy.stories.tsx # Hierarquia tipográfica
|
|
195
|
-
│ ├── Spacing.stories.tsx # Escala de espaçamento
|
|
196
|
-
│ ├── Radius.stories.tsx # Raios de borda
|
|
197
|
-
│ ├── Shadows.stories.tsx # Sombras e efeitos
|
|
198
|
-
│ ├── Animations.stories.tsx # Animações e keyframes
|
|
199
|
-
│ └── *.mdx # Documentação MDX das stories
|
|
200
|
-
│
|
|
201
|
-
├── ⚙️ .storybook/ # Configuração do Storybook
|
|
202
|
-
│ ├── main.ts # Configuração principal
|
|
203
|
-
│ └── preview.tsx # Preview e temas do Storybook
|
|
204
|
-
│
|
|
205
|
-
├── 📦 dist/ # Saída compilada (TypeScript)
|
|
206
|
-
│ ├── index.js # CommonJS bundle
|
|
207
|
-
│ ├── index.mjs # ESM bundle
|
|
208
|
-
│ ├── index.d.ts # TypeScript definitions
|
|
209
|
-
│ ├── index.d.mts # ESM TypeScript definitions
|
|
210
|
-
│ └── *.map # Source maps
|
|
211
|
-
│
|
|
212
|
-
└── 📖 docs/ # Documentação completa
|
|
213
|
-
├── 00-INDICE.md # Índice geral da documentação
|
|
214
|
-
├── 03-ESTRUTURA.md # Estrutura detalhada da biblioteca
|
|
215
|
-
├── 06-ESTRUTURA_STORYBOOK.md # Estrutura do Storybook
|
|
216
|
-
├── 04-SISTEMA_BUILD.md # Sistema de build automatizado
|
|
217
|
-
├── 01-guidelines.md # Guidelines de uso
|
|
218
|
-
├── 07-GUIA_TOKENS_EXPANDIDOS.md # Guia dos tokens expandidos
|
|
219
|
-
├── 15-GUIA_MIGRACAO.md # Guia de migração
|
|
220
|
-
├── 11-PUBLICACAO.md # Guia de publicação
|
|
221
|
-
├── 09-CONFIGURACAO_PNPM.md # Configuração pnpm
|
|
222
|
-
├── CONTRIBUINDO.md # Guia de contribuição
|
|
223
|
-
├── 05-STORYBOOK.md # Documentação do Storybook
|
|
224
|
-
├── 02-RESUMO_ESTRUTURA.md # Resumo da estrutura
|
|
225
|
-
├── 12-HISTORICO_MUDANCAS.md # Histórico de mudanças
|
|
226
|
-
└── 14-roadmap.md # Roadmap do projeto
|
|
61
|
+
<!-- Tema escuro -->
|
|
62
|
+
<body data-theme="dark">
|
|
227
63
|
```
|
|
228
64
|
|
|
229
|
-
|
|
65
|
+
## 🛠️ Scripts
|
|
230
66
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
- ❌ **NÃO edite manualmente**: `formats/*` (serão sobrescritos pelo build)
|
|
235
|
-
- ⚙️ **Configurações**: Arquivos `.npmrc`, `.eslintrc.json`, `.prettierrc.json`, etc. na raiz
|
|
67
|
+
```bash
|
|
68
|
+
# Construir tokens
|
|
69
|
+
pnpm build
|
|
236
70
|
|
|
237
|
-
|
|
71
|
+
# Desenvolvimento com hot reload
|
|
72
|
+
pnpm dev
|
|
238
73
|
|
|
239
|
-
|
|
74
|
+
# Executar testes
|
|
75
|
+
pnpm test
|
|
240
76
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
{
|
|
244
|
-
primary: { base: '#0891b2', hover: '#06b6d4', active: '#0891b2' },
|
|
245
|
-
secondary: { base: '#9333ea', hover: '#a855f7', active: '#9333ea' },
|
|
246
|
-
accent: { base: '#db2777', hover: '#e11d48', active: '#db2777' },
|
|
247
|
-
status: { success: '#22c55e', error: '#ef4444', warning: '#f59e0b', info: '#3b82f6' }
|
|
248
|
-
}
|
|
249
|
-
```
|
|
77
|
+
# Verificar tipos
|
|
78
|
+
pnpm type-check
|
|
250
79
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
{
|
|
254
|
-
primary: { base: '#00e6ff', hover: '#33eeff', active: '#00e6ff' },
|
|
255
|
-
secondary: { base: '#7d00ff', hover: '#9333ea', active: '#7d00ff' },
|
|
256
|
-
accent: { base: '#ff006e', hover: '#ff3385', active: '#ff006e' },
|
|
257
|
-
effects: { glowCyan: '0 0 20px rgba(0, 230, 255, 0.5)' }
|
|
258
|
-
}
|
|
80
|
+
# Limpar build
|
|
81
|
+
pnpm clean
|
|
259
82
|
```
|
|
260
83
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
## 📏 Typography
|
|
84
|
+
## 📁 Estrutura
|
|
264
85
|
|
|
265
|
-
|
|
86
|
+
```text
|
|
87
|
+
@rainersoft/design-tokens/
|
|
88
|
+
├── tokens/ # 📝 Fonte única de verdade (JSON)
|
|
89
|
+
│ ├── colors/ # Paletas light/dark
|
|
90
|
+
│ ├── typography.json # Tipografia
|
|
91
|
+
│ ├── spacing.json # Espaçamento
|
|
92
|
+
│ ├── radius.json # Border radius
|
|
93
|
+
│ ├── shadows.json # Sombras
|
|
94
|
+
│ ├── motion.json # Animações
|
|
95
|
+
│ └── z-index.json # Camadas
|
|
96
|
+
├── formats/ # 🔄 Gerados automaticamente
|
|
97
|
+
│ ├── css-vars.css # CSS Variables (USE ESTE)
|
|
98
|
+
│ ├── tokens.json # JSON consolidado
|
|
99
|
+
│ └── tailwind.config.ts # Config Tailwind
|
|
100
|
+
├── src/
|
|
101
|
+
│ └── css-vars.css # ⚠️ DEPRECATED (remover em v3.0.0)
|
|
102
|
+
└── dist/ # 📦 Build para distribuição
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 🎨 Tokens Disponíveis
|
|
106
|
+
|
|
107
|
+
### Cores
|
|
108
|
+
- `primary`, `secondary`, `accent`, `destructive`
|
|
109
|
+
- `background`, `foreground`, `muted`, `card`, `popover`
|
|
110
|
+
- Cada cor tem variantes light/dark
|
|
111
|
+
|
|
112
|
+
As cores são expostas principalmente como **CSS Variables**, por exemplo:
|
|
266
113
|
|
|
267
|
-
```
|
|
268
|
-
{
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// ... h3, h4, h5, h6
|
|
273
|
-
},
|
|
274
|
-
body: {
|
|
275
|
-
large: { fontSize: '1.125rem', lineHeight: '1.75' },
|
|
276
|
-
medium: { fontSize: '1rem', lineHeight: '1.5' },
|
|
277
|
-
small: { fontSize: '0.875rem', lineHeight: '1.5' }
|
|
278
|
-
},
|
|
279
|
-
// ... subtitle, caption, button, label, code
|
|
114
|
+
```css
|
|
115
|
+
:root[data-theme="light"] {
|
|
116
|
+
--color-primary: 14 165 233; /* rgb */
|
|
117
|
+
--color-primary-foreground: 15 23 42; /* rgb */
|
|
118
|
+
/* ...outras cores */
|
|
280
119
|
}
|
|
281
|
-
```
|
|
282
120
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
```tsx
|
|
288
|
-
// React example
|
|
289
|
-
function ThemeToggle() {
|
|
290
|
-
const [theme, setTheme] = useState('light');
|
|
291
|
-
|
|
292
|
-
const toggleTheme = () => {
|
|
293
|
-
const newTheme = theme === 'light' ? 'dark' : 'light';
|
|
294
|
-
setTheme(newTheme);
|
|
295
|
-
document.documentElement.classList.toggle('dark');
|
|
296
|
-
};
|
|
297
|
-
|
|
298
|
-
return <button onClick={toggleTheme}>Toggle Theme</button>;
|
|
121
|
+
:root[data-theme="dark"] {
|
|
122
|
+
--color-primary: 56 189 248;
|
|
123
|
+
--color-primary-foreground: 15 23 42;
|
|
299
124
|
}
|
|
300
125
|
```
|
|
301
126
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
## 📚 Documentation
|
|
305
|
-
|
|
306
|
-
📖 **[Documentação Completa](./docs/00-INDICE.md)** - Índice geral de toda a documentação
|
|
307
|
-
|
|
308
|
-
### Guias Principais
|
|
309
|
-
|
|
310
|
-
- [**Guidelines**](./docs/01-guidelines.md) - Como usar os tokens
|
|
311
|
-
- [**ESTRUTURA.md**](./docs/03-ESTRUTURA.md) - Estrutura detalhada da biblioteca
|
|
312
|
-
- [**SISTEMA_BUILD.md**](./docs/04-SISTEMA_BUILD.md) - Sistema de build automatizado
|
|
313
|
-
- [**Roadmap**](./docs/14-roadmap.md) - Futuras features e versões
|
|
314
|
-
- [**GUIA_TOKENS_EXPANDIDOS**](./docs/07-GUIA_TOKENS_EXPANDIDOS.md) - Guia dos tokens expandidos (cores e tipografia)
|
|
315
|
-
- [**GUIA_MIGRACAO**](./docs/15-GUIA_MIGRACAO.md) - Guia de migração para v2.0.0
|
|
316
|
-
- [**PUBLICACAO**](./docs/11-PUBLICACAO.md) - Guia de publicação no GitHub/npm
|
|
317
|
-
|
|
318
|
-
### Storybook
|
|
319
|
-
|
|
320
|
-
- [**STORYBOOK.md**](./docs/05-STORYBOOK.md) - Documentação visual dos tokens
|
|
321
|
-
- [**ESTRUTURA_STORYBOOK.md**](./docs/06-ESTRUTURA_STORYBOOK.md) - Separação entre tokens e componentes
|
|
322
|
-
|
|
323
|
-
### Referência Rápida
|
|
324
|
-
|
|
325
|
-
- [**RESUMO_ESTRUTURA.md**](./docs/02-RESUMO_ESTRUTURA.md) - Resumo da estrutura
|
|
326
|
-
- [**HISTORICO_MUDANCAS.md**](./docs/12-HISTORICO_MUDANCAS.md) - Histórico de mudanças
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## 🎯 Use Cases
|
|
127
|
+
Uso típico nas camadas de UI:
|
|
331
128
|
|
|
332
|
-
|
|
129
|
+
- CSS direto: `color: rgb(var(--color-primary));`
|
|
130
|
+
- Tailwind (via config): classes como `bg-primary`, `text-primary-foreground`, `border-border`, etc.
|
|
131
|
+
- Temas dinâmicos: alternando `data-theme="light"` / `data-theme="dark"` na tag `html` ou `body`.
|
|
333
132
|
|
|
334
|
-
|
|
335
|
-
-
|
|
336
|
-
- 🖥️ Aplicações desktop (Electron, Tauri)
|
|
337
|
-
- 🎮 Interfaces de jogos (Unity, Unreal, Godot)
|
|
338
|
-
- 🎨 Design systems corporativos
|
|
339
|
-
- 🚀 MVPs e protótipos rápidos
|
|
133
|
+
### Espaçamento
|
|
134
|
+
- Sistema 8pt grid: `0`, `1`, `2`, `4`, `8`, `12`, `16`, `20`, `24`, `32`...
|
|
340
135
|
|
|
341
|
-
###
|
|
136
|
+
### Tipografia
|
|
137
|
+
- Font sizes: `xs`, `sm`, `base`, `lg`, `xl`, `2xl`...
|
|
138
|
+
- Font weights: `light`, `regular`, `medium`, `semibold`, `bold`
|
|
342
139
|
|
|
343
|
-
|
|
140
|
+
### Radius
|
|
141
|
+
- `none`, `sm`, `md`, `lg`, `xl`, `full`
|
|
344
142
|
|
|
345
|
-
|
|
346
|
-
-
|
|
347
|
-
- [Radix UI](https://www.radix-ui.com/) + custom styling
|
|
348
|
-
- Sua própria biblioteca de componentes
|
|
143
|
+
### Sombras
|
|
144
|
+
- `xs`, `sm`, `md`, `lg`, `xl`, `2xl`
|
|
349
145
|
|
|
350
|
-
|
|
146
|
+
### Animações
|
|
147
|
+
- Durações: `fast`, `normal`, `slow`
|
|
148
|
+
- Easing functions predefinidos
|
|
351
149
|
|
|
352
|
-
##
|
|
150
|
+
## ⚙️ Exemplo de Tailwind Config
|
|
353
151
|
|
|
354
|
-
|
|
152
|
+
Um exemplo simples de como consumir as variáveis de cor neste pacote via Tailwind:
|
|
355
153
|
|
|
356
|
-
```
|
|
154
|
+
```ts
|
|
357
155
|
// tailwind.config.ts
|
|
358
|
-
import {
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
export const shadcnTheme = {
|
|
388
|
-
primary: tokens.colors.light.primary.base,
|
|
389
|
-
secondary: tokens.colors.light.secondary.base,
|
|
390
|
-
accent: tokens.colors.light.accent.base,
|
|
391
|
-
// ... map other tokens
|
|
156
|
+
import type { Config } from 'tailwindcss';
|
|
157
|
+
|
|
158
|
+
const config: Config = {
|
|
159
|
+
darkMode: ['class', '[data-theme="dark"]'],
|
|
160
|
+
theme: {
|
|
161
|
+
extend: {
|
|
162
|
+
colors: {
|
|
163
|
+
background: 'rgb(var(--color-background) / <alpha-value>)',
|
|
164
|
+
foreground: 'rgb(var(--color-foreground) / <alpha-value>)',
|
|
165
|
+
primary: {
|
|
166
|
+
DEFAULT: 'rgb(var(--color-primary) / <alpha-value>)',
|
|
167
|
+
foreground: 'rgb(var(--color-primary-foreground) / <alpha-value>)',
|
|
168
|
+
},
|
|
169
|
+
secondary: {
|
|
170
|
+
DEFAULT: 'rgb(var(--color-secondary) / <alpha-value>)',
|
|
171
|
+
foreground: 'rgb(var(--color-secondary-foreground) / <alpha-value>)',
|
|
172
|
+
},
|
|
173
|
+
muted: {
|
|
174
|
+
DEFAULT: 'rgb(var(--color-muted) / <alpha-value>)',
|
|
175
|
+
foreground: 'rgb(var(--color-muted-foreground) / <alpha-value>)',
|
|
176
|
+
},
|
|
177
|
+
card: {
|
|
178
|
+
DEFAULT: 'rgb(var(--color-card) / <alpha-value>)',
|
|
179
|
+
foreground: 'rgb(var(--color-card-foreground) / <alpha-value>)',
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
},
|
|
392
184
|
};
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
---
|
|
396
185
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
```typescript
|
|
400
|
-
// Main tokens
|
|
401
|
-
import { tokens } from '@rainersoft/design-tokens';
|
|
402
|
-
|
|
403
|
-
// Individual token categories
|
|
404
|
-
import {
|
|
405
|
-
lightThemeColors,
|
|
406
|
-
darkThemeColors,
|
|
407
|
-
typographyTokens,
|
|
408
|
-
spacingTokens,
|
|
409
|
-
radiusTokens,
|
|
410
|
-
shadowTokens
|
|
411
|
-
} from '@rainersoft/design-tokens/tokens';
|
|
412
|
-
|
|
413
|
-
// Themes
|
|
414
|
-
import { lightTheme, darkTheme } from '@rainersoft/design-tokens/themes';
|
|
415
|
-
|
|
416
|
-
// Formats
|
|
417
|
-
import { tailwindConfig } from '@rainersoft/design-tokens/formats/tailwind.config';
|
|
186
|
+
export default config;
|
|
418
187
|
```
|
|
419
188
|
|
|
420
|
-
|
|
189
|
+
## 📝 Changelog
|
|
421
190
|
|
|
422
|
-
|
|
191
|
+
### v2.2.0 (2024-11-24)
|
|
423
192
|
|
|
424
|
-
|
|
193
|
+
**🚀 Melhorias de Governança e CI/CD**
|
|
425
194
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
## 🧪 Development
|
|
433
|
-
|
|
434
|
-
```bash
|
|
435
|
-
# Install dependencies
|
|
436
|
-
pnpm install
|
|
195
|
+
- ✅ **CI/CD Pipeline**: Workflow GitHub Actions completo para validação automática
|
|
196
|
+
- ✅ **Validação de Tokens**: Checks automáticos para valores hardcoded
|
|
197
|
+
- ✅ **Build Sequencial**: Pipeline garantindo ordem correta de build
|
|
198
|
+
- ✅ **Zero Hardcode Enforcement**: Validação rigorosa contra valores hardcoded
|
|
199
|
+
- ✅ **Documentação Profissional**: CONTRIBUTING.md dentro de docs/
|
|
437
200
|
|
|
438
|
-
|
|
439
|
-
pnpm run build
|
|
201
|
+
### v2.1.0 (2024-11-24)
|
|
440
202
|
|
|
441
|
-
|
|
442
|
-
pnpm run build:formats
|
|
203
|
+
**🎯 Arquitetura Limpa - Zero Redundância**
|
|
443
204
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
205
|
+
- ✅ **Removida redundância entre CSS vars**: `src/css-vars.css` marcado como DEPRECATED
|
|
206
|
+
- ✅ **Fonte única de verdade**: Apenas `formats/` (gerado) + `tokens/` (fonte)
|
|
207
|
+
- ✅ **Classes utilitárias movidas**: `.glass`, `.neon-*`, `.gradient-*` → `@rainersoft/ui`
|
|
208
|
+
- ✅ **Limpeza de arquivos**: `coverage/` e `.env` adicionados ao `.gitignore`
|
|
209
|
+
- ✅ **Documentação atualizada**: README reflete a nova arquitetura
|
|
448
210
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
# Run tests
|
|
454
|
-
pnpm test
|
|
455
|
-
|
|
456
|
-
# Type check
|
|
457
|
-
pnpm run type-check
|
|
458
|
-
|
|
459
|
-
# Lint
|
|
460
|
-
pnpm run lint
|
|
461
|
-
|
|
462
|
-
# Clean
|
|
463
|
-
pnpm run clean # Remove dist/
|
|
464
|
-
pnpm run clean:all # Remove node_modules, lock, dist, etc.
|
|
211
|
+
**Migração Recomendada:**
|
|
212
|
+
```diff
|
|
213
|
+
- import '@rainersoft/design-tokens/src/css-vars.css';
|
|
214
|
+
+ import '@rainersoft/design-tokens/formats/css-vars.css';
|
|
465
215
|
```
|
|
466
216
|
|
|
467
|
-
###
|
|
217
|
+
### v2.0.0
|
|
468
218
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
8. **⚠️ IMPORTANTE**: Sempre commit `dist/` após build (veja [PUBLICACAO.md](./docs/11-PUBLICACAO.md#-por-que-dist-está-commitado))
|
|
219
|
+
- Sistema profissional W3C Design Tokens (DTCG)
|
|
220
|
+
- Token Editor 100% local (browser-based)
|
|
221
|
+
- Novos tokens: motion, breakpoints, z-index
|
|
222
|
+
- Novos formatos: Figma, Android XML, iOS Swift
|
|
223
|
+
- 320+ testes com 100% cobertura do Token Editor
|
|
224
|
+
- Estrutura primitivos/semânticos
|
|
225
|
+
- Breaking changes com guia de migração
|
|
477
226
|
|
|
478
|
-
|
|
227
|
+
## 🤝 Contribuindo
|
|
479
228
|
|
|
480
|
-
|
|
229
|
+
Contribuições são bem-vindas! Consulte o [Guia de Contribuição](./docs/CONTRIBUINDO.md) para saber como contribuir com este projeto.
|
|
481
230
|
|
|
482
|
-
|
|
231
|
+
## 📚 Documentação Completa
|
|
483
232
|
|
|
484
|
-
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
-
|
|
489
|
-
- 💾 **Download de Arquivos** - Salve JSON diretamente (sem servidor)
|
|
490
|
-
- 🔄 **Auto-backup** - Salva automaticamente no localStorage
|
|
491
|
-
- 🎯 **Zero Dependencies** - Apenas HTML, CSS e JavaScript puro
|
|
233
|
+
- [Índice da Documentação](./docs/00-INDICE.md)
|
|
234
|
+
- [Guia de Contribuição](./docs/CONTRIBUINDO.md)
|
|
235
|
+
- [Estrutura do Projeto](./docs/03-ESTRUTURA.md)
|
|
236
|
+
- [Sistema de Build](./docs/04-SISTEMA_BUILD.md)
|
|
237
|
+
- [Guia de Publicação](./docs/11-PUBLICACAO.md)
|
|
492
238
|
|
|
493
|
-
|
|
494
|
-
```bash
|
|
495
|
-
# Simplesmente abra o arquivo HTML no navegador:
|
|
496
|
-
# Windows: Clique duas vezes em token-editor/index.html
|
|
497
|
-
# Mac/Linux: open token-editor/index.html
|
|
498
|
-
```
|
|
239
|
+
## 📝 Licença
|
|
499
240
|
|
|
500
|
-
|
|
501
|
-
- 📂 Carregar arquivos JSON do computador
|
|
502
|
-
- ✏️ Editar tokens com editor visual ou código
|
|
503
|
-
- ✅ Validação JSON em tempo real
|
|
504
|
-
- 💾 Salvar/Download de arquivos JSON
|
|
505
|
-
- 🔨 Gerar formatos (requer servidor backend - opcional)
|
|
506
|
-
- 👁️ Preview dos arquivos gerados
|
|
507
|
-
- ⌨️ Atalhos de teclado (Ctrl+S, Ctrl+Shift+F, Ctrl+B)
|
|
508
|
-
|
|
509
|
-
**Documentação completa**: Veja [Token Editor README](./token-editor/README.md)
|
|
510
|
-
|
|
511
|
-
### 🧪 Testes
|
|
512
|
-
|
|
513
|
-
Suíte completa de testes com **302 casos de teste** cobrindo toda a funcionalidade, incluindo **100% de cobertura do Token Editor** (168 testes específicos + testes E2E).
|
|
514
|
-
|
|
515
|
-
**Executar testes:**
|
|
516
|
-
```bash
|
|
517
|
-
pnpm test # Executa todos os testes
|
|
518
|
-
pnpm test:watch # Modo watch (desenvolvimento)
|
|
519
|
-
pnpm test:coverage # Com relatório de cobertura
|
|
520
|
-
```
|
|
521
|
-
|
|
522
|
-
**Cobertura:**
|
|
523
|
-
- ✅ Tokens estrutura e exportações
|
|
524
|
-
- ✅ Tokens utilitários (Tailwind classes)
|
|
525
|
-
- ✅ Utilitários de acessibilidade (WCAG)
|
|
526
|
-
- ✅ Estrutura de temas (light/dark)
|
|
527
|
-
- ✅ **Token Editor (100% de cobertura - 168 testes + E2E)**
|
|
528
|
-
- ✅ TypeScript types
|
|
529
|
-
- ✅ Casos de uso reais
|
|
530
|
-
|
|
531
|
-
Veja [Testes README](./tests/README.md) para mais detalhes.
|
|
532
|
-
|
|
533
|
-
### 📚 Storybook - Visualização dos Tokens
|
|
534
|
-
|
|
535
|
-
O Storybook da lib documenta **apenas design tokens**, não componentes UI.
|
|
536
|
-
|
|
537
|
-
**Stories disponíveis:**
|
|
538
|
-
- 🎨 **ColorPalette** - Paletas completas de cores (Light & Dark)
|
|
539
|
-
- 🎭 **ThemePreview** - Preview dos temas mostrando tokens em ação
|
|
540
|
-
- 📝 **Typography** - Sistema completo de tipografia
|
|
541
|
-
- 📏 **Spacing** - Escala de espaçamento (8pt grid)
|
|
542
|
-
- 🔲 **Radius** - Raios de borda
|
|
543
|
-
- 🌑 **Shadows** - Sombras e efeitos glow
|
|
544
|
-
- 🎬 **Animations** - Animações e keyframes (accordion, slide-in, fade-in)
|
|
545
|
-
|
|
546
|
-
**Separação de responsabilidades:**
|
|
547
|
-
- ✅ **Este Storybook**: Apenas tokens (cores, tipografia, espaçamento, etc.)
|
|
548
|
-
- ✅ **Storybook do Frontend**: Componentes UI (Button, Card, etc.)
|
|
549
|
-
|
|
550
|
-
Para mais detalhes sobre a estrutura, consulte [**Estrutura do Storybook**](./docs/06-ESTRUTURA_STORYBOOK.md).
|
|
551
|
-
|
|
552
|
-
---
|
|
553
|
-
|
|
554
|
-
## 🤝 Contributing
|
|
555
|
-
|
|
556
|
-
Contributions are welcome! Please read our [Contributing Guide](./docs/CONTRIBUINDO.md) first.
|
|
557
|
-
|
|
558
|
-
---
|
|
559
|
-
|
|
560
|
-
## 📄 License
|
|
561
|
-
|
|
562
|
-
MIT © [Rainer Teixeira](https://github.com/RainerTeixeira)
|
|
563
|
-
|
|
564
|
-
---
|
|
565
|
-
|
|
566
|
-
## 🔗 Links
|
|
567
|
-
|
|
568
|
-
- **GitHub**: [RainerTeixeira/rainer-design-tokens](https://github.com/RainerTeixeira/rainer-design-tokens)
|
|
569
|
-
- **NPM**: [@rainersoft/design-tokens](https://www.npmjs.com/package/@rainersoft/design-tokens)
|
|
570
|
-
- **Website**: [rainersoft.com.br](https://rainersoft.com.br)
|
|
571
|
-
- **Email**: suporte@rainersoft.com.br
|
|
572
|
-
|
|
573
|
-
## 🛠️ Tech Stack
|
|
574
|
-
|
|
575
|
-
- **Language**: TypeScript 5.3+ (strict mode)
|
|
576
|
-
- **Package Manager**: pnpm 9+
|
|
577
|
-
- **Build Tool**: tsup (TypeScript bundler)
|
|
578
|
-
- **Linter**: ESLint + TypeScript ESLint
|
|
579
|
-
- **Formatter**: Prettier
|
|
580
|
-
- **Testing**: Jest
|
|
581
|
-
- **Documentation**: Storybook 10
|
|
582
|
-
- **Publish**: GitHub Actions (GitHub Packages + npm)
|
|
583
|
-
|
|
584
|
-
---
|
|
585
|
-
|
|
586
|
-
<div align="center">
|
|
587
|
-
|
|
588
|
-
**Made with ❤️ by Rainer Teixeira**
|
|
589
|
-
|
|
590
|
-

|
|
591
|
-

|
|
592
|
-
|
|
593
|
-
</div>
|
|
241
|
+
MIT © Rainer Teixeira
|