@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.
@@ -20,4 +20,5 @@
20
20
  flex-direction: column;
21
21
  align-items: center;
22
22
  overflow-y: auto;
23
+ scrollbar-gutter: stable;
23
24
  }
@@ -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 };
@@ -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 };
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectara/vectara-ui",
3
- "version": "16.1.1",
3
+ "version": "16.2.0",
4
4
  "homepage": "./",
5
5
  "description": "Vectara's design system, codified as a React and Sass component library",
6
6
  "author": "Vectara",
@@ -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
+ };
@@ -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: [button, copyButton, link, topicButton, menu, optionsButton, optionsList, searchSelect]
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",