chiperos-ai-components-library 0.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 +225 -0
- package/dist/chiper-components-library.cjs +15 -0
- package/dist/chiper-components-library.cjs.map +1 -0
- package/dist/chiper-components-library.js +4836 -0
- package/dist/chiper-components-library.js.map +1 -0
- package/dist/components/ActionCard/ActionCard.stories.d.ts +22 -0
- package/dist/components/ActionCard/ActionCard.test.d.ts +1 -0
- package/dist/components/ActionCard/index.d.ts +50 -0
- package/dist/components/BannerAlerts/BannerAlerts.stories.d.ts +42 -0
- package/dist/components/BannerAlerts/BannerAlerts.test.d.ts +1 -0
- package/dist/components/BannerAlerts/index.d.ts +36 -0
- package/dist/components/BrandIcons/BrandIcons.stories.d.ts +45 -0
- package/dist/components/BrandIcons/BrandIcons.test.d.ts +1 -0
- package/dist/components/BrandIcons/index.d.ts +39 -0
- package/dist/components/ButtonRadix/Button.stories.d.ts +55 -0
- package/dist/components/ButtonRadix/Button.test.d.ts +1 -0
- package/dist/components/ButtonRadix/index.d.ts +14 -0
- package/dist/components/CardsGrid/CardsGrid.stories.d.ts +21 -0
- package/dist/components/CardsGrid/CardsGrid.test.d.ts +1 -0
- package/dist/components/CardsGrid/index.d.ts +58 -0
- package/dist/components/FeatureCard/FeatureCard.stories.d.ts +38 -0
- package/dist/components/FeatureCard/FeatureCard.test.d.ts +1 -0
- package/dist/components/FeatureCard/index.d.ts +44 -0
- package/dist/components/Header/Header.stories.d.ts +11 -0
- package/dist/components/Header/index.d.ts +17 -0
- package/dist/components/KPICard/KPICard.stories.d.ts +52 -0
- package/dist/components/KPICard/KPICard.test.d.ts +1 -0
- package/dist/components/KPICard/KPICardCustom.d.ts +63 -0
- package/dist/components/KPICard/KPICardCustom.stories.d.ts +19 -0
- package/dist/components/KPICard/index.d.ts +93 -0
- package/dist/components/KPIComparison/KPIComparison.stories.d.ts +44 -0
- package/dist/components/KPIComparison/KPIComparison.test.d.ts +1 -0
- package/dist/components/KPIComparison/KPIComparisonCustom.d.ts +52 -0
- package/dist/components/KPIComparison/KPIComparisonCustom.stories.d.ts +21 -0
- package/dist/components/KPIComparison/index.d.ts +43 -0
- package/dist/components/LanguageSwitcher/index.d.ts +8 -0
- package/dist/components/Loader/Loader.stories.d.ts +49 -0
- package/dist/components/Loader/Loader.test.d.ts +1 -0
- package/dist/components/Loader/index.d.ts +43 -0
- package/dist/components/OptionCard/OptionCard.stories.d.ts +20 -0
- package/dist/components/OptionCard/OptionCard.test.d.ts +1 -0
- package/dist/components/OptionCard/index.d.ts +56 -0
- package/dist/components/OrderCard/OrderCard.stories.d.ts +59 -0
- package/dist/components/OrderCard/OrderCard.test.d.ts +1 -0
- package/dist/components/OrderCard/OrderCardCustom.d.ts +69 -0
- package/dist/components/OrderCard/OrderCardCustom.stories.d.ts +19 -0
- package/dist/components/OrderCard/index.d.ts +82 -0
- package/dist/components/PaginationLib/PaginationLib.stories.d.ts +11 -0
- package/dist/components/PaginationLib/PaginationLib.test.d.ts +1 -0
- package/dist/components/PaginationLib/index.d.ts +9 -0
- package/dist/components/Switcher/Switcher.stories.d.ts +38 -0
- package/dist/components/Switcher/Switcher.test.d.ts +1 -0
- package/dist/components/Switcher/index.d.ts +36 -0
- package/dist/components/Toasts/Toasts.stories.d.ts +43 -0
- package/dist/components/Toasts/Toasts.test.d.ts +1 -0
- package/dist/components/Toasts/index.d.ts +36 -0
- package/dist/components/index.d.ts +14 -0
- package/dist/configs/LocaleProvider.d.ts +14 -0
- package/dist/configs/i18n.d.ts +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/lib/utils.d.ts +8 -0
- package/dist/setupTests.d.ts +1 -0
- package/dist/types/index.d.ts +39 -0
- package/package.json +96 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface KPICardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Título de la card
|
|
5
|
+
*/
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Valor principal a mostrar
|
|
9
|
+
*/
|
|
10
|
+
value: number | string;
|
|
11
|
+
/**
|
|
12
|
+
* Unidad del valor (%, x, etc.)
|
|
13
|
+
* @default "%"
|
|
14
|
+
*/
|
|
15
|
+
unit?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Valor total para mostrar fracción (ej: 3/17)
|
|
18
|
+
* Solo se usa si se proporciona
|
|
19
|
+
*/
|
|
20
|
+
total?: number;
|
|
21
|
+
/**
|
|
22
|
+
* Texto descriptivo
|
|
23
|
+
*/
|
|
24
|
+
description?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Datos de comparación KPI (opcional)
|
|
27
|
+
*/
|
|
28
|
+
comparison?: {
|
|
29
|
+
percentage: number;
|
|
30
|
+
trend: 'positive' | 'negative';
|
|
31
|
+
label?: string;
|
|
32
|
+
showWarning?: boolean;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Tag opcional
|
|
36
|
+
*/
|
|
37
|
+
tag?: {
|
|
38
|
+
label: string;
|
|
39
|
+
variant?: 'default' | 'red';
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Ícono personalizado
|
|
43
|
+
*/
|
|
44
|
+
icon?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Color del ícono
|
|
47
|
+
* @default "primary"
|
|
48
|
+
*/
|
|
49
|
+
iconColor?: 'primary' | 'error' | 'brand';
|
|
50
|
+
/**
|
|
51
|
+
* Texto adicional del body (para variante Text)
|
|
52
|
+
*/
|
|
53
|
+
bodyText?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Botón opcional
|
|
56
|
+
*/
|
|
57
|
+
button?: {
|
|
58
|
+
label: string;
|
|
59
|
+
onClick?: () => void;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Callback al hacer clic en la card
|
|
63
|
+
*/
|
|
64
|
+
onClick?: () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Clases CSS adicionales
|
|
67
|
+
*/
|
|
68
|
+
className?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Componente KPICard
|
|
72
|
+
*
|
|
73
|
+
* Card completa para mostrar KPIs con diferentes variantes:
|
|
74
|
+
* - Con comparación de tendencia
|
|
75
|
+
* - Con tags
|
|
76
|
+
* - Con descripción
|
|
77
|
+
* - Con botones
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```tsx
|
|
81
|
+
* <KPICard
|
|
82
|
+
* title="Active Users"
|
|
83
|
+
* value={3}
|
|
84
|
+
* unit="%"
|
|
85
|
+
* description="Descriptive text goes here"
|
|
86
|
+
* comparison={{ percentage: 1.0, trend: "positive" }}
|
|
87
|
+
* tag={{ label: "Monthly", variant: "default" }}
|
|
88
|
+
* />
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare const KPICard: React.ForwardRefExoticComponent<KPICardProps & React.RefAttributes<HTMLDivElement>>;
|
|
92
|
+
export { KPICardCustom } from './KPICardCustom';
|
|
93
|
+
export type { KPICardCustomProps } from './KPICardCustom';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./index').KPIComparisonProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
argTypes: {
|
|
11
|
+
percentage: {
|
|
12
|
+
control: "number";
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
trend: {
|
|
16
|
+
control: "select";
|
|
17
|
+
options: string[];
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
label: {
|
|
21
|
+
control: "text";
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
showWarning: {
|
|
25
|
+
control: "boolean";
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export default meta;
|
|
31
|
+
type Story = StoryObj<typeof meta>;
|
|
32
|
+
export declare const Positive: Story;
|
|
33
|
+
export declare const Negative: Story;
|
|
34
|
+
export declare const PositiveWithWarning: Story;
|
|
35
|
+
export declare const NegativeWithWarning: Story;
|
|
36
|
+
export declare const CustomLabel: Story;
|
|
37
|
+
export declare const SmallValue: Story;
|
|
38
|
+
export declare const LargeValue: Story;
|
|
39
|
+
export declare const AllStates: Story;
|
|
40
|
+
export declare const InCardContext: Story;
|
|
41
|
+
export declare const MultipleComparisons: Story;
|
|
42
|
+
export declare const DifferentLabels: Story;
|
|
43
|
+
export declare const ZeroValue: Story;
|
|
44
|
+
export declare const PreciseDecimals: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface KPIComparisonCustomProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Ícono izquierdo personalizado
|
|
5
|
+
*/
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Texto principal (ej: porcentaje, valor, etc.)
|
|
9
|
+
*/
|
|
10
|
+
primaryText: string;
|
|
11
|
+
/**
|
|
12
|
+
* Color del texto principal
|
|
13
|
+
* @default "#312e4d"
|
|
14
|
+
*/
|
|
15
|
+
primaryTextColor?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Texto secundario/label
|
|
18
|
+
*/
|
|
19
|
+
secondaryText?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Color del texto secundario
|
|
22
|
+
* @default "#575385"
|
|
23
|
+
*/
|
|
24
|
+
secondaryTextColor?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Ícono derecho opcional (ej: warning)
|
|
27
|
+
*/
|
|
28
|
+
rightIcon?: React.ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* Clases CSS adicionales
|
|
31
|
+
*/
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Componente KPIComparisonCustom
|
|
36
|
+
*
|
|
37
|
+
* Versión completamente personalizable de KPIComparison donde puedes
|
|
38
|
+
* especificar cualquier ícono, texto y colores sin limitaciones de
|
|
39
|
+
* tendencias predefinidas.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* <KPIComparisonCustom
|
|
44
|
+
* icon={<CustomIcon />}
|
|
45
|
+
* primaryText="1.2M"
|
|
46
|
+
* primaryTextColor="#00995a"
|
|
47
|
+
* secondaryText="total users"
|
|
48
|
+
* rightIcon={<InfoIcon />}
|
|
49
|
+
* />
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare const KPIComparisonCustom: React.ForwardRefExoticComponent<KPIComparisonCustomProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./KPIComparisonCustom').KPIComparisonCustomProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const PositiveTrend: Story;
|
|
14
|
+
export declare const NegativeTrend: Story;
|
|
15
|
+
export declare const WithAlert: Story;
|
|
16
|
+
export declare const CustomValues: Story;
|
|
17
|
+
export declare const WithCounter: Story;
|
|
18
|
+
export declare const MinimalLayout: Story;
|
|
19
|
+
export declare const AllVariants: Story;
|
|
20
|
+
export declare const InCardContext: Story;
|
|
21
|
+
export declare const MultipleMetrics: Story;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface KPIComparisonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Porcentaje de cambio (puede ser positivo o negativo)
|
|
5
|
+
* @example 1.0, -10.5
|
|
6
|
+
*/
|
|
7
|
+
percentage: number;
|
|
8
|
+
/**
|
|
9
|
+
* Tendencia del KPI
|
|
10
|
+
* - 'positive': Verde con flecha arriba
|
|
11
|
+
* - 'negative': Rojo con flecha abajo
|
|
12
|
+
*/
|
|
13
|
+
trend: 'positive' | 'negative';
|
|
14
|
+
/**
|
|
15
|
+
* Texto descriptivo al lado del porcentaje
|
|
16
|
+
* @default "KPI comparison"
|
|
17
|
+
*/
|
|
18
|
+
label?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Mostrar ícono de alerta/warning
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
showWarning?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Clases CSS adicionales
|
|
26
|
+
*/
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Componente KPIComparison
|
|
31
|
+
*
|
|
32
|
+
* Muestra una comparación de KPI con tendencia (positiva o negativa)
|
|
33
|
+
* y un ícono de alerta opcional.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <KPIComparison percentage={1.0} trend="positive" label="KPI comparison" />
|
|
38
|
+
* <KPIComparison percentage={-10} trend="negative" showWarning={true} />
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const KPIComparison: React.ForwardRefExoticComponent<KPIComparisonProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
export { KPIComparisonCustom } from './KPIComparisonCustom';
|
|
43
|
+
export type { KPIComparisonCustomProps } from './KPIComparisonCustom';
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./index').LoaderProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
argTypes: {
|
|
11
|
+
type: {
|
|
12
|
+
control: "select";
|
|
13
|
+
options: string[];
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
show: {
|
|
17
|
+
control: "boolean";
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
variant: {
|
|
21
|
+
control: "select";
|
|
22
|
+
options: string[];
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
size: {
|
|
26
|
+
control: "number";
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
width: {
|
|
30
|
+
control: "number";
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export default meta;
|
|
36
|
+
type Story = StoryObj<typeof meta>;
|
|
37
|
+
export declare const SpinnerActive: Story;
|
|
38
|
+
export declare const SpinnerDisabled: Story;
|
|
39
|
+
export declare const LinearActive: Story;
|
|
40
|
+
export declare const LinearDisabled: Story;
|
|
41
|
+
export declare const SpinnerHidden: Story;
|
|
42
|
+
export declare const AllTypes: Story;
|
|
43
|
+
export declare const SpinnerSizes: Story;
|
|
44
|
+
export declare const LinearWidths: Story;
|
|
45
|
+
export declare const Interactive: Story;
|
|
46
|
+
export declare const LoadingContext: Story;
|
|
47
|
+
export declare const OverlaySpinner: Story;
|
|
48
|
+
export declare const FormProgress: Story;
|
|
49
|
+
export declare const MultipleLoaders: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface LoaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Tipo de loader
|
|
5
|
+
* @default "spinner"
|
|
6
|
+
*/
|
|
7
|
+
type?: 'spinner' | 'linear';
|
|
8
|
+
/**
|
|
9
|
+
* Controla la visibilidad del loader
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
show?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Variante del loader (active o disabled)
|
|
15
|
+
* @default "active"
|
|
16
|
+
*/
|
|
17
|
+
variant?: 'active' | 'disabled';
|
|
18
|
+
/**
|
|
19
|
+
* Tamaño del spinner (solo para type="spinner")
|
|
20
|
+
* @default 48
|
|
21
|
+
*/
|
|
22
|
+
size?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Ancho de la barra (solo para type="linear")
|
|
25
|
+
* @default 230
|
|
26
|
+
*/
|
|
27
|
+
width?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Clases CSS adicionales
|
|
30
|
+
*/
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Componente Loader - Indicadores de carga
|
|
35
|
+
*
|
|
36
|
+
* Muestra indicadores de carga con dos tipos:
|
|
37
|
+
* - spinner: Loader circular que gira
|
|
38
|
+
* - linear: Barra de progreso horizontal animada
|
|
39
|
+
*
|
|
40
|
+
* Incluye parámetro show para controlar visibilidad.
|
|
41
|
+
*/
|
|
42
|
+
declare const Loader: React.ForwardRefExoticComponent<LoaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
43
|
+
export { Loader };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./index').OptionCardProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Unselected: Story;
|
|
14
|
+
export declare const Selected: Story;
|
|
15
|
+
export declare const Disabled: Story;
|
|
16
|
+
export declare const RoleSelection: Story;
|
|
17
|
+
export declare const SubscriptionPlans: Story;
|
|
18
|
+
export declare const WithDisabledOptions: Story;
|
|
19
|
+
export declare const SettingsConfiguration: Story;
|
|
20
|
+
export declare const AllStates: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface OptionCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
3
|
+
/**
|
|
4
|
+
* Título/Nombre de la opción
|
|
5
|
+
*/
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Descripción de la opción
|
|
9
|
+
*/
|
|
10
|
+
description: string;
|
|
11
|
+
/**
|
|
12
|
+
* Valor asociado (útil para radio groups)
|
|
13
|
+
*/
|
|
14
|
+
value: string;
|
|
15
|
+
/**
|
|
16
|
+
* Si está seleccionada
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
selected?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Callback cuando se selecciona
|
|
22
|
+
*/
|
|
23
|
+
onSelect?: (value: string) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Si está deshabilitada
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Clases CSS adicionales
|
|
31
|
+
*/
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Componente OptionCard
|
|
36
|
+
*
|
|
37
|
+
* Card seleccionable con radio button integrado.
|
|
38
|
+
* Ideal para selección de opciones, roles, planes, etc.
|
|
39
|
+
*
|
|
40
|
+
* Estados:
|
|
41
|
+
* - Default: Border gris, radio sin seleccionar
|
|
42
|
+
* - Selected: Border verde, radio seleccionado
|
|
43
|
+
* - Disabled: Opacidad reducida, no interactivo
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <OptionCard
|
|
48
|
+
* title="Admin"
|
|
49
|
+
* description="Full access to all features and administrative settings"
|
|
50
|
+
* value="admin"
|
|
51
|
+
* selected={selectedRole === 'admin'}
|
|
52
|
+
* onSelect={(value) => setSelectedRole(value)}
|
|
53
|
+
* />
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const OptionCard: React.ForwardRefExoticComponent<OptionCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./index').OrderCardProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
argTypes: {
|
|
11
|
+
state: {
|
|
12
|
+
control: "select";
|
|
13
|
+
options: string[];
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
count: {
|
|
17
|
+
control: "number";
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
countLabel: {
|
|
21
|
+
control: "text";
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
grossSales: {
|
|
25
|
+
control: "number";
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
netSales: {
|
|
29
|
+
control: "number";
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
hasDelays: {
|
|
33
|
+
control: "boolean";
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
currencySymbol: {
|
|
37
|
+
control: "text";
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
export default meta;
|
|
43
|
+
type Story = StoryObj<typeof meta>;
|
|
44
|
+
export declare const Received: Story;
|
|
45
|
+
export declare const Picking: Story;
|
|
46
|
+
export declare const Dispatched: Story;
|
|
47
|
+
export declare const Delivered: Story;
|
|
48
|
+
export declare const WithoutDelays: Story;
|
|
49
|
+
export declare const WithDelayCount: Story;
|
|
50
|
+
export declare const WithoutFilter: Story;
|
|
51
|
+
export declare const EuroCurrency: Story;
|
|
52
|
+
export declare const AllStates: Story;
|
|
53
|
+
export declare const OrdersDashboard: Story;
|
|
54
|
+
export declare const SmallValues: Story;
|
|
55
|
+
export declare const LargeValues: Story;
|
|
56
|
+
export declare const InteractiveCallbacks: Story;
|
|
57
|
+
export declare const SalesComparison: Story;
|
|
58
|
+
export declare const DifferentCountLabels: Story;
|
|
59
|
+
export declare const CustomIcon: Story;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface OrderCardCustomProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Título personalizado de la card
|
|
5
|
+
*/
|
|
6
|
+
title: string;
|
|
7
|
+
/**
|
|
8
|
+
* Cantidad principal
|
|
9
|
+
*/
|
|
10
|
+
count: number | string;
|
|
11
|
+
/**
|
|
12
|
+
* Etiqueta de la cantidad
|
|
13
|
+
* @default "orders"
|
|
14
|
+
*/
|
|
15
|
+
countLabel?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Línea 1 de información (ej: "Gross Sales: $100,000.00")
|
|
18
|
+
*/
|
|
19
|
+
infoLine1?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Línea 2 de información (ej: "Net Sales: $100,000.00")
|
|
22
|
+
*/
|
|
23
|
+
infoLine2?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Ícono personalizado (React node)
|
|
26
|
+
*/
|
|
27
|
+
icon: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Badge personalizado (opcional)
|
|
30
|
+
*/
|
|
31
|
+
badge?: {
|
|
32
|
+
label: string;
|
|
33
|
+
variant?: 'default' | 'red' | 'green' | 'blue';
|
|
34
|
+
onClick?: () => void;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Botón personalizado (opcional)
|
|
38
|
+
*/
|
|
39
|
+
button?: {
|
|
40
|
+
label: string;
|
|
41
|
+
onClick?: () => void;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Clases CSS adicionales
|
|
45
|
+
*/
|
|
46
|
+
className?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Componente OrderCardCustom
|
|
50
|
+
*
|
|
51
|
+
* Versión personalizable de OrderCard donde puedes especificar
|
|
52
|
+
* cualquier título, ícono, información y badges sin estar limitado
|
|
53
|
+
* a estados predefinidos.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```tsx
|
|
57
|
+
* <OrderCardCustom
|
|
58
|
+
* title="Processing"
|
|
59
|
+
* count={42}
|
|
60
|
+
* countLabel="items"
|
|
61
|
+
* infoLine1="Total: $50,000.00"
|
|
62
|
+
* infoLine2="Pending: 12 items"
|
|
63
|
+
* icon={<CustomIcon />}
|
|
64
|
+
* badge={{ label: "Urgent", variant: "red" }}
|
|
65
|
+
* button={{ label: "View", onClick: () => {} }}
|
|
66
|
+
* />
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare const OrderCardCustom: React.ForwardRefExoticComponent<OrderCardCustomProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StoryObj } from '@storybook/react';
|
|
2
|
+
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: import('react').ForwardRefExoticComponent<import('./OrderCardCustom').OrderCardCustomProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
};
|
|
11
|
+
export default meta;
|
|
12
|
+
type Story = StoryObj<typeof meta>;
|
|
13
|
+
export declare const Basic: Story;
|
|
14
|
+
export declare const WithUrgentBadge: Story;
|
|
15
|
+
export declare const WithSuccessBadge: Story;
|
|
16
|
+
export declare const WithInfoBadge: Story;
|
|
17
|
+
export declare const SimpleLayout: Story;
|
|
18
|
+
export declare const AllVariants: Story;
|
|
19
|
+
export declare const FullyCustomized: Story;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface OrderCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* Estado de la orden (cada uno con su ícono)
|
|
5
|
+
*/
|
|
6
|
+
state: 'received' | 'picking' | 'dispatched' | 'delivered';
|
|
7
|
+
/**
|
|
8
|
+
* Cantidad de órdenes/rutas
|
|
9
|
+
*/
|
|
10
|
+
count: number;
|
|
11
|
+
/**
|
|
12
|
+
* Etiqueta de la cantidad
|
|
13
|
+
* @default "orders"
|
|
14
|
+
*/
|
|
15
|
+
countLabel?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Ventas brutas
|
|
18
|
+
*/
|
|
19
|
+
grossSales: number;
|
|
20
|
+
/**
|
|
21
|
+
* Ventas netas
|
|
22
|
+
*/
|
|
23
|
+
netSales: number;
|
|
24
|
+
/**
|
|
25
|
+
* Mostrar badge de delays
|
|
26
|
+
* @default false
|
|
27
|
+
*/
|
|
28
|
+
hasDelays?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Número de delays (opcional)
|
|
31
|
+
*/
|
|
32
|
+
delayCount?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Callback al hacer clic en el badge de Delays
|
|
35
|
+
*/
|
|
36
|
+
onDelaysClick?: () => void;
|
|
37
|
+
/**
|
|
38
|
+
* Callback al hacer clic en el botón Filter
|
|
39
|
+
*/
|
|
40
|
+
onFilterClick?: () => void;
|
|
41
|
+
/**
|
|
42
|
+
* Ícono personalizado (opcional)
|
|
43
|
+
*/
|
|
44
|
+
icon?: React.ReactNode;
|
|
45
|
+
/**
|
|
46
|
+
* Símbolo de moneda
|
|
47
|
+
* @default "$"
|
|
48
|
+
*/
|
|
49
|
+
currencySymbol?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Clases CSS adicionales
|
|
52
|
+
*/
|
|
53
|
+
className?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Componente OrderCard
|
|
57
|
+
*
|
|
58
|
+
* Card para mostrar el estado de órdenes con métricas de ventas,
|
|
59
|
+
* badges de delays opcionales, y botón de filtro.
|
|
60
|
+
*
|
|
61
|
+
* Estados disponibles:
|
|
62
|
+
* - received: Órdenes recibidas
|
|
63
|
+
* - picking: Órdenes en preparación
|
|
64
|
+
* - dispatched: Órdenes despachadas
|
|
65
|
+
* - delivered: Órdenes entregadas
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* <OrderCard
|
|
70
|
+
* state="received"
|
|
71
|
+
* count={24}
|
|
72
|
+
* countLabel="orders"
|
|
73
|
+
* grossSales={100000.00}
|
|
74
|
+
* netSales={100000.00}
|
|
75
|
+
* hasDelays={true}
|
|
76
|
+
* onFilterClick={() => console.log('Filter')}
|
|
77
|
+
* />
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare const OrderCard: React.ForwardRefExoticComponent<OrderCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
81
|
+
export { OrderCardCustom } from './OrderCardCustom';
|
|
82
|
+
export type { OrderCardCustomProps } from './OrderCardCustom';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { PaginationLib } from './';
|
|
3
|
+
|
|
4
|
+
declare const meta: Meta<typeof PaginationLib>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof PaginationLib>;
|
|
7
|
+
export declare const Default: Story;
|
|
8
|
+
export declare const MiddlePage: Story;
|
|
9
|
+
export declare const LastPage: Story;
|
|
10
|
+
export declare const ManyPages: Story;
|
|
11
|
+
export declare const FewPages: Story;
|