{"version":3,"file":"index20.mjs","sources":["../src/components/navigation/sidebar/index.tsx"],"sourcesContent":["import { FunctionComponent, useEffect, useState } from \"react\";\nimport styles from \"./NavigationSideBar.module.css\";\n\nimport MenuSideBarAtom, {\n  MenuSideBarAtomType,\n} from \"../../../../src/atoms/menu/side\";\nimport IconButton from \"../../buttons/icon\";\nimport {\n  LabelPairedChevronLeftSmBoldIcon,\n  LabelPairedChevronRightSmBoldIcon,\n} from \"@deriv/quill-icons\";\n\nexport type NavigationSideBarType = {\n  className?: string;\n  onChange?: (item: MenuSideBarAtomType) => void;\n  items: MenuSideBarAtomType[][];\n  stickyItems: MenuSideBarAtomType[];\n  type?: \"expandable\" | \"fixed\";\n  selected?: MenuSideBarAtomType;\n  expanded?: boolean;\n};\n\nexport const NavigationSideBar: FunctionComponent<NavigationSideBarType> = ({\n  className = \"\",\n  onChange,\n  items = [],\n  stickyItems = [],\n  type = \"expandable\",\n  selected: externalSelected,\n  expanded: externalExpanded = true,\n}) => {\n  const [selected, setSelected] = useState(externalSelected);\n  const [expanded, setExpanded] = useState(externalExpanded);\n  const [compress, setCompress] = useState(false);\n\n  const handleExpand = () => {\n    const timer = !expanded ? 0 : 500;\n    setExpanded((prev) => !prev);\n    setTimeout(() => {\n      setCompress((prev) => !prev);\n    }, timer);\n  };\n\n  const handleClick = (item: MenuSideBarAtomType) => {\n    setSelected(item);\n    onChange?.(item);\n  };\n\n  useEffect(() => {\n    setSelected(externalSelected);\n  }, [externalSelected]);\n\n  return (\n    <div\n      className={[\n        styles.root,\n        \"quill-ui-next-component\",\n        \"quill-ui-next-no-select\",\n        className,\n      ].join(\" \")}\n      data-type={type}\n      data-is-expanded={expanded ? \"yes\" : \"no\"}\n    >\n      <div className={styles.menuContainer}>\n        {items.map((group, groupIdx) => (\n          <>\n            <div className={styles.menuGroupContainer}>\n              {group.map((item, idx) => (\n                <MenuSideBarAtom\n                  key={`${item.label ?? \"\"}-${idx}`}\n                  label={compress && type === \"expandable\" ? \"\" : item?.label}\n                  icon={item?.icon}\n                  iconSelected={item?.iconSelected}\n                  onClick={() => handleClick(item)}\n                  isSelected={selected === item}\n                  badgeLabel={item?.badgeLabel}\n                  direction={type === \"expandable\" ? \"row\" : \"column\"}\n                  expanded={type === \"expandable\" && !compress}\n                />\n              ))}\n            </div>\n            {groupIdx !== items.length - 1 && (\n              <div className={styles.divider} />\n            )}\n          </>\n        ))}\n      </div>\n\n      {type === \"fixed\" && stickyItems.length > 0 && (\n        <div\n          className={[styles.stickyContainer, styles.menuGroupContainer].join(\" \")}\n        >\n          <div className={styles.divider} />\n          {stickyItems.map((item, idx) => (\n            <MenuSideBarAtom key={`${item.label ?? \"\"}-${idx}`} {...item} />\n          ))}\n        </div>\n      )}\n\n      {type === \"expandable\" && (\n        <div\n          className={`${styles.bottomContainer} ${\n            !compress && styles.bottomContainerExpanded\n          }`}\n        >\n          <IconButton\n            icon={\n              expanded ? (\n                <LabelPairedChevronLeftSmBoldIcon />\n              ) : (\n                <LabelPairedChevronRightSmBoldIcon />\n              )\n            }\n            color=\"blackWhite\"\n            style=\"tertiary\"\n            onClick={handleExpand}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nNavigationSideBar.displayName = \"NavigationSideBar\";\n\nexport default NavigationSideBar;\n"],"names":[],"mappings":";;;;;;AAsBO,MAAM,oBAA8D,CAAC;AAAA,EAC1E,YAAY;AAAA,EACZ;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,cAAc,CAAC;AAAA,EACf,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU,mBAAmB;AAC/B,MAAM;AACJ,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,gBAAgB;AACzD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,gBAAgB;AACzD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,QAAM,eAAe,MAAM;AACnB,UAAA,QAAQ,CAAC,WAAW,IAAI;AAClB,gBAAA,CAAC,SAAS,CAAC,IAAI;AAC3B,eAAW,MAAM;AACH,kBAAA,CAAC,SAAS,CAAC,IAAI;AAAA,OAC1B,KAAK;AAAA,EACV;AAEM,QAAA,cAAc,CAAC,SAA8B;AACjD,gBAAY,IAAI;AAChB,yCAAW;AAAA,EACb;AAEA,YAAU,MAAM;AACd,gBAAY,gBAAgB;AAAA,EAAA,GAC3B,CAAC,gBAAgB,CAAC;AAGnB,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EACA,KAAK,GAAG;AAAA,MACV,aAAW;AAAA,MACX,oBAAkB,WAAW,QAAQ;AAAA,MAErC,UAAA;AAAA,QAAC,oBAAA,OAAA,EAAI,WAAW,OAAO,eACpB,gBAAM,IAAI,CAAC,OAAO,aAEf,qBAAA,UAAA,EAAA,UAAA;AAAA,UAAC,oBAAA,OAAA,EAAI,WAAW,OAAO,oBACpB,gBAAM,IAAI,CAAC,MAAM,QAChB;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,OAAO,YAAY,SAAS,eAAe,KAAK,6BAAM;AAAA,cACtD,MAAM,6BAAM;AAAA,cACZ,cAAc,6BAAM;AAAA,cACpB,SAAS,MAAM,YAAY,IAAI;AAAA,cAC/B,YAAY,aAAa;AAAA,cACzB,YAAY,6BAAM;AAAA,cAClB,WAAW,SAAS,eAAe,QAAQ;AAAA,cAC3C,UAAU,SAAS,gBAAgB,CAAC;AAAA,YAAA;AAAA,YAR/B,GAAG,KAAK,SAAS,EAAE,IAAI,GAAG;AAAA,UAUlC,CAAA,GACH;AAAA,UACC,aAAa,MAAM,SAAS,yBAC1B,OAAI,EAAA,WAAW,OAAO,QAAS,CAAA;AAAA,QAAA,EAEpC,CAAA,CACD,EACH,CAAA;AAAA,QAEC,SAAS,WAAW,YAAY,SAAS,KACxC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,CAAC,OAAO,iBAAiB,OAAO,kBAAkB,EAAE,KAAK,GAAG;AAAA,YAEvE,UAAA;AAAA,cAAC,oBAAA,OAAA,EAAI,WAAW,OAAO,QAAS,CAAA;AAAA,cAC/B,YAAY,IAAI,CAAC,MAAM,4BACrB,iBAAoD,EAAA,GAAG,KAAlC,GAAA,GAAG,KAAK,SAAS,EAAE,IAAI,GAAG,EAAc,CAC/D;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,QAGD,SAAS,gBACR;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,GAAG,OAAO,eAAe,IAClC,CAAC,YAAY,OAAO,uBACtB;AAAA,YAEA,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MACE,WACE,oBAAC,kCAAiC,CAAA,CAAA,wBAEjC,mCAAkC,EAAA;AAAA,gBAGvC,OAAM;AAAA,gBACN,OAAM;AAAA,gBACN,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,UACX;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;AAEJ;AAEA,kBAAkB,cAAc;"}