{"version":3,"file":"ContinueButton.Bn2Ff7QD.mjs","names":["useState","useMemo","__esmMin","init_npm_react_18_3_1","pe","ce","init_jsx_runtime","c","_e","addPropertyControls","init_framer_J2N2IBQG","useFields","init_branching","init_values","track","init_required","normalizeVisibleRequired","BUTTON_STYLE_GROUP","init_buttonStyleGroup","hasValue","useFieldErrors","init_stepStores","useStepHistory","init_analytics","validateForm","init_validateForm","init_formStores","useTouched","resolveButtonStyles","useFormError","ruleMatches","evaluateBranchTarget","useVisibleRequired","init_resolveButtonStyles","BRANCHING_RULES","CONTINUE_BUTTON_CONTROLS","init_controls","ControlType","ContinueButton","isHovered","setHovered","isPressed","setPressed","isFocused","setFocused","isStepValid","setIsStepValid","fields","errors","setErrors","touched","setTouched","visibleRequired","setFormError","required","f","e","ok","name","handleClick","nextStepId","currentStep","newErrors","newTouched","isValid","incompleteMessage","branchedTarget","branchingRules","matchedRule","r","goToStep","styles","disabled","style","label","init_ContinueButton"],"sources":["https:/framerusercontent.com/modules/xtCerBvN6iRNpIapDarB/IXm3nvL03S7V6KhAmCp0/controls.js","https:/framerusercontent.com/modules/khXT23iv7hjvyvLk9G5X/daH6sreltxKzDpst35hv/ContinueButton.js"],"sourcesContent":["import{ControlType}from\"framer\";import{BUTTON_STYLE_GROUP}from\"https://framerusercontent.com/modules/9i2Alm7tGoDSsKzk9kk3/9Y1RthbcC9dcPnTigB3t/buttonStyleGroup.js\";const BRANCHING_RULES={branchingRules:{type:ControlType.Array,title:\"Branching Rules\",propertyControl:{type:ControlType.Object,controls:{field:{type:ControlType.String,title:\"Field (apiName)\",placeholder:\"e.g. business_type\"},op:{type:ControlType.Enum,title:\"Operator\",options:[\"equals\",\"notEquals\",\"includes\",\"regex\"],optionTitles:[\"equals\",\"not equals\",\"includes\",\"regex\"],defaultValue:\"equals\"},value:{type:ControlType.String,title:\"Value / Regex\",placeholder:\"e.g. pro / /^pro/i\"},nextStepId:{type:ControlType.String,title:\"Next Step ID\",placeholder:\"step-id-to-go\"}}},defaultValue:[]}};export const CONTINUE_BUTTON_CONTROLS={label:{type:ControlType.String,title:\"Label\",defaultValue:\"Continue\"},nextStepId:{type:ControlType.String,title:\"Default Next Step\",defaultValue:\"\"},incompleteMessage:{type:ControlType.String,title:\"Incomplete Message\",placeholder:\"(optional)\"},// Optional branching (first rule that matches wins; else falls back to default)\n...BRANCHING_RULES,// Styles\n...BUTTON_STYLE_GROUP};\nexport const __FramerMetadata__ = {\"exports\":{\"CONTINUE_BUTTON_CONTROLS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./controls.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";import{addPropertyControls}from\"framer\";import{resolveButtonStyles}from\"https://framerusercontent.com/modules/2nm11oCJ9YbIAtty0hAj/yWPmlHEIysfpBb7BPDqb/resolveButtonStyles.js\";import{useFields,useFieldErrors,useTouched,useVisibleRequired,useFormError}from\"https://framerusercontent.com/modules/Ax3pgpFugmVtkLyjK0aB/aDpsy8V26LRvJ6yNDXja/formStores.js\";import{useStepHistory}from\"https://framerusercontent.com/modules/wm78KsU1IYJJVRPxnalG/7zJiE09qHzT3tvBf6zOQ/stepStores.js\";import{validateForm}from\"https://framerusercontent.com/modules/OyEfIKv9n5xUcgJ6ibLb/qWdGzh1zHLkDcT2uFdXP/validateForm.js\";import{evaluateBranchTarget,ruleMatches}from\"https://framerusercontent.com/modules/3uKicuWZs0YreChql2h7/M8Rk3JsPJkRRyBMz2ARg/branching.js\";import{track}from\"https://framerusercontent.com/modules/KHQRbo1PS40kxEtlsBHj/eAgZx6F6skeVRSwyjPMA/analytics.js\";import{normalizeVisibleRequired}from\"https://framerusercontent.com/modules/jsQEdCu29ceye0UOu35m/BPGbCPBY0YM25AuGTE4v/required.js\";import{hasValue}from\"https://framerusercontent.com/modules/LDXisB7uYJA6597I5HTt/zXhixOoL5Digm6OgZVcN/values.js\";import{CONTINUE_BUTTON_CONTROLS}from\"https://framerusercontent.com/modules/xtCerBvN6iRNpIapDarB/IXm3nvL03S7V6KhAmCp0/controls.js\";export function ContinueButton({label=\"Continue\",nextStepId,styles={},incompleteMessage,branchingRules=[]}){const[isHovered,setHovered]=useState(false);const[isPressed,setPressed]=useState(false);const[isFocused,setFocused]=useState(false);const[isStepValid,setIsStepValid]=useState(false);const[fields]=useFields();const[errors,setErrors]=useFieldErrors();const[touched,setTouched]=useTouched();const[visibleRequired]=useVisibleRequired();const[,setFormError]=useFormError();const{currentStep,goToStep}=useStepHistory();// required names for the active step\nconst required=useMemo(()=>normalizeVisibleRequired(visibleRequired),[visibleRequired]);// only enable when all visible required fields have values and no errors\nuseEffect(()=>{if(required.length===0){setIsStepValid(true);return;}const f=fields;const e=errors;const ok=required.every(name=>hasValue(f?.[name])&&!e?.[name]);setIsStepValid(ok);},[fields,errors,touched,required]);const handleClick=e=>{e.preventDefault();if(!nextStepId)return;// cheap click signal\ntrack(\"continue_click\",{from_step:currentStep??null,default_next:nextStepId||null,req_count:required.length});// authoritative validate/write\nconst{isValid,errors:newErrors,touched:newTouched}=validateForm(fields,required);setErrors(newErrors);setTouched(newTouched);if(!isValid){if(incompleteMessage)setFormError(incompleteMessage);track(\"continue_blocked\",{from_step:currentStep??null,reason:\"validation\",req_count:required.length});return;}setFormError(\"\");const f=fields;const branchedTarget=evaluateBranchTarget(f,branchingRules,nextStepId);// log which rule (if any) fired\nlet matchedRule;if(Array.isArray(branchingRules)&&branchingRules.length>0){matchedRule=branchingRules.find(r=>ruleMatches(r,f));}track(\"continue_navigate\",{from_step:currentStep??null,to_step:branchedTarget,used_branch:Boolean(matchedRule),...matchedRule?{branch_field:matchedRule.field,branch_op:matchedRule.op,branch_value:matchedRule.value??null}:null});goToStep(branchedTarget);};const r=resolveButtonStyles(styles);const disabled=!nextStepId||!isStepValid;const style=r.buildStyle({disabled,hover:isHovered,press:isPressed,focus:isFocused});return /*#__PURE__*/_jsx(\"button\",{type:\"button\",disabled:disabled,style:{...style,fontFamily:\"Figtree, system-ui, sans-serif\",cursor:disabled?\"not-allowed\":\"pointer\",opacity:disabled?r.tokens.effects.disabledOpacity:1,boxShadow:r.tokens.effects.shadow,transition:style.transition,minHeight:r.tokens.spacing.height,boxSizing:\"border-box\",position:\"relative\"},onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),onMouseDown:()=>setPressed(true),onMouseUp:()=>setPressed(false),onFocus:()=>setFocused(true),onBlur:()=>setFocused(false),onClick:handleClick,children:label});}// Framer type limitation\naddPropertyControls(ContinueButton,CONTINUE_BUTTON_CONTROLS);\nexport const __FramerMetadata__ = {\"exports\":{\"ContinueButtonProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ContinueButton\":{\"type\":\"reactComponent\",\"name\":\"ContinueButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}