{"version":3,"file":"Link.cjs","names":["_react","require","_i18n","_index","_ScreenReaderText","_jsxRuntime","_interopRequireDefault","e","__esModule","default","linkVariantValues","exports","Link","ariaLabel","children","href","id","icon","linkRef","rel","target","testId","translate","variant","onClick","t","useTranslation","localLinkRef","useRef","useImperativeHandle","focus","current","handleClick","useCallback","event","preventDefault","jsxs","_Link2","undefined","ref","jsx","className","Fragment","ScreenReaderText","role","ExternalLinkIcon","MemoizedLink","memo","displayName"],"sources":["../../src/Link.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-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 { Link as MuiLink, LinkProps as MuiLinkProps } from \"@mui/material\";\nimport {\n  memo,\n  ReactElement,\n  ReactNode,\n  RefObject,\n  useCallback,\n  useImperativeHandle,\n  useRef,\n} from \"react\";\n\nimport type { HtmlProps } from \"./HtmlProps.js\";\n\nimport { useTranslation } from \"./i18n.generated/i18n.js\";\nimport { ExternalLinkIcon } from \"./icons.generated/index.js\";\nimport { FocusHandle } from \"./inputUtils.js\";\nimport { ScreenReaderText } from \"./ScreenReaderText.js\";\n\nexport const linkVariantValues = [\"default\", \"monochrome\"] as const;\n\nexport type LinkProps = {\n  /**\n   * The content within the Link\n   */\n  children: ReactNode;\n  /**\n   * The Link destination\n   */\n  href: string;\n  /**\n   * An optional Icon component at the start of the Link\n   */\n  icon?: ReactElement;\n  /**\n   * Ref attached to the underlying <a> element.\n   */\n  linkRef?: RefObject<FocusHandle>;\n  /**\n   * Called when the link is clicked.\n   */\n  onClick?: MuiLinkProps[\"onClick\"];\n  /**\n   * The rel attribute defines the relationship between a linked resource and the current document\n   *\n   * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel\n   */\n  rel?: string;\n  /**\n   * The HTML `target` attribute for the Link\n   */\n  target?:\n    | \"_self\"\n    | \"_blank\"\n    | \"_parent\"\n    | \"_top\"\n    | (string & NonNullable<unknown>);\n  /**\n   * Controls the visual presentation of the link.\n   * - If `'default'`, renders in the brand link color.\n   * - If `'monochrome'`, renders in the current text color; use on colored backgrounds where the default color would clash.\n   */\n  variant?: (typeof linkVariantValues)[number];\n} & Pick<HtmlProps, \"ariaLabel\" | \"id\" | \"testId\" | \"translate\">;\n\n/**\n * A navigational element that renders an anchor tag. Supports internal and external links, an optional leading icon, and automatically appends an external link indicator when opening in a new tab.\n */\nconst Link = ({\n  ariaLabel,\n  children,\n  href,\n  id,\n  icon,\n  linkRef,\n  rel,\n  target,\n  testId,\n  translate,\n  variant,\n  onClick,\n}: LinkProps) => {\n  const { t } = useTranslation();\n  const localLinkRef = useRef<HTMLAnchorElement>(null);\n  useImperativeHandle(linkRef, () => {\n    return {\n      focus: () => {\n        localLinkRef.current?.focus();\n      },\n    };\n  }, []);\n\n  const handleClick = useCallback(\n    (event: React.MouseEvent<HTMLAnchorElement>) => {\n      // Prevent default navigation when onClick is provided\n      if (onClick && (href === \"#\" || href === \"\")) {\n        event.preventDefault();\n      }\n      onClick?.(event);\n    },\n    [onClick, href],\n  );\n\n  return (\n    <MuiLink\n      aria-label={ariaLabel}\n      data-se={testId}\n      href={href}\n      id={id}\n      onClick={onClick ? handleClick : undefined}\n      ref={localLinkRef}\n      rel={rel}\n      target={target}\n      translate={translate}\n      variant={variant}\n    >\n      {icon && <span className=\"Link-icon\">{icon}</span>}\n\n      {children}\n\n      {target === \"_blank\" && (\n        <>\n          <ScreenReaderText translate={translate}>\n            {t(\"link.external.newwindow\")}\n          </ScreenReaderText>\n          <span className=\"Link-indicator\" role=\"presentation\">\n            <ExternalLinkIcon />\n          </span>\n        </>\n      )}\n    </MuiLink>\n  );\n};\n\nconst MemoizedLink = memo(Link);\n\nMemoizedLink.displayName = \"Link\";\n\nexport { MemoizedLink as Link };\n"],"mappings":";;;;;;;AAaA,IAAAA,MAAA,GAAAC,OAAA;AAYA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,iBAAA,GAAAH,OAAA;AAAyD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAK,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA5BzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBO,MAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU;AAiDnE,MAAME,IAAI,GAAGA,CAAC;EACZC,SAAS;EACTC,QAAQ;EACRC,IAAI;EACJC,EAAE;EACFC,IAAI;EACJC,OAAO;EACPC,GAAG;EACHC,MAAM;EACNC,MAAM;EACNC,SAAS;EACTC,OAAO;EACPC;AACS,CAAC,KAAK;EACf,MAAM;IAAEC;EAAE,CAAC,GAAG,IAAAC,oBAAc,EAAC,CAAC;EAC9B,MAAMC,YAAY,GAAG,IAAAC,aAAM,EAAoB,IAAI,CAAC;EACpD,IAAAC,0BAAmB,EAACX,OAAO,EAAE,MAAM;IACjC,OAAO;MACLY,KAAK,EAAEA,CAAA,KAAM;QACXH,YAAY,CAACI,OAAO,EAAED,KAAK,CAAC,CAAC;MAC/B;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,KAA0C,IAAK;IAE9C,IAAIV,OAAO,KAAKT,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,EAAE,CAAC,EAAE;MAC5CmB,KAAK,CAACC,cAAc,CAAC,CAAC;IACxB;IACAX,OAAO,GAAGU,KAAK,CAAC;EAClB,CAAC,EACD,CAACV,OAAO,EAAET,IAAI,CAChB,CAAC;EAED,OACE,IAAAV,WAAA,CAAA+B,IAAA,EAAAC,MAAA,CAAA5B,OAAA;IACE,cAAYI,SAAU;IACtB,WAASQ,MAAO;IAChBN,IAAI,EAAEA,IAAK;IACXC,EAAE,EAAEA,EAAG;IACPQ,OAAO,EAAEA,OAAO,GAAGQ,WAAW,GAAGM,SAAU;IAC3CC,GAAG,EAAEZ,YAAa;IAClBR,GAAG,EAAEA,GAAI;IACTC,MAAM,EAAEA,MAAO;IACfE,SAAS,EAAEA,SAAU;IACrBC,OAAO,EAAEA,OAAQ;IAAAT,QAAA,GAEhBG,IAAI,IAAI,IAAAZ,WAAA,CAAAmC,GAAA;MAAMC,SAAS,EAAC,WAAW;MAAA3B,QAAA,EAAEG;IAAI,CAAO,CAAC,EAEjDH,QAAQ,EAERM,MAAM,KAAK,QAAQ,IAClB,IAAAf,WAAA,CAAA+B,IAAA,EAAA/B,WAAA,CAAAqC,QAAA;MAAA5B,QAAA,GACE,IAAAT,WAAA,CAAAmC,GAAA,EAACpC,iBAAA,CAAAuC,gBAAgB;QAACrB,SAAS,EAAEA,SAAU;QAAAR,QAAA,EACpCW,CAAC,CAAC,yBAAyB;MAAC,CACb,CAAC,EACnB,IAAApB,WAAA,CAAAmC,GAAA;QAAMC,SAAS,EAAC,gBAAgB;QAACG,IAAI,EAAC,cAAc;QAAA9B,QAAA,EAClD,IAAAT,WAAA,CAAAmC,GAAA,EAACrC,MAAA,CAAA0C,gBAAgB,IAAE;MAAC,CAChB,CAAC;IAAA,CACP,CACH;EAAA,CACM,CAAC;AAEd,CAAC;AAED,MAAMC,YAAY,GAAAnC,OAAA,CAAAC,IAAA,GAAG,IAAAmC,WAAI,EAACnC,IAAI,CAAC;AAE/BkC,YAAY,CAACE,WAAW,sCAAS","ignoreList":[]}