{"version":3,"file":"CopyCodeBlock.DMU7TyL9.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/dMPIqpDUISKEycyUptle/OarAZ6sD8ruNUy5rtZtG/CopyCodeBlock.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Framer passes Partial<Props> into `hidden` callbacks.\nconst hideWithoutHeader=p=>!p.showHeader;const SCROLLBAR_CSS=`\n.bm-code-scroll::-webkit-scrollbar { width: 10px; height: 10px; }\n.bm-code-scroll::-webkit-scrollbar-track { background: transparent; }\n.bm-code-scroll::-webkit-scrollbar-thumb {\n    background: rgba(255, 255, 255, 0.14);\n    border-radius: 8px;\n    border: 2px solid transparent;\n    background-clip: content-box;\n}\n.bm-code-scroll::-webkit-scrollbar-thumb:hover {\n    background: rgba(255, 255, 255, 0.26);\n    background-clip: content-box;\n}\n.bm-code-scroll::-webkit-scrollbar-corner { background: transparent; }\n.bm-code-scroll { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; }\n`;/**\n * Code block with one-click copy.\n *\n * Height is resizable: set H to a fixed value (or Fill) in Framer and the code\n * area scrolls inside. Leave H on Fit and the block hugs its content, optionally\n * capped by the Max height prop.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 720\n * @framerIntrinsicHeight 260\n */export default function CopyCodeBlock(props){const{code,language,showHeader,accent,successColor,background,headerBackground,borderColor,textColor,mutedColor,radius,fontSize,padding,maxHeight,wrapLines,style}=props;const[copied,setCopied]=useState(false);const timerRef=useRef(null);useEffect(()=>{return()=>{if(timerRef.current)clearTimeout(timerRef.current);};},[]);const flashCopied=()=>{setCopied(true);if(timerRef.current)clearTimeout(timerRef.current);timerRef.current=setTimeout(()=>setCopied(false),1900);};const handleCopy=async()=>{try{if(navigator.clipboard&&window.isSecureContext){await navigator.clipboard.writeText(code);}else{// Fallback for non-secure contexts / older browsers\nconst ta=document.createElement(\"textarea\");ta.value=code;ta.setAttribute(\"readonly\",\"\");ta.style.position=\"fixed\";ta.style.top=\"-9999px\";ta.style.opacity=\"0\";document.body.appendChild(ta);ta.select();document.execCommand(\"copy\");document.body.removeChild(ta);}flashCopied();}catch(err){console.error(\"CopyCodeBlock: copy failed\",err);}};const mono='ui-monospace, SFMono-Regular, \"SF Mono\", Menlo, Consolas, \"Liberation Mono\", monospace';// maxHeight only matters when the frame height is auto (Fit).\nconst isCapped=maxHeight>0;return /*#__PURE__*/_jsxs(\"div\",{style:{// Defaults for Fit mode; Framer overrides height/width via style\n// when H or W is set to a fixed value or Fill.\nwidth:\"100%\",height:\"fit-content\",maxHeight:isCapped?maxHeight:undefined,display:\"flex\",flexDirection:\"column\",background:background,border:`1px solid ${borderColor}`,borderRadius:radius,overflow:\"hidden\",fontFamily:mono,boxSizing:\"border-box\",...style},children:[/*#__PURE__*/_jsx(\"style\",{children:SCROLLBAR_CSS}),showHeader&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,padding:\"10px 12px 10px 16px\",background:headerBackground,borderBottom:`1px solid ${borderColor}`,flex:\"0 0 auto\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,color:mutedColor,letterSpacing:\"0.02em\",userSelect:\"none\"},children:language}),/*#__PURE__*/_jsx(CopyButton,{copied:copied,onClick:handleCopy,accent:accent,successColor:successColor,mono:mono})]}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",flex:\"1 1 auto\",minHeight:0,display:\"flex\"},children:[!showHeader&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:12,right:12,zIndex:2},children:/*#__PURE__*/_jsx(CopyButton,{copied:copied,onClick:handleCopy,accent:accent,successColor:successColor,mono:mono})}),/*#__PURE__*/_jsx(\"pre\",{className:\"bm-code-scroll\",style:{margin:0,padding:padding,paddingRight:showHeader?padding:96,flex:\"1 1 auto\",minHeight:0,minWidth:0,fontFamily:mono,fontSize:fontSize,lineHeight:1.65,color:textColor,overflowY:\"auto\",overflowX:wrapLines?\"hidden\":\"auto\",whiteSpace:wrapLines?\"pre-wrap\":\"pre\",wordBreak:wrapLines?\"break-word\":\"normal\",overscrollBehavior:\"contain\",boxSizing:\"border-box\"},children:code})]})]});}function CopyButton({copied,onClick,accent,successColor,mono}){return /*#__PURE__*/_jsxs(\"button\",{onClick:onClick,\"aria-label\":copied?\"Copied to clipboard\":\"Copy code\",style:{display:\"inline-flex\",alignItems:\"center\",gap:6,background:copied?successColor:accent,color:\"#FFFFFF\",border:\"none\",borderRadius:8,padding:\"6px 12px\",fontSize:12,fontFamily:mono,lineHeight:1,cursor:\"pointer\",transition:\"background 160ms ease\",whiteSpace:\"nowrap\",flexShrink:0},children:[copied?/*#__PURE__*/_jsx(CheckIcon,{}):/*#__PURE__*/_jsx(CopyIcon,{}),/*#__PURE__*/_jsx(\"span\",{children:copied?\"Copied!\":\"Copy\"})]});}function CopyIcon(){return /*#__PURE__*/_jsxs(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"9\",y:\"9\",width:\"12\",height:\"12\",rx:\"2\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"})]});}function CheckIcon(){return /*#__PURE__*/_jsx(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M20 6L9 17l-5-5\"})});}CopyCodeBlock.defaultProps={code:'npm install @booleanmaths/sdk\\n\\nexport BM_API_KEY=\"your_key_here\"\\nbm sync --store your-store.myshopify.com',language:\"bash\",showHeader:true,accent:\"#5347CE\",successColor:\"#2E9E6B\",background:\"#0E0D17\",headerBackground:\"#161424\",borderColor:\"#2A2740\",textColor:\"#E4E2F5\",mutedColor:\"#8B87A8\",radius:12,fontSize:13,padding:18,maxHeight:0,wrapLines:false};addPropertyControls(CopyCodeBlock,{code:{type:ControlType.String,title:\"Code\",displayTextArea:true,defaultValue:CopyCodeBlock.defaultProps.code},language:{type:ControlType.String,title:\"Label\",defaultValue:\"bash\",hidden:hideWithoutHeader},showHeader:{type:ControlType.Boolean,title:\"Header\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:true},wrapLines:{type:ControlType.Boolean,title:\"Wrap\",enabledTitle:\"Wrap\",disabledTitle:\"Scroll\",defaultValue:false},maxHeight:{type:ControlType.Number,title:\"Max height\",min:0,max:1200,step:20,defaultValue:0,description:\"Only applies when H is set to Fit. 0 = no cap.\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#5347CE\"},successColor:{type:ControlType.Color,title:\"Copied\",defaultValue:\"#2E9E6B\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#0E0D17\"},headerBackground:{type:ControlType.Color,title:\"Header BG\",defaultValue:\"#161424\",hidden:hideWithoutHeader},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#2A2740\"},textColor:{type:ControlType.Color,title:\"Code color\",defaultValue:\"#E4E2F5\"},mutedColor:{type:ControlType.Color,title:\"Label color\",defaultValue:\"#8B87A8\",hidden:hideWithoutHeader},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:40,step:1,defaultValue:12},fontSize:{type:ControlType.Number,title:\"Font size\",min:10,max:22,step:1,defaultValue:13},padding:{type:ControlType.Number,title:\"Padding\",min:0,max:48,step:1,defaultValue:18}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CopyCodeBlock\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"720\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"260\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CopyCodeBlock.map"],"mappings":"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"}