@mintlify/msft-sdk 1.1.55 → 1.1.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34,13 +34,13 @@ const b = {
34
34
  warning: "Warning",
35
35
  nextstepaction: "Next step action"
36
36
  };
37
- function h({ type: i, children: e }) {
38
- const n = b[i], a = f[i];
37
+ function h({ type: i, children: a }) {
38
+ const n = b[i], e = f[i];
39
39
  return /* @__PURE__ */ r(
40
40
  "aside",
41
41
  {
42
42
  role: "note",
43
- "aria-label": a,
43
+ "aria-label": e,
44
44
  className: l(
45
45
  "mint:my-4 mint:flex mint:gap-2 mint:px-3 mint:py-2.5 mint:rounded-lg mint:border mint:overflow-hidden",
46
46
  n.className
@@ -54,7 +54,7 @@ function h({ type: i, children: e }) {
54
54
  children: n.icon
55
55
  }
56
56
  ),
57
- /* @__PURE__ */ t("div", { className: "mint:text-sm mint:min-w-0 mint:w-full mint:max-w-none mint:prose mint:dark:prose-invert [&>ul]:!mt-0 [&>ol]:!mt-0", children: e })
57
+ /* @__PURE__ */ t("div", { className: "mint:text-sm mint:min-w-0 mint:w-full mint:max-w-none not-prose", children: a })
58
58
  ]
59
59
  }
60
60
  );
@@ -1 +1 @@
1
- {"version":3,"file":"callouts.js","sources":["../../../src/components/content-components/callouts.tsx"],"sourcesContent":["import {\n Lightbulb20Regular,\n InfoFilled,\n Warning20Regular,\n DismissCircle20Regular,\n Info20Regular,\n} from '@fluentui/react-icons';\n\nimport { cn } from '../../utils/cn';\n\nexport type CalloutType = 'note' | 'tip' | 'important' | 'caution' | 'warning' | 'nextstepaction';\n\ninterface CalloutProps {\n type: CalloutType;\n children: React.ReactNode;\n}\n\nconst calloutConfig: Record<\n CalloutType,\n {\n icon?: React.ReactNode;\n className: string;\n }\n> = {\n tip: {\n icon: <Lightbulb20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#f1faf1] mint:border-[#9fd89f] mint:text-[#0c5e0c] mint:dark:bg-[#052505] mint:dark:border-[#54b054] mint:dark:text-[#54b054]',\n },\n note: {\n icon: <Info20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#f5f5f5] mint:border-[#d1d1d1] mint:text-[#242424] mint:dark:bg-[#141414] mint:dark:border-[#666666] mint:dark:text-white',\n },\n warning: {\n icon: <Warning20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#fff9f5] mint:border-[#fdcfb4] mint:text-[#8a3707] mint:dark:bg-[#4a1e04] mint:dark:border-[#de590b] mint:dark:text-[#faa06b]',\n },\n caution: {\n icon: <DismissCircle20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#fdf3f4] mint:border-[#eeacb2] mint:text-[#960b18] mint:dark:bg-[#3b0509] mint:dark:border-[#c50f1f] mint:dark:text-[#dc626d]',\n },\n important: {\n icon: <Warning20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#e1cefc] mint:border-[#8251ee] mint:text-[#643fb2] mint:dark:bg-[#1a1326] mint:dark:border-[#9263f1] mint:dark:text-[#9263f1]',\n },\n nextstepaction: {\n icon: (\n <InfoFilled className=\"mint:w-5 mint:h-5 mint:shrink-0 mint:text-[#616161] mint:dark:text-white\" />\n ),\n className:\n 'mint:bg-[#f9fafb] mint:border-[#d1d1d1] mint:text-[#141414] mint:dark:bg-[#141414] mint:dark:border-[#666666] mint:dark:text-white',\n },\n};\n\nconst calloutLabels: Record<CalloutType, string> = {\n note: 'Note',\n tip: 'Tip',\n important: 'Important',\n caution: 'Caution',\n warning: 'Warning',\n nextstepaction: 'Next step action',\n};\n\nexport function Callout({ type, children }: CalloutProps) {\n const config = calloutConfig[type];\n const label = calloutLabels[type];\n\n return (\n <aside\n role=\"note\"\n aria-label={label}\n className={cn(\n 'mint:my-4 mint:flex mint:gap-2 mint:px-3 mint:py-2.5 mint:rounded-lg mint:border mint:overflow-hidden',\n config.className\n )}\n >\n {config.icon && (\n <div\n className=\"mint:flex mint:items-start mint:pt-0.5\"\n aria-hidden=\"true\"\n >\n {config.icon}\n </div>\n )}\n <div className=\"mint:text-sm mint:min-w-0 mint:w-full mint:max-w-none mint:prose mint:dark:prose-invert [&>ul]:!mt-0 [&>ol]:!mt-0\">\n {children}\n </div>\n </aside>\n );\n}\n"],"names":["calloutConfig","jsx","Lightbulb20Regular","Info20Regular","Warning20Regular","DismissCircle20Regular","InfoFilled","calloutLabels","Callout","type","children","config","label","jsxs","cn"],"mappings":";;;AAiBA,MAAMA,IAMF;AAAA,EACF,KAAK;AAAA,IACH,MAAM,gBAAAC,EAACC,GAAA,EAAmB,WAAU,kCAAA,CAAkC;AAAA,IACtE,WACE;AAAA,EAAA;AAAA,EAEJ,MAAM;AAAA,IACJ,MAAM,gBAAAD,EAACE,GAAA,EAAc,WAAU,kCAAA,CAAkC;AAAA,IACjE,WACE;AAAA,EAAA;AAAA,EAEJ,SAAS;AAAA,IACP,MAAM,gBAAAF,EAACG,GAAA,EAAiB,WAAU,kCAAA,CAAkC;AAAA,IACpE,WACE;AAAA,EAAA;AAAA,EAEJ,SAAS;AAAA,IACP,MAAM,gBAAAH,EAACI,GAAA,EAAuB,WAAU,kCAAA,CAAkC;AAAA,IAC1E,WACE;AAAA,EAAA;AAAA,EAEJ,WAAW;AAAA,IACT,MAAM,gBAAAJ,EAACG,GAAA,EAAiB,WAAU,kCAAA,CAAkC;AAAA,IACpE,WACE;AAAA,EAAA;AAAA,EAEJ,gBAAgB;AAAA,IACd,MACE,gBAAAH,EAACK,GAAA,EAAW,WAAU,2EAAA,CAA2E;AAAA,IAEnG,WACE;AAAA,EAAA;AAEN,GAEMC,IAA6C;AAAA,EACjD,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,gBAAgB;AAClB;AAEO,SAASC,EAAQ,EAAE,MAAAC,GAAM,UAAAC,KAA0B;AACxD,QAAMC,IAASX,EAAcS,CAAI,GAC3BG,IAAQL,EAAcE,CAAI;AAEhC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAYD;AAAA,MACZ,WAAWE;AAAA,QACT;AAAA,QACAH,EAAO;AAAA,MAAA;AAAA,MAGR,UAAA;AAAA,QAAAA,EAAO,QACN,gBAAAV;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEX,UAAAU,EAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZ,gBAAAV,EAAC,OAAA,EAAI,WAAU,qHACZ,UAAAS,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"callouts.js","sources":["../../../src/components/content-components/callouts.tsx"],"sourcesContent":["import {\n Lightbulb20Regular,\n InfoFilled,\n Warning20Regular,\n DismissCircle20Regular,\n Info20Regular,\n} from '@fluentui/react-icons';\n\nimport { cn } from '../../utils/cn';\n\nexport type CalloutType = 'note' | 'tip' | 'important' | 'caution' | 'warning' | 'nextstepaction';\n\ninterface CalloutProps {\n type: CalloutType;\n children: React.ReactNode;\n}\n\nconst calloutConfig: Record<\n CalloutType,\n {\n icon?: React.ReactNode;\n className: string;\n }\n> = {\n tip: {\n icon: <Lightbulb20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#f1faf1] mint:border-[#9fd89f] mint:text-[#0c5e0c] mint:dark:bg-[#052505] mint:dark:border-[#54b054] mint:dark:text-[#54b054]',\n },\n note: {\n icon: <Info20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#f5f5f5] mint:border-[#d1d1d1] mint:text-[#242424] mint:dark:bg-[#141414] mint:dark:border-[#666666] mint:dark:text-white',\n },\n warning: {\n icon: <Warning20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#fff9f5] mint:border-[#fdcfb4] mint:text-[#8a3707] mint:dark:bg-[#4a1e04] mint:dark:border-[#de590b] mint:dark:text-[#faa06b]',\n },\n caution: {\n icon: <DismissCircle20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#fdf3f4] mint:border-[#eeacb2] mint:text-[#960b18] mint:dark:bg-[#3b0509] mint:dark:border-[#c50f1f] mint:dark:text-[#dc626d]',\n },\n important: {\n icon: <Warning20Regular className=\"mint:w-5 mint:h-5 mint:shrink-0\" />,\n className:\n 'mint:bg-[#e1cefc] mint:border-[#8251ee] mint:text-[#643fb2] mint:dark:bg-[#1a1326] mint:dark:border-[#9263f1] mint:dark:text-[#9263f1]',\n },\n nextstepaction: {\n icon: (\n <InfoFilled className=\"mint:w-5 mint:h-5 mint:shrink-0 mint:text-[#616161] mint:dark:text-white\" />\n ),\n className:\n 'mint:bg-[#f9fafb] mint:border-[#d1d1d1] mint:text-[#141414] mint:dark:bg-[#141414] mint:dark:border-[#666666] mint:dark:text-white',\n },\n};\n\nconst calloutLabels: Record<CalloutType, string> = {\n note: 'Note',\n tip: 'Tip',\n important: 'Important',\n caution: 'Caution',\n warning: 'Warning',\n nextstepaction: 'Next step action',\n};\n\nexport function Callout({ type, children }: CalloutProps) {\n const config = calloutConfig[type];\n const label = calloutLabels[type];\n\n return (\n <aside\n role=\"note\"\n aria-label={label}\n className={cn(\n 'mint:my-4 mint:flex mint:gap-2 mint:px-3 mint:py-2.5 mint:rounded-lg mint:border mint:overflow-hidden',\n config.className\n )}\n >\n {config.icon && (\n <div\n className=\"mint:flex mint:items-start mint:pt-0.5\"\n aria-hidden=\"true\"\n >\n {config.icon}\n </div>\n )}\n <div className=\"mint:text-sm mint:min-w-0 mint:w-full mint:max-w-none not-prose\">\n {children}\n </div>\n </aside>\n );\n}\n"],"names":["calloutConfig","jsx","Lightbulb20Regular","Info20Regular","Warning20Regular","DismissCircle20Regular","InfoFilled","calloutLabels","Callout","type","children","config","label","jsxs","cn"],"mappings":";;;AAiBA,MAAMA,IAMF;AAAA,EACF,KAAK;AAAA,IACH,MAAM,gBAAAC,EAACC,GAAA,EAAmB,WAAU,kCAAA,CAAkC;AAAA,IACtE,WACE;AAAA,EAAA;AAAA,EAEJ,MAAM;AAAA,IACJ,MAAM,gBAAAD,EAACE,GAAA,EAAc,WAAU,kCAAA,CAAkC;AAAA,IACjE,WACE;AAAA,EAAA;AAAA,EAEJ,SAAS;AAAA,IACP,MAAM,gBAAAF,EAACG,GAAA,EAAiB,WAAU,kCAAA,CAAkC;AAAA,IACpE,WACE;AAAA,EAAA;AAAA,EAEJ,SAAS;AAAA,IACP,MAAM,gBAAAH,EAACI,GAAA,EAAuB,WAAU,kCAAA,CAAkC;AAAA,IAC1E,WACE;AAAA,EAAA;AAAA,EAEJ,WAAW;AAAA,IACT,MAAM,gBAAAJ,EAACG,GAAA,EAAiB,WAAU,kCAAA,CAAkC;AAAA,IACpE,WACE;AAAA,EAAA;AAAA,EAEJ,gBAAgB;AAAA,IACd,MACE,gBAAAH,EAACK,GAAA,EAAW,WAAU,2EAAA,CAA2E;AAAA,IAEnG,WACE;AAAA,EAAA;AAEN,GAEMC,IAA6C;AAAA,EACjD,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,gBAAgB;AAClB;AAEO,SAASC,EAAQ,EAAE,MAAAC,GAAM,UAAAC,KAA0B;AACxD,QAAMC,IAASX,EAAcS,CAAI,GAC3BG,IAAQL,EAAcE,CAAI;AAEhC,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAYD;AAAA,MACZ,WAAWE;AAAA,QACT;AAAA,QACAH,EAAO;AAAA,MAAA;AAAA,MAGR,UAAA;AAAA,QAAAA,EAAO,QACN,gBAAAV;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAY;AAAA,YAEX,UAAAU,EAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGZ,gBAAAV,EAAC,OAAA,EAAI,WAAU,mEACZ,UAAAS,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -120,15 +120,16 @@ function X({
120
120
  "div",
121
121
  {
122
122
  className: d(
123
- "not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]",
123
+ "not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414] code-block-wrapper",
124
+ "mint:px-4 mint:py-2 mint:overflow-scroll mint:[scrollbar-gutter:stable] mint:scrollbar-track-zinc-200 mint:dark:scrollbar-track-zinc-800",
125
+ v,
124
126
  i && "mint:group"
125
127
  ),
126
128
  children: /* @__PURE__ */ r(
127
129
  "pre",
128
130
  {
129
131
  className: d(
130
- "mint:px-4 mint:py-2 mint:m-0 mint:whitespace-pre mint:text-sm mint:overflow-scroll mint:scrollbar-track-zinc-200 mint:dark:scrollbar-track-zinc-800",
131
- v
132
+ "mint:m-0 mint:whitespace-pre mint:text-sm"
132
133
  ),
133
134
  children: g ? /* @__PURE__ */ r(
134
135
  "code",
@@ -1 +1 @@
1
- {"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["import { Copy20Regular, ClipboardCheckmarkRegular } from '@fluentui/react-icons';\nimport Prism from 'prismjs';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-json.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-powershell.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-typescript.js';\nimport React, { useEffect, useState } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { getNodeText } from '../../utils/get-node-text';\nimport { capitalize } from '../../utils/string';\nimport { getCodeBlockScrollbarClassname } from '../../utils/getScrollbarClassname';\n\nconst SUPPORTED_CLIPBOARD_CONTENT_TYPES = ['image/png', 'text/plain'];\n\n// Hook for clipboard operations\nexport function useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error('Failed to copy to clipboard:', error);\n }\n };\n\n const copyBlob = async (blob: Blob, contentType: string) => {\n try {\n // image/png, text/plain, and text/html are the only filetypes supported in the chromium\n // clipboard - however, text/html crashes chrome for some reason\n if (SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(contentType)) {\n const buffer = await blob.arrayBuffer();\n const newBlob = new Blob([buffer], { type: contentType });\n const clipboardItem = new ClipboardItem({\n [contentType]: newBlob,\n });\n await navigator.clipboard.write([clipboardItem]);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } else {\n // Fallback to text copy for unsupported types\n const text = await blob.text();\n await copy(text);\n }\n } catch (error) {\n console.error('Failed to copy blob to clipboard:', error);\n // Fallback to text copy if blob copy fails\n try {\n const text = await blob.text();\n await copy(text);\n } catch (fallbackError) {\n console.error('Failed to copy as text fallback:', fallbackError);\n }\n }\n };\n\n return { isCopied, copy, copyBlob };\n}\n\n// Base copy icon button component\ninterface CopyIconButtonProps {\n onClick: () => void;\n isCopied: boolean;\n showTooltip?: boolean;\n}\n\nexport function CopyIconButton({ onClick, isCopied, showTooltip = true }: CopyIconButtonProps) {\n return (\n <div className=\"mint:relative\">\n {showTooltip && isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={onClick}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? 'Copied' : 'Copy code'}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n );\n}\n\n// Convenience component that handles text copying\ninterface CopyToClipboardButtonProps {\n textToCopy: string;\n showTooltip?: boolean;\n}\n\nexport function CopyToClipboardButton({\n textToCopy,\n showTooltip = true,\n}: CopyToClipboardButtonProps) {\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = () => {\n copy(textToCopy);\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\n// Convenience component that handles blob/data copying\ninterface CopyDataToClipboardButtonProps {\n data: {\n type: 'image' | 'audio' | 'video' | 'other';\n blob: Blob;\n contentType?: string;\n content?: string;\n };\n showTooltip?: boolean;\n}\n\nexport function CopyDataToClipboardButton({\n data,\n showTooltip = true,\n}: CopyDataToClipboardButtonProps) {\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n\n const handleCopy = () => {\n // Check if we can copy as blob (for images, etc.)\n if (data.contentType && SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(data.contentType)) {\n copyBlob(data.blob, data.contentType);\n } else if (data.type === 'other' && data.content) {\n // For text content, copy as text\n copy(data.content);\n } else {\n console.error('Unsupported content type for clipboard');\n }\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n // Support for copying blobs (images, etc.)\n blob?: Blob;\n contentType?: string;\n // Control whether scrollbar uses group-hover behavior\n dataGroup?: boolean;\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n blob,\n contentType,\n dataGroup = false,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>('');\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, '') || 'text';\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== 'object' || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (typeof child === 'object' && child != null && 'props' in child && child.props?.children) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === 'object' &&\n codeChild != null &&\n 'props' in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error('Failed to highlight code:', error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n // If blob and contentType are provided, use blob copying\n if (blob && contentType) {\n copyBlob(blob, contentType);\n } else {\n // Otherwise, use text copying\n copy(codeText);\n }\n };\n\n const scrollbarClass = getCodeBlockScrollbarClassname('system', dataGroup);\n\n return (\n <div\n className={\n showContainer\n ? 'mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden'\n : undefined\n }\n data-group={dataGroup}\n >\n <div\n className={cn(\n 'not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414]',\n dataGroup && 'mint:group'\n )}\n >\n <pre\n className={cn(\n 'mint:px-4 mint:py-2 mint:m-0 mint:whitespace-pre mint:text-sm mint:overflow-scroll mint:scrollbar-track-zinc-200 mint:dark:scrollbar-track-zinc-800',\n scrollbarClass\n )}\n >\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n );\n}\n"],"names":["SUPPORTED_CLIPBOARD_CONTENT_TYPES","useCopyToClipboard","isCopied","setIsCopied","useState","copy","text","error","blob","contentType","buffer","newBlob","clipboardItem","fallbackError","CopyIconButton","onClick","showTooltip","jsxs","jsx","ClipboardCheckmarkRegular","Copy20Regular","CopyToClipboardButton","textToCopy","CopyDataToClipboardButton","data","copyBlob","CodeBlock","children","className","fileName","language","dataGroup","highlightedCode","setHighlightedCode","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","scrollbarClass","getCodeBlockScrollbarClassname","cn"],"mappings":";;;;;;;;;;;;;;;AAiBA,MAAMA,IAAoC,CAAC,aAAa,YAAY;AAG7D,SAASC,IAAqB;AACnC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GAExCC,IAAO,OAAOC,MAAiB;AACnC,QAAI;AACF,YAAM,UAAU,UAAU,UAAUA,CAAI,GACxCH,EAAY,EAAI,GAChB,WAAW,MAAMA,EAAY,EAAK,GAAG,GAAI;AAAA,IAC3C,SAASI,GAAO;AACd,cAAQ,MAAM,gCAAgCA,CAAK;AAAA,IACrD;AAAA,EACF;AAgCA,SAAO,EAAE,UAAAL,GAAU,MAAAG,GAAM,UA9BR,OAAOG,GAAYC,MAAwB;AAC1D,QAAI;AAGF,UAAIT,EAAkC,SAASS,CAAW,GAAG;AAC3D,cAAMC,IAAS,MAAMF,EAAK,YAAA,GACpBG,IAAU,IAAI,KAAK,CAACD,CAAM,GAAG,EAAE,MAAMD,GAAa,GAClDG,IAAgB,IAAI,cAAc;AAAA,UACtC,CAACH,CAAW,GAAGE;AAAA,QAAA,CAChB;AACD,cAAM,UAAU,UAAU,MAAM,CAACC,CAAa,CAAC,GAC/CT,EAAY,EAAI,GAChB,WAAW,MAAMA,EAAY,EAAK,GAAG,GAAI;AAAA,MAC3C,OAAO;AAEL,cAAMG,IAAO,MAAME,EAAK,KAAA;AACxB,cAAMH,EAAKC,CAAI;AAAA,MACjB;AAAA,IACF,SAASC,GAAO;AACd,cAAQ,MAAM,qCAAqCA,CAAK;AAExD,UAAI;AACF,cAAMD,IAAO,MAAME,EAAK,KAAA;AACxB,cAAMH,EAAKC,CAAI;AAAA,MACjB,SAASO,GAAe;AACtB,gBAAQ,MAAM,oCAAoCA,CAAa;AAAA,MACjE;AAAA,IACF;AAAA,EACF,EAEyB;AAC3B;AASO,SAASC,EAAe,EAAE,SAAAC,GAAS,UAAAb,GAAU,aAAAc,IAAc,MAA6B;AAC7F,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,IAAAD,KAAed,KACd,gBAAAgB,EAAC,OAAA,EAAI,WAAU,0yBAAyyB,UAAA,WAExzB;AAAA,IAEF,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAAH;AAAA,QACA,WAAU;AAAA,QACV,cAAYb,IAAW,WAAW;AAAA,QAEjC,UAAAA,sBACEiB,GAAA,EAA0B,WAAU,kEAAiE,IAEtG,gBAAAD,EAACE,GAAA,EAAc,WAAU,oBAAA,CAAoB;AAAA,MAAA;AAAA,IAAA;AAAA,EAEjD,GACF;AAEJ;AAQO,SAASC,EAAsB;AAAA,EACpC,YAAAC;AAAA,EACA,aAAAN,IAAc;AAChB,GAA+B;AAC7B,QAAM,EAAE,UAAAd,GAAU,MAAAG,EAAA,IAASJ,EAAA;AAM3B,SAAO,gBAAAiB,EAACJ,GAAA,EAAe,SAJJ,MAAM;AACvB,IAAAT,EAAKiB,CAAU;AAAA,EACjB,GAE4C,UAAApB,GAAoB,aAAAc,GAA0B;AAC5F;AAaO,SAASO,EAA0B;AAAA,EACxC,MAAAC;AAAA,EACA,aAAAR,IAAc;AAChB,GAAmC;AACjC,QAAM,EAAE,UAAAd,GAAU,MAAAG,GAAM,UAAAoB,EAAA,IAAaxB,EAAA;AAcrC,SAAO,gBAAAiB,EAACJ,GAAA,EAAe,SAZJ,MAAM;AAEvB,IAAIU,EAAK,eAAexB,EAAkC,SAASwB,EAAK,WAAW,IACjFC,EAASD,EAAK,MAAMA,EAAK,WAAW,IAC3BA,EAAK,SAAS,WAAWA,EAAK,UAEvCnB,EAAKmB,EAAK,OAAO,IAEjB,QAAQ,MAAM,wCAAwC;AAAA,EAE1D,GAE4C,UAAAtB,GAAoB,aAAAc,GAA0B;AAC5F;AAcO,SAASU,EAAU;AAAA,EACxB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAtB;AAAA,EACA,aAAAC;AAAA,EACA,WAAAsB,IAAY;AACd,GAAmB;AACjB,QAAM,CAACC,GAAiBC,CAAkB,IAAI7B,EAAiB,EAAE;AAC5B,EAAAH,EAAA;AACrC,QAAMiC,IAAOJ,MAAYF,KAAA,gBAAAA,EAAW,QAAQ,cAAc,QAAO,QAC3DO,IAAWC,EAAYT,CAAQ,GAC/BU,IAAgB,CAAC,CAACR,GAElBS,IAAmBC,EAAM,QAAQ,MAAM;;AAC3C,QAAI,OAAOZ,KAAa,YAAYA,KAAY;AAC9C,aAAO;AAGT,UAAMa,IAAgB,MAAM,QAAQb,CAAQ,IAAIA,IAAW,CAACA,CAAQ;AACpE,eAAWc,KAASD;AAClB,UAAI,OAAOC,KAAU,YAAYA,KAAS,QAAQ,WAAWA,OAASC,IAAAD,EAAM,UAAN,QAAAC,EAAa,WAAU;AAC3F,cAAMC,IAAe,MAAM,QAAQF,EAAM,MAAM,QAAQ,IACnDA,EAAM,MAAM,WACZ,CAACA,EAAM,MAAM,QAAQ;AAEzB,mBAAWG,KAAaD;AACtB,cACE,OAAOC,KAAc,YACrBA,KAAa,QACb,WAAWA,OACXC,IAAAD,EAAU,UAAV,QAAAC,EAAiB;AAEjB,mBAAO;AAAA,MAGb;AAEF,WAAO;AAAA,EACT,GAAG,CAAClB,CAAQ,CAAC;AAEb,EAAAmB,EAAU,MAAM;AACd,QAAI,CAAAR;AAIJ,UAAI;AACF,cAAMS,IAAUC,EAAM,UAAUd,CAAI,KAAKc,EAAM,UAAU,WACnDC,IAAOD,EAAM,UAAUb,GAAUY,GAASb,CAAI;AACpD,QAAAD,EAAmBgB,CAAI;AAAA,MACzB,SAAS1C,GAAO;AACd,gBAAQ,MAAM,6BAA6BA,CAAK,GAChD0B,EAAmBE,CAAQ;AAAA,MAC7B;AAAA,EACF,GAAG,CAACA,GAAUD,GAAMI,CAAgB,CAAC;AAYrC,QAAMY,IAAiBC,EAA+B,UAAUpB,CAAS;AAEzE,SACE,gBAAAb;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WACEmB,IACI,oGACA;AAAA,MAEN,cAAYN;AAAA,MAEZ,UAAA,gBAAAb;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWkC;AAAA,YACT;AAAA,YACArB,KAAa;AAAA,UAAA;AAAA,UAGf,UAAA,gBAAAb;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWkC;AAAA,gBACT;AAAA,gBACAF;AAAA,cAAA;AAAA,cAGC,UAAAZ,IACC,gBAAApB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWkC;AAAA,oBACT,YAAYlB,CAAI;AAAA,oBAChB;AAAA,kBAAA;AAAA,kBAGD,UAAAP;AAAA,gBAAA;AAAA,cAAA,IAEDK,IACF,gBAAAd;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWkC;AAAA,oBACT,YAAYlB,CAAI;AAAA,oBAChB;AAAA,kBAAA;AAAA,kBAEF,yBAAyB,EAAE,QAAQF,EAAA;AAAA,gBAAgB;AAAA,cAAA,IAGrD,gBAAAd;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWkC;AAAA,oBACT,YAAYlB,CAAI;AAAA,oBAChB;AAAA,kBAAA;AAAA,kBAGD,UAAAC;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH;AAAA,UAAA;AAAA,QAEN;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"code-block.js","sources":["../../../src/components/content-components/code-block.tsx"],"sourcesContent":["import { Copy20Regular, ClipboardCheckmarkRegular } from '@fluentui/react-icons';\nimport Prism from 'prismjs';\nimport 'prismjs/components/prism-bash.js';\nimport 'prismjs/components/prism-csharp.js';\nimport 'prismjs/components/prism-javascript.js';\nimport 'prismjs/components/prism-json.js';\nimport 'prismjs/components/prism-markdown.js';\nimport 'prismjs/components/prism-powershell.js';\nimport 'prismjs/components/prism-python.js';\nimport 'prismjs/components/prism-typescript.js';\nimport React, { useEffect, useState } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { getNodeText } from '../../utils/get-node-text';\nimport { capitalize } from '../../utils/string';\nimport { getCodeBlockScrollbarClassname } from '../../utils/getScrollbarClassname';\n\nconst SUPPORTED_CLIPBOARD_CONTENT_TYPES = ['image/png', 'text/plain'];\n\n// Hook for clipboard operations\nexport function useCopyToClipboard() {\n const [isCopied, setIsCopied] = useState(false);\n\n const copy = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } catch (error) {\n console.error('Failed to copy to clipboard:', error);\n }\n };\n\n const copyBlob = async (blob: Blob, contentType: string) => {\n try {\n // image/png, text/plain, and text/html are the only filetypes supported in the chromium\n // clipboard - however, text/html crashes chrome for some reason\n if (SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(contentType)) {\n const buffer = await blob.arrayBuffer();\n const newBlob = new Blob([buffer], { type: contentType });\n const clipboardItem = new ClipboardItem({\n [contentType]: newBlob,\n });\n await navigator.clipboard.write([clipboardItem]);\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), 2000);\n } else {\n // Fallback to text copy for unsupported types\n const text = await blob.text();\n await copy(text);\n }\n } catch (error) {\n console.error('Failed to copy blob to clipboard:', error);\n // Fallback to text copy if blob copy fails\n try {\n const text = await blob.text();\n await copy(text);\n } catch (fallbackError) {\n console.error('Failed to copy as text fallback:', fallbackError);\n }\n }\n };\n\n return { isCopied, copy, copyBlob };\n}\n\n// Base copy icon button component\ninterface CopyIconButtonProps {\n onClick: () => void;\n isCopied: boolean;\n showTooltip?: boolean;\n}\n\nexport function CopyIconButton({ onClick, isCopied, showTooltip = true }: CopyIconButtonProps) {\n return (\n <div className=\"mint:relative\">\n {showTooltip && isCopied && (\n <div className=\"mint:absolute mint:bottom-[calc(100%+0.5rem)] mint:left-1/2 mint:-translate-x-1/2 mint:bg-white mint:dark:bg-[#1a1a1a] mint:text-[#171717] mint:dark:text-[#fafafa] mint:px-2.5 mint:py-1.5 mint:rounded-md mint:text-xs mint:font-medium mint:whitespace-nowrap mint:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.1),0_2px_4px_-1px_rgba(0,0,0,0.06)] mint:dark:shadow-[0_4px_6px_-1px_rgba(0,0,0,0.3),0_2px_4px_-1px_rgba(0,0,0,0.2)] mint:z-10 mint:animate-[fadeIn_0.15s_ease-out] mint:after:content-[''] mint:after:absolute mint:after:top-full mint:after:left-1/2 mint:after:-translate-x-1/2 mint:after:w-0 mint:after:h-0 mint:after:border-l-[6px] mint:after:border-l-transparent mint:after:border-r-[6px] mint:after:border-r-transparent mint:after:border-t-[6px] mint:after:border-t-white mint:dark:after:border-t-[#1a1a1a]\">\n Copied!\n </div>\n )}\n <button\n onClick={onClick}\n className=\"mint:flex mint:items-center mint:gap-1.5 mint:px-2 mint:py-1 mint:text-xs mint:text-[#737373] mint:dark:text-[#a3a3a3] mint:rounded mint:transition-colors mint:duration-150 mint:border-none mint:bg-transparent mint:cursor-pointer mint:hover:text-[#9263f1] mint:dark:hover:text-[#c9aaf9]\"\n aria-label={isCopied ? 'Copied' : 'Copy code'}\n >\n {isCopied ? (\n <ClipboardCheckmarkRegular className=\"mint:w-5 mint:h-5 mint:text-[#737373] mint:dark:text-[#a3a3a3]\" />\n ) : (\n <Copy20Regular className=\"mint:w-5 mint:h-5\" />\n )}\n </button>\n </div>\n );\n}\n\n// Convenience component that handles text copying\ninterface CopyToClipboardButtonProps {\n textToCopy: string;\n showTooltip?: boolean;\n}\n\nexport function CopyToClipboardButton({\n textToCopy,\n showTooltip = true,\n}: CopyToClipboardButtonProps) {\n const { isCopied, copy } = useCopyToClipboard();\n\n const handleCopy = () => {\n copy(textToCopy);\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\n// Convenience component that handles blob/data copying\ninterface CopyDataToClipboardButtonProps {\n data: {\n type: 'image' | 'audio' | 'video' | 'other';\n blob: Blob;\n contentType?: string;\n content?: string;\n };\n showTooltip?: boolean;\n}\n\nexport function CopyDataToClipboardButton({\n data,\n showTooltip = true,\n}: CopyDataToClipboardButtonProps) {\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n\n const handleCopy = () => {\n // Check if we can copy as blob (for images, etc.)\n if (data.contentType && SUPPORTED_CLIPBOARD_CONTENT_TYPES.includes(data.contentType)) {\n copyBlob(data.blob, data.contentType);\n } else if (data.type === 'other' && data.content) {\n // For text content, copy as text\n copy(data.content);\n } else {\n console.error('Unsupported content type for clipboard');\n }\n };\n\n return <CopyIconButton onClick={handleCopy} isCopied={isCopied} showTooltip={showTooltip} />;\n}\n\ninterface CodeBlockProps {\n children: React.ReactNode;\n className?: string;\n language?: string;\n fileName?: string;\n // Support for copying blobs (images, etc.)\n blob?: Blob;\n contentType?: string;\n // Control whether scrollbar uses group-hover behavior\n dataGroup?: boolean;\n}\n\nexport function CodeBlock({\n children,\n className,\n fileName,\n language,\n blob,\n contentType,\n dataGroup = false,\n}: CodeBlockProps) {\n const [highlightedCode, setHighlightedCode] = useState<string>('');\n const { isCopied, copy, copyBlob } = useCopyToClipboard();\n const lang = language || className?.replace(/^language-/, '') || 'text';\n const codeText = getNodeText(children);\n const showContainer = !!fileName;\n\n const isSSRHighlighted = React.useMemo(() => {\n if (typeof children !== 'object' || children == null) {\n return false;\n }\n\n const childrenArray = Array.isArray(children) ? children : [children];\n for (const child of childrenArray) {\n if (typeof child === 'object' && child != null && 'props' in child && child.props?.children) {\n const codeChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n\n for (const codeChild of codeChildren) {\n if (\n typeof codeChild === 'object' &&\n codeChild != null &&\n 'props' in codeChild &&\n codeChild.props?.className\n ) {\n return true;\n }\n }\n }\n }\n return false;\n }, [children]);\n\n useEffect(() => {\n if (isSSRHighlighted) {\n return;\n }\n\n try {\n const grammar = Prism.languages[lang] || Prism.languages.plaintext;\n const html = Prism.highlight(codeText, grammar, lang);\n setHighlightedCode(html);\n } catch (error) {\n console.error('Failed to highlight code:', error);\n setHighlightedCode(codeText);\n }\n }, [codeText, lang, isSSRHighlighted]);\n\n const handleCopy = () => {\n // If blob and contentType are provided, use blob copying\n if (blob && contentType) {\n copyBlob(blob, contentType);\n } else {\n // Otherwise, use text copying\n copy(codeText);\n }\n };\n\n const scrollbarClass = getCodeBlockScrollbarClassname('system', dataGroup);\n\n return (\n <div\n className={\n showContainer\n ? 'mint:flex mint:flex-col mint:gap-2 mint:px-0.5 mint:pb-0.5 mint:rounded-xl mint:overflow-hidden'\n : undefined\n }\n data-group={dataGroup}\n >\n <div\n className={cn(\n 'not-prose mint:relative mint:rounded-xl mint:bg-[#f5f5f5] mint:dark:bg-[#141414] code-block-wrapper',\n 'mint:px-4 mint:py-2 mint:overflow-scroll mint:[scrollbar-gutter:stable] mint:scrollbar-track-zinc-200 mint:dark:scrollbar-track-zinc-800',\n scrollbarClass,\n dataGroup && 'mint:group'\n )}\n >\n <pre\n className={cn(\n 'mint:m-0 mint:whitespace-pre mint:text-sm'\n )}\n >\n {isSSRHighlighted ? (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n >\n {children}\n </code>\n ) : highlightedCode ? (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n dangerouslySetInnerHTML={{ __html: highlightedCode }}\n />\n ) : (\n <code\n className={cn(\n `language-${lang}`,\n 'mint:block mint:text-[#24292e] mint:dark:text-[#e6edf3]'\n )}\n >\n {codeText}\n </code>\n )}\n </pre>\n </div>\n </div>\n );\n}\n"],"names":["SUPPORTED_CLIPBOARD_CONTENT_TYPES","useCopyToClipboard","isCopied","setIsCopied","useState","copy","text","error","blob","contentType","buffer","newBlob","clipboardItem","fallbackError","CopyIconButton","onClick","showTooltip","jsxs","jsx","ClipboardCheckmarkRegular","Copy20Regular","CopyToClipboardButton","textToCopy","CopyDataToClipboardButton","data","copyBlob","CodeBlock","children","className","fileName","language","dataGroup","highlightedCode","setHighlightedCode","lang","codeText","getNodeText","showContainer","isSSRHighlighted","React","childrenArray","child","_a","codeChildren","codeChild","_b","useEffect","grammar","Prism","html","scrollbarClass","getCodeBlockScrollbarClassname","cn"],"mappings":"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"}
@@ -6,7 +6,7 @@ function m({ href: t, children: a, className: i }) {
6
6
  "a",
7
7
  {
8
8
  href: t,
9
- className: e("not-prose mint:underline mint:text-[#643fb2] mint:dark:text-[#c9aaf9]", i),
9
+ className: e("not-prose mint:hover:underline mint:text-[#643fb2] mint:dark:text-[#c9aaf9]", i),
10
10
  target: n ? "_blank" : void 0,
11
11
  rel: n ? "noopener noreferrer" : void 0,
12
12
  "aria-label": n ? `${a} (opens in new tab)` : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sources":["../../../src/components/content-components/link.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\ninterface LinkProps {\n href?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Link({ href, children, className }: LinkProps) {\n const isExternal = href?.startsWith(\"http\") || href?.startsWith(\"//\");\n\n return (\n <a\n href={href}\n className={cn(\"not-prose mint:underline mint:text-[#643fb2] mint:dark:text-[#c9aaf9]\", className)}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n aria-label={isExternal ? `${children} (opens in new tab)` : undefined}\n >\n {children}\n {isExternal && <span className=\"mint:sr-only\"> (opens in new tab)</span>}\n </a>\n );\n}\n"],"names":["Link","href","children","className","isExternal","jsxs","cn","jsx"],"mappings":";;AASO,SAASA,EAAK,EAAE,MAAAC,GAAM,UAAAC,GAAU,WAAAC,KAAwB;AAC7D,QAAMC,KAAaH,KAAA,gBAAAA,EAAM,WAAW,aAAWA,KAAA,gBAAAA,EAAM,WAAW;AAEhE,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAJ;AAAA,MACA,WAAWK,EAAG,yEAAyEH,CAAS;AAAA,MAChG,QAAQC,IAAa,WAAW;AAAA,MAChC,KAAKA,IAAa,wBAAwB;AAAA,MAC1C,cAAYA,IAAa,GAAGF,CAAQ,wBAAwB;AAAA,MAE3D,UAAA;AAAA,QAAAA;AAAA,QACAE,KAAc,gBAAAG,EAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,sBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvE;"}
1
+ {"version":3,"file":"link.js","sources":["../../../src/components/content-components/link.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\ninterface LinkProps {\n href?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function Link({ href, children, className }: LinkProps) {\n const isExternal = href?.startsWith(\"http\") || href?.startsWith(\"//\");\n\n return (\n <a\n href={href}\n className={cn(\"not-prose mint:hover:underline mint:text-[#643fb2] mint:dark:text-[#c9aaf9]\", className)}\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n aria-label={isExternal ? `${children} (opens in new tab)` : undefined}\n >\n {children}\n {isExternal && <span className=\"mint:sr-only\"> (opens in new tab)</span>}\n </a>\n );\n}\n"],"names":["Link","href","children","className","isExternal","jsxs","cn","jsx"],"mappings":";;AASO,SAASA,EAAK,EAAE,MAAAC,GAAM,UAAAC,GAAU,WAAAC,KAAwB;AAC7D,QAAMC,KAAaH,KAAA,gBAAAA,EAAM,WAAW,aAAWA,KAAA,gBAAAA,EAAM,WAAW;AAEhE,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAJ;AAAA,MACA,WAAWK,EAAG,+EAA+EH,CAAS;AAAA,MACtG,QAAQC,IAAa,WAAW;AAAA,MAChC,KAAKA,IAAa,wBAAwB;AAAA,MAC1C,cAAYA,IAAa,GAAGF,CAAQ,wBAAwB;AAAA,MAE3D,UAAA;AAAA,QAAAA;AAAA,QACAE,KAAc,gBAAAG,EAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,sBAAA,CAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvE;"}
@@ -33,7 +33,7 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
33
33
  const { LinkComponent: f } = I(), d = !e.href, l = e.href && (x(e.href, g) || x(e.href, c)), p = e.icon;
34
34
  if (d && u === 0)
35
35
  return /* @__PURE__ */ s("div", { id: "nav-group", role: "group", "aria-label": e.toc_title, children: [
36
- /* @__PURE__ */ s("div", { className: "mint:text-sm mint:text-[#242424] mint:dark:text-[#ffffff] mint:mb-2 mint:flex mint:items-start mint:gap-2 mint:pl-3 mint:font-semibold", children: [
36
+ /* @__PURE__ */ s("div", { className: "mint:text-sm mint:text-[#242424] mint:dark:text-[#ffffff] mint:mb-2 mint:flex mint:items-start mint:gap-2 mint:pl-3 mint:font-semibold mint:leading-[1.375rem]", children: [
37
37
  p && /* @__PURE__ */ i(p, { className: "mint:w-5 mint:h-5", "aria-hidden": "true" }),
38
38
  /* @__PURE__ */ i("span", { children: e.toc_title })
39
39
  ] }),
@@ -49,7 +49,7 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
49
49
  )) })
50
50
  ] });
51
51
  if (d && u > 0)
52
- return /* @__PURE__ */ s("li", { className: "mint:list-none", children: [
52
+ return /* @__PURE__ */ s("li", { className: "mint:list-none mint:m-0.25", children: [
53
53
  /* @__PURE__ */ s(
54
54
  "div",
55
55
  {
@@ -62,7 +62,7 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
62
62
  },
63
63
  "aria-expanded": o,
64
64
  "aria-label": `${o ? "Collapse" : "Expand"} ${e.toc_title} section`,
65
- className: "mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-[3px] mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
65
+ className: "mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-[3px] mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:leading-[1.375rem]",
66
66
  children: [
67
67
  /* @__PURE__ */ i("span", { className: "mint:flex-1 mint:min-w-0", children: e.toc_title }),
68
68
  /* @__PURE__ */ i(_, { isExpanded: !!o })
@@ -88,7 +88,7 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
88
88
  )
89
89
  ] });
90
90
  const m = f || "a";
91
- return b ? /* @__PURE__ */ s("li", { className: "mint:list-none", children: [
91
+ return b ? /* @__PURE__ */ s("li", { className: "mint:list-none mint:m-0.25", children: [
92
92
  /* @__PURE__ */ s(
93
93
  "div",
94
94
  {
@@ -102,7 +102,7 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
102
102
  "aria-expanded": o,
103
103
  "aria-label": `${o ? "Collapse" : "Expand"} ${e.toc_title} section`,
104
104
  className: h(
105
- "mint:font-aptos mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-[3px] mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-xl mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2",
105
+ "mint:font-aptos mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-1 mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:leading-[1.375rem]",
106
106
  l ? S : "mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]"
107
107
  ),
108
108
  children: [
@@ -128,14 +128,14 @@ function $({ item: e, activeId: g, level: u = 0, activeHref: c }) {
128
128
  ))
129
129
  }
130
130
  )
131
- ] }) : /* @__PURE__ */ i("li", { className: "mint:list-none", children: /* @__PURE__ */ s(
131
+ ] }) : /* @__PURE__ */ i("li", { className: "mint:list-none mint:m-0.25", children: /* @__PURE__ */ s(
132
132
  m,
133
133
  {
134
134
  id: "nav-item",
135
135
  href: e.href,
136
136
  "aria-current": l ? "page" : void 0,
137
137
  className: h(
138
- "mint:relative mint:flex mint:items-center mint:gap-2 mint:py-[3px] mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-xl mint:no-underline mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:[&_span]:flex-1",
138
+ "mint:relative mint:flex mint:items-center mint:gap-2 mint:py-1 mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-lg mint:no-underline mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:[&_span]:flex-1 mint:leading-[1.375rem]",
139
139
  l ? S : "mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]"
140
140
  ),
141
141
  children: [
@@ -235,7 +235,7 @@ function P({
235
235
  href: t.href,
236
236
  "aria-current": p ? "page" : void 0,
237
237
  className: h(
238
- "mint:group mint:relative mint:flex mint:items-start mint:gap-2 mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb]",
238
+ "mint:group mint:relative mint:flex mint:items-start mint:gap-2 mint:py-1.5 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:leading-[1.375rem]",
239
239
  p ? "mint:text-[#141414] mint:dark:text-[#ffffff]" : "mint:text-[#242424] mint:dark:text-[#adadad]"
240
240
  ),
241
241
  children: [
@@ -291,14 +291,14 @@ function P({
291
291
  return t.component ? /* @__PURE__ */ i("div", { children: C.isValidElement(t.component) ? C.cloneElement(t.component, {
292
292
  ...t.component.props,
293
293
  className: h(
294
- "mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer",
294
+ "mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer",
295
295
  (l = t.component.props) == null ? void 0 : l.className
296
296
  ),
297
297
  children: /* @__PURE__ */ s(L, { children: [
298
298
  /* @__PURE__ */ i(d, { className: "mint:w-5 mint:h-5 mint:shrink-0" }),
299
299
  /* @__PURE__ */ i("span", { children: t.label })
300
300
  ] })
301
- }) : /* @__PURE__ */ s("div", { className: "mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer", children: [
301
+ }) : /* @__PURE__ */ s("div", { className: "mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer", children: [
302
302
  /* @__PURE__ */ i(d, { className: "mint:w-5 mint:h-5 mint:shrink-0" }),
303
303
  /* @__PURE__ */ i("span", { children: t.label }),
304
304
  t.component
@@ -308,7 +308,7 @@ function P({
308
308
  href: t.href,
309
309
  target: "_blank",
310
310
  rel: "noopener noreferrer",
311
- className: "mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden",
311
+ className: "mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden",
312
312
  children: [
313
313
  /* @__PURE__ */ i(d, { className: "mint:w-5 mint:h-5 mint:shrink-0" }),
314
314
  /* @__PURE__ */ i("span", { children: t.label })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/nav-tree/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\n\nimport { useComponents } from '../../context/components-context';\nimport '../../styles.css';\nimport type { NavItem, NavTreeData, AnchorConfig } from '../../types';\nimport { cn } from '../../utils/cn';\nimport { MethodPill } from '../Api/MethodPill';\n\nexport { MobileNavTree } from './mobile-nav';\nexport type { MobileNavTreeProps } from './mobile-nav';\nexport type { AnchorConfig } from '../../types';\n\nexport interface BottomLinkConfig {\n href?: string;\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n component?: React.ReactNode;\n}\n\ninterface NavTreeProps {\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n activeHref?: string;\n theme?: 'light' | 'dark' | 'system';\n bottomLinks?: BottomLinkConfig[];\n anchors?: AnchorConfig[];\n}\n\ninterface TreeItemProps {\n item: NavItem;\n activeId?: string;\n level?: number;\n activeHref?: string;\n}\n\nfunction ChevronIcon({ isExpanded }: { isExpanded: boolean }) {\n return (\n <svg\n className={cn(\n 'mint:w-[12px] mint:h-[12px] mint:shrink-0 mint:text-[#707070] mint:dark:text-[#999999]',\n isExpanded ? 'mint:rotate-90' : 'mint:rotate-0'\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n );\n}\n\nconst ACTIVE_ITEM_CLASSES =\n 'mint:bg-[#e6e6e6] mint:dark:bg-[#2e2e2e] mint:text-[#242424] mint:dark:text-[#ffffff] mint:font';\n\nfunction TreeItemComponent({ item, activeId, level = 0, activeHref }: TreeItemProps) {\n const hasChildren = item.children && item.children.length > 0;\n\n const normalizeHref = (href?: string): string => {\n if (!href) return '';\n const normalized = href.startsWith('/') ? href : `/${href}`;\n return normalized;\n };\n\n const compareHrefs = (href1?: string, href2?: string): boolean => {\n if (!href1 || !href2) return false;\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return (\n norm1 === norm2 ||\n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2\n );\n };\n\n const hasActiveChild = (navItem: NavItem): boolean => {\n if (compareHrefs(navItem.href, activeHref)) return true;\n if (navItem.children) {\n return navItem.children.some(hasActiveChild);\n }\n return false;\n };\n\n const shouldBeExpanded =\n level === 0 ? true : (item.expanded ?? false) || (hasChildren && hasActiveChild(item));\n const [isExpanded, setIsExpanded] = useState(shouldBeExpanded);\n\n useEffect(() => {\n if (hasChildren && hasActiveChild(item)) {\n setIsExpanded(true);\n }\n }, [activeHref]);\n\n const { LinkComponent } = useComponents();\n const isGroup = !item.href;\n const isActive =\n item.href && (compareHrefs(item.href, activeId) || compareHrefs(item.href, activeHref));\n const Icon = item.icon;\n\n if (isGroup && level === 0) {\n return (\n <div id=\"nav-group\" role=\"group\" aria-label={item.toc_title}>\n <div className=\"mint:text-sm mint:text-[#242424] mint:dark:text-[#ffffff] mint:mb-2 mint:flex mint:items-start mint:gap-2 mint:pl-3 mint:font-semibold\">\n {Icon && <Icon className=\"mint:w-5 mint:h-5\" aria-hidden=\"true\" />}\n <span>{item.toc_title}</span>\n </div>\n {hasChildren && item.children && (\n <ul className=\"mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\" role=\"list\">\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n if (isGroup && level > 0) {\n return (\n <li className=\"mint:list-none\">\n <div\n id=\"nav-group-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} ${item.toc_title} section`}\n className=\"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-[3px] mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2\"\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </div>\n {hasChildren && isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n const LinkElement = LinkComponent || 'a';\n\n if (hasChildren) {\n return (\n <li className=\"mint:list-none\">\n <div\n id=\"nav-item-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} ${item.toc_title} section`}\n className={cn(\n 'mint:font-aptos mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-[3px] mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-xl mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2',\n isActive\n ? ACTIVE_ITEM_CLASSES\n : 'mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]'\n )}\n >\n <span className=\"mint:flex-1 mint:min-w-0 mint:font-aptos\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </div>\n {isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n return (\n <li className=\"mint:list-none\">\n <LinkElement\n id=\"nav-item\"\n href={item.href}\n aria-current={isActive ? 'page' : undefined}\n className={cn(\n 'mint:relative mint:flex mint:items-center mint:gap-2 mint:py-[3px] mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-xl mint:no-underline mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:[&_span]:flex-1',\n isActive\n ? ACTIVE_ITEM_CLASSES\n : 'mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]'\n )}\n >\n {item.method && (\n <MethodPill isActive={!!isActive} method={item.method} shortMethod={true} />\n )}\n {item.toc_title}\n </LinkElement>\n </li>\n );\n}\n\nexport function NavTree({\n navTree,\n activeId,\n className = '',\n activeHref,\n theme,\n bottomLinks,\n anchors,\n}: NavTreeProps) {\n const { LinkComponent } = useComponents();\n const navContentRef = useRef<HTMLDivElement>(null);\n\n // Save and restore scroll position\n useEffect(() => {\n const navElement = navContentRef.current;\n if (!navElement || !activeHref) return;\n\n const savedScrollPos = sessionStorage.getItem('nav-tree-scroll-position');\n\n if (savedScrollPos) {\n // Restore scroll position from sessionStorage\n navElement.scrollTop = parseInt(savedScrollPos, 10);\n } else {\n // If no saved position, scroll to active item\n const normalizeHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const compareHrefs = (href1: string, href2: string): boolean => {\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return (\n norm1 === norm2 ||\n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2\n );\n };\n\n requestAnimationFrame(() => {\n const allLinks = navElement.querySelectorAll('a[href]');\n let activeLink: HTMLElement | null = null;\n\n for (const link of Array.from(allLinks)) {\n const href = link.getAttribute('href');\n if (href && compareHrefs(href, activeHref)) {\n activeLink = link as HTMLElement;\n break;\n }\n }\n\n if (activeLink) {\n activeLink.scrollIntoView({\n behavior: 'instant',\n block: 'center',\n inline: 'nearest',\n });\n }\n });\n }\n\n // Save scroll position on scroll\n const handleScroll = () => {\n sessionStorage.setItem('nav-tree-scroll-position', navElement.scrollTop.toString());\n };\n\n navElement.addEventListener('scroll', handleScroll);\n return () => navElement.removeEventListener('scroll', handleScroll);\n }, [activeHref]);\n\n if (!navTree || navTree.items.length === 0) {\n return null;\n }\n\n const LinkElement = LinkComponent || 'a';\n\n return (\n <nav\n id=\"nav-tree\"\n className={cn(\n 'mint:flex mint:flex-col mint:h-full mint:min-h-0',\n className,\n theme === 'dark' && 'dark'\n )}\n aria-label=\"Documentation navigation\"\n >\n <div\n id=\"nav-tree-content\"\n ref={navContentRef}\n className={cn(\n 'mint:flex-1 mint:overflow-y-auto mint:overflow-x-hidden mint:min-h-0 mint:[scrollbar-gutter:stable] mint:md:px-4 mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30 mint:[&>*+*]:mt-[32px] mint:py-4'\n )}\n >\n {anchors && anchors.length > 0 && (\n <div id=\"nav-anchors\" className=\"mint:shrink-0 mint:w-full mint:mb-3\">\n <div className=\"mint:flex mint:flex-col\">\n {anchors.map((anchor, index) => {\n const Icon = anchor.icon;\n\n const normalizeAnchorHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const isAnchorActive = (() => {\n if (!activeHref || !anchor.href) return false;\n const normalizedActive = normalizeAnchorHref(activeHref);\n const normalizedAnchor = normalizeAnchorHref(anchor.href);\n\n const cleanActive = normalizedActive.replace(/\\/$/, '');\n const cleanAnchor = normalizedAnchor.replace(/\\/$/, '');\n\n const matches =\n cleanActive === cleanAnchor || cleanActive.startsWith(cleanAnchor + '/');\n if (!matches) return false;\n\n const longestMatchingAnchor = anchors\n .filter((a) => {\n if (!a.href) return false;\n const normalizedHref = normalizeAnchorHref(a.href);\n const cleanHref = normalizedHref.replace(/\\/$/, '');\n return cleanActive === cleanHref || cleanActive.startsWith(cleanHref + '/');\n })\n .reduce((longest, current) => {\n const longestHref = normalizeAnchorHref(longest.href || '').replace(\n /\\/$/,\n ''\n );\n const currentHref = normalizeAnchorHref(current.href || '').replace(\n /\\/$/,\n ''\n );\n return currentHref.length > longestHref.length ? current : longest;\n }, anchor);\n\n return longestMatchingAnchor === anchor;\n })();\n\n return (\n <LinkElement\n key={index}\n href={anchor.href}\n aria-current={isAnchorActive ? 'page' : undefined}\n className={cn(\n 'mint:group mint:relative mint:flex mint:items-start mint:gap-2 mint:py-2 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb]',\n isAnchorActive\n ? 'mint:text-[#141414] mint:dark:text-[#ffffff]'\n : 'mint:text-[#242424] mint:dark:text-[#adadad]'\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n 'mint:w-5 mint:h-5 mint:shrink-0',\n isAnchorActive\n ? 'mint:text-[#8251ee] mint:dark:text-[#9263f1]'\n : 'mint:text-[#6b7280] mint:dark:text-[#adadad] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1]'\n )}\n />\n )}\n <div className=\"mint:flex mint:flex-col mint:gap-0.5 mint:min-w-0\">\n <span\n className={cn(\n 'mint:font-medium',\n isAnchorActive\n ? 'mint:text-[#8251ee] mint:dark:text-[#9263f1] mint:font-semibold'\n : 'mint:text-[#141414] mint:dark:text-[#ffffff] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1]'\n )}\n >\n {anchor.title}\n </span>\n {anchor.description && (\n <span className=\"mint:text-xs mint:text-[#6b7280] mint:dark:text-[#adadad] mint:leading-snug\">\n {anchor.description}\n </span>\n )}\n </div>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n {navTree.items.map((item, index) => (\n <TreeItemComponent\n key={`${item.href}-${index}`}\n item={item}\n activeId={activeId}\n activeHref={activeHref}\n />\n ))}\n </div>\n {bottomLinks && bottomLinks.length > 0 && (\n <div\n id=\"nav-tree-bottom-links\"\n className=\"mint:shrink-0 mint:w-full mint:bg-[#f0f0f0] mint:dark:bg-[#0f0f0f] mint:mt-auto\"\n >\n <div className=\"mint:h-[0.5px] mint:w-full mint:bg-[#d1d1d1] mint:dark:bg-[#666666]\"></div>\n <div className=\"mint:flex mint:flex-col mint:py-3 mint:px-4\">\n {bottomLinks.map((link, index) => {\n const Icon = link.icon;\n if (link.component) {\n return (\n <div key={index}>\n {React.isValidElement(link.component) ? (\n React.cloneElement(link.component as React.ReactElement, {\n ...(link.component as React.ReactElement).props,\n className: cn(\n 'mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer',\n (link.component as React.ReactElement).props?.className\n ),\n children: (\n <>\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </>\n ),\n })\n ) : (\n <div className=\"mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer\">\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n {link.component}\n </div>\n )}\n </div>\n );\n }\n return (\n <LinkElement\n key={index}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mint:flex mint:items-center mint:py-2 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden\"\n >\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n </nav>\n );\n}\n"],"names":["ChevronIcon","isExpanded","jsx","cn","ACTIVE_ITEM_CLASSES","TreeItemComponent","item","activeId","level","activeHref","hasChildren","normalizeHref","href","compareHrefs","href1","href2","norm1","norm2","hasActiveChild","navItem","shouldBeExpanded","setIsExpanded","useState","useEffect","LinkComponent","useComponents","isGroup","isActive","Icon","jsxs","child","index","e","LinkElement","MethodPill","NavTree","navTree","className","theme","bottomLinks","anchors","navContentRef","useRef","navElement","savedScrollPos","allLinks","activeLink","link","handleScroll","anchor","normalizeAnchorHref","isAnchorActive","normalizedActive","normalizedAnchor","cleanActive","cleanAnchor","a","cleanHref","longest","current","longestHref","React","_a","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/nav-tree/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\n\nimport { useComponents } from '../../context/components-context';\nimport '../../styles.css';\nimport type { NavItem, NavTreeData, AnchorConfig } from '../../types';\nimport { cn } from '../../utils/cn';\nimport { MethodPill } from '../Api/MethodPill';\n\nexport { MobileNavTree } from './mobile-nav';\nexport type { MobileNavTreeProps } from './mobile-nav';\nexport type { AnchorConfig } from '../../types';\n\nexport interface BottomLinkConfig {\n href?: string;\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n component?: React.ReactNode;\n}\n\ninterface NavTreeProps {\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n activeHref?: string;\n theme?: 'light' | 'dark' | 'system';\n bottomLinks?: BottomLinkConfig[];\n anchors?: AnchorConfig[];\n}\n\ninterface TreeItemProps {\n item: NavItem;\n activeId?: string;\n level?: number;\n activeHref?: string;\n}\n\nfunction ChevronIcon({ isExpanded }: { isExpanded: boolean }) {\n return (\n <svg\n className={cn(\n 'mint:w-[12px] mint:h-[12px] mint:shrink-0 mint:text-[#707070] mint:dark:text-[#999999]',\n isExpanded ? 'mint:rotate-90' : 'mint:rotate-0'\n )}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n );\n}\n\nconst ACTIVE_ITEM_CLASSES =\n 'mint:bg-[#e6e6e6] mint:dark:bg-[#2e2e2e] mint:text-[#242424] mint:dark:text-[#ffffff] mint:font';\n\nfunction TreeItemComponent({ item, activeId, level = 0, activeHref }: TreeItemProps) {\n const hasChildren = item.children && item.children.length > 0;\n\n const normalizeHref = (href?: string): string => {\n if (!href) return '';\n const normalized = href.startsWith('/') ? href : `/${href}`;\n return normalized;\n };\n\n const compareHrefs = (href1?: string, href2?: string): boolean => {\n if (!href1 || !href2) return false;\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return (\n norm1 === norm2 ||\n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2\n );\n };\n\n const hasActiveChild = (navItem: NavItem): boolean => {\n if (compareHrefs(navItem.href, activeHref)) return true;\n if (navItem.children) {\n return navItem.children.some(hasActiveChild);\n }\n return false;\n };\n\n const shouldBeExpanded =\n level === 0 ? true : (item.expanded ?? false) || (hasChildren && hasActiveChild(item));\n const [isExpanded, setIsExpanded] = useState(shouldBeExpanded);\n\n useEffect(() => {\n if (hasChildren && hasActiveChild(item)) {\n setIsExpanded(true);\n }\n }, [activeHref]);\n\n const { LinkComponent } = useComponents();\n const isGroup = !item.href;\n const isActive =\n item.href && (compareHrefs(item.href, activeId) || compareHrefs(item.href, activeHref));\n const Icon = item.icon;\n\n if (isGroup && level === 0) {\n return (\n <div id=\"nav-group\" role=\"group\" aria-label={item.toc_title}>\n <div className=\"mint:text-sm mint:text-[#242424] mint:dark:text-[#ffffff] mint:mb-2 mint:flex mint:items-start mint:gap-2 mint:pl-3 mint:font-semibold mint:leading-[1.375rem]\">\n {Icon && <Icon className=\"mint:w-5 mint:h-5\" aria-hidden=\"true\" />}\n <span>{item.toc_title}</span>\n </div>\n {hasChildren && item.children && (\n <ul className=\"mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\" role=\"list\">\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </div>\n );\n }\n\n if (isGroup && level > 0) {\n return (\n <li className=\"mint:list-none mint:m-0.25\">\n <div\n id=\"nav-group-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} ${item.toc_title} section`}\n className=\"mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:py-[3px] mint:px-3 mint:text-sm mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:leading-[1.375rem]\"\n >\n <span className=\"mint:flex-1 mint:min-w-0\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </div>\n {hasChildren && isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n const LinkElement = LinkComponent || 'a';\n\n if (hasChildren) {\n return (\n <li className=\"mint:list-none mint:m-0.25\">\n <div\n id=\"nav-item-toggle\"\n onClick={() => setIsExpanded(!isExpanded)}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsExpanded(!isExpanded);\n }\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Collapse' : 'Expand'} ${item.toc_title} section`}\n className={cn(\n 'mint:font-aptos mint:relative mint:text-left mint:w-full mint:flex mint:items-center mint:justify-between mint:gap-2 mint:py-1 mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-lg mint:bg-transparent mint:cursor-pointer mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:leading-[1.375rem]',\n isActive\n ? ACTIVE_ITEM_CLASSES\n : 'mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]'\n )}\n >\n <span className=\"mint:flex-1 mint:min-w-0 mint:font-aptos\">{item.toc_title}</span>\n <ChevronIcon isExpanded={!!isExpanded} />\n </div>\n {isExpanded && item.children && (\n <ul\n className=\"mint:ml-3 mint:flex mint:flex-col mint:pl-0 mint:mt-0 mint:gap-0\"\n role=\"group\"\n >\n {item.children.map((child, index) => (\n <TreeItemComponent\n key={`${child.href}-${index}`}\n item={child}\n activeId={activeId}\n level={level + 1}\n activeHref={activeHref}\n />\n ))}\n </ul>\n )}\n </li>\n );\n }\n\n return (\n <li className=\"mint:list-none mint:m-0.25\">\n <LinkElement\n id=\"nav-item\"\n href={item.href}\n aria-current={isActive ? 'page' : undefined}\n className={cn(\n 'mint:relative mint:flex mint:items-center mint:gap-2 mint:py-1 mint:px-3 mint:text-[14px] mint:font-normal mint:rounded-lg mint:no-underline mint:text-[#707070] mint:dark:text-[#999999] mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:[&_span]:flex-1 mint:leading-[1.375rem]',\n isActive\n ? ACTIVE_ITEM_CLASSES\n : 'mint:hover:bg-[rgba(0,0,0,0.06)] mint:hover:text-[#242424] mint:dark:hover:bg-[rgba(128,128,128,0.05)] mint:dark:hover:text-[#ffffff]'\n )}\n >\n {item.method && (\n <MethodPill isActive={!!isActive} method={item.method} shortMethod={true} />\n )}\n {item.toc_title}\n </LinkElement>\n </li>\n );\n}\n\nexport function NavTree({\n navTree,\n activeId,\n className = '',\n activeHref,\n theme,\n bottomLinks,\n anchors,\n}: NavTreeProps) {\n const { LinkComponent } = useComponents();\n const navContentRef = useRef<HTMLDivElement>(null);\n\n // Save and restore scroll position\n useEffect(() => {\n const navElement = navContentRef.current;\n if (!navElement || !activeHref) return;\n\n const savedScrollPos = sessionStorage.getItem('nav-tree-scroll-position');\n\n if (savedScrollPos) {\n // Restore scroll position from sessionStorage\n navElement.scrollTop = parseInt(savedScrollPos, 10);\n } else {\n // If no saved position, scroll to active item\n const normalizeHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const compareHrefs = (href1: string, href2: string): boolean => {\n const norm1 = normalizeHref(href1);\n const norm2 = normalizeHref(href2);\n return (\n norm1 === norm2 ||\n norm1.replace('/docs/', '/') === norm2.replace('/docs/', '/') ||\n norm1 === norm2.replace('/docs/', '/') ||\n norm1.replace('/docs/', '/') === norm2\n );\n };\n\n requestAnimationFrame(() => {\n const allLinks = navElement.querySelectorAll('a[href]');\n let activeLink: HTMLElement | null = null;\n\n for (const link of Array.from(allLinks)) {\n const href = link.getAttribute('href');\n if (href && compareHrefs(href, activeHref)) {\n activeLink = link as HTMLElement;\n break;\n }\n }\n\n if (activeLink) {\n activeLink.scrollIntoView({\n behavior: 'instant',\n block: 'center',\n inline: 'nearest',\n });\n }\n });\n }\n\n // Save scroll position on scroll\n const handleScroll = () => {\n sessionStorage.setItem('nav-tree-scroll-position', navElement.scrollTop.toString());\n };\n\n navElement.addEventListener('scroll', handleScroll);\n return () => navElement.removeEventListener('scroll', handleScroll);\n }, [activeHref]);\n\n if (!navTree || navTree.items.length === 0) {\n return null;\n }\n\n const LinkElement = LinkComponent || 'a';\n\n return (\n <nav\n id=\"nav-tree\"\n className={cn(\n 'mint:flex mint:flex-col mint:h-full mint:min-h-0',\n className,\n theme === 'dark' && 'dark'\n )}\n aria-label=\"Documentation navigation\"\n >\n <div\n id=\"nav-tree-content\"\n ref={navContentRef}\n className={cn(\n 'mint:flex-1 mint:overflow-y-auto mint:overflow-x-hidden mint:min-h-0 mint:[scrollbar-gutter:stable] mint:md:px-4 mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30 mint:[&>*+*]:mt-[32px] mint:py-4'\n )}\n >\n {anchors && anchors.length > 0 && (\n <div id=\"nav-anchors\" className=\"mint:shrink-0 mint:w-full mint:mb-3\">\n <div className=\"mint:flex mint:flex-col\">\n {anchors.map((anchor, index) => {\n const Icon = anchor.icon;\n\n const normalizeAnchorHref = (href: string): string => {\n if (!href) return '';\n return href.startsWith('/') ? href : `/${href}`;\n };\n\n const isAnchorActive = (() => {\n if (!activeHref || !anchor.href) return false;\n const normalizedActive = normalizeAnchorHref(activeHref);\n const normalizedAnchor = normalizeAnchorHref(anchor.href);\n\n const cleanActive = normalizedActive.replace(/\\/$/, '');\n const cleanAnchor = normalizedAnchor.replace(/\\/$/, '');\n\n const matches =\n cleanActive === cleanAnchor || cleanActive.startsWith(cleanAnchor + '/');\n if (!matches) return false;\n\n const longestMatchingAnchor = anchors\n .filter((a) => {\n if (!a.href) return false;\n const normalizedHref = normalizeAnchorHref(a.href);\n const cleanHref = normalizedHref.replace(/\\/$/, '');\n return cleanActive === cleanHref || cleanActive.startsWith(cleanHref + '/');\n })\n .reduce((longest, current) => {\n const longestHref = normalizeAnchorHref(longest.href || '').replace(\n /\\/$/,\n ''\n );\n const currentHref = normalizeAnchorHref(current.href || '').replace(\n /\\/$/,\n ''\n );\n return currentHref.length > longestHref.length ? current : longest;\n }, anchor);\n\n return longestMatchingAnchor === anchor;\n })();\n\n return (\n <LinkElement\n key={index}\n href={anchor.href}\n aria-current={isAnchorActive ? 'page' : undefined}\n className={cn(\n 'mint:group mint:relative mint:flex mint:items-start mint:gap-2 mint:py-1.5 mint:px-3 mint:text-sm mint:rounded-lg mint:no-underline mint:focus-visible:outline-2 mint:focus-visible:outline-[#643fb2] mint:focus-visible:outline-offset-2 mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:leading-[1.375rem]',\n isAnchorActive\n ? 'mint:text-[#141414] mint:dark:text-[#ffffff]'\n : 'mint:text-[#242424] mint:dark:text-[#adadad]'\n )}\n >\n {Icon && (\n <Icon\n className={cn(\n 'mint:w-5 mint:h-5 mint:shrink-0',\n isAnchorActive\n ? 'mint:text-[#8251ee] mint:dark:text-[#9263f1]'\n : 'mint:text-[#6b7280] mint:dark:text-[#adadad] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1]'\n )}\n />\n )}\n <div className=\"mint:flex mint:flex-col mint:gap-0.5 mint:min-w-0\">\n <span\n className={cn(\n 'mint:font-medium',\n isAnchorActive\n ? 'mint:text-[#8251ee] mint:dark:text-[#9263f1] mint:font-semibold'\n : 'mint:text-[#141414] mint:dark:text-[#ffffff] mint:group-hover:text-[#8251ee] mint:dark:group-hover:text-[#9263f1]'\n )}\n >\n {anchor.title}\n </span>\n {anchor.description && (\n <span className=\"mint:text-xs mint:text-[#6b7280] mint:dark:text-[#adadad] mint:leading-snug\">\n {anchor.description}\n </span>\n )}\n </div>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n {navTree.items.map((item, index) => (\n <TreeItemComponent\n key={`${item.href}-${index}`}\n item={item}\n activeId={activeId}\n activeHref={activeHref}\n />\n ))}\n </div>\n {bottomLinks && bottomLinks.length > 0 && (\n <div\n id=\"nav-tree-bottom-links\"\n className=\"mint:shrink-0 mint:w-full mint:bg-[#f0f0f0] mint:dark:bg-[#0f0f0f] mint:mt-auto\"\n >\n <div className=\"mint:h-[0.5px] mint:w-full mint:bg-[#d1d1d1] mint:dark:bg-[#666666]\"></div>\n <div className=\"mint:flex mint:flex-col mint:py-3 mint:px-4\">\n {bottomLinks.map((link, index) => {\n const Icon = link.icon;\n if (link.component) {\n return (\n <div key={index}>\n {React.isValidElement(link.component) ? (\n React.cloneElement(link.component as React.ReactElement, {\n ...(link.component as React.ReactElement).props,\n className: cn(\n 'mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer',\n (link.component as React.ReactElement).props?.className\n ),\n children: (\n <>\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </>\n ),\n })\n ) : (\n <div className=\"mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:cursor-pointer\">\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n {link.component}\n </div>\n )}\n </div>\n );\n }\n return (\n <LinkElement\n key={index}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mint:flex mint:items-center mint:py-1.5 mint:gap-2 mint:text-sm mint:no-underline mint:text-[#242424] mint:dark:text-[#adadad] mint:hover:text-[#141414] mint:dark:hover:text-[#e5e7eb] mint:px-2 mint:[&>span]:flex mint:[&>span]:items-center mint:[&>span]:gap-2 mint:[&>svg:last-child]:hidden\"\n >\n <Icon className=\"mint:w-5 mint:h-5 mint:shrink-0\" />\n <span>{link.label}</span>\n </LinkElement>\n );\n })}\n </div>\n </div>\n )}\n </nav>\n );\n}\n"],"names":["ChevronIcon","isExpanded","jsx","cn","ACTIVE_ITEM_CLASSES","TreeItemComponent","item","activeId","level","activeHref","hasChildren","normalizeHref","href","compareHrefs","href1","href2","norm1","norm2","hasActiveChild","navItem","shouldBeExpanded","setIsExpanded","useState","useEffect","LinkComponent","useComponents","isGroup","isActive","Icon","jsxs","child","index","e","LinkElement","MethodPill","NavTree","navTree","className","theme","bottomLinks","anchors","navContentRef","useRef","navElement","savedScrollPos","allLinks","activeLink","link","handleScroll","anchor","normalizeAnchorHref","isAnchorActive","normalizedActive","normalizedAnchor","cleanActive","cleanAnchor","a","cleanHref","longest","current","longestHref","React","_a","Fragment"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
2
  import { Dialog as c, DialogBackdrop as d, DialogPanel as f } from "@headlessui/react";
3
- import { NavTree as p } from "./index.js";
4
- import { Dismiss16Regular as u } from "@fluentui/react-icons";
3
+ import { NavTree as u } from "./index.js";
4
+ import { Dismiss16Regular as p } from "@fluentui/react-icons";
5
5
  import { ComponentsProvider as h } from "../../context/components-context.js";
6
6
  import { cn as k } from "../../utils/cn.js";
7
7
  /* empty css */
@@ -41,8 +41,8 @@ function j({
41
41
  id: "mobile-nav",
42
42
  transition: !0,
43
43
  className: "mint:flex mint:flex-col mint:relative mint:bg-white mint:dark:bg-[#0f0f0f] mint:w-[85vw] mint:min-w-76 mint:max-w-88 mint:min-h-full mint:transition-transform mint:duration-100 mint:ease-in-out mint:data-closed:-translate-x-full",
44
- children: /* @__PURE__ */ t("div", { className: "mint:flex mint:flex-col mint:flex-1 mint:p-4 mint:pt-4 mint:pb-12 mint:overflow-y-auto mint:h-full mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30", children: /* @__PURE__ */ t(
45
- p,
44
+ children: /* @__PURE__ */ t("div", { className: "mint:flex mint:flex-col mint:flex-1 mint:p-4 mint:pt-4 mint:pb-12 mint:overflow-y-auto mint:h-full mint:[scrollbar-gutter:stable] mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30", children: /* @__PURE__ */ t(
45
+ u,
46
46
  {
47
47
  navTree: e,
48
48
  activeId: a,
@@ -69,7 +69,7 @@ const w = ({
69
69
  className: "mint:absolute mint:bg-white mint:dark:bg-[#0f0f0f] mint:rounded-full mint:top-4 mint:right-4 mint:w-8 mint:h-8 mint:flex mint:items-center mint:justify-center mint:border-none mint:cursor-pointer",
70
70
  children: [
71
71
  /* @__PURE__ */ t("span", { className: "mint:absolute mint:w-px mint:h-px mint:p-0 mint:-m-px mint:overflow-hidden mint:whitespace-nowrap mint:border-0 mint:[clip:rect(0,0,0,0)]", children: "Close navigation" }),
72
- /* @__PURE__ */ t(u, { className: "mint:w-4 mint:h-4 mint:text-[#6b7280] mint:dark:text-[#adadad] mint:hover:text-[#4b5563] mint:dark:hover:text-[#d1d5db]" })
72
+ /* @__PURE__ */ t(p, { className: "mint:w-4 mint:h-4 mint:text-[#6b7280] mint:dark:text-[#adadad] mint:hover:text-[#4b5563] mint:dark:hover:text-[#d1d5db]" })
73
73
  ]
74
74
  }
75
75
  );
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-nav.js","sources":["../../../src/components/nav-tree/mobile-nav.tsx"],"sourcesContent":["import { NavTreeData, LinkComponent } from \"../../types\";\nimport { Dialog, DialogBackdrop, DialogPanel } from \"@headlessui/react\";\nimport { NavTree, BottomLinkConfig } from \"./index\";\nimport { Dismiss16Regular } from \"@fluentui/react-icons\";\nimport { ComponentsProvider } from \"../../context/components-context\";\nimport { cn } from \"../../utils/cn\";\nimport \"../../styles.css\";\n\nexport interface MobileNavTreeProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n theme?: \"light\" | \"dark\" | \"system\";\n activeHref?: string;\n bottomLinks?: BottomLinkConfig[];\n LinkComponent?: LinkComponent;\n}\n\nexport function MobileNavTree({\n isOpen,\n setIsOpen,\n navTree,\n activeId,\n className = \"\",\n theme,\n activeHref,\n bottomLinks,\n LinkComponent,\n}: MobileNavTreeProps) {\n return (\n <ComponentsProvider LinkComponent={LinkComponent}>\n <Dialog\n open={isOpen}\n onClose={() => setIsOpen(false)}\n className={cn(\n \"mint:fixed mint:inset-0 mint:overflow-y-auto mint:z-50 mint:lg:hidden\",\n theme === \"dark\" && \"dark\"\n )}\n >\n <DialogBackdrop\n transition\n className=\"mint:fixed mint:inset-0 mint:bg-black/20 mint:dark:bg-black/80 mint:backdrop-blur mint:transition-opacity mint:duration-300 mint:ease-out mint:data-closed:opacity-0\"\n />\n <div className=\"mint:fixed mint:inset-0 mint:flex\">\n {isOpen && <CloseButton setIsOpen={setIsOpen} />}\n <DialogPanel\n id=\"mobile-nav\"\n transition\n className=\"mint:flex mint:flex-col mint:relative mint:bg-white mint:dark:bg-[#0f0f0f] mint:w-[85vw] mint:min-w-76 mint:max-w-88 mint:min-h-full mint:transition-transform mint:duration-100 mint:ease-in-out mint:data-closed:-translate-x-full\"\n >\n <div className=\"mint:flex mint:flex-col mint:flex-1 mint:p-4 mint:pt-4 mint:pb-12 mint:overflow-y-auto mint:h-full mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30\">\n <NavTree\n navTree={navTree}\n activeId={activeId}\n className={className}\n activeHref={activeHref}\n theme={theme}\n bottomLinks={bottomLinks}\n />\n </div>\n </DialogPanel>\n </div>\n </Dialog>\n </ComponentsProvider>\n );\n}\n\nconst CloseButton = ({\n setIsOpen,\n}: {\n setIsOpen: (isOpen: boolean) => void;\n}) => {\n return (\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n className=\"mint:absolute mint:bg-white mint:dark:bg-[#0f0f0f] mint:rounded-full mint:top-4 mint:right-4 mint:w-8 mint:h-8 mint:flex mint:items-center mint:justify-center mint:border-none mint:cursor-pointer\"\n >\n <span className=\"mint:absolute mint:w-px mint:h-px mint:p-0 mint:-m-px mint:overflow-hidden mint:whitespace-nowrap mint:border-0 mint:[clip:rect(0,0,0,0)]\">\n Close navigation\n </span>\n <Dismiss16Regular className=\"mint:w-4 mint:h-4 mint:text-[#6b7280] mint:dark:text-[#adadad] mint:hover:text-[#4b5563] mint:dark:hover:text-[#d1d5db]\" />\n </button>\n );\n};\n"],"names":["MobileNavTree","isOpen","setIsOpen","navTree","activeId","className","theme","activeHref","bottomLinks","LinkComponent","jsx","ComponentsProvider","jsxs","Dialog","cn","DialogBackdrop","CloseButton","DialogPanel","NavTree","Dismiss16Regular"],"mappings":";;;;;;;AAoBO,SAASA,EAAc;AAAA,EAC5B,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AACF,GAAuB;AACrB,SACE,gBAAAC,EAACC,GAAA,EAAmB,eAAeF,GACjC,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMZ;AAAA,MACN,SAAS,MAAMC,EAAU,EAAK;AAAA,MAC9B,WAAWY;AAAA,QACT;AAAA,QACAR,MAAU,UAAU;AAAA,MAAA;AAAA,MAGtB,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,YAAU;AAAA,YACV,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,gBAAAH,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,UAAAX,KAAU,gBAAAS,EAACM,KAAY,WAAAd,EAAA,CAAsB;AAAA,UAC9C,gBAAAQ;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,YAAU;AAAA,cACV,WAAU;AAAA,cAEV,UAAA,gBAAAP,EAAC,OAAA,EAAI,WAAU,4jBACb,UAAA,gBAAAA;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,SAAAf;AAAA,kBACA,UAAAC;AAAA,kBACA,WAAAC;AAAA,kBACA,YAAAE;AAAA,kBACA,OAAAD;AAAA,kBACA,aAAAE;AAAA,gBAAA;AAAA,cAAA,EACF,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEA,MAAMQ,IAAc,CAAC;AAAA,EACnB,WAAAd;AACF,MAII,gBAAAU;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,SAAS,MAAMV,EAAU,EAAK;AAAA,IAC9B,WAAU;AAAA,IAEV,UAAA;AAAA,MAAA,gBAAAQ,EAAC,QAAA,EAAK,WAAU,6IAA4I,UAAA,oBAE5J;AAAA,MACA,gBAAAA,EAACS,GAAA,EAAiB,WAAU,0HAAA,CAA0H;AAAA,IAAA;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"mobile-nav.js","sources":["../../../src/components/nav-tree/mobile-nav.tsx"],"sourcesContent":["import { NavTreeData, LinkComponent } from \"../../types\";\nimport { Dialog, DialogBackdrop, DialogPanel } from \"@headlessui/react\";\nimport { NavTree, BottomLinkConfig } from \"./index\";\nimport { Dismiss16Regular } from \"@fluentui/react-icons\";\nimport { ComponentsProvider } from \"../../context/components-context\";\nimport { cn } from \"../../utils/cn\";\nimport \"../../styles.css\";\n\nexport interface MobileNavTreeProps {\n isOpen: boolean;\n setIsOpen: (isOpen: boolean) => void;\n navTree: NavTreeData;\n activeId?: string;\n className?: string;\n theme?: \"light\" | \"dark\" | \"system\";\n activeHref?: string;\n bottomLinks?: BottomLinkConfig[];\n LinkComponent?: LinkComponent;\n}\n\nexport function MobileNavTree({\n isOpen,\n setIsOpen,\n navTree,\n activeId,\n className = \"\",\n theme,\n activeHref,\n bottomLinks,\n LinkComponent,\n}: MobileNavTreeProps) {\n return (\n <ComponentsProvider LinkComponent={LinkComponent}>\n <Dialog\n open={isOpen}\n onClose={() => setIsOpen(false)}\n className={cn(\n \"mint:fixed mint:inset-0 mint:overflow-y-auto mint:z-50 mint:lg:hidden\",\n theme === \"dark\" && \"dark\"\n )}\n >\n <DialogBackdrop\n transition\n className=\"mint:fixed mint:inset-0 mint:bg-black/20 mint:dark:bg-black/80 mint:backdrop-blur mint:transition-opacity mint:duration-300 mint:ease-out mint:data-closed:opacity-0\"\n />\n <div className=\"mint:fixed mint:inset-0 mint:flex\">\n {isOpen && <CloseButton setIsOpen={setIsOpen} />}\n <DialogPanel\n id=\"mobile-nav\"\n transition\n className=\"mint:flex mint:flex-col mint:relative mint:bg-white mint:dark:bg-[#0f0f0f] mint:w-[85vw] mint:min-w-76 mint:max-w-88 mint:min-h-full mint:transition-transform mint:duration-100 mint:ease-in-out mint:data-closed:-translate-x-full\"\n >\n <div className=\"mint:flex mint:flex-col mint:flex-1 mint:p-4 mint:pt-4 mint:pb-12 mint:overflow-y-auto mint:h-full mint:[scrollbar-gutter:stable] mint:[scrollbar-width:thin] mint:[scrollbar-color:rgba(0,0,0,0.2)_transparent] mint:dark:[scrollbar-color:rgba(255,255,255,0.2)_transparent] mint:[&::-webkit-scrollbar]:w-1 mint:[&::-webkit-scrollbar-track]:bg-transparent mint:[&::-webkit-scrollbar-thumb]:bg-black/20 mint:dark:[&::-webkit-scrollbar-thumb]:bg-white/20 mint:[&::-webkit-scrollbar-thumb]:rounded mint:[&::-webkit-scrollbar-thumb:hover]:bg-black/30 mint:dark:[&::-webkit-scrollbar-thumb:hover]:bg-white/30\">\n <NavTree\n navTree={navTree}\n activeId={activeId}\n className={className}\n activeHref={activeHref}\n theme={theme}\n bottomLinks={bottomLinks}\n />\n </div>\n </DialogPanel>\n </div>\n </Dialog>\n </ComponentsProvider>\n );\n}\n\nconst CloseButton = ({\n setIsOpen,\n}: {\n setIsOpen: (isOpen: boolean) => void;\n}) => {\n return (\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n className=\"mint:absolute mint:bg-white mint:dark:bg-[#0f0f0f] mint:rounded-full mint:top-4 mint:right-4 mint:w-8 mint:h-8 mint:flex mint:items-center mint:justify-center mint:border-none mint:cursor-pointer\"\n >\n <span className=\"mint:absolute mint:w-px mint:h-px mint:p-0 mint:-m-px mint:overflow-hidden mint:whitespace-nowrap mint:border-0 mint:[clip:rect(0,0,0,0)]\">\n Close navigation\n </span>\n <Dismiss16Regular className=\"mint:w-4 mint:h-4 mint:text-[#6b7280] mint:dark:text-[#adadad] mint:hover:text-[#4b5563] mint:dark:hover:text-[#d1d5db]\" />\n </button>\n );\n};\n"],"names":["MobileNavTree","isOpen","setIsOpen","navTree","activeId","className","theme","activeHref","bottomLinks","LinkComponent","jsx","ComponentsProvider","jsxs","Dialog","cn","DialogBackdrop","CloseButton","DialogPanel","NavTree","Dismiss16Regular"],"mappings":";;;;;;;AAoBO,SAASA,EAAc;AAAA,EAC5B,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AACF,GAAuB;AACrB,SACE,gBAAAC,EAACC,GAAA,EAAmB,eAAeF,GACjC,UAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAMZ;AAAA,MACN,SAAS,MAAMC,EAAU,EAAK;AAAA,MAC9B,WAAWY;AAAA,QACT;AAAA,QACAR,MAAU,UAAU;AAAA,MAAA;AAAA,MAGtB,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,YAAU;AAAA,YACV,WAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,gBAAAH,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,UAAAX,KAAU,gBAAAS,EAACM,KAAY,WAAAd,EAAA,CAAsB;AAAA,UAC9C,gBAAAQ;AAAA,YAACO;AAAA,YAAA;AAAA,cACC,IAAG;AAAA,cACH,YAAU;AAAA,cACV,WAAU;AAAA,cAEV,UAAA,gBAAAP,EAAC,OAAA,EAAI,WAAU,2lBACb,UAAA,gBAAAA;AAAA,gBAACQ;AAAA,gBAAA;AAAA,kBACC,SAAAf;AAAA,kBACA,UAAAC;AAAA,kBACA,WAAAC;AAAA,kBACA,YAAAE;AAAA,kBACA,OAAAD;AAAA,kBACA,aAAAE;AAAA,gBAAA;AAAA,cAAA,EACF,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEA,MAAMQ,IAAc,CAAC;AAAA,EACnB,WAAAd;AACF,MAII,gBAAAU;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,SAAS,MAAMV,EAAU,EAAK;AAAA,IAC9B,WAAU;AAAA,IAEV,UAAA;AAAA,MAAA,gBAAAQ,EAAC,QAAA,EAAK,WAAU,6IAA4I,UAAA,oBAE5J;AAAA,MACA,gBAAAA,EAACS,GAAA,EAAiB,WAAU,0HAAA,CAA0H;AAAA,IAAA;AAAA,EAAA;AAAA;"}
@@ -1,56 +1,56 @@
1
1
  import { jsx as y, jsxs as L } from "react/jsx-runtime";
2
2
  import { useState as _, useRef as I, useEffect as z } from "react";
3
3
  import { cn as A } from "../../utils/cn.js";
4
- function N({ toc: i }) {
5
- const [v, m] = _(""), d = I(!1), s = I();
4
+ function N({ toc: l }) {
5
+ const [v, a] = _(""), d = I(!1), s = I();
6
6
  return z(() => {
7
7
  var u;
8
- if (i.length === 0) return;
8
+ if (l.length === 0) return;
9
9
  d.current = !1, s.current && clearTimeout(s.current);
10
10
  const o = window.location.hash.slice(1);
11
- m(o || ((u = i[0]) == null ? void 0 : u.slug) || "");
11
+ a(o || ((u = l[0]) == null ? void 0 : u.slug) || "");
12
12
  const f = () => {
13
13
  const n = window.location.hash.slice(1);
14
- n && m(n);
14
+ n && a(n);
15
15
  }, t = document.getElementById("main-content"), x = () => {
16
16
  var B, S;
17
- if (!t) return (B = i[0]) == null ? void 0 : B.slug;
18
- const n = window.getComputedStyle(document.documentElement), w = parseFloat(n.getPropertyValue("--scroll-mt") || "0"), R = parseFloat(n.fontSize), C = w * R + 100, g = t.scrollTop, E = t.scrollHeight - t.clientHeight, T = g >= E - 10, r = i.map((l) => {
19
- const c = document.getElementById(l.slug);
17
+ if (!t) return (B = l[0]) == null ? void 0 : B.slug;
18
+ const n = window.getComputedStyle(document.documentElement), w = parseFloat(n.getPropertyValue("--scroll-mt") || "0"), R = parseFloat(n.fontSize), C = w * R + 100, g = t.scrollTop, E = t.scrollHeight - t.clientHeight, T = g >= E - 10, r = l.map((i) => {
19
+ const c = document.getElementById(i.slug);
20
20
  if (!c) return null;
21
21
  const h = c.getBoundingClientRect(), b = t.getBoundingClientRect(), k = h.top - b.top + g;
22
- return { id: l.slug, top: k };
22
+ return { id: i.slug, top: k };
23
23
  }).filter(Boolean);
24
- if (r.length === 0) return (S = i[0]) == null ? void 0 : S.slug;
24
+ if (r.length === 0) return (S = l[0]) == null ? void 0 : S.slug;
25
25
  if (T) {
26
- const l = t.getBoundingClientRect();
26
+ const i = t.getBoundingClientRect();
27
27
  for (let c = r.length - 1; c >= 0; c--) {
28
28
  const h = document.getElementById(r[c].id);
29
29
  if (h) {
30
30
  const b = h.getBoundingClientRect();
31
- if (b.top <= l.bottom && b.bottom >= l.top)
31
+ if (b.top <= i.bottom && b.bottom >= i.top)
32
32
  return r[c].id;
33
33
  }
34
34
  }
35
35
  return r[r.length - 1].id;
36
36
  }
37
37
  let p = r[0];
38
- for (const l of r)
39
- g + C >= l.top && (p = l);
38
+ for (const i of r)
39
+ g + C >= i.top && (p = i);
40
40
  return p == null ? void 0 : p.id;
41
41
  }, e = () => {
42
42
  if (d.current) return;
43
43
  const n = x();
44
- n && n !== v && (m(n), history.replaceState(null, "", `#${n}`));
44
+ n && n !== v && (a(n), history.replaceState(null, "", `#${n}`));
45
45
  };
46
46
  window.addEventListener("hashchange", f), t ? t.addEventListener("scroll", e, {
47
47
  passive: !0
48
48
  }) : window.addEventListener("scroll", e, { passive: !0 });
49
- let a;
50
- return o || (a = setTimeout(e, 100)), () => {
51
- a && clearTimeout(a), s.current && clearTimeout(s.current), window.removeEventListener("hashchange", f), t ? t.removeEventListener("scroll", e) : window.removeEventListener("scroll", e);
49
+ let m;
50
+ return o || (m = setTimeout(e, 100)), () => {
51
+ m && clearTimeout(m), s.current && clearTimeout(s.current), window.removeEventListener("hashchange", f), t ? t.removeEventListener("scroll", e) : window.removeEventListener("scroll", e);
52
52
  };
53
- }, [i, v]), /* @__PURE__ */ y("ul", { className: "mint:list-none mint:flex mint:flex-col mint:gap-2 mint:text-sm mint:text-[#6b7280] mint:dark:text-[#adadad] mint:font-medium mint:relative mint:pl-[0.15rem] mint:before:content-[''] mint:before:absolute mint:before:left-[0.15rem] mint:before:top-0 mint:before:bottom-0 mint:before:w-[2px] mint:before:bg-[#f2f3f3] mint:dark:before:bg-[#222223] mint:before:rounded-full", children: i.map((o, f) => {
53
+ }, [l, v]), /* @__PURE__ */ y("ul", { className: "mint:list-none mint:flex mint:flex-col mint:gap-1 mint:text-sm mint:text-[#6b7280] mint:dark:text-[#adadad] mint:font-medium mint:relative mint:pl-[0.15rem] mint:before:content-[''] mint:before:absolute mint:before:left-[0.15rem] mint:before:top-0 mint:before:bottom-0 mint:before:w-[2px] mint:before:bg-[#f2f3f3] mint:dark:before:bg-[#222223] mint:before:rounded-full", children: l.map((o, f) => {
54
54
  const t = v === o.slug;
55
55
  return /* @__PURE__ */ L("li", { className: "mint:relative", children: [
56
56
  t && /* @__PURE__ */ y("div", { className: "mint:absolute mint:left-0 mint:top-0 mint:bottom-0 mint:w-[2px] mint:rounded-full mint:bg-[#643fb2] mint:dark:bg-[#c9aaf9] mint:z-1" }),
@@ -59,10 +59,10 @@ function N({ toc: i }) {
59
59
  {
60
60
  href: `#${o.slug}`,
61
61
  onClick: (x) => {
62
- x.preventDefault(), m(o.slug), d.current = !0, s.current && clearTimeout(s.current);
63
- const e = document.getElementById("main-content"), a = document.getElementById(o.slug);
64
- if (e && a) {
65
- const u = window.getComputedStyle(document.documentElement), n = parseFloat(u.getPropertyValue("--scroll-mt") || "0"), w = parseFloat(u.fontSize), R = n * w, C = e.getBoundingClientRect(), E = a.getBoundingClientRect().top - C.top + e.scrollTop - R, T = e.scrollHeight - e.clientHeight, r = Math.min(E, T);
62
+ x.preventDefault(), a(o.slug), d.current = !0, s.current && clearTimeout(s.current);
63
+ const e = document.getElementById("main-content"), m = document.getElementById(o.slug);
64
+ if (e && m) {
65
+ const u = window.getComputedStyle(document.documentElement), n = parseFloat(u.getPropertyValue("--scroll-mt") || "0"), w = parseFloat(u.fontSize), R = n * w, C = e.getBoundingClientRect(), E = m.getBoundingClientRect().top - C.top + e.scrollTop - R, T = e.scrollHeight - e.clientHeight, r = Math.min(E, T);
66
66
  e.scrollTo({
67
67
  top: r,
68
68
  behavior: "instant"
@@ -73,7 +73,7 @@ function N({ toc: i }) {
73
73
  }, 100);
74
74
  },
75
75
  className: A(
76
- "mint:block mint:pl-6 mint:leading-relaxed mint:no-underline",
76
+ "mint:block mint:pl-6 mint:leading-[1.375rem] mint:no-underline",
77
77
  t ? "mint:text-[#643fb2] mint:dark:text-[#c9aaf9] mint:[text-shadow:-0.2px_0_0_currentColor,0.2px_0_0_currentColor]" : "mint:text-[#424242] mint:dark:text-[#d6d6d6] mint:dark:hover:text-[#d1d5db] mint:hover:text-[#111827]"
78
78
  ),
79
79
  children: o.title