{"version":3,"file":"CustomButton.DQLUXl4e.mjs","names":[],"sources":["https:/framerusercontent.com/modules/V0bzHZSUYfC3FMLkFkrC/DEyT39f0zhYY9CvPQaZs/CustomButton.js"],"sourcesContent":["// This component renders a customizable button for Framer, allowing users to download a file or open a link with various style and hover effects.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsOnFramerCanvas}from\"framer\";// Import MotionStyle\nimport{isBrowser,motion}from\"framer-motion\";var IconType;// Enumeration for icon types: Default or Custom.\n(function(IconType){IconType[\"Default\"]=\"Default\";IconType[\"Custom\"]=\"Custom\";})(IconType||(IconType={}));var SrcType;// Enumeration for source types: Upload or URL.\n(function(SrcType){SrcType[\"Upload\"]=\"Upload\";SrcType[\"URL\"]=\"URL\";})(SrcType||(SrcType={}));// Selector for the meta tag used to determine if the site is published or statically generated.\nconst metaTagSelector='meta[name=\"framer-search-index\"]';// Function to check if the current environment is a published site or SSG.\nfunction isPublishedSiteOrSSG(){if(typeof document===\"undefined\"){return true;}const metaTag=document.querySelector(metaTagSelector);return metaTag!==null;}export default function CustomButton(props){// Destructure properties from props for easier access.\nconst{text,srcType,srcURL,srcFile,autoOpen,openInNewTab,showIcon,iconOptions,styleOptions,hoverOptions,style}=props;// Destructure style options.\nconst{backgroundColor,color,borderRadius,padding,paddingPerSide,paddingTop,paddingRight,paddingBottom,paddingLeft,gap,fontControl,underline}=styleOptions;// Determine if the component is being rendered on the Framer Canvas.\nconst isOnFramerCanvas=useIsOnFramerCanvas();// Check if the site is published or statically generated.\nconst isInPublishedSiteOrSSG=isPublishedSiteOrSSG();// Determine the action URL based on the source type and publication status.\nlet actionURL=undefined;// Allow link functionality in previews and published sites, disable on canvas edit\nif((isInPublishedSiteOrSSG||!isOnFramerCanvas)&&(srcURL||srcFile)){if(srcType===\"URL\"){actionURL=srcURL;}else if(srcType===\"Upload\"){actionURL=srcFile;}}// Automatically open the URL if the autoOpen flag is true and conditions are met.\nif(autoOpen&&isBrowser&&!isOnFramerCanvas&&actionURL){window.location.href=actionURL;}// Calculate the padding value based on whether padding per side is enabled.\nconst paddingValue=paddingPerSide?`${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`:`${padding}px`;// Function to get the icon element based on the icon options.\nconst getIcon=()=>{if(!iconOptions||!showIcon){return null;}const iconStyle={order:iconOptions.alignment===\"start\"?0:2,flexShrink:0};if(iconOptions.type===\"Custom\"&&iconOptions.image.src){return /*#__PURE__*/_jsx(\"img\",{style:iconStyle,alt:iconOptions.image.alt&&iconOptions.image.alt.length>0?iconOptions.image.alt:\"Download icon\",src:iconOptions.image.src,width:iconOptions.size,height:iconOptions.size});}else{return /*#__PURE__*/_jsx(\"svg\",{style:iconStyle,xmlns:\"http://www.w3.org/2000/svg\",width:iconOptions.size,height:iconOptions.size,fill:iconOptions.color,viewBox:\"0 0 256 256\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M228 152v56a20 20 0 0 1-20 20H48a20 20 0 0 1-20-20v-56a12 12 0 0 1 24 0v52h152v-52a12 12 0 0 1 24 0Zm-108.49 8.49a12 12 0 0 0 17 0l40-40a12 12 0 0 0-17-17L140 123V40a12 12 0 0 0-24 0v83l-19.51-19.49a12 12 0 0 0-17 17Z\"})});}};// Function to determine the cursor style based on the availability of the action URL.\nconst getCursor=()=>{// If on canvas editing, use default cursor unless actionURL is somehow defined\nif(isOnFramerCanvas&&!actionURL)return\"default\";// Otherwise, pointer if link/file exists, default if not\nreturn actionURL?\"pointer\":\"default\";};// Set the button title based on the publication status or action.\nconst buttonTitle=actionURL?text// Or more specific like \"Download File\" or \"Open Link\"\n:isOnFramerCanvas?\"Action disabled on canvas\":\"No link/file provided\";// Consolidated styles for the button.\nconst buttonStyle={// Original styles from your code\ngap:`${gap}px`,// fontSize: 18, // These will be overridden by fontControl if provided\n// lineHeight: 1.5,\n// fontFamily: \"Montserrat\", // Default in original, will be overridden by fontControl\n// fontWeight: 700, // Will be overridden by fontControl\nwidth:\"max-content\",...style,...buttonStyles,...fontControl,padding:paddingValue,color:color,backgroundColor:backgroundColor,borderRadius:`${borderRadius}px`,userSelect:\"none\",// placeContent: flexAlignSwitch(fontControl), // Replaced with justify-content below\njustifyContent:flexAlignSwitch(fontControl),whiteSpace:\"nowrap\",cursor:getCursor(),textDecoration:underline?\"underline\":\"none\"};// Consolidated hover effects. <<< MODIFIED\nconst hoverEffect={// Use MotionStyle type\nscale:hoverOptions.scale,cursor:getCursor()};// Apply optional hover overrides\nif(hoverOptions.backgroundColor!==undefined){hoverEffect.backgroundColor=hoverOptions.backgroundColor;}if(hoverOptions.color!==undefined){hoverEffect.color=hoverOptions.color;}if(hoverOptions.opacity!==undefined&&hoverOptions.opacity!==1){hoverEffect.opacity=hoverOptions.opacity;}// Apply brightness filter if defined and not default\nif(hoverOptions.brightness!==undefined&&hoverOptions.brightness!==1){hoverEffect.filter=`brightness(${hoverOptions.brightness})`;}// Render the download button with styles and hover effects.\nreturn /*#__PURE__*/_jsxs(motion.a,{target:openInNewTab?\"_blank\":\"_self\",href:actionURL,download:srcType===\"Upload\"&&actionURL?true:undefined,title:buttonTitle,style:buttonStyle,// Apply hover effect only if there's an action URL\nwhileHover:actionURL?hoverEffect:{cursor:getCursor()},transition:hoverOptions.transition,// Add rel for security when using target=\"_blank\"\nrel:openInNewTab?\"noopener noreferrer\":undefined,children:[iconOptions.alignment===\"start\"&&getIcon(),/*#__PURE__*/_jsx(\"span\",{children:text}),\" \",iconOptions.alignment===\"end\"&&getIcon()]});}CustomButton.displayName=\"Custom Button (Atom)\";// Default Props <<< MODIFIED\nCustomButton.defaultProps={text:\"Download\",srcType:\"Upload\",srcURL:\"\",srcFile:\"\",autoOpen:false,openInNewTab:true,showIcon:true,iconOptions:{type:\"Default\",color:\"#FFF\",image:{src:\"\",alt:\"\"},size:16,alignment:\"start\"},styleOptions:{backgroundColor:\"#000000\",color:\"#FFF\",borderRadius:32,padding:10,paddingPerSide:false,paddingTop:10,paddingRight:10,paddingBottom:10,paddingLeft:10,gap:8,fontControl:{// Keep original default fontControl structure\nfontFamily:\"Arial\",fontSize:18,fontWeight:700,textAlign:\"center\"},underline:false},hoverOptions:{scale:1.1,backgroundColor:\"#333\",color:\"#FFF\",brightness:1,opacity:1,transition:{type:\"spring\",stiffness:400,damping:30}},style:{}};// Property Controls <<< MODIFIED\naddPropertyControls(CustomButton,{text:{title:\"Text\",type:ControlType.String,defaultValue:CustomButton.defaultProps.text,description:\"Button label text.\"},// Source Controls (kept original structure)\nsrcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[\"URL\",\"Upload\"],defaultValue:CustomButton.defaultProps.srcType,description:\"Choose the source of the file or link.\"},srcURL:{type:ControlType.String,title:\"URL\",placeholder:\"https://example.com\",hidden(props){return props.srcType===\"Upload\";},defaultValue:CustomButton.defaultProps.srcURL,description:\"URL to open or download.\"},srcFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[],hidden(props){return props.srcType===\"URL\";},defaultValue:CustomButton.defaultProps.srcFile,description:\"Upload the file to be downloaded.\"},autoOpen:{type:ControlType.Boolean,title:\"Auto Open\",defaultValue:CustomButton.defaultProps.autoOpen,description:\"Automatically open the link or start the download on page load.\"},openInNewTab:{type:ControlType.Boolean,title:\"Open in New Tab\",defaultValue:CustomButton.defaultProps.openInNewTab,description:\"Open the link in a new tab.\"},// Icon Controls (kept original structure)\nshowIcon:{type:ControlType.Boolean,title:\"Show Icon\",defaultValue:CustomButton.defaultProps.showIcon,description:\"Display an icon next to the button text.\"},iconOptions:{type:ControlType.Object,// optional: true, // Keep if intended\ntitle:\"Icon\",buttonTitle:\"Customize Icon\",defaultValue:CustomButton.defaultProps.iconOptions,controls:{type:{title:\"Type\",type:ControlType.Enum,options:Object.values(IconType),optionTitles:Object.values(IconType),displaySegmentedControl:true,defaultValue:CustomButton.defaultProps.iconOptions.type,description:\"Choose between default or custom icon.\"},color:{title:\"Color\",type:ControlType.Color,defaultValue:CustomButton.defaultProps.iconOptions.color,hidden(props){return props.type===\"Custom\";},description:\"Color of the default icon.\"},image:{title:\"File\",type:ControlType.ResponsiveImage,allowedFileTypes:[\"jpg\",\"png\",\"svg\"],hidden(props){return props.type===\"Default\";},defaultValue:CustomButton.defaultProps.iconOptions.image,description:\"Upload a custom icon image.\"},size:{type:ControlType.Number,displayStepper:true,min:5,defaultValue:CustomButton.defaultProps.iconOptions.size,max:250,title:\"Size\",description:\"Size of the icon.\"},alignment:{title:\"Align\",type:ControlType.Enum,displaySegmentedControl:true,options:[\"start\",\"end\"],optionTitles:[\"Start\",\"End\"],defaultValue:CustomButton.defaultProps.iconOptions.alignment,description:\"Alignment of the icon relative to the text.\"}},hidden(props){return!props.showIcon;}},// Style Controls (kept original structure)\nstyleOptions:{type:ControlType.Object,title:\"Styles\",buttonTitle:\"Customize Styles\",defaultValue:CustomButton.defaultProps.styleOptions,controls:{fontControl:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:CustomButton.defaultProps.styleOptions.fontControl,description:\"Customize the font style.\"},backgroundColor:{type:ControlType.Color,title:\"Fill\",defaultValue:CustomButton.defaultProps.styleOptions.backgroundColor,description:\"Background color of the button.\"},color:{type:ControlType.Color,defaultValue:CustomButton.defaultProps.styleOptions.color,title:\"Text Color\",description:\"Color of the button text.\"},borderRadius:{type:ControlType.Number,title:\"Radius\",displayStepper:true,defaultValue:CustomButton.defaultProps.styleOptions.borderRadius,min:0,description:\"Border radius of the button.\"},padding:{title:\"Padding\",type:ControlType.FusedNumber,toggleKey:\"paddingPerSide\",toggleTitles:[\"Padding\",\"Padding per side\"],defaultValue:CustomButton.defaultProps.styleOptions.padding,valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0,description:\"Padding inside the button.\"},gap:{title:\"Gap\",type:ControlType.Number,displayStepper:true,defaultValue:CustomButton.defaultProps.styleOptions.gap,min:0,description:\"Gap between the icon and text.\"},underline:{type:ControlType.Boolean,title:\"Underline\",defaultValue:CustomButton.defaultProps.styleOptions.underline,description:\"Toggle underline on/off\"}}},// Hover Controls (Modified)\nhoverOptions:{type:ControlType.Object,title:\"Hover Effect\",buttonTitle:\"Customize Hover\",// optional: true, // Keep if intended\ndefaultValue:CustomButton.defaultProps.hoverOptions,controls:{scale:{type:ControlType.Number,title:\"Scale\",min:0,max:10,displayStepper:true,step:.01,defaultValue:CustomButton.defaultProps.hoverOptions.scale,description:\"Scale of the button on hover.\"},backgroundColor:{type:ControlType.Color,title:\"Fill\",// defaultValue: CustomButton.defaultProps.hoverOptions.backgroundColor, // Remove default here\noptional:true,description:\"Background color on hover (optional override).\"},color:{type:ControlType.Color,title:\"Text Color\",// defaultValue: CustomButton.defaultProps.hoverOptions.color, // Remove default here\noptional:true,description:\"Text color on hover (optional override).\"},// --- Added Brightness Control ---\nbrightness:{type:ControlType.Number,title:\"Brightness\",min:0,max:3,step:.05,displayStepper:true,defaultValue:CustomButton.defaultProps.hoverOptions.brightness,optional:true,description:\"Brightness adjustment on hover (1 = no change).\"},// --- Added Opacity Control ---\nopacity:{type:ControlType.Number,title:\"Opacity\",min:0,max:1,step:.01,displayStepper:true,defaultValue:CustomButton.defaultProps.hoverOptions.opacity,optional:true,description:\"Opacity adjustment on hover (1 = fully opaque).\"},// --- End Added Controls ---\ntransition:{type:ControlType.Transition,title:\"Transition\",defaultValue:CustomButton.defaultProps.hoverOptions.transition,description:\"Transition effect for the hover state.\"}}}});// Base layout styles (kept original structure mostly, added align-items)\nconst buttonStyles={display:\"inline-flex\",alignItems:\"center\",// placeItems: \"center\", // Original - replaced by align-items\njustifyContent:\"center\",// placeContent: \"center\", // Original - replaced by justify-content\ntextDecoration:\"none\",border:\"none\",boxSizing:\"border-box\",overflow:\"hidden\"};// Function to match flex content alignment with text alignment.\nfunction flexAlignSwitch(fontControlStyles){// Default to center if fontControlStyles or textAlign is not available\nconst textAlign=fontControlStyles?.textAlign||\"center\";if(textAlign===\"left\"){return\"flex-start\";}if(textAlign===\"right\"){return\"flex-end\";}return\"center\"// Default and for textAlign === \"center\"\n;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CustomButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CustomButton.map"],"mappings":"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"}