Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions lib/src/divider/Divider.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
import React from "react";
import Title from "../../.storybook/components/Title";
import styled from "styled-components";
import DxcDivider from "./Divider";
import { DxcFlex, DxcParagraph } from "../main";
import ExampleContainer from "../../.storybook/components/ExampleContainer";

export default {
title: "Divider",
component: DxcDivider,
};

export const Chromatic = () => (
<>
<Title title="Default" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="column">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
<Title title="Default strong" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="column">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider weight="strong" />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
<Title title="Default dark grey" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="column">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider color="darkGrey" />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
<Title title="Vertical" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="row">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider orientation="vertical" />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
<Title title="Vertical strong" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="row">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider orientation="vertical" weight="strong" />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
<Title title="Vertical dark grey" level={4} />
<ExampleContainer>
<DxcFlex gap="1rem" direction="row">
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
<DxcDivider orientation="vertical" color="darkGrey" />
<DxcParagraph>
Lorem ipsum dolor sit amet consectetur. Tincidunt sed pharetra mollis duis volutpat urna. Hendrerit aliquet et
arcu purus. Sodales elementum sollicitudin consequat elementum tortor. Lectus eget cursus ut ac pharetra
lobortis integer eu. Potenti amet ac id risus ac nunc orci nibh. Tempus vitae vitae aenean arcu. Nibh
tristique porta dui enim eget tristique rutrum. Quisque faucibus suscipit nibh est sed. Netus venenatis congue
diam in dui morbi dignissim lorem. Urna aliquet sem in tincidunt. Nunc arcu nec fringilla enim purus ut justo
nisi. Vel mus ut ornare faucibus blandit diam sit vestibulum massa. Semper nullam sit sagittis hendrerit
augue. In fermentum metus proin arcu faucibus proin nibh sit. Vel integer sed enim in sed vel nec ut vitae.
Commodo sagittis volutpat id lorem.
</DxcParagraph>
</DxcFlex>
</ExampleContainer>
</>
);

const FixedHeightDiv = styled.div`
height: 240px;
`;
17 changes: 17 additions & 0 deletions lib/src/divider/Divider.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import React from "react";
import { render } from "@testing-library/react";
import DxcDivider from "./Divider";

describe("Divider Component", () => {
test("Default renders horizontal divider correctly", () => {
const { getByRole } = render(<DxcDivider />);
const divider = getByRole("separator");
expect(divider.getAttribute("aria-orientation")).toBe("horizontal");
});

test("Renders vertical divider correctly", () => {
const { getByRole } = render(<DxcDivider orientation="vertical" />);
const divider = getByRole("separator");
expect(divider.getAttribute("aria-orientation")).toBe("vertical");
});
});
29 changes: 29 additions & 0 deletions lib/src/divider/Divider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import React from "react";
import styled from "styled-components";
import DividerPropsType from "./types";
import CoreTokens from "../common/coreTokens";

const DxcDivider = ({
orientation = "horizontal",
weight = "regular",
color = "default",
}: DividerPropsType): JSX.Element => (
<StyledDivider
orientation={orientation}
weight={weight}
color={color}
aria-orientation={orientation}
/>
);

const StyledDivider = styled.hr<DividerPropsType>`
${({ orientation, weight, color }) => `
border-color: ${color === "default" ? CoreTokens.color_grey_400 : CoreTokens.color_grey_700};
${orientation === "horizontal" ? "width" : "min-height"}: 100%;
${orientation === "horizontal" ? "height" : "width"}: 0px;
border-width: ${weight === "regular" ? "1px" : "2px"};
margin: 0px;
`}
`;

export default DxcDivider;
16 changes: 16 additions & 0 deletions lib/src/divider/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
type Props = {
/**
* The divider can be showed in horizontal or vertical
*/
orientation?: "horizontal" | "vertical";
/**
* Modifies the thickness of the divider.
*/
weight?: "regular" | "strong";
/**
* Modifies the color of the divider
*/
color?: "default" | "darkGrey";
};

export default Props;