@vectara/vectara-ui 16.5.0 → 16.6.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/app/appSideNav/AppSideNavLink.d.ts +2 -2
- package/lib/components/app/appSideNav/AppSideNavLink.js +4 -1
- package/lib/components/app/appSideNav/appSideNav.scss +1 -0
- package/lib/components/durationBar/DurationBar.d.ts +11 -0
- package/lib/components/durationBar/DurationBar.js +12 -0
- package/lib/components/durationBar/_index.scss +40 -0
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +2 -1
- package/lib/styles/index.css +34 -0
- package/package.json +1 -1
- package/src/docs/pages/durationBar/Colors.tsx +15 -0
- package/src/docs/pages/durationBar/MinBarWidth.tsx +25 -0
- package/src/docs/pages/durationBar/Timeline.tsx +43 -0
- package/src/docs/pages/durationBar/index.tsx +29 -0
- package/src/docs/pages.tsx +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TreeItem } from "../types";
|
|
2
2
|
export declare const VuiAppSideNavLink: import("react").ForwardRefExoticComponent<Pick<TreeItem, "className" | "path" | "name" | "isSelected" | "iconBefore" | "iconAfter"> & {
|
|
3
|
-
onClick?: import("react").MouseEventHandler<
|
|
3
|
+
onClick?: import("react").MouseEventHandler<HTMLElement> | undefined;
|
|
4
4
|
iconAfterAlignEnd?: boolean | undefined;
|
|
5
|
-
} & import("react").RefAttributes<
|
|
5
|
+
} & import("react").RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
@@ -23,5 +23,8 @@ export const VuiAppSideNavLink = forwardRef((_a, ref) => {
|
|
|
23
23
|
"vuiAppSideNavLink--active": isSelected !== null && isSelected !== void 0 ? isSelected : path === getPath()
|
|
24
24
|
}, className);
|
|
25
25
|
const content = iconBefore || iconAfter ? (_jsxs(VuiFlexContainer, Object.assign({ alignItems: "center", spacing: "xxs" }, { children: [iconBefore && (_jsx(VuiFlexItem, Object.assign({ grow: false, shrink: false }, { children: _jsx(VuiIcon, Object.assign({ size: "s" }, { children: iconBefore })) }))), _jsx(VuiFlexItem, Object.assign({ grow: false, shrink: false }, { children: name })), iconAfter && (_jsx(VuiFlexItem, Object.assign({ grow: false, shrink: false, className: iconAfterAlignEnd ? "vuiAppSideNavLink__iconAfter--alignEnd" : undefined }, { children: _jsx(VuiIcon, Object.assign({ size: "s" }, { children: iconAfter })) })))] }))) : (name);
|
|
26
|
-
|
|
26
|
+
if (!path) {
|
|
27
|
+
return (_jsx("button", Object.assign({ className: classes, onClick: onClick, type: "button", ref: ref }, rest, { children: content })));
|
|
28
|
+
}
|
|
29
|
+
return createLink(Object.assign({ ref: ref, className: classes, children: content, href: path, onClick }, rest));
|
|
27
30
|
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PROGRESS_BAR_COLOR } from "../progressBar/ProgressBar";
|
|
2
|
+
type Props = {
|
|
3
|
+
window: number;
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
color: (typeof PROGRESS_BAR_COLOR)[number];
|
|
7
|
+
minBarWidthPx?: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare const VuiDurationBar: ({ window, start, end, color, minBarWidthPx, className }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import classNames from "classnames";
|
|
3
|
+
const DEFAULT_MIN_BAR_WIDTH_PX = 4;
|
|
4
|
+
export const VuiDurationBar = ({ window, start, end, color, minBarWidthPx = DEFAULT_MIN_BAR_WIDTH_PX, className }) => {
|
|
5
|
+
// Clamp the bar to the window boundaries.
|
|
6
|
+
const clampedStart = Math.max(0, Math.min(start, window));
|
|
7
|
+
const clampedEnd = Math.max(0, Math.min(end, window));
|
|
8
|
+
const leftPercent = (clampedStart / window) * 100;
|
|
9
|
+
const widthPercent = Math.max(0, ((clampedEnd - clampedStart) / window) * 100);
|
|
10
|
+
const classes = classNames(className, "vuiDurationBar", `vuiDurationBar--${color}`);
|
|
11
|
+
return (_jsx("div", Object.assign({ className: classes }, { children: _jsx("div", { className: "vuiDurationBar__bar", style: { left: `${leftPercent}%`, width: `max(${widthPercent}%, ${minBarWidthPx}px)` } }) })));
|
|
12
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
|
|
3
|
+
.vuiDurationBar {
|
|
4
|
+
position: relative;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.vuiDurationBar__bar {
|
|
8
|
+
position: absolute;
|
|
9
|
+
height: $sizeXs;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Color
|
|
13
|
+
$color: (
|
|
14
|
+
accent: (
|
|
15
|
+
"background-color": var(--vui-color-accent-shade)
|
|
16
|
+
),
|
|
17
|
+
primary: (
|
|
18
|
+
"background-color": var(--vui-color-primary-shade)
|
|
19
|
+
),
|
|
20
|
+
success: (
|
|
21
|
+
"background-color": var(--vui-color-success-shade)
|
|
22
|
+
),
|
|
23
|
+
warning: (
|
|
24
|
+
"background-color": var(--vui-color-warning-shade)
|
|
25
|
+
),
|
|
26
|
+
danger: (
|
|
27
|
+
"background-color": var(--vui-color-danger-shade)
|
|
28
|
+
),
|
|
29
|
+
neutral: (
|
|
30
|
+
"background-color": var(--vui-color-dark-shade)
|
|
31
|
+
)
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
@each $colorName, $colorValue in $color {
|
|
35
|
+
.vuiDurationBar--#{$colorName} {
|
|
36
|
+
.vuiDurationBar__bar {
|
|
37
|
+
background-color: #{map.get($colorValue, "background-color")};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -27,6 +27,7 @@ import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
|
27
27
|
import { VuiDatePicker } from "./datePicker/DatePicker";
|
|
28
28
|
import { VuiDateRangePicker } from "./datePicker/DateRangePicker";
|
|
29
29
|
import { VuiDrawer } from "./drawer/Drawer";
|
|
30
|
+
import { VuiDurationBar } from "./durationBar/DurationBar";
|
|
30
31
|
import { VuiErrorBoundary } from "./errorBoundary/ErrorBoundary";
|
|
31
32
|
import { VuiFlexContainer } from "./flex/FlexContainer";
|
|
32
33
|
import { VuiFlexItem } from "./flex/FlexItem";
|
|
@@ -100,4 +101,4 @@ import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
|
100
101
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
101
102
|
import { toRgb, toRgba } from "./context/Theme";
|
|
102
103
|
export type { AnchorSide, AppContentPadding, ButtonColor, CalloutColor, ChatLanguage, ChatStyle, ChatTurn, CheckboxConfig, CodeEditorColorConfig, CodeEditorError, CodeLanguage, InfoListItemType, InfoListType, InfoTableColumnAlign, InfoTableRow, InfoTableRowType, KvTableAlign, KvTableItem, KvTableItems, KvTablePadding, LinkProps, MenuItem, OptionListItem, Pagination, RadioButtonConfig, SearchResult, SearchSuggestion, Sections, SectionItem, SpansRow, Stat, StepStatus, StepSize, Steps, StepsVertical, StepVerticalStatus, TabSize, Tree, TreeItem };
|
|
103
|
-
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, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, 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, VuiSpans, 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 };
|
|
104
|
+
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, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiDurationBar, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, 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, VuiSpans, 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
|
@@ -23,6 +23,7 @@ import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
|
23
23
|
import { VuiDatePicker } from "./datePicker/DatePicker";
|
|
24
24
|
import { VuiDateRangePicker } from "./datePicker/DateRangePicker";
|
|
25
25
|
import { VuiDrawer } from "./drawer/Drawer";
|
|
26
|
+
import { VuiDurationBar } from "./durationBar/DurationBar";
|
|
26
27
|
import { VuiErrorBoundary } from "./errorBoundary/ErrorBoundary";
|
|
27
28
|
import { VuiFlexContainer } from "./flex/FlexContainer";
|
|
28
29
|
import { VuiFlexItem } from "./flex/FlexItem";
|
|
@@ -90,4 +91,4 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
90
91
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
91
92
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
92
93
|
import { toRgb, toRgba } from "./context/Theme";
|
|
93
|
-
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, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, 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, VuiSpans, 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 };
|
|
94
|
+
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, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiDurationBar, VuiErrorBoundary, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, 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, VuiSpans, 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/styles/index.css
CHANGED
|
@@ -472,6 +472,7 @@ fieldset {
|
|
|
472
472
|
line-height: 1.1;
|
|
473
473
|
border-top: 1px solid var(--vui-color-empty-shade);
|
|
474
474
|
border-bottom: 1px solid var(--vui-color-empty-shade);
|
|
475
|
+
width: 100%;
|
|
475
476
|
}
|
|
476
477
|
.vuiAppSideNavLink:hover {
|
|
477
478
|
background-color: var(--vui-color-light-shade);
|
|
@@ -2498,6 +2499,39 @@ h2.react-datepicker__current-month {
|
|
|
2498
2499
|
color: var(--vui-color-danger-shade);
|
|
2499
2500
|
}
|
|
2500
2501
|
|
|
2502
|
+
.vuiDurationBar {
|
|
2503
|
+
position: relative;
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
.vuiDurationBar__bar {
|
|
2507
|
+
position: absolute;
|
|
2508
|
+
height: 8px;
|
|
2509
|
+
}
|
|
2510
|
+
|
|
2511
|
+
.vuiDurationBar--accent .vuiDurationBar__bar {
|
|
2512
|
+
background-color: var(--vui-color-accent-shade);
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2515
|
+
.vuiDurationBar--primary .vuiDurationBar__bar {
|
|
2516
|
+
background-color: var(--vui-color-primary-shade);
|
|
2517
|
+
}
|
|
2518
|
+
|
|
2519
|
+
.vuiDurationBar--success .vuiDurationBar__bar {
|
|
2520
|
+
background-color: var(--vui-color-success-shade);
|
|
2521
|
+
}
|
|
2522
|
+
|
|
2523
|
+
.vuiDurationBar--warning .vuiDurationBar__bar {
|
|
2524
|
+
background-color: var(--vui-color-warning-shade);
|
|
2525
|
+
}
|
|
2526
|
+
|
|
2527
|
+
.vuiDurationBar--danger .vuiDurationBar__bar {
|
|
2528
|
+
background-color: var(--vui-color-danger-shade);
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
.vuiDurationBar--neutral .vuiDurationBar__bar {
|
|
2532
|
+
background-color: var(--vui-color-dark-shade);
|
|
2533
|
+
}
|
|
2534
|
+
|
|
2501
2535
|
.vuiFlexContainer {
|
|
2502
2536
|
display: flex;
|
|
2503
2537
|
align-items: stretch;
|
package/package.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Fragment } from "react";
|
|
2
|
+
import { PROGRESS_BAR_COLOR, VuiDurationBar, VuiSpacer } from "../../../lib";
|
|
3
|
+
|
|
4
|
+
export const Colors = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
{PROGRESS_BAR_COLOR.map((color) => (
|
|
8
|
+
<Fragment key={color}>
|
|
9
|
+
<VuiDurationBar window={100} start={10} end={70} color={color} />
|
|
10
|
+
<VuiSpacer size="s" />
|
|
11
|
+
</Fragment>
|
|
12
|
+
))}
|
|
13
|
+
</>
|
|
14
|
+
);
|
|
15
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { VuiDurationBar, VuiSpacer, VuiText } from "../../../lib";
|
|
2
|
+
|
|
3
|
+
export const MinBarWidth = () => {
|
|
4
|
+
return (
|
|
5
|
+
<>
|
|
6
|
+
<VuiText>
|
|
7
|
+
<p>Default minBarWidthPx (4px) for a near-zero-width bar:</p>
|
|
8
|
+
</VuiText>
|
|
9
|
+
|
|
10
|
+
<VuiSpacer size="s" />
|
|
11
|
+
|
|
12
|
+
<VuiDurationBar window={10000} start={5000} end={5001} color="accent" />
|
|
13
|
+
|
|
14
|
+
<VuiSpacer size="m" />
|
|
15
|
+
|
|
16
|
+
<VuiText>
|
|
17
|
+
<p>Custom minBarWidthPx (16px) for the same bar:</p>
|
|
18
|
+
</VuiText>
|
|
19
|
+
|
|
20
|
+
<VuiSpacer size="s" />
|
|
21
|
+
|
|
22
|
+
<VuiDurationBar window={10000} start={5000} end={5001} color="accent" minBarWidthPx={16} />
|
|
23
|
+
</>
|
|
24
|
+
);
|
|
25
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { PROGRESS_BAR_COLOR, VuiDurationBar, VuiFlexContainer, VuiFlexItem, VuiText } from "../../../lib";
|
|
2
|
+
|
|
3
|
+
const WINDOW = 12480;
|
|
4
|
+
|
|
5
|
+
type Bar = {
|
|
6
|
+
label: string;
|
|
7
|
+
start: number;
|
|
8
|
+
end: number;
|
|
9
|
+
color: (typeof PROGRESS_BAR_COLOR)[number];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const bars: Bar[] = [
|
|
13
|
+
{ label: "12.48s", start: 0, end: 12480, color: "neutral" },
|
|
14
|
+
{ label: "1.85s", start: 0, end: 1850, color: "neutral" },
|
|
15
|
+
{ label: "3.20s", start: 1850, end: 5050, color: "neutral" },
|
|
16
|
+
{ label: "880ms", start: 5700, end: 6580, color: "neutral" },
|
|
17
|
+
{ label: "2.40s", start: 6200, end: 8600, color: "neutral" },
|
|
18
|
+
{ label: "80ms", start: 8700, end: 8780, color: "neutral" },
|
|
19
|
+
{ label: "3.20s", start: 8900, end: 12100, color: "neutral" },
|
|
20
|
+
{ label: "540ms", start: 11400, end: 11940, color: "neutral" }
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export const Timeline = () => {
|
|
24
|
+
return (
|
|
25
|
+
<>
|
|
26
|
+
{bars.map((bar) => (
|
|
27
|
+
<VuiFlexContainer key={bar.label} alignItems="center" spacing="m">
|
|
28
|
+
<VuiFlexItem grow={false} shrink={false}>
|
|
29
|
+
<div style={{ width: 60, textAlign: "right" }}>
|
|
30
|
+
<VuiText>
|
|
31
|
+
<p>{bar.label}</p>
|
|
32
|
+
</VuiText>
|
|
33
|
+
</div>
|
|
34
|
+
</VuiFlexItem>
|
|
35
|
+
|
|
36
|
+
<VuiFlexItem grow={1}>
|
|
37
|
+
<VuiDurationBar window={WINDOW} start={bar.start} end={bar.end} color={bar.color} />
|
|
38
|
+
</VuiFlexItem>
|
|
39
|
+
</VuiFlexContainer>
|
|
40
|
+
))}
|
|
41
|
+
</>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Timeline } from "./Timeline";
|
|
2
|
+
import { Colors } from "./Colors";
|
|
3
|
+
import { MinBarWidth } from "./MinBarWidth";
|
|
4
|
+
|
|
5
|
+
const TimelineSource = require("!!raw-loader!./Timeline");
|
|
6
|
+
const ColorsSource = require("!!raw-loader!./Colors");
|
|
7
|
+
const MinBarWidthSource = require("!!raw-loader!./MinBarWidth");
|
|
8
|
+
|
|
9
|
+
export const durationBar = {
|
|
10
|
+
name: "Duration Bar",
|
|
11
|
+
path: "/durationBar",
|
|
12
|
+
examples: [
|
|
13
|
+
{
|
|
14
|
+
name: "Timeline",
|
|
15
|
+
component: <Timeline />,
|
|
16
|
+
source: TimelineSource.default.toString()
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "Colors",
|
|
20
|
+
component: <Colors />,
|
|
21
|
+
source: ColorsSource.default.toString()
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "Minimum bar width",
|
|
25
|
+
component: <MinBarWidth />,
|
|
26
|
+
source: MinBarWidthSource.default.toString()
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
};
|
package/src/docs/pages.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import { complexConfigurationButton } from "./pages/complexConfigurationButton";
|
|
|
14
14
|
import { copyButton } from "./pages/copyButton";
|
|
15
15
|
import { datePicker } from "./pages/datePicker";
|
|
16
16
|
import { drawer } from "./pages/drawer";
|
|
17
|
+
import { durationBar } from "./pages/durationBar";
|
|
17
18
|
import { errorBoundary } from "./pages/errorBoundary";
|
|
18
19
|
import { flex } from "./pages/flex";
|
|
19
20
|
import { formGroup } from "./pages/formGroup";
|
|
@@ -111,7 +112,7 @@ export const categories: Category[] = [
|
|
|
111
112
|
},
|
|
112
113
|
{
|
|
113
114
|
name: "Content",
|
|
114
|
-
pages: [badge, status, callout, code, icon, image, inProgress, spinner, skeleton, stat,
|
|
115
|
+
pages: [badge, status, callout, code, durationBar, icon, image, inProgress, progressBar, spinner, skeleton, stat, text, tooltip]
|
|
115
116
|
},
|
|
116
117
|
{
|
|
117
118
|
name: "Form",
|