@axa-fr/design-system-slash-react 0.2.0-beta.283 → 0.2.0-beta.285

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.
@@ -7,5 +7,5 @@ import { PreviousLink } from "./PreviousLink/PreviousLink";
7
7
  export const HeaderClient = ({ children, defaultActiveLink, previousLink, rightItem, }) => {
8
8
  const [activeLink, setActiveLink] = useState(defaultActiveLink);
9
9
  const resetActiveLink = useCallback(() => setActiveLink(defaultActiveLink), [defaultActiveLink]);
10
- return (_jsxs("header", { className: "af-header", children: [_jsxs("div", { className: "af-header-container", children: [_jsxs("div", { className: "af-header-left-item", children: [_jsx("img", { className: "af-logo", src: logo, alt: "Logo AXA" }), children && (_jsx(NavBar, { activeLink: activeLink, setActiveLink: setActiveLink, children: children }))] }), rightItem && _jsx("div", { className: "af-header-right-item", children: rightItem })] }), previousLink && (_jsx(PreviousLink, { handleClick: resetActiveLink, children: previousLink }))] }));
10
+ return (_jsxs("header", { className: "af-header", children: [_jsxs("div", { className: "af-header-container", children: [_jsxs("div", { className: "af-header-left-item", children: [_jsx("img", { className: "af-logo", src: logo, alt: "" }), children && (_jsx(NavBar, { activeLink: activeLink, setActiveLink: setActiveLink, children: children }))] }), rightItem && _jsx("div", { className: "af-header-right-item", children: rightItem })] }), previousLink && (_jsx(PreviousLink, { handleClick: resetActiveLink, children: previousLink }))] }));
11
11
  };
@@ -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 "../../Form/core";
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: "Client/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,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,4 @@
1
+ export declare enum ContentItemMonoSize {
2
+ XL = "xl",
3
+ M = "m"
4
+ }
@@ -0,0 +1,5 @@
1
+ export var ContentItemMonoSize;
2
+ (function (ContentItemMonoSize) {
3
+ ContentItemMonoSize["XL"] = "xl";
4
+ ContentItemMonoSize["M"] = "m";
5
+ })(ContentItemMonoSize || (ContentItemMonoSize = {}));
@@ -0,0 +1,3 @@
1
+ import "@axa-fr/design-system-slash-css/dist/List/ContentItemMono/ContentItemMono.scss";
2
+ export { ContentItemMonoSize } from "./constants";
3
+ export { ContentItemMono } from "./ContentItemMono";
@@ -0,0 +1,3 @@
1
+ import "@axa-fr/design-system-slash-css/dist/List/ContentItemMono/ContentItemMono.scss";
2
+ export { ContentItemMonoSize } from "./constants";
3
+ export { ContentItemMono } from "./ContentItemMono";
@@ -1,5 +1,8 @@
1
1
  import { Meta, StoryObj } from "@storybook/react";
2
+ import type { ComponentProps } from "react";
2
3
  import { List } from "./List";
3
4
  declare const meta: Meta<typeof List>;
4
5
  export default meta;
5
- export declare const Default: StoryObj<typeof List>;
6
+ export declare const Default: StoryObj<Omit<ComponentProps<typeof List>, "classModifier"> & {
7
+ classModifier: string[];
8
+ }>;
@@ -11,7 +11,7 @@ const meta = {
11
11
  export default meta;
12
12
  export const Default = {
13
13
  name: "List",
14
- render: (args) => _jsx(List, { ...args }),
14
+ render: ({ classModifier, ...args }) => (_jsx(List, { classModifier: classModifier.join(" "), ...args })),
15
15
  args: {
16
16
  children: [
17
17
  _jsx("div", { children: _jsx("span", { children: "Pr\u00E9nom NOM" }) }, "list-item-1"),
@@ -40,13 +40,17 @@ export const Default = {
40
40
  gap: "0.5rem",
41
41
  }, children: [_jsx(Svg, { src: trash }), _jsx("span", { children: "Supprimer le profil" })] }) }, "list-element-3"),
42
42
  ],
43
- classModifier: "",
43
+ classModifier: [],
44
44
  },
45
45
  argTypes: {
46
46
  classModifier: {
47
- options: ["", "large"],
48
- control: { type: "select" },
49
- defaultValue: "",
47
+ options: [
48
+ "large",
49
+ "first-separator-full-width",
50
+ "first-separator-full-width",
51
+ ],
52
+ control: { type: "multi-select" },
53
+ defaultValue: [],
50
54
  },
51
55
  },
52
56
  };
package/dist/client.d.ts CHANGED
@@ -16,6 +16,7 @@ export { Link } from "./Link/Link.client";
16
16
  export { List } from "./List";
17
17
  export { ClickList } from "./List/ClickList";
18
18
  export { ContentItemDuo } from "./List/ContentItemDuo";
19
+ export { ContentItemMono, ContentItemMonoSize } from "./List/ContentItemMono";
19
20
  export { ContentTabList } from "./List/ContentTabList";
20
21
  export { Loader } from "./Loader/Client";
21
22
  export { Modal } from "./ModalClient/Modal.client";
package/dist/client.js CHANGED
@@ -15,6 +15,7 @@ export { Link } from "./Link/Link.client";
15
15
  export { List } from "./List";
16
16
  export { ClickList } from "./List/ClickList";
17
17
  export { ContentItemDuo } from "./List/ContentItemDuo";
18
+ export { ContentItemMono, ContentItemMonoSize } from "./List/ContentItemMono";
18
19
  export { ContentTabList } from "./List/ContentTabList";
19
20
  export { Loader } from "./Loader/Client";
20
21
  export { Modal } from "./ModalClient/Modal.client";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axa-fr/design-system-slash-react",
3
- "version": "0.2.0-beta.283",
3
+ "version": "0.2.0-beta.285",
4
4
  "description": "",
5
5
  "exports": {
6
6
  "./agent": {
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "homepage": "https://github.com/AxaFrance/design-system#readme",
47
47
  "peerDependencies": {
48
- "@axa-fr/design-system-slash-css": "0.2.0-beta.283",
48
+ "@axa-fr/design-system-slash-css": "0.2.0-beta.285",
49
49
  "@material-symbols/svg-400": ">= 0.19.0",
50
50
  "react": ">= 18"
51
51
  },