@zauru-sdk/components 6.2.28 → 6.3.0
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/.ladle/components.tsx +30 -0
- package/.ladle/config.mjs +9 -0
- package/.ladle/vite.config.ts +23 -0
- package/CHANGELOG.md +14 -0
- package/PLAYGROUND.md +59 -0
- package/dist/Alerts/StaticAlert.d.ts +1 -1
- package/dist/Buttons/ActionList.d.ts +17 -0
- package/dist/Buttons/Button.d.ts +1 -1
- package/dist/Buttons/index.d.ts +1 -0
- package/dist/Containers/ButtonSectionContainer.d.ts +2 -0
- package/dist/Containers/Container.d.ts +3 -1
- package/dist/DynamicTable/GenericDynamicTable.d.ts +2 -0
- package/dist/Form/FileUpload/index.d.ts +1 -0
- package/dist/Form/FormLayout/index.d.ts +11 -0
- package/dist/Form/RadioButtonGroup/index.d.ts +1 -0
- package/dist/Form/SelectField/index.d.ts +4 -1
- package/dist/Form/index.d.ts +2 -0
- package/dist/Labels/SearchFiltersSummary.d.ts +12 -0
- package/dist/Labels/index.d.ts +1 -0
- package/dist/Layouts/errorLayout/index.d.ts +4 -1
- package/dist/NavBar/NavBar.d.ts +1 -1
- package/dist/NavBar/NavBar.types.d.ts +1 -0
- package/dist/Table/ZauruTable.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts +7 -0
- package/dist/Tooltip/index.d.ts +1 -0
- package/dist/WithTooltip/WithTooltip.d.ts +7 -0
- package/dist/WithTooltip/index.d.ts +1 -0
- package/dist/esm/Alerts/StaticAlert.js +6 -0
- package/dist/esm/BlockUI/BlockUI.js +1 -1
- package/dist/esm/Buttons/ActionList.js +8 -0
- package/dist/esm/Buttons/Button.js +5 -5
- package/dist/esm/Buttons/index.js +1 -0
- package/dist/esm/Containers/ButtonSectionContainer.js +2 -2
- package/dist/esm/Containers/Container.js +7 -2
- package/dist/esm/Containers/OutletContainer.js +1 -1
- package/dist/esm/DynamicTable/GenericDynamicTable.js +6 -3
- package/dist/esm/Footer/Footer.js +1 -1
- package/dist/esm/Form/FileUpload/index.js +2 -2
- package/dist/esm/Form/FormLayout/index.js +7 -0
- package/dist/esm/Form/RadioButtonGroup/index.js +1 -0
- package/dist/esm/Form/SelectField/index.js +16 -6
- package/dist/esm/Form/TextField/index.js +13 -3
- package/dist/esm/Form/index.js +2 -0
- package/dist/esm/Labels/SearchFiltersSummary.js +7 -0
- package/dist/esm/Labels/index.js +1 -0
- package/dist/esm/Layouts/errorLayout/index.js +9 -3
- package/dist/esm/Modal/ItemModal.js +7 -4
- package/dist/esm/NavBar/NavBar.js +8 -3
- package/dist/esm/Table/ZauruTable.js +67 -8
- package/dist/esm/Tooltip/Tooltip.js +14 -0
- package/dist/esm/Tooltip/index.js +1 -0
- package/dist/esm/WithTooltip/WithTooltip.js +5 -0
- package/dist/esm/WithTooltip/index.js +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/index.d.ts +2 -0
- package/package.json +10 -3
- package/postcss.config.cjs +6 -0
- package/src/Alerts/StaticAlert.tsx +11 -1
- package/src/BlockUI/BlockUI.tsx +1 -1
- package/src/Buttons/ActionList.tsx +56 -0
- package/src/Buttons/Button.tsx +15 -9
- package/src/Buttons/index.ts +1 -0
- package/src/Containers/ButtonSectionContainer.tsx +4 -2
- package/src/Containers/Container.tsx +43 -13
- package/src/Containers/OutletContainer.tsx +1 -1
- package/src/DynamicTable/GenericDynamicTable.tsx +26 -9
- package/src/Footer/Footer.tsx +2 -1
- package/src/Form/FileUpload/index.tsx +3 -0
- package/src/Form/FormLayout/index.tsx +35 -0
- package/src/Form/RadioButtonGroup/index.tsx +4 -0
- package/src/Form/SelectField/index.tsx +44 -23
- package/src/Form/TextField/index.tsx +14 -1
- package/src/Form/index.ts +2 -0
- package/src/Labels/SearchFiltersSummary.tsx +34 -0
- package/src/Labels/index.tsx +1 -0
- package/src/Layouts/errorLayout/index.tsx +11 -2
- package/src/Modal/ItemModal.tsx +18 -5
- package/src/NavBar/NavBar.tsx +20 -2
- package/src/NavBar/NavBar.types.ts +1 -0
- package/src/Table/ZauruTable.tsx +83 -7
- package/src/Tooltip/Tooltip.tsx +42 -0
- package/src/Tooltip/index.ts +1 -0
- package/src/WithTooltip/WithTooltip.tsx +22 -0
- package/src/WithTooltip/index.tsx +1 -0
- package/src/index.ts +2 -0
- package/stories/Alerts.stories.tsx +17 -0
- package/stories/Button.stories.tsx +52 -0
- package/stories/Card.stories.tsx +7 -0
- package/stories/Container.stories.tsx +24 -0
- package/stories/Form.stories.tsx +58 -0
- package/stories/Labels.stories.tsx +17 -0
- package/stories/Modal.stories.tsx +21 -0
- package/stories/Tab.stories.tsx +10 -0
- package/stories/Table.stories.tsx +37 -0
- package/stories/Titles.stories.tsx +11 -0
- package/stories/Tooltip.stories.tsx +15 -0
- package/tailwind.config.cjs +12 -0
- package/tsconfig.json +1 -0
package/src/Table/ZauruTable.tsx
CHANGED
|
@@ -7,19 +7,70 @@ import type {
|
|
|
7
7
|
} from "react-data-table-component";
|
|
8
8
|
import { createTheme } from "react-data-table-component";
|
|
9
9
|
import { SearchSVG } from "@zauru-sdk/icons";
|
|
10
|
+
import { ExpandableRowsComponent } from "react-data-table-component/dist/DataTable/types.js";
|
|
10
11
|
import * as ReactDataTableComponent from "react-data-table-component";
|
|
11
12
|
const DataTable = ReactDataTableComponent.default as any;
|
|
12
13
|
|
|
14
|
+
const headerTextWrapStyle = {
|
|
15
|
+
whiteSpace: "normal",
|
|
16
|
+
overflow: "visible",
|
|
17
|
+
textOverflow: "clip",
|
|
18
|
+
overflowWrap: "break-word",
|
|
19
|
+
wordBreak: "break-word",
|
|
20
|
+
lineHeight: "1.25",
|
|
21
|
+
} as const;
|
|
22
|
+
|
|
13
23
|
const customStyles: TableStyles = {
|
|
24
|
+
table: {
|
|
25
|
+
style: {
|
|
26
|
+
minWidth: 0,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
tableWrapper: {
|
|
30
|
+
style: {
|
|
31
|
+
display: "block",
|
|
32
|
+
width: "100%",
|
|
33
|
+
maxWidth: "100%",
|
|
34
|
+
minWidth: 0,
|
|
35
|
+
overflowX: "auto",
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
responsiveWrapper: {
|
|
39
|
+
style: {
|
|
40
|
+
width: "100%",
|
|
41
|
+
maxWidth: "100%",
|
|
42
|
+
minWidth: 0,
|
|
43
|
+
overflowX: "auto",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
headRow: {
|
|
47
|
+
style: {
|
|
48
|
+
minHeight: "40px",
|
|
49
|
+
height: "auto",
|
|
50
|
+
alignItems: "stretch",
|
|
51
|
+
},
|
|
52
|
+
denseStyle: {
|
|
53
|
+
minHeight: "36px",
|
|
54
|
+
height: "auto",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
14
57
|
headCells: {
|
|
15
58
|
style: {
|
|
16
59
|
color: "#202124",
|
|
17
60
|
fontSize: "14px",
|
|
18
61
|
justifyContent: "left",
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
62
|
+
alignItems: "flex-start",
|
|
63
|
+
paddingTop: "8px",
|
|
64
|
+
paddingBottom: "8px",
|
|
65
|
+
...headerTextWrapStyle,
|
|
66
|
+
".rdt_TableCol_Sortable": {
|
|
67
|
+
height: "auto",
|
|
68
|
+
minHeight: "100%",
|
|
69
|
+
overflow: "visible",
|
|
70
|
+
whiteSpace: "normal",
|
|
71
|
+
alignItems: "flex-start",
|
|
72
|
+
},
|
|
73
|
+
".rdt_TableCol_Sortable > div": headerTextWrapStyle,
|
|
23
74
|
},
|
|
24
75
|
},
|
|
25
76
|
cells: {
|
|
@@ -28,6 +79,16 @@ const customStyles: TableStyles = {
|
|
|
28
79
|
wordBreak: "break-word",
|
|
29
80
|
},
|
|
30
81
|
},
|
|
82
|
+
expanderRow: {
|
|
83
|
+
style: {
|
|
84
|
+
minWidth: 0,
|
|
85
|
+
width: "100%",
|
|
86
|
+
maxWidth: "100%",
|
|
87
|
+
overflowX: "auto",
|
|
88
|
+
display: "grid",
|
|
89
|
+
gridTemplateColumns: "minmax(0, 1fr)",
|
|
90
|
+
},
|
|
91
|
+
},
|
|
31
92
|
rows: {
|
|
32
93
|
highlightOnHoverStyle: {
|
|
33
94
|
backgroundColor: "rgb(230, 244, 244)",
|
|
@@ -106,6 +167,10 @@ type Props = TableProps<any> & {
|
|
|
106
167
|
search?: {
|
|
107
168
|
placeholderSearch?: string;
|
|
108
169
|
};
|
|
170
|
+
expandable?: {
|
|
171
|
+
expandableRowExpanded?: (row: any) => boolean;
|
|
172
|
+
expandableRowsComponent?: ExpandableRowsComponent<any>;
|
|
173
|
+
};
|
|
109
174
|
theme?: "solarized" | "subTable";
|
|
110
175
|
className?: string;
|
|
111
176
|
};
|
|
@@ -119,6 +184,7 @@ export const ZauruTable = (props: Props) => {
|
|
|
119
184
|
loading = false,
|
|
120
185
|
pagination,
|
|
121
186
|
search,
|
|
187
|
+
expandable,
|
|
122
188
|
theme,
|
|
123
189
|
className,
|
|
124
190
|
offlineSearch = [],
|
|
@@ -225,7 +291,8 @@ export const ZauruTable = (props: Props) => {
|
|
|
225
291
|
const subHeaderComponent = loadSubHeader ? subHeaderComponentMemo : undefined;
|
|
226
292
|
|
|
227
293
|
return (
|
|
228
|
-
<
|
|
294
|
+
<div className="w-full min-w-0 max-w-full overflow-x-auto">
|
|
295
|
+
<DataTable
|
|
229
296
|
className={className}
|
|
230
297
|
subHeaderWrap
|
|
231
298
|
theme={theme ?? "solarized"}
|
|
@@ -242,6 +309,14 @@ export const ZauruTable = (props: Props) => {
|
|
|
242
309
|
persistTableHead
|
|
243
310
|
responsive
|
|
244
311
|
noHeader
|
|
312
|
+
expandableRows={!!expandable}
|
|
313
|
+
expandOnRowClicked={!!expandable}
|
|
314
|
+
expandableRowExpanded={
|
|
315
|
+
expandable ? expandable.expandableRowExpanded : undefined
|
|
316
|
+
}
|
|
317
|
+
expandableRowsComponent={
|
|
318
|
+
expandable ? expandable.expandableRowsComponent : undefined
|
|
319
|
+
}
|
|
245
320
|
subHeader={loadSubHeader}
|
|
246
321
|
subHeaderComponent={subHeaderComponent}
|
|
247
322
|
paginationServer={!!pagination}
|
|
@@ -254,7 +329,8 @@ export const ZauruTable = (props: Props) => {
|
|
|
254
329
|
? pagination.rowsPerPageOptions
|
|
255
330
|
: [10, 50, 100]
|
|
256
331
|
}
|
|
257
|
-
|
|
258
|
-
|
|
332
|
+
{...others}
|
|
333
|
+
/>
|
|
334
|
+
</div>
|
|
259
335
|
);
|
|
260
336
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
text: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const Tooltip = ({ children, text }: Props) => {
|
|
11
|
+
const [show, setShow] = useState(false);
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<div className="relative inline-block">
|
|
15
|
+
<div
|
|
16
|
+
onMouseEnter={() => setShow(true)}
|
|
17
|
+
onMouseLeave={() => setShow(false)}
|
|
18
|
+
>
|
|
19
|
+
{children}
|
|
20
|
+
</div>
|
|
21
|
+
{show && (
|
|
22
|
+
<div
|
|
23
|
+
className="absolute z-10 bg-gray-700 text-white px-2 py-1 rounded-md bottom-full left-1/2 transform -translate-x-1/2"
|
|
24
|
+
style={{ whiteSpace: "nowrap", height: "2rem" }}
|
|
25
|
+
>
|
|
26
|
+
{text}
|
|
27
|
+
<div
|
|
28
|
+
className="absolute top-full left-1/2 transform -translate-x-1/2"
|
|
29
|
+
style={{
|
|
30
|
+
width: "0",
|
|
31
|
+
height: "0",
|
|
32
|
+
borderTop: "6px solid transparent",
|
|
33
|
+
borderLeft: "6px solid transparent",
|
|
34
|
+
borderRight: "6px solid transparent",
|
|
35
|
+
borderBottom: "6px solid gray",
|
|
36
|
+
}}
|
|
37
|
+
></div>
|
|
38
|
+
</div>
|
|
39
|
+
)}
|
|
40
|
+
</div>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Tooltip.js";
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
type Props = {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
text: string;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export const WithTooltip = (props: Props) => {
|
|
9
|
+
const { children, text } = props;
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<div className="group relative inline-block">
|
|
13
|
+
{children}
|
|
14
|
+
<div className="pointer-events-none absolute left-1/2 -translate-x-1/2 bottom-full mb-2 opacity-0 transition-opacity duration-300 group-hover:opacity-100">
|
|
15
|
+
<div className="relative bg-black text-white text-sm rounded py-1 px-2 text-wrap w-40">
|
|
16
|
+
{text}
|
|
17
|
+
<div className="absolute top-full left-1/2 -translate-x-1/2 border-4 border-transparent border-t-black"></div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./WithTooltip.js";
|
package/src/index.ts
CHANGED
|
@@ -19,6 +19,8 @@ export * from "./Tab/index.js";
|
|
|
19
19
|
export * from "./Table/index.js";
|
|
20
20
|
export * from "./TaskList/index.js";
|
|
21
21
|
export * from "./Titles/index.js";
|
|
22
|
+
export * from "./Tooltip/index.js";
|
|
23
|
+
export * from "./WithTooltip/index.js";
|
|
22
24
|
export * from "./Wizards/index.js";
|
|
23
25
|
export * from "./Zendesk/index.js";
|
|
24
26
|
export * from "./HOC/ValidateEmployeeAccess/index.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { StaticAlert } from "../src/Alerts/StaticAlert.js";
|
|
2
|
+
|
|
3
|
+
export const Info = () => (
|
|
4
|
+
<StaticAlert title="Información" description="Mensaje informativo." type="info" />
|
|
5
|
+
);
|
|
6
|
+
|
|
7
|
+
export const Success = () => (
|
|
8
|
+
<StaticAlert title="Listo" description="La operación se completó." type="success" />
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export const Warning = () => (
|
|
12
|
+
<StaticAlert
|
|
13
|
+
title="Atención"
|
|
14
|
+
description="Hay datos pendientes de revisar."
|
|
15
|
+
type="warning"
|
|
16
|
+
/>
|
|
17
|
+
);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ActionList } from "../src/Buttons/ActionList.js";
|
|
2
|
+
import { Button } from "../src/Buttons/Button.js";
|
|
3
|
+
|
|
4
|
+
export const Default = () => <Button title="Guardar" />;
|
|
5
|
+
|
|
6
|
+
export const Loading = () => (
|
|
7
|
+
<Button title="Guardar" loading loadingText="Guardando..." />
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export const Disabled = () => <Button title="Guardar" disabled />;
|
|
11
|
+
|
|
12
|
+
export const Colors = () => (
|
|
13
|
+
<div className="flex flex-wrap gap-2">
|
|
14
|
+
<Button title="Indigo" selectedColor="indigo" />
|
|
15
|
+
<Button title="Green" selectedColor="green" />
|
|
16
|
+
<Button title="Red" selectedColor="red" />
|
|
17
|
+
<Button title="Yellow" selectedColor="yellow" />
|
|
18
|
+
<Button title="Gray" selectedColor="gray" />
|
|
19
|
+
</div>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const Dropdown = () => (
|
|
23
|
+
<Button
|
|
24
|
+
title="Acciones"
|
|
25
|
+
dropdownTitle="Acciones"
|
|
26
|
+
dropdownOptions={[
|
|
27
|
+
{ label: "Exportar", value: "export", onClick: () => undefined },
|
|
28
|
+
{ label: "Imprimir", value: "print", onClick: () => undefined },
|
|
29
|
+
]}
|
|
30
|
+
/>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
export const Actions = () => (
|
|
34
|
+
<ActionList
|
|
35
|
+
items={[
|
|
36
|
+
{
|
|
37
|
+
key: "pdf",
|
|
38
|
+
badge: "PDF",
|
|
39
|
+
badgeClassName: "bg-red-50 text-red-700",
|
|
40
|
+
label: "Imprimir reporte",
|
|
41
|
+
onClick: () => undefined,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: "xls",
|
|
45
|
+
badge: "XLS",
|
|
46
|
+
badgeClassName: "bg-green-50 text-green-700",
|
|
47
|
+
label: "Exportar Excel",
|
|
48
|
+
onClick: () => undefined,
|
|
49
|
+
},
|
|
50
|
+
]}
|
|
51
|
+
/>
|
|
52
|
+
);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Container } from "../src/Containers/Container.js";
|
|
2
|
+
import { Button } from "../src/Buttons/Button.js";
|
|
3
|
+
|
|
4
|
+
export const Default = () => (
|
|
5
|
+
<Container title="Contenedor" description="Descripción de la sección.">
|
|
6
|
+
<p>Contenido de ejemplo.</p>
|
|
7
|
+
</Container>
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
export const WithRightContent = () => (
|
|
11
|
+
<Container
|
|
12
|
+
title="Con acciones"
|
|
13
|
+
description="El encabezado se adapta en móvil."
|
|
14
|
+
rightContent={<Button title="Nuevo" />}
|
|
15
|
+
>
|
|
16
|
+
<p>Cuerpo.</p>
|
|
17
|
+
</Container>
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
export const Collapsible = () => (
|
|
21
|
+
<Container title="Colapsable" collapsible defaultOpen>
|
|
22
|
+
<p>Se puede contraer con el summary.</p>
|
|
23
|
+
</Container>
|
|
24
|
+
);
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { TextField } from "../src/Form/TextField/index.js";
|
|
2
|
+
import { SelectField } from "../src/Form/SelectField/index.js";
|
|
3
|
+
import { CheckBox } from "../src/Form/Checkbox/index.js";
|
|
4
|
+
import { FormDatePicker } from "../src/Form/DatePicker/index.js";
|
|
5
|
+
import { FileUploadField } from "../src/Form/FileUpload/index.js";
|
|
6
|
+
import { FormLayout } from "../src/Form/FormLayout/index.js";
|
|
7
|
+
import { RadioButtonGroup } from "../src/Form/RadioButtonGroup/index.js";
|
|
8
|
+
import { Button } from "../src/Buttons/Button.js";
|
|
9
|
+
|
|
10
|
+
export const Text = () => (
|
|
11
|
+
<TextField name="nombre" title="Nombre" hint="Campo de texto" required />
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
export const Select = () => (
|
|
15
|
+
<SelectField
|
|
16
|
+
name="agencia"
|
|
17
|
+
title="Agencia"
|
|
18
|
+
options={[
|
|
19
|
+
{ label: "Central", value: "1" },
|
|
20
|
+
{ label: "Norte", value: "2", disabled: true, disabledLabel: "cerrada" },
|
|
21
|
+
{ label: "Sur", value: "3" },
|
|
22
|
+
]}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
export const Checkbox = () => (
|
|
27
|
+
<CheckBox name="acepta" label="Acepto los términos" required />
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export const DatePicker = () => (
|
|
31
|
+
<FormDatePicker name="fecha" title="Fecha" />
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const FileUpload = () => (
|
|
35
|
+
<FileUploadField name="archivo" title="Archivo" fileTypes={["pdf", "png"]} />
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
export const Layout = () => (
|
|
39
|
+
<FormLayout
|
|
40
|
+
formId="demo-form"
|
|
41
|
+
title="Formulario de ejemplo"
|
|
42
|
+
buttons={<Button title="Enviar" />}
|
|
43
|
+
>
|
|
44
|
+
<TextField name="campo" title="Campo" />
|
|
45
|
+
</FormLayout>
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
export const Radios = () => (
|
|
49
|
+
<RadioButtonGroup
|
|
50
|
+
name="tipo"
|
|
51
|
+
title="Tipo"
|
|
52
|
+
options={[
|
|
53
|
+
{ label: "Uno", value: "1" },
|
|
54
|
+
{ label: "Dos", value: "2" },
|
|
55
|
+
]}
|
|
56
|
+
orientation="horizontal"
|
|
57
|
+
/>
|
|
58
|
+
);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { InfoLabel } from "../src/Labels/InfoLabel/index.js";
|
|
2
|
+
import { SearchFiltersSummary } from "../src/Labels/SearchFiltersSummary.js";
|
|
3
|
+
|
|
4
|
+
export const Info = () => (
|
|
5
|
+
<InfoLabel title="Agencia" description="Central" />
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export const Filters = () => (
|
|
9
|
+
<SearchFiltersSummary
|
|
10
|
+
items={[
|
|
11
|
+
{ key: "dates", label: "Fechas", value: "01/01/2026 – 31/01/2026" },
|
|
12
|
+
{ key: "agency", label: "Agencia", value: "Todas" },
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
export const FiltersEmpty = () => <SearchFiltersSummary items={[]} />;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { ProgressModal } from "../src/Modal/ProgressModal.js";
|
|
3
|
+
import { Button } from "../src/Buttons/Button.js";
|
|
4
|
+
|
|
5
|
+
export const Progress = () => {
|
|
6
|
+
const [open, setOpen] = useState(true);
|
|
7
|
+
return (
|
|
8
|
+
<>
|
|
9
|
+
<Button type="button" title="Abrir progreso" onClickSave={() => setOpen(true)} />
|
|
10
|
+
<ProgressModal
|
|
11
|
+
isOpen={open}
|
|
12
|
+
onClose={() => setOpen(false)}
|
|
13
|
+
title="Procesando"
|
|
14
|
+
current={3}
|
|
15
|
+
total={10}
|
|
16
|
+
currentItem="Item 3"
|
|
17
|
+
description="Trabajo de ejemplo"
|
|
18
|
+
/>
|
|
19
|
+
</>
|
|
20
|
+
);
|
|
21
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { GenericDynamicTable } from "../src/DynamicTable/GenericDynamicTable.js";
|
|
2
|
+
import { ZauruTable } from "../src/Table/ZauruTable.js";
|
|
3
|
+
|
|
4
|
+
export const Dynamic = () => (
|
|
5
|
+
<GenericDynamicTable
|
|
6
|
+
name="lineas"
|
|
7
|
+
withoutBg
|
|
8
|
+
paginated={false}
|
|
9
|
+
defaultValue={[{ id: "1", producto: "Tomate", cantidad: 2 }]}
|
|
10
|
+
rowSummary={(row) => `Cantidad: ${row.cantidad ?? 0}`}
|
|
11
|
+
columns={[
|
|
12
|
+
{ label: "Producto", name: "producto", type: "textField" },
|
|
13
|
+
{
|
|
14
|
+
label: "Cantidad",
|
|
15
|
+
name: "cantidad",
|
|
16
|
+
type: "textField",
|
|
17
|
+
textFieldType: "number",
|
|
18
|
+
},
|
|
19
|
+
]}
|
|
20
|
+
/>
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
export const DataTable = () => (
|
|
24
|
+
<ZauruTable
|
|
25
|
+
columns={[
|
|
26
|
+
{ name: "Nombre", selector: (row: { name: string }) => row.name },
|
|
27
|
+
{ name: "Estado", selector: (row: { status: string }) => row.status },
|
|
28
|
+
]}
|
|
29
|
+
data={[
|
|
30
|
+
{ name: "Factura 1", status: "Abierta" },
|
|
31
|
+
{ name: "Factura 2", status: "Cerrada" },
|
|
32
|
+
]}
|
|
33
|
+
whitOutPagination
|
|
34
|
+
search={{ placeholderSearch: "Filtrar" }}
|
|
35
|
+
offlineSearch={["name", "status"]}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TitleH1 } from "../src/Titles/TitleH1.js";
|
|
2
|
+
import { TitleH2 } from "../src/Titles/TitleH2.js";
|
|
3
|
+
import { TitleH3 } from "../src/Titles/TitleH3.js";
|
|
4
|
+
|
|
5
|
+
export const Hierarchy = () => (
|
|
6
|
+
<div className="space-y-3">
|
|
7
|
+
<TitleH1 texto="Título H1" />
|
|
8
|
+
<TitleH2 texto="Título H2" />
|
|
9
|
+
<TitleH3 texto="Título H3" />
|
|
10
|
+
</div>
|
|
11
|
+
);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Tooltip } from "../src/Tooltip/Tooltip.js";
|
|
2
|
+
import { WithTooltip } from "../src/WithTooltip/WithTooltip.js";
|
|
3
|
+
import { Button } from "../src/Buttons/Button.js";
|
|
4
|
+
|
|
5
|
+
export const HoverTooltip = () => (
|
|
6
|
+
<Tooltip text="Ayuda contextual">
|
|
7
|
+
<Button title="Pasa el mouse" type="button" />
|
|
8
|
+
</Tooltip>
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export const CssTooltip = () => (
|
|
12
|
+
<WithTooltip text="Texto largo que se envuelve en el globo de ayuda.">
|
|
13
|
+
<Button title="Con tooltip CSS" type="button" />
|
|
14
|
+
</WithTooltip>
|
|
15
|
+
);
|