diff --git a/docs/src/data/tailwind-migration-status.yaml b/docs/src/data/tailwind-migration-status.yaml index ceb29c80bf..4f31306798 100644 --- a/docs/src/data/tailwind-migration-status.yaml +++ b/docs/src/data/tailwind-migration-status.yaml @@ -106,8 +106,8 @@ TextOrbit: true Text: true TextLink: true Textarea: true -Timeline: false -TimelineStep: false +Timeline: true +TimelineStep: true Toast: true ToastRoot: true Tooltip: true diff --git a/packages/orbit-components/playwright/index.html b/packages/orbit-components/playwright/index.html index 610ddf8a43..3f057b3cf3 100644 --- a/packages/orbit-components/playwright/index.html +++ b/packages/orbit-components/playwright/index.html @@ -1,5 +1,5 @@ - + diff --git a/packages/orbit-components/src/Timeline/Timeline.ct-story.tsx b/packages/orbit-components/src/Timeline/Timeline.ct-story.tsx new file mode 100644 index 0000000000..2e24056c9a --- /dev/null +++ b/packages/orbit-components/src/Timeline/Timeline.ct-story.tsx @@ -0,0 +1,69 @@ +import * as React from "react"; + +import SPACINGS_AFTER from "../common/getSpacingToken/consts"; + +import Timeline, { TimelineStep } from "."; + +const DIRECTIONS = ["row", "column"] as const; +const TYPES = ["success", "warning", "critical", "info", undefined] as const; + +export default function TimelineStory() { + return ( +
+ {Object.values(SPACINGS_AFTER).map(spaceAfter => ( + + + + ))} + + {DIRECTIONS.map(direction => ( + <> + + + + + We’ll forward you all refunds from the carrier(s) after we receive it. + + + + + + We’ve received your request and will assign it to one of our agents. + + + We’ll review your request and apply for any available refund from the carrier(s) + + + We’ll wait for the carrier(s) to send us the refund and contact them again if + necessary. + + + The carrier has sent us a refund. There might be more depending on their policy. + + + We’ll forward you all refunds from the carrier(s) after we receive it. + + + + + {TYPES.map(type => ( + + ))} + + + + + + Children + + Children + + + + ))} +
+ ); +} diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx b/packages/orbit-components/src/Timeline/Timeline.ct.tsx new file mode 100644 index 0000000000..53ec18f204 --- /dev/null +++ b/packages/orbit-components/src/Timeline/Timeline.ct.tsx @@ -0,0 +1,23 @@ +import * as React from "react"; +import { test, expect } from "@playwright/experimental-ct-react"; + +import TimelineStory from "./Timeline.ct-story"; +import RenderInRtl from "../utils/rtl/RenderInRtl"; + +test.describe("visual Timeline", () => { + test("default", async ({ mount }) => { + const component = await mount(); + + await expect(component).toHaveScreenshot(); + }); + + test("rtl", async ({ mount }) => { + const component = await mount( + + + , + ); + + await expect(component).toHaveScreenshot(); + }); +}); diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-darwin.png new file mode 100644 index 0000000000..bd723a8b97 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-linux.png new file mode 100644 index 0000000000..541358881b Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Desktop-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-darwin.png new file mode 100644 index 0000000000..2afe962bb9 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-linux.png new file mode 100644 index 0000000000..4db0c0b6d4 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Desktop-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-darwin.png new file mode 100644 index 0000000000..d3daeff7df Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-linux.png new file mode 100644 index 0000000000..93fc134074 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Large-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-darwin.png new file mode 100644 index 0000000000..ec9f478493 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-linux.png new file mode 100644 index 0000000000..096d8cc41d Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Medium-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-darwin.png new file mode 100644 index 0000000000..a5080fccb1 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-linux.png new file mode 100644 index 0000000000..2a03560c89 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Small-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-darwin.png new file mode 100644 index 0000000000..c35062bf51 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-linux.png new file mode 100644 index 0000000000..d99bed8615 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-default-1-Tablet-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-darwin.png new file mode 100644 index 0000000000..2b10923715 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-linux.png new file mode 100644 index 0000000000..368c5d66aa Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Desktop-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-darwin.png new file mode 100644 index 0000000000..8b746f2c59 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-linux.png new file mode 100644 index 0000000000..a0400e4741 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Desktop-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-darwin.png new file mode 100644 index 0000000000..f0fee54a08 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-linux.png new file mode 100644 index 0000000000..8d13454efa Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Large-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-darwin.png new file mode 100644 index 0000000000..a835dd290a Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-linux.png new file mode 100644 index 0000000000..1930baead7 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Medium-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-darwin.png new file mode 100644 index 0000000000..41a2faa900 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-linux.png new file mode 100644 index 0000000000..60c5b57846 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Small-Mobile-linux.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-darwin.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-darwin.png new file mode 100644 index 0000000000..8e935965ae Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-darwin.png differ diff --git a/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-linux.png b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-linux.png new file mode 100644 index 0000000000..0ac2b9ebe2 Binary files /dev/null and b/packages/orbit-components/src/Timeline/Timeline.ct.tsx-snapshots/visual-Timeline-rtl-1-Tablet-linux.png differ diff --git a/packages/orbit-components/src/Timeline/TimelineStep/components/ProgressLine.tsx b/packages/orbit-components/src/Timeline/TimelineStep/components/ProgressLine.tsx new file mode 100644 index 0000000000..374b853fc2 --- /dev/null +++ b/packages/orbit-components/src/Timeline/TimelineStep/components/ProgressLine.tsx @@ -0,0 +1,72 @@ +import * as React from "react"; +import cx from "clsx"; + +import type { Type } from "../types"; +import useTheme from "../../../hooks/useTheme"; +import type { Theme } from "../../../defaultTheme"; + +export const getStatusColor = (theme: Theme, type?: Type): string => { + const colors = { + success: theme.orbit.colorTextSuccess, + warning: theme.orbit.colorTextWarning, + critical: theme.orbit.colorTextCritical, + info: theme.orbit.colorTextInfo, + }; + + return type ? colors[type] : theme.orbit.paletteCloudNormalHover; +}; + +interface Props { + desktop?: boolean; + last?: boolean; + nextStatus?: Type; + prevStatus?: Type; + status?: Type; +} + +const ProgressLine = ({ desktop, status, nextStatus, last, prevStatus }: Props) => { + const theme = useTheme(); + + const getBorderStyle = (): React.CSSProperties => { + if (desktop) { + if (status && !nextStatus && !last) { + return { + borderImageSlice: 1, + borderImageSource: `linear-gradient(to right, ${getStatusColor( + theme, + prevStatus, + )}, ${getStatusColor(theme, status)})`, + }; + } + } + + if (status && !nextStatus && !last) { + return { + borderImageSlice: 1, + borderImageSource: `linear-gradient(to bottom, ${getStatusColor( + theme, + prevStatus, + )}, ${getStatusColor(theme, status)})`, + }; + } + + return { + borderColor: getStatusColor(theme, status), + }; + }; + + return ( + + ); +}; + +export default ProgressLine; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/components/TextWrapper.tsx b/packages/orbit-components/src/Timeline/TimelineStep/components/TextWrapper.tsx new file mode 100644 index 0000000000..a214e78c38 --- /dev/null +++ b/packages/orbit-components/src/Timeline/TimelineStep/components/TextWrapper.tsx @@ -0,0 +1,16 @@ +import * as React from "react"; +import cx from "clsx"; + +type Props = React.PropsWithChildren<{ + active?: boolean; +}>; + +const TextWrapper = ({ active, children }: Props) => { + return ( +
p]:text-ink-dark" : "[&>p]:text-ink-light")}> + {children} +
+ ); +}; + +export default TextWrapper; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepDesktop.tsx b/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepDesktop.tsx index cc422b8615..926abd39db 100644 --- a/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepDesktop.tsx +++ b/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepDesktop.tsx @@ -1,30 +1,14 @@ import * as React from "react"; -import styled, { css } from "styled-components"; +import cx from "clsx"; -import StyledRelative from "../primitives/StyledRelative"; import TypeIcon from "./TypeIcon"; -import StyledProgressLine from "../primitives/StyledProgressLine"; -import StyledText from "../primitives/StyledText"; +import ProgressLine from "./ProgressLine"; +import TextWrapper from "./TextWrapper"; import Text from "../../../Text"; import Stack from "../../../Stack"; -import defaultTheme from "../../../defaultTheme"; import type { Props as StepProps, Type } from "../types"; import useTheme from "../../../hooks/useTheme"; -const StyledDescription = styled.div<{ active?: boolean }>` - ${({ theme, active }) => css` - max-width: 250px; - width: 100%; - > p { - color: ${active ? theme.orbit.paletteInkDark : theme.orbit.paletteInkLight}; - } - `} -`; - -StyledDescription.defaultProps = { - theme: defaultTheme, -}; - interface Props extends StepProps { last: boolean; prevType: Type; @@ -47,26 +31,26 @@ const TimelineStepDesktop = ({ return ( - - +
+ - - +
{subLabel && ( - + {subLabel} - + )} - + {label} - + {children && ( - +
p]:text-ink-dark" + : "[&>p]:text-ink-light", + )} + > {children} - +
)}
diff --git a/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepMobile.tsx b/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepMobile.tsx index b159dd2531..df1d3a2470 100644 --- a/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepMobile.tsx +++ b/packages/orbit-components/src/Timeline/TimelineStep/components/TimelineStepMobile.tsx @@ -1,11 +1,10 @@ import * as React from "react"; -import StyledRelative from "../primitives/StyledRelative"; import Text from "../../../Text"; import Stack from "../../../Stack"; -import StyledProgressLine from "../primitives/StyledProgressLine"; +import ProgressLine from "./ProgressLine"; import TypeIcon from "./TypeIcon"; -import StyledText from "../primitives/StyledText"; +import TextWrapper from "./TextWrapper"; import type { Props as StepProps, Type } from "../types"; interface Props extends StepProps { @@ -15,7 +14,7 @@ interface Props extends StepProps { const TimelineStepMobile = ({ type, subLabel, label, nextType, children, active, last }: Props) => { return ( - +
- {!last && } + {!last && } - + {label} - + {subLabel && ( - + {subLabel} - + )} {children && ( - + {children} - + )} - +
); }; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/components/TypeIcon.tsx b/packages/orbit-components/src/Timeline/TimelineStep/components/TypeIcon.tsx index 386a7d5380..cdb0a8136a 100644 --- a/packages/orbit-components/src/Timeline/TimelineStep/components/TypeIcon.tsx +++ b/packages/orbit-components/src/Timeline/TimelineStep/components/TypeIcon.tsx @@ -1,10 +1,10 @@ import * as React from "react"; +import cx from "clsx"; import CheckCircle from "../../../icons/CheckCircle"; import Circle from "../../../icons/CircleEmpty"; import AlertCircle from "../../../icons/AlertCircle"; import CloseCircle from "../../../icons/CloseCircle"; -import StyledIconWrapper from "../primitives/StyledIconWrapper"; import type { Type } from "../types"; const getTypeIcon = ({ type, active }: { type?: Type; active: boolean }) => { @@ -31,11 +31,41 @@ const getTypeIcon = ({ type, active }: { type?: Type; active: boolean }) => { return ; }; -const TypeIcon = ({ type, active, mobile }: { type?: Type; active: boolean; mobile?: boolean }) => { +const getBackgroundClassName = (type: Type): string => { + const classNames = { + success: "bg-green-normal", + warning: "bg-orange-normal", + critical: "bg-red-normal", + info: "bg-blue-normal", + }; + + return classNames[type]; +}; + +interface Props { + type?: Type; + active: boolean; + mobile?: boolean; +} + +const TypeIcon = ({ type, active, mobile }: Props) => { return ( - +
{getTypeIcon({ type, active })} - +
+
); }; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledIconWrapper.ts b/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledIconWrapper.ts deleted file mode 100644 index 581b558686..0000000000 --- a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledIconWrapper.ts +++ /dev/null @@ -1,54 +0,0 @@ -import styled, { css, keyframes } from "styled-components"; -import { convertHexToRgba } from "@kiwicom/orbit-design-tokens"; - -import defaultTheme from "../../../defaultTheme"; -import { renderStatus } from "./helpers"; -import type { Type } from "../types"; - -const pulseAnimation = keyframes` - 0% { - transform: scale(0.01); - } - - 50% { - transform: scale(1); - } - - 100% { - transform: scale(0.01); - } -`; - -const StyledIconWrapper = styled.div<{ mobile?: boolean; status?: Type; active?: boolean }>` - ${({ theme, mobile, status, active }) => css` - display: flex; - align-items: center; - justify-content: center; - min-width: ${mobile && theme.orbit.spaceLarge}; - z-index: 1; - text-align: center; - position: relative; - height: 20px; - line-height: ${theme.orbit.lineHeightTextSmall}; - &:after { - position: absolute; - top: 0px; - left: ${mobile ? "2px" : "-2px"}; - content: ""; - height: 20px; - width: 20px; - border-radius: 100%; - ${active && - css` - animation: ${pulseAnimation} 2.5s ease-in-out infinite; - `}; - background: ${status && convertHexToRgba(renderStatus(status, theme), 10)}; - } - `}; -`; - -StyledIconWrapper.defaultProps = { - theme: defaultTheme, -}; - -export default StyledIconWrapper; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledProgressLine.ts b/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledProgressLine.ts deleted file mode 100644 index b6d2d8664a..0000000000 --- a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledProgressLine.ts +++ /dev/null @@ -1,61 +0,0 @@ -import styled, { css } from "styled-components"; - -import type { Type } from "../types"; -import { left } from "../../../utils/rtl"; -import defaultTheme from "../../../defaultTheme"; -import { renderStatus } from "./helpers"; - -const getBorderStyle = ({ desktop, status, nextStatus, theme, last, prevStatus }) => { - if (desktop) { - if (status && !nextStatus && !last) { - return css` - border-image-slice: 1; - border-image-source: linear-gradient( - to right, - ${renderStatus(prevStatus, theme)}, - ${renderStatus(status, theme)} - ); - `; - } - } - - if (status && !nextStatus && !last) { - return css` - border-image-slice: 1; - border-image-source: linear-gradient( - to bottom, - ${renderStatus(prevStatus, theme)}, - ${renderStatus(status, theme)} - ); - `; - } - - return css` - border-color: ${renderStatus(status, theme)}; - `; -}; - -const StyledProgressLine = styled.span<{ - desktop?: boolean; - status?: Type; - nextStatus?: Type; - prevStatus?: Type; - last?: boolean; -}>` - ${({ desktop, theme, status, nextStatus, prevStatus, last }) => css` - position: ${!desktop && "absolute"}; - top: ${!desktop && "15px"}; - border-width: 1px; - border-style: ${!status ? "dashed" : "solid"}; - ${getBorderStyle({ desktop, theme, status, nextStatus, prevStatus, last })}; - ${left}: ${!desktop && "11px"}; - width: ${desktop && "50%"}; - height: ${!desktop && `calc(100% + 2px)`}; - `} -`; - -StyledProgressLine.defaultProps = { - theme: defaultTheme, -}; - -export default StyledProgressLine; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledRelative.ts b/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledRelative.ts deleted file mode 100644 index 39743fdd39..0000000000 --- a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledRelative.ts +++ /dev/null @@ -1,20 +0,0 @@ -import styled, { css } from "styled-components"; - -import defaultTheme from "../../../defaultTheme"; - -const StyledRelative = styled.div<{ inner?: boolean }>` - position: relative; - ${({ inner, theme }) => - inner && - css` - width: calc(100% + ${parseInt(theme.orbit.spaceSmall, 10) + 4}px); - display: flex; - align-items: center; - `}; -`; - -StyledRelative.defaultProps = { - theme: defaultTheme, -}; - -export default StyledRelative; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledText.ts b/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledText.ts deleted file mode 100644 index e9202b2015..0000000000 --- a/packages/orbit-components/src/Timeline/TimelineStep/primitives/StyledText.ts +++ /dev/null @@ -1,21 +0,0 @@ -import styled, { css } from "styled-components"; - -import defaultTheme from "../../../defaultTheme"; -import mq from "../../../utils/mediaQuery"; - -const StyledText = styled.div<{ active?: boolean }>` - ${({ theme, active }) => css` - > p { - color: ${active ? theme.orbit.paletteInkDark : theme.orbit.paletteInkLight}; - } - ${mq.desktop(css` - min-height: ${theme.orbit.spaceMedium}; - `)}; - `}; -`; - -StyledText.defaultProps = { - theme: defaultTheme, -}; - -export default StyledText; diff --git a/packages/orbit-components/src/Timeline/TimelineStep/primitives/helpers.ts b/packages/orbit-components/src/Timeline/TimelineStep/primitives/helpers.ts deleted file mode 100644 index 3e60c1f97a..0000000000 --- a/packages/orbit-components/src/Timeline/TimelineStep/primitives/helpers.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Type } from "../types"; -import type defaultTheme from "../../../defaultTheme"; - -export const renderStatus = (type: Type, theme: typeof defaultTheme): string => { - if (type === "success") return theme.orbit.colorTextSuccess; - if (type === "warning") return theme.orbit.colorTextWarning; - if (type === "critical") return theme.orbit.colorTextCritical; - if (type === "info") return theme.orbit.colorTextInfo; - - return theme.orbit.paletteCloudNormalHover; -}; - -export default renderStatus; diff --git a/packages/orbit-components/src/Timeline/index.tsx b/packages/orbit-components/src/Timeline/index.tsx index 3a03685abb..03d1d0552b 100644 --- a/packages/orbit-components/src/Timeline/index.tsx +++ b/packages/orbit-components/src/Timeline/index.tsx @@ -1,26 +1,14 @@ "use client"; import * as React from "react"; -import styled from "styled-components"; +import cx from "clsx"; -import type * as Common from "../common/types"; import Stack from "../Stack"; import useMediaQuery from "../hooks/useMediaQuery"; import { TimelineStatusProvider, TimelineStepProvider } from "./TimelineContext"; -import getSpacingToken from "../common/getSpacingToken"; -import themeDefault from "../defaultTheme"; +import { spaceAfterClasses } from "../common/tailwind"; import type { Props } from "./types"; -const WrapperStyled = styled.div<{ spaceAfter?: Common.SpaceAfterSizes }>` - position: relative; - overflow: hidden; - margin-bottom: ${getSpacingToken}; -`; - -WrapperStyled.defaultProps = { - theme: themeDefault, -}; - const Timeline = ({ children, spaceAfter, direction, dataTest, id }: Props) => { const childrenArr = React.Children.toArray(children); const { isDesktop } = useMediaQuery(); @@ -36,7 +24,14 @@ const Timeline = ({ children, spaceAfter, direction, dataTest, id }: Props) => { ); return childrenArr && childrenArr.length > 0 ? ( - +
{React.Children.map(childrenArr, (child, i) => { @@ -55,7 +50,7 @@ const Timeline = ({ children, spaceAfter, direction, dataTest, id }: Props) => { })} - +
) : null; }; diff --git a/packages/orbit-tailwind-preset/src/__tests__/__snapshots__/configs.test.ts.snap b/packages/orbit-tailwind-preset/src/__tests__/__snapshots__/configs.test.ts.snap index 32a763963a..b3b381e4d7 100644 --- a/packages/orbit-tailwind-preset/src/__tests__/__snapshots__/configs.test.ts.snap +++ b/packages/orbit-tailwind-preset/src/__tests__/__snapshots__/configs.test.ts.snap @@ -2312,6 +2312,17 @@ exports[`orbitPreset should have preflight disabled 1`] = ` "transform": "scale(2)", }, }, + "pulse-zero": { + "0%": { + "transform": "scale(0.01)", + }, + "100%": { + "transform": "scale(0.01)", + }, + "50%": { + "transform": "scale(1)", + }, + }, "slow-pulse": { "0%": { "opacity": "1", diff --git a/packages/orbit-tailwind-preset/src/index.ts b/packages/orbit-tailwind-preset/src/index.ts index 98a09c7f85..2e780ef11e 100644 --- a/packages/orbit-tailwind-preset/src/index.ts +++ b/packages/orbit-tailwind-preset/src/index.ts @@ -271,6 +271,11 @@ export default function orbitTailwindPreset(options?: Options): Config { "50%": { transform: "scale(2)" }, "100%": { transform: "scale(1)" }, }, + "pulse-zero": { + "0%": { transform: "scale(0.01)" }, + "50%": { transform: "scale(1)" }, + "100%": { transform: "scale(0.01)" }, + }, "toast-fade-in": { "0%": { opacity: "0", transform: "translateY(-20px)" }, "100%": { opacity: "1", transform: "translateY(0)" },