@komarcalabs/design-system 0.1.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 +409 -0
- package/dist/carousel-D_f-K2v2.js +83 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/plugin-DfFKi2ZR.js +941 -0
- package/dist/react/components/KmAlert.d.ts +8 -0
- package/dist/react/components/KmAlert.d.ts.map +1 -0
- package/dist/react/components/KmBadge.d.ts +7 -0
- package/dist/react/components/KmBadge.d.ts.map +1 -0
- package/dist/react/components/KmButton.d.ts +18 -0
- package/dist/react/components/KmButton.d.ts.map +1 -0
- package/dist/react/components/KmCard.d.ts +7 -0
- package/dist/react/components/KmCard.d.ts.map +1 -0
- package/dist/react/components/KmInput.d.ts +14 -0
- package/dist/react/components/KmInput.d.ts.map +1 -0
- package/dist/react/components/KmSelect.d.ts +23 -0
- package/dist/react/components/KmSelect.d.ts.map +1 -0
- package/dist/react/components/KmStack.d.ts +13 -0
- package/dist/react/components/KmStack.d.ts.map +1 -0
- package/dist/react/components/KmStepper.d.ts +17 -0
- package/dist/react/components/KmStepper.d.ts.map +1 -0
- package/dist/react/components/KmTextarea.d.ts +14 -0
- package/dist/react/components/KmTextarea.d.ts.map +1 -0
- package/dist/react/components/KmToggleSwitch.d.ts +11 -0
- package/dist/react/components/KmToggleSwitch.d.ts.map +1 -0
- package/dist/react/components/index.d.ts +11 -0
- package/dist/react/components/index.d.ts.map +1 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +363 -0
- package/dist/styles.css +1 -0
- package/dist/theme-CI9qhP-e.js +337 -0
- package/dist/toggleSwitch-CpBXc_jq.js +369 -0
- package/dist/tokens/colors.d.ts +284 -0
- package/dist/tokens/colors.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +5 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/spacing.d.ts +31 -0
- package/dist/tokens/spacing.d.ts.map +1 -0
- package/dist/tokens/theme.d.ts +96 -0
- package/dist/tokens/theme.d.ts.map +1 -0
- package/dist/tokens/typography.d.ts +22 -0
- package/dist/tokens/typography.d.ts.map +1 -0
- package/dist/tokens.d.ts +3 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +31 -0
- package/dist/utils/classNames.d.ts +3 -0
- package/dist/utils/classNames.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/useId.d.ts +9 -0
- package/dist/utils/useId.d.ts.map +1 -0
- package/dist/variants/alert.d.ts +85 -0
- package/dist/variants/alert.d.ts.map +1 -0
- package/dist/variants/avatar.d.ts +37 -0
- package/dist/variants/avatar.d.ts.map +1 -0
- package/dist/variants/badge.d.ts +46 -0
- package/dist/variants/badge.d.ts.map +1 -0
- package/dist/variants/button.d.ts +108 -0
- package/dist/variants/button.d.ts.map +1 -0
- package/dist/variants/card.d.ts +46 -0
- package/dist/variants/card.d.ts.map +1 -0
- package/dist/variants/carousel.d.ts +40 -0
- package/dist/variants/carousel.d.ts.map +1 -0
- package/dist/variants/field.d.ts +46 -0
- package/dist/variants/field.d.ts.map +1 -0
- package/dist/variants/index.d.ts +15 -0
- package/dist/variants/index.d.ts.map +1 -0
- package/dist/variants/input.d.ts +4 -0
- package/dist/variants/input.d.ts.map +1 -0
- package/dist/variants/select.d.ts +4 -0
- package/dist/variants/select.d.ts.map +1 -0
- package/dist/variants/spinner.d.ts +40 -0
- package/dist/variants/spinner.d.ts.map +1 -0
- package/dist/variants/stack.d.ts +91 -0
- package/dist/variants/stack.d.ts.map +1 -0
- package/dist/variants/stepper.d.ts +160 -0
- package/dist/variants/stepper.d.ts.map +1 -0
- package/dist/variants/textarea.d.ts +4 -0
- package/dist/variants/textarea.d.ts.map +1 -0
- package/dist/variants/toggleSwitch.d.ts +115 -0
- package/dist/variants/toggleSwitch.d.ts.map +1 -0
- package/dist/vue/components/KmAlert.vue.d.ts +26 -0
- package/dist/vue/components/KmAlert.vue.d.ts.map +1 -0
- package/dist/vue/components/KmAvatar.vue.d.ts +12 -0
- package/dist/vue/components/KmAvatar.vue.d.ts.map +1 -0
- package/dist/vue/components/KmBadge.vue.d.ts +24 -0
- package/dist/vue/components/KmBadge.vue.d.ts.map +1 -0
- package/dist/vue/components/KmButton.vue.d.ts +35 -0
- package/dist/vue/components/KmButton.vue.d.ts.map +1 -0
- package/dist/vue/components/KmCard.vue.d.ts +20 -0
- package/dist/vue/components/KmCard.vue.d.ts.map +1 -0
- package/dist/vue/components/KmCarousel.vue.d.ts +29 -0
- package/dist/vue/components/KmCarousel.vue.d.ts.map +1 -0
- package/dist/vue/components/KmDialog/KmDialog.vue.d.ts +30 -0
- package/dist/vue/components/KmDialog/KmDialog.vue.d.ts.map +1 -0
- package/dist/vue/components/KmDialog/KmDialogBody.vue.d.ts +18 -0
- package/dist/vue/components/KmDialog/KmDialogBody.vue.d.ts.map +1 -0
- package/dist/vue/components/KmDialog/KmDialogFooter.vue.d.ts +22 -0
- package/dist/vue/components/KmDialog/KmDialogFooter.vue.d.ts.map +1 -0
- package/dist/vue/components/KmDialog/KmDialogHeader.vue.d.ts +12 -0
- package/dist/vue/components/KmDialog/KmDialogHeader.vue.d.ts.map +1 -0
- package/dist/vue/components/KmDialog/index.d.ts +7 -0
- package/dist/vue/components/KmDialog/index.d.ts.map +1 -0
- package/dist/vue/components/KmInput.vue.d.ts +20 -0
- package/dist/vue/components/KmInput.vue.d.ts.map +1 -0
- package/dist/vue/components/KmSelect.vue.d.ts +29 -0
- package/dist/vue/components/KmSelect.vue.d.ts.map +1 -0
- package/dist/vue/components/KmSpinner.vue.d.ts +11 -0
- package/dist/vue/components/KmSpinner.vue.d.ts.map +1 -0
- package/dist/vue/components/KmStack.vue.d.ts +34 -0
- package/dist/vue/components/KmStack.vue.d.ts.map +1 -0
- package/dist/vue/components/KmStepper.vue.d.ts +22 -0
- package/dist/vue/components/KmStepper.vue.d.ts.map +1 -0
- package/dist/vue/components/KmTextarea.vue.d.ts +20 -0
- package/dist/vue/components/KmTextarea.vue.d.ts.map +1 -0
- package/dist/vue/components/KmToggleSwitch.vue.d.ts +20 -0
- package/dist/vue/components/KmToggleSwitch.vue.d.ts.map +1 -0
- package/dist/vue/components/index.d.ts +15 -0
- package/dist/vue/components/index.d.ts.map +1 -0
- package/dist/vue/index.d.ts +3 -0
- package/dist/vue/index.d.ts.map +1 -0
- package/dist/vue/plugin.d.ts +3 -0
- package/dist/vue/plugin.d.ts.map +1 -0
- package/dist/vue.d.ts +2 -0
- package/dist/vue.d.ts.map +1 -0
- package/dist/vue.js +22 -0
- package/package.json +86 -0
package/README.md
ADDED
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
# Komarca Design System
|
|
2
|
+
|
|
3
|
+
> **"Construimos tecnología como ingenieros."**
|
|
4
|
+
|
|
5
|
+
Librería compartida para construir interfaces consistentes en las apps de **Komarca Labs**.
|
|
6
|
+
|
|
7
|
+
El paquete está preparado para **Vue** y **React**. El enfoque inicial es **Vue**, por eso los componentes Vue son la primera API estable.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🔗 Enlaces Rápidos
|
|
12
|
+
|
|
13
|
+
| Recurso | Link |
|
|
14
|
+
|---------|------|
|
|
15
|
+
| 📖 [Storybook](http://localhost:6006) | Componentes interactivos |
|
|
16
|
+
| 🎨 [Brand Guidelines](./docs/assets/brand-guidelines.png) | Identidad visual completa |
|
|
17
|
+
| 🔘 [Botones y Variantes](./docs/assets/buttons-variants.png) | Sistema de botones |
|
|
18
|
+
| 📚 [Brand Identity](./docs/brand-identity.md) | Documentación de identidad |
|
|
19
|
+
| 📦 [CRM App Guide](./apps/crm-app/docs/buttons-guide.md) | Guía para CRM App |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 📖 ¿Qué es Komarca Design System?
|
|
24
|
+
|
|
25
|
+
Es nuestro **sistema de diseño unificado** que define cómo se ven y comportan todas las interfaces de Komarca Labs.
|
|
26
|
+
|
|
27
|
+
### 🎯 Propósito
|
|
28
|
+
|
|
29
|
+
Proporcionar una **base visual coherente** para:
|
|
30
|
+
|
|
31
|
+
- ✅ **Dashboards empresariales** (ERP, CRM, Analytics)
|
|
32
|
+
- ✅ **Plataformas de automatización**
|
|
33
|
+
- ✅ **Sistemas de IA y workflows**
|
|
34
|
+
- ✅ **Landing pages corporativas**
|
|
35
|
+
- ✅ **Herramientas internas**
|
|
36
|
+
|
|
37
|
+
### 🏗️ ¿Qué Incluye?
|
|
38
|
+
|
|
39
|
+
| Categoría | Contenido |
|
|
40
|
+
|-----------|-----------|
|
|
41
|
+
| 🎨 **Tokens** | Colores, tipografía, spacing, shadows, radius |
|
|
42
|
+
| 🧩 **Componentes** | Buttons, Inputs, Cards, Alerts, Badges, etc. |
|
|
43
|
+
| 📐 **Variants** | Combinaciones tipadas con `tailwind-variants` |
|
|
44
|
+
| 📚 **Documentación** | Storybook, guías de uso, ejemplos |
|
|
45
|
+
| 🖼️ **Assets** | Iconos, logos, ilustraciones técnicas |
|
|
46
|
+
|
|
47
|
+
### 🔧 Stack Tecnológico
|
|
48
|
+
|
|
49
|
+
- **Tailwind CSS v4** - Utility-first CSS framework
|
|
50
|
+
- **tailwind-variants** - System for component variants
|
|
51
|
+
- **Vue 3** + **React 18** - Frameworks soportados
|
|
52
|
+
- **Storybook 10** - Documentación y testing visual
|
|
53
|
+
- **Vite** - Build tool y dev server
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🖼️ Referencias Visuales
|
|
58
|
+
|
|
59
|
+
### Brand Guidelines Completo
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
**📄 Ver completo:** [brand-guidelines.png](./docs/assets/brand-guidelines.png)
|
|
64
|
+
|
|
65
|
+
**Incluye:**
|
|
66
|
+
- Paleta de colores principal y neutros
|
|
67
|
+
- Colores semánticos
|
|
68
|
+
- Tipografía (Inter / Geist / Manrope)
|
|
69
|
+
- Iconografía técnica
|
|
70
|
+
- Efectos glow
|
|
71
|
+
- Modos de diseño (Blueprint, Corporate, Glow Tech)
|
|
72
|
+
- Áreas de aplicación
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Botones y Variantes
|
|
77
|
+
|
|
78
|
+

|
|
79
|
+
|
|
80
|
+
**📄 Ver completo:** [buttons-variants.png](./docs/assets/buttons-variants.png)
|
|
81
|
+
|
|
82
|
+
**Incluye:**
|
|
83
|
+
- 5 estilos principales (Solid, Outline, Soft, Ghost, Link)
|
|
84
|
+
- 4 estados (Default, Hover, Focus, Disabled)
|
|
85
|
+
- Botones por semántica (Éxito, Advertencia, Error, Información)
|
|
86
|
+
- 4 tamaños (XS, SM, MD, LG)
|
|
87
|
+
- Botones con íconos (izquierda, derecha, solo ícono)
|
|
88
|
+
- Floating Action Buttons (FAB)
|
|
89
|
+
- Estados especiales (Cargando, Procesando, Éxito, Error)
|
|
90
|
+
- Uso en temas (Claro / Oscuro)
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 📚 Documentación Completa
|
|
95
|
+
|
|
96
|
+
| Documento | Descripción |
|
|
97
|
+
|-----------|-------------|
|
|
98
|
+
| [🎨 Brand Identity](./docs/brand-identity.md) | Identidad visual completa, colores, tipografía, modos de diseño |
|
|
99
|
+
| [🔘 Buttons Guide](./apps/crm-app/docs/buttons-guide.md) | Guía de uso de botones con ejemplos |
|
|
100
|
+
| [📖 Storybook](http://localhost:6006) | Documentación interactiva de componentes |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 🎨 Identidad Visual Komarca Labs
|
|
105
|
+
|
|
106
|
+
### Brand Essence
|
|
107
|
+
|
|
108
|
+
Komarca Labs representa **ingeniería de software aplicada a sistemas empresariales**. No somos una startup genérica ni una agencia de marketing — construimos tecnología real.
|
|
109
|
+
|
|
110
|
+
**La UI debe comunicar:**
|
|
111
|
+
- ✅ Técnica
|
|
112
|
+
- ✅ Premium
|
|
113
|
+
- ✅ Moderna
|
|
114
|
+
- ✅ Estructurada
|
|
115
|
+
- ✅ Tecnológica
|
|
116
|
+
|
|
117
|
+
**NO debe sentirse como:**
|
|
118
|
+
- ❌ Startup genérica
|
|
119
|
+
- ❌ Agencia de marketing
|
|
120
|
+
- ❌ SaaS pastel
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### Core Colors
|
|
125
|
+
|
|
126
|
+
| Color | Hex | Uso | Sensación |
|
|
127
|
+
|-------|-----|-----|-----------|
|
|
128
|
+
| **Primary Blue** | `#0D589D` | Botones, links, branding | Tecnología seria, ingeniería |
|
|
129
|
+
| **Primary Hover** | `#0A4A84` | Interactive states | Profundidad, acción |
|
|
130
|
+
| **Primary Dark** | `#083A69` | Fondos premium, dashboards | Robustez, corporativo |
|
|
131
|
+
| **Primary Light** | `#DCEBFA` | Backgrounds suaves, badges | Informativo, sutil |
|
|
132
|
+
| **Accent Cyan** | `#22D3EE` | IA, automatización, glow | Innovación, energía |
|
|
133
|
+
| **Ink** | `#1E293B` | Blueprint, wireframes | Ingeniería, precisión |
|
|
134
|
+
|
|
135
|
+
### Neutral Palette
|
|
136
|
+
|
|
137
|
+
```css
|
|
138
|
+
--km-gray-50: #F8FAFC; /* Backgrounds limpios */
|
|
139
|
+
--km-gray-100: #F1F5F9; /* Surfaces sutiles */
|
|
140
|
+
--km-gray-200: #E2E8F0; /* Bordes */
|
|
141
|
+
--km-gray-500: #64748B; /* Texto secundario */
|
|
142
|
+
--km-gray-700: #334155; /* Texto principal */
|
|
143
|
+
--km-gray-900: #0F172A; /* Texto dark mode */
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Semantic Colors
|
|
147
|
+
|
|
148
|
+
| Semantic | Color | Background |
|
|
149
|
+
|----------|-------|------------|
|
|
150
|
+
| Success | `#10B981` | `#D1FAE5` |
|
|
151
|
+
| Warning | `#F59E0B` | `#FEF3C7` |
|
|
152
|
+
| Danger | `#EF4444` | `#FEE2E2` |
|
|
153
|
+
| Info | `#3B82F6` | `#DBEAFE` |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### Design Modes
|
|
158
|
+
|
|
159
|
+
#### 1. Blueprint Light
|
|
160
|
+
- Fondo claro, sketches técnicos
|
|
161
|
+
- Wireframes, grids, diagramas
|
|
162
|
+
- **Uso:** Landing pages, marketing, servicios
|
|
163
|
+
|
|
164
|
+
#### 2. Corporate Dark
|
|
165
|
+
- Dark mode premium, glass effects
|
|
166
|
+
- Glow sutil, profundidad
|
|
167
|
+
- **Uso:** Dashboards, ERP, CRM, analytics
|
|
168
|
+
|
|
169
|
+
#### 3. Glow Tech
|
|
170
|
+
- Cyan glow, motion moderno
|
|
171
|
+
- IA, automatización
|
|
172
|
+
- **Uso:** Hero sections, features tecnológicas
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### Typography
|
|
177
|
+
|
|
178
|
+
**Primary:** Inter — Clean, technical, modern
|
|
179
|
+
**Code:** JetBrains Mono / SFMono — Engineering precision
|
|
180
|
+
|
|
181
|
+
### UI Style
|
|
182
|
+
|
|
183
|
+
**Buttons:**
|
|
184
|
+
- Rounded-lg o rounded-xl
|
|
185
|
+
- Sombras suaves
|
|
186
|
+
- Glow ligero en hover
|
|
187
|
+
|
|
188
|
+
**Cards:**
|
|
189
|
+
- Bordes suaves, sombras sutiles
|
|
190
|
+
- Espacio blanco, overlays blueprint
|
|
191
|
+
- Grids técnicos
|
|
192
|
+
|
|
193
|
+
**Sections:**
|
|
194
|
+
- Alternar fondos claros/dark
|
|
195
|
+
- Overlays técnicos, wireframes
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### Glow Effects
|
|
200
|
+
|
|
201
|
+
```css
|
|
202
|
+
--km-glow-blue: rgba(13, 88, 157, 0.35); /* Primary blue glow */
|
|
203
|
+
--km-glow-cyan: rgba(34, 211, 238, 0.25); /* Accent cyan glow */
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Dark mode:** Más intensos (0.4-0.5 alpha)
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
### What To Avoid
|
|
211
|
+
|
|
212
|
+
❌ Gradients crypto exagerados
|
|
213
|
+
❌ Demasiados colores
|
|
214
|
+
❌ Palettes pastel
|
|
215
|
+
❌ Estilos gamer
|
|
216
|
+
❌ Neones agresivos
|
|
217
|
+
❌ UI demasiado juvenil
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### Brand Positioning
|
|
222
|
+
|
|
223
|
+
Komarca Labs construye:
|
|
224
|
+
- Software empresarial
|
|
225
|
+
- Automatización
|
|
226
|
+
- Sistemas
|
|
227
|
+
- IA
|
|
228
|
+
- Dashboards
|
|
229
|
+
- Integraciones
|
|
230
|
+
- Plataformas tecnológicas
|
|
231
|
+
|
|
232
|
+
> **"Ingeniería tecnológica profesional."**
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Instalacion local
|
|
237
|
+
|
|
238
|
+
Desde el root del monorepo:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
bun run install:design-system
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Uso en Vue
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
import { createApp } from "vue";
|
|
250
|
+
import { KomarcaVueDesignSystem } from "@komarcalabs/design-system/vue";
|
|
251
|
+
import "@komarcalabs/design-system/styles.css";
|
|
252
|
+
|
|
253
|
+
import App from "./App.vue";
|
|
254
|
+
|
|
255
|
+
createApp(App).use(KomarcaVueDesignSystem).mount("#app");
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Tambien puedes importar componentes puntuales:
|
|
259
|
+
|
|
260
|
+
```vue
|
|
261
|
+
<script setup lang="ts">
|
|
262
|
+
import { KmButton, KmInput } from "@komarcalabs/design-system/vue";
|
|
263
|
+
</script>
|
|
264
|
+
|
|
265
|
+
<template>
|
|
266
|
+
<KmInput label="Correo" placeholder="usuario@empresa.com" />
|
|
267
|
+
<KmButton variant="primary">Guardar</KmButton>
|
|
268
|
+
</template>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 📖 Storybook
|
|
274
|
+
|
|
275
|
+
Storybook es nuestro **laboratorio vivo de componentes**. Aquí puedes ver, probar y documentar todos los componentes del Design System en un entorno aislado.
|
|
276
|
+
|
|
277
|
+
### ¿Por qué usar Storybook?
|
|
278
|
+
|
|
279
|
+
- ✅ **Explorar componentes** — Ver todos los componentes disponibles
|
|
280
|
+
- ✅ **Probar variantes** — Interactuar con props y ver cambios en tiempo real
|
|
281
|
+
- ✅ **Ver código** — Copiar ejemplos de uso directamente
|
|
282
|
+
- ✅ **Documentación viva** — Siempre actualizada con el último código
|
|
283
|
+
- ✅ **Accesibilidad** — Tests automáticos de a11y
|
|
284
|
+
|
|
285
|
+
### Comandos Disponibles
|
|
286
|
+
|
|
287
|
+
**Vue (Entorno principal):**
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Build + Serve en http://localhost:6006
|
|
291
|
+
bun run storybook:vue
|
|
292
|
+
|
|
293
|
+
# Dev mode con live reload
|
|
294
|
+
bun run storybook:vue:dev
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**React:**
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# Build + Serve en http://localhost:6007
|
|
301
|
+
bun run storybook:react
|
|
302
|
+
|
|
303
|
+
# Dev mode con live reload
|
|
304
|
+
bun run storybook:react:dev
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**Build Estático:**
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
# Genera build estático para deploy
|
|
311
|
+
bun run build-storybook
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Requisitos
|
|
315
|
+
|
|
316
|
+
- **Node.js:** `>=20.10` (Storybook 10)
|
|
317
|
+
- **Navegador:** Chrome, Firefox, Edge (últimas versiones)
|
|
318
|
+
|
|
319
|
+
### Estructura de Stories
|
|
320
|
+
|
|
321
|
+
```txt
|
|
322
|
+
src/vue/stories/
|
|
323
|
+
Button.stories.ts # KmButton variants
|
|
324
|
+
Input.stories.ts # KmInput variants
|
|
325
|
+
Alert.stories.ts # KmAlert tones
|
|
326
|
+
Badge.stories.ts # KmBadge tones
|
|
327
|
+
Avatar.stories.ts # KmAvatar sizes
|
|
328
|
+
Card.stories.ts # KmCard layouts
|
|
329
|
+
Select.stories.ts # KmSelect options
|
|
330
|
+
Textarea.stories.ts # KmTextarea
|
|
331
|
+
Spinner.stories.ts # KmSpinner states
|
|
332
|
+
Stack.stories.ts # KmStack layouts
|
|
333
|
+
Feedback.stories.ts # Feedback overview
|
|
334
|
+
Form.stories.ts # Form examples
|
|
335
|
+
Layout.stories.ts # Layout examples
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### URLs de Acceso
|
|
339
|
+
|
|
340
|
+
| Entorno | URL | Estado |
|
|
341
|
+
|---------|-----|--------|
|
|
342
|
+
| Vue Storybook | `http://localhost:6006` | ✅ Activo |
|
|
343
|
+
| React Storybook | `http://localhost:6007` | ✅ Activo |
|
|
344
|
+
|
|
345
|
+
### Tips de Uso
|
|
346
|
+
|
|
347
|
+
1. **Hot Reload:** Usa `storybook:vue:dev` para desarrollo
|
|
348
|
+
2. **Build limpio:** Ejecuta `build-storybook` antes de deploy
|
|
349
|
+
3. **Accesibilidad:** Revisa el panel de a11y en cada story
|
|
350
|
+
4. **Controls:** Usa el panel derecho para probar variantes
|
|
351
|
+
5. **Docs:** Cambia a la pestaña "Docs" para ver documentación
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Uso en React
|
|
356
|
+
|
|
357
|
+
```tsx
|
|
358
|
+
import { KmButton, KmInput } from "@komarcalabs/design-system/react";
|
|
359
|
+
import "@komarcalabs/design-system/styles.css";
|
|
360
|
+
|
|
361
|
+
export function Example() {
|
|
362
|
+
return (
|
|
363
|
+
<>
|
|
364
|
+
<KmInput label="Correo" placeholder="usuario@empresa.com" />
|
|
365
|
+
<KmButton variant="primary">Guardar</KmButton>
|
|
366
|
+
</>
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Estructura
|
|
374
|
+
|
|
375
|
+
```txt
|
|
376
|
+
src/
|
|
377
|
+
tokens/ Escalas de diseño en TypeScript
|
|
378
|
+
styles/ Variables CSS, theme Tailwind y base global
|
|
379
|
+
variants/ Variants tipadas con tailwind-variants
|
|
380
|
+
vue/ Componentes y plugin Vue
|
|
381
|
+
react/ Componentes React equivalentes
|
|
382
|
+
utils/ Utilidades compartidas
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Tailwind CSS v4
|
|
388
|
+
|
|
389
|
+
El paquete usa **Tailwind CSS v4** con el plugin oficial de Vite:
|
|
390
|
+
|
|
391
|
+
```ts
|
|
392
|
+
import tailwindcss from "@tailwindcss/vite";
|
|
393
|
+
|
|
394
|
+
export default defineConfig({
|
|
395
|
+
plugins: [tailwindcss()],
|
|
396
|
+
});
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
La configuración visual vive en CSS con `@theme`, siguiendo el enfoque **CSS-first** de Tailwind v4. Las variants de componentes viven en `src/variants` con `tailwind-variants`.
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Principios
|
|
404
|
+
|
|
405
|
+
- **Tokens primero:** color, espacio, radio, sombra y tipografía salen de una fuente común.
|
|
406
|
+
- **Tailwind compartido:** Vue y React usan las mismas variants tipadas.
|
|
407
|
+
- **Accesibilidad por defecto:** labels, focus visible, estados disabled e invalid.
|
|
408
|
+
- **API pequeña y estable:** componentes simples antes de abstracciones grandes.
|
|
409
|
+
- **Identidad Komarca:** técnica, premium, estructurada, tecnológica.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { tv as e } from "tailwind-variants";
|
|
2
|
+
const r = e({
|
|
3
|
+
base: [
|
|
4
|
+
"relative rounded-full bg-km-muted text-km-muted-foreground flex justify-center items-center border border-km-border font-semibold overflow-hidden shrink-0"
|
|
5
|
+
],
|
|
6
|
+
variants: {
|
|
7
|
+
size: {
|
|
8
|
+
xs: "h-4 w-4 text-[8px]",
|
|
9
|
+
sm: "h-5 w-5 text-xs",
|
|
10
|
+
md: "h-8 w-8 text-sm",
|
|
11
|
+
lg: "h-10 w-10 text-base"
|
|
12
|
+
},
|
|
13
|
+
hasImage: {
|
|
14
|
+
true: "p-0",
|
|
15
|
+
false: ""
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
compoundVariants: [
|
|
19
|
+
{
|
|
20
|
+
hasImage: !1,
|
|
21
|
+
size: "xs",
|
|
22
|
+
class: "p-0.5"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
hasImage: !1,
|
|
26
|
+
size: "sm",
|
|
27
|
+
class: "p-1"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
hasImage: !1,
|
|
31
|
+
size: "md",
|
|
32
|
+
class: "p-1.5"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
hasImage: !1,
|
|
36
|
+
size: "lg",
|
|
37
|
+
class: "p-2"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
defaultVariants: {
|
|
41
|
+
size: "sm",
|
|
42
|
+
hasImage: !1
|
|
43
|
+
}
|
|
44
|
+
}), a = e({
|
|
45
|
+
base: "animate-spin shrink-0",
|
|
46
|
+
variants: {
|
|
47
|
+
size: {
|
|
48
|
+
xs: "h-3 w-3",
|
|
49
|
+
sm: "h-4 w-4",
|
|
50
|
+
md: "h-6 w-6",
|
|
51
|
+
lg: "h-8 w-8"
|
|
52
|
+
},
|
|
53
|
+
color: {
|
|
54
|
+
current: "text-current",
|
|
55
|
+
primary: "text-km-primary",
|
|
56
|
+
muted: "text-km-muted-foreground"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
defaultVariants: {
|
|
60
|
+
size: "sm",
|
|
61
|
+
color: "current"
|
|
62
|
+
}
|
|
63
|
+
}), t = e({
|
|
64
|
+
slots: {
|
|
65
|
+
root: "relative group/carousel w-full",
|
|
66
|
+
button: [
|
|
67
|
+
"absolute top-1/2 -translate-y-1/2 z-10 w-9 h-9 rounded-full",
|
|
68
|
+
"bg-km-surface shadow-km-sm border border-km-border",
|
|
69
|
+
"flex items-center justify-center text-km-muted-foreground",
|
|
70
|
+
"hover:text-km-primary hover:border-km-primary hover:shadow-km-md",
|
|
71
|
+
"transition-all active:scale-90 cursor-pointer"
|
|
72
|
+
],
|
|
73
|
+
wrapper: [
|
|
74
|
+
"flex gap-4 overflow-x-auto pb-4 pt-1 px-1",
|
|
75
|
+
"scroll-smooth snap-x snap-mandatory scrollbar-none"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
export {
|
|
80
|
+
r as a,
|
|
81
|
+
t as c,
|
|
82
|
+
a as s
|
|
83
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import { _ as e, a as r, b as i, c as o, d as m, K as n, e as p, f as K, g, h as l, i as c, j as V, k as d, l as h, m as f, n as S, o as u, p as x } from "./plugin-DfFKi2ZR.js";
|
|
3
|
+
import { a as D, b as T, c as y, d as w, f as C, i as k, s as B, e as v, g as A, t as j, h as F } from "./toggleSwitch-CpBXc_jq.js";
|
|
4
|
+
import { a as I, c as R, g as _, h as q, r as z, b as E, d as G, s as J, e as L, f as M, t as N, i as O } from "./theme-CI9qhP-e.js";
|
|
5
|
+
import { a as Q, c as U, s as W } from "./carousel-D_f-K2v2.js";
|
|
6
|
+
export {
|
|
7
|
+
e as KmAlert,
|
|
8
|
+
r as KmAvatar,
|
|
9
|
+
i as KmBadge,
|
|
10
|
+
o as KmButton,
|
|
11
|
+
m as KmCard,
|
|
12
|
+
n as KmCarousel,
|
|
13
|
+
p as KmDialog,
|
|
14
|
+
K as KmDialogBody,
|
|
15
|
+
g as KmDialogFooter,
|
|
16
|
+
l as KmDialogHeader,
|
|
17
|
+
c as KmInput,
|
|
18
|
+
V as KmSelect,
|
|
19
|
+
d as KmSpinner,
|
|
20
|
+
h as KmStack,
|
|
21
|
+
f as KmStepper,
|
|
22
|
+
S as KmTextarea,
|
|
23
|
+
u as KmToggleSwitch,
|
|
24
|
+
x as KomarcaVueDesignSystem,
|
|
25
|
+
D as alertVariants,
|
|
26
|
+
I as applyTheme,
|
|
27
|
+
Q as avatarVariants,
|
|
28
|
+
T as badgeVariants,
|
|
29
|
+
y as buttonVariants,
|
|
30
|
+
w as cardVariants,
|
|
31
|
+
U as carouselVariants,
|
|
32
|
+
R as colors,
|
|
33
|
+
C as fieldVariants,
|
|
34
|
+
_ as getThemeVar,
|
|
35
|
+
q as hexToRgba,
|
|
36
|
+
k as inputVariants,
|
|
37
|
+
z as radii,
|
|
38
|
+
E as rawSemanticColors,
|
|
39
|
+
G as resetTheme,
|
|
40
|
+
B as selectVariants,
|
|
41
|
+
J as semanticColors,
|
|
42
|
+
L as shadows,
|
|
43
|
+
M as spacing,
|
|
44
|
+
W as spinnerVariants,
|
|
45
|
+
v as stackVariants,
|
|
46
|
+
A as stepperVariants,
|
|
47
|
+
j as textareaVariants,
|
|
48
|
+
N as themeDefinitions,
|
|
49
|
+
F as toggleSwitchVariants,
|
|
50
|
+
O as typography
|
|
51
|
+
};
|