import React from 'react'; import clsx from 'clsx'; import {ThemeClassNames} from '@docusaurus/theme-common'; import Translate from '@docusaurus/Translate'; import styles from './styles.module.css'; function NoteIcon() { return ( ); } function TipIcon() { return ( ); } function DangerIcon() { return ( ); } function InfoIcon() { return ( ); } function CautionIcon() { return ( ); } // eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style const AdmonitionConfigs = { note: { infimaClassName: 'secondary', iconComponent: NoteIcon, label: ( note ), }, tip: { infimaClassName: 'success', iconComponent: TipIcon, label: ( tip ), }, danger: { infimaClassName: 'danger', iconComponent: DangerIcon, label: ( danger ), }, info: { infimaClassName: 'info', iconComponent: InfoIcon, label: ( info ), }, caution: { infimaClassName: 'warning', iconComponent: CautionIcon, label: ( caution ), }, }; // Legacy aliases, undocumented but kept for retro-compatibility const aliases = { secondary: 'note', important: 'info', success: 'tip', warning: 'danger', }; function getAdmonitionConfig(unsafeType) { const type = aliases[unsafeType] ?? unsafeType; const config = AdmonitionConfigs[type]; if (config) { return config; } console.warn( `No admonition config found for admonition type "${type}". Using Info as fallback.`, ); return AdmonitionConfigs.info; } // Workaround because it's difficult in MDX v1 to provide a MDX title as props // See https://github.com/facebook/docusaurus/pull/7152#issuecomment-1145779682 function extractMDXAdmonitionTitle(children) { const items = React.Children.toArray(children); const mdxAdmonitionTitle = items.find( (item) => React.isValidElement(item) && item.props?.mdxType === 'mdxAdmonitionTitle', ); const rest = <>{items.filter((item) => item !== mdxAdmonitionTitle)}; return { mdxAdmonitionTitle, rest, }; } function processAdmonitionProps(props) { const {mdxAdmonitionTitle, rest} = extractMDXAdmonitionTitle(props.children); return { ...props, title: props.title ?? mdxAdmonitionTitle, children: rest, }; } export default function Admonition(props) { const {children, type, title, icon: iconProp} = processAdmonitionProps(props); const typeConfig = getAdmonitionConfig(type); const titleLabel = title ?? typeConfig.label; const {iconComponent: IconComponent} = typeConfig; const icon = iconProp ?? ; return (
{titleLabel == "pass" ? void 0 : (
{icon} {titleLabel}
)}
{children}
); } /* See docusaurus issue 8568 -- this was swizzled against 2.4.1 */