{"version":3,"file":"shared-lib.BbR2Plbb.mjs","names":["useState","useRef","metadata","metadata","siteMetadata","metadataVersion","__FramerMetadata__"],"sources":["https:/framerusercontent.com/modules/LNOk9jbRXO68Gp5LMcZG/K4MVSZJR1bmwZ8smWKZn/ChoiceChips.js","https:/framerusercontent.com/modules/obE8026qhctzRNeT4jnP/wPYXrluM6kYfBZDictJx/siteMetadata.js","https:/framerusercontent.com/modules/5yRknt4EhrwClPKiwjIN/Xhr9UmglT7al3EIBBPrK/augiA20Il.js","https:/framerusercontent.com/modules/GGMYdC3SloeXXelLwAMR/76jI8LyuQidLIGCjRos3/bXMKwpeLR.js"],"sourcesContent":["// Choice Chips component with single/multi-selection modes\n// Author: JCA\n// Description: A fully accessible, form-compatible choice chips component with validation,\n// multiple selection modes, and customizable styling variants.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,startTransition,useRef,useEffect}from\"react\";import{motion,AnimatePresence}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Choice Chips Component\n * @author JCA\n * \n * A fully accessible choice chips component with robust validation.\n * Supports single and multi-selection modes with configurable min/max limits,\n * form validation, and multiple visual variants.\n * \n * Features:\n * - Single or multi-selection modes\n * - Dynamic min/max selection limits with smart validation\n * - Three style variants: Filled, Outlined, Soft\n * - Three size presets: Small, Medium, Large\n * - Optional checkmark icons with animations\n * - Full form integration with native validation\n * - ARIA-compliant accessibility\n * - Visual feedback for selection limits and errors\n * \n * @param {ChoiceChipsProps} props - Component properties\n * @returns {JSX.Element} Rendered choice chips component\n * \n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function ChoiceChips(props){const{options=[\"Option A\",\"Option B\",\"Option C\"],allowMultiple=false,maxSelectionLimit=3,minSelectionLimit=1,isRequired=false,fieldName=\"choiceChips\",validationMessage=\"Please select an option\",minValidationMessage=\"Please select at least {min} option(s)\",styleVariant=\"filled\",size=\"medium\",showCheckIcon=false,chipAlignment=\"left\",colors={activeColor:\"#1976D2\",inactiveColor:\"transparent\",activeTextColor:\"#FFFFFF\",inactiveTextColor:\"#000000\",borderColor:\"#E0E0E0\",errorColor:\"#D32F2F\"},border={radius:9999,thickness:1,selectedColor:\"#1976D2\",unselectedColor:\"#E0E0E0\"},font,padding=\"8px 16px\",gap=8,ariaLabel=\"Choice chips\",onValueChange,style}=props;const{activeColor,inactiveColor,activeTextColor,inactiveTextColor,borderColor,errorColor}=colors;// ============================================================================\n// State Management\n// ============================================================================\n/** Currently selected chip options */const[selected,setSelected]=useState([]);/** Option currently showing shake animation (when max limit reached) */const[shake,setShake]=useState(null);/** Whether to display validation error message */const[showError,setShowError]=useState(false);/** Current validation error message */const[errorMessage,setErrorMessage]=useState(\"\");// ============================================================================\n// Refs\n// ============================================================================\n/** Reference to hidden input for form validation */const hiddenInputRef=useRef(null);/** Reference to container element */const containerRef=useRef(null);// ============================================================================\n// Computed Values\n// ============================================================================\n/** Total number of available options */const optionsCount=options.length;/**\n     * Safe maximum selection limit\n     * Ensures max limit never exceeds available options\n     * @author JCA\n     */const safeMaxLimit=Math.min(Math.max(1,maxSelectionLimit),optionsCount);/**\n     * Safe minimum selection limit\n     * Ensures min limit never exceeds max limit\n     * @author JCA\n     */const safeMinLimit=Math.min(Math.max(1,minSelectionLimit),safeMaxLimit);/** Unique ID for error message element */const errorId=`${fieldName}-error`;/** Unique ID for chip group element */const groupId=`${fieldName}-group`;/** Whether component is in error state */const hasError=showError&&errorMessage!==\"\";// ============================================================================\n// Size Configurations\n// ============================================================================\n/**\n     * Size preset configurations\n     * Defines padding, font size, and icon size for each size variant\n     * @author JCA\n     */const sizeConfig={small:{padding:\"4px 12px\",fontSize:\"12px\",iconSize:12},medium:{padding:\"8px 16px\",fontSize:\"14px\",iconSize:14},large:{padding:\"12px 20px\",fontSize:\"16px\",iconSize:16}};const currentSize=sizeConfig[size];// ============================================================================\n// Style Calculation Functions\n// ============================================================================\n/**\n     * Calculate chip styles based on selection state and style variant\n     * @author JCA\n     * \n     * @param {boolean} isSelected - Whether the chip is currently selected\n     * @returns {ChipStyles} Computed style properties for the chip\n     */const getChipStyles=isSelected=>{const baseStyles={backgroundColor:\"\",color:\"\",borderColor:\"\",borderWidth:\"1px\"};// Determine border color based on selection state\nconst baseBorderColor=isSelected?border.selectedColor:border.unselectedColor;// Apply error border color if in error state\nif(hasError){baseStyles.borderColor=errorColor;baseStyles.borderWidth=`${border.thickness}px`;}// Apply variant-specific styles\nswitch(styleVariant){case\"filled\":baseStyles.backgroundColor=isSelected?activeColor:inactiveColor;baseStyles.color=isSelected?activeTextColor:inactiveTextColor;baseStyles.borderColor=hasError?errorColor:baseBorderColor;baseStyles.borderWidth=`${border.thickness}px`;break;case\"outlined\":baseStyles.backgroundColor=\"transparent\";baseStyles.color=isSelected?activeColor:inactiveTextColor;baseStyles.borderColor=hasError?errorColor:baseBorderColor;baseStyles.borderWidth=`${border.thickness}px`;break;case\"soft\":// Use 15% opacity for soft background (26 in hex = ~15% opacity)\nconst softBg=isSelected?`${activeColor}26`:inactiveColor;baseStyles.backgroundColor=softBg;baseStyles.color=isSelected?activeColor:inactiveTextColor;baseStyles.borderColor=hasError?errorColor:baseBorderColor;baseStyles.borderWidth=`${border.thickness}px`;break;}return baseStyles;};// ============================================================================\n// Event Handlers\n// ============================================================================\n/**\n     * Handle chip click/selection\n     * @author JCA\n     * \n     * Manages selection state based on single/multi-selection mode,\n     * enforces min/max limits, and triggers validation\n     * \n     * @param {string} option - The option that was clicked\n     */const handleChipClick=option=>{startTransition(()=>{if(allowMultiple){const isSelected=selected.includes(option);if(isSelected){// Deselect chip\nconst newSelected=selected.filter(item=>item!==option);setSelected(newSelected);onValueChange?.(newSelected);setShowError(false);}else{// Check if max limit reached\nif(selected.length>=safeMaxLimit){// Trigger shake animation\nsetShake(option);setTimeout(()=>setShake(null),500);return;}// Select chip\nconst newSelected=[...selected,option];setSelected(newSelected);onValueChange?.(newSelected);setShowError(false);}}else{// Single selection mode: toggle selection\nconst newSelected=selected.includes(option)?[]:[option];setSelected(newSelected);onValueChange?.(newSelected.length>0?newSelected[0]:\"\");setShowError(false);}});};// ============================================================================\n// Effects\n// ============================================================================\n/**\n     * Update form validation state when selection changes\n     * @author JCA\n     * \n     * Sets custom validity messages based on:\n     * - Required field validation\n     * - Minimum selection validation (multi-select)\n     */useEffect(()=>{if(hiddenInputRef.current){const input=hiddenInputRef.current;// Check if required and nothing selected\nif(isRequired&&selected.length===0){input.setCustomValidity(validationMessage);setErrorMessage(validationMessage);}else if(allowMultiple&&selected.length>0&&selected.length<safeMinLimit){const message=minValidationMessage.replace(\"{min}\",safeMinLimit.toString());input.setCustomValidity(message);setErrorMessage(message);}else{input.setCustomValidity(\"\");setErrorMessage(\"\");}}},[selected,isRequired,allowMultiple,safeMinLimit,validationMessage,minValidationMessage]);/**\n     * Set up form validation event listeners\n     * @author JCA\n     * \n     * Listens for:\n     * - invalid: Show error when form validation fails\n     * - input: Hide error when user interacts\n     * - submit: Hide error on successful submission\n     */useEffect(()=>{const input=hiddenInputRef.current;if(!input)return;const handleInvalid=e=>{e.preventDefault();startTransition(()=>setShowError(true));};const handleInput=()=>{startTransition(()=>setShowError(false));};input.addEventListener(\"invalid\",handleInvalid);input.addEventListener(\"input\",handleInput);// Find parent form and listen to submit\nconst form=input.form;if(form){const handleSubmit=()=>{startTransition(()=>setShowError(false));};form.addEventListener(\"submit\",handleSubmit);return()=>{input.removeEventListener(\"invalid\",handleInvalid);input.removeEventListener(\"input\",handleInput);form.removeEventListener(\"submit\",handleSubmit);};}return()=>{input.removeEventListener(\"invalid\",handleInvalid);input.removeEventListener(\"input\",handleInput);};},[]);// ============================================================================\n// Render\n// ============================================================================\nreturn /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{role:allowMultiple?\"group\":\"radiogroup\",\"aria-label\":ariaLabel,\"aria-required\":isRequired,\"aria-invalid\":hasError,\"aria-describedby\":hasError?errorId:undefined,id:groupId,style:{...style,display:\"flex\",flexWrap:\"wrap\",gap:`${gap}px`,width:\"100%\",justifyContent:chipAlignment===\"center\"?\"center\":chipAlignment===\"right\"?\"flex-end\":\"flex-start\"},children:options.map((option,index)=>{const isSelected=selected.includes(option);const isShaking=shake===option;const chipStyles=getChipStyles(isSelected);return /*#__PURE__*/_jsxs(motion.button,{type:\"button\",role:allowMultiple?\"checkbox\":\"radio\",\"aria-checked\":isSelected,\"aria-label\":option,\"aria-posinset\":index+1,\"aria-setsize\":options.length,onClick:()=>handleChipClick(option),initial:false,animate:{backgroundColor:chipStyles.backgroundColor,color:chipStyles.color,borderColor:chipStyles.borderColor,x:isShaking?[0,-4,4,-4,4,0]:0},transition:{duration:.2,x:{duration:.4}},whileHover:{scale:1.02},whileTap:{scale:.98},style:{...font,padding:currentSize.padding,borderRadius:border.radius,border:`${chipStyles.borderWidth} solid ${chipStyles.borderColor}`,cursor:\"pointer\",outline:\"none\",userSelect:\"none\",whiteSpace:\"nowrap\",display:\"flex\",alignItems:\"center\",gap:\"6px\"},children:[/*#__PURE__*/_jsx(AnimatePresence,{children:showCheckIcon&&isSelected&&/*#__PURE__*/_jsx(motion.span,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:\"spring\",stiffness:700,damping:30,duration:.15},style:{display:\"inline-flex\",alignItems:\"center\",fontSize:`${currentSize.iconSize}px`,lineHeight:1},\"aria-hidden\":\"true\",children:\"✓\"})}),option]},`${option}-${index}`);})}),allowMultiple?// Multi-select: comma-separated values\n/*#__PURE__*/_jsx(\"input\",{ref:hiddenInputRef,type:\"text\",name:fieldName,value:selected.join(\", \"),required:isRequired,style:{position:\"absolute\",opacity:0,height:0,width:0,pointerEvents:\"none\"},tabIndex:-1,\"aria-hidden\":\"true\",readOnly:true}):// Single-select: single value\n/*#__PURE__*/_jsx(\"input\",{ref:hiddenInputRef,type:\"text\",name:fieldName,value:selected[0]||\"\",required:isRequired,style:{position:\"absolute\",opacity:0,height:0,width:0,pointerEvents:\"none\"},tabIndex:-1,\"aria-hidden\":\"true\",readOnly:true}),hasError&&/*#__PURE__*/_jsx(motion.div,{id:errorId,role:\"alert\",\"aria-live\":\"polite\",\"aria-atomic\":\"true\",initial:{opacity:0,y:-4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},style:{marginTop:\"8px\",fontSize:\"12px\",color:errorColor,...font},children:errorMessage})]});}// ============================================================================\n// Property Controls Configuration\n// @author JCA\n// ============================================================================\naddPropertyControls(ChoiceChips,{// Options Configuration\noptions:{type:ControlType.Array,title:\"Chip Options\",control:{type:ControlType.String},defaultValue:[\"Option A\",\"Option B\",\"Option C\",\"Option D\"]},// Form Integration\nfieldName:{type:ControlType.String,title:\"Field Name for Forms\",defaultValue:\"choiceChips\",description:\"Name attribute for form submission\"},ariaLabel:{type:ControlType.String,title:\"Accessibility Label\",defaultValue:\"Choice chips\",description:\"Label for screen readers\"},// Visual Style\nstyleVariant:{type:ControlType.Enum,title:\"Visual Style\",options:[\"filled\",\"outlined\",\"soft\"],optionTitles:[\"Filled\",\"Outlined\",\"Soft\"],defaultValue:\"filled\",displaySegmentedControl:true},size:{type:ControlType.Enum,title:\"Chip Size\",options:[\"small\",\"medium\",\"large\"],optionTitles:[\"Small\",\"Medium\",\"Large\"],defaultValue:\"medium\",displaySegmentedControl:true},chipAlignment:{type:ControlType.Enum,title:\"Chip Alignment\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},// Colors\ncolors:{type:ControlType.Object,title:\"Colors\",controls:{activeColor:{type:ControlType.Color,title:\"Selected Background\",defaultValue:\"#1976D2\"},inactiveColor:{type:ControlType.Color,title:\"Unselected Background\",defaultValue:\"transparent\"},activeTextColor:{type:ControlType.Color,title:\"Selected Text\",defaultValue:\"#FFFFFF\"},inactiveTextColor:{type:ControlType.Color,title:\"Unselected Text\",defaultValue:\"#000000\"},borderColor:{type:ControlType.Color,title:\"Unselected Border\",defaultValue:\"#E0E0E0\"},errorColor:{type:ControlType.Color,title:\"Error State\",defaultValue:\"#D32F2F\"}},defaultValue:{activeColor:\"#1976D2\",inactiveColor:\"transparent\",activeTextColor:\"#FFFFFF\",inactiveTextColor:\"#000000\",borderColor:\"#E0E0E0\",errorColor:\"#D32F2F\"}},// Border\nborder:{type:ControlType.Object,title:\"Border\",controls:{radius:{type:ControlType.Number,title:\"Radius\",defaultValue:9999,min:0,max:100,step:1,unit:\"px\"},thickness:{type:ControlType.Number,title:\"Thickness\",defaultValue:1,min:0,max:10,step:1,unit:\"px\"},selectedColor:{type:ControlType.Color,title:\"Selected\",defaultValue:\"#1976D2\"},unselectedColor:{type:ControlType.Color,title:\"Unselected\",defaultValue:\"#E0E0E0\"}},defaultValue:{radius:9999,thickness:1,selectedColor:\"#1976D2\",unselectedColor:\"#E0E0E0\"}},// Typography & Spacing\nfont:{type:ControlType.Font,title:\"Text Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"14px\",variant:\"Medium\",letterSpacing:\"0.01em\",lineHeight:\"1.2em\"}},gap:{type:ControlType.Number,title:\"Spacing Between Chips\",defaultValue:8,min:0,max:32,step:1,unit:\"px\"},showCheckIcon:{type:ControlType.Boolean,title:\"Checkmark Icon Visibility\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},// Validation\nisRequired:{type:ControlType.Boolean,title:\"Selection Required\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},validationMessage:{type:ControlType.String,title:\"Required Field Error Message\",defaultValue:\"Please select an option\",hidden:({isRequired})=>!isRequired},// Multi-Selection Configuration\nallowMultiple:{type:ControlType.Boolean,title:\"Allow Multiple Choices\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden:({options})=>!options||options.length<2},minSelectionLimit:{type:ControlType.Number,title:\"Minimum Selections\",defaultValue:1,min:1,max:({options})=>options&&options.length>0?options.length:1,step:1,displayStepper:true,hidden:({allowMultiple,options})=>!allowMultiple||!options||options.length<2},minValidationMessage:{type:ControlType.String,title:\"Minimum Selection Error Message\",defaultValue:\"Please select at least {min} option(s)\",displayTextArea:true,hidden:({allowMultiple,options})=>!allowMultiple||!options||options.length<2},maxSelectionLimit:{type:ControlType.Number,title:\"Maximum selections allowed\",defaultValue:3,min:1,max:({options})=>options&&options.length>0?options.length:1,step:1,displayStepper:true,hidden:({allowMultiple,options})=>!allowMultiple||!options||options.length<2},// Events\nonValueChange:{type:ControlType.EventHandler}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ChoiceChips\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ChoiceChips.map","// Generated by Framer (cbc36cd)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (6d0c662)\nimport siteMetadata from\"https://framerusercontent.com/modules/obE8026qhctzRNeT4jnP/wPYXrluM6kYfBZDictJx/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-m4q28\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=1200\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (6d0c662)\nexport default function metadata(params,activeLocale){return{breakpoints:[{hash:\"8r5o4f\"}],description:\"Choice chips - For forms\",elements:{},framerSearch:{index:true},robots:\"max-image-preview:large\",serializationId:\"framer-JLlin\",title:\"Choice chips\",viewport:\"width=900\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}