@vectara/vectara-ui 16.1.1 → 16.2.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/appLayout.scss +1 -0
- package/lib/components/complexConfigurationButton/ComplexConfigurationButton.d.ts +14 -0
- package/lib/components/complexConfigurationButton/ComplexConfigurationButton.js +11 -0
- package/lib/components/complexConfigurationButton/_index.scss +17 -0
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +2 -1
- package/lib/styles/index.css +17 -0
- package/package.json +1 -1
- package/src/docs/pages/complexConfigurationButton/ComplexConfigurationButton.tsx +53 -0
- package/src/docs/pages/complexConfigurationButton/index.tsx +11 -0
- package/src/docs/pages.tsx +12 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from "react";
|
|
2
|
+
type Props = {
|
|
3
|
+
title: ReactNode;
|
|
4
|
+
description?: ReactNode;
|
|
5
|
+
footer?: ReactNode;
|
|
6
|
+
icon?: ReactElement;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
isDisabled?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
"data-testid"?: string;
|
|
11
|
+
"aria-label"?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const VuiComplexConfigurationButton: ({ title, description, footer, icon, onClick, isDisabled, className, "data-testid": dataTestId, "aria-label": ariaLabel }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { BiPencil } from "react-icons/bi";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { VuiFlexContainer } from "../flex/FlexContainer";
|
|
5
|
+
import { VuiIcon } from "../icon/Icon";
|
|
6
|
+
import { VuiSpacer } from "../spacer/Spacer";
|
|
7
|
+
import { VuiText } from "../typography/Text";
|
|
8
|
+
export const VuiComplexConfigurationButton = ({ title, description, footer, icon, onClick, isDisabled, className, "data-testid": dataTestId, "aria-label": ariaLabel }) => {
|
|
9
|
+
const classes = classNames("vuiComplexConfigurationButton", className);
|
|
10
|
+
return (_jsxs("button", Object.assign({ type: "button", className: classes, onClick: onClick, disabled: isDisabled, "data-testid": dataTestId, "aria-label": ariaLabel }, { children: [_jsxs(VuiFlexContainer, Object.assign({ alignItems: "center", justifyContent: "spaceBetween" }, { children: [_jsx(VuiText, Object.assign({ align: "left" }, { children: _jsx("p", { children: _jsx("strong", { children: title }) }) })), _jsx(VuiIcon, Object.assign({ size: "m", color: "primary" }, { children: icon !== null && icon !== void 0 ? icon : _jsx(BiPencil, {}) }))] })), description && (_jsxs(_Fragment, { children: [_jsx(VuiSpacer, { size: "s" }), _jsx(VuiText, Object.assign({ align: "left" }, { children: _jsx("p", { children: description }) }))] })), footer && (_jsxs(_Fragment, { children: [_jsx(VuiSpacer, { size: "s" }), footer] }))] })));
|
|
11
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.vuiComplexConfigurationButton {
|
|
2
|
+
width: 100%;
|
|
3
|
+
border: 1px solid var(--vui-color-primary-highlight-shade);
|
|
4
|
+
padding: $sizeS $sizeM;
|
|
5
|
+
border-radius: $sizeXs;
|
|
6
|
+
transition: box-shadow $transitionSpeed, border-color $transitionSpeed;
|
|
7
|
+
|
|
8
|
+
&:hover:not(:disabled) {
|
|
9
|
+
border-color: var(--vui-color-primary-shade);
|
|
10
|
+
box-shadow: $shadowLargeEnd;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&:disabled {
|
|
14
|
+
cursor: not-allowed;
|
|
15
|
+
opacity: 0.5;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -21,6 +21,7 @@ import { ChatTurn, ChatStyle, ChatLanguage } from "./chat/types";
|
|
|
21
21
|
import { VuiChat } from "./chat/Chat";
|
|
22
22
|
import { VuiCode } from "./code/Code";
|
|
23
23
|
import { CodeLanguage } from "./code/types";
|
|
24
|
+
import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
|
|
24
25
|
import { VuiContextProvider } from "./context/Context";
|
|
25
26
|
import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
26
27
|
import { VuiDatePicker } from "./datePicker/DatePicker";
|
|
@@ -95,4 +96,4 @@ import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
|
95
96
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
96
97
|
import { toRgb, toRgba } from "./context/Theme";
|
|
97
98
|
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 };
|
|
99
|
+
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, 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
|
@@ -17,6 +17,7 @@ import { VuiCard, VuiSimpleCard } from "./card";
|
|
|
17
17
|
import { CALLOUT_COLOR, CALLOUT_SIZE } from "./callout/types";
|
|
18
18
|
import { VuiChat } from "./chat/Chat";
|
|
19
19
|
import { VuiCode } from "./code/Code";
|
|
20
|
+
import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
|
|
20
21
|
import { VuiContextProvider } from "./context/Context";
|
|
21
22
|
import { VuiCopyButton } from "./copyButton/CopyButton";
|
|
22
23
|
import { VuiDatePicker } from "./datePicker/DatePicker";
|
|
@@ -87,4 +88,4 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
|
|
|
87
88
|
import { VuiTopicButton } from "./topicButton/TopicButton";
|
|
88
89
|
import { copyToClipboard } from "../utils/copyToClipboard";
|
|
89
90
|
import { toRgb, toRgba } from "./context/Theme";
|
|
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 };
|
|
91
|
+
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, 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/styles/index.css
CHANGED
|
@@ -403,6 +403,7 @@ fieldset {
|
|
|
403
403
|
flex-direction: column;
|
|
404
404
|
align-items: center;
|
|
405
405
|
overflow-y: auto;
|
|
406
|
+
scrollbar-gutter: stable;
|
|
406
407
|
}
|
|
407
408
|
|
|
408
409
|
.vuiAppSideNav {
|
|
@@ -1570,6 +1571,22 @@ fieldset {
|
|
|
1570
1571
|
padding: 8px 4px 0 24px;
|
|
1571
1572
|
}
|
|
1572
1573
|
|
|
1574
|
+
.vuiComplexConfigurationButton {
|
|
1575
|
+
width: 100%;
|
|
1576
|
+
border: 1px solid var(--vui-color-primary-highlight-shade);
|
|
1577
|
+
padding: 12px 16px;
|
|
1578
|
+
border-radius: 8px;
|
|
1579
|
+
transition: box-shadow 0.2s, border-color 0.2s;
|
|
1580
|
+
}
|
|
1581
|
+
.vuiComplexConfigurationButton:hover:not(:disabled) {
|
|
1582
|
+
border-color: var(--vui-color-primary-shade);
|
|
1583
|
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;
|
|
1584
|
+
}
|
|
1585
|
+
.vuiComplexConfigurationButton:disabled {
|
|
1586
|
+
cursor: not-allowed;
|
|
1587
|
+
opacity: 0.5;
|
|
1588
|
+
}
|
|
1589
|
+
|
|
1573
1590
|
.react-datepicker__navigation-icon::before, .react-datepicker__year-read-view--down-arrow,
|
|
1574
1591
|
.react-datepicker__month-read-view--down-arrow,
|
|
1575
1592
|
.react-datepicker__month-year-read-view--down-arrow {
|
package/package.json
CHANGED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { BiCog } from "react-icons/bi";
|
|
2
|
+
import { VuiComplexConfigurationButton, VuiSpacer, VuiStatList } from "../../../lib";
|
|
3
|
+
|
|
4
|
+
export const ComplexConfigurationButton = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<VuiComplexConfigurationButton title="Title only" onClick={() => console.log("clicked")} />
|
|
8
|
+
|
|
9
|
+
<VuiSpacer size="m" />
|
|
10
|
+
|
|
11
|
+
<VuiComplexConfigurationButton
|
|
12
|
+
title="Title with description"
|
|
13
|
+
description="A secondary line of text describing the current selection."
|
|
14
|
+
onClick={() => console.log("clicked")}
|
|
15
|
+
/>
|
|
16
|
+
|
|
17
|
+
<VuiSpacer size="m" />
|
|
18
|
+
|
|
19
|
+
<VuiComplexConfigurationButton
|
|
20
|
+
title="With a footer"
|
|
21
|
+
description="Pass any node into the footer slot."
|
|
22
|
+
footer={
|
|
23
|
+
<VuiStatList
|
|
24
|
+
size="xs"
|
|
25
|
+
stats={[
|
|
26
|
+
{ name: "Tokens", value: "4096" },
|
|
27
|
+
{ name: "Temperature", value: "0.7" }
|
|
28
|
+
]}
|
|
29
|
+
/>
|
|
30
|
+
}
|
|
31
|
+
onClick={() => console.log("clicked")}
|
|
32
|
+
/>
|
|
33
|
+
|
|
34
|
+
<VuiSpacer size="m" />
|
|
35
|
+
|
|
36
|
+
<VuiComplexConfigurationButton
|
|
37
|
+
title="Custom icon"
|
|
38
|
+
description="Override the default pencil with any icon."
|
|
39
|
+
icon={<BiCog />}
|
|
40
|
+
onClick={() => console.log("clicked")}
|
|
41
|
+
/>
|
|
42
|
+
|
|
43
|
+
<VuiSpacer size="m" />
|
|
44
|
+
|
|
45
|
+
<VuiComplexConfigurationButton
|
|
46
|
+
title="Disabled"
|
|
47
|
+
description="Click is suppressed and hover styling is disabled."
|
|
48
|
+
isDisabled
|
|
49
|
+
onClick={() => console.log("clicked")}
|
|
50
|
+
/>
|
|
51
|
+
</>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComplexConfigurationButton } from "./ComplexConfigurationButton";
|
|
2
|
+
const ComplexConfigurationButtonSource = require("!!raw-loader!./ComplexConfigurationButton");
|
|
3
|
+
|
|
4
|
+
export const complexConfigurationButton = {
|
|
5
|
+
name: "Complex Configuration Button",
|
|
6
|
+
path: "/complexConfigurationButton",
|
|
7
|
+
example: {
|
|
8
|
+
component: <ComplexConfigurationButton />,
|
|
9
|
+
source: ComplexConfigurationButtonSource.default.toString()
|
|
10
|
+
}
|
|
11
|
+
};
|
package/src/docs/pages.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import { chat } from "./pages/chat";
|
|
|
10
10
|
import { checkbox } from "./pages/checkbox";
|
|
11
11
|
import { code } from "./pages/code";
|
|
12
12
|
import { codeEditor } from "./pages/codeEditor";
|
|
13
|
+
import { complexConfigurationButton } from "./pages/complexConfigurationButton";
|
|
13
14
|
import { copyButton } from "./pages/copyButton";
|
|
14
15
|
import { datePicker } from "./pages/datePicker";
|
|
15
16
|
import { drawer } from "./pages/drawer";
|
|
@@ -132,7 +133,17 @@ export const categories: Category[] = [
|
|
|
132
133
|
},
|
|
133
134
|
{
|
|
134
135
|
name: "Controls",
|
|
135
|
-
pages: [
|
|
136
|
+
pages: [
|
|
137
|
+
button,
|
|
138
|
+
complexConfigurationButton,
|
|
139
|
+
copyButton,
|
|
140
|
+
link,
|
|
141
|
+
topicButton,
|
|
142
|
+
menu,
|
|
143
|
+
optionsButton,
|
|
144
|
+
optionsList,
|
|
145
|
+
searchSelect
|
|
146
|
+
]
|
|
136
147
|
},
|
|
137
148
|
{
|
|
138
149
|
name: "Utils",
|