@vectara/vectara-ui 15.9.6 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/index.d.ts +4 -3
- package/lib/components/index.js +2 -1
- package/lib/components/steps/Step.d.ts +1 -6
- package/lib/components/steps/Step.js +6 -18
- package/lib/components/steps/Steps.d.ts +6 -3
- package/lib/components/steps/Steps.js +3 -6
- package/lib/components/steps/_index.scss +0 -13
- package/lib/components/steps/types.d.ts +1 -1
- package/lib/components/stepsVertical/StepVertical.d.ts +11 -0
- package/lib/components/stepsVertical/StepVertical.js +35 -0
- package/lib/components/stepsVertical/StepsVertical.d.ts +9 -0
- package/lib/components/stepsVertical/StepsVertical.js +27 -0
- package/lib/components/stepsVertical/_index.scss +81 -0
- package/lib/components/stepsVertical/types.d.ts +1 -0
- package/lib/components/stepsVertical/types.js +1 -0
- package/lib/styles/index.css +71 -10
- package/package.json +1 -1
- package/src/docs/pages/steps/CustomSteps.tsx +2 -31
- package/src/docs/pages/steps/InteractiveSteps.tsx +3 -3
- package/src/docs/pages/steps/StepSizes.tsx +2 -6
- package/src/docs/pages/steps/StepStatuses.tsx +2 -12
- package/src/docs/pages/steps/index.tsx +0 -7
- package/src/docs/pages/stepsVertical/VerticalSteps.tsx +41 -0
- package/src/docs/pages/stepsVertical/index.tsx +15 -0
- package/src/docs/pages.tsx +16 -1
- package/src/docs/pages/steps/BasicSteps.tsx +0 -25
|
@@ -73,7 +73,8 @@ import { SPINNER_COLOR, SPINNER_SIZE } from "./spinner/types";
|
|
|
73
73
|
import { Stat, VuiStatList } from "./statList/StatList";
|
|
74
74
|
import { VuiStat } from "./stat/Stat";
|
|
75
75
|
import { VuiStatus } from "./status/Status";
|
|
76
|
-
import { VuiSteps, StepStatus, StepSize,
|
|
76
|
+
import { VuiSteps, StepStatus, StepSize, Steps } from "./steps/Steps";
|
|
77
|
+
import { VuiStepsVertical, StepsVertical, StepVerticalStatus } from "./stepsVertical/StepsVertical";
|
|
77
78
|
import { SKELETON_COLOR, VuiSkeleton } from "./skeleton/Skeleton";
|
|
78
79
|
import { VuiSummary, VuiSummaryCitation } from "./summary";
|
|
79
80
|
import { VuiTable } from "./table/Table";
|
|
@@ -93,5 +94,5 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
93
94
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
94
95
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
95
96
|
import { toRgb, toRgba } from "./context/Theme";
|
|
96
|
-
export type { AnchorSide, AppContentPadding, ButtonColor, CalloutColor, ChatLanguage, ChatStyle, ChatTurn, CheckboxConfig, CodeEditorColorConfig, CodeEditorError, CodeLanguage, InfoListItemType, InfoListType, InfoTableColumnAlign, InfoTableRow, InfoTableRowType, LinkProps, MenuItem, OptionListItem, Pagination, RadioButtonConfig, SearchResult, SearchSuggestion, Sections, SectionItem, Stat, StepStatus, StepSize, TabSize, Tree, TreeItem
|
|
97
|
-
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, ICON_COLOR, ICON_SIZE, ICON_TYPE, PROGRESS_BAR_COLOR, SPACER_SIZE, SPINNER_COLOR, SKELETON_COLOR, SPINNER_SIZE, TAB_SIZE, TEXT_COLOR, TEXT_SIZE, TITLE_SIZE, addNotification, copyToClipboard, generateTokensProvider, toRgb, toRgba, VuiAccordion, VuiAccountButton, VuiAppContent, VuiAppHeader, VuiAppLayout, VuiAppSideNav, VuiAppSideNavLink, VuiAppSideNavGroup, VuiBadge, VuiButtonPrimary, VuiButtonSecondary, VuiButtonTertiary, VuiIconButton, VuiCallout, VuiCard, VuiChat, VuiCheckbox, VuiCode, VuiCodeEditor, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSimpleCard, VuiSimpleGrid, VuiSpacer, VuiSpinner, VuiStat, VuiStatList, VuiStatus, VuiSteps, VuiSummary, VuiSkeleton, VuiSummaryCitation, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTable, VuiTab, VuiTabbedRoutes, VuiTabs, VuiTabsNavigator, VuiText, VuiTextArea, VuiTextColor, VuiTextInput, VuiTimeline, VuiTimelineItem, VuiTitle, VuiToggle, VuiTooltip, VuiTopicButton };
|
|
97
|
+
export type { AnchorSide, AppContentPadding, ButtonColor, CalloutColor, ChatLanguage, ChatStyle, ChatTurn, CheckboxConfig, CodeEditorColorConfig, CodeEditorError, CodeLanguage, InfoListItemType, InfoListType, InfoTableColumnAlign, InfoTableRow, InfoTableRowType, LinkProps, MenuItem, OptionListItem, Pagination, RadioButtonConfig, SearchResult, SearchSuggestion, Sections, SectionItem, Stat, StepStatus, StepSize, Steps, StepsVertical, StepVerticalStatus, TabSize, Tree, TreeItem };
|
|
98
|
+
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, ICON_COLOR, ICON_SIZE, ICON_TYPE, PROGRESS_BAR_COLOR, SPACER_SIZE, SPINNER_COLOR, SKELETON_COLOR, SPINNER_SIZE, TAB_SIZE, TEXT_COLOR, TEXT_SIZE, TITLE_SIZE, addNotification, copyToClipboard, generateTokensProvider, toRgb, toRgba, VuiAccordion, VuiAccountButton, VuiAppContent, VuiAppHeader, VuiAppLayout, VuiAppSideNav, VuiAppSideNavLink, VuiAppSideNavGroup, VuiBadge, VuiButtonPrimary, VuiButtonSecondary, VuiButtonTertiary, VuiIconButton, VuiCallout, VuiCard, VuiChat, VuiCheckbox, VuiCode, VuiCodeEditor, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSimpleCard, VuiSimpleGrid, VuiSpacer, VuiSpinner, VuiStat, VuiStatList, VuiStatus, VuiSteps, VuiStepsVertical, VuiSummary, VuiSkeleton, VuiSummaryCitation, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTable, VuiTab, VuiTabbedRoutes, VuiTabs, VuiTabsNavigator, VuiText, VuiTextArea, VuiTextColor, VuiTextInput, VuiTimeline, VuiTimelineItem, VuiTitle, VuiToggle, VuiTooltip, VuiTopicButton };
|
package/lib/components/index.js
CHANGED
|
@@ -67,6 +67,7 @@ import { VuiStatList } from "./statList/StatList";
|
|
|
67
67
|
import { VuiStat } from "./stat/Stat";
|
|
68
68
|
import { VuiStatus } from "./status/Status";
|
|
69
69
|
import { VuiSteps } from "./steps/Steps";
|
|
70
|
+
import { VuiStepsVertical } from "./stepsVertical/StepsVertical";
|
|
70
71
|
import { SKELETON_COLOR, VuiSkeleton } from "./skeleton/Skeleton";
|
|
71
72
|
import { VuiSummary, VuiSummaryCitation } from "./summary";
|
|
72
73
|
import { VuiTable } from "./table/Table";
|
|
@@ -86,4 +87,4 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
86
87
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
87
88
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
88
89
|
import { toRgb, toRgba } from "./context/Theme";
|
|
89
|
-
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, ICON_COLOR, ICON_SIZE, ICON_TYPE, PROGRESS_BAR_COLOR, SPACER_SIZE, SPINNER_COLOR, SKELETON_COLOR, SPINNER_SIZE, TAB_SIZE, TEXT_COLOR, TEXT_SIZE, TITLE_SIZE, addNotification, copyToClipboard, generateTokensProvider, toRgb, toRgba, VuiAccordion, VuiAccountButton, VuiAppContent, VuiAppHeader, VuiAppLayout, VuiAppSideNav, VuiAppSideNavLink, VuiAppSideNavGroup, VuiBadge, VuiButtonPrimary, VuiButtonSecondary, VuiButtonTertiary, VuiIconButton, VuiCallout, VuiCard, VuiChat, VuiCheckbox, VuiCode, VuiCodeEditor, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSimpleCard, VuiSimpleGrid, VuiSpacer, VuiSpinner, VuiStat, VuiStatList, VuiStatus, VuiSteps, VuiSummary, VuiSkeleton, VuiSummaryCitation, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTable, VuiTab, VuiTabbedRoutes, VuiTabs, VuiTabsNavigator, VuiText, VuiTextArea, VuiTextColor, VuiTextInput, VuiTimeline, VuiTimelineItem, VuiTitle, VuiToggle, VuiTooltip, VuiTopicButton };
|
|
90
|
+
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, ICON_COLOR, ICON_SIZE, ICON_TYPE, PROGRESS_BAR_COLOR, SPACER_SIZE, SPINNER_COLOR, SKELETON_COLOR, SPINNER_SIZE, TAB_SIZE, TEXT_COLOR, TEXT_SIZE, TITLE_SIZE, addNotification, copyToClipboard, generateTokensProvider, toRgb, toRgba, VuiAccordion, VuiAccountButton, VuiAppContent, VuiAppHeader, VuiAppLayout, VuiAppSideNav, VuiAppSideNavLink, VuiAppSideNavGroup, VuiBadge, VuiButtonPrimary, VuiButtonSecondary, VuiButtonTertiary, VuiIconButton, VuiCallout, VuiCard, VuiChat, VuiCheckbox, VuiCode, VuiCodeEditor, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSimpleCard, VuiSimpleGrid, VuiSpacer, VuiSpinner, VuiStat, VuiStatList, VuiStatus, VuiSteps, VuiStepsVertical, VuiSummary, VuiSkeleton, VuiSummaryCitation, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTable, VuiTab, VuiTabbedRoutes, VuiTabs, VuiTabsNavigator, VuiText, VuiTextArea, VuiTextColor, VuiTextInput, VuiTimeline, VuiTimelineItem, VuiTitle, VuiToggle, VuiTooltip, VuiTopicButton };
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
2
|
import { StepSize, StepStatus } from "./types";
|
|
3
|
-
export type
|
|
3
|
+
export type StepProps = {
|
|
4
4
|
title: React.ReactNode;
|
|
5
5
|
status?: StepStatus;
|
|
6
6
|
subTitle?: React.ReactNode;
|
|
7
7
|
onClick?: () => void;
|
|
8
|
-
value?: string | number;
|
|
9
|
-
icon?: ReactNode;
|
|
10
8
|
className?: string;
|
|
11
9
|
["data-testid"]?: string;
|
|
12
|
-
};
|
|
13
|
-
type StepProps = Omit<VuiStepProps, "step" | "icon"> & {
|
|
14
10
|
size?: StepSize;
|
|
15
11
|
stepNode: ReactNode;
|
|
16
12
|
};
|
|
17
13
|
export declare const VuiStep: ({ title, status, subTitle, onClick, stepNode, size, className, "data-testid": dataTestId }: StepProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export {};
|
|
@@ -7,18 +7,12 @@ const statusToClassMap = {
|
|
|
7
7
|
complete: "complete",
|
|
8
8
|
current: "current",
|
|
9
9
|
incomplete: "incomplete",
|
|
10
|
-
disabled: "disabled",
|
|
11
10
|
warning: "warning",
|
|
12
|
-
danger: "danger"
|
|
13
|
-
loading: "loading"
|
|
11
|
+
danger: "danger"
|
|
14
12
|
};
|
|
15
13
|
export const VuiStep = ({ title, status = "incomplete", subTitle, onClick, stepNode, size = "s", className, "data-testid": dataTestId }) => {
|
|
16
|
-
const
|
|
17
|
-
const stepContainerClasses = classNames("vuiStep", className, {
|
|
18
|
-
"vuiStep--clickable": isClickable
|
|
19
|
-
});
|
|
14
|
+
const stepContainerClasses = classNames("vuiStep", className);
|
|
20
15
|
const numberClasses = classNames("vuiStep__number", `vuiStep__number--${statusToClassMap[status]}`, {
|
|
21
|
-
"vuiStep__number--clickable": isClickable,
|
|
22
16
|
[`vuiStep__number--${size}`]: size
|
|
23
17
|
});
|
|
24
18
|
const titleClasses = classNames("vuiStep__title", {
|
|
@@ -27,20 +21,14 @@ export const VuiStep = ({ title, status = "incomplete", subTitle, onClick, stepN
|
|
|
27
21
|
const subTitleClasses = classNames("vuiStep__subTitle", {
|
|
28
22
|
"vuiStep__subTitle--current": status === "current"
|
|
29
23
|
});
|
|
30
|
-
const handleClick = () => {
|
|
31
|
-
if (isClickable) {
|
|
32
|
-
onClick();
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
24
|
const handleKeyDown = (event) => {
|
|
36
|
-
if (
|
|
25
|
+
if (!onClick)
|
|
26
|
+
return;
|
|
27
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
37
28
|
event.preventDefault();
|
|
38
29
|
onClick();
|
|
39
30
|
}
|
|
40
31
|
};
|
|
41
32
|
const stepContent = (_jsxs(_Fragment, { children: [_jsx("div", Object.assign({ className: "vuiSteps__circleWrapper" }, { children: _jsx("div", Object.assign({ className: numberClasses }, { children: stepNode })) })), _jsx("div", Object.assign({ className: "vuiSteps__contentWrapper" }, { children: _jsx(VuiFlexContainer, Object.assign({ direction: "column", alignItems: "center", spacing: "xs" }, { children: _jsxs(VuiFlexItem, Object.assign({ grow: false }, { children: [_jsx(VuiText, Object.assign({ size: "s", className: titleClasses }, { children: _jsx("div", Object.assign({ className: "vuiStep__titleText" }, { children: title })) })), subTitle && _jsx("div", Object.assign({ className: subTitleClasses }, { children: subTitle }))] })) })) }))] }));
|
|
42
|
-
|
|
43
|
-
return (_jsx("button", Object.assign({ className: stepContainerClasses, onKeyDown: handleKeyDown, onClick: handleClick, type: "button", "aria-current": status === "current" ? "step" : undefined, "data-testid": dataTestId, "data-status": status }, { children: stepContent })));
|
|
44
|
-
}
|
|
45
|
-
return (_jsx("div", Object.assign({ className: stepContainerClasses, "aria-current": status === "current" ? "step" : undefined, "data-testid": dataTestId }, { children: stepContent })));
|
|
33
|
+
return (_jsx("button", Object.assign({ className: stepContainerClasses, onKeyDown: handleKeyDown, onClick: onClick, type: "button", "aria-current": status === "current" ? "step" : undefined, "data-testid": dataTestId, "data-status": status }, { children: stepContent })));
|
|
46
34
|
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StepProps } from "./Step";
|
|
2
2
|
import { StepSize, StepStatus } from "./types";
|
|
3
|
-
export type {
|
|
3
|
+
export type { StepSize, StepStatus };
|
|
4
|
+
export type Steps = Array<Omit<StepProps & {
|
|
5
|
+
icon?: React.ReactNode;
|
|
6
|
+
}, "stepNode">>;
|
|
4
7
|
type Props = {
|
|
5
|
-
steps:
|
|
8
|
+
steps: Steps;
|
|
6
9
|
className?: string;
|
|
7
10
|
size?: StepSize;
|
|
8
11
|
"data-testid"?: string;
|
|
@@ -13,16 +13,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
import classNames from "classnames";
|
|
14
14
|
import { BiCheck, BiError, BiSolidHand } from "react-icons/bi";
|
|
15
15
|
import { VuiIcon } from "../icon/Icon";
|
|
16
|
-
import { VuiSpinner } from "../spinner/Spinner";
|
|
17
16
|
import { VuiStep } from "./Step";
|
|
18
17
|
const statusToColor = {
|
|
19
18
|
complete: "success",
|
|
20
19
|
current: "primary",
|
|
21
20
|
incomplete: "subdued",
|
|
22
|
-
disabled: "neutral",
|
|
23
21
|
warning: "warning",
|
|
24
|
-
danger: "danger"
|
|
25
|
-
loading: "accent"
|
|
22
|
+
danger: "danger"
|
|
26
23
|
};
|
|
27
24
|
export const VuiSteps = (_a) => {
|
|
28
25
|
var { steps, className, size = "s", "data-testid": dataTestId } = _a, rest = __rest(_a, ["steps", "className", "size", "data-testid"]);
|
|
@@ -32,7 +29,7 @@ export const VuiSteps = (_a) => {
|
|
|
32
29
|
const totalSteps = steps.length;
|
|
33
30
|
const currentStepIndex = steps.findIndex((step) => step.status === "current");
|
|
34
31
|
return (_jsx("div", Object.assign({ className: classes, "data-testid": dataTestId }, rest, { children: _jsx("div", Object.assign({ className: "vuiSteps__container" }, { children: steps.map((step, index) => {
|
|
35
|
-
var _a, _b, _c
|
|
32
|
+
var _a, _b, _c;
|
|
36
33
|
const isFirstStep = index === 0;
|
|
37
34
|
const isLastStep = index === totalSteps - 1;
|
|
38
35
|
const stepContainerClasses = classNames("vuiSteps__stepContainer", {
|
|
@@ -42,6 +39,6 @@ export const VuiSteps = (_a) => {
|
|
|
42
39
|
const icon = (_a = step.icon) !== null && _a !== void 0 ? _a : (step.status === "complete" ? (_jsx(BiCheck, {})) : step.status === "danger" ? (_jsx(BiError, {})) : step.status === "warning" ? (_jsx(BiSolidHand, {})) : null);
|
|
43
40
|
return (_jsxs("div", Object.assign({ className: stepContainerClasses }, { children: [!isLastStep && (_jsx("div", { className: classNames("vuiSteps__connector", {
|
|
44
41
|
"vuiSteps__connector--complete": index < currentStepIndex
|
|
45
|
-
}) })), _jsx(VuiStep, { title: step.title, status: step.status, onClick: step.onClick, "data-testid": (_b = step["data-testid"]) !== null && _b !== void 0 ? _b : `${dataTestId}-step-${index}`, stepNode:
|
|
42
|
+
}) })), _jsx(VuiStep, { title: step.title, status: step.status, onClick: step.onClick, "data-testid": (_b = step["data-testid"]) !== null && _b !== void 0 ? _b : `${dataTestId}-step-${index}`, stepNode: icon ? (_jsx(VuiIcon, Object.assign({ color: statusToColor[(_c = step.status) !== null && _c !== void 0 ? _c : "incomplete"], size: size === "xs" ? undefined : size }, { children: icon }))) : size === "xs" ? null : (_jsx("span", Object.assign({ className: "vuiStep__numberText" }, { children: index + 1 }))), size: size, subTitle: step.subTitle })] }), index));
|
|
46
43
|
}) })) })));
|
|
47
44
|
};
|
|
@@ -82,10 +82,6 @@ $stepSizeM: 36px;
|
|
|
82
82
|
border-radius: $sizeXxs;
|
|
83
83
|
transition: all 0.2s ease;
|
|
84
84
|
|
|
85
|
-
&--clickable {
|
|
86
|
-
cursor: pointer;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
85
|
.vuiSpinner {
|
|
90
86
|
width: var(--step-size);
|
|
91
87
|
height: var(--step-size);
|
|
@@ -144,15 +140,6 @@ $stepSizeM: 36px;
|
|
|
144
140
|
&--danger {
|
|
145
141
|
background-color: var(--vui-color-danger-lighter-shade);
|
|
146
142
|
}
|
|
147
|
-
|
|
148
|
-
&--disabled {
|
|
149
|
-
background-color: var(--vui-color-light-shade);
|
|
150
|
-
color: var(--vui-color-dark-shade);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
&--clickable {
|
|
154
|
-
cursor: pointer;
|
|
155
|
-
}
|
|
156
143
|
}
|
|
157
144
|
|
|
158
145
|
.vuiStep__numberText {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type StepStatus = "complete" | "current" | "incomplete" | "
|
|
1
|
+
export type StepStatus = "complete" | "current" | "incomplete" | "warning" | "danger";
|
|
2
2
|
export type StepSize = "xs" | "s" | "m";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StepVerticalStatus } from "./types";
|
|
2
|
+
export type Props = {
|
|
3
|
+
title: React.ReactNode;
|
|
4
|
+
status: StepVerticalStatus;
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
onClick: () => void;
|
|
7
|
+
index: number;
|
|
8
|
+
icon?: React.ReactNode;
|
|
9
|
+
["data-testid"]?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const VuiStepVertical: ({ title, status, isActive, onClick, index, icon, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import classNames from "classnames";
|
|
14
|
+
import { VuiIcon } from "../icon/Icon";
|
|
15
|
+
const statusToColor = {
|
|
16
|
+
complete: "success",
|
|
17
|
+
current: "primary",
|
|
18
|
+
incomplete: "subdued",
|
|
19
|
+
warning: "warning",
|
|
20
|
+
danger: "danger"
|
|
21
|
+
};
|
|
22
|
+
const statusToClassMap = {
|
|
23
|
+
complete: "complete",
|
|
24
|
+
incomplete: "incomplete",
|
|
25
|
+
warning: "warning",
|
|
26
|
+
danger: "danger"
|
|
27
|
+
};
|
|
28
|
+
export const VuiStepVertical = (_a) => {
|
|
29
|
+
var { title, status, isActive, onClick, index, icon } = _a, rest = __rest(_a, ["title", "status", "isActive", "onClick", "index", "icon"]);
|
|
30
|
+
const classes = classNames("vuiStepVertical", `vuiStepVertical--${statusToClassMap[status]}`, {
|
|
31
|
+
"vuiStepVertical-isActive": isActive
|
|
32
|
+
});
|
|
33
|
+
const finalIcon = (_jsx("div", Object.assign({ className: "vuiStepVerticalContainer__icon" }, { children: icon && (_jsx(VuiIcon, Object.assign({ size: "s", type: "token", color: statusToColor[status !== null && status !== void 0 ? status : "incomplete"] }, { children: icon }))) })));
|
|
34
|
+
return (_jsxs("button", Object.assign({ className: classes, onClick: onClick }, rest, { children: [_jsxs("div", Object.assign({ className: "vuiStepVertical__index" }, { children: [index, "."] })), _jsx("div", Object.assign({ className: "vuiStepVertical__content" }, { children: _jsx("div", { children: title }) })), finalIcon] })));
|
|
35
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Props as StepVerticalProps } from "./StepVertical";
|
|
2
|
+
export type { StepVerticalStatus } from "./types";
|
|
3
|
+
export type StepsVertical = Omit<StepVerticalProps, "index" | "icon">[];
|
|
4
|
+
type Props = {
|
|
5
|
+
steps: StepsVertical;
|
|
6
|
+
className?: string;
|
|
7
|
+
"data-testid"?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const VuiStepsVertical: ({ steps, className, "data-testid": dataTestId, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import classNames from "classnames";
|
|
14
|
+
import { VuiStepVertical } from "./StepVertical";
|
|
15
|
+
import { BiCheck, BiError, BiSolidHand } from "react-icons/bi";
|
|
16
|
+
export const VuiStepsVertical = (_a) => {
|
|
17
|
+
var { steps, className, "data-testid": dataTestId } = _a, rest = __rest(_a, ["steps", "className", "data-testid"]);
|
|
18
|
+
const classes = classNames("vuiStepsVertical", className);
|
|
19
|
+
return (_jsx("div", Object.assign({ className: classes, "data-testid": dataTestId }, rest, { children: steps.map((step, index) => {
|
|
20
|
+
var _a;
|
|
21
|
+
const icon = step.status === "complete" ? (_jsx(BiCheck, {})) : step.status === "danger" ? (_jsx(BiError, {})) : step.status === "warning" ? (_jsx(BiSolidHand, {})) : null;
|
|
22
|
+
const stepContainerClasses = classNames("vuiStepVerticalContainer", {
|
|
23
|
+
"vuiStepVerticalContainer-isActive": step.isActive
|
|
24
|
+
});
|
|
25
|
+
return (_jsx("div", Object.assign({ className: stepContainerClasses }, { children: _jsx(VuiStepVertical, { title: step.title, status: step.status, isActive: step.isActive, onClick: step.onClick, "data-testid": (_a = step["data-testid"]) !== null && _a !== void 0 ? _a : `${dataTestId}-step-${index}`, index: index + 1, icon: icon }) }), index));
|
|
26
|
+
}) })));
|
|
27
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
.vuiStepsVertical {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
align-items: stretch;
|
|
5
|
+
max-width: 280px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.vuiStepVerticalContainer {
|
|
9
|
+
padding-left: $sizeS;
|
|
10
|
+
border-left: 1px solid var(--vui-color-medium-shade);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.vuiStepVerticalContainer-isActive {
|
|
14
|
+
padding-left: $sizeS - 1px;
|
|
15
|
+
border-left: 2px solid var(--vui-color-primary-shade);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.vuiStepVerticalContainer {
|
|
19
|
+
flex-grow: 1;
|
|
20
|
+
display: flex;
|
|
21
|
+
align-items: center;
|
|
22
|
+
gap: $sizeS;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.vuiStepVertical {
|
|
26
|
+
flex-grow: 1;
|
|
27
|
+
display: flex;
|
|
28
|
+
gap: $sizeS;
|
|
29
|
+
align-items: center;
|
|
30
|
+
padding: $sizeXs $sizeS $sizeXs $sizeM;
|
|
31
|
+
font-size: $fontSizeStandard;
|
|
32
|
+
color: var(--vui-color-text);
|
|
33
|
+
background-color: var(--vui-color-empty-shade);
|
|
34
|
+
border-radius: $sizeXxs;
|
|
35
|
+
width: 100%;
|
|
36
|
+
|
|
37
|
+
&:focus {
|
|
38
|
+
// Ensures focus ring is visible.
|
|
39
|
+
z-index: 2;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&:hover,
|
|
43
|
+
&.vuiStepVertical-isActive {
|
|
44
|
+
background-color: var(--vui-color-light-shade);
|
|
45
|
+
|
|
46
|
+
.vuiStepVerticalContainer__icon {
|
|
47
|
+
.vuiIcon--token {
|
|
48
|
+
// border-color: var(--vui-color-medium-shade);
|
|
49
|
+
box-shadow: $shadowSmallEnd;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.vuiStepVertical__index {
|
|
56
|
+
flex-shrink: 0;
|
|
57
|
+
flex-grow: 0;
|
|
58
|
+
width: 26px;
|
|
59
|
+
text-align: left;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.vuiStepVertical__content {
|
|
63
|
+
flex-grow: 1;
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
justify-content: space-between;
|
|
67
|
+
gap: $sizeXs;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.vuiStepVerticalContainer__icon {
|
|
71
|
+
// Set consistent size so that empty icons still take up space
|
|
72
|
+
// and the button height doesn't change when there's no icon.
|
|
73
|
+
height: 20px;
|
|
74
|
+
flex-shrink: 0;
|
|
75
|
+
flex-grow: 0;
|
|
76
|
+
|
|
77
|
+
.vuiIcon--token {
|
|
78
|
+
box-shadow: $shadowSmallStart;
|
|
79
|
+
transition: box-shadow $transitionSpeed;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type StepVerticalStatus = "complete" | "incomplete" | "warning" | "danger";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/styles/index.css
CHANGED
|
@@ -4993,9 +4993,6 @@ h2.react-datepicker__current-month {
|
|
|
4993
4993
|
border-radius: 4px;
|
|
4994
4994
|
transition: all 0.2s ease;
|
|
4995
4995
|
}
|
|
4996
|
-
.vuiStep--clickable {
|
|
4997
|
-
cursor: pointer;
|
|
4998
|
-
}
|
|
4999
4996
|
.vuiStep .vuiSpinner {
|
|
5000
4997
|
width: var(--step-size);
|
|
5001
4998
|
height: var(--step-size);
|
|
@@ -5044,13 +5041,6 @@ h2.react-datepicker__current-month {
|
|
|
5044
5041
|
.vuiStep__number--danger {
|
|
5045
5042
|
background-color: var(--vui-color-danger-lighter-shade);
|
|
5046
5043
|
}
|
|
5047
|
-
.vuiStep__number--disabled {
|
|
5048
|
-
background-color: var(--vui-color-light-shade);
|
|
5049
|
-
color: var(--vui-color-dark-shade);
|
|
5050
|
-
}
|
|
5051
|
-
.vuiStep__number--clickable {
|
|
5052
|
-
cursor: pointer;
|
|
5053
|
-
}
|
|
5054
5044
|
|
|
5055
5045
|
.vuiStep__numberText {
|
|
5056
5046
|
line-height: 1;
|
|
@@ -5084,6 +5074,77 @@ h2.react-datepicker__current-month {
|
|
|
5084
5074
|
color: var(--vui-color-medium-shade);
|
|
5085
5075
|
}
|
|
5086
5076
|
|
|
5077
|
+
.vuiStepsVertical {
|
|
5078
|
+
display: flex;
|
|
5079
|
+
flex-direction: column;
|
|
5080
|
+
align-items: stretch;
|
|
5081
|
+
max-width: 280px;
|
|
5082
|
+
}
|
|
5083
|
+
|
|
5084
|
+
.vuiStepVerticalContainer {
|
|
5085
|
+
padding-left: 12px;
|
|
5086
|
+
border-left: 1px solid var(--vui-color-medium-shade);
|
|
5087
|
+
}
|
|
5088
|
+
|
|
5089
|
+
.vuiStepVerticalContainer-isActive {
|
|
5090
|
+
padding-left: 11px;
|
|
5091
|
+
border-left: 2px solid var(--vui-color-primary-shade);
|
|
5092
|
+
}
|
|
5093
|
+
|
|
5094
|
+
.vuiStepVerticalContainer {
|
|
5095
|
+
flex-grow: 1;
|
|
5096
|
+
display: flex;
|
|
5097
|
+
align-items: center;
|
|
5098
|
+
gap: 12px;
|
|
5099
|
+
}
|
|
5100
|
+
|
|
5101
|
+
.vuiStepVertical {
|
|
5102
|
+
flex-grow: 1;
|
|
5103
|
+
display: flex;
|
|
5104
|
+
gap: 12px;
|
|
5105
|
+
align-items: center;
|
|
5106
|
+
padding: 8px 12px 8px 16px;
|
|
5107
|
+
font-size: 14px;
|
|
5108
|
+
color: var(--vui-color-text);
|
|
5109
|
+
background-color: var(--vui-color-empty-shade);
|
|
5110
|
+
border-radius: 4px;
|
|
5111
|
+
width: 100%;
|
|
5112
|
+
}
|
|
5113
|
+
.vuiStepVertical:focus {
|
|
5114
|
+
z-index: 2;
|
|
5115
|
+
}
|
|
5116
|
+
.vuiStepVertical:hover, .vuiStepVertical.vuiStepVertical-isActive {
|
|
5117
|
+
background-color: var(--vui-color-light-shade);
|
|
5118
|
+
}
|
|
5119
|
+
.vuiStepVertical:hover .vuiStepVerticalContainer__icon .vuiIcon--token, .vuiStepVertical.vuiStepVertical-isActive .vuiStepVerticalContainer__icon .vuiIcon--token {
|
|
5120
|
+
box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;
|
|
5121
|
+
}
|
|
5122
|
+
|
|
5123
|
+
.vuiStepVertical__index {
|
|
5124
|
+
flex-shrink: 0;
|
|
5125
|
+
flex-grow: 0;
|
|
5126
|
+
width: 26px;
|
|
5127
|
+
text-align: left;
|
|
5128
|
+
}
|
|
5129
|
+
|
|
5130
|
+
.vuiStepVertical__content {
|
|
5131
|
+
flex-grow: 1;
|
|
5132
|
+
display: flex;
|
|
5133
|
+
align-items: center;
|
|
5134
|
+
justify-content: space-between;
|
|
5135
|
+
gap: 8px;
|
|
5136
|
+
}
|
|
5137
|
+
|
|
5138
|
+
.vuiStepVerticalContainer__icon {
|
|
5139
|
+
height: 20px;
|
|
5140
|
+
flex-shrink: 0;
|
|
5141
|
+
flex-grow: 0;
|
|
5142
|
+
}
|
|
5143
|
+
.vuiStepVerticalContainer__icon .vuiIcon--token {
|
|
5144
|
+
box-shadow: rgba(60, 64, 67, 0.3) 0px 0px 0px 0px, rgba(60, 64, 67, 0.15) 0px 0px 0px 0px;
|
|
5145
|
+
transition: box-shadow 0.2s;
|
|
5146
|
+
}
|
|
5147
|
+
|
|
5087
5148
|
.vuiSummary {
|
|
5088
5149
|
font-size: 16px;
|
|
5089
5150
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { VuiSteps,
|
|
1
|
+
import { VuiSteps, Steps } from "../../../lib";
|
|
2
2
|
import { BiUser, BiCog, BiCheck, BiPlanet, BiRocket, BiStar } from "react-icons/bi";
|
|
3
3
|
import { Subsection } from "../../components/Subsection";
|
|
4
4
|
|
|
5
5
|
export const CustomSteps = () => {
|
|
6
|
-
const customIconSteps:
|
|
6
|
+
const customIconSteps: Steps = [
|
|
7
7
|
{
|
|
8
8
|
title: "User Registration",
|
|
9
9
|
subTitle: "Create your account",
|
|
@@ -39,40 +39,11 @@ export const CustomSteps = () => {
|
|
|
39
39
|
}
|
|
40
40
|
];
|
|
41
41
|
|
|
42
|
-
const customStepValues: VuiStepProps[] = [
|
|
43
|
-
{
|
|
44
|
-
title: "Initialize",
|
|
45
|
-
subTitle: "Setting up environment",
|
|
46
|
-
status: "complete",
|
|
47
|
-
value: "A"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
title: "Configure",
|
|
51
|
-
subTitle: "Applying settings",
|
|
52
|
-
status: "current",
|
|
53
|
-
value: "B"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
title: "Deploy",
|
|
57
|
-
subTitle: "Launching application",
|
|
58
|
-
value: "C"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
title: "Monitor",
|
|
62
|
-
subTitle: "Tracking performance",
|
|
63
|
-
value: "D"
|
|
64
|
-
}
|
|
65
|
-
];
|
|
66
|
-
|
|
67
42
|
return (
|
|
68
43
|
<>
|
|
69
44
|
<Subsection title="Custom icons">
|
|
70
45
|
<VuiSteps steps={customIconSteps} />
|
|
71
46
|
</Subsection>
|
|
72
|
-
|
|
73
|
-
<Subsection title="Custom step values">
|
|
74
|
-
<VuiSteps steps={customStepValues} />
|
|
75
|
-
</Subsection>
|
|
76
47
|
</>
|
|
77
48
|
);
|
|
78
49
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
|
-
import { VuiSteps,
|
|
2
|
+
import { VuiSteps, Steps, StepStatus } from "../../../lib";
|
|
3
3
|
|
|
4
4
|
export const InteractiveSteps = () => {
|
|
5
5
|
const [currentStep, setCurrentStep] = useState(1);
|
|
@@ -13,7 +13,7 @@ export const InteractiveSteps = () => {
|
|
|
13
13
|
return "incomplete";
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
const dynamicSteps:
|
|
16
|
+
const dynamicSteps: Steps = [
|
|
17
17
|
{
|
|
18
18
|
title: "Account Setup",
|
|
19
19
|
status: getStepStatus(0, "danger"),
|
|
@@ -34,7 +34,7 @@ export const InteractiveSteps = () => {
|
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
title: "Complete",
|
|
37
|
-
status:
|
|
37
|
+
status: "incomplete",
|
|
38
38
|
subTitle: "Finish setup",
|
|
39
39
|
onClick: () => setCurrentStep(3)
|
|
40
40
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { VuiSteps,
|
|
1
|
+
import { VuiSteps, Steps } from "../../../lib";
|
|
2
2
|
import { Subsection } from "../../components/Subsection";
|
|
3
3
|
|
|
4
4
|
export const StepSizes = () => {
|
|
5
|
-
const basicSteps:
|
|
5
|
+
const basicSteps: Steps = [
|
|
6
6
|
{
|
|
7
7
|
title: "Completed step",
|
|
8
8
|
status: "complete"
|
|
@@ -14,10 +14,6 @@ export const StepSizes = () => {
|
|
|
14
14
|
{
|
|
15
15
|
title: "Incomplete step which will wrap to the next line",
|
|
16
16
|
status: "incomplete"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
title: "Disabled step",
|
|
20
|
-
status: "disabled"
|
|
21
17
|
}
|
|
22
18
|
];
|
|
23
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { VuiSteps,
|
|
1
|
+
import { VuiSteps, Steps } from "../../../lib";
|
|
2
2
|
|
|
3
3
|
export const StepStatuses = () => {
|
|
4
|
-
const statusSteps:
|
|
4
|
+
const statusSteps: Steps = [
|
|
5
5
|
{
|
|
6
6
|
title: "Complete Step",
|
|
7
7
|
subTitle: "This step has been completed",
|
|
@@ -17,11 +17,6 @@ export const StepStatuses = () => {
|
|
|
17
17
|
subTitle: "This step is not yet completed",
|
|
18
18
|
status: "incomplete"
|
|
19
19
|
},
|
|
20
|
-
{
|
|
21
|
-
title: "Disabled Step",
|
|
22
|
-
subTitle: "This step is disabled",
|
|
23
|
-
status: "disabled"
|
|
24
|
-
},
|
|
25
20
|
{
|
|
26
21
|
title: "Warning Step",
|
|
27
22
|
subTitle: "This step has a warning",
|
|
@@ -31,11 +26,6 @@ export const StepStatuses = () => {
|
|
|
31
26
|
title: "Danger Step",
|
|
32
27
|
subTitle: "This step has an error",
|
|
33
28
|
status: "danger"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
title: "Loading Step",
|
|
37
|
-
subTitle: "This step is processing",
|
|
38
|
-
status: "loading"
|
|
39
29
|
}
|
|
40
30
|
];
|
|
41
31
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import { BasicSteps } from "./BasicSteps";
|
|
2
1
|
import { InteractiveSteps } from "./InteractiveSteps";
|
|
3
2
|
import { StepStatuses } from "./StepStatuses";
|
|
4
3
|
import { StepSizes } from "./StepSizes";
|
|
5
4
|
import { CustomSteps } from "./CustomSteps";
|
|
6
5
|
|
|
7
|
-
const BasicStepsSource = require("!!raw-loader!./BasicSteps");
|
|
8
6
|
const InteractiveStepsSource = require("!!raw-loader!./InteractiveSteps");
|
|
9
7
|
const StepStatusesSource = require("!!raw-loader!./StepStatuses");
|
|
10
8
|
const StepSizesSource = require("!!raw-loader!./StepSizes");
|
|
@@ -14,11 +12,6 @@ export const steps = {
|
|
|
14
12
|
name: "Steps",
|
|
15
13
|
path: "/steps",
|
|
16
14
|
examples: [
|
|
17
|
-
{
|
|
18
|
-
name: "Basic steps",
|
|
19
|
-
component: <BasicSteps />,
|
|
20
|
-
source: BasicStepsSource.default.toString()
|
|
21
|
-
},
|
|
22
15
|
{
|
|
23
16
|
name: "Interactive steps",
|
|
24
17
|
component: <InteractiveSteps />,
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
import { VuiStepsVertical, StepsVertical } from "../../../lib";
|
|
3
|
+
|
|
4
|
+
export const VerticalSteps = () => {
|
|
5
|
+
const [currentStep, setCurrentStep] = useState(1);
|
|
6
|
+
|
|
7
|
+
const steps: StepsVertical = [
|
|
8
|
+
{
|
|
9
|
+
title: "General",
|
|
10
|
+
status: "danger",
|
|
11
|
+
isActive: currentStep === 0,
|
|
12
|
+
onClick: () => setCurrentStep(0)
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
title: "Model",
|
|
16
|
+
status: "complete",
|
|
17
|
+
isActive: currentStep === 1,
|
|
18
|
+
onClick: () => setCurrentStep(1)
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
title: "Abilities",
|
|
22
|
+
status: "incomplete",
|
|
23
|
+
isActive: currentStep === 2,
|
|
24
|
+
onClick: () => setCurrentStep(2)
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
title: "Instructions",
|
|
28
|
+
status: "incomplete",
|
|
29
|
+
isActive: currentStep === 3,
|
|
30
|
+
onClick: () => setCurrentStep(3)
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: "Advanced",
|
|
34
|
+
status: "warning",
|
|
35
|
+
isActive: currentStep === 4,
|
|
36
|
+
onClick: () => setCurrentStep(4)
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
return <VuiStepsVertical steps={steps} />;
|
|
41
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { VerticalSteps } from "./VerticalSteps";
|
|
2
|
+
|
|
3
|
+
const VerticalStepsSource = require("!!raw-loader!./VerticalSteps");
|
|
4
|
+
|
|
5
|
+
export const stepsVertical = {
|
|
6
|
+
name: "Vertical Steps",
|
|
7
|
+
path: "/verticalSteps",
|
|
8
|
+
examples: [
|
|
9
|
+
{
|
|
10
|
+
name: "Vertical steps",
|
|
11
|
+
component: <VerticalSteps />,
|
|
12
|
+
source: VerticalStepsSource.default.toString()
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
};
|
package/src/docs/pages.tsx
CHANGED
|
@@ -51,6 +51,7 @@ import { stat } from "./pages/stat";
|
|
|
51
51
|
import { status } from "./pages/status";
|
|
52
52
|
import { statList } from "./pages/statList";
|
|
53
53
|
import { steps } from "./pages/steps";
|
|
54
|
+
import { stepsVertical } from "./pages/stepsVertical";
|
|
54
55
|
import { summary } from "./pages/summary";
|
|
55
56
|
import { skeleton } from "./pages/skeleton";
|
|
56
57
|
import { superCheckboxGroup } from "./pages/superCheckboxGroup";
|
|
@@ -89,7 +90,21 @@ export const categories: Category[] = [
|
|
|
89
90
|
},
|
|
90
91
|
{
|
|
91
92
|
name: "Layout",
|
|
92
|
-
pages: [
|
|
93
|
+
pages: [
|
|
94
|
+
tabs,
|
|
95
|
+
timeline,
|
|
96
|
+
accordion,
|
|
97
|
+
stepsVertical,
|
|
98
|
+
steps,
|
|
99
|
+
popover,
|
|
100
|
+
infoMenu,
|
|
101
|
+
flex,
|
|
102
|
+
grid,
|
|
103
|
+
spacer,
|
|
104
|
+
card,
|
|
105
|
+
panel,
|
|
106
|
+
horizontalRule
|
|
107
|
+
]
|
|
93
108
|
},
|
|
94
109
|
{
|
|
95
110
|
name: "Content",
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { VuiSteps, VuiStepProps } from "../../../lib";
|
|
2
|
-
|
|
3
|
-
export const BasicSteps = () => {
|
|
4
|
-
const basicSteps: VuiStepProps[] = [
|
|
5
|
-
{
|
|
6
|
-
title: "Completed step",
|
|
7
|
-
status: "complete",
|
|
8
|
-
"data-testid": "customDataTestId"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
title: "Selected step",
|
|
12
|
-
status: "current"
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
title: "Incomplete step which will wrap to the next line",
|
|
16
|
-
status: "incomplete"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
title: "Disabled step",
|
|
20
|
-
status: "disabled"
|
|
21
|
-
}
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
return <VuiSteps steps={basicSteps} data-testid="steps" />;
|
|
25
|
-
};
|