{"version":3,"file":"NavAccordion.cjs","names":["_styled","_interopRequireDefault","require","_react","_index","_OdysseyDesignTokensContext","_UiShellProvider","_useUniqueId","_SideNavItemContentContext","_jsxRuntime","e","__esModule","default","SideNavAccordionContainer","styled","shouldForwardProp","prop","backgroundColor","fontColor","width","color","AccordionLabelContainer","sideNavContrastColors","odysseyDesignTokens","isIconVisible","marginInlineStart","Spacing3","fontWeight","TypographyWeightBody","TypographyColorHeading","TypographyColorDisabled","itemDisabledFontColor","AccordionSummaryContainer","_AccordionSummary2","isCompact","isDisabled","depth","borderRadius","BorderRadiusMain","paddingBlock","paddingInlineStart","Spacing4","paddingInlineEnd","alignItems","opacity","svg","path","fill","HueNeutral50","itemHoverBackgroundColor","outline","boxShadow","PalettePrimaryMain","focusRingColor","Spacing2","minHeight","NavAccordion","children","label","id","idOverride","isDefaultExpanded","isExpanded","onChange","translate","startIcon","useUniqueId","headerId","contentId","useOdysseyDesignTokens","uiShellContext","useUiShellContext","sideNavItemContentContext","useSideNavItemContent","jsx","sideNavBackgroundColor","jsxs","_Accordion2","className","defaultExpanded","disabled","disableGutters","expanded","expandIcon","ChevronDownIcon","Boolean","_AccordionDetails2","MemoizedNavAccordion","exports","memo","displayName"],"sources":["../../../../src/ui-shell/SideNav/NavAccordion.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n  Accordion as MuiAccordion,\n  AccordionDetails as MuiAccordionDetails,\n  AccordionProps as MuiAccordionProps,\n  AccordionSummary as MuiAccordionSummary,\n} from \"@mui/material\";\nimport { memo, PropsWithChildren, ReactNode } from \"react\";\n\nimport type { HtmlProps } from \"../../HtmlProps.js\";\n\nimport { ContrastColors } from \"../../createContrastColors.js\";\nimport { ChevronDownIcon } from \"../../icons.generated/index.js\";\nimport {\n  DesignTokens,\n  useOdysseyDesignTokens,\n} from \"../../OdysseyDesignTokensContext.js\";\nimport {\n  UiShellColors,\n  useUiShellContext,\n} from \"../../ui-shell/UiShellProvider.js\";\nimport { useUniqueId } from \"../../useUniqueId.js\";\nimport { useSideNavItemContent } from \"./SideNavItemContentContext.js\";\n\nconst SideNavAccordionContainer = styled(\"div\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"backgroundColor\" && prop !== \"fontColor\",\n})<{\n  backgroundColor?: UiShellColors[\"sideNavBackgroundColor\"];\n  fontColor?: ContrastColors[\"fontColor\"];\n}>(({ backgroundColor, fontColor }) => ({\n  width: \"100%\",\n\n  \".MuiAccordion-root\": {\n    backgroundColor: backgroundColor,\n    color: fontColor || \"inherit\",\n  },\n}));\n\nexport type NavAccordionProps = {\n  /**\n   * Defines IDs for the header and the content of the Accordion\n   */\n  id?: string;\n  /**\n   * If `true`, the accordion uses a compact layout with reduced padding.\n   */\n  isCompact?: boolean;\n  /**\n   * If `true`, the accordion item is expanded on initial render.\n   */\n  isDefaultExpanded?: boolean;\n  /**\n   * If `true`, the accordion item is disabled and cannot be expanded or collapsed.\n   */\n  isDisabled?: boolean;\n  /**\n   * If `true`, the accordion item is expanded (controlled).\n   */\n  isExpanded?: boolean;\n  /**\n   * The label text for the AccordionSummary\n   */\n  label: string;\n  /**\n   * Event fired when the expansion state of the accordion is changed\n   */\n  onChange?: MuiAccordionProps[\"onChange\"];\n  /**\n   * The icon element to display at the start of the Nav Item\n   */\n  startIcon?: ReactNode;\n} & Pick<HtmlProps, \"testId\" | \"translate\">;\n\nconst AccordionLabelContainer = styled(\"span\", {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" &&\n    prop !== \"isIconVisible\" &&\n    prop !== \"sideNavContrastColors\",\n})<{\n  isIconVisible: boolean;\n  odysseyDesignTokens: DesignTokens;\n  sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(({ sideNavContrastColors, odysseyDesignTokens, isIconVisible }) => ({\n  width: \"100%\",\n  marginInlineStart: isIconVisible ? odysseyDesignTokens.Spacing3 : 0,\n  fontWeight: odysseyDesignTokens.TypographyWeightBody,\n  color:\n    sideNavContrastColors?.fontColor ||\n    odysseyDesignTokens.TypographyColorHeading,\n\n  \".Mui-disabled &\": {\n    color: odysseyDesignTokens.TypographyColorDisabled,\n\n    ...(sideNavContrastColors?.itemDisabledFontColor && {\n      color: sideNavContrastColors?.itemDisabledFontColor,\n    }),\n  },\n}));\n\nconst AccordionSummaryContainer = styled(MuiAccordionSummary, {\n  shouldForwardProp: (prop) =>\n    prop !== \"odysseyDesignTokens\" &&\n    prop !== \"isCompact\" &&\n    prop !== \"isDisabled\" &&\n    prop !== \"sideNavContrastColors\" &&\n    prop !== \"depth\",\n})<{\n  depth?: number;\n  isCompact?: boolean;\n  isDisabled?: boolean;\n  odysseyDesignTokens: DesignTokens;\n  sideNavContrastColors?: UiShellColors[\"sideNavContrastColors\"];\n}>(\n  ({\n    odysseyDesignTokens,\n    sideNavContrastColors,\n    isCompact,\n    isDisabled,\n    depth = 1,\n  }) => ({\n    borderRadius: odysseyDesignTokens.BorderRadiusMain,\n    paddingBlock: odysseyDesignTokens.Spacing3,\n    paddingInlineStart: `calc(${odysseyDesignTokens.Spacing4} * ${depth})`,\n    paddingInlineEnd: odysseyDesignTokens.Spacing4,\n    alignItems: \"center\",\n\n    \".MuiAccordionSummary-content\": {\n      alignItems: \"center\",\n    },\n\n    ...(isDisabled && {\n      opacity: \"1 !important\",\n\n      ...(sideNavContrastColors?.itemDisabledFontColor && {\n        svg: {\n          path: {\n            fill: `${sideNavContrastColors.itemDisabledFontColor} !important`,\n          },\n        },\n      }),\n    }),\n\n    ...(!isDisabled && {\n      \"&:hover\": {\n        backgroundColor: odysseyDesignTokens.HueNeutral50,\n      },\n    }),\n\n    ...(!isDisabled &&\n      sideNavContrastColors?.fontColor && {\n        svg: {\n          path: {\n            fill: `${sideNavContrastColors.fontColor} !important`,\n          },\n        },\n      }),\n\n    ...(sideNavContrastColors?.itemHoverBackgroundColor && {\n      ...(!isDisabled && {\n        \"&:hover\": {\n          backgroundColor: sideNavContrastColors.itemHoverBackgroundColor,\n        },\n      }),\n    }),\n\n    \"&:focus-visible\": {\n      backgroundColor: \"unset\",\n      outline: \"none\",\n      boxShadow: `inset 0 0 0 2px ${odysseyDesignTokens.PalettePrimaryMain}`,\n\n      ...(sideNavContrastColors?.focusRingColor && {\n        boxShadow: `inset 0 0 0 2px ${sideNavContrastColors.focusRingColor}`,\n      }),\n    },\n\n    ...(isCompact && {\n      paddingBlock: odysseyDesignTokens.Spacing2,\n      minHeight: \"unset\",\n    }),\n  }),\n);\n\nconst NavAccordion = ({\n  children,\n  label,\n  id: idOverride,\n  isCompact,\n  isDefaultExpanded,\n  isDisabled,\n  isExpanded,\n  onChange,\n  translate,\n  startIcon,\n}: PropsWithChildren<NavAccordionProps>) => {\n  const id = useUniqueId(idOverride);\n  const headerId = `${id}-header`;\n  const contentId = `${id}-content`;\n  const odysseyDesignTokens = useOdysseyDesignTokens();\n  const uiShellContext = useUiShellContext();\n  const sideNavItemContentContext = useSideNavItemContent();\n\n  return (\n    <SideNavAccordionContainer\n      backgroundColor={uiShellContext?.sideNavBackgroundColor}\n    >\n      <MuiAccordion\n        className=\"nav-accordion\"\n        defaultExpanded={isDefaultExpanded}\n        disabled={isDisabled}\n        disableGutters\n        expanded={isExpanded}\n        onChange={onChange}\n      >\n        <AccordionSummaryContainer\n          aria-controls={contentId}\n          className=\"nav-accordion-summary\"\n          depth={sideNavItemContentContext.depth}\n          expandIcon={<ChevronDownIcon />}\n          id={headerId}\n          isCompact={isCompact}\n          isDisabled={isDisabled}\n          odysseyDesignTokens={odysseyDesignTokens}\n          sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n        >\n          {startIcon && startIcon}\n          <AccordionLabelContainer\n            isIconVisible={Boolean(startIcon)}\n            odysseyDesignTokens={odysseyDesignTokens}\n            sideNavContrastColors={uiShellContext?.sideNavContrastColors}\n            translate={translate}\n          >\n            {label}\n          </AccordionLabelContainer>\n        </AccordionSummaryContainer>\n        <MuiAccordionDetails\n          aria-labelledby={headerId}\n          className=\"nav-accordion-details\"\n        >\n          {children}\n        </MuiAccordionDetails>\n      </MuiAccordion>\n    </SideNavAccordionContainer>\n  );\n};\n\nconst MemoizedNavAccordion = memo(NavAccordion);\nMemoizedNavAccordion.displayName = \"NavAccordion\";\n\nexport { MemoizedNavAccordion as NavAccordion };\n"],"mappings":"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","ignoreList":[]}