{"version":3,"file":"Code_Block_v2_.B7RiyfJR.mjs","names":["React.useState","React.useRef","React.useCallback","_Fragment","React.Fragment"],"sources":["https:/framerusercontent.com/modules/I5QQNLDksZdRqYbGtxAy/ERKjUufGGkNGeBGRj3vU/Code_Block_v2_.js"],"sourcesContent":["// import * as React from \"react\"\n// import { createPortal } from \"react-dom\"\n// import { addPropertyControls, ControlType } from \"framer\"\n// type SyntaxVariant = \"typescript\" | \"javascript\" | \"python\" | \"curl\"\n// export type CodeSnippetItem = {\n//     language: string\n//     code: string\n//     syntax: SyntaxVariant\n// }\n// export type Props = {\n//     style?: React.CSSProperties\n//     codeSnippets: CodeSnippetItem[]\n//     apiKeyUrl: string\n//     buttonLabel: string\n//     background: string\n//     border: string\n//     codeText: string\n//     codeHighlight: string\n//     buttonText: string\n//     buttonBackground: string\n//     copyHover: string\n//     languageBackground: string\n//     menuBackground: string\n//     menuBorder: string\n//     menuItemHover: string\n//     lineNumberColor: string\n//     borderRadius: number\n//     fontSize: number\n//     lineHeight: number\n//     codeFontSize: number\n//     codeLineHeight: number\n//     fadeBreakpoint: number\n//     copySuccessBackground: string\n// }\n// const DEFAULT_SNIPPETS: CodeSnippetItem[] = [\n//     {\n//         language: \"Typescript\",\n//         syntax: \"typescript\",\n//         code: `import { ElevenLabsClient } from \"@elevenlabs/elevenlabs-js\";\n// const elevenlabs = new ElevenLabsClient();\n// const audio = await elevenlabs\n//   .textToSpeech.convert(\"NOpBlnGInO9m6vDvFkFC\", {\n//     text: \"\",\n//     modelId: \"eleven_v3\",\n//     languageCode: \"en\",\n//   });`,\n//     },\n//     {\n//         language: \"JavaScript\",\n//         syntax: \"javascript\",\n//         code: `import { ElevenLabsClient } from \"@elevenlabs/elevenlabs-js\";\n// const elevenlabs = new ElevenLabsClient();\n// const audio = await elevenlabs.textToSpeech.convert(\"NOpBlnGInO9m6vDvFkFC\", {\n//   text: \"Hello there!\",\n//   modelId: \"eleven_v3\",\n// });`,\n//     },\n//     {\n//         language: \"Python\",\n//         syntax: \"python\",\n//         code: `from elevenlabs.client import ElevenLabs\n// client = ElevenLabs()\n// audio = client.text_to_speech.convert(\n//     voice_id=\"NOpBlnGInO9m6vDvFkFC\",\n//     text=\"Hello there!\",\n//     model_id=\"eleven_v3\",\n//     language_code=\"en\",\n// )`,\n//     },\n// ]\n// function escapeHtml(line: string) {\n//     return line\n//         .replaceAll(\"&\", \"&amp;\")\n//         .replaceAll(\"<\", \"&lt;\")\n//         .replaceAll(\">\", \"&gt;\")\n// }\n// function highlightJsLike(escaped: string) {\n//     return escaped\n//         .replace(/(\\/\\/.*)$/g, '<span class=\"tok-comment\">$1</span>')\n//         .replace(\n//             /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/g,\n//             '<span class=\"tok-string\">$1</span>'\n//         )\n//         .replace(\n//             /\\b(import|from|const|let|var|new|await|return|async)\\b/g,\n//             '<span class=\"tok-keyword\">$1</span>'\n//         )\n//         .replace(\n//             /\\b(text|modelId|languageCode)\\b(?=\\s*:)/g,\n//             '<span class=\"tok-property\">$1</span>'\n//         )\n//         .replace(\n//             /\\b(ElevenLabsClient|elevenlabs|audio)\\b/g,\n//             '<span class=\"tok-variable\">$1</span>'\n//         )\n//         .replace(/\\b(\\d+(?:\\.\\d+)?)\\b/g, '<span class=\"tok-number\">$1</span>')\n// }\n// function highlightPython(escaped: string) {\n//     return escaped\n//         .replace(/(#.*)$/g, '<span class=\"tok-comment\">$1</span>')\n//         .replace(\n//             /(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/g,\n//             '<span class=\"tok-string\">$1</span>'\n//         )\n//         .replace(/\\b(from|import)\\b/g, '<span class=\"tok-keyword\">$1</span>')\n//         .replace(\n//             /\\b(client|audio|voice_id|text|model_id|language_code)\\b(?=\\s*=|\\s*:)/g,\n//             '<span class=\"tok-property\">$1</span>'\n//         )\n//         .replace(/\\b(ElevenLabs)\\b/g, '<span class=\"tok-builtin\">$1</span>')\n//         .replace(/\\b(\\d+(?:\\.\\d+)?)\\b/g, '<span class=\"tok-number\">$1</span>')\n// }\n// function highlightCurl(escaped: string) {\n//     return escaped\n//         .replace(/\\b(curl)\\b/g, '<span class=\"tok-command\">$1</span>')\n//         .replace(/(\\s-[A-Za-z]\\b)/g, '<span class=\"tok-flag\">$1</span>')\n//         .replace(\n//             /(\\$[A-Za-z_][A-Za-z0-9_]*)/g,\n//             '<span class=\"tok-env\">$1</span>'\n//         )\n//         .replace(/(\"(?:[^\"\\\\]|\\\\.)*\")/g, '<span class=\"tok-string\">$1</span>')\n//         .replace(\n//             /\\b(text|model_id)\\b(?=\\s*\":)/g,\n//             '<span class=\"tok-property\">$1</span>'\n//         )\n// }\n// function highlightLine(line: string, syntax: SyntaxVariant) {\n//     const escaped = escapeHtml(line)\n//     if (syntax === \"typescript\" || syntax === \"javascript\")\n//         return highlightJsLike(escaped)\n//     if (syntax === \"python\") return highlightPython(escaped)\n//     if (syntax === \"curl\") return highlightCurl(escaped)\n//     return escaped\n// }\n// function buttonHoverBg(hex: string): string {\n//     const m = hex.replace(\"#\", \"\").trim()\n//     if (m.length !== 6) return \"#262626\"\n//     const r = Math.max(0, parseInt(m.slice(0, 2), 16) + 18)\n//     const g = Math.max(0, parseInt(m.slice(2, 4), 16) + 18)\n//     const b = Math.max(0, parseInt(m.slice(4, 6), 16) + 18)\n//     return `#${r.toString(16).padStart(2, \"0\")}${g.toString(16).padStart(2, \"0\")}${b.toString(16).padStart(2, \"0\")}`\n// }\n// function hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n//     const m = hex.replace(\"#\", \"\").trim()\n//     if (m.length === 6) {\n//         const r = parseInt(m.slice(0, 2), 16)\n//         const g = parseInt(m.slice(2, 4), 16)\n//         const b = parseInt(m.slice(4, 6), 16)\n//         if ([r, g, b].every((n) => !Number.isNaN(n))) return { r, g, b }\n//     }\n//     return null\n// }\n// /** Framer injects layout styles on `style`; height/minHeight override breaks content-driven animation */\n// function stripLayoutOverrides(s?: React.CSSProperties) {\n//     if (!s) return {}\n//     const { height: _h, minHeight: _mh, maxHeight: _xh, ...rest } = s\n//     return rest\n// }\n// export default function CodeSnippetBlock(props: Props) {\n//     const {\n//         style,\n//         codeSnippets,\n//         apiKeyUrl,\n//         buttonLabel,\n//         background,\n//         border,\n//         codeText,\n//         codeHighlight,\n//         buttonText,\n//         buttonBackground,\n//         copyHover,\n//         languageBackground,\n//         menuBackground,\n//         menuBorder,\n//         menuItemHover,\n//         lineNumberColor,\n//         borderRadius,\n//         fontSize,\n//         lineHeight,\n//         codeFontSize,\n//         codeLineHeight,\n//         fadeBreakpoint,\n//         copySuccessBackground,\n//     } = props\n//     const list = codeSnippets?.length ? codeSnippets : DEFAULT_SNIPPETS\n//     const [index, setIndex] = React.useState(0)\n//     const [menuOpen, setMenuOpen] = React.useState(false)\n//     const [copied, setCopied] = React.useState(false)\n//     const [menuPos, setMenuPos] = React.useState({ top: 0, left: 0 })\n//     const [cardHeight, setCardHeight] = React.useState<number | null>(null)\n//     const langBtnRef = React.useRef<HTMLButtonElement>(null)\n//     const menuRef = React.useRef<HTMLUListElement>(null)\n//     const measureRef = React.useRef<HTMLDivElement>(null)\n//     const rootRef = React.useRef<HTMLDivElement>(null)\n//     const codeScrollRef = React.useRef<HTMLDivElement>(null)\n//     const [horizontalOverflow, setHorizontalOverflow] = React.useState(false)\n//     const safeIndex = Math.min(index, Math.max(0, list.length - 1))\n//     const item = list[safeIndex] ?? list[0]\n//     const syntax = item?.syntax ?? \"typescript\"\n//     React.useEffect(() => {\n//         setIndex((i) => Math.min(i, Math.max(0, list.length - 1)))\n//     }, [list.length])\n//     React.useEffect(() => {\n//         const href =\n//             \"https://fonts.googleapis.com/css2?family=Geist:wght@400;500&family=Geist+Mono:wght@400&display=swap\"\n//         if (!document.querySelector(`link[href=\"${href}\"]`)) {\n//             const link = document.createElement(\"link\")\n//             link.href = href\n//             link.rel = \"stylesheet\"\n//             document.head.appendChild(link)\n//         }\n//     }, [])\n//     const positionMenu = React.useCallback(() => {\n//         const el = langBtnRef.current\n//         if (!el) return\n//         const r = el.getBoundingClientRect()\n//         setMenuPos({ left: Math.round(r.left), top: Math.round(r.bottom + 8) })\n//     }, [])\n//     const measureCardHeight = React.useCallback(() => {\n//         const shell = measureRef.current\n//         if (!shell) return\n//         const footer = shell.querySelector(\"[data-footer]\")\n//         const codeEl = shell.querySelector(\"[data-code]\")\n//         if (!footer || !codeEl) return\n//         const cs = getComputedStyle(shell)\n//         const pad = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom)\n//         const gap = parseFloat(cs.gap || \"0\") || 24\n//         const borderY =\n//             parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth)\n//         const h =\n//             pad +\n//             borderY +\n//             gap +\n//             (codeEl as HTMLElement).scrollHeight +\n//             (footer as HTMLElement).offsetHeight +\n//             2\n//         setCardHeight(Math.max(220, Math.ceil(h)))\n//     }, [])\n//     const updateHorizontalOverflow = React.useCallback(() => {\n//         const el = codeScrollRef.current\n//         if (!el) return\n//         setHorizontalOverflow(el.scrollWidth > el.clientWidth + 0.5)\n//     }, [])\n//     React.useLayoutEffect(() => {\n//         measureCardHeight()\n//         const shell = measureRef.current\n//         if (!shell || typeof ResizeObserver === \"undefined\") return\n//         const ro = new ResizeObserver(() => {\n//             measureCardHeight()\n//             updateHorizontalOverflow()\n//         })\n//         ro.observe(shell)\n//         const codeEl = shell.querySelector(\"[data-code]\")\n//         if (codeEl) ro.observe(codeEl)\n//         const scrollEl = codeScrollRef.current\n//         if (scrollEl) ro.observe(scrollEl)\n//         updateHorizontalOverflow()\n//         return () => ro.disconnect()\n//     }, [\n//         measureCardHeight,\n//         updateHorizontalOverflow,\n//         item?.code,\n//         syntax,\n//         fontSize,\n//         lineHeight,\n//         codeFontSize,\n//         codeLineHeight,\n//         buttonLabel,\n//         list.length,\n//         safeIndex,\n//     ])\n//     const [width, setWidth] = React.useState(776)\n//     React.useLayoutEffect(() => {\n//         if (!rootRef.current) return\n//         const ro = new ResizeObserver(() => {\n//             if (rootRef.current) setWidth(rootRef.current.offsetWidth)\n//         })\n//         ro.observe(rootRef.current)\n//         setWidth(rootRef.current.offsetWidth)\n//         return () => ro.disconnect()\n//     }, [])\n//     const fadeOn = width < fadeBreakpoint\n//     let fadeW = 140\n//     let fadeOp = 1\n//     if (width <= 420) {\n//         fadeW = 96\n//         fadeOp = 0.9\n//     } else if (width <= 520) {\n//         fadeW = 116\n//         fadeOp = 0.95\n//     }\n//     const fadeReserve = fadeOn ? fadeW + 12 : 10\n//     const endPad = horizontalOverflow ? 10 : 6\n//     const codePadRight = Math.ceil(fadeReserve + endPad)\n//     const fadeOverlayBottom = 12\n//     const lineNoVeilShadow = `10px 0 18px -4px ${background}, 4px 0 12px -2px ${background}`\n//     const copyTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n//     const copy = async () => {\n//         try {\n//             await navigator.clipboard.writeText(item.code)\n//             setCopied(true)\n//             if (copyTimer.current) clearTimeout(copyTimer.current)\n//             copyTimer.current = setTimeout(() => setCopied(false), 2200)\n//         } catch {\n//             setCopied(false)\n//         }\n//     }\n//     React.useEffect(() => {\n//         if (!menuOpen) return\n//         positionMenu()\n//         const onScroll = () => positionMenu()\n//         window.addEventListener(\"resize\", positionMenu)\n//         window.addEventListener(\"scroll\", onScroll, true)\n//         return () => {\n//             window.removeEventListener(\"resize\", positionMenu)\n//             window.removeEventListener(\"scroll\", onScroll, true)\n//         }\n//     }, [menuOpen, positionMenu])\n//     React.useEffect(() => {\n//         const close = (e: MouseEvent) => {\n//             const t = e.target as Node\n//             if (menuRef.current?.contains(t)) return\n//             if (langBtnRef.current?.contains(t)) return\n//             setMenuOpen(false)\n//         }\n//         document.addEventListener(\"click\", close)\n//         return () => document.removeEventListener(\"click\", close)\n//     }, [])\n//     const lines = item.code.split(\"\\n\")\n//     const primaryHover = buttonHoverBg(buttonBackground)\n//     const rgb = hexToRgb(background)\n//     const fadeMid =\n//         rgb != null\n//             ? `rgba(${rgb.r},${rgb.g},${rgb.b},0.7)`\n//             : \"rgba(255,255,255,0.7)\"\n//     const cssVars: React.CSSProperties = {\n//         [\"--card-bg\" as string]: background,\n//         [\"--card-border\" as string]: border,\n//         [\"--code-text\" as string]: codeText,\n//         [\"--code-highlight\" as string]: codeHighlight,\n//         [\"--btn-bg\" as string]: buttonBackground,\n//         [\"--btn-text\" as string]: buttonText,\n//         [\"--btn-hover\" as string]: primaryHover,\n//         [\"--copy-hover\" as string]: copyHover,\n//         [\"--lang-bg\" as string]: languageBackground,\n//         [\"--menu-bg\" as string]: menuBackground,\n//         [\"--menu-border\" as string]: menuBorder,\n//         [\"--menu-item-hover\" as string]: menuItemHover,\n//         [\"--line-no\" as string]: lineNumberColor,\n//         [\"--radius\" as string]: `${borderRadius}px`,\n//         [\"--ui-fs\" as string]: `${fontSize}px`,\n//         [\"--ui-lh\" as string]: `${lineHeight}px`,\n//         [\"--code-fs\" as string]: `${codeFontSize}px`,\n//         [\"--code-lh\" as string]: `${codeLineHeight}px`,\n//         [\"--fade-w\" as string]: `${fadeW}px`,\n//         [\"--fade-op\" as string]: String(fadeOp),\n//         [\"--copy-success-bg\" as string]: copySuccessBackground,\n//         [\"--tok-keyword\" as string]: \"#7c3aed\",\n//         [\"--tok-string\" as string]: \"#166534\",\n//         [\"--tok-number\" as string]: \"#b45309\",\n//         [\"--tok-comment\" as string]: \"#737373\",\n//         [\"--tok-operator\" as string]: \"#4b5563\",\n//         [\"--tok-flag\" as string]: \"#be185d\",\n//         [\"--tok-env\" as string]: \"#0f766e\",\n//         [\"--tok-command\" as string]: \"#7c3aed\",\n//         [\"--tok-builtin\" as string]: \"#9333ea\",\n//     }\n//     const menuPortal =\n//         menuOpen &&\n//         typeof document !== \"undefined\" &&\n//         createPortal(\n//             <ul\n//                 ref={menuRef}\n//                 role=\"listbox\"\n//                 style={{\n//                     position: \"fixed\",\n//                     left: menuPos.left,\n//                     top: menuPos.top,\n//                     zIndex: 10000,\n//                     listStyle: \"none\",\n//                     margin: 0,\n//                     padding: 6,\n//                     minWidth: 170,\n//                     border: `1px solid ${menuBorder}`,\n//                     borderRadius: 12,\n//                     background: menuBackground,\n//                     boxShadow: \"0 10px 26px rgba(23, 23, 23, 0.1)\",\n//                 }}\n//             >\n//                 {list.map((s, i) => (\n//                     <li key={`${s.language}-${i}`}>\n//                         <button\n//                             type=\"button\"\n//                             onClick={(e) => {\n//                                 e.stopPropagation()\n//                                 setIndex(i)\n//                                 setMenuOpen(false)\n//                             }}\n//                             style={{\n//                                 width: \"100%\",\n//                                 border: \"none\",\n//                                 background:\n//                                     i === safeIndex\n//                                         ? menuItemHover\n//                                         : \"transparent\",\n//                                 borderRadius: 8,\n//                                 textAlign: \"left\",\n//                                 padding: \"8px 10px\",\n//                                 fontFamily:\n//                                     \"Geist, Inter, system-ui, sans-serif\",\n//                                 fontSize,\n//                                 lineHeight: `${lineHeight}px`,\n//                                 color: codeText,\n//                                 cursor: \"pointer\",\n//                                 fontWeight: i === safeIndex ? 500 : 400,\n//                             }}\n//                             onMouseEnter={(e) => {\n//                                 if (i !== safeIndex)\n//                                     e.currentTarget.style.background =\n//                                         menuItemHover\n//                             }}\n//                             onMouseLeave={(e) => {\n//                                 if (i !== safeIndex)\n//                                     e.currentTarget.style.background =\n//                                         \"transparent\"\n//                                 else\n//                                     e.currentTarget.style.background =\n//                                         menuItemHover\n//                             }}\n//                         >\n//                             {s.language}\n//                         </button>\n//                     </li>\n//                 ))}\n//             </ul>,\n//             document.body\n//         )\n//     return (\n//         <>\n//             <style>{`\n// .code-snippet-root .tok-keyword { color: var(--tok-keyword); }\n// .code-snippet-root .tok-property,\n// .code-snippet-root .tok-variable { color: var(--code-highlight); }\n// .code-snippet-root .tok-builtin { color: var(--tok-builtin); }\n// .code-snippet-root .tok-string { color: var(--tok-string); }\n// .code-snippet-root .tok-number { color: var(--tok-number); }\n// .code-snippet-root .tok-comment { color: var(--tok-comment); }\n// .code-snippet-root .tok-operator { color: var(--tok-operator); }\n// .code-snippet-root .tok-flag { color: var(--tok-flag); }\n// .code-snippet-root .tok-env { color: var(--tok-env); }\n// .code-snippet-root .tok-command { color: var(--tok-command); }\n// .code-snippet-root .icon-btn {\n//   transform-origin: center center;\n//   transform: scale(1);\n//   transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 120ms ease;\n// }\n// .code-snippet-root .icon-btn:hover,\n// .code-snippet-root .icon-btn:focus-visible {\n//   background: var(--copy-hover) !important;\n//   outline: none;\n// }\n// .code-snippet-root .icon-btn[data-copied=\"true\"],\n// .code-snippet-root .icon-btn[data-copied=\"true\"]:hover,\n// .code-snippet-root .icon-btn[data-copied=\"true\"]:focus-visible {\n//   background: var(--copy-success-bg) !important;\n// }\n// .code-snippet-root .icon-btn:active { transform: scale(0.96); }\n// .code-snippet-root .lang-btn {\n//   transform-origin: center center;\n//   transform: scale(1);\n//   transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 120ms ease;\n// }\n// .code-snippet-root .lang-btn:hover,\n// .code-snippet-root .lang-btn:focus-visible,\n// .code-snippet-root .lang-btn[data-open=\"true\"] {\n//   background: var(--lang-bg) !important;\n//   outline: none;\n// }\n// .code-snippet-root .lang-btn:active { transform: scale(0.96); }\n// .code-snippet-root .cta-btn {\n//   transform-origin: center center;\n//   transform: scale(1);\n//   transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 180ms ease, box-shadow 180ms ease;\n// }\n// .code-snippet-root .cta-btn:hover {\n//   background: var(--btn-hover);\n//   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n// }\n// .code-snippet-root .cta-btn:active { transform: scale(0.96); }\n// .code-snippet-root .caret[data-open=\"true\"] { transform: rotate(180deg); }\n// .code-snippet-root .code-scroll {\n//   scrollbar-width: none;\n//   -ms-overflow-style: none;\n//   overscroll-behavior: none;\n//   touch-action: pan-x;\n// }\n// .code-snippet-root .code-scroll::-webkit-scrollbar {\n//   display: none;\n//   width: 0;\n//   height: 0;\n// }\n//             `}</style>\n//             <div\n//                 ref={rootRef}\n//                 className=\"code-snippet-root\"\n//                 style={{\n//                     width: \"100%\",\n//                     height: cardHeight ?? 220,\n//                     boxSizing: \"border-box\",\n//                     overflow: \"hidden\",\n//                     transition: \"height 280ms cubic-bezier(0.4, 0, 0.2, 1)\",\n//                     ...cssVars,\n//                     ...stripLayoutOverrides(style),\n//                 }}\n//             >\n//                 <div\n//                     ref={measureRef}\n//                     style={{\n//                         width: \"100%\",\n//                         height: \"auto\",\n//                         boxSizing: \"border-box\",\n//                         background: background,\n//                         border: `1px solid ${border}`,\n//                         borderRadius: borderRadius,\n//                         padding: 16,\n//                         display: \"flex\",\n//                         flexDirection: \"column\",\n//                         gap: 24,\n//                         overflow: \"hidden\",\n//                         fontFamily: \"Geist, Inter, system-ui, sans-serif\",\n//                     }}\n//                 >\n//                     <div\n//                         style={{\n//                             position: \"relative\",\n//                             flex: 1,\n//                             minHeight: 0,\n//                             overflow: \"hidden\",\n//                             overscrollBehavior: \"none\",\n//                             borderRadius: Math.min(16, borderRadius * 0.5),\n//                             isolation: \"isolate\",\n//                         }}\n//                     >\n//                         <div\n//                             ref={codeScrollRef}\n//                             className=\"code-scroll\"\n//                             style={{\n//                                 overflowX: \"auto\",\n//                                 overflowY: \"hidden\",\n//                                 width: \"100%\",\n//                                 overscrollBehavior: \"none\",\n//                             }}\n//                         >\n//                             <div\n//                                 data-code\n//                                 style={{\n//                                     display: \"grid\",\n//                                     gridTemplateColumns:\n//                                         \"minmax(28px,28px) max-content\",\n//                                     columnGap: 10,\n//                                     width: \"max-content\",\n//                                     minWidth: \"100%\",\n//                                     boxSizing: \"border-box\",\n//                                     margin: 0,\n//                                     padding: `12px ${codePadRight}px 12px 6px`,\n//                                     fontFamily:\n//                                         '\"Geist Mono\", ui-monospace, monospace',\n//                                     fontSize: codeFontSize,\n//                                     lineHeight: `${codeLineHeight}px`,\n//                                     color: codeText,\n//                                 }}\n//                             >\n//                                 {lines.map((line, idx) => (\n//                                     <React.Fragment key={idx}>\n//                                         <span\n//                                             style={{\n//                                                 gridColumn: 1,\n//                                                 gridRow: idx + 1,\n//                                                 alignSelf: \"start\",\n//                                                 justifySelf: \"stretch\",\n//                                                 position: \"sticky\",\n//                                                 left: 0,\n//                                                 zIndex: 2,\n//                                                 width: 28,\n//                                                 minWidth: 28,\n//                                                 maxWidth: 28,\n//                                                 boxSizing: \"border-box\",\n//                                                 display: \"block\",\n//                                                 transform: \"translateZ(0)\",\n//                                                 WebkitBackfaceVisibility:\n//                                                     \"hidden\",\n//                                                 backfaceVisibility: \"hidden\",\n//                                                 color: lineNumberColor,\n//                                                 textAlign: \"right\",\n//                                                 userSelect: \"none\",\n//                                                 fontWeight: 400,\n//                                                 fontStyle: \"normal\",\n//                                                 fontSize: codeFontSize,\n//                                                 lineHeight: `${codeLineHeight}px`,\n//                                                 background: background,\n//                                                 paddingRight: 4,\n//                                                 boxShadow: lineNoVeilShadow,\n//                                                 minHeight: codeLineHeight,\n//                                             }}\n//                                         >\n//                                             {String(idx + 1).padStart(2, \"0\")}\n//                                         </span>\n//                                         <span\n//                                             style={{\n//                                                 gridColumn: 2,\n//                                                 gridRow: idx + 1,\n//                                                 alignSelf: \"start\",\n//                                                 whiteSpace: \"pre\",\n//                                                 color: codeText,\n//                                                 fontSize: codeFontSize,\n//                                                 lineHeight: `${codeLineHeight}px`,\n//                                                 minHeight: codeLineHeight,\n//                                             }}\n//                                             dangerouslySetInnerHTML={{\n//                                                 __html:\n//                                                     highlightLine(\n//                                                         line,\n//                                                         syntax\n//                                                     ) || \"&nbsp;\",\n//                                             }}\n//                                         />\n//                                     </React.Fragment>\n//                                 ))}\n//                             </div>\n//                         </div>\n//                         <div\n//                             aria-hidden\n//                             style={{\n//                                 position: \"absolute\",\n//                                 top: 12,\n//                                 right: 0,\n//                                 bottom: fadeOverlayBottom,\n//                                 width: fadeW,\n//                                 opacity: fadeOn ? fadeOp : 0,\n//                                 transition: \"opacity 140ms ease\",\n//                                 borderRadius: 12,\n//                                 pointerEvents: \"none\",\n//                                 background: `linear-gradient(270deg, ${background} 0%, ${fadeMid} 79.946%, transparent 100%)`,\n//                             }}\n//                         />\n//                     </div>\n//                     <div\n//                         data-footer\n//                         style={{\n//                             display: \"flex\",\n//                             alignItems: \"center\",\n//                             justifyContent: \"space-between\",\n//                         }}\n//                     >\n//                         <div\n//                             style={{\n//                                 display: \"flex\",\n//                                 alignItems: \"center\",\n//                                 gap: 4,\n//                             }}\n//                         >\n//                             <button\n//                                 type=\"button\"\n//                                 className=\"icon-btn\"\n//                                 data-copied={copied ? \"true\" : undefined}\n//                                 aria-label={copied ? \"Copied\" : \"Copy code\"}\n//                                 onClick={(e) => {\n//                                     e.stopPropagation()\n//                                     copy()\n//                                 }}\n//                                 style={{\n//                                     width: 40,\n//                                     height: 40,\n//                                     border: \"none\",\n//                                     background: \"transparent\",\n//                                     borderRadius: 12,\n//                                     display: \"inline-flex\",\n//                                     alignItems: \"center\",\n//                                     justifyContent: \"center\",\n//                                     padding: 8,\n//                                     cursor: \"pointer\",\n//                                 }}\n//                             >\n//                                 <span\n//                                     style={{\n//                                         position: \"relative\",\n//                                         width: 18,\n//                                         height: 18,\n//                                         display: \"block\",\n//                                     }}\n//                                 >\n//                                     <span\n//                                         style={{\n//                                             position: \"absolute\",\n//                                             inset: 0,\n//                                             opacity: copied ? 0 : 1,\n//                                             filter: copied\n//                                                 ? \"blur(4px)\"\n//                                                 : \"blur(0)\",\n//                                             transform: copied\n//                                                 ? \"scale(0.96)\"\n//                                                 : \"scale(1)\",\n//                                             transition:\n//                                                 \"opacity 220ms ease, filter 220ms ease, transform 220ms ease\",\n//                                         }}\n//                                     >\n//                                         <svg\n//                                             xmlns=\"http://www.w3.org/2000/svg\"\n//                                             width=\"18\"\n//                                             height=\"18\"\n//                                             viewBox=\"0 0 18 18\"\n//                                             fill=\"none\"\n//                                             aria-hidden\n//                                         >\n//                                             <path\n//                                                 d=\"M6.5625 6.5625V3C6.5625 2.48223 6.98223 2.0625 7.5 2.0625H15C15.5178 2.0625 15.9375 2.48223 15.9375 3V10.5C15.9375 11.0178 15.5178 11.4375 15 11.4375H11.4375\"\n//                                                 stroke=\"#737373\"\n//                                                 strokeWidth=\"1.5\"\n//                                                 strokeLinecap=\"round\"\n//                                                 strokeLinejoin=\"round\"\n//                                             />\n//                                             <path\n//                                                 d=\"M3 6.5625H10.5C11.0178 6.5625 11.4375 6.98223 11.4375 7.5V15C11.4375 15.5178 11.0178 15.9375 10.5 15.9375H3C2.48223 15.9375 2.0625 15.5178 2.0625 15V7.5C2.0625 6.98223 2.48223 6.5625 3 6.5625Z\"\n//                                                 stroke=\"#737373\"\n//                                                 strokeWidth=\"1.5\"\n//                                                 strokeLinecap=\"round\"\n//                                                 strokeLinejoin=\"round\"\n//                                             />\n//                                         </svg>\n//                                     </span>\n//                                     <span\n//                                         style={{\n//                                             position: \"absolute\",\n//                                             inset: 0,\n//                                             display: \"flex\",\n//                                             alignItems: \"center\",\n//                                             justifyContent: \"center\",\n//                                             opacity: copied ? 1 : 0,\n//                                             filter: copied\n//                                                 ? \"blur(0)\"\n//                                                 : \"blur(6px)\",\n//                                             transform: copied\n//                                                 ? \"scale(1)\"\n//                                                 : \"scale(0.94)\",\n//                                             transition:\n//                                                 \"opacity 260ms ease, filter 260ms ease, transform 260ms ease\",\n//                                         }}\n//                                     >\n//                                         <svg\n//                                             width=\"18\"\n//                                             height=\"18\"\n//                                             viewBox=\"0 0 24 24\"\n//                                             aria-hidden\n//                                         >\n//                                             <circle\n//                                                 cx=\"12\"\n//                                                 cy=\"12\"\n//                                                 r=\"10\"\n//                                                 fill=\"#16a34a\"\n//                                             />\n//                                             <path\n//                                                 d=\"M8 12.5l2.2 2.2 5.8-5.8\"\n//                                                 stroke=\"#ffffff\"\n//                                                 strokeWidth=\"2\"\n//                                                 strokeLinecap=\"round\"\n//                                                 strokeLinejoin=\"round\"\n//                                                 fill=\"none\"\n//                                             />\n//                                         </svg>\n//                                     </span>\n//                                 </span>\n//                             </button>\n//                             <button\n//                                 ref={langBtnRef}\n//                                 type=\"button\"\n//                                 className=\"lang-btn\"\n//                                 data-open={menuOpen ? \"true\" : \"false\"}\n//                                 aria-haspopup=\"listbox\"\n//                                 aria-expanded={menuOpen}\n//                                 onClick={(e) => {\n//                                     e.stopPropagation()\n//                                     setMenuOpen((o) => !o)\n//                                     if (!menuOpen) positionMenu()\n//                                 }}\n//                                 style={{\n//                                     height: 40,\n//                                     border: \"none\",\n//                                     borderRadius: 12,\n//                                     display: \"inline-flex\",\n//                                     alignItems: \"center\",\n//                                     gap: 8,\n//                                     padding: \"8px 16px\",\n//                                     cursor: \"pointer\",\n//                                     fontSize,\n//                                     lineHeight: `${lineHeight}px`,\n//                                     fontWeight: 500,\n//                                     color: codeText,\n//                                     background: \"transparent\",\n//                                 }}\n//                             >\n//                                 {item.language}\n//                                 <svg\n//                                     className=\"caret\"\n//                                     data-open={menuOpen ? \"true\" : \"false\"}\n//                                     width=\"16\"\n//                                     height=\"16\"\n//                                     viewBox=\"0 0 24 24\"\n//                                     fill=\"none\"\n//                                     aria-hidden\n//                                     style={{\n//                                         transition: \"transform 180ms ease\",\n//                                         transform: menuOpen\n//                                             ? \"rotate(180deg)\"\n//                                             : \"rotate(0)\",\n//                                     }}\n//                                 >\n//                                     <path\n//                                         d=\"M6 9l6 6 6-6\"\n//                                         stroke=\"#737373\"\n//                                         strokeWidth=\"2\"\n//                                         strokeLinecap=\"round\"\n//                                         strokeLinejoin=\"round\"\n//                                     />\n//                                 </svg>\n//                             </button>\n//                         </div>\n//                         <button\n//                             type=\"button\"\n//                             className=\"cta-btn\"\n//                             onClick={(e) => {\n//                                 e.stopPropagation()\n//                                 if (apiKeyUrl?.trim())\n//                                     window.open(\n//                                         apiKeyUrl.trim(),\n//                                         \"_blank\",\n//                                         \"noopener,noreferrer\"\n//                                     )\n//                             }}\n//                             style={{\n//                                 border: \"none\",\n//                                 borderRadius: 12,\n//                                 background: buttonBackground,\n//                                 color: buttonText,\n//                                 fontSize,\n//                                 fontFamily:\n//                                     \"Geist, Inter, system-ui, sans-serif\",\n//                                 fontWeight: 500,\n//                                 lineHeight: `${lineHeight}px`,\n//                                 padding: \"10px 18px\",\n//                                 cursor: \"pointer\",\n//                             }}\n//                         >\n//                             {buttonLabel}\n//                         </button>\n//                     </div>\n//                 </div>\n//             </div>\n//             {menuPortal}\n//         </>\n//     )\n// }\n// CodeSnippetBlock.defaultProps = {\n//     codeSnippets: DEFAULT_SNIPPETS,\n//     apiKeyUrl: \"\",\n//     buttonLabel: \"Get API key\",\n//     background: \"#FFFFFF\",\n//     border: \"#E5E5E5\",\n//     codeText: \"#404040\",\n//     codeHighlight: \"#0066CC\",\n//     buttonText: \"#FAFAFA\",\n//     buttonBackground: \"#171717\",\n//     copyHover: \"#F5F5F5\",\n//     languageBackground: \"#F5F5F5\",\n//     menuBackground: \"#FFFFFF\",\n//     menuBorder: \"#EBEBEB\",\n//     menuItemHover: \"#FAFAFA\",\n//     lineNumberColor: \"#D4D4D4\",\n//     borderRadius: 24,\n//     fontSize: 14,\n//     lineHeight: 20,\n//     codeFontSize: 16,\n//     codeLineHeight: 26,\n//     fadeBreakpoint: 700,\n//     copySuccessBackground: \"#DCFCE7\",\n// } as Partial<Props>\n// addPropertyControls(CodeSnippetBlock, {\n//     codeSnippets: {\n//         title: \"Code Snippets\",\n//         type: ControlType.Array,\n//         control: {\n//             type: ControlType.Object,\n//             controls: {\n//                 language: {\n//                     type: ControlType.String,\n//                     title: \"Language\",\n//                     defaultValue: \"Typescript\",\n//                 },\n//                 syntax: {\n//                     type: ControlType.Enum,\n//                     title: \"Syntax\",\n//                     options: [\"typescript\", \"javascript\", \"python\", \"curl\"],\n//                     optionTitles: [\n//                         \"TypeScript\",\n//                         \"JavaScript\",\n//                         \"Python\",\n//                         \"cURL\",\n//                     ],\n//                     defaultValue: \"typescript\",\n//                 },\n//                 code: {\n//                     type: ControlType.String,\n//                     title: \"Code\",\n//                     displayTextArea: true,\n//                     defaultValue: \"\",\n//                 },\n//             },\n//         },\n//         defaultValue: DEFAULT_SNIPPETS,\n//     },\n//     apiKeyUrl: {\n//         title: \"API Key URL\",\n//         type: ControlType.String,\n//         placeholder: \"https://…\",\n//     },\n//     buttonLabel: {\n//         title: \"Button Label\",\n//         type: ControlType.String,\n//         defaultValue: \"Get API key\",\n//     },\n//     background: {\n//         title: \"Background\",\n//         type: ControlType.Color,\n//         defaultValue: \"#FFFFFF\",\n//     },\n//     border: {\n//         title: \"Border\",\n//         type: ControlType.Color,\n//         defaultValue: \"#E5E5E5\",\n//     },\n//     codeText: {\n//         title: \"Code Text\",\n//         type: ControlType.Color,\n//         defaultValue: \"#404040\",\n//     },\n//     codeHighlight: {\n//         title: \"Code Highlight\",\n//         type: ControlType.Color,\n//         defaultValue: \"#0066CC\",\n//     },\n//     buttonText: {\n//         title: \"Button Text\",\n//         type: ControlType.Color,\n//         defaultValue: \"#FAFAFA\",\n//     },\n//     buttonBackground: {\n//         title: \"Button Background\",\n//         type: ControlType.Color,\n//         defaultValue: \"#171717\",\n//     },\n//     copyHover: {\n//         title: \"Copy Hover\",\n//         type: ControlType.Color,\n//         defaultValue: \"#F5F5F5\",\n//     },\n//     languageBackground: {\n//         title: \"Language Hover\",\n//         type: ControlType.Color,\n//         defaultValue: \"#F5F5F5\",\n//     },\n//     menuBackground: {\n//         title: \"Menu Background\",\n//         type: ControlType.Color,\n//         defaultValue: \"#FFFFFF\",\n//     },\n//     menuBorder: {\n//         title: \"Menu Border\",\n//         type: ControlType.Color,\n//         defaultValue: \"#EBEBEB\",\n//     },\n//     menuItemHover: {\n//         title: \"Menu Item Hover\",\n//         type: ControlType.Color,\n//         defaultValue: \"#FAFAFA\",\n//     },\n//     lineNumberColor: {\n//         title: \"Line Numbers\",\n//         type: ControlType.Color,\n//         defaultValue: \"#D4D4D4\",\n//     },\n//     borderRadius: {\n//         title: \"Border Radius\",\n//         type: ControlType.Number,\n//         defaultValue: 24,\n//         min: 0,\n//         max: 48,\n//         unit: \"px\",\n//         step: 1,\n//         displayStepper: true,\n//     },\n//     fontSize: {\n//         title: \"Font Size\",\n//         type: ControlType.Number,\n//         defaultValue: 14,\n//         min: 10,\n//         max: 20,\n//         unit: \"px\",\n//         step: 1,\n//         displayStepper: true,\n//     },\n//     lineHeight: {\n//         title: \"Line Height\",\n//         type: ControlType.Number,\n//         defaultValue: 20,\n//         min: 14,\n//         max: 32,\n//         unit: \"px\",\n//         step: 1,\n//         displayStepper: true,\n//     },\n//     codeFontSize: {\n//         title: \"Code Font Size\",\n//         type: ControlType.Number,\n//         defaultValue: 16,\n//         min: 11,\n//         max: 22,\n//         unit: \"px\",\n//         step: 1,\n//         displayStepper: true,\n//     },\n//     codeLineHeight: {\n//         title: \"Code Line Height\",\n//         type: ControlType.Number,\n//         defaultValue: 26,\n//         min: 16,\n//         max: 36,\n//         unit: \"px\",\n//         step: 1,\n//         displayStepper: true,\n//     },\n//     fadeBreakpoint: {\n//         title: \"Fade Breakpoint\",\n//         type: ControlType.Number,\n//         defaultValue: 700,\n//         min: 200,\n//         max: 1200,\n//         unit: \"px\",\n//         step: 10,\n//         description:\n//             \"Show right-edge fade when frame width is below this value.\",\n//     },\n//     copySuccessBackground: {\n//         title: \"Copy Success BG\",\n//         type: ControlType.Color,\n//         defaultValue: \"#DCFCE7\",\n//     },\n// })\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";const DEFAULT_SNIPPETS=[{language:\"Typescript\",syntax:\"typescript\",code:`import { ElevenLabsClient } from \"@elevenlabs/elevenlabs-js\";\n\nconst elevenlabs = new ElevenLabsClient();\nconst audio = await elevenlabs\n  .textToSpeech.convert(\"NOpBlnGInO9m6vDvFkFC\", {\n    text: \"\",\n    modelId: \"eleven_v3\",\n    languageCode: \"en\",\n  });`},{language:\"JavaScript\",syntax:\"javascript\",code:`import { ElevenLabsClient } from \"@elevenlabs/elevenlabs-js\";\n\nconst elevenlabs = new ElevenLabsClient();\nconst audio = await elevenlabs.textToSpeech.convert(\"NOpBlnGInO9m6vDvFkFC\", {\n  text: \"Hello there!\",\n  modelId: \"eleven_v3\",\n});`},{language:\"Python\",syntax:\"python\",code:`from elevenlabs.client import ElevenLabs\n\nclient = ElevenLabs()\naudio = client.text_to_speech.convert(\n    voice_id=\"NOpBlnGInO9m6vDvFkFC\",\n    text=\"Hello there!\",\n    model_id=\"eleven_v3\",\n    language_code=\"en\",\n)`}];function escapeHtml(line){return line.replaceAll(\"&\",\"&amp;\").replaceAll(\"<\",\"&lt;\").replaceAll(\">\",\"&gt;\").replaceAll(\"`\",\"&#96;\");}function highlightJsLike(escaped){return escaped.replace(/(\\/\\/.*)$/g,'<span class=\"tok-comment\">$1</span>').replace(/(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/g,'<span class=\"tok-string\">$1</span>').replace(/\\b(import|from|const|let|var|new|await|return|async)\\b/g,'<span class=\"tok-keyword\">$1</span>').replace(/\\b(text|modelId|languageCode)\\b(?=\\s*:)/g,'<span class=\"tok-property\">$1</span>').replace(/\\b(ElevenLabsClient|elevenlabs|audio)\\b/g,'<span class=\"tok-variable\">$1</span>').replace(/\\b(\\d+(?:\\.\\d+)?)\\b/g,'<span class=\"tok-number\">$1</span>');}function highlightPython(escaped){return escaped.replace(/(#.*)$/g,'<span class=\"tok-comment\">$1</span>').replace(/(\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/g,'<span class=\"tok-string\">$1</span>').replace(/\\b(from|import)\\b/g,'<span class=\"tok-keyword\">$1</span>').replace(/\\b(client|audio|voice_id|text|model_id|language_code)\\b(?=\\s*=|\\s*:)/g,'<span class=\"tok-property\">$1</span>').replace(/\\b(ElevenLabs)\\b/g,'<span class=\"tok-builtin\">$1</span>').replace(/\\b(\\d+(?:\\.\\d+)?)\\b/g,'<span class=\"tok-number\">$1</span>');}function highlightCurl(escaped){return escaped.replace(/(\"(?:[^\"\\\\]|\\\\.)*\")/g,'<span class=\"tok-string\">$1</span>').replace(/\\b(curl)\\b/g,'<span class=\"tok-command\">$1</span>').replace(/(\\s-[A-Za-z]\\b)/g,'<span class=\"tok-flag\">$1</span>').replace(/(\\$[A-Za-z_][A-Za-z0-9_]*)/g,'<span class=\"tok-env\">$1</span>').replace(/\\b(text|model_id)\\b(?=\\s*\":)/g,'<span class=\"tok-property\">$1</span>');}function highlightLine(line,syntax){const escaped=escapeHtml(line);if(syntax===\"typescript\"||syntax===\"javascript\")return highlightJsLike(escaped);if(syntax===\"python\")return highlightPython(escaped);if(syntax===\"curl\")return highlightCurl(escaped);return escaped;}function buttonHoverBg(hex){const m=hex.replace(\"#\",\"\").trim();if(m.length!==6)return\"#262626\";const r=Math.max(0,parseInt(m.slice(0,2),16)+18);const g=Math.max(0,parseInt(m.slice(2,4),16)+18);const b=Math.max(0,parseInt(m.slice(4,6),16)+18);return`#${r.toString(16).padStart(2,\"0\")}${g.toString(16).padStart(2,\"0\")}${b.toString(16).padStart(2,\"0\")}`;}function hexToRgb(hex){const m=hex.replace(\"#\",\"\").trim();if(m.length===6){const r=parseInt(m.slice(0,2),16);const g=parseInt(m.slice(2,4),16);const b=parseInt(m.slice(4,6),16);if([r,g,b].every(n=>!Number.isNaN(n)))return{r,g,b};}return null;}function stripLayoutOverrides(s){if(!s)return{};const{height:_h,minHeight:_mh,maxHeight:_xh,...rest}=s;return rest;}export default function CodeSnippetBlock(props){const{style,codeSnippets,apiKeyUrl,buttonLabel,background,border,codeText,codeHighlight,buttonText,buttonBackground,copyHover,languageBackground,menuBackground,menuBorder,menuItemHover,lineNumberColor,borderRadius,fontSize,lineHeight,codeFontSize,codeLineHeight,fadeBreakpoint,copySuccessBackground}=props;const list=codeSnippets?.length?codeSnippets:DEFAULT_SNIPPETS;const[index,setIndex]=React.useState(0);const[menuOpen,setMenuOpen]=React.useState(false);const[copied,setCopied]=React.useState(false);const[menuPos,setMenuPos]=React.useState({top:0,left:0});const[cardHeight,setCardHeight]=React.useState(null);const langBtnRef=React.useRef(null);const menuRef=React.useRef(null);const measureRef=React.useRef(null);const rootRef=React.useRef(null);const codeScrollRef=React.useRef(null);const[horizontalOverflow,setHorizontalOverflow]=React.useState(false);const safeIndex=Math.min(index,Math.max(0,list.length-1));const item=list[safeIndex]??list[0];const syntax=item?.syntax??\"typescript\";React.useEffect(()=>{setIndex(i=>Math.min(i,Math.max(0,list.length-1)));},[list.length]);React.useEffect(()=>{const href=\"https://fonts.googleapis.com/css2?family=Geist:wght@400;500&family=Geist+Mono:wght@400&display=swap\";if(!document.querySelector(`link[href=\"${href}\"]`)){const link=document.createElement(\"link\");link.href=href;link.rel=\"stylesheet\";document.head.appendChild(link);}},[]);const positionMenu=React.useCallback(()=>{const el=langBtnRef.current;if(!el)return;const r=el.getBoundingClientRect();setMenuPos({left:Math.round(r.left),top:Math.round(r.bottom+8)});},[]);const measureCardHeight=React.useCallback(()=>{const shell=measureRef.current;if(!shell)return;const footer=shell.querySelector(\"[data-footer]\");const codeEl=shell.querySelector(\"[data-code]\");if(!footer||!codeEl)return;const cs=getComputedStyle(shell);const pad=parseFloat(cs.paddingTop)+parseFloat(cs.paddingBottom);const gap=parseFloat(cs.gap||\"0\")||24;const borderY=parseFloat(cs.borderTopWidth)+parseFloat(cs.borderBottomWidth);const h=pad+borderY+gap+codeEl.scrollHeight+footer.offsetHeight+2;setCardHeight(Math.max(220,Math.ceil(h)));},[]);const updateHorizontalOverflow=React.useCallback(()=>{const el=codeScrollRef.current;if(!el)return;setHorizontalOverflow(el.scrollWidth>el.clientWidth+.5);},[]);React.useLayoutEffect(()=>{measureCardHeight();const shell=measureRef.current;if(!shell||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(()=>{measureCardHeight();updateHorizontalOverflow();});ro.observe(shell);const codeEl=shell.querySelector(\"[data-code]\");if(codeEl)ro.observe(codeEl);const scrollEl=codeScrollRef.current;if(scrollEl)ro.observe(scrollEl);updateHorizontalOverflow();return()=>ro.disconnect();},[measureCardHeight,updateHorizontalOverflow,item?.code,syntax,fontSize,lineHeight,codeFontSize,codeLineHeight,buttonLabel,list.length,safeIndex]);const[width,setWidth]=React.useState(776);React.useLayoutEffect(()=>{if(!rootRef.current)return;const ro=new ResizeObserver(()=>{if(rootRef.current)setWidth(rootRef.current.offsetWidth);});ro.observe(rootRef.current);setWidth(rootRef.current.offsetWidth);return()=>ro.disconnect();},[]);const fadeOn=width<fadeBreakpoint;let fadeW=140;let fadeOp=1;if(width<=420){fadeW=96;fadeOp=.9;}else if(width<=520){fadeW=116;fadeOp=.95;}const fadeReserve=fadeOn?fadeW+12:10;const endPad=horizontalOverflow?10:6;const codePadRight=Math.ceil(fadeReserve+endPad);const fadeOverlayBottom=12;const lineNoVeilShadow=`10px 0 18px -4px ${background}, 4px 0 12px -2px ${background}`;const copyTimer=React.useRef(null);const copy=async()=>{try{await navigator.clipboard.writeText(item.code);setCopied(true);if(copyTimer.current)clearTimeout(copyTimer.current);copyTimer.current=setTimeout(()=>setCopied(false),2200);}catch{setCopied(false);}};React.useEffect(()=>{if(!menuOpen)return;positionMenu();const onScroll=()=>positionMenu();window.addEventListener(\"resize\",positionMenu);window.addEventListener(\"scroll\",onScroll,true);return()=>{window.removeEventListener(\"resize\",positionMenu);window.removeEventListener(\"scroll\",onScroll,true);};},[menuOpen,positionMenu]);React.useEffect(()=>{const close=e=>{const t=e.target;if(menuRef.current?.contains(t))return;if(langBtnRef.current?.contains(t))return;setMenuOpen(false);};document.addEventListener(\"click\",close);return()=>document.removeEventListener(\"click\",close);},[]);const lines=item.code.split(\"\\n\");const primaryHover=buttonHoverBg(buttonBackground);const rgb=hexToRgb(background);const fadeMid=rgb!=null?`rgba(${rgb.r},${rgb.g},${rgb.b},0.7)`:\"rgba(255,255,255,0.7)\";const cssVars={[\"--card-bg\"]:background,[\"--card-border\"]:border,[\"--code-text\"]:codeText,[\"--code-highlight\"]:codeHighlight,[\"--btn-bg\"]:buttonBackground,[\"--btn-text\"]:buttonText,[\"--btn-hover\"]:primaryHover,[\"--copy-hover\"]:copyHover,[\"--lang-bg\"]:languageBackground,[\"--menu-bg\"]:menuBackground,[\"--menu-border\"]:menuBorder,[\"--menu-item-hover\"]:menuItemHover,[\"--line-no\"]:lineNumberColor,[\"--radius\"]:`${borderRadius}px`,[\"--ui-fs\"]:`${fontSize}px`,[\"--ui-lh\"]:`${lineHeight}px`,[\"--code-fs\"]:`${codeFontSize}px`,[\"--code-lh\"]:`${codeLineHeight}px`,[\"--fade-w\"]:`${fadeW}px`,[\"--fade-op\"]:String(fadeOp),[\"--copy-success-bg\"]:copySuccessBackground,[\"--tok-keyword\"]:\"#7c3aed\",[\"--tok-string\"]:\"#166534\",[\"--tok-number\"]:\"#b45309\",[\"--tok-comment\"]:\"#737373\",[\"--tok-operator\"]:\"#4b5563\",[\"--tok-flag\"]:\"#be185d\",[\"--tok-env\"]:\"#0f766e\",[\"--tok-command\"]:\"#7c3aed\",[\"--tok-builtin\"]:\"#9333ea\"};const menuPortal=menuOpen&&typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"ul\",{ref:menuRef,role:\"listbox\",style:{position:\"fixed\",left:menuPos.left,top:menuPos.top,zIndex:1e4,listStyle:\"none\",margin:0,padding:6,minWidth:170,border:`1px solid ${menuBorder}`,borderRadius:12,background:menuBackground,boxShadow:\"0 10px 26px rgba(23, 23, 23, 0.1)\"},children:list.map((s,i)=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:e=>{e.stopPropagation();setIndex(i);setMenuOpen(false);},style:{width:\"100%\",border:\"none\",background:i===safeIndex?menuItemHover:\"transparent\",borderRadius:8,textAlign:\"left\",padding:\"8px 10px\",fontFamily:\"Geist, Inter, system-ui, sans-serif\",fontSize,lineHeight:`${lineHeight}px`,color:codeText,cursor:\"pointer\",fontWeight:i===safeIndex?500:400},onMouseEnter:e=>{if(i!==safeIndex)e.currentTarget.style.background=menuItemHover;},onMouseLeave:e=>{if(i!==safeIndex)e.currentTarget.style.background=\"transparent\";else e.currentTarget.style.background=menuItemHover;},children:s.language})},`${s.language}-${i}`))}),document.body);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n.code-snippet-root .tok-keyword { color: var(--tok-keyword); }\n.code-snippet-root .tok-property,\n.code-snippet-root .tok-variable { color: var(--code-highlight); }\n.code-snippet-root .tok-builtin { color: var(--tok-builtin); }\n.code-snippet-root .tok-string { color: var(--tok-string); }\n.code-snippet-root .tok-number { color: var(--tok-number); }\n.code-snippet-root .tok-comment { color: var(--tok-comment); }\n.code-snippet-root .tok-operator { color: var(--tok-operator); }\n.code-snippet-root .tok-flag { color: var(--tok-flag); }\n.code-snippet-root .tok-env { color: var(--tok-env); }\n.code-snippet-root .tok-command { color: var(--tok-command); }\n.code-snippet-root .icon-btn {\n  transform-origin: center center;\n  transform: scale(1);\n  transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 120ms ease;\n}\n.code-snippet-root .icon-btn:hover,\n.code-snippet-root .icon-btn:focus-visible {\n  background: var(--copy-hover) !important;\n  outline: none;\n}\n.code-snippet-root .icon-btn[data-copied=\"true\"],\n.code-snippet-root .icon-btn[data-copied=\"true\"]:hover,\n.code-snippet-root .icon-btn[data-copied=\"true\"]:focus-visible {\n  background: var(--copy-success-bg) !important;\n}\n.code-snippet-root .icon-btn:active { transform: scale(0.96); }\n.code-snippet-root .lang-btn {\n  transform-origin: center center;\n  transform: scale(1);\n  transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 120ms ease;\n}\n.code-snippet-root .lang-btn:hover,\n.code-snippet-root .lang-btn:focus-visible,\n.code-snippet-root .lang-btn[data-open=\"true\"] {\n  background: var(--lang-bg) !important;\n  outline: none;\n}\n.code-snippet-root .lang-btn:active { transform: scale(0.96); }\n.code-snippet-root .cta-btn {\n  transform-origin: center center;\n  transform: scale(1);\n  transition: transform 120ms cubic-bezier(0.4, 0, 0.2, 1), background-color 180ms ease, box-shadow 180ms ease;\n}\n.code-snippet-root .cta-btn:hover {\n  background: var(--btn-hover);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);\n}\n.code-snippet-root .cta-btn:active { transform: scale(0.96); }\n.code-snippet-root .caret[data-open=\"true\"] { transform: rotate(180deg); }\n.code-snippet-root .code-scroll {\n  scrollbar-width: none;\n  -ms-overflow-style: none;\n  overscroll-behavior: none;\n  touch-action: pan-x;\n}\n.code-snippet-root .code-scroll::-webkit-scrollbar {\n  display: none;\n  width: 0;\n  height: 0;\n}\n            `}),/*#__PURE__*/_jsx(\"div\",{ref:rootRef,className:\"code-snippet-root\",style:{width:\"100%\",height:cardHeight??220,boxSizing:\"border-box\",overflow:\"hidden\",transition:\"height 280ms cubic-bezier(0.4, 0, 0.2, 1)\",...cssVars,...stripLayoutOverrides(style)},children:/*#__PURE__*/_jsxs(\"div\",{ref:measureRef,style:{width:\"100%\",height:\"auto\",boxSizing:\"border-box\",background:background,border:`1px solid ${border}`,borderRadius:borderRadius,padding:16,display:\"flex\",flexDirection:\"column\",gap:24,overflow:\"hidden\",fontFamily:\"Geist, Inter, system-ui, sans-serif\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",flex:1,minHeight:0,overflow:\"hidden\",overscrollBehavior:\"none\",borderRadius:Math.min(16,borderRadius*.5),isolation:\"isolate\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:codeScrollRef,className:\"code-scroll\",style:{overflowX:\"auto\",overflowY:\"hidden\",width:\"100%\",overscrollBehavior:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{\"data-code\":true,style:{display:\"grid\",gridTemplateColumns:\"minmax(28px,28px) max-content\",columnGap:10,width:\"max-content\",minWidth:\"100%\",boxSizing:\"border-box\",margin:0,padding:`12px ${codePadRight}px 12px 6px`,fontFamily:'\"Geist Mono\", ui-monospace, monospace',fontSize:codeFontSize,lineHeight:`${codeLineHeight}px`,color:codeText},children:lines.map((line,idx)=>/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:{gridColumn:1,gridRow:idx+1,alignSelf:\"start\",justifySelf:\"stretch\",position:\"sticky\",left:0,zIndex:2,width:28,minWidth:28,maxWidth:28,boxSizing:\"border-box\",display:\"block\",transform:\"translateZ(0)\",WebkitBackfaceVisibility:\"hidden\",backfaceVisibility:\"hidden\",color:lineNumberColor,textAlign:\"right\",userSelect:\"none\",fontWeight:400,fontStyle:\"normal\",fontSize:codeFontSize,lineHeight:`${codeLineHeight}px`,background:background,paddingRight:4,boxShadow:lineNoVeilShadow,minHeight:codeLineHeight},children:String(idx+1).padStart(2,\"0\")}),/*#__PURE__*/_jsx(\"span\",{style:{gridColumn:2,gridRow:idx+1,alignSelf:\"start\",whiteSpace:\"pre\",color:codeText,fontSize:codeFontSize,lineHeight:`${codeLineHeight}px`,minHeight:codeLineHeight},dangerouslySetInnerHTML:{__html:highlightLine(line,syntax)||\"&nbsp;\"}})]},idx))})}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",top:12,right:0,bottom:fadeOverlayBottom,width:fadeW,opacity:fadeOn?fadeOp:0,transition:\"opacity 140ms ease\",borderRadius:12,pointerEvents:\"none\",background:`linear-gradient(270deg, ${background} 0%, ${fadeMid} 79.946%, transparent 100%)`}})]}),/*#__PURE__*/_jsxs(\"div\",{\"data-footer\":true,style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:4},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"icon-btn\",\"data-copied\":copied?\"true\":undefined,\"aria-label\":copied?\"Copied\":\"Copy code\",onClick:e=>{e.stopPropagation();copy();},style:{width:40,height:40,border:\"none\",background:\"transparent\",borderRadius:12,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",padding:8,cursor:\"pointer\"},children:/*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",width:18,height:18,display:\"block\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,opacity:copied?0:1,filter:copied?\"blur(4px)\":\"blur(0)\",transform:copied?\"scale(0.96)\":\"scale(1)\",transition:\"opacity 220ms ease, filter 220ms ease, transform 220ms ease\"},children:/*#__PURE__*/_jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"18\",height:\"18\",viewBox:\"0 0 18 18\",fill:\"none\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"path\",{d:\"M6.5625 6.5625V3C6.5625 2.48223 6.98223 2.0625 7.5 2.0625H15C15.5178 2.0625 15.9375 2.48223 15.9375 3V10.5C15.9375 11.0178 15.5178 11.4375 15 11.4375H11.4375\",stroke:\"#737373\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M3 6.5625H10.5C11.0178 6.5625 11.4375 6.98223 11.4375 7.5V15C11.4375 15.5178 11.0178 15.9375 10.5 15.9375H3C2.48223 15.9375 2.0625 15.5178 2.0625 15V7.5C2.0625 6.98223 2.48223 6.5625 3 6.5625Z\",stroke:\"#737373\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})]})}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",opacity:copied?1:0,filter:copied?\"blur(0)\":\"blur(6px)\",transform:copied?\"scale(1)\":\"scale(0.94)\",transition:\"opacity 260ms ease, filter 260ms ease, transform 260ms ease\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"18\",height:\"18\",viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\",fill:\"#16a34a\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M8 12.5l2.2 2.2 5.8-5.8\",stroke:\"#ffffff\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",fill:\"none\"})]})})]})}),/*#__PURE__*/_jsxs(\"button\",{ref:langBtnRef,type:\"button\",className:\"lang-btn\",\"data-open\":menuOpen?\"true\":\"false\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":menuOpen,onClick:e=>{e.stopPropagation();setMenuOpen(o=>!o);if(!menuOpen)positionMenu();},style:{height:40,border:\"none\",borderRadius:12,display:\"inline-flex\",alignItems:\"center\",gap:8,padding:\"8px 16px\",cursor:\"pointer\",fontSize,lineHeight:`${lineHeight}px`,fontWeight:500,color:codeText,background:\"transparent\"},children:[item.language,/*#__PURE__*/_jsx(\"svg\",{className:\"caret\",\"data-open\":menuOpen?\"true\":\"false\",width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"none\",\"aria-hidden\":true,style:{transition:\"transform 180ms ease\",transform:menuOpen?\"rotate(180deg)\":\"rotate(0)\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M6 9l6 6 6-6\",stroke:\"#737373\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})]})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"cta-btn\",onClick:e=>{e.stopPropagation();if(apiKeyUrl?.trim())window.open(apiKeyUrl.trim(),\"_blank\",\"noopener,noreferrer\");},style:{border:\"none\",borderRadius:12,background:buttonBackground,color:buttonText,fontSize,fontFamily:\"Geist, Inter, system-ui, sans-serif\",fontWeight:500,lineHeight:`${lineHeight}px`,padding:\"10px 18px\",cursor:\"pointer\"},children:buttonLabel})]})]})}),menuPortal]});}CodeSnippetBlock.defaultProps={codeSnippets:DEFAULT_SNIPPETS,apiKeyUrl:\"\",buttonLabel:\"Get API key\",background:\"#FFFFFF\",border:\"#E5E5E5\",codeText:\"#404040\",codeHighlight:\"#0066CC\",buttonText:\"#FAFAFA\",buttonBackground:\"#171717\",copyHover:\"#F5F5F5\",languageBackground:\"#F5F5F5\",menuBackground:\"#FFFFFF\",menuBorder:\"#EBEBEB\",menuItemHover:\"#FAFAFA\",lineNumberColor:\"#D4D4D4\",borderRadius:24,fontSize:14,lineHeight:20,codeFontSize:16,codeLineHeight:26,fadeBreakpoint:700,copySuccessBackground:\"#DCFCE7\"};addPropertyControls(CodeSnippetBlock,{codeSnippets:{title:\"Code Snippets\",type:ControlType.Array,control:{type:ControlType.Object,controls:{language:{type:ControlType.String,title:\"Language\",defaultValue:\"Typescript\"},syntax:{type:ControlType.Enum,title:\"Syntax\",options:[\"typescript\",\"javascript\",\"python\",\"curl\"],optionTitles:[\"TypeScript\",\"JavaScript\",\"Python\",\"cURL\"],defaultValue:\"typescript\"},code:{type:ControlType.String,title:\"Code\",displayTextArea:true,defaultValue:\"\"}}},defaultValue:DEFAULT_SNIPPETS},apiKeyUrl:{title:\"API Key URL\",type:ControlType.String,placeholder:\"https://…\"},buttonLabel:{title:\"Button Label\",type:ControlType.String,defaultValue:\"Get API key\"},background:{title:\"Background\",type:ControlType.Color,defaultValue:\"#FFFFFF\"},border:{title:\"Border\",type:ControlType.Color,defaultValue:\"#E5E5E5\"},codeText:{title:\"Code Text\",type:ControlType.Color,defaultValue:\"#404040\"},codeHighlight:{title:\"Code Highlight\",type:ControlType.Color,defaultValue:\"#0066CC\"},buttonText:{title:\"Button Text\",type:ControlType.Color,defaultValue:\"#FAFAFA\"},buttonBackground:{title:\"Button Background\",type:ControlType.Color,defaultValue:\"#171717\"},copyHover:{title:\"Copy Hover\",type:ControlType.Color,defaultValue:\"#F5F5F5\"},languageBackground:{title:\"Language Hover\",type:ControlType.Color,defaultValue:\"#F5F5F5\"},menuBackground:{title:\"Menu Background\",type:ControlType.Color,defaultValue:\"#FFFFFF\"},menuBorder:{title:\"Menu Border\",type:ControlType.Color,defaultValue:\"#EBEBEB\"},menuItemHover:{title:\"Menu Item Hover\",type:ControlType.Color,defaultValue:\"#FAFAFA\"},lineNumberColor:{title:\"Line Numbers\",type:ControlType.Color,defaultValue:\"#D4D4D4\"},borderRadius:{title:\"Border Radius\",type:ControlType.Number,defaultValue:24,min:0,max:48,unit:\"px\",step:1,displayStepper:true},fontSize:{title:\"Font Size\",type:ControlType.Number,defaultValue:14,min:10,max:20,unit:\"px\",step:1,displayStepper:true},lineHeight:{title:\"Line Height\",type:ControlType.Number,defaultValue:20,min:14,max:32,unit:\"px\",step:1,displayStepper:true},codeFontSize:{title:\"Code Font Size\",type:ControlType.Number,defaultValue:16,min:11,max:22,unit:\"px\",step:1,displayStepper:true},codeLineHeight:{title:\"Code Line Height\",type:ControlType.Number,defaultValue:26,min:16,max:36,unit:\"px\",step:1,displayStepper:true},fadeBreakpoint:{title:\"Fade Breakpoint\",type:ControlType.Number,defaultValue:700,min:200,max:1200,unit:\"px\",step:10,description:\"Show right-edge fade when frame width is below this value.\"},copySuccessBackground:{title:\"Copy Success BG\",type:ControlType.Color,defaultValue:\"#DCFCE7\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CodeSnippetBlock\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"CodeSnippetItem\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Code_Block_v2_.map"],"mappings":"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"}