@vectara/vectara-ui 18.3.0 → 19.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/card/SimpleCard.d.ts +1 -1
- package/lib/components/card/_index.scss +5 -30
- package/lib/components/chip/Chip.d.ts +9 -0
- package/lib/components/chip/Chip.js +20 -0
- package/lib/components/chip/_index.scss +49 -0
- package/lib/components/composer/Composer.d.ts +41 -0
- package/lib/components/composer/Composer.js +148 -0
- package/lib/components/composer/_index.scss +4 -0
- package/lib/components/composer/useComposerHistory.d.ts +34 -0
- package/lib/components/composer/useComposerHistory.js +127 -0
- package/lib/components/context/Theme.d.ts +24 -0
- package/lib/components/context/Theme.js +78 -2
- package/lib/components/fileDropTarget/FileDropTarget.d.ts +8 -0
- package/lib/components/fileDropTarget/FileDropTarget.js +69 -0
- package/lib/components/fileDropTarget/_index.scss +34 -0
- package/lib/components/index.d.ts +6 -2
- package/lib/components/index.js +5 -1
- package/lib/components/patch/VuiPatch.d.ts +10 -0
- package/lib/components/patch/VuiPatch.js +32 -0
- package/lib/components/patch/_index.scss +30 -0
- package/lib/styles/index.css +167 -28
- package/package.json +1 -1
- package/src/docs/pages/card/SimpleCard.tsx +72 -6
- package/src/docs/pages/chip/Chip.tsx +49 -0
- package/src/docs/pages/chip/index.tsx +11 -0
- package/src/docs/pages/colorPalette/CategoricalColors.tsx +89 -0
- package/src/docs/pages/colorPalette/NeutralColors.tsx +42 -0
- package/src/docs/pages/colorPalette/SemanticColors.tsx +64 -0
- package/src/docs/pages/colorPalette/Swatch.tsx +59 -0
- package/src/docs/pages/colorPalette/TextAndBorderColors.tsx +37 -0
- package/src/docs/pages/colorPalette/Usage.tsx +72 -0
- package/src/docs/pages/colorPalette/index.tsx +43 -0
- package/src/docs/pages/composer/Composer.tsx +130 -0
- package/src/docs/pages/composer/index.tsx +11 -0
- package/src/docs/pages/fileDropTarget/FileDropTarget.tsx +80 -0
- package/src/docs/pages/fileDropTarget/index.tsx +11 -0
- package/src/docs/pages/patch/Icons.tsx +16 -0
- package/src/docs/pages/patch/Sizes.tsx +20 -0
- package/src/docs/pages/patch/index.tsx +22 -0
- package/src/docs/pages.tsx +11 -4
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from "react";
|
|
3
|
+
import { createPortal } from "react-dom";
|
|
4
|
+
import { BiUpload } from "react-icons/bi";
|
|
5
|
+
import { VuiScreenBlock } from "../screenBlock/ScreenBlock";
|
|
6
|
+
import { VuiFlexContainer } from "../flex/FlexContainer";
|
|
7
|
+
import { VuiFlexItem } from "../flex/FlexItem";
|
|
8
|
+
import { VuiIcon } from "../icon/Icon";
|
|
9
|
+
import { VuiText } from "../typography/Text";
|
|
10
|
+
const defaultMessage = (_jsxs(VuiFlexContainer, Object.assign({ direction: "column", alignItems: "center", justifyContent: "center" }, { children: [_jsx(VuiFlexItem, { children: _jsx(VuiIcon, Object.assign({ size: "xxxl", color: "empty" }, { children: _jsx(BiUpload, {}) })) }), _jsx(VuiFlexItem, { children: _jsx(VuiText, Object.assign({ align: "center", size: "l" }, { children: _jsx("p", { children: "Drop files to add to upload" }) })) })] })));
|
|
11
|
+
export const VuiFileDropTarget = ({ onFilesDropped, scopeRef, message = defaultMessage }) => {
|
|
12
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
13
|
+
const dragCounterRef = useRef(0);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
var _a;
|
|
16
|
+
const target = (_a = scopeRef === null || scopeRef === void 0 ? void 0 : scopeRef.current) !== null && _a !== void 0 ? _a : document;
|
|
17
|
+
// Reset whenever the target changes (e.g. when scopeRef attaches or the parent
|
|
18
|
+
// swaps between scoped and global modes) so a stale counter doesn't suppress events.
|
|
19
|
+
dragCounterRef.current = 0;
|
|
20
|
+
setIsDragging(false);
|
|
21
|
+
const handleDragEnter = (e) => {
|
|
22
|
+
var _a;
|
|
23
|
+
e.preventDefault();
|
|
24
|
+
dragCounterRef.current += 1;
|
|
25
|
+
// Only show the overlay for drags that carry files, not e.g. selected text.
|
|
26
|
+
if (dragCounterRef.current === 1 && ((_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.items) && e.dataTransfer.items.length > 0) {
|
|
27
|
+
setIsDragging(true);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const handleDragLeave = (e) => {
|
|
31
|
+
e.preventDefault();
|
|
32
|
+
dragCounterRef.current -= 1;
|
|
33
|
+
if (dragCounterRef.current === 0) {
|
|
34
|
+
setIsDragging(false);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const handleDragOver = (e) => {
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
};
|
|
40
|
+
const handleDrop = (e) => {
|
|
41
|
+
var _a;
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
setIsDragging(false);
|
|
44
|
+
dragCounterRef.current = 0;
|
|
45
|
+
const files = (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
|
|
46
|
+
if (files && files.length > 0) {
|
|
47
|
+
onFilesDropped(Array.from(files));
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
target.addEventListener("dragenter", handleDragEnter);
|
|
51
|
+
target.addEventListener("dragleave", handleDragLeave);
|
|
52
|
+
target.addEventListener("dragover", handleDragOver);
|
|
53
|
+
target.addEventListener("drop", handleDrop);
|
|
54
|
+
return () => {
|
|
55
|
+
target.removeEventListener("dragenter", handleDragEnter);
|
|
56
|
+
target.removeEventListener("dragleave", handleDragLeave);
|
|
57
|
+
target.removeEventListener("dragover", handleDragOver);
|
|
58
|
+
target.removeEventListener("drop", handleDrop);
|
|
59
|
+
};
|
|
60
|
+
}, [scopeRef, onFilesDropped]);
|
|
61
|
+
if (!isDragging)
|
|
62
|
+
return null;
|
|
63
|
+
// Scoped mode: overlay covers only the parent element.
|
|
64
|
+
if (scopeRef === null || scopeRef === void 0 ? void 0 : scopeRef.current) {
|
|
65
|
+
return createPortal(_jsx("div", Object.assign({ className: "vuiFileDropTarget__scopedOverlay" }, { children: _jsx("div", Object.assign({ className: "vuiFileDropTarget__message" }, { children: message })) })), scopeRef.current);
|
|
66
|
+
}
|
|
67
|
+
// Global mode: full-screen overlay.
|
|
68
|
+
return (_jsx(VuiScreenBlock, Object.assign({ color: "primary" }, { children: _jsx("div", Object.assign({ className: "vuiFileDropTarget__messageContainer" }, { children: _jsx("div", Object.assign({ className: "vuiFileDropTarget__message" }, { children: message })) })) })));
|
|
69
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.vuiFileDropTarget__messageContainer {
|
|
2
|
+
position: fixed;
|
|
3
|
+
left: 0;
|
|
4
|
+
top: 0;
|
|
5
|
+
width: 100%;
|
|
6
|
+
height: 100%;
|
|
7
|
+
display: flex;
|
|
8
|
+
justify-content: center;
|
|
9
|
+
align-items: center;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.vuiFileDropTarget__message {
|
|
13
|
+
padding: $sizeL;
|
|
14
|
+
max-width: 400px;
|
|
15
|
+
width: 100%;
|
|
16
|
+
pointer-events: none;
|
|
17
|
+
|
|
18
|
+
p,
|
|
19
|
+
span {
|
|
20
|
+
color: var(--vui-color-empty-shade) !important;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Scoped mode: portal-mounted overlay covering only the parent element (which
|
|
25
|
+
// must be non-statically positioned).
|
|
26
|
+
.vuiFileDropTarget__scopedOverlay {
|
|
27
|
+
position: absolute;
|
|
28
|
+
inset: 0;
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
background-color: rgba(var(--vui-color-primary-shade-rgb), 0.6);
|
|
33
|
+
z-index: 10;
|
|
34
|
+
}
|
|
@@ -19,8 +19,10 @@ import { VuiCard, VuiSimpleCard } from "./card";
|
|
|
19
19
|
import { CALLOUT_COLOR, CALLOUT_SIZE, CalloutColor } from "./callout/types";
|
|
20
20
|
import { ChatTurn, ChatStyle, ChatLanguage } from "./chat/types";
|
|
21
21
|
import { VuiChat } from "./chat/Chat";
|
|
22
|
+
import { VuiChip } from "./chip/Chip";
|
|
22
23
|
import { VuiCode } from "./code/Code";
|
|
23
24
|
import { CodeLanguage } from "./code/types";
|
|
25
|
+
import { VuiComposer, ComposerFileError, ComposerShortcutApi, ComposerShortcutHandler, ComposerSubmission } from "./composer/Composer";
|
|
24
26
|
import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
|
|
25
27
|
import { VuiContextProvider } from "./context/Context";
|
|
26
28
|
import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
@@ -29,6 +31,7 @@ import { VuiDateRangePicker } from "./datePicker/DateRangePicker";
|
|
|
29
31
|
import { VuiDrawer } from "./drawer/Drawer";
|
|
30
32
|
import { DURATION_BAR_COLOR, VuiDurationBar } from "./durationBar/DurationBar";
|
|
31
33
|
import { VuiErrorBoundary } from "./errorBoundary/ErrorBoundary";
|
|
34
|
+
import { VuiFileDropTarget } from "./fileDropTarget/FileDropTarget";
|
|
32
35
|
import { VuiFlexContainer } from "./flex/FlexContainer";
|
|
33
36
|
import { VuiFlexItem } from "./flex/FlexItem";
|
|
34
37
|
import { CheckboxConfig, CodeEditorColorConfig, CodeEditorError, RadioButtonConfig, generateTokensProvider, VuiCheckbox, VuiCodeEditor, VuiItemsInput, VuiLabel, VuiNumberInput, VuiRadioButton, VuiSelect, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTextInput, VuiTextArea, VuiPasswordInput } from "./form";
|
|
@@ -62,6 +65,7 @@ import { VuiOptionsListItem } from "./optionsList/OptionsListItem";
|
|
|
62
65
|
import { OptionListItem } from "./optionsList/types";
|
|
63
66
|
import { VuiPagination, Pagination } from "./pagination/Pagination";
|
|
64
67
|
import { VuiPanel } from "./panel/Panel";
|
|
68
|
+
import { PATCH_COLOR, PatchColor, VuiPatch } from "./patch/VuiPatch";
|
|
65
69
|
import { VuiPopover, AnchorSide } from "./popover/Popover";
|
|
66
70
|
import { VuiPortal } from "./portal/Portal";
|
|
67
71
|
import { PROGRESS_BAR_COLOR, VuiProgressBar } from "./progressBar/ProgressBar";
|
|
@@ -104,5 +108,5 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
104
108
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
105
109
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
106
110
|
import { toRgb, toRgba } from "./context/Theme";
|
|
107
|
-
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, TabNavigatorRoute, TabSize, Tree, TreeItem };
|
|
108
|
-
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, DURATION_BAR_COLOR, 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, VuiMenuList, VuiMenuListButton, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSideList, VuiSideListButton, 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 };
|
|
111
|
+
export type { AnchorSide, AppContentPadding, ButtonColor, CalloutColor, ChatLanguage, ChatStyle, ChatTurn, CheckboxConfig, CodeEditorColorConfig, CodeEditorError, CodeLanguage, ComposerFileError, ComposerShortcutApi, ComposerShortcutHandler, ComposerSubmission, InfoListItemType, InfoListType, InfoTableColumnAlign, InfoTableRow, InfoTableRowType, KvTableAlign, KvTableItem, KvTableItems, KvTablePadding, LinkProps, MenuItem, OptionListItem, Pagination, PatchColor, RadioButtonConfig, SearchResult, SearchSuggestion, Sections, SectionItem, SpansRow, Stat, StepStatus, StepSize, Steps, StepsVertical, StepVerticalStatus, TabNavigatorRoute, TabSize, Tree, TreeItem };
|
|
112
|
+
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, DURATION_BAR_COLOR, ICON_COLOR, ICON_SIZE, ICON_TYPE, PATCH_COLOR, 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, VuiChip, VuiCode, VuiCodeEditor, VuiComposer, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiDurationBar, VuiErrorBoundary, VuiFileDropTarget, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiMenuList, VuiMenuListButton, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPatch, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSideList, VuiSideListButton, 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
|
@@ -16,7 +16,9 @@ import { VuiCallout } from "./callout/Callout";
|
|
|
16
16
|
import { VuiCard, VuiSimpleCard } from "./card";
|
|
17
17
|
import { CALLOUT_COLOR, CALLOUT_SIZE } from "./callout/types";
|
|
18
18
|
import { VuiChat } from "./chat/Chat";
|
|
19
|
+
import { VuiChip } from "./chip/Chip";
|
|
19
20
|
import { VuiCode } from "./code/Code";
|
|
21
|
+
import { VuiComposer } from "./composer/Composer";
|
|
20
22
|
import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
|
|
21
23
|
import { VuiContextProvider } from "./context/Context";
|
|
22
24
|
import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
@@ -25,6 +27,7 @@ import { VuiDateRangePicker } from "./datePicker/DateRangePicker";
|
|
|
25
27
|
import { VuiDrawer } from "./drawer/Drawer";
|
|
26
28
|
import { DURATION_BAR_COLOR, VuiDurationBar } from "./durationBar/DurationBar";
|
|
27
29
|
import { VuiErrorBoundary } from "./errorBoundary/ErrorBoundary";
|
|
30
|
+
import { VuiFileDropTarget } from "./fileDropTarget/FileDropTarget";
|
|
28
31
|
import { VuiFlexContainer } from "./flex/FlexContainer";
|
|
29
32
|
import { VuiFlexItem } from "./flex/FlexItem";
|
|
30
33
|
import { generateTokensProvider, VuiCheckbox, VuiCodeEditor, VuiItemsInput, VuiLabel, VuiNumberInput, VuiRadioButton, VuiSelect, VuiSuperCheckboxGroup, VuiSuperRadioGroup, VuiTextInput, VuiTextArea, VuiPasswordInput } from "./form";
|
|
@@ -55,6 +58,7 @@ import { VuiOptionsList } from "./optionsList/OptionsList";
|
|
|
55
58
|
import { VuiOptionsListItem } from "./optionsList/OptionsListItem";
|
|
56
59
|
import { VuiPagination } from "./pagination/Pagination";
|
|
57
60
|
import { VuiPanel } from "./panel/Panel";
|
|
61
|
+
import { PATCH_COLOR, VuiPatch } from "./patch/VuiPatch";
|
|
58
62
|
import { VuiPopover } from "./popover/Popover";
|
|
59
63
|
import { VuiPortal } from "./portal/Portal";
|
|
60
64
|
import { PROGRESS_BAR_COLOR, VuiProgressBar } from "./progressBar/ProgressBar";
|
|
@@ -95,4 +99,4 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
95
99
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
96
100
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
97
101
|
import { toRgb, toRgba } from "./context/Theme";
|
|
98
|
-
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, DURATION_BAR_COLOR, 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, VuiMenuList, VuiMenuListButton, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSideList, VuiSideListButton, 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 };
|
|
102
|
+
export { BADGE_COLOR, BUTTON_COLOR, BUTTON_SIZE, CALLOUT_COLOR, CALLOUT_SIZE, DURATION_BAR_COLOR, ICON_COLOR, ICON_SIZE, ICON_TYPE, PATCH_COLOR, 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, VuiChip, VuiCode, VuiCodeEditor, VuiComposer, VuiComplexConfigurationButton, VuiContextProvider, VuiCopyButton, VuiDatePicker, VuiDateRangePicker, VuiDrawer, VuiDurationBar, VuiErrorBoundary, VuiFileDropTarget, VuiFlexContainer, VuiFlexItem, VuiFormGroup, VuiGrid, VuiGridItem, VuiHorizontalRule, VuiIcon, VuiImage, VuiImagePreview, VuiInfoList, VuiInfoListItem, VuiInfoMenu, VuiInfoTable, VuiInfoTooltip, VuiKvTable, VuiInProgress, VuiItemsInput, VuiLabel, VuiLink, VuiLinkInternal, VuiList, VuiMenu, VuiMenuItem, VuiMenuList, VuiMenuListButton, VuiModal, VuiNotifications, VuiNumberInput, VuiOptionsButton, VuiOptionsList, VuiOptionsListItem, VuiPagination, VuiPanel, VuiPasswordInput, VuiPatch, VuiPopover, VuiPortal, VuiProgressBar, VuiPrompt, VuiRadioButton, VuiScreenBlock, VuiSearchInput, VuiSearchResult, VuiSearchSelect, VuiSelect, VuiSetting, VuiSideList, VuiSideListButton, 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 };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const PATCH_COLOR: readonly ["red", "orange", "amber", "lime", "emerald", "teal", "sky", "indigo", "purple", "fuchsia", "pink", "slate"];
|
|
2
|
+
export type PatchColor = (typeof PATCH_COLOR)[number];
|
|
3
|
+
type Props = {
|
|
4
|
+
color: PatchColor;
|
|
5
|
+
size?: "xs" | "s" | "m";
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
"data-testid"?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const VuiPatch: ({ color, size, children, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
export const PATCH_COLOR = [
|
|
15
|
+
"red",
|
|
16
|
+
"orange",
|
|
17
|
+
"amber",
|
|
18
|
+
"lime",
|
|
19
|
+
"emerald",
|
|
20
|
+
"teal",
|
|
21
|
+
"sky",
|
|
22
|
+
"indigo",
|
|
23
|
+
"purple",
|
|
24
|
+
"fuchsia",
|
|
25
|
+
"pink",
|
|
26
|
+
"slate"
|
|
27
|
+
];
|
|
28
|
+
export const VuiPatch = (_a) => {
|
|
29
|
+
var { color, size = "xs", children } = _a, rest = __rest(_a, ["color", "size", "children"]);
|
|
30
|
+
const classes = classNames("vuiPatch", `vuiPatch--${color}`, `vuiPatch--${size}`);
|
|
31
|
+
return (_jsx("div", Object.assign({ className: classes }, rest, { children: children })));
|
|
32
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.vuiPatch {
|
|
2
|
+
flex: 0 0 auto;
|
|
3
|
+
border-radius: $sizeXs;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
$colors: "indigo", "emerald", "amber", "pink", "sky", "orange", "slate", "teal", "lime", "purple", "fuchsia", "red";
|
|
10
|
+
|
|
11
|
+
@each $color in $colors {
|
|
12
|
+
.vuiPatch--#{$color} {
|
|
13
|
+
background-color: var(--vui-color-#{$color}-background);
|
|
14
|
+
color: var(--vui-color-#{$color}-text);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$size: (
|
|
19
|
+
xs: $sizeXs,
|
|
20
|
+
s: $sizeS,
|
|
21
|
+
m: $sizeM
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
$sizes: "xs", "s", "m";
|
|
25
|
+
|
|
26
|
+
@each $sizeName, $sizeValue in $size {
|
|
27
|
+
.vuiPatch--#{$sizeName} {
|
|
28
|
+
padding: $sizeValue;
|
|
29
|
+
}
|
|
30
|
+
}
|
package/lib/styles/index.css
CHANGED
|
@@ -1310,50 +1310,27 @@ fieldset {
|
|
|
1310
1310
|
}
|
|
1311
1311
|
|
|
1312
1312
|
.vuiSimpleCard--interactive {
|
|
1313
|
-
border: 1px solid var(--vui-color-primary-highlight-shade);
|
|
1314
1313
|
transition: box-shadow 0.2s, border-color 0.2s;
|
|
1315
1314
|
}
|
|
1316
1315
|
.vuiSimpleCard--interactive:hover {
|
|
1317
|
-
border-color: var(--vui-color-primary-shade);
|
|
1318
|
-
box-shadow: rgba(
|
|
1319
|
-
}
|
|
1320
|
-
|
|
1321
|
-
.vuiSimpleCard--danger {
|
|
1322
|
-
border-color: var(--vui-color-danger-shade);
|
|
1323
|
-
}
|
|
1324
|
-
.vuiSimpleCard--danger.vuiSimpleCard--interactive:hover {
|
|
1325
|
-
border-color: var(--vui-color-danger-shade);
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
.vuiSimpleCard--warning {
|
|
1329
|
-
border-color: var(--vui-color-warning-shade);
|
|
1330
|
-
}
|
|
1331
|
-
.vuiSimpleCard--warning.vuiSimpleCard--interactive:hover {
|
|
1332
|
-
border-color: var(--vui-color-warning-shade);
|
|
1316
|
+
border-color: var(--vui-color-primary-highlight-shade);
|
|
1317
|
+
box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;
|
|
1333
1318
|
}
|
|
1334
1319
|
|
|
1335
1320
|
.vuiSimpleCard--fullHeight {
|
|
1336
1321
|
height: 100%;
|
|
1337
1322
|
}
|
|
1338
1323
|
|
|
1339
|
-
.vuiSimpleCard--xxs {
|
|
1340
|
-
padding: 8px 12px;
|
|
1341
|
-
}
|
|
1342
|
-
|
|
1343
|
-
.vuiSimpleCard--xs {
|
|
1344
|
-
padding: 12px 16px;
|
|
1345
|
-
}
|
|
1346
|
-
|
|
1347
1324
|
.vuiSimpleCard--s {
|
|
1348
|
-
padding:
|
|
1325
|
+
padding: 12px;
|
|
1349
1326
|
}
|
|
1350
1327
|
|
|
1351
1328
|
.vuiSimpleCard--m {
|
|
1352
|
-
padding:
|
|
1329
|
+
padding: 16px;
|
|
1353
1330
|
}
|
|
1354
1331
|
|
|
1355
1332
|
.vuiSimpleCard--l {
|
|
1356
|
-
padding:
|
|
1333
|
+
padding: 24px;
|
|
1357
1334
|
}
|
|
1358
1335
|
|
|
1359
1336
|
.vuiChatTurn {
|
|
@@ -1526,6 +1503,51 @@ fieldset {
|
|
|
1526
1503
|
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
|
|
1527
1504
|
}
|
|
1528
1505
|
|
|
1506
|
+
.vuiChip {
|
|
1507
|
+
display: inline-flex;
|
|
1508
|
+
align-items: center;
|
|
1509
|
+
gap: 8px;
|
|
1510
|
+
border: 1px solid var(--vui-color-border-light);
|
|
1511
|
+
background-color: var(--vui-color-light-shade);
|
|
1512
|
+
padding: 4px 12px;
|
|
1513
|
+
border-radius: 16px;
|
|
1514
|
+
transition: all 0.2s;
|
|
1515
|
+
box-shadow: rgba(60, 64, 67, 0.3) 0px 0px 0px 0px, rgba(60, 64, 67, 0.15) 0px 0px 0px 0px;
|
|
1516
|
+
}
|
|
1517
|
+
.vuiChip:hover {
|
|
1518
|
+
box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;
|
|
1519
|
+
border-color: var(--vui-color-medium-shade);
|
|
1520
|
+
}
|
|
1521
|
+
|
|
1522
|
+
.vuiChip__label {
|
|
1523
|
+
font-weight: 500;
|
|
1524
|
+
font-size: 14px;
|
|
1525
|
+
color: var(--vui-color-text);
|
|
1526
|
+
line-height: 1.6;
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
.vuiChip__append {
|
|
1530
|
+
color: var(--vui-color-subdued-shade);
|
|
1531
|
+
padding: 4px 8px;
|
|
1532
|
+
font-size: 12px;
|
|
1533
|
+
border-radius: 12px;
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
.vuiChip-isActive {
|
|
1537
|
+
border: 1px solid var(--vui-color-primary-shade);
|
|
1538
|
+
background-color: var(--vui-color-empty-shade);
|
|
1539
|
+
}
|
|
1540
|
+
.vuiChip-isActive:hover {
|
|
1541
|
+
border: 1px solid var(--vui-color-primary-shade);
|
|
1542
|
+
}
|
|
1543
|
+
.vuiChip-isActive .vuiChip__label,
|
|
1544
|
+
.vuiChip-isActive .vuiChip__append {
|
|
1545
|
+
color: var(--vui-color-primary-shade);
|
|
1546
|
+
}
|
|
1547
|
+
.vuiChip-isActive .vuiChip__append {
|
|
1548
|
+
background-color: var(--vui-color-primary-lighter-shade);
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1529
1551
|
.vuiCodeContainer {
|
|
1530
1552
|
position: relative;
|
|
1531
1553
|
max-height: 480px;
|
|
@@ -1594,6 +1616,11 @@ fieldset {
|
|
|
1594
1616
|
padding: 8px 4px 0 24px;
|
|
1595
1617
|
}
|
|
1596
1618
|
|
|
1619
|
+
.vuiComposer {
|
|
1620
|
+
position: relative;
|
|
1621
|
+
width: 100%;
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1597
1624
|
.vuiComplexConfigurationButton {
|
|
1598
1625
|
width: 100%;
|
|
1599
1626
|
border: 1px solid var(--vui-color-primary-highlight-shade);
|
|
@@ -2565,6 +2592,38 @@ h2.react-datepicker__current-month {
|
|
|
2565
2592
|
background-color: var(--vui-color-medium-shade);
|
|
2566
2593
|
}
|
|
2567
2594
|
|
|
2595
|
+
.vuiFileDropTarget__messageContainer {
|
|
2596
|
+
position: fixed;
|
|
2597
|
+
left: 0;
|
|
2598
|
+
top: 0;
|
|
2599
|
+
width: 100%;
|
|
2600
|
+
height: 100%;
|
|
2601
|
+
display: flex;
|
|
2602
|
+
justify-content: center;
|
|
2603
|
+
align-items: center;
|
|
2604
|
+
}
|
|
2605
|
+
|
|
2606
|
+
.vuiFileDropTarget__message {
|
|
2607
|
+
padding: 24px;
|
|
2608
|
+
max-width: 400px;
|
|
2609
|
+
width: 100%;
|
|
2610
|
+
pointer-events: none;
|
|
2611
|
+
}
|
|
2612
|
+
.vuiFileDropTarget__message p,
|
|
2613
|
+
.vuiFileDropTarget__message span {
|
|
2614
|
+
color: var(--vui-color-empty-shade) !important;
|
|
2615
|
+
}
|
|
2616
|
+
|
|
2617
|
+
.vuiFileDropTarget__scopedOverlay {
|
|
2618
|
+
position: absolute;
|
|
2619
|
+
inset: 0;
|
|
2620
|
+
display: flex;
|
|
2621
|
+
align-items: center;
|
|
2622
|
+
justify-content: center;
|
|
2623
|
+
background-color: rgba(var(--vui-color-primary-shade-rgb), 0.6);
|
|
2624
|
+
z-index: 10;
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2568
2627
|
.vuiFlexContainer {
|
|
2569
2628
|
display: flex;
|
|
2570
2629
|
align-items: stretch;
|
|
@@ -4555,6 +4614,86 @@ h2.react-datepicker__current-month {
|
|
|
4555
4614
|
height: auto;
|
|
4556
4615
|
}
|
|
4557
4616
|
|
|
4617
|
+
.vuiPatch {
|
|
4618
|
+
flex: 0 0 auto;
|
|
4619
|
+
border-radius: 8px;
|
|
4620
|
+
display: inline-flex;
|
|
4621
|
+
align-items: center;
|
|
4622
|
+
justify-content: center;
|
|
4623
|
+
}
|
|
4624
|
+
|
|
4625
|
+
.vuiPatch--indigo {
|
|
4626
|
+
background-color: var(--vui-color-indigo-background);
|
|
4627
|
+
color: var(--vui-color-indigo-text);
|
|
4628
|
+
}
|
|
4629
|
+
|
|
4630
|
+
.vuiPatch--emerald {
|
|
4631
|
+
background-color: var(--vui-color-emerald-background);
|
|
4632
|
+
color: var(--vui-color-emerald-text);
|
|
4633
|
+
}
|
|
4634
|
+
|
|
4635
|
+
.vuiPatch--amber {
|
|
4636
|
+
background-color: var(--vui-color-amber-background);
|
|
4637
|
+
color: var(--vui-color-amber-text);
|
|
4638
|
+
}
|
|
4639
|
+
|
|
4640
|
+
.vuiPatch--pink {
|
|
4641
|
+
background-color: var(--vui-color-pink-background);
|
|
4642
|
+
color: var(--vui-color-pink-text);
|
|
4643
|
+
}
|
|
4644
|
+
|
|
4645
|
+
.vuiPatch--sky {
|
|
4646
|
+
background-color: var(--vui-color-sky-background);
|
|
4647
|
+
color: var(--vui-color-sky-text);
|
|
4648
|
+
}
|
|
4649
|
+
|
|
4650
|
+
.vuiPatch--orange {
|
|
4651
|
+
background-color: var(--vui-color-orange-background);
|
|
4652
|
+
color: var(--vui-color-orange-text);
|
|
4653
|
+
}
|
|
4654
|
+
|
|
4655
|
+
.vuiPatch--slate {
|
|
4656
|
+
background-color: var(--vui-color-slate-background);
|
|
4657
|
+
color: var(--vui-color-slate-text);
|
|
4658
|
+
}
|
|
4659
|
+
|
|
4660
|
+
.vuiPatch--teal {
|
|
4661
|
+
background-color: var(--vui-color-teal-background);
|
|
4662
|
+
color: var(--vui-color-teal-text);
|
|
4663
|
+
}
|
|
4664
|
+
|
|
4665
|
+
.vuiPatch--lime {
|
|
4666
|
+
background-color: var(--vui-color-lime-background);
|
|
4667
|
+
color: var(--vui-color-lime-text);
|
|
4668
|
+
}
|
|
4669
|
+
|
|
4670
|
+
.vuiPatch--purple {
|
|
4671
|
+
background-color: var(--vui-color-purple-background);
|
|
4672
|
+
color: var(--vui-color-purple-text);
|
|
4673
|
+
}
|
|
4674
|
+
|
|
4675
|
+
.vuiPatch--fuchsia {
|
|
4676
|
+
background-color: var(--vui-color-fuchsia-background);
|
|
4677
|
+
color: var(--vui-color-fuchsia-text);
|
|
4678
|
+
}
|
|
4679
|
+
|
|
4680
|
+
.vuiPatch--red {
|
|
4681
|
+
background-color: var(--vui-color-red-background);
|
|
4682
|
+
color: var(--vui-color-red-text);
|
|
4683
|
+
}
|
|
4684
|
+
|
|
4685
|
+
.vuiPatch--xs {
|
|
4686
|
+
padding: 8px;
|
|
4687
|
+
}
|
|
4688
|
+
|
|
4689
|
+
.vuiPatch--s {
|
|
4690
|
+
padding: 12px;
|
|
4691
|
+
}
|
|
4692
|
+
|
|
4693
|
+
.vuiPatch--m {
|
|
4694
|
+
padding: 16px;
|
|
4695
|
+
}
|
|
4696
|
+
|
|
4558
4697
|
.vuiPopover {
|
|
4559
4698
|
position: absolute;
|
|
4560
4699
|
background-color: var(--vui-color-empty-shade);
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import {
|
|
3
|
+
VuiBadge,
|
|
3
4
|
VuiFlexContainer,
|
|
4
5
|
VuiGrid,
|
|
6
|
+
VuiHorizontalRule,
|
|
5
7
|
VuiIcon,
|
|
8
|
+
VuiPatch,
|
|
6
9
|
VuiSelect,
|
|
7
10
|
VuiSimpleCard,
|
|
8
11
|
VuiSpacer,
|
|
@@ -10,18 +13,16 @@ import {
|
|
|
10
13
|
VuiTextColor,
|
|
11
14
|
VuiTitle
|
|
12
15
|
} from "../../../lib";
|
|
13
|
-
import { BiPencil } from "react-icons/bi";
|
|
16
|
+
import { BiData, BiPencil, BiRightArrowAlt } from "react-icons/bi";
|
|
14
17
|
|
|
15
18
|
const paddingOptions = [
|
|
16
|
-
{ text: "Extra extra small", value: "xxs" },
|
|
17
|
-
{ text: "Extra small", value: "xs" },
|
|
18
19
|
{ text: "Small", value: "s" },
|
|
19
20
|
{ text: "Medium", value: "m" },
|
|
20
21
|
{ text: "Large", value: "l" }
|
|
21
22
|
];
|
|
22
23
|
|
|
23
24
|
export const SimpleCard = () => {
|
|
24
|
-
const [padding, setPadding] = useState<"
|
|
25
|
+
const [padding, setPadding] = useState<"s" | "m" | "l">("l");
|
|
25
26
|
|
|
26
27
|
return (
|
|
27
28
|
<>
|
|
@@ -29,7 +30,7 @@ export const SimpleCard = () => {
|
|
|
29
30
|
id="paddingOptions"
|
|
30
31
|
options={paddingOptions}
|
|
31
32
|
value={padding}
|
|
32
|
-
onChange={(event) => setPadding(event.target.value as "
|
|
33
|
+
onChange={(event) => setPadding(event.target.value as "s" | "m" | "l")}
|
|
33
34
|
/>
|
|
34
35
|
|
|
35
36
|
<VuiSpacer size="m" />
|
|
@@ -130,7 +131,11 @@ export const SimpleCard = () => {
|
|
|
130
131
|
</VuiText>
|
|
131
132
|
</VuiSimpleCard>
|
|
132
133
|
|
|
133
|
-
<VuiSimpleCard
|
|
134
|
+
<VuiSimpleCard
|
|
135
|
+
padding={padding}
|
|
136
|
+
warning="Missing configuration"
|
|
137
|
+
onClick={() => console.log("Raccoon says hi!")}
|
|
138
|
+
>
|
|
134
139
|
<VuiTitle size="xs">
|
|
135
140
|
<h3>Raccoon</h3>
|
|
136
141
|
</VuiTitle>
|
|
@@ -144,6 +149,67 @@ export const SimpleCard = () => {
|
|
|
144
149
|
</VuiText>
|
|
145
150
|
</VuiSimpleCard>
|
|
146
151
|
</VuiGrid>
|
|
152
|
+
|
|
153
|
+
<VuiSpacer size="m" />
|
|
154
|
+
|
|
155
|
+
<div style={{ maxWidth: "400px" }}>
|
|
156
|
+
<VuiSimpleCard padding={padding} onClick={() => console.log("Selected")}>
|
|
157
|
+
<VuiFlexContainer alignItems="start" justifyContent="spaceBetween">
|
|
158
|
+
<VuiPatch color="emerald" size="s">
|
|
159
|
+
<VuiIcon>
|
|
160
|
+
<BiData />
|
|
161
|
+
</VuiIcon>
|
|
162
|
+
</VuiPatch>
|
|
163
|
+
|
|
164
|
+
<VuiBadge color="primary">Sources</VuiBadge>
|
|
165
|
+
</VuiFlexContainer>
|
|
166
|
+
|
|
167
|
+
<VuiSpacer size="m" />
|
|
168
|
+
|
|
169
|
+
<VuiTitle size="s">
|
|
170
|
+
<h3>
|
|
171
|
+
<strong>Tyrannodata</strong>
|
|
172
|
+
</h3>
|
|
173
|
+
</VuiTitle>
|
|
174
|
+
|
|
175
|
+
<VuiSpacer size="xxs" />
|
|
176
|
+
|
|
177
|
+
<VuiText size="xs">
|
|
178
|
+
<p>
|
|
179
|
+
<VuiTextColor color="subdued">Terrible, horrible, no-good data</VuiTextColor>
|
|
180
|
+
</p>
|
|
181
|
+
</VuiText>
|
|
182
|
+
|
|
183
|
+
<VuiSpacer size="s" />
|
|
184
|
+
|
|
185
|
+
<VuiText size="s">
|
|
186
|
+
<p>
|
|
187
|
+
<VuiTextColor color="subdued">
|
|
188
|
+
This data has seen better days. Where once it soared, mighty and free, above the lesser data, these days
|
|
189
|
+
it spends its time scavenging for bytes.
|
|
190
|
+
</VuiTextColor>
|
|
191
|
+
</p>
|
|
192
|
+
</VuiText>
|
|
193
|
+
|
|
194
|
+
<VuiSpacer size="l" />
|
|
195
|
+
|
|
196
|
+
<VuiHorizontalRule color="subdued" />
|
|
197
|
+
|
|
198
|
+
<VuiSpacer size="l" />
|
|
199
|
+
|
|
200
|
+
<VuiFlexContainer alignItems="center" justifyContent="spaceBetween">
|
|
201
|
+
<VuiText size="s">
|
|
202
|
+
<p>
|
|
203
|
+
<VuiTextColor color="primary">Select</VuiTextColor>
|
|
204
|
+
</p>
|
|
205
|
+
</VuiText>
|
|
206
|
+
|
|
207
|
+
<VuiIcon color="primary" size="s">
|
|
208
|
+
<BiRightArrowAlt />
|
|
209
|
+
</VuiIcon>
|
|
210
|
+
</VuiFlexContainer>
|
|
211
|
+
</VuiSimpleCard>
|
|
212
|
+
</div>
|
|
147
213
|
</>
|
|
148
214
|
);
|
|
149
215
|
};
|