@drivy/cobalt 0.18.0 → 0.19.1
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/cjs/tokens/theme.js +1 -1
- package/components/Accordion/index.js +4 -2
- package/components/Accordion/index.js.map +1 -1
- package/components/Form/Hint.js +2 -2
- package/components/Form/Hint.js.map +1 -1
- package/components/Modal/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader.js.map +1 -1
- package/components/Pill/index.js +1 -1
- package/components/Pill/index.js.map +1 -1
- package/components/PriceTable/index.js +3 -2
- package/components/PriceTable/index.js.map +1 -1
- package/components/Rating/RatingCompact.js +4 -3
- package/components/Rating/RatingCompact.js.map +1 -1
- package/components/Rating/index.js +4 -1
- package/components/Rating/index.js.map +1 -1
- package/components/Tabs/index.js +5 -3
- package/components/Tabs/index.js.map +1 -1
- package/components/Tag/index.js +1 -1
- package/components/Tag/index.js.map +1 -1
- package/index.js +1 -1
- package/package.json +6 -6
- package/styles/components/Accordion/index.scss +7 -0
- package/styles/components/Buttons/DefaultButton/index.scss +1 -1
- package/styles/components/Helper/index.scss +5 -1
- package/styles/components/Modal/index.scss +3 -8
- package/styles/components/Note/index.scss +3 -4
- package/styles/components/PhotoDropzone/index.scss +9 -11
- package/styles/components/Pill/index.scss +9 -10
- package/styles/components/PriceTable/index.scss +4 -4
- package/styles/components/ProgressBar/index.scss +10 -10
- package/styles/components/Tabs/index.scss +4 -8
- package/styles/components/Tag/index.scss +5 -7
- package/styles/core/_colors-map.scss +1 -1
- package/styles/core/border.scss +2 -2
- package/styles/core/theme.scss +1 -1
- package/tokens/theme.js +1 -1
- package/types/components/Accordion/index.d.ts +4 -0
- package/types/components/Form/Hint.d.ts +2 -1
- package/types/components/PriceTable/index.d.ts +7 -4
- package/types/components/Rating/RatingCompact.d.ts +1 -1
- package/types/components/Rating/index.d.ts +2 -1
- package/types/components/Tag/index.d.ts +2 -1
- package/utilities.css +1 -1
package/cjs/tokens/theme.js
CHANGED
|
@@ -175,7 +175,7 @@ const stroke = {
|
|
|
175
175
|
hover: "indigo/purple.700/purpleDeep.400",
|
|
176
176
|
press: "indigo.dark/purple.900/purpleDeep.400"
|
|
177
177
|
},
|
|
178
|
-
accentAlt: "
|
|
178
|
+
accentAlt: "purple/purple.300/purpleDeep.700",
|
|
179
179
|
base: "grey/navy.100/black.50",
|
|
180
180
|
baseInteractive: {
|
|
181
181
|
DEFAULT: "grey/navy.100/black.50",
|
|
@@ -7,11 +7,13 @@ import { animated, useSpring } from '@react-spring/web';
|
|
|
7
7
|
import useElementHeight from '../../hooks/useElementHeight.js';
|
|
8
8
|
|
|
9
9
|
const accordionSpringConfig = { tension: 300, friction: 30, clamp: true };
|
|
10
|
-
const AccordionItemHeader = forwardRef(({ headingLevel = 4, className, children, ...props }, ref) => {
|
|
10
|
+
const AccordionItemHeader = forwardRef(({ headingLevel = 4, className, leftToggleIcon = false, children, ...props }, ref) => {
|
|
11
11
|
const { isExpanded } = useAccordionItemContext();
|
|
12
12
|
const Heading = `h${headingLevel}`;
|
|
13
13
|
return (React.createElement(Heading, null,
|
|
14
|
-
React.createElement(AccordionButton, { ref: ref, className: "cobalt-accordion__header",
|
|
14
|
+
React.createElement(AccordionButton, { ref: ref, className: cx("cobalt-accordion__header", {
|
|
15
|
+
"cobalt-accordion__header--left-toggle-icon": leftToggleIcon,
|
|
16
|
+
}), ...props },
|
|
15
17
|
React.createElement("span", { className: cx("cobalt-accordion__header-content", className) }, children),
|
|
16
18
|
React.createElement(ToggleIcon, { isOpen: isExpanded }))));
|
|
17
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Accordion/index.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\"\nimport cx from \"classnames\"\nimport {\n Accordion as ReachAccordion,\n AccordionItem as ReachAccordionItem,\n AccordionButton as ReachAccordionButton,\n AccordionPanel as ReachAccordionPanel,\n AccordionProps as ReachAccordionProps,\n AccordionItemProps as ReachAccordionItemProps,\n AccordionButtonProps as ReachAccordionButtonProps,\n useAccordionItemContext,\n AccordionPanelProps as ReachAccordionPanelProps,\n} from \"@reach/accordion\"\nimport ToggleIcon from \"./ToggleIcon\"\nimport { animated, useSpring } from \"@react-spring/web\"\nimport useElementHeight from \"../../hooks/useElementHeight\"\nexport { useAccordionItemContext } from \"@reach/accordion\"\n\ntype HeadingLevelMapType = {\n h2: 2\n h3: 3\n h4: 4\n h5: 5\n h6: 6\n}\n\ntype HeadingTag = keyof HeadingLevelMapType\nexport type AccordionItemHeaderPropsType = {\n /**\n * To improve the semantics of the markup further, the ARIA guidelines dictate\n * that each accordion item's button should be wrapped in an element with\n * role=\"heading\", or more simply, an HTML heading tag.\n * https://reach.tech/accordion/#accordion-headings\n */\n headingLevel?: HeadingLevelMapType[HeadingTag]\n className?: string\n} & ReachAccordionButtonProps\n\nexport type AccordionItemPanelPropsType = {\n className?: string\n} & ReachAccordionPanelProps\nexport type AccordionItemPropsType = {\n className?: string\n} & ReachAccordionItemProps\nexport type AccordionPropsType = {\n className?: string\n // We have to explicit them below to get displayed by Storybook\n // should work without but might be an issue on Storybook side\n collapsible?: ReachAccordionProps[\"collapsible\"]\n defaultIndex?: ReachAccordionProps[\"defaultIndex\"]\n index?: ReachAccordionProps[\"index\"]\n multiple?: ReachAccordionProps[\"multiple\"]\n onChange?: ReachAccordionProps[\"onChange\"]\n} & ReachAccordionProps\n\nconst accordionSpringConfig = { tension: 300, friction: 30, clamp: true }\n\nexport const AccordionItemHeader = forwardRef<\n HTMLButtonElement,\n AccordionItemHeaderPropsType\n>(({ headingLevel = 4, className, children, ...props }
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Accordion/index.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\"\nimport cx from \"classnames\"\nimport {\n Accordion as ReachAccordion,\n AccordionItem as ReachAccordionItem,\n AccordionButton as ReachAccordionButton,\n AccordionPanel as ReachAccordionPanel,\n AccordionProps as ReachAccordionProps,\n AccordionItemProps as ReachAccordionItemProps,\n AccordionButtonProps as ReachAccordionButtonProps,\n useAccordionItemContext,\n AccordionPanelProps as ReachAccordionPanelProps,\n} from \"@reach/accordion\"\nimport ToggleIcon from \"./ToggleIcon\"\nimport { animated, useSpring } from \"@react-spring/web\"\nimport useElementHeight from \"../../hooks/useElementHeight\"\nexport { useAccordionItemContext } from \"@reach/accordion\"\n\ntype HeadingLevelMapType = {\n h2: 2\n h3: 3\n h4: 4\n h5: 5\n h6: 6\n}\n\ntype HeadingTag = keyof HeadingLevelMapType\nexport type AccordionItemHeaderPropsType = {\n /**\n * To improve the semantics of the markup further, the ARIA guidelines dictate\n * that each accordion item's button should be wrapped in an element with\n * role=\"heading\", or more simply, an HTML heading tag.\n * https://reach.tech/accordion/#accordion-headings\n */\n headingLevel?: HeadingLevelMapType[HeadingTag]\n className?: string\n leftToggleIcon?: boolean\n} & ReachAccordionButtonProps\n\nexport type AccordionItemPanelPropsType = {\n className?: string\n} & ReachAccordionPanelProps\nexport type AccordionItemPropsType = {\n className?: string\n} & ReachAccordionItemProps\nexport type AccordionPropsType = {\n className?: string\n // We have to explicit them below to get displayed by Storybook\n // should work without but might be an issue on Storybook side\n collapsible?: ReachAccordionProps[\"collapsible\"]\n defaultIndex?: ReachAccordionProps[\"defaultIndex\"]\n index?: ReachAccordionProps[\"index\"]\n multiple?: ReachAccordionProps[\"multiple\"]\n onChange?: ReachAccordionProps[\"onChange\"]\n} & ReachAccordionProps\n\nconst accordionSpringConfig = { tension: 300, friction: 30, clamp: true }\n\nexport const AccordionItemHeader = forwardRef<\n HTMLButtonElement,\n AccordionItemHeaderPropsType\n>(\n (\n { headingLevel = 4, className, leftToggleIcon = false, children, ...props },\n ref\n ) => {\n const { isExpanded } = useAccordionItemContext()\n const Heading = `h${headingLevel}` as HeadingTag\n return (\n <Heading>\n <ReachAccordionButton\n ref={ref}\n className={cx(\"cobalt-accordion__header\", {\n \"cobalt-accordion__header--left-toggle-icon\": leftToggleIcon,\n })}\n {...props}\n >\n <span className={cx(\"cobalt-accordion__header-content\", className)}>\n {children}\n </span>\n <ToggleIcon isOpen={isExpanded} />\n </ReachAccordionButton>\n </Heading>\n )\n }\n)\nAccordionItemHeader.displayName = \"Accordion.Item.Header\"\n\nconst AnimatedAccordionPanel = animated(ReachAccordionPanel)\nexport const AccordionItemPanel = ({\n children,\n className,\n ...props\n}: AccordionItemPanelPropsType) => {\n const { isExpanded } = useAccordionItemContext()\n const { ref, height } = useElementHeight<HTMLDivElement>()\n const animation = useSpring({\n opacity: isExpanded ? 1 : 0,\n height: isExpanded ? height : 0,\n overflow: \"hidden\",\n config: accordionSpringConfig,\n })\n\n return (\n <AnimatedAccordionPanel\n style={animation}\n // We need to set hidden to false for the exit animations to work\n // but the panel should still be hidden from the accessibility tree\n // when the panel is closed. We'll use aria-hidden instead.\n hidden={false}\n aria-hidden={!isExpanded || undefined}\n {...props}\n >\n <div ref={ref} className={cx(\"cobalt-accordion__panel\", className)}>\n {children}\n </div>\n </AnimatedAccordionPanel>\n )\n}\nAccordionItemPanel.displayName = \"Accordion.Item.Panel\"\n\nexport const AccordionItem = ({\n children,\n className,\n ...props\n}: AccordionItemPropsType) => {\n return (\n <ReachAccordionItem\n className={cx(\"cobalt-accordions-list__item\", className)}\n {...props}\n >\n {children}\n </ReachAccordionItem>\n )\n}\nAccordionItem.displayName = \"Accordion.Item\"\nAccordionItem.Header = AccordionItemHeader\nAccordionItem.Panel = AccordionItemPanel\n\nconst Accordion = ({\n className,\n children,\n index,\n collapsible = true,\n multiple = false,\n ...props\n}: AccordionPropsType) => {\n const hasIndex = index === 0 || !!index\n return (\n <ReachAccordion\n className={cx(\"cobalt-accordions-list\", className)}\n collapsible={!hasIndex && collapsible}\n multiple={!hasIndex && multiple}\n index={index}\n {...props}\n >\n {children}\n </ReachAccordion>\n )\n}\nAccordion.Item = AccordionItem\n\nexport default Accordion\n"],"names":["ReachAccordionButton","ReachAccordionPanel","ReachAccordionItem","ReachAccordion"],"mappings":"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"}
|
package/components/Form/Hint.js
CHANGED
|
@@ -29,8 +29,8 @@ const getIconColor = (status) => {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
|
-
const Hint = ({ children, status }) => {
|
|
33
|
-
return (React.createElement("div", { className: cx("cobalt-Hint", {
|
|
32
|
+
const Hint = ({ children, status, className }) => {
|
|
33
|
+
return (React.createElement("div", { className: cx("cobalt-Hint", className, {
|
|
34
34
|
"cobalt-Hint--success": status === "success",
|
|
35
35
|
"cobalt-Hint--error": status === "error",
|
|
36
36
|
}) },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hint.js","sources":["../../../src/components/Form/Hint.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\nimport { Icon } from \"../Icon\"\nimport { FormElementStatus } from \"./form\"\n\nexport interface HintPropsType {\n children: React.ReactNode\n status?: FormElementStatus\n}\n\nconst ICON_SIZE = 16\n\nconst getIcon = (status: FormElementStatus | undefined) => {\n switch (status) {\n case \"success\": {\n return \"checkCircle\"\n }\n case \"error\": {\n return \"contextualWarningCircleFilled\"\n }\n default: {\n return \"info\"\n }\n }\n}\n\nconst getIconColor = (status: FormElementStatus | undefined) => {\n switch (status) {\n case \"success\": {\n return \"signal\"\n }\n case \"error\": {\n return \"essence\"\n }\n default: {\n return \"graphiteLight\"\n }\n }\n}\n\nexport const Hint = ({ children, status }: HintPropsType) => {\n return (\n <div\n className={classNames(\"cobalt-Hint\", {\n \"cobalt-Hint--success\": status === \"success\",\n \"cobalt-Hint--error\": status === \"error\",\n })}\n >\n <span className=\"cobalt-Hint__Icon\">\n <Icon\n source={getIcon(status)}\n size={ICON_SIZE}\n color={getIconColor(status)}\n />\n </span>\n <span className=\"cobalt-Hint__Message\">{children}</span>\n </div>\n )\n}\n"],"names":["classNames"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"Hint.js","sources":["../../../src/components/Form/Hint.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\nimport { Icon } from \"../Icon\"\nimport { FormElementStatus } from \"./form\"\n\nexport interface HintPropsType {\n className?: string\n children: React.ReactNode\n status?: FormElementStatus\n}\n\nconst ICON_SIZE = 16\n\nconst getIcon = (status: FormElementStatus | undefined) => {\n switch (status) {\n case \"success\": {\n return \"checkCircle\"\n }\n case \"error\": {\n return \"contextualWarningCircleFilled\"\n }\n default: {\n return \"info\"\n }\n }\n}\n\nconst getIconColor = (status: FormElementStatus | undefined) => {\n switch (status) {\n case \"success\": {\n return \"signal\"\n }\n case \"error\": {\n return \"essence\"\n }\n default: {\n return \"graphiteLight\"\n }\n }\n}\n\nexport const Hint = ({ children, status, className }: HintPropsType) => {\n return (\n <div\n className={classNames(\"cobalt-Hint\", className, {\n \"cobalt-Hint--success\": status === \"success\",\n \"cobalt-Hint--error\": status === \"error\",\n })}\n >\n <span className=\"cobalt-Hint__Icon\">\n <Icon\n source={getIcon(status)}\n size={ICON_SIZE}\n color={getIconColor(status)}\n />\n </span>\n <span className=\"cobalt-Hint__Message\">{children}</span>\n </div>\n )\n}\n"],"names":["classNames"],"mappings":";;;;AAWA,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,MAAM,OAAO,GAAG,CAAC,MAAqC,KAAI;AACxD,IAAA,QAAQ,MAAM;QACZ,KAAK,SAAS,EAAE;AACd,YAAA,OAAO,aAAa,CAAA;AACrB,SAAA;QACD,KAAK,OAAO,EAAE;AACZ,YAAA,OAAO,+BAA+B,CAAA;AACvC,SAAA;AACD,QAAA,SAAS;AACP,YAAA,OAAO,MAAM,CAAA;AACd,SAAA;AACF,KAAA;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,MAAqC,KAAI;AAC7D,IAAA,QAAQ,MAAM;QACZ,KAAK,SAAS,EAAE;AACd,YAAA,OAAO,QAAQ,CAAA;AAChB,SAAA;QACD,KAAK,OAAO,EAAE;AACZ,YAAA,OAAO,SAAS,CAAA;AACjB,SAAA;AACD,QAAA,SAAS;AACP,YAAA,OAAO,eAAe,CAAA;AACvB,SAAA;AACF,KAAA;AACH,CAAC,CAAA;AAEM,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAiB,KAAI;IACrE,QACE,6BACE,SAAS,EAAEA,EAAU,CAAC,aAAa,EAAE,SAAS,EAAE;YAC9C,sBAAsB,EAAE,MAAM,KAAK,SAAS;YAC5C,oBAAoB,EAAE,MAAM,KAAK,OAAO;SACzC,CAAC,EAAA;QAEF,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,mBAAmB,EAAA;YACjC,KAAC,CAAA,aAAA,CAAA,IAAI,IACH,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAC3B,CACG;QACP,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,sBAAsB,EAAA,EAAE,QAAQ,CAAQ,CACpD,EACP;AACH;;;;"}
|
|
@@ -7,7 +7,7 @@ const ModalHeader = ({ title, close, }) => (React.createElement("div", { classNa
|
|
|
7
7
|
close && (React.createElement("button", { type: "button", className: "cobalt-modal-header__close-button", onClick: close },
|
|
8
8
|
React.createElement(VisuallyHidden, null, "Close"),
|
|
9
9
|
React.createElement("span", { "aria-hidden": true },
|
|
10
|
-
React.createElement(Icon, { source: "close", color: "
|
|
10
|
+
React.createElement(Icon, { source: "close", color: "subdued" }))))));
|
|
11
11
|
|
|
12
12
|
export { ModalHeader as default };
|
|
13
13
|
//# sourceMappingURL=ModalHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.js","sources":["../../../src/components/Modal/ModalHeader.tsx"],"sourcesContent":["import React from \"react\"\nimport VisuallyHidden from \"@reach/visually-hidden\"\n\nimport { Icon } from \"../Icon\"\n\nconst ModalHeader = ({\n title,\n close,\n}: {\n title?: string\n close?: () => void\n}) => (\n <div className=\"cobalt-modal-header\">\n <h2 className=\"cobalt-modal-header__title\">{title}</h2>\n {close && (\n <button\n type=\"button\"\n className=\"cobalt-modal-header__close-button\"\n onClick={close}\n >\n <VisuallyHidden>Close</VisuallyHidden>\n <span aria-hidden>\n <Icon source=\"close\" color=\"
|
|
1
|
+
{"version":3,"file":"ModalHeader.js","sources":["../../../src/components/Modal/ModalHeader.tsx"],"sourcesContent":["import React from \"react\"\nimport VisuallyHidden from \"@reach/visually-hidden\"\n\nimport { Icon } from \"../Icon\"\n\nconst ModalHeader = ({\n title,\n close,\n}: {\n title?: string\n close?: () => void\n}) => (\n <div className=\"cobalt-modal-header\">\n <h2 className=\"cobalt-modal-header__title\">{title}</h2>\n {close && (\n <button\n type=\"button\"\n className=\"cobalt-modal-header__close-button\"\n onClick={close}\n >\n <VisuallyHidden>Close</VisuallyHidden>\n <span aria-hidden>\n <Icon source=\"close\" color=\"subdued\" />\n </span>\n </button>\n )}\n </div>\n)\n\nexport default ModalHeader\n"],"names":[],"mappings":";;;;AAKA,MAAM,WAAW,GAAG,CAAC,EACnB,KAAK,EACL,KAAK,GAIN,MACC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,qBAAqB,EAAA;AAClC,IAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,4BAA4B,EAAA,EAAE,KAAK,CAAM;AACtD,IAAA,KAAK,KACJ,KACE,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mCAAmC,EAC7C,OAAO,EAAE,KAAK,EAAA;AAEd,QAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EAAuB,IAAA,EAAA,OAAA,CAAA;AACtC,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA;AACE,YAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG,CAClC,CACA,CACV,CACG;;;;"}
|
package/components/Pill/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import cx from 'classnames';
|
|
|
3
3
|
import { Icon } from '../Icon/index.js';
|
|
4
4
|
|
|
5
5
|
const ICON_SIZE = 20;
|
|
6
|
-
const Pill = ({ icon, color = "
|
|
6
|
+
const Pill = ({ icon, color = "base", children, overlayed, className, size, }) => {
|
|
7
7
|
const iconMarkup = icon ? (React.createElement("span", { className: "cobalt-Pill__Icon" },
|
|
8
8
|
React.createElement(Icon, { source: icon, size: ICON_SIZE, color: overlayed ? "white" : color }))) : null;
|
|
9
9
|
return (React.createElement("div", { className: cx(className, "cobalt-Pill", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Pill/index.tsx"],"sourcesContent":["import React, { Children } from \"react\"\nimport cx from \"classnames\"\nimport { Icon, IconColorsType, IconSources } from \"../Icon\"\n\nconst ICON_SIZE = 20\nexport interface PillPropsType {\n children: React.ReactNode\n icon?: IconSources\n color?: IconColorsType\n size?: \"large\"\n overlayed?: boolean\n className?: string\n}\n\nexport const Pill = ({\n icon,\n color = \"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Pill/index.tsx"],"sourcesContent":["import React, { Children } from \"react\"\nimport cx from \"classnames\"\nimport { Icon, IconColorsType, IconSources } from \"../Icon\"\n\nconst ICON_SIZE = 20\nexport interface PillPropsType {\n children: React.ReactNode\n icon?: IconSources\n color?: IconColorsType\n size?: \"large\"\n overlayed?: boolean\n className?: string\n}\n\nexport const Pill = ({\n icon,\n color = \"base\",\n children,\n overlayed,\n className,\n size,\n}: PillPropsType) => {\n const iconMarkup = icon ? (\n <span className=\"cobalt-Pill__Icon\">\n <Icon\n source={icon}\n size={ICON_SIZE}\n color={overlayed ? \"white\" : color}\n />\n </span>\n ) : null\n\n return (\n <div\n className={cx(className, \"cobalt-Pill\", {\n \"cobalt-Pill--colorAller\": color === \"aller\",\n \"cobalt-Pill--overlayed\": overlayed,\n \"cobalt-Pill--large\": size === \"large\",\n })}\n >\n {iconMarkup} {children}\n </div>\n )\n}\n\nexport interface PillGroupPropsType {\n children: React.ReactNode\n}\n\nexport const PillGroup = ({ children }: PillGroupPropsType) => {\n return (\n <div className=\"cobalt-PillGroup\">\n {Children.toArray(children).map((child, index) => (\n <div className=\"cobalt-PillGroup__Item\" key={index}>\n {child}\n </div>\n ))}\n </div>\n )\n}\n\nexport default Pill\n"],"names":[],"mappings":";;;;AAIA,MAAM,SAAS,GAAG,EAAE,CAAA;MAUP,IAAI,GAAG,CAAC,EACnB,IAAI,EACJ,KAAK,GAAG,MAAM,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,IAAI,GACU,KAAI;IAClB,MAAM,UAAU,GAAG,IAAI,IACrB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA;AACjC,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACH,MAAM,EAAE,IAAI,EACZ,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,KAAK,EAAA,CAClC,CACG,IACL,IAAI,CAAA;IAER,QACE,6BACE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE;YACtC,yBAAyB,EAAE,KAAK,KAAK,OAAO;AAC5C,YAAA,wBAAwB,EAAE,SAAS;YACnC,oBAAoB,EAAE,IAAI,KAAK,OAAO;SACvC,CAAC,EAAA;QAED,UAAU;;QAAG,QAAQ,CAClB,EACP;AACH,EAAC;MAMY,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAsB,KAAI;AAC5D,IAAA,QACE,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kBAAkB,IAC9B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAC3C,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAC,GAAG,EAAE,KAAK,IAC/C,KAAK,CACF,CACP,CAAC,CACE,EACP;AACH;;;;"}
|
|
@@ -6,7 +6,8 @@ const PriceTableRow = ({ label, value, discounted = false, }) => (React.createEl
|
|
|
6
6
|
React.createElement("div", { className: "cobalt-PriceTable__Label" }, label),
|
|
7
7
|
React.createElement("div", { className: cx("cobalt-PriceTable__Value", {
|
|
8
8
|
"cobalt-PriceTable__Value--discount": discounted,
|
|
9
|
-
}) }, value)));
|
|
9
|
+
}) }, value)));
|
|
10
|
+
PriceTable.Row = PriceTableRow;
|
|
10
11
|
|
|
11
|
-
export { PriceTable, PriceTableRow };
|
|
12
|
+
export { PriceTable, PriceTableRow, PriceTable as default };
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/PriceTable/index.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\n\nexport const PriceTable = ({ children }: { children: React.ReactNode }) => (\n <div className=\"cobalt-PriceTable\">{children}</div>\n)\n\ninterface PriceTableRowProps {\n label: string\n value: string\n discounted?: boolean\n}\n\nexport const PriceTableRow = ({\n label,\n value,\n discounted = false,\n}: PriceTableRowProps) => (\n <div className=\"cobalt-PriceTable__Row\">\n <div className=\"cobalt-PriceTable__Label\">{label}</div>\n <div\n className={classNames(\"cobalt-PriceTable__Value\", {\n \"cobalt-PriceTable__Value--discount\": discounted,\n })}\n >\n {value}\n </div>\n </div>\n)\n"],"names":["classNames"],"mappings":";;;MAGa,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAiC,MACpE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mBAAmB,IAAE,QAAQ,CAAO,EACpD;MAQY,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,UAAU,GAAG,KAAK,GACC,MACnB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA;AACrC,IAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,KAAK,CAAO;AACvD,IAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEA,EAAU,CAAC,0BAA0B,EAAE;AAChD,YAAA,oCAAoC,EAAE,UAAU;AACjD,SAAA,CAAC,EAED,EAAA,KAAK,CACF,CACF;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/PriceTable/index.tsx"],"sourcesContent":["import React from \"react\"\nimport classNames from \"classnames\"\n\nexport const PriceTable = ({ children }: { children: React.ReactNode }) => (\n <div className=\"cobalt-PriceTable\">{children}</div>\n)\n\ninterface PriceTableRowProps {\n label: string\n value: string\n discounted?: boolean\n}\n\nexport const PriceTableRow = ({\n label,\n value,\n discounted = false,\n}: PriceTableRowProps) => (\n <div className=\"cobalt-PriceTable__Row\">\n <div className=\"cobalt-PriceTable__Label\">{label}</div>\n <div\n className={classNames(\"cobalt-PriceTable__Value\", {\n \"cobalt-PriceTable__Value--discount\": discounted,\n })}\n >\n {value}\n </div>\n </div>\n)\n\nPriceTable.Row = PriceTableRow\n\nexport default PriceTable\n"],"names":["classNames"],"mappings":";;;MAGa,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAiC,MACpE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mBAAmB,IAAE,QAAQ,CAAO,EACpD;MAQY,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,UAAU,GAAG,KAAK,GACC,MACnB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA;AACrC,IAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,KAAK,CAAO;AACvD,IAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAEA,EAAU,CAAC,0BAA0B,EAAE;AAChD,YAAA,oCAAoC,EAAE,UAAU;AACjD,SAAA,CAAC,EAED,EAAA,KAAK,CACF,CACF,EACP;AAED,UAAU,CAAC,GAAG,GAAG,aAAa;;;;"}
|
|
@@ -2,12 +2,13 @@ import React from 'react';
|
|
|
2
2
|
import cx from 'classnames';
|
|
3
3
|
import { RatingIcon, defaultRatingIcon } from './RatingIcons.js';
|
|
4
4
|
import RatingLabel from './RatingLabel.js';
|
|
5
|
+
import { formatRatingValue } from './index.js';
|
|
5
6
|
|
|
6
|
-
function RatingCompact({ className, value, count, icon = defaultRatingIcon, }) {
|
|
7
|
+
function RatingCompact({ className, value, count, size = 16, icon = defaultRatingIcon, }) {
|
|
7
8
|
return (React.createElement("div", { className: cx("cobalt-rating", className) },
|
|
8
|
-
React.createElement(RatingIcon, { icon: icon, size:
|
|
9
|
+
React.createElement(RatingIcon, { icon: icon, size: size, status: "full" }),
|
|
9
10
|
React.createElement(RatingLabel, null,
|
|
10
|
-
value,
|
|
11
|
+
formatRatingValue(value),
|
|
11
12
|
" ",
|
|
12
13
|
count && `(${count})`)));
|
|
13
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RatingCompact.js","sources":["../../../src/components/Rating/RatingCompact.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\nimport {\n defaultRatingIcon,\n RatingIcon,\n RatingIconsPropsType,\n} from \"./RatingIcons\"\nimport RatingLabel from \"./RatingLabel\"\n\ntype RatingCompactPropsType = Pick<\n RatingIconsPropsType,\n \"className\" | \"value\" | \"size\"\n> & {\n icon?: JSX.Element\n count?: number\n}\n\nexport function RatingCompact({\n className,\n value,\n count,\n icon = defaultRatingIcon,\n}: RatingCompactPropsType) {\n return (\n <div className={cx(\"cobalt-rating\", className)}>\n <RatingIcon icon={icon} size={
|
|
1
|
+
{"version":3,"file":"RatingCompact.js","sources":["../../../src/components/Rating/RatingCompact.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\nimport {\n defaultRatingIcon,\n RatingIcon,\n RatingIconsPropsType,\n} from \"./RatingIcons\"\nimport RatingLabel from \"./RatingLabel\"\nimport { formatRatingValue } from \".\"\n\ntype RatingCompactPropsType = Pick<\n RatingIconsPropsType,\n \"className\" | \"value\" | \"size\"\n> & {\n icon?: JSX.Element\n count?: number\n}\n\nexport function RatingCompact({\n className,\n value,\n count,\n size = 16,\n icon = defaultRatingIcon,\n}: RatingCompactPropsType) {\n return (\n <div className={cx(\"cobalt-rating\", className)}>\n <RatingIcon icon={icon} size={size} status={\"full\"} />\n <RatingLabel>\n {formatRatingValue(value)} {count && `(${count})`}\n </RatingLabel>\n </div>\n )\n}\n"],"names":[],"mappings":";;;;;;SAkBgB,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,KAAK,EACL,IAAI,GAAG,EAAE,EACT,IAAI,GAAG,iBAAiB,GACD,EAAA;IACvB,QACE,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAA;AAC5C,QAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAI,CAAA;AACtD,QAAA,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,IAAA;YACT,iBAAiB,CAAC,KAAK,CAAC;;AAAG,YAAA,KAAK,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CACrC,CACV,EACP;AACH;;;;"}
|
|
@@ -3,11 +3,14 @@ import React from 'react';
|
|
|
3
3
|
import { RatingIcons } from './RatingIcons.js';
|
|
4
4
|
export { RatingIcons } from './RatingIcons.js';
|
|
5
5
|
|
|
6
|
+
function formatRatingValue(value) {
|
|
7
|
+
return `${value}`.includes(".") ? value : value.toFixed(1);
|
|
8
|
+
}
|
|
6
9
|
function Rating({ className, iconsClassName, children, ...iconsProps }) {
|
|
7
10
|
return (React.createElement("div", { className: cx("cobalt-rating", className) },
|
|
8
11
|
React.createElement(RatingIcons, { className: iconsClassName, ...iconsProps }),
|
|
9
12
|
children));
|
|
10
13
|
}
|
|
11
14
|
|
|
12
|
-
export { Rating };
|
|
15
|
+
export { Rating, formatRatingValue };
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["import cx from \"classnames\"\nimport React from \"react\"\nimport { RatingIcons, RatingIconsPropsType } from \"./RatingIcons\"\nimport { RatingInput } from \"./RatingInput\"\nimport { RatingCompact } from \"./RatingCompact\"\nimport RatingLabel from \"./RatingLabel\"\n\ntype RatingPropsType = React.PropsWithChildren<RatingIconsPropsType> & {\n iconsClassName?: RatingIconsPropsType[\"className\"]\n}\n\nfunction Rating({\n className,\n iconsClassName,\n children,\n ...iconsProps\n}: RatingPropsType) {\n return (\n <div className={cx(\"cobalt-rating\", className)}>\n <RatingIcons className={iconsClassName} {...iconsProps} />\n {children}\n </div>\n )\n}\n\nexport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Rating/index.tsx"],"sourcesContent":["import cx from \"classnames\"\nimport React from \"react\"\nimport { RatingIcons, RatingIconsPropsType } from \"./RatingIcons\"\nimport { RatingInput } from \"./RatingInput\"\nimport { RatingCompact } from \"./RatingCompact\"\nimport RatingLabel from \"./RatingLabel\"\n\ntype RatingPropsType = React.PropsWithChildren<RatingIconsPropsType> & {\n iconsClassName?: RatingIconsPropsType[\"className\"]\n}\n\nfunction formatRatingValue(value: number) {\n return `${value}`.includes(\".\") ? value : value.toFixed(1)\n}\n\nfunction Rating({\n className,\n iconsClassName,\n children,\n ...iconsProps\n}: RatingPropsType) {\n return (\n <div className={cx(\"cobalt-rating\", className)}>\n <RatingIcons className={iconsClassName} {...iconsProps} />\n {children}\n </div>\n )\n}\n\nexport {\n Rating,\n RatingLabel,\n RatingInput,\n RatingCompact,\n RatingIcons,\n formatRatingValue,\n}\n"],"names":[],"mappings":";;;;;AAWA,SAAS,iBAAiB,CAAC,KAAa,EAAA;IACtC,OAAO,CAAA,EAAG,KAAK,CAAE,CAAA,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,MAAM,CAAC,EACd,SAAS,EACT,cAAc,EACd,QAAQ,EACR,GAAG,UAAU,EACG,EAAA;IAChB,QACE,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAA;AAC5C,QAAA,KAAA,CAAA,aAAA,CAAC,WAAW,EAAC,EAAA,SAAS,EAAE,cAAc,EAAA,GAAM,UAAU,EAAI,CAAA;QACzD,QAAQ,CACL,EACP;AACH;;;;"}
|
package/components/Tabs/index.js
CHANGED
|
@@ -3,7 +3,9 @@ import { Tabs as Tabs$1, TabList, TabPanels, TabPanel, Tab as Tab$1 } from '@rea
|
|
|
3
3
|
import cx from 'classnames';
|
|
4
4
|
import { useSpring } from '@react-spring/web';
|
|
5
5
|
import throttle from 'lodash.throttle';
|
|
6
|
-
import
|
|
6
|
+
import '../Icon/index.js';
|
|
7
|
+
import ChevronLeftIcon from '../Icon/__generated__/ChevronLeftIcon.js';
|
|
8
|
+
import ChevronRightIcon from '../Icon/__generated__/ChevronRightIcon.js';
|
|
7
9
|
|
|
8
10
|
const SCROLL_STEP = 150;
|
|
9
11
|
// Only for the API, render nothing, we use InternalTab component internally
|
|
@@ -125,10 +127,10 @@ const Tabs = ({ children, defaultTabIndex, onChange, subLevel, }) => {
|
|
|
125
127
|
isScrollable && (React.createElement(React.Fragment, null,
|
|
126
128
|
React.createElement("button", { className: "cobalt-tabs__nav-prev", onClick: onScrollPrev, disabled: !scrollButtonsEnabled.prev },
|
|
127
129
|
React.createElement("span", { className: "cobalt-tabs__nav-icon" },
|
|
128
|
-
React.createElement(
|
|
130
|
+
React.createElement(ChevronLeftIcon, { color: "accent" }))),
|
|
129
131
|
React.createElement("button", { className: "cobalt-tabs__nav-next", onClick: onScrollNext, disabled: !scrollButtonsEnabled.next },
|
|
130
132
|
React.createElement("span", { className: "cobalt-tabs__nav-icon" },
|
|
131
|
-
React.createElement(
|
|
133
|
+
React.createElement(ChevronRightIcon, { color: "accent" }))))),
|
|
132
134
|
!!tabsChildren.length && (React.createElement(TabPanels, null, tabsChildren.map((tabChildren, index) => (React.createElement(TabPanel, { className: "cobalt-tabs__panel", key: index }, tabChildren)))))));
|
|
133
135
|
};
|
|
134
136
|
Tabs.Tab = Tab;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["import React, {\n FC,\n useRef,\n useLayoutEffect,\n useState,\n useCallback,\n} from \"react\"\nimport {\n Tabs as ReachTabs,\n TabList as ReachTabList,\n Tab as ReachTab,\n TabPanels as ReachTabPanels,\n TabPanel as ReachTabPanel,\n} from \"@reach/tabs\"\nimport cx from \"classnames\"\nimport { useSpring } from \"@react-spring/web\"\n\nimport { throttle } from \"../utils\"\nimport { Icon } from \"../Icon\"\n\nconst SCROLL_STEP = 150\n\nexport type TabsPropsType = {\n /**\n * Index of the initial actived tab (first tab by default)\n */\n defaultTabIndex?: number\n /**\n * Method to be run on tab change\n */\n onChange?: (index: number) => void\n /**\n * Left aligned tabs with no uppercased labels\n */\n subLevel?: boolean\n}\n\ntype TabPropsType = {\n /**\n * Label/title of the tab\n */\n label: string | React.ReactNode | ((isSelected?: boolean) => React.ReactNode)\n /**\n * Hypertext link. If provided, the tab will be an anchor\n */\n href?: string\n}\n\ntype InternalTabPropsType = {\n isSelected?: boolean // Provided by Reach TabList component\n href?: string\n children: TabPropsType[\"label\"]\n}\n\n// Only for the API, render nothing, we use InternalTab component internally\nexport const Tab: FC<TabPropsType> = () => null\nTab.displayName = \"Tab\"\n\nconst isTabComponent = (\n component: React.ReactNode\n): component is React.ReactElement<React.PropsWithChildren<TabPropsType>> =>\n React.isValidElement(component) && component.type === Tab\n\nconst InternalTab = (props: InternalTabPropsType) => {\n const { href, children, isSelected } = props\n return (\n <ReachTab\n {...props}\n {...(href ? { href, as: \"a\" } : { as: \"button\" })}\n className={cx(\"cobalt-tabs__label\", {\n \"cobalt-tabs__label--selected\": isSelected,\n })}\n >\n {typeof children === \"function\" ? children(isSelected) : children}\n </ReachTab>\n )\n}\nInternalTab.displayName = \"InternalTab\"\n\nexport const Tabs: FC<TabsPropsType> & { Tab: FC<TabPropsType> } = ({\n children,\n defaultTabIndex,\n onChange,\n subLevel,\n}) => {\n const [scrollDistance, setScrollDistance] = useState(0)\n const [scrollButtonsEnabled, setScrollButtonsEnabled] = useState({\n prev: false,\n next: true,\n })\n\n const labelListRef = useRef<HTMLDivElement>(null)\n\n const [, scrollLeftSpringRef] = useSpring(() => ({\n config: { tension: 300, friction: 30, clamp: true },\n springScrollLeft: 0,\n onChange: {\n springScrollLeft: (springScrollLeft) => {\n if (labelListRef?.current) {\n labelListRef.current.scrollLeft =\n springScrollLeft as unknown as number\n }\n },\n },\n }))\n\n const updateScrollDistance = () => {\n const scrollWidth = labelListRef?.current?.scrollWidth || 0\n const clientWidth = labelListRef?.current?.clientWidth || 0\n setScrollDistance(scrollWidth && clientWidth && scrollWidth - clientWidth)\n }\n\n const updateScrollButtonsState = () => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n if (labelListRef.current.scrollLeft <= 0) {\n newScrollButtonStates.prev = false\n }\n if (scrollDistance && labelListRef.current.scrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n }\n setScrollButtonsEnabled(newScrollButtonStates)\n }\n }\n\n const updateStates = () => {\n updateScrollDistance()\n updateScrollButtonsState()\n }\n\n useLayoutEffect(() => {\n const throttledUpdate = throttle(updateStates, 300)\n window.addEventListener(\"resize\", throttledUpdate)\n return () => window.removeEventListener(\"resize\", throttledUpdate)\n }, [scrollDistance])\n\n // When the bar became scrollable/not scrollable, the scrollWidth will change\n // so we update states according to its change\n useLayoutEffect(() => {\n updateStates()\n }, [labelListRef?.current?.scrollWidth])\n\n const tabsPropsArray: TabPropsType[] = []\n const tabsChildren: typeof children[] = []\n let matchedHrefIndex: number | undefined = undefined\n React.Children.forEach(children, (child, index) => {\n if (isTabComponent(child)) {\n const { children: tabChildren, ...tabProps } = child.props\n tabsPropsArray.push(tabProps)\n // if no children, it will be null, nothing will be rendered\n tabsChildren.push(tabChildren)\n if (tabProps.href === window.location.pathname) {\n matchedHrefIndex = index\n }\n }\n })\n\n const scrollTabs = (scrollAmount: number) => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n const computedScrollLeft = labelListRef.current.scrollLeft + scrollAmount\n let newScrollLeft = computedScrollLeft\n\n // not scrolled at all\n if (computedScrollLeft <= 0) {\n newScrollButtonStates.prev = false\n newScrollLeft = 0\n }\n // scrolled at maximum\n if (scrollDistance && computedScrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n newScrollLeft = scrollDistance\n }\n\n setScrollButtonsEnabled(newScrollButtonStates)\n scrollLeftSpringRef.start({\n springScrollLeft: newScrollLeft,\n immediate: false,\n })\n }\n }\n const onScrollPrev = useCallback(\n () => scrollTabs(-SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n const onScrollNext = useCallback(\n () => scrollTabs(SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n\n const isScrollable = !!scrollDistance\n\n const handleWheel = throttle(() => {\n if (labelListRef?.current) {\n updateScrollButtonsState()\n // Don't animate\n scrollLeftSpringRef.set({\n springScrollLeft: labelListRef.current.scrollLeft,\n })\n }\n }, 300)\n\n return (\n <ReachTabs\n className=\"cobalt-tabs\"\n defaultIndex={matchedHrefIndex || defaultTabIndex}\n onChange={onChange}\n >\n <ReachTabList\n className={cx(\"cobalt-tabs__labels\", {\n \"cobalt-tabs__labels--scrollable\": isScrollable,\n \"cobalt-tabs__labels--subLevel\": subLevel,\n })}\n onWheel={handleWheel}\n ref={labelListRef}\n >\n {tabsPropsArray.map((props, index) => (\n <InternalTab key={index} href={props.href}>\n {props.label}\n </InternalTab>\n ))}\n </ReachTabList>\n {isScrollable && (\n <>\n <button\n className=\"cobalt-tabs__nav-prev\"\n onClick={onScrollPrev}\n disabled={!scrollButtonsEnabled.prev}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronLeft\" color=\"indigo\" />\n </span>\n </button>\n <button\n className=\"cobalt-tabs__nav-next\"\n onClick={onScrollNext}\n disabled={!scrollButtonsEnabled.next}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <Icon source=\"chevronRight\" color=\"indigo\" />\n </span>\n </button>\n </>\n )}\n {!!tabsChildren.length && (\n <ReachTabPanels>\n {tabsChildren.map((tabChildren, index) => (\n <ReachTabPanel className=\"cobalt-tabs__panel\" key={index}>\n {tabChildren}\n </ReachTabPanel>\n ))}\n </ReachTabPanels>\n )}\n </ReachTabs>\n )\n}\nTabs.Tab = Tab\nTabs.displayName = \"Tabs\"\n\nexport default Tabs\n"],"names":["ReachTab","ReachTabs","ReachTabList","ReachTabPanels","ReachTabPanel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Tabs/index.tsx"],"sourcesContent":["import React, {\n FC,\n useRef,\n useLayoutEffect,\n useState,\n useCallback,\n} from \"react\"\nimport {\n Tabs as ReachTabs,\n TabList as ReachTabList,\n Tab as ReachTab,\n TabPanels as ReachTabPanels,\n TabPanel as ReachTabPanel,\n} from \"@reach/tabs\"\nimport cx from \"classnames\"\nimport { useSpring } from \"@react-spring/web\"\n\nimport { throttle } from \"../utils\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"../Icon\"\n\nconst SCROLL_STEP = 150\n\nexport type TabsPropsType = {\n /**\n * Index of the initial actived tab (first tab by default)\n */\n defaultTabIndex?: number\n /**\n * Method to be run on tab change\n */\n onChange?: (index: number) => void\n /**\n * Left aligned tabs with no uppercased labels\n */\n subLevel?: boolean\n}\n\ntype TabPropsType = {\n /**\n * Label/title of the tab\n */\n label: string | React.ReactNode | ((isSelected?: boolean) => React.ReactNode)\n /**\n * Hypertext link. If provided, the tab will be an anchor\n */\n href?: string\n}\n\ntype InternalTabPropsType = {\n isSelected?: boolean // Provided by Reach TabList component\n href?: string\n children: TabPropsType[\"label\"]\n}\n\n// Only for the API, render nothing, we use InternalTab component internally\nexport const Tab: FC<TabPropsType> = () => null\nTab.displayName = \"Tab\"\n\nconst isTabComponent = (\n component: React.ReactNode\n): component is React.ReactElement<React.PropsWithChildren<TabPropsType>> =>\n React.isValidElement(component) && component.type === Tab\n\nconst InternalTab = (props: InternalTabPropsType) => {\n const { href, children, isSelected } = props\n return (\n <ReachTab\n {...props}\n {...(href ? { href, as: \"a\" } : { as: \"button\" })}\n className={cx(\"cobalt-tabs__label\", {\n \"cobalt-tabs__label--selected\": isSelected,\n })}\n >\n {typeof children === \"function\" ? children(isSelected) : children}\n </ReachTab>\n )\n}\nInternalTab.displayName = \"InternalTab\"\n\nexport const Tabs: FC<TabsPropsType> & { Tab: FC<TabPropsType> } = ({\n children,\n defaultTabIndex,\n onChange,\n subLevel,\n}) => {\n const [scrollDistance, setScrollDistance] = useState(0)\n const [scrollButtonsEnabled, setScrollButtonsEnabled] = useState({\n prev: false,\n next: true,\n })\n\n const labelListRef = useRef<HTMLDivElement>(null)\n\n const [, scrollLeftSpringRef] = useSpring(() => ({\n config: { tension: 300, friction: 30, clamp: true },\n springScrollLeft: 0,\n onChange: {\n springScrollLeft: (springScrollLeft) => {\n if (labelListRef?.current) {\n labelListRef.current.scrollLeft =\n springScrollLeft as unknown as number\n }\n },\n },\n }))\n\n const updateScrollDistance = () => {\n const scrollWidth = labelListRef?.current?.scrollWidth || 0\n const clientWidth = labelListRef?.current?.clientWidth || 0\n setScrollDistance(scrollWidth && clientWidth && scrollWidth - clientWidth)\n }\n\n const updateScrollButtonsState = () => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n if (labelListRef.current.scrollLeft <= 0) {\n newScrollButtonStates.prev = false\n }\n if (scrollDistance && labelListRef.current.scrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n }\n setScrollButtonsEnabled(newScrollButtonStates)\n }\n }\n\n const updateStates = () => {\n updateScrollDistance()\n updateScrollButtonsState()\n }\n\n useLayoutEffect(() => {\n const throttledUpdate = throttle(updateStates, 300)\n window.addEventListener(\"resize\", throttledUpdate)\n return () => window.removeEventListener(\"resize\", throttledUpdate)\n }, [scrollDistance])\n\n // When the bar became scrollable/not scrollable, the scrollWidth will change\n // so we update states according to its change\n useLayoutEffect(() => {\n updateStates()\n }, [labelListRef?.current?.scrollWidth])\n\n const tabsPropsArray: TabPropsType[] = []\n const tabsChildren: typeof children[] = []\n let matchedHrefIndex: number | undefined = undefined\n React.Children.forEach(children, (child, index) => {\n if (isTabComponent(child)) {\n const { children: tabChildren, ...tabProps } = child.props\n tabsPropsArray.push(tabProps)\n // if no children, it will be null, nothing will be rendered\n tabsChildren.push(tabChildren)\n if (tabProps.href === window.location.pathname) {\n matchedHrefIndex = index\n }\n }\n })\n\n const scrollTabs = (scrollAmount: number) => {\n if (labelListRef?.current) {\n const newScrollButtonStates = { prev: true, next: true }\n const computedScrollLeft = labelListRef.current.scrollLeft + scrollAmount\n let newScrollLeft = computedScrollLeft\n\n // not scrolled at all\n if (computedScrollLeft <= 0) {\n newScrollButtonStates.prev = false\n newScrollLeft = 0\n }\n // scrolled at maximum\n if (scrollDistance && computedScrollLeft >= scrollDistance) {\n newScrollButtonStates.next = false\n newScrollLeft = scrollDistance\n }\n\n setScrollButtonsEnabled(newScrollButtonStates)\n scrollLeftSpringRef.start({\n springScrollLeft: newScrollLeft,\n immediate: false,\n })\n }\n }\n const onScrollPrev = useCallback(\n () => scrollTabs(-SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n const onScrollNext = useCallback(\n () => scrollTabs(SCROLL_STEP),\n [scrollButtonsEnabled, labelListRef?.current?.scrollLeft]\n )\n\n const isScrollable = !!scrollDistance\n\n const handleWheel = throttle(() => {\n if (labelListRef?.current) {\n updateScrollButtonsState()\n // Don't animate\n scrollLeftSpringRef.set({\n springScrollLeft: labelListRef.current.scrollLeft,\n })\n }\n }, 300)\n\n return (\n <ReachTabs\n className=\"cobalt-tabs\"\n defaultIndex={matchedHrefIndex || defaultTabIndex}\n onChange={onChange}\n >\n <ReachTabList\n className={cx(\"cobalt-tabs__labels\", {\n \"cobalt-tabs__labels--scrollable\": isScrollable,\n \"cobalt-tabs__labels--subLevel\": subLevel,\n })}\n onWheel={handleWheel}\n ref={labelListRef}\n >\n {tabsPropsArray.map((props, index) => (\n <InternalTab key={index} href={props.href}>\n {props.label}\n </InternalTab>\n ))}\n </ReachTabList>\n {isScrollable && (\n <>\n <button\n className=\"cobalt-tabs__nav-prev\"\n onClick={onScrollPrev}\n disabled={!scrollButtonsEnabled.prev}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <ChevronLeftIcon color=\"accent\" />\n </span>\n </button>\n <button\n className=\"cobalt-tabs__nav-next\"\n onClick={onScrollNext}\n disabled={!scrollButtonsEnabled.next}\n >\n <span className=\"cobalt-tabs__nav-icon\">\n <ChevronRightIcon color=\"accent\" />\n </span>\n </button>\n </>\n )}\n {!!tabsChildren.length && (\n <ReachTabPanels>\n {tabsChildren.map((tabChildren, index) => (\n <ReachTabPanel className=\"cobalt-tabs__panel\" key={index}>\n {tabChildren}\n </ReachTabPanel>\n ))}\n </ReachTabPanels>\n )}\n </ReachTabs>\n )\n}\nTabs.Tab = Tab\nTabs.displayName = \"Tabs\"\n\nexport default Tabs\n"],"names":["ReachTab","ReachTabs","ReachTabList","ReachTabPanels","ReachTabPanel"],"mappings":"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"}
|
package/components/Tag/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import cx from 'classnames';
|
|
3
3
|
|
|
4
|
-
const Tag = ({ children, variant }) => (React.createElement("div", { className: cx("cobalt-Tag", {
|
|
4
|
+
const Tag = ({ children, variant, className }) => (React.createElement("div", { className: cx("cobalt-Tag", className, {
|
|
5
5
|
"cobalt-Tag--muted": variant === "muted",
|
|
6
6
|
"cobalt-Tag--important": variant === "important",
|
|
7
7
|
}) }, children));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Tag/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface TagProps {\n children: React.ReactNode\n variant?: \"muted\" | \"important\"\n}\n\nexport const Tag = ({ children, variant }: TagProps) => (\n <div\n className={cx(\"cobalt-Tag\", {\n \"cobalt-Tag--muted\": variant === \"muted\",\n \"cobalt-Tag--important\": variant === \"important\",\n })}\n >\n {children}\n </div>\n)\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Tag/index.tsx"],"sourcesContent":["import React from \"react\"\nimport cx from \"classnames\"\n\nexport interface TagProps {\n children: React.ReactNode\n className?: string\n variant?: \"muted\" | \"important\"\n}\n\nexport const Tag = ({ children, variant, className }: TagProps) => (\n <div\n className={cx(\"cobalt-Tag\", className, {\n \"cobalt-Tag--muted\": variant === \"muted\",\n \"cobalt-Tag--important\": variant === \"important\",\n })}\n >\n {children}\n </div>\n)\n"],"names":[],"mappings":";;;AASa,MAAA,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAY,MAC5D,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE;QACrC,mBAAmB,EAAE,OAAO,KAAK,OAAO;QACxC,uBAAuB,EAAE,OAAO,KAAK,WAAW;AACjD,KAAA,CAAC,EAED,EAAA,QAAQ,CACL;;;;"}
|
package/index.js
CHANGED
|
@@ -32,7 +32,7 @@ export { ComposedField } from './components/Form/ComposedField.js';
|
|
|
32
32
|
export { withFieldLabelAndHint } from './components/Form/field.js';
|
|
33
33
|
export { Fieldset } from './components/Form/Fieldset.js';
|
|
34
34
|
export { Hint } from './components/Form/Hint.js';
|
|
35
|
-
export { Rating } from './components/Rating/index.js';
|
|
35
|
+
export { Rating, formatRatingValue } from './components/Rating/index.js';
|
|
36
36
|
export { Select } from './components/Form/Select.js';
|
|
37
37
|
export { default as Slider, SliderValueMeta } from './components/Form/Slider.js';
|
|
38
38
|
export { Stepper, StepperMeta } from './components/Form/Stepper.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drivy/cobalt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "Opinionated design system for Drivy's projects.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -62,12 +62,12 @@
|
|
|
62
62
|
"@types/jest": "27.5.2",
|
|
63
63
|
"@types/lodash.throttle": "4.1.7",
|
|
64
64
|
"@types/media-typer": "1.1.1",
|
|
65
|
-
"@types/react": "17.0.
|
|
65
|
+
"@types/react": "17.0.49",
|
|
66
66
|
"@whitespace/storybook-addon-html": "^5.0.0",
|
|
67
67
|
"autoprefixer": "10.4.8",
|
|
68
68
|
"core-js": "3.24.1",
|
|
69
69
|
"css-loader": "6.7.1",
|
|
70
|
-
"eslint": "8.
|
|
70
|
+
"eslint": "8.23.0",
|
|
71
71
|
"jest": "27.5.1",
|
|
72
72
|
"nested-object-access": "^0.2.5",
|
|
73
73
|
"np": "7.6.2",
|
|
@@ -79,12 +79,12 @@
|
|
|
79
79
|
"react-dom": "17.0.2",
|
|
80
80
|
"react-test-renderer": "17.0.2",
|
|
81
81
|
"regenerator-runtime": "0.13.9",
|
|
82
|
-
"rollup": "2.
|
|
82
|
+
"rollup": "2.79.0",
|
|
83
83
|
"rollup-plugin-copy": "3.4.0",
|
|
84
84
|
"rollup-plugin-postcss": "4.0.2",
|
|
85
85
|
"rollup-plugin-svgo": "1.1.0",
|
|
86
86
|
"rollup-plugin-typescript2": "0.33.0",
|
|
87
|
-
"sass": "1.54.
|
|
87
|
+
"sass": "1.54.8",
|
|
88
88
|
"sass-loader": "12.6.0",
|
|
89
89
|
"sharp": "0.30.7",
|
|
90
90
|
"sharp-cli": "2.1.1",
|
|
@@ -138,6 +138,6 @@
|
|
|
138
138
|
"access": "public"
|
|
139
139
|
},
|
|
140
140
|
"resolutions": {
|
|
141
|
-
"@types/react": "17.0.
|
|
141
|
+
"@types/react": "17.0.49"
|
|
142
142
|
}
|
|
143
143
|
}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
width: 100%;
|
|
12
12
|
display: flex;
|
|
13
13
|
padding: spacing(sm);
|
|
14
|
+
|
|
14
15
|
border: 0;
|
|
15
16
|
|
|
16
17
|
font-family: font-family(base);
|
|
@@ -20,6 +21,12 @@
|
|
|
20
21
|
// Disable reach-ui styles
|
|
21
22
|
background: transparent;
|
|
22
23
|
|
|
24
|
+
gap: spacing(sm);
|
|
25
|
+
|
|
26
|
+
&--left-toggle-icon {
|
|
27
|
+
flex-direction: row-reverse;
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
&-content {
|
|
24
31
|
width: 100%;
|
|
25
32
|
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
.cobalt-helper {
|
|
2
|
+
@include border(base);
|
|
3
|
+
@include bg-color(secondary);
|
|
2
4
|
padding: spacing(sm);
|
|
3
5
|
|
|
6
|
+
// FIXME: remove when releasing semantics color
|
|
4
7
|
background-color: fade-out(color(purple), 0.92);
|
|
8
|
+
|
|
5
9
|
border-radius: border-radius(xl);
|
|
6
10
|
|
|
7
11
|
&__title {
|
|
8
12
|
@include text-style-title-small;
|
|
9
|
-
|
|
13
|
+
@include text-color(base);
|
|
10
14
|
}
|
|
11
15
|
|
|
12
16
|
&__content {
|
|
@@ -71,26 +71,21 @@ $reach-ui-dialog-margin-top: 10vh;
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
&-footer {
|
|
74
|
-
|
|
75
|
-
border-top: border(grey);
|
|
76
|
-
border-color: color(grey, light);
|
|
74
|
+
@include border-top(base);
|
|
77
75
|
padding: spacing(sm);
|
|
78
76
|
}
|
|
79
77
|
|
|
80
78
|
&-header {
|
|
79
|
+
@include border-bottom(base);
|
|
81
80
|
display: flex;
|
|
82
81
|
justify-content: space-between;
|
|
83
82
|
align-items: center;
|
|
84
83
|
padding: spacing(md);
|
|
85
|
-
/* FIXME border function doesn't handle color variant */
|
|
86
|
-
border-bottom: border(grey);
|
|
87
|
-
border-color: color(grey, light);
|
|
88
84
|
|
|
89
85
|
&__title {
|
|
90
86
|
@include c-text-title-md;
|
|
87
|
+
@include text-color(base);
|
|
91
88
|
margin: spacing(none);
|
|
92
|
-
|
|
93
|
-
color: color(indigo, dark);
|
|
94
89
|
}
|
|
95
90
|
|
|
96
91
|
&__close-button {
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
&Note {
|
|
3
3
|
@include text-style-body;
|
|
4
4
|
@include text-style--bodySubdued;
|
|
5
|
+
@include bg-color(info);
|
|
5
6
|
|
|
6
7
|
display: inline-block;
|
|
7
8
|
|
|
8
|
-
padding: spacing(
|
|
9
|
+
padding: spacing(sm);
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
border-radius: border-radius(x-large);
|
|
11
|
+
border-radius: border-radius(lg);
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
&Note--fullWidth {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
.cobalt-photo-dropzone {
|
|
2
|
+
@include bg-color(neutralAlt);
|
|
3
|
+
@include border(accentAlt, default, dashed);
|
|
2
4
|
position: relative;
|
|
3
5
|
|
|
4
6
|
display: flex;
|
|
@@ -7,13 +9,11 @@
|
|
|
7
9
|
height: 100%;
|
|
8
10
|
width: 100%;
|
|
9
11
|
min-height: 14rem;
|
|
10
|
-
border: border(purple, default, dashed);
|
|
11
12
|
|
|
12
13
|
text-align: center;
|
|
13
14
|
|
|
14
15
|
border-radius: border-radius(xl);
|
|
15
16
|
cursor: pointer;
|
|
16
|
-
background-color: color(grey, lighter);
|
|
17
17
|
|
|
18
18
|
transition: background-color 0.25s;
|
|
19
19
|
}
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.cobalt-photo-dropzone--dragging {
|
|
34
|
+
// FIXME NEW COLORS: this background doesn't match any semantic color
|
|
34
35
|
background-color: #f6e5f5;
|
|
35
36
|
|
|
36
37
|
transition: background-color 0.25s;
|
|
@@ -42,20 +43,17 @@
|
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
.cobalt-photo-dropzone--loading {
|
|
45
|
-
|
|
46
|
+
@include bg-color(neutral);
|
|
47
|
+
@include text-color(accent);
|
|
46
48
|
border-style: solid;
|
|
47
49
|
|
|
48
|
-
color: color(indigo, dark);
|
|
49
|
-
|
|
50
50
|
cursor: default;
|
|
51
|
-
background-color: color(grey, light);
|
|
52
51
|
}
|
|
53
52
|
|
|
54
53
|
.cobalt-photo-dropzone--errored {
|
|
55
|
-
|
|
54
|
+
@include bg-color(neutral);
|
|
55
|
+
@include border-color(error);
|
|
56
56
|
border-style: solid;
|
|
57
|
-
|
|
58
|
-
background-color: color(grey, light);
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
.cobalt-photo-dropzone__description {
|
|
@@ -66,7 +64,7 @@
|
|
|
66
64
|
}
|
|
67
65
|
|
|
68
66
|
.cobalt-photo-dropzone__description--strong {
|
|
69
|
-
|
|
67
|
+
@include text-color(accent);
|
|
70
68
|
font-weight: 700;
|
|
71
69
|
}
|
|
72
70
|
|
|
@@ -79,6 +77,7 @@
|
|
|
79
77
|
}
|
|
80
78
|
|
|
81
79
|
.cobalt-photo-dropzone__delete-button {
|
|
80
|
+
@include bg-color(neutralAlt);
|
|
82
81
|
position: absolute;
|
|
83
82
|
bottom: 1rem;
|
|
84
83
|
right: 1rem;
|
|
@@ -89,7 +88,6 @@
|
|
|
89
88
|
border: 0;
|
|
90
89
|
|
|
91
90
|
border-radius: border-radius(full);
|
|
92
|
-
background: color(white);
|
|
93
91
|
cursor: pointer;
|
|
94
92
|
opacity: 0;
|
|
95
93
|
|
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
$pill-height: 28px;
|
|
2
|
-
$group-item-spacing: spacing(
|
|
2
|
+
$group-item-spacing: spacing(xs);
|
|
3
3
|
|
|
4
4
|
.cobalt- {
|
|
5
5
|
&Pill {
|
|
6
|
+
@include bg-color(neutralAlt);
|
|
7
|
+
@include text-color(base);
|
|
6
8
|
display: inline-flex;
|
|
7
9
|
align-items: center;
|
|
8
10
|
|
|
9
11
|
height: $pill-height;
|
|
10
|
-
padding: spacing(
|
|
12
|
+
padding: spacing("2xs") spacing(sm);
|
|
11
13
|
|
|
12
14
|
font-size: 13px;
|
|
13
15
|
white-space: nowrap;
|
|
14
16
|
|
|
15
|
-
color: color(indigo);
|
|
16
|
-
|
|
17
17
|
border-radius: $pill-height;
|
|
18
|
-
|
|
19
|
-
background-color: color(acier, lighter);
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
&Pill--large {
|
|
23
21
|
$pill-height: 40px;
|
|
24
22
|
height: $pill-height;
|
|
25
|
-
padding: spacing(
|
|
23
|
+
padding: spacing(xs) spacing();
|
|
26
24
|
|
|
27
25
|
border-radius: $pill-height;
|
|
28
26
|
}
|
|
29
27
|
|
|
30
28
|
&Pill--colorAller {
|
|
31
|
-
|
|
29
|
+
@include text-color(connect);
|
|
32
30
|
}
|
|
33
31
|
|
|
34
32
|
&Pill--overlayed {
|
|
35
|
-
|
|
33
|
+
@include text-color(inversed);
|
|
36
34
|
|
|
35
|
+
// FIXME NEW COLORS: this background doesn't match any semantic color
|
|
37
36
|
background-color: rgba(color(graphite), 0.5);
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
&Pill__Icon {
|
|
41
|
-
margin-right: spacing(
|
|
40
|
+
margin-right: spacing("2xs");
|
|
42
41
|
}
|
|
43
42
|
|
|
44
43
|
&PillGroup {
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
justify-content: space-between;
|
|
7
7
|
|
|
8
8
|
&:not(:last-child) {
|
|
9
|
-
margin-bottom: spacing(
|
|
9
|
+
margin-bottom: spacing(sm);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
&PriceTable__Label {
|
|
14
|
-
margin-right: spacing(
|
|
14
|
+
margin-right: spacing("2xs");
|
|
15
15
|
width: 100%;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
white-space: nowrap;
|
|
21
21
|
|
|
22
22
|
&--discount {
|
|
23
|
-
|
|
23
|
+
@include text-color(success);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
&:empty:before {
|
|
27
|
-
|
|
27
|
+
@include text-color(subdued);
|
|
28
28
|
font-weight: normal;
|
|
29
29
|
|
|
30
30
|
content: "—";
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
&ProgressBar__Progression {
|
|
9
9
|
@include text-style-title;
|
|
10
|
-
|
|
10
|
+
@include text-color(infoAlt);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
&ProgressBar__Title {
|
|
@@ -16,42 +16,42 @@
|
|
|
16
16
|
|
|
17
17
|
&ProgressBar__CompletedCheckbox {
|
|
18
18
|
path {
|
|
19
|
-
fill
|
|
19
|
+
@include fill-color(secondary);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
&ProgressBar__Container {
|
|
24
|
+
@include bg-color(neutral);
|
|
24
25
|
position: relative;
|
|
25
26
|
|
|
26
|
-
margin-top: spacing(
|
|
27
|
+
margin-top: spacing(sm);
|
|
27
28
|
|
|
28
|
-
height: spacing(
|
|
29
|
+
height: spacing("2xs");
|
|
29
30
|
width: 100%;
|
|
30
31
|
|
|
31
32
|
border-radius: 2px;
|
|
32
|
-
background-color: color(acier, light);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
&ProgressBar__Foreground {
|
|
36
|
+
@include semantic-color(secondary, fill, background-color);
|
|
36
37
|
position: absolute;
|
|
37
38
|
left: 0;
|
|
38
39
|
top: 0;
|
|
39
40
|
|
|
40
|
-
height: spacing(
|
|
41
|
+
height: spacing("2xs");
|
|
41
42
|
|
|
42
43
|
border-radius: 2px;
|
|
43
|
-
background-color: color(aller);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
&ProgressBar__Tick {
|
|
47
|
+
@include bg-color(neutral);
|
|
47
48
|
position: absolute;
|
|
48
49
|
top: -6px;
|
|
49
50
|
right: 0;
|
|
50
51
|
|
|
51
|
-
height: 4 * spacing(
|
|
52
|
-
width: spacing(
|
|
52
|
+
height: 4 * spacing("2xs");
|
|
53
|
+
width: spacing("2xs");
|
|
53
54
|
|
|
54
55
|
border-radius: 2px;
|
|
55
|
-
background-color: color(acier, light);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -101,6 +101,8 @@ $scrollButtonWidth: 2rem;
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.cobalt-tabs__label {
|
|
104
|
+
@include text-color(subdued);
|
|
105
|
+
@include bg-color(secondaryInteractive);
|
|
104
106
|
position: relative;
|
|
105
107
|
|
|
106
108
|
display: flex;
|
|
@@ -116,7 +118,6 @@ $scrollButtonWidth: 2rem;
|
|
|
116
118
|
font-size: 1rem;
|
|
117
119
|
line-height: 1;
|
|
118
120
|
text-transform: uppercase;
|
|
119
|
-
color: color(graphite, light);
|
|
120
121
|
font-family: font-family(brand);
|
|
121
122
|
font-weight: 700;
|
|
122
123
|
|
|
@@ -126,11 +127,6 @@ $scrollButtonWidth: 2rem;
|
|
|
126
127
|
|
|
127
128
|
transition: 0.2s color;
|
|
128
129
|
|
|
129
|
-
&:hover,
|
|
130
|
-
&:focus {
|
|
131
|
-
background: color(acier, lighter);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
130
|
&:after {
|
|
135
131
|
position: absolute;
|
|
136
132
|
bottom: 0;
|
|
@@ -149,10 +145,10 @@ $scrollButtonWidth: 2rem;
|
|
|
149
145
|
}
|
|
150
146
|
|
|
151
147
|
&.cobalt-tabs__label--selected {
|
|
152
|
-
|
|
148
|
+
@include text-color(base);
|
|
153
149
|
|
|
154
150
|
&:after {
|
|
155
|
-
|
|
151
|
+
@include semantic-color(accent, fill, background-color);
|
|
156
152
|
|
|
157
153
|
transform: scaleX(1);
|
|
158
154
|
}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
.cobalt- {
|
|
2
2
|
&Tag {
|
|
3
|
+
@include bg-color(neutral);
|
|
3
4
|
display: inline-block;
|
|
4
5
|
|
|
5
|
-
padding: spacing(
|
|
6
|
+
padding: spacing("2xs") spacing(xs);
|
|
6
7
|
|
|
7
8
|
font-size: 13px;
|
|
8
9
|
|
|
9
10
|
font-weight: 600;
|
|
10
11
|
|
|
11
|
-
background-color: color(acier, light);
|
|
12
|
-
|
|
13
12
|
border-radius: border-radius();
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
&Tag--muted {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
background-color: color(acier, lighter);
|
|
16
|
+
@include text-color(subdued);
|
|
17
|
+
@include bg-color(neutralAlt);
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
&Tag--important {
|
|
23
|
-
|
|
21
|
+
@include text-color(error);
|
|
24
22
|
|
|
25
23
|
background-color: lighten(color(essence), 24);
|
|
26
24
|
}
|
package/styles/core/border.scss
CHANGED
|
@@ -13,7 +13,7 @@ $border-style-data: (
|
|
|
13
13
|
dashed: dashed
|
|
14
14
|
);
|
|
15
15
|
|
|
16
|
-
@mixin border-style($style: solid, $position) {
|
|
16
|
+
@mixin border-style($style: solid, $position: "") {
|
|
17
17
|
$styleValue: map-get($border-style-data, $style);
|
|
18
18
|
@if type-of($styleValue) != string {
|
|
19
19
|
@error "Border style `#{$style}` not found.";
|
|
@@ -33,7 +33,7 @@ $border-style-data: (
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
@mixin border-width($size: default, $position) {
|
|
36
|
+
@mixin border-width($size: default, $position: "") {
|
|
37
37
|
$sizeValue: map-get($border-size-data, $size);
|
|
38
38
|
@if type-of($sizeValue) != number {
|
|
39
39
|
@error "Border size `#{$size}` not found.";
|
package/styles/core/theme.scss
CHANGED
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
--c-stroke-accentInteractive: var(--c-l-indigo);
|
|
114
114
|
--c-stroke-accentInteractive--hover: var(--c-l-indigo);
|
|
115
115
|
--c-stroke-accentInteractive--press: var(--c-l-indigo-dark);
|
|
116
|
-
--c-stroke-accentAlt: var(--c-l-
|
|
116
|
+
--c-stroke-accentAlt: var(--c-l-purple);
|
|
117
117
|
--c-stroke-base: var(--c-l-grey);
|
|
118
118
|
--c-stroke-baseInteractive: var(--c-l-grey);
|
|
119
119
|
--c-stroke-baseInteractive--hover: var(--c-l-graphite-light);
|
package/tokens/theme.js
CHANGED
|
@@ -171,7 +171,7 @@ const stroke = {
|
|
|
171
171
|
hover: "indigo/purple.700/purpleDeep.400",
|
|
172
172
|
press: "indigo.dark/purple.900/purpleDeep.400"
|
|
173
173
|
},
|
|
174
|
-
accentAlt: "
|
|
174
|
+
accentAlt: "purple/purple.300/purpleDeep.700",
|
|
175
175
|
base: "grey/navy.100/black.50",
|
|
176
176
|
baseInteractive: {
|
|
177
177
|
DEFAULT: "grey/navy.100/black.50",
|
|
@@ -18,6 +18,7 @@ export declare type AccordionItemHeaderPropsType = {
|
|
|
18
18
|
*/
|
|
19
19
|
headingLevel?: HeadingLevelMapType[HeadingTag];
|
|
20
20
|
className?: string;
|
|
21
|
+
leftToggleIcon?: boolean;
|
|
21
22
|
} & ReachAccordionButtonProps;
|
|
22
23
|
export declare type AccordionItemPanelPropsType = {
|
|
23
24
|
className?: string;
|
|
@@ -42,6 +43,7 @@ export declare const AccordionItemHeader: React.ForwardRefExoticComponent<{
|
|
|
42
43
|
*/
|
|
43
44
|
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
44
45
|
className?: string | undefined;
|
|
46
|
+
leftToggleIcon?: boolean | undefined;
|
|
45
47
|
} & ReachAccordionButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
46
48
|
export declare const AccordionItemPanel: {
|
|
47
49
|
({ children, className, ...props }: AccordionItemPanelPropsType): JSX.Element;
|
|
@@ -59,6 +61,7 @@ export declare const AccordionItem: {
|
|
|
59
61
|
*/
|
|
60
62
|
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
61
63
|
className?: string | undefined;
|
|
64
|
+
leftToggleIcon?: boolean | undefined;
|
|
62
65
|
} & ReachAccordionButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
63
66
|
Panel: {
|
|
64
67
|
({ children, className, ...props }: AccordionItemPanelPropsType): JSX.Element;
|
|
@@ -79,6 +82,7 @@ declare const Accordion: {
|
|
|
79
82
|
*/
|
|
80
83
|
headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;
|
|
81
84
|
className?: string | undefined;
|
|
85
|
+
leftToggleIcon?: boolean | undefined;
|
|
82
86
|
} & ReachAccordionButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
83
87
|
Panel: {
|
|
84
88
|
({ children, className, ...props }: AccordionItemPanelPropsType): JSX.Element;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FormElementStatus } from "./form";
|
|
3
3
|
export interface HintPropsType {
|
|
4
|
+
className?: string;
|
|
4
5
|
children: React.ReactNode;
|
|
5
6
|
status?: FormElementStatus;
|
|
6
7
|
}
|
|
7
|
-
export declare const Hint: ({ children, status }: HintPropsType) => JSX.Element;
|
|
8
|
+
export declare const Hint: ({ children, status, className }: HintPropsType) => JSX.Element;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export declare const PriceTable:
|
|
3
|
-
children:
|
|
4
|
-
|
|
2
|
+
export declare const PriceTable: {
|
|
3
|
+
({ children }: {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
Row: ({ label, value, discounted, }: PriceTableRowProps) => JSX.Element;
|
|
7
|
+
};
|
|
5
8
|
interface PriceTableRowProps {
|
|
6
9
|
label: string;
|
|
7
10
|
value: string;
|
|
8
11
|
discounted?: boolean;
|
|
9
12
|
}
|
|
10
13
|
export declare const PriceTableRow: ({ label, value, discounted, }: PriceTableRowProps) => JSX.Element;
|
|
11
|
-
export
|
|
14
|
+
export default PriceTable;
|
|
@@ -4,5 +4,5 @@ declare type RatingCompactPropsType = Pick<RatingIconsPropsType, "className" | "
|
|
|
4
4
|
icon?: JSX.Element;
|
|
5
5
|
count?: number;
|
|
6
6
|
};
|
|
7
|
-
export declare function RatingCompact({ className, value, count, icon, }: RatingCompactPropsType): JSX.Element;
|
|
7
|
+
export declare function RatingCompact({ className, value, count, size, icon, }: RatingCompactPropsType): JSX.Element;
|
|
8
8
|
export {};
|
|
@@ -6,5 +6,6 @@ import RatingLabel from "./RatingLabel";
|
|
|
6
6
|
declare type RatingPropsType = React.PropsWithChildren<RatingIconsPropsType> & {
|
|
7
7
|
iconsClassName?: RatingIconsPropsType["className"];
|
|
8
8
|
};
|
|
9
|
+
declare function formatRatingValue(value: number): string | number;
|
|
9
10
|
declare function Rating({ className, iconsClassName, children, ...iconsProps }: RatingPropsType): JSX.Element;
|
|
10
|
-
export { Rating, RatingLabel, RatingInput, RatingCompact, RatingIcons };
|
|
11
|
+
export { Rating, RatingLabel, RatingInput, RatingCompact, RatingIcons, formatRatingValue, };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export interface TagProps {
|
|
3
3
|
children: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
4
5
|
variant?: "muted" | "important";
|
|
5
6
|
}
|
|
6
|
-
export declare const Tag: ({ children, variant }: TagProps) => JSX.Element;
|
|
7
|
+
export declare const Tag: ({ children, variant, className }: TagProps) => JSX.Element;
|