@sector.siit/mlz-components 1.0.0 → 1.0.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 CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  Una librería moderna de componentes React con Tailwind CSS y variables CSS customizables.
4
4
 
5
+ <!-- Badges -->
6
+ [![CI/CD Pipeline](https://github.com/sector-siit/mlz-components/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/sector-siit/mlz-components/actions/workflows/ci-cd.yml)
7
+ [![Build Status](https://github.com/sector-siit/mlz-components/actions/workflows/build.yml/badge.svg)](https://github.com/sector-siit/mlz-components/actions/workflows/build.yml)
8
+ [![NPM Version](https://img.shields.io/npm/v/@sector.siit/mlz-components.svg)](https://www.npmjs.com/package/@sector.siit/mlz-components)
9
+ [![NPM Downloads](https://img.shields.io/npm/dm/@sector.siit/mlz-components.svg)](https://www.npmjs.com/package/@sector.siit/mlz-components)
10
+ [![Bundle Size](https://img.shields.io/bundlephobia/minzip/@sector.siit/mlz-components)](https://bundlephobia.com/package/@sector.siit/mlz-components)
11
+
12
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
13
+ [![Storybook](https://img.shields.io/badge/Storybook-Available-ff69b4.svg)](https://sector-siit.github.io/mlz-components/)
14
+ [![License](https://img.shields.io/npm/l/@sector.siit/mlz-components.svg)](https://github.com/sector-siit/mlz-components/blob/main/LICENSE)
15
+ [![Contributors](https://img.shields.io/github/contributors/sector-siit/mlz-components.svg)](https://github.com/sector-siit/mlz-components/graphs/contributors)
16
+ [![GitHub Stars](https://img.shields.io/github/stars/sector-siit/mlz-components.svg)](https://github.com/sector-siit/mlz-components/stargazers)
17
+
18
+ [![Release Candidate](https://img.shields.io/badge/RC-Available-yellow.svg)](https://github.com/sector-siit/mlz-components/releases)
19
+ [![Production](https://img.shields.io/badge/Status-Production%20Ready-green.svg)](https://www.npmjs.com/package/@sector.siit/mlz-components)
20
+ [![Components](https://img.shields.io/badge/Components-2%20Available-brightgreen.svg)](#-componentes)
21
+ [![Maintenance](https://img.shields.io/badge/Maintained-Yes-green.svg)](https://github.com/sector-siit/mlz-components)
22
+ [![Last Commit](https://img.shields.io/github/last-commit/sector-siit/mlz-components.svg)](https://github.com/sector-siit/mlz-components/commits/main)
23
+
5
24
  ## 🚀 Características
6
25
 
7
26
  - ⚛️ **React 18** - Componentes modernos con TypeScript
@@ -122,6 +141,50 @@ Un componente de botón versatil con múltiples variantes y tamaños.
122
141
  <Button disabled>Deshabilitado</Button>
123
142
  ```
124
143
 
144
+ ### Input
145
+
146
+ Componente de input con validación, estados y personalización completa.
147
+
148
+ #### Props
149
+
150
+ | Prop | Tipo | Default | Descripción |
151
+ |------|------|---------|-------------|
152
+ | `variant` | `'default' \| 'error' \| 'success'` | `'default'` | Estado visual del input |
153
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Tamaño del input |
154
+ | `label` | `string` | - | Texto del label |
155
+ | `helperText` | `string` | - | Texto de ayuda |
156
+ | `errorText` | `string` | - | Texto de error (sobrescribe helperText) |
157
+ | `fullWidth` | `boolean` | `false` | Si el input ocupa todo el ancho |
158
+
159
+ #### Ejemplos
160
+
161
+ ```tsx
162
+ // Básico
163
+ <Input placeholder="Ingresa tu nombre" />
164
+
165
+ // Con label y ayuda
166
+ <Input
167
+ label="Email"
168
+ placeholder="usuario@ejemplo.com"
169
+ helperText="Te enviaremos notificaciones aquí"
170
+ />
171
+
172
+ // Con error
173
+ <Input
174
+ label="Password"
175
+ type="password"
176
+ variant="error"
177
+ errorText="La contraseña debe tener al menos 8 caracteres"
178
+ />
179
+
180
+ // Tamaños
181
+ <Input size="sm" placeholder="Input pequeño" />
182
+ <Input size="lg" placeholder="Input grande" />
183
+
184
+ // Ancho completo
185
+ <Input fullWidth placeholder="Ocupa todo el ancho" />
186
+ ```
187
+
125
188
  ## 🛠️ Desarrollo
126
189
 
127
190
  ```bash
@@ -141,17 +204,50 @@ npm run lint
141
204
  npm run typecheck
142
205
  ```
143
206
 
144
- ## 🚀 Despliegue
207
+ ## 🚀 CI/CD & Deployments
145
208
 
146
- El proyecto incluye GitHub Actions para:
209
+ El proyecto incluye un sistema completo de CI/CD automatizado:
147
210
 
148
- 1. **Despliegue automático a NPM** cuando cambia la versión en `package.json`
149
- 2. **Despliegue de Storybook a GitHub Pages** en cada push a main
211
+ ### 📦 Releases Automáticos
150
212
 
151
- ### Configuración necesaria:
213
+ #### Production Releases (main)
214
+ - **Trigger**: Push a `main` con cambio de versión en `package.json`
215
+ - **Outputs**:
216
+ - 📦 NPM package publicado
217
+ - 📚 Storybook actualizado en GitHub Pages
218
+ - 🚀 GitHub Release con changelog
219
+ - 🏷️ Git tag automático
152
220
 
153
- 1. **NPM Token**: Añade `NPM_TOKEN` a los secrets de GitHub
154
- 2. **GitHub Pages**: Habilita GitHub Pages en la configuración del repositorio
221
+ #### Release Candidates (develop)
222
+ - **Trigger**: Cualquier push a `develop`
223
+ - **Outputs**:
224
+ - 🧪 NPM package con tag `@rc`
225
+ - 📋 GitHub Prerelease
226
+ - 📊 Assets descargables (build + storybook)
227
+
228
+ ### 🎯 Instalación de Versiones
229
+
230
+ ```bash
231
+ # Última versión estable
232
+ npm install @sector.siit/mlz-components
233
+
234
+ # Última release candidate
235
+ npm install @sector.siit/mlz-components@rc
236
+
237
+ # Versión específica de RC
238
+ npm install @sector.siit/mlz-components@1.0.0-rc.202508071430
239
+ ```
240
+
241
+ ### ⚡ Quick Releases
242
+
243
+ Para cambios solo de documentación, el sistema detecta automáticamente y ejecuta un pipeline optimizado de ~2 minutos.
244
+
245
+ ### 📋 Configuración Requerida
246
+
247
+ 1. **NPM Token**: Agregar `NPM_TOKEN` a GitHub Secrets
248
+ 2. **GitHub Pages**: Habilitar en configuración del repositorio
249
+
250
+ Ver [documentación completa de CI/CD](./docs/CI-CD.md) para más detalles.
155
251
 
156
252
  ## 📄 Licencia
157
253
 
@@ -195,12 +291,34 @@ git push origin main # 🚀 Publica a NPM + GitHub Release
195
291
  4. Push a tu rama (`git push origin feature/AmazingFeature`)
196
292
  5. Abre un Pull Request hacia `develop`
197
293
 
294
+ ### 📋 Guías de Contribución
295
+
296
+ - [🛠️ Developer Guide](./docs/DEVELOPER.md) - Guía completa para desarrolladores
297
+ - [🚀 CI/CD Documentation](./docs/CI-CD.md) - Sistema de deployments automatizados
298
+
299
+ ## 👥 Contributors
300
+
301
+ ¡Gracias a todas las personas que han contribuido a este proyecto!
302
+
303
+ <!-- CONTRIBUTORS:START -->
304
+ <!-- CONTRIBUTORS:END -->
305
+
306
+ ### 📊 Estadísticas de Contribuciones
307
+
308
+ Para ver estadísticas detalladas de contribuciones, consulta [CONTRIBUTORS_STATS.md](./docs/CONTRIBUTORS_STATS.md).
309
+
198
310
  ## 📈 Roadmap
199
311
 
200
- - [ ] Componente Input
201
- - [ ] Componente Card
202
- - [ ] Componente Modal
203
- - [ ] Componente Dropdown
204
- - [ ] Sistema de themes predefenidos
205
- - [ ] Componentes de formulario
206
- - [ ] Componentes de navegación
312
+ - [x] Componente Button con variantes y tamaños
313
+ - [x] Componente Input con validación y estados
314
+ - [x] Sistema de CI/CD automatizado
315
+ - [x] Release Candidates con NPM
316
+ - [x] Documentación completa con Storybook
317
+ - [ ] 🔄 Componente Card
318
+ - [ ] 🔄 Componente Modal
319
+ - [ ] 🔄 Componente Dropdown
320
+ - [ ] 🔄 Sistema de themes predefinidos
321
+ - [ ] 🔄 Componentes de formulario avanzados
322
+ - [ ] 🔄 Componentes de navegación
323
+ - [ ] 🔄 Componente DatePicker
324
+ - [ ] 🔄 Componente DataTable
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
3
+ /** Variante visual del input */
4
+ variant?: 'default' | 'error' | 'success';
5
+ /** Tamaño del input */
6
+ size?: 'sm' | 'md' | 'lg';
7
+ /** Si el input tiene un label */
8
+ label?: string;
9
+ /** Texto de ayuda debajo del input */
10
+ helperText?: string;
11
+ /** Texto de error */
12
+ errorText?: string;
13
+ /** Si el input es de ancho completo */
14
+ fullWidth?: boolean;
15
+ }
16
+ /**
17
+ * Componente Input básico con diferentes variantes y tamaños
18
+ */
19
+ export declare const Input: React.FC<InputProps>;
20
+ export default Input;
21
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC3F,gCAAgC;IAChC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAC1C,uBAAuB;IACvB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CA4HtC,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,84 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: import("react").FC<import("./Input").InputProps>;
5
+ parameters: {
6
+ layout: string;
7
+ docs: {
8
+ description: {
9
+ component: string;
10
+ };
11
+ };
12
+ };
13
+ tags: string[];
14
+ argTypes: {
15
+ variant: {
16
+ control: {
17
+ type: string;
18
+ };
19
+ options: string[];
20
+ description: string;
21
+ };
22
+ size: {
23
+ control: {
24
+ type: string;
25
+ };
26
+ options: string[];
27
+ description: string;
28
+ };
29
+ label: {
30
+ control: {
31
+ type: string;
32
+ };
33
+ description: string;
34
+ };
35
+ placeholder: {
36
+ control: {
37
+ type: string;
38
+ };
39
+ description: string;
40
+ };
41
+ helperText: {
42
+ control: {
43
+ type: string;
44
+ };
45
+ description: string;
46
+ };
47
+ errorText: {
48
+ control: {
49
+ type: string;
50
+ };
51
+ description: string;
52
+ };
53
+ fullWidth: {
54
+ control: {
55
+ type: string;
56
+ };
57
+ description: string;
58
+ };
59
+ disabled: {
60
+ control: {
61
+ type: string;
62
+ };
63
+ description: string;
64
+ };
65
+ };
66
+ };
67
+ export default meta;
68
+ type Story = StoryObj<typeof meta>;
69
+ export declare const Default: Story;
70
+ export declare const WithLabel: Story;
71
+ export declare const WithHelperText: Story;
72
+ export declare const WithError: Story;
73
+ export declare const Success: Story;
74
+ export declare const Small: Story;
75
+ export declare const Medium: Story;
76
+ export declare const Large: Story;
77
+ export declare const Disabled: Story;
78
+ export declare const FullWidth: Story;
79
+ export declare const Password: Story;
80
+ export declare const Email: Story;
81
+ export declare const Number: Story;
82
+ export declare const AllVariants: Story;
83
+ export declare const AllSizes: Story;
84
+ //# sourceMappingURL=Input.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGvD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDoB,CAAC;AAE/B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAGnC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,KAM5B,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAGF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAMpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,KAUvB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAQpB,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,KAyBzB,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,KAuBtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Input, type InputProps } from './Input';
2
+ export { default } from './Input';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface UserCardProps {
2
+ name: string;
3
+ email: string;
4
+ changeUser: () => void;
5
+ editUser: () => void;
6
+ }
7
+ export declare function UserCard({ name, email, changeUser, editUser }: UserCardProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=UserCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserCard.d.ts","sourceRoot":"","sources":["../../../src/components/UserCard/UserCard.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAa5E"}
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { type UserCardProps } from "./UserCard";
3
+ declare const meta: Meta<UserCardProps>;
4
+ export default meta;
5
+ type Story = StoryObj<UserCardProps>;
6
+ export declare const Default: Story;
7
+ //# sourceMappingURL=UserCard.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserCard.stories.d.ts","sourceRoot":"","sources":["../../../src/components/UserCard/UserCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,aAAa,CAU7B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { UserCard } from "./UserCard";
2
+ export type { UserCardProps } from "./UserCard";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UserCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
3
 
3
4
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
5
  /**
@@ -16,5 +17,32 @@ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
16
17
  }
17
18
  declare const Button: React.FC<ButtonProps>;
18
19
 
19
- export { Button };
20
- export type { ButtonProps };
20
+ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
21
+ /** Variante visual del input */
22
+ variant?: 'default' | 'error' | 'success';
23
+ /** Tamaño del input */
24
+ size?: 'sm' | 'md' | 'lg';
25
+ /** Si el input tiene un label */
26
+ label?: string;
27
+ /** Texto de ayuda debajo del input */
28
+ helperText?: string;
29
+ /** Texto de error */
30
+ errorText?: string;
31
+ /** Si el input es de ancho completo */
32
+ fullWidth?: boolean;
33
+ }
34
+ /**
35
+ * Componente Input básico con diferentes variantes y tamaños
36
+ */
37
+ declare const Input: React.FC<InputProps>;
38
+
39
+ interface UserCardProps {
40
+ name: string;
41
+ email: string;
42
+ changeUser: () => void;
43
+ editUser: () => void;
44
+ }
45
+ declare function UserCard({ name, email, changeUser, editUser }: UserCardProps): react_jsx_runtime.JSX.Element;
46
+
47
+ export { Button, Input, UserCard };
48
+ export type { ButtonProps, InputProps, UserCardProps };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.esm.js CHANGED
@@ -27,7 +27,7 @@ function styleInject(css, ref) {
27
27
  }
28
28
  }
29
29
 
30
- var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.mlz-btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1));color:rgb(255 255 255/var(--tw-text-opacity,1))}.mlz-btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.mlz-btn-primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.mlz-btn-primary{background-color:var(--mlz-primary-600,#2563eb)}.mlz-btn-primary:hover{background-color:var(--mlz-primary-700,#1d4ed8)}.mlz-btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1));color:rgb(255 255 255/var(--tw-text-opacity,1))}.mlz-btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.mlz-btn-secondary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.mlz-btn-secondary{background-color:var(--mlz-secondary-600,#475569)}.mlz-btn-secondary:hover{background-color:var(--mlz-secondary-700,#334155)}.mb-4{margin-bottom:1rem}.flex{display:flex}.inline-flex{display:inline-flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.rounded-md{border-radius:.375rem}.border-2{border-width:2px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.bg-transparent{background-color:transparent}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.outline{outline-style:solid}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root{--mlz-primary-50:#eff6ff;--mlz-primary-100:#dbeafe;--mlz-primary-200:#bfdbfe;--mlz-primary-300:#93c5fd;--mlz-primary-400:#60a5fa;--mlz-primary-500:#3b82f6;--mlz-primary-600:#2563eb;--mlz-primary-700:#1d4ed8;--mlz-primary-800:#1e40af;--mlz-primary-900:#1e3a8a;--mlz-primary-950:#172554;--mlz-secondary-50:#f8fafc;--mlz-secondary-100:#f1f5f9;--mlz-secondary-200:#e2e8f0;--mlz-secondary-300:#cbd5e1;--mlz-secondary-400:#94a3b8;--mlz-secondary-500:#64748b;--mlz-secondary-600:#475569;--mlz-secondary-700:#334155;--mlz-secondary-800:#1e293b;--mlz-secondary-900:#0f172a;--mlz-secondary-950:#020617;--mlz-spacing-xs:0.25rem;--mlz-spacing-sm:0.5rem;--mlz-spacing-md:1rem;--mlz-spacing-lg:1.5rem;--mlz-spacing-xl:2rem;--mlz-spacing-2xl:3rem;--mlz-border-radius-sm:0.25rem;--mlz-border-radius-md:0.375rem;--mlz-border-radius-lg:0.5rem;--mlz-border-radius-xl:0.75rem;--mlz-font-size-xs:0.75rem;--mlz-font-size-sm:0.875rem;--mlz-font-size-base:1rem;--mlz-font-size-lg:1.125rem;--mlz-font-size-xl:1.25rem}.hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}";
30
+ var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.mlz-btn-primary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1));color:rgb(255 255 255/var(--tw-text-opacity,1))}.mlz-btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.mlz-btn-primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.mlz-btn-primary{background-color:var(--mlz-primary-600,#2563eb)}.mlz-btn-primary:hover{background-color:var(--mlz-primary-700,#1d4ed8)}.mlz-btn-secondary{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1));color:rgb(255 255 255/var(--tw-text-opacity,1))}.mlz-btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.mlz-btn-secondary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.mlz-btn-secondary{background-color:var(--mlz-secondary-600,#475569)}.mlz-btn-secondary:hover{background-color:var(--mlz-secondary-700,#334155)}.mb-1\\.5{margin-bottom:.375rem}.mb-4{margin-bottom:1rem}.mt-1\\.5{margin-top:.375rem}.flex{display:flex}.inline-flex{display:inline-flex}.h-10{height:2.5rem}.h-12{height:3rem}.h-8{height:2rem}.h-\\[var\\(--mlz-input-height-lg\\2c 3rem\\)\\]{height:var(--mlz-input-height-lg,3rem)}.h-\\[var\\(--mlz-input-height-md\\2c 2\\.5rem\\)\\]{height:var(--mlz-input-height-md,2.5rem)}.h-\\[var\\(--mlz-input-height-sm\\2c 2rem\\)\\]{height:var(--mlz-input-height-sm,2rem)}.w-80{width:20rem}.w-auto{width:auto}.w-full{width:100%}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-\\[var\\(--mlz-error-500\\2c rgb\\(239\\2c 68\\2c 68\\)\\)\\]{border-color:var(--mlz-error-500,#ef4444)}.border-\\[var\\(--mlz-input-border-color\\2c rgb\\(209\\2c 213\\2c 219\\)\\)\\]{border-color:var(--mlz-input-border-color,#d1d5db)}.border-\\[var\\(--mlz-success-500\\2c rgb\\(34\\2c 197\\2c 94\\)\\)\\]{border-color:var(--mlz-success-500,#22c55e)}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\\[var\\(--mlz-input-padding-x-lg\\2c 1\\.25rem\\)\\]{padding-left:var(--mlz-input-padding-x-lg,1.25rem);padding-right:var(--mlz-input-padding-x-lg,1.25rem)}.px-\\[var\\(--mlz-input-padding-x-md\\2c 1rem\\)\\]{padding-left:var(--mlz-input-padding-x-md,1rem);padding-right:var(--mlz-input-padding-x-md,1rem)}.px-\\[var\\(--mlz-input-padding-x-sm\\2c 0\\.75rem\\)\\]{padding-left:var(--mlz-input-padding-x-sm,.75rem);padding-right:var(--mlz-input-padding-x-sm,.75rem)}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-\\[var\\(--mlz-input-padding-y-lg\\2c 0\\.75rem\\)\\]{padding-bottom:var(--mlz-input-padding-y-lg,.75rem);padding-top:var(--mlz-input-padding-y-lg,.75rem)}.py-\\[var\\(--mlz-input-padding-y-md\\2c 0\\.5rem\\)\\]{padding-bottom:var(--mlz-input-padding-y-md,.5rem);padding-top:var(--mlz-input-padding-y-md,.5rem)}.py-\\[var\\(--mlz-input-padding-y-sm\\2c 0\\.375rem\\)\\]{padding-bottom:var(--mlz-input-padding-y-sm,.375rem);padding-top:var(--mlz-input-padding-y-sm,.375rem)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.text-\\[var\\(--mlz-error-600\\2c rgb\\(220\\2c 38\\2c 38\\)\\)\\]{color:var(--mlz-error-600,#dc2626)}.text-\\[var\\(--mlz-input-font-size-lg\\2c 1\\.125rem\\)\\]{color:var(--mlz-input-font-size-lg,1.125rem)}.text-\\[var\\(--mlz-input-font-size-md\\2c 1rem\\)\\]{color:var(--mlz-input-font-size-md,1rem)}.text-\\[var\\(--mlz-input-font-size-sm\\2c 0\\.875rem\\)\\]{color:var(--mlz-input-font-size-sm,.875rem)}.text-\\[var\\(--mlz-input-helper-color\\2c rgb\\(107\\2c 114\\2c 128\\)\\)\\]{color:var(--mlz-input-helper-color,#6b7280)}.text-\\[var\\(--mlz-input-label-color\\2c rgb\\(55\\2c 65\\2c 81\\)\\)\\]{color:var(--mlz-input-label-color,#374151)}.text-\\[var\\(--mlz-success-600\\2c rgb\\(22\\2c 163\\2c 74\\)\\)\\]{color:var(--mlz-success-600,#16a34a)}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity,1))}.outline{outline-style:solid}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}:root{--mlz-primary-50:#eff6ff;--mlz-primary-100:#dbeafe;--mlz-primary-200:#bfdbfe;--mlz-primary-300:#93c5fd;--mlz-primary-400:#60a5fa;--mlz-primary-500:#3b82f6;--mlz-primary-600:#2563eb;--mlz-primary-700:#1d4ed8;--mlz-primary-800:#1e40af;--mlz-primary-900:#1e3a8a;--mlz-primary-950:#172554;--mlz-secondary-50:#f8fafc;--mlz-secondary-100:#f1f5f9;--mlz-secondary-200:#e2e8f0;--mlz-secondary-300:#cbd5e1;--mlz-secondary-400:#94a3b8;--mlz-secondary-500:#64748b;--mlz-secondary-600:#475569;--mlz-secondary-700:#334155;--mlz-secondary-800:#1e293b;--mlz-secondary-900:#0f172a;--mlz-secondary-950:#020617;--mlz-spacing-xs:0.25rem;--mlz-spacing-sm:0.5rem;--mlz-spacing-md:1rem;--mlz-spacing-lg:1.5rem;--mlz-spacing-xl:2rem;--mlz-spacing-2xl:3rem;--mlz-border-radius-sm:0.25rem;--mlz-border-radius-md:0.375rem;--mlz-border-radius-lg:0.5rem;--mlz-border-radius-xl:0.75rem;--mlz-font-size-xs:0.75rem;--mlz-font-size-sm:0.875rem;--mlz-font-size-base:1rem;--mlz-font-size-lg:1.125rem;--mlz-font-size-xl:1.25rem;--mlz-input-border-color:#d1d5db;--mlz-input-label-color:#374151;--mlz-input-helper-color:#6b7280;--mlz-input-height-sm:2rem;--mlz-input-height-md:2.5rem;--mlz-input-height-lg:3rem;--mlz-input-padding-x-sm:0.75rem;--mlz-input-padding-y-sm:0.375rem;--mlz-input-padding-x-md:1rem;--mlz-input-padding-y-md:0.5rem;--mlz-input-padding-x-lg:1.25rem;--mlz-input-padding-y-lg:0.75rem;--mlz-input-font-size-sm:0.875rem;--mlz-input-font-size-md:1rem;--mlz-input-font-size-lg:1.125rem;--mlz-error-500:#ef4444;--mlz-error-600:#dc2626;--mlz-success-500:#22c55e;--mlz-success-600:#16a34a}.hover\\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.focus\\:border-\\[var\\(--mlz-error-500\\2c rgb\\(239\\2c 68\\2c 68\\)\\)\\]:focus{border-color:var(--mlz-error-500,#ef4444)}.focus\\:border-\\[var\\(--mlz-primary-500\\2c rgb\\(59\\2c 130\\2c 246\\)\\)\\]:focus{border-color:var(--mlz-primary-500,#3b82f6)}.focus\\:border-\\[var\\(--mlz-success-500\\2c rgb\\(34\\2c 197\\2c 94\\)\\)\\]:focus{border-color:var(--mlz-success-500,#22c55e)}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\\:border-green-500:focus{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.focus\\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-\\[var\\(--mlz-error-500\\2c rgb\\(239\\2c 68\\2c 68\\)\\)\\]:focus{--tw-ring-color:var(--mlz-error-500,#ef4444)}.focus\\:ring-\\[var\\(--mlz-primary-500\\2c rgb\\(59\\2c 130\\2c 246\\)\\)\\]:focus{--tw-ring-color:var(--mlz-primary-500,#3b82f6)}.focus\\:ring-\\[var\\(--mlz-success-500\\2c rgb\\(34\\2c 197\\2c 94\\)\\)\\]:focus{--tw-ring-color:var(--mlz-success-500,#22c55e)}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\\:ring-blue-500\\/20:focus{--tw-ring-color:rgba(59,130,246,.2)}.focus\\:ring-green-500\\/20:focus{--tw-ring-color:rgba(34,197,94,.2)}.focus\\:ring-red-500\\/20:focus{--tw-ring-color:rgba(239,68,68,.2)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media (prefers-color-scheme:dark){.dark\\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\\:border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.dark\\:border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.dark\\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\\:text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\\:text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.dark\\:placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}}";
31
31
  styleInject(css_248z,{"insertAt":"top"});
32
32
 
33
33
  var jsxRuntime = {exports: {}};
@@ -1404,5 +1404,97 @@ const Button = ({ children, variant = 'primary', size = 'md', disabled = false,
1404
1404
  return (jsxRuntimeExports.jsx("button", { type: type, className: classes, disabled: disabled, onClick: onClick, ...props, children: children }));
1405
1405
  };
1406
1406
 
1407
- export { Button };
1407
+ /**
1408
+ * Componente Input básico con diferentes variantes y tamaños
1409
+ */
1410
+ const Input = ({ variant = 'default', size = 'md', label, helperText, errorText, fullWidth = false, className = '', ...props }) => {
1411
+ // Clases base del input
1412
+ const baseClasses = [
1413
+ 'border rounded-md transition-colors duration-200 focus:outline-none focus:ring-2',
1414
+ 'bg-white dark:bg-gray-800',
1415
+ 'text-gray-900 dark:text-gray-100',
1416
+ 'placeholder-gray-500 dark:placeholder-gray-400'
1417
+ ];
1418
+ // Clases de tamaño
1419
+ const sizeClasses = {
1420
+ sm: [
1421
+ 'px-3 py-1.5 text-sm',
1422
+ 'h-8',
1423
+ // CSS Variables con fallbacks
1424
+ `h-[var(--mlz-input-height-sm,2rem)]`,
1425
+ `px-[var(--mlz-input-padding-x-sm,0.75rem)]`,
1426
+ `py-[var(--mlz-input-padding-y-sm,0.375rem)]`,
1427
+ `text-[var(--mlz-input-font-size-sm,0.875rem)]`
1428
+ ],
1429
+ md: [
1430
+ 'px-4 py-2 text-base',
1431
+ 'h-10',
1432
+ // CSS Variables con fallbacks
1433
+ `h-[var(--mlz-input-height-md,2.5rem)]`,
1434
+ `px-[var(--mlz-input-padding-x-md,1rem)]`,
1435
+ `py-[var(--mlz-input-padding-y-md,0.5rem)]`,
1436
+ `text-[var(--mlz-input-font-size-md,1rem)]`
1437
+ ],
1438
+ lg: [
1439
+ 'px-5 py-3 text-lg',
1440
+ 'h-12',
1441
+ // CSS Variables con fallbacks
1442
+ `h-[var(--mlz-input-height-lg,3rem)]`,
1443
+ `px-[var(--mlz-input-padding-x-lg,1.25rem)]`,
1444
+ `py-[var(--mlz-input-padding-y-lg,0.75rem)]`,
1445
+ `text-[var(--mlz-input-font-size-lg,1.125rem)]`
1446
+ ]
1447
+ };
1448
+ // Clases de variante
1449
+ const variantClasses = {
1450
+ default: [
1451
+ 'border-gray-300 dark:border-gray-600',
1452
+ 'focus:border-blue-500 focus:ring-blue-500/20',
1453
+ // CSS Variables con fallbacks
1454
+ `border-[var(--mlz-input-border-color,rgb(209,213,219))]`,
1455
+ `focus:border-[var(--mlz-primary-500,rgb(59,130,246))]`,
1456
+ `focus:ring-[var(--mlz-primary-500,rgb(59,130,246))]`
1457
+ ],
1458
+ error: [
1459
+ 'border-red-500 dark:border-red-400',
1460
+ 'focus:border-red-500 focus:ring-red-500/20',
1461
+ // CSS Variables con fallbacks
1462
+ `border-[var(--mlz-error-500,rgb(239,68,68))]`,
1463
+ `focus:border-[var(--mlz-error-500,rgb(239,68,68))]`,
1464
+ `focus:ring-[var(--mlz-error-500,rgb(239,68,68))]`
1465
+ ],
1466
+ success: [
1467
+ 'border-green-500 dark:border-green-400',
1468
+ 'focus:border-green-500 focus:ring-green-500/20',
1469
+ // CSS Variables con fallbacks
1470
+ `border-[var(--mlz-success-500,rgb(34,197,94))]`,
1471
+ `focus:border-[var(--mlz-success-500,rgb(34,197,94))]`,
1472
+ `focus:ring-[var(--mlz-success-500,rgb(34,197,94))]`
1473
+ ]
1474
+ };
1475
+ // Clases de ancho
1476
+ const widthClasses = fullWidth ? 'w-full' : 'w-auto';
1477
+ // Combinar todas las clases
1478
+ const inputClasses = [
1479
+ ...baseClasses,
1480
+ ...sizeClasses[size],
1481
+ ...variantClasses[variant],
1482
+ widthClasses,
1483
+ className
1484
+ ].join(' ');
1485
+ // Determinar el texto de ayuda efectivo
1486
+ const effectiveHelperText = errorText || helperText;
1487
+ const effectiveVariant = errorText ? 'error' : variant;
1488
+ return (jsxRuntimeExports.jsxs("div", { className: `flex flex-col ${fullWidth ? 'w-full' : 'w-auto'}`, children: [label && (jsxRuntimeExports.jsx("label", { htmlFor: props.id, className: `mb-1.5 text-sm font-medium text-gray-700 dark:text-gray-300 text-[var(--mlz-input-label-color,rgb(55,65,81))]`, children: label })), jsxRuntimeExports.jsx("input", { ...props, className: inputClasses }), effectiveHelperText && (jsxRuntimeExports.jsx("p", { className: `mt-1.5 text-sm ${effectiveVariant === 'error'
1489
+ ? 'text-red-600 dark:text-red-400 text-[var(--mlz-error-600,rgb(220,38,38))]'
1490
+ : effectiveVariant === 'success'
1491
+ ? 'text-green-600 dark:text-green-400 text-[var(--mlz-success-600,rgb(22,163,74))]'
1492
+ : 'text-gray-500 dark:text-gray-400 text-[var(--mlz-input-helper-color,rgb(107,114,128))]'}`, children: effectiveHelperText }))] }));
1493
+ };
1494
+
1495
+ function UserCard({ name, email, changeUser, editUser }) {
1496
+ return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("h2", { children: name }), jsxRuntimeExports.jsx("p", { children: email }), jsxRuntimeExports.jsx("button", { type: "button", onClick: changeUser, children: "Change User" }), jsxRuntimeExports.jsx("button", { type: "button", onClick: editUser, children: "Edit User" })] }));
1497
+ }
1498
+
1499
+ export { Button, Input, UserCard };
1408
1500
  //# sourceMappingURL=index.esm.js.map