@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.
Files changed (43) hide show
  1. package/cjs/tokens/theme.js +1 -1
  2. package/components/Accordion/index.js +4 -2
  3. package/components/Accordion/index.js.map +1 -1
  4. package/components/Form/Hint.js +2 -2
  5. package/components/Form/Hint.js.map +1 -1
  6. package/components/Modal/ModalHeader.js +1 -1
  7. package/components/Modal/ModalHeader.js.map +1 -1
  8. package/components/Pill/index.js +1 -1
  9. package/components/Pill/index.js.map +1 -1
  10. package/components/PriceTable/index.js +3 -2
  11. package/components/PriceTable/index.js.map +1 -1
  12. package/components/Rating/RatingCompact.js +4 -3
  13. package/components/Rating/RatingCompact.js.map +1 -1
  14. package/components/Rating/index.js +4 -1
  15. package/components/Rating/index.js.map +1 -1
  16. package/components/Tabs/index.js +5 -3
  17. package/components/Tabs/index.js.map +1 -1
  18. package/components/Tag/index.js +1 -1
  19. package/components/Tag/index.js.map +1 -1
  20. package/index.js +1 -1
  21. package/package.json +6 -6
  22. package/styles/components/Accordion/index.scss +7 -0
  23. package/styles/components/Buttons/DefaultButton/index.scss +1 -1
  24. package/styles/components/Helper/index.scss +5 -1
  25. package/styles/components/Modal/index.scss +3 -8
  26. package/styles/components/Note/index.scss +3 -4
  27. package/styles/components/PhotoDropzone/index.scss +9 -11
  28. package/styles/components/Pill/index.scss +9 -10
  29. package/styles/components/PriceTable/index.scss +4 -4
  30. package/styles/components/ProgressBar/index.scss +10 -10
  31. package/styles/components/Tabs/index.scss +4 -8
  32. package/styles/components/Tag/index.scss +5 -7
  33. package/styles/core/_colors-map.scss +1 -1
  34. package/styles/core/border.scss +2 -2
  35. package/styles/core/theme.scss +1 -1
  36. package/tokens/theme.js +1 -1
  37. package/types/components/Accordion/index.d.ts +4 -0
  38. package/types/components/Form/Hint.d.ts +2 -1
  39. package/types/components/PriceTable/index.d.ts +7 -4
  40. package/types/components/Rating/RatingCompact.d.ts +1 -1
  41. package/types/components/Rating/index.d.ts +2 -1
  42. package/types/components/Tag/index.d.ts +2 -1
  43. package/utilities.css +1 -1
@@ -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: "indigo/purple.300/purpleDeep.700",
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", ...props },
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 }, ref) => {\n const { isExpanded } = useAccordionItemContext()\n const Heading = `h${headingLevel}` as HeadingTag\n return (\n <Heading>\n <ReachAccordionButton\n ref={ref}\n className=\"cobalt-accordion__header\"\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})\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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"}
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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"}
@@ -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":";;;;AAUA,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;AAEY,MAAA,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAiB,KAAI;AAC1D,IAAA,QACE,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAEA,EAAU,CAAC,aAAa,EAAE;YACnC,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;;;;"}
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: "graphiteLight" }))))));
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=\"graphiteLight\" />\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,eAAe,GAAG,CACxC,CACA,CACV,CACG;;;;"}
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;;;;"}
@@ -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 = "indigo", children, overlayed, className, size, }) => {
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 = \"indigo\",\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,QAAQ,EAChB,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;;;;"}
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: 16, status: "full" }),
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={16} status={\"full\"} />\n <RatingLabel>\n {value} {count && `(${count})`}\n </RatingLabel>\n </div>\n )\n}\n"],"names":[],"mappings":";;;;;AAiBgB,SAAA,aAAa,CAAC,EAC5B,SAAS,EACT,KAAK,EACL,KAAK,EACL,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,EAAE,EAAE,MAAM,EAAE,MAAM,EAAI,CAAA;AACpD,QAAA,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,IAAA;YACT,KAAK;;AAAG,YAAA,KAAK,IAAI,CAAI,CAAA,EAAA,KAAK,GAAG,CAClB,CACV,EACP;AACH;;;;"}
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 { Rating, RatingLabel, RatingInput, RatingCompact, RatingIcons }\n"],"names":[],"mappings":";;;;;AAWA,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;;;;"}
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;;;;"}
@@ -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 { Icon } from '../Icon/index.js';
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(Icon, { source: "chevronLeft", color: "indigo" }))),
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(Icon, { source: "chevronRight", color: "indigo" }))))),
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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"}
@@ -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":";;;MAQa,GAAG,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAY,MACjD,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE;QAC1B,mBAAmB,EAAE,OAAO,KAAK,OAAO;QACxC,uBAAuB,EAAE,OAAO,KAAK,WAAW;AACjD,KAAA,CAAC,EAED,EAAA,QAAQ,CACL;;;;"}
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.18.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.48",
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.22.0",
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.78.1",
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.5",
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.48"
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
 
@@ -52,6 +52,6 @@
52
52
  &--selected {
53
53
  @include semantic-color(selected, buttonBackground, background-color);
54
54
  @include semantic-color(selected, buttonLabel, color);
55
- @include semantic-color(accentAlt, stroke, border-color);
55
+ @include border-color(accent);
56
56
  }
57
57
  }
@@ -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
- color: color(graphite);
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
- /* FIXME border function doesn't handle color variant */
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(tight);
9
+ padding: spacing(sm);
9
10
 
10
- background-color: color(acier, lighter);
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
- border-color: color(grey, light);
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
- border-color: color(red);
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
- color: color(purple);
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(extra-tight);
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(unit) spacing(tight);
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(extra-tight) spacing();
23
+ padding: spacing(xs) spacing();
26
24
 
27
25
  border-radius: $pill-height;
28
26
  }
29
27
 
30
28
  &Pill--colorAller {
31
- color: color(aller);
29
+ @include text-color(connect);
32
30
  }
33
31
 
34
32
  &Pill--overlayed {
35
- color: color(white);
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(unit);
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(tight);
9
+ margin-bottom: spacing(sm);
10
10
  }
11
11
  }
12
12
 
13
13
  &PriceTable__Label {
14
- margin-right: spacing(unit);
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
- color: color(signal);
23
+ @include text-color(success);
24
24
  }
25
25
 
26
26
  &:empty:before {
27
- color: color(graphite, light);
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
- color: color(aller);
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: color(aller);
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(tight);
27
+ margin-top: spacing(sm);
27
28
 
28
- height: spacing(unit);
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(unit);
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(unit);
52
- width: spacing(unit);
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
- color: color(asphalt);
148
+ @include text-color(base);
153
149
 
154
150
  &:after {
155
- background: color(purple);
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(unit) spacing(extra-tight);
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
- color: color(graphite, light);
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
- color: color(essence);
21
+ @include text-color(error);
24
22
 
25
23
  background-color: lighten(color(essence), 24);
26
24
  }
@@ -176,7 +176,7 @@ $theme-colors-map: (
176
176
  hover: var(--c-l-indigo),
177
177
  press: var(--c-l-indigo-dark)
178
178
  ),
179
- accentAlt: var(--c-l-indigo),
179
+ accentAlt: var(--c-l-purple),
180
180
  base: var(--c-l-grey),
181
181
  baseInteractive: (
182
182
  DEFAULT: var(--c-l-grey),
@@ -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.";
@@ -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-indigo);
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: "indigo/purple.300/purpleDeep.700",
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: ({ children }: {
3
- children: React.ReactNode;
4
- }) => JSX.Element;
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;
package/utilities.css CHANGED
@@ -3830,7 +3830,7 @@
3830
3830
  }
3831
3831
 
3832
3832
  .c-border-accentAlt {
3833
- border-color: #61366b
3833
+ border-color: #b01aa7
3834
3834
  }
3835
3835
 
3836
3836
  .c-border-base {