{"version":3,"sources":["../../src/Markdown.tsx"],"sourcesContent":["import React from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport styled from \"styled-components\";\nimport {\n  useResolvedTheme,\n  ThemeColors,\n  type ThemeOverrideProps,\n} from \"@xsolla/xui-core\";\n\ntype MarkdownSpacing = { paddingTop: number; paddingBottom: number };\n\ninterface MarkdownContainerProps {\n  themeColors: ThemeColors;\n  fonts: { primary: string; heading?: string; body?: string };\n  /**\n   * Block paddings from `theme.sizing.markdown()` (Figma\n   * `markdown/{element}/padding-top|bottom`).\n   */\n  sizing: {\n    h1: MarkdownSpacing;\n    h2: MarkdownSpacing;\n    h3: MarkdownSpacing;\n    h4: MarkdownSpacing;\n    p: MarkdownSpacing;\n    image: MarkdownSpacing;\n  };\n  testID?: string;\n  /** Test ID for testing frameworks (web) */\n  \"data-testid\"?: string;\n}\n\nconst MarkdownContainer = styled.div<MarkdownContainerProps>`\n  color: ${(props) => props.themeColors?.content?.primary || \"white\"};\n  font-family: ${(props) =>\n    props.fonts?.body || props.fonts?.primary || \"sans-serif\"};\n\n  h1,\n  h2,\n  h3,\n  h4 {\n    font-family: ${(props) =>\n      props.fonts?.heading || props.fonts?.primary || \"sans-serif\"};\n  }\n\n  h1 {\n    font-size: 40px;\n    font-weight: 700;\n    line-height: 48px;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.h1.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.h1.paddingBottom}px;\n  }\n\n  h2 {\n    font-size: 32px;\n    font-weight: 700;\n    line-height: 38px;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.h2.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.h2.paddingBottom}px;\n  }\n\n  h3 {\n    font-size: 28px;\n    font-weight: 700;\n    line-height: 34px;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.h3.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.h3.paddingBottom}px;\n  }\n\n  h4 {\n    font-size: 24px;\n    font-weight: 700;\n    line-height: 28px;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.h4.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.h4.paddingBottom}px;\n  }\n\n  p {\n    font-size: 16px;\n    font-weight: 400;\n    line-height: 22px;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.p.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.p.paddingBottom}px;\n  }\n\n  img {\n    max-width: 100%;\n    height: auto;\n    display: block;\n    margin: 0;\n    padding-top: ${(props) => props.sizing.image.paddingTop}px;\n    padding-bottom: ${(props) => props.sizing.image.paddingBottom}px;\n  }\n\n  ul,\n  ol {\n    margin: 8px 0;\n    padding-left: 24px;\n  }\n\n  li {\n    font-size: 16px;\n    line-height: 22px;\n    margin-bottom: 4px;\n  }\n\n  code {\n    background: rgba(255, 255, 255, 0.1);\n    padding: 2px 4px;\n    border-radius: 4px;\n    font-family: monospace;\n  }\n\n  pre {\n    background: rgba(255, 255, 255, 0.05);\n    padding: 16px;\n    border-radius: 8px;\n    overflow-x: auto;\n    margin: 16px 0;\n\n    code {\n      background: none;\n      padding: 0;\n    }\n  }\n\n  blockquote {\n    border-left: 4px solid\n      ${(props) => props.themeColors?.border?.brand || \"#66e6ff\"};\n    margin: 16px 0;\n    padding: 8px 16px;\n    background: rgba(102, 230, 255, 0.05);\n\n    p {\n      padding-bottom: 0;\n    }\n  }\n\n  a {\n    color: ${(props) => props.themeColors?.control?.link?.primary || \"#66e6ff\"};\n    text-decoration: none;\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n`;\n\nexport interface MarkdownProps extends ThemeOverrideProps {\n  children: string;\n  className?: string;\n  testID?: string;\n}\n\n/**\n * Renders markdown with theme-aware typography.\n *\n * Block spacing for headings (h1–h4), paragraphs and images comes from\n * `theme.sizing.markdown()` and is applied as padding (margins are zeroed),\n * matching the Figma `markdown/*` padding tokens.\n */\nexport const Markdown: React.FC<MarkdownProps> = ({\n  children,\n  className,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n  return (\n    <MarkdownContainer\n      className={className}\n      themeColors={theme.colors}\n      fonts={theme.fonts}\n      sizing={theme.sizing.markdown()}\n      data-testid={testID}\n    >\n      <ReactMarkdown>{children}</ReactMarkdown>\n    </MarkdownContainer>\n  );\n};\n"],"mappings":";AACA,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB;AAAA,EACE;AAAA,OAGK;AA8KD;AAtJN,IAAM,oBAAoB,OAAO;AAAA,WACtB,CAAC,UAAU,MAAM,aAAa,SAAS,WAAW,OAAO;AAAA,iBACnD,CAAC,UACd,MAAM,OAAO,QAAQ,MAAM,OAAO,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAM1C,CAAC,UACd,MAAM,OAAO,WAAW,MAAM,OAAO,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ/C,CAAC,UAAU,MAAM,OAAO,GAAG,UAAU;AAAA,sBAClC,CAAC,UAAU,MAAM,OAAO,GAAG,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ3C,CAAC,UAAU,MAAM,OAAO,GAAG,UAAU;AAAA,sBAClC,CAAC,UAAU,MAAM,OAAO,GAAG,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ3C,CAAC,UAAU,MAAM,OAAO,GAAG,UAAU;AAAA,sBAClC,CAAC,UAAU,MAAM,OAAO,GAAG,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ3C,CAAC,UAAU,MAAM,OAAO,GAAG,UAAU;AAAA,sBAClC,CAAC,UAAU,MAAM,OAAO,GAAG,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ3C,CAAC,UAAU,MAAM,OAAO,EAAE,UAAU;AAAA,sBACjC,CAAC,UAAU,MAAM,OAAO,EAAE,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAQ1C,CAAC,UAAU,MAAM,OAAO,MAAM,UAAU;AAAA,sBACrC,CAAC,UAAU,MAAM,OAAO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAqCzD,CAAC,UAAU,MAAM,aAAa,QAAQ,SAAS,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAWnD,CAAC,UAAU,MAAM,aAAa,SAAS,MAAM,WAAW,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBvE,IAAM,WAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,MAAM,IAAI,iBAAiB,EAAE,WAAW,oBAAoB,CAAC;AAErE,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM,OAAO,SAAS;AAAA,MAC9B,eAAa;AAAA,MAEb,8BAAC,iBAAe,UAAS;AAAA;AAAA,EAC3B;AAEJ;","names":[]}