@conatel-sa/react-ui 0.2.5 → 0.2.6
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 +153 -47
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,88 +1,180 @@
|
|
|
1
1
|
# @conatel-sa/react-ui
|
|
2
2
|
|
|
3
|
-
Biblioteca de componentes React para productos **Conatel** y **Vivion**.
|
|
3
|
+
Biblioteca de **componentes de interfaz** para aplicaciones web hechas con **React** para productos **Conatel** y **Vivion**. Incluye botones, formularios, tablas, modales, tarjetas y más, con **dos estilos visuales** (temas) que se puede cambiar con una sola propiedad.
|
|
4
|
+
|
|
5
|
+
**¿Para qué sirve?** Para **reutilizar** pantallas y patrones de interfaz ya definidos: misma apariencia, menos trabajo de diseño pixel a pixel y menos CSS “a mano”. Sirve tanto para prototipos como para productos que quieran verse **uniformes y cuidados** en tipografía, colores y espaciados.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Qué necesitás antes de empezar
|
|
10
|
+
|
|
11
|
+
| Requisito | Notas |
|
|
12
|
+
|-----------|--------|
|
|
13
|
+
| **Node.js** (versión LTS recomendada) | Para ejecutar `npm` y crear el proyecto. [nodejs.org](https://nodejs.org/) |
|
|
14
|
+
| **Un proyecto React** | Por ejemplo creado con [Vite](https://vitejs.dev/) (`npm create vite@latest` → plantilla React + TypeScript). |
|
|
15
|
+
| **Conexión a internet** (instalación típica) | Para descargar el paquete desde el registro npm (ver más abajo si usás archivo `.tgz`). |
|
|
16
|
+
|
|
17
|
+
Podés partir de los ejemplos de este documento y adaptarlos a tu pantalla.
|
|
18
|
+
|
|
19
|
+
---
|
|
4
20
|
|
|
5
21
|
## Instalación
|
|
6
22
|
|
|
23
|
+
En la carpeta de tu proyecto React:
|
|
24
|
+
|
|
7
25
|
```bash
|
|
8
26
|
npm install @conatel-sa/react-ui
|
|
9
27
|
```
|
|
10
28
|
|
|
11
|
-
|
|
29
|
+
### Instalar desde un archivo `.tgz` (sin usar el registro en el momento)
|
|
30
|
+
|
|
31
|
+
Útil si trabajás **sin red** en el entorno del proyecto, o si querés **fijar** exactamente un paquete que ya descargaste.
|
|
32
|
+
|
|
33
|
+
**1. Obtener el archivo `.tgz`**
|
|
34
|
+
|
|
35
|
+
- **Con npm (recomendado):** en una carpeta vacía o temporal, con internet:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm pack @conatel-sa/react-ui
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Eso genera un archivo `conatel-sa-react-ui-<versión>.tgz` en esa carpeta (el nombre incluye la versión publicada). Ese es el paquete listo para instalar offline.
|
|
42
|
+
|
|
43
|
+
- **Desde la web:** en la página del paquete en npm podés revisar la versión actual y, si hace falta, usar el mismo comando `npm pack` arriba para bajar el tarball correspondiente.
|
|
44
|
+
|
|
45
|
+
**2. Instalarlo en tu proyecto React**
|
|
46
|
+
|
|
47
|
+
Ajustá la ruta al `.tgz` que tengas (por ejemplo lo copiaste al repo en `./releases/`):
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm install ./ruta/al/archivo/conatel-sa-react-ui-0.2.6.tgz
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
O en `package.json`:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
"dependencies": {
|
|
57
|
+
"@conatel-sa/react-ui": "file:./releases/conatel-sa-react-ui-0.2.6.tgz"
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Luego: `npm install`.
|
|
62
|
+
|
|
63
|
+
> **Nota:** si no podés ejecutar `npm pack` ni acceder al registro npm, podés **pedir el `.tgz`** a quien distribuya el material del desafío o al equipo, e instalarlo con los mismos pasos del punto 2.
|
|
64
|
+
|
|
65
|
+
---
|
|
12
66
|
|
|
13
|
-
|
|
67
|
+
## Uso en 3 pasos
|
|
68
|
+
|
|
69
|
+
### 1. Importar los estilos (obligatorio)
|
|
70
|
+
|
|
71
|
+
Sin este archivo, los componentes **no se verán** con los colores y tipografías correctos. Ponelo **una vez** en el archivo de entrada de tu app (por ejemplo `main.tsx` o `main.jsx`):
|
|
14
72
|
|
|
15
73
|
```tsx
|
|
16
|
-
// main.tsx
|
|
17
74
|
import '@conatel-sa/react-ui/dist/index.css';
|
|
18
75
|
```
|
|
19
76
|
|
|
20
|
-
|
|
77
|
+
### 2. Envolver la app con el tema
|
|
78
|
+
|
|
79
|
+
Los componentes deben estar **dentro** de `ThemeProvider`. Elegís el tema visual con la prop `theme`:
|
|
21
80
|
|
|
22
81
|
```tsx
|
|
23
|
-
import { ThemeProvider
|
|
82
|
+
import { ThemeProvider } from '@conatel-sa/react-ui';
|
|
24
83
|
|
|
25
84
|
function App() {
|
|
26
85
|
return (
|
|
27
|
-
<ThemeProvider theme="conatel"
|
|
86
|
+
<ThemeProvider theme="conatel" as="div">
|
|
87
|
+
{/* Aquí van tus pantallas y componentes */}
|
|
88
|
+
</ThemeProvider>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- `theme="conatel"` — estilo con acento rojo corporativo.
|
|
94
|
+
- `theme="vivion"` — estilo con acento azul.
|
|
95
|
+
|
|
96
|
+
### 3. Usar componentes
|
|
97
|
+
|
|
98
|
+
```tsx
|
|
99
|
+
import { ThemeProvider, Button, Card, CardBody, Badge } from '@conatel-sa/react-ui';
|
|
100
|
+
|
|
101
|
+
function Ejemplo() {
|
|
102
|
+
return (
|
|
103
|
+
<ThemeProvider theme="conatel" as="div">
|
|
28
104
|
<Card>
|
|
29
|
-
<
|
|
30
|
-
|
|
105
|
+
<CardBody>
|
|
106
|
+
<Badge variant="success">Listo</Badge>
|
|
107
|
+
<Button variant="primary">Continuar</Button>
|
|
108
|
+
</CardBody>
|
|
31
109
|
</Card>
|
|
32
110
|
</ThemeProvider>
|
|
33
111
|
);
|
|
34
112
|
}
|
|
35
113
|
```
|
|
36
114
|
|
|
37
|
-
|
|
115
|
+
---
|
|
38
116
|
|
|
39
|
-
|
|
117
|
+
## Temas (resumen)
|
|
40
118
|
|
|
41
|
-
|
|
|
42
|
-
|
|
43
|
-
| `conatel` | `#CC032E` |
|
|
44
|
-
| `vivion` | `#0098D4` |
|
|
119
|
+
| Valor en código | Color principal aproximado | Uso típico |
|
|
120
|
+
|-----------------|----------------------------|------------|
|
|
121
|
+
| `conatel` | Rojo `#CC032E` | Identidad corporativa Conatel |
|
|
122
|
+
| `vivion` | Azul `#0098D4` | Identidad Vivion |
|
|
45
123
|
|
|
46
124
|
```tsx
|
|
47
|
-
<ThemeProvider theme="vivion">
|
|
48
|
-
<Button variant="primary">
|
|
125
|
+
<ThemeProvider theme="vivion" as="div">
|
|
126
|
+
<Button variant="primary">Acción principal</Button>
|
|
49
127
|
</ThemeProvider>
|
|
50
128
|
```
|
|
51
129
|
|
|
52
|
-
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Si usás un asistente de código (opcional)
|
|
53
133
|
|
|
54
|
-
|
|
55
|
-
`Heading` - `Text`
|
|
134
|
+
Texto de referencia que podés pegar para alinear criterios (no es obligatorio):
|
|
56
135
|
|
|
57
|
-
|
|
58
|
-
`Input` - `Textarea` - `Select` - `Checkbox` - `Toggle` - `FormField`
|
|
136
|
+
> Estoy usando React y la librería `@conatel-sa/react-ui`. Importá `ThemeProvider` y los componentes que necesites desde `@conatel-sa/react-ui`. Preferí los componentes de la librería para botones e inputs en lugar de CSS global suelto. Importá `@conatel-sa/react-ui/dist/index.css` en el entry point.
|
|
59
137
|
|
|
60
|
-
|
|
61
|
-
`Badge` - `Alert` - `Spinner` - `Progress`
|
|
138
|
+
---
|
|
62
139
|
|
|
63
|
-
|
|
64
|
-
`Card` - `CardHeader` - `CardBody` - `CardFooter` - `Modal`
|
|
140
|
+
## Qué incluye el paquete principal
|
|
65
141
|
|
|
66
|
-
|
|
67
|
-
`Navbar` - `NavItem` - `Tabs` - `TabList` - `Tab` - `TabPanel`
|
|
142
|
+
Import: `import { … } from '@conatel-sa/react-ui'`
|
|
68
143
|
|
|
69
|
-
|
|
70
|
-
|
|
144
|
+
| Área | Componentes (ejemplos) |
|
|
145
|
+
|------|-------------------------|
|
|
146
|
+
| Tipografía | `Heading`, `Text` |
|
|
147
|
+
| Formularios | `Input`, `Textarea`, `Select`, `Checkbox`, `Toggle`, `FormField` |
|
|
148
|
+
| Feedback | `Badge`, `Alert`, `Spinner`, `Progress` |
|
|
149
|
+
| Contenedores | `Card`, `CardHeader`, `CardBody`, `CardFooter`, `Modal` |
|
|
150
|
+
| Navegación | `Navbar`, `NavItem`, `Tabs`, `TabList`, `Tab`, `TabPanel` |
|
|
151
|
+
| Datos | `Table`, `TableHead`, `TableBody`, `TableRow`, `TableCell`, `TableHeaderCell` |
|
|
152
|
+
| Otros | `Avatar`, `Divider`, `EmptyState`, `Button`, `Sidebar`, `SidebarItem`, `Toast`, `ScoreSelector` |
|
|
71
153
|
|
|
72
|
-
|
|
73
|
-
`Avatar` - `Divider` - `EmptyState` - `Button` - `Sidebar` - `SidebarItem` - `Toast` - `ScoreSelector`
|
|
154
|
+
---
|
|
74
155
|
|
|
75
|
-
|
|
156
|
+
## Módulos opcionales (subrutas)
|
|
76
157
|
|
|
77
|
-
|
|
158
|
+
Además del paquete principal, podés importar **solo** lo que necesites desde rutas extra. Cada una tiene su documentación en tipos (`.d.ts`) dentro de `node_modules/@conatel-sa/react-ui/dist/`.
|
|
159
|
+
|
|
160
|
+
| Import | Para qué sirve |
|
|
161
|
+
|--------|----------------|
|
|
162
|
+
| `@conatel-sa/react-ui/icons` | Iconos Material Symbols y `IconProvider`. Suele hacer falta también: `import '@conatel-sa/react-ui/dist/material-symbols.css'` |
|
|
163
|
+
| `@conatel-sa/react-ui/forms` | Campos avanzados: `EmailInput`, `PasswordInput`, `MultiSelectDropdown`, `SingleSelectDropdown` y utilidades de validación de contraseña |
|
|
164
|
+
| `@conatel-sa/react-ui/cards` | Tarjetas y paneles: `ServiceCard`, `FeatureCard`, `ChangelogPanel`, `ArtifactReportCard` |
|
|
165
|
+
| `@conatel-sa/react-ui/dialogs` | Diálogos (p. ej. `ChangelogDialog`; requiere `react-dom`) |
|
|
166
|
+
| `@conatel-sa/react-ui/metrics` | `StatInline`, `MiniMeter` |
|
|
167
|
+
| `@conatel-sa/react-ui/status` | `StatusSummaryPopover` |
|
|
168
|
+
|
|
169
|
+
### Ejemplo: iconos
|
|
78
170
|
|
|
79
171
|
```tsx
|
|
80
172
|
import { Icon, IconProvider } from '@conatel-sa/react-ui/icons';
|
|
81
173
|
import '@conatel-sa/react-ui/dist/material-symbols.css';
|
|
82
174
|
|
|
83
|
-
function
|
|
175
|
+
function ConIconos() {
|
|
84
176
|
return (
|
|
85
|
-
<ThemeProvider theme="conatel">
|
|
177
|
+
<ThemeProvider theme="conatel" as="div">
|
|
86
178
|
<IconProvider injectStylesheet defaultSize="md">
|
|
87
179
|
<Icon name="search" size="md" />
|
|
88
180
|
</IconProvider>
|
|
@@ -91,20 +183,34 @@ function WithIcons() {
|
|
|
91
183
|
}
|
|
92
184
|
```
|
|
93
185
|
|
|
94
|
-
`lucide-react` es opcional (solo si usás `LucideIcon`).
|
|
186
|
+
`lucide-react` es **opcional** (solo si usás `LucideIcon`).
|
|
95
187
|
|
|
96
|
-
|
|
188
|
+
### Ejemplo: formularios extendidos
|
|
97
189
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
| `@conatel-sa/react-ui/metrics` | `StatInline`, `MiniMeter` |
|
|
104
|
-
| `@conatel-sa/react-ui/status` | `StatusSummaryPopover` |
|
|
190
|
+
```tsx
|
|
191
|
+
import { EmailInput, PasswordInput } from '@conatel-sa/react-ui/forms';
|
|
192
|
+
import '@conatel-sa/react-ui/dist/index.css';
|
|
193
|
+
import '@conatel-sa/react-ui/dist/material-symbols.css';
|
|
194
|
+
```
|
|
105
195
|
|
|
106
|
-
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Si algo no se ve bien (checklist rápido)
|
|
199
|
+
|
|
200
|
+
1. ¿Importaste `import '@conatel-sa/react-ui/dist/index.css'` en el entry (p. ej. `main.tsx`)?
|
|
201
|
+
2. ¿Tu contenido está **dentro** de `<ThemeProvider>`?
|
|
202
|
+
3. Si usás iconos o `./forms` con símbolos, ¿importaste también `material-symbols.css`?
|
|
203
|
+
4. ¿Tu proyecto usa **React 18**? (peer dependency del paquete.)
|
|
204
|
+
|
|
205
|
+
---
|
|
107
206
|
|
|
108
207
|
## TypeScript
|
|
109
208
|
|
|
110
|
-
La librería
|
|
209
|
+
La librería publica tipos (`.d.ts`). No necesitás instalar `@types` aparte para este paquete.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Más ayuda
|
|
214
|
+
|
|
215
|
+
- Página del paquete en npm: [npmjs.com/package/@conatel-sa/react-ui](https://www.npmjs.com/package/@conatel-sa/react-ui)
|
|
216
|
+
- Si tu equipo mantiene un **repositorio workspace** con este código, ahí suelen estar `docs/` (subpaquetes, API de iconos y forms) y galerías HTML de demostración.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conatel-sa/react-ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "Biblioteca de componentes React para productos Conatel y Vivion. Incluye más de 20 componentes UI con theming. Subpaquetes opcionales: ./icons, ./forms, ./cards, ./dialogs, ./metrics, ./status.",
|
|
5
5
|
"main": "dist/index.umd.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
|
-
"dist"
|
|
49
|
+
"dist",
|
|
50
|
+
"README.md"
|
|
50
51
|
],
|
|
51
52
|
"scripts": {
|
|
52
53
|
"dev": "vite",
|