@livechat/design-system-react-components 1.0.0-alpha.20 → 1.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dsrc.es.js CHANGED
@@ -35,7 +35,7 @@ var __publicField = (obj, key, value) => {
35
35
  };
36
36
  import * as React from "react";
37
37
  import cx from "clsx";
38
- import { Close, Info as Info$1, Warning, CheckCircleSolid, Block, Person, Check, ChevronUp, ChevronDown, Error as Error2, Search, LockBlack } from "@livechat/design-system-icons/react/material";
38
+ import { Close, Info as Info$1, Warning, CheckCircleSolid, Block, Person, ChevronUp, ChevronDown, Check, Error as Error2, Search, LockBlack } from "@livechat/design-system-icons/react/material";
39
39
  import debounce from "lodash.debounce";
40
40
  import { getContrast } from "polished";
41
41
  import * as ReactDOM from "react-dom";
@@ -302,7 +302,7 @@ const IconSizeMap = {
302
302
  height: 32
303
303
  }
304
304
  };
305
- const baseClass$E = "icon";
305
+ const baseClass$F = "icon";
306
306
  const Icon = (props) => {
307
307
  const _a = props, {
308
308
  source,
@@ -322,7 +322,7 @@ const Icon = (props) => {
322
322
  const GeneratedIcon = React.createElement(source, __spreadProps(__spreadValues({}, IconSizeMap[size]), {
323
323
  color: customColor
324
324
  }));
325
- const mergedClassNames = cx(className, styles$x[baseClass$E], kind && styles$x[`${baseClass$E}--${disabled ? "disabled--" : ""}${kind}`]);
325
+ const mergedClassNames = cx(className, styles$x[baseClass$F], kind && styles$x[`${baseClass$F}--${disabled ? "disabled--" : ""}${kind}`]);
326
326
  return /* @__PURE__ */ React.createElement("span", __spreadProps(__spreadValues({}, restProps), {
327
327
  className: mergedClassNames
328
328
  }), GeneratedIcon);
@@ -362,7 +362,7 @@ const IconConfig = {
362
362
  kind: "error"
363
363
  }
364
364
  };
365
- const baseClass$D = "alert";
365
+ const baseClass$E = "alert";
366
366
  const Alert = ({
367
367
  children,
368
368
  className,
@@ -371,7 +371,7 @@ const Alert = ({
371
371
  }) => {
372
372
  const containerRef = React.useRef(null);
373
373
  const [isSmallContainer, setIsSmallContainer] = React.useState(false);
374
- const mergedClassNames = cx(styles$w[baseClass$D], styles$w[`${baseClass$D}--${kind}`], isSmallContainer && styles$w[`${baseClass$D}--small`], className);
374
+ const mergedClassNames = cx(styles$w[baseClass$E], styles$w[`${baseClass$E}--${kind}`], isSmallContainer && styles$w[`${baseClass$E}--small`], className);
375
375
  React.useEffect(() => {
376
376
  const handleResize = debounce(() => {
377
377
  if (containerRef.current && containerRef.current.offsetWidth <= 400) {
@@ -386,16 +386,16 @@ const Alert = ({
386
386
  ref: containerRef,
387
387
  className: mergedClassNames
388
388
  }, /* @__PURE__ */ React.createElement("div", {
389
- className: styles$w[`${baseClass$D}__content`]
389
+ className: styles$w[`${baseClass$E}__content`]
390
390
  }, /* @__PURE__ */ React.createElement(Icon, __spreadProps(__spreadValues({}, IconConfig[kind]), {
391
391
  size: "large",
392
- className: styles$w[`${baseClass$D}__content-icon`]
392
+ className: styles$w[`${baseClass$E}__content-icon`]
393
393
  })), /* @__PURE__ */ React.createElement(Text, {
394
394
  as: "div",
395
- className: cx(styles$w[`${baseClass$D}__content-text`], onClose && styles$w[`${baseClass$D}__content-text--margin`])
395
+ className: cx(styles$w[`${baseClass$E}__content-text`], onClose && styles$w[`${baseClass$E}__content-text--margin`])
396
396
  }, children)), onClose && /* @__PURE__ */ React.createElement("button", {
397
397
  type: "button",
398
- className: styles$w[`${baseClass$D}__close-icon`],
398
+ className: styles$w[`${baseClass$E}__close-icon`],
399
399
  onClick: onClose
400
400
  }, /* @__PURE__ */ React.createElement(Icon, {
401
401
  source: Close,
@@ -459,7 +459,7 @@ var styles$v = {
459
459
  "avatar--xlarge": "lc-Avatar-module__avatar--xlarge___zwgeW",
460
460
  "avatar--xxlarge": "lc-Avatar-module__avatar--xxlarge___Ur0ul"
461
461
  };
462
- const baseClass$C = "avatar";
462
+ const baseClass$D = "avatar";
463
463
  const defaultBackgroundColor = "var(--surface-basic-disabled)";
464
464
  const defaultFontColor = "var(--content-subtle)";
465
465
  const Avatar = ({
@@ -483,15 +483,15 @@ const Avatar = ({
483
483
  const backgroundColor = color || defaultBackgroundColor;
484
484
  const fontColor = color ? getFontColor(color) : defaultFontColor;
485
485
  const mergedClassNames = cx({
486
- [styles$v[baseClass$C]]: true,
487
- [styles$v[`${baseClass$C}--${shape}`]]: true,
488
- [styles$v[`${baseClass$C}--${size}`]]: true,
489
- [styles$v[`${baseClass$C}--with-rim`]]: withRim,
486
+ [styles$v[baseClass$D]]: true,
487
+ [styles$v[`${baseClass$D}--${shape}`]]: true,
488
+ [styles$v[`${baseClass$D}--${size}`]]: true,
489
+ [styles$v[`${baseClass$D}--with-rim`]]: withRim,
490
490
  [`${className}`]: className
491
491
  });
492
- const mergedStatusClassNames = cx(styles$v[`${baseClass$C}__status`], styles$v[`${baseClass$C}__status--${shape}`], styles$v[`${baseClass$C}__status--${size}`], styles$v[`${baseClass$C}__status--${status}`]);
493
- const mergedIconClassNames = cx(styles$v[`${baseClass$C}__icon`], styles$v[`${baseClass$C}__icon--${size}`]);
494
- const mergedRimClassNames = cx(styles$v[`${baseClass$C}__rim`], styles$v[`${baseClass$C}__rim--${size}`]);
492
+ const mergedStatusClassNames = cx(styles$v[`${baseClass$D}__status`], styles$v[`${baseClass$D}__status--${shape}`], styles$v[`${baseClass$D}__status--${size}`], styles$v[`${baseClass$D}__status--${status}`]);
493
+ const mergedIconClassNames = cx(styles$v[`${baseClass$D}__icon`], styles$v[`${baseClass$D}__icon--${size}`]);
494
+ const mergedRimClassNames = cx(styles$v[`${baseClass$D}__rim`], styles$v[`${baseClass$D}__rim--${size}`]);
495
495
  const handleError = React.useCallback(() => setShouldDisplayFallbackAvatar(true), []);
496
496
  React.useEffect(() => {
497
497
  setShouldDisplayFallbackAvatar(isImproperImageSetup);
@@ -500,20 +500,20 @@ const Avatar = ({
500
500
  className: mergedClassNames,
501
501
  style: { backgroundColor }
502
502
  }, withRim && /* @__PURE__ */ React.createElement("div", {
503
- "data-testid": `${baseClass$C}__rim`,
503
+ "data-testid": `${baseClass$D}__rim`,
504
504
  className: mergedRimClassNames
505
505
  }), status && /* @__PURE__ */ React.createElement("div", {
506
- "data-testid": `${baseClass$C}__status`,
506
+ "data-testid": `${baseClass$D}__status`,
507
507
  className: mergedStatusClassNames
508
508
  }), shouldDisplayImage && /* @__PURE__ */ React.createElement("img", {
509
- className: styles$v[`${baseClass$C}__image`],
509
+ className: styles$v[`${baseClass$D}__image`],
510
510
  src,
511
511
  alt,
512
512
  onError: handleError
513
513
  }), shouldDisplayInitials && /* @__PURE__ */ React.createElement("span", {
514
514
  style: { color: fontColor }
515
515
  }, initials), shouldDisplayFallbackAvatar && /* @__PURE__ */ React.createElement(Icon, {
516
- "data-testid": `${baseClass$C}__icon`,
516
+ "data-testid": `${baseClass$D}__icon`,
517
517
  className: mergedIconClassNames,
518
518
  source: Person,
519
519
  kind: "primary"
@@ -534,7 +534,7 @@ var styles$u = {
534
534
  function formatCount(count, max) {
535
535
  return count > max ? `${max}+` : `${count}`;
536
536
  }
537
- const baseClass$B = "badge";
537
+ const baseClass$C = "badge";
538
538
  const Badge = (_e) => {
539
539
  var _f = _e, {
540
540
  className,
@@ -551,12 +551,12 @@ const Badge = (_e) => {
551
551
  "size",
552
552
  "type"
553
553
  ]);
554
- const mergedClassNames = cx(className, styles$u[baseClass$B], styles$u[`${baseClass$B}--${kind}`], styles$u[`${baseClass$B}--${size}`]);
554
+ const mergedClassNames = cx(className, styles$u[baseClass$C], styles$u[`${baseClass$C}--${kind}`], styles$u[`${baseClass$C}--${size}`]);
555
555
  const content = {
556
556
  ["counter"]: formatCount(count, max),
557
557
  ["alert"]: "!",
558
558
  ["dot"]: /* @__PURE__ */ React.createElement("span", {
559
- className: styles$u[`${baseClass$B}__dot`]
559
+ className: styles$u[`${baseClass$C}__dot`]
560
560
  })
561
561
  }[type];
562
562
  return /* @__PURE__ */ React.createElement("span", __spreadValues({
@@ -577,8 +577,8 @@ var styles$t = {
577
577
  rotate,
578
578
  loader__label
579
579
  };
580
- const baseClass$A = "loader";
581
- const spinnerClass = `${baseClass$A}__spinner`;
580
+ const baseClass$B = "loader";
581
+ const spinnerClass = `${baseClass$B}__spinner`;
582
582
  const Loader = ({
583
583
  primaryColor,
584
584
  secondaryColor,
@@ -587,7 +587,7 @@ const Loader = ({
587
587
  size = "medium"
588
588
  }) => {
589
589
  return /* @__PURE__ */ React.createElement("div", {
590
- className: cx(styles$t[baseClass$A], className)
590
+ className: cx(styles$t[baseClass$B], className)
591
591
  }, /* @__PURE__ */ React.createElement("div", {
592
592
  className: cx(styles$t[spinnerClass], styles$t[`${spinnerClass}--${size}`])
593
593
  }, /* @__PURE__ */ React.createElement("div", {
@@ -627,7 +627,7 @@ var styles$s = {
627
627
  btn__content,
628
628
  btn__icon
629
629
  };
630
- const baseClass$z = "btn";
630
+ const baseClass$A = "btn";
631
631
  const Button = (_g) => {
632
632
  var _h = _g, {
633
633
  loading = false,
@@ -658,11 +658,11 @@ const Button = (_g) => {
658
658
  ]);
659
659
  const isDisabled = loading || disabled;
660
660
  const Component = href ? "a" : "button";
661
- const mergedClassNames = cx(className, styles$s[baseClass$z], styles$s[`${baseClass$z}--${kind}`], styles$s[`${baseClass$z}--${size}`], {
662
- [styles$s[`${baseClass$z}--loading`]]: loading,
663
- [styles$s[`${baseClass$z}--full-width`]]: fullWidth,
664
- [styles$s[`${baseClass$z}--icon-only`]]: !children && icon2,
665
- [styles$s[`${baseClass$z}--disabled`]]: isDisabled
661
+ const mergedClassNames = cx(className, styles$s[baseClass$A], styles$s[`${baseClass$A}--${kind}`], styles$s[`${baseClass$A}--${size}`], {
662
+ [styles$s[`${baseClass$A}--loading`]]: loading,
663
+ [styles$s[`${baseClass$A}--full-width`]]: fullWidth,
664
+ [styles$s[`${baseClass$A}--icon-only`]]: !children && icon2,
665
+ [styles$s[`${baseClass$A}--disabled`]]: isDisabled
666
666
  });
667
667
  return /* @__PURE__ */ React.createElement(Component, __spreadValues({
668
668
  className: mergedClassNames,
@@ -672,12 +672,12 @@ const Button = (_g) => {
672
672
  }, props), loading && /* @__PURE__ */ React.createElement(Loader, {
673
673
  size: "small",
674
674
  label: loaderLabel,
675
- className: styles$s[`${baseClass$z}__loader`]
675
+ className: styles$s[`${baseClass$A}__loader`]
676
676
  }), icon2 && React.cloneElement(icon2, {
677
- className: cx(styles$s[`${baseClass$z}__icon`], styles$s[`${baseClass$z}__icon--${iconPosition}`]),
677
+ className: cx(styles$s[`${baseClass$A}__icon`], styles$s[`${baseClass$A}__icon--${iconPosition}`]),
678
678
  disabled
679
679
  }), /* @__PURE__ */ React.createElement("div", {
680
- className: styles$s[`${baseClass$z}__content`]
680
+ className: styles$s[`${baseClass$A}__content`]
681
681
  }, children));
682
682
  };
683
683
  const btn = "lc-ButtonGroup-module__btn___bXPrU";
@@ -691,7 +691,7 @@ var styles$r = {
691
691
  };
692
692
  function noop() {
693
693
  }
694
- const baseClass$y = "btn-group";
694
+ const baseClass$z = "btn-group";
695
695
  const ButtonGroup = (_i) => {
696
696
  var _j = _i, {
697
697
  size = "medium",
@@ -710,7 +710,7 @@ const ButtonGroup = (_i) => {
710
710
  "currentIndex",
711
711
  "initialIndex"
712
712
  ]);
713
- const mergedClassName = cx(styles$r[baseClass$y], className);
713
+ const mergedClassName = cx(styles$r[baseClass$z], className);
714
714
  const [currentStateIndex, setCurrentStateIndex] = React.useState(initialIndex);
715
715
  const isControlled = typeof currentIndex === "number";
716
716
  const _currentIndex = isControlled ? currentIndex : currentStateIndex;
@@ -738,41 +738,102 @@ const ButtonGroup = (_i) => {
738
738
  })));
739
739
  };
740
740
  const card = "lc-Card-module__card___GqMm2";
741
- const card__title = "lc-Card-module__card__title___1YjAR";
742
- const card__text = "lc-Card-module__card__text___-jYlF";
743
- const card__img = "lc-Card-module__card__img___teLC8";
741
+ const card__header = "lc-Card-module__card__header___0ptfD";
742
+ const card__header__image = "lc-Card-module__card__header__image___QMwSu";
743
+ const card__header__heading = "lc-Card-module__card__header__heading___Wkikx";
744
+ const card__header__heading__title = "lc-Card-module__card__header__heading__title___Uxi8s";
745
+ const card__header__heading__description = "lc-Card-module__card__header__heading__description___6LnOK";
746
+ const card__content = "lc-Card-module__card__content___KuDcc";
747
+ const card__actions = "lc-Card-module__card__actions___q9sAo";
748
+ const card__actions__line = "lc-Card-module__card__actions__line___TF1bt";
749
+ const card__actions__buttons = "lc-Card-module__card__actions__buttons___PDMMR";
744
750
  var styles$q = {
745
751
  card,
746
- card__title,
747
- card__text,
748
- card__img
749
- };
752
+ card__header,
753
+ card__header__image,
754
+ card__header__heading,
755
+ card__header__heading__title,
756
+ card__header__heading__description,
757
+ card__content,
758
+ "card__expanded-content": "lc-Card-module__card__expanded-content___yB-QL",
759
+ card__actions,
760
+ card__actions__line,
761
+ card__actions__buttons,
762
+ "card__actions__buttons-expander": "lc-Card-module__card__actions__buttons-expander___lz4h-"
763
+ };
764
+ const baseClass$y = "card";
765
+ const headerClass = `${baseClass$y}__header`;
766
+ const headingClass = `${headerClass}__heading`;
767
+ const actionsClass = `${baseClass$y}__actions`;
750
768
  const Card = (_k) => {
751
769
  var _l = _k, {
752
- img,
753
- title,
770
+ alt,
771
+ buttonsOptions = [],
754
772
  children,
755
- className
756
- } = _l, restProps = __objRest(_l, [
757
- "img",
758
- "title",
773
+ className,
774
+ description,
775
+ expandableContent,
776
+ src,
777
+ title
778
+ } = _l, divProps = __objRest(_l, [
779
+ "alt",
780
+ "buttonsOptions",
759
781
  "children",
760
- "className"
782
+ "className",
783
+ "description",
784
+ "expandableContent",
785
+ "src",
786
+ "title"
761
787
  ]);
762
- return /* @__PURE__ */ React.createElement(Text, __spreadValues({
788
+ const [isExpanded, setIsExpanded] = React.useState(false);
789
+ const expandIcon = isExpanded ? ChevronUp : ChevronDown;
790
+ const expandButtonText = isExpanded ? "Hide" : "Show more";
791
+ const shouldShowActionButtons = (buttonsOptions == null ? void 0 : buttonsOptions.length) > 0;
792
+ const shouldShowExpandAction = !!expandableContent;
793
+ const shouldShowActions = shouldShowActionButtons || shouldShowExpandAction;
794
+ return /* @__PURE__ */ React.createElement("div", __spreadValues({
795
+ className: cx(styles$q[baseClass$y], className)
796
+ }, divProps), /* @__PURE__ */ React.createElement("div", {
797
+ className: styles$q[headerClass]
798
+ }, src && /* @__PURE__ */ React.createElement("img", {
799
+ alt,
800
+ className: styles$q[`${headerClass}__image`],
801
+ src
802
+ }), /* @__PURE__ */ React.createElement("div", {
803
+ className: styles$q[headingClass]
804
+ }, /* @__PURE__ */ React.createElement(Heading, {
805
+ size: "sm",
806
+ className: styles$q[`${headingClass}__title`]
807
+ }, title), /* @__PURE__ */ React.createElement(Text, {
808
+ size: "sm",
809
+ className: styles$q[`${headingClass}__description`]
810
+ }, description))), /* @__PURE__ */ React.createElement(Text, {
763
811
  as: "div",
764
812
  size: "md",
765
- className: cx(styles$q["card"], className)
766
- }, restProps), (img || title) && /* @__PURE__ */ React.createElement(Heading, {
813
+ className: styles$q[`${baseClass$y}__content`]
814
+ }, children), isExpanded && /* @__PURE__ */ React.createElement(Text, {
767
815
  as: "div",
768
- size: "sm",
769
- className: styles$q["card__title"]
770
- }, img && /* @__PURE__ */ React.createElement("img", {
771
- src: img,
772
- className: styles$q["card__img"]
773
- }), title && /* @__PURE__ */ React.createElement("div", {
774
- className: styles$q["card__text"]
775
- }, title)), children);
816
+ size: "md",
817
+ className: styles$q[`${baseClass$y}__expanded-content`]
818
+ }, expandableContent), shouldShowActions && /* @__PURE__ */ React.createElement("div", {
819
+ className: styles$q[actionsClass]
820
+ }, /* @__PURE__ */ React.createElement("div", {
821
+ className: styles$q[`${actionsClass}__line`]
822
+ }), /* @__PURE__ */ React.createElement("div", {
823
+ className: styles$q[`${actionsClass}__buttons`]
824
+ }, shouldShowActionButtons && buttonsOptions.map(({ kind, onClick, children: buttonChildren }) => /* @__PURE__ */ React.createElement(Button, {
825
+ size: "compact",
826
+ kind,
827
+ onClick
828
+ }, buttonChildren)), shouldShowExpandAction && /* @__PURE__ */ React.createElement(Button, {
829
+ className: styles$q[`${actionsClass}__buttons-expander`],
830
+ kind: "plain",
831
+ iconPosition: "right",
832
+ icon: /* @__PURE__ */ React.createElement(Icon, {
833
+ source: expandIcon
834
+ }),
835
+ onClick: () => setIsExpanded(!isExpanded)
836
+ }, expandButtonText))));
776
837
  };
777
838
  var styles$p = {
778
839
  "field-description": "lc-FieldDescription-module__field-description___IcRDH"