{"version":3,"file":"Button.BOg6IOLK.mjs","names":["useCallback","useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/F3emUzaCIrDXG1Thpcz1/DC485pUgXPV9mcGXv5V7/analyticsEvents.js","https:/framerusercontent.com/modules/U5i7bneQufZYH6i8Wcln/Av9Ew09DXZD97siUR6PR/pushDataLayerEvent.js","https:/framerusercontent.com/modules/84bcalCzPICgyQ15VkjZ/E9bskGktIFMABY7c8bBb/useFramerTrack.js","https:/framerusercontent.com/modules/0eF358fV2OEEm5uSzJMM/VDIgyKl2UUczoAsvcqrp/animationConstants.js","https:/framerusercontent.com/modules/tpFnvvAIpLui9IVc2GzW/WvzCUvzurMaqQL5zEjIT/Button.js"],"sourcesContent":["/**\n * Amplitude-first website event contract (CIT/website#2370).\n *\n * Stable semantic event names shared by dataLayer → GTM → Amplitude / GA4.\n * Autocapture page views are owned by the Amplitude Unified Script, not this module.\n *//** Approved custom / semantic event names. */export const ANALYTICS_EVENTS={SELECT_CONTENT:\"select_content\",SIGNUP_ALL:\"signup_all\",TOOL_COMPLETED:\"tool_completed\",BLOCKING_ERROR_SHOWN:\"blocking_error_shown\",FORM_SUBMIT_SUCCESS:\"form_submit_success\"};/** Lowercase alphanumeric kebab-case (Framer TrackingId rules). */const TRACKING_ID_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;/**\n * Return true when `value` is a valid Framer / analytics tracking id.\n */export function isValidTrackingId(value){return typeof value===\"string\"&&TRACKING_ID_PATTERN.test(value);}/**\n * Normalize a candidate id to kebab-case tracking id, or return undefined.\n */export function normalizeTrackingId(value){if(typeof value!==\"string\")return undefined;const normalized=value.trim().toLowerCase().replace(/[^a-z0-9]+/g,\"-\").replace(/^-+|-+$/g,\"\").replace(/-{2,}/g,\"-\");return isValidTrackingId(normalized)?normalized:undefined;}// recompile: 1786970562256\n\nexport const __FramerMetadata__ = {\"exports\":{\"normalizeTrackingId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AnalyticsEventName\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"AnalyticsEventProperties\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isValidTrackingId\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ANALYTICS_EVENTS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./analyticsEvents.map","/**\n * Push semantic analytics events to `window.dataLayer` for GTM.\n */import{isBrowser}from\"framer-motion\";/**\n * Push a plain object event to the GTM dataLayer.\n *\n * Prefer this for semantic business events (`select_content`, etc.). Consent Mode\n * commands still use {@link sendToGTM} (arguments-form) from `gtm.ts`.\n */export function pushDataLayerEvent(payload){if(!isBrowser)return;if(!payload||typeof payload.event!==\"string\"||payload.event.trim()===\"\")return;const cleaned={};for(const[key,value]of Object.entries(payload)){if(value===undefined||value===null||value===\"\")continue;cleaned[key]=value;}if(typeof cleaned.event!==\"string\")return;const w=window;w.dataLayer=w.dataLayer||[];w.dataLayer.push(cleaned);}// recompile: 1786970562256\n\nexport const __FramerMetadata__ = {\"exports\":{\"pushDataLayerEvent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./pushDataLayerEvent.map","/**\n * Framer custom-event tracking + GTM dataLayer bridge (CIT/website#2468 / #2370).\n *\n * Calls Framer `useTracking()` when a valid TrackingId is provided, and mirrors\n * a `select_content` (or caller-chosen) event into `dataLayer` for GTM Preview.\n */import{useCallback}from\"react\";import{useTracking}from\"framer\";import{ANALYTICS_EVENTS,isValidTrackingId}from\"https://framerusercontent.com/modules/F3emUzaCIrDXG1Thpcz1/DC485pUgXPV9mcGXv5V7/analyticsEvents.js\";import{pushDataLayerEvent}from\"https://framerusercontent.com/modules/U5i7bneQufZYH6i8Wcln/Av9Ew09DXZD97siUR6PR/pushDataLayerEvent.js\";/**\n * Track an interaction in Framer Analytics and push the same id to dataLayer.\n */export function useFramerTrack(){const track=useTracking();return useCallback((trackingId,options)=>{if(!isValidTrackingId(trackingId))return;const id=trackingId;try{track(id);}catch{// Framer runtime may be unavailable outside published/canvas contexts.\n}const pagePath=typeof window!==\"undefined\"&&window.location?window.location.pathname:undefined;pushDataLayerEvent({event:options?.eventName??ANALYTICS_EVENTS.SELECT_CONTENT,cta_id:id,trackingId:id,page_path_normalized:pagePath,...options?.properties});},[track]);}// recompile: 1786970562256\n\nexport const __FramerMetadata__ = {\"exports\":{\"FramerTrackFn\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FramerTrackOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFramerTrack\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useFramerTrack.map","/**\n * Shared animation timing constants for code-components.\n * Use design tokens (Tokens.getAnimationDuration, Tokens.getFramerTransition) where\n * a token exists (quick, standard, extended). Use these constants for component-\n * specific timings that have no token (e.g. hamburger menu, spinners).\n *//** Duration for instant / no-motion transitions (e.g. when prefers-reduced-motion). */export const NO_MOTION_DURATION=0;/** Navbar hamburger icon: delay before line move. */export const HAMBURGER_DELAY_LINE=.08;/** Navbar hamburger icon: delay before rotate. */export const HAMBURGER_DELAY_ROTATE=.24;/** Navbar hamburger icon: delay before center line fade-in. */export const HAMBURGER_DELAY_CENTER_FADE=.28;/** Navbar hamburger icon: duration for line translate. */export const HAMBURGER_DURATION_LINE=.18;/** Navbar hamburger icon: duration for center line opacity. */export const HAMBURGER_DURATION_OPACITY_OUT=.08;/** Spinner rotation: one full rotation duration (loading states). */export const SPINNER_DURATION=.8;/** Spinner rotation: longer variant (e.g. full-page loading). */export const SPINNER_DURATION_FULL=1;/**\n * `@keyframes` name for the Button loading spinner. Unique id avoids clashes\n * with other injected keyframe rules on the page.\n */export const BUTTON_SPIN_KEYFRAMES_NAME=\"ds-button-spinner-rotate\";/**\n * CSS rule defining {@link BUTTON_SPIN_KEYFRAMES_NAME}. Injected once per\n * loading Button when motion is allowed.\n */export const BUTTON_SPIN_KEYFRAMES_RULE=`@keyframes ${BUTTON_SPIN_KEYFRAMES_NAME} {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}`;// recompile: 1786970562256\n\nexport const __FramerMetadata__ = {\"exports\":{\"SPINNER_DURATION_FULL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BUTTON_SPIN_KEYFRAMES_NAME\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAMBURGER_DURATION_LINE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAMBURGER_DELAY_CENTER_FADE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SPINNER_DURATION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BUTTON_SPIN_KEYFRAMES_RULE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NO_MOTION_DURATION\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAMBURGER_DELAY_ROTATE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAMBURGER_DURATION_OPACITY_OUT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAMBURGER_DELAY_LINE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./animationConstants.map","/**\n * Button - Button component with multiple variants and states.\n *\n * Button component supporting solid, ghost, outline, link, legacy Primary (brand solid blue),\n * and primary-warm / primary-lush / primary-cool rainbow variants. The three rainbow variants\n * render Brand Rainbow Signature gradients (Warm, Lush, Cool) and ignore `theme`; legacy Primary\n * also ignores `theme` for label/icon colors per `buttonStyles.ts`.\n * Includes support for different sizes, states (default, disabled, loading),\n * and icon placement (leading, trailing, icon-only).\n *\n * Typography: size maps to `/Button XL` (large), `/Button LG` (medium), `/Button SM` (small).\n * Font sizes scale by breakpoint (desktop base; tablet interpolated; phone uses the small-screen preset).\n *\n * Size dimensions:\n *   Small  — 44 × 44px minimum touch target, 16px H padding, 8px V padding; icon-only glyph via {@link iconPixelSizeForSquareSide} (`svg.ts`)\n *   Medium — 48 × 48px (icon-only), 48px height (text), 24px H padding, 12px V padding\n *   Large  — 56 × 56px (icon-only), 56px height (text), 32px H padding, 16px V padding\n *\n * Icon-only padding = (height − iconSize) / 2, so content fits exactly inside border-box.\n */// 1. React and React types\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useMemo,useEffect}from\"react\";// 2. Framer Motion (not applicable)\n// 3. Framer API\nimport{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{FRAMER_BREAKPOINT_DESCRIPTION}from\"https://framerusercontent.com/modules/kgixvU6ZSjEgZfx2dLER/MHZcXqVCaHFvVWYQ7CWQ/propertyControlCopy.js\";import{useFramerTrack}from\"https://framerusercontent.com/modules/84bcalCzPICgyQ15VkjZ/E9bskGktIFMABY7c8bBb/useFramerTrack.js\";import{isValidTrackingId,normalizeTrackingId}from\"https://framerusercontent.com/modules/F3emUzaCIrDXG1Thpcz1/DC485pUgXPV9mcGXv5V7/analyticsEvents.js\";// 4. Design system\nimport{Tokens,getLiquidGlassBackdropBlurFilter,useReducedMotion,LIQUID_GLASS_SHARED}from\"https://framerusercontent.com/modules/JnflwrfTBO2W3YxUCt5T/gagzSBMuqB4yu4qdS3rG/index.js\";import{SPINNER_DURATION_FULL,BUTTON_SPIN_KEYFRAMES_NAME,BUTTON_SPIN_KEYFRAMES_RULE}from\"https://framerusercontent.com/modules/0eF358fV2OEEm5uSzJMM/VDIgyKl2UUczoAsvcqrp/animationConstants.js\";import{getButtonBackgroundColor,getButtonBorderStyle,getButtonTextColor,getButtonIconColor,getFilledButtonBackgroundStyle,getGhostGlassButtonBackground,getPrimaryRainbowGradientWithColoredGlass,isPrimaryBrandGradientVariant}from\"https://framerusercontent.com/modules/QyHfeOyN9TwLDOSclcHY/KMXwp4EEdGUopCC7plyt/buttonStyles.js\";import{getFocusOutlineStyle}from\"https://framerusercontent.com/modules/LQuuOAryIVnwswuGx8Ex/Gunia8zXW7RPGT6PcP9x/layoutStyles.js\";// 5. Local\nimport{useInteractiveStates}from\"https://framerusercontent.com/modules/Oyd67FvSjdl6uCVEyAij/vo5wgJnckZsFKwLOADr8/useInteractiveStates.js\";import{isDevelopment}from\"https://framerusercontent.com/modules/llQ8rGhCICS7CbBpBDaR/s336Ofuwuag5bSUcjtMH/env.js\";import{getLinkUrl,getNewTabAriaLabel,useSmartLinkProps}from\"https://framerusercontent.com/modules/NbJRONH2Z4yDLXjbVsSq/tIlA4bDCxOgn96RfLVjG/linkHelpers.js\";import{getIcon,getIconRaw,ICON_OPTIONS_WITH_CUSTOM,ICON_OPTION_TITLES_WITH_CUSTOM}from\"https://framerusercontent.com/modules/OuAHgtW29YOxApe6lCN1/9ld191CvHrtXqbHVLJg6/icons.js\";import{iconPixelSizeForSquareSide,processSVG,squareIconPaddingOneSidePx}from\"https://framerusercontent.com/modules/Ajjw0fi7RIb9ZhcKml39/kZaSzrhXO8NWznE70PjD/svg.js\";import{PLACEHOLDER}from\"https://framerusercontent.com/modules/48iFuUf79i0lV1xbzOpm/1llYVYoXHKBoUUXzGhpH/placeholders.js\";import{normalizeElementId}from\"https://framerusercontent.com/modules/EhucoCcvUrEmkeXlMWEK/6YhgLgfjy8dGF1MJj1up/resolveElementId.js\";import{resolveBrand,resolveThemeVariant}from\"https://framerusercontent.com/modules/30edN7qiEI1dwQI5mdZ5/RdSxoUKJXTqYerHxOEo0/themeHelpers.js\";import{brandPropertyControl}from\"https://framerusercontent.com/modules/T2sckviMCmJ4Jmbp9jxp/jhbEeUK4WU395GuS0o1Z/brandControl.js\";import{themePropertyControls,resolveThemeProp}from\"https://framerusercontent.com/modules/lFWBe5qCxlzWknbvQ1Np/IBWfdVP45taFoVt1WbKb/themeControl.js\";const DEFAULT_CIRCLE_ICON_SVG=getIconRaw(\"circle\");const ButtonInternal=/*#__PURE__*/forwardRef(function ButtonInternal(props,ref){const theme=resolveThemeProp(props);const{breakpoint=\"desktop\",variant=\"solid\",\"theme\":_themeProp,\"themeTricount\":_themeTricountProp,brand,size=\"medium\",widthMode=\"responsive\",label=PLACEHOLDER.PRIMARY_BUTTON,leadingIconName=\"circle\",leadingIconSvg=DEFAULT_CIRCLE_ICON_SVG,trailingIconName=\"arrow-narrow-right\",trailingIconSvg=DEFAULT_CIRCLE_ICON_SVG,iconPosition=\"none\",disabled=false,loading=false,successState=false,link,openInNewTab=false,onClick,ariaLabel,\"aria-pressed\":ariaPressed,style,type=\"button\",id,trackingId,analyticsLocation,...rest}=props;const elementId=normalizeElementId(id);const resolvedTrackingId=isValidTrackingId(trackingId)?trackingId:normalizeTrackingId(trackingId)??normalizeTrackingId(elementId);const trackInteraction=useFramerTrack();const resolvedTheme=resolveThemeVariant(theme);const iconOnly=iconPosition===\"icon-only\";const usesConstrainedWidth=(()=>{if(iconOnly){return false;}if(style?.width===\"100%\"){return true;}if(style?.maxWidth===\"100%\"){return true;}if(widthMode===\"full\"){return true;}if(widthMode===\"responsive\"&&breakpoint===\"phone\"){return true;}return false;})();// Enforce that icon-only buttons get an explicit accessible name in\n// development. Without this, a missing `ariaLabel` ships silently\n// and AT users hear an unlabelled button. We intentionally don't\n// throw — Framer canvas / Storybook need to keep rendering — but a\n// loud `console.warn` on the dev build catches it during review.\nuseEffect(()=>{if(typeof window===\"undefined\"||!isDevelopment())return;if(!iconOnly)return;const labelText=typeof label===\"string\"?label.trim():\"\";const ariaText=typeof ariaLabel===\"string\"?ariaLabel.trim():\"\";if(!ariaText&&!labelText){console.warn(\"[Button] icon-only buttons must set `ariaLabel` (or pass a string `label` for the visually-hidden name) so screen readers announce something other than an unlabelled button.\");}},[iconOnly,ariaLabel,label]);const isDisabled=disabled;const isLoading=loading;const isInteractive=!isDisabled&&!isLoading;const reducedMotion=useReducedMotion();const isStaticRenderer=useIsStaticRenderer();const typography=size===\"large\"?Tokens.getTypographyStyles(\"/Button XL\",breakpoint):size===\"medium\"?Tokens.getTypographyStyles(\"/Button LG\",breakpoint):Tokens.getTypographyStyles(\"/Button SM\",breakpoint);const{isHovered,isPressed,isFocused,brightnessFilter,cursorStyle,handlers}=useInteractiveStates(isDisabled||isLoading);// Success state must stay fully visible — skip both the disabled dimming\n// and the hover/press brightness filter so the green fill reads clearly.\nconst finalBrightnessFilter=successState?\"none\":isDisabled?Tokens.getBrightnessFilter(true,false,false):brightnessFilter;// Icon-only: shared fill ratio + symmetric padding (`utils/svg.ts`). With label: 20 / 24 px per size.\nconst iconOnlySidePx=size===\"large\"?56:size===\"medium\"?48:44;const buttonHeightPx=iconOnly?iconOnlySidePx:size===\"large\"?56:size===\"medium\"?48:44;const iconSize=iconOnly?iconPixelSizeForSquareSide(iconOnlySidePx):size===\"small\"?20:24;// Constants for padding logic (values must be in SPACING_SCALE)\nconst PADDING_TOP_LARGE=16;const PADDING_TOP_MEDIUM=12;const PADDING_TOP_SMALL=8;const PADDING_HORIZONTAL_LARGE=32;const PADDING_HORIZONTAL_MEDIUM=24;const PADDING_HORIZONTAL_SMALL=16;const GAP_LARGE=12;const GAP_MEDIUM=10;const GAP_SMALL=8;const showIconLeading=iconPosition===\"leading\"||iconOnly;const showIconTrailing=iconPosition===\"trailing\"&&!iconOnly;const showLoadingIcon=isLoading;// Success overrides the variant/theme-derived styling entirely so the\n// confirmation state reads consistently regardless of the button's\n// original variant (solid, outline, ghost, etc.). Pair bg-success with\n// text/fg-success (same as Badge / FeaturedIcon) — inverted-primary is\n// black and fails contrast on the dark green fill.\nconst backgroundColor=successState?Tokens.getColorValue(\"/Backgrounds/bg-success\"):getButtonBackgroundColor(variant,resolvedTheme,isDisabled,brand);const border=successState?`1px solid ${Tokens.getColorValue(\"/Borders/border-success\")}`:getButtonBorderStyle(variant,resolvedTheme,isDisabled);const textColor=successState?Tokens.getColorValue(\"/Text/text-success\"):getButtonTextColor(variant,resolvedTheme,isDisabled,brand);const iconColor=successState?Tokens.getColorValue(\"/Foregrounds/fg-success\"):getButtonIconColor(variant,resolvedTheme,isDisabled,brand);const explicitTriggerColor=typeof style?.color===\"string\"?style.color:undefined;const resolvedTextColor=explicitTriggerColor??textColor;const resolvedIconColor=explicitTriggerColor??iconColor;const linkUrl=getLinkUrl(link);const hasLink=Boolean(linkUrl&&linkUrl.trim()!==\"\");const handleClick=e=>{if(!isInteractive){e.preventDefault();e.stopPropagation();return;}if(resolvedTrackingId){const destinationHost=(()=>{if(!hasLink||!linkUrl)return undefined;try{return new URL(linkUrl,typeof window!==\"undefined\"?window.location.origin:\"https://www.bunq.com\").hostname;}catch{return undefined;}})();trackInteraction(resolvedTrackingId,{properties:{...analyticsLocation?{cta_location:analyticsLocation}:{},component_id:\"button\",...destinationHost?{destination_host:destinationHost}:{},destination_type:hasLink?linkUrl.includes(\"adjust\")||linkUrl.includes(\"/download\")?\"signup\":\"link\":\"action\"}});}onClick?.(e);// When rendered as submit button, do not preventDefault so the form's onSubmit runs.\nif(type===\"submit\"){return;}// When rendered as button (no link), consume the event so Framer does not\n// treat it as unhandled and show an error state in the canvas.\nif(!hasLink){e.preventDefault();e.stopPropagation();}};const smartLink=useSmartLinkProps(link,openInNewTab,{brand,onClick:e=>handleClick(e)});const linkOpensNewTab=hasLink&&smartLink.target===\"_blank\";const trimmedAria=typeof ariaLabel===\"string\"?ariaLabel.trim():\"\";const trimmedLabel=typeof label===\"string\"?label.trim():\"\";const iconAccessibleName=trimmedAria||trimmedLabel||\"Button\";const resolvedAriaLabel=(()=>{if(!hasLink){if(iconOnly)return iconAccessibleName;if(trimmedAria!==\"\"&&trimmedAria!==trimmedLabel)return trimmedAria;return undefined;}if(linkOpensNewTab){const name=iconOnly?iconAccessibleName:trimmedLabel;if(name)return getNewTabAriaLabel(name);}if(iconOnly)return iconAccessibleName;if(trimmedAria!==\"\"&&trimmedAria!==trimmedLabel)return trimmedAria;return undefined;})();const buttonStyles=useMemo(()=>{const{background:styleBackground,color:_styleColor,...restStyle}=style??{};const getNumericSpacing=val=>parseFloat(Tokens.getResponsiveSpacing(val,breakpoint));const getPadding=()=>{if(iconOnly){const basePadding=squareIconPaddingOneSidePx(iconOnlySidePx);const basePaddingStr=Tokens.getResponsiveSpacing(basePadding,breakpoint);return`${basePaddingStr} ${basePaddingStr}`;}let top=PADDING_TOP_SMALL;let horizontal=PADDING_HORIZONTAL_SMALL;let gap=GAP_SMALL;if(size===\"large\"){top=PADDING_TOP_LARGE;horizontal=PADDING_HORIZONTAL_LARGE;gap=GAP_LARGE;}else if(size===\"medium\"){top=PADDING_TOP_MEDIUM;horizontal=PADDING_HORIZONTAL_MEDIUM;gap=GAP_MEDIUM;}const topStr=Tokens.getResponsiveSpacing(top,breakpoint);const horizontalStr=Tokens.getResponsiveSpacing(horizontal,breakpoint);if(!showIconLeading&&!showIconTrailing){return`${topStr} ${horizontalStr}`;}const horizontalVal=getNumericSpacing(horizontal);const gapVal=getNumericSpacing(gap);// Balanced padding\nif(showIconLeading&&showIconTrailing){return`${topStr} ${horizontalStr}`;}else if(showIconLeading){const right=horizontalVal+gapVal;return`${topStr} ${right}px ${topStr} ${horizontalStr}`;}// showIconTrailing\nconst left=horizontalVal+gapVal;return`${topStr} ${horizontalStr} ${topStr} ${left}px`;};const getGap=()=>{if(iconOnly)return\"0\";if(size===\"large\")return Tokens.getResponsiveSpacing(GAP_LARGE,breakpoint);if(size===\"medium\")return Tokens.getResponsiveSpacing(GAP_MEDIUM,breakpoint);return Tokens.getResponsiveSpacing(GAP_SMALL,breakpoint);};const padding=getPadding();const gap=getGap();const height=Tokens.getSpacing(buttonHeightPx);// Height per size: Small = 44px, Medium = 48px, Large = 56px.\n// Icon-only squares match the same dimension for consistent touch targets.\nconst dimension=iconOnly?size===\"large\"?56:size===\"medium\"?48:44:undefined;const widthFromMode=(()=>{if(iconOnly){return Tokens.getSpacing(dimension);}if(widthMode===\"full\"){return\"100%\";}if(widthMode===\"intrinsic\"){return\"auto\";}// responsive — match legacy default: full width on phone, intrinsic elsewhere\nreturn breakpoint===\"phone\"?\"100%\":\"auto\";})();const resolvedWidth=restStyle.width!==undefined?restStyle.width:widthFromMode;const isPrimaryBrandGradient=isPrimaryBrandGradientVariant(variant);let resolvedBackground=backgroundColor;const isTricountButton=resolveBrand(brand)===\"tricount\";if(!isDisabled&&isPrimaryBrandGradient){resolvedBackground=getPrimaryRainbowGradientWithColoredGlass(variant);}else if(!isDisabled&&variant===\"ghost\"&&theme===\"default\"&&!isTricountButton){resolvedBackground=getGhostGlassButtonBackground(backgroundColor);}const frostBackdrop=getLiquidGlassBackdropBlurFilter(LIQUID_GLASS_SHARED.frostBlurPx,LIQUID_GLASS_SHARED.saturation);// Ghost CTAs are translucent, so frost backdrop makes the glass read.\n// Primary rainbow fills are opaque: backdrop-filter cannot show through\n// the pill and Chromium/WebKit anti-alias it into a dark halo on the\n// left/right caps (especially on black section backgrounds).\nconst isGhostDefaultTheme=variant===\"ghost\"&&theme===\"default\";// tricount buttons are solid — never apply the frosted-glass backdrop.\nconst useFrostBackdrop=!isDisabled&&isGhostDefaultTheme&&resolveBrand(brand)!==\"tricount\";return{...restStyle,width:resolvedWidth,height:usesConstrainedWidth?\"auto\":height,minHeight:height,padding,borderRadius:Tokens.getRadius(\"radius-full\"),...getFilledButtonBackgroundStyle(typeof styleBackground===\"string\"?styleBackground:resolvedBackground,border),...useFrostBackdrop?{backdropFilter:frostBackdrop,WebkitBackdropFilter:frostBackdrop}:{},border,color:resolvedTextColor,display:\"inline-flex\",flexShrink:usesConstrainedWidth?1:0,maxWidth:usesConstrainedWidth?\"100%\":undefined,position:\"relative\",zIndex:Tokens.getZIndex(\"raised\"),alignItems:\"center\",justifyContent:\"center\",gap,minWidth:iconOnly?Tokens.getSpacing(dimension):Tokens.getControlSize(\"touchTarget\"),overflow:\"hidden\",boxSizing:\"border-box\",cursor:cursorStyle,filter:finalBrightnessFilter,transition:variant===\"link\"?`${Tokens.getTransition(\"background\",\"quick\")}, ${Tokens.getTransition(\"text-decoration\",\"quick\")}, ${Tokens.getTransition(\"filter\",\"quick\")}`:`${Tokens.getTransition(\"background\",\"quick\")}, ${Tokens.getTransition(\"border\",\"quick\")}, ${Tokens.getTransition(\"filter\",\"quick\")}`,textDecoration:variant===\"link\"&&isHovered&&isInteractive?\"underline\":\"none\",textUnderlineOffset:variant===\"link\"?Tokens.getSpacing(2):\"0\",outline:isFocused?getFocusOutlineStyle(brand):\"none\",outlineOffset:Tokens.getSpacing(2),userSelect:\"none\",whiteSpace:usesConstrainedWidth?\"normal\":\"nowrap\",...typography,fontSize:restStyle.fontSize||typography?.fontSize};},[style,iconOnly,iconOnlySidePx,buttonHeightPx,size,variant,brand,theme,isDisabled,isInteractive,isHovered,isFocused,breakpoint,widthMode,usesConstrainedWidth,showIconLeading,showIconTrailing,cursorStyle,finalBrightnessFilter,typography,backgroundColor,border,resolvedTextColor]);const processCustomIconSvg=rawSvg=>{const trimmed=rawSvg.trim();const sizeMatch=trimmed.match(/width=[\"'](\\d+)[\"']/);const alreadySized=sizeMatch!==null&&parseInt(sizeMatch[1],10)===iconSize;const hasHexColors=/fill=[\"']#[0-9a-fA-F]{3,8}[\"']/i.test(trimmed);return processSVG(trimmed,alreadySized?undefined:iconSize,hasHexColors?undefined:resolvedIconColor);};const getLeadingIconSVG=()=>{if(!showIconLeading)return null;if(showLoadingIcon)return getIcon(\"loading\",iconSize,resolvedIconColor,{opticalInset:0});if(leadingIconName===\"custom\"&&leadingIconSvg?.trim()?.includes(\"<svg\")){return processCustomIconSvg(leadingIconSvg);}return getIcon(leadingIconName,iconSize,iconColor,{opticalInset:0});};const getTrailingIconSVG=()=>{if(!showIconTrailing)return null;if(showLoadingIcon)return getIcon(\"loading\",iconSize,resolvedIconColor,{opticalInset:0});if(trailingIconName===\"custom\"&&trailingIconSvg?.trim()?.includes(\"<svg\")){return processCustomIconSvg(trailingIconSvg);}return getIcon(trailingIconName,iconSize,resolvedIconColor,{opticalInset:0});};const renderIcon=svgContent=>{if(!svgContent)return null;const style={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",width:`${iconSize}px`,height:`${iconSize}px`,flexShrink:0};if(isLoading&&svgContent.includes(\"loading\")){const spinStyle=reducedMotion||isStaticRenderer?style:{...style,animation:`${BUTTON_SPIN_KEYFRAMES_NAME} ${SPINNER_DURATION_FULL}s linear infinite`};return /*#__PURE__*/_jsx(\"span\",{style:spinStyle,dangerouslySetInnerHTML:{__html:svgContent},\"aria-hidden\":true});}return /*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:svgContent},\"aria-hidden\":true,style:style});};const content=/*#__PURE__*/_jsxs(_Fragment,{children:[renderIcon(getLeadingIconSVG()),!iconOnly&&label&&/*#__PURE__*/_jsx(\"span\",{style:{minWidth:0,overflow:usesConstrainedWidth?\"visible\":\"hidden\",textOverflow:usesConstrainedWidth?\"clip\":\"ellipsis\",whiteSpace:usesConstrainedWidth?\"normal\":\"nowrap\",textAlign:\"center\"},children:label}),renderIcon(getTrailingIconSVG())]});const scale=isPressed?.98:1;const transformTransition=reducedMotion?\"none\":Tokens.getTransition(\"transform\",\"quick\");const interactiveStyle={...buttonStyles,transform:`scale(${scale})`,transition:variant===\"link\"?`${Tokens.getTransition(\"background\",\"quick\")}, ${Tokens.getTransition(\"text-decoration\",\"quick\")}, ${Tokens.getTransition(\"filter\",\"quick\")}, ${transformTransition}`:`${Tokens.getTransition(\"background\",\"quick\")}, ${Tokens.getTransition(\"border\",\"quick\")}, ${Tokens.getTransition(\"filter\",\"quick\")}, ${transformTransition}`};const mergedStyle=interactiveStyle;const commonProps={\"style\":mergedStyle,\"onMouseEnter\":handlers.onMouseEnter,\"onMouseLeave\":handlers.onMouseLeave,\"onMouseDown\":handlers.onMouseDown,\"onMouseUp\":handlers.onMouseUp,\"onFocus\":handlers.onFocus,\"onBlur\":handlers.onBlur,\"tabIndex\":isInteractive?0:-1,\"aria-disabled\":isDisabled||isLoading,\"aria-busy\":isLoading,\"aria-label\":resolvedAriaLabel,...elementId?{id:elementId}:{},...resolvedTrackingId?{\"data-analytics-id\":resolvedTrackingId}:{},...analyticsLocation?{\"data-analytics-location\":analyticsLocation}:{},...rest,...!hasLink&&ariaPressed!==undefined?{\"aria-pressed\":ariaPressed}:{}};const interactiveElement=hasLink?/*#__PURE__*/_jsx(\"a\",{ref:ref,href:isInteractive?smartLink.href:undefined,target:smartLink.target,rel:smartLink.rel,...commonProps,// Spread smartLink.style FIRST and let the button's computed\n// styles win. smartLink.style sets `color: \"inherit\"`, which\n// would otherwise clobber the variant/theme-aware textColor\n// (e.g. ghost+default needs white text, but `inherit` falls\n// back to the UA default black on sections that don't set\n// an ambient `color`).\nstyle:{...smartLink.style,...commonProps.style},onClick:smartLink.onClick,children:content}):/*#__PURE__*/_jsx(\"button\",{ref:ref,type:type,disabled:isDisabled||isLoading,...commonProps,onClick:handleClick,children:content});return /*#__PURE__*/_jsxs(_Fragment,{children:[isLoading&&!reducedMotion&&!isStaticRenderer&&/*#__PURE__*/_jsx(\"style\",{children:BUTTON_SPIN_KEYFRAMES_RULE}),interactiveElement]});});ButtonInternal.displayName=\"ButtonInternal - Atom\";/**\n * Button - Wrapper component for Framer compatibility.\n *\n * Exported as a plain named function so Framer's code-link parser recognizes\n * it as a valid code component (a `forwardRef` default export is opaque to\n * Framer's static analysis and prevents the component from being registered\n * on the canvas).\n *\n * Refs from consumers (focus management, measurement, Floating UI anchors,\n * the `Button*` wrappers in atoms/molecules) are still forwarded to the\n * underlying `<button>` / `<a>` because `ButtonInternal` is itself a\n * `forwardRef` — we just pass `props.ref` straight through.\n *\n * @framerIntrinsicWidth 140\n * @framerIntrinsicHeight 48\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Button(props){const{ref,...rest}=props;return /*#__PURE__*/_jsx(ButtonInternal,{...rest,ref:ref});}Button.displayName=\"Button - Atom\";addPropertyControls(Button,{// ─── 1. Content ────────────────────────────────────────────────────────────\nlabel:{type:ControlType.String,title:\"Button Label\",defaultValue:\"Get started\",placeholder:\"e.g. Get started, Learn more\",description:\"Visible text on the button. When Icon Position is Only, use this as the accessible name too (often the same words you would put on an icon-only control, e.g. Close).\"},// ─── 2. Links ────────────────────────────────────────────────────────────\nlink:{type:ControlType.Link,title:\"Link\",defaultValue:\"\",description:\"Add a destination to render an `<a>`; leave empty to keep a `<button>` for forms and custom interactions.\"},openInNewTab:{type:ControlType.Boolean,title:\"Open in New Tab\",defaultValue:false,enabledTitle:\"New Tab\",disabledTitle:\"Same Tab\",description:\"Turn on when Link is set so the destination opens in a new browser tab.\",hidden:props=>!getLinkUrl(props?.link)},// ─── 4. Icons ──────────────────────────────────────────────────────────────\niconPosition:{type:ControlType.Enum,title:\"Icon Position\",options:[\"none\",\"leading\",\"trailing\",\"icon-only\"],optionTitles:[\"None\",\"Leading\",\"Trailing\",\"Only\"],defaultValue:\"none\",description:\"Choose None for text-only, Leading or Trailing for icons beside the label, or Only for icon-only buttons (set Label to the action name).\"},leadingIconName:{type:ControlType.Enum,title:\"Leading Icon\",options:[...ICON_OPTIONS_WITH_CUSTOM],optionTitles:ICON_OPTIONS_WITH_CUSTOM.map(k=>ICON_OPTION_TITLES_WITH_CUSTOM[k]),displaySegmentedControl:false,defaultValue:\"circle\",description:\"Select a library icon, or Custom to paste SVG in Leading Icon SVG below.\",hidden:props=>props?.iconPosition!==\"leading\"&&props?.iconPosition!==\"icon-only\"},leadingIconSvg:{type:ControlType.String,title:\"Leading Icon SVG\",defaultValue:\"\",placeholder:\"<svg>...</svg>\",description:\"Paste your SVG markup when Leading Icon is Custom - it replaces the built-in glyph.\",preventLocalization:true,hidden:props=>{const isLeadingOrIconOnly=props?.iconPosition===\"leading\"||props?.iconPosition===\"icon-only\";const showLeadingIconSvg=isLeadingOrIconOnly&&props?.leadingIconName===\"custom\";return!showLeadingIconSvg;}},trailingIconName:{type:ControlType.Enum,title:\"Trailing Icon\",options:[...ICON_OPTIONS_WITH_CUSTOM],optionTitles:ICON_OPTIONS_WITH_CUSTOM.map(k=>ICON_OPTION_TITLES_WITH_CUSTOM[k]),displaySegmentedControl:false,defaultValue:\"arrow-narrow-right\",description:\"Select a library icon, or Custom to paste SVG in Trailing Icon SVG below.\",hidden:props=>props?.iconPosition!==\"trailing\"},trailingIconSvg:{type:ControlType.String,title:\"Trailing Icon SVG\",defaultValue:\"\",placeholder:\"<svg>...</svg>\",description:\"Paste your SVG markup when Trailing Icon is Custom - it replaces the built-in glyph.\",preventLocalization:true,hidden:props=>props?.iconPosition!==\"trailing\"||props?.trailingIconName!==\"custom\"},// ─── 6. Configuration ──────────────────────────────────────────────────────\nvariant:{type:ControlType.Enum,title:\"Variant\",options:[\"solid\",\"primary\",\"outline\",\"ghost\",\"link\",\"primary-warm\",\"primary-lush\",\"primary-cool\",\"primary-tricount-blue\",\"primary-tricount-gold\"],optionTitles:[\"Solid\",\"Primary Brand\",\"Outline\",\"Ghost\",\"Link\",\"Primary Warm\",\"Primary Lush\",\"Primary Cool\",\"Primary Tricount Blue\",\"Primary Tricount Gold\"],defaultValue:\"solid\",description:\"Solid, Outline, Ghost, Link for standard treatments; Primary Brand is the legacy solid bunq blue; Primary Warm/Lush/Cool use bunq rainbow gradients; Primary Tricount Blue/Gold use tricount signature gradients. Primary and gradient variants ignore Theme.\"},size:{type:ControlType.Enum,title:\"Size\",options:[\"large\",\"medium\",\"small\"],optionTitles:[\"Large\",\"Medium\",\"Small\"],displaySegmentedControl:true,defaultValue:\"medium\",description:\"Use Large for primary hero CTAs, Medium for most UI, Small for dense rows or secondary actions.\"},widthMode:{type:ControlType.Enum,title:\"Width Mode\",options:[\"responsive\",\"full\",\"intrinsic\"],optionTitles:[\"Responsive\",\"Full\",\"Intrinsic\"],defaultValue:\"responsive\",displaySegmentedControl:true,description:\"Controls horizontal sizing relative to the layout breakpoint.\"},// ─── 7. Behavior ─────────────────────────────────────────────────────────\nonClick:{type:ControlType.EventHandler,title:\"On Click\",description:\"Wire this to run custom logic when someone activates the control - fires for both button and link rendering.\"},// ─── 8. Accessibility ────────────────────────────────────────────────────\nariaLabel:{type:ControlType.String,title:\"ARIA Label\",defaultValue:\"\",placeholder:\"e.g. Get started\",description:\"Optional accessible name override. Leave empty so screen readers use the visible Label; set only for icon-only buttons or when the spoken name should differ from visible text.\"},// ─── 9. Advanced ─────────────────────────────────────────────────────────\nid:{type:ControlType.String,title:\"ID\",defaultValue:\"button\",placeholder:\"e.g. my-element\",description:\"Set a unique id when you anchor to this control or tag it for analytics (e.g. Contentsquare). Leave empty to omit the id attribute.\",preventLocalization:true},trackingId:{type:ControlType.TrackingId,title:\"Tracking\",placeholder:\"ID\",description:\"Framer custom event id (lowercase + hyphens). Also pushes select_content to dataLayer for GTM / Amplitude. Falls back to a normalized ID when empty.\"},analyticsLocation:{type:ControlType.String,title:\"Analytics Location\",defaultValue:\"\",placeholder:\"e.g. hero\",description:\"Stable location hint for analytics (hero, nav, footer). Not localized.\",preventLocalization:true},// ─── 10. System ────────────────────────────────────────────────────────────\nbreakpoint:{type:ControlType.Enum,title:\"Breakpoint\",options:[\"desktop\",\"tablet\",\"phone\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],displaySegmentedControl:false,defaultValue:\"desktop\",description:FRAMER_BREAKPOINT_DESCRIPTION},...themePropertyControls(\"Default matches dark sections (our default). Inverted is for light backgrounds.\"),...brandPropertyControl()});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Button\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"140\",\"framerIntrinsicHeight\":\"48\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"ButtonProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ButtonVariant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}