{"version":3,"file":"ModulesExplorer.D8OYq_db.mjs","names":["useState","_Fragment"],"sources":["https:/framerusercontent.com/modules/xVSAOfEqCwmHancwiWWC/1OeCrHP4FMS4N2RgZ2K7/ModulesExplorer.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useEffect}from\"react\";// ============================================================================\n// Modules — ported from Modules.dc.html (Claude Design) to a native Framer\n// code component. Interactive module selector: master list (grouped by family)\n// + detail panel + capability modal. Data inlined from pricing-data.js.\n// Design tokens resolved to hex from the Tacklit marketing design system.\n//\n// Fully responsive via CSS container queries keyed off the component's own\n// width, so it adapts at every Homepage snap point:\n//   LargeDesktops 1240 · Desktop 992 · Tablet 768 · Phone 390\n//\n// On mobile (<= 860) the grouped left-hand nav collapses into a styled custom\n// dropdown; the selected module's detail content renders beneath it.\n//\n// Two property-panel dropdowns:\n//   • \"Width\"  — pick the snap point (Fill / 1240 / 992 / 768 / 390); sets the\n//     component's own width so it renders at that scale (container queries follow).\n//   • \"Module\" — pick which module the component opens on.\n// ============================================================================\nconst T={bg:\"#f4f6fc\",surface:\"#ffffff\",textStrong:\"#0a1338\",textBody:\"#2b3358\",textMuted:\"#5b6480\",textFaint:\"#8a93b4\",n100:\"#eef1f9\",n200:\"#e2e7f4\",navy:\"#122a88\",infoSoft:\"#e6e9fe\",blue:\"#3d50fb\"};const FONT_DISPLAY=\"'Sora', 'Inter', system-ui, sans-serif\";const FONT_BODY=\"'Inter', system-ui, -apple-system, sans-serif\";// Responsive layout lives in real CSS so container queries can drive it.\n// Colour / per-module dynamic styling stays inline. An outer wrapper fills the\n// frame and centres the inner container; the inner container is the query\n// container whose width the \"Width\" control sets.\nconst CSS=`\n.tkmx-root { width: 100%; display: flex; justify-content: center; box-sizing: border-box; }\n.tkmx-root *, .tkmx-root *::before, .tkmx-root *::after { box-sizing: border-box; }\n.tkmx { container-type: inline-size; width: 100%; box-sizing: border-box; }\n.tkmx-section { padding: 64px 32px 88px; }\n.tkmx-inner { max-width: 1160px; margin: 0 auto; }\n.tkmx-head { text-align: center; max-width: 640px; margin: 0 auto 40px; display: flex; flex-direction: column; gap: 14px; align-items: center; }\n.tkmx-title { margin: 0; font-size: 34px; line-height: 1.15; letter-spacing: -0.015em; }\n.tkmx-sub { margin: 0; font-size: 16px; line-height: 1.6; }\n.tkmx-grid { display: grid; grid-template-columns: minmax(0,340px) minmax(0,1fr); gap: 24px; align-items: start; }\n.tkmx-navcol { display: flex; flex-direction: column; }\n.tkmx-nav-list { display: flex; flex-direction: column; gap: 20px; }\n.tkmx-nav-dd { display: none; }\n.tkmx-detail { position: sticky; top: 24px; align-self: start; overflow: hidden; }\n.tkmx-navbtn { transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease, transform .16s ease; }\n.tkmx-navbtn:not(.is-active):hover { border-color: var(--mx-accent, #cfd6ea) !important; background: var(--mx-accent-soft, #f7f9ff) !important; box-shadow: 0 6px 16px rgba(13,28,118,.10) !important; transform: translateY(-1px); }\n.tkmx-navbtn:not(.is-active):active { transform: translateY(0); }\n.tkmx-detail-head { display: flex; align-items: center; gap: 18px; padding: 26px 28px; }\n.tkmx-detail-icon { width: 56px; height: 56px; border-radius: 16px; }\n.tkmx-detail-icon svg { width: 26px; height: 26px; }\n.tkmx-detail-name { margin: 0; font-size: 26px; letter-spacing: -0.01em; color: #fff; }\n.tkmx-detail-body { padding: 26px 28px 28px; }\n.tkmx-cap-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }\n.tkmx-modal-head { position: relative; display: flex; align-items: flex-start; gap: 16px; padding: 26px 28px 20px; }\n.tkmx-modal-name { margin: 4px 0 0; font-size: 24px; letter-spacing: -0.01em; }\n.tkmx-modal-body { padding: 24px 28px 30px; display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); gap: 30px; align-items: start; }\n\n@container (max-width: 860px) {\n  .tkmx-section { padding: 48px 24px 64px; }\n  .tkmx-head { margin-bottom: 32px; }\n  .tkmx-title { font-size: 28px; }\n  .tkmx-grid { grid-template-columns: 1fr; gap: 18px; }\n  .tkmx-nav-list { display: none; }\n  .tkmx-nav-dd { display: block; }\n  .tkmx-detail { position: static; top: auto; }\n  .tkmx-cap-grid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }\n}\n@container (max-width: 520px) {\n  .tkmx-section { padding: 36px 16px 52px; }\n  .tkmx-head { gap: 12px; margin-bottom: 28px; }\n  .tkmx-title { font-size: 23px; }\n  .tkmx-sub { font-size: 15px; }\n  .tkmx-detail-head { padding: 20px 18px; gap: 14px; }\n  .tkmx-detail-icon { width: 48px; height: 48px; border-radius: 14px; }\n  .tkmx-detail-icon svg { width: 22px; height: 22px; }\n  .tkmx-detail-name { font-size: 21px; }\n  .tkmx-detail-body { padding: 20px 18px 24px; }\n  .tkmx-cap-grid { grid-template-columns: 1fr; }\n}\n/* Modal is fixed to the viewport (rendered outside the query container). */\n@media (max-width: 700px) {\n  .tkmx-modal-head { padding: 20px 20px 16px; }\n  .tkmx-modal-name { font-size: 20px; }\n  .tkmx-modal-body { grid-template-columns: 1fr; gap: 22px; padding: 20px 20px 26px; }\n}\n`;// ---- feature-page links -----------------------------------------------------\n// Each capability links to its CMS-built feature page at /features/{slug} when\n// one exists. FEATURE_SLUGS mirrors the 96 published Care OS Modules items.\n// Names that do not slugify to their feature slug are mapped in\n// CAP_SLUG_OVERRIDE. Capabilities without a page keep the in-place modal, so\n// there are never broken links.\nfunction slugify(s){return String(s||\"\").toLowerCase().replace(/&/g,\" \").replace(/[^a-z0-9]+/g,\"-\").replace(/^-+|-+$/g,\"\");}const FEATURE_SLUGS=new Set([\"simple-booking-link\",\"calendar\",\"telehealth\",\"clinical-notes\",\"forms\",\"assessments\",\"client-profile\",\"consent\",\"groups\",\"tasks\",\"email\",\"reports-and-letters\",\"team-management\",\"mfa\",\"sms\",\"appointment-reminders\",\"appointment-offer\",\"broadcast\",\"efax\",\"healthlink\",\"team-chat\",\"ios-app\",\"android-app\",\"tablet-apps\",\"digital-programs\",\"activity-library\",\"program-scheduling\",\"progress-tracking\",\"in-platform-analytics\",\"data-pipeline\",\"services-report\",\"invoicing\",\"online-payments\",\"medicare-dva-claiming\",\"airwallex\",\"payment-automation\",\"accounting-integration\",\"packages\",\"calendar-sync\",\"api\",\"data-sync\",\"custom-booking-flow\",\"client-portal\",\"message-centre\",\"client-registration\",\"custom-referral-forms\",\"referral-inbox\",\"waitlist-management\",\"bed-inventory\",\"placement-tracking\",\"occupancy-view\",\"bed-allocation\",\"peer-worker-profiles\",\"lived-experience-notes\",\"shared-care-coordination\",\"role-based-access\",\"care-protocols\",\"protocol-templates\",\"protocol-assignment\",\"protocol-tracking\",\"partner-portals\",\"channel-referrals\",\"partner-reporting\",\"prescribing\",\"medication-management\",\"medical-records\",\"pathology-results\",\"ai-scribe\",\"ai-summaries\",\"care-suggestions\",\"risk-detection\",\"smart-search\",\"ai-assistant\",\"custom-workflows\",\"automations\",\"advanced-permissions\",\"audit-compliance\",\"step-tracking\",\"compliance-view\",\"private-partner-booking-channels\",\"referrer-booking-channels\",\"partner-booking-pages\",\"flow\",\"labs\",\"investigations\",\"escript\",\"note-companion\",\"letter-drafting\",\"referral-parsing\",\"client-clinician-matcher\",\"session-transcribe\",\"rescheduler\",\"connected-workspaces\",\"sso\",\"custom-roles\",\"government-nhs-compliance-reporting\"]);const CAP_SLUG_OVERRIDE={\"Reports + letters\":\"reports-and-letters\",\"Reminders\":\"appointment-reminders\",\"Medicare & DVA claiming (unlimited, no per-claim fee)\":\"medicare-dva-claiming\"};function featureHref(name){const s=CAP_SLUG_OVERRIDE[name]||slugify(name);return FEATURE_SLUGS.has(s)?\"/features/\"+s:null;}const ICON_PATHS={layers:\"M12 2 2 7l10 5 10-5-10-5z M2 17l10 5 10-5 M2 12l10 5 10-5\",chat:\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\",phone:\"M7 2h10a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z M11 18h2\",chart:\"M4 20V4 M4 20h16 M9 20v-6 M14 20V9 M19 20v-9\",card:\"M2 5h20v14H2z M2 10h20\",plug:\"M9 2v6 M15 2v6 M6 8h12v3a6 6 0 0 1-12 0z M12 17v5\",door:\"M5 21V4a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v17 M4 21h16 M12.5 12h.01\",inbox:\"M22 12h-6l-2 3h-4l-2-3H2 M5.5 5h13l3.5 7v6a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-6z\",pill:\"M10.5 20.5a5 5 0 0 1-7-7l6-6a5 5 0 0 1 7 7l-6 6z M8 8l8 8\",spark:\"M12 2l2.4 6.6L21 11l-6.6 2.4L12 20l-2.4-6.6L3 11l6.6-2.4z\",shield:\"M12 2l8 4v6c0 5-3.5 8-8 10-4.5-2-8-5-8-10V6z\",share:\"M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6z M6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z M18 22a3 3 0 1 0 0-6 3 3 0 0 0 0 6z M8.6 13.5l6.8 4 M15.4 6.5l-6.8 4\",bed:\"M2 4v16 M2 11h18a2 2 0 0 1 2 2v7 M2 15h20 M6 11V8h6v3\",people:\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2 M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z M23 21v-2a4 4 0 0 0-3-3.87 M16 3.13a4 4 0 0 1 0 7.75\",activity:\"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z\",checklist:\"M9 5h11 M9 12h11 M9 19h11 M4 4.5l1.2 1.3L7.5 3.5 M4 11.5l1.2 1.3L7.5 10.5 M4 18.5l1.2 1.3L7.5 17.5\",chevron:\"M6 9l6 6 6-6\"};const FAM_ORDER=[\"Clinical core\",\"Client experience\",\"Front door\",\"Money\",\"Intelligence\",\"Platform\"];const FAM_COLOR={\"Clinical core\":\"#3d50fb\",\"Client experience\":\"#19c0a8\",\"Front door\":\"#7c5cfc\",Money:\"#f5b13f\",Intelligence:\"#f4634e\",Platform:\"#2536b7\"};const MODULES=[{id:\"base\",name:\"Base\",mandatory:true,oneLiner:\"The clinical core every workspace runs on\",replaces:\"Replaces your practice-management system and EHR, plus separate scheduling, intake-form, e-consent and telehealth tools — one clinical record instead of four logins that don’t talk to each other.\",family:\"Clinical core\",accent:\"#3d50fb\",icon:\"layers\",caps:[{name:\"Client profile\",desc:\"One clinical file per client with history, documents and contacts in one place.\"},{name:\"Calendar\",desc:\"Schedule appointments across practitioners with availability and room views.\"},{name:\"Telehealth\",desc:\"Run secure video sessions from inside the platform, no extra software.\",note:\"Video usage billed per minute\"},{name:\"Tasks\",desc:\"Assign and track follow-up work so nothing falls between sessions.\"},{name:\"Groups\",desc:\"Set up and run group programs with shared attendance and notes.\"},{name:\"Forms\",desc:\"Send intake and clinical forms clients complete before they arrive.\"},{name:\"Assessments\",desc:\"Deliver standardised assessments and track scores over time.\"},{name:\"Reports + letters\",desc:\"Generate clinical reports and referral letters from session data.\"},{name:\"Consent\",desc:\"Capture and store client consent digitally with an audit trail.\"},{name:\"Email\",desc:\"Send and receive client email from within the workspace.\"},{name:\"Simple booking link\",desc:\"Let clients book themselves into your available times.\",long:{intro:\"The Simple booking link turns your live availability into one shareable URL for your website, email signature or an SMS, so clients can book themselves in without ever calling reception. It is the lowest-effort way to open a self-service front door to your practice.\",bullets:[\"Fill your calendar around the clock. Clients book the moment they decide to seek help, including evenings and weekends when your front desk is closed, so their motivation does not fade while they wait for a call-back.\",\"Take work off reception. Self-service booking removes the back-and-forth of finding a mutually free time, freeing your admin team to focus on the clients already in front of them rather than playing phone tag.\",\"Reduce empty slots and no-shows. Clients pick a time that genuinely suits them, which they are far more likely to keep, and any cancellation becomes instantly bookable again by the next person.\",\"Shorten time to first appointment. A faster path from first contact to first session means clients start care while they are still engaged, which improves early outcomes and retention.\",\"Present a professional front door. A clean, branded booking experience signals an organised, trustworthy service from the very first interaction, before a client has even met a clinician.\",\"No setup overhead. The link works with your existing calendar and availability rules out of the box, with nothing extra to build or maintain.\"]}},{name:\"MFA\",desc:\"Protect every account with multi-factor authentication.\"},{name:\"Team management\",desc:\"Add practitioners, set roles and manage access across your team.\"},{name:\"Clinical notes\",desc:\"Write, structure and sign clinical notes against each appointment.\"}]},{id:\"comms\",name:\"Comms\",oneLiner:\"Reach clients and your team, in one place\",replaces:\"Replaces standalone SMS-reminder services, eFax lines and a separate team-chat app — client and team messaging sit next to the calendar that triggers them, so nothing is double-keyed.\",family:\"Client experience\",accent:\"#19c0a8\",icon:\"chat\",caps:[{name:\"SMS\",desc:\"Send appointment SMS to clients and receive their replies.\",note:\"Billed per SMS sent\"},{name:\"Reminders\",desc:\"Automatic appointment reminders that cut no-shows.\"},{name:\"Appointment offer\",desc:\"Offer open times to clients and fill cancellations automatically.\"},{name:\"Broadcast\",desc:\"Message groups of clients or staff at once.\"},{name:\"eFax\",desc:\"Send and receive faxes digitally without a machine.\"},{name:\"Healthlink\",desc:\"Exchange secure clinical messages over the Healthlink network.\"},{name:\"Team chat\",desc:\"Message colleagues in real time inside the workspace.\"}]},{id:\"mobile\",name:\"Mobile\",oneLiner:\"Run your practice from your phone\",replaces:\"Replaces nothing external — it extends the same workspace to phone and tablet, so on-the-go staff don’t need a cut-down second system.\",family:\"Platform\",accent:\"#2536b7\",icon:\"phone\",caps:[{name:\"iOS app\",desc:\"Run your practice from the Tacklit app on iPhone.\"},{name:\"Android app\",desc:\"Run your practice from the Tacklit app on Android.\"},{name:\"Tablet apps\",desc:\"A tablet-optimised view for reception and clinic floors.\"}]},{id:\"programs\",name:\"Digital Programs and Activities\",oneLiner:\"Assign digital programs and activities between sessions\",replaces:\"Replaces standalone digital-program and homework apps — activities are assigned from the clinical record, so between-session work and progress live with the client’s notes.\",family:\"Client experience\",accent:\"#19c0a8\",icon:\"activity\",caps:[{name:\"Digital programs\",desc:\"Assign structured digital programs clients work through over time.\"},{name:\"Activity library\",desc:\"A library of activities and resources to send between sessions.\"},{name:\"Program scheduling\",desc:\"Schedule when program steps unlock for each client.\"},{name:\"Progress tracking\",desc:\"See how clients are progressing through assigned programs.\"}]},{id:\"analytics\",name:\"Analytics\",oneLiner:\"See what’s working across your service\",replaces:\"Replaces spreadsheets and a separate BI or reporting tool — service and outcome reporting is built on your live data instead of monthly manual exports.\",family:\"Intelligence\",accent:\"#f4634e\",icon:\"chart\",caps:[{name:\"In-platform analytics\",desc:\"Dashboards on activity and outcomes across your service.\"},{name:\"Data pipeline\",desc:\"Export your data to a warehouse for deeper reporting.\"},{name:\"Services report\",desc:\"Standardised service reporting for funders and boards.\"}]},{id:\"billing\",name:\"Billing\",oneLiner:\"Get paid, reconcile, and claim without the admin\",replaces:\"Replaces separate invoicing software, a payment gateway and manual Medicare/DVA claiming portals — getting paid and reconciling happens where appointments are booked.\",family:\"Money\",accent:\"#f5b13f\",icon:\"card\",caps:[{name:\"Invoicing\",desc:\"Create, send and track client invoices.\"},{name:\"Online payments\",desc:\"Take card payments online and in session.\",note:\"% per transaction applies\"},{name:\"Medicare & DVA claiming (unlimited, no per-claim fee)\",desc:\"Unlimited Medicare and DVA claiming with no per-claim fee.\"},{name:\"Airwallex\",desc:\"Collect and reconcile payments through Airwallex.\",note:\"% per transaction applies\"},{name:\"Payment automation\",desc:\"Automate invoicing and payment collection on a schedule.\"},{name:\"Accounting integration\",desc:\"Sync invoices and payments to your accounting system.\"},{name:\"Packages\",desc:\"Sell and manage prepaid session packages.\"}]},{id:\"connectors\",name:\"Connectors\",oneLiner:\"Plug Tacklit into the rest of your stack\",replaces:\"Replaces custom middleware and manual re-keying between systems — calendar sync and the API keep Tacklit and your other tools aligned automatically.\",family:\"Platform\",accent:\"#2536b7\",icon:\"plug\",caps:[{name:\"Calendar sync\",desc:\"Two-way sync with Google and Outlook calendars.\"},{name:\"API\",desc:\"Build custom integrations on the Tacklit API.\"},{name:\"Data sync\",desc:\"Keep client and appointment data in sync with other systems.\"}]},{id:\"engagement\",name:\"Client Portal\",oneLiner:\"A branded front door your clients self-serve\",replaces:\"Replaces a separately built booking website and client-portal product — a branded self-service front door that reads and writes to the same record.\",family:\"Front door\",accent:\"#7c5cfc\",icon:\"door\",caps:[{name:\"Custom booking flow\",desc:\"A branded, guided booking journey for new clients.\"},{name:\"Client portal\",desc:\"A secure portal where clients manage their own care.\"},{name:\"Message centre\",desc:\"Two-way secure messaging between clients and your team.\"},{name:\"Client registration\",desc:\"Let clients register and complete intake themselves.\"}]},{id:\"referral\",name:\"Referral + Waitlist\",oneLiner:\"Never lose a referral or leave a client waiting\",replaces:\"Replaces referral inboxes run on shared email and spreadsheet waitlists — intake is tracked from first referral to first appointment in one place.\",family:\"Front door\",accent:\"#7c5cfc\",icon:\"inbox\",caps:[{name:\"Custom referral forms\",desc:\"Branded referral forms for GPs and partners.\"},{name:\"Referral inbox\",desc:\"A single inbox that triages incoming referrals.\"},{name:\"Waitlist management\",desc:\"Manage your waitlist and move clients into care faster.\"}]},{id:\"beds\",name:\"Bed Management\",oneLiner:\"Track beds and placements across your service\",replaces:\"Replaces spreadsheets and standalone bed-management tools — occupancy and placements sit alongside the clinical record for residential and inpatient services.\",family:\"Clinical core\",accent:\"#3d50fb\",icon:\"bed\",caps:[{name:\"Bed inventory\",desc:\"Maintain a live register of beds across sites.\"},{name:\"Placement tracking\",desc:\"Track each client’s placement from admission to discharge.\"},{name:\"Occupancy view\",desc:\"See occupancy and availability at a glance.\"},{name:\"Bed allocation\",desc:\"Allocate and reassign beds as needs change.\"}]},{id:\"lxw\",name:\"Lived Experience Workforce\",oneLiner:\"Purpose-built tools for peer and lived-experience roles\",replaces:\"Replaces workarounds and generic accounts for peer staff — purpose-built profiles and access so lived-experience workers use the same system safely.\",family:\"Clinical core\",accent:\"#3d50fb\",icon:\"people\",caps:[{name:\"Peer worker profiles\",desc:\"Profiles built for peer and lived-experience roles.\"},{name:\"Lived-experience notes\",desc:\"Note templates suited to lived-experience work.\"},{name:\"Shared care coordination\",desc:\"Coordinate care between peers and clinicians.\"},{name:\"Role-based access\",desc:\"Give lived-experience staff the right level of access.\"}]},{id:\"protocols\",name:\"Protocols\",oneLiner:\"Standardise how care is delivered across your service\",replaces:\"Replaces protocol documents kept in Word and shared drives — standardised care steps live in the workflow clinicians already use.\",family:\"Clinical core\",accent:\"#3d50fb\",icon:\"checklist\",caps:[{name:\"Care protocols\",desc:\"Define standardised protocols clinicians follow for each pathway.\"},{name:\"Protocol templates\",desc:\"Reusable templates for common conditions and programs.\"},{name:\"Step tracking\",desc:\"Track each client against the steps in their protocol.\"},{name:\"Compliance view\",desc:\"See where care is on- or off-protocol across your service.\"}]},{id:\"partners\",name:\"Partner Channels\",oneLiner:\"Private booking channels for partners and referrers\",replaces:\"Replaces ad-hoc booking arrangements and shared logins for partners — private, branded channels let referrers and partners book directly and safely.\",family:\"Front door\",accent:\"#7c5cfc\",icon:\"share\",caps:[{name:\"Private partner booking channels\",desc:\"Private booking channels for partner organisations.\"},{name:\"Referrer booking channels\",desc:\"Let referrers book directly into your calendar.\"},{name:\"Partner booking pages\",desc:\"Branded booking pages for each partner.\"}]},{id:\"medical\",name:\"Medical\",oneLiner:\"Prescribing and medical workflows, built in\",replaces:\"Replaces separate prescribing software and lab-ordering portals — medical workflows, eScripts and results sit inside the clinical record.\",family:\"Clinical core\",accent:\"#3d50fb\",icon:\"pill\",caps:[{name:\"Flow\",desc:\"Guided medical workflows built into the clinical file.\"},{name:\"Labs\",desc:\"Order and receive lab results in the platform.\"},{name:\"Investigations\",desc:\"Request and track investigations against a client.\"},{name:\"eScript\",desc:\"Prescribe electronically with eScript.\"}]},{id:\"ai\",name:\"AI\",oneLiner:\"Give every clinician time back\",replaces:\"Replaces separate transcription and note-drafting subscriptions — documentation, letters and matching are generated from the work clinicians are already doing.\",family:\"Intelligence\",accent:\"#f4634e\",icon:\"spark\",caps:[{name:\"Note companion\",desc:\"Draft clinical notes from your session automatically.\"},{name:\"Letter drafting\",desc:\"Draft referral and clinical letters in seconds.\"},{name:\"Referral parsing\",desc:\"Extract details from incoming referrals automatically.\"},{name:\"Client–clinician matcher\",desc:\"Match new clients to the right clinician.\"},{name:\"Session transcribe\",desc:\"Transcribe sessions securely for your notes.\"},{name:\"Rescheduler\",desc:\"Automatically rebook cancellations from your waitlist.\"}]},{id:\"advanced\",name:\"Advanced\",oneLiner:\"Enterprise-grade control and scale\",replaces:\"Replaces enterprise add-ons bolted onto other systems — SSO, custom roles, connected workspaces and government/NHS compliance reporting for multi-team organisations.\",family:\"Platform\",accent:\"#2536b7\",icon:\"shield\",caps:[{name:\"Connected workspaces\",desc:\"Link multiple workspaces under one organisation.\"},{name:\"SSO\",desc:\"Single sign-on with your identity provider.\"},{name:\"Custom roles\",desc:\"Define custom roles and permissions for your team.\"},{name:\"Government & NHS compliance reporting\",desc:\"Produce the compliance and outcomes reports government and NHS commissioners require, from your live data.\"}]}];function tint(hex,a){const h=hex.replace(\"#\",\"\");const n=parseInt(h,16);return\"rgba(\"+(n>>16&255)+\",\"+(n>>8&255)+\",\"+(n&255)+\",\"+a+\")\";}function Icon({name,color,size}){const s=size||20;return /*#__PURE__*/_jsx(\"svg\",{width:s,height:s,viewBox:\"0 0 24 24\",fill:\"none\",stroke:color,strokeWidth:1.8,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{display:\"block\",flex:\"none\"},children:/*#__PURE__*/_jsx(\"path\",{d:ICON_PATHS[name]||ICON_PATHS.layers})});}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function ModulesExplorer(props){const{eyebrow=\"The modules\",title=\"Pick a module. See exactly what's inside.\",subtitle=\"Base is where everyone starts. The rest are yours to choose — colour-coded by what they do.\",snapPoint=\"fill\",initialModule=\"base\",style}=props;const[selectedModule,setSelectedModule]=useState(initialModule);const[capModal,setCapModal]=useState(null);const[navOpen,setNavOpen]=useState(false);// Load Sora (display) + Inter (body) once, matching the design system.\nuseEffect(()=>{const id=\"tacklit-modules-fonts\";if(typeof document===\"undefined\"||document.getElementById(id))return;const link=document.createElement(\"link\");link.id=id;link.rel=\"stylesheet\";link.href=\"https://fonts.googleapis.com/css2?family=Sora:wght@600;700;800&family=Inter:wght@400;500;600;700;800&display=swap\";document.head.appendChild(link);},[]);// Keep in sync with the \"Module\" control selected on the Framer canvas.\nuseEffect(()=>{setSelectedModule(initialModule);},[initialModule]);const sel=MODULES.find(m=>m.id===selectedModule)||MODULES[0];const moduleFamilies=FAM_ORDER.map(fam=>({name:fam,color:FAM_COLOR[fam],items:MODULES.filter(m=>m.family===fam)}));const detailReplaces=(sel.replaces||\"\").replace(/^Replaces\\s+/,\"\");// \"Width\" control → the component's own width. Container queries key off it,\n// so choosing a snap point renders the layout at exactly that scale.\nconst SNAP_WIDTHS={fill:\"100%\",w1240:\"1240px\",w992:\"992px\",w768:\"768px\",w390:\"390px\"};const rootWidth=SNAP_WIDTHS[snapPoint]||\"100%\";// Shared row renderer — used by both the desktop list and the mobile dropdown.\nconst renderModuleButton=(m,onPick)=>{const active=m.id===selectedModule;return /*#__PURE__*/_jsxs(\"button\",{onClick:onPick,className:\"tkmx-navbtn\"+(active?\" is-active\":\"\"),style:{display:\"flex\",alignItems:\"center\",gap:12,padding:\"11px 13px\",borderRadius:14,cursor:\"pointer\",fontFamily:\"inherit\",width:\"100%\",border:active?\"1.5px solid \"+m.accent:\"1px solid \"+T.n200,background:active?tint(m.accent,.07):T.surface,boxShadow:active?\"0 4px 14px \"+tint(m.accent,.16):\"none\",[\"--mx-accent\"]:m.accent,[\"--mx-accent-soft\"]:tint(m.accent,.07)},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:34,height:34,borderRadius:10,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\",background:active?m.accent:tint(m.accent,.12)},children:/*#__PURE__*/_jsx(Icon,{name:m.icon,color:active?\"#fff\":m.accent,size:18})}),/*#__PURE__*/_jsxs(\"span\",{style:{flex:1,textAlign:\"left\",minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontWeight:700,fontSize:14.5,color:T.textStrong},children:m.name}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontSize:12,lineHeight:1.35,color:T.textMuted,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\"},children:m.oneLiner})]}),m.mandatory?/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,fontWeight:700,padding:\"3px 8px\",borderRadius:999,background:T.infoSoft,color:T.navy,whiteSpace:\"nowrap\"},children:\"CORE\"}):null]},m.id);};const familyGroups=(onPick,labelSize)=>moduleFamilies.map(fam=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:labelSize,fontWeight:700,letterSpacing:\".1em\",textTransform:\"uppercase\",color:fam.color,paddingLeft:4},children:fam.name}),fam.items.map(m=>renderModuleButton(m,()=>onPick(m.id)))]},fam.name));return /*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-root\",style:{background:T.bg,fontFamily:FONT_BODY,...style},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}}),/*#__PURE__*/_jsx(\"div\",{className:\"tkmx\",style:{width:rootWidth,maxWidth:\"100%\"},children:/*#__PURE__*/_jsx(\"section\",{className:\"tkmx-section\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-inner\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-head\",children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,fontWeight:700,letterSpacing:\".12em\",textTransform:\"uppercase\",color:T.blue},children:eyebrow}),/*#__PURE__*/_jsx(\"h2\",{className:\"tkmx-title\",style:{fontFamily:FONT_DISPLAY,color:T.textStrong},children:title}),/*#__PURE__*/_jsx(\"p\",{className:\"tkmx-sub\",style:{color:T.textMuted},children:subtitle})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-grid\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-navcol\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-nav-dd\",children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11.5,fontWeight:700,letterSpacing:\".1em\",textTransform:\"uppercase\",color:T.textFaint,marginBottom:8,paddingLeft:2},children:\"Choose a module\"}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:()=>setNavOpen(o=>!o),\"aria-expanded\":navOpen,style:{display:\"flex\",alignItems:\"center\",gap:12,width:\"100%\",padding:\"12px 14px\",borderRadius:14,cursor:\"pointer\",fontFamily:\"inherit\",textAlign:\"left\",border:navOpen?\"1.5px solid \"+sel.accent:\"1px solid \"+T.n200,background:T.surface,boxShadow:\"0 4px 14px \"+tint(sel.accent,.14)},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:38,height:38,borderRadius:11,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\",background:sel.accent},children:/*#__PURE__*/_jsx(Icon,{name:sel.icon,color:\"#fff\",size:20})}),/*#__PURE__*/_jsxs(\"span\",{style:{flex:1,minWidth:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontWeight:700,fontSize:15,color:T.textStrong},children:sel.name}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontSize:12.5,lineHeight:1.35,color:T.textMuted,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\"},children:sel.oneLiner})]}),/*#__PURE__*/_jsx(\"svg\",{width:20,height:20,viewBox:\"0 0 24 24\",fill:\"none\",stroke:T.textMuted,strokeWidth:2,strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flex:\"none\",transition:\"transform .18s ease\",transform:navOpen?\"rotate(180deg)\":\"none\"},children:/*#__PURE__*/_jsx(\"path\",{d:ICON_PATHS.chevron})})]}),navOpen?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>setNavOpen(false),style:{position:\"fixed\",inset:0,zIndex:40}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"calc(100% + 8px)\",left:0,right:0,zIndex:50,background:T.surface,border:\"1px solid \"+T.n200,borderRadius:16,boxShadow:\"0 18px 44px rgba(9,16,54,.18)\",padding:10,maxHeight:\"62vh\",overflow:\"auto\",display:\"flex\",flexDirection:\"column\",gap:14},children:familyGroups(id=>{setSelectedModule(id);setNavOpen(false);},11)})]}):null]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"tkmx-nav-list\",children:familyGroups(id=>setSelectedModule(id),11.5)})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-detail\",style:{background:T.surface,borderRadius:24,border:\"1px solid \"+T.n200,boxShadow:\"0 12px 32px rgba(13,28,118,.1)\"},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-detail-head\",style:{background:\"linear-gradient(120deg,#0d1c76 0%,#2536b7 55%,#3d50fb 100%)\"},children:[/*#__PURE__*/_jsx(\"div\",{className:\"tkmx-detail-icon\",style:{background:sel.accent,boxShadow:\"0 6px 16px \"+tint(sel.accent,.5),display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\"},children:/*#__PURE__*/_jsx(Icon,{name:sel.icon,color:\"#fff\",size:26})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,minWidth:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsx(\"h3\",{className:\"tkmx-detail-name\",style:{fontFamily:FONT_DISPLAY},children:sel.name}),sel.mandatory?/*#__PURE__*/_jsx(\"span\",{style:{fontSize:11,fontWeight:700,padding:\"4px 10px\",borderRadius:999,background:\"rgba(255,255,255,.22)\",color:\"#fff\"},children:\"Included for everyone\"}):null]}),/*#__PURE__*/_jsx(\"p\",{style:{margin:\"6px 0 0\",fontSize:15.5,lineHeight:1.5,color:\"rgba(255,255,255,.9)\"},children:sel.oneLiner})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-detail-body\",children:[detailReplaces?/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:12,alignItems:\"flex-start\",background:T.infoSoft,border:\"1px solid \"+T.n200,borderRadius:14,padding:\"14px 16px\",marginBottom:20},children:[/*#__PURE__*/_jsx(\"span\",{style:{flex:\"none\",fontSize:10.5,fontWeight:800,letterSpacing:\".08em\",textTransform:\"uppercase\",color:T.navy,background:T.surface,border:\"1px solid \"+T.n200,borderRadius:999,padding:\"4px 10px\",marginTop:1},children:\"Replaces\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,lineHeight:1.55,color:T.textBody},children:detailReplaces})]}):null,/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"baseline\",justifyContent:\"space-between\",gap:12,marginBottom:16},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12.5,fontWeight:700,letterSpacing:\".08em\",textTransform:\"uppercase\",color:T.textFaint},children:\"Everything included\"}),/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:12.5,fontWeight:600,color:T.textMuted},children:[sel.caps.length,\" capabilities\"]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"tkmx-cap-grid\",children:sel.caps.map(c=>{const href=featureHref(c.name);const cardStyle={display:\"flex\",flexDirection:\"column\",gap:8,padding:\"13px 14px\",borderRadius:12,background:tint(sel.accent,.06),border:\"1px solid \"+tint(sel.accent,.16),textAlign:\"left\",cursor:\"pointer\",width:\"100%\",fontFamily:\"inherit\",textDecoration:\"none\",transition:\"border-color .12s, box-shadow .12s\"};const inner=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"flex-start\",gap:10},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:18,height:18,borderRadius:999,background:sel.accent,color:\"#fff\",fontSize:11,fontWeight:800,display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\",marginTop:1},children:\"✓\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,fontWeight:700,lineHeight:1.4,color:T.textBody},children:c.name})]}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12.5,lineHeight:1.45,color:T.textMuted},children:c.desc}),c.note?/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:5,alignSelf:\"flex-start\",fontSize:11,fontWeight:700,padding:\"3px 9px\",borderRadius:999,background:tint(\"#f5b13f\",.16),color:\"#8a5b09\"},children:[\"$ \",c.note]}):null,/*#__PURE__*/_jsx(\"span\",{style:{fontSize:12,fontWeight:700,color:sel.accent,display:\"inline-flex\",alignItems:\"center\",gap:4},children:\"Learn more →\"})]});return href?/*#__PURE__*/_jsx(\"a\",{href:href,style:cardStyle,children:inner},c.name):/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>setCapModal({name:c.name,desc:c.desc,note:c.note||\"\",long:c.long||null,accent:sel.accent,module:sel.name,icon:sel.icon}),style:cardStyle,children:inner},c.name);})})]})]})]})]})})}),capModal?/*#__PURE__*/_jsx(\"div\",{onClick:()=>setCapModal(null),style:{position:\"fixed\",inset:0,zIndex:1e3,background:\"rgba(9,16,54,.55)\",backdropFilter:\"blur(3px)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:24},children:/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{width:\"100%\",maxWidth:920,maxHeight:\"90vh\",overflow:\"auto\",background:T.surface,borderRadius:22,boxShadow:\"0 30px 80px rgba(9,16,54,.4)\"},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-modal-head\",style:{borderBottom:\"1px solid \"+T.n200},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:44,height:44,borderRadius:12,background:capModal.accent,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flex:\"none\"},children:/*#__PURE__*/_jsx(Icon,{name:capModal.icon,color:\"#fff\",size:22})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,minWidth:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11.5,fontWeight:700,letterSpacing:\".1em\",textTransform:\"uppercase\",color:capModal.accent},children:capModal.module}),/*#__PURE__*/_jsx(\"h3\",{className:\"tkmx-modal-name\",style:{fontFamily:FONT_DISPLAY,color:T.textStrong},children:capModal.name})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>setCapModal(null),\"aria-label\":\"Close\",style:{flex:\"none\",width:34,height:34,borderRadius:999,border:\"1px solid \"+T.n200,background:T.n100,color:T.textMuted,fontSize:18,lineHeight:1,cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:\"\\xd7\"})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"tkmx-modal-body\",children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:16},children:[/*#__PURE__*/_jsx(\"p\",{style:{margin:0,fontSize:16,lineHeight:1.6,color:T.textBody},children:capModal.long?capModal.long.intro:capModal.desc}),capModal.long&&capModal.long.bullets.length?/*#__PURE__*/_jsx(\"ul\",{style:{margin:0,padding:0,listStyle:\"none\",display:\"flex\",flexDirection:\"column\",gap:11},children:capModal.long.bullets.map((b,i)=>/*#__PURE__*/_jsxs(\"li\",{style:{display:\"flex\",gap:11,alignItems:\"flex-start\",fontSize:14.5,lineHeight:1.55,color:T.textBody},children:[/*#__PURE__*/_jsx(\"span\",{style:{flex:\"none\",width:7,height:7,borderRadius:999,marginTop:7,background:capModal.accent}}),/*#__PURE__*/_jsx(\"span\",{children:b})]},i))}):null,capModal.note?/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:6,alignSelf:\"flex-start\",fontSize:13,fontWeight:700,padding:\"7px 13px\",borderRadius:999,background:tint(\"#f5b13f\",.16),color:\"#8a5b09\"},children:[\"$ Usage cost: \",capModal.note]}):null]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:18,minWidth:0},children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11.5,fontWeight:700,letterSpacing:\".08em\",textTransform:\"uppercase\",color:T.textFaint,marginBottom:8},children:\"Product video\"}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",aspectRatio:\"16/9\",borderRadius:14,overflow:\"hidden\",background:\"#0d1c76\",backgroundImage:\"repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 12px,rgba(255,255,255,0) 12px 24px)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:64,height:64,borderRadius:999,background:\"rgba(255,255,255,.16)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"span\",{style:{width:0,height:0,borderStyle:\"solid\",borderWidth:\"11px 0 11px 18px\",borderColor:\"transparent transparent transparent #fff\",marginLeft:4}})}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",bottom:10,left:12,fontFamily:\"ui-monospace,'source-code-pro',monospace\",fontSize:11,color:\"rgba(255,255,255,.75)\"},children:\"drop product walkthrough video\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:11.5,fontWeight:700,letterSpacing:\".08em\",textTransform:\"uppercase\",color:T.textFaint,marginBottom:8},children:\"Product images\"}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"1fr 1fr\",gap:12},children:[\"product screenshot 1\",\"product screenshot 2\"].map(label=>/*#__PURE__*/_jsx(\"div\",{style:{aspectRatio:\"4/3\",borderRadius:12,border:\"1px solid \"+T.n200,background:\"#eef1f8\",backgroundImage:\"repeating-linear-gradient(135deg,rgba(61,80,251,.06) 0 10px,rgba(61,80,251,0) 10px 20px)\",display:\"flex\",alignItems:\"flex-end\",padding:12},children:/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"ui-monospace,'source-code-pro',monospace\",fontSize:11,color:T.textFaint},children:label})},label))})]})]})]})]})}):null]});}addPropertyControls(ModulesExplorer,{snapPoint:{type:ControlType.Enum,title:\"Width\",options:[\"fill\",\"w1240\",\"w992\",\"w768\",\"w390\"],optionTitles:[\"Fill container\",\"Large desktop (1240)\",\"Desktop (992)\",\"Tablet (768)\",\"Phone (390)\"],defaultValue:\"fill\"},initialModule:{type:ControlType.Enum,title:\"Module\",options:MODULES.map(m=>m.id),optionTitles:MODULES.map(m=>m.name),defaultValue:\"base\"},eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"The modules\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"Pick a module. See exactly what's inside.\",displayTextArea:true},subtitle:{type:ControlType.String,title:\"Subtitle\",defaultValue:\"Base is where everyone starts. The rest are yours to choose — colour-coded by what they do.\",displayTextArea:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ModulesExplorer\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ModulesExplorer.map"],"mappings":"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"}