@axa-fr/design-system-look-and-feel-react 0.2.0-beta.306
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/dist/Accordion/Accordion.d.ts +8 -0
- package/dist/Accordion/Accordion.js +7 -0
- package/dist/Accordion/Accordion.stories.d.ts +8 -0
- package/dist/Accordion/Accordion.stories.js +24 -0
- package/dist/Accordion/AccordionItem.d.ts +6 -0
- package/dist/Accordion/AccordionItem.js +10 -0
- package/dist/Alert/Alert.d.ts +12 -0
- package/dist/Alert/Alert.js +26 -0
- package/dist/Alert/Alert.stories.d.ts +5 -0
- package/dist/Alert/Alert.stories.js +26 -0
- package/dist/Button/Button.d.ts +17 -0
- package/dist/Button/Button.js +15 -0
- package/dist/Button/Button.stories.d.ts +22 -0
- package/dist/Button/Button.stories.js +99 -0
- package/dist/Card/Card.d.ts +6 -0
- package/dist/Card/Card.js +9 -0
- package/dist/Card/Card.stories.d.ts +6 -0
- package/dist/Card/Card.stories.js +40 -0
- package/dist/Card/__tests__/Card.test.d.ts +1 -0
- package/dist/Card/__tests__/Card.test.js +27 -0
- package/dist/Card/index.d.ts +2 -0
- package/dist/Card/index.js +2 -0
- package/dist/Form/Checkbox/Checkbox.d.ts +7 -0
- package/dist/Form/Checkbox/Checkbox.js +15 -0
- package/dist/Form/Checkbox/Checkbox.stories.d.ts +6 -0
- package/dist/Form/Checkbox/Checkbox.stories.js +38 -0
- package/dist/Form/Checkbox/CheckboxSelect.d.ts +15 -0
- package/dist/Form/Checkbox/CheckboxSelect.js +7 -0
- package/dist/Form/Checkbox/CheckboxSelect.stories.d.ts +6 -0
- package/dist/Form/Checkbox/CheckboxSelect.stories.js +55 -0
- package/dist/Form/Checkbox/index.d.ts +2 -0
- package/dist/Form/Checkbox/index.js +2 -0
- package/dist/Form/FileUpload/FIleUpload.stories.d.ts +6 -0
- package/dist/Form/FileUpload/FIleUpload.stories.js +54 -0
- package/dist/Form/FileUpload/FileUpload.d.ts +32 -0
- package/dist/Form/FileUpload/FileUpload.js +51 -0
- package/dist/Form/FileUpload/index.d.ts +1 -0
- package/dist/Form/FileUpload/index.js +1 -0
- package/dist/Form/InputError/InputError.d.ts +7 -0
- package/dist/Form/InputError/InputError.js +5 -0
- package/dist/Form/InputError/InputError.stories.d.ts +5 -0
- package/dist/Form/InputError/InputError.stories.js +12 -0
- package/dist/Form/InputError/index.d.ts +1 -0
- package/dist/Form/InputError/index.js +1 -0
- package/dist/Form/Radio/Radio.d.ts +7 -0
- package/dist/Form/Radio/Radio.js +14 -0
- package/dist/Form/Radio/Radio.stories.d.ts +6 -0
- package/dist/Form/Radio/Radio.stories.js +38 -0
- package/dist/Form/Radio/RadioSelect.d.ts +18 -0
- package/dist/Form/Radio/RadioSelect.js +16 -0
- package/dist/Form/Radio/RadioSelect.stories.d.ts +7 -0
- package/dist/Form/Radio/RadioSelect.stories.js +90 -0
- package/dist/Form/Radio/index.d.ts +2 -0
- package/dist/Form/Radio/index.js +2 -0
- package/dist/Form/Select/CustomOption.d.ts +4 -0
- package/dist/Form/Select/CustomOption.js +8 -0
- package/dist/Form/Select/DropdownIndicator.d.ts +4 -0
- package/dist/Form/Select/DropdownIndicator.js +11 -0
- package/dist/Form/Select/Select.d.ts +27 -0
- package/dist/Form/Select/Select.js +27 -0
- package/dist/Form/Select/Select.stories.d.ts +10 -0
- package/dist/Form/Select/Select.stories.js +31 -0
- package/dist/Form/Select/index.d.ts +1 -0
- package/dist/Form/Select/index.js +1 -0
- package/dist/Form/Text/Text.d.ts +12 -0
- package/dist/Form/Text/Text.js +12 -0
- package/dist/Form/Text/Text.stories.d.ts +8 -0
- package/dist/Form/Text/Text.stories.js +46 -0
- package/dist/Form/Text/index.d.ts +1 -0
- package/dist/Form/Text/index.js +1 -0
- package/dist/Form/core/Field.d.ts +16 -0
- package/dist/Form/core/Field.js +12 -0
- package/dist/Form/core/FieldError.d.ts +7 -0
- package/dist/Form/core/FieldError.js +8 -0
- package/dist/Form/core/FieldForm.d.ts +59 -0
- package/dist/Form/core/FieldForm.js +151 -0
- package/dist/Form/core/FieldInput.d.ts +9 -0
- package/dist/Form/core/FieldInput.js +9 -0
- package/dist/Form/core/FormClassManager.d.ts +7 -0
- package/dist/Form/core/FormClassManager.js +33 -0
- package/dist/Form/core/HelpMessage.d.ts +7 -0
- package/dist/Form/core/HelpMessage.js +2 -0
- package/dist/Form/core/InputList.d.ts +8 -0
- package/dist/Form/core/InputList.js +4 -0
- package/dist/Form/core/MessageTypes.d.ts +5 -0
- package/dist/Form/core/MessageTypes.js +6 -0
- package/dist/Form/core/getComponentClassName.d.ts +1 -0
- package/dist/Form/core/getComponentClassName.js +27 -0
- package/dist/Form/core/getFirstId.d.ts +2 -0
- package/dist/Form/core/getFirstId.js +1 -0
- package/dist/Form/core/getOptionClassName.d.ts +1 -0
- package/dist/Form/core/getOptionClassName.js +10 -0
- package/dist/Form/core/index.d.ts +31 -0
- package/dist/Form/core/index.js +13 -0
- package/dist/Form/core/useInputClassModifier.d.ts +4 -0
- package/dist/Form/core/useInputClassModifier.js +12 -0
- package/dist/Form/core/useOptionsWithId.d.ts +2 -0
- package/dist/Form/core/useOptionsWithId.js +13 -0
- package/dist/IconBg/IconBg.d.ts +9 -0
- package/dist/IconBg/IconBg.js +13 -0
- package/dist/IconBg/IconBg.stories.d.ts +5 -0
- package/dist/IconBg/IconBg.stories.js +23 -0
- package/dist/IconBg/__tests__/IconBg.test.d.ts +1 -0
- package/dist/IconBg/__tests__/IconBg.test.js +22 -0
- package/dist/IconBg/index.d.ts +2 -0
- package/dist/IconBg/index.js +2 -0
- package/dist/Layout/Footer/DynamicIcons.d.ts +4 -0
- package/dist/Layout/Footer/DynamicIcons.js +20 -0
- package/dist/Layout/Footer/Footer.d.ts +14 -0
- package/dist/Layout/Footer/Footer.js +16 -0
- package/dist/Layout/Footer/Footer.stories.d.ts +14 -0
- package/dist/Layout/Footer/Footer.stories.js +48 -0
- package/dist/Layout/Footer/MenuIcons.d.ts +9 -0
- package/dist/Layout/Footer/MenuIcons.js +8 -0
- package/dist/Layout/Footer/MenuLink.d.ts +11 -0
- package/dist/Layout/Footer/MenuLink.js +11 -0
- package/dist/Layout/Header/Header.d.ts +9 -0
- package/dist/Layout/Header/Header.js +11 -0
- package/dist/Layout/Header/Header.stories.d.ts +10 -0
- package/dist/Layout/Header/Header.stories.js +52 -0
- package/dist/Layout/Header/NavBar/NavBar.d.ts +8 -0
- package/dist/Layout/Header/NavBar/NavBar.js +13 -0
- package/dist/Layout/Header/NavBar/NavBar.stories.d.ts +8 -0
- package/dist/Layout/Header/NavBar/NavBar.stories.js +17 -0
- package/dist/Layout/Header/NavBar/index.d.ts +1 -0
- package/dist/Layout/Header/NavBar/index.js +1 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.d.ts +7 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.js +14 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.stories.d.ts +8 -0
- package/dist/Layout/Header/PreviousLink/PreviousLink.stories.js +16 -0
- package/dist/Layout/Header/PreviousLink/index.d.ts +1 -0
- package/dist/Layout/Header/PreviousLink/index.js +1 -0
- package/dist/Layout/Header/index.d.ts +1 -0
- package/dist/Layout/Header/index.js +1 -0
- package/dist/Link/Link.d.ts +7 -0
- package/dist/Link/Link.js +11 -0
- package/dist/Link/Link.stories.d.ts +5 -0
- package/dist/Link/Link.stories.js +14 -0
- package/dist/List/ClickList/ClickList.d.ts +11 -0
- package/dist/List/ClickList/ClickList.js +6 -0
- package/dist/List/ClickList/ClickList.stories.d.ts +6 -0
- package/dist/List/ClickList/ClickList.stories.js +60 -0
- package/dist/List/ClickList/__tests__/ClickList.client.test.d.ts +1 -0
- package/dist/List/ClickList/__tests__/ClickList.client.test.js +18 -0
- package/dist/List/ClickList/index.d.ts +1 -0
- package/dist/List/ClickList/index.js +1 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.d.ts +13 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.js +18 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.stories.d.ts +28 -0
- package/dist/List/ContentItemDuo/ContentItemDuo.stories.js +86 -0
- package/dist/List/ContentItemDuo/__tests__/ContentItemDuo.test.d.ts +1 -0
- package/dist/List/ContentItemDuo/__tests__/ContentItemDuo.test.js +40 -0
- package/dist/List/ContentItemDuo/index.d.ts +2 -0
- package/dist/List/ContentItemDuo/index.js +2 -0
- package/dist/List/ContentItemMono/ContentItemMono.d.ts +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.js +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.stories.d.ts +16 -0
- package/dist/List/ContentItemMono/ContentItemMono.stories.js +99 -0
- package/dist/List/ContentItemMono/__tests__/ContentItemMono.test.d.ts +1 -0
- package/dist/List/ContentItemMono/__tests__/ContentItemMono.test.js +45 -0
- package/dist/List/ContentItemMono/constants.d.ts +4 -0
- package/dist/List/ContentItemMono/constants.js +5 -0
- package/dist/List/ContentItemMono/index.d.ts +3 -0
- package/dist/List/ContentItemMono/index.js +3 -0
- package/dist/List/ContentTabList/ContentTabItem/ContentTabItem.d.ts +6 -0
- package/dist/List/ContentTabList/ContentTabItem/ContentTabItem.js +6 -0
- package/dist/List/ContentTabList/ContentTabItem/__tests__/ContentTabItem.test.d.ts +1 -0
- package/dist/List/ContentTabList/ContentTabItem/__tests__/ContentTabItem.test.js +100 -0
- package/dist/List/ContentTabList/ContentTabItem/index.d.ts +2 -0
- package/dist/List/ContentTabList/ContentTabItem/index.js +1 -0
- package/dist/List/ContentTabList/ContentTabList.d.ts +8 -0
- package/dist/List/ContentTabList/ContentTabList.js +10 -0
- package/dist/List/ContentTabList/ContentTabList.stories.d.ts +7 -0
- package/dist/List/ContentTabList/ContentTabList.stories.js +78 -0
- package/dist/List/ContentTabList/__tests__/ContentTabList.test.d.ts +1 -0
- package/dist/List/ContentTabList/__tests__/ContentTabList.test.js +57 -0
- package/dist/List/ContentTabList/index.d.ts +1 -0
- package/dist/List/ContentTabList/index.js +1 -0
- package/dist/List/List.d.ts +6 -0
- package/dist/List/List.js +9 -0
- package/dist/List/List.stories.d.ts +8 -0
- package/dist/List/List.stories.js +56 -0
- package/dist/List/__tests__/List.test.d.ts +1 -0
- package/dist/List/__tests__/List.test.js +30 -0
- package/dist/List/index.d.ts +1 -0
- package/dist/List/index.js +1 -0
- package/dist/Loader/Loader.d.ts +11 -0
- package/dist/Loader/Loader.js +10 -0
- package/dist/Loader/Loader.stories.d.ts +6 -0
- package/dist/Loader/Loader.stories.js +15 -0
- package/dist/Loader/index.d.ts +1 -0
- package/dist/Loader/index.js +1 -0
- package/dist/ModalClient/Modal.d.ts +23 -0
- package/dist/ModalClient/Modal.js +44 -0
- package/dist/ModalClient/Modal.stories.d.ts +20 -0
- package/dist/ModalClient/Modal.stories.js +37 -0
- package/dist/Pagination/Pagination.d.ts +9 -0
- package/dist/Pagination/Pagination.js +15 -0
- package/dist/Pagination/Pagination.stories.d.ts +11 -0
- package/dist/Pagination/Pagination.stories.js +19 -0
- package/dist/Pagination/PaginationDesktop.d.ts +9 -0
- package/dist/Pagination/PaginationDesktop.js +31 -0
- package/dist/Pagination/PaginationMobile.d.ts +9 -0
- package/dist/Pagination/PaginationMobile.js +10 -0
- package/dist/Stepper/Stepper.d.ts +12 -0
- package/dist/Stepper/Stepper.js +22 -0
- package/dist/Stepper/Stepper.stories.d.ts +16 -0
- package/dist/Stepper/Stepper.stories.js +23 -0
- package/dist/Svg/Svg.d.ts +7 -0
- package/dist/Svg/Svg.js +47 -0
- package/dist/Svg/Svg.stories.d.ts +7 -0
- package/dist/Svg/Svg.stories.js +40 -0
- package/dist/Svg/__tests__/Svg.test.d.ts +1 -0
- package/dist/Svg/__tests__/Svg.test.js +38 -0
- package/dist/Svg/index.d.ts +1 -0
- package/dist/Svg/index.js +1 -0
- package/dist/Svg/svgInjector.d.ts +12 -0
- package/dist/Svg/svgInjector.js +28 -0
- package/dist/Tabs/Tabs.d.ts +16 -0
- package/dist/Tabs/Tabs.js +48 -0
- package/dist/Tabs/Tabs.stories.d.ts +17 -0
- package/dist/Tabs/Tabs.stories.js +89 -0
- package/dist/Tag/Tag.d.ts +6 -0
- package/dist/Tag/Tag.js +7 -0
- package/dist/Tag/Tag.stories.d.ts +5 -0
- package/dist/Tag/Tag.stories.js +22 -0
- package/dist/Tag/__test__/Tag.test.d.ts +1 -0
- package/dist/Tag/__test__/Tag.test.js +18 -0
- package/dist/Tag/index.d.ts +2 -0
- package/dist/Tag/index.js +2 -0
- package/dist/Title/Title.d.ts +13 -0
- package/dist/Title/Title.js +11 -0
- package/dist/Title/Title.stories.d.ts +6 -0
- package/dist/Title/Title.stories.js +45 -0
- package/dist/Title/TitleWithSubtitles.d.ts +8 -0
- package/dist/Title/TitleWithSubtitles.js +2 -0
- package/dist/Title/__tests__/Title.test.d.ts +1 -0
- package/dist/Title/__tests__/Title.test.js +28 -0
- package/dist/Title/__tests__/TitleWithSubtitles.test.d.ts +1 -0
- package/dist/Title/__tests__/TitleWithSubtitles.test.js +14 -0
- package/dist/Title/constants.d.ts +4 -0
- package/dist/Title/constants.js +5 -0
- package/dist/Title/index.d.ts +3 -0
- package/dist/Title/index.js +3 -0
- package/dist/assets/svg/facebook.svg +1 -0
- package/dist/assets/svg/linkedin.svg +1 -0
- package/dist/assets/svg/twitterx.svg +1 -0
- package/dist/assets/svg/youtube.svg +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +27 -0
- package/dist/utilities/helpers/getComponentClassName.d.ts +1 -0
- package/dist/utilities/helpers/getComponentClassName.js +27 -0
- package/dist/utilities/hooks/useIsSmallScreen.d.ts +1 -0
- package/dist/utilities/hooks/useIsSmallScreen.js +14 -0
- package/dist/utilities.d.ts +2 -0
- package/dist/utilities.js +2 -0
- package/package.json +119 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { ContentItemDuo } from ".";
|
3
|
+
import { List } from "../List";
|
4
|
+
const meta = {
|
5
|
+
title: "Components/List/ContentItemDuo",
|
6
|
+
component: ContentItemDuo,
|
7
|
+
};
|
8
|
+
export default meta;
|
9
|
+
const defaultArgs = {
|
10
|
+
isVertical: false,
|
11
|
+
label: "Libellé",
|
12
|
+
value: "Réponse",
|
13
|
+
isShowingDoneIcon: true,
|
14
|
+
isShowingCloseIcon: false,
|
15
|
+
buttonText: "En savoir plus",
|
16
|
+
classModifier: [],
|
17
|
+
};
|
18
|
+
const verticalArgs = {
|
19
|
+
isVertical: true,
|
20
|
+
label: "Le choc de véhicules terrestres à moteur, (voiture, trottinette à moteur…) ou la chute d’appareils aériens (avions, hélicoptères…) avec un propriétaire du véhicule adverse identifié ?",
|
21
|
+
value: "Les incendies, explosions, implosions, fumée et foudre",
|
22
|
+
isShowingDoneIcon: true,
|
23
|
+
isShowingCloseIcon: false,
|
24
|
+
buttonText: "En savoir plus",
|
25
|
+
classModifier: [],
|
26
|
+
};
|
27
|
+
export const Default = {
|
28
|
+
name: "Default",
|
29
|
+
render: ({ classModifier, ...args }) => (_jsx(ContentItemDuo, { classModifier: classModifier.join(" "), ...args })),
|
30
|
+
args: defaultArgs,
|
31
|
+
argTypes: {
|
32
|
+
classModifier: {
|
33
|
+
options: ["large"],
|
34
|
+
control: { type: "multi-select" },
|
35
|
+
defaultValue: [],
|
36
|
+
},
|
37
|
+
},
|
38
|
+
};
|
39
|
+
export const Vertical = {
|
40
|
+
name: "Vertical",
|
41
|
+
render: ({ classModifier, ...args }) => (_jsx(ContentItemDuo, { classModifier: classModifier.join(" "), ...args })),
|
42
|
+
args: verticalArgs,
|
43
|
+
argTypes: {
|
44
|
+
classModifier: {
|
45
|
+
options: ["large"],
|
46
|
+
control: { type: "multi-select" },
|
47
|
+
defaultValue: [],
|
48
|
+
},
|
49
|
+
},
|
50
|
+
};
|
51
|
+
export const DefaultContentItemDuoList = {
|
52
|
+
name: "Default ContentItemDuo List",
|
53
|
+
render: ({ classModifier, items }) => (_jsx(List, { classModifier: classModifier.join(" "), children: items.map(({ classModifier: itemClassModifier, ...itemArgs }) => (_jsx(ContentItemDuo, { classModifier: itemClassModifier.join(" "), ...itemArgs }, itemArgs.id))) })),
|
54
|
+
args: {
|
55
|
+
items: Array.from({ length: 3 }, (_, i) => ({
|
56
|
+
id: i.toString(),
|
57
|
+
...defaultArgs,
|
58
|
+
})),
|
59
|
+
classModifier: ["extra-padding"],
|
60
|
+
},
|
61
|
+
argTypes: {
|
62
|
+
classModifier: {
|
63
|
+
options: ["extra-padding", "large"],
|
64
|
+
control: { type: "multi-select" },
|
65
|
+
defaultValue: ["extra-padding"],
|
66
|
+
},
|
67
|
+
},
|
68
|
+
};
|
69
|
+
export const VerticalContentItemDuoList = {
|
70
|
+
name: "Vertical ContentItemDuo List",
|
71
|
+
render: ({ classModifier, items }) => (_jsx(List, { classModifier: classModifier.join(" "), children: items.map(({ classModifier: itemClassModifier, ...itemArgs }) => (_jsx(ContentItemDuo, { classModifier: itemClassModifier.join(" "), ...itemArgs }, itemArgs.id))) })),
|
72
|
+
args: {
|
73
|
+
items: Array.from({ length: 3 }, (_, i) => ({
|
74
|
+
id: i.toString(),
|
75
|
+
...verticalArgs,
|
76
|
+
})),
|
77
|
+
classModifier: ["extra-padding"],
|
78
|
+
},
|
79
|
+
argTypes: {
|
80
|
+
classModifier: {
|
81
|
+
options: ["extra-padding", "large"],
|
82
|
+
control: { type: "multi-select" },
|
83
|
+
defaultValue: ["extra-padding"],
|
84
|
+
},
|
85
|
+
},
|
86
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { render, screen, waitFor } from "@testing-library/react";
|
3
|
+
import userEvent from "@testing-library/user-event";
|
4
|
+
import { ContentItemDuo } from "../ContentItemDuo";
|
5
|
+
describe("ContentItemDuo", () => {
|
6
|
+
const label = "Sample Label";
|
7
|
+
const value = "Sample Value";
|
8
|
+
it("should render label and value correctly", () => {
|
9
|
+
render(_jsx(ContentItemDuo, { label: label, value: value }));
|
10
|
+
expect(screen.getByText(label)).toBeInTheDocument();
|
11
|
+
expect(screen.getByText(value)).toBeInTheDocument();
|
12
|
+
});
|
13
|
+
it("should render button with correct text and call onClick handler", async () => {
|
14
|
+
const buttonText = "button";
|
15
|
+
const onButtonClick = vi.fn();
|
16
|
+
render(_jsx(ContentItemDuo, { label: label, value: value, buttonText: buttonText, onButtonClick: onButtonClick }));
|
17
|
+
const buttonElement = screen.getByText(buttonText);
|
18
|
+
expect(buttonElement).toBeInTheDocument();
|
19
|
+
userEvent.click(buttonElement);
|
20
|
+
await waitFor(() => {
|
21
|
+
expect(onButtonClick).toHaveBeenCalled();
|
22
|
+
});
|
23
|
+
});
|
24
|
+
it("should render vertical layout when isVertical prop is true", () => {
|
25
|
+
render(_jsx(ContentItemDuo, { label: label, value: value, isVertical: true }));
|
26
|
+
expect(screen.getByText(label).parentElement).toHaveClass("af-content-item-duo--vertical");
|
27
|
+
});
|
28
|
+
it("should render done icon when isShowingDoneIcon prop is true", () => {
|
29
|
+
const { container } = render(_jsx(ContentItemDuo, { label: label, value: value, isShowingDoneIcon: true }));
|
30
|
+
const svgElement = container.querySelector("svg");
|
31
|
+
expect(svgElement).toBeInTheDocument();
|
32
|
+
expect(svgElement?.parentElement).toHaveClass("af-content-item-duo__icon--done");
|
33
|
+
});
|
34
|
+
it("should render close icon when isShowingCloseIcon prop is true", () => {
|
35
|
+
const { container } = render(_jsx(ContentItemDuo, { label: label, value: value, isShowingCloseIcon: true }));
|
36
|
+
const svgElement = container.querySelector("svg");
|
37
|
+
expect(svgElement).toBeInTheDocument();
|
38
|
+
expect(svgElement?.parentElement).toHaveClass("af-content-item-duo__icon--close");
|
39
|
+
});
|
40
|
+
});
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { type ReactNode } from "react";
|
2
|
+
import { ContentItemMonoSize } from "./constants";
|
3
|
+
type ContentItemMonoProps = {
|
4
|
+
children: ReactNode;
|
5
|
+
className?: string;
|
6
|
+
classModifier?: string;
|
7
|
+
secondaryText?: string;
|
8
|
+
tertiaryText?: string;
|
9
|
+
leftElement?: ReactNode;
|
10
|
+
size?: ContentItemMonoSize;
|
11
|
+
isDisabled?: boolean;
|
12
|
+
isLeftElementCentered?: boolean;
|
13
|
+
hasStick?: boolean;
|
14
|
+
};
|
15
|
+
export declare const ContentItemMono: ({ children, className, classModifier, secondaryText, tertiaryText, leftElement, size, isDisabled, isLeftElementCentered, hasStick, }: ContentItemMonoProps) => import("react/jsx-runtime").JSX.Element;
|
16
|
+
export {};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { useMemo } from "react";
|
3
|
+
import { getComponentClassName } from "../../utilities";
|
4
|
+
import { ContentItemMonoSize } from "./constants";
|
5
|
+
export const ContentItemMono = ({ children, className, classModifier, secondaryText, tertiaryText, leftElement, size = ContentItemMonoSize.M, isDisabled = false, isLeftElementCentered = false, hasStick = false, }) => {
|
6
|
+
const componentClassName = useMemo(() => {
|
7
|
+
const classModifiers = [size, classModifier];
|
8
|
+
if (isDisabled) {
|
9
|
+
classModifiers.push("disabled");
|
10
|
+
}
|
11
|
+
return getComponentClassName(className, classModifiers.filter(Boolean).join(" "), "af-content-item-mono");
|
12
|
+
}, [classModifier, isDisabled, size, className]);
|
13
|
+
return (_jsxs("div", { className: componentClassName, children: [hasStick && (_jsx("div", { className: "af-content-item-mono__stick", role: "presentation" })), leftElement && (_jsx("div", { className: `af-content-item-mono__left-container${isLeftElementCentered
|
14
|
+
? " af-content-item-mono__left-container--center"
|
15
|
+
: ""}`, children: leftElement })), _jsxs("div", { className: "af-content-item-mono__text-container", children: [_jsx("p", { className: "af-content-item-mono__main-text", children: children }), secondaryText && (_jsx("p", { className: "af-content-item-mono__secondary-text", children: secondaryText })), tertiaryText && size !== ContentItemMonoSize.XL && (_jsx("p", { className: "af-content-item-mono__tertiary-text", children: tertiaryText }))] })] }));
|
16
|
+
};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
2
|
+
import type { ComponentProps } from "react";
|
3
|
+
import { List } from "../List";
|
4
|
+
import { ContentItemMono } from "./ContentItemMono";
|
5
|
+
declare const meta: Meta<typeof ContentItemMono>;
|
6
|
+
export default meta;
|
7
|
+
export declare const Default: StoryObj<typeof ContentItemMono>;
|
8
|
+
export declare const ContentItemMonoWithIcon: StoryObj<typeof ContentItemMono>;
|
9
|
+
export declare const ContentItemMonoWithStick: StoryObj<typeof ContentItemMono>;
|
10
|
+
export declare const ContentItemMonoList: StoryObj<{
|
11
|
+
items: (ComponentProps<typeof ContentItemMono> & {
|
12
|
+
id: string;
|
13
|
+
})[];
|
14
|
+
} & Omit<ComponentProps<typeof List>, "classModifier"> & {
|
15
|
+
classModifier: string[];
|
16
|
+
}>;
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import arrowForward from "@material-symbols/svg-400/rounded/arrow_forward.svg";
|
3
|
+
import { Svg } from "../../Svg";
|
4
|
+
import { List } from "../List";
|
5
|
+
import { ContentItemMono } from "./ContentItemMono";
|
6
|
+
import { ContentItemMonoSize } from "./constants";
|
7
|
+
const meta = {
|
8
|
+
title: "Components/List/ContentItemMono",
|
9
|
+
component: ContentItemMono,
|
10
|
+
};
|
11
|
+
export default meta;
|
12
|
+
const defaultArgs = {
|
13
|
+
children: "Texte principal",
|
14
|
+
secondaryText: "Texte secondaire",
|
15
|
+
tertiaryText: "Texte tertiaire",
|
16
|
+
size: ContentItemMonoSize.M,
|
17
|
+
isDisabled: false,
|
18
|
+
leftElement: "",
|
19
|
+
isLeftElementCentered: false,
|
20
|
+
hasStick: false,
|
21
|
+
classModifier: "",
|
22
|
+
};
|
23
|
+
const contentItemMonoWithIconArgs = {
|
24
|
+
children: "Texte principal",
|
25
|
+
secondaryText: "Texte secondaire",
|
26
|
+
tertiaryText: "Texte tertiaire",
|
27
|
+
size: ContentItemMonoSize.M,
|
28
|
+
isDisabled: false,
|
29
|
+
leftElement: _jsx(Svg, { src: arrowForward }),
|
30
|
+
isLeftElementCentered: true,
|
31
|
+
hasStick: false,
|
32
|
+
classModifier: "",
|
33
|
+
};
|
34
|
+
const contentItemMonoWithStickArgs = {
|
35
|
+
children: "Texte principal",
|
36
|
+
secondaryText: "Texte secondaire",
|
37
|
+
tertiaryText: "",
|
38
|
+
size: ContentItemMonoSize.M,
|
39
|
+
isDisabled: false,
|
40
|
+
leftElement: "",
|
41
|
+
isLeftElementCentered: false,
|
42
|
+
hasStick: true,
|
43
|
+
classModifier: "",
|
44
|
+
};
|
45
|
+
export const Default = {
|
46
|
+
name: "Default",
|
47
|
+
render: (args) => _jsx(ContentItemMono, { ...args }),
|
48
|
+
args: defaultArgs,
|
49
|
+
argTypes: {
|
50
|
+
size: {
|
51
|
+
options: Object.values(ContentItemMonoSize),
|
52
|
+
control: { type: "select" },
|
53
|
+
defaultValue: "m",
|
54
|
+
},
|
55
|
+
},
|
56
|
+
};
|
57
|
+
export const ContentItemMonoWithIcon = {
|
58
|
+
name: "ContentItemMono With Icon",
|
59
|
+
render: (args) => _jsx(ContentItemMono, { ...args }),
|
60
|
+
args: contentItemMonoWithIconArgs,
|
61
|
+
argTypes: {
|
62
|
+
size: {
|
63
|
+
options: Object.values(ContentItemMonoSize),
|
64
|
+
control: { type: "select" },
|
65
|
+
defaultValue: "m",
|
66
|
+
},
|
67
|
+
},
|
68
|
+
};
|
69
|
+
export const ContentItemMonoWithStick = {
|
70
|
+
name: "ContentItemMono With Stick",
|
71
|
+
render: (args) => _jsx(ContentItemMono, { ...args }),
|
72
|
+
args: contentItemMonoWithStickArgs,
|
73
|
+
argTypes: {
|
74
|
+
size: {
|
75
|
+
options: Object.values(ContentItemMonoSize),
|
76
|
+
control: { type: "select" },
|
77
|
+
defaultValue: "m",
|
78
|
+
},
|
79
|
+
},
|
80
|
+
};
|
81
|
+
export const ContentItemMonoList = {
|
82
|
+
name: "ContentItemMono List",
|
83
|
+
render: ({ items, classModifier, ...args }) => (_jsx(List, { classModifier: classModifier.join(" "), ...args, children: items.map((itemsArgs) => (_jsx(ContentItemMono, { ...itemsArgs }, itemsArgs.id))) })),
|
84
|
+
args: {
|
85
|
+
items: [
|
86
|
+
{ id: "1", ...defaultArgs },
|
87
|
+
{ id: "2", ...contentItemMonoWithIconArgs },
|
88
|
+
{ id: "3", ...contentItemMonoWithStickArgs },
|
89
|
+
],
|
90
|
+
classModifier: [],
|
91
|
+
},
|
92
|
+
argTypes: {
|
93
|
+
classModifier: {
|
94
|
+
options: ["large", "first-separator-full-width"],
|
95
|
+
control: { type: "multi-select" },
|
96
|
+
defaultValue: [],
|
97
|
+
},
|
98
|
+
},
|
99
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { render, screen } from "@testing-library/react";
|
3
|
+
import { ContentItemMono } from "../ContentItemMono";
|
4
|
+
import { ContentItemMonoSize } from "../constants";
|
5
|
+
describe("ContentItemMono", () => {
|
6
|
+
it("should render correctly", () => {
|
7
|
+
const children = "Content";
|
8
|
+
const secondaryText = "Secondary Text";
|
9
|
+
const tertiaryText = "Tertiary Text";
|
10
|
+
const leftElement = "Left Element";
|
11
|
+
render(_jsx(ContentItemMono, { secondaryText: secondaryText, tertiaryText: tertiaryText, leftElement: leftElement, hasStick: true, children: children }));
|
12
|
+
expect(screen.getByText(children)).toBeInTheDocument();
|
13
|
+
expect(screen.getByText(secondaryText)).toBeInTheDocument();
|
14
|
+
expect(screen.getByText(tertiaryText)).toBeInTheDocument();
|
15
|
+
expect(screen.getByText(leftElement)).toBeInTheDocument();
|
16
|
+
expect(screen.getByRole("presentation")).toBeInTheDocument();
|
17
|
+
});
|
18
|
+
it("should have custom class and M size", () => {
|
19
|
+
const className = "custom-class";
|
20
|
+
render(_jsx(ContentItemMono, { className: className, children: "Content" }));
|
21
|
+
expect(screen.getByText("Content").parentElement?.parentElement).toHaveClass(`${className} ${className}--m`);
|
22
|
+
});
|
23
|
+
it("should have XL size and no tertiary text", () => {
|
24
|
+
const className = "custom-class";
|
25
|
+
render(_jsx(ContentItemMono, { className: className, size: ContentItemMonoSize.XL, tertiaryText: "tertiaryText", children: "Content" }));
|
26
|
+
expect(screen.getByText("Content").parentElement?.parentElement).toHaveClass(`${className} ${className}--xl`);
|
27
|
+
expect(screen.queryByText("tertiaryText")).not.toBeInTheDocument();
|
28
|
+
});
|
29
|
+
it("should have custom class with modifier", () => {
|
30
|
+
const className = "custom-class";
|
31
|
+
const classModifier = "modifier";
|
32
|
+
render(_jsx(ContentItemMono, { className: className, classModifier: classModifier, children: "Content" }));
|
33
|
+
expect(screen.getByText("Content").parentElement?.parentElement).toHaveClass(`${className} ${className}--${classModifier}`);
|
34
|
+
});
|
35
|
+
it("should be disabled", () => {
|
36
|
+
const className = "custom-class";
|
37
|
+
render(_jsx(ContentItemMono, { className: className, isDisabled: true, children: "Content" }));
|
38
|
+
expect(screen.getByText("Content").parentElement?.parentElement).toHaveClass(`${className} ${className}--disabled`);
|
39
|
+
});
|
40
|
+
it("should have centered left element", () => {
|
41
|
+
const leftElement = "Left Element";
|
42
|
+
render(_jsx(ContentItemMono, { leftElement: leftElement, isLeftElementCentered: true, children: "Content" }));
|
43
|
+
expect(screen.getByText(leftElement)).toHaveClass("af-content-item-mono__left-container af-content-item-mono__left-container--center");
|
44
|
+
});
|
45
|
+
});
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { TContentTabItem } from "./types";
|
2
|
+
type TContentTabItemProps = TContentTabItem & {
|
3
|
+
isMobile?: boolean;
|
4
|
+
};
|
5
|
+
export declare const ContentTabItem: ({ title, subtitle, tag, tagProps, date, buttons, value, isMobile, }: TContentTabItemProps) => import("react/jsx-runtime").JSX.Element;
|
6
|
+
export {};
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
+
import { Button, Tag } from "../../..";
|
3
|
+
export const ContentTabItem = ({ title, subtitle, tag, tagProps, date, buttons = [], value, isMobile = false, }) => (_jsxs(_Fragment, { children: [_jsxs("div", { className: "af-list-item__left-container", children: [Boolean(value) && (Boolean(tag) || Boolean(date)) && (_jsxs("div", { className: "af-list-item__additional-data-container", children: [Boolean(tag) && (_jsx(Tag, { classModifier: "warning", ...tagProps, children: tag })), Boolean(date) && _jsx("span", { className: "af-list-item__date", children: date })] })), _jsxs("div", { className: "af-list-item__label", children: [_jsx("span", { className: "af-list-item-label__title", children: title }), Boolean(subtitle) && (_jsx("span", { className: "af-list-item-label__subtitle", children: subtitle }))] }), !value && isMobile && (Boolean(tag) || Boolean(date)) && (_jsxs("div", { className: "af-list-item__additional-data-container", children: [Boolean(tag) && (_jsx(Tag, { classModifier: "warning", ...tagProps, children: tag })), Boolean(date) && _jsx("span", { className: "af-list-item__date", children: date })] }))] }), (buttons.length > 0 ||
|
4
|
+
Boolean(tag) ||
|
5
|
+
Boolean(date) ||
|
6
|
+
Boolean(value)) && (_jsxs("div", { className: "af-list-item__right-container", children: [!value && (Boolean(tag) || Boolean(date)) && !isMobile && (_jsxs("div", { className: "af-list-item__additional-data-container", children: [Boolean(tag) && (_jsx(Tag, { classModifier: "warning", ...tagProps, children: tag })), Boolean(date) && (_jsx("span", { className: "af-list-item__date", children: date }))] })), buttons.map((button) => (_jsx("div", { className: "af-list-item__button-container", children: _jsx(Button, { ...button }) }, button?.id))), Boolean(value) && _jsx("span", { className: "af-list-item__value", children: value })] }))] }));
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,100 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import download from "@material-symbols/svg-400/rounded/download_2-fill.svg";
|
3
|
+
import visibility from "@material-symbols/svg-400/rounded/visibility-fill.svg";
|
4
|
+
import { render, screen } from "@testing-library/react";
|
5
|
+
import userEvent from "@testing-library/user-event";
|
6
|
+
import { ContentTabItem } from "..";
|
7
|
+
import { ButtonVariants, Svg } from "../../../..";
|
8
|
+
describe("ContentTabList", () => {
|
9
|
+
const items = [
|
10
|
+
{
|
11
|
+
id: "1",
|
12
|
+
title: "Title 1",
|
13
|
+
subtitle: "Subtitle 1",
|
14
|
+
tag: "Tag 1",
|
15
|
+
date: "Date 1",
|
16
|
+
buttons: [
|
17
|
+
{
|
18
|
+
id: "download_button",
|
19
|
+
children: "Télécharger",
|
20
|
+
variant: ButtonVariants.ghost,
|
21
|
+
iconLeft: _jsx(Svg, { src: download, fill: "#00008F" }),
|
22
|
+
onClick: vi.fn(),
|
23
|
+
},
|
24
|
+
{
|
25
|
+
id: "display_button",
|
26
|
+
children: "Afficher",
|
27
|
+
variant: ButtonVariants.ghost,
|
28
|
+
iconLeft: _jsx(Svg, { src: visibility, fill: "#00008F" }),
|
29
|
+
onClick: vi.fn(),
|
30
|
+
},
|
31
|
+
],
|
32
|
+
},
|
33
|
+
{
|
34
|
+
id: "2",
|
35
|
+
title: "Title 2",
|
36
|
+
subtitle: "Subtitle 2",
|
37
|
+
tag: "Tag 2",
|
38
|
+
date: "Date 2",
|
39
|
+
value: "Value 2",
|
40
|
+
},
|
41
|
+
{
|
42
|
+
id: "3",
|
43
|
+
title: "Title 3",
|
44
|
+
value: "Value 3",
|
45
|
+
},
|
46
|
+
{
|
47
|
+
title: "Title 4",
|
48
|
+
date: "Date 4",
|
49
|
+
},
|
50
|
+
];
|
51
|
+
let originalWidth;
|
52
|
+
beforeEach(() => {
|
53
|
+
originalWidth = window.innerWidth;
|
54
|
+
});
|
55
|
+
afterEach(() => {
|
56
|
+
vi.stubGlobal("innerWidth", originalWidth);
|
57
|
+
});
|
58
|
+
it.each(items)("should render the items correctly", (item) => {
|
59
|
+
render(_jsx(ContentTabItem, { ...item }));
|
60
|
+
expect(screen.getByText(item.title)).toBeInTheDocument();
|
61
|
+
if (item.subtitle) {
|
62
|
+
expect(screen.getByText(item.subtitle)).toBeInTheDocument();
|
63
|
+
}
|
64
|
+
if (item.tag) {
|
65
|
+
expect(screen.getByText(item.tag)).toBeInTheDocument();
|
66
|
+
}
|
67
|
+
if (item.date) {
|
68
|
+
expect(screen.getByText(item.date)).toBeInTheDocument();
|
69
|
+
}
|
70
|
+
if (item.value) {
|
71
|
+
expect(screen.getByText(item.value)).toBeInTheDocument();
|
72
|
+
}
|
73
|
+
});
|
74
|
+
it.each(items)("should render the items correctly on mobile view", (item) => {
|
75
|
+
render(_jsx(ContentTabItem, { ...item, isMobile: true }));
|
76
|
+
expect(screen.getByText(item.title)).toBeInTheDocument();
|
77
|
+
if (item.subtitle) {
|
78
|
+
expect(screen.getByText(item.subtitle)).toBeInTheDocument();
|
79
|
+
}
|
80
|
+
if (item.tag) {
|
81
|
+
expect(screen.getByText(item.tag)).toBeInTheDocument();
|
82
|
+
}
|
83
|
+
if (item.date) {
|
84
|
+
expect(screen.getByText(item.date)).toBeInTheDocument();
|
85
|
+
}
|
86
|
+
if (item.value) {
|
87
|
+
expect(screen.getByText(item.value)).toBeInTheDocument();
|
88
|
+
}
|
89
|
+
});
|
90
|
+
it("should call onDownload when download button is clicked", async () => {
|
91
|
+
render(_jsx(ContentTabItem, { ...items[0] }));
|
92
|
+
await userEvent.click(screen.getByRole("button", { name: /Télécharger$/ }));
|
93
|
+
expect(items?.[0]?.buttons?.[0].onClick).toHaveBeenCalled();
|
94
|
+
});
|
95
|
+
it("should call onDisplay when display button is clicked", async () => {
|
96
|
+
render(_jsx(ContentTabItem, { ...items[0] }));
|
97
|
+
await userEvent.click(screen.getByRole("button", { name: /Afficher$/ }));
|
98
|
+
expect(items?.[0]?.buttons?.[1].onClick).toHaveBeenCalled();
|
99
|
+
});
|
100
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { ContentTabItem } from "./ContentTabItem";
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/List/ContentTabList/ContentTabList.scss";
|
2
|
+
import { type TContentTabItem } from "./ContentTabItem";
|
3
|
+
type ContentTabListProps = {
|
4
|
+
items: TContentTabItem[];
|
5
|
+
classModifier?: string;
|
6
|
+
};
|
7
|
+
export declare const ContentTabList: ({ items, classModifier, }: ContentTabListProps) => import("react/jsx-runtime").JSX.Element;
|
8
|
+
export {};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { List } from "../List";
|
3
|
+
import "@axa-fr/design-system-look-and-feel-css/dist/List/ContentTabList/ContentTabList.scss";
|
4
|
+
import { useIsSmallScreen } from "../../utilities";
|
5
|
+
import { ContentTabItem } from "./ContentTabItem";
|
6
|
+
const BREAKPOINT_SMALL = 668;
|
7
|
+
export const ContentTabList = ({ items, classModifier, }) => {
|
8
|
+
const isMobile = useIsSmallScreen(BREAKPOINT_SMALL);
|
9
|
+
return (_jsx(List, { classModifier: `list large extra-padding content-tab-list ${classModifier}`, tabIndex: -1, children: items.map(({ id, ...item }) => (_jsx(ContentTabItem, { ...item, isMobile: isMobile }, id ?? item.title))) }));
|
10
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
2
|
+
import type { ComponentProps } from "react";
|
3
|
+
import { ContentTabList } from "./ContentTabList";
|
4
|
+
declare const meta: Meta<typeof ContentTabList>;
|
5
|
+
export default meta;
|
6
|
+
export declare const ContentTabListWithButtons: StoryObj<ComponentProps<typeof ContentTabList>>;
|
7
|
+
export declare const ContentTabListWithValue: StoryObj<ComponentProps<typeof ContentTabList>>;
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import download from "@material-symbols/svg-400/rounded/download_2-fill.svg";
|
3
|
+
import visibility from "@material-symbols/svg-400/rounded/visibility-fill.svg";
|
4
|
+
import { ButtonVariants, Svg } from "../..";
|
5
|
+
import { ContentTabList } from "./ContentTabList";
|
6
|
+
const meta = {
|
7
|
+
title: "Components/List/ContentTabList",
|
8
|
+
component: ContentTabList,
|
9
|
+
};
|
10
|
+
export default meta;
|
11
|
+
const template = (args) => (_jsx(ContentTabList, { ...args }));
|
12
|
+
export const ContentTabListWithButtons = {
|
13
|
+
name: "ContentTabList with buttons",
|
14
|
+
render: template,
|
15
|
+
args: {
|
16
|
+
items: [
|
17
|
+
{
|
18
|
+
id: "1",
|
19
|
+
title: "Remboursement soins",
|
20
|
+
subtitle: "Titre onglet",
|
21
|
+
tag: "En attente",
|
22
|
+
date: "01/01/2024",
|
23
|
+
buttons: [
|
24
|
+
{
|
25
|
+
id: "download_button",
|
26
|
+
children: "Télécharger",
|
27
|
+
variant: ButtonVariants.ghost,
|
28
|
+
iconLeft: _jsx(Svg, { src: download }),
|
29
|
+
onClick: () => { },
|
30
|
+
},
|
31
|
+
],
|
32
|
+
},
|
33
|
+
{
|
34
|
+
id: "2",
|
35
|
+
title: "Remboursement soins",
|
36
|
+
tag: "En attente",
|
37
|
+
buttons: [
|
38
|
+
{
|
39
|
+
id: "download_button",
|
40
|
+
children: "Télécharger",
|
41
|
+
variant: ButtonVariants.ghost,
|
42
|
+
iconLeft: _jsx(Svg, { src: download }),
|
43
|
+
onClick: () => { },
|
44
|
+
},
|
45
|
+
{
|
46
|
+
id: "display_button",
|
47
|
+
children: "Afficher",
|
48
|
+
variant: ButtonVariants.ghost,
|
49
|
+
iconLeft: _jsx(Svg, { src: visibility }),
|
50
|
+
onClick: () => { },
|
51
|
+
},
|
52
|
+
],
|
53
|
+
},
|
54
|
+
],
|
55
|
+
classModifier: "",
|
56
|
+
},
|
57
|
+
};
|
58
|
+
export const ContentTabListWithValue = {
|
59
|
+
name: "ContentTabList with value",
|
60
|
+
render: template,
|
61
|
+
args: {
|
62
|
+
items: [
|
63
|
+
{
|
64
|
+
id: "1",
|
65
|
+
title: "Remboursement soins",
|
66
|
+
subtitle: "Titre onglet",
|
67
|
+
date: "01/01/2024",
|
68
|
+
value: "+ 11,86 €",
|
69
|
+
},
|
70
|
+
{
|
71
|
+
id: "2",
|
72
|
+
title: "Remboursement soins",
|
73
|
+
tag: "En attente",
|
74
|
+
value: "+ 11,86 €",
|
75
|
+
},
|
76
|
+
],
|
77
|
+
},
|
78
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|