flysoft-react-ui 0.1.1

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 ADDED
@@ -0,0 +1,310 @@
1
+ # Flysoft React UI
2
+
3
+ Una biblioteca de componentes React moderna y accesible construida con TypeScript, Tailwind CSS y FontAwesome.
4
+
5
+ ## 🚀 Características
6
+
7
+ - **TypeScript First**: Completamente tipado con TypeScript
8
+ - **Tailwind CSS**: Utiliza Tailwind CSS para estilos consistentes y personalizables
9
+ - **FontAwesome 5**: Iconos vectoriales de alta calidad integrados
10
+ - **Accesible**: Componentes que siguen las mejores prácticas de accesibilidad
11
+ - **Personalizable**: Fácil de personalizar con clases de Tailwind
12
+ - **Tree-shakable**: Solo importa los componentes que uses
13
+ - **🎨 Sistema de Temas**: Sistema completo de temas personalizables con Context API
14
+
15
+ ## 📦 Instalación
16
+
17
+ ```bash
18
+ npm install flysoft-react-ui
19
+ ```
20
+
21
+ ## 🔧 Configuración
22
+
23
+ ### Tailwind CSS
24
+
25
+ Asegúrate de que Tailwind CSS esté configurado en tu proyecto:
26
+
27
+ ```bash
28
+ npm install -D tailwindcss postcss autoprefixer
29
+ npx tailwindcss init -p
30
+ ```
31
+
32
+ ### FontAwesome
33
+
34
+ La librería incluye FontAwesome 5. Si quieres usar tu propia instalación, puedes sobrescribir los estilos.
35
+
36
+ ## 🎨 Sistema de Temas
37
+
38
+ Flysoft React UI incluye un sistema completo de temas personalizables que permite cambiar dinámicamente la apariencia de todos los componentes.
39
+
40
+ ### Configuración Básica
41
+
42
+ ```tsx
43
+ import { ThemeProvider } from "flysoft-react-ui";
44
+
45
+ function App() {
46
+ return (
47
+ <ThemeProvider initialTheme="light">
48
+ {/* Tu aplicación aquí */}
49
+ </ThemeProvider>
50
+ );
51
+ }
52
+ ```
53
+
54
+ ### Uso del Hook useTheme
55
+
56
+ ```tsx
57
+ import { useTheme } from "flysoft-react-ui";
58
+
59
+ function MyComponent() {
60
+ const { theme, setTheme, currentThemeName, isDark } = useTheme();
61
+
62
+ return (
63
+ <div>
64
+ <p>Tema actual: {currentThemeName}</p>
65
+ <button onClick={() => setTheme("dark")}>Cambiar a Dark</button>
66
+ </div>
67
+ );
68
+ }
69
+ ```
70
+
71
+ ### Temas Predefinidos
72
+
73
+ - **Light**: Tema claro por defecto
74
+ - **Dark**: Tema oscuro elegante
75
+ - **Blue**: Variación azul profesional
76
+ - **Green**: Variación verde natural
77
+
78
+ ### Override de Variables CSS
79
+
80
+ ```tsx
81
+ import { useThemeOverride } from "flysoft-react-ui";
82
+
83
+ function MyComponent() {
84
+ const { applyOverride, revertOverride } = useThemeOverride();
85
+
86
+ const handleHover = () => {
87
+ applyOverride({ primary: "#ff0000" });
88
+ };
89
+
90
+ const handleLeave = () => {
91
+ revertOverride(["primary"]);
92
+ };
93
+
94
+ return (
95
+ <div onMouseEnter={handleHover} onMouseLeave={handleLeave}>
96
+ Hover me!
97
+ </div>
98
+ );
99
+ }
100
+ ```
101
+
102
+ ### Variables CSS Disponibles
103
+
104
+ El sistema proporciona variables CSS con prefijo `--flysoft-`:
105
+
106
+ ```css
107
+ --flysoft-primary /* Color primario */
108
+ --flysoft-secondary /* Color secundario */
109
+ --flysoft-success /* Color de éxito */
110
+ --flysoft-warning /* Color de advertencia */
111
+ --flysoft-danger /* Color de peligro */
112
+ --flysoft-bg-default /* Fondo por defecto */
113
+ --flysoft-text-primary /* Texto principal */
114
+ --flysoft-border-default /* Borde por defecto */
115
+ --flysoft-shadow-md /* Sombra mediana */
116
+ --flysoft-radius-md /* Radio de borde mediano */
117
+ ```
118
+
119
+ Para más detalles sobre el sistema de temas, consulta [THEME_SYSTEM.md](./THEME_SYSTEM.md).
120
+
121
+ ## 📚 Uso
122
+
123
+ ### Importar componentes
124
+
125
+ ```tsx
126
+ import { Button, Input, Card, Badge } from "flysoft-react-ui";
127
+ ```
128
+
129
+ ### Importar estilos
130
+
131
+ ```tsx
132
+ import "flysoft-react-ui/styles";
133
+ ```
134
+
135
+ ### Ejemplo básico
136
+
137
+ ```tsx
138
+ import React from "react";
139
+ import { Button, Input, Card } from "flysoft-react-ui";
140
+ import "flysoft-react-ui/styles";
141
+
142
+ function App() {
143
+ return (
144
+ <div className="p-8">
145
+ <Card title="Mi Formulario" subtitle="Ejemplo de uso">
146
+ <div className="space-y-4">
147
+ <Input label="Nombre" placeholder="Tu nombre" icon="fa-user" />
148
+ <Button variant="primary" icon="fa-save">
149
+ Guardar
150
+ </Button>
151
+ </div>
152
+ </Card>
153
+ </div>
154
+ );
155
+ }
156
+ ```
157
+
158
+ ## 🧩 Componentes
159
+
160
+ ### Button
161
+
162
+ Botón personalizable con múltiples variantes, tamaños y soporte para iconos.
163
+
164
+ ```tsx
165
+ <Button variant="primary" size="md" icon="fa-heart" loading={false}>
166
+ Me gusta
167
+ </Button>
168
+ ```
169
+
170
+ **Props:**
171
+
172
+ - `variant`: 'primary' | 'secondary' | 'outline' | 'ghost'
173
+ - `size`: 'sm' | 'md' | 'lg'
174
+ - `icon`: Clase de FontAwesome (ej: 'fa-heart')
175
+ - `iconPosition`: 'left' | 'right'
176
+ - `loading`: Estado de carga
177
+ - `disabled`: Estado deshabilitado
178
+
179
+ ### Input
180
+
181
+ Campo de entrada con soporte para labels, iconos y estados de error.
182
+
183
+ ```tsx
184
+ <Input
185
+ label="Email"
186
+ type="email"
187
+ placeholder="tu@email.com"
188
+ icon="fa-envelope"
189
+ error="Email inválido"
190
+ />
191
+ ```
192
+
193
+ **Props:**
194
+
195
+ - `label`: Texto del label
196
+ - `error`: Mensaje de error
197
+ - `icon`: Clase de FontAwesome
198
+ - `iconPosition`: 'left' | 'right'
199
+ - `size`: 'sm' | 'md' | 'lg'
200
+
201
+ ### Card
202
+
203
+ Contenedor de tarjeta con header, contenido y footer opcionales.
204
+
205
+ ```tsx
206
+ <Card
207
+ title="Título"
208
+ subtitle="Subtítulo"
209
+ variant="elevated"
210
+ headerActions={<Button>Acción</Button>}
211
+ footer={<div>Footer</div>}
212
+ >
213
+ Contenido de la tarjeta
214
+ </Card>
215
+ ```
216
+
217
+ **Props:**
218
+
219
+ - `title`: Título del header
220
+ - `subtitle`: Subtítulo del header
221
+ - `variant`: 'default' | 'elevated' | 'outlined'
222
+ - `headerActions`: Elementos de acción en el header
223
+ - `footer`: Contenido del footer
224
+
225
+ ### Badge
226
+
227
+ Etiqueta pequeña para mostrar estados o categorías.
228
+
229
+ ```tsx
230
+ <Badge variant="success" size="md" rounded>
231
+ Activo
232
+ </Badge>
233
+ ```
234
+
235
+ **Props:**
236
+
237
+ - `variant`: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info'
238
+ - `size`: 'sm' | 'md' | 'lg'
239
+ - `rounded`: Aplicar bordes redondeados
240
+
241
+ ## 🎨 Personalización
242
+
243
+ ### Colores
244
+
245
+ Puedes personalizar los colores sobrescribiendo las clases de Tailwind CSS:
246
+
247
+ ```css
248
+ /* En tu CSS */
249
+ .btn-primary {
250
+ @apply bg-purple-600 hover:bg-purple-700;
251
+ }
252
+ ```
253
+
254
+ ### Tema
255
+
256
+ La librería incluye un tema personalizado con colores primarios y animaciones. Puedes extenderlo en tu configuración de Tailwind:
257
+
258
+ ```js
259
+ // tailwind.config.js
260
+ module.exports = {
261
+ theme: {
262
+ extend: {
263
+ colors: {
264
+ primary: {
265
+ 500: "#your-color",
266
+ // ... más variantes
267
+ },
268
+ },
269
+ },
270
+ },
271
+ };
272
+ ```
273
+
274
+ ## 🚀 Desarrollo
275
+
276
+ ### Instalar dependencias
277
+
278
+ ```bash
279
+ npm install
280
+ ```
281
+
282
+ ### Ejecutar en modo desarrollo
283
+
284
+ ```bash
285
+ npm run dev
286
+ ```
287
+
288
+ ### Construir librería
289
+
290
+ ```bash
291
+ npm run build
292
+ ```
293
+
294
+ ### Generar tipos TypeScript
295
+
296
+ ```bash
297
+ npm run build:types
298
+ ```
299
+
300
+ ## 📝 Licencia
301
+
302
+ MIT
303
+
304
+ ## 🤝 Contribuir
305
+
306
+ Las contribuciones son bienvenidas. Por favor, abre un issue o un pull request.
307
+
308
+ ## 📞 Soporte
309
+
310
+ Si tienes alguna pregunta o necesitas ayuda, abre un issue en el repositorio.