{"version":3,"sources":["../src/services/i18n/translations/components/home.translations.ts","../src/services/i18n/translations/components/prescription.translations.ts","../src/services/i18n/translations/components/medication.translations.ts","../src/services/i18n/translations/components/practitioner.translations.ts","../src/services/i18n/translations/utils/visibility-helpers.translations.ts","../src/services/i18n/translations/utils/reimbursement-helpers.translations.ts","../src/services/i18n/translations/utils/prescription-duration-helpers.translations.ts","../src/services/i18n/translations/utils/delivery-helpers.translations.ts","../src/services/i18n/translations/index.ts","../src/services/constants.ts","../src/services/i18n/index.tsx","../src/services/cardinal-sam/index.ts","../src/services/indexed-db/index.ts","../src/services/certificate/index.ts","../src/services/fhc/index.ts","../src/utils/date-helpers.ts","../src/components/common/Alert/styles.ts","../src/styles/reset.ts","../src/styles/variables.ts","../src/styles/elements.ts","../src/styles/responsive-media-queries.ts","../src/components/common/Icons/index.tsx","../src/components/common/Alert/index.tsx","../src/components/certificate-elements/CertificateUploadForm/index.tsx","../src/utils/file-helpers.ts","../src/components/form-elements/Button/styles.ts","../src/components/form-elements/Button/index.tsx","../src/components/form-elements/TextInput/index.tsx","../src/components/form-elements/TextInput/styles.ts","../src/components/certificate-elements/CertificateUploadForm/styles.ts","../src/components/certificate-elements/PractitionerCertificate/styles.ts","../src/components/certificate-elements/PractitionerCertificate/index.tsx","../src/components/medication-elements/MedicationSearch/index.tsx","../src/components/medication-elements/MedicationCard/index.tsx","../src/components/common/Tooltip/index.tsx","../src/components/common/Tooltip/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/RmaProfessionalLinkContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/RmaProfessionalLinkContent/index.tsx","../src/components/medication-elements/MedicationCard/infographic-elements/SupplyProblemsContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/SupplyProblemsContent/index.tsx","../src/components/medication-elements/MedicationCard/infographic-elements/EndOfCommercialisationContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/EndOfCommercialisationContent/index.tsx","../src/components/medication-elements/MedicationCard/infographic-elements/StartOfCommercialisationContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/StartOfCommercialisationContent/index.tsx","../src/utils/reimbursement-helpers.ts","../src/components/medication-elements/MedicationCard/infographic-elements/ReimbursementsContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/ReimbursementsContent/index.tsx","../src/components/medication-elements/MedicationCard/infographic-elements/DeliveryConditionsContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/DeliveryConditionsContent/index.tsx","../src/components/medication-elements/MedicationCard/infographic-elements/PrescriptionConditionsContent/styles.ts","../src/components/medication-elements/MedicationCard/infographic-elements/PrescriptionConditionsContent/index.tsx","../src/components/medication-elements/MedicationCard/medication-card-elements/Header/index.tsx","../src/components/medication-elements/MedicationCard/medication-card-elements/Header/styles.ts","../src/components/medication-elements/MedicationCard/medication-card-elements/Extension/styles.ts","../src/components/medication-elements/MedicationCard/medication-card-elements/Extension/index.tsx","../src/components/medication-elements/MedicationCard/styles.ts","../src/components/common/InfiniteScroll/index.tsx","../src/utils/loader-helpers.ts","../src/services/medication-mapper/index.ts","../src/utils/string-helpers.ts","../src/components/medication-elements/MedicationSearch/styles.ts","../src/components/prescription-elements/PrescriptionModal/index.tsx","../src/utils/dosage-helpers.ts","../src/utils/prescription-duration-helpers.ts","../src/utils/visibility-helpers.ts","../src/components/form-elements/SelectInput/index.tsx","../src/components/form-elements/SelectInput/styles.ts","../src/components/form-elements/RadioInput/index.tsx","../src/components/form-elements/RadioInput/styles.ts","../src/components/form-elements/ToggleSwitch/index.tsx","../src/components/form-elements/ToggleSwitch/styles.ts","../src/components/form-elements/TextareaInput/index.tsx","../src/components/form-elements/TextareaInput/styles.ts","../src/components/prescription-elements/PrescriptionModal/styles.ts","../src/components/prescription-elements/PrescriptionList/index.tsx","../src/components/prescription-elements/PrescriptionCard/styles.ts","../src/components/prescription-elements/PrescriptionCard/index.tsx","../src/components/prescription-elements/PrescriptionList/styles.ts","../src/components/prescription-elements/PrescriptionDocumentToPrint/index.tsx","../src/components/prescription-elements/PrescriptionDocumentToPrint/styles.ts","../src/components/prescription-elements/PrescriptionPrintModal/styles.ts","../src/components/prescription-elements/PrescriptionPrintModal/index.tsx"],"sourcesContent":["/* eslint-disable max-len */\nexport const homeTranslations = {\n  fr: {\n    samVersionLabel: 'Version Sam :',\n  },\n  en: {\n    samVersionLabel: 'Sam version:',\n  },\n  nl: {\n    samVersionLabel: 'Sam-versie:',\n  },\n  de: {\n    samVersionLabel: 'Sam-version:',\n  },\n}\n","/* eslint-disable max-len */\nexport const prescriptionTranslations = {\n  fr: {\n    createTitle: 'Créer la prescription',\n    modifyTitle: 'Modifier la prescription',\n    pdf: {\n      title: 'PREUVE DE PRESCRIPTION ELECTRONIQUE',\n      instructions: 'Veuillez présenter ce document à votre pharmacien pour scanner le code-barres et vous délivrer les médicaments prescrits.',\n      options: {\n        title: 'De quelles options disposez-vous pour vous rendre à la pharmacie si vous avez perdu ce document ?',\n        option1: 'Via Masanté.be - MyHealthViewer - App MesMédicaments ou toute autre App, vous pouvez montrer votre prescription au pharmacien, qui lira le code-barres.',\n        option2:\n          'Vous pouvez également aller chercher les produits prescrits avec votre eID (ou votre numéro de registre national si votre eID a été lue par le pharmacien qui vous délivre les produits dans les 15 mois précédents).',\n      },\n      prescriber: 'Prescripteur',\n      patient: 'Bénéficiaire',\n      electronicContent: 'Contenu de la prescription électronique:',\n      product: 'Produit:',\n      dosage: 'Posologie:',\n      date: 'Date:',\n      validUntil: \"Date de fin pour l'exécution:\",\n    },\n    list: {\n      sentTitle: 'Ordonnances envoyées:',\n      pendingTitle: 'Ordonnances en attente:',\n      print: 'Imprimer',\n      send: 'Envoyer',\n      sendAndPrint: 'Envoyer et imprimer',\n    },\n    form: {\n      medicationTitle: 'Nom du groupe DCI',\n      dosage: 'Posologie',\n      duration: 'Durée (nombre d’unités)',\n      durationTimeUnit: 'Unité de temps',\n      treatmentStartDate: 'Date début du traitement',\n      executableUntil: 'Exécutable jusqu`au',\n      prescriptionsNumber: 'Nombre de prescriptions',\n      periodicityTimeUnit: 'Périodicité',\n      periodicityDaysNumber: 'Nombre de jours',\n      substitutionAllowed: 'Substitution autorisée',\n      substitutionYes: 'Oui',\n      substitutionNo: 'Non',\n      toggleExtraFields: 'Afficher plus',\n      patientInstructions: 'Instructions pour le patient',\n      reimbursementInstructions: 'Instructions remboursement',\n      prescriberVisibility: 'Visibilité prescripteur',\n      pharmacistVisibility: 'Visibilité officine',\n      cancel: 'Annuler',\n      submit: 'Soumettre',\n      fieldRequired: 'Ce champ est requis',\n      fieldInvalid: 'Champ invalide',\n      instructionLabelNone: 'Aucun',\n    },\n  },\n  en: {\n    createTitle: 'Create prescription',\n    modifyTitle: 'Modify prescription',\n    pdf: {\n      title: 'PROOF OF ELECTRONIC PRESCRIPTION',\n      instructions: 'Please present this document to your pharmacist to scan the barcode and dispense the prescribed medication.',\n      options: {\n        title: 'What are your options if you lost this document?',\n        option1: 'Via Masanté.be - MyHealthViewer - MyMeds App or any other app, you can show your prescription to the pharmacist who will scan the barcode.',\n        option2:\n          'You can also collect the prescribed products with your eID (or your national register number if your eID was read by the pharmacist who dispenses the products within the last 15 months).',\n      },\n      prescriber: 'Prescriber',\n      patient: 'Beneficiary',\n      electronicContent: 'Electronic prescription content:',\n      product: 'Product:',\n      dosage: 'Dosage:',\n      date: 'Date:',\n      validUntil: 'Valid until:',\n    },\n    list: {\n      sentTitle: 'Sent prescriptions:',\n      pendingTitle: 'Pending prescriptions:',\n      print: 'Print',\n      send: 'Send',\n      sendAndPrint: 'Send and print',\n    },\n    form: {\n      medicationTitle: 'DCI group name',\n      dosage: 'Dosage',\n      duration: 'Duration (number of units)',\n      durationTimeUnit: 'Time unit',\n      treatmentStartDate: 'Start date of treatment',\n      executableUntil: 'Executable until',\n      prescriptionsNumber: 'Number of prescriptions',\n      periodicityTimeUnit: 'Periodicity',\n      periodicityDaysNumber: 'Number of days',\n      substitutionAllowed: 'Substitution allowed',\n      substitutionYes: 'Yes',\n      substitutionNo: 'No',\n      toggleExtraFields: 'Show more',\n      patientInstructions: 'Instructions for the patient',\n      reimbursementInstructions: 'Reimbursement instructions',\n      prescriberVisibility: 'Prescriber visibility',\n      pharmacistVisibility: 'Pharmacist visibility',\n      cancel: 'Cancel',\n      submit: 'Submit',\n      fieldRequired: 'This field is required',\n      fieldInvalid: 'Invalid field',\n      instructionLabelNone: 'None',\n    },\n  },\n  nl: {\n    createTitle: 'Voorschrift aanmaken',\n    modifyTitle: 'Voorschrift bewerken',\n    pdf: {\n      title: 'BEWIJS VAN ELEKTRONISCH VOORSCHRIFT',\n      instructions: 'Gelieve dit document aan uw apotheker te tonen zodat hij/zij de barcode kan scannen en de voorgeschreven geneesmiddelen kan afleveren.',\n      options: {\n        title: 'Welke opties hebt u om naar de apotheek te gaan als u dit document bent verloren?',\n        option1: 'Via Masanté.be - MyHealthViewer - MijnGeneesmiddelen-app of een andere app, kunt u uw voorschrift tonen aan de apotheker, die de barcode zal scannen.',\n        option2:\n          'U kunt de voorgeschreven producten ook afhalen met uw eID (of uw rijksregisternummer als uw eID werd uitgelezen door de apotheker die de producten aflevert binnen de laatste 15 maanden).',\n      },\n      prescriber: 'Voorschrijver',\n      patient: 'Begunstigde',\n      electronicContent: 'Inhoud van het elektronisch voorschrift:',\n      product: 'Product:',\n      dosage: 'Dosering:',\n      date: 'Datum:',\n      validUntil: 'Uitvoerbaar tot:',\n    },\n    list: {\n      sentTitle: 'Verzonden voorschriften:',\n      pendingTitle: 'Voorschriften in afwachting:',\n      print: 'Afdrukken',\n      send: 'Verzenden',\n      sendAndPrint: 'Verzenden en afdrukken',\n    },\n    form: {\n      medicationTitle: 'Naam van DCI-groep',\n      dosage: 'Dosering',\n      duration: 'Duur (aantal eenheden)',\n      durationTimeUnit: 'Tijdseenheid',\n      treatmentStartDate: 'Startdatum van behandeling',\n      executableUntil: 'Uitvoerbaar tot',\n      prescriptionsNumber: 'Aantal voorschriften',\n      periodicityTimeUnit: 'Periodiciteit',\n      periodicityDaysNumber: 'Aantal dagen',\n      substitutionAllowed: 'Vervanging toegestaan',\n      substitutionYes: 'Ja',\n      substitutionNo: 'Nee',\n      toggleExtraFields: 'Meer weergeven',\n      patientInstructions: 'Instructies voor de patiënt',\n      reimbursementInstructions: 'Instructies voor terugbetaling',\n      prescriberVisibility: 'Zichtbaarheid voor de voorschrijver',\n      pharmacistVisibility: 'Zichtbaarheid voor de apotheker',\n      cancel: 'Annuleren',\n      submit: 'Indienen',\n      fieldRequired: 'Dit veld is verplicht',\n      fieldInvalid: 'Ongeldig veld',\n      instructionLabelNone: 'Geen',\n    },\n  },\n  de: {\n    createTitle: 'Rezept erstellen',\n    modifyTitle: 'Rezept bearbeiten',\n    pdf: {\n      title: 'NACHWEIS DES ELEKTRONISCHEN REZEPTS',\n      instructions: 'Bitte legen Sie dieses Dokument Ihrem Apotheker vor, damit er den Barcode scannen und die verschriebenen Medikamente abgeben kann.',\n      options: {\n        title: 'Welche Möglichkeiten haben Sie, wenn Sie dieses Dokument verloren haben?',\n        option1: 'Über Masanté.be – MyHealthViewer – MeineMedikamente-App oder eine andere App können Sie Ihr Rezept dem Apotheker zeigen, der den Barcode scannt.',\n        option2:\n          'Sie können die verschriebenen Produkte auch mit Ihrem eID (oder Ihrer nationalen Registernummer, falls Ihre eID vom Apotheker, der Ihnen in den letzten 15 Monaten Produkte ausgehändigt hat, gelesen wurde) abholen.',\n      },\n      prescriber: 'Verschreiber',\n      patient: 'Empfänger',\n      electronicContent: 'Inhalt des elektronischen Rezepts:',\n      product: 'Produkt:',\n      dosage: 'Dosierung:',\n      date: 'Datum:',\n      validUntil: 'Gültig bis:',\n    },\n    list: {\n      sentTitle: 'Versendete Rezepte:',\n      pendingTitle: 'Ausstehende Rezepte:',\n      print: 'Drucken',\n      send: 'Senden',\n      sendAndPrint: 'Senden und drucken',\n    },\n    form: {\n      medicationTitle: 'Name der DCI-Gruppe',\n      dosage: 'Dosierung',\n      duration: 'Dauer (Anzahl der Einheiten)',\n      durationTimeUnit: 'Zeiteinheit',\n      treatmentStartDate: 'Behandlungsbeginn',\n      executableUntil: 'Ausführbar bis',\n      prescriptionsNumber: 'Anzahl der Rezepte',\n      periodicityTimeUnit: 'Periodizität',\n      periodicityDaysNumber: 'Anzahl der Tage',\n      substitutionAllowed: 'Substitution erlaubt',\n      substitutionYes: 'Ja',\n      substitutionNo: 'Nein',\n      toggleExtraFields: 'Mehr anzeigen',\n      patientInstructions: 'Anweisungen für den Patienten',\n      reimbursementInstructions: 'Anweisungen zur Erstattung',\n      prescriberVisibility: 'Sichtbarkeit für den Verschreiber',\n      pharmacistVisibility: 'Sichtbarkeit für den Apotheker',\n      cancel: 'Abbrechen',\n      submit: 'Absenden',\n      fieldRequired: 'Dieses Feld ist erforderlich',\n      fieldInvalid: 'Ungültiges Feld',\n      instructionLabelNone: 'Keine',\n    },\n  },\n}\n","/* eslint-disable max-len */\nexport const medicationTranslations = {\n  fr: {\n    drugType: {\n      medication: 'Médicament',\n      molecule: 'Molécule',\n      homologation: 'Homologation',\n    },\n    drugInfographic: {\n      blackTriangle: 'Pharmacovigilance renforcée (Triangle noir)',\n      rma: 'Activités additionnelles de minimisation des risques ou additional RMA (Risk Minimisation Activities) (Source: AFMPS)',\n      genericPrescriptionRequired: 'Ordonnance générique requise',\n    },\n    drugSpecialRegulation: {\n      noNarcoticRegulation: 'Aucun stupéfiant, médicament soumis à réglementation particulière',\n      narcoticRegulation: 'Stupéfiant, médicament soumis à réglementation particulière',\n      noSpecialRegulation: 'Aucune réglementation particulière',\n    },\n    supply: {\n      issueTitle: \"Problème d'approvisionnement temporaire :\",\n      startDate: 'Disponibilité limitée depuis :',\n      expectedEndDate: 'Date de fin présumée :',\n      reason: 'Raison :',\n      impact: 'Impact :',\n      prescriberNote: 'Déclaration du prescripteur :',\n      downloadPdf: 'Télécharger le document en .pdf',\n      extraInfo: 'Informations complémentaires :',\n    },\n    commercialization: {\n      end: 'Fin de commercialisation :',\n      limitedAvailabilityFrom: 'Disponibilité limitée à partir de :',\n      unavailableFrom: 'Indisponible à partir de :',\n      endReason: 'Raison :',\n      endImpact: 'Impact :',\n      endAdditionalInformation: 'Informations complémentaires :',\n      start: 'Début de commercialisation :',\n      startAvailableFrom: 'Disponible depuis :',\n    },\n    reimbursement: {\n      title: 'Remboursement :',\n      category: 'Catégorie de remboursement :',\n      categoryLabel: 'Spécification de la catégorie de remboursement :',\n      copay: 'Ticket modérateur type',\n      copayPreferential: ' Préférentiel :',\n      copayActive: ' Actif :',\n      temporary: 'Remboursement temporaire (art. 111) :',\n      chapter: 'Chapitre :',\n      noneTitle: 'Conditions de prescription',\n      notApplicable: 'Non applicable',\n      non: 'Non',\n    },\n    delivery: {\n      title: 'Conditions de livraison :',\n      code: 'Code de livraison :',\n      modus: 'Mode de livraison :',\n      specification: 'Spécification de livraison :',\n      notApplicable: 'Non applicable',\n    },\n    prescription: {\n      title: 'Conditions de prescription :',\n      code: 'Code de prescription :',\n      specification: 'Spécification de prescription :',\n      free: 'Libre de prescription',\n    },\n    vmp: {\n      label: 'VMP :',\n      groupLabel: 'Groupe VMP :',\n    },\n    links: {\n      cbip: 'Répertoire commenté des médicaments (CBIP)',\n      leaflet: 'Notice pour le patient',\n      rma: 'Activités de réduction des risques (RMA)',\n      spc: 'Résumé des caractéristiques du produit (RCP)',\n      dhpc: 'Communication directe aux professionnels de santé (DHPC)',\n    },\n    ui: {\n      price: 'Prix :',\n    },\n    search: {\n      label: 'Trouver un médicament',\n      errorMessage: ' Entrez au moins 3 lettres du nom du médicament',\n    },\n  },\n  en: {\n    drugType: {\n      medication: 'Medication',\n      molecule: 'Molecule',\n      homologation: 'Homologation',\n    },\n    drugInfographic: {\n      blackTriangle: 'Enhanced pharmacovigilance (Black triangle)',\n      rma: 'Additional risk minimisation activities or additional RMA (Risk Minimisation Activities) (Source: FAMHP)',\n      genericPrescriptionRequired: 'Generic prescription required',\n    },\n    drugSpecialRegulation: {\n      noNarcoticRegulation: 'No narcotic, specially regulated drug',\n      narcoticRegulation: 'Narcotic, specially regulated drug',\n      noSpecialRegulation: 'No special regulation',\n    },\n    supply: {\n      issueTitle: 'Temporary supply problem:',\n      startDate: 'Limited availability since:',\n      expectedEndDate: 'Presumed end date:',\n      reason: 'Reason:',\n      impact: 'Impact:',\n      prescriberNote: 'Prescriber declaration:',\n      downloadPdf: 'Download the document (.pdf)',\n      extraInfo: 'Additional information:',\n    },\n    commercialization: {\n      end: 'End of commercialisation:',\n      limitedAvailabilityFrom: 'Limited availability from:',\n      unavailableFrom: 'Unavailable from:',\n      endReason: 'Reason:',\n      endImpact: 'Impact:',\n      endAdditionalInformation: 'Additional information:',\n      start: 'Start of commercialisation:',\n      startAvailableFrom: 'Available from:',\n    },\n    reimbursement: {\n      title: 'Reimbursement:',\n      category: 'Reimbursement category:',\n      categoryLabel: 'Reimbursement category specification:',\n      copay: 'Co-payment type',\n      copayPreferential: 'Preferential:',\n      copayActive: 'Active:',\n      temporary: 'Temporary reimbursement (art. 111):',\n      chapter: 'Chapter:',\n      noneTitle: 'Prescription conditions',\n      notApplicable: 'Not applicable',\n      non: 'No',\n    },\n    delivery: {\n      title: 'Delivery conditions:',\n      code: 'Delivery code:',\n      modus: 'Delivery method:',\n      specification: 'Delivery specification:',\n      notApplicable: 'Not applicable',\n    },\n    prescription: {\n      title: 'Prescription conditions:',\n      code: 'Prescription code:',\n      specification: 'Prescription specification:',\n      free: 'Free of prescription',\n    },\n    vmp: {\n      label: 'VMP:',\n      groupLabel: 'VMP-group:',\n    },\n    links: {\n      cbip: 'Commented Medicines Directory (CBIP)',\n      leaflet: 'Patient information leaflet',\n      rma: 'Risk Minimisation Activities (RMA)',\n      spc: 'Summary of Product Characteristics (SPC)',\n      dhpc: 'Direct Healthcare Professional Communication (DHPC)',\n    },\n    ui: {\n      price: 'Price:',\n    },\n    search: {\n      label: 'Find a medication',\n      errorMessage: 'Enter at least 3 letters of the medication name',\n    },\n  },\n  nl: {\n    drugType: {\n      medication: 'Geneesmiddel',\n      molecule: 'Molecule',\n      homologation: 'Homologatie',\n    },\n    drugInfographic: {\n      blackTriangle: 'Verhoogde waakzaamheid (Zwarte driehoek)',\n      rma: 'Aanvullende risicobeperkende maatregelen (RMA) (Bron: FAGG)',\n      genericPrescriptionRequired: 'Generiek voorschrift vereist',\n    },\n    drugSpecialRegulation: {\n      noNarcoticRegulation: 'Geen verdovend middel, geneesmiddel onderworpen aan specifieke regelgeving',\n      narcoticRegulation: 'Verdovend middel, geneesmiddel onderworpen aan specifieke regelgeving',\n      noSpecialRegulation: 'Geen specifieke regelgeving',\n    },\n    supply: {\n      issueTitle: 'Tijdelijk bevoorradingsprobleem:',\n      startDate: 'Beperkte beschikbaarheid sinds:',\n      expectedEndDate: 'Verwachte einddatum:',\n      reason: 'Reden:',\n      impact: 'Impact:',\n      prescriberNote: 'Verklaring van de voorschrijver:',\n      downloadPdf: 'Download het document (.pdf)',\n      extraInfo: 'Aanvullende informatie:',\n    },\n    commercialization: {\n      end: 'Einde van commercialisering:',\n      limitedAvailabilityFrom: 'Beperkte beschikbaarheid vanaf:',\n      unavailableFrom: 'Niet beschikbaar vanaf:',\n      endReason: 'Reden:',\n      endImpact: 'Impact:',\n      endAdditionalInformation: 'Aanvullende informatie:',\n      start: 'Start van commercialisering:',\n      startAvailableFrom: 'Beschikbaar sinds:',\n    },\n    reimbursement: {\n      title: 'Terugbetaling:',\n      category: 'Terugbetalingscategorie:',\n      categoryLabel: 'Specificatie van de terugbetalingscategorie:',\n      copay: 'Soort remgeld',\n      copayPreferential: 'Voorkeurtarief:',\n      copayActive: 'Actief:',\n      temporary: 'Tijdelijke terugbetaling (art. 111):',\n      chapter: 'Hoofdstuk:',\n      noneTitle: 'Voorschrijfvoorwaarden',\n      notApplicable: 'Niet van toepassing',\n      non: 'Nee',\n    },\n    delivery: {\n      title: 'Aflevervoorwaarden:',\n      code: 'Aflevercode:',\n      modus: 'Afleverwijze:',\n      specification: 'Specificatie van aflevering:',\n      notApplicable: 'Niet van toepassing',\n    },\n    prescription: {\n      title: 'Voorschrijfvoorwaarden:',\n      code: 'Voorschrijfcode:',\n      specification: 'Specificatie van voorschrift:',\n      free: 'Vrij voorschrijfbaar',\n    },\n    vmp: {\n      label: 'VMP:',\n      groupLabel: 'VMP-groep:',\n    },\n    links: {\n      cbip: 'Gecommentarieerde geneesmiddelenrepertorium (CBIP)',\n      leaflet: 'Bijsluiter voor de patiënt',\n      rma: 'Maatregelen voor risicobeperking (RMA)',\n      spc: 'Samenvatting van de productkenmerken (SKP)',\n      dhpc: 'Rechtstreekse communicatie naar zorgverleners (DHPC)',\n    },\n    ui: {\n      price: 'Prijs:',\n    },\n    search: {\n      label: 'Zoek een geneesmiddel',\n      errorMessage: 'Voer minstens 3 letters van de naam in',\n    },\n  },\n  de: {\n    drugType: {\n      medication: 'Arzneimittel',\n      molecule: 'Molekül',\n      homologation: 'Zulassung',\n    },\n    drugInfographic: {\n      blackTriangle: 'Verstärkte Pharmakovigilanz (Schwarzes Dreieck)',\n      rma: 'Zusätzliche Maßnahmen zur Risikominimierung (RMA) (Quelle: BfArM)',\n      genericPrescriptionRequired: 'Generisches Rezept erforderlich',\n    },\n    drugSpecialRegulation: {\n      noNarcoticRegulation: 'Kein Betäubungsmittel, Arzneimittel mit besonderer Regelung',\n      narcoticRegulation: 'Betäubungsmittel, Arzneimittel mit besonderer Regelung',\n      noSpecialRegulation: 'Keine besondere Regelung',\n    },\n    supply: {\n      issueTitle: 'Vorübergehendes Lieferproblem :',\n      startDate: 'Eingeschränkte Verfügbarkeit seit :',\n      expectedEndDate: 'Voraussichtliches Enddatum :',\n      reason: 'Grund :',\n      impact: 'Auswirkung :',\n      prescriberNote: 'Erklärung des Verschreibers :',\n      downloadPdf: 'Dokument als .pdf herunterladen',\n      extraInfo: 'Zusätzliche Informationen :',\n    },\n    commercialization: {\n      end: 'Ende der Vermarktung :',\n      limitedAvailabilityFrom: 'Eingeschränkte Verfügbarkeit ab :',\n      unavailableFrom: 'Nicht verfügbar ab :',\n      endReason: 'Grund :',\n      endImpact: 'Auswirkung :',\n      endAdditionalInformation: 'Zusätzliche Informationen :',\n      start: 'Beginn der Vermarktung :',\n      startAvailableFrom: 'Verfügbar seit :',\n    },\n    reimbursement: {\n      title: 'Erstattung :',\n      category: 'Erstattungskategorie :',\n      categoryLabel: 'Spezifikation der Erstattungskategorie :',\n      copay: 'Zuzahlungstyp',\n      copayPreferential: ' Bevorzugt :',\n      copayActive: ' Aktiv :',\n      temporary: 'Vorübergehende Erstattung (Art. 111) :',\n      chapter: 'Kapitel :',\n      noneTitle: 'Verordnungsbedingungen',\n      notApplicable: 'Nicht zutreffend',\n      non: 'Nein',\n    },\n    delivery: {\n      title: 'Lieferbedingungen :',\n      code: 'Liefercode :',\n      modus: 'Liefermethode :',\n      specification: 'Lieferdetails :',\n      notApplicable: 'Nicht zutreffend',\n    },\n    prescription: {\n      title: 'Verordnungsbedingungen :',\n      code: 'Verordnungscode :',\n      specification: 'Verordnungsdetails :',\n      free: 'Frei verschreibbar',\n    },\n    vmp: {\n      label: 'VMP :',\n      groupLabel: 'VMP-Gruppe :',\n    },\n    links: {\n      cbip: 'Kommentiertes Arzneimittelverzeichnis (CBIP)',\n      leaflet: 'Packungsbeilage für Patienten',\n      rma: 'Maßnahmen zur Risikominimierung (RMA)',\n      spc: 'Fachinformation (SPC)',\n      dhpc: 'Direkte Kommunikation an medizinisches Fachpersonal (DHPC)',\n    },\n    ui: {\n      price: 'Preis :',\n    },\n    search: {\n      label: 'Arzneimittel suchen',\n      errorMessage: 'Geben Sie mindestens 3 Buchstaben des Arzneimittelnamens ein',\n    },\n  },\n}\n","/* eslint-disable max-len */\nexport const practitionerTranslations = {\n  fr: {\n    certificateUpload: {\n      titleUpload: 'Télécharger le certificat',\n      titlePassword: 'Entrez le mot de passe du certificat',\n      fileLabel: 'Certificat du praticien',\n      passwordLabel: 'Mot de passe du certificat',\n      submitButtonUpload: 'Crypter et télécharger',\n      submitButtonPassword: 'Soumettre',\n      resetButton: 'Télécharger un autre certificat',\n      errorRequired: 'Ce champ est requis',\n      errorInvalid: 'Champ invalide',\n      passwordMissingTitle: 'Mot de passe manquant',\n      passwordMissingDescription:\n        'Veuillez saisir le mot de passe associé au certificat afin de pouvoir le déchiffrer. Ce mot de passe est requis pour poursuivre la vérification.',\n    },\n    certificateFeedback: {\n      successTitle: 'Téléchargement du certificat réussi',\n      successDescription:\n        'Le certificat du praticien a été téléchargé avec succès et le mot de passe a été enregistré en toute sécurité. Vous pouvez maintenant poursuivre les prochaines étapes.',\n      failureTitle: 'Échec du téléchargement du certificat',\n      failureDescription:\n        'Une erreur est survenue lors du téléchargement du certificat du praticien. Veuillez vérifier que votre certificat est valide et que vous avez saisi le bon mot de passe. Réessayez, et si le problème persiste, contactez le support.',\n      verificationErrorTitle: 'Erreur de vérification du certificat',\n    },\n    printModal: {\n      title: 'Imprimer la prescription',\n      close: 'Fermer',\n      print: 'Imprimer',\n    },\n  },\n  en: {\n    certificateUpload: {\n      titleUpload: 'Upload certificate',\n      titlePassword: 'Enter certificate password',\n      fileLabel: 'Practitioner certificate',\n      passwordLabel: 'Certificate password',\n      submitButtonUpload: 'Encrypt and upload',\n      submitButtonPassword: 'Submit',\n      resetButton: 'Upload another certificate',\n      errorRequired: 'This field is required',\n      errorInvalid: 'Invalid field',\n      passwordMissingTitle: 'Missing password',\n      passwordMissingDescription: 'Please enter the password associated with the certificate to decrypt it. This password is required to continue verification.',\n    },\n    certificateFeedback: {\n      successTitle: 'Certificate upload successful',\n      successDescription: 'The certificate’s certificate was uploaded successfully. You may proceed with the next steps.',\n      failureTitle: 'Certificate upload failed',\n      failureDescription:\n        'An error occurred while uploading the certificate. Please check that your certificate is valid and that you’ve entered the correct password. Try again, and if the issue continues, contact support.',\n      verificationErrorTitle: 'Certificate verification error',\n    },\n    printModal: {\n      title: 'Print prescription',\n      close: 'Close',\n      print: 'Print',\n    },\n  },\n  nl: {\n    certificateUpload: {\n      titleUpload: 'Certificaat uploaden',\n      titlePassword: 'Voer het certificaatwachtwoord in',\n      fileLabel: 'Certificaat van de zorgverlener',\n      passwordLabel: 'Wachtwoord van het certificaat',\n      submitButtonUpload: 'Versleutelen en uploaden',\n      submitButtonPassword: 'Verzenden',\n      resetButton: 'Ander certificaat uploaden',\n      errorRequired: 'Dit veld is verplicht',\n      errorInvalid: 'Ongeldig veld',\n      passwordMissingTitle: 'Wachtwoord ontbreekt',\n      passwordMissingDescription:\n        'Voer het wachtwoord in dat aan het certificaat is gekoppeld om het te ontsleutelen. Dit wachtwoord is vereist om de verificatie voort te zetten.',\n    },\n    certificateFeedback: {\n      successTitle: 'Certificaat succesvol geüpload',\n      successDescription: 'Het certificaat van de zorgverlener is succesvol geüpload en het wachtwoord is veilig opgeslagen. U kunt nu doorgaan met de volgende stappen.',\n      failureTitle: 'Uploaden van certificaat mislukt',\n      failureDescription:\n        'Er is een fout opgetreden bij het uploaden van het certificaat van het wachtwoord. Controleer of uw certificaat geldig is en of u het juiste wachtwoord hebt ingevoerd. Probeer het opnieuw. Neem contact op met de ondersteuning als het probleem aanhoudt.',\n      verificationErrorTitle: 'Fout bij verificatie van certificaat',\n    },\n    printModal: {\n      title: 'Voorschrift afdrukken',\n      close: 'Sluiten',\n      print: 'Afdrukken',\n    },\n  },\n  de: {\n    certificateUpload: {\n      titleUpload: 'Zertifikat hochladen',\n      titlePassword: 'Zertifikat-Passwort eingeben',\n      fileLabel: 'Zertifikat des Arztes',\n      passwordLabel: 'Passwort des Zertifikats',\n      submitButtonUpload: 'Verschlüsseln und hochladen',\n      submitButtonPassword: 'Absenden',\n      resetButton: 'Anderes Zertifikat hochladen',\n      errorRequired: 'Dieses Feld ist erforderlich',\n      errorInvalid: 'Ungültiges Feld',\n      passwordMissingTitle: 'Passwort fehlt',\n      passwordMissingDescription:\n        'Bitte geben Sie das Passwort ein, das mit dem Zertifikat verknüpft ist, um es zu entschlüsseln. Dieses Passwort ist für die weitere Überprüfung erforderlich.',\n    },\n    certificateFeedback: {\n      successTitle: 'Zertifikat erfolgreich hochgeladen',\n      successDescription:\n        'Das Zertifikat des Arztes wurde erfolgreich hochgeladen und das Passwort wurde sicher gespeichert. Sie können nun mit den nächsten Schritten fortfahren.',\n      failureTitle: 'Zertifikat-Upload fehlgeschlagen',\n      failureDescription:\n        'Beim Hochladen des Zertifikats ist ein Fehler aufgetreten. Bitte überprüfen Sie, ob Ihr Zertifikat gültig ist und ob Sie das richtige Passwort eingegeben haben. Versuchen Sie es erneut. Wenn das Problem weiterhin besteht, wenden Sie sich an den Support.',\n      verificationErrorTitle: 'Fehler bei der Zertifikatsprüfung',\n    },\n    printModal: {\n      title: 'Rezept drucken',\n      close: 'Schließen',\n      print: 'Drucken',\n    },\n  },\n}\n","export const prescriptionVisibilityTranslations = {\n  fr: {\n    practitionerVisibility: {\n      open: 'Visible pour tous les prescripteurs',\n      locked: 'Visible uniquement pour moi-même',\n      gmd_prescriber: 'Visible uniquement pour le titulaire du DMG',\n    },\n    pharmacistVisibility: {\n      null: 'Le médicament est visible par tous les pharmaciens',\n      locked: 'Le médicament n`est pas visible par tous les pharmaciens',\n    },\n  },\n  en: {\n    practitionerVisibility: {\n      open: 'Visible to all prescribers',\n      locked: 'Visible only to myself',\n      gmd_prescriber: 'Visible only to the GMD holder',\n    },\n    pharmacistVisibility: {\n      null: 'The medication is visible to all pharmacists',\n      locked: 'The medication is not visible to all pharmacists',\n    },\n  },\n  nl: {\n    practitionerVisibility: {\n      open: 'Zichtbaar voor alle voorschrijvers',\n      locked: 'Alleen zichtbaar voor mezelf',\n      gmd_prescriber: 'Alleen zichtbaar voor de GMD-houder',\n    },\n    pharmacistVisibility: {\n      null: 'Het geneesmiddel is zichtbaar voor alle apothekers',\n      locked: 'Het geneesmiddel is niet zichtbaar voor alle apothekers',\n    },\n  },\n  de: {\n    practitionerVisibility: {\n      open: 'Sichtbar für alle verschreiber',\n      locked: 'Nur für mich sichtbar',\n      gmd_prescriber: 'Nur für den GMD-inhaber sichtbar',\n    },\n    pharmacistVisibility: {\n      null: 'Das medikament ist für alle apotheker sichtbar',\n      locked: 'Das medikament ist nicht für alle apotheker sichtbar',\n    },\n  },\n};\n","export const reimbursementTranslations = {\n  fr: {\n    practitionerSelectionOptions: {\n      none: 'Aucun',\n      PAYINGTHIRDPARTY: 'Tiers Payant',\n      FIRSTDOSE: 'Première Dose',\n      SECONDDOSE: 'Deuxième Dose',\n      THIRDDOSE: 'Troisième Dose',\n      CHRONICKINDEYDISEASE: 'Maladie Rénale Chronique',\n      DIABETESTREATMENT: 'Traitement du Diabète',\n      DIABETESCONVENTION: 'Convention Diabète',\n      NOTREIMBURSABLE: 'Non Remboursable',\n      EXPLAINMEDICATION: 'Explication du Médicament',\n      DIABETESSTARTPATH: 'Parcours Initial Diabète',\n    },\n    categoryOptions: {\n      A: 'Médicaments vitaux',\n      B: 'Médicaments thérapeutiquement importants',\n      C: 'Médicaments pour traitement symptomatique',\n      Cs: 'Ex. vaccins, médicaments antiallergiques',\n      Cx: 'Ex. contraceptifs',\n      Fa: 'Médicaments vitaux remboursés sur une base fixe',\n      Fb: 'Médicaments thérapeutiquement importants remboursés sur une base fixe',\n    },\n  },\n  en: {\n    practitionerSelectionOptions: {\n      none: 'None',\n      PAYINGTHIRDPARTY: 'Third-party payment',\n      FIRSTDOSE: 'First dose',\n      SECONDDOSE: 'Second dose',\n      THIRDDOSE: 'Third dose',\n      CHRONICKINDEYDISEASE: 'Chronic kidney disease',\n      DIABETESTREATMENT: 'Diabetes treatment',\n      DIABETESCONVENTION: 'Diabetes convention',\n      NOTREIMBURSABLE: 'Not reimbursable',\n      EXPLAINMEDICATION: 'Medication explanation',\n      DIABETESSTARTPATH: 'Diabetes initial care path',\n    },\n    categoryOptions: {\n      A: 'Life-saving medicines',\n      B: 'Therapeutically important medicines',\n      C: 'Medicines for symptomatic treatment',\n      Cs: 'e.g. vaccines, allergy medicines',\n      Cx: 'e.g. contraceptives',\n      Fa: 'Life-saving medicines with reimbursement based on a fixed amount',\n      Fb: 'Therapeutically important medicines with reimbursement based on a fixed amount',\n    },\n  },\n  nl: {\n    practitionerSelectionOptions: {\n      none: 'Geen',\n      PAYINGTHIRDPARTY: 'Derdebetaler',\n      FIRSTDOSE: 'Eerste Dosis',\n      SECONDDOSE: 'Tweede Dosis',\n      THIRDDOSE: 'Derde Dosis',\n      CHRONICKINDEYDISEASE: 'Chronische Nierziekte',\n      DIABETESTREATMENT: 'Diabetesbehandeling',\n      DIABETESCONVENTION: 'Diabetesconventie',\n      NOTREIMBURSABLE: 'Niet Terugbetaalbaar',\n      EXPLAINMEDICATION: 'Uitleg over het Geneesmiddel',\n      DIABETESSTARTPATH: 'Opstarttraject Diabetes',\n    },\n    categoryOptions: {\n      A: 'Levensreddende geneesmiddelen',\n      B: 'Therapeutisch belangrijke geneesmiddelen',\n      C: 'Geneesmiddelen voor symptomatische behandeling',\n      Cs: 'bv. vaccins, allergiemedicatie',\n      Cx: 'bv. anticonceptiva',\n      Fa: 'Levensreddende geneesmiddelen met terugbetaling op basis van een vast bedrag',\n      Fb: 'Therapeutisch belangrijke geneesmiddelen met terugbetaling op basis van een vast bedrag',\n    },\n  },\n  de: {\n    practitionerSelectionOptions: {\n      none: 'Keine',\n      PAYINGTHIRDPARTY: 'Drittzahlerregelung',\n      FIRSTDOSE: 'Erste Dosis',\n      SECONDDOSE: 'Zweite Dosis',\n      THIRDDOSE: 'Dritte Dosis',\n      CHRONICKINDEYDISEASE: 'Chronische Nierenerkrankung',\n      DIABETESTREATMENT: 'Diabetesbehandlung',\n      DIABETESCONVENTION: 'Diabetesvereinbarung',\n      NOTREIMBURSABLE: 'Nicht Erstattungsfähig',\n      EXPLAINMEDICATION: 'Erläuterung zum Medikament',\n      DIABETESSTARTPATH: 'Einstiegspfad Diabetes',\n    },\n    categoryOptions: {\n      A: 'Lebensrettende Medikamente',\n      B: 'Therapeutisch wichtige Medikamente',\n      C: 'Medikamente zur symptomatischen Behandlung',\n      Cs: 'z. B. Impfstoffe, Allergiemedikamente',\n      Cx: 'z. B. Verhütungsmittel',\n      Fa: 'Lebensrettende Medikamente mit Erstattung auf Basis eines Festbetrags',\n      Fb: 'Therapeutisch wichtige Medikamente mit Erstattung auf Basis eines Festbetrags',\n    },\n  },\n};\n","export const prescriptionDurationTranslations = {\n  fr: {\n    durationUnits: {\n      day: 'jour',\n      week: 'semaine',\n    },\n    periodicityUnits: {\n      none: 'aucune',\n      week: 'semaine',\n      twoWeeks: '2 semaines',\n      threeWeeks: '3 semaines',\n      numberOfDays: 'x nombre de jours',\n    },\n  },\n  en: {\n    durationUnits: {\n      day: 'day',\n      week: 'week',\n    },\n    periodicityUnits: {\n      none: 'none',\n      week: 'week',\n      twoWeeks: '2 weeks',\n      threeWeeks: '3 weeks',\n      numberOfDays: 'x number of days',\n    },\n  },\n  nl: {\n    durationUnits: {\n      day: 'dag',\n      week: 'week',\n    },\n    periodicityUnits: {\n      none: 'geen',\n      week: 'week',\n      twoWeeks: '2 weken',\n      threeWeeks: '3 weken',\n      numberOfDays: 'x aantal dagen',\n    },\n  },\n  de: {\n    durationUnits: {\n      day: 'tag',\n      week: 'woche',\n    },\n    periodicityUnits: {\n      none: 'keine',\n      week: 'woche',\n      twoWeeks: '2 wochen',\n      threeWeeks: '3 wochen',\n      numberOfDays: 'x anzahl der tage',\n    },\n  },\n};\n","export const deliveryModusTranslations = {\n  fr: {\n    specifications: {\n      Sp: 'Prescription par un médecin-spécialiste',\n      Sp1: 'Première prescription par un médecin-spécialiste, prescription de suivi par un médecin généraliste',\n      'Sp/S': 'Prescription par un médecin-spécialiste',\n      'Sp1/S':\n        'Première prescription par un médecin-spécialiste, prescription de suivi par un médecin généraliste',\n      'IMP/Sp': 'Prescription par un médecin-spécialiste',\n      'IMP/Sp1':\n        'Première prescription par un médecin-spécialiste, prescription de suivi par un médecin généraliste',\n    },\n  },\n  en: {\n    specifications: {\n      Sp: 'Prescription by specialist',\n      Sp1: 'First prescription by specialist, follow-up prescription by general certificate',\n      'Sp/S': 'Prescription by specialist',\n      'Sp1/S':\n        'First prescription by specialist, follow-up prescription by general certificate',\n      'IMP/Sp': 'Prescription by specialist',\n      'IMP/Sp1':\n        'First prescription by specialist, follow-up prescription by general certificate',\n    },\n  },\n  nl: {\n    specifications: {\n      Sp: 'Voorschrift door een geneesheer-specialist',\n      Sp1: 'Eerste voorschrift door een geneesheer-specialist, vervolgoorschrift door huisarts',\n      'Sp/S': 'Voorschrift door een geneesheer-specialist',\n      'Sp1/S':\n        'Eerste voorschrift door een geneesheer-specialist, vervolgoorschrift door huisarts',\n      'IMP/Sp': 'Voorschrift door een geneesheer-specialist',\n      'IMP/Sp1':\n        'Eerste voorschrift door een geneesheer-specialist, vervolgoorschrift door huisarts',\n    },\n  },\n  de: {\n    specifications: {\n      Sp: 'Verschreibung von einem Facharzt',\n      Sp1: 'Erste Verschreibung von einem Facharzt, Folgeverordnung vom Hausarzt',\n      'Sp/S': 'Verschreibung von einem Facharzt',\n      'Sp1/S':\n        'Erste Verschreibung von einem Facharzt, Folgeverordnung vom Hausarzt',\n      'IMP/Sp': 'Verschreibung von einem Facharzt',\n      'IMP/Sp1':\n        'Erste Verschreibung von einem Facharzt, Folgeverordnung vom Hausarzt',\n    },\n  },\n};\n","import { homeTranslations } from './components/home.translations'\nimport { prescriptionTranslations } from './components/prescription.translations'\nimport { medicationTranslations } from './components/medication.translations'\nimport { practitionerTranslations } from './components/practitioner.translations'\nimport { prescriptionVisibilityTranslations } from './utils/visibility-helpers.translations'\nimport { reimbursementTranslations } from './utils/reimbursement-helpers.translations'\nimport { prescriptionDurationTranslations } from './utils/prescription-duration-helpers.translations'\nimport { deliveryModusTranslations } from './utils/delivery-helpers.translations'\n\nexport const appTranslations = {\n  fr: {\n    home: homeTranslations.fr,\n    prescription: prescriptionTranslations.fr,\n    medication: medicationTranslations.fr,\n    practitioner: practitionerTranslations.fr,\n    prescriptionVisibilityHelper: prescriptionVisibilityTranslations.fr,\n    reimbursementHelper: reimbursementTranslations.fr,\n    prescriptionDurationHelper: prescriptionDurationTranslations.fr,\n    deliveryModusHelper: deliveryModusTranslations.fr,\n  },\n  en: {\n    home: homeTranslations.en,\n    prescription: prescriptionTranslations.en,\n    medication: medicationTranslations.en,\n    practitioner: practitionerTranslations.en,\n    prescriptionVisibilityHelper: prescriptionVisibilityTranslations.en,\n    reimbursementHelper: reimbursementTranslations.en,\n    prescriptionDurationHelper: prescriptionDurationTranslations.en,\n    deliveryModusHelper: deliveryModusTranslations.en,\n  },\n  nl: {\n    home: homeTranslations.nl,\n    prescription: prescriptionTranslations.nl,\n    medication: medicationTranslations.nl,\n    practitioner: practitionerTranslations.nl,\n    prescriptionVisibilityHelper: prescriptionVisibilityTranslations.nl,\n    reimbursementHelper: reimbursementTranslations.nl,\n    prescriptionDurationHelper: prescriptionDurationTranslations.nl,\n    deliveryModusHelper: deliveryModusTranslations.nl,\n  },\n  de: {\n    home: homeTranslations.de,\n    prescription: prescriptionTranslations.de,\n    medication: medicationTranslations.de,\n    practitioner: practitionerTranslations.de,\n    prescriptionVisibilityHelper: prescriptionVisibilityTranslations.de,\n    reimbursementHelper: reimbursementTranslations.de,\n    prescriptionDurationHelper: prescriptionDurationTranslations.de,\n    deliveryModusHelper: deliveryModusTranslations.de,\n  },\n}\n","export const DEFAULT_APP_LANGULAGE = 'fr'\nexport const CERTIFICATE_IDB_CONFIG = {\n  DB_NAME: 'certificate-store',\n  STORE_NAME: 'certificates',\n  KEY_PATH: 'id',\n}\n\nexport const TOKEN_IDB_CONFIG = {\n  DB_NAME: 'token-store',\n  STORE_NAME: 'tokens',\n  KEY_PATH: 'id',\n}\n","import { appTranslations } from './translations'\nimport { DEFAULT_APP_LANGULAGE } from '../constants'\nimport { SamText } from '@icure/api'\n\ntype SamLanguage = keyof SamText\n\nclass CardinalLanguage {\n  private language: SamLanguage = DEFAULT_APP_LANGULAGE\n\n  public setLanguage(language: SamLanguage): void {\n    this.language = language\n  }\n\n  public getLanguage(): SamLanguage {\n    return this.language\n  }\n}\n\nexport const cardinalLanguage = new CardinalLanguage()\n\nexport const t = (key: string): string => {\n  const getKeyValue = (collection: Record<string, any>, complexKey: string): string | undefined => {\n    const keys = complexKey.split('.')\n    let value: any = collection\n\n    for (const k of keys) {\n      if (value && typeof value === 'object' && k in value) {\n        value = value[k]\n      } else {\n        return undefined\n      }\n    }\n\n    return typeof value === 'string' ? value : undefined\n  }\n\n  return getKeyValue(appTranslations[cardinalLanguage.getLanguage()], key) ?? key\n}\n\nexport const getSamTextTranslation = (samText?: SamText): string | undefined => {\n  if (!samText) {\n    return undefined\n  }\n  const lang = cardinalLanguage.getLanguage() as SamLanguage\n  const fallback = DEFAULT_APP_LANGULAGE as SamLanguage\n  return samText[lang] ?? samText[fallback]\n}\n","import { cardinalLanguage } from '../i18n'\nimport { Amp, IccBesamv2Api, Nmp, PaginatedListAmp, PaginatedListNmp, PaginatedListVmpGroup, SamVersion, VmpGroup } from '@icure/api'\n\n/**\n * Search for medications matching the given query and language.\n * @param sdk Instance of the SamV2Api sdk\n * @param query Medication search query string\n * @returns Paginated lists of AMP, VMPGroup, and NMP matches\n */\n\nconst language = cardinalLanguage.getLanguage()\n\ninterface PaginatedList<K, T> {\n  pageSize?: number\n  totalSize?: number\n  rows?: Array<T>\n  nextKeyPair?: {\n    startKey?: K\n    startKeyDocId?: string\n  }\n}\n\nexport class PaginatedListIterator<K, T> {\n  private loader: (limit: number, startKey?: K, startDocumentId?: string) => Promise<PaginatedList<K, T>>\n  private limit: number\n  private hasNextPage: boolean | null\n  private currentList: PaginatedList<K, T> | null\n\n  constructor(loader: (limit: number, startKey?: K, startDocumentId?: string) => Promise<PaginatedList<K, T>>) {\n    this.loader = loader\n    this.limit = 20 // Default limit, can be adjusted\n    this.hasNextPage = true\n    this.currentList = null\n  }\n\n  async hasNext(): Promise<boolean> {\n    if (this.hasNextPage === null) {\n      this.currentList = await this.loader(this.limit)\n      this.hasNextPage = this.currentList.rows && this.currentList.rows.length > 0\n    }\n    return this.hasNextPage\n  }\n\n  async next(limit: number): Promise<Array<T>> {\n    if (this.hasNextPage === null || !this.hasNextPage) {\n      throw new Error('No more pages available')\n    }\n\n    if (!this.currentList) {\n      this.currentList = await this.loader(limit)\n    }\n\n    const rows = this.currentList.rows || []\n    this.hasNextPage = !!this.currentList.nextKeyPair && rows.length === limit\n\n    // Prepare for the next call\n    if (this.hasNextPage) {\n      const nextKey = this.currentList.nextKeyPair?.startKey\n      const nextDocumentId = this.currentList.nextKeyPair?.startKeyDocId\n      this.currentList = await this.loader(limit, nextKey, nextDocumentId)\n    } else {\n      this.currentList = null\n    }\n\n    return rows\n  }\n}\n\nexport const findMedicationsByLabel = async (\n  sdk: IccBesamv2Api,\n  query: string,\n): Promise<[PaginatedListIterator<string, Amp>, PaginatedListIterator<string, VmpGroup>, PaginatedListIterator<string, Nmp>]> => {\n  try {\n    return await Promise.all([\n      new PaginatedListIterator<string, Amp>((limit: number, startKey: string, startDocumentId: string) => {\n        return sdk.findPaginatedAmpsByLabel(language, query, startKey ? JSON.stringify(startKey) : undefined, startDocumentId, limit)\n      }),\n      new PaginatedListIterator<string, Amp>((limit: number, startKey: string, startDocumentId: string) => {\n        return sdk.findPaginatedVmpGroupsByLabel(language, query, startKey ? JSON.stringify(startKey) : undefined, startDocumentId, limit)\n      }),\n      new PaginatedListIterator<string, Amp>((limit: number, startKey: string, startDocumentId: string) => {\n        return sdk.findPaginatedNmpsByLabel(language, query, startKey ? JSON.stringify(startKey) : undefined, startDocumentId, limit)\n      }),\n    ])\n  } catch (error) {\n    console.error('Error in findMedicationsByLabel:', error)\n    throw error\n  }\n}\n\n/**\n * Fetch the current version information for the SAM database.\n */\nexport const fetchSamVersion = async (sdk: IccBesamv2Api): Promise<SamVersion | undefined> => {\n  try {\n    return await sdk.getSamVersion()\n  } catch (error) {\n    console.error('Error in fetchSamVersion:', error)\n    return undefined\n  }\n}\n","export class IndexedDbServiceStore<T> {\n  private readonly db: Promise<IDBDatabase>\n  private readonly config: {\n    DB_NAME: string\n    STORE_NAME: string\n    KEY_PATH: string\n  }\n\n  constructor(config: { DB_NAME: string; STORE_NAME: string; KEY_PATH: string }) {\n    this.config = config\n    this.db = new Promise((resolve, reject) => {\n      const request = indexedDB.open(this.config.DB_NAME, 1)\n\n      request.onupgradeneeded = (event) => {\n        const db = (event.target as IDBOpenDBRequest).result\n        if (!db.objectStoreNames.contains(this.config.STORE_NAME)) {\n          db.createObjectStore(this.config.STORE_NAME, { keyPath: this.config.KEY_PATH })\n        }\n      }\n\n      request.onsuccess = () => resolve(request.result)\n      request.onerror = () => reject(request.error)\n    })\n  }\n\n  public get(key: string): Promise<T> {\n    return new Promise(async (resolve, reject) => {\n      const tx = (await this.db).transaction(this.config.STORE_NAME, 'readonly')\n      const store = tx.objectStore(this.config.STORE_NAME)\n      const request = store.get(key)\n\n      request.onsuccess = () => {\n        request.result?.value != null ? resolve(request.result.value as T) : reject(new Error(`No value for key: ${key}`))\n      }\n      request.onerror = () => reject(request.error)\n    })\n  }\n\n  public put(key: string, value: T): Promise<T> {\n    return new Promise(async (resolve, reject) => {\n      const tx = (await this.db).transaction(this.config.STORE_NAME, 'readwrite')\n      const store = tx.objectStore(this.config.STORE_NAME)\n\n      const getRequest = store.get(key)\n      getRequest.onsuccess = () => {\n        const exists = !!getRequest.result\n\n        const record = { id: key, value }\n        const request = exists ? store.put(record) : store.add(record)\n\n        request.onsuccess = () => resolve(value)\n        request.onerror = () => reject(request.error)\n      }\n      getRequest.onerror = () => reject(getRequest.error)\n    })\n  }\n\n  public delete(key: string): Promise<void> {\n    return new Promise(async (resolve, reject) => {\n      const tx = (await this.db).transaction(this.config.STORE_NAME, 'readwrite')\n      const store = tx.objectStore(this.config.STORE_NAME)\n\n      console.log('store')\n      console.log(store)\n\n      const request = store.delete(key)\n\n      console.log('request')\n      console.log(request)\n\n      request.onsuccess = () => resolve()\n      request.onerror = () => reject(request.error)\n    })\n  }\n}\n","import { IndexedDbServiceStore } from '../indexed-db'\nimport { CertificateRecordType } from '../../types'\nimport { CERTIFICATE_IDB_CONFIG } from '../constants'\n\nconst certificateStore = new IndexedDbServiceStore<CertificateRecordType>(CERTIFICATE_IDB_CONFIG)\n\nexport const loadCertificateInformation = async (\n  hcp_ssin: string,\n): Promise<\n  | {\n      salt: ArrayBuffer\n      iv: ArrayBuffer\n      encryptedCertificate: ArrayBuffer\n    }\n  | undefined\n> => {\n  try {\n    const record = await certificateStore.get(hcp_ssin)\n    return {\n      salt: new Uint8Array(record.salt).buffer,\n      iv: new Uint8Array(record.iv).buffer,\n      encryptedCertificate: new Uint8Array(record.encryptedCertificate).buffer,\n    }\n  } catch (error) {\n    console.error(`No certificate record found for HCP SSIN ${hcp_ssin}:`, error)\n    return undefined\n  }\n}\n\nexport const loadAndDecryptCertificate = async (hcp_ssin: string, passphrase: string): Promise<ArrayBuffer | undefined> => {\n  try {\n    const info = await loadCertificateInformation(hcp_ssin)\n\n    if (!info) return undefined\n\n    const { salt, iv, encryptedCertificate } = info\n    const encoder = new TextEncoder()\n    const passwordKey = await crypto.subtle.importKey('raw', encoder.encode(passphrase), { name: 'PBKDF2' }, false, ['deriveKey'])\n\n    const decryptionKey = await crypto.subtle.deriveKey(\n      { name: 'PBKDF2', salt: new Uint8Array(salt), iterations: 100_000, hash: 'SHA-256' },\n      passwordKey,\n      { name: 'AES-GCM', length: 256 },\n      false,\n      ['decrypt'],\n    )\n\n    return await crypto.subtle.decrypt(\n      {\n        name: 'AES-GCM',\n        iv: new Uint8Array(iv),\n      },\n      decryptionKey,\n      new Uint8Array(encryptedCertificate),\n    )\n  } catch (error) {\n    console.error(`Decryption failed for HCP SSIN \"${hcp_ssin}\":`, error)\n    return undefined\n  }\n}\n\nexport const uploadAndEncryptCertificate = async (hcp_ssin: string, passphrase: string, certificate: ArrayBuffer): Promise<CertificateRecordType | undefined> => {\n  try {\n    const salt = crypto.getRandomValues(new Uint8Array(16))\n    const iv = crypto.getRandomValues(new Uint8Array(12))\n\n    const passwordKey = await crypto.subtle.importKey('raw', new TextEncoder().encode(passphrase), { name: 'PBKDF2' }, false, ['deriveKey'])\n    const encryptionKey = await crypto.subtle.deriveKey(\n      {\n        name: 'PBKDF2',\n        salt,\n        iterations: 100_000,\n        hash: 'SHA-256',\n      },\n      passwordKey,\n      { name: 'AES-GCM', length: 256 },\n      false,\n      ['encrypt'],\n    )\n\n    const encryptedCertificate = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, encryptionKey, certificate)\n\n    const record: CertificateRecordType = {\n      id: hcp_ssin,\n      salt: Array.from(salt),\n      iv: Array.from(iv),\n      encryptedCertificate: Array.from(new Uint8Array(encryptedCertificate)),\n    }\n\n    return await certificateStore.put(hcp_ssin, record)\n  } catch (error) {\n    console.error(`Encryption failed for certificate of the HCP SSIN ${hcp_ssin}:`, error)\n    return undefined\n  }\n}\n\nexport const deleteCertificate = async (hcp_ssin: string): Promise<boolean> => {\n  try {\n    await certificateStore.delete(hcp_ssin)\n    console.log(`Certificate with ID ${hcp_ssin} successfully deleted.`)\n    return true\n  } catch (error) {\n    console.error(`Failed to delete certificate with ID ${hcp_ssin}:`, error)\n    return false\n  }\n}\n","import { CertificateValidationResultType, PrescribedMedicationType } from '../../types'\nimport { Code as FhcCode, fhcRecipeApi, fhcStsApi, HealthcareParty, Patient, Prescription, PrescriptionRequest } from '@icure/be-fhc-lite-api'\nimport { IndexedDbServiceStore } from '../indexed-db'\nimport { TOKEN_IDB_CONFIG } from '../constants'\nimport { dateEncode } from '../../utils/date-helpers'\nimport { loadAndDecryptCertificate } from '../certificate'\nimport { cardinalLanguage } from '../i18n'\n\nconst tokenStore = new IndexedDbServiceStore<string>(TOKEN_IDB_CONFIG)\n\nexport interface VendorType {\n  vendorName: string\n  vendorEmail: string\n  vendorPhone: string\n}\n\nexport interface SamPackageType {\n  packageName: string\n  packageVersion: string\n}\n\nexport interface FhcServiceConfig {\n  vendor: VendorType\n  samPackage: SamPackageType\n}\n\nconst getTokenStorageKeys = (hcp: HealthcareParty) => ({\n  STORE_KEY: `keystore.${hcp.ssin}`,\n  TOKEN_KEY: `token.${hcp.ssin}`,\n})\n\nconst language = cardinalLanguage.getLanguage()\n\nconst makePrescriptionRequest = (\n  config: FhcServiceConfig,\n  samVersion: string,\n  prescriber: HealthcareParty,\n  patient: Patient,\n  prescribedMedication: PrescribedMedicationType,\n): PrescriptionRequest =>\n  new PrescriptionRequest({\n    medications: [prescribedMedication.medication],\n    patient: {\n      firstName: patient.firstName,\n      lastName: patient.lastName,\n      ssin: patient.ssin,\n      dateOfBirth: patient.dateOfBirth,\n    },\n    hcp: {\n      firstName: prescriber.firstName,\n      lastName: prescriber.lastName,\n      ssin: prescriber.ssin,\n      nihii: prescriber.nihii,\n      addresses: prescriber.addresses,\n    },\n    feedback: false,\n    vendorName: config.vendor.vendorName,\n    vendorEmail: config.vendor.vendorEmail,\n    vendorPhone: config.vendor.vendorPhone,\n    packageName: config.samPackage.packageName,\n    packageVersion: config.samPackage.packageVersion,\n    vision: prescribedMedication.pharmacistVisibility,\n    visionOthers: prescribedMedication.prescriberVisibility,\n    samVersion,\n    deliveryDate: prescribedMedication.medication.beginMoment ?? dateEncode(new Date()),\n    expirationDate: prescribedMedication.medication.beginMoment ?? dateEncode(new Date(+new Date() + 1000 * 3600 * 24 * 90)),\n    lang: language,\n  })\n\nexport const createFhcCode = (type: string, code: string, version = '1.0') =>\n  new FhcCode({\n    id: `${type}:${code}:${version}`,\n    type,\n    code,\n    version,\n  })\n\nexport const sendRecipe = async (\n  config: FhcServiceConfig,\n  samVersion: string,\n  prescriber: HealthcareParty,\n  patient: Patient,\n  prescribedMedication: PrescribedMedicationType,\n  passphrase: string,\n  fhc_url: string,\n): Promise<Prescription[]> => {\n  const prescription = makePrescriptionRequest(config, samVersion, prescriber, patient, prescribedMedication)\n  if (!prescriber?.ssin || !prescriber?.nihii) throw new Error('Missing prescriber information')\n\n  const keystore = await loadAndDecryptCertificate(prescriber.ssin, passphrase)\n  if (!keystore) throw new Error('Cannot obtain keystore')\n\n  const recipe = new fhcRecipeApi(fhc_url, [])\n\n  const { keystoreUuid, stsTokenId } = await verifyCertificateWithSts(keystore, prescriber, passphrase, fhc_url)\n\n  // Create all prescriptions (for each medication)\n  return Promise.all(\n    prescription.medications?.map((m) =>\n      recipe.createPrescriptionV4UsingPOST(\n        keystoreUuid,\n        stsTokenId,\n        passphrase,\n        'persphysician',\n        prescriber.nihii,\n        prescriber.ssin,\n        `${prescriber.firstName} ${prescriber.lastName}`,\n        'iCure',\n        '1',\n        new PrescriptionRequest({ ...prescription, medications: [m] }),\n      ),\n    ) ?? [],\n  )\n}\n\nexport const verifyCertificateWithSts = async (\n  keystore: ArrayBuffer,\n  prescriber: HealthcareParty,\n  passphrase: string,\n  fhc_url: string,\n): Promise<CertificateValidationResultType> => {\n  if (!prescriber?.ssin || !prescriber?.nihii) {\n    return {\n      status: false,\n      error: {\n        en: 'Missing prescriber information',\n        fr: 'Informations du prescripteur manquantes',\n        nl: 'Ontbrekende voorschrijversinformatie',\n        de: 'Fehlende Verschreiberinformationen',\n      },\n    }\n  }\n  try {\n    const { STORE_KEY, TOKEN_KEY } = getTokenStorageKeys(prescriber)\n    const sts = new fhcStsApi(fhc_url, [])\n    const { uuid } = await sts.uploadKeystoreUsingPOST(keystore)\n    if (!uuid) throw new Error('Cannot obtain keystore uuid')\n    await tokenStore.put(STORE_KEY, uuid)\n\n    const stsToken = await sts.requestTokenUsingGET(passphrase, prescriber.ssin, uuid, 'doctor')\n    await tokenStore.put(TOKEN_KEY, stsToken.tokenId)\n\n    return { stsTokenId: stsToken.tokenId, keystoreUuid: uuid, status: !!stsToken.tokenId }\n  } catch (error: any) {\n    return {\n      status: false,\n      error: {\n        en: error?.message || 'Unknown error occurred',\n        fr: error?.message || 'Une erreur inconnue est survenue',\n        nl: error?.message || 'Er is een onbekende fout opgetreden',\n        de: error?.message || 'Ein unbekannter Fehler ist aufgetreten',\n      },\n    }\n  }\n}\n\nexport const validateDecryptedCertificate = async (hcp: HealthcareParty, passphrase: string, fhc_url: string): Promise<CertificateValidationResultType> => {\n  try {\n    const keystore = await loadAndDecryptCertificate(hcp.ssin, passphrase)\n    if (!keystore) {\n      return {\n        status: false,\n        error: {\n          en: 'Cannot obtain the certificate',\n          fr: 'Impossible d’obtenir le certificat',\n          nl: 'Certificaat kan niet worden verkregen',\n          de: 'Zertifikat kann nicht abgerufen werden',\n        },\n      }\n    }\n    return await verifyCertificateWithSts(keystore, hcp, passphrase, fhc_url)\n  } catch {\n    return { status: false }\n  }\n}\n","import { PrescribedMedicationType } from '../types'\n\nexport const convertYyyyMmDdNumberToIsoDate = (dateNumber: number): string => {\n  const year = Math.floor(dateNumber / 10000)\n  const month = Math.floor((dateNumber % 10000) / 100)\n    .toString()\n    .padStart(2, '0')\n  const day = (dateNumber % 100).toString().padStart(2, '0')\n  return `${year}-${month}-${day}`\n}\n\nexport const getTreatmentStartDate = (prescribedMedication?: PrescribedMedicationType): string => {\n  if (prescribedMedication?.medication.beginMoment) {\n    return convertYyyyMmDdNumberToIsoDate(prescribedMedication?.medication.beginMoment)\n  } else {\n    return new Date().toISOString().split('T')[0]\n  }\n}\n\nexport const getExecutableUntilDate = (prescribedMedication?: PrescribedMedicationType): string => {\n  if (prescribedMedication?.medication.endMoment) {\n    return convertYyyyMmDdNumberToIsoDate(prescribedMedication.medication.endMoment)\n  } else {\n    const startDay = new Date()\n    const nextYear = new Date(startDay)\n    nextYear.setFullYear(startDay.getFullYear() + 1)\n    return nextYear.toISOString().split('T')[0]\n  }\n}\n\n// also known as formatToDayMonthYear\nexport const formatTimestamp = (timestamp?: number): string | undefined => {\n  if (!timestamp) {\n    return undefined\n  } else {\n    const date = new Date(timestamp)\n    const day = String(date.getDate()).padStart(2, '0')\n    const month = String(date.getMonth() + 1).padStart(2, '0') // Months are zero-based\n    const year = date.getFullYear()\n\n    return `${day}-${month}-${year}`\n  }\n}\n\nexport function dateDecode(date: number): Date {\n  return date > 99990000 ? new Date(date / 10000000000, ((date / 100000000) % 100) - 1, (date / 1000000) % 100) : new Date(date / 10000, ((date / 100) % 100) - 1, date % 100)\n}\n\nexport function dateEncode(date: Date): number {\n  return date.getFullYear() * 10000 + (date.getMonth() + 1) * 100 + date.getDate()\n}\n\nexport function offsetDate(date: number, offsetInDays: number): number {\n  const result = new Date(dateDecode(date)) // Decode the date\n  result.setDate(result.getDate() + offsetInDays) // Add or subtract the offset in days\n  return dateEncode(result) // Encode it back to the required format\n}\n","import styled, { css } from 'styled-components'\nimport { colors } from '../../../styles'\n\nexport const StyledAlert = styled.div<{ $success: boolean; $error: boolean }>`\n  width: 100%;\n  display: flex;\n  padding: 20px 24px;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: 6px;\n  align-self: stretch;\n  border-radius: 12px;\n  border: 1px solid white;\n\n  .heading {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    align-self: stretch;\n\n    svg {\n      width: 24px;\n      height: 24px;\n    }\n  }\n\n  h4 {\n    color: ${colors.grey[900]};\n    font-size: 16px;\n    font-style: normal;\n    font-weight: 400;\n    line-height: 24px;\n  }\n\n  p {\n    color: ${colors.grey[900]};\n    font-size: 14px;\n    font-style: normal;\n    font-weight: 400;\n    line-height: 22px;\n  }\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      border-color: ${colors.red[400]};\n      background: ${colors.red[300]};\n    `};\n\n  ${({ $success }) =>\n    !!$success &&\n    css`\n      border-color: ${colors.green[400]};\n      background: ${colors.green[300]};\n    `};\n`\n","import { createGlobalStyle } from 'styled-components'\n\nexport const GlobalStyles = createGlobalStyle`\n  /* Reset of the user agent styles */\n\n  * {\n    margin: 0;\n    padding: 0;\n    font-size: 100%;\n    box-sizing: border-box;\n  }\n  \n  // Links\n  a {\n    text-decoration: none;\n\n    &:active,\n    &:hover {\n      outline: 0;\n    }\n  }\n\n  // List\n  ul,\n  li {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  // Headlines\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6 {\n    font-size: 100%;\n  }\n\n  // Default\n  html,\n  body {\n    box-sizing: border-box;\n    font-size: 16px;\n    background-color: #fbfdff;\n    font-family: 'Lato', sans-serif;\n  }\n\n  *,\n  *:before,\n  *:after {\n    box-sizing: border-box;\n  }\n\n  :focus {\n    outline: 0;\n  }\n\n  img,\n  audio,\n  video {\n    max-width: 100%;\n    height: auto;\n  }\n\n  iframe {\n    border: 0;\n  }\n\n  // Form\n  textarea {\n    resize: none;\n    /*remove the resize handle on the bottom right*/\n    overflow: auto;\n    vertical-align: top;\n    box-shadow: none;\n    -webkit-box-shadow: none;\n    -moz-box-shadow: none;\n  }\n\n  input,\n  textarea,\n  select,\n  button {\n    outline: none;\n    border: none;\n    font-size: 100%;\n    margin: 0;\n  }\n\n  button,\n  input {\n    line-height: normal;\n  }\n\n  // browser user agent input reset\n\n  input:-webkit-autofill,\n  input:-webkit-autofill:hover,\n  input:-webkit-autofill:focus,\n  textarea:-webkit-autofill,\n  textarea:-webkit-autofill:hover,\n  textarea:-webkit-autofill:focus,\n  select:-webkit-autofill,\n  select:-webkit-autofill:hover,\n  select:-webkit-autofill:focus {\n    -webkit-text-fill-color: rgb(0, 0, 0);\n    transition: background-color 5000s ease-in-out 0s;\n  }\n\n  // Table\n  table {\n    border-collapse: collapse;\n    border-spacing: 0;\n  }\n\n  td,\n  th {\n    padding: 0;\n    text-align: left;\n  }\n`\n","export const colors = {\n  blue: {\n    800: '#084b83',\n    600: '#4b6682',\n    500: '#3d87c5',\n    400: '#add5ff',\n    300: '#eef6fe',\n    200: '#f9fbfe',\n    100: '#dce7f2',\n  },\n  grey: {\n    900: '#1d2235',\n    700: '#7e827f',\n    650: '#9ca8b2',\n    600: '#848482',\n    550: '#cad0d5',\n    300: '#e4e4e7',\n    200: '#f5f5f5',\n    100: '#fcfcfd',\n  },\n  orange: {\n    900: '#ef762f',\n    950: '#e5a613',\n    800: '#ffda83',\n  },\n  green: {\n    600: '#33b96b',\n    500: '#52c41a',\n    400: '#b7eb8f',\n    300: '#f6ffed',\n    200: '#e5fae5',\n  },\n  red: {\n    800: '#FF0000FF',\n    700: '#ee5d59',\n    400: '#ffccc7',\n    300: '#fff1f0',\n  },\n} as const\n\nexport const colorsRgb = {\n  blue: {\n    800: '8, 75, 131',\n    600: '75, 102, 130',\n    500: '61, 135, 197',\n    400: '173, 213, 255',\n    300: '238, 246, 254',\n    200: '249, 251, 254',\n    100: '220, 231, 242',\n  },\n  grey: {\n    900: '29, 34, 53',\n    700: '126, 130, 127',\n    650: '156, 168, 178',\n    600: '132, 132, 130',\n    550: '202, 208, 213',\n    300: '228, 228, 231',\n    200: '245, 245, 245',\n    100: '252, 252, 253',\n  },\n  orange: {\n    900: '239, 118, 47',\n    950: '229, 166, 19',\n    800: '255, 218, 131',\n  },\n  green: {\n    600: '51, 185, 107',\n    400: '183, 235, 143',\n    300: '246, 255, 237',\n    200: '229, 250, 229',\n  },\n  red: {\n    800: '255, 0, 0',\n    700: '238, 93, 89',\n    400: '255, 204, 199',\n    300: '255, 241, 240',\n  },\n} as const\n","import { css } from 'styled-components'\nimport { colors } from './variables'\n\n// Input common styles\nexport const fieldCommonStyles = css`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  gap: 4px;\n  align-self: stretch;\n`\n\nexport const inputCommonStyles = css`\n  width: 100%;\n  display: flex;\n  height: 32px;\n  padding: 5px 12px;\n  align-items: center;\n  gap: 4px;\n  align-self: stretch;\n  cursor: pointer;\n\n  border-radius: 6px;\n  border: 1px solid ${colors.grey[550]};\n  background: #fff;\n\n  color: ${colors.grey[900]};\n  font-family: 'Inter Variable', sans-serif;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 22px;\n\n  &::placeholder {\n    color: ${colors.grey[650]};\n  }\n\n  &:hover,\n  &:focus {\n    border-color: ${colors.blue[800]};\n  }\n\n  &:focus {\n    box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n  }\n`\n\nexport const inputCommonStyles_disabled = css`\n  cursor: not-allowed;\n  background-color: ${colors.grey[200]};\n  border-color: ${colors.grey[550]};\n  opacity: 0.7;\n\n  &:hover {\n    border-color: ${colors.grey[550]};\n  }\n`\n\nexport const inputCommonStyles_error = css`\n  border-color: red;\n  color: red;\n\n  &::placeholder {\n    color: rgba(255, 0, 0, 0.5);\n  }\n\n  &:hover {\n    border-color: rgba(255, 0, 0, 0.5);\n  }\n\n  &:focus {\n    box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.2);\n  }\n`\n\nexport const labelCommonStyles = css`\n  width: 100%;\n  display: flex;\n  align-items: flex-start;\n  gap: 4px;\n  color: ${colors.grey[900]};\n  font-size: 14px;\n  font-weight: 500;\n  line-height: 22px;\n  cursor: pointer;\n\n  span {\n    display: none;\n  }\n`\n\nexport const labelCommonStyles_required = css`\n  span {\n    display: flex;\n    color: red;\n    font-weight: bold;\n  }\n`\n\nexport const labelCommonStyles_error = css`\n  color: red;\n`\n\nexport const errorMessageCommonStyles = css`\n  color: red;\n  font-size: 13px;\n`\n\n// Infographic-elements common styles\n\nexport const infographicElementCommonStyles = css`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n`\n\nexport const infographicElementTitleCommonStyles = css`\n  width: 100%;\n  font-size: 14px;\n  font-weight: 500;\n`\n\nexport const infographicElementTextCommonStyles = css`\n  font-size: 14px;\n  font-weight: 400;\n  color: black;\n`\n\nexport const infographicElementContentCommonStyles = css`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n\n  div {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n\n    span {\n      font-size: 12px;\n      font-weight: 400;\n      color: ${colors.blue[600]};\n    }\n\n    p {\n      ${infographicElementTextCommonStyles};\n    }\n\n    a {\n      ${infographicElementTextCommonStyles};\n      color: ${colors.blue[600]};\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n`\n\nexport const infographicElementLinkCommonStyles = css`\n  ${infographicElementTextCommonStyles};\n  color: ${colors.blue[500]};\n\n  &:hover {\n    text-decoration: underline;\n  }\n`\n","import { css } from 'styled-components'\n\nexport const displayResolution = {\n  xs: 420,\n  s: 576,\n  m: 768,\n  l: 992,\n  xl: 1200,\n  xxl: 1400,\n}\n\nexport const responsiveMediaQueries = {\n  up:\n    (size: number) =>\n    (first: TemplateStringsArray, ...args: { [key: string]: string }[]) => css`\n      @media (min-width: ${size}px) {\n        ${css(first, ...args)}\n      }\n    `,\n  down:\n    (size: number) =>\n    (first: TemplateStringsArray, ...args: { [key: string]: string }[]) => css`\n      @media (max-width: ${size}px) {\n        ${css(first, ...args)}\n      }\n    `,\n  between:\n    (min: number, max: number) =>\n    (first: TemplateStringsArray, ...args: { [key: string]: string }[]) => css`\n      @media (min-width: ${displayResolution[min]}px) and (max-width: ${displayResolution[max]}px) {\n        ${css(first, ...args)}\n      }\n    `,\n}\n","import React from 'react'\n\nexport function SpinnerIcn({ pathFill = '#000000', size = 12 }: { pathFill?: string; size?: number }) {\n  const sizePx = `${size}px`\n  return (\n    <svg style={{ width: sizePx, height: sizePx }} xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid\" width=\"24\" height=\"24\">\n      <g>\n        <circle strokeDasharray=\"169.64600329384882 58.548667764616276\" r=\"36\" strokeWidth=\"12\" stroke={pathFill} fill=\"none\" cy=\"50\" cx=\"50\">\n          <animateTransform keyTimes=\"0;1\" values=\"0 50 50;360 50 50\" dur=\"1s\" repeatCount=\"indefinite\" type=\"rotate\" attributeName=\"transform\"></animateTransform>\n        </circle>\n        <g></g>\n      </g>\n    </svg>\n  )\n}\n\nexport const StatusSuccessIcn = () => (\n  <svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_1152_2420)\">\n      <path\n        d=\"M13 0C5.82098 0 0 5.82098 0 13C0 20.179 5.82098 26 13 26C20.179 26 26 20.179 26 13C26 5.82098 20.179 0\n        13 0ZM18.615 8.75469L12.5038 17.2279C12.4184 17.3471 12.3058 17.4443 12.1753 17.5113C12.0449 17.5783 11.9003\n        17.6132 11.7537 17.6132C11.607 17.6132 11.4625 17.5783 11.332 17.5113C11.2016 17.4443 11.089 17.3471 11.0036\n        17.2279L7.38504 12.2136C7.27478 12.0598 7.38504 11.8451 7.57366 11.8451H8.9346C9.23058 11.8451 9.51205 11.9873\n        9.68616 12.231L11.7522 15.098L16.3138 8.7721C16.4879 8.53125 16.7665 8.38616 17.0654 8.38616H18.4263C18.615\n        8.38616 18.7252 8.60089 18.615 8.75469Z\"\n        fill=\"#52C41A\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_1152_2420\">\n        <rect width=\"26\" height=\"26\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const StatusErrorIcn = () => (\n  <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M12 0C18.6268 0 24 5.37321 24 12C24 18.6268 18.6268 24 12 24C5.37321 24 0 18.6268 0 12C0 5.37321 5.37321 0\n      12 0ZM15.428 7.36125H15.427L15.4248 7.36286L12 10.7879L8.57518 7.36286C8.57411 7.36152 8.57357 7.36125 8.57304\n      7.36125C8.57242 7.36106 8.57177 7.36106 8.57116 7.36125C8.57036 7.36125 8.56982 7.36152 8.56875 7.36259L7.36286\n      8.56848C7.36221 8.56916 7.36175 8.56999 7.36152 8.57089C7.36133 8.5715 7.36133 8.57216 7.36152\n      8.57277V8.5733C7.36197 8.57392 7.36251 8.57446 7.36313 8.57491L10.7879 12L7.36286 15.4248C7.36152 15.4259\n      7.36125 15.4264 7.36125 15.427C7.36106 15.4276 7.36106 15.4282 7.36125 15.4288C7.36125 15.4296 7.36152 15.4302\n      7.36259 15.4312L8.56848 16.6371C8.56916 16.6378 8.56999 16.6383 8.57089 16.6385C8.5715 16.6387 8.57216 16.6387\n      8.57277 16.6385C8.5733 16.6385 8.57384 16.6382 8.57491 16.6371L12 13.2121L15.4248 16.6371C15.4259 16.6382 15.4264\n      16.6385 15.427 16.6385C15.4276 16.6387 15.4282 16.6387 15.4288 16.6385C15.4296 16.6385 15.4302 16.6382 15.4312\n      16.6371L16.6371 15.4312C16.6378 15.4306 16.6383 15.4297 16.6385 15.4288C16.6387 15.4282 16.6387 15.4276 16.6385\n      15.427V15.4264C16.6381 15.4258 16.6377 15.4253 16.6371 15.4248L13.2121 12L16.6371 8.57518C16.6382 8.57411 16.6385\n      8.57357 16.6385 8.57304C16.6387 8.57242 16.6387 8.57177 16.6385 8.57116C16.6385 8.57036 16.6382 8.56982 16.6371\n      8.56875L15.4312 7.36286C15.4306 7.36221 15.4297 7.36175 15.4288 7.36152C15.4282 7.36133 15.4276 7.36133 15.427\n      7.36152L15.428 7.36125Z\"\n      fill=\"#FF4D4F\"\n    />\n  </svg>\n)\n\nexport const BlackTriangleIcn = () => (\n  <svg width=\"12px\" height=\"12px\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M5.37602 8.49475C5.49353 8.4276 5.59093 8.33021 5.65808 8.21269L8.9 2.53934C9.1077 2.17586 8.98142 1.71282\n      8.61793 1.50511C8.5034 1.43966 8.37377 1.40524 8.24185 1.40524H1.75802C1.33938 1.40524 1 1.74461 1 2.16326C1\n      2.29517 1.03443 2.4248 1.09987 2.53934L4.34179 8.21269C4.54949 8.57617 5.01253 8.70246 5.37602 8.49475Z\"\n      fill=\"#000000\"\n    />\n  </svg>\n)\n\nexport const OrangeTriangleIcn = () => (\n  <svg width=\"12px\" height=\"12px\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M5.37602 8.49475C5.49353 8.4276 5.59093 8.33021 5.65808 8.21269L8.9 2.53934C9.1077 2.17586 8.98142 1.71282\n      8.61793 1.50511C8.5034 1.43966 8.37377 1.40524 8.24185 1.40524H1.75802C1.33938 1.40524 1 1.74461 1 2.16326C1\n      2.29517 1.03443 2.4248 1.09987 2.53934L4.34179 8.21269C4.54949 8.57617 5.01253 8.70246 5.37602 8.49475Z\"\n      fill=\"#FF5E00\"\n    />\n  </svg>\n)\n\nexport const ChevronIcn = () => (\n  <svg width=\"12px\" height=\"12px\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_153_633)\">\n      <path\n        d=\"M2.57153 1.018L2.57153 2.02247C2.57153 2.09077 2.60502 2.15505 2.65993 2.19523L7.90457 6.00014L2.65993\n        9.80506C2.60502 9.84523 2.57153 9.90952 2.57153 9.97782L2.57153 10.9823C2.57153 11.0693 2.67064 11.1202 2.74162\n         11.0693L9.25189 6.34702C9.4876 6.17559 9.4876 5.8247 9.25189 5.65461L2.74162 0.932286C2.67064 0.880054 2.57153\n          0.930947 2.57153 1.018Z\"\n        fill=\"#3D87C5\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_153_633\">\n        <rect width=\"12px\" height=\"12px\" fill=\"white\" transform=\"matrix(0 -1 1 0 0 12)\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const EndOfCommercialisationIcn = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_330_2250)\">\n      <path\n        d=\"M4.65801 10.3098C4.52446 10.2195 4.36185 10.1662 4.18897 10.1664C4.07385 10.1664 3.96278 10.1899 3.86218\n        10.2325C3.71139 10.2963 3.58384 10.4023 3.49335 10.5362C3.40283 10.6698 3.34991 10.8324 3.3501 11.0052C3.34991\n        11.1204 3.37335 11.2314 3.416 11.3318C3.47997 11.4828 3.58579 11.6104 3.71952 11.7007C3.85328 11.7914 4.01608\n        11.8443 4.18897 11.8443C4.3041 11.8443 4.41496 11.8208 4.51536 11.7782C4.66635 11.7144 4.79408 11.6082 4.88439\n         11.4745C4.97472 11.3409 5.0278 11.1781 5.0278 11.0052C5.0278 10.8901 5.00415 10.7793 4.96171 10.6787C4.89793\n          10.5277 4.79174 10.4002 4.65801 10.3098ZM4.50062 11.1368C4.47503 11.1973 4.43181 11.2495 4.37772\n          11.2859C4.32346 11.3224 4.2599 11.3435 4.18895 11.3437C4.14147 11.3435 4.09745 11.3342 4.05735\n          11.3169C3.99707 11.2917 3.94473 11.2483 3.90829 11.1944C3.87184 11.1399 3.85091 11.0762 3.85054\n          11.0052C3.85072 10.9579 3.86022 10.9141 3.87728 10.8736C3.90247 10.8134 3.9459 10.7612 3.99995\n          10.7246C4.05423 10.6882 4.11798 10.6672 4.18893 10.667C4.23622 10.667 4.28003 10.6766 4.32032\n          10.6936C4.38079 10.719 4.43272 10.7622 4.46938 10.8165C4.50583 10.8708 4.52694 10.9343 4.52694\n          11.0053C4.52699 11.0527 4.51766 11.0966 4.50062 11.1368Z\"\n        fill=\"#EE1313\"\n      />\n      <path\n        d=\"M3.95443 9.20724C3.86373 9.20724 3.77884 9.189 3.70093 9.15623C3.58466 9.10702 3.48425 9.02405 3.41408\n         8.91977C3.34663 8.81956 3.30671 8.70155 3.3036 8.57208C3.30709 8.4176 3.35633 8.28349 3.44277 8.17629C3.48756\n         8.12107 3.54278 8.0726 3.60983 8.03248C3.67611 7.99294 3.75423 7.96156 3.84592 7.94177L9.57245 7.00971C9.9467\n         6.94866 10.2442 6.6626 10.3198 6.29102L11.0203 2.84747V2.84709C11.0284 2.80716 11.0323 2.76645 11.0323\n          2.72616C11.0323 2.58698 10.9846 2.45093 10.895 2.34122C10.7797 2.20013 10.6068 2.11814 10.4243\n          2.11814H2.495L2.22481 1.18997V1.19016C2.10078 0.775195 1.76042 0.460828 1.33714 0.370125L0.367674\n          0.162539C0.203705 0.127266 0.0420336 0.231938 0.00678359 0.396094C-0.0283023 0.56025 0.0761586 0.721899\n          0.240526 0.756985L1.20962 0.964758C1.41601 1.00894 1.58192 1.16205 1.64221 1.36441L3.41371 7.44949C3.37379\n          7.4681 3.33521 7.48826 3.29821 7.51055C3.1071 7.62434 2.95398 7.78404 2.85125 7.97049C2.753 8.14763 2.70085\n          8.34844 2.696 8.55563H2.69502V8.5872H2.69579C2.69968 8.74906 2.73418 8.90431 2.79406 9.04599C2.89002 9.27256\n          3.04932 9.46425 3.25011 9.59991C3.4509 9.73575 3.69472 9.81541 3.95443 9.81523H7.17163C7.17064 9.7852 7.16717\n           9.75593 7.16717 9.7257C7.16717 9.54834 7.18538 9.37526 7.21815 9.20724H3.95443ZM8.28413 3.16263C8.45488\n           3.11302 8.63356 3.2107 8.68318 3.38145L9.33556 5.61441C9.38518 5.78517 9.28728 5.96367 9.11656\n           6.01366C8.94599 6.06349 8.7673 5.96562 8.71749 5.79485L8.06527 3.56187C8.01549 3.39134 8.11337 3.21265\n           8.28413 3.16263ZM6.87643 3.16845C7.04699 3.11843 7.2257 3.21631 7.27548 3.38707L7.99009 5.83418C8.0401\n           6.00476 7.94202 6.18363 7.77146 6.23346C7.60091 6.28324 7.4222 6.18539 7.37218 6.01463L6.65757\n           3.56747C6.60781 3.39696 6.70567 3.21806 6.87643 3.16845ZM5.46835 3.17348C5.6391 3.12387 5.81781 3.22174\n           5.8674 3.39248L6.64074 6.04022C6.69074 6.21099 6.59267 6.38967 6.42212 6.43948C6.25159 6.48931 6.07288\n           6.39143 6.02286 6.22066L5.24952 3.57274C5.19971 3.40219 5.29759 3.22348 5.46835 3.17348ZM4.06046\n           3.17911C4.23123 3.12928 4.40992 3.22718 4.45972 3.39795L5.29332 6.25249C5.34334 6.42324 5.24525 6.60213\n           5.0747 6.65175C4.90414 6.70174 4.72543 6.60368 4.67542 6.43313L3.84163 3.5782C3.79203 3.40763 3.88972\n           3.22891 4.06046 3.17911Z\"\n        fill=\"#EE1313\"\n      />\n      <path\n        d=\"M9.88112 7.60687C8.71086 7.60687 7.7627 8.55541 7.7627 9.72569C7.7627 10.8958 8.71086 11.8443 9.88112\n        11.8443C11.0514 11.8443 11.9999 10.8958 11.9999 9.72569C11.9999 8.55541 11.0514 7.60687 9.88112\n        7.60687ZM11.0917 10.0788H8.67055V9.37235H11.0917V10.0788Z\"\n        fill=\"#EE1313\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_330_2250\">\n        <rect width=\"12\" height=\"12\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const LeafIcn = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_618_2370)\">\n      <mask id=\"mask0_618_2370\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"14\" height=\"14\">\n        <path d=\"M14 0H0V14H14V0Z\" fill=\"white\" />\n      </mask>\n      <g mask=\"url(#mask0_618_2370)\">\n        <path\n          d=\"M7.87489 0C4.49192 0 1.74989 2.74203 1.74989 6.125V11.0128L0.256266 12.5064C-0.085422 12.8481 -0.085422\n          13.4019 0.256266 13.7436C0.42711 13.9145 0.65111 14 0.874891 14C1.09867 14 1.32267 13.9145 1.49352\n          13.7436L2.98714 12.25H7.87489C11.2579 12.25 13.9999 9.50797 13.9999 6.125V0H7.87489ZM11.1185 4.11862L8.23627\n          7.00088H9.62489C10.1085 7.00088 10.4999 7.39222 10.4999 7.87588C10.4999 8.35953 10.1085 8.75088 9.62489\n          8.75088H6.48627L5.86852 9.36862C5.69767 9.53947 5.47367 9.625 5.24989 9.625C5.02611 9.625 4.80211 9.53947\n          4.63127 9.36862C4.28958 9.02694 4.28958 8.47306 4.63127 8.13138L5.24989 7.51275V4.375C5.24989 3.89134 5.64124\n           3.5 6.12489 3.5C6.60855 3.5 6.99989 3.89134 6.99989 4.375V5.76275L9.88127 2.88137C10.223 2.53969 10.7768\n           2.53969 11.1185 2.88137C11.4602 3.22306 11.4604 3.77694 11.1185 4.11862Z\"\n          fill=\"#197437\"\n        />\n      </g>\n    </g>\n    <defs>\n      <clipPath id=\"clip0_618_2370\">\n        <rect width=\"14\" height=\"14\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const MoleculeIcn = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_618_936)\">\n      <mask id=\"mask0_618_936\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"14\" height=\"14\">\n        <path d=\"M14 0H0V14H14V0Z\" fill=\"white\" />\n      </mask>\n      <g mask=\"url(#mask0_618_936)\">\n        <path\n          d=\"M10.1245 5.15595V2.10851C10.1245 1.90286 10.016 1.71436 9.84181 1.60869L7.29986 0.0835404C7.11421\n          -0.0278468 6.88572 -0.0278468 6.70008 0.0835404L4.15531 1.60869C3.97824 1.71436 3.87256 1.90286 3.87256\n          2.10851V5.15595C3.87256 5.36159 3.98109 5.55009 4.15531 5.65576L6.70008 7.18091C6.96856 7.33514 7.19133\n          7.25231 7.29986 7.18091L9.84181 5.65576C10.016 5.55009 10.1245 5.36159 10.1245 5.15595Z\"\n          fill=\"#EFAC2F\"\n        />\n        <path\n          d=\"M5.96922 8.3405L3.4273 6.81532C3.24165 6.70393 3.01317 6.70393 2.82753 6.81532L0.282753 8.3405C0.105675\n          8.44612 0 8.63465 0 8.8403V11.8877C0 12.0934 0.108531 12.2819 0.282753 12.3875L2.82753 13.9127C3.096 14.0669\n          3.31877 13.9841 3.4273 13.9127L5.96922 12.3875C6.1463 12.2819 6.25197 12.0934 6.25197 11.8877V8.8403C6.25197\n          8.63465 6.1463 8.44612 5.96922 8.3405Z\"\n          fill=\"#EFAC2F\"\n        />\n        <path\n          d=\"M13.7119 8.33763L11.17 6.81248C10.9843 6.7011 10.7559 6.7011 10.5702 6.81248L8.02541 8.33763C7.84831\n          8.44333 7.74268 8.63178 7.74268 8.83743V11.8849C7.74268 12.0906 7.85119 12.279 8.02541 12.3847L10.5673\n          13.9099C10.8358 14.0641 11.0586 13.9813 11.1671 13.9099L13.709 12.3847C13.8861 12.279 13.9918 12.0906\n          13.9918 11.8849V8.83743C13.9946 8.63178 13.8861 8.44333 13.7119 8.33763Z\"\n          fill=\"#EFAC2F\"\n        />\n      </g>\n    </g>\n    <defs>\n      <clipPath id=\"clip0_618_936\">\n        <rect width=\"14\" height=\"14\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const PillsBottleIcn = () => (\n  <svg width=\"12px\" height=\"12px\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_165_1782)\">\n      <path\n        d=\"M7.8751 4.34052C7.86877 4.11591 7.75782 3.91751 7.58907 3.79252C7.40655 3.62106 7.2094 3.46818 7.01846\n        3.26338C6.98683 3.22948 6.96046 3.19954 6.93778 3.17205C6.93517 3.16894 6.93256 3.1658 6.92996 3.16263C6.92681\n        3.1587 6.92397 3.155 6.92093 3.15118L6.91757 3.14688C6.82224 3.02447 6.81289 2.95561 6.81289 2.83826C6.81289\n        2.77897 6.81289 2.65316 6.81289 2.52272H6.9662C7.18556 2.52272 7.3634 2.36418 7.3634 2.16861V1.35413C7.3634\n        1.15854 7.18557 1 6.9662 1H3.03366C2.81429 1 2.63645 1.15854 2.63645 1.35413V2.16859C2.63645 2.36416 2.81429\n        2.5227 3.03366 2.5227H3.18697C3.18697 2.65314 3.18697 2.77896 3.18697 2.83824C3.18697 2.95559 3.17762 3.02446\n        3.08227 3.14687L3.07893 3.15116C3.07589 3.15498 3.07308 3.1587 3.06991 3.16261C3.06734 3.16578 3.06474 3.16891\n        3.06208 3.17203C3.0394 3.19952 3.01303 3.22948 2.98144 3.26336C2.79046 3.46817 2.59332 3.62099 2.41079\n        3.79246C2.24204 3.91746 2.13109 4.11591 2.12476 4.34051C2.12476 4.34635 2.12427 4.35356 2.12427 4.36032C2.12427\n         4.86656 2.12427 7.86047 2.12427 8.24009C2.12427 8.62504 2.40714 9 2.88414 9C3.12245 9 3.82162 9 4.98483\n         9C4.98483 9 4.9887 9 4.99588 9H4.99991H5.00395C5.01113 9 5.015 9 5.015 9C6.17819 9 6.87738 9 7.11569 9C7.59269\n          9 7.87556 8.62504 7.87556 8.24009C7.87556 7.86047 7.87556 4.8673 7.87556 4.36108C7.87556 4.35432 7.8751\n          4.34637 7.8751 4.34052ZM7.08025 6.21274C7.08025 6.43213 6.90241 6.60997 6.68304\n          6.60997H4.99995H3.31686C3.0975 6.60997 2.91965 6.43213 2.91965 6.21274V5.5681C2.91965 5.34872 3.0975 5.17088\n           3.31686 5.17088H6.68304C6.90241 5.17088 7.08025 5.34874 7.08025 5.5681V6.21274Z\"\n        fill=\"#000000\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_165_1782\">\n        <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(1 1)\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const PrescriptionIcn = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M8.56078 8.25L10.3903 6.42047C10.5368 6.27398 10.5368 6.03656 10.3903 5.89008L9.85992 5.35969C9.71344 5.2132\n       9.47602 5.2132 9.32953 5.35969L7.5 7.18922L5.53219 5.22141C6.64008 5.08125 7.5 4.14586 7.5 3C7.5 1.75734 6.49266\n        0.75 5.25 0.75H1.875C1.66781 0.75 1.5 0.917813 1.5 1.125V7.125C1.5 7.33219 1.66781 7.5 1.875 7.5H2.625C2.83219\n         7.5 3 7.33219 3 7.125V5.25H3.43945L6.43945 8.25L4.60992 10.0795C4.46344 10.226 4.46344 10.4634 4.60992\n          10.6099L5.14031 11.1403C5.2868 11.2868 5.52422 11.2868 5.6707 11.1403L7.5 9.31055L9.32953 11.1401C9.47602\n           11.2866 9.71344 11.2866 9.85992 11.1401L10.3903 10.6097C10.5368 10.4632 10.5368 10.2258 10.3903\n           10.0793L8.56078 8.25ZM3 2.25H5.25C5.66344 2.25 6 2.58656 6 3C6 3.41344 5.66344 3.75 5.25 3.75H3V2.25Z\"\n      fill=\"#000000\"\n    />\n  </svg>\n)\n\nexport const SolidPillIcn = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_618_3928)\">\n      <path\n        d=\"M12.5957 9.11825C12.1339 8.62182 11.5084 8.31967 10.8342 8.26742L10.8168 8.26608L3.19964 8.25861C1.71537\n        8.25861 0.507812 9.46617 0.507812 10.9505C0.507812 12.4347 1.71537 13.6423 3.19964 13.6423H3.20011L10.7994\n        13.6348L10.8342 13.6335C11.5083 13.5812 12.1339 13.2791 12.5957 12.7827C13.0601 12.2834 13.3159 11.6327 13.3159\n        10.9505C13.3159 10.2682 13.0601 9.61754 12.5957 9.11825ZM6.98957 12.7251L3.19931 12.7288C2.21893 12.7286\n        1.42131 11.9309 1.42131 10.9505C1.42131 9.96992 2.21907 9.17214 3.19918 9.17214L6.98957\n        9.17586V12.7251ZM1.69844 7.39865C2.15702 7.73348 2.72102 7.91788 3.28648 7.91794H3.28659C3.48032 7.91794\n        3.67493 7.89669 3.86497 7.85477L3.882 7.85103L11.1737 5.64824C12.5941 5.21763 13.3994 3.71168 12.9688\n        2.2912C12.7979 1.72734 12.4566 1.24606 11.9819 0.899316C11.5232 0.564246 10.9591 0.37973 10.3935\n         0.37973C10.1285 0.379872 9.86494 0.419123 9.61137 0.496215L2.34107 2.70811L2.30812 2.71951C1.67812 2.96508\n         1.16713 3.43572 0.869242 4.04475C0.569637 4.65728 0.513664 5.35421 0.711578 6.00713C0.882531 6.5709 1.22378\n         7.05207 1.69844 7.39865ZM9.87685 1.37031C10.0443 1.31935 10.2185 1.29337 10.3935 1.29323C11.1697 1.29323\n         11.8691 1.8126 12.0946 2.55621C12.379 3.49462 11.847 4.48952 10.9091 4.77387L7.28069 5.86997L6.25098\n         2.47344L9.87685 1.37031Z\"\n        fill=\"#3D87C5\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_618_3928\">\n        <rect width=\"14\" height=\"14\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const StartOfCommercialisationIcn = () => (\n  <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_330_2383)\">\n      <path\n        d=\"M4.65803 10.3099C4.52448 10.2196 4.36187 10.1663 4.18897 10.1665C4.07385 10.1665 3.96278 10.1899 3.86218\n        10.2326C3.71139 10.2964 3.58384 10.4024 3.49335 10.5363C3.40283 10.6698 3.34991 10.8325 3.3501 11.0054C3.34991\n        11.1205 3.37337 11.2316 3.41601 11.3319C3.47997 11.4829 3.58579 11.6105 3.71952 11.7008C3.85326 11.7915 4.01608\n         11.8444 4.18897 11.8444C4.3041 11.8444 4.41496 11.8209 4.51536 11.7783C4.66635 11.7145 4.79408 11.6083 4.88441\n          11.4746C4.97474 11.341 5.02783 11.1782 5.02783 11.0053C5.02783 10.8902 5.00418 10.7793 4.96173\n          10.6788C4.89796 10.5278 4.79176 10.4002 4.65803 10.3099ZM4.50062 11.1369C4.47503 11.1974 4.43181\n          11.2496 4.37772 11.286C4.32346 11.3224 4.25987 11.3436 4.18895 11.3437C4.14147 11.3436 4.09745 11.3343\n          4.05735 11.317C3.99707 11.2918 3.94473 11.2484 3.90829 11.1945C3.87184 11.14 3.85091 11.0763 3.85054\n          11.0053C3.85075 10.958 3.86024 10.9142 3.8773 10.8737C3.9025 10.8134 3.94593 10.7613 3.99997 10.7247C4.05426\n          10.6882 4.11803 10.6673 4.18895 10.6671C4.23625 10.6671 4.28005 10.6766 4.32036 10.6937C4.38083 10.719\n          4.43277 10.7623 4.46943 10.8165C4.50587 10.8708 4.52699 10.9344 4.52699 11.0053C4.52699 11.0528 4.51768\n          11.0966 4.50062 11.1369Z\"\n        fill=\"#09853D\"\n      />\n      <path\n        d=\"M3.9545 9.20728C3.8638 9.20728 3.77891 9.18907 3.701 9.15631C3.58471 9.10709 3.4843 9.02412 3.41415\n        8.91985C3.3467 8.81965 3.30676 8.7016 3.30367 8.57215C3.30716 8.41765 3.3564 8.28354 3.44284 8.17636C3.4876\n        8.12112 3.54285 8.07267 3.6099 8.03255C3.67618 7.99301 3.75428 7.96163 3.84599 7.94185L9.57261 7.00976C9.94686\n         6.94871 10.2444 6.66263 10.32 6.29107L11.0205 2.84745V2.84707C11.0286 2.80714 11.0325 2.76645 11.0325\n         2.72614C11.0325 2.58696 10.9848 2.45091 10.8952 2.3412C10.7799 2.2001 10.607 2.11812 10.4245\n         2.11812H2.49505L2.22486 1.1899V1.19009C2.10081 0.775128 1.76045 0.460738 1.33714 0.370035L0.367674\n         0.162449C0.203705 0.127175 0.0420336 0.231824 0.00678359 0.396003C-0.0283023 0.56016 0.0761586 0.721808\n          0.240526 0.756894L1.20964 0.964667C1.41606 1.00885 1.58195 1.16196 1.64223 1.36432L3.41375 7.44949C3.37384\n           7.4681 3.33526 7.48826 3.29825 7.51055C3.10714 7.62434 2.95403 7.78404 2.8513 7.97049C2.75305 8.14765 2.7009\n            8.34844 2.69605 8.55565H2.69506V8.58722H2.69584C2.69973 8.74908 2.73423 8.90433 2.79411 9.04601C2.89006\n             9.27258 3.04937 9.46428 3.25016 9.59993C3.45095 9.73577 3.69477 9.81546 3.9545 9.81525H7.17174C7.17076\n              9.78523 7.16729 9.75595 7.16729 9.72572C7.16729 9.54837 7.1855 9.37528 7.21827\n              9.20724H3.9545V9.20728ZM8.28428 3.16259C8.45502 3.11297 8.63373 3.21066 8.68335 3.3814L9.33575\n              5.61441C9.38537 5.78517 9.28749 5.96368 9.11675 6.01367C8.94617 6.0635 8.76749 5.96562 8.71768\n              5.79485L8.06546 3.56185C8.01561 3.39129 8.11351 3.2126 8.28428 3.16259ZM6.87655 3.1684C7.04713 3.11839\n              7.22581 3.21626 7.27562 3.38703L7.99023 5.83418C8.04024 6.00476 7.94216 6.18366 7.7716 6.23346C7.60103\n              6.28327 7.42234 6.18539 7.37232 6.01463L6.65771 3.56745C6.60791 3.39694 6.70578 3.21802 6.87655\n              3.1684ZM5.46845 3.17344C5.63919 3.12382 5.8179 3.2217 5.86752 3.39244L6.64086 6.04022C6.69085 6.21099\n              6.59279 6.3897 6.42224 6.43948C6.25168 6.48931 6.07297 6.39143 6.02296 6.22067L5.24961 3.5727C5.19978\n              3.40214 5.29768 3.22346 5.46845 3.17344ZM4.06053 3.17907C4.2313 3.12924 4.41001 3.22714 4.45982\n              3.3979L5.29344 6.25249C5.34346 6.42324 5.24537 6.60214 5.07481 6.65178C4.90424 6.70177 4.72555 6.60371\n               4.67553 6.43315L3.84172 3.57818C3.79208 3.40758 3.88977 3.22889 4.06053 3.17907Z\"\n        fill=\"#09853D\"\n      />\n      <path\n        d=\"M9.88135 7.6069C8.71107 7.6069 7.7627 8.55547 7.7627 9.72575C7.7627 10.8958 8.71107 11.8444 9.88135\n        11.8444C11.0514 11.8444 12 10.8958 12 9.72575C12 8.55547 11.0514 7.6069 9.88135 7.6069ZM9.76121 10.7154L8.74831\n         9.90502L9.13266 9.42455L9.6583 9.84514L10.5439 8.70664L11.0298 9.0844L9.76121 10.7154Z\"\n        fill=\"#09853D\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_330_2383\">\n        <rect width=\"12\" height=\"12\" fill=\"white\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const SupplyIcn = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g clipPath=\"url(#clip0_329_708)\">\n      <path\n        d=\"M5.18757 9.96101C4.45959 9.96101 3.86963 10.5508 3.86963 11.2788C3.86963 12.0069 4.45959 12.5966 5.18757\n        12.5966C5.91581 12.5966 6.50562 12.0069 6.50562 11.2788C6.50562 10.5508 5.91581 9.96101 5.18757\n        9.96101ZM5.18757 11.8517C4.87111 11.8517 4.61468 11.5953 4.61468 11.2788C4.61468 10.9622 4.87111 10.7059\n        5.18757 10.7059C5.50406 10.7059 5.76067 10.9622 5.76067 11.2788C5.76067 11.5953 5.50406 11.8517 5.18757 11.8517Z\"\n        fill=\"#FF5E00\"\n      />\n      <path\n        d=\"M12.1372 9.96101C11.4093 9.96101 10.8193 10.5508 10.8193 11.2788C10.8193 12.0069 11.4093 12.5966 12.1372\n        12.5966C12.8655 12.5966 13.4553 12.0069 13.4553 11.2788C13.4553 10.5508 12.8655 9.96101 12.1372 9.96101ZM12.1372\n         11.8517C11.8208 11.8517 11.5644 11.5953 11.5644 11.2788C11.5644 10.9622 11.8208 10.7059 12.1372\n         10.7059C12.4538 10.7059 12.7104 10.9622 12.7104 11.2788C12.7104 11.5953 12.4538 11.8517 12.1372 11.8517Z\"\n        fill=\"#FF5E00\"\n      />\n      <path\n        d=\"M6.6703 5.9117C6.6703 6.09636 6.51918 6.24744 6.33455 6.24744H1.70143C1.51676 6.24744 1.36572 6.09636 1.36572\n         5.9117V5.71025C1.36572 5.52562 1.5168 5.37454 1.70143 5.37454H6.33455C6.51922 5.37454 6.6703 5.52562 6.6703\n         5.71025V5.9117Z\"\n        fill=\"#FF5E00\"\n      />\n      <path\n        d=\"M14.7198 7.87737C14.2365 7.75174 13.96 7.67276 13.7703 7.30629L13.1358 6.02162C12.9459 5.65516 12.4529\n        5.35529 12.0403 5.35529H11.1725C11.1725 5.35529 11.0557 5.35773 11.0557 5.24024C11.0557 4.97087 11.0557\n        4.1628 11.0557 4.1628C11.0557 3.74512 10.8194 3.40337 10.3166 3.40337H3.24371C2.52388 3.40337 2.18213 3.74516\n        2.18213 4.1628V4.83801C2.18213 4.83801 2.18213 5.03883 2.3765 5.03883C3.36599 5.03883 6.33452 5.03883 6.33452\n        5.03883C6.70477 5.03883 7.006 5.34003 7.006 5.71028V5.91173C7.006 6.28199 6.70477 6.58318 6.33452\n        6.58318H2.3765C2.3765 6.58318 2.18213 6.56703 2.18213 6.77685C2.18213 6.88106 2.18213 6.95101 2.18213\n        7.00905C2.18213 7.19372 2.43524 7.19361 2.43524 7.19361H5.09958C5.46984 7.19361 5.77107 7.49483 5.77107\n        7.86506V8.0665C5.77107 8.43676 5.46984 8.73795 5.09958 8.73795H2.47727C2.47727 8.73795 2.18213 8.7325\n        2.18213 8.9675C2.18213 9.37541 2.18213 10.5991 2.18213 10.5991C2.18213 11.0167 2.52388 11.3585 2.94156\n        11.3585C2.94156 11.3585 3.25618 11.3585 3.36105 11.3585C3.45619 11.3585 3.4702 11.3055 3.4702 11.2789C3.4702\n        10.332 4.24066 9.5617 5.1876 9.5617C6.13462 9.5617 6.90504 10.332 6.90504 11.2789C6.90504 11.3056 6.89744\n        11.3585 6.9702 11.3585C7.80172 11.3585 10.3555 11.3585 10.3555 11.3585C10.4226 11.3585 10.4199 11.3019 10.4199\n        11.2789C10.4199 10.332 11.1903 9.5617 12.1373 9.5617C13.0843 9.5617 13.8547 10.332 13.8547 11.2789C13.8547\n        11.3056 13.854 11.3585 13.896 11.3585C14.2773 11.3585 14.7495 11.3585 14.7495 11.3585C15.1624 11.3585 15.5\n        11.0208 15.5 10.6081V9.18233C15.5001 7.98165 15.1209 7.98165 14.7198 7.87737ZM13.2917 7.81059C13.2917 7.81059\n        11.6981 7.81059 11.1557 7.81059C11.0674 7.81059 11.0557 7.72468 11.0557 7.72468V5.94529C11.0557 5.94529 11.0507\n         5.87696 11.164 5.87696C11.3164 5.87696 11.7735 5.87696 11.7735 5.87696C12.1408 5.87696 12.5794 6.14378 12.7483\n          6.46987L13.3129 7.61298C13.3367 7.659 13.3621 7.69986 13.3893 7.73647C13.4094 7.76332 13.3757 7.81059 13.2917\n           7.81059Z\"\n        fill=\"#FF5E00\"\n      />\n      <path\n        d=\"M5.43524 8.06651C5.43524 8.25118 5.28416 8.40226 5.09953 8.40226H0.835707C0.651039 8.40226 0.5 8.25118 0.5\n        8.06651V7.86506C0.5 7.68043 0.651076 7.52936 0.835707 7.52936H5.09953C5.2842 7.52936 5.43524 7.68043 5.43524\n        7.86506V8.06651Z\"\n        fill=\"#FF5E00\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_329_708\">\n        <rect width=\"15\" height=\"15\" fill=\"white\" transform=\"translate(0.5 0.5)\" />\n      </clipPath>\n    </defs>\n  </svg>\n)\n\nexport const SearchIcn = () => (\n  <svg width=\"20px\" height=\"20px\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <g mask=\"url(#mask0_16_247)\">\n      <path\n        d=\"M16.3333 17.5L11.0833 12.25C10.6667 12.5833 10.1875 12.8472 9.64583 13.0417C9.10417 13.2361 8.52778 13.3333\n        7.91667 13.3333C6.40278 13.3333 5.12153 12.809 4.07292 11.7604C3.02431 10.7118 2.5 9.43056 2.5 7.91667C2.5\n        6.40278 3.02431 5.12153 4.07292 4.07292C5.12153 3.02431 6.40278 2.5 7.91667 2.5C9.43056 2.5 10.7118 3.02431\n        11.7604 4.07292C12.809 5.12153 13.3333 6.40278 13.3333 7.91667C13.3333 8.52778 13.2361 9.10417 13.0417\n        9.64583C12.8472 10.1875 12.5833 10.6667 12.25 11.0833L17.5 16.3333L16.3333 17.5ZM7.91667 11.6667C8.95833\n        11.6667 9.84375 11.3021 10.5729 10.5729C11.3021 9.84375 11.6667 8.95833 11.6667 7.91667C11.6667 6.875 11.3021\n        5.98958 10.5729 5.26042C9.84375 4.53125 8.95833 4.16667 7.91667 4.16667C6.875 4.16667 5.98958 4.53125 5.26042\n        5.26042C4.53125 5.98958 4.16667 6.875 4.16667 7.91667C4.16667 8.95833 4.53125 9.84375 5.26042 10.5729C5.98958\n        11.3021 6.875 11.6667 7.91667 11.6667Z\"\n        fill=\"#9CA8B2\"\n      />\n    </g>\n  </svg>\n)\n\nexport const CloseIcn = () => (\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M13.1404 2.32697C13.1407 2.32697 13.1411 2.32732 13.1418 2.32804L14.172 3.3584C14.1727 3.35893 14.1729 3.35929\n       14.1731 3.35982C14.1732 3.36018 14.1732 3.36054 14.1731 3.3609C14.1731 3.36143 14.1727 3.36179 14.172\n       3.3625L9.0345 8.5L14.172 13.6375C14.1727 13.6382 14.1729 13.6386 14.1731 13.6391C14.1732 13.6395 14.1732 13.64\n       14.1731 13.6404C14.1731 13.6407 14.1727 13.6411 14.172 13.6418L13.1416 14.672C13.1411 14.6727 13.1407 14.6729\n       13.1404 14.673C13.14 14.6732 13.1395 14.6732 13.1391 14.673C13.1386 14.673 13.1382 14.6727 13.1375 14.672L8.00003\n        9.53447L2.86253 14.672C2.86182 14.6727 2.86146 14.6729 2.86093 14.673C2.86052 14.6732 2.86008 14.6732 2.85968\n         14.673C2.85932 14.673 2.85896 14.6727 2.85825 14.672L1.82807 13.6416C1.82735 13.6411 1.82718 13.6407 1.827\n         13.6404C1.82687 13.64 1.82687 13.6395 1.827 13.6391C1.827 13.6386 1.82735 13.6382 1.82807 13.6375L6.96557\n         8.5L1.82807 3.3625C1.82735 3.36179 1.82718 3.36143 1.827 3.3609C1.82687 3.36049 1.82687 3.36005 1.827\n         3.35965C1.827 3.35929 1.82735 3.35893 1.82807 3.35822L2.85843 2.32804C2.85896 2.32732 2.85932 2.32715 2.85968\n         2.32697C2.86008 2.32684 2.86052 2.32684 2.86093 2.32697C2.86146 2.32697 2.86182 2.32732 2.86253 2.32804L8.00003\n          7.46554L13.1375 2.32804C13.1382 2.32732 13.1386 2.32715 13.1391 2.32697C13.1395 2.32684 13.14 2.32684 13.1404\n           2.32697Z\"\n      fill=\"#4B6682\"\n    />\n  </svg>\n)\n\nexport const EditIcn = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M7.277 9.81458L12.1624 4.92916L11.4041 4.17083L6.51867 9.05625L7.277 9.81458ZM3.47075 11.0833C2.49853 11.0347\n      1.77422 10.8306 1.29784 10.4708C0.821446 10.1111 0.583252 9.59097 0.583252 8.91041C0.583252 8.27847 0.843321\n      7.76562 1.36346 7.37187C1.8836 6.97812 2.60547 6.74236 3.52909 6.66458C3.90825 6.63541 4.19263 6.57465 4.38221\n      6.48229C4.57179 6.38993 4.66659 6.26111 4.66659 6.09583C4.66659 5.84305 4.52318 5.65347 4.23638 5.52708C3.94957\n      5.40069 3.47561 5.30833 2.8145 5.25L2.91659 4.08333C3.91797 4.16111 4.65443 4.36284 5.12596 4.68854C5.59749\n      5.01423 5.83325 5.48333 5.83325 6.09583C5.83325 6.61111 5.6461 7.01458 5.27179 7.30625C4.89749 7.59791 4.34575\n      7.77291 3.61659 7.83125C2.99436 7.87986 2.5277 7.99409 2.21659 8.17396C1.90547 8.35382 1.74992 8.5993 1.74992\n      8.91041C1.74992 9.25069 1.88603 9.49618 2.15825 9.64687C2.43047 9.79757 2.88742 9.8875 3.52909 9.91666L3.47075\n      11.0833ZM7.55409 11.1854L5.14784 8.77916L10.7187 3.20833C10.9131 3.01389 11.144 2.91666 11.4114 2.91666C11.6787\n      2.91666 11.9096 3.01389 12.1041 3.20833L13.1249 4.22916C13.3194 4.42361 13.4166 4.65451 13.4166 4.92187C13.4166\n      5.18923 13.3194 5.42014 13.1249 5.61458L7.55409 11.1854ZM5.23534 11.6667C5.07006 11.7056 4.92422 11.6618 4.79784\n       11.5354C4.67145 11.409 4.6277 11.2632 4.66659 11.0979L5.14784 8.77916L7.55409 11.1854L5.23534 11.6667Z\"\n      fill=\"#383A3C\"\n    />\n  </svg>\n)\n\nexport const DeleteIcn = () => (\n  <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path\n      d=\"M5.83325 5.25C6.15542 5.25 6.41659 5.51117 6.41659 5.83334V9.625C6.41659 9.94717 6.15542 10.2083 5.83325\n      10.2083C5.51109 10.2083 5.24992 9.94717 5.24992 9.625V5.83334C5.24992 5.51117 5.51109 5.25 5.83325 5.25Z\"\n      fill=\"#383A3C\"\n    />\n    <path\n      d=\"M8.74992 5.83334C8.74992 5.51117 8.48875 5.25 8.16659 5.25C7.84442 5.25 7.58325 5.51117 7.58325\n      5.83334V9.625C7.58325 9.94717 7.84442 10.2083 8.16659 10.2083C8.48875 10.2083 8.74992 9.94717 8.74992\n      9.625V5.83334Z\"\n      fill=\"#383A3C\"\n    />\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M5.62588 0.583336C5.41285 0.583336 5.21676 0.699465 5.11436 0.88627L4.32112 2.33334H1.16659C0.844419 2.33334\n      0.583252 2.5945 0.583252 2.91667C0.583252 3.23884 0.844419 3.5 1.16659 3.5H2.04159V12.8333C2.04159 13.1555\n      2.30275 13.4167 2.62492 13.4167H11.3749C11.6971 13.4167 11.9583 13.1555 11.9583 12.8333V3.5H12.8333C13.1554\n      3.5 13.4166 3.23884 13.4166 2.91667C13.4166 2.5945 13.1554 2.33334 12.8333 2.33334H9.68208L8.90713\n      0.890634C8.80548 0.701395 8.60805 0.583336 8.39324 0.583336H5.62588ZM8.35775 2.33334L8.04442 1.75H5.97134L5.65158\n       2.33334H8.35775ZM3.20825 3.5V12.25H10.7916V3.5H3.20825Z\"\n      fill=\"#383A3C\"\n    />\n  </svg>\n)\n","import React, { FC } from 'react'\nimport { StyledAlert } from './styles'\nimport { StatusErrorIcn, StatusSuccessIcn } from '../Icons'\n\ninterface AlertProps {\n  status: 'success' | 'error'\n  title: string\n  description: string\n}\n\nexport const Alert: FC<AlertProps> = ({ status, title, description }) => {\n  return (\n    <StyledAlert className=\"StyledAlert\" $success={status === 'success'} $error={status === 'error'}>\n      <div className=\"heading\">\n        {status === 'success' && <StatusSuccessIcn />}\n        {status === 'error' && <StatusErrorIcn />}\n        <h4>{title}</h4>\n      </div>\n      <p>{description}</p>\n    </StyledAlert>\n  )\n}\n","import React, { FC } from 'react'\nimport { useForm } from 'react-hook-form'\nimport { readFileAsArrayBuffer } from '../../../utils/file-helpers'\nimport { Button } from '../../form-elements/Button'\nimport { TextInput } from '../../form-elements/TextInput'\nimport { StyledCertificateForm, StyledCertificateUpload } from './styles'\nimport { t } from '../../../services/i18n'\n\ninterface CertificateUploadFormProps {\n  onUploadCertificate: (certificateData: ArrayBuffer, passphrase: string) => void\n  onResetCertificate: () => void\n  onDecryptCertificate: (passphrase: string) => void\n  certificateAlreadyUploaded: boolean\n}\n\ntype CertificateFormType = {\n  certificate: FileList\n  password: string\n}\n\nexport const CertificateUploadForm: FC<CertificateUploadFormProps> = ({ onUploadCertificate, onResetCertificate, onDecryptCertificate, certificateAlreadyUploaded }) => {\n  const {\n    register,\n    handleSubmit,\n    reset,\n    formState: { errors: certificateFormError },\n  } = useForm<CertificateFormType>()\n\n  const handleFormSubmit = async ({ certificate, password }: CertificateFormType) => {\n    if (certificateAlreadyUploaded) {\n      onDecryptCertificate(password)\n    } else {\n      const certificateData: ArrayBuffer = await readFileAsArrayBuffer(certificate[0])\n      onUploadCertificate(certificateData, password)\n    }\n  }\n\n  const onUploadedAnotherCertificate = async (): Promise<void> => {\n    onResetCertificate()\n    reset()\n  }\n\n  return (\n    <StyledCertificateUpload className=\"StyledCertificateUpload\">\n      <StyledCertificateForm className=\"StyledCertificateForm\" onSubmit={handleSubmit(handleFormSubmit)} id=\"uploadCertificateForm\">\n        <h3>{!certificateAlreadyUploaded ? t('practitioner.certificateUpload.titleUpload') : t('practitioner.certificateUpload.titlePassword')}</h3>\n\n        <div className=\"StyledCertificateUpload__inputs\">\n          {!certificateAlreadyUploaded && (\n            <TextInput\n              label={t('practitioner.certificateUpload.fileLabel')}\n              type=\"file\"\n              id=\"certificate\"\n              accept=\".p12,.acc-p12\"\n              required\n              {...register('certificate', {\n                required: t('practitioner.certificateUpload.errorRequired'),\n              })}\n              errorMessage={certificateFormError['certificate']?.message}\n            />\n          )}\n          <TextInput\n            label={t('practitioner.certificateUpload.passwordLabel')}\n            type=\"password\"\n            id=\"password\"\n            required\n            {...register('password', {\n              required: t('practitioner.certificateUpload.errorRequired'),\n            })}\n            errorMessage={certificateFormError['password']?.message}\n          />\n        </div>\n\n        <Button\n          title={!certificateAlreadyUploaded ? t('practitioner.certificateUpload.submitButtonUpload') : t('practitioner.certificateUpload.submitButtonPassword')}\n          type=\"submit\"\n          form=\"uploadCertificateForm\"\n        />\n      </StyledCertificateForm>\n      {certificateAlreadyUploaded && (\n        <Button title={t('practitioner.certificateUpload.resetButton')} type=\"reset\" view=\"outlined\" form=\"uploadCertificateForm\" handleClick={onUploadedAnotherCertificate} />\n      )}\n    </StyledCertificateUpload>\n  )\n}\n","export const readFileAsArrayBuffer = (file: File): Promise<ArrayBuffer> => {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader()\n    reader.onload = () => resolve(reader.result as ArrayBuffer)\n    reader.onerror = () => reject(reader.error)\n    reader.readAsArrayBuffer(file)\n  })\n}\n","import styled, { css } from 'styled-components'\nimport { colors } from '../../../styles'\nimport { ButtonViewType } from './index'\n\nconst viewStyles = ($view?: ButtonViewType) => {\n  switch ($view) {\n    case 'primary':\n      return css`\n        background: ${colors.blue[800]};\n        color: #ffffff;\n\n        &:hover {\n          opacity: 0.9;\n        }\n      `\n    case 'outlined':\n      return css`\n        border-radius: 6px;\n        border-color: ${colors.grey[550]};\n        background: ${colors.grey[100]};\n        color: ${colors.blue[800]};\n\n        &:hover {\n          border-color: ${colors.blue[800]};\n        }\n      `\n    case 'withSpinner':\n      return css`\n        border-radius: 6px;\n        border-color: ${colors.grey[550]};\n        background: ${colors.grey[100]};\n        color: ${colors.blue[800]};\n        gap: 8px;\n      `\n    default:\n      return null\n  }\n}\n\nexport const StyledButton = styled.button<{ $view?: 'primary' | 'withSpinner' | 'outlined' }>`\n  display: flex;\n  height: 32px;\n  padding: 0 16px;\n  justify-content: center;\n  align-items: center;\n  border-radius: 6px;\n  font-size: 14px;\n  font-style: normal;\n  font-weight: 400;\n  line-height: normal;\n  border: 1px solid ${colors.blue[800]};\n  cursor: pointer;\n  min-width: 64px;\n\n  ${({ $view }) => viewStyles($view)}\n  &[disabled],\n  &[disabled]:hover {\n    cursor: not-allowed;\n    border-color: ${colors.grey[550]};\n    background: ${colors.grey[200]};\n    color: ${colors.grey[600]};\n  }\n`\n","import React from 'react'\nimport { SpinnerIcn } from '../../common/Icons'\nimport { StyledButton } from './styles'\n\nexport type ButtonViewType = 'primary' | 'withSpinner' | 'outlined'\n\ninterface Props extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n  title: string\n  view?: ButtonViewType\n  type?: 'button' | 'reset' | 'submit'\n  form?: string\n  disabled?: boolean\n  handleClick?: () => void\n}\n\nexport const Button: React.FC<Props> = ({ title, view = 'primary', handleClick, type = 'button', ...rest }) => {\n  return (\n    <StyledButton className=\"StyledButton\" $view={view} onClick={handleClick} type={type} {...rest}>\n      {view === 'withSpinner' ? SpinnerIcn({}) : title}\n    </StyledButton>\n  )\n}\n","import React, { forwardRef, useEffect, useRef } from 'react'\nimport { StyledInput, StyledTextInput, StyledTextInputLabel } from './styles'\n\ninterface Props extends React.InputHTMLAttributes<HTMLInputElement> {\n  label: string\n  id: string\n  required?: boolean\n  disabled?: boolean\n  errorMessage?: string\n  autoFocus?: boolean\n  type?: 'text' | 'number' | 'date' | 'password' | 'file'\n  min?: string | number\n}\n\nexport const TextInput = forwardRef<HTMLInputElement, Props>(({ label, min, type, id, required, errorMessage, disabled, autoFocus, ...rest }, ref) => {\n  const localRef = useRef<HTMLInputElement>(null)\n\n  useEffect(() => {\n    if (autoFocus && localRef.current) {\n      localRef.current.focus()\n    }\n  }, [autoFocus])\n\n  return (\n    <StyledTextInput className=\"StyledTextInput\">\n      <StyledTextInputLabel className=\"StyledTextInputLabel\" htmlFor={id} $required={required} $error={!!errorMessage}>\n        <span>*</span>\n        {label}\n      </StyledTextInputLabel>\n      <StyledInput\n        className=\"StyledInput\"\n        id={id}\n        name={id}\n        ref={(node) => {\n          if (typeof ref === 'function') {\n            ref(node)\n          } else if (ref) {\n            ref.current = node\n          }\n          localRef.current = node\n        }}\n        placeholder={label}\n        type={type ?? 'text'}\n        min={min}\n        {...rest}\n        $disabled={disabled}\n        $error={!!errorMessage}\n      />\n      {errorMessage && <p className=\"error\">{errorMessage}</p>}\n    </StyledTextInput>\n  )\n})\n\nTextInput.displayName = 'TextInput'\n","import styled, { css } from 'styled-components'\nimport {\n  colors,\n  errorMessageCommonStyles,\n  fieldCommonStyles,\n  inputCommonStyles,\n  inputCommonStyles_disabled,\n  inputCommonStyles_error,\n  labelCommonStyles,\n  labelCommonStyles_error,\n  labelCommonStyles_required,\n} from '../../../styles'\n\nexport const StyledTextInputLabel = styled.label<{ $required?: boolean; $error?: boolean }>`\n  ${labelCommonStyles};\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${labelCommonStyles_error}\n    `};\n  ${({ $required }) =>\n    !!$required &&\n    css`\n      ${labelCommonStyles_required}\n    `};\n`\nexport const StyledTextInput = styled.div`\n  ${fieldCommonStyles};\n\n  .error {\n    ${errorMessageCommonStyles}\n  }\n`\nexport const StyledInput = styled.input<{ $disabled?: boolean; $error?: boolean }>`\n  ${inputCommonStyles};\n\n  &::file-selector-button {\n    border-radius: 0;\n    height: 100%;\n    cursor: pointer;\n    background-color: white;\n    border: none;\n    border-right: 1px solid ${colors.grey[550]};\n    margin-right: 16px;\n    padding-right: 12px;\n    transition: background-color 200ms;\n    color: ${colors.grey[650]};\n  }\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${inputCommonStyles_error}\n      &::file-selector-button {\n        color: rgba(255, 0, 0, 0.5);\n        border-color: red;\n      }\n    `};\n  ${({ $disabled }) =>\n    !!$disabled &&\n    css`\n      ${inputCommonStyles_disabled}\n    `};\n`\n","import styled from 'styled-components'\nimport { colors, displayResolution, responsiveMediaQueries } from '../../../styles'\n\nexport const StyledCertificateUpload = styled.div`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  align-self: stretch;\n  gap: 12px;\n`\n\nexport const StyledCertificateForm = styled.form`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  align-self: stretch;\n  border-radius: 12px;\n  border: 1px solid ${colors.grey[300]};\n  background: #fff;\n  padding: 24px;\n  gap: 12px;\n\n  ${responsiveMediaQueries.down(displayResolution.l)`\n   padding: 18px;\n  `}\n  h3 {\n    color: ${colors.grey[900]};\n    font-size: 16px;\n    font-style: normal;\n    font-weight: 700;\n    line-height: normal;\n  }\n\n  .StyledCertificateUpload__inputs {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    align-self: stretch;\n    gap: 12px;\n  }\n`\n","import styled from 'styled-components'\nimport { displayResolution, responsiveMediaQueries } from '../../../styles'\n\nexport const StyledPractitionerCertificate = styled.div`\n  width: 100%;\n\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n\n  ${responsiveMediaQueries.down(displayResolution.m)`\n  width: 100%;\n    min-width: 100%;\n  `}\n`\n","import React from 'react'\nimport { Alert } from '../../common/Alert'\nimport { CertificateUploadForm } from '../CertificateUploadForm'\nimport { StyledPractitionerCertificate } from './styles'\nimport { t } from '../../../services/i18n'\nimport { GlobalStyles } from '../../../styles'\n\ninterface PractitionerCertificate {\n  certificateValid: boolean\n  certificateUploaded: boolean\n  errorWhileVerifyingCertificate: string | undefined\n  onUploadCertificate: (certificateData: ArrayBuffer, passphrase: string) => void\n  onResetCertificate: () => void\n  onDecryptCertificate: (passphrase: string) => void\n}\n\nexport const PractitionerCertificate: React.FC<PractitionerCertificate> = ({\n  certificateValid,\n  onUploadCertificate,\n  onResetCertificate,\n  onDecryptCertificate,\n  certificateUploaded,\n  errorWhileVerifyingCertificate,\n}) => {\n  return (\n    <>\n      <GlobalStyles />\n      <StyledPractitionerCertificate className=\"StyledPractitionerCertificate\">\n        {certificateValid && certificateUploaded && (\n          <Alert status=\"success\" title={t('practitioner.certificateFeedback.successTitle')} description={t('practitioner.certificateFeedback.successDescription')} />\n        )}\n\n        {!certificateValid && !certificateUploaded && (\n          <Alert status=\"error\" title={t('practitioner.certificateFeedback.failureTitle')} description={t('practitioner.certificateFeedback.failureDescription')} />\n        )}\n\n        {errorWhileVerifyingCertificate && (\n          <Alert status=\"error\" title={t('practitioner.certificateFeedback.verificationErrorTitle')} description={errorWhileVerifyingCertificate} />\n        )}\n\n        {certificateUploaded && !certificateValid && (\n          <Alert status=\"error\" title={t('practitioner.certificateUpload.passwordMissingTitle')} description={t('practitioner.certificateUpload.passwordMissingDescription')} />\n        )}\n\n        {(!certificateValid || !certificateUploaded) && (\n          <CertificateUploadForm\n            onUploadCertificate={onUploadCertificate}\n            onResetCertificate={onResetCertificate}\n            onDecryptCertificate={onDecryptCertificate}\n            certificateAlreadyUploaded={certificateUploaded}\n          />\n        )}\n      </StyledPractitionerCertificate>\n    </>\n  )\n}\n","import React, { KeyboardEvent, useEffect, useRef, useState } from 'react'\nimport { findMedicationsByLabel, PaginatedListIterator } from '../../../services/cardinal-sam'\nimport { MedicationCard } from '../MedicationCard'\nimport { InfiniteScroll } from '../../common/InfiniteScroll'\n\nimport { MedicationType } from '../../../types'\nimport { SearchIcn } from '../../common/Icons'\nimport { mergeSortedPartialArraysN } from '../../../utils/loader-helpers'\nimport { ampToMedicationTypes, nmpToMedicationTypes, vmpGroupToMedicationTypes } from '../../../services/medication-mapper'\nimport { StyledLabel, StyledMedicationSearch, StyledMedicationSearchDropdown, StyledMedicationSearchInput } from './styles'\nimport { t } from '../../../services/i18n'\nimport { GlobalStyles } from '../../../styles'\nimport { Amp, IccBesamv2Api, Nmp, VmpGroup } from '@icure/api'\n\ninterface MedicationSearchProps {\n  sdk: IccBesamv2Api\n  deliveryEnvironment: string\n  onAddPrescription: (medication: MedicationType) => void\n  disableInputEventsTracking: boolean\n  short?: boolean\n}\n\nexport const MedicationSearch: React.FC<MedicationSearchProps> = ({ sdk, deliveryEnvironment, onAddPrescription, disableInputEventsTracking, short = false }) => {\n  const [searchQuery, setSearchQuery] = useState<string>('')\n\n  const searchQueryRef = useRef(searchQuery) // Create a ref to store the state\n  useEffect(() => {\n    searchQueryRef.current = searchQuery\n  }, [searchQuery])\n\n  const [dropdownDisplayed, setDropdownDisplayed] = useState(false)\n  const [pages, setPages] = useState<MedicationType[]>([])\n  const [medications, setMedications] = useState<PaginatedListIterator<string, Amp>>()\n  const [molecules, setMolecules] = useState<PaginatedListIterator<string, VmpGroup>>()\n  const [products, setProducts] = useState<PaginatedListIterator<string, Nmp>>()\n  const [medicationsPage, setMedicationsPage] = useState<MedicationType[]>([])\n  const [moleculesPage, setMoleculesPage] = useState<MedicationType[]>([])\n  const [productsPage, setProductsPage] = useState<MedicationType[]>([])\n  const [focusedMedicationIndex, setFocusedMedicationIndex] = useState(-1)\n  const [disableHover, setDisableHover] = useState(false)\n  const resultRefs = useRef<(HTMLDivElement | null)[]>([])\n\n  useEffect(() => {\n    setFocusedMedicationIndex(0)\n  }, [])\n\n  useEffect(() => {\n    setDropdownDisplayed(!!searchQuery)\n  }, [searchQuery])\n\n  useEffect(() => {\n    if (searchQuery && searchQuery.length >= 3) {\n      const cachedQuery = searchQueryRef.current\n      setPages([])\n      setTimeout(() => {\n        if (cachedQuery === searchQueryRef.current) {\n          findMedicationsByLabel(sdk, cachedQuery).then(async ([meds, mols, prods]: any) => {\n            setMedications(meds)\n            setMolecules(mols)\n            setProducts(prods)\n            if (cachedQuery !== searchQueryRef.current) {\n              console.log(`Search query ${cachedQuery} changed before results were loaded, aborting...`)\n              return\n            }\n            const [medsPage, molsPage, prodsPage] = await Promise.all([\n              meds ? loadMedicationsPage(meds, 10) : [],\n              mols ? loadMoleculesPage(mols, 10) : [],\n              prods ? loadNonMedicinalPage(prods, 10) : [],\n            ])\n            if (cachedQuery !== searchQueryRef.current) {\n              console.log(`Search query ${cachedQuery} changed before results were loaded, aborting...`)\n              return\n            }\n            setMedicationsPage(medsPage)\n            setMoleculesPage(molsPage)\n            setProductsPage(prodsPage)\n            loadMore({ medicationsPage: medsPage, moleculesPage: molsPage, productsPage: prodsPage }).then((result) => {\n              if (cachedQuery === searchQueryRef.current) {\n                console.log(`Search query ${cachedQuery} results loaded, setting pages...`)\n                setPages(result)\n              } else {\n                console.log(`Search query ${cachedQuery} changed before results were loaded, aborting...`)\n              }\n            })\n          })\n        } else {\n          console.log(`Search query ${cachedQuery} changed before results were loaded, aborting...`)\n        }\n      }, 100)\n    }\n    // eslint-disable-next-line\n  }, [searchQuery, searchQueryRef, sdk])\n\n  // Implementations based on Svelte logic:\n  async function loadMedicationsPage(medications: PaginatedListIterator<string, Amp>, min: number, acc: MedicationType[] = []): Promise<MedicationType[]> {\n    const page: MedicationType[] = (!(await medications.hasNext()) ? [] : await medications.next(min)).flatMap((amp: Amp) => ampToMedicationTypes(amp, deliveryEnvironment))\n    return (!(await medications.hasNext()) ? [] : await medications.next(min)).length < min || page.length + acc.length >= min\n      ? [...acc, ...page]\n      : await loadMedicationsPage(medications, min, [...acc, ...page])\n  }\n\n  async function loadMoleculesPage(molecules: PaginatedListIterator<string, VmpGroup>, min: number, acc: MedicationType[] = []): Promise<MedicationType[]> {\n    const page = (!(await molecules.hasNext()) ? [] : await molecules.next(min)).flatMap((vmp: VmpGroup) => vmpGroupToMedicationTypes(vmp))\n    return page.length < min || page.length + acc.length >= min ? [...acc, ...page] : await loadMoleculesPage(molecules, min, [...acc, ...page])\n  }\n\n  async function loadNonMedicinalPage(products: PaginatedListIterator<string, Nmp>, min: number, acc: MedicationType[] = []): Promise<MedicationType[]> {\n    const page = (!(await products.hasNext()) ? [] : await products.next(min)).flatMap((nmp: Nmp) => nmpToMedicationTypes(nmp))\n    return (!(await products.hasNext()) ? [] : await products.next(min)).length < min || page.length + acc.length >= min\n      ? [...acc, ...page]\n      : await loadNonMedicinalPage(products, min, [...acc, ...page])\n  }\n\n  const loadUntil = async (toName: string | undefined, loadPage: () => Promise<MedicationType[]>) => {\n    let page = await loadPage()\n    const lcToName = toName?.toLowerCase()\n    while (page.length && (!lcToName || page[page.length - 1].title.toLowerCase() < lcToName)) {\n      const newPage = await loadPage()\n      if (!newPage.length) {\n        break\n      }\n      page = [...page, ...newPage]\n    }\n    return page\n  }\n\n  const loadMore = async ({\n    medicationsPage,\n    moleculesPage,\n    productsPage,\n  }: {\n    medicationsPage: MedicationType[]\n    moleculesPage: MedicationType[]\n    productsPage: MedicationType[]\n  }) => {\n    const [result, pointers] = await mergeSortedPartialArraysN(\n      10,\n      [[...medicationsPage], [...moleculesPage], [...productsPage]],\n      [\n        async (_, toName) => {\n          const loaded = await loadUntil(toName, () => (medications ? loadMedicationsPage(medications, 10) : Promise.resolve([])))\n          setMedicationsPage((medicationsPage) => [...medicationsPage, ...loaded])\n          return loaded\n        },\n        async (_, toName) => {\n          const loaded = await loadUntil(toName, () => (molecules ? loadMoleculesPage(molecules, 10) : Promise.resolve([])))\n          setMoleculesPage((moleculesPage) => [...moleculesPage, ...loaded])\n          return loaded\n        },\n        async (_, toName) => {\n          const loaded = await loadUntil(toName, () => (products ? loadNonMedicinalPage(products, 10) : Promise.resolve([])))\n          setProductsPage((productsPage) => [...productsPage, ...loaded])\n          return loaded\n        },\n      ],\n    )\n\n    setMedicationsPage(medicationsPage.slice(pointers[0]))\n    setMoleculesPage(moleculesPage.slice(pointers[1]))\n    setProductsPage(productsPage.slice(pointers[2]))\n\n    return result\n  }\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n    if (disableInputEventsTracking) return\n    const totalPagesLength = pages.length\n    const defaultActions = () => {\n      event.preventDefault()\n      setDisableHover(true)\n    }\n    if (event.key === 'ArrowDown') {\n      defaultActions()\n      setFocusedMedicationIndex((prev) => (prev + 1) % totalPagesLength)\n      scrollToFocusedItem((focusedMedicationIndex + 1) % totalPagesLength)\n    } else if (event.key === 'ArrowUp') {\n      defaultActions()\n      setFocusedMedicationIndex((prev) => (prev - 1 + totalPagesLength) % totalPagesLength)\n      scrollToFocusedItem((focusedMedicationIndex - 1 + totalPagesLength) % totalPagesLength)\n    } else if (event.key === 'Enter' && focusedMedicationIndex >= 0) {\n      event.preventDefault()\n      setDisableHover(false)\n      onAddPrescription(pages[focusedMedicationIndex])\n      setSearchQuery('')\n    }\n  }\n\n  const scrollToFocusedItem = (index: number) => {\n    if (index >= 0 && resultRefs.current[index]) {\n      resultRefs.current[index]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n    }\n  }\n\n  const handleMouseMove = () => {\n    if (!disableInputEventsTracking) setDisableHover(false)\n  }\n\n  const showSearchError = () => {\n    const value = searchQuery?.trim()\n    return !!value && value.length < 3\n  }\n\n  const handleAddPrescription = (medication: MedicationType) => {\n    onAddPrescription(medication)\n    setSearchQuery('')\n  }\n\n  return (\n    <>\n      <GlobalStyles />\n      <StyledMedicationSearch\n        className=\"StyledMedicationSearch\"\n        onKeyDown={handleKeyDown}\n        aria-activedescendant={focusedMedicationIndex >= 0 ? `result-${focusedMedicationIndex}` : undefined}\n      >\n        <StyledMedicationSearchInput className=\"StyledMedicationSearchInput\" $dropdownDisplayed={dropdownDisplayed} $error={showSearchError()}>\n          <p>{t('medication.search.label')}:</p>\n          <StyledLabel className=\"StyledLabel\" $error={showSearchError()} htmlFor=\"searchMedications\">\n            <input\n              id=\"searchMedications\"\n              type=\"text\"\n              placeholder={t('medication.search.label')}\n              autoComplete=\"off\"\n              autoCapitalize=\"off\"\n              value={searchQuery}\n              onChange={(e) => setSearchQuery(e.target.value)}\n            />\n            <SearchIcn />\n          </StyledLabel>\n          {showSearchError() && <p className=\"error\">{t('medication.search.errorMessage')}</p>}\n        </StyledMedicationSearchInput>\n\n        {pages.length !== 0 && dropdownDisplayed && (\n          <StyledMedicationSearchDropdown className=\"medicationSearchDropdown\" onMouseMove={handleMouseMove}>\n            {pages.map((medication, index) => (\n              <div key={index} ref={(el) => (resultRefs.current[index] = el)} className=\"medicationCardWrap\">\n                <MedicationCard\n                  medication={medication}\n                  handleAddPrescription={handleAddPrescription}\n                  id={`result-${index}`}\n                  focused={focusedMedicationIndex === index}\n                  disableHover={disableHover}\n                  short={short}\n                />\n              </div>\n            ))}\n            <InfiniteScroll\n              threshold={50}\n              loadMore={() =>\n                loadMore({\n                  medicationsPage,\n                  moleculesPage,\n                  productsPage,\n                }).then((results) => setPages([...pages, ...results]))\n              }\n            />\n          </StyledMedicationSearchDropdown>\n        )}\n      </StyledMedicationSearch>\n    </>\n  )\n}\n","import React, { useState } from 'react'\nimport type { MedicationType } from '../../../types'\nimport { Header } from './medication-card-elements/Header'\nimport { Extension } from './medication-card-elements/Extension'\nimport { StyledMedicationCard } from './styles'\n\ninterface MedicationCardProps {\n  medication: MedicationType\n  handleAddPrescription: (medication: MedicationType) => void\n  id: string\n  focused?: boolean\n  disableHover?: boolean\n  short?: boolean\n}\n\nexport const MedicationCard: React.FC<MedicationCardProps> = ({ medication, handleAddPrescription, id, focused, disableHover }) => {\n  const [isExpanded, setIsExpanded] = useState(false)\n\n  return (\n    <StyledMedicationCard className=\"StyledMedicationCard\" $focused={focused} $isExpanded={isExpanded} $disableHover={disableHover} id={id}>\n      {/*TODO: the medication must be past to the handleAddPrescription function on upper level*/}\n      <Header\n        handleAddPrescription={() => handleAddPrescription(medication)}\n        medication={medication}\n        isMedicationCardExpanded={isExpanded}\n        setMedicationCardExpanded={(status: boolean) => setIsExpanded(status)}\n      />\n      {isExpanded && <Extension medication={medication} />}\n    </StyledMedicationCard>\n  )\n}\n","import React, { ReactNode, RefObject, useState } from 'react'\nimport { StyleTooltip } from './styles'\n\nexport type TooltipOrientationType = 'tr' | 'br' | 'tl' | 'bl'\n\ninterface TooltipProps {\n  content?: string\n  contentSnippet?: ReactNode\n  iconSnippet: ReactNode\n  orientation?: TooltipOrientationType\n  boundaryBox?: RefObject<HTMLElement>\n}\n\nexport const Tooltip: React.FC<TooltipProps> = ({ content, contentSnippet, iconSnippet, orientation = 'bl', boundaryBox }) => {\n  const [active, setActive] = useState(false)\n  const [tooltipOrientation, setTooltipOrientation] = useState(orientation)\n  const tooltipRef = React.useRef<HTMLDivElement>(null)\n\n  const repositionTooltip = (boundaryBox: RefObject<HTMLElement> | undefined) => {\n    const tooltipElement = tooltipRef?.current\n    const boundaryBoxElement = boundaryBox?.current\n\n    if (!tooltipElement || !boundaryBoxElement) return\n\n    const tooltipRect = tooltipElement.getBoundingClientRect()\n    const boundaryBoxRect = boundaryBoxElement.getBoundingClientRect()\n    const widthOfTooltipPopUp = 300\n\n    // By default, we don't set up top origination, bcs it's not unfriendly\n    if (boundaryBoxRect.right - tooltipRect.right > widthOfTooltipPopUp) {\n      setTooltipOrientation('bl')\n    } else if (boundaryBoxRect.right - tooltipRect.right < widthOfTooltipPopUp || boundaryBoxRect.right - tooltipRect.right === widthOfTooltipPopUp) {\n      setTooltipOrientation('br')\n    }\n  }\n\n  return (\n    <StyleTooltip\n      className=\"StyleTooltip\"\n      ref={tooltipRef}\n      $tooltipOrientation={tooltipOrientation}\n      $active={active}\n      onMouseEnter={() => {\n        repositionTooltip(boundaryBox)\n        setActive(true)\n      }}\n      onMouseLeave={() => setActive(false)}\n    >\n      <div className=\"icon\">{iconSnippet}</div>\n      <div className=\"chevron\"></div>\n      <div className=\"popup\">\n        <div className=\"popup__iconWrap\">\n          <div className=\"popup__icon\">{iconSnippet}</div>\n        </div>\n        {!!content && <p>{content}</p>}\n        {!!contentSnippet && contentSnippet}\n      </div>\n    </StyleTooltip>\n  )\n}\n","import { TooltipOrientationType } from './index'\nimport styled, { css } from 'styled-components'\nimport { colors } from '../../../styles'\n\nexport const tooltipArrow = css`\n  content: '';\n  width: 0;\n  height: 0;\n  border-left: 7px solid transparent;\n  border-right: 7px solid transparent;\n`\nexport const tooltipTopOriented = css`\n  .chevron {\n    display: none;\n    ${tooltipArrow};\n    border-top: 7px solid ${colors.blue[500]};\n    position: absolute;\n    bottom: 23px;\n    left: 50%;\n    transform: translate(-50%, 0);\n  }\n\n  .popup {\n    bottom: 28px;\n  }\n`\nexport const tooltipBottomOriented = css`\n  .chevron {\n    display: none;\n    ${tooltipArrow};\n    border-bottom: 7px solid ${colors.blue[500]};\n    position: absolute;\n    bottom: -8px;\n    left: 50%;\n    transform: translate(-50%, 0);\n  }\n\n  .popup {\n    top: 30px;\n  }\n`\nexport const tooltipRightOriented = css`\n  .chevron {\n    right: 50%;\n  }\n\n  .popup {\n    // Half width of the chevron\n    right: -7px;\n  }\n`\nexport const tooltipLeftOriented = css`\n  .popup {\n    // Half width of the chevron\n    left: -7px;\n  }\n`\n\nconst tooltipOrientationStyles = ($tooltipOrientation: TooltipOrientationType) => {\n  switch ($tooltipOrientation) {\n    case 'tr':\n      return css`\n        ${tooltipTopOriented};\n        ${tooltipRightOriented};\n      `\n    case 'tl':\n      return css`\n        ${tooltipTopOriented};\n        ${tooltipLeftOriented};\n      `\n    case 'br':\n      return css`\n        ${tooltipBottomOriented};\n        ${tooltipRightOriented};\n      `\n    case 'bl':\n      return css`\n        ${tooltipBottomOriented};\n        ${tooltipLeftOriented};\n      `\n    default:\n      return null\n  }\n}\n\nexport const StyleTooltip = styled.div<{ $tooltipOrientation: TooltipOrientationType; $active?: boolean }>`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  position: relative;\n  width: min-content;\n  cursor: pointer;\n\n  ${({ $tooltipOrientation }) => tooltipOrientationStyles($tooltipOrientation)};\n\n  &:hover {\n    .chevron {\n      display: flex;\n    }\n  }\n\n  .icon {\n    height: 22px;\n    display: flex;\n    align-items: center;\n    z-index: 10;\n  }\n\n  .popup {\n    display: none;\n    position: absolute;\n    z-index: 15;\n    min-height: 32px;\n    min-width: 300px;\n    padding: 8px;\n    flex-direction: column;\n    justify-content: center;\n    align-items: flex-start;\n    gap: 6px;\n    align-self: stretch;\n    border-radius: 6px;\n    border: 1px solid ${colors.blue[500]};\n    background: #fff;\n\n    &__iconWrap {\n      width: 100%;\n      display: flex;\n      align-items: flex-start;\n      justify-content: flex-start;\n      border-bottom: 1px solid ${colors.blue[500]};\n      padding-bottom: 6px;\n    }\n\n    &__icon {\n      display: flex;\n      min-width: 22px;\n      height: 22px;\n      justify-content: center;\n      align-items: center;\n      border-radius: 16px;\n    }\n\n    p {\n      color: ${colors.grey[900]};\n      font-size: 14px;\n      font-style: normal;\n      font-weight: 400;\n      line-height: normal;\n    }\n  }\n\n  ${({ $active }) =>\n    !!$active &&\n    css`\n      .popup {\n        display: flex;\n      }\n    `};\n`\n","import styled from 'styled-components'\nimport {\n  infographicElementCommonStyles,\n  infographicElementContentCommonStyles,\n  infographicElementLinkCommonStyles,\n  infographicElementTextCommonStyles,\n} from '../../../../../styles'\n\nexport const StyledRmaLink = styled.div`\n  ${infographicElementCommonStyles};\n\n  .content {\n    ${infographicElementContentCommonStyles};\n\n    p {\n      ${infographicElementTextCommonStyles};\n    }\n\n    a {\n      ${infographicElementLinkCommonStyles};\n    }\n  }\n`\n","import React, { FC } from 'react'\nimport { StyledRmaLink } from './styles'\nimport { t } from '../../../../../services/i18n'\n\ninterface Props {\n  rmaProfessionalLink: string\n  rmakeyMessages?: string\n}\n\nexport const RmaProfessionalLinkContent: FC<Props> = ({ rmaProfessionalLink, rmakeyMessages }) => {\n  return (\n    <StyledRmaLink className=\"StyledRmaLink\">\n      <div className=\"content\">\n        {!!rmakeyMessages && <p>{rmakeyMessages}</p>}\n        <a href={rmaProfessionalLink}>{t('medication.links.rma')}</a>\n      </div>\n    </StyledRmaLink>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledSupplyProblems = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.orange[800]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import React, { FC } from 'react'\nimport { SupplyProblem } from '@icure/api'\nimport { formatTimestamp } from '../../../../../utils/date-helpers'\nimport { getSamTextTranslation, t } from '../../../../../services/i18n'\nimport { StyledSupplyProblems } from './styles'\n\ninterface Props {\n  medicationSupplyProblem: SupplyProblem\n}\n\nexport const SupplyProblemsContent: FC<Props> = ({ medicationSupplyProblem }) => {\n  return (\n    <StyledSupplyProblems className=\"StyledSupplyProblems\">\n      <h6>{t('medication.supply.issueTitle')}</h6>\n      <div className=\"content\">\n        {medicationSupplyProblem.from && (\n          <div>\n            <span>{t('medication.supply.startDate')}</span>\n            <p>{formatTimestamp(medicationSupplyProblem.from)}</p>\n          </div>\n        )}\n        {medicationSupplyProblem.expectedEndOn && (\n          <div>\n            <span>{t('medication.supply.expectedEndDate')}</span>\n            <p>{formatTimestamp(medicationSupplyProblem.expectedEndOn)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationSupplyProblem.reason) && (\n          <div>\n            <span>{t('medication.supply.reason')}</span>\n            <p>{getSamTextTranslation(medicationSupplyProblem.reason)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationSupplyProblem.impact) && (\n          <div>\n            <span>{t('medication.supply.impact')}</span>\n            <p>{getSamTextTranslation(medicationSupplyProblem.impact)}</p>\n          </div>\n        )}\n        {medicationSupplyProblem.impact?.fr === 'Importation possible par le pharmacien' && (\n          <div>\n            <span>{t('medication.supply.prescriberNote')}</span>\n            <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.afmps.be/sites/default/files/content/INSP/NARC/declaration-medecin.pdf\">\n              {t('medication.supply.downloadPdf')}\n            </a>\n          </div>\n        )}\n        {getSamTextTranslation(medicationSupplyProblem.additionalInformation) && (\n          <div>\n            <span>{t('medication.supply.extraInfo')}</span>\n            {getSamTextTranslation(medicationSupplyProblem.additionalInformation)\n              .split('\\n')\n              .map((line, idx) => (\n                <p key={idx}>{line}</p>\n              ))}\n          </div>\n        )}\n      </div>\n    </StyledSupplyProblems>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledEndCommercialization = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.red[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import { getSamTextTranslation, t } from '../../../../../services/i18n'\nimport { formatTimestamp } from '../../../../../utils/date-helpers'\nimport React, { FC } from 'react'\nimport { Commercialization } from '@icure/api'\nimport { StyledEndCommercialization } from './styles'\n\ninterface Props {\n  medicationCommercialization: Commercialization\n}\n\nexport const EndOfCommercialisationContent: FC<Props> = ({ medicationCommercialization }) => {\n  return (\n    <StyledEndCommercialization className=\"StyledEndCommercialization\">\n      <h6>{t('medication.commercialization.end')}</h6>\n      <div className=\"content\">\n        {medicationCommercialization.from && (\n          <div>\n            <span>{t('medication.commercialization.limitedAvailabilityFrom')}</span>\n            <p>{formatTimestamp(medicationCommercialization.from)}</p>\n          </div>\n        )}\n        {medicationCommercialization.to && (\n          <div>\n            <span>{t('medication.commercialization.end')}</span>\n            <p>{formatTimestamp(medicationCommercialization.to)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationCommercialization.endOfComercialization) && (\n          <div>\n            <span>{t('medication.commercialization.unavailableFrom')}</span>\n            <p>{getSamTextTranslation(medicationCommercialization.endOfComercialization)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationCommercialization.reason) && (\n          <div>\n            <span>{t('medication.commercialization.endReason')}</span>\n            <p>{getSamTextTranslation(medicationCommercialization.reason)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationCommercialization.impact) && (\n          <div>\n            <span>{t('medication.commercialization.endImpact')}</span>\n            <p>{getSamTextTranslation(medicationCommercialization.impact)}</p>\n          </div>\n        )}\n        {getSamTextTranslation(medicationCommercialization.additionalInformation) && (\n          <div>\n            <span>{t('medication.commercialization.endAdditionalInformation')}</span>\n            {getSamTextTranslation(medicationCommercialization.additionalInformation)\n              .split('\\n')\n              .map((line, idx) => (\n                <p key={idx}>{line}</p>\n              ))}\n          </div>\n        )}\n      </div>\n    </StyledEndCommercialization>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledStartCommercialization = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.green[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import { t } from '../../../../../services/i18n'\nimport { formatTimestamp } from '../../../../../utils/date-helpers'\nimport React, { FC } from 'react'\nimport { Commercialization } from '@icure/api'\nimport { StyledStartCommercialization } from './styles'\n\ninterface Props {\n  medicationCommercialization: Commercialization\n}\n\nexport const StartOfCommercialisationContent: FC<Props> = ({ medicationCommercialization }) => {\n  return (\n    <StyledStartCommercialization className=\"StyledStartCommercialization\">\n      <h6>{t('medication.commercialization.start')}</h6>\n      <div className=\"content\">\n        {medicationCommercialization.from && (\n          <div>\n            <span>{t('medication.commercialization.startAvailableFrom')}</span>\n            <p>{formatTimestamp(medicationCommercialization.from)}</p>\n          </div>\n        )}\n      </div>\n    </StyledStartCommercialization>\n  )\n}\n","import { Medication } from '@icure/be-fhc-lite-api'\nimport { ReimbursementType } from '../types'\nimport { t } from '../services/i18n'\n\nexport const getReimbursementOptions = (): { value: ReimbursementType; label: string }[] => [\n  {\n    value: null,\n    label: t('reimbursementHelper.practitionerSelectionOptions.none'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.PAYINGTHIRDPARTY,\n    label: t('reimbursementHelper.practitionerSelectionOptions.PAYINGTHIRDPARTY'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.FIRSTDOSE,\n    label: t('reimbursementHelper.practitionerSelectionOptions.FIRSTDOSE'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.SECONDDOSE,\n    label: t('reimbursementHelper.practitionerSelectionOptions.SECONDDOSE'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.THIRDDOSE,\n    label: t('reimbursementHelper.practitionerSelectionOptions.THIRDDOSE'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.CHRONICKINDEYDISEASE,\n    label: t('reimbursementHelper.practitionerSelectionOptions.CHRONICKINDEYDISEASE'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.DIABETESTREATMENT,\n    label: t('reimbursementHelper.practitionerSelectionOptions.DIABETESTREATMENT'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.DIABETESCONVENTION,\n    label: t('reimbursementHelper.practitionerSelectionOptions.DIABETESCONVENTION'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.NOTREIMBURSABLE,\n    label: t('reimbursementHelper.practitionerSelectionOptions.NOTREIMBURSABLE'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.EXPLAINMEDICATION,\n    label: t('reimbursementHelper.practitionerSelectionOptions.EXPLAINMEDICATION'),\n  },\n  {\n    value: Medication.InstructionsForReimbursementEnum.DIABETESSTARTPATH,\n    label: t('reimbursementHelper.practitionerSelectionOptions.DIABETESSTARTPATH'),\n  },\n]\n\nexport function getCategoryLabelForReimbursement(code: string | undefined): string {\n  if (!code) return ''\n  return t(`reimbursementHelper.categoryOptions.${code}`) || code\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledReimbursement = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.green[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import React, { FC } from 'react'\nimport { Reimbursement } from '@icure/api'\nimport { getSamTextTranslation, t } from '../../../../../services/i18n'\nimport { getCategoryLabelForReimbursement } from '../../../../../utils/reimbursement-helpers'\nimport { StyledReimbursement } from './styles'\n\ninterface Props {\n  reimbursement?: Reimbursement\n}\n\nexport const ReimbursementsContent: FC<Props> = ({ reimbursement }) => {\n  const computeFeeAmount = (fee: string): string => Math.round(+fee * 100) / 100 + '€'\n\n  return reimbursement ? (\n    <StyledReimbursement className=\"StyledReimbursement\">\n      <h6> {t('medication.reimbursement.title')}</h6>\n      <div className=\"content\">\n        {reimbursement.reimbursementCriterion?.category && (\n          <>\n            <div>\n              <span>{t('medication.reimbursement.category')}</span>\n              <p>{reimbursement.reimbursementCriterion?.category}</p>\n            </div>\n\n            <div>\n              <span>{t('medication.reimbursement.categoryLabel')}</span>\n              <p>{getCategoryLabelForReimbursement(reimbursement.reimbursementCriterion?.category)}</p>\n            </div>\n          </>\n        )}\n        {reimbursement.copayments &&\n          reimbursement.copayments.map((el, index) => {\n            return (\n              <div key={index}>\n                {el.regimeType === 1 && (\n                  <span>\n                    {t('medication.reimbursement.copay')}\n                    <strong>{t('medication.reimbursement.copayPreferential')}</strong>\n                  </span>\n                )}\n\n                {el.regimeType === 2 && (\n                  <span>\n                    {t('medication.reimbursement.copay')} <strong>{t('medication.reimbursement.copayActive')}</strong>\n                  </span>\n                )}\n\n                {el.feeAmount && <p className=\"feeAmount\">{computeFeeAmount(el.feeAmount)}</p>}\n              </div>\n            )\n          })}\n        {reimbursement.temporary && (\n          <div>\n            <span>{t('medication.reimbursement.temporary')}</span>\n            <p className=\"textRed\">{reimbursement.temporary}</p>\n          </div>\n        )}\n        {getSamTextTranslation(reimbursement.reimbursementCriterion?.description) && (\n          <div>\n            <span>{t('medication.reimbursement.chapter')}</span>\n            <p>{getSamTextTranslation(reimbursement.reimbursementCriterion?.description)}</p>\n          </div>\n        )}\n      </div>\n    </StyledReimbursement>\n  ) : (\n    <div className=\"supplyProblemsTooltip\">\n      <p className=\" title  title--green\">Conditions de prescription</p>\n      <div className=\" content\">\n        <div>\n          <p>Not applicable</p>\n        </div>\n      </div>\n    </div>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledDeliveryConditions = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.orange[800]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n\nexport const StyledDeliveryConditionsNotApplicable = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.green[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import React, { FC } from 'react'\nimport { t } from '../../../../../services/i18n'\nimport { StyledDeliveryConditions, StyledDeliveryConditionsNotApplicable } from './styles'\n\ninterface Props {\n  deliveryModusCode?: string\n  deliveryModusSpecification?: string\n  deliveryModus?: string\n}\n\nexport const DeliveryConditionsContent: FC<Props> = ({ deliveryModusCode, deliveryModus, deliveryModusSpecification }) => {\n  return deliveryModusCode ? (\n    <StyledDeliveryConditions className=\"StyledDeliveryConditions\">\n      <h6>{t('medication.delivery.title')}</h6>\n      <div className=\"content\">\n        {deliveryModusCode && (\n          <div>\n            <span>{t('medication.delivery.code')}</span>\n            <p>{deliveryModusCode}</p>\n          </div>\n        )}\n\n        {deliveryModus && (\n          <div>\n            <span>{t('medication.delivery.modus')}</span>\n            <p>{deliveryModus}</p>\n          </div>\n        )}\n\n        {deliveryModusSpecification && (\n          <div>\n            <span>{t('medication.delivery.specification')}</span>\n            <p>{deliveryModusSpecification}</p>\n          </div>\n        )}\n      </div>\n    </StyledDeliveryConditions>\n  ) : (\n    <StyledDeliveryConditionsNotApplicable className=\"StyledDeliveryConditionsNotApplicable\">\n      <h6>{t('medication.delivery.title')}</h6>\n      <div className=\"content\">\n        <div>\n          <p>{t('medication.delivery.notApplicable')}</p>\n        </div>\n      </div>\n    </StyledDeliveryConditionsNotApplicable>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, infographicElementCommonStyles, infographicElementContentCommonStyles, infographicElementTitleCommonStyles } from '../../../../../styles'\n\nexport const StyledPrescriptionConditions = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.red[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n\nexport const StyledPrescriptionConditionsNotApplicable = styled.div`\n  ${infographicElementCommonStyles};\n\n  h6 {\n    ${infographicElementTitleCommonStyles};\n    background-color: ${colors.green[400]};\n  }\n\n  .content {\n    ${infographicElementContentCommonStyles}\n  }\n`\n","import React, { FC } from 'react'\nimport { StyledPrescriptionConditions, StyledPrescriptionConditionsNotApplicable } from './styles'\nimport { t } from '../../../../../services/i18n'\n\ninterface Props {\n  deliveryModusSpecificationCode: string\n  deliveryModusSpecification?: string\n}\n\nexport const PrescriptionConditionsContent: FC<Props> = ({ deliveryModusSpecificationCode, deliveryModusSpecification }) => {\n  return deliveryModusSpecificationCode ? (\n    <StyledPrescriptionConditions className=\"StyledPrescriptionConditions\">\n      <h6>{t('medication.prescription.title')}</h6>\n      <div className=\"content\">\n        <div>\n          <span>{t('medication.delivery.code')}</span>\n          <p>{deliveryModusSpecificationCode}</p>\n        </div>\n\n        {deliveryModusSpecification && (\n          <div>\n            <span>{t('medication.delivery.specification')}</span>\n            <p>{deliveryModusSpecification}</p>\n          </div>\n        )}\n      </div>\n    </StyledPrescriptionConditions>\n  ) : (\n    <StyledPrescriptionConditionsNotApplicable className=\"StyledPrescriptionConditionsNotApplicable\">\n      <h6>{t('medication.prescription.title')}</h6>\n      <div className=\"content\">\n        <div>\n          <p>{t('medication.delivery.notApplicable')}</p>\n        </div>\n      </div>\n    </StyledPrescriptionConditionsNotApplicable>\n  )\n}\n","import { Tooltip } from '../../../../common/Tooltip'\nimport {\n  BlackTriangleIcn,\n  ChevronIcn,\n  EndOfCommercialisationIcn,\n  LeafIcn,\n  MoleculeIcn,\n  OrangeTriangleIcn,\n  PillsBottleIcn,\n  PrescriptionIcn,\n  SolidPillIcn,\n  StartOfCommercialisationIcn,\n  SupplyIcn,\n} from '../../../../common/Icons'\nimport { RmaProfessionalLinkContent } from '../../infographic-elements/RmaProfessionalLinkContent'\nimport { SupplyProblemsContent } from '../../infographic-elements/SupplyProblemsContent'\nimport { EndOfCommercialisationContent } from '../../infographic-elements/EndOfCommercialisationContent'\nimport { StartOfCommercialisationContent } from '../../infographic-elements/StartOfCommercialisationContent'\nimport { ReimbursementsContent } from '../../infographic-elements/ReimbursementsContent'\nimport { DeliveryConditionsContent } from '../../infographic-elements/DeliveryConditionsContent'\nimport { PrescriptionConditionsContent } from '../../infographic-elements/PrescriptionConditionsContent'\nimport React, { FC, useRef } from 'react'\nimport type { MedicationType } from '../../../../../types'\nimport { t } from '../../../../../services/i18n'\nimport { StyledExpandButton, StyledHeader, StyledTextToIcon } from './styles'\n\ninterface Props {\n  handleAddPrescription: () => void\n  medication: MedicationType\n  isMedicationCardExpanded: boolean\n  setMedicationCardExpanded: (status: boolean) => void\n}\n\nexport const Header: FC<Props> = ({ handleAddPrescription, medication, isMedicationCardExpanded, setMedicationCardExpanded }) => {\n  const medicationCardRef = useRef<HTMLDivElement>(null)\n  const medicationCommercialization = medication.commercializations?.[0]\n  const medicationSupplyProblem = medication.supplyProblems?.[0]\n  const medicationReimbursement = medication.reimbursements\n\n  const getSpecialRegulation = (code?: number) => {\n    switch (code) {\n      case 1:\n        return t('medication.drugSpecialRegulation.noNarcoticRegulation')\n      case 2:\n        return t('medication.drugSpecialRegulation.narcoticRegulation')\n      default:\n        return t('medication.drugSpecialRegulation.noSpecialRegulation')\n    }\n  }\n\n  const ReimbursementIcn = () => (\n    <StyledTextToIcon className=\"StyledTextToIcon\" $color={'green'}>\n      <p>{medicationReimbursement.reimbursementCriterion?.category}</p>\n    </StyledTextToIcon>\n  )\n  const DeliveryConditionsIcn = () => (\n    <StyledTextToIcon className=\"StyledTextToIcon\" $color={'orange'}>\n      <p>{medication.deliveryModusCode}</p>\n    </StyledTextToIcon>\n  )\n  const PrescriptionConditionsIcn = () => (\n    <StyledTextToIcon className=\"StyledTextToIcon\" $color={'red'}>\n      <p>{medication.deliveryModusSpecificationCode}</p>\n    </StyledTextToIcon>\n  )\n  const NonApplicableIcn = ({ text, colorGrey }: { text: string; colorGrey?: boolean }) => (\n    <StyledTextToIcon className=\"StyledTextToIcon\" $color={colorGrey ? 'grey' : 'green'}>\n      <p>{text}</p>\n    </StyledTextToIcon>\n  )\n\n  return (\n    <StyledHeader className=\"StyledHeader\" ref={medicationCardRef}>\n      <div\n        className=\"medication\"\n        onClick={handleAddPrescription}\n        role=\"button\"\n        tabIndex={0}\n        onKeyDown={(event) => {\n          if (event.key === 'Enter') handleAddPrescription()\n        }}\n      >\n        <div className=\"medication__content\">\n          <div className=\"medication__content__heading\">\n            <div className=\"medication__content__heading__title\">\n              {medication.ampId ? (\n                <Tooltip content={t('medication.drugType.medication')} iconSnippet={<SolidPillIcn />} boundaryBox={medicationCardRef} />\n              ) : medication.nmpId ? (\n                <Tooltip content={t('medication.drugType.homologation')} iconSnippet={<LeafIcn />} boundaryBox={medicationCardRef} />\n              ) : medication.vmpGroupId ? (\n                <Tooltip content={t('medication.drugType.molecule')} iconSnippet={<MoleculeIcn />} boundaryBox={medicationCardRef} />\n              ) : null}\n\n              <h3>{medication.title}</h3>\n\n              <div className=\"medication__content__heading__infographics\">\n                <div className=\"medicationInfographics\">\n                  {medication.blackTriangle && (\n                    <div className=\"medicationInfographics__item\">\n                      <Tooltip content={t('medication.drugInfographic.blackTriangle')} iconSnippet={<BlackTriangleIcn />} boundaryBox={medicationCardRef} />\n                    </div>\n                  )}\n                  {medication.rmaProfessionalLink && (\n                    <div className=\"medicationInfographics__item\">\n                      <Tooltip\n                        contentSnippet={<RmaProfessionalLinkContent rmaProfessionalLink={medication.rmaProfessionalLink} rmakeyMessages={medication.rmakeyMessages} />}\n                        iconSnippet={<OrangeTriangleIcn />}\n                        boundaryBox={medicationCardRef}\n                      />\n                    </div>\n                  )}\n                  {medication.speciallyRegulated && (\n                    <div className=\"medicationInfographics__item\">\n                      <Tooltip content={getSpecialRegulation(medication.speciallyRegulated)} iconSnippet={<PillsBottleIcn />} boundaryBox={medicationCardRef} />\n                    </div>\n                  )}\n                  {medication.genericPrescriptionRequired && (\n                    <div className=\"medicationInfographics__item\">\n                      <Tooltip content={t('medication.drugInfographic.genericPrescriptionRequired')} iconSnippet={<PrescriptionIcn />} boundaryBox={medicationCardRef} />\n                    </div>\n                  )}\n                </div>\n                <div className=\"medicationAvailabilityInfographics\">\n                  {medicationSupplyProblem && (\n                    <div className=\"medicationAvailabilityInfographics__item medicationAvailabilityInfographics__item--orange\">\n                      <Tooltip\n                        contentSnippet={<SupplyProblemsContent medicationSupplyProblem={medicationSupplyProblem} />}\n                        iconSnippet={<SupplyIcn />}\n                        boundaryBox={medicationCardRef}\n                      />\n                    </div>\n                  )}\n                  {medicationCommercialization?.endOfComercialization && (\n                    <div className=\"medicationAvailabilityInfographics__item medicationAvailabilityInfographics__item--red\">\n                      <Tooltip\n                        contentSnippet={<EndOfCommercialisationContent medicationCommercialization={medicationCommercialization} />}\n                        iconSnippet={<EndOfCommercialisationIcn />}\n                        boundaryBox={medicationCardRef}\n                      />\n                    </div>\n                  )}\n                  {medicationCommercialization && !medicationCommercialization?.endOfComercialization && (\n                    <div className=\"medicationAvailabilityInfographics__item medicationAvailabilityInfographics__item--green\">\n                      <Tooltip\n                        contentSnippet={<StartOfCommercialisationContent medicationCommercialization={medicationCommercialization} />}\n                        iconSnippet={<StartOfCommercialisationIcn />}\n                        boundaryBox={medicationCardRef}\n                      />\n                    </div>\n                  )}\n                </div>\n                <div className=\"deliveryPrescriptionConditions\">\n                  {medicationReimbursement && <Tooltip contentSnippet={<ReimbursementsContent reimbursement={medication.reimbursements} />} iconSnippet={<ReimbursementIcn />} />}\n                  {medication.deliveryModusCode && (\n                    <Tooltip\n                      contentSnippet={\n                        <DeliveryConditionsContent\n                          deliveryModus={medication.deliveryModus}\n                          deliveryModusSpecification={medication.deliveryModusSpecification}\n                          deliveryModusCode={medication.deliveryModusCode}\n                        />\n                      }\n                      iconSnippet={<DeliveryConditionsIcn />}\n                      boundaryBox={medicationCardRef}\n                    />\n                  )}\n                  {medication.deliveryModusCode && medication.deliveryModusSpecificationCode && (\n                    <Tooltip\n                      contentSnippet={\n                        <PrescriptionConditionsContent\n                          deliveryModusSpecificationCode={medication.deliveryModusSpecificationCode}\n                          deliveryModusSpecification={medication.deliveryModusSpecification}\n                        />\n                      }\n                      iconSnippet={<PrescriptionConditionsIcn />}\n                      boundaryBox={medicationCardRef}\n                    />\n                  )}\n                </div>\n              </div>\n            </div>\n\n            <p className=\"medication__content__heading__activeIngredient\">{medication.activeIngredient}</p>\n          </div>\n          <div className=\"medication__content__description\">\n            {medication.price && (\n              <>\n                <div className=\"medication__content__description__item\">\n                  <span>{t('medication.ui.price')}</span>\n                  <p className=\"price\">{medication.price}</p>\n                </div>\n                <div className=\"medication__content__description__item\">\n                  <span> {t('medication.reimbursement.title')}</span>\n                  {medicationReimbursement ? <ReimbursementIcn /> : <NonApplicableIcn text={t('medication.reimbursement.non')} colorGrey={true} />}\n                </div>\n              </>\n            )}\n            <div className=\"medication__content__description__item\">\n              <span>{t('medication.delivery.title')}</span>\n              {medication.deliveryModusCode ? <DeliveryConditionsIcn /> : <NonApplicableIcn text={t('medication.delivery.notApplicable')} />}\n            </div>\n            <div className=\"medication__content__description__item\">\n              <span>{t('medication.prescription.title')}</span>\n              {medication.deliveryModusSpecificationCode ? <PrescriptionConditionsIcn /> : <NonApplicableIcn text={t('medication.prescription.free')} />}\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <StyledExpandButton\n        className=\"StyledExpandButton\"\n        $isExpanded={isMedicationCardExpanded}\n        onClick={(e) => {\n          e.stopPropagation()\n          setMedicationCardExpanded(!isMedicationCardExpanded)\n        }}\n        type=\"button\"\n      >\n        <ChevronIcn />\n      </StyledExpandButton>\n    </StyledHeader>\n  )\n}\n","import styled, { css } from 'styled-components'\nimport { colors, displayResolution, responsiveMediaQueries } from '../../../../../styles'\n\nexport const StyledHeader = styled.div`\n  width: 100%;\n  display: flex;\n  padding: 8px 12px;\n  justify-content: space-between;\n  gap: 12px;\n  align-items: center;\n  align-self: stretch;\n  background: #fff;\n  border-radius: 6px;\n\n  ${responsiveMediaQueries.down(displayResolution.s)`\n  gap: 4px;\n  `};\n\n  .medication {\n    width: 100%;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n\n    ${responsiveMediaQueries.down(displayResolution.s)`\n    gap: 8px;\n  `};\n\n    &__content {\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      align-items: flex-start;\n      gap: 12px;\n\n      &__heading {\n        display: flex;\n        flex-direction: column;\n        gap: 4px;\n\n        &__title {\n          display: flex;\n          align-items: center;\n          gap: 8px;\n\n          h3 {\n            color: ${colors.grey[900]};\n            font-size: 16px;\n            font-style: normal;\n            font-weight: 500;\n          }\n        }\n\n        &__infographics {\n          display: flex;\n          align-items: center;\n          gap: 12px;\n\n          .medicationInfographics,\n          .medicationAvailabilityInfographics,\n          .deliveryPrescriptionConditions {\n            display: flex;\n            align-items: center;\n            gap: 2px;\n          }\n\n          .medicationInfographics {\n            &__item {\n              display: flex;\n              width: 22px;\n              height: 22px;\n              justify-content: center;\n              align-items: center;\n\n              border-radius: 5px;\n              border: 1px solid ${colors.blue[400]};\n            }\n          }\n\n          .medicationAvailabilityInfographics {\n            &__item {\n              display: flex;\n              width: 22px;\n              height: 22px;\n              justify-content: center;\n              align-items: center;\n\n              border-radius: 5px;\n\n              &--red {\n                background-color: ${colors.red[400]};\n              }\n\n              &--orange {\n                background-color: ${colors.orange[800]};\n              }\n\n              &--green {\n                background-color: ${colors.green[400]};\n              }\n            }\n          }\n        }\n\n        &__activeIngredient {\n          color: ${colors.grey[900]};\n          font-size: 14px;\n          font-style: normal;\n          font-weight: 300;\n          line-height: normal;\n        }\n      }\n\n      &__description {\n        width: 100%;\n        display: flex;\n        gap: 32px;\n        row-gap: 8px;\n        flex-wrap: wrap;\n\n        &__item {\n          display: flex;\n          align-items: center;\n          gap: 6px;\n\n          span {\n            font-size: 12px;\n            font-weight: 400;\n            color: ${colors.blue[600]};\n          }\n\n          p {\n            font-size: 14px;\n            font-weight: 400;\n            color: black;\n            font-style: normal;\n            line-height: normal;\n          }\n\n          .price {\n            color: ${colors.orange[900]};\n            font-weight: 600;\n          }\n        }\n      }\n    }\n  }\n`\n\nexport const StyledExpandButton = styled.button<{ $isExpanded?: boolean }>`\n  width: 18px;\n  background: none;\n  cursor: pointer;\n\n  ${({ $isExpanded }) =>\n    !!$isExpanded &&\n    css`\n      transform: rotate(90deg);\n    `};\n`\n\nexport const StyledTextToIcon = styled.div<{ $color: 'green' | 'orange' | 'red' | 'grey' }>`\n  height: 22px;\n  width: auto;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0 6px;\n  border-radius: 5px;\n\n  p {\n    font-size: 11px !important;\n    font-weight: 600;\n    color: white !important;\n  }\n\n  ${({ $color }) =>\n    $color === 'green' &&\n    css`\n      background-color: ${colors.green[600]};\n    `};\n\n  ${({ $color }) =>\n    $color === 'orange' &&\n    css`\n      background-color: ${colors.orange[950]};\n    `};\n\n  ${({ $color }) =>\n    $color === 'red' &&\n    css`\n      background-color: ${colors.red[700]};\n    `};\n\n  ${({ $color }) =>\n    $color === 'grey' &&\n    css`\n      background-color: ${colors.grey[700]};\n    `};\n`\n","import styled from 'styled-components'\nimport { colors, colorsRgb } from '../../../../../styles'\n\nexport const StyledExtension = styled.div`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  padding: 18px 12px;\n  gap: 18px;\n\n  background-color: ${colors.blue[200]};\n\n  border-radius: 0 0 6px 6px;\n\n  border-top: 1px dashed ${colors.blue[500]};\n\n  .vmp {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n\n    &__item {\n      width: 100%;\n      display: flex;\n      flex-direction: column;\n      gap: 4px;\n\n      span {\n        font-size: 12px;\n        font-weight: 400;\n        color: ${colors.blue[600]};\n      }\n\n      p {\n        font-size: 14px;\n        font-weight: 400;\n        color: black;\n      }\n    }\n  }\n\n  .divider {\n    width: 100%;\n    display: flex;\n    border-bottom: 1px dashed rgba(${colorsRgb.blue[500]}, 0.25);\n  }\n\n  .links {\n    width: 100%;\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    row-gap: 8px;\n\n    a {\n      width: 49%;\n      color: ${colors.blue[500]};\n      font-size: 14px;\n      font-style: normal;\n      font-weight: 400;\n      line-height: normal;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n  }\n`\n","import { SupplyProblemsContent } from '../../infographic-elements/SupplyProblemsContent'\nimport React, { FC } from 'react'\nimport type { MedicationType } from '../../../../../types'\nimport { ReimbursementsContent } from '../../infographic-elements/ReimbursementsContent'\nimport { PrescriptionConditionsContent } from '../../infographic-elements/PrescriptionConditionsContent'\nimport { DeliveryConditionsContent } from '../../infographic-elements/DeliveryConditionsContent'\nimport { EndOfCommercialisationContent } from '../../infographic-elements/EndOfCommercialisationContent'\nimport { StartOfCommercialisationContent } from '../../infographic-elements/StartOfCommercialisationContent'\nimport { StyledExtension } from './styles'\n\ninterface Props {\n  medication: MedicationType\n}\n\nexport const Extension: FC<Props> = ({ medication }) => {\n  const medicationCommercialization = medication.commercializations?.[0]\n  const medicationSupplyProblem = medication.supplyProblems?.[0]\n  const medicationReimbursement = medication.reimbursements\n\n  return (\n    <StyledExtension className=\"StyledExtension\">\n      {medication.vmp && (\n        <div className=\"vmp\">\n          {medication.vmp.name?.fr && (\n            <div className=\"vmp__item\">\n              <span>VMP:</span>\n              <p>{medication.vmp.name.fr}</p>\n            </div>\n          )}\n          {medication.vmp.vmpGroup?.name?.fr && (\n            <div className=\"vmp__item\">\n              <span>VMP-group:</span>\n              <p>{medication.vmp.vmpGroup.name.fr}</p>\n            </div>\n          )}\n        </div>\n      )}\n      <div className=\"divider\"></div>\n      <div className=\"links\">\n        {medication.crmLink && (\n          <a href={medication.crmLink} target=\"_blank\" rel=\"noopener noreferrer\">\n            Commented Medicines Directory (CBIP)\n          </a>\n        )}\n        {medication.patientInformationLeafletLink && (\n          <a href={medication.patientInformationLeafletLink} target=\"_blank\" rel=\"noopener noreferrer\">\n            Patient information leaflet\n          </a>\n        )}\n        {medication.rmaProfessionalLink && (\n          <a href={medication.rmaProfessionalLink} target=\"_blank\" rel=\"noopener noreferrer\">\n            Risk Minimisation Activities (RMA)\n          </a>\n        )}\n        {medication.spcLink && (\n          <a href={medication.spcLink} target=\"_blank\" rel=\"noopener noreferrer\">\n            Summary of Product Characteristics (SPC)\n          </a>\n        )}\n        {medication.dhpcLink && (\n          <a href={medication.dhpcLink} target=\"_blank\" rel=\"noopener noreferrer\">\n            Direct Healthcare Professional Communication (DHPC)\n          </a>\n        )}\n      </div>\n      {medicationReimbursement && (\n        <>\n          <div className=\"divider\"></div>\n          <ReimbursementsContent reimbursement={medication.reimbursements} />\n        </>\n      )}\n      <div className=\"divider\"></div>\n      <PrescriptionConditionsContent\n        deliveryModusSpecificationCode={medication.deliveryModusSpecificationCode}\n        deliveryModusSpecification={medication.deliveryModusSpecification}\n      />\n      <div className=\"divider\"></div>\n      <DeliveryConditionsContent\n        deliveryModus={medication.deliveryModus}\n        deliveryModusSpecification={medication.deliveryModusSpecification}\n        deliveryModusCode={medication.deliveryModusCode}\n      />\n      {medication.supplyProblems && (\n        <>\n          <div className=\"divider\"></div>\n          <SupplyProblemsContent medicationSupplyProblem={medicationSupplyProblem} />\n        </>\n      )}\n      {medicationCommercialization?.endOfComercialization && (\n        <>\n          <div className=\"divider\"></div>\n          <EndOfCommercialisationContent medicationCommercialization={medicationCommercialization} />\n        </>\n      )}\n      {medicationCommercialization && !medicationCommercialization.endOfComercialization && (\n        <>\n          <div className=\"divider\"></div>\n          <StartOfCommercialisationContent medicationCommercialization={medicationCommercialization} />\n        </>\n      )}\n    </StyledExtension>\n  )\n}\n","import styled, { css } from 'styled-components'\nimport { colors, colorsRgb } from '../../../styles'\nimport { StyledHeader } from './medication-card-elements/Header/styles'\n\nexport const activeMedicationCard = css`\n  border-color: ${colors.blue[500]};\n  box-shadow: 0 0 0 2px rgba(${colorsRgb.blue[500]}, 0.3);\n`\n\nexport const StyledMedicationCard = styled.div<{ $focused: boolean; $isExpanded: boolean; $disableHover: boolean }>`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  border-radius: 6px;\n  background: #fff;\n  border: 1px solid ${colors.blue[100]};\n  cursor: pointer;\n\n  &:hover {\n    ${activeMedicationCard};\n  }\n\n  ${({ $isExpanded }) =>\n    $isExpanded &&\n    css`\n      ${activeMedicationCard};\n\n      ${StyledHeader} {\n        border-radius: 6px 6px 0 0;\n      }\n    `};\n\n  ${({ $focused, $disableHover }) =>\n    $focused &&\n    $disableHover &&\n    css`\n      &:hover {\n        ${activeMedicationCard};\n      }\n    `};\n\n  ${({ $focused }) =>\n    $focused &&\n    css`\n      ${activeMedicationCard};\n    `};\n\n  ${({ $disableHover }) =>\n    $disableHover &&\n    css`\n      &:hover {\n        border-color: ${colors.blue[100]};\n        box-shadow: none;\n        cursor: not-allowed;\n      }\n    `};\n`\n","import React, { useEffect, useRef } from 'react'\n\ninterface InfiniteScrollProps {\n  threshold?: number\n  loadMore: () => void\n}\n\nexport const InfiniteScroll: React.FC<InfiniteScrollProps> = ({ threshold = 0, loadMore }) => {\n  const infiniteScrollRef = useRef<HTMLDivElement>(null)\n  const isLoadMore = useRef(false)\n\n  useEffect(() => {\n    const element = infiniteScrollRef.current?.parentElement\n    if (!element) return\n\n    const onScroll = (e: Event) => {\n      const target = e.target as HTMLElement\n      const offset = target.scrollHeight - target.clientHeight - target.scrollTop\n      if (offset <= threshold) {\n        if (!isLoadMore.current) {\n          loadMore()\n        }\n        isLoadMore.current = true\n      } else {\n        isLoadMore.current = false\n      }\n    }\n\n    element.addEventListener('scroll', onScroll)\n    element.addEventListener('resize', onScroll)\n    return () => {\n      element.removeEventListener('scroll', onScroll)\n      element.removeEventListener('resize', onScroll)\n    }\n  }, [threshold, loadMore])\n\n  return <div ref={infiniteScrollRef} style={{ width: 0 }} />\n}\n","export interface NamedItem {\n  title: string\n}\n\n/**\n * FetchMissingCallback:\n *   fetchMissing(fromName, toName?) => Promise<NamedItem[]>\n *\n * fromName is the last item name we successfully placed into the result.\n * toName is the upper boundary (excluded). If undefined, it means \"fetch anything above fromName\".\n */\nexport type FetchMissingCallback = (fromName: string, toName?: string) => Promise<NamedItem[]>\n\n/**\n * Merge an arbitrary number of partially available, sorted arrays of NamedItem.\n * Each array has its own \"fetch missing\" callback.\n */\n\nexport async function mergeSortedPartialArraysN(limit: number, arrays: NamedItem[][], fetchMissingCallbacks: FetchMissingCallback[]): Promise<[NamedItem[], number[]]> {\n  if (arrays.length !== fetchMissingCallbacks.length) {\n    throw new Error('Each array must have a corresponding fetch callback.')\n  }\n\n  const result: NamedItem[] = []\n\n  // Pointers to the current position in each array\n  const pointers = arrays.map(() => 0)\n\n  // Track the name of the last item we appended to `result`.\n  let lastPushedName = ''\n\n  /**\n   * Drain one array (the k-th array) of all items whose name is strictly < limitName.\n   * If that array is exhausted, call its fetch callback to see if there are more items\n   * in the range (lastPushedName, limitName).\n   *\n   * - If limitName === null, drain everything available from that array (and fetch if needed),\n   *   i.e. there is no upper boundary.\n   */\n  async function drainArrayUpTo(k: number, limitName: string | null, limit: number): Promise<void> {\n    const arr = arrays[k]\n    let p = pointers[k]\n    const fetchMissing = fetchMissingCallbacks[k]\n\n    while (result.length < limit) {\n      if (p < arr.length) {\n        const itemName = arr[p].title.toLowerCase()\n        // We only push if itemName < limitName (when limitName != null).\n        // If limitName is null, we push all remaining items.\n        if (limitName === null || itemName < limitName) {\n          // Push this item to the result\n          result.push(arr[p])\n          lastPushedName = itemName\n          p++\n        } else {\n          // The next item is >= limitName, so stop draining here.\n          break\n        }\n      } else {\n        // We've exhausted arr[k] at pointer p. Let's try fetching from the callback\n        const upper = limitName === null ? undefined : limitName\n        const newItems = await fetchMissing(lastPushedName, upper)\n\n        if (newItems.length === 0) {\n          // No new items in the requested range, so we can't drain more\n          break\n        }\n        // Insert the newly fetched items at the current pointer location\n        // They should already be sorted by .name.toLowerCase according to the contract\n        arr.splice(p, 0, ...newItems)\n      }\n    }\n\n    // Update the pointer after draining\n    pointers[k] = p\n  }\n\n  /**\n   * Returns the index of the array whose \"front item\" (the item at pointers[k])\n   * has the smallest name. Returns null if all arrays are exhausted (no front item).\n   */\n  function indexOfSmallestFront(): number | null {\n    let smallestIndex: number | null = null\n    let smallestName = ''\n\n    for (let k = 0; k < arrays.length; k++) {\n      const p = pointers[k]\n      if (p < arrays[k].length) {\n        const candidateName = arrays[k][p].title.toLowerCase()\n        if (smallestIndex === null || candidateName < smallestName) {\n          smallestIndex = k\n          smallestName = candidateName\n        }\n      }\n    }\n    return smallestIndex\n  }\n\n  // Main loop: as long as there's at least one array with a \"next item\",\n  // pick the smallest front item and place it in the result, draining\n  // other arrays in case they might have items that come before that smallest item.\n  while (result.length < limit) {\n    const si = indexOfSmallestFront() // index of array with smallest front item\n    if (si === null) {\n      // No more items in any array\n      break\n    }\n    // The next item we plan to place\n    const nextName = arrays[si][pointers[si]].title.toLowerCase()\n\n    // Drain all other arrays up to nextName\n    for (let k = 0; k < arrays.length; k++) {\n      // We only want items strictly less than nextName\n      await drainArrayUpTo(k, nextName, limit)\n    }\n\n    if (result.length < limit) {\n      // Now the item at arrays[si][pointers[si]] should be exactly nextName\n      // (unless it got drained, so we check bounds again).\n      if (pointers[si] < arrays[si].length) {\n        // Place that smallest item\n        const item = arrays[si][pointers[si]]\n        if (item.title.toLowerCase() === nextName) {\n          result.push(item)\n          lastPushedName = nextName\n          pointers[si]++\n        }\n      }\n    }\n  }\n\n  // Finally, drain everything left (limitName = null)\n  if (result.length < limit) {\n    for (let k = 0; k < arrays.length; k++) {\n      await drainArrayUpTo(k, null, limit)\n    }\n  }\n  return [result, pointers]\n}\n","import { Amp, Ampp, Dmpp, Nmp, VmpGroup } from '@icure/api'\nimport { MedicationType } from '../../types'\nimport { getSamTextTranslation } from '../i18n'\nimport { capitalize } from '../../utils/string-helpers'\n\nexport const nmpToMedicationTypes = (nmp: Nmp): MedicationType[] => {\n  const now = Date.now()\n\n  return nmp.to && nmp.to < now\n    ? []\n    : [\n        {\n          nmpId: nmp.id,\n          id: nmp.code,\n          title: capitalize(getSamTextTranslation(nmp.name)),\n        },\n      ]\n}\n\nexport const vmpGroupToMedicationTypes = (vmp: VmpGroup): MedicationType[] => {\n  const now = Date.now()\n\n  return vmp.to && vmp.to < now\n    ? []\n    : [\n        {\n          vmpGroupId: vmp.id,\n          id: vmp.code,\n          title: capitalize(getSamTextTranslation(vmp.name)),\n          standardDosage: vmp.standardDosage,\n        },\n      ]\n}\n\nexport const ampToMedicationTypes = (amp: Amp, deliveryEnvironment: string): MedicationType[] => {\n  const now = Date.now()\n  const twoYearsAgo = now - 2 * 365 * 24 * 3600 * 1000\n\n  return amp.to && amp.to < now\n    ? []\n    : amp.ampps\n        .filter((ampp) => {\n          return (\n            ampp.from &&\n            ampp.from < now &&\n            (!ampp.to || ampp.to > now) &&\n            ampp.status == Ampp.StatusEnum.AUTHORIZED &&\n            ampp.commercializations?.some((c) => !!c.from && (!c.to || c.to > twoYearsAgo)) &&\n            ampp.dmpps?.some((dmpp) => dmpp.from && dmpp.from < now && (!dmpp.to || dmpp.to > now) && dmpp.deliveryEnvironment?.toString() == deliveryEnvironment)\n          )\n        })\n        .map((ampp) => {\n          const dmpp = ampp.dmpps?.find(\n            (dmpp) =>\n              dmpp.from && dmpp.from < now && (!dmpp.to || dmpp.to > now) && dmpp.deliveryEnvironment?.toString() == deliveryEnvironment && dmpp.codeType == Dmpp.CodeTypeEnum.CNK,\n          )\n\n          return {\n            ampId: amp.id,\n            vmpGroupId: amp.vmp?.vmpGroup?.id,\n            id: ampp.ctiExtended,\n            cnk: dmpp?.code,\n            dmppProductId: dmpp?.productId,\n            title: getSamTextTranslation(ampp.prescriptionName ?? ampp.abbreviatedName ?? amp.prescriptionName ?? amp.name ?? amp.abbreviatedName),\n            vmpTitle: getSamTextTranslation(amp.vmp?.name),\n            activeIngredient: getSamTextTranslation(amp.vmp?.vmpGroup?.name),\n            price: ampp?.exFactoryPrice ? `€${ampp.exFactoryPrice}` : undefined,\n            crmLink: getSamTextTranslation(ampp.crmLink),\n            patientInformationLeafletLink: getSamTextTranslation(ampp.leafletLink),\n            blackTriangle: amp.blackTriangle,\n            speciallyRegulated: ampp.speciallyRegulated,\n            genericPrescriptionRequired: ampp.genericPrescriptionRequired,\n            intendedName: getSamTextTranslation(ampp.prescriptionName),\n            rmaProfessionalLink: getSamTextTranslation(ampp.rmaProfessionalLink),\n            spcLink: getSamTextTranslation(ampp.spcLink),\n            dhpcLink: getSamTextTranslation(ampp.dhpcLink),\n            rmakeyMessages: getSamTextTranslation(ampp.rmaKeyMessages),\n            vmp: amp.vmp,\n            supplyProblems: ampp.supplyProblems,\n            commercializations: ampp?.commercializations,\n            deliveryModusCode: ampp.deliveryModusCode,\n            deliveryModus: getSamTextTranslation(ampp.deliveryModus),\n            deliveryModusSpecificationCode: ampp.deliveryModusSpecificationCode,\n            deliveryModusSpecification: getSamTextTranslation(ampp.deliveryModusSpecification),\n            reimbursements: dmpp?.reimbursements?.find((dmpp) => dmpp.from && dmpp.from < now && (!dmpp.to || dmpp.to > now)),\n          }\n        })\n}\n","export function capitalize(s?: string): string | undefined {\n  if (!s) return s\n  return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase()\n}\n\nexport function trim(s?: string): string | undefined {\n  if (!s) return s\n  return s.replace(/\\s+/g, ' ').trim()\n}\n","import styled, { css } from 'styled-components'\nimport { colors, errorMessageCommonStyles, fieldCommonStyles, inputCommonStyles, inputCommonStyles_error, labelCommonStyles, labelCommonStyles_error } from '../../../styles'\n\nexport const StyledMedicationSearch = styled.div`\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n`\n\nexport const StyledMedicationSearchInput = styled.div<{ $dropdownDisplayed?: boolean; $error?: boolean }>`\n  ${fieldCommonStyles};\n\n  p {\n    ${labelCommonStyles};\n  }\n\n  input {\n    width: 100%;\n\n    &::placeholder {\n      color: ${colors.grey[650]};\n    }\n  }\n\n  ${({ $dropdownDisplayed }) =>\n    !!$dropdownDisplayed &&\n    css`\n      label {\n        border-color: ${colors.blue[800]};\n        box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n        border-radius: 6px;\n      }\n    `};\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      p {\n        ${labelCommonStyles_error};\n      }\n    `};\n\n  .error {\n    ${errorMessageCommonStyles}\n  }\n`\n\nexport const StyledLabel = styled.label<{ $error?: boolean }>`\n  ${inputCommonStyles};\n\n  justify-content: space-between;\n\n  &:focus-within {\n    border-color: ${colors.blue[800]};\n    box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n  }\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${inputCommonStyles_error};\n    `};\n`\nexport const StyledMedicationSearchDropdown = styled.div`\n  width: 100%;\n  height: 400px;\n  overflow-y: scroll;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n  align-self: stretch;\n  position: relative;\n\n  padding: 6px 8px 6px 6px;\n  gap: 5px;\n\n  border-radius: 0 0 6px 6px;\n  border-top: none;\n  background: ${colors.blue[300]};\n  box-shadow:\n    0 9px 28px 0 rgba(0, 0, 0, 0.05),\n    0 6px 16px 0 rgba(0, 0, 0, 0.08),\n    0 3px 6px 0 rgba(0, 0, 0, 0.12);\n\n  .medicationCardWrap {\n    width: 100%;\n  }\n`\n","import React, { KeyboardEvent, useEffect, useRef, useState } from 'react'\nimport { makeParser } from '@icure/medication-sdk'\nimport { Duration, Medication, Medicinalproduct, Substanceproduct } from '@icure/be-fhc-lite-api'\nimport { v4 as uuid } from 'uuid'\nimport { MedicationType, PharmacistVisibilityType, PractitionerVisibilityType, PrescribedMedicationType } from '../../../types'\nimport { createFhcCode } from '../../../services/fhc'\nimport { getExecutableUntilDate, getTreatmentStartDate, offsetDate } from '../../../utils/date-helpers'\nimport { findCommonSequence } from '../../../utils/dosage-helpers'\nimport { cardinalLanguage, t } from '../../../services/i18n'\nimport { SamText } from '@icure/api'\nimport { durationTimeUnitsEnum, getDurationFromDays, getDurationInDays, getDurationTimeUnits, getPeriodicityTimeUnits } from '../../../utils/prescription-duration-helpers'\nimport { getPharmacistVisibilityOptions, getPractitionerVisibilityOptions } from '../../../utils/visibility-helpers'\nimport { CloseIcn } from '../../common/Icons'\nimport { TextInput } from '../../form-elements/TextInput'\nimport { SelectInput } from '../../form-elements/SelectInput'\nimport { RadioInput } from '../../form-elements/RadioInput'\nimport { ToggleSwitch } from '../../form-elements/ToggleSwitch'\nimport { getReimbursementOptions } from '../../../utils/reimbursement-helpers'\nimport { TextareaInput } from '../../form-elements/TextareaInput'\nimport { Button } from '../../form-elements/Button'\nimport { StyledDosageInput, StyledPrescriptionModal, StyledSuggestionItem } from './styles'\nimport { GlobalStyles } from '../../../styles'\nimport { Controller, useForm } from 'react-hook-form'\nimport { trim } from '../../../utils/string-helpers'\n\ninterface Props {\n  medicationToPrescribe?: MedicationType\n  prescriptionToModify?: PrescribedMedicationType\n\n  onClose: () => void\n  onSubmit: (meds: PrescribedMedicationType[]) => void\n\n  modalMood: 'create' | 'modify'\n}\n\ntype PrescriptionFormType = {\n  medicationTitle: string\n  dosage: string\n  duration: number\n  durationTimeUnit: string\n  treatmentStartDate: string\n  executableUntil: string\n  prescriptionsNumber: number\n  periodicityTimeUnit: string\n  periodicityDaysNumber: number\n  substitutionAllowed: boolean\n  showExtraFields: boolean\n  recipeInstructionForPatient?: string\n  instructionsForReimbursement?: string\n  prescriberVisibility?: string\n  pharmacistVisibility?: string\n}\n\nexport const PrescriptionModal: React.FC<Props> = ({ medicationToPrescribe, prescriptionToModify, onClose, onSubmit, modalMood }) => {\n  // State for all form fields and logic\n\n  const [posologySuggestions, setPosologySuggestions] = useState<string[]>([])\n  const [focusedDosageIndex, setFocusedDosageIndex] = useState(-1)\n  const [disableHover, setDisableHover] = useState(false)\n  const [dosageFromSuggestion, setDosageFromSuggestion] = useState<string>('')\n\n  const resultRefs = useRef<(HTMLLIElement | null)[]>([])\n\n  const defaultValues = {\n    medicationTitle: trim(\n      medicationToPrescribe?.title ??\n        prescriptionToModify?.medication?.medicinalProduct?.intendedname ??\n        prescriptionToModify?.medication?.substanceProduct?.intendedname ??\n        prescriptionToModify?.medication?.compoundPrescription ??\n        '',\n    ),\n    dosage: prescriptionToModify?.medication?.instructionForPatient ?? '',\n    duration: getDurationFromDays(prescriptionToModify?.medication?.duration?.value ?? 1).duration,\n    durationTimeUnit: getDurationFromDays(prescriptionToModify?.medication?.duration?.value ?? 1).durationTimeUnit,\n    treatmentStartDate: getTreatmentStartDate(prescriptionToModify),\n    executableUntil: getExecutableUntilDate(prescriptionToModify),\n    prescriptionsNumber: 1,\n    substitutionAllowed: prescriptionToModify?.medication?.substitutionAllowed ?? false,\n    showExtraFields: false,\n    periodicityTimeUnit: getPeriodicityTimeUnits()[0].value,\n    periodicityDaysNumber: 1,\n    recipeInstructionForPatient: prescriptionToModify?.medication?.recipeInstructionForPatient ?? undefined,\n    instructionsForReimbursement: prescriptionToModify?.medication?.instructionsForReimbursement ?? undefined,\n    prescriberVisibility: prescriptionToModify?.prescriberVisibility ?? getPractitionerVisibilityOptions()[0]?.value,\n    pharmacistVisibility: prescriptionToModify?.pharmacistVisibility ?? getPharmacistVisibilityOptions()[0]?.value,\n  }\n\n  const {\n    register,\n    handleSubmit,\n    reset,\n    setValue,\n    watch,\n    control,\n    formState: { errors: prescriptionFormErrors },\n  } = useForm<PrescriptionFormType>({ defaultValues })\n\n  const dosage = watch('dosage')\n  const prescriptionsNumber = watch('prescriptionsNumber')\n  const periodicityTimeUnit = watch('periodicityTimeUnit')\n  const showExtraFields = watch('showExtraFields')\n  const recipeInstructionForPatient = watch('recipeInstructionForPatient')\n  const instructionsForReimbursement = watch('instructionsForReimbursement')\n  const prescriberVisibility = watch('prescriberVisibility')\n  const pharmacistVisibility = watch('pharmacistVisibility')\n\n  const language: keyof SamText = cardinalLanguage.getLanguage()\n\n  const { completePosology: completeDosage } = makeParser(language)\n  const dosageRef = useRef(dosage)\n  useEffect(() => {\n    if (dosage !== undefined) {\n      dosageRef.current = dosage\n    }\n  }, [dosage])\n\n  useEffect(() => {\n    const dosageWhenCalled = dosage\n    setTimeout(() => {\n      if (dosageWhenCalled && dosageWhenCalled === dosageRef.current && dosageWhenCalled != dosageFromSuggestion) {\n        setPosologySuggestions(completeDosage(dosageWhenCalled))\n      }\n    }, 100)\n  }, [dosage])\n\n  const handleModalClose = () => {\n    onClose()\n    reset()\n  }\n\n  const handleFormSubmit = (data: PrescriptionFormType) => {\n    const {\n      dosage,\n      duration,\n      durationTimeUnit,\n      treatmentStartDate,\n      executableUntil,\n      prescriptionsNumber,\n      periodicityTimeUnit,\n      periodicityDaysNumber,\n      substitutionAllowed,\n      recipeInstructionForPatient,\n      instructionsForReimbursement,\n      prescriberVisibility,\n      pharmacistVisibility,\n    } = data\n    const prescribedMedications = prescriptionToModify\n      ? [\n          {\n            ...prescriptionToModify,\n            medication: new Medication({\n              ...prescriptionToModify.medication,\n              beginMoment: offsetDate(\n                parseInt((treatmentStartDate as string)?.replace(/-/g, '')),\n                periodicityTimeUnit ? parseInt(periodicityTimeUnit) * (periodicityDaysNumber ?? 1) : 0,\n              ),\n              endMoment: offsetDate(\n                parseInt((executableUntil as string)?.replace(/-/g, '')),\n                periodicityTimeUnit ? parseInt(periodicityTimeUnit) * (periodicityDaysNumber ?? 1) : 0,\n              ),\n              duration: new Duration({\n                unit: createFhcCode('CD-TIMEUNIT', 'D'),\n                value: getDurationInDays(durationTimeUnit as durationTimeUnitsEnum, duration as number),\n              }),\n              instructionForPatient: dosage,\n              recipeInstructionForPatient: recipeInstructionForPatient,\n              instructionsForReimbursement: instructionsForReimbursement,\n              substitutionAllowed: substitutionAllowed,\n            }),\n            prescriberVisibility: prescriberVisibility as PractitionerVisibilityType,\n            pharmacistVisibility: pharmacistVisibility as PharmacistVisibilityType,\n          },\n        ]\n      : Array.from({ length: prescriptionsNumber ?? 1 }, (_, i) => i).map(\n          (idx): PrescribedMedicationType => ({\n            uuid: uuid(),\n            medication: new Medication({\n              ...(medicationToPrescribe?.ampId && !medicationToPrescribe.genericPrescriptionRequired\n                ? {\n                    medicinalProduct: new Medicinalproduct({\n                      samId: medicationToPrescribe.dmppProductId,\n                      intendedcds: [createFhcCode('CD-DRUG-CNK', medicationToPrescribe.cnk)],\n                      intendedname: trim(medicationToPrescribe.intendedName),\n                    }),\n                  }\n                : medicationToPrescribe?.vmpGroupId\n                  ? {\n                      substanceProduct: new Substanceproduct({\n                        samId: medicationToPrescribe.vmpGroupId,\n                        intendedcds: [createFhcCode('CD_VMPGROUP', medicationToPrescribe.vmpGroupId)],\n                        intendedname: trim(medicationToPrescribe?.vmpTitle ?? medicationToPrescribe.title),\n                      }),\n                    }\n                  : {\n                      compoundPrescription: trim(medicationToPrescribe.title),\n                    }),\n              beginMoment: offsetDate(\n                parseInt((treatmentStartDate as string)?.replace(/-/g, '')),\n                periodicityTimeUnit ? parseInt(periodicityTimeUnit) * (periodicityDaysNumber ?? 1) * idx : 0,\n              ),\n              endMoment: offsetDate(\n                parseInt((executableUntil as string)?.replace(/-/g, '')),\n                periodicityTimeUnit ? parseInt(periodicityTimeUnit) * (periodicityDaysNumber ?? 1) * idx : 0,\n              ),\n\n              duration: new Duration({\n                unit: createFhcCode('CD-TIMEUNIT', 'D'),\n                value: getDurationInDays(durationTimeUnit as durationTimeUnitsEnum, duration as number),\n              }),\n\n              instructionForPatient: dosage,\n              recipeInstructionForPatient: recipeInstructionForPatient,\n              instructionsForReimbursement: instructionsForReimbursement,\n              substitutionAllowed: substitutionAllowed,\n            }),\n            prescriberVisibility: prescriberVisibility as PractitionerVisibilityType,\n            pharmacistVisibility: pharmacistVisibility as PharmacistVisibilityType,\n          }),\n        )\n\n    onSubmit(prescribedMedications)\n    handleModalClose()\n  }\n\n  const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n    const length = posologySuggestions.length\n    const defaultActions = () => {\n      event.preventDefault()\n      setDisableHover(true)\n    }\n    if (event.key === 'ArrowDown') {\n      defaultActions()\n      setFocusedDosageIndex((prev) => (prev + 1) % length)\n      scrollToFocusedItem((focusedDosageIndex + 1) % length)\n    } else if (event.key === 'ArrowUp') {\n      defaultActions()\n      setFocusedDosageIndex((prev) => (prev - 1 + length) % length)\n      scrollToFocusedItem((focusedDosageIndex - 1 + length) % length)\n    } else if (event.key === 'Enter' && focusedDosageIndex >= 0) {\n      event.preventDefault()\n      setDisableHover(false)\n      validateSuggestion(posologySuggestions[focusedDosageIndex])\n    } else if (event.key === 'Escape') {\n      if (posologySuggestions.length) {\n        event.preventDefault()\n        event.stopPropagation()\n        setPosologySuggestions([])\n        setFocusedDosageIndex(-1)\n      }\n    } else if (event.key === 'Enter') {\n      handleSubmit(handleFormSubmit)\n    }\n  }\n\n  const scrollToFocusedItem = (index: number) => {\n    if (index >= 0 && resultRefs.current[index]) {\n      resultRefs.current[index]?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n    }\n  }\n\n  const handleMouseMove = () => {\n    setDisableHover(false)\n  }\n\n  const validateSuggestion = (suggestion: string) => {\n    if (suggestion) {\n      const common = findCommonSequence(dosage ?? '', suggestion)\n      setValue('dosage', (dosageRef.current + (common.length ? suggestion.slice(common.length) : ' ' + suggestion))?.replace(/ {2,}/g, ' ')?.replace(/\\/ /g, '/'), {\n        shouldValidate: true,\n        shouldDirty: true,\n        shouldTouch: true,\n      })\n      setDosageFromSuggestion(dosageRef.current)\n      setPosologySuggestions([])\n      setFocusedDosageIndex(1)\n    }\n  }\n\n  return (\n    <>\n      <GlobalStyles />\n      <StyledPrescriptionModal className=\"StyledPrescriptionModal\">\n        <div className=\"content\">\n          <form id=\"prescriptionForm\" className=\"addMedicationForm\" onSubmit={handleSubmit(handleFormSubmit)} autoComplete=\"off\">\n            <div className=\"addMedicationForm__header\">\n              <h3>{modalMood === 'create' ? t('prescription.createTitle') : t('prescription.modifyTitle')}</h3>\n              <button className=\"addMedicationForm__header__closeIcn\" onClick={handleModalClose} type=\"reset\">\n                <CloseIcn />\n              </button>\n            </div>\n            <div\n              className=\"addMedicationForm__body\"\n              onKeyDown={handleKeyDown}\n              role=\"listbox\"\n              tabIndex={0}\n              aria-activedescendant={focusedDosageIndex >= 0 ? `posology-${focusedDosageIndex}` : undefined}\n            >\n              <div className=\"addMedicationForm__body__content\">\n                <TextInput\n                  label={t('prescription.form.medicationTitle')}\n                  required\n                  disabled\n                  id=\"medicationTitle\"\n                  {...register('medicationTitle', {\n                    required: t('prescription.form.fieldRequired'),\n                  })}\n                  errorMessage={prescriptionFormErrors['medicationTitle']?.message}\n                />\n                <StyledDosageInput className=\"StyledDosageInput\">\n                  <TextInput\n                    label={t('prescription.form.dosage')}\n                    id=\"dosage\"\n                    required\n                    autoFocus\n                    {...register('dosage', {\n                      required: t('prescription.form.fieldRequired'),\n                    })}\n                    errorMessage={prescriptionFormErrors['dosage']?.message}\n                  />\n                  {posologySuggestions.length !== 0 && (\n                    <ul className=\"suggestionsDropdown\" onMouseMove={handleMouseMove}>\n                      {posologySuggestions.map((posology, index) => (\n                        <StyledSuggestionItem\n                          key={index}\n                          id={`posology-${index}`}\n                          $disableHover={disableHover}\n                          $focused={focusedDosageIndex === index}\n                          className=\"StyledSuggestionItem\"\n                        >\n                          <button\n                            onClick={(e) => {\n                              e.preventDefault()\n                              validateSuggestion(posology)\n                            }}\n                          >\n                            {posology}\n                          </button>\n                        </StyledSuggestionItem>\n                      ))}\n                    </ul>\n                  )}\n                </StyledDosageInput>\n                <div className=\"addMedicationForm__body__content__inputsGroup\">\n                  <TextInput\n                    label={t('prescription.form.duration')}\n                    id=\"duration\"\n                    type=\"number\"\n                    min={1}\n                    required\n                    {...register('duration', {\n                      required: t('prescription.form.fieldRequired'),\n                    })}\n                    errorMessage={prescriptionFormErrors['duration']?.message}\n                  />\n                  <Controller\n                    name=\"durationTimeUnit\"\n                    control={control}\n                    rules={{ required: t('prescription.form.fieldRequired') }}\n                    render={({ field }) => (\n                      <SelectInput\n                        {...field}\n                        label={t('prescription.form.durationTimeUnit')}\n                        id=\"durationTimeUnit\"\n                        required\n                        options={getDurationTimeUnits()}\n                        errorMessage={prescriptionFormErrors['durationTimeUnit']?.message}\n                      />\n                    )}\n                  />\n                </div>\n                <div className=\"addMedicationForm__body__content__inputsGroup\">\n                  <TextInput\n                    label={t('prescription.form.treatmentStartDate')}\n                    id=\"treatmentStartDate\"\n                    type=\"date\"\n                    required\n                    {...register('treatmentStartDate', {\n                      required: t('prescription.form.fieldRequired'),\n                    })}\n                    errorMessage={prescriptionFormErrors['treatmentStartDate']?.message}\n                  />\n                  <TextInput\n                    label={t('prescription.form.executableUntil')}\n                    id=\"executableUntil\"\n                    type=\"date\"\n                    required\n                    {...register('executableUntil', {\n                      required: t('prescription.form.fieldRequired'),\n                    })}\n                    errorMessage={prescriptionFormErrors['executableUntil']?.message}\n                  />\n                </div>\n                {!prescriptionToModify && (\n                  <div className=\"addMedicationForm__body__content__inputsGroup\">\n                    <TextInput\n                      label={t('prescription.form.prescriptionsNumber')}\n                      id=\"prescriptionsNumber\"\n                      type=\"number\"\n                      min={1}\n                      max={12}\n                      required\n                      {...register('prescriptionsNumber', {\n                        required: t('prescription.form.fieldRequired'),\n                      })}\n                      errorMessage={prescriptionFormErrors['prescriptionsNumber']?.message}\n                    />\n                    {prescriptionsNumber && prescriptionsNumber > 1 && (\n                      <Controller\n                        name=\"periodicityTimeUnit\"\n                        control={control}\n                        rules={{ required: t('prescription.form.fieldRequired') }}\n                        render={({ field }) => (\n                          <SelectInput\n                            {...field}\n                            label={t('prescription.form.periodicityTimeUnit')}\n                            id=\"periodicityTimeUnit\"\n                            required\n                            options={getPeriodicityTimeUnits()}\n                            errorMessage={prescriptionFormErrors['periodicityTimeUnit']?.message}\n                          />\n                        )}\n                      />\n                    )}\n                    {periodicityTimeUnit === '1' && (\n                      <TextInput\n                        label={t('prescription.form.periodicityDaysNumber')}\n                        id=\"periodicityDaysNumber\"\n                        type=\"number\"\n                        min={1}\n                        required\n                        {...register('periodicityDaysNumber', {\n                          required: t('prescription.form.fieldRequired'),\n                        })}\n                        errorMessage={prescriptionFormErrors['periodicityDaysNumber']?.message}\n                      />\n                    )}\n                  </div>\n                )}\n                <div className=\"addMedicationForm__body__content__radioBtns\">\n                  <Controller\n                    name=\"substitutionAllowed\"\n                    control={control}\n                    render={({ field }) => (\n                      <RadioInput\n                        {...field}\n                        value={field.value}\n                        onChange={(val) => field.onChange(val)}\n                        label={t('prescription.form.substitutionAllowed')}\n                        options={[\n                          { label: 'Non', value: false, id: 'substitutionIsNotAllowed' },\n                          { label: 'Oui', value: true, id: 'substitutionIsAllowed' },\n                        ]}\n                        required\n                        errorMessage={prescriptionFormErrors['substitutionAllowed']?.message}\n                      />\n                    )}\n                  />\n                </div>\n              </div>\n\n              <Controller\n                name=\"showExtraFields\"\n                control={control}\n                render={({ field }) => <ToggleSwitch {...field} id=\"showExtraFields\" value={t('prescription.form.toggleExtraFields')} />}\n              />\n\n              {!showExtraFields ? (\n                <div className=\"addMedicationForm__body__extraFieldsPreview\">\n                  <p>\n                    <span>{t('prescription.form.patientInstructions')} :</span>{' '}\n                    <i>\n                      <span>{recipeInstructionForPatient || t('prescription.form.instructionLabelNone')}</span>\n                    </i>\n                  </p>\n                  <p>\n                    <span>{t('prescription.form.reimbursementInstructions')} :</span>{' '}\n                    <i>\n                      <span>{getReimbursementOptions().find((x) => x.value === instructionsForReimbursement)?.label || t('prescription.form.instructionLabelNone')}</span>\n                    </i>\n                  </p>\n                  <p>\n                    <span>{t('prescription.form.prescriberVisibility')} :</span>{' '}\n                    <i>\n                      <span>{getPractitionerVisibilityOptions().find((o) => o.value === prescriberVisibility)?.label}</span>\n                    </i>\n                  </p>\n                  <p>\n                    <span>{t('prescription.form.pharmacistVisibility')} :</span>{' '}\n                    <i>\n                      <span>{getPharmacistVisibilityOptions().find((o) => o.value === pharmacistVisibility)?.label}</span>\n                    </i>\n                  </p>\n                </div>\n              ) : (\n                <div className=\"addMedicationForm__body__content\">\n                  <TextareaInput label={t('prescription.form.patientInstructions')} id=\"recipeInstructionForPatient\" {...register('recipeInstructionForPatient')} />\n                  <Controller\n                    name=\"instructionsForReimbursement\"\n                    control={control}\n                    render={({ field }) => (\n                      <SelectInput\n                        {...field}\n                        label={t('prescription.form.reimbursementInstructions')}\n                        id=\"instructionsForReimbursement\"\n                        options={getReimbursementOptions()}\n                        value={field.value ?? ''}\n                        onChange={(e) => {\n                          // Convert empty string back to null before updating RHF state\n                          const val = e.target.value === '' ? null : e.target.value\n                          field.onChange(val)\n                        }}\n                      />\n                    )}\n                  />\n                  <Controller\n                    name=\"prescriberVisibility\"\n                    control={control}\n                    render={({ field }) => (\n                      <SelectInput {...field} label={t('prescription.form.prescriberVisibility')} id=\"prescriberVisibility\" options={getPractitionerVisibilityOptions()} />\n                    )}\n                  />\n\n                  <Controller\n                    name=\"pharmacistVisibility\"\n                    control={control}\n                    render={({ field }) => (\n                      <SelectInput\n                        {...field}\n                        label={t('prescription.form.pharmacistVisibility')}\n                        id=\"pharmacistVisibility\"\n                        options={getPharmacistVisibilityOptions()}\n                        value={field.value ?? ''}\n                        onChange={(e) => {\n                          // Convert empty string back to null before updating RHF state\n                          const val = e.target.value === '' ? null : e.target.value\n                          field.onChange(val)\n                        }}\n                      />\n                    )}\n                  />\n                </div>\n              )}\n            </div>\n\n            <div className=\"addMedicationForm__footer\">\n              <Button title={t('prescription.form.cancel')} type=\"reset\" view={'outlined'} onClick={handleModalClose} />\n              <Button title={t('prescription.form.submit')} type=\"submit\" view={'primary'} />\n            </div>\n          </form>\n        </div>\n      </StyledPrescriptionModal>\n    </>\n  )\n}\n","export const findCommonSequence = (str1: string, str2: string) => {\n  let commonSequence = ''\n\n  // Determine the maximum possible overlap\n  const maxOverlap = Math.min(str1.length, str2.length)\n\n  for (let i = 1; i <= maxOverlap; i++) {\n    // Get the suffix of str1 and prefix of str2\n    const suffix = str1.slice(-i)\n    const prefix = str2.slice(0, i)\n\n    if (suffix === prefix) {\n      commonSequence = suffix // Update the common sequence\n    }\n  }\n\n  return commonSequence\n}\n","import { t } from '../services/i18n'\n\nexport enum durationTimeUnitsEnum {\n  DAY = 'DAY',\n  WEEK = 'WEEK',\n}\n\nexport const getDurationTimeUnits = () => [\n  {\n    value: durationTimeUnitsEnum.DAY,\n    label: t('prescriptionDurationHelper.durationUnits.day'),\n  },\n  {\n    value: durationTimeUnitsEnum.WEEK,\n    label: t('prescriptionDurationHelper.durationUnits.week'),\n  },\n]\n\nexport enum periodicityTimeUnitsEnum {\n  NONE = '0',\n  WEEK = '7',\n  TWO_WEEKS = '14',\n  THREE_WEEKS = '21',\n  NUMBER_OF_DAYS = '1',\n}\n\nexport const getPeriodicityTimeUnits = () => [\n  {\n    value: periodicityTimeUnitsEnum.NONE,\n    label: t('prescriptionDurationHelper.periodicityUnits.none'),\n  },\n  {\n    value: periodicityTimeUnitsEnum.WEEK,\n    label: t('prescriptionDurationHelper.periodicityUnits.week'),\n  },\n  {\n    value: periodicityTimeUnitsEnum.TWO_WEEKS,\n    label: t('prescriptionDurationHelper.periodicityUnits.twoWeeks'),\n  },\n  {\n    value: periodicityTimeUnitsEnum.THREE_WEEKS,\n    label: t('prescriptionDurationHelper.periodicityUnits.threeWeeks'),\n  },\n  {\n    value: periodicityTimeUnitsEnum.NUMBER_OF_DAYS,\n    label: t('prescriptionDurationHelper.periodicityUnits.numberOfDays'),\n  },\n]\n\nexport const getDurationInDays = (timeUnit: durationTimeUnitsEnum, value: number): number => {\n  if (timeUnit === durationTimeUnitsEnum.DAY) {\n    return value\n  } else if (timeUnit === durationTimeUnitsEnum.WEEK) {\n    return value * 7\n  }\n  // Handle unexpected values of timeUnit (optional but recommended)\n  throw new Error(`Invalid time unit: ${timeUnit}`)\n}\n\nexport const getDurationFromDays = (numberOfDays: number) => {\n  if (numberOfDays % 7 === 0) {\n    return {\n      duration: numberOfDays / 7,\n      durationTimeUnit: durationTimeUnitsEnum.WEEK,\n    }\n  } else {\n    return {\n      duration: numberOfDays,\n      durationTimeUnit: durationTimeUnitsEnum.DAY,\n    }\n  }\n}\n","import { PharmacistVisibilityType, PractitionerVisibilityType } from '../types'\nimport { t } from '../services/i18n'\n\nexport function getPractitionerVisibilityOptions(): {\n  value: PractitionerVisibilityType\n  label: string\n}[] {\n  return [\n    {\n      value: 'open',\n      label: t('prescriptionVisibilityHelper.practitionerVisibility.open'),\n    },\n    {\n      value: 'locked',\n      label: t('prescriptionVisibilityHelper.practitionerVisibility.locked'),\n    },\n    {\n      value: 'gmd_prescriber',\n      label: t('prescriptionVisibilityHelper.practitionerVisibility.gmd_prescriber'),\n    },\n  ]\n}\n\nexport function getPharmacistVisibilityOptions(): {\n  value: PharmacistVisibilityType\n  label: string\n}[] {\n  return [\n    {\n      value: null,\n      label: t('prescriptionVisibilityHelper.pharmacistVisibility.null'),\n    },\n    {\n      value: 'locked',\n      label: t('prescriptionVisibilityHelper.pharmacistVisibility.locked'),\n    },\n  ]\n}\n","import React, { forwardRef } from 'react'\nimport { StyledSelectDropdown, StyledSelectInput, StyledSelectInputLabel } from './styles'\n\nexport interface SelectOption {\n  value: string | null\n  label: string\n}\n\ninterface SelectInputProps {\n  label: string\n  id: string\n  options: SelectOption[]\n  required?: boolean\n  disabled?: boolean\n  onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void\n  value?: string | number | null\n  errorMessage?: string\n}\n\nexport const SelectInput = forwardRef<HTMLSelectElement, SelectInputProps>(({ label, id, required, disabled, options, value, onChange, errorMessage, ...rest }, ref) => (\n  <StyledSelectInput className=\"StyledSelectInput\">\n    <StyledSelectInputLabel className=\"StyledSelectInputLabel\" htmlFor={id} $required={required} $error={!!errorMessage}>\n      <span>*</span>\n      {label}\n    </StyledSelectInputLabel>\n    <StyledSelectDropdown className=\"StyledSelectDropdown\" ref={ref} id={id} name={id} value={value} onChange={onChange} disabled={disabled} {...rest}>\n      {options.map((option) => (\n        <option key={option.value ?? ''} value={option.value ?? ''}>\n          {option.label}\n        </option>\n      ))}\n    </StyledSelectDropdown>\n    {!!errorMessage && <p className=\"error\">{errorMessage}</p>}\n  </StyledSelectInput>\n))\n","import styled, { css } from 'styled-components'\nimport {\n  errorMessageCommonStyles,\n  fieldCommonStyles,\n  inputCommonStyles,\n  inputCommonStyles_disabled,\n  inputCommonStyles_error,\n  labelCommonStyles,\n  labelCommonStyles_error,\n  labelCommonStyles_required,\n} from '../../../styles'\n\nexport const StyledSelectInputLabel = styled.label<{ $required?: boolean; $error?: boolean }>`\n  ${labelCommonStyles};\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${labelCommonStyles_error}\n    `};\n  ${({ $required }) =>\n    !!$required &&\n    css`\n      ${labelCommonStyles_required}\n    `};\n`\nexport const StyledSelectInput = styled.div`\n  ${fieldCommonStyles};\n\n  .error {\n    ${errorMessageCommonStyles}\n  }\n`\nexport const StyledSelectDropdown = styled.select<{ $disabled?: boolean; $error?: boolean }>`\n  ${inputCommonStyles};\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${inputCommonStyles_error}\n    `};\n  ${({ $disabled }) =>\n    !!$disabled &&\n    css`\n      ${inputCommonStyles_disabled}\n    `};\n`\n","import React, { forwardRef } from 'react'\nimport { StyledRadioButton, StyledRadioButtonLabel, StyledRadioButtonToggle, StyledRadioButtonToggleStuffing, StyledRadioGroupLabel, StyledRadioInput } from './styles'\n\nexport interface RadioOption {\n  label: string\n  value: boolean\n  id: string\n}\n\ninterface RadioInputProps {\n  label: string\n  name: string\n  options: RadioOption[]\n  required?: boolean\n  errorMessage?: string\n  value?: boolean\n  onChange?: (value: boolean) => void\n}\n\nexport const RadioInput = forwardRef<HTMLInputElement, RadioInputProps>(({ label, name, options, required, errorMessage, value, onChange }, ref) => {\n  return (\n    <StyledRadioInput className=\"StyledRadioInput\">\n      <StyledRadioGroupLabel className=\"StyledRadioGroupLabel\" $required={required} $error={!!errorMessage}>\n        <span>*</span>\n        {label}\n      </StyledRadioGroupLabel>\n      <div className=\"radioBtnsGroup\">\n        {options.map((option) => (\n          <StyledRadioButton className=\"StyledRadioButton\" key={option.id} htmlFor={option.id} $error={!!errorMessage}>\n            <input\n              id={option.id}\n              name={name}\n              type=\"radio\"\n              checked={value === option.value}\n              value={String(option.value)}\n              required={required}\n              onChange={() => onChange?.(option.value)}\n              ref={ref}\n            />\n            <StyledRadioButtonToggle className=\"StyledRadioButtonToggle\" $error={!!errorMessage}>\n              <StyledRadioButtonToggleStuffing className=\"StyledRadioButtonToggleStuffing\" />\n            </StyledRadioButtonToggle>\n            <StyledRadioButtonLabel $error={!!errorMessage}>{option.label}</StyledRadioButtonLabel>\n          </StyledRadioButton>\n        ))}\n      </div>\n      {!!errorMessage && <p className=\"error\">{errorMessage}</p>}\n    </StyledRadioInput>\n  )\n})\n\nRadioInput.displayName = 'RadioInput'\n","import styled, { css } from 'styled-components'\nimport { colors, errorMessageCommonStyles, fieldCommonStyles, labelCommonStyles, labelCommonStyles_error, labelCommonStyles_required } from '../../../styles'\n\nexport const StyledRadioGroupLabel = styled.p<{ $required?: boolean; $error?: boolean }>`\n  ${labelCommonStyles};\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${labelCommonStyles_error}\n    `};\n  ${({ $required }) =>\n    !!$required &&\n    css`\n      ${labelCommonStyles_required}\n    `};\n`\n\nexport const StyledRadioButtonToggleStuffing = styled.span`\n  display: none;\n  width: 100%;\n  height: 100%;\n  border-radius: 50%;\n  background: ${colors.blue[800]};\n`\n\nexport const StyledRadioButtonToggle = styled.span<{ $error?: boolean }>`\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15px;\n  height: 15px;\n  padding: 2px;\n  border-radius: 50%;\n  border: 1px solid ${colors.grey[600]};\n  background: #fff;\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      border-color: red;\n\n      &:hover {\n        box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.2);\n      }\n\n      ${StyledRadioButtonToggleStuffing} {\n        background: red;\n      }\n    `}\n`\nexport const StyledRadioButtonLabel = styled.span<{ $error?: boolean }>`\n  ${labelCommonStyles};\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${labelCommonStyles_error}\n    `}\n\n  width: auto;\n  font-weight: 400;\n`\n\nexport const StyledRadioButton = styled.label<{ $error?: boolean }>`\n  align-self: stretch;\n  display: flex;\n  align-items: center;\n  justify-content: flex-start;\n  gap: 8px;\n  cursor: pointer;\n\n  &:hover {\n    ${StyledRadioButtonToggle} {\n      box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n      border-color: ${colors.blue[800]};\n    }\n  }\n\n  input {\n    display: none;\n\n    &:checked + ${StyledRadioButtonToggle} {\n      border-color: ${colors.blue[800]};\n\n      ${StyledRadioButtonToggleStuffing} {\n        display: flex;\n      }\n    }\n  }\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      &:hover {\n        ${StyledRadioButtonToggle} {\n          box-shadow: 0 0 0 2px rgba(255, 0, 0, 0.2);\n          border-color: red;\n        }\n      }\n\n      input {\n        display: none;\n\n        &:checked + ${StyledRadioButtonToggle} {\n          border-color: red;\n\n          ${StyledRadioButtonToggleStuffing} {\n            display: flex;\n          }\n        }\n      }\n    `}\n`\n\nexport const StyledRadioInput = styled.div`\n  ${fieldCommonStyles};\n\n  .radioBtnsGroup {\n    width: 100%;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 18px;\n  }\n\n  .error {\n    ${errorMessageCommonStyles}\n  }\n`\n","import React, { forwardRef } from 'react'\nimport { StyledSwitch } from './styles'\n\ninterface ToggleSwitchProps {\n  id: string\n  value: string\n  label?: string\n  checked?: boolean\n  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport const ToggleSwitch = forwardRef<HTMLInputElement, ToggleSwitchProps>(({ id, value, label, onChange, checked }, ref) => {\n  return (\n    <StyledSwitch className=\"StyledSwitch\">\n      {label && <p className=\"toggleSwitchLabel\">{label}</p>}\n      <div className=\"toggleWrapper\">\n        <label htmlFor={id} className=\"toggle\">\n          <input id={id} name={id} type=\"checkbox\" checked={checked} onChange={onChange} ref={ref} />\n          <span className=\"slider\"></span>\n        </label>\n        <p>{value}</p>\n      </div>\n    </StyledSwitch>\n  )\n})\n\nToggleSwitch.displayName = 'ToggleSwitch'\n","import styled from 'styled-components'\nimport { colors, fieldCommonStyles, labelCommonStyles } from '../../../styles'\n\nexport const StyledSwitch = styled.div`\n\n  ${fieldCommonStyles};\n\n  .toggleSwitchLabel {\n    ${labelCommonStyles};\n  }\n\n  .toggleWrapper {\n    display: flex;\n    padding: 4px 0;\n    align-items: center;\n    gap: 12px;\n    align-self: stretch;\n\n    .toggle {\n      position: relative;\n      display: inline-block;\n      width: 46px;\n      height: 24px;\n\n      .slider {\n        position: absolute;\n        cursor: pointer;\n        top: 0;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        background-color: ${colors.grey[550]};\n        border: 1px solid transparent;\n        transition: 0.4s;\n        border-radius: 34px;\n\n        &:hover {\n          border-color: ${colors.blue[800]};\n          box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n        }\n\n        &::before {\n          position: absolute;\n          content: '';\n          height: 18px;\n          width: 18px;\n          left: 2px;\n          bottom: 2px;\n          background-color: white;\n          transition: 0.4s;\n          border-radius: 50%;\n        }\n      }\n\n      input {\n        opacity: 0;\n        width: 0;\n        height: 0;\n\n        &:checked + .slider {\n          background-color: ${colors.blue[800]};\n        }\n\n        &:checked + .slider:hover {\n          box-shadow: 0 0 0 2px rgba(61, 135, 197, 0.2);\n        }\n\n        &:focus + .slider {\n          box-shadow: 0 0 1px ${colors.blue[800]};\n        }\n\n        &:checked + .slider::before {\n          -webkit-transform: translateX(20px);\n          -ms-transform: translateX(20px);\n          transform: translateX(20px);\n        }\n      }\n    }\n\n    p {\n      ${labelCommonStyles};\n    }\n`\n","import React from 'react'\nimport { StyledTextarea, StyledTextareaInput, StyledTextareaInputLabel } from './styles'\n\ninterface TextareaInputProps {\n  label: string\n  id?: string\n  required?: boolean\n  disabled?: boolean\n  errorMessage?: string\n}\n\nexport const TextareaInput = React.forwardRef<HTMLTextAreaElement, TextareaInputProps>(({ label, id, required, disabled, errorMessage, ...rest }, ref) => (\n  <StyledTextareaInput className=\"StyledTextareaInput\">\n    <StyledTextareaInputLabel className=\"StyledTextareaInputLabel\" htmlFor={id} $required={required} $error={!!errorMessage}>\n      <span>*</span>\n      {label}\n    </StyledTextareaInputLabel>\n\n    <StyledTextarea\n      className=\"StyledTextarea\"\n      placeholder={label}\n      name={id}\n      id={id}\n      $disabled={disabled}\n      $error={!!errorMessage}\n      disabled={disabled}\n      rows={3}\n      ref={ref}\n      {...rest}\n    />\n    {errorMessage && <p className=\"error\">{errorMessage}</p>}\n  </StyledTextareaInput>\n))\n","import styled, { css } from 'styled-components'\nimport {\n  errorMessageCommonStyles,\n  fieldCommonStyles,\n  inputCommonStyles,\n  inputCommonStyles_disabled,\n  inputCommonStyles_error,\n  labelCommonStyles,\n  labelCommonStyles_error,\n  labelCommonStyles_required,\n} from '../../../styles'\n\nexport const StyledTextareaInputLabel = styled.label<{ $required?: boolean; $error?: boolean }>`\n  ${labelCommonStyles};\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${labelCommonStyles_error}\n    `};\n  ${({ $required }) =>\n    !!$required &&\n    css`\n      ${labelCommonStyles_required}\n    `};\n`\nexport const StyledTextareaInput = styled.div`\n  ${fieldCommonStyles};\n\n  .error {\n    ${errorMessageCommonStyles}\n  }\n`\nexport const StyledTextarea = styled.textarea<{ $disabled?: boolean; $error?: boolean }>`\n  ${inputCommonStyles};\n  height: unset;\n\n  ${({ $error }) =>\n    !!$error &&\n    css`\n      ${inputCommonStyles_error}\n    `};\n  ${({ $disabled }) =>\n    !!$disabled &&\n    css`\n      ${inputCommonStyles_disabled}\n    `};\n`\n","import styled, { css } from 'styled-components'\nimport { colors, colorsRgb, displayResolution, responsiveMediaQueries } from '../../../styles'\n\nexport const StyledPrescriptionModal = styled.div`\n  width: 100vw;\n  height: 100vh;\n  position: fixed;\n  top: 0;\n  left: 0;\n  display: flex;\n  background-color: rgba(${colorsRgb.blue[800]}, 0.3);\n  z-index: 1020;\n\n  .content {\n    width: 900px;\n    height: 100%;\n    max-height: 100%;\n    border: none;\n    padding: 0;\n    margin: 0 0 0 auto;\n\n    ${responsiveMediaQueries.down(displayResolution.l)`\n      width: 100%;\n      border-radius: 0.2em;\n  `};\n  }\n\n  .addMedicationForm {\n    display: flex;\n    width: 100%;\n    height: 100vh;\n    overflow: hidden;\n    flex-direction: column;\n    align-items: flex-start;\n    align-self: stretch;\n\n    &__header {\n      display: flex;\n      padding: 20px 24px;\n      justify-content: space-between;\n      align-items: center;\n      align-self: stretch;\n\n      border-bottom: 1px solid ${colors.grey[300]};\n      background: #fff;\n\n      ${responsiveMediaQueries.down(displayResolution.l)`\n      padding: 20px 16px;\n  `};\n\n      h3 {\n        color: ${colors.grey[900]};\n        font-size: 16px;\n        font-style: normal;\n        font-weight: 500;\n        line-height: normal;\n      }\n\n      &__closeIcn {\n        width: 22px;\n        height: 22px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        cursor: pointer;\n        background-color: #ffffff;\n        border-radius: 4px;\n\n        &:hover {\n          background-color: rgba(${colorsRgb.grey[300]};, 0.4);\n        }\n      }\n    }\n\n    &__body {\n      width: 100%;\n      height: 100%;\n      overflow-y: auto;\n      padding: 24px 32px;\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      align-self: stretch;\n      flex: 1 0 0;\n      gap: 12px;\n      background-color: ${colors.blue[200]};\n\n      ${responsiveMediaQueries.down(displayResolution.l)`\n       padding: 16px;\n      `};\n\n      ${responsiveMediaQueries.down(displayResolution.s)`\n        padding: 8px;\n      `};\n\n      &__content {\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        align-items: flex-start;\n        align-self: stretch;\n        border-radius: 12px;\n        border: 1px solid ${colors.grey[300]};\n        background: #fff;\n        padding: 24px;\n        gap: 12px;\n\n        ${responsiveMediaQueries.down(displayResolution.l)`\n           padding: 18px;\n        `};\n\n        &__inputsGroup {\n          width: 100%;\n          display: flex;\n          align-items: flex-start;\n          gap: 4px;\n          align-self: stretch;\n\n          ${responsiveMediaQueries.down(displayResolution.s)`\n          flex-direction: column;\n            gap: 12px;\n        `};\n        }\n      }\n\n      &__extraFieldsPreview {\n        display: flex;\n        width: 100%;\n        padding: 12px;\n        flex-direction: column;\n        align-items: flex-start;\n        align-self: stretch;\n\n        border-radius: 12px;\n        border: 1px solid ${colors.grey[300]};\n        background: #fff;\n        box-shadow: 0 1px 1px 0 rgba(218, 218, 222, 0.25);\n\n        p {\n          color: rgba(${colorsRgb.grey[600]}, 0.7);\n          font-size: 14px;\n          font-style: normal;\n          font-weight: 400;\n          line-height: 22px; /* 169.231% */\n        }\n      }\n    }\n\n    &__footer {\n      display: flex;\n      padding: 20px 24px;\n      justify-content: flex-end;\n      align-items: flex-start;\n      gap: 12px;\n      align-self: stretch;\n      border-top: 1px solid ${colors.grey[300]};\n      background: #fff;\n    }\n\n    @keyframes zoom {\n      from {\n        transform: scale(0.95);\n      }\n      to {\n        transform: scale(1);\n      }\n    }\n\n    @keyframes fade {\n      from {\n        opacity: 0;\n      }\n      to {\n        opacity: 1;\n      }\n    }\n  }\n`\n\nexport const StyledDosageInput = styled.div`\n  width: 100%;\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  align-items: flex-start;\n\n  .suggestionsDropdown {\n    position: absolute;\n    top: calc(100% + 2px);\n\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    padding: 2px;\n    gap: 2px;\n\n    border-radius: 6px;\n    background: #fff;\n    box-shadow:\n      0 9px 28px 0 rgba(0, 0, 0, 0.05),\n      0 6px 16px 0 rgba(0, 0, 0, 0.08),\n      0 3px 6px 0 rgba(0, 0, 0, 0.12);\n  }\n`\n\nexport const suggestionItemOnAction = css`\n  background: ${colors.blue[300]};\n  color: ${colors.blue[800]} !important;\n`\n\nexport const StyledSuggestionItem = styled.li<{ $focused?: boolean; $disableHover: boolean }>`\n  width: 100%;\n  display: flex;\n  padding: 8px;\n  align-items: center;\n  align-self: stretch;\n\n  border-radius: 4px;\n  background: #fff;\n\n  color: ${colors.grey[900]};\n  font-family: 'Inter Variable', sans-serif;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 22px;\n\n  button {\n    background: none;\n  }\n\n  &:hover {\n    ${suggestionItemOnAction}\n  }\n\n  ${({ $focused }) =>\n    !!$focused &&\n    css`\n      ${suggestionItemOnAction}\n    `};\n\n  ${({ $disableHover }) =>\n    !!$disableHover &&\n    css`\n      &:hover {\n        background: none;\n      }\n    `};\n\n  ${({ $disableHover, $focused }) =>\n    !!$disableHover &&\n    $focused &&\n    css`\n      &:hover {\n        ${suggestionItemOnAction}\n      }\n    `};\n`\n","import React, { useState } from 'react'\n\nimport { PrescribedMedicationType } from '../../../types'\nimport { PrescriptionCard } from '../PrescriptionCard'\nimport { Button } from '../../form-elements/Button'\nimport { t } from '../../../services/i18n'\nimport { GlobalStyles } from '../../../styles'\nimport { StyledPrescriptionList } from './styles'\n\ninterface PrescriptionListProps {\n  handleModifyPrescription: (medication: PrescribedMedicationType) => void\n  handleDeletePrescription: (medication: PrescribedMedicationType) => void\n  prescribedMedications: PrescribedMedicationType[]\n  handleSendPrescriptions?: () => Promise<void>\n  handlePrintPrescriptions?: () => Promise<void>\n  hideSectionsTitles?: boolean\n}\n\nexport const PrescriptionList: React.FC<PrescriptionListProps> = ({\n  handleModifyPrescription,\n  handleDeletePrescription,\n  handleSendPrescriptions,\n  handlePrintPrescriptions,\n  prescribedMedications,\n  hideSectionsTitles,\n}) => {\n  const [printing, setPrinting] = useState(false)\n  const [sending, setSending] = useState(false)\n\n  const spinPrint = async (action: () => Promise<void>) => {\n    setPrinting(true)\n    await action()\n    setPrinting(false)\n  }\n\n  const spinSend = async (action: () => Promise<void>) => {\n    setSending(true)\n    await action()\n    setSending(false)\n  }\n\n  const sentPrescriptions = (): PrescribedMedicationType[] => {\n    return prescribedMedications.filter((item) => !!item.rid)\n  }\n\n  const pendingPrescriptions = (): PrescribedMedicationType[] => {\n    return prescribedMedications.filter((item) => !item.rid)\n  }\n\n  if (!prescribedMedications) return null\n\n  return (\n    <>\n      <GlobalStyles />\n      <StyledPrescriptionList className=\"StyledPrescriptionList\">\n        {sentPrescriptions().length !== 0 && (\n          <div className=\"cardinal-prescriptions\">\n            {!hideSectionsTitles && <p className=\"cardinal-prescriptions__title\">{t('prescription.list.sentTitle')}</p>}\n            <div className=\"cardinal-prescriptions__rows\">\n              {sentPrescriptions().map((medication, idx) => (\n                <PrescriptionCard\n                  key={medication.uuid || idx}\n                  prescribedMedication={medication}\n                  handleModifyPrescription={handleModifyPrescription}\n                  handleDeletePrescription={handleDeletePrescription}\n                />\n              ))}\n            </div>\n            {handlePrintPrescriptions && (\n              <div className=\"cardinal-prescriptions__footer\">\n                <Button\n                  disabled={sending}\n                  title={t('prescription.list.print')}\n                  handleClick={() => spinPrint(handlePrintPrescriptions)}\n                  view={printing && !sending ? 'withSpinner' : 'outlined'}\n                  type=\"button\"\n                />\n              </div>\n            )}\n          </div>\n        )}\n        {pendingPrescriptions().length !== 0 && (\n          <div className=\"cardinal-prescriptions\">\n            {!hideSectionsTitles && <p className=\"cardinal-prescriptions__title\"> {t('prescription.list.pendingTitle')}</p>}\n            <div className=\"cardinal-prescriptions__rows\">\n              {pendingPrescriptions().map((medication, idx) => (\n                <PrescriptionCard\n                  key={medication.uuid || idx}\n                  prescribedMedication={medication}\n                  handleModifyPrescription={handleModifyPrescription}\n                  handleDeletePrescription={handleDeletePrescription}\n                />\n              ))}\n            </div>\n            {(handlePrintPrescriptions || handleSendPrescriptions) && (\n              <div className=\"cardinal-prescriptions__footer\">\n                {handlePrintPrescriptions && (\n                  <Button\n                    disabled={sending}\n                    title={t('prescription.list.sendAndPrint')}\n                    handleClick={() => spinPrint(handlePrintPrescriptions)}\n                    view={printing ? 'withSpinner' : 'outlined'}\n                    type=\"submit\"\n                    form=\"prescriptionForm\"\n                  />\n                )}\n                {handleSendPrescriptions && (\n                  <Button\n                    disabled={printing}\n                    title={t('prescription.list.send')}\n                    view={sending && !printing ? 'withSpinner' : 'primary'}\n                    type=\"submit\"\n                    handleClick={() => spinSend(handleSendPrescriptions)}\n                  />\n                )}\n              </div>\n            )}\n          </div>\n        )}\n      </StyledPrescriptionList>\n    </>\n  )\n}\n","import styled, { css } from 'styled-components'\nimport { colors, colorsRgb, displayResolution, responsiveMediaQueries } from '../../../styles'\n\nexport const actionBtnCommonStyles = css`\n  background: none;\n  cursor: pointer;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  ${responsiveMediaQueries.down(displayResolution.s)`\n        width: 32px;\n        height: 32px;\n        border: 1px solid #eef6fe;\n        background: rgba(238, 246, 254, 0.3);\n        border-radius: 6px;\n    `};\n`\n\nexport const StyledPrescriptionCard = styled.div<{ $prescribed?: boolean }>`\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  padding: 8px 12px;\n  gap: 12px;\n  border-radius: 6px;\n  background: ${colors.blue[200]};\n  border: 1px solid ${colors.blue[100]};\n\n  &:hover {\n    border-radius: 6px;\n    border-color: ${colors.blue[500]};\n    box-shadow: 0 0 0 2px rgba(${colorsRgb.blue[500]}, 0.3);\n    background-color: white;\n  }\n\n  ${({ $prescribed }) =>\n    !!$prescribed &&\n    css`\n      background: ${colors.green[200]};\n      border-color: green;\n\n      &:hover {\n        border-color: green;\n        border-radius: inherit;\n        background: ${colors.green[200]};\n        box-shadow: inherit;\n      }\n    `};\n\n  .prescriptionCardHeader {\n    width: 83%;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    align-self: stretch;\n\n    ${responsiveMediaQueries.down(displayResolution.s)`\n      width: 100%;\n    `};\n\n    &__prescription {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n\n      &__content {\n        display: flex;\n        flex-direction: column;\n        justify-content: center;\n        align-items: flex-start;\n\n        &__title {\n          display: flex;\n          align-items: flex-start;\n          gap: 8px;\n\n          h3 {\n            color: ${colors.grey[900]};\n            font-size: 16px;\n            font-style: normal;\n            font-weight: 500;\n          }\n        }\n\n        p {\n          color: ${colors.grey[900]};\n          font-size: 14px;\n          font-style: normal;\n          font-weight: 300;\n          line-height: normal;\n        }\n      }\n    }\n  }\n\n  .actions {\n    width: 36px;\n    display: flex;\n    gap: 8px;\n\n    ${responsiveMediaQueries.down(displayResolution.s)`\n     width: 100%;\n      gap: 4px;\n    `};\n\n    .edit {\n      ${actionBtnCommonStyles};\n\n      &:hover {\n        svg {\n          path {\n            fill: ${colors.blue[500]};\n          }\n        }\n      }\n    }\n\n    .delete {\n      ${actionBtnCommonStyles};\n\n      &:hover {\n        svg {\n          path {\n            fill: ${colors.red[800]};\n          }\n        }\n      }\n    }\n  }\n\n  .rid {\n    font-size: 12px;\n    letter-spacing: 1.2px;\n    background-color: ${colors.green[500]};\n    color: white;\n    padding: 4px 8px;\n    border-radius: 4px;\n  }\n`\n","import React from 'react'\nimport { PrescribedMedicationType } from '../../../types'\nimport { DeleteIcn, EditIcn } from '../../common/Icons'\nimport { StyledPrescriptionCard } from './styles'\n\ninterface PrescriptionCardProps {\n  prescribedMedication: PrescribedMedicationType\n  handleModifyPrescription: (medication: PrescribedMedicationType) => void\n  handleDeletePrescription: (medication: PrescribedMedicationType) => void\n}\n\nexport const PrescriptionCard: React.FC<PrescriptionCardProps> = ({ prescribedMedication, handleModifyPrescription, handleDeletePrescription }) => {\n  return (\n    <StyledPrescriptionCard className=\"StyledPrescriptionCard\" $prescribed={!!prescribedMedication.rid}>\n      <div className=\"prescriptionCardHeader\">\n        <div className=\"prescriptionCardHeader__prescription\">\n          <div className=\"prescriptionCardHeader__prescription__content\">\n            <div className=\"prescriptionCardHeader__prescription__content__title\">\n              <h3>\n                {prescribedMedication.medication.medicinalProduct?.intendedname ??\n                  prescribedMedication.medication.substanceProduct?.intendedname ??\n                  prescribedMedication.medication.compoundPrescription}\n              </h3>\n            </div>\n            <p>{prescribedMedication.medication.instructionForPatient}</p>\n          </div>\n        </div>\n      </div>\n\n      {!prescribedMedication.rid ? (\n        <div className=\"actions\">\n          <button className=\"edit\" onClick={() => handleModifyPrescription(prescribedMedication)}>\n            <EditIcn />\n          </button>\n          <button className=\"delete\" onClick={() => handleDeletePrescription(prescribedMedication)}>\n            <DeleteIcn />\n          </button>\n        </div>\n      ) : (\n        <div className=\"rid\">{prescribedMedication.rid}</div>\n      )}\n    </StyledPrescriptionCard>\n  )\n}\n","import styled from 'styled-components'\nimport { colors, displayResolution, labelCommonStyles, responsiveMediaQueries } from '../../../styles'\n\nexport const StyledPrescriptionList = styled.div`\n  display: flex;\n  flex-direction: column;\n  gap: 24px;\n\n  .cardinal-prescriptions {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n\n    ${responsiveMediaQueries.down(displayResolution.m)`\n      width: 100%;\n      min-width: 100%;\n    `};\n\n    &__title {\n      ${labelCommonStyles}\n    }\n\n    &__rows {\n      width: 100%;\n      height: auto;\n      max-height: 380px;\n      overflow-y: scroll;\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      align-self: stretch;\n\n      padding: 6px 8px 6px 6px;\n      gap: 5px;\n      border-radius: 8px;\n      border: 1px solid ${colors.grey[300]};\n      background: white;\n    }\n\n    &__footer {\n      display: flex;\n      justify-content: flex-start;\n      align-items: flex-start;\n      gap: 12px;\n      align-self: stretch;\n      background: #fff;\n    }\n  }\n`\n","import React, { useEffect, useRef } from 'react'\nimport JsBarcode from 'jsbarcode'\nimport { PrescribedMedicationType } from '../../../types'\nimport { dateDecode } from '../../../utils/date-helpers'\nimport { HealthcareParty, Patient } from '@icure/be-fhc-lite-api'\nimport { t } from '../../../services/i18n'\nimport { StyledPrescriptionDocument } from './styles'\nimport { trim } from '../../../utils/string-helpers'\n\ninterface Props {\n  prescribedMedications: PrescribedMedicationType[]\n  prescriber: HealthcareParty\n  patient: Patient\n}\n\nfunction chunk<K>(arr: K[], chunkSize = 1, cache: K[][] = []) {\n  const tmp = [...arr]\n  if (chunkSize <= 0) return cache\n  while (tmp.length) cache.push(tmp.splice(0, chunkSize))\n  return cache\n}\n\nexport const PrescriptionDocumentToPrint: React.FC<Props> = ({ prescribedMedications, prescriber, patient }) => {\n  const chunks = chunk(prescribedMedications, 4)\n  const ridElements = useRef<(SVGSVGElement | null)[]>([])\n\n  useEffect(() => {\n    prescribedMedications.forEach((med, idx) => {\n      if (med.rid && ridElements.current[idx]) {\n        JsBarcode(ridElements.current[idx], med.rid, {\n          format: 'CODE128A',\n          lineColor: '#000',\n          width: 2,\n          height: 40,\n          displayValue: true,\n        })\n      }\n    })\n  }, [prescribedMedications])\n\n  const formatDate = (date: number | undefined): string | 0 => {\n    return (date && dateDecode(date)?.toLocaleDateString()) ?? '-'\n  }\n\n  return (\n    <StyledPrescriptionDocument className=\"StyledPrescriptionDocument\">\n      {prescribedMedications?.length\n        ? chunks.map((chunk, chunkIndex) => (\n            <div className=\"prescription-document\" key={chunkIndex}>\n              <div className=\"prescription-document__header\">\n                <h1>{t('prescription.pdf.title')}</h1>\n                <p>{t('prescription.pdf.instructions')}</p>\n              </div>\n              <div className=\"prescription-document__divider\"></div>\n              <div className=\"prescription-document__options\">\n                <h5>\n                  <strong>{t('prescription.pdf.options.title')}</strong>\n                </h5>\n                <ol>\n                  <li>{t('prescription.pdf.options.option1')}</li>\n                  <li>{t('prescription.pdf.options.option2')}</li>\n                </ol>\n              </div>\n              <div className=\"prescription-document__divider\"></div>\n\n              <div className=\"prescription-section\">\n                <div className=\"prescription-section__persons\">\n                  <p>\n                    <strong>{t('prescription.pdf.prescriber')}: </strong>\n                    {prescriber.lastName} {prescriber.firstName} {prescriber.nihii}\n                  </p>\n                  <p>\n                    <strong>{t('prescription.pdf.patient')}: </strong>\n                    {patient.lastName} {patient.firstName} {patient.ssin}\n                  </p>\n                </div>\n                <h3>{t('prescription.pdf.electronicContent')}</h3>\n                {chunk.map((prescription, prescriptionIndex) => (\n                  <div className=\"prescription-item\" key={prescriptionIndex}>\n                    <div className=\"prescription-item__block\">\n                      <p>\n                        {t('prescription.pdf.product')} {''}\n                        <strong>\n                          {trim(\n                            prescription.medication.medicinalProduct?.intendedname ??\n                              prescription.medication?.substanceProduct?.intendedname ??\n                              prescription.medication?.compoundPrescription ??\n                              '',\n                          )}\n                        </strong>\n                      </p>\n                      <p>\n                        {t('prescription.pdf.dosage')} {prescription.medication.instructionForPatient}\n                      </p>\n                      <p>\n                        {t('prescription.pdf.date')} {formatDate(prescription.medication.beginMoment)}\n                      </p>\n                      <p>\n                        {t('prescription.pdf.validUntil')} {prescription.medication.endMoment ? formatDate(prescription.medication.endMoment) : '-'}\n                      </p>\n                    </div>\n                    <div className=\"prescription-item__block prescription-item__block--right\">\n                      <strong className=\"ridTitle\">RID {prescriptionIndex + 1}</strong>\n                      <div className=\"barcode\">\n                        <svg ref={(el) => (ridElements.current[chunkIndex * 4 + prescriptionIndex] = el)} />\n                      </div>\n                    </div>\n                  </div>\n                ))}\n              </div>\n            </div>\n          ))\n        : null}\n    </StyledPrescriptionDocument>\n  )\n}\n","import styled from 'styled-components'\nimport { colors } from '../../../styles'\n\nexport const StyledPrescriptionDocument = styled.div`\n  @media print {\n    .prescription {\n      page-break-after: always;\n      border: none;\n    }\n  }\n\n  display: flex;\n  flex-direction: column;\n  gap: 24px;\n\n  .prescription-document {\n    border: 1px solid ${colors.grey[300]};\n    border-radius: 8px;\n    background-color: white;\n    padding: 24px;\n    font-size: 14px;\n\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n\n    &__divider {\n      border-top: 1px solid ${colors.grey[300]};\n    }\n\n    &__header {\n      text-align: center;\n\n      display: flex;\n      flex-direction: column;\n      gap: 4px;\n\n      h1 {\n        margin: 0;\n        font-size: 18px;\n        padding-bottom: 4px;\n      }\n    }\n\n    &__options {\n      display: flex;\n      flex-direction: column;\n      gap: 8px;\n    }\n  }\n\n  .prescription-section {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n\n    &__persons {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    h3 {\n      font-size: 14px;\n    }\n\n    .prescription-item {\n      display: flex;\n      align-items: flex-start;\n      justify-content: space-between;\n      padding: 24px 12px;\n      border-radius: 12px;\n      border: 1px dashed ${colors.grey[600]};\n\n      &__block {\n        display: flex;\n        flex-direction: column;\n        width: 48%;\n\n        &--right {\n          align-items: center;\n          width: auto;\n        }\n      }\n    }\n\n    .prescription-item:nth-child(even) {\n      flex-direction: row-reverse;\n    }\n  }\n\n  .barcode {\n    width: 200px;\n    height: 40px;\n    margin: 5px 0;\n    display: flex;\n    flex-direction: row;\n    align-items: flex-end;\n\n    svg {\n      height: 40px;\n    }\n  }\n`\n","import styled from 'styled-components'\nimport { colors, colorsRgb, displayResolution, responsiveMediaQueries } from '../../../styles'\n\nexport const StyledPrescriptionPrintModal = styled.div`\n  width: 100vw;\n  height: 100vh;\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1020;\n  display: flex;\n  background: rgba(${colorsRgb.blue[800]}, 0.3);\n\n  .contentWrap {\n    width: 900px;\n    height: 100%;\n    max-height: 100%;\n    border: none;\n    padding: 0;\n    margin: 0 0 0 auto;\n\n    ${responsiveMediaQueries.down(displayResolution.l)`\n       width: 100%;\n      border-radius: 0.2em;\n  `};\n  }\n\n  .content {\n    display: flex;\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    flex-direction: column;\n    align-items: flex-start;\n    align-self: stretch;\n\n    &__header {\n      display: flex;\n      padding: 20px 24px;\n      justify-content: space-between;\n      align-items: center;\n      align-self: stretch;\n\n      border-bottom: 1px solid ${colors.grey[300]};\n      background: #fff;\n\n      ${responsiveMediaQueries.down(displayResolution.l)`\n        padding: 20px 16px;\n      `};\n\n      h3 {\n        color: ${colors.grey[900]};\n        font-size: 16px;\n        font-style: normal;\n        font-weight: 500;\n        line-height: normal;\n      }\n\n      &__closeIcn {\n        width: 22px;\n        height: 22px;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        cursor: pointer;\n        background-color: #ffffff;\n        border-radius: 4px;\n\n        &:hover {\n          background-color: rgba(${colorsRgb.grey[300]} 0.4);\n        }\n      }\n    }\n\n    &__body {\n      width: 100%;\n      height: 100%;\n      overflow-y: auto;\n      padding: 24px 32px;\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      align-self: stretch;\n      flex: 1 0 0;\n      gap: 12px;\n      background-color: ${colors.blue[200]};\n\n      ${responsiveMediaQueries.down(displayResolution.l)`\n        padding: 16px;\n      `};\n\n      ${responsiveMediaQueries.down(displayResolution.s)`\n         padding: 8px;\n      `};\n\n      &__content {\n        width: 100%;\n        display: flex;\n        flex-direction: column;\n        align-items: flex-start;\n        align-self: stretch;\n        border-radius: 12px;\n        border: 1px solid ${colors.grey[300]};\n        background: #fff;\n        padding: 24px;\n        gap: 12px;\n\n        ${responsiveMediaQueries.down(displayResolution.l)`\n          padding: 18px;\n        `};\n      }\n\n      &__extraFieldsPreview {\n        display: flex;\n        width: 100%;\n        padding: 12px;\n        flex-direction: column;\n        align-items: flex-start;\n        align-self: stretch;\n\n        border-radius: 12px;\n        border: 1px solid ${colors.grey[300]};\n        background: #fff;\n        box-shadow: 0 1px 1px 0 rgba(218, 218, 222, 0.25);\n\n        p {\n          color: rgba(${colorsRgb.grey[600]}, 0.7);\n          font-size: 14px;\n          font-style: normal;\n          font-weight: 400;\n          line-height: 22px; /* 169.231% */\n        }\n      }\n    }\n\n    &__footer {\n      display: flex;\n      padding: 20px 24px;\n      justify-content: flex-end;\n      align-items: flex-start;\n      gap: 12px;\n      align-self: stretch;\n      border-top: 1px solid ${colors.grey[300]};\n      background: #fff;\n    }\n  }\n`\n","import React from 'react'\n\nimport { CloseIcn } from '../../common/Icons'\nimport { Button } from '../../form-elements/Button'\nimport { PrescriptionDocumentToPrint } from '../PrescriptionDocumentToPrint'\nimport { t } from '../../../services/i18n'\nimport { HealthcareParty, Patient } from '@icure/be-fhc-lite-api'\nimport { PrescribedMedicationType } from '../../../types'\nimport { GlobalStyles } from '../../../styles'\nimport { StyledPrescriptionPrintModal } from './styles'\n\ninterface PrintPrescriptionModalProps {\n  closeModal: () => void\n  prescribedMedications: PrescribedMedicationType[]\n  prescriber: HealthcareParty\n  patient: Patient\n}\n\nexport const PrescriptionPrintModal: React.FC<PrintPrescriptionModalProps> = ({ closeModal, prescribedMedications, prescriber, patient }) => {\n  const print = () => {\n    const div = document.getElementById('print-container')\n    if (div) {\n      const newdiv = div.cloneNode(true) as HTMLDivElement\n      newdiv.style.cssText = window.getComputedStyle(div).cssText\n      newdiv.id = 'new' + div.id\n      const hideFrame = document.createElement('iframe')\n      hideFrame.style.display = 'none'\n\n      function setPrint() {\n        const closePrint = () => {\n          document.body.removeChild(hideFrame)\n        }\n        if (hideFrame.contentWindow && hideFrame.contentDocument) {\n          const stylesheets = document.querySelectorAll(\"link[rel='stylesheet'], style\")\n          stylesheets.forEach((stylesheet) => {\n            hideFrame.contentDocument.head.appendChild(stylesheet.cloneNode(true))\n          })\n          hideFrame.contentDocument.body.appendChild(newdiv)\n          hideFrame.contentWindow.onbeforeunload = closePrint\n          hideFrame.contentWindow.onafterprint = closePrint\n          hideFrame.contentWindow.print()\n        }\n      }\n\n      hideFrame.onload = setPrint\n      hideFrame.src = 'about:blank'\n      document.body.appendChild(hideFrame)\n    }\n  }\n\n  return (\n    <>\n      <GlobalStyles />\n      <StyledPrescriptionPrintModal className=\"StyledPrescriptionPrintModal\">\n        <div className=\"contentWrap\">\n          <div className=\"content\">\n            <div className=\"content__header\">\n              <h3>{t('practitioner.printModal.title')}</h3>\n\n              <button className=\"content__header__closeIcn\" onClick={closeModal} type=\"reset\">\n                <CloseIcn />\n              </button>\n            </div>\n            <div className=\"content__body\">\n              <div id=\"print-container\">\n                <PrescriptionDocumentToPrint prescribedMedications={prescribedMedications} prescriber={prescriber} patient={patient} />\n              </div>\n            </div>\n            <div className=\"content__footer\">\n              <Button title={t('practitioner.printModal.close')} type=\"reset\" view={'outlined'} handleClick={closeModal} />\n              <Button title={t('practitioner.printModal.print')} type=\"submit\" view={'primary'} handleClick={print} />\n            </div>\n          </div>\n        </div>\n      </StyledPrescriptionPrintModal>\n    </>\n  )\n}\n"],"mappings":"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","names":["language","language","uuid","css","css","css","jsx","jsxs","styled","css","css","styled","jsx","styled","css","styled","css","jsx","jsxs","styled","styled","jsx","jsxs","styled","styled","jsx","jsxs","useEffect","useRef","useState","useState","React","styled","css","css","styled","jsx","jsxs","React","boundaryBox","styled","styled","jsx","jsxs","styled","styled","jsx","jsxs","styled","styled","jsx","jsxs","styled","styled","jsx","jsxs","styled","styled","Fragment","jsx","jsxs","styled","styled","jsx","jsxs","styled","styled","jsx","jsxs","useRef","styled","css","styled","css","Fragment","jsx","jsxs","useRef","styled","styled","Fragment","jsx","jsxs","styled","css","css","styled","jsx","jsxs","useState","useEffect","useRef","jsx","limit","dmpp","styled","css","styled","css","Fragment","jsx","jsxs","useState","useRef","useEffect","medications","molecules","products","medicationsPage","moleculesPage","productsPage","useEffect","useRef","useState","Medication","forwardRef","styled","css","styled","css","jsx","jsxs","forwardRef","forwardRef","styled","css","styled","css","jsx","jsxs","forwardRef","forwardRef","styled","styled","jsx","jsxs","forwardRef","React","styled","css","styled","css","jsx","jsxs","React","styled","css","styled","css","useForm","Fragment","jsx","jsxs","useState","useRef","useForm","language","useEffect","dosage","prescriptionsNumber","periodicityTimeUnit","recipeInstructionForPatient","instructionsForReimbursement","prescriberVisibility","pharmacistVisibility","Medication","useState","styled","css","css","styled","jsx","jsxs","styled","styled","Fragment","jsx","jsxs","useState","useEffect","useRef","styled","styled","jsx","jsxs","useRef","useEffect","chunk","styled","styled","Fragment","jsx","jsxs"]}