@vectara/vectara-ui 18.3.0 → 18.4.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.
@@ -0,0 +1,9 @@
1
+ type Props = {
2
+ children: React.ReactNode;
3
+ isActive?: boolean;
4
+ onClick: () => void;
5
+ append?: React.ReactNode;
6
+ "data-testid"?: string;
7
+ };
8
+ export declare const VuiChip: ({ children, isActive, append, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,20 @@
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
+ export const VuiChip = (_a) => {
15
+ var { children, isActive, append } = _a, rest = __rest(_a, ["children", "isActive", "append"]);
16
+ const classes = classNames("vuiChip", {
17
+ "vuiChip-isActive": isActive
18
+ });
19
+ return (_jsxs("button", Object.assign({ className: classes }, rest, { children: [_jsx("div", Object.assign({ className: "vuiChip__label" }, { children: children })), append && _jsx("div", Object.assign({ className: "vuiChip__append" }, { children: append }))] })));
20
+ };
@@ -0,0 +1,49 @@
1
+ .vuiChip {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: $sizeXs;
5
+ border: 1px solid var(--vui-color-border-light);
6
+ background-color: var(--vui-color-light-shade);
7
+ padding: $sizeXxs $sizeS;
8
+ border-radius: $sizeM;
9
+ transition: all $transitionSpeed;
10
+ box-shadow: $shadowSmallStart;
11
+
12
+ &:hover {
13
+ box-shadow: $shadowSmallEnd;
14
+ border-color: var(--vui-color-medium-shade);
15
+ }
16
+ }
17
+
18
+ .vuiChip__label {
19
+ font-weight: $fontWeightStrong;
20
+ font-size: $fontSizeStandard;
21
+ color: var(--vui-color-text);
22
+ // Ensures consistent chip height regardless of whether
23
+ // append is present or not.
24
+ line-height: 1.6;
25
+ }
26
+
27
+ .vuiChip__append {
28
+ color: var(--vui-color-subdued-shade);
29
+ padding: $sizeXxs $sizeXs;
30
+ font-size: $fontSizeSmall;
31
+ border-radius: $sizeS;
32
+ }
33
+
34
+ .vuiChip-isActive {
35
+ border: 1px solid var(--vui-color-primary-shade);
36
+ background-color: var(--vui-color-empty-shade);
37
+
38
+ &:hover {
39
+ border: 1px solid var(--vui-color-primary-shade);
40
+ }
41
+
42
+ .vuiChip__label,
43
+ .vuiChip__append {
44
+ color: var(--vui-color-primary-shade);
45
+ }
46
+ .vuiChip__append {
47
+ background-color: var(--vui-color-primary-lighter-shade);
48
+ }
49
+ }
@@ -19,6 +19,7 @@ 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";
24
25
  import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
@@ -105,4 +106,4 @@ import { VuiTopicButton } from "./topicButton/TopicButton";
105
106
  import { copyToClipboard } from "../utils/copyToClipboard";
106
107
  import { toRgb, toRgba } from "./context/Theme";
107
108
  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 };
109
+ 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, VuiChip, 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 };
@@ -16,6 +16,7 @@ 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";
20
21
  import { VuiComplexConfigurationButton } from "./complexConfigurationButton/ComplexConfigurationButton";
21
22
  import { VuiContextProvider } from "./context/Context";
@@ -95,4 +96,4 @@ import { VuiInfoTooltip } from "./tooltip/InfoTooltip";
95
96
  import { VuiTopicButton } from "./topicButton/TopicButton";
96
97
  import { copyToClipboard } from "../utils/copyToClipboard";
97
98
  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 };
99
+ 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, VuiChip, 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 };
@@ -1526,6 +1526,51 @@ fieldset {
1526
1526
  box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
1527
1527
  }
1528
1528
 
1529
+ .vuiChip {
1530
+ display: inline-flex;
1531
+ align-items: center;
1532
+ gap: 8px;
1533
+ border: 1px solid var(--vui-color-border-light);
1534
+ background-color: var(--vui-color-light-shade);
1535
+ padding: 4px 12px;
1536
+ border-radius: 16px;
1537
+ transition: all 0.2s;
1538
+ box-shadow: rgba(60, 64, 67, 0.3) 0px 0px 0px 0px, rgba(60, 64, 67, 0.15) 0px 0px 0px 0px;
1539
+ }
1540
+ .vuiChip:hover {
1541
+ box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;
1542
+ border-color: var(--vui-color-medium-shade);
1543
+ }
1544
+
1545
+ .vuiChip__label {
1546
+ font-weight: 500;
1547
+ font-size: 14px;
1548
+ color: var(--vui-color-text);
1549
+ line-height: 1.6;
1550
+ }
1551
+
1552
+ .vuiChip__append {
1553
+ color: var(--vui-color-subdued-shade);
1554
+ padding: 4px 8px;
1555
+ font-size: 12px;
1556
+ border-radius: 12px;
1557
+ }
1558
+
1559
+ .vuiChip-isActive {
1560
+ border: 1px solid var(--vui-color-primary-shade);
1561
+ background-color: var(--vui-color-empty-shade);
1562
+ }
1563
+ .vuiChip-isActive:hover {
1564
+ border: 1px solid var(--vui-color-primary-shade);
1565
+ }
1566
+ .vuiChip-isActive .vuiChip__label,
1567
+ .vuiChip-isActive .vuiChip__append {
1568
+ color: var(--vui-color-primary-shade);
1569
+ }
1570
+ .vuiChip-isActive .vuiChip__append {
1571
+ background-color: var(--vui-color-primary-lighter-shade);
1572
+ }
1573
+
1529
1574
  .vuiCodeContainer {
1530
1575
  position: relative;
1531
1576
  max-height: 480px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectara/vectara-ui",
3
- "version": "18.3.0",
3
+ "version": "18.4.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,49 @@
1
+ import { useState } from "react";
2
+ import { VuiChip, VuiFlexContainer, VuiSpacer, VuiToggle } from "../../../lib";
3
+
4
+ export const Chip = () => {
5
+ const [hasCounts, setHasCounts] = useState(false);
6
+ const [activeOption, setActiveOption] = useState<"all" | "a" | "b" | "c">("all");
7
+
8
+ return (
9
+ <>
10
+ <VuiToggle checked={hasCounts} onChange={() => setHasCounts(!hasCounts)} label="Append counts" />
11
+
12
+ <VuiSpacer size="m" />
13
+
14
+ <VuiFlexContainer spacing="xs">
15
+ <VuiChip
16
+ onClick={() => setActiveOption("all")}
17
+ isActive={activeOption === "all"}
18
+ append={hasCounts ? 100 : undefined}
19
+ >
20
+ All options
21
+ </VuiChip>
22
+
23
+ <VuiChip
24
+ onClick={() => setActiveOption("a")}
25
+ isActive={activeOption === "a"}
26
+ append={hasCounts ? 2 : undefined}
27
+ >
28
+ Option A
29
+ </VuiChip>
30
+
31
+ <VuiChip
32
+ onClick={() => setActiveOption("b")}
33
+ isActive={activeOption === "b"}
34
+ append={hasCounts ? 81 : undefined}
35
+ >
36
+ Option B
37
+ </VuiChip>
38
+
39
+ <VuiChip
40
+ onClick={() => setActiveOption("c")}
41
+ isActive={activeOption === "c"}
42
+ append={hasCounts ? 16 : undefined}
43
+ >
44
+ Option C
45
+ </VuiChip>
46
+ </VuiFlexContainer>
47
+ </>
48
+ );
49
+ };
@@ -0,0 +1,11 @@
1
+ import { Chip } from "./Chip";
2
+ const ChipSource = require("!!raw-loader!./Chip");
3
+
4
+ export const chip = {
5
+ name: "Chip",
6
+ path: "/chip",
7
+ example: {
8
+ component: <Chip />,
9
+ source: ChipSource.default.toString()
10
+ }
11
+ };
@@ -8,6 +8,7 @@ import { callout } from "./pages/callout";
8
8
  import { card } from "./pages/card";
9
9
  import { chat } from "./pages/chat";
10
10
  import { checkbox } from "./pages/checkbox";
11
+ import { chip } from "./pages/chip";
11
12
  import { code } from "./pages/code";
12
13
  import { codeEditor } from "./pages/codeEditor";
13
14
  import { complexConfigurationButton } from "./pages/complexConfigurationButton";
@@ -99,7 +100,7 @@ export const categories: Category[] = [
99
100
  },
100
101
  {
101
102
  name: "Navigation",
102
- pages: [tabs, stepsVertical, steps]
103
+ pages: [tabs, stepsVertical, steps, chip]
103
104
  },
104
105
  {
105
106
  name: "Content",