{"version":3,"file":"FAQS.BOFXOLMe.mjs","names":["React.useState","React.useMemo","React.useCallback","AccordionItem"],"sources":["https:/framerusercontent.com/modules/uRsibDS1ErWuLrp7Jql1/lmxnWkA4Esw0TRDNthHT/FAQS.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";// Inlined SVG icons to remove 'lucide-react' dependency and reduce bundle size.\n// These components accept 'size' and 'color' props for consistency.\nconst PlusIcon=({size=16,color=\"currentColor\"})=>/*#__PURE__*/_jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"path\",{d:\"M12 5v14\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14\"})]});const MinusIcon=({size=16,color=\"currentColor\"})=>/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:size,height:size,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 12h14\"})});// Define Desktop-specific styles as a constant outside the component\n// This prevents re-creation on every render.\nconst desktopCss=`\n@media (min-width: 768px) { \n    .subhead { font-size: 14px; } \n    .main-title { font-size: 48px; } \n    .faq-card { \n        border-radius: 24px;\n        padding: 32px; \n    } \n    .question-text { font-size: 18px; } \n    .answer-text { font-size: 16px; } \n}\n`;// Hoist the transition object as a constant to prevent re-creation on every render.\nconst accordionTransition={duration:.3,ease:\"easeInOut\"};// Memoized Accordion Item component to prevent unnecessary re-renders\n// when its props (faq, index, isOpen, onToggle, colors) do not change.\nconst AccordionItem=/*#__PURE__*/React.memo(function AccordionItem({faq,index,isOpen,onToggle,brandPrimary,brandAccent,brandDark}){// The key prop is correctly applied in the parent component's map function.\n// No key is needed on this root div itself.\nreturn /*#__PURE__*/_jsxs(\"div\",{className:\"accordion-item\",children:[/*#__PURE__*/_jsxs(\"button\",{className:\"accordion-trigger\",onClick:()=>onToggle(index),\"aria-expanded\":isOpen,\"aria-controls\":`faq-answer-${faq.id||index}`,id:`faq-question-${faq.id||index}`,children:[/*#__PURE__*/_jsx(\"span\",{className:\"question-text\",style:{color:isOpen?brandPrimary:\"#1E293B\"},children:faq.question}),/*#__PURE__*/_jsx(\"span\",{className:\"icon-wrapper\",style:{backgroundColor:isOpen?brandPrimary:brandAccent,color:isOpen?\"white\":brandDark},children:isOpen?/*#__PURE__*/_jsx(MinusIcon,{size:16}):/*#__PURE__*/_jsx(PlusIcon,{size:16})})]}),/*#__PURE__*/_jsxs(AnimatePresence,{initial:false,children:[\" \",isOpen&&/*#__PURE__*/_jsx(motion.div,{id:`faq-answer-${faq.id||index}`,role:\"region\",\"aria-labelledby\":`faq-question-${faq.id||index}`,className:\"answer-container\",initial:{height:0,opacity:0},animate:{height:\"auto\",opacity:1},exit:{height:0,opacity:0},transition:accordionTransition,children:/*#__PURE__*/_jsx(\"p\",{className:\"answer-text\",children:faq.answer})})]})]});});// Add a display name for better debugging in React DevTools\nAccordionItem.displayName=\"AccordionItem\";export default function FAQSection(props){// Initialize to null so no item is open by default, or if faqs array is empty.\nconst[openIndex,setOpenIndex]=React.useState(null);// Memoize Base CSS as it depends on props. This prevents re-generating the string\n// and re-rendering the <style> tag content unnecessarily on every render if dependencies don't change.\nconst baseCss=React.useMemo(()=>`\n    /* \n     * OPTIMIZATION: Font imports have been removed from here. \n     * For optimal performance, load global fonts once at a higher level \n     * (e.g., in Framer's project settings or a global CSS file). \n     * The font-family declarations below are for applying the font, not loading it.\n     */\n    .wrapper {\n        font-family: 'Inter', sans-serif;\n        padding: 64px 24px;\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        background-color: ${props.backgroundColor};\n    }\n\n    .container {\n        max-width: 800px;\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n    }\n\n    /* Header Section */\n    .header-section {\n        text-align: center;\n        margin-bottom: 48px;\n    }\n\n    .subhead {\n        color: ${props.brandPrimary};\n        font-size: 12px;\n        font-weight: 700;\n        text-transform: uppercase;\n        letter-spacing: 0.1em;\n        margin-bottom: 12px;\n        display: block;\n    }\n\n    .main-title {\n        font-family: 'Merriweather', serif;\n        font-size: 32px;\n        color: ${props.brandDark};\n        line-height: 1.1;\n        margin: 0;\n    }\n\n    /* FAQ Card */\n    .faq-card {\n        background: white;\n        border-radius: 16px;\n        padding: 16px;\n        width: 100%;\n        box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n        border: 1px solid #F1F5F9;\n    }\n\n    /* Accordion Item */\n    .accordion-item {\n        border-bottom: 1px solid #E2E8F0;\n    }\n    .accordion-item:last-child {\n        border-bottom: none;\n    }\n\n    .accordion-trigger {\n        width: 100%;\n        padding: 20px 0;\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        background: none;\n        border: none;\n        text-align: left;\n        cursor: pointer;\n        gap: 16px;\n    }\n\n    .question-text {\n        font-size: 16px;\n        font-weight: 500;\n        transition: color 0.3s;\n        font-family: 'Inter', sans-serif;\n    }\n\n    .icon-wrapper {\n        padding: 6px;\n        border-radius: 50%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        flex-shrink: 0;\n        transition: all 0.3s;\n    }\n\n    .answer-container {\n        overflow: hidden;\n    }\n\n    .answer-text {\n        padding-bottom: 24px;\n        color: #475569;\n        line-height: 1.6;\n        font-size: 14px;\n        max-width: 650px;\n    }\n    `,[props.backgroundColor,props.brandPrimary,props.brandDark])// Dependencies for baseCss\n;// Memoize the click handler with useCallback to prevent unnecessary re-creations\n// on every render, which can help optimize child components if they also memoize.\nconst handleToggle=React.useCallback(index=>{setOpenIndex(prevIndex=>prevIndex===index?null:index);},[]);return /*#__PURE__*/_jsxs(\"section\",{className:\"wrapper\",children:[/*#__PURE__*/_jsxs(\"style\",{children:[baseCss,props.forceMobile?\"\":desktopCss]}),/*#__PURE__*/_jsxs(\"div\",{className:\"container\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"header-section\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"subhead\",children:props.sectionTag}),/*#__PURE__*/_jsx(\"h2\",{className:\"main-title\",children:props.sectionTitle})]}),/*#__PURE__*/_jsx(\"div\",{className:\"faq-card\",children:props.faqs.map((faq,index)=>{const isOpen=openIndex===index;return /*#__PURE__*/_jsx(AccordionItem,{faq:faq,index:index,isOpen:isOpen,onToggle:handleToggle,brandPrimary:props.brandPrimary,brandAccent:props.brandAccent,brandDark:props.brandDark},faq.id||`faq-${index}`);})})]})]});}// Add a display name for better debugging in React DevTools\nFAQSection.displayName=\"FAQSection\";addPropertyControls(FAQSection,{forceMobile:{type:ControlType.Boolean,title:\"Force Mobile\",defaultValue:false},backgroundColor:{type:ControlType.Color,title:\"Bg Color\",defaultValue:\"#FFFFFF\"},brandDark:{type:ControlType.Color,title:\"Dark Color\",defaultValue:\"#113A3A\"},brandPrimary:{type:ControlType.Color,title:\"Primary Color\",defaultValue:\"#2D6A6A\"},brandAccent:{type:ControlType.Color,title:\"Accent Color\",defaultValue:\"#E6F4F1\"},sectionTag:{type:ControlType.String,defaultValue:\"FAQ\"},sectionTitle:{type:ControlType.String,defaultValue:\"Answers to your most common questions\"},faqs:{type:ControlType.Array,title:\"Questions\",control:{type:ControlType.Object,controls:{id:{type:ControlType.String,title:\"ID\",hidden:true,// Generate a simple unique ID for new items\ndefaultValue:()=>`faq-${Math.random().toString(36).substring(2,9)}`},question:{type:ControlType.String},answer:{type:ControlType.String,displayTextArea:true}}},defaultValue:[{id:\"faq-1\",question:\"What is microsuction? Is it painful?\",answer:\"Microsuction is the gold standard for earwax removal. It uses a gentle medical vacuum to remove wax. It is generally painless, though it can be a bit noisy. Unlike syringing, no water is used, reducing infection risk.\"},{id:\"faq-2\",question:\"How long does the appointment take?\",answer:\"A standard appointment typically takes between 20 to 30 minutes. This allows time for examination, the procedure, and post-procedure check.\"},{id:\"faq-3\",question:\"Is there an age limit?\",answer:\"We treat patients of almost all ages, from children (usually 4+) to the elderly. For young children, we assess on a case-by-case basis depending on their ability to sit still.\"},{id:\"faq-4\",question:\"Do I need to do anything to prepare?\",answer:\"Using olive oil drops (specifically for ears) for 2-3 days prior to your appointment is highly recommended. It softens the wax, making the procedure quicker and more comfortable.\"},{id:\"faq-5\",question:\"What happens if you find no wax?\",answer:\"We operate on a strict 'No Wax? No Fee' policy. If we examine your ears and find they are clear, the consultation is free. We believe in honest healthcare, not unnecessary bills.\"},{id:\"faq-6\",question:\"What areas do you service?\",answer:\"We currently service the greater metropolitan area. Please check our 'Service Areas' page for a detailed map of our coverage.\"},{id:\"faq-7\",question:\"How can I pay?\",answer:\"We accept all major credit/debit cards via a secure portable terminal. Cash is also accepted.\"},{id:\"faq-8\",question:\"Can I book for my parents?\",answer:\"Absolutely. Many of our clients book on behalf of elderly parents. You can handle the booking and payment online or on-site.\"}]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FAQSection\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FAQS.map"],"mappings":"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"}