Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/martinalexanderflorestorres/product-variants-react

Agrega variantes a un producto en React
https://github.com/martinalexanderflorestorres/product-variants-react

Last synced: 7 days ago
JSON representation

Agrega variantes a un producto en React

Awesome Lists containing this project

README

        

# Product Variants React

Agrega variantes a un producto en React.

![1](https://github.com/MartinAlexanderFloresTorres/product-variants-react/assets/91045865/3a5c5123-5466-4461-9720-e101468102cb)

![image](https://github.com/MartinAlexanderFloresTorres/product-variants-react/assets/91045865/72bb5eab-021e-45ef-86b4-fee78069d2cc)

## Instalación

Para instalar `product-variants-react`, puedes utilizar npm o yarn:

```bash
npm install product-variants-react
```
# o
```bash
yarn add product-variants-react
```

# Uso
## Componente VariationProvider
El componente VariationProvider es un contexto que proporciona variantes de producto y funcionalidades relacionadas a los componentes hijos

# Ejemplo usando el componente ya estilizado:
```jsx
import 'product-variants-react/dist/bundle.css';
import { Variations, VariationProvider } from 'product-variants-react';

// Dentro de tu aplicación
export default function App() {
return (





);
}
```

# Ejemplo estilizando el boton de agregar una nueva variacion:
```jsx
import 'product-variants-react/dist/bundle.css';
import { Variations, VariationProvider, useVariants } from 'product-variants-react';

function ButtonNewVariation() {
const { openModalVariation } = useVariants();
return (






Agregar variaciones

);
}

export default function App() {
return (








);
}

```

## Hook useVariants
Puede utilizar el hook useVariants para acceder a las propiedades proporcionadas por VariationContext. Por ejemplo:

```jsx
import { useContext } from 'react';
import { VariationContext } from '../provider/VariationProvider';

export function useVariants() {
return useContext(VariationContext);
}
```

Este hook le permite acceder a las propiedades como variations, variationsSelected, variantPrices, etc., y utilizarlas para crear su propia lógica.

```jsx
const { variations, variationsSelected, variantPrices, ... } = useVariants();
// Utilice estas propiedades para su lógica
```

## Props de Variations
defaultPrice: El precio predeterminado del producto.
defaultStock: La cantidad predeterminada de stock disponible del producto.

```jsx

```
```jsx

```

## Estructura de datos
Las interfaces Variant, VariantValue, VariantPrice, VariantOptionsAndPrices y VariantOption se utilizan para definir la estructura de datos relacionada con las variantes de producto.

```typescript
export interface Variant {
id: string;
name: string;
title: string;
usage: boolean;
values: VariantValue[];
}

export interface VariantOptions {
id: string;
name: string;
title: string;
usage: boolean;
}

export interface VariantValue {
id: string;
title: string;
}

export interface VariantPrice {
id: string;
variant: VariantOptionsAndPrices;
}

export interface VariantOptionsAndPrices {
options: VariantOption[];
price: number | string;
stock: number | string;
}

export interface VariantOption {
id: string;
name: string;
title: string;
}
```
## Opciones de Variantes

Las opciones de variantes definen las características disponibles para un producto. Estas opciones se pueden personalizar según las necesidades del usuario. A continuación, se muestra un ejemplo de cómo se pueden definir las opciones de variantes en el archivo `variants.ts`:

```typescript

export const VARIANTS: VariantOptions[] = [
{
id: generateId(),
name: 'size',
title: 'Tamaño',
usage: false,
},
{
id: generateId(),
name: 'color',
title: 'Color',
usage: false,
},
{
id: generateId(),
name: 'material',
title: 'Material',
usage: false,
},
{
id: generateId(),
name: 'style',
title: 'Estilo',
usage: false,

},
{
id: generateId(),
name: 'pattern',
title: 'Patrón',
usage: false,

},
{
id: generateId(),
name: 'length',
title: 'Longitud',
usage: false,

},
{
id: generateId(),
name: 'width',
title: 'Ancho',
usage: false,

},
];

```

En este ejemplo, se definen varias opciones de variantes como 'Tamaño', 'Color', 'Material', etc. Cada opción tiene un nombre único, un título descriptivo y una lista de valores que se pueden asignar a esa opción.

Las opciones de variantes se pueden utilizar para personalizar los productos y permitir a los usuarios seleccionar las características específicas que desean.

## Personalización de las Opciones de Variantes y Selecciones Predeterminadas

Además de personalizar las opciones de variantes, también es posible especificar las selecciones predeterminadas para cada variante. Esto se puede lograr utilizando el prop `store` en el componente `VariationProvider`, donde se puede incluir una lista de variantes seleccionadas inicialmente.

A continuación, se muestra un ejemplo de cómo se puede personalizar el `store` para especificar tanto las variantes deseadas como las selecciones predeterminadas:

```jsx
import 'product-variants-react/dist/bundle.css';
import { Variations, VariationProvider } from 'product-variants-react';

export default function App() {
return (





);
}
```
En este ejemplo, además de especificar las opciones de variantes personalizadas, también se proporcionan selecciones predeterminadas para cada variante dentro del prop store. Esto permite que las opciones seleccionadas se muestren automáticamente cuando se carga la aplicación, brindando una experiencia más completa al usuario.

# Contribución
Si encuentras algún problema o tienes alguna sugerencia para mejorar este paquete, ¡no dudes en abrir un issue o enviar un pull request!