@canaia/ui-kit
Version:
Un kit de interfaz de usuario modular y personalizable basado en React y Chakra UI, con soporte para Storybook para la documentación y pruebas de componentes.
162 lines (136 loc) • 5.72 kB
Markdown
# 🌟 Canaia UI Kit
Un kit de interfaz de usuario modular y personalizable basado en React y Chakra UI, con soporte para Storybook para la documentación y pruebas de componentes.
# 📂 Estructura del Proyecto
El proyecto está organizado para facilitar el desarrollo y la integración de componentes reutilizables. A continuación, se describe la estructura principal:
```bash
canaia-ui-kit/
├── .storybook/ # Configuración de Storybook
│ ├── main.ts # Configuración de los addons y rutas
│ ├── preview.ts # Tema global y configuración de decorators
├── dist/ # Archivos compilados
├── src/ # Código fuente principal
│ ├── components/ # Componentes reutilizables
│ │ └── Select/ # Ejemplo de un componente (Select)
│ │ ├── index.tsx # Exportación del componente
│ │ ├── Select.tsx # Lógica principal del componente
│ │ ├── Select.styles.ts # Estilos específicos
│ │ ├── Select.types.ts # Tipos e interfaces
│ │ ├── Select.stories.tsx # Configuración en Storybook
│ ├── provider/ # Proveedor de contexto de Chakra UI
│ │ ├── index.tsx # Configuración de CanaiaProvider
│ ├── theme/ # Tema personalizado de Chakra UI
│ ├── colors.ts # Colores personalizados
│ ├── fonts.ts # Configuración de fuentes
│ ├── index.ts # Exportación principal del tema
│ ├── styles.ts # Estilos globales
├── github/workflows/ # Automatización de CI/CD
│ └── publish-to-npm.yml # Configuración para publicar en NPM
├── package.json # Configuración de dependencias y scripts
├── README.md # Documentación del proyecto
🔧 Configuración de Storybook
```
El proyecto incluye Storybook como herramienta para documentar y probar visualmente los componentes.
Archivos de configuración de Storybook
main.ts: Configura los addons y las rutas de los archivos de historias.
```ts
import { mergeConfig } from "vite";
import type { StorybookConfig } from "@storybook/react-vite";
const config: StorybookConfig = {
stories: ["../src/components/**/*.stories.@(js|jsx|ts|tsx)"],
addons: [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-interactions",
"@chakra-ui/storybook-addon",
],
framework: "@storybook/react-vite",
async viteFinal(config) {
return mergeConfig(config, {
optimizeDeps: {
include: ["lodash.mergewith"],
},
});
},
};
export default config;
```
preview.ts: Define los decorators globales y aplica el tema de Chakra UI a todas las historias.
```ts
import { ChakraProvider } from "@chakra-ui/react";
import theme from "../src/theme";
export const decorators = [
(Story) => (
<ChakraProvider theme={theme}>
<Story />
</ChakraProvider>
),
];
```
# 🧩 Componentes
Ejemplo: Componente Select
El componente Select es un ejemplo de un componente modular con lógica, estilos y tipos definidos de manera separada:
Select.tsx: Contiene la lógica del componente utilizando @chakra-ui/react.
Select.styles.ts: Define los estilos específicos del componente.
Select.types.ts: Incluye las interfaces y tipos asociados al componente.
Select.stories.tsx: Permite visualizar y probar el componente en Storybook.
Ejemplo de uso:
```tsx
import { Select } from "@canaia/ui-kit";
<Select
placeholder="Selecciona una opción"
options={[
{ label: "Opción 1", value: "1" },
{ label: "Opción 2", value: "2" },
]}
onChange={(value) => console.log(value)}
/>;
```
# 🎨 Tema Personalizado
El tema está configurado en la carpeta src/theme y extiende el tema de Chakra UI. Incluye:
Colores personalizados: (colors.ts)
Fuentes: (fonts.ts)
Estilos globales: (styles.ts)
Puedes extender o modificar el tema fácilmente.
# 🚀 Comandos Disponibles
Levantar Storybook
```bash
npm run storybook
```
Esto abrirá Storybook en el navegador para que puedas probar los componentes visualmente.
Compilar el Proyecto
``` bash
npm run build
```
Compila los archivos en la carpeta dist.
Publicar en NPM
El proyecto incluye un workflow de GitHub Actions para publicar automáticamente en NPM al realizar un release:
Archivo: github/workflows/publish-to-npm.yml
``` yaml
name: publish to NPM
on:
release:
types: [published]
jobs:
publish-to-npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16.x'
registry-url: 'https://registry.npmjs.org/'
- run: npm ci
- run: npm run build
- run: npm publish
```
# 🛠 Tecnologías Utilizadas
React: Biblioteca de JavaScript para la construcción de interfaces de usuario.
Chakra UI: Librería de componentes accesibles y personalizables.
Storybook: Herramienta para documentar y probar componentes.
Vite: Empaquetador rápido y moderno para aplicaciones de frontend.
GitHub Actions: Automatización de CI/CD para publicar en NPM.
# 🌟 Cuando creamos un componente:
Si quieres contribuir a este proyecto, por favor:
Haz un fork del repositorio.
Crea una rama con tus cambios: git checkout -b feature/nueva-funcionalidad.
Haz un pull request describiendo los cambios.