@drivy/cobalt 0.51.0 → 1.0.0-beta.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 (66) hide show
  1. package/cjs/tokens/zIndexes.js +2 -1
  2. package/cjs/tokens/zIndexes.js.map +1 -1
  3. package/components/Accordion/index.js +16 -32
  4. package/components/Accordion/index.js.map +1 -1
  5. package/components/Alerter/index.js +45 -77
  6. package/components/Alerter/index.js.map +1 -1
  7. package/components/ContainedIcon/index.js.map +1 -1
  8. package/components/Form/Autocomplete/index.js +176 -155
  9. package/components/Form/Autocomplete/index.js.map +1 -1
  10. package/components/Form/Slider.js +40 -19
  11. package/components/Form/Slider.js.map +1 -1
  12. package/components/Form/field.js +9 -1
  13. package/components/Form/field.js.map +1 -1
  14. package/components/Modal/ModalHeader.js +10 -7
  15. package/components/Modal/ModalHeader.js.map +1 -1
  16. package/components/Modal/index.js +33 -97
  17. package/components/Modal/index.js.map +1 -1
  18. package/components/PhotoDropzone/index.js +2 -5
  19. package/components/PhotoDropzone/index.js.map +1 -1
  20. package/components/Tabs/index.js +19 -118
  21. package/components/Tabs/index.js.map +1 -1
  22. package/index.js +3 -3
  23. package/package.json +5 -12
  24. package/src/tokens/zIndexes.js +2 -1
  25. package/src/tokens/zIndexes.js.map +1 -1
  26. package/styles/components/Accordion/index.scss +40 -19
  27. package/styles/components/Alerter/index.scss +42 -42
  28. package/styles/components/ContainedIcon/index.scss +64 -8
  29. package/styles/components/Form/Autocomplete/index.scss +52 -74
  30. package/styles/components/Form/RadioWithDetails.scss +2 -12
  31. package/styles/components/Form/Slider.scss +46 -55
  32. package/styles/components/Form/TextInput.scss +4 -0
  33. package/styles/components/Form/field.scss +2 -2
  34. package/styles/components/Modal/index.scss +82 -63
  35. package/styles/components/PhotoDropzone/index.scss +4 -0
  36. package/styles/components/Tabs/index.scss +18 -120
  37. package/styles/core/z-index.scss +1 -0
  38. package/tokens/zIndexes.js +2 -1
  39. package/tokens/zIndexes.js.map +1 -1
  40. package/types/src/components/Accordion/index.d.ts +15 -66
  41. package/types/src/components/Alerter/index.d.ts +8 -19
  42. package/types/src/components/ContainedIcon/index.d.ts +1 -1
  43. package/types/src/components/Form/Autocomplete/index.d.ts +38 -37
  44. package/types/src/components/Form/Slider.d.ts +12 -77
  45. package/types/src/components/Form/field.d.ts +16 -1
  46. package/types/src/components/Modal/ModalHeader.d.ts +1 -1
  47. package/types/src/components/Modal/index.d.ts +2 -2
  48. package/types/src/components/Tabs/index.d.ts +9 -6
  49. package/types/src/index.d.ts +1 -1
  50. package/types/src/tokens/index.d.ts +1 -0
  51. package/utilities.css +59 -0
  52. package/utils/getCobaltTailwindcssConfig.js.map +1 -1
  53. package/components/Alerter/Alert.js +0 -47
  54. package/components/Alerter/Alert.js.map +0 -1
  55. package/components/Modal/ModalBody.js +0 -11
  56. package/components/Modal/ModalBody.js.map +0 -1
  57. package/components/utils/Timer.js +0 -24
  58. package/components/utils/Timer.js.map +0 -1
  59. package/components/utils/dom.js +0 -8
  60. package/components/utils/dom.js.map +0 -1
  61. package/components/utils/px.js +0 -5
  62. package/components/utils/px.js.map +0 -1
  63. package/hooks/useElementHeight.js +0 -34
  64. package/hooks/useElementHeight.js.map +0 -1
  65. package/types/src/components/Alerter/Alert.d.ts +0 -9
  66. package/types/src/components/Modal/ModalBody.d.ts +0 -8
@@ -32,7 +32,8 @@ var _zIndexes = {
32
32
  "modal-above": 91,
33
33
  "alert-below": 99,
34
34
  alert: alert,
35
- "alert-above": 101
35
+ "alert-above": 101,
36
+ "autocomplete-popover": 2147483647
36
37
  };
37
38
 
38
39
  exports.above = above;
@@ -1 +1 @@
1
- {"version":3,"file":"zIndexes.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"zIndexes.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,52 +1,36 @@
1
- import React, { forwardRef } from 'react';
1
+ import React, { useId } from 'react';
2
+ import { Accordion as Accordion$1, useAccordionItemContext } from '@ark-ui/react';
3
+ export { useAccordionItemContext } from '@ark-ui/react';
2
4
  import cx from 'classnames';
3
- import { useAccordionItemContext, AccordionButton, AccordionPanel, Accordion as Accordion$1, AccordionItem as AccordionItem$1 } from '@reach/accordion';
4
- export { useAccordionItemContext } from '@reach/accordion';
5
5
  import ToggleIcon from './ToggleIcon.js';
6
- import { animated, useSpring } from '@react-spring/web';
7
- import useElementHeight from '../../hooks/useElementHeight.js';
8
6
 
9
- const accordionSpringConfig = { tension: 300, friction: 30, clamp: true };
10
- const AccordionItemHeader = forwardRef(({ headingLevel = 4, className, leftToggleIcon = false, useChevron = false, children, ...props }, ref) => {
11
- const { isExpanded } = useAccordionItemContext();
7
+ const AccordionItemHeader = ({ children, className, headingLevel = 4, leftToggleIcon, useChevron = false, ...props }) => {
12
8
  const Heading = `h${headingLevel}`;
9
+ const { expanded } = useAccordionItemContext();
13
10
  return (React.createElement(Heading, null,
14
- React.createElement(AccordionButton, { ref: ref, className: cx("cobalt-accordion__header", {
11
+ React.createElement(Accordion$1.ItemTrigger, { className: cx("cobalt-accordion__header", {
15
12
  "cobalt-accordion__header--left-toggle-icon": leftToggleIcon,
16
13
  }), ...props },
17
14
  React.createElement("span", { className: cx("cobalt-accordion__header-content", className) }, children),
18
- React.createElement(ToggleIcon, { useChevron: useChevron, isOpen: isExpanded }))));
19
- });
15
+ React.createElement(ToggleIcon, { useChevron: useChevron, isOpen: expanded }))));
16
+ };
20
17
  AccordionItemHeader.displayName = "Accordion.Item.Header";
21
- const AnimatedAccordionPanel = animated(AccordionPanel);
22
18
  const AccordionItemPanel = ({ children, className, ...props }) => {
23
- const { isExpanded } = useAccordionItemContext();
24
- const { ref, height } = useElementHeight();
25
- const animation = useSpring({
26
- opacity: isExpanded ? 1 : 0,
27
- height: isExpanded ? height : 0,
28
- overflow: "hidden",
29
- config: accordionSpringConfig,
30
- });
31
- return (React.createElement(AnimatedAccordionPanel, { style: animation,
32
- // We need to set hidden to false for the exit animations to work
33
- // but the panel should still be hidden from the accessibility tree
34
- // when the panel is closed. We'll use aria-hidden instead.
35
- hidden: false, "aria-hidden": !isExpanded || undefined, ...props },
36
- React.createElement("div", { ref: ref, className: cx("cobalt-accordion__panel", className) }, children)));
19
+ return (React.createElement(Accordion$1.ItemContent, { className: cx("cobalt-accordion__panel", className), ...props }, children));
37
20
  };
38
21
  AccordionItemPanel.displayName = "Accordion.Item.Panel";
39
- const AccordionItem = ({ children, className, ...props }) => {
40
- return (React.createElement(AccordionItem$1, { className: cx("cobalt-accordions-list__item", className), ...props }, children));
22
+ const AccordionItem = ({ children, className, value, ...props }) => {
23
+ const accordionItemId = value || useId();
24
+ return (React.createElement(Accordion$1.Item, { className: cx("cobalt-accordions-list__item", className), value: accordionItemId, ...props }, children));
41
25
  };
42
26
  AccordionItem.displayName = "Accordion.Item";
43
27
  AccordionItem.Header = AccordionItemHeader;
44
28
  AccordionItem.Panel = AccordionItemPanel;
45
- const Accordion = ({ className, children, index, collapsible = true, multiple = false, ...props }) => {
46
- const hasIndex = index === 0 || !!index;
47
- return (React.createElement(Accordion$1, { className: cx("cobalt-accordions-list", className), collapsible: !hasIndex && collapsible, multiple: !hasIndex && multiple, index: index, ...props }, children));
29
+ const Accordion = ({ className, children, collapsible = true, onValueChange, ...props }) => {
30
+ return (React.createElement(Accordion$1.Root, { className: cx("cobalt-accordions-list", className), collapsible: collapsible, onValueChange: (details) => onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(details.value), ...props }, children));
48
31
  };
32
+ Accordion.displayName = "Accordion";
49
33
  Accordion.Item = AccordionItem;
50
34
 
51
- export { AccordionItem, AccordionItemHeader, AccordionItemPanel, Accordion as default };
35
+ export { Accordion as default };
52
36
  //# sourceMappingURL=index.js.map
@@ -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 leftToggleIcon?: boolean\n useChevron?: 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 {\n headingLevel = 4,\n className,\n leftToggleIcon = false,\n useChevron = false,\n children,\n ...props\n },\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 useChevron={useChevron} 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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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Accordion/index.tsx"],"sourcesContent":["import React, { useId } from \"react\"\nimport {\n AccordionItemProps as ArkAccordionItemProps,\n AccordionItemTriggerProps as ArkAccordionItemTriggerProps,\n AccordionRootProps as ArkAccordionRootProps,\n Accordion as ArkAccordion,\n useAccordionItemContext,\n AccordionItemContentProps as ArkAccordionItemContentProps,\n AccordionValueChangeDetails,\n} from \"@ark-ui/react\"\nimport cx from \"classnames\"\nimport ToggleIcon from \"./ToggleIcon\"\n\nexport { useAccordionItemContext } from \"@ark-ui/react\"\n\ntype HeadingLevelMapType = {\n h2: 2\n h3: 3\n h4: 4\n h5: 5\n h6: 6\n}\n\ntype HeadingTag = keyof HeadingLevelMapType\n\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 */\n headingLevel?: HeadingLevelMapType[HeadingTag]\n className?: string\n leftToggleIcon?: boolean\n useChevron?: boolean\n} & ArkAccordionItemTriggerProps\n\nexport type AccordionItemPanelPropsType = ArkAccordionItemContentProps\n\nexport type AccordionItemPropsType = Omit<ArkAccordionItemProps, \"value\"> & {\n value?: ArkAccordionItemProps[\"value\"]\n}\n\nexport type AccordionPropsType = Omit<\n ArkAccordionRootProps,\n \"onValueChange\"\n> & {\n onValueChange?: (value: AccordionValueChangeDetails[\"value\"]) => void\n}\n\nconst AccordionItemHeader = ({\n children,\n className,\n headingLevel = 4,\n leftToggleIcon,\n useChevron = false,\n ...props\n}: AccordionItemHeaderPropsType) => {\n const Heading = `h${headingLevel}` as HeadingTag\n const { expanded } = useAccordionItemContext()\n\n return (\n <Heading>\n <ArkAccordion.ItemTrigger\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 useChevron={useChevron} isOpen={expanded} />\n </ArkAccordion.ItemTrigger>\n </Heading>\n )\n}\n\nAccordionItemHeader.displayName = \"Accordion.Item.Header\"\n\nconst AccordionItemPanel = ({\n children,\n className,\n ...props\n}: AccordionItemPanelPropsType) => {\n return (\n <ArkAccordion.ItemContent\n className={cx(\"cobalt-accordion__panel\", className)}\n {...props}\n >\n {children}\n </ArkAccordion.ItemContent>\n )\n}\n\nAccordionItemPanel.displayName = \"Accordion.Item.Panel\"\n\nconst AccordionItem = ({\n children,\n className,\n value,\n ...props\n}: AccordionItemPropsType) => {\n const accordionItemId = value || useId()\n\n return (\n <ArkAccordion.Item\n className={cx(\"cobalt-accordions-list__item\", className)}\n value={accordionItemId}\n {...props}\n >\n {children}\n </ArkAccordion.Item>\n )\n}\nAccordionItem.displayName = \"Accordion.Item\"\nAccordionItem.Header = AccordionItemHeader\nAccordionItem.Panel = AccordionItemPanel\n\nconst Accordion = ({\n className,\n children,\n collapsible = true,\n onValueChange,\n ...props\n}: AccordionPropsType) => {\n return (\n <ArkAccordion.Root\n className={cx(\"cobalt-accordions-list\", className)}\n collapsible={collapsible}\n onValueChange={(details) => onValueChange?.(details.value)}\n {...props}\n >\n {children}\n </ArkAccordion.Root>\n )\n}\n\nAccordion.displayName = \"Accordion\"\nAccordion.Item = AccordionItem\n\nexport default Accordion\n"],"names":["ArkAccordion"],"mappings":";;;;;;AAkDA,MAAM,mBAAmB,GAAG,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,YAAY,GAAG,CAAC,EAChB,cAAc,EACd,UAAU,GAAG,KAAK,EAClB,GAAG,KAAK,EACqB,KAAI;AACjC,IAAA,MAAM,OAAO,GAAG,CAAI,CAAA,EAAA,YAAY,EAAgB,CAAA;AAChD,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,uBAAuB,EAAE,CAAA;IAE9C,QACE,oBAAC,OAAO,EAAA,IAAA;QACN,KAAC,CAAA,aAAA,CAAAA,WAAY,CAAC,WAAW,EAAA,EACvB,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE;AACxC,gBAAA,4CAA4C,EAAE,cAAc;AAC7D,aAAA,CAAC,KACE,KAAK,EAAA;YAET,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAC/D,EAAA,QAAQ,CACJ;AACP,YAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAA,CAAI,CAC/B,CACnB,EACX;AACH,CAAC,CAAA;AAED,mBAAmB,CAAC,WAAW,GAAG,uBAAuB,CAAA;AAEzD,MAAM,kBAAkB,GAAG,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACoB,KAAI;IAChC,QACE,oBAACA,WAAY,CAAC,WAAW,EACvB,EAAA,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAC/C,GAAA,KAAK,IAER,QAAQ,CACgB,EAC5B;AACH,CAAC,CAAA;AAED,kBAAkB,CAAC,WAAW,GAAG,sBAAsB,CAAA;AAEvD,MAAM,aAAa,GAAG,CAAC,EACrB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACe,KAAI;AAC3B,IAAA,MAAM,eAAe,GAAG,KAAK,IAAI,KAAK,EAAE,CAAA;IAExC,QACE,KAAC,CAAA,aAAA,CAAAA,WAAY,CAAC,IAAI,IAChB,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,EACxD,KAAK,EAAE,eAAe,EAAA,GAClB,KAAK,EAER,EAAA,QAAQ,CACS,EACrB;AACH,CAAC,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,gBAAgB,CAAA;AAC5C,aAAa,CAAC,MAAM,GAAG,mBAAmB,CAAA;AAC1C,aAAa,CAAC,KAAK,GAAG,kBAAkB,CAAA;AAExC,MAAM,SAAS,GAAG,CAAC,EACjB,SAAS,EACT,QAAQ,EACR,WAAW,GAAG,IAAI,EAClB,aAAa,EACb,GAAG,KAAK,EACW,KAAI;AACvB,IAAA,QACE,KAAC,CAAA,aAAA,CAAAA,WAAY,CAAC,IAAI,EAAA,EAChB,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,EAClD,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,CAAC,OAAO,KAAK,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAG,OAAO,CAAC,KAAK,CAAC,EACtD,GAAA,KAAK,IAER,QAAQ,CACS,EACrB;AACH,EAAC;AAED,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AACnC,SAAS,CAAC,IAAI,GAAG,aAAa;;;;"}
@@ -1,88 +1,56 @@
1
- import React, { useContext, useReducer } from 'react';
2
- import { nanoid } from 'nanoid';
3
- import Portal from '@reach/portal';
1
+ import React from 'react';
2
+ import { createToaster, Portal, Toaster, Toast } from '@ark-ui/react';
3
+ import '../Icon/index.js';
4
4
  import cx from 'classnames';
5
- import { useTransition, config, animated } from '@react-spring/web';
6
- import Alert from './Alert.js';
7
- import useBreakpoint from '../../hooks/useBreakpoint.js';
8
- import 'lodash.throttle';
9
- import { remToPx } from '../utils/px.js';
5
+ import InfoFilledIcon from '../Icon/__generated__/InfoFilledIcon.js';
6
+ import CheckCircleIcon from '../Icon/__generated__/CheckCircleIcon.js';
7
+ import ContextualWarningCircleFilledIcon from '../Icon/__generated__/ContextualWarningCircleFilledIcon.js';
10
8
 
11
- var AlertActionType;
12
- (function (AlertActionType) {
13
- AlertActionType["send"] = "send";
14
- AlertActionType["dismiss"] = "dismiss";
15
- })(AlertActionType || (AlertActionType = {}));
16
- const hasDismiss = (alertData) => "dismiss" in alertData;
17
- const initialQueue = [];
18
- function alertsReducer(queue, action) {
19
- const { type, ...alertData } = action;
20
- if (type === AlertActionType.dismiss) {
21
- return queue.filter((a) => a.id !== alertData.id);
22
- }
23
- // We can't send alerts in the queue without providing a way to dismiss it
24
- if (type === AlertActionType.send && hasDismiss(alertData))
25
- return [alertData].concat(queue);
26
- return queue;
27
- }
28
- const defaultSendAlert = () => initialQueue; // we never actually use this
29
- const AlertsContext = React.createContext({
30
- queue: initialQueue,
31
- sendAlert: defaultSendAlert, // just to mock out the dispatch type and make it not optional
9
+ const DEFAULT_TIMEOUT = 3000;
10
+ const MAX_TEXT_TIMEOUT = 9000;
11
+ const computeTimeDurationFromText = (content) => {
12
+ if (typeof content !== "string")
13
+ return DEFAULT_TIMEOUT;
14
+ return Math.min(Math.max(DEFAULT_TIMEOUT, content.length * 90), MAX_TEXT_TIMEOUT);
15
+ };
16
+ const toaster = createToaster({
17
+ overlap: true,
18
+ gap: 12,
19
+ placement: "bottom",
20
+ max: 12,
32
21
  });
33
- const AlertsProvider = (props) => {
34
- const [queue, dispatch] = useReducer(alertsReducer, initialQueue);
35
- const dismissAlert = (args) => {
36
- dispatch({
37
- type: AlertActionType.dismiss,
38
- ...args,
39
- });
40
- };
41
- const sendAlert = (args) => {
42
- const alertData = { ...args, id: nanoid() };
43
- dispatch({
44
- type: AlertActionType.send,
45
- ...alertData,
46
- dismiss: () => dismissAlert(alertData),
47
- });
22
+ const useAlerts = () => {
23
+ return {
24
+ sendAlert: ({ message, status, duration, }) => toaster.create({
25
+ description: message,
26
+ type: status,
27
+ placement: "bottom",
28
+ duration: duration !== null && duration !== void 0 ? duration : computeTimeDurationFromText(message),
29
+ }),
48
30
  };
49
- return React.createElement(AlertsContext.Provider, { value: { queue, sendAlert }, ...props });
50
31
  };
51
- // Alerter hook
52
- const useAlerts = () => {
53
- return useContext(AlertsContext);
32
+ const STATUS_ICONS_MAP = {
33
+ info: InfoFilledIcon,
34
+ success: CheckCircleIcon,
35
+ error: ContextualWarningCircleFilledIcon,
54
36
  };
55
- const InnerAlerter = ({ children }) => {
56
- const { queue } = useAlerts();
57
- const { isMobile } = useBreakpoint();
58
- const transformSpring = {
59
- from: remToPx(2),
60
- enter: 0,
61
- leave: isMobile ? remToPx(2) : remToPx(5),
62
- };
63
- const transition = useTransition(queue, {
64
- keys: queue.map((a) => a.id),
65
- from: { opacity: 0, transform: transformSpring.from },
66
- enter: { opacity: 1, transform: transformSpring.enter },
67
- leave: { opacity: 0, transform: transformSpring.leave },
68
- config: config.stiff,
69
- });
37
+ const STATUS_ICON_COLOR_MAP = {
38
+ info: "infoAlt",
39
+ success: "success",
40
+ error: "error",
41
+ };
42
+ const Alerter = ({ children }) => {
70
43
  return (React.createElement(React.Fragment, null,
44
+ children,
71
45
  React.createElement(Portal, null,
72
- React.createElement("div", { className: cx("cobalt-alerts", {
73
- "cobalt-alerts--mobile": isMobile,
74
- }) }, transition((style, alertData) => (React.createElement(animated.div, { key: alertData.id, style: {
75
- opacity: style.opacity,
76
- ...(isMobile
77
- ? { translateY: style.transform }
78
- : { translateX: style.transform }),
79
- } },
80
- React.createElement(Alert, { status: alertData.status, dismiss: alertData.dismiss }, alertData.message)))))),
81
- children));
82
- };
83
- const Alerter = (props) => {
84
- return (React.createElement(AlertsProvider, null,
85
- React.createElement(InnerAlerter, { ...props })));
46
+ React.createElement(Toaster, { toaster: toaster, className: "cobalt-alerter" }, (toast) => {
47
+ const status = toast.type;
48
+ const IconComp = STATUS_ICONS_MAP[status];
49
+ return (React.createElement(Toast.Root, { className: cx("cobalt-alert"), key: toast.id },
50
+ React.createElement("div", { className: "cobalt-alert__wrapper" },
51
+ React.createElement(IconComp, { size: 20, color: STATUS_ICON_COLOR_MAP[status] }),
52
+ React.createElement(Toast.Description, null, toast.description))));
53
+ }))));
86
54
  };
87
55
 
88
56
  export { Alerter as default, useAlerts };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/Alerter/index.tsx"],"sourcesContent":["import React, { useContext, useReducer } from \"react\"\nimport { nanoid } from \"nanoid\"\nimport Portal from \"@reach/portal\"\nimport cx from \"classnames\"\nimport { useTransition, animated, config } from \"@react-spring/web\"\n\nimport Alert, { AlertType } from \"./Alert\"\nimport useBreakpoint from \"../../hooks/useBreakpoint\"\nimport { remToPx } from \"../utils\"\nexport { type AlertStatus } from \"./Alert\"\n\ntype AlertPropsType = Parameters<AlertType>[0]\n\nenum AlertActionType {\n send = \"send\",\n dismiss = \"dismiss\",\n}\n\nexport type AlertReducerActionData = {\n id: string\n status: AlertPropsType[\"status\"]\n message: AlertPropsType[\"children\"]\n // mandatory only for sent alerts\n dismiss?: AlertPropsType[\"dismiss\"]\n}\n\n// We omit props type private to the Alerter\ntype SendAlertParameters = Omit<AlertReducerActionData, \"dismiss\" | \"id\">\ntype DismissAlertParameters = Omit<AlertReducerActionData, \"dismiss\">\n// We omit types only use in the reducer\ntype AlertsQueue = (Omit<AlertReducerActionData, \"dismiss\"> & {\n dismiss: NonNullable<AlertReducerActionData[\"dismiss\"]>\n})[]\n\nconst hasDismiss = (\n alertData: AlertReducerActionData\n): alertData is AlertsQueue[0] => \"dismiss\" in alertData\n\nconst initialQueue: AlertsQueue = []\n\nfunction alertsReducer(\n queue: AlertsQueue,\n action: AlertReducerActionData & { type: AlertActionType }\n): AlertsQueue {\n const { type, ...alertData } = action\n if (type === AlertActionType.dismiss) {\n return queue.filter((a) => a.id !== alertData.id)\n }\n // We can't send alerts in the queue without providing a way to dismiss it\n if (type === AlertActionType.send && hasDismiss(alertData))\n return [alertData].concat(queue)\n return queue\n}\n\nconst defaultSendAlert: React.Dispatch<SendAlertParameters> = () => initialQueue // we never actually use this\nconst AlertsContext = React.createContext({\n queue: initialQueue,\n sendAlert: defaultSendAlert, // just to mock out the dispatch type and make it not optional\n})\n\nconst AlertsProvider = (props: { children?: React.ReactNode }) => {\n const [queue, dispatch] = useReducer(alertsReducer, initialQueue)\n const dismissAlert: React.Dispatch<DismissAlertParameters> = (args) => {\n dispatch({\n type: AlertActionType.dismiss,\n ...args,\n })\n }\n const sendAlert: React.Dispatch<SendAlertParameters> = (args) => {\n const alertData = { ...args, id: nanoid() }\n dispatch({\n type: AlertActionType.send,\n ...alertData,\n dismiss: () => dismissAlert(alertData),\n })\n }\n return <AlertsContext.Provider value={{ queue, sendAlert }} {...props} />\n}\n\n// Alerter hook\nexport const useAlerts = () => {\n return useContext(AlertsContext)\n}\n\nconst InnerAlerter = ({ children }: { children: React.ReactNode }) => {\n const { queue } = useAlerts()\n const { isMobile } = useBreakpoint()\n\n const transformSpring = {\n from: remToPx(2),\n enter: 0,\n leave: isMobile ? remToPx(2) : remToPx(5),\n }\n\n const transition = useTransition(queue, {\n keys: queue.map((a) => a.id),\n from: { opacity: 0, transform: transformSpring.from },\n enter: { opacity: 1, transform: transformSpring.enter },\n leave: { opacity: 0, transform: transformSpring.leave },\n config: config.stiff,\n })\n\n return (\n <>\n <Portal>\n <div\n className={cx(\"cobalt-alerts\", {\n \"cobalt-alerts--mobile\": isMobile,\n })}\n >\n {transition((style, alertData) => (\n <animated.div\n key={alertData.id}\n style={{\n opacity: style.opacity,\n ...(isMobile\n ? { translateY: style.transform }\n : { translateX: style.transform }),\n }}\n >\n <Alert status={alertData.status} dismiss={alertData.dismiss}>\n {alertData.message}\n </Alert>\n </animated.div>\n ))}\n </div>\n </Portal>\n {children}\n </>\n )\n}\n\nconst Alerter = (props: { children: React.ReactNode }) => {\n return (\n <AlertsProvider>\n <InnerAlerter {...props} />\n </AlertsProvider>\n )\n}\n\nexport default Alerter\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Alerter/index.tsx"],"sourcesContent":["import React, { type PropsWithChildren } from \"react\"\nimport { Toast, Toaster, createToaster, Portal } from \"@ark-ui/react\"\nimport {\n InfoFilledIcon,\n CheckCircleIcon,\n ContextualWarningCircleFilledIcon,\n IconColorsType,\n} from \"../Icon\"\nimport cx from \"classnames\"\n\nconst DEFAULT_TIMEOUT = 3000\nconst MAX_TEXT_TIMEOUT = 9000\n\nexport type AlertStatus = \"info\" | \"success\" | \"error\"\n\nconst computeTimeDurationFromText = (\n content: string | React.ReactNode\n): number => {\n if (typeof content !== \"string\") return DEFAULT_TIMEOUT\n return Math.min(\n Math.max(DEFAULT_TIMEOUT, content.length * 90),\n MAX_TEXT_TIMEOUT\n )\n}\n\nconst toaster = createToaster({\n overlap: true,\n gap: 12,\n placement: \"bottom\",\n max: 12,\n})\n\nexport const useAlerts = () => {\n return {\n sendAlert: ({\n message,\n status,\n duration,\n }: {\n message: React.ReactNode\n status: AlertStatus\n duration?: number\n }) =>\n toaster.create({\n description: message,\n type: status,\n placement: \"bottom\",\n duration: duration ?? computeTimeDurationFromText(message),\n }),\n }\n}\n\nconst STATUS_ICONS_MAP: { [k in AlertStatus]: typeof InfoFilledIcon } = {\n info: InfoFilledIcon,\n success: CheckCircleIcon,\n error: ContextualWarningCircleFilledIcon,\n}\n\nconst STATUS_ICON_COLOR_MAP: { [k in AlertStatus]: IconColorsType } = {\n info: \"infoAlt\",\n success: \"success\",\n error: \"error\",\n}\n\nconst Alerter = ({ children }: PropsWithChildren) => {\n return (\n <>\n {children}\n <Portal>\n <Toaster toaster={toaster} className=\"cobalt-alerter\">\n {(toast) => {\n const status = toast.type as AlertStatus\n const IconComp = STATUS_ICONS_MAP[status]\n return (\n <Toast.Root className={cx(\"cobalt-alert\")} key={toast.id}>\n <div className=\"cobalt-alert__wrapper\">\n <IconComp size={20} color={STATUS_ICON_COLOR_MAP[status]} />\n <Toast.Description>{toast.description}</Toast.Description>\n </div>\n </Toast.Root>\n )\n }}\n </Toaster>\n </Portal>\n </>\n )\n}\n\nexport default Alerter\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,eAAe,GAAG,IAAI,CAAA;AAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAI7B,MAAM,2BAA2B,GAAG,CAClC,OAAiC,KACvB;IACV,IAAI,OAAO,OAAO,KAAK,QAAQ;AAAE,QAAA,OAAO,eAAe,CAAA;AACvD,IAAA,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,EAC9C,gBAAgB,CACjB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,aAAa,CAAC;AAC5B,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,GAAG,EAAE,EAAE;AACP,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,GAAG,EAAE,EAAE;AACR,CAAA,CAAC,CAAA;AAEK,MAAM,SAAS,GAAG,MAAK;IAC5B,OAAO;AACL,QAAA,SAAS,EAAE,CAAC,EACV,OAAO,EACP,MAAM,EACN,QAAQ,GAKT,KACC,OAAO,CAAC,MAAM,CAAC;AACb,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAR,QAAQ,GAAI,2BAA2B,CAAC,OAAO,CAAC;SAC3D,CAAC;KACL,CAAA;AACH,EAAC;AAED,MAAM,gBAAgB,GAAkD;AACtE,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,KAAK,EAAE,iCAAiC;CACzC,CAAA;AAED,MAAM,qBAAqB,GAA2C;AACpE,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,KAAK,EAAE,OAAO;CACf,CAAA;AAED,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAqB,KAAI;AAClD,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;QACG,QAAQ;AACT,QAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,IAAA;AACL,YAAA,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,gBAAgB,EAAA,EAClD,CAAC,KAAK,KAAI;AACT,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAmB,CAAA;AACxC,gBAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACzC,gBAAA,QACE,KAAC,CAAA,aAAA,CAAA,KAAK,CAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAA;oBACtD,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uBAAuB,EAAA;AACpC,wBAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAI,CAAA;wBAC5D,KAAC,CAAA,aAAA,CAAA,KAAK,CAAC,WAAW,EAAE,IAAA,EAAA,KAAK,CAAC,WAAW,CAAqB,CACtD,CACK,EACd;AACH,aAAC,CACO,CACH,CACR,EACJ;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/ContainedIcon/index.tsx"],"sourcesContent":["import React from \"react\"\nimport capitalize from \"../utils/capitalize\"\nimport { IconColorsType } from \"../Icon\"\nimport cx from \"classnames\"\n\ntype Extends<T, U extends T> = U\n\ntype ContainedIconColorType = Extends<\n IconColorsType,\n \"base\" | \"accent\" | \"disabled\" | \"error\" | \"info\" | \"success\" | \"connect\"\n>\n\nexport type ContainedIconPropsType = {\n icon: React.JSX.Element\n color?: ContainedIconColorType\n className?: string\n}\n\nexport function ContainedIcon({\n icon,\n color = \"base\",\n className,\n}: ContainedIconPropsType) {\n return (\n <div\n className={cx(\n className,\n `cobalt-contained-icon cobalt-contained-icon--color${capitalize(color)}`\n )}\n >\n {icon}\n </div>\n )\n}\n"],"names":[],"mappings":";;;;AAkBM,SAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,GAAG,MAAM,EACd,SAAS,GACc,EAAA;AACvB,IAAA,QACE,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CACX,SAAS,EACT,CAAA,kDAAA,EAAqD,UAAU,CAAC,KAAK,CAAC,CAAE,CAAA,CACzE,IAEA,IAAI,CACD,EACP;AACH;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ContainedIcon/index.tsx"],"sourcesContent":["import React from \"react\"\nimport capitalize from \"../utils/capitalize\"\nimport { IconColorsType } from \"../Icon\"\nimport cx from \"classnames\"\n\ntype Extends<T, U extends T> = U\n\ntype ContainedIconColorType =\n | Extends<\n IconColorsType,\n | \"base\"\n | \"accent\"\n | \"disabled\"\n | \"error\"\n | \"info\"\n | \"success\"\n | \"connect\"\n | \"keyExchange\"\n | \"rideshare\"\n | \"accentAlt\"\n | \"disabledAlt\"\n | \"errorAlt\"\n | \"infoAlt\"\n | \"successAlt\"\n | \"connectAlt\"\n >\n | \"baseAlt\"\n\nexport type ContainedIconPropsType = {\n icon: React.JSX.Element\n color?: ContainedIconColorType\n className?: string\n}\n\nexport function ContainedIcon({\n icon,\n color = \"base\",\n className,\n}: ContainedIconPropsType) {\n return (\n <div\n className={cx(\n className,\n `cobalt-contained-icon cobalt-contained-icon--color${capitalize(color)}`\n )}\n >\n {icon}\n </div>\n )\n}\n"],"names":[],"mappings":";;;;AAkCM,SAAU,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,GAAG,MAAM,EACd,SAAS,GACc,EAAA;AACvB,IAAA,QACE,KACE,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CACX,SAAS,EACT,CAAA,kDAAA,EAAqD,UAAU,CAAC,KAAK,CAAC,CAAE,CAAA,CACzE,IAEA,IAAI,CACD,EACP;AACH;;;;"}