From 86df94bac6b1d514b524b3dbf279a96241a072f4 Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Tue, 29 Oct 2024 13:58:51 +0530 Subject: [PATCH 1/8] update condition to render component --- src/components/Patient/SampleTest.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Patient/SampleTest.tsx b/src/components/Patient/SampleTest.tsx index 4c158ff7189..135342321a8 100644 --- a/src/components/Patient/SampleTest.tsx +++ b/src/components/Patient/SampleTest.tsx @@ -214,7 +214,7 @@ export const SampleTest = ({ facilityId, patientId }: any) => { optionValue={(option) => option.id} /> - {state.form.sample_type === "OTHER TYPE" && ( + {state.form.sample_type === "9" && ( Date: Tue, 29 Oct 2024 17:09:56 +0530 Subject: [PATCH 2/8] Add Other Type Text in sample detail --- src/components/Patient/SampleDetails.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/Patient/SampleDetails.tsx b/src/components/Patient/SampleDetails.tsx index 2e8b93c7bb4..39dda2412d2 100644 --- a/src/components/Patient/SampleDetails.tsx +++ b/src/components/Patient/SampleDetails.tsx @@ -25,6 +25,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { if (!(res?.ok && data)) { navigate("/not-found"); } + console.log(data); }, }, ); @@ -411,13 +412,21 @@ export const SampleDetails = ({ id }: DetailRoute) => { )} {sampleDetails?.sample_type && ( -
+
Sample Type:{" "} {_.startCase(_.camelCase(sampleDetails.sample_type))}
)} + {sampleDetails?.sample_type === "OTHER TYPE" && ( +
+ + Sample Type Description: + + {sampleDetails?.sample_type_other} +
+ )}
From eab447a8d1dc01b36c652c9349a87d1b500b18ce Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Wed, 30 Oct 2024 13:38:57 +0530 Subject: [PATCH 3/8] Add Requested Changes and Translation --- src/Locale/en.json | 22 +++ src/components/Patient/SampleDetails.tsx | 164 ++++++++++++++--------- 2 files changed, 121 insertions(+), 65 deletions(-) diff --git a/src/Locale/en.json b/src/Locale/en.json index 784dd9d3905..d1d77fc3a68 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -303,6 +303,7 @@ "are_you_still_watching": "Are you still watching?", "are_you_sure_want_to_delete": "Are you sure you want to delete {{name}}?", "are_you_sure_want_to_delete_this_record": "Are you sure want to delete this record?", + "ari": "ARI - Acute Respiratory illness", "asset_class": "Asset Class", "asset_location": "Asset Location", "asset_name": "Asset Name", @@ -313,6 +314,7 @@ "assigned_facility": "Facility assigned", "assigned_to": "Assigned to", "async_operation_warning": "This operation may take some time. Please check back later.", + "atypical_presentation_details": "Atypical presentation details", "audio__allow_permission": "Please allow microphone permission in site settings", "audio__allow_permission_button": "Click here to know how to allow", "audio__allow_permission_helper": "You might have denied microphone access in the past.", @@ -479,6 +481,8 @@ "contact_person_at_the_facility": "Contact person at the current facility", "contact_person_number": "Contact person number", "contact_phone": "Contact Person Number", + "contact_with_confirmed_carrier": "Contact with confirmed carrier", + "contact_with_suspected_carrier": "Contact with suspected carrier", "contact_your_admin_to_add_skills": "Contact your admin to add skills", "continue": "Continue", "continue_watching": "Continue watching", @@ -543,6 +547,7 @@ "diagnosis_at_discharge": "Diagnosis at Discharge", "diastolic": "Diastolic", "differential": "Differential", + "differential_diagnosis": "Differential diagnosis", "discard": "Discard", "discharge": "Discharge", "discharge_from_care": "Discharge from CARE", @@ -560,7 +565,9 @@ "district": "District", "district_program_management_supporting_unit": "District Program Management Supporting Unit", "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", + "doctors_name": "Doctor's Name", "domestic_healthcare_support": "Domestic healthcare support", + "domestic_international_travel": "Domestic/international Travel (within last 28 days)", "done": "Done", "dosage": "Dosage", "down": "Down", @@ -627,6 +634,7 @@ "error_while_deleting_record": "Error while deleting record", "escape": "Escape", "estimated_contact_date": "Estimated contact date", + "etiology_identified": "Etiology identified", "events": "Events", "expand_sidebar": "Expand Sidebar", "expected_burn_rate": "Expected Burn Rate", @@ -640,6 +648,7 @@ "facility_search_placeholder": "Search by Facility / District Name", "facility_type": "Facility Type", "failed_to_link_abha_number": "Failed to link ABHA Number. Please try again later.", + "fast_track_testing_reason": "Fast track testing reason", "features": "Features", "feed_configurations": "Feed Configurations", "feed_is_currently_not_live": "Feed is currently not live", @@ -685,6 +694,7 @@ "goal": "Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.", "granted_on": "Granted On", "has_domestic_healthcare_support": "Has domestic healthcare support?", + "has_sari": "Has SARI (Severe Acute Respiratory illness)?", "health_facility__config_registration_error": "Health ID registration failed", "health_facility__config_update_error": "Health Facility config update failed", "health_facility__config_update_success": "Health Facility config updated successfully", @@ -718,6 +728,7 @@ "hubs": "Hub Facilities", "i_declare": "I hereby declare that:", "icd11_as_recommended": "As per ICD-11 recommended by WHO", + "icmr_specimen_referral_form": "ICMR Specimen Referral Form", "incomplete_patient_details_warning": "Patient details are incomplete. Please update the details before proceeding.", "inconsistent_dosage_units_error": "Dosage units must be same", "indian_mobile": "Indian Mobile", @@ -752,15 +763,18 @@ "investigations_suggested": "Investigations Suggested", "is": "Is", "is_antenatal": "Is Antenatal", + "is_atypical_presentation": "Is Atypical presentation", "is_declared_positive": "Whether declared positive", "is_emergency": "Is emergency", "is_emergency_case": "Is emergency case", "is_it_upshift": "is it upshift", "is_this_an_emergency": "Is this an emergency?", "is_this_an_upshift": "Is this an upshift?", + "is_unusual_course": "Is unusual course", "is_up_shift": "Is up shift", "is_upshift_case": "Is upshift case", "is_vaccinated": "Whether vaccinated", + "label": "Label", "landline": "Indian landline", "language_selection": "Language Selection", "last_administered": "Last administered", @@ -890,6 +904,7 @@ "notice_board": "Notice Board", "notification_permission_denied": "Notification permission denied", "notification_permission_granted": "Notification permission granted", + "number_of_aged_dependents": "Number of Aged Dependents (Above 60)", "number_of_aged_dependents_above_60": "Number Of Aged Dependents (Above 60)", "number_of_beds": "Number of beds", "number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100", @@ -924,6 +939,7 @@ "password_reset_failure": "Password Reset Failed", "password_reset_success": "Password Reset successfully", "password_sent": "Password Reset Email Sent", + "patient": "Patient", "patient_address": "Patient Address", "patient_body": "Patient Body", "patient_category": "Patient Category", @@ -1065,6 +1081,7 @@ "result": "Result", "result_date": "Result Date", "result_details": "Result details", + "result_on": "Result on", "resume": "Resume", "retake": "Retake", "return_to_care": "Return to CARE", @@ -1078,7 +1095,11 @@ "sample_collection_date": "Sample Collection Date", "sample_format": "Sample Format", "sample_test": "Sample Test", + "sample_test_details": "Sample Test Details", + "sample_test_history": "Sample Test History", "sample_type": "Sample Type", + "sample_type_description": "Sample Type Description", + "sari": "SARI - Severe Acute Respiratory illness", "save": "Save", "save_and_continue": "Save and Continue", "save_investigation": "Save Investigation", @@ -1167,6 +1188,7 @@ "tachycardia": "Tachycardia", "target_dosage": "Target Dosage", "test_type": "Type of test done", + "tested_on": "Tested on", "third_party_software_licenses": "Third Party Software Licenses", "titrate_dosage": "Titrate Dosage", "to_be_conducted": "To be conducted", diff --git a/src/components/Patient/SampleDetails.tsx b/src/components/Patient/SampleDetails.tsx index 39dda2412d2..cbc5c0026cc 100644 --- a/src/components/Patient/SampleDetails.tsx +++ b/src/components/Patient/SampleDetails.tsx @@ -14,7 +14,10 @@ import useQuery from "../../Utils/request/useQuery"; import routes from "../../Redux/api"; import Loading from "@/components/Common/Loading"; +import { useTranslation } from "react-i18next"; + export const SampleDetails = ({ id }: DetailRoute) => { + const { t } = useTranslation(); const { loading: isLoading, data: sampleDetails } = useQuery( routes.getTestSample, { @@ -25,16 +28,15 @@ export const SampleDetails = ({ id }: DetailRoute) => { if (!(res?.ok && data)) { navigate("/not-found"); } - console.log(data); }, }, ); const yesOrNoBadge = (param: any) => param ? ( - Yes + {t("yes")} ) : ( - No + {t("no")} ); const showPatientCard = (patientData: any) => { @@ -50,20 +52,24 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- Name: + + {t("name")}:{" "} + {patientData?.name}
{patientData?.is_medical_worker && (
- Medical Worker:{" "} + {t("medical_worker")}:{" "} + + + {t("yes")} - Yes
)}
- Disease Status:{" "} + {t("disease_status")}:{" "} {patientData?.disease_status} @@ -71,16 +77,20 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- SRF ID: + + {t("srf_id")}:{" "} + {(patientData?.srf_id && patientData?.srf_id) || "-"}
- Test Type: + + {t("test_type")}:{" "} + {(patientData?.test_type && testType) || "-"}
- Date of Test:{" "} + {t("date_of_test")}:{" "} {(patientData?.date_of_test && formatDateTime(patientData?.date_of_test)) || @@ -88,35 +98,43 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- Facility: + + {t("facility")}:{" "} + {patientData?.facility_object?.name || "-"}
{patientData?.date_of_birth ? (
- Date of birth:{" "} + {t("date_of_birth")}:{" "} {patientData?.date_of_birth}
) : (
- Age: + + {t("age")}:{" "} + {formatPatientAge(patientData)}
)}
- Gender: + + {t("gender")}:{" "} + {patientGender}
- Phone: + + {t("phone")}:{" "} + {patientData?.phone_number || "-"}
- Nationality:{" "} + {t("nationality")}:{" "} {patientData?.nationality || "-"}
@@ -124,14 +142,14 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- Blood Group:{" "} + {t("blood_group")}:{" "} {patientData?.blood_group || "-"}
{patientData?.nationality !== "India" && (
- Passport Number:{" "} + {t("passport_number")}:{" "} {patientData?.passport_no || "-"}
@@ -139,56 +157,60 @@ export const SampleDetails = ({ id }: DetailRoute) => { {patientData?.nationality === "India" && ( <>
- State: + + {t("state")}:{" "} + {patientData?.state_object?.name}
- District:{" "} + {t("district")}:{" "} {patientData?.district_object?.name || "-"}
- Local Body:{" "} + {t("local_body")}:{" "} {patientData?.local_body_object?.name || "-"}
)}
- Address: + + {t("address")}:{" "} + {patientData?.address || "-"}
- Contact with confirmed carrier:{" "} + {t("contact_with_confirmed_carrier")}:{" "} {yesOrNoBadge(patientData?.contact_with_confirmed_carrier)}
- Contact with suspected carrier:{" "} + {t("contact_with_suspected_carrier")}:{" "} {yesOrNoBadge(patientData?.contact_with_suspected_carrier)}
{patientData?.estimated_contact_date && (
- Estimated contact date:{" "} + {t("estimated_contact_date")}:{" "} {formatDateTime(patientData?.estimated_contact_date)}
)}
- Has SARI (Severe Acute Respiratory illness)?:{" "} + {t("has_sari")}:{" "} {yesOrNoBadge(patientData?.has_SARI)}
- Domestic/international Travel (within last 28 days):{" "} + {t("domestic_international_travel")}:{" "} {yesOrNoBadge(patientData?.past_travel)}
@@ -196,7 +218,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { !!patientData?.countries_travelled.length && (
- Countries travelled:{" "} + {t("countries_travelled")}:{" "} {patientData?.countries_travelled.join(", ")}
@@ -204,7 +226,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {patientData?.ongoing_medication && (
- Ongoing Medications{" "} + {t("ongoing_medications")}{" "} {patientData?.ongoing_medication}
@@ -212,7 +234,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {patientData?.allergies && (
- Allergies:{" "} + {t("allergies")}:{" "} {patientData?.allergies}
@@ -220,7 +242,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {!!patientData?.number_of_aged_dependents && (
- Number Of Aged Dependents (Above 60):{" "} + {t("number_of_aged_dependents")}:{" "} {patientData?.number_of_aged_dependents}
@@ -228,7 +250,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {!!patientData?.number_of_chronic_diseased_dependents && (
- Number Of Chronic Diseased Dependents:{" "} + {t("number_of_chronic_diseased_dependents")}:{" "} {patientData?.number_of_chronic_diseased_dependents}
@@ -244,19 +266,25 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- Status: {" "} + + {t("status")}:{" "} + {" "} {_.startCase(_.camelCase(flow.status))}
- Label:{" "} + {t("label")}:{" "} {_.capitalize(flow.notes)}
- Created On :{" "} + + {t("created_on")}: + {" "} {flow.created_date ? formatDateTime(flow.created_date) : "-"}
- Modified on:{" "} + + {t("modified_on")}: + {" "} {flow.modified_date ? formatDateTime(flow.modified_date) : "-"}
@@ -270,7 +298,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { return ( { - ICMR Specimen Referral Form + {t("icmr_specimen_referral_form")}
) @@ -288,34 +316,42 @@ export const SampleDetails = ({ id }: DetailRoute) => {
- Status:{" "} + {t("status")}:{" "} {sampleDetails?.status}
- Result:{" "} + {t("result")}:{" "} {sampleDetails?.result}
- Patient: + + {t("patient")}:{" "} + {sampleDetails?.patient_name}
{sampleDetails?.facility_object && (
- Facility: + + {t("facility")}:{" "} + {sampleDetails?.facility_object.name}
)}
- Tested on: + + {t("tested_on")}:{" "} + {sampleDetails?.date_of_result ? formatDateTime(sampleDetails.date_of_result) : "-"}
- Result on: + + {t("result_on")}:{" "} + {sampleDetails?.date_of_result ? formatDateTime(sampleDetails.date_of_result) : "-"} @@ -323,7 +359,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {sampleDetails?.fast_track && (
- Fast track testing reason:{" "} + {t("fast_track_testing_reason")}:{" "} {sampleDetails.fast_track}
@@ -331,21 +367,23 @@ export const SampleDetails = ({ id }: DetailRoute) => { {sampleDetails?.doctor_name && (
- Doctor's Name:{" "} + {t("doctors_name")}:{" "} {_.startCase(_.camelCase(sampleDetails.doctor_name))}
)} {sampleDetails?.diagnosis && (
- Diagnosis: + + {t("diagnosis")}:{" "} + {sampleDetails.diagnosis}
)} {sampleDetails?.diff_diagnosis && (
- Differential diagnosis:{" "} + {t("differential_diagnosis")}:{" "} {sampleDetails?.diff_diagnosis}
@@ -353,52 +391,48 @@ export const SampleDetails = ({ id }: DetailRoute) => { {sampleDetails?.etiology_identified && (
- Etiology identified:{" "} + {t("etiology_identified")}:{" "} {sampleDetails.etiology_identified}
)}
- Is Atypical presentation{" "} + {t("is_atypical_presentation")}{" "} {yesOrNoBadge(sampleDetails?.is_atypical_presentation)}
- Is unusual course{" "} + {t("is_unusual_course")}{" "} {yesOrNoBadge(sampleDetails?.is_unusual_course)}
{sampleDetails?.atypical_presentation && (
- Atypical presentation details:{" "} + {t("atypical_presentation_details")}:{" "} {sampleDetails.atypical_presentation}
)}
- - SARI - Severe Acute Respiratory illness{" "} - + {t("sari")} {yesOrNoBadge(sampleDetails?.has_sari)}
- - ARI - Acute Respiratory illness{" "} - + {t("ari")} {yesOrNoBadge(sampleDetails?.has_ari)}
- Contact with confirmed carrier{" "} + {t("contact_with_confirmed_carrier")}{" "} {yesOrNoBadge(sampleDetails?.patient_has_confirmed_contact)}
- Contact with suspected carrier{" "} + {t("contact_with_suspected_carrier")}{" "} {yesOrNoBadge(sampleDetails?.patient_has_suspected_contact)}
@@ -406,7 +440,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { sampleDetails.patient_travel_history.length !== 0 && (
- Countries travelled:{" "} + {t("countries_travelled")}:{" "} {sampleDetails.patient_travel_history}
@@ -414,7 +448,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {sampleDetails?.sample_type && (
- Sample Type:{" "} + {t("sample_type")}:{" "} {_.startCase(_.camelCase(sampleDetails.sample_type))}
@@ -422,7 +456,7 @@ export const SampleDetails = ({ id }: DetailRoute) => { {sampleDetails?.sample_type === "OTHER TYPE" && (
- Sample Type Description: + {t("sample_type_description")}:{" "} {sampleDetails?.sample_type_other}
@@ -431,12 +465,12 @@ export const SampleDetails = ({ id }: DetailRoute) => {
-

Details of patient

+

{t("details_of_patient")}

{showPatientCard(sampleDetails?.patient_object)}
-

Sample Test History

+

{t("sample_test_history")}

{sampleDetails?.flow && sampleDetails.flow.map((flow: FlowModel) => renderFlow(flow))}
From be112a69c8cab1bc4f47cc78f35c131b247dedc5 Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Wed, 30 Oct 2024 14:33:29 +0530 Subject: [PATCH 4/8] fix lint issue --- src/components/Patient/SampleDetails.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Patient/SampleDetails.tsx b/src/components/Patient/SampleDetails.tsx index cfb091cc443..f20d1a9eb7d 100644 --- a/src/components/Patient/SampleDetails.tsx +++ b/src/components/Patient/SampleDetails.tsx @@ -1,4 +1,3 @@ - import { FlowModel } from "./models"; import { GENDER_TYPES, TEST_TYPE_CHOICES } from "@/common/constants"; @@ -485,4 +484,4 @@ export const SampleDetails = ({ id }: DetailRoute) => { /> ); -}; \ No newline at end of file +}; From 97bb3f6d5c144c1dba29b4b3717c8153cc04df05 Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Tue, 5 Nov 2024 17:17:38 +0530 Subject: [PATCH 5/8] Update sample type condition --- src/components/Patient/SampleTestCard.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/Patient/SampleTestCard.tsx b/src/components/Patient/SampleTestCard.tsx index e4b29350ff8..e14a50c100d 100644 --- a/src/components/Patient/SampleTestCard.tsx +++ b/src/components/Patient/SampleTestCard.tsx @@ -108,10 +108,7 @@ export const SampleTestCard = (props: SampleDetailsProps) => { Sample Type{" "}
- {(itemData.sample_type !== "OTHER TYPE" - ? itemData.sample_type - : itemData.sample_type_other - )?.toLowerCase()} + {itemData.sample_type?.toLowerCase()}
From e116ae07099d83fccd8f426ed8c4381c2b00ab68 Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Thu, 7 Nov 2024 10:16:04 +0530 Subject: [PATCH 6/8] Removing Unnecessary Files --- public/locale/en.json | 1294 ++++++++++++++++++++++ src/components/Patient/SampleDetails.tsx | 29 +- 2 files changed, 1309 insertions(+), 14 deletions(-) create mode 100644 public/locale/en.json diff --git a/public/locale/en.json b/public/locale/en.json new file mode 100644 index 00000000000..686bdb79216 --- /dev/null +++ b/public/locale/en.json @@ -0,0 +1,1294 @@ +{ + "404_message": "It appears that you have stumbled upon a page that either does not exist or has been moved to another URL. Make sure you have entered the correct link!", + "APPETITE__CANNOT_BE_ASSESSED": "Cannot be assessed", + "APPETITE__INCREASED": "Increased", + "APPETITE__NO_TASTE_FOR_FOOD": "No taste for food", + "APPETITE__REDUCED": "Reduced", + "APPETITE__SATISFACTORY": "Satisfactory", + "AUTOMATED": "Automated", + "BED_WITH_OXYGEN_SUPPORT": "Bed with Oxygen Support", + "BLADDER_DRAINAGE__CONDOM_CATHETER": "Condom Catheter", + "BLADDER_DRAINAGE__CONTINUOUS_INDWELLING_CATHETER": "Continuous Indwelling Catheter", + "BLADDER_DRAINAGE__CONTINUOUS_SUPRAPUBIC_CATHETER": "Continuous Suprapubic Catheter", + "BLADDER_DRAINAGE__DIAPER": "Diaper", + "BLADDER_DRAINAGE__INTERMITTENT_CATHETER": "Intermittent Catheter", + "BLADDER_DRAINAGE__NORMAL": "Normal", + "BLADDER_DRAINAGE__UROSTOMY": "Urostomy", + "BLADDER_ISSUE__HESITANCY": "Hesitancy", + "BLADDER_ISSUE__INCONTINENCE": "Incontinence", + "BLADDER_ISSUE__NO_ISSUES": "No issues", + "BLADDER_ISSUE__RETENTION": "Retention", + "BOWEL_ISSUE__CONSTIPATION": "Constipation", + "BOWEL_ISSUE__DIARRHOEA": "Diarrhoea", + "BOWEL_ISSUE__NO_DIFFICULTY": "No difficulty", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "Agitated or Confused", + "CONSCIOUSNESS_LEVEL__ALERT": "Alert", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "Onset of Agitation and Confusion", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "Responds to Pain", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "Responds to Voice", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "Unresponsive", + "CONSULTATION_TAB__ABDM": "ABDM Records", + "CONSULTATION_TAB__ABG": "ABG", + "CONSULTATION_TAB__DIALYSIS": "Dialysis", + "CONSULTATION_TAB__FEED": "Feed", + "CONSULTATION_TAB__FILES": "Files", + "CONSULTATION_TAB__INVESTIGATIONS": "Investigations", + "CONSULTATION_TAB__MEDICINES": "Medicines", + "CONSULTATION_TAB__NEUROLOGICAL_MONITORING": "Neuro", + "CONSULTATION_TAB__NURSING": "Nursing", + "CONSULTATION_TAB__NUTRITION": "Nutrition", + "CONSULTATION_TAB__PRESSURE_SORE": "Pressure Sore", + "CONSULTATION_TAB__SUMMARY": "Vitals", + "CONSULTATION_TAB__UPDATES": "Overview", + "CONSULTATION_TAB__VENTILATOR": "Ventilation", + "Cancel": "Cancel", + "DD/MM/YYYY": "DD/MM/YYYY", + "DOCTORS_LOG": "Progress Note", + "DOMESTIC_HEALTHCARE_SUPPORT__FAMILY_MEMBER": "Family member", + "DOMESTIC_HEALTHCARE_SUPPORT__NO_SUPPORT": "No support", + "DOMESTIC_HEALTHCARE_SUPPORT__PAID_CAREGIVER": "Paid caregiver", + "GENDER__1": "Male", + "GENDER__2": "Female", + "GENDER__3": "Non-binary", + "HEARTBEAT_RHYTHM__IRREGULAR": "Irregular", + "HEARTBEAT_RHYTHM__REGULAR": "Regular", + "HEARTBEAT_RHYTHM__UNKNOWN": "Unknown", + "ICU": "ICU", + "INSULIN_INTAKE_FREQUENCY__BD": "Twice a day (BD)", + "INSULIN_INTAKE_FREQUENCY__OD": "Once a day (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "Thrice a day (TD)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "Unknown", + "ISOLATION": "Isolation", + "KASP Empanelled": "KASP Empanelled", + "LIMB_RESPONSE__EXTENSION": "Extension", + "LIMB_RESPONSE__FLEXION": "Flexion", + "LIMB_RESPONSE__MODERATE": "Moderate", + "LIMB_RESPONSE__NONE": "None", + "LIMB_RESPONSE__STRONG": "Strong", + "LIMB_RESPONSE__UNKNOWN": "Unknown", + "LIMB_RESPONSE__WEAK": "Weak", + "LOG_UPDATE_CREATED_NOTIFICATION": "{{ roundType }} created successfully", + "LOG_UPDATE_FIELD_LABEL__action": "Action", + "LOG_UPDATE_FIELD_LABEL__appetite": "Appetite", + "LOG_UPDATE_FIELD_LABEL__bladder_drainage": "Drainage", + "LOG_UPDATE_FIELD_LABEL__bladder_issue": "Issues", + "LOG_UPDATE_FIELD_LABEL__blood_sugar_level": "Blood Sugar Level", + "LOG_UPDATE_FIELD_LABEL__bowel_issue": "Bowel", + "LOG_UPDATE_FIELD_LABEL__bp": "Blood Pressure", + "LOG_UPDATE_FIELD_LABEL__consciousness_level": "Level of Consciousness", + "LOG_UPDATE_FIELD_LABEL__is_experiencing_dysuria": "Experiences Dysuria?", + "LOG_UPDATE_FIELD_LABEL__nutrition_route": "Nutrition Route", + "LOG_UPDATE_FIELD_LABEL__oral_issue": "Oral issues", + "LOG_UPDATE_FIELD_LABEL__other_details": "Other details", + "LOG_UPDATE_FIELD_LABEL__patient_category": "Category", + "LOG_UPDATE_FIELD_LABEL__physical_examination_info": "Physical Examination Info", + "LOG_UPDATE_FIELD_LABEL__pulse": "Pulse", + "LOG_UPDATE_FIELD_LABEL__resp": "Respiratory Rate", + "LOG_UPDATE_FIELD_LABEL__review_interval": "Review after", + "LOG_UPDATE_FIELD_LABEL__rhythm": "Heartbeat Rhythm", + "LOG_UPDATE_FIELD_LABEL__rhythm_detail": "Rhythm Description", + "LOG_UPDATE_FIELD_LABEL__rounds_type": "Rounds Type", + "LOG_UPDATE_FIELD_LABEL__sleep": "Sleep", + "LOG_UPDATE_FIELD_LABEL__temperature": "Temperature", + "LOG_UPDATE_FIELD_LABEL__urination_frequency": "Frequency of Urination", + "LOG_UPDATE_FIELD_LABEL__ventilator_spo2": "SpO₂", + "LOG_UPDATE_UPDATED_NOTIFICATION": "{{ roundType }} updated successfully", + "NORMAL": "Brief Update", + "NURSING_CARE_PROCEDURE__ascitic_tapping": "Ascitic Tapping", + "NURSING_CARE_PROCEDURE__bed_bath": "Bed Bath", + "NURSING_CARE_PROCEDURE__catheter_care": "Catheter Care", + "NURSING_CARE_PROCEDURE__catheter_change": "Catheter Change", + "NURSING_CARE_PROCEDURE__chest_tube_care": "Chest Tube Care", + "NURSING_CARE_PROCEDURE__colostomy_care": "Colostomy Care", + "NURSING_CARE_PROCEDURE__colostomy_change": "Colostomy Change", + "NURSING_CARE_PROCEDURE__dressing": "Dressing", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT Pump Stocking", + "NURSING_CARE_PROCEDURE__eye_care": "Eye Care", + "NURSING_CARE_PROCEDURE__hair_care": "Hair Care", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV Site Care", + "NURSING_CARE_PROCEDURE__lymphedema_care": "Lymphedema Care", + "NURSING_CARE_PROCEDURE__nubulisation": "Nubulisation", + "NURSING_CARE_PROCEDURE__oral_care": "Oral Care", + "NURSING_CARE_PROCEDURE__perineal_care": "Perineal Care", + "NURSING_CARE_PROCEDURE__personal_hygiene": "Other Personal Hygiene", + "NURSING_CARE_PROCEDURE__positioning": "Positioning", + "NURSING_CARE_PROCEDURE__pre_enema": "P.R.E. Enema", + "NURSING_CARE_PROCEDURE__restrain": "Restrain", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "Ryle’s Tube Care", + "NURSING_CARE_PROCEDURE__ryles_tube_change": "Ryle’s Tube Change", + "NURSING_CARE_PROCEDURE__skin_care": "Skin Care", + "NURSING_CARE_PROCEDURE__stoma_care": "Stoma Care", + "NURSING_CARE_PROCEDURE__suctioning": "Suctioning", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "Tracheostomy Care", + "NURSING_CARE_PROCEDURE__tracheostomy_tube_change": "Tracheostomy Tube Change", + "NURSING_CARE_PROCEDURE__wound_dressing": "Wound Dressing", + "NUTRITION_ROUTE__GASTROSTOMY_OR_JEJUNOSTOMY": "Gastrostomy / Jejunostomy", + "NUTRITION_ROUTE__ORAL": "Oral", + "NUTRITION_ROUTE__PARENTERAL_TUBING_FLUID": "Parenteral Tubing (Fluid)", + "NUTRITION_ROUTE__PARENTERAL_TUBING_TPN": "Parenteral Tubing (TPN)", + "NUTRITION_ROUTE__PEG": "PEG", + "NUTRITION_ROUTE__RYLES_TUBE": "Ryle's Tube", + "Notifications": "Notifications", + "ORAL_ISSUE__DYSPHAGIA": "Dysphagia", + "ORAL_ISSUE__NO_ISSUE": "No issues", + "ORAL_ISSUE__ODYNOPHAGIA": "Odynophagia", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "High Flow Nasal Cannula", + "OXYGEN_MODALITY__NASAL_PRONGS": "Nasal Prongs", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "Non Rebreathing Mask", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "Simple Face Mask", + "PRESCRIPTION_FREQUENCY_BD": "Twice daily", + "PRESCRIPTION_FREQUENCY_HS": "Night only", + "PRESCRIPTION_FREQUENCY_OD": "Once daily", + "PRESCRIPTION_FREQUENCY_Q4H": "4th hourly", + "PRESCRIPTION_FREQUENCY_QID": "6th hourly", + "PRESCRIPTION_FREQUENCY_QOD": "Alternate day", + "PRESCRIPTION_FREQUENCY_QWK": "Once a week", + "PRESCRIPTION_FREQUENCY_STAT": "Imediately", + "PRESCRIPTION_FREQUENCY_TID": "8th hourly", + "PRESCRIPTION_ROUTE_IM": "IM", + "PRESCRIPTION_ROUTE_INHALATION": "Inhalation", + "PRESCRIPTION_ROUTE_INTRATHECAL": "intrathecal injection", + "PRESCRIPTION_ROUTE_IV": "IV", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "Nasogastric / Gastrostomy tube", + "PRESCRIPTION_ROUTE_ORAL": "Oral", + "PRESCRIPTION_ROUTE_RECTAL": "Rectal", + "PRESCRIPTION_ROUTE_SC": "S/C", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "Sublingual", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "Transdermal", + "PUPIL_REACTION__BRISK": "Brisk", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "Cannot be assessed", + "PUPIL_REACTION__FIXED": "Fixed", + "PUPIL_REACTION__SLUGGISH": "Sluggish", + "PUPIL_REACTION__UNKNOWN": "Unknown", + "REGULAR": "Regular", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O₂ Support", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "None", + "RESPIRATORY_SUPPORT__INVASIVE": "Invasive ventilator (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "Non-Invasive ventilator (NIV)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "Oxygen Support", + "RESPIRATORY_SUPPORT__UNKNOWN": "None", + "ROUNDS_TYPE__AUTOMATED": "Virtual Nursing Assistant", + "ROUNDS_TYPE__COMMUNITY_NURSES_LOG": "Community Nurse's Log", + "ROUNDS_TYPE__DOCTORS_LOG": "Progress Note", + "ROUNDS_TYPE__NORMAL": "Brief Update", + "ROUNDS_TYPE__TELEMEDICINE": "Tele-medicine Log", + "ROUNDS_TYPE__VENTILATOR": "Detailed Update", + "SLEEP__EXCESSIVE": "Excessive", + "SLEEP__NO_SLEEP": "No sleep", + "SLEEP__SATISFACTORY": "Satisfactory", + "SLEEP__UNSATISFACTORY": "Unsatisfactory", + "SOCIOECONOMIC_STATUS__MIDDLE_CLASS": "Middle Class", + "SOCIOECONOMIC_STATUS__POOR": "Poor", + "SOCIOECONOMIC_STATUS__VERY_POOR": "Very Poor", + "SOCIOECONOMIC_STATUS__WELL_OFF": "Well Off", + "SORT_OPTIONS__-bed__name": "Bed No. N-1", + "SORT_OPTIONS__-category_severity": "Highest Severity category first", + "SORT_OPTIONS__-created_date": "Latest created date first", + "SORT_OPTIONS__-modified_date": "Latest updated date first", + "SORT_OPTIONS__-name": "Patient name Z-A", + "SORT_OPTIONS__-review_time": "Latest review date first", + "SORT_OPTIONS__-taken_at": "Latest taken date first", + "SORT_OPTIONS__bed__name": "Bed No. 1-N", + "SORT_OPTIONS__category_severity": "Lowest Severity category first", + "SORT_OPTIONS__created_date": "Oldest created date first", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "Bed No. N-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "Bed No. 1-N", + "SORT_OPTIONS__modified_date": "Oldest updated date first", + "SORT_OPTIONS__name": "Patient name A-Z", + "SORT_OPTIONS__review_time": "Oldest review date first", + "SORT_OPTIONS__taken_at": "Oldest taken date first", + "Submit": "Submit", + "TELEMEDICINE": "Telemedicine", + "URINATION_FREQUENCY__DECREASED": "Decreased", + "URINATION_FREQUENCY__INCREASED": "Increased", + "URINATION_FREQUENCY__NORMAL": "Normal", + "VENTILATOR": "Detailed Update", + "VENTILATOR_MODE__CMV": "Control Mechanical Ventilation (CMV)", + "VENTILATOR_MODE__PCV": "Pressure Control Ventilation (PCV)", + "VENTILATOR_MODE__PC_SIMV": "Pressure Controlled SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "C-PAP / Pressure Support Ventilation (PSV)", + "VENTILATOR_MODE__SIMV": "Synchronised Intermittent Mandatory Ventilation (SIMV)", + "VENTILATOR_MODE__VCV": "Volume Control Ventilation (VCV)", + "VENTILATOR_MODE__VC_SIMV": "Volume Controlled SIMV (VC-SIMV)", + "View Facility": "View Facility", + "aadhaar_number": "Aadhaar Number", + "aadhaar_number_will_not_be_stored": "Aadhaar number will not be stored by CARE", + "aadhaar_otp_send_error": "Failed to send OTP. Please try again later.", + "aadhaar_otp_send_success": "OTP has been sent to the mobile number registered with the Aadhar number.", + "aadhaar_validation_length_error": "Should be a 12-digit aadhaar number or 16-digit virtual ID", + "aadhaar_validation_space_error": "Aadhaar number should not contain spaces", + "abha__auth_method__AADHAAR_OTP": "Aadhaar OTP", + "abha__auth_method__MOBILE_OTP": "Mobile OTP", + "abha__disclaimer_1": "I am voluntarily sharing my Aadhaar Number / Virtual ID issued by the Unique Identification Authority of India (\"UIDAI\"), and my demographic information for the purpose of creating an Ayushman Bharat Health Account number (\"ABHA number\") and Ayushman Bharat Health Account address (\"ABHA Address\"). I authorize NHA to use my Aadhaar number / Virtual ID for performing Aadhaar based authentication with UIDAI as per the provisions of the Aadhaar (Targeted Delivery of Financial and other Subsidies, Benefits and Services) Act, 2016 for the aforesaid purpose. I understand that UIDAI will share my e-KYC details, or response of \"Yes\" with NHA upon successful authentication.", + "abha__disclaimer_2": "I consent to usage of my ABHA address and ABHA number for linking of my legacy (past) health records and those which will be generated during this encounter.", + "abha__disclaimer_3": "I authorize the sharing of all my health records with healthcare provider(s) for the purpose of providing healthcare services to me during this encounter.", + "abha__disclaimer_4": "I consent to the anonymization and subsequent use of my health records for public health purposes.", + "abha__qr_scanning_error": "Error scanning QR code, Invalid QR code", + "abha_address": "ABHA Address", + "abha_address_created_error": "Failed to create Abha Address. Please try again later.", + "abha_address_created_success": "Abha Address has been created successfully.", + "abha_address_suggestions": "Here are some suggestions:", + "abha_address_validation_character_error": "Should only contain letters, numbers, underscore(_) or dot(.)", + "abha_address_validation_end_error": "Shouldn't end with a dot (.)", + "abha_address_validation_length_error": "Should be atleast 4 character long", + "abha_address_validation_start_error": "Shouldn't start with a number or dot (.)", + "abha_details": "ABHA Details", + "abha_disabled_due_to_no_health_facility": "ABHA Number generation and linking is disabled for this facility, Please link a health facility to enable this feature.", + "abha_link_options__create_with_aadhaar__description": "Create New ABHA Number Using Aadhaar Number", + "abha_link_options__create_with_aadhaar__title": "Create with Aadhaar", + "abha_link_options__create_with_driving_license__description": "Create New ABHA Number Using Driving License", + "abha_link_options__create_with_driving_license__title": "Create with Driving License", + "abha_link_options__disabled_tooltip": "We are currently working on this feature", + "abha_link_options__link_with_demographics__description": "Link Existing ABHA Number Using Demographic details", + "abha_link_options__link_with_demographics__title": "Link with Demographics", + "abha_link_options__link_with_otp__description": "Link Existing ABHA Number Using Mobile or Aadhaar OTP", + "abha_link_options__link_with_otp__title": "Link with OTP", + "abha_link_options__link_with_qr__title": "Link with ABHA QR", + "abha_number": "ABHA Number", + "abha_number_exists": "ABHA Number already exists", + "abha_number_exists_description": "There is an ABHA Number already linked with the given Aadhaar Number, Do you want to create a new ABHA Address?", + "abha_number_linked_successfully": "ABHA Number has been linked successfully.", + "abha_profile": "ABHA Profile", + "access_level": "Access Level", + "action_irreversible": "This action is irreversible", + "active": "Active", + "active_prescriptions": "Active Prescriptions", + "add": "Add", + "add_as": "Add as", + "add_attachments": "Add Attachments", + "add_beds": "Add Bed(s)", + "add_beds_to_configure_presets": "Add beds to this location to configure presets for them.", + "add_details_of_patient": "Add Details of Patient", + "add_location": "Add Location", + "add_new_beds": "Add New Bed(s)", + "add_new_user": "Add New User", + "add_notes": "Add notes", + "add_policy": "Add Insurance Policy", + "add_prescription_medication": "Add Prescription Medication", + "add_prescription_to_consultation_note": "Add a new prescription to this consultation.", + "add_preset": "Add preset", + "add_prn_prescription": "Add PRN Prescription", + "add_remarks": "Add remarks", + "add_spoke": "Add Spoke Facility", + "address": "Address", + "administer": "Administer", + "administer_medicine": "Administer Medicine", + "administer_medicines": "Administer Medicines", + "administer_selected_medicines": "Administer Selected Medicines", + "administered_on": "Administered on", + "administration_dosage_range_error": "Dosage should be between start and target dosage", + "administration_notes": "Administration Notes", + "advanced_filters": "Advanced Filters", + "age": "Age", + "all_changes_have_been_saved": "All changes have been saved", + "all_details": "All Details", + "allergies": "Allergies", + "allowed_formats_are": "Allowed formats are", + "already_a_member": "Already a member?", + "ambulance_driver_name": "Name of ambulance driver", + "ambulance_number": "Ambulance No", + "ambulance_phone_number": "Phone number of Ambulance", + "antenatal": "Antenatal", + "any_id": "Enter any ID linked with your ABHA number", + "any_id_description": "Currently we support: Aadhaar Number / Mobile Number", + "any_other_comments": "Any other comments", + "apply": "Apply", + "approved_by_district_covid_control_room": "Approved by District COVID Control Room", + "approving_facility": "Name of Approving Facility", + "archive": "Archive", + "archived": "Archived", + "are_non_editable_fields": "are non-editable fields", + "are_you_still_watching": "Are you still watching?", + "are_you_sure_want_to_delete": "Are you sure you want to delete {{name}}?", + "are_you_sure_want_to_delete_this_record": "Are you sure want to delete this record?", + "ari": "ARI - Acute Respiratory illness", + "asset_class": "Asset Class", + "asset_location": "Asset Location", + "asset_name": "Asset Name", + "asset_not_found_msg": "Oops! The asset you are looking for does not exist. Please check the asset id.", + "asset_qr_id": "Asset QR ID", + "asset_type": "Asset Type", + "assets": "Assets", + "assigned_facility": "Facility assigned", + "assigned_to": "Assigned to", + "async_operation_warning": "This operation may take some time. Please check back later.", + "atypical_presentation_details": "Atypical presentation details", + "audio__allow_permission": "Please allow microphone permission in site settings", + "audio__allow_permission_button": "Click here to know how to allow", + "audio__allow_permission_helper": "You might have denied microphone access in the past.", + "audio__permission_message": "Please grant microphone permission to record audio.", + "audio__record": "Record Audio", + "audio__record_helper": "Click the button to start recording", + "audio__recorded": "Audio Recorded", + "audio__recording": "Recording", + "audio__recording_helper": "Please speak into your microphone.", + "audio__recording_helper_2": "Click on the button to stop recording.", + "audio__start_again": "Start Again", + "audit_log": "Audit Log", + "auth_login_title": "Authorized Login", + "auth_method_unsupported": "This authentication method is not supported, please try a different method", + "authorize_shift_delete": "Authorize shift delete", + "auto_generated_for_care": "Auto Generated for Care", + "available_features": "Available Features", + "available_in": "Available in", + "average_weekly_working_hours": "Average weekly working hours", + "awaiting_destination_approval": "AWAITING DESTINATION APPROVAL", + "back": "Back", + "back_dated_encounter_date_caution": "You are creating an encounter for", + "back_to_consultation": "Go back to Consultation", + "back_to_login": "Back to login", + "base_dosage": "Dosage", + "bed_capacity": "Bed Capacity", + "bed_created_notification_one": "{{count}} Bed created successfully", + "bed_created_notification_other": "{{count}} Beds created successfully", + "bed_not_linked_to_camera": "This bed has not been linked to this camera.", + "bed_search_placeholder": "Search by beds name", + "bed_type": "Bed Type", + "bed_type__100": "ICU Bed", + "bed_type__200": "Ordinary Bed", + "bed_type__300": "Oxygen Supported Bed", + "bed_type__400": "Isolation Bed", + "bed_type__500": "Others", + "beta": "beta", + "bladder": "Bladder", + "blood_group": "Blood Group", + "blood_pressure_error": { + "missing": "Field is required. Either specify both or clear both.", + "exceed": "Value cannot exceed 250 mmHg.", + "systolic_less_than_diastolic": "Systolic must be greater than diastolic." + }, + "board_view": "Board View", + "bradycardia": "Bradycardia", + "breathlessness_level": "Breathlessness level", + "camera": "Camera", + "camera_bed_link_success": "Camera linked to bed successfully.", + "camera_permission_denied": "Camera Permission denied", + "camera_was_linked_to_bed": "This camera was linked to this bed", + "cancel": "Cancel", + "capture": "Capture", + "capture_cover_photo": "Capture Cover Photo", + "care": "CARE", + "category": "Category", + "caution": "Caution", + "central_nursing_station": "Central Nursing Station", + "change_file": "Change File", + "change_password": "Change Password", + "check_eligibility": "Check Eligibility", + "check_for_available_update": "Check for available update", + "check_for_update": "Check for Update", + "check_policy_eligibility": "Check Policy Eligibility", + "check_status": "Check Status", + "checking_consent_status": "Consent request status is being checked!", + "checking_eligibility": "Checking Eligibility", + "checking_for_update": "Checking for update", + "checking_policy_eligibility": "Checking Policy Eligibility", + "choose_date_time": "Choose Date and Time", + "choose_file": "Upload From Device", + "choose_location": "Choose Location", + "claim__add_item": "Add Item", + "claim__create_claim": "Create Claim", + "claim__create_preauthorization": "Create Pre Authorization", + "claim__creating_claim": "Creating Claim", + "claim__creating_preauthorization": "Creating Pre Authorization", + "claim__error_fetching_claim_approval_results": "Error Fetching Claim Approval Results", + "claim__failed_to_create_claim": "Failed to create Claim", + "claim__failed_to_create_preauthorization": "Failed to create Pre Authorization", + "claim__fetched_claim_approval_results": "Fetched Claim Approval Results", + "claim__item": "Item", + "claim__item__add_at_least_one": "Add at least one item", + "claim__item__category": "Category", + "claim__item__fill_all_details": "Fill all the item details", + "claim__item__id": "ID", + "claim__item__id__example": "PROC001", + "claim__item__name": "Name", + "claim__item__name__example": "Knee Replacement", + "claim__item__price": "Price", + "claim__item__price__example": "100.00", + "claim__item__procedure": "Procedure", + "claim__items": "Items", + "claim__request_claim": "Request Claim", + "claim__requesting_claim": "Requesting Claim", + "claim__status__approved": "Approved", + "claim__status__pending": "Pending", + "claim__status__rejected": "Rejected", + "claim__total_approved_amount": "Total Approved Amount", + "claim__total_claim_amount": "Total Claim Amount", + "claim__use": "Use", + "claim__use__claim": "Claim", + "claim__use__preauthorization": "Pre Authorization", + "claims": "Claims", + "clear": "Clear", + "clear_all_filters": "Clear All Filters", + "clear_home_facility": "Clear Home Facility", + "clear_selection": "Clear selection", + "close": "Close", + "close_scanner": "Close Scanner", + "collapse_sidebar": "Collapse Sidebar", + "comment_added_successfully": "Comment added successfully", + "comment_min_length": "Comment Should Contain At Least 1 Character", + "comments": "Comments", + "communication__sent_to_hcx": "Sent communication to HCX", + "completed": "Completed", + "configure": "Configure", + "configure_facility": "Configure Facility", + "confirm": "Confirm", + "confirm_delete": "Confirm Delete", + "confirm_discontinue": "Confirm Discontinue", + "confirm_password": "Confirm Password", + "confirm_transfer_complete": "Confirm Transfer Complete!", + "confirmed": "Confirmed", + "consent__hi_range": "Health Information Range", + "consent__hi_type__DiagnosticReport": "Diagnostic Report", + "consent__hi_type__DischargeSummary": "Discharge Summary", + "consent__hi_type__HealthDocumentRecord": "Health Document Record", + "consent__hi_type__ImmunizationRecord": "Immunization Record", + "consent__hi_type__OPConsultation": "OP Consultation", + "consent__hi_type__Prescription": "Prescription", + "consent__hi_type__WellnessRecord": "Wellness Record", + "consent__hi_types": "HI Profiles", + "consent__patient": "Patient", + "consent__purpose": "Purpose", + "consent__purpose__BTG": "Break The Glass", + "consent__purpose__CAREMGT": "Care Management", + "consent__purpose__DSRCH": "Disease Specific Healthcare Research", + "consent__purpose__HPAYMT": "Healthcare Payment", + "consent__purpose__PATRQT": "Self Requested", + "consent__purpose__PUBHLTH": "Public Health", + "consent__status": "Status", + "consent__status__DENIED": "Denied", + "consent__status__EXPIRED": "Expired", + "consent__status__GRANTED": "Granted", + "consent__status__REQUESTED": "Requested", + "consent__status__REVOKED": "Revoked", + "consent_request__date_range": "Health Records Date Range", + "consent_request__expiry": "Consent Expiry Date", + "consent_request__hi_types": "Health Information Types", + "consent_request__hi_types_placeholder": "Select One or More HI Types", + "consent_request__patient_identifier": "Patient Identifier", + "consent_request__purpose": "Purpose of Request", + "consent_request_rejected": "Patient has rejected the consent request", + "consent_request_waiting_approval": "Waiting for the Patient to approve the consent request", + "consent_requested_successfully": "Consent requested successfully!", + "consultation_missing_warning": "You have not created a consultation for the patient in", + "consultation_not_filed": "You have not filed a consultation for this patient yet.", + "consultation_not_filed_description": "Please file a consultation for this patient to continue.", + "consultation_notes": "General Instructions (Advice)", + "consultation_updates": "Consultation updates", + "contact_number": "Contact Number", + "contact_person": "Name of Contact Person at Facility", + "contact_person_at_the_facility": "Contact person at the current facility", + "contact_person_number": "Contact person number", + "contact_phone": "Contact Person Number", + "contact_with_confirmed_carrier": "Contact with confirmed carrier", + "contact_with_suspected_carrier": "Contact with suspected carrier", + "contact_your_admin_to_add_skills": "Contact your admin to add skills", + "continue": "Continue", + "continue_watching": "Continue watching", + "contribute_github": "Contribute on Github", + "copied_to_clipboard": "Copied to clipboard", + "countries_travelled": "Countries travelled", + "covid_19_cat_gov": "Covid_19 Clinical Category as per Govt. of Kerala guideline (A/B/C)", + "covid_19_death_reporting_form_1": "Covid-19 Death Reporting : Form 1", + "create": "Create", + "create_abha_address": "Create ABHA Address", + "create_add_more": "Create & Add More", + "create_asset": "Create Asset", + "create_consultation": "Create Consultation", + "create_facility": "Create a new facility", + "create_new_abha_address": "Create New ABHA Address", + "create_new_abha_profile": "Don't have an ABHA Number", + "create_new_asset": "Create New Asset", + "create_position_preset": "Create a new position preset", + "create_position_preset_description": "Creates a new position preset in Care from the current position of the camera for the given name", + "create_preset_prerequisite": "To create presets for this bed, you'll need to link the camera to the bed first.", + "create_resource_request": "Create Resource Request", + "created": "Created", + "created_date": "Created Date", + "created_on": "Created On", + "csv_file_in_the_specified_format": "Select a CSV file in the specified format", + "current_password": "Current Password", + "customer_support_email": "Customer Support Email", + "customer_support_name": "Customer Support Name", + "customer_support_number": "Customer support number", + "cylinders": "Cylinders", + "cylinders_per_day": "Cylinders/day", + "daily_rounds": "Daily Rounds", + "date_and_time": "Date and Time", + "date_declared_positive": "Date of declaring positive", + "date_of_admission": "Date of Admission", + "date_of_birth": "Date of birth", + "date_of_positive_covid_19_swab": "Date of Positive Covid 19 Swab", + "date_of_result": "Covid confirmation date", + "date_of_test": "Date of sample collection for Covid testing", + "days": "Days", + "delete": "Delete", + "delete_facility": "Delete Facility", + "delete_item": "Delete {{name}}", + "delete_record": "Delete Record", + "deleted_successfully": "{{name}} deleted successfully", + "denied_on": "Denied On", + "describe_why_the_asset_is_not_working": "Describe why the asset is not working", + "description": "Description", + "details_about_the_equipment": "Details about the equipment", + "details_of_assigned_facility": "Details of assigned facility", + "details_of_origin_facility": "Details of origin facility", + "details_of_patient": "Details of patient", + "details_of_shifting_approving_facility": "Details of shifting approving facility", + "diagnoses": "Diagnoses", + "diagnosis": "Diagnosis", + "diagnosis__confirmed": "Confirmed", + "diagnosis__differential": "Differential", + "diagnosis__principal": "Principal", + "diagnosis__provisional": "Provisional", + "diagnosis__unconfirmed": "Unconfirmed", + "diagnosis_already_added": "This diagnosis was already added", + "diagnosis_at_discharge": "Diagnosis at Discharge", + "diastolic": "Diastolic", + "differential": "Differential", + "differential_diagnosis": "Differential diagnosis", + "discard": "Discard", + "discharge": "Discharge", + "discharge_from_care": "Discharge from CARE", + "discharge_prescription": "Discharge Prescription", + "discharge_summary": "Discharge Summary", + "discharge_summary_not_ready": "Discharge summary is not ready yet.", + "discharged": "Discharged", + "discharged_patients": "Discharged Patients", + "discharged_patients_empty": "No discharged patients present in this facility", + "disclaimer": "Disclaimer", + "discontinue": "Discontinue", + "discontinue_caution_note": "Are you sure you want to discontinue this prescription?", + "discontinued": "Discontinued", + "disease_status": "Disease status", + "district": "District", + "district_program_management_supporting_unit": "District Program Management Supporting Unit", + "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", + "doctors_name": "Doctor's Name", + "domestic_healthcare_support": "Domestic healthcare support", + "domestic_international_travel": "Domestic/international Travel (within last 28 days)", + "done": "Done", + "dosage": "Dosage", + "down": "Down", + "download": "Download", + "download_discharge_summary": "Download discharge summary", + "download_type": "Download Type", + "downloading": "Downloading", + "downloading_abha_card": "Generating ABHA Card, Please hold on", + "downloads": "Downloads", + "drag_drop_image_to_upload": "Drag & drop image to upload", + "duplicate_patient_record_birth_unknown": "Please contact your district care coordinator, the shifting facility or the patient themselves if you are not sure about the patient's year of birth.", + "duplicate_patient_record_confirmation": "Admit the patient record to your facility by adding the year of birth", + "duplicate_patient_record_rejection": "I confirm that the suspect / patient I want to create is not on the list.", + "edit": "Edit", + "edit_avatar": "Edit Avatar", + "edit_caution_note": "A new prescription will be added to the consultation with the edited details and the current prescription will be discontinued.", + "edit_cover_photo": "Edit Cover Photo", + "edit_history": "Edit History", + "edit_policy": "Edit Insurance Policy", + "edit_policy_description": "Add or edit patient's insurance details", + "edit_prescriptions": "Edit Prescriptions", + "edit_user_profile": "Edit Profile", + "edited_by": "Edited by", + "edited_on": "Edited on", + "eg_abc": "Eg. ABC", + "eg_details_on_functionality_service_etc": "Eg. Details on functionality, service, etc.", + "eg_mail_example_com": "Eg. mail@example.com", + "eg_xyz": "Eg. XYZ", + "eligible": "Eligible", + "email": "Email Address", + "email_address": "Email Address", + "email_discharge_summary_description": "Enter your valid email address to receive the discharge summary", + "email_success": "We will be sending an email shortly. Please check your inbox.", + "emergency": "Emergency", + "emergency_contact_number": "Emergency Contact Number", + "empty_date_time": "--:-- --; --/--/----", + "encounter_date_field_label__A": "Date & Time of Admission to the Facility", + "encounter_date_field_label__DC": "Date & Time of Domiciliary Care commencement", + "encounter_date_field_label__DD": "Date & Time of Consultation", + "encounter_date_field_label__HI": "Date & Time of Consultation", + "encounter_date_field_label__OP": "Date & Time of Out-patient visit", + "encounter_date_field_label__R": "Date & Time of Consultation", + "encounter_duration_confirmation": "The duration of this encounter would be", + "encounter_suggestion__A": "Admission", + "encounter_suggestion__DC": "Domiciliary Care", + "encounter_suggestion__DD": "Consultation", + "encounter_suggestion__HI": "Consultation", + "encounter_suggestion__OP": "Out-patient visit", + "encounter_suggestion__R": "Consultation", + "encounter_suggestion_edit_disallowed": "Not allowed to switch to this option in edit consultation", + "enter_aadhaar_number": "Enter a 12-digit Aadhaar ID", + "enter_aadhaar_otp": "Enter OTP sent to the registered mobile with Aadhaar", + "enter_abha_address": "Enter ABHA Address", + "enter_any_id": "Enter any ID linked with your ABHA number", + "enter_file_name": "Enter File Name", + "enter_message": "Start typing...", + "enter_mobile_number": "Enter Mobile Number", + "enter_mobile_otp": "Enter OTP sent to the given mobile number", + "enter_otp": "Enter OTP sent to the registered mobile with the respective ID", + "enter_valid_age": "Please Enter Valid Age", + "entered-in-error": "Entered in error", + "error_404": "Error 404", + "error_deleting_shifting": "Error while deleting Shifting record", + "error_while_deleting_record": "Error while deleting record", + "escape": "Escape", + "estimated_contact_date": "Estimated contact date", + "etiology_identified": "Etiology identified", + "events": "Events", + "expand_sidebar": "Expand Sidebar", + "expected_burn_rate": "Expected Burn Rate", + "expired_on": "Expired On", + "expires_on": "Expires On", + "facilities": "Facilities", + "facility": "Facility", + "facility_consent_requests_page_title": "Patient Consent List", + "facility_name": "Facility Name", + "facility_preference": "Facility preference", + "facility_search_placeholder": "Search by Facility / District Name", + "facility_type": "Facility Type", + "failed_to_link_abha_number": "Failed to link ABHA Number. Please try again later.", + "fast_track_testing_reason": "Fast track testing reason", + "features": "Features", + "feed_configurations": "Feed Configurations", + "feed_is_currently_not_live": "Feed is currently not live", + "feed_optimal_experience_for_apple_phones": "For optimal viewing experience, consider rotating your device. Ensure auto-rotate is enabled in your device settings.", + "feed_optimal_experience_for_phones": "For optimal viewing experience, consider rotating your device.", + "fetched_attachments_successfully": "Fetched attachments successfully", + "fetching": "Fetching", + "field_required": "This field is required", + "file_error__choose_file": "Please choose a file to upload", + "file_error__dynamic": "Error Uploading File: {{statusText}}", + "file_error__file_name": "Please give a name for all files!", + "file_error__file_size": "Maximum size of files is 100 MB", + "file_error__file_type": "Invalid file type \".{{extension}}\" Allowed types: {{allowedExtensions}}", + "file_error__network": "Error Uploading File: Network Error", + "file_error__single_file_name": "Please give a name for the file", + "file_list_headings__consultation": "Consultation Files", + "file_list_headings__patient": "Patient Files", + "file_list_headings__sample_report": "Sample Report", + "file_list_headings__supporting_info": "Supporting Info", + "file_preview": "File Preview", + "file_preview_not_supported": "Can't preview this file. Try downloading it.", + "file_uploaded": "File Uploaded Successfully", + "filter": "Filter", + "filter_by": "Filter By", + "filter_by_category": "Filter by category", + "filters": "Filters", + "first_name": "First Name", + "footer_body": "Open Healthcare Network is an open-source public utility designed by a multi-disciplinary team of innovators and volunteers. Open Healthcare Network CARE is a Digital Public Good recognised by the United Nations.", + "forget_password": "Forgot password?", + "forget_password_instruction": "Enter your username, and if it exists, we will send you a link to reset your password.", + "frequency": "Frequency", + "full_name": "Full Name", + "full_screen": "Full Screen", + "gender": "Gender", + "generate_link_abha": "Generate/Link ABHA Number", + "generate_report": "Generate Report", + "generated_summary_caution": "This is a computer generated summary using the information captured in the CARE system.", + "generating": "Generating", + "generating_discharge_summary": "Generating discharge summary", + "get_auth_methods": "Get Available Authentication Methods", + "get_auth_mode_error": "Could not find any supported authentication methods, Please try again with a different authentication method", + "get_tests": "Get Tests", + "goal": "Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.", + "granted_on": "Granted On", + "has_domestic_healthcare_support": "Has domestic healthcare support?", + "has_sari": "Has SARI (Severe Acute Respiratory illness)?", + "health_facility__config_registration_error": "Health ID registration failed", + "health_facility__config_update_error": "Health Facility config update failed", + "health_facility__config_update_success": "Health Facility config updated successfully", + "health_facility__hf_id": "Health Facility Id", + "health_facility__link": "Link Health Facility", + "health_facility__not_registered_1.1": "The ABDM health facility is successfully linked with care", + "health_facility__not_registered_1.2": "but not registered as a service in bridge", + "health_facility__not_registered_2": "Click on Link Health Facility to register the service", + "health_facility__not_registered_3": "Not Registered", + "health_facility__registered_1.1": "The ABDM health facility is successfully linked with care", + "health_facility__registered_1.2": "and registered as a service in bridge", + "health_facility__registered_2": "No Action Required", + "health_facility__registered_3": "Registered", + "health_facility__validation__hf_id_required": "Health Facility Id is required", + "help_confirmed": "There is sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", + "help_differential": "One of a set of potential (and typically mutually exclusive) diagnoses asserted to further guide the diagnostic process and preliminary treatment.", + "help_entered-in-error": "The statement was entered in error and is not valid.", + "help_provisional": "This is a tentative diagnosis - still a candidate that is under consideration.", + "help_refuted": "This condition has been ruled out by subsequent diagnostic and clinical evidence.", + "help_unconfirmed": "There is not sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", + "hi__fetch_records": "Fetch Records over ABDM", + "hi__page_title": "Health Information", + "hi__record_archived__title": "This record has been archived", + "hi__record_archived_description": "This record has been archived and is no longer available for viewing.", + "hi__record_archived_on": " This record was archived on", + "hi__record_not_fetched_description": "This record hasn't been fetched yet. Please check back after some time.", + "hi__record_not_fetched_title": "This record hasn't been fetched yet", + "hi__waiting_for_record": "Waiting for the Host HIP to send the record.", + "hide": "Hide", + "home_facility": "Home Facility", + "hubs": "Hub Facilities", + "i_declare": "I hereby declare that:", + "icd11_as_recommended": "As per ICD-11 recommended by WHO", + "icmr_specimen_referral_form": "ICMR Specimen Referral Form", + "incomplete_patient_details_warning": "Patient details are incomplete. Please update the details before proceeding.", + "inconsistent_dosage_units_error": "Dosage units must be same", + "indian_mobile": "Indian Mobile", + "indicator": "Indicator", + "inidcator_event": "Indicator Event", + "instruction_on_titration": "Instruction on titration", + "insurer_name_required": "Insurer Name is required", + "international_mobile": "International Mobile", + "invalid_asset_id_msg": "Oops! The asset ID you entered does not appear to be valid.", + "invalid_email": "Please Enter a Valid Email Address", + "invalid_ip_address": "Invalid IP Address", + "invalid_link_msg": "It appears that the password reset link you have used is either invalid or expired. Please request a new password reset link.", + "invalid_password": "Password doesn't meet the requirements", + "invalid_password_reset_link": "Invalid password reset link", + "invalid_phone": "Please enter valid phone number", + "invalid_phone_number": "Invalid Phone Number", + "invalid_pincode": "Invalid Pincode", + "invalid_reset": "Invalid Reset", + "invalid_username": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", + "inventory_management": "Inventory Management", + "investigation_report": "Investigation Report", + "investigation_report_for_{{name}}": "Investigation Report for {{name}}", + "investigation_report_of_{{name}}": "Investigation Report of : {{name}}", + "investigation_reports": "Investigation Reports", + "investigations": "Investigations", + "investigations__date": "Date", + "investigations__ideal_value": "Ideal Value", + "investigations__name": "Name", + "investigations__range": "Value Range", + "investigations__result": "Result", + "investigations__unit": "Unit", + "investigations_suggested": "Investigations Suggested", + "is": "Is", + "is_antenatal": "Is Antenatal", + "is_atypical_presentation": "Is Atypical presentation", + "is_declared_positive": "Whether declared positive", + "is_emergency": "Is emergency", + "is_emergency_case": "Is emergency case", + "is_it_upshift": "is it upshift", + "is_this_an_emergency": "Is this an emergency?", + "is_this_an_upshift": "Is this an upshift?", + "is_unusual_course": "Is unusual course", + "is_up_shift": "Is up shift", + "is_upshift_case": "Is upshift case", + "is_vaccinated": "Whether vaccinated", + "label": "Label", + "landline": "Indian landline", + "language_selection": "Language Selection", + "last_administered": "Last administered", + "last_edited": "Last Edited", + "last_modified": "Last Modified", + "last_name": "Last Name", + "last_online": "Last Online", + "last_serviced_on": "Last Serviced On", + "latitude_invalid": "Latitude must be between -90 and 90", + "left": "Left", + "length": "Length ({{unit}})", + "link_abha_number": "Link ABHA Number", + "link_abha_profile": "Link ABHA Profile", + "link_camera_and_bed": "Link bed to Camera", + "link_existing_abha_profile": "Already have an ABHA number", + "linked_facilities": "Linked Facilities", + "linked_skills": "Linked Skills", + "liquid_oxygen_capacity": "Liquid Oxygen Capacity", + "list_view": "List View", + "litres": "Litres", + "litres_per_day": "Litres/day", + "live": "Live", + "live_monitoring": "Live Monitoring", + "live_patients_total_beds": "Live Patients / Total beds", + "load_more": "Load More", + "loading": "Loading...", + "local_body": "Local body", + "local_ip_address": "Local IP Address", + "local_ip_address_example": "e.g. 192.168.0.123", + "location": "Location", + "location_beds_empty": "No beds available in this location", + "location_management": "Location Management", + "log_lab_results": "Log Lab Results", + "log_report": "Log Report", + "login": "Login", + "longitude_invalid": "Longitude must be between -180 and 180", + "lsg": "Lsg", + "make_multiple_beds_label": "Do you want to make multiple beds?", + "manage_bed_presets": "Manage Presets of Bed", + "manage_prescriptions": "Manage Prescriptions", + "manage_preset": "Manage preset {{ name }}", + "manufacturer": "Manufacturer", + "map_acronym": "M.A.P.", + "mark_all_as_read": "Mark all as Read", + "mark_as_read": "Mark as Read", + "mark_as_unread": "Mark as Unread", + "mark_this_transfer_as_complete_question": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", + "mark_transfer_complete_confirmation": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", + "max_dosage_24_hrs": "Max. dosage in 24 hrs.", + "max_dosage_in_24hrs_gte_base_dosage_error": "Max. dosage in 24 hours must be greater than or equal to base dosage", + "max_size_for_image_uploaded_should_be": "Max size for image uploaded should be", + "measured_after": "Measured after", + "measured_before": "Measured before", + "medical_council_registration": "Medical Council Registration", + "medical_worker": "Medical Worker", + "medicine": "Medicine", + "medicine_administration_history": "Medicine Administration History", + "medicines_administered": "Medicine(s) administered", + "medicines_administered_error": "Error administering medicine(s)", + "member_id_required": "Member Id is required", + "middleware_hostname": "Middleware Hostname", + "middleware_hostname_example": "e.g. example.ohc.network", + "middleware_hostname_sourced_from": "Middleware hostname sourced from {{ source }}", + "min_password_len_8": "Minimum password length 8", + "min_time_bw_doses": "Min. time b/w doses", + "minimize": "Minimize", + "mobile": "Mobile", + "mobile_number": "Mobile Number", + "mobile_number_different_from_aadhaar_mobile_number": "We have noticed that you have entered a mobile number that is different from the one linked to your Aadhaar. We will send an OTP to this number to link it with your Abha number.", + "mobile_number_validation_error": "Enter a valid mobile number", + "mobile_otp_send_error": "Failed to send OTP. Please try again later.", + "mobile_otp_send_success": "OTP has been sent to the given mobile number.", + "mobile_otp_verify_error": "Failed to verify mobile number. Please try again later.", + "mobile_otp_verify_success": "Mobile number has been verified successfully.", + "modification_caution_note": "No modifications possible once added", + "modified": "Modified", + "modified_date": "Modified Date", + "modified_on": "Modified On", + "monitor": "Monitor", + "more_info": "More Info", + "move_to_onvif_preset": "Move to an ONVIF Preset", + "moving_camera": "Moving Camera", + "name": "Name", + "name_of_hospital": "Name of Hospital", + "name_of_shifting_approving_facility": "Name of shifting approving facility", + "nationality": "Nationality", + "never": "never", + "new_password": "New Password", + "new_password_confirmation": "Confirm New Password", + "next_sessions": "Next Sessions", + "no": "No", + "no_attachments_found": "This communication has no attachments.", + "no_bed_types_found": "No Bed Types found", + "no_beds_available": "No beds available", + "no_changes": "No changes", + "no_changes_made": "No changes made", + "no_consultation_updates": "No consultation updates", + "no_data_found": "No data found", + "no_duplicate_facility": "You should not create duplicate facilities", + "no_facilities": "No Facilities found", + "no_files_found": "No {{type}} files found", + "no_home_facility": "No home facility assigned", + "no_image_found": "No image found", + "no_investigation": "No investigation Reports found", + "no_investigation_suggestions": "No Investigation Suggestions", + "no_linked_facilities": "No Linked Facilities", + "no_log_update_delta": "No changes since previous log update", + "no_notices_for_you": "No notices for you.", + "no_patients_to_show": "No patients to show.", + "no_policy_added": "No Insurance Policy Added", + "no_policy_found": "No Insurance Policy Found for this Patient", + "no_presets": "No Presets", + "no_records_found": "No Records Found", + "no_remarks": "No remarks", + "no_results_found": "No Results Found", + "no_staff": "No staff found", + "no_tests_taken": "No tests taken", + "no_treating_physicians_available": "This facility does not have any home facility doctors. Please contact your admin.", + "no_users_found": "No Users Found", + "no_vitals_present": "No Vitals Monitor present in this location or facility", + "none": "None", + "normal": "Normal", + "not_eligible": "Not Eligible", + "not_specified": "Not Specified", + "notes": "Notes", + "notes_placeholder": "Type your Notes", + "notice_board": "Notice Board", + "notification_permission_denied": "Notification permission denied", + "notification_permission_granted": "Notification permission granted", + "number_of_aged_dependents": "Number of Aged Dependents (Above 60)", + "number_of_beds": "Number of beds", + "number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100", + "number_of_chronic_diseased_dependents": "Number Of Chronic Diseased Dependents", + "nursing_care": "Nursing Care", + "nursing_information": "Nursing Information", + "nutrition": "Nutrition", + "occupancy": "Occupancy", + "occupation": "Occupation", + "occupied": "Occupied", + "on": "On", + "ongoing_medications": "Ongoing Medications", + "only_indian_mobile_numbers_supported": "Currently only Indian numbers are supported", + "open": "Open", + "open_camera": "Open Camera", + "open_live_monitoring": "Open Live Monitoring", + "optional": "Optional", + "oral_issue_for_non_oral_nutrition_route_error": "Can be specified only if nutrition route is set to Oral", + "ordering": "Ordering", + "origin_facility": "Current facility", + "other_details": "Other details", + "otp_verification_error": "Failed to verify OTP. Please try again later.", + "otp_verification_success": "OTP has been verified successfully.", + "out_of_range_error": "Value must be between {{ start }} and {{ end }}.", + "oxygen_information": "Oxygen Information", + "page_not_found": "Page Not Found", + "pain": "Pain", + "pain_chart_description": "Mark region and intensity of pain", + "passport_number": "Passport Number", + "password": "Password", + "password_mismatch": "Password and confirm password must be same.", + "password_reset_failure": "Password Reset Failed", + "password_reset_success": "Password Reset successfully", + "password_sent": "Password Reset Email Sent", + "patient": "Patient", + "patient_address": "Patient Address", + "patient_body": "Patient Body", + "patient_category": "Patient Category", + "patient_consultation__admission": "Date of admission", + "patient_consultation__consultation_notes": "General Instructions", + "patient_consultation__dc_admission": "Date of domiciliary care commenced", + "patient_consultation__ip": "IP", + "patient_consultation__op": "OP", + "patient_consultation__special_instruction": "Special Instructions", + "patient_consultation__treatment__plan": "Plan", + "patient_consultation__treatment__summary": "Summary", + "patient_consultation__treatment__summary__date": "Date", + "patient_consultation__treatment__summary__spo2": "SpO2", + "patient_consultation__treatment__summary__temperature": "Temperature", + "patient_created": "Patient Created", + "patient_details": "Patient Details", + "patient_details_incomplete": "Patient Details Incomplete", + "patient_face": "Patient Face", + "patient_name": "Patient name", + "patient_no": "OP/IP No", + "patient_notes_thread__Doctors": "Doctor's Discussions", + "patient_notes_thread__Nurses": "Nurse's Discussions", + "patient_phone_number": "Patient Phone Number", + "patient_registration__address": "Address", + "patient_registration__age": "Age", + "patient_registration__comorbidities": "Comorbidities", + "patient_registration__comorbidities__details": "Details", + "patient_registration__comorbidities__disease": "Disease", + "patient_registration__contact": "Emergency Contact", + "patient_registration__gender": "Gender", + "patient_registration__name": "Name", + "patient_state": "Patient State", + "patient_status": "Patient Status", + "patient_transfer_birth_match_note": "Note: Year of birth must match the patient to process the transfer request.", + "patients": "Patients", + "personal_information": "Personal Information", + "phone": "Phone", + "phone_no": "Phone no.", + "phone_number": "Phone Number", + "phone_number_at_current_facility": "Phone Number of Contact person at current Facility", + "pincode": "Pincode", + "please_enter_a_reason_for_the_shift": "Please enter a reason for the shift.", + "please_select_a_facility": "Please select a facility", + "please_select_breathlessness_level": "Please select Breathlessness Level", + "please_select_facility_type": "Please select Facility Type", + "please_select_patient_category": "Please select Patient Category", + "please_select_preferred_vehicle_type": "Please select Preferred Vehicle Type", + "please_select_status": "Please select Status", + "please_upload_a_csv_file": "Please Upload A CSV file", + "policy": "Policy", + "policy__insurer": "Insurer", + "policy__insurer__example": "GICOFINDIA", + "policy__insurer_id": "Insurer ID", + "policy__insurer_id__example": "GICOFINDIA", + "policy__insurer_name": "Insurer Name", + "policy__insurer_name__example": "GIC OF INDIA", + "policy__policy_id": "Policy ID / Policy Name", + "policy__policy_id__example": "POL001", + "policy__subscriber_id": "Member ID", + "policy__subscriber_id__example": "SUB001", + "policy_id_required": "Policy Id or Policy Name is required", + "position": "Position", + "post_your_comment": "Post Your Comment", + "powered_by": "Powered By", + "preferred_facility_type": "Preferred Facility Type", + "preferred_vehicle": "Preferred Vehicle", + "prescription": "Prescription", + "prescription_details": "Prescription Details", + "prescription_discontinued": "Prescription discontinued", + "prescription_logs": "Prescription Logs", + "prescription_medication": "Prescription Medication", + "prescription_medications": "Prescription Medications", + "prescriptions__dosage_frequency": "Dosage & Frequency", + "prescriptions__medicine": "Medicine", + "prescriptions__route": "Route", + "prescriptions__start_date": "Prescribed On", + "preset_deleted": "Preset deleted", + "preset_name_placeholder": "Specify an identifiable name for the new preset", + "preset_updated": "Preset updated", + "prev_sessions": "Prev Sessions", + "principal": "Principal", + "principal_diagnosis": "Principal diagnosis", + "print": "Print", + "print_referral_letter": "Print Referral Letter", + "prn_prescription": "PRN Prescription", + "prn_prescriptions": "PRN Prescriptions", + "procedure_suggestions": "Procedure Suggestions", + "procedures_select_placeholder": "Select procedures to add details", + "profile": "Profile", + "provisional": "Provisional", + "qualification": "Qualification", + "raise_consent_request": "Raise a consent request to fetch patient records over ABDM", + "ration_card__APL": "APL", + "ration_card__BPL": "BPL", + "ration_card__NO_CARD": "Non-card holder", + "ration_card_category": "Ration Card Category", + "reason": "Reason", + "reason_for_discontinuation": "Reason for discontinuation", + "reason_for_edit": "Reason for edit", + "reason_for_referral": "Reason for referral", + "reason_for_shift": "Reason for shift", + "recommended_aspect_ratio_for": "Recommended aspect ratio for", + "record": "Record Audio", + "record_delete_confirm": "Are you sure you want to delete this record?", + "record_has_been_deleted_successfully": "Record has been deleted successfully.", + "record_updates": "Record Updates", + "recording": "Recording", + "redirected_to_create_consultation": "Note: You will be redirected to create consultation form. Please complete the form to finish the transfer process", + "referral_letter": "Referral Letter", + "referred_to": "Referred to", + "refresh": "Refresh", + "refresh_list": "Refresh List", + "refuted": "Refuted", + "register_hospital": "Register Hospital", + "register_page_title": "Register As Hospital Administrator", + "reload": "Reload", + "remove": "Remove", + "rename": "Rename", + "reply": "Reply", + "report": "Report", + "req_atleast_one_digit": "Require at least one digit", + "req_atleast_one_lowercase": "Require at least one lower case letter", + "req_atleast_one_symbol": "Require at least one symbol", + "req_atleast_one_uppercase": "Require at least one upper case", + "request_consent": "Request Consent", + "request_description": "Description of Request", + "request_description_placeholder": "Type your description here", + "request_title": "Request Title", + "request_title_placeholder": "Type your title here", + "required": "Required", + "required_quantity": "Required Quantity", + "resend_otp": "Resend OTP", + "reset": "Reset", + "reset_password": "Reset Password", + "resource": "Resource", + "resource_approving_facility": "Resource approving facility", + "resource_origin_facility": "Origin Facility", + "resource_request": "Resource Request", + "result": "Result", + "result_date": "Result Date", + "result_details": "Result details", + "result_on": "Result on", + "resume": "Resume", + "retake": "Retake", + "return_to_care": "Return to CARE", + "return_to_login": "Return to Login", + "return_to_password_reset": "Return to Password Reset", + "return_to_patient_dashboard": "Return to Patient Dashboard", + "revoked_on": "Revoked On", + "right": "Right", + "route": "Route", + "routine": "Routine", + "sample_collection_date": "Sample Collection Date", + "sample_format": "Sample Format", + "sample_test": "Sample Test", + "sample_test_details": "Sample Test Details", + "sample_test_history": "Sample Test History", + "sample_type": "Sample Type", + "sample_type_description": "Sample Type Description", + "sari": "SARI - Severe Acute Respiratory illness", + "save": "Save", + "save_and_continue": "Save and Continue", + "save_investigation": "Save Investigation", + "scan_asset_qr": "Scan Asset QR!", + "search_by_username": "Search by username", + "search_for_facility": "Search for Facility", + "search_icd11_placeholder": "Search for ICD-11 Diagnoses", + "search_investigation_placeholder": "Search Investigation & Groups", + "search_patient": "Search Patient", + "search_resource": "Search Resource", + "see_attachments": "See Attachments", + "select": "Select", + "select_all": "Select All", + "select_date": "Select date", + "select_eligible_policy": "Select an Eligible Insurance Policy", + "select_facility_for_discharged_patients_warning": "Facility needs to be selected to view discharged patients.", + "select_for_administration": "Select for Administration", + "select_groups": "Select Groups", + "select_investigation": "Select Investigations (all investigations will be selected by default)", + "select_investigation_groups": "Select Investigation Groups", + "select_investigations": "Select Investigations", + "select_local_body": "Select Local Body", + "select_policy": "Select an Insurance Policy", + "select_policy_to_add_items": "Select a Policy to Add Items", + "select_skills": "Select and add some skills", + "select_wards": "Select wards", + "send": "Send", + "send_email": "Send Email", + "send_message": "Send Message", + "send_otp": "Send OTP", + "send_otp_error": "Failed to send OTP. Please try again later.", + "send_otp_success": "OTP has been sent to the respective mobile number", + "send_reset_link": "Send Reset Link", + "serial_number": "Serial Number", + "serviced_on": "Serviced on", + "session_expired": "Session Expired", + "session_expired_msg": "It appears that your session has expired. This could be due to inactivity. Please login again to continue.", + "set_average_weekly_working_hours_for": "Set Average weekly working hours for", + "set_your_local_language": "Set your local language", + "settings_and_filters": "Settings and Filters", + "severity_of_breathlessness": "Severity of Breathlessness", + "shift_request_updated_successfully": "Shift request updated successfully", + "shifting": "Shifting", + "shifting_approval_facility": "Shifting approval facility", + "shifting_approving_facility": "Shifting approving facility", + "shifting_approving_facility_can_not_be_empty": "Shifting approving facility can not be empty.", + "shifting_deleted": "Shifting record has been deleted successfully.", + "shifting_details": "Shifting details", + "shifting_status": "Shifting status", + "show_abha_profile": "Show ABHA Profile", + "show_all": "Show all", + "show_all_notifications": "Show All", + "show_default_presets": "Show Default Presets", + "show_patient_presets": "Show Patient Presets", + "show_unread_notifications": "Show Unread", + "sign_out": "Sign Out", + "skills": "Skills", + "socioeconomic_status": "Socioeconomic status", + "software_update": "Software Update", + "something_went_wrong": "Something went wrong..!", + "something_wrong": "Something went wrong! Try again later!", + "sort_by": "Sort By", + "source": "Source", + "spokes": "Spoke Facilities", + "srf_id": "SRF ID", + "staff_list": "Staff List", + "start_dosage": "Start Dosage", + "state": "State", + "status": "Status", + "stop": "Stop", + "stream_stop_due_to_inativity": "The live feed will stop streaming due to inactivity", + "stream_stopped_due_to_inativity": "The live feed has stopped streaming due to inactivity", + "stream_uuid": "Stream UUID", + "sub_category": "Sub Category", + "submit": "Submit", + "submitting": "Submitting", + "subscribe": "Subscribe", + "subscribe_on_this_device": "Subscribe on this device", + "subscription_error": "Subscription Error", + "suggested_investigations": "Suggested Investigations", + "summary": "Summary", + "support": "Support", + "switch": "Switch", + "switch_camera_is_not_available": "Switch camera is not available.", + "systolic": "Systolic", + "tachycardia": "Tachycardia", + "target_dosage": "Target Dosage", + "test_type": "Type of test done", + "tested_on": "Tested on", + "third_party_software_licenses": "Third Party Software Licenses", + "titrate_dosage": "Titrate Dosage", + "to_be_conducted": "To be conducted", + "total_amount": "Total Amount", + "total_beds": "Total Beds", + "total_staff": "Total Staff", + "total_users": "Total Users", + "transfer_in_progress": "TRANSFER IN PROGRESS", + "transfer_to_receiving_facility": "Transfer to receiving facility", + "travel_within_last_28_days": "Domestic/international Travel (within last 28 days)", + "treating_doctor": "Treating Doctor", + "treatment_summary": "Treatment Summary", + "treatment_summary__head_title": "Treatment Summary", + "treatment_summary__heading": "INTERIM TREATMENT SUMMARY", + "treatment_summary__print": "Print Treatment Summary", + "try_again_later": "Try again later!", + "try_different_abha_linking_option": "Want to try a different linking option, here are some more:", + "type_any_extra_comments_here": "type any extra comments here", + "type_b_cylinders": "B Type Cylinders", + "type_c_cylinders": "C Type Cylinders", + "type_d_cylinders": "D Type Cylinders", + "type_to_search": "Type to search", + "type_your_comment": "Type your comment", + "type_your_reason_here": "Type your reason here", + "unable_to_get_current_position": "Unable to get current position.", + "unconfirmed": "Unconfirmed", + "unique_id": "Unique Id", + "unknown": "Unknown", + "unlink_asset_bed_and_presets": "Delete linked presets and unlink bed", + "unlink_asset_bed_caution": "This action will also delete all presets that are associated to this camera and bed.", + "unlink_camera_and_bed": "Unlink this bed from this camera", + "unsubscribe": "Unsubscribe", + "unsubscribe_failed": "Unsubscribe failed.", + "unsupported_browser": "Unsupported Browser", + "unsupported_browser_description": "Your browser ({{name}} version {{version}}) is not supported. Please update your browser to the latest version or switch to a supported browser for the best experience.", + "up": "Up", + "up_shift": "Up Shift", + "update": "Update", + "update_asset": "Update Asset", + "update_asset_service_record": "Update Asset Service Record", + "update_available": "Update Available", + "update_bed": "Update Bed", + "update_facility": "Update Facility", + "update_facility_middleware_success": "Facility middleware updated successfully", + "update_log": "Update Log", + "update_patient_details": "Update Patient Details", + "update_preset_position_to_current": "Update preset's position to camera's current position", + "update_record": "Update Record", + "update_record_for_asset": "Update record for asset", + "update_shift_request": "Update Shift Request", + "update_status_details": "Update Status/Details", + "updated": "Updated", + "updated_on": "Updated On", + "updating": "Updating", + "upload": "Upload", + "upload_an_image": "Upload an image", + "upload_headings__consultation": "Upload New Consultation File", + "upload_headings__patient": "Upload New Patient File", + "upload_headings__sample_report": "Upload Sample Report", + "upload_headings__supporting_info": "Upload Supporting Info", + "uploading": "Uploading", + "use_existing_abha_address": "Use Existing ABHA Address", + "user_deleted_successfuly": "User Deleted Successfuly", + "user_management": "User Management", + "username": "Username", + "users": "Users", + "vacant": "Vacant", + "vehicle_preference": "Vehicle preference", + "vendor_name": "Vendor Name", + "verify_and_link": "Verify and Link", + "verify_otp": "Verify OTP", + "verify_otp_error": "Failed to verify OTP. Please try again later.", + "verify_otp_success": "OTP has been verified successfully.", + "verify_patient_identifier": "Please verify the patient identifier", + "verify_using": "Verify Using", + "video_conference_link": "Video Conference Link", + "view": "View", + "view_abdm_records": "View ABDM Records", + "view_asset": "View Assets", + "view_cns": "View CNS", + "view_details": "View Details", + "view_faciliy": "View Facility", + "view_patients": "View Patients", + "view_users": "View Users", + "virtual_nursing_assistant": "Virtual Nursing Assistant", + "vitals": "Vitals", + "vitals_monitor": "Vitals Monitor", + "vitals_present": "Vitals Monitor present", + "ward": "Ward", + "warranty_amc_expiry": "Warranty / AMC Expiry", + "what_facility_assign_the_patient_to": "What facility would you like to assign the patient to", + "whatsapp_number": "Whatsapp Number", + "why_the_asset_is_not_working": "Why the asset is not working?", + "width": "Width ({{unit}})", + "working_status": "Working Status", + "years": "years", + "years_of_experience": "Years of Experience", + "years_of_experience_of_the_doctor": "Years of Experience of the Doctor", + "yes": "Yes", + "yet_to_be_decided": "Yet to be decided", + "you_need_at_least_a_location_to_create_an_assest": "You need at least a location to create an assest.", + "zoom_in": "Zoom In", + "zoom_out": "Zoom Out" +} diff --git a/src/components/Patient/SampleDetails.tsx b/src/components/Patient/SampleDetails.tsx index 24e5ab39f0c..c16ef1c0e86 100644 --- a/src/components/Patient/SampleDetails.tsx +++ b/src/components/Patient/SampleDetails.tsx @@ -1,20 +1,21 @@ -import { FlowModel } from "./models"; -import { GENDER_TYPES, TEST_TYPE_CHOICES } from "@/common/constants"; - -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import Card from "../../CAREUI/display/Card"; -import { FileUpload } from "../Files/FileUpload"; -import Page from "@/components/Common/components/Page"; -import { startCase, camelCase, capitalize } from "lodash-es"; -import { formatDateTime, formatPatientAge } from "../../Utils/utils"; - +import { camelCase, capitalize, startCase } from "lodash-es"; import { navigate } from "raviger"; -import { DetailRoute } from "../../Routers/types"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; +import { useTranslation } from "react-i18next"; + +import Card from "@/CAREUI/display/Card"; +import ButtonV2 from "@/components/Common/ButtonV2"; import Loading from "@/components/Common/Loading"; -import { useTranslation } from "react-i18next"; +import Page from "@/components/Common/Page"; +import { FileUpload } from "@/components/Files/FileUpload"; +import { FlowModel } from "@/components/Patient/models"; + +import { GENDER_TYPES, TEST_TYPE_CHOICES } from "@/common/constants"; + +import { DetailRoute } from "@/Routers/types"; +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; +import { formatDateTime, formatPatientAge } from "@/Utils/utils"; export const SampleDetails = ({ id }: DetailRoute) => { const { t } = useTranslation(); From 45d0ec16ead505fdb3ab993864adfd66b2d97e11 Mon Sep 17 00:00:00 2001 From: JavidSumra Date: Thu, 7 Nov 2024 10:17:35 +0530 Subject: [PATCH 7/8] Fix branch conflict issue --- .env | 2 +- .envrc | 2 - .prettierrc.json | 7 +- cypress.config.ts | 3 +- cypress/e2e/assets_spec/AssetHomepage.cy.ts | 13 +- cypress/e2e/assets_spec/AssetsCreation.cy.ts | 7 +- cypress/e2e/assets_spec/AssetsManage.cy.ts | 6 +- cypress/e2e/auth_spec/roles.cy.ts | 19 - .../e2e/facility_spec/FacilityCreation.cy.ts | 4 +- .../e2e/facility_spec/FacilityHomepage.cy.ts | 9 +- .../e2e/facility_spec/FacilityInventory.cy.ts | 4 +- .../e2e/facility_spec/FacilityManage.cy.ts | 9 +- .../patient_spec/PatientBedManagement.cy.ts | 4 +- .../PatientConsultationCreation.cy.ts | 12 +- .../PatientConsultationDischarge.cy.ts | 2 +- .../patient_spec/PatientDoctorConnect.cy.ts | 3 +- .../e2e/patient_spec/PatientDoctorNotes.cy.ts | 2 +- cypress/e2e/patient_spec/PatientFileUpload.ts | 5 +- .../e2e/patient_spec/PatientHomepage.cy.ts | 2 +- .../e2e/patient_spec/PatientLogUpdate.cy.ts | 4 +- .../patient_spec/PatientPrescription.cy.ts | 4 +- .../patient_spec/PatientRegistration.cy.ts | 8 +- .../e2e/resource_spec/ResourcesHomepage.cy.ts | 4 +- cypress/e2e/users_spec/UsersCreation.cy.ts | 8 +- cypress/e2e/users_spec/UsersHomepage.cy.ts | 2 +- cypress/e2e/users_spec/UsersManage.cy.ts | 4 +- cypress/fixtures/users.json | 38 - cypress/pageobject/Login/LoginPage.ts | 2 +- package-lock.json | 2633 ++++++----------- package.json | 11 +- {src/Locale => public/locale}/hi.json | 2 +- {src/Locale => public/locale}/kn.json | 2 +- {src/Locale => public/locale}/ml.json | 2 +- {src/Locale => public/locale}/mr.json | 0 {src/Locale => public/locale}/ta.json | 2 +- src/App.tsx | 17 +- src/CAREUI/display/Chip.tsx | 8 +- src/CAREUI/display/Count.tsx | 5 +- src/CAREUI/display/FilterBadge.tsx | 2 +- src/CAREUI/display/NetworkSignal.tsx | 5 +- src/CAREUI/display/PopupModal.tsx | 9 +- src/CAREUI/display/RecordMeta.tsx | 8 +- src/CAREUI/display/SubHeading.tsx | 5 +- src/CAREUI/display/Timeline.tsx | 10 +- src/CAREUI/icons/CareIcon.tsx | 4 +- src/CAREUI/icons/Index.tsx | 11 +- src/CAREUI/interactive/FiltersSlideover.tsx | 13 +- src/CAREUI/interactive/HumanChart.tsx | 1 + src/CAREUI/interactive/KeyboardShortcut.tsx | 3 +- src/CAREUI/interactive/LegendInput.tsx | 8 +- src/CAREUI/interactive/ScrollOverlay.tsx | 5 +- src/CAREUI/interactive/SlideOver.tsx | 6 +- src/CAREUI/interactive/Switch.tsx | 2 +- src/CAREUI/interactive/Zoom.tsx | 8 +- src/CAREUI/misc/AuthorizedChild.tsx | 10 +- src/CAREUI/misc/PaginatedList.tsx | 15 +- src/CAREUI/misc/PrintPreview.tsx | 20 +- src/Integrations/Plausible.tsx | 5 +- src/Integrations/index.tsx | 4 +- src/Locale/TRANSLATION_CONTRIBUTION.md | 13 - src/Locale/en.json | 1295 -------- src/Locale/update_locale.js | 3 +- src/PluginEngine.tsx | 9 +- src/Providers/AuthUserProvider.tsx | 16 +- src/Providers/HistoryAPIProvider.tsx | 2 +- src/Routers/AppRouter.tsx | 40 +- src/Routers/SessionRouter.tsx | 14 +- src/Routers/index.tsx | 4 +- src/Routers/routes/AssetRoutes.tsx | 3 +- src/Routers/routes/ConsultationRoutes.tsx | 19 +- .../routes/FacilityInventoryRoutes.tsx | 4 +- src/Routers/routes/FacilityLocationRoutes.tsx | 9 +- src/Routers/routes/FacilityRoutes.tsx | 13 +- src/Routers/routes/PatientRoutes.tsx | 9 +- src/Routers/routes/ResourceRoutes.tsx | 8 +- src/Routers/routes/SampleRoutes.tsx | 3 +- src/Routers/routes/ShiftingRoutes.tsx | 8 +- src/Routers/routes/UserRoutes.tsx | 3 +- src/Utils/AuthorizeFor.tsx | 7 +- src/Utils/AutoSave.tsx | 16 +- src/Utils/Notifications.js | 4 +- src/Utils/dayjs.ts | 4 +- src/Utils/featureFlags.tsx | 11 +- src/Utils/permissions.ts | 3 +- src/{Redux => Utils/request}/api.tsx | 65 +- src/Utils/request/handleResponse.ts | 5 +- src/Utils/request/request.ts | 7 +- src/Utils/request/uploadFile.ts | 5 +- src/Utils/request/useMutation.ts | 3 +- src/Utils/request/useQuery.ts | 11 +- src/Utils/request/utils.ts | 6 +- src/Utils/useRecorder.d.ts | 2 - src/Utils/useSegmentedRecorder.ts | 5 +- src/Utils/utils.ts | 6 +- src/common/constants.tsx | 13 +- src/common/utils.tsx | 6 +- src/components/ABDM/ABDMFacilityRecords.tsx | 24 +- src/components/ABDM/ABDMRecordsTab.tsx | 24 +- src/components/ABDM/ABHAProfileModal.tsx | 18 +- .../ABDM/ConfigureHealthFacility.tsx | 22 +- src/components/ABDM/FetchRecordsModal.tsx | 33 +- src/components/ABDM/HealthInformation.tsx | 10 +- .../ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx | 38 +- .../ABDM/LinkAbhaNumber/LinkWithOtp.tsx | 30 +- .../ABDM/LinkAbhaNumber/LinkWithQr.tsx | 13 +- src/components/ABDM/LinkAbhaNumber/index.tsx | 16 +- .../ABDM/LinkAbhaNumber/useMultiStepForm.ts | 2 +- src/components/ABDM/types/abha.ts | 2 +- src/components/ABDM/types/consent.ts | 4 +- src/components/Assets/AssetConfigure.tsx | 11 +- src/components/Assets/AssetFilter.tsx | 29 +- src/components/Assets/AssetImportModal.tsx | 27 +- src/components/Assets/AssetManage.tsx | 55 +- .../Assets/AssetServiceEditModal.tsx | 32 +- .../Assets/AssetType/HL7Monitor.tsx | 39 +- src/components/Assets/AssetTypes.tsx | 7 +- src/components/Assets/AssetWarrantyCard.tsx | 11 +- src/components/Assets/AssetsList.tsx | 67 +- src/components/Auth/Login.tsx | 53 +- src/components/Auth/ResetPassword.tsx | 31 +- src/components/Auth/index.tsx | 2 - src/components/CameraFeed/CameraFeed.tsx | 34 +- .../CameraFeed/CameraFeedWithBedPresets.tsx | 16 +- .../CameraFeed/CameraPresetSelect.tsx | 13 +- .../LiveMonitoringFilters.tsx | 15 +- .../CentralLiveMonitoring/index.tsx | 22 +- src/components/CameraFeed/ConfigureCamera.tsx | 58 +- src/components/CameraFeed/FeedAlert.tsx | 7 +- src/components/CameraFeed/FeedButton.tsx | 5 +- src/components/CameraFeed/FeedControls.tsx | 11 +- .../CameraFeed/FeedNetworkSignal.tsx | 8 +- src/components/CameraFeed/FeedWatermark.tsx | 3 +- src/components/CameraFeed/NoFeedAvailable.tsx | 10 +- src/components/CameraFeed/StillWatching.tsx | 13 +- src/components/CameraFeed/routes.ts | 15 +- src/components/CameraFeed/useOperateCamera.ts | 6 +- src/components/CameraFeed/utils.ts | 6 +- .../Common/{components => }/AccordionV2.tsx | 0 src/components/Common/AssetInfoPopover.tsx | 12 +- src/components/Common/AssetSelect.tsx | 8 +- src/components/Common/Avatar.tsx | 3 +- src/components/Common/AvatarEditModal.tsx | 16 +- src/components/Common/AvatarEditable.tsx | 9 +- src/components/Common/BedSelect.tsx | 12 +- .../Common/BloodPressureFormField.tsx | 11 +- src/components/Common/Breadcrumbs.tsx | 12 +- .../Common/{components => }/ButtonV2.tsx | 15 +- .../{components => }/CircularProgress.tsx | 0 .../Common/{components => }/CollapseV2.tsx | 0 src/components/Common/ConfirmDialog.tsx | 4 +- .../Common/{components => }/ContactLink.tsx | 2 +- src/components/Common/DateInputV2.tsx | 26 +- src/components/Common/DateRangeInputV2.tsx | 3 +- src/components/Common/DateTextInput.tsx | 6 +- src/components/Common/Dialog.tsx | 3 +- .../Common/DistrictAutocompleteFormField.tsx | 11 +- .../Common/ExcelFIleDragAndDrop.tsx | 17 +- src/components/Common/ExcelViewer.tsx | 11 +- src/components/Common/Export.tsx | 14 +- src/components/Common/FacilitySelect.tsx | 12 +- src/components/Common/FilePreviewDialog.tsx | 42 +- src/components/Common/GLocationPicker.tsx | 15 +- .../{components => }/HelperComponents.tsx | 0 src/components/Common/LanguageSelector.tsx | 10 +- .../Common/LanguageSelectorLogin.tsx | 7 +- .../Common/LocalBodyAutocompleteFormField.tsx | 11 +- src/components/Common/LocationSelect.tsx | 10 +- .../Common/{components => }/Menu.tsx | 15 +- src/components/Common/PDFViewer.tsx | 5 +- .../Common/{components => }/Page.tsx | 8 +- src/components/Common/PageTitle.tsx | 8 +- src/components/Common/Pagination.tsx | 9 +- .../Common/PatientCategoryBadge.tsx | 3 +- src/components/Common/QRScanner.tsx | 14 +- .../Common/{components => }/Readmore.tsx | 0 .../Common/RelativeDateUserMention.tsx | 5 +- .../Common/RouteToFacilitySelect.tsx | 4 +- src/components/Common/Sidebar/Sidebar.tsx | 30 +- src/components/Common/Sidebar/SidebarItem.tsx | 8 +- .../Common/Sidebar/SidebarUserCard.tsx | 15 +- src/components/Common/SkillSelect.tsx | 10 +- src/components/Common/SortDropdown.tsx | 6 +- .../Common/StateAutocompleteFormField.tsx | 11 +- src/components/Common/Steps.tsx | 2 +- .../Common/{components => }/Switch.tsx | 5 +- .../Common/{components => }/Table.tsx | 0 .../Common/{components => }/Tabs.tsx | 8 +- .../Common/TemperatureFormField.tsx | 18 +- src/components/Common/UpdatableApp.tsx | 9 +- src/components/Common/Uptime.tsx | 15 +- .../Common/UserAutocompleteFormField.tsx | 21 +- src/components/Common/UserDetailsComponet.tsx | 2 +- .../InvestigationBuilder.tsx | 19 +- .../PrescriptionDropdown.tsx | 6 +- .../PrescriptionMultiselect.tsx | 6 +- .../prescription-builder/ProcedureBuilder.tsx | 10 +- src/components/DeathReport/DeathReport.tsx | 30 +- .../ConditionVerificationStatusMenu.tsx | 15 +- .../AddICD11Diagnosis.tsx | 16 +- .../ConsultationDiagnosisBuilder.tsx | 22 +- .../ConsultationDiagnosisEntry.tsx | 14 +- .../PrincipalDiagnosisSelect.tsx | 5 +- .../Diagnosis/DiagnosesListAccordion.tsx | 15 +- src/components/Diagnosis/routes.ts | 10 +- src/components/Diagnosis/utils.ts | 7 +- src/components/ErrorPages/404.tsx | 3 +- src/components/ErrorPages/BrowserWarning.tsx | 5 +- src/components/ErrorPages/InvalidReset.tsx | 5 +- src/components/ErrorPages/SessionExpired.tsx | 6 +- .../FacilitiesSelectDialogue.tsx | 10 +- src/components/Facility/AddBedForm.tsx | 34 +- src/components/Facility/AddInventoryForm.tsx | 28 +- src/components/Facility/AddLocationForm.tsx | 24 +- src/components/Facility/AssetCreate.tsx | 55 +- src/components/Facility/BedCapacity.tsx | 21 +- src/components/Facility/BedDeleteDialog.tsx | 1 + src/components/Facility/BedManagement.tsx | 36 +- src/components/Facility/BedTypeCard.tsx | 21 +- .../Facility/CentralNursingStation.tsx | 36 +- src/components/Facility/ConsultationCard.tsx | 21 +- .../ConsultationABGTab.tsx | 5 +- .../ConsultationDialysisTab.tsx | 5 +- .../ConsultationFeedTab.tsx | 42 +- .../ConsultationFilesTab.tsx | 4 +- .../ConsultationInvestigationsTab.tsx | 15 +- .../ConsultationMedicinesTab.tsx | 6 +- .../ConsultationNeurologicalMonitoringTab.tsx | 5 +- .../ConsultationNursingTab.tsx | 19 +- .../ConsultationNutritionTab.tsx | 5 +- .../ConsultationPressureSoreTab.tsx | 5 +- .../ConsultationSummaryTab.tsx | 5 +- .../ConsultationUpdatesTab.tsx | 72 +- .../ConsultationVentilatorTab.tsx | 5 +- .../ConsultationDetails/Events/EventsList.tsx | 22 +- .../ConsultationDetails/Events/iconMap.ts | 2 +- .../ConsultationDetails/Events/types.ts | 7 +- .../Facility/ConsultationDetails/index.tsx | 76 +- .../ConsultationDoctorNotes/index.tsx | 40 +- src/components/Facility/ConsultationForm.tsx | 115 +- .../Facility/Consultations/ABGPlots.tsx | 31 +- .../Consultations/BedActivityTimeline.tsx | 25 +- .../Facility/Consultations/Beds.tsx | 43 +- .../DailyRounds/DefaultLogUpdateCard.tsx | 15 +- .../DailyRounds/LogUpdateCardAttribute.tsx | 5 +- .../VirtualNursingAssistantLogUpdateCard.tsx | 5 +- .../Consultations/DailyRoundsFilter.tsx | 14 +- .../Consultations/DailyRoundsList.tsx | 24 +- .../Facility/Consultations/DialysisPlots.tsx | 17 +- .../Facility/Consultations/Mews.tsx | 5 +- .../Consultations/NeurologicalTables.tsx | 13 +- .../Facility/Consultations/NursingPlot.tsx | 14 +- .../Facility/Consultations/NutritionPlots.tsx | 43 +- .../Facility/Consultations/PainDiagrams.tsx | 6 +- .../Consultations/PressureSoreDiagrams.tsx | 15 +- .../Consultations/PrimaryParametersPlot.tsx | 42 +- .../Facility/Consultations/VentilatorPlot.tsx | 39 +- .../components/BinaryChronologicalChart.tsx | 5 +- .../Consultations/components/LinePlot.tsx | 56 +- .../Consultations/components/ReactEcharts.tsx | 44 + .../components/StackedLinePlot.tsx | 59 +- src/components/Facility/DischargeModal.tsx | 47 +- .../Facility/DischargeSummaryModal.tsx | 23 +- .../Facility/DischargedPatientsList.tsx | 59 +- src/components/Facility/DoctorNote.tsx | 12 +- .../Facility/DoctorNoteReplyPreviewCard.tsx | 7 +- .../Facility/DoctorVideoSlideover.tsx | 31 +- .../Facility/DuplicatePatientDialog.tsx | 7 +- .../Facility/FacilityBedCapacity.tsx | 22 +- src/components/Facility/FacilityBlock.tsx | 3 +- src/components/Facility/FacilityCard.tsx | 33 +- src/components/Facility/FacilityConfigure.tsx | 25 +- src/components/Facility/FacilityCreate.tsx | 103 +- .../FacilityFilter/DistrictSelect.tsx | 7 +- .../Facility/FacilityFilter/index.tsx | 16 +- src/components/Facility/FacilityHome.tsx | 79 +- .../Facility/FacilityHomeTriage.tsx | 13 +- src/components/Facility/FacilityList.tsx | 34 +- src/components/Facility/FacilityStaffList.tsx | 31 +- src/components/Facility/FacilityUsers.tsx | 36 +- src/components/Facility/InventoryList.tsx | 19 +- src/components/Facility/InventoryLog.tsx | 20 +- .../InvestigationSuggestions.tsx | 15 +- .../Investigations/InvestigationTable.tsx | 15 +- .../InvestigationsPrintPreview.tsx | 14 +- .../Investigations/Reports/ReportTable.tsx | 15 +- .../Facility/Investigations/Reports/index.tsx | 42 +- .../Facility/Investigations/Reports/types.ts | 4 +- .../Facility/Investigations/Reports/utils.tsx | 10 +- .../Investigations/ShowInvestigation.tsx | 20 +- .../Facility/Investigations/Table.tsx | 7 +- .../Investigations/ViewInvestigations.tsx | 16 +- .../Facility/Investigations/index.tsx | 22 +- .../Investigations/investigationsTab.tsx | 11 +- .../Facility/LocationManagement.tsx | 30 +- src/components/Facility/MinQuantityList.tsx | 17 +- .../Facility/MinQuantityRequiredModal.tsx | 14 +- .../Facility/PatientConsultationNotesList.tsx | 19 +- src/components/Facility/PatientNoteCard.tsx | 42 +- src/components/Facility/PatientNotesList.tsx | 18 +- .../Facility/PatientNotesSlideover.tsx | 42 +- src/components/Facility/SetInventoryForm.tsx | 30 +- .../Facility/SpokeFacilityEditor.tsx | 23 +- src/components/Facility/StaffCapacity.tsx | 28 +- src/components/Facility/StaffCountCard.tsx | 23 +- .../Facility/TransferPatientDialog.tsx | 23 +- src/components/Facility/TreatmentSummary.tsx | 32 +- src/components/Facility/TriageForm.tsx | 39 +- src/components/Facility/models.tsx | 37 +- src/components/Files/AudioCaptureDialog.tsx | 13 +- src/components/Files/CameraCaptureDialog.tsx | 16 +- src/components/Files/FileBlock.tsx | 19 +- src/components/Files/FileUpload.tsx | 35 +- src/components/Form/AutoCompleteAsync.tsx | 16 +- src/components/Form/Form.tsx | 26 +- src/components/Form/FormContext.ts | 5 +- .../AutoExpandingTextInputFormField.tsx | 5 +- .../Form/FormFields/Autocomplete.tsx | 20 +- .../FormFields/AutocompleteMultiselect.tsx | 19 +- .../Form/FormFields/CheckBoxFormField.tsx | 10 +- .../Form/FormFields/DateFormField.tsx | 9 +- .../Form/FormFields/DateRangeFormField.tsx | 10 +- .../Form/FormFields/DosageFormField.tsx | 6 +- src/components/Form/FormFields/FormField.tsx | 7 +- src/components/Form/FormFields/Month.tsx | 12 +- .../FormFields/NumericWithUnitsFormField.tsx | 10 +- .../Form/FormFields/OtpFormField.tsx | 5 +- .../Form/FormFields/PhoneNumberFormField.tsx | 35 +- .../Form/FormFields/RadioFormField.tsx | 11 +- .../FormFields/RangeAutocompleteFormField.tsx | 10 +- .../Form/FormFields/RangeFormField.tsx | 17 +- .../Form/FormFields/SelectFormField.tsx | 11 +- .../Form/FormFields/TextAreaFormField.tsx | 11 +- .../Form/FormFields/TextFormField.tsx | 13 +- src/components/Form/FormFields/Utils.ts | 3 +- src/components/Form/ModelCrudEditor.tsx | 9 +- src/components/Form/MultiSelectMenuV2.tsx | 5 +- src/components/Form/SearchInput.tsx | 11 +- src/components/Form/SelectMenuV2.tsx | 10 +- src/components/Form/Utils.ts | 2 +- .../HCX/InsuranceDetailsBuilder.tsx | 26 +- src/components/HCX/InsurerAutocomplete.tsx | 15 +- .../HCX/PatientInsuranceDetailsEditor.tsx | 23 +- src/components/HCX/PolicyEligibilityCheck.tsx | 24 +- src/components/HCX/validators.ts | 5 +- src/components/Kanban/Board.tsx | 12 +- src/components/Licenses/LicensesPage.tsx | 3 +- src/components/Licenses/SBOMViewer.tsx | 14 +- src/components/Licenses/fe-sbom.json | 2146 +++----------- src/components/Licenses/licenseUrls.json | 102 +- .../LogUpdate/CriticalCareEditor.tsx | 32 +- .../LogUpdate/CriticalCarePreview.tsx | 31 +- .../LogUpdate/Sections/ABGAnalysis.tsx | 13 +- .../LogUpdate/Sections/BloodSugar.tsx | 14 +- .../LogUpdate/Sections/Dialysis.tsx | 7 +- .../LogUpdate/Sections/IOBalance.tsx | 17 +- .../Sections/NeurologicalMonitoring.tsx | 15 +- .../LogUpdate/Sections/NursingCare.tsx | 11 +- .../Sections/PressureSore/PressureSore.tsx | 29 +- .../LogUpdate/Sections/PressureSore/utils.ts | 3 +- .../RespiratorySupport/OxygenSupport.tsx | 11 +- .../RespiratorySupport/Ventilator.tsx | 14 +- .../VentilatorModeSelector.tsx | 5 +- .../Sections/RespiratorySupport/index.tsx | 33 +- src/components/LogUpdate/Sections/Vitals.tsx | 24 +- src/components/LogUpdate/Sections/index.tsx | 26 +- .../LogUpdate/components/PainChart.tsx | 18 +- .../LogUpdate/components/PupilSizeSelect.tsx | 9 +- src/components/LogUpdate/utils.ts | 5 +- .../Medicine/AdministerMedicine.tsx | 34 +- .../Medicine/CreatePrescriptionForm.tsx | 6 +- .../Medicine/DiscontinuePrescription.tsx | 19 +- .../Medicine/EditPrescriptionForm.tsx | 31 +- .../Medicine/ManagePrescriptions.tsx | 13 +- .../MedibaseAutocompleteFormField.tsx | 19 +- .../Medicine/MedicineAdministration.tsx | 37 +- .../AdministrationEventCell.tsx | 20 +- .../AdministrationEventSeperator.tsx | 2 +- .../AdministrationTable.tsx | 16 +- .../AdministrationTableRow.tsx | 37 +- .../BulkAdminister.tsx | 14 +- .../MedicineAdministrationSheet/index.tsx | 32 +- .../MedicineAdministrationSheet/utils.ts | 2 +- .../Medicine/MedicinePrescriptionSummary.tsx | 15 +- .../Medicine/PrescriptionBuilder.tsx | 34 +- .../Medicine/PrescriptionDetailCard.tsx | 19 +- .../Medicine/PrescriptionsTable.tsx | 26 +- .../Medicine/PrescrpitionTimeline.tsx | 33 +- src/components/Medicine/PrintPreview.tsx | 22 +- .../Medicine/ResponsiveMedicineTables.tsx | 6 +- src/components/Medicine/models.ts | 2 +- src/components/Medicine/routes.ts | 10 +- src/components/Medicine/validators.ts | 10 +- src/components/Notifications/NoticeBoard.tsx | 15 +- .../Notifications/NotificationsList.tsx | 33 +- .../Notifications/ShowPushNotification.tsx | 7 +- .../Patient/DailyRoundListDetails.tsx | 15 +- src/components/Patient/DailyRounds.tsx | 88 +- src/components/Patient/DiagnosesFilter.tsx | 18 +- src/components/Patient/FileUploadPage.tsx | 9 +- src/components/Patient/InsuranceDetails.tsx | 11 +- .../Patient/InsuranceDetailsCard.tsx | 5 +- src/components/Patient/ManagePatients.tsx | 85 +- .../Patient/PatientCategorySelect.tsx | 10 +- .../Patient/PatientConsentRecordBlock.tsx | 24 +- .../Patient/PatientConsentRecords.tsx | 37 +- src/components/Patient/PatientFilter.tsx | 61 +- src/components/Patient/PatientHome.tsx | 107 +- src/components/Patient/PatientInfoCard.tsx | 84 +- src/components/Patient/PatientNotes.tsx | 40 +- src/components/Patient/PatientRegister.tsx | 139 +- src/components/Patient/SampleFilters.tsx | 26 +- src/components/Patient/SamplePreview.tsx | 12 +- src/components/Patient/SampleTest.tsx | 36 +- src/components/Patient/SampleTestCard.tsx | 23 +- src/components/Patient/SampleViewAdmin.tsx | 41 +- src/components/Patient/ShiftCreate.tsx | 53 +- src/components/Patient/UpdateStatusDialog.tsx | 43 +- src/components/Patient/Utils.ts | 2 +- src/components/Patient/models.tsx | 9 +- src/components/Resource/ResourceBadges.tsx | 5 +- src/components/Resource/ResourceBlock.tsx | 11 +- src/components/Resource/ResourceBoard.tsx | 130 +- .../Resource/ResourceCommentSection.tsx | 21 +- src/components/Resource/ResourceCreate.tsx | 44 +- src/components/Resource/ResourceDetails.tsx | 24 +- .../Resource/ResourceDetailsUpdate.tsx | 43 +- src/components/Resource/ResourceFilter.tsx | 29 +- src/components/Resource/ResourceList.tsx | 35 +- src/components/Scribe/Scribe.tsx | 23 +- src/components/Scribe/formDetails.ts | 7 +- src/components/Shifting/ShiftDetails.tsx | 46 +- .../Shifting/ShiftDetailsUpdate.tsx | 64 +- src/components/Shifting/ShiftingBadges.tsx | 14 +- src/components/Shifting/ShiftingBlock.tsx | 14 +- src/components/Shifting/ShiftingBoard.tsx | 141 +- .../Shifting/ShiftingCommentsSection.tsx | 19 +- src/components/Shifting/ShiftingFilters.tsx | 40 +- src/components/Shifting/ShiftingList.tsx | 36 +- src/components/Symptoms/SymptomsBuilder.tsx | 34 +- src/components/Symptoms/SymptomsCard.tsx | 19 +- src/components/Symptoms/api.ts | 9 +- src/components/Symptoms/types.ts | 2 +- src/components/Symptoms/utils.ts | 7 +- .../Users/ConfirmHomeFacilityUpdateDialog.tsx | 1 + src/components/Users/LinkFacilityDialog.tsx | 5 +- src/components/Users/ManageUsers.tsx | 70 +- src/components/Users/SkillsSlideOver.tsx | 33 +- .../Users/SkillsSlideOverComponents.tsx | 13 +- src/components/Users/UnlinkFacilityDialog.tsx | 1 + src/components/Users/UnlinkSkillDialog.tsx | 1 + src/components/Users/UserAdd.tsx | 79 +- src/components/Users/UserFilter.tsx | 35 +- src/components/Users/UserProfile.tsx | 105 +- src/components/Users/models.tsx | 10 +- .../VitalsMonitor/HL7DeviceClient.ts | 7 +- .../VitalsMonitor/HL7PatientVitalsMonitor.tsx | 27 +- .../VitalsMonitor/HL7VitalsRenderer.ts | 4 +- .../VitalsMonitor/VentilatorDeviceClient.ts | 7 +- .../VentilatorPatientVitalsMonitor.tsx | 22 +- .../VentilatorWaveformsRenderer.ts | 4 +- .../VitalsMonitor/VitalsMonitorFooter.tsx | 2 +- .../VitalsMonitor/VitalsMonitorHeader.tsx | 10 +- .../VitalsMonitor/WaveformLabels.tsx | 2 +- src/components/VitalsMonitor/types.ts | 4 +- .../VitalsMonitor/useHL7VitalsMonitor.ts | 15 +- .../useVentilatorVitalsMonitor.ts | 21 +- .../useVitalsAspectRatioConfig.ts | 5 +- src/components/VitalsMonitor/utils.ts | 7 +- src/components/ui/alert.tsx | 2 +- src/components/ui/button.tsx | 4 +- src/components/ui/dropdown-menu.tsx | 2 +- src/components/ui/toast.tsx | 4 +- src/components/ui/toaster.tsx | 3 +- src/components/ui/tooltip.tsx | 2 +- src/globals.d.ts | 1 + src/{common => }/hooks/useActiveLink.ts | 0 src/{common => }/hooks/useAppHistory.ts | 3 +- src/{common => }/hooks/useAuthUser.ts | 6 +- src/{common => }/hooks/useBreakpoints.ts | 2 +- src/{common => }/hooks/useCanvas.ts | 0 src/{common => }/hooks/useCareApps.ts | 4 +- src/{common => }/hooks/useConfirmedAction.ts | 0 src/{Utils => hooks}/useDragAndDrop.ts | 0 src/{common => }/hooks/useExport.tsx | 3 +- src/{Utils => hooks}/useFileManager.tsx | 20 +- src/{Utils => hooks}/useFileUpload.tsx | 19 +- src/{common => }/hooks/useFilters.tsx | 13 +- src/{common => }/hooks/useFullscreen.ts | 0 src/{common => }/hooks/useIsAuthorized.ts | 5 +- src/{common => }/hooks/useMergeState.js | 0 src/{common => }/hooks/useMessageListener.ts | 0 .../hooks/useNotificationSubscriptionState.ts | 10 +- src/{common => }/hooks/useRangePagination.ts | 0 src/hooks/useRecorder.d.ts | 3 + src/{Utils => hooks}/useRecorder.js | 4 +- src/{common => }/hooks/useSlug.ts | 0 src/{Utils => hooks}/useTimer.tsx | 0 src/hooks/{use-toast.ts => useToast.ts} | 0 src/{Utils => hooks}/useVisibility.ts | 2 +- src/{common => }/hooks/useWindowDimensions.ts | 2 +- src/i18n.ts | 26 +- src/index.tsx | 9 +- src/pluginTypes.ts | 10 +- src/service-worker.ts | 3 +- vite.config.mts | 275 +- 505 files changed, 6491 insertions(+), 8568 deletions(-) delete mode 100644 .envrc delete mode 100644 cypress/e2e/auth_spec/roles.cy.ts delete mode 100644 cypress/fixtures/users.json rename {src/Locale => public/locale}/hi.json (99%) rename {src/Locale => public/locale}/kn.json (99%) rename {src/Locale => public/locale}/ml.json (99%) rename {src/Locale => public/locale}/mr.json (100%) rename {src/Locale => public/locale}/ta.json (99%) delete mode 100644 src/Locale/TRANSLATION_CONTRIBUTION.md delete mode 100644 src/Locale/en.json rename src/{Redux => Utils/request}/api.tsx (99%) delete mode 100644 src/Utils/useRecorder.d.ts delete mode 100644 src/components/Auth/index.tsx rename src/components/Common/{components => }/AccordionV2.tsx (100%) rename src/components/Common/{components => }/ButtonV2.tsx (96%) rename src/components/Common/{components => }/CircularProgress.tsx (100%) rename src/components/Common/{components => }/CollapseV2.tsx (100%) rename src/components/Common/{components => }/ContactLink.tsx (91%) rename src/components/Common/{components => }/HelperComponents.tsx (100%) rename src/components/Common/{components => }/Menu.tsx (91%) rename src/components/Common/{components => }/Page.tsx (89%) rename src/components/Common/{components => }/Readmore.tsx (100%) rename src/components/Common/{components => }/Switch.tsx (95%) rename src/components/Common/{components => }/Table.tsx (100%) rename src/components/Common/{components => }/Tabs.tsx (92%) create mode 100644 src/components/Facility/Consultations/components/ReactEcharts.tsx create mode 100644 src/globals.d.ts rename src/{common => }/hooks/useActiveLink.ts (100%) rename src/{common => }/hooks/useAppHistory.ts (94%) rename src/{common => }/hooks/useAuthUser.ts (86%) rename src/{common => }/hooks/useBreakpoints.ts (93%) rename src/{common => }/hooks/useCanvas.ts (100%) rename src/{common => }/hooks/useCareApps.ts (99%) rename src/{common => }/hooks/useConfirmedAction.ts (100%) rename src/{Utils => hooks}/useDragAndDrop.ts (100%) rename src/{common => }/hooks/useExport.tsx (98%) rename src/{Utils => hooks}/useFileManager.tsx (97%) rename src/{Utils => hooks}/useFileUpload.tsx (97%) rename src/{common => }/hooks/useFilters.tsx (97%) rename src/{common => }/hooks/useFullscreen.ts (100%) rename src/{common => }/hooks/useIsAuthorized.ts (58%) rename src/{common => }/hooks/useMergeState.js (100%) rename src/{common => }/hooks/useMessageListener.ts (100%) rename src/{common => }/hooks/useNotificationSubscriptionState.ts (91%) rename src/{common => }/hooks/useRangePagination.ts (100%) create mode 100644 src/hooks/useRecorder.d.ts rename src/{Utils => hooks}/useRecorder.js (97%) rename src/{common => }/hooks/useSlug.ts (100%) rename src/{Utils => hooks}/useTimer.tsx (100%) rename src/hooks/{use-toast.ts => useToast.ts} (100%) rename src/{Utils => hooks}/useVisibility.ts (94%) rename src/{common => }/hooks/useWindowDimensions.ts (93%) diff --git a/.env b/.env index ebc0ebd5be3..b5db3d0088f 100644 --- a/.env +++ b/.env @@ -14,4 +14,4 @@ ESLINT_NO_DEV_ERRORS=true CARE_CDN_URL="https://egov-s3-facility-10bedicu.s3.amazonaws.com https://egov-s3-patient-data-10bedicu.s3.amazonaws.com http://localhost:4566" REACT_ALLOWED_LOCALES="en,hi,ta,ml,mr,kn" -REACT_ENABLED_APPS="ohcnetwork/care_livekit_fe@main" +REACT_ENABLED_APPS="" diff --git a/.envrc b/.envrc deleted file mode 100644 index c729eb59836..00000000000 --- a/.envrc +++ /dev/null @@ -1,2 +0,0 @@ -dotenv -test -f .env.local && dotenv .env.local \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index ba722afdd73..22765ca5aa1 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -6,5 +6,8 @@ "jsxSingleQuote": false, "arrowParens": "always", "tailwindFunctions": ["classNames"], - "plugins": ["prettier-plugin-tailwindcss"] -} + "importOrder": ["", "^@/lib/(.*)$", "^@/CAREUI/(.*)$", "^@/components/ui/(.*)$", "^@/components/(.*)$", "^@/hooks/(.*)$", "^@/common/(.*)$", "^@/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "plugins": ["prettier-plugin-tailwindcss", "@trivago/prettier-plugin-sort-imports"] +} \ No newline at end of file diff --git a/cypress.config.ts b/cypress.config.ts index 0c939ce50b3..b6e8fadd462 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -1,6 +1,6 @@ import { defineConfig } from "cypress"; -import fs from "fs"; import cypressSplit from "cypress-split"; +import fs from "fs"; export default defineConfig({ projectId: "wf7d2m", @@ -30,7 +30,6 @@ export default defineConfig({ baseUrl: "http://localhost:4000", retries: 2, requestTimeout: 15000, - excludeSpecPattern: "**/*roles.cy.ts", }, env: { API_URL: process.env.REACT_CARE_API_URL ?? "http://localhost:9000", diff --git a/cypress/e2e/assets_spec/AssetHomepage.cy.ts b/cypress/e2e/assets_spec/AssetHomepage.cy.ts index bf608cdab9f..906cd9b2edc 100644 --- a/cypress/e2e/assets_spec/AssetHomepage.cy.ts +++ b/cypress/e2e/assets_spec/AssetHomepage.cy.ts @@ -1,10 +1,11 @@ -import { AssetSearchPage } from "../../pageobject/Asset/AssetSearch"; -import { AssetQRScanPage } from "../../pageobject/Asset/AssetQRScan"; -import { AssetPagination } from "../../pageobject/Asset/AssetPagination"; -import { AssetFilters } from "../../pageobject/Asset/AssetFilters"; +import { v4 as uuidv4 } from "uuid"; + import { AssetPage } from "../../pageobject/Asset/AssetCreation"; +import { AssetFilters } from "../../pageobject/Asset/AssetFilters"; +import { AssetPagination } from "../../pageobject/Asset/AssetPagination"; +import { AssetQRScanPage } from "../../pageobject/Asset/AssetQRScan"; +import { AssetSearchPage } from "../../pageobject/Asset/AssetSearch"; import LoginPage from "../../pageobject/Login/LoginPage"; -import { v4 as uuidv4 } from "uuid"; describe("Asset Tab", () => { const assetSearchPage = new AssetSearchPage(); @@ -18,7 +19,7 @@ describe("Asset Tab", () => { const serialNumber = Math.floor(Math.random() * 10 ** 10).toString(); before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/assets_spec/AssetsCreation.cy.ts b/cypress/e2e/assets_spec/AssetsCreation.cy.ts index 6d94108b362..61c6fe9b517 100644 --- a/cypress/e2e/assets_spec/AssetsCreation.cy.ts +++ b/cypress/e2e/assets_spec/AssetsCreation.cy.ts @@ -1,7 +1,8 @@ -import { AssetPage } from "../../pageobject/Asset/AssetCreation"; import { v4 as uuidv4 } from "uuid"; -import LoginPage from "../../pageobject/Login/LoginPage"; + +import { AssetPage } from "../../pageobject/Asset/AssetCreation"; import { AssetSearchPage } from "../../pageobject/Asset/AssetSearch"; +import LoginPage from "../../pageobject/Login/LoginPage"; describe("Asset", () => { const assetPage = new AssetPage(); @@ -11,7 +12,7 @@ describe("Asset", () => { const serialNumber = Math.floor(Math.random() * 10 ** 10).toString(); before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/assets_spec/AssetsManage.cy.ts b/cypress/e2e/assets_spec/AssetsManage.cy.ts index 983a82be07b..17ee99bdb62 100644 --- a/cypress/e2e/assets_spec/AssetsManage.cy.ts +++ b/cypress/e2e/assets_spec/AssetsManage.cy.ts @@ -1,8 +1,8 @@ import { AssetPage } from "../../pageobject/Asset/AssetCreation"; -import LoginPage from "../../pageobject/Login/LoginPage"; +import { AssetFilters } from "../../pageobject/Asset/AssetFilters"; import { AssetSearchPage } from "../../pageobject/Asset/AssetSearch"; import FacilityPage from "../../pageobject/Facility/FacilityCreation"; -import { AssetFilters } from "../../pageobject/Asset/AssetFilters"; +import LoginPage from "../../pageobject/Login/LoginPage"; function addDaysToDate(numberOfDays: number) { const inputDate = new Date(); @@ -22,7 +22,7 @@ describe("Asset", () => { const initiallocationName = "Camera Location"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/auth_spec/roles.cy.ts b/cypress/e2e/auth_spec/roles.cy.ts deleted file mode 100644 index c84679de943..00000000000 --- a/cypress/e2e/auth_spec/roles.cy.ts +++ /dev/null @@ -1,19 +0,0 @@ -import * as users from "../../fixtures/users.json"; - -describe("authentication", () => { - users.forEach((user) => { - it("Login as " + user.username + " - " + user.rolename, () => { - cy.loginByApi(user.username, "passwordR0FL"); - cy.awaitUrl("/user/profile"); - cy.get("dd").should("contain", user.username); - cy.get("dd").should("contain", user.rolename); - }); - }); - afterEach(() => { - cy.log("Logging out"); - cy.get("#sign-out-button").contains("Sign Out").click(); - cy.getLocalStorage("care_access_token").should("be.null"); - cy.getLocalStorage("care_refresh_token").should("be.null"); - cy.url().should("include", "/"); - }); -}); diff --git a/cypress/e2e/facility_spec/FacilityCreation.cy.ts b/cypress/e2e/facility_spec/FacilityCreation.cy.ts index 918e926d107..fff1311fdd6 100644 --- a/cypress/e2e/facility_spec/FacilityCreation.cy.ts +++ b/cypress/e2e/facility_spec/FacilityCreation.cy.ts @@ -1,6 +1,6 @@ import FacilityPage from "../../pageobject/Facility/FacilityCreation"; -import LoginPage from "../../pageobject/Login/LoginPage"; import FacilityHome from "../../pageobject/Facility/FacilityHome"; +import LoginPage from "../../pageobject/Login/LoginPage"; import ManageUserPage from "../../pageobject/Users/ManageUserPage"; import { UserCreationPage } from "../../pageobject/Users/UserCreation"; @@ -59,7 +59,7 @@ describe("Facility Creation", () => { const triageErrorMessage = ["This field is required"]; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityHomepage.cy.ts b/cypress/e2e/facility_spec/FacilityHomepage.cy.ts index b8fb0afd9d9..bc84aea4882 100644 --- a/cypress/e2e/facility_spec/FacilityHomepage.cy.ts +++ b/cypress/e2e/facility_spec/FacilityHomepage.cy.ts @@ -1,11 +1,10 @@ // FacilityCreation - -import LoginPage from "../../pageobject/Login/LoginPage"; +import { AssetPagination } from "../../pageobject/Asset/AssetPagination"; +import FacilityPage from "../../pageobject/Facility/FacilityCreation"; import FacilityHome from "../../pageobject/Facility/FacilityHome"; +import LoginPage from "../../pageobject/Login/LoginPage"; import ManageUserPage from "../../pageobject/Users/ManageUserPage"; -import FacilityPage from "../../pageobject/Facility/FacilityCreation"; import { UserPage } from "../../pageobject/Users/UserSearch"; -import { AssetPagination } from "../../pageobject/Asset/AssetPagination"; describe("Facility Homepage Function", () => { const loginPage = new LoginPage(); @@ -25,7 +24,7 @@ describe("Facility Homepage Function", () => { const facilityType = "Private Hospital"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityInventory.cy.ts b/cypress/e2e/facility_spec/FacilityInventory.cy.ts index 78e7af88cea..a9f32984efc 100644 --- a/cypress/e2e/facility_spec/FacilityInventory.cy.ts +++ b/cypress/e2e/facility_spec/FacilityInventory.cy.ts @@ -1,6 +1,6 @@ import FacilityPage from "../../pageobject/Facility/FacilityCreation"; -import LoginPage from "../../pageobject/Login/LoginPage"; import FacilityHome from "../../pageobject/Facility/FacilityHome"; +import LoginPage from "../../pageobject/Login/LoginPage"; describe("Inventory Management Section", () => { const facilityPage = new FacilityPage(); @@ -9,7 +9,7 @@ describe("Inventory Management Section", () => { const inventoryName = "PPE"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/facility_spec/FacilityManage.cy.ts b/cypress/e2e/facility_spec/FacilityManage.cy.ts index c53943733e9..10074e81166 100644 --- a/cypress/e2e/facility_spec/FacilityManage.cy.ts +++ b/cypress/e2e/facility_spec/FacilityManage.cy.ts @@ -1,8 +1,9 @@ -import LoginPage from "../../pageobject/Login/LoginPage"; -import FacilityManage from "../../pageobject/Facility/FacilityManage"; -import FacilityPage from "../../pageobject/Facility/FacilityCreation"; import { v4 as uuidv4 } from "uuid"; +import FacilityPage from "../../pageobject/Facility/FacilityCreation"; +import FacilityManage from "../../pageobject/Facility/FacilityManage"; +import LoginPage from "../../pageobject/Login/LoginPage"; + describe("Facility Manage Functions", () => { const loginPage = new LoginPage(); const facilityManage = new FacilityManage(); @@ -26,7 +27,7 @@ describe("Facility Manage Functions", () => { const currentUpdatedOccupied = "100"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts index 1964f913a03..65adf131c87 100644 --- a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts +++ b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts @@ -1,7 +1,7 @@ import LoginPage from "../../pageobject/Login/LoginPage"; +import { PatientConsultationPage } from "../../pageobject/Patient/PatientConsultation"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; import PatientLogupdate from "../../pageobject/Patient/PatientLogupdate"; -import { PatientConsultationPage } from "../../pageobject/Patient/PatientConsultation"; describe("Patient swtich bed functionality", () => { const loginPage = new LoginPage(); @@ -15,7 +15,7 @@ describe("Patient swtich bed functionality", () => { const switchPatientTwo = "Dummy Patient 7"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts b/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts index 9911090eba0..4c84f7fad8f 100644 --- a/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts +++ b/cypress/e2e/patient_spec/PatientConsultationCreation.cy.ts @@ -1,12 +1,12 @@ import LoginPage from "../../pageobject/Login/LoginPage"; -import { PatientPage } from "../../pageobject/Patient/PatientCreation"; import { PatientConsultationPage } from "../../pageobject/Patient/PatientConsultation"; -import PatientPredefined from "../../pageobject/Patient/PatientPredefined"; -import ShiftCreation from "../../pageobject/Shift/ShiftCreation"; -import PatientInvestigation from "../../pageobject/Patient/PatientInvestigation"; -import PatientTreatmentPlan from "../../pageobject/Patient/PatientTreatmentPlan"; +import { PatientPage } from "../../pageobject/Patient/PatientCreation"; import PatientDeathReport from "../../pageobject/Patient/PatientDeathReport"; +import PatientInvestigation from "../../pageobject/Patient/PatientInvestigation"; +import PatientPredefined from "../../pageobject/Patient/PatientPredefined"; import PatientPrescription from "../../pageobject/Patient/PatientPrescription"; +import PatientTreatmentPlan from "../../pageobject/Patient/PatientTreatmentPlan"; +import ShiftCreation from "../../pageobject/Shift/ShiftCreation"; describe("Patient Consultation in multiple combination", () => { const patientConsultationPage = new PatientConsultationPage(); @@ -38,7 +38,7 @@ describe("Patient Consultation in multiple combination", () => { const patientIpNumber = `${Math.floor(Math.random() * 90 + 10)}/${Math.floor(Math.random() * 9000 + 1000)}`; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts index be9b06303cb..e2403fd56bd 100644 --- a/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts +++ b/cypress/e2e/patient_spec/PatientConsultationDischarge.cy.ts @@ -20,7 +20,7 @@ describe("Patient Discharge based on multiple reason", () => { const doctorName = "Custom Doctor"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts index c1362c328c0..dd626f619ce 100644 --- a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts @@ -1,4 +1,5 @@ import { DoctorConnect } from "pageobject/Patient/PatientDoctorConnect"; + import LoginPage from "../../pageobject/Login/LoginPage"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; @@ -12,7 +13,7 @@ describe("Patient Doctor Connect in consultation page", () => { const teleIcuUser = "Dev Doctor Two"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts index 9a21eaea51f..e35d3eb8961 100644 --- a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts @@ -14,7 +14,7 @@ describe("Patient Discussion notes in the consultation page", () => { const discussionNotesSuccessMessage = "Note added successfully"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientFileUpload.ts b/cypress/e2e/patient_spec/PatientFileUpload.ts index 7e5a3073179..110631551a1 100644 --- a/cypress/e2e/patient_spec/PatientFileUpload.ts +++ b/cypress/e2e/patient_spec/PatientFileUpload.ts @@ -1,6 +1,7 @@ import LoginPage from "../../pageobject/Login/LoginPage"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; import { PatientFileUpload } from "../../pageobject/Patient/PatientFileupload"; + const loginPage = new LoginPage(); const patientPage = new PatientPage(); const patientFileUpload = new PatientFileUpload(); @@ -17,7 +18,7 @@ function runTests( const patientNameTwo = "Dummy Patient 4"; const patientNameThree = "Dummy Patient 5"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); @@ -90,7 +91,7 @@ function runTests( patientFileUpload.verifyUploadFilePresence(newFileName); patientFileUpload.verifyFileRenameOption(false); // Login as District Admin - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.reload(); // Verify the file edit option is available patientFileUpload.verifyUploadFilePresence(newFileName); diff --git a/cypress/e2e/patient_spec/PatientHomepage.cy.ts b/cypress/e2e/patient_spec/PatientHomepage.cy.ts index 188b6bc9457..32d869b8f50 100644 --- a/cypress/e2e/patient_spec/PatientHomepage.cy.ts +++ b/cypress/e2e/patient_spec/PatientHomepage.cy.ts @@ -24,7 +24,7 @@ describe("Patient Homepage present functionalities", () => { const patientToDateBadge = "2023-12-07"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts index 835e53459eb..b6d7ecbc173 100644 --- a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts +++ b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts @@ -1,8 +1,8 @@ import LoginPage from "../../pageobject/Login/LoginPage"; import { PatientConsultationPage } from "../../pageobject/Patient/PatientConsultation"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; -import PatientLogupdate from "../../pageobject/Patient/PatientLogupdate"; import PatientInvestigation from "../../pageobject/Patient/PatientInvestigation"; +import PatientLogupdate from "../../pageobject/Patient/PatientLogupdate"; import PatientPrescription from "../../pageobject/Patient/PatientPrescription"; describe("Patient Log Update in Normal, Critical and TeleIcu", () => { @@ -41,7 +41,7 @@ describe("Patient Log Update in Normal, Critical and TeleIcu", () => { const domicilaryPatient = "Dummy Patient 11"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientPrescription.cy.ts b/cypress/e2e/patient_spec/PatientPrescription.cy.ts index 86ca4122082..53e67324199 100644 --- a/cypress/e2e/patient_spec/PatientPrescription.cy.ts +++ b/cypress/e2e/patient_spec/PatientPrescription.cy.ts @@ -1,6 +1,6 @@ -import PatientPrescription from "../../pageobject/Patient/PatientPrescription"; import LoginPage from "../../pageobject/Login/LoginPage"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; +import PatientPrescription from "../../pageobject/Patient/PatientPrescription"; const patientPrescription = new PatientPrescription(); const loginPage = new LoginPage(); @@ -15,7 +15,7 @@ const medicineIndicator = "Test Indicator"; describe("Patient Medicine Administration", () => { before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/patient_spec/PatientRegistration.cy.ts b/cypress/e2e/patient_spec/PatientRegistration.cy.ts index 36c08497c2c..cb84fa06674 100644 --- a/cypress/e2e/patient_spec/PatientRegistration.cy.ts +++ b/cypress/e2e/patient_spec/PatientRegistration.cy.ts @@ -1,10 +1,10 @@ +import FacilityPage from "../../pageobject/Facility/FacilityCreation"; import LoginPage from "../../pageobject/Login/LoginPage"; import { PatientPage } from "../../pageobject/Patient/PatientCreation"; -import FacilityPage from "../../pageobject/Facility/FacilityCreation"; -import { generatePhoneNumber } from "../../pageobject/utils/constants"; -import PatientTransfer from "../../pageobject/Patient/PatientTransfer"; import PatientInsurance from "../../pageobject/Patient/PatientInsurance"; import PatientMedicalHistory from "../../pageobject/Patient/PatientMedicalHistory"; +import PatientTransfer from "../../pageobject/Patient/PatientTransfer"; +import { generatePhoneNumber } from "../../pageobject/utils/constants"; const yearOfBirth = "2001"; const isHCXEnabled = Cypress.env("ENABLE_HCX"); @@ -71,7 +71,7 @@ describe("Patient Creation with consultation", () => { const patientOccupation = "Student"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts b/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts index 2b4e75e1883..299d753d720 100644 --- a/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts +++ b/cypress/e2e/resource_spec/ResourcesHomepage.cy.ts @@ -1,6 +1,6 @@ +import FacilityPage from "../../pageobject/Facility/FacilityCreation"; import LoginPage from "../../pageobject/Login/LoginPage"; import ResourcePage from "../../pageobject/Resource/ResourcePage"; -import FacilityPage from "../../pageobject/Facility/FacilityCreation"; describe("Resource Page", () => { let createdResource: string; @@ -10,7 +10,7 @@ describe("Resource Page", () => { const phone_number = "9999999999"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersCreation.cy.ts b/cypress/e2e/users_spec/UsersCreation.cy.ts index 8e7236835e7..f495a136d97 100644 --- a/cypress/e2e/users_spec/UsersCreation.cy.ts +++ b/cypress/e2e/users_spec/UsersCreation.cy.ts @@ -1,11 +1,11 @@ -import LoginPage from "../../pageobject/Login/LoginPage"; import { AssetSearchPage } from "../../pageobject/Asset/AssetSearch"; import FacilityPage from "../../pageobject/Facility/FacilityCreation"; -import { UserPage } from "../../pageobject/Users/UserSearch"; +import LoginPage from "../../pageobject/Login/LoginPage"; import { UserCreationPage } from "../../pageobject/Users/UserCreation"; +import { UserPage } from "../../pageobject/Users/UserSearch"; import { - generatePhoneNumber, generateEmergencyPhoneNumber, + generatePhoneNumber, } from "../../pageobject/utils/constants"; describe("User Creation", () => { @@ -55,7 +55,7 @@ describe("User Creation", () => { ]; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersHomepage.cy.ts b/cypress/e2e/users_spec/UsersHomepage.cy.ts index 634336a4ef9..0dd03c74304 100644 --- a/cypress/e2e/users_spec/UsersHomepage.cy.ts +++ b/cypress/e2e/users_spec/UsersHomepage.cy.ts @@ -17,7 +17,7 @@ describe("User Homepage", () => { const doctorUserName = "devdoctor1"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/e2e/users_spec/UsersManage.cy.ts b/cypress/e2e/users_spec/UsersManage.cy.ts index 3d9d18ff285..9ed4fe34ec7 100644 --- a/cypress/e2e/users_spec/UsersManage.cy.ts +++ b/cypress/e2e/users_spec/UsersManage.cy.ts @@ -1,7 +1,7 @@ import LoginPage from "../../pageobject/Login/LoginPage"; -import { UserPage } from "../../pageobject/Users/UserSearch"; import ManageUserPage from "../../pageobject/Users/ManageUserPage"; import { UserCreationPage } from "../../pageobject/Users/UserCreation"; +import { UserPage } from "../../pageobject/Users/UserSearch"; describe("Manage User", () => { const loginPage = new LoginPage(); @@ -20,7 +20,7 @@ describe("Manage User", () => { const linkedskill = "General Medicine"; before(() => { - loginPage.loginAsDisctrictAdmin(); + loginPage.loginAsDistrictAdmin(); cy.saveLocalStorage(); }); diff --git a/cypress/fixtures/users.json b/cypress/fixtures/users.json deleted file mode 100644 index 3a935589846..00000000000 --- a/cypress/fixtures/users.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "username": "karadmin", - "rolename": "DistrictAdmin" - }, - { - "username": "karadminro", - "rolename": "DistrictReadOnlyAdmin" - }, - { - "username": "karstaff1", - "rolename": "Staff" - }, - { - "username": "karstaffro", - "rolename": "StaffReadOnly" - }, - { - "username": "karlocal", - "rolename": "LocalBodyAdmin" - }, - { - "username": "karward", - "rolename": "WardAdmin" - }, - { - "username": "kardoc1", - "rolename": "Doctor" - }, - { - "username": "karpharma1", - "rolename": "Pharmacist" - }, - { - "username": "karvol", - "rolename": "Volunteer" - } -] diff --git a/cypress/pageobject/Login/LoginPage.ts b/cypress/pageobject/Login/LoginPage.ts index 06bd165c9ac..cd5230a7772 100644 --- a/cypress/pageobject/Login/LoginPage.ts +++ b/cypress/pageobject/Login/LoginPage.ts @@ -1,7 +1,7 @@ // LoginPage.ts class LoginPage { - loginAsDisctrictAdmin(): void { + loginAsDistrictAdmin(): void { cy.loginByApi("devdistrictadmin", "Coronasafe@123"); } diff --git a/package-lock.json b/package-lock.json index a4276cb3d35..e46a726b69c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,7 @@ "hi-profiles": "^1.1.0", "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", + "i18next-http-backend": "^2.6.2", "lodash-es": "^4.17.21", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", @@ -51,10 +52,8 @@ "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", "react-infinite-scroll-component": "^6.1.0", - "react-markdown": "^8.0.7", "react-pdf": "^9.1.0", "react-webcam": "^7.2.0", - "rehype-raw": "^6.1.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "use-keyboard-shortcut": "^1.1.6", @@ -64,8 +63,11 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/dompurify": "^3.0.5", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", + "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", @@ -80,6 +82,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dompurify": "^3.1.7", "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", @@ -89,8 +92,10 @@ "eslint-plugin-react-hooks": "^4.6.2", "glob": "^11.0.0", "husky": "^8.0.3", + "jsdom": "^25.0.1", "lint-staged": "^13.2.3", "local-cypress": "^1.2.6", + "marked": "^14.1.3", "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", @@ -110,6 +115,7 @@ "apps/care_livekit_fe": { "name": "care-livekit", "version": "0.0.1", + "extraneous": true, "license": "ISC", "dependencies": { "@livekit/components-react": "^2.6.2", @@ -419,6 +425,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", @@ -553,10 +599,23 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "license": "MIT", "engines": { @@ -564,9 +623,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -698,13 +757,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1872,26 +1931,19 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@bufbuild/protobuf": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", - "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", - "license": "(Apache-2.0 AND BSD-3-Clause)" - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2792,74 +2844,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@livekit/components-core": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@livekit/components-core/-/components-core-0.11.10.tgz", - "integrity": "sha512-PvFlKq1W64b9GfFjG7L4/o7ulAl5yFFpDTvG+JHQiXkaPaecMPt/qPbs6zdvUlC7om1TGMuW/pIN7o585Xz9Fg==", - "license": "Apache-2.0", - "dependencies": { - "@floating-ui/dom": "1.6.11", - "loglevel": "1.9.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "livekit-client": "^2.5.7", - "tslib": "^2.6.2" - } - }, - "node_modules/@livekit/components-react": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/@livekit/components-react/-/components-react-2.6.7.tgz", - "integrity": "sha512-z8dgrBrRXIe7oagwFyjehdwL/4zpySJyPdAjeMDXZVbTXYNAugb3a88Ws9yQz4PZFECLkIPXJCN3C3YR+bgh5Q==", - "license": "Apache-2.0", - "dependencies": { - "@livekit/components-core": "0.11.10", - "clsx": "2.1.1", - "usehooks-ts": "3.1.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@livekit/krisp-noise-filter": "^0.2.12", - "livekit-client": "^2.5.7", - "react": ">=18", - "react-dom": ">=18", - "tslib": "^2.6.2" - }, - "peerDependenciesMeta": { - "@livekit/krisp-noise-filter": { - "optional": true - } - } - }, - "node_modules/@livekit/components-styles": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@livekit/components-styles/-/components-styles-1.1.4.tgz", - "integrity": "sha512-QCupn7tQ/dy/WZclrfsgtDe8peiGYS6Ied1IGkKOysaXo04l90t62SIUTKyxgd0dNDhUDC0p34qCggGZs/44lQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@livekit/mutex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@livekit/mutex/-/mutex-1.0.0.tgz", - "integrity": "sha512-aiUhoThBNF9UyGTxEURFzJLhhPLIVTnQiEVMjRhPnfHNKLfo2JY9xovHKIus7B78UD5hsP6DlgpmAsjrz4U0Iw==", - "license": "Apache-2.0" - }, - "node_modules/@livekit/protocol": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/@livekit/protocol/-/protocol-1.24.0.tgz", - "integrity": "sha512-9dCsqnkMn7lvbI4NGh18zhLDsrXyUcpS++TEFgEk5Xv1WM3R2kT3EzqgL1P/mr3jaabM6rJ8wZA/KJLuQNpF5w==", - "license": "Apache-2.0", - "dependencies": { - "@bufbuild/protobuf": "^1.10.0" - } - }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -4954,6 +4938,158 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.3.0.tgz", + "integrity": "sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/generator": "7.17.7", + "@babel/parser": "^7.20.5", + "@babel/traverse": "7.23.2", + "@babel/types": "7.17.0", + "javascript-natural-sort": "0.7.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/generator": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", + "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/traverse/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -4978,6 +5114,7 @@ "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" @@ -4989,6 +5126,16 @@ "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==", "license": "MIT" }, + "node_modules/@types/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "*" + } + }, "node_modules/@types/emscripten": { "version": "1.39.13", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", @@ -5025,21 +5172,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/hast": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/hast/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, "node_modules/@types/is-empty": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.3.tgz", @@ -5047,6 +5179,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -5075,6 +5219,7 @@ "version": "3.0.15", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^2" @@ -5084,12 +5229,14 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, "license": "MIT" }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -5101,16 +5248,11 @@ "undici-types": "~6.19.2" } }, - "node_modules/@types/parse5": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", - "license": "MIT" - }, "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "devOptional": true, "license": "MIT" }, "node_modules/@types/qrcode.react": { @@ -5127,6 +5269,7 @@ "version": "18.3.11", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -5199,6 +5342,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -6306,6 +6456,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -6604,10 +6755,6 @@ "node": ">=6" } }, - "node_modules/care-livekit": { - "resolved": "apps/care_livekit_fe", - "link": true - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6937,16 +7084,6 @@ "node": ">= 0.8" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -7110,6 +7247,15 @@ "yarn": ">=1" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -7155,10 +7301,24 @@ "node": ">=4" } }, + "node_modules/cssstyle": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", + "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "rrweb-cssom": "^0.7.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, "license": "MIT" }, "node_modules/cypress": { @@ -7264,40 +7424,91 @@ "node": ">=0.10" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/data-urls/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/data-view-byte-offset": { @@ -7341,10 +7552,18 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true, + "license": "MIT" + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -7358,6 +7577,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -7717,6 +7937,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -7755,6 +7976,13 @@ "node": ">=6.0.0" } }, + "node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)" + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -9690,246 +9918,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-from-parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", - "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-util-from-parse5": "^7.0.0", - "hast-util-to-parse5": "^7.0.0", - "html-void-elements": "^2.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/hast-util-raw/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", - "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hi-profiles": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hi-profiles/-/hi-profiles-1.1.0.tgz", @@ -9969,6 +9957,19 @@ "dev": true, "license": "ISC" }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/html-parse-stringify": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", @@ -9978,14 +9979,31 @@ "void-elements": "3.1.0" } }, - "node_modules/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/http-signature": { @@ -10080,6 +10098,28 @@ "@babel/runtime": "^7.23.2" } }, + "node_modules/i18next-http-backend": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.6.2.tgz", + "integrity": "sha512-Hp/kd8/VuoxIHmxsknJXjkTYYHzivAyAF15pzliKzk2TiXC25rZCEerb1pUFoxz4IVrG3fCvQSY51/Lu4ECV4A==", + "license": "MIT", + "dependencies": { + "cross-fetch": "4.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/idb": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", @@ -10199,12 +10239,6 @@ "node": ">=10" } }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "license": "MIT" - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -10363,29 +10397,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -10643,6 +10654,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10651,6 +10663,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -10943,6 +10962,13 @@ "node": "*" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -10991,6 +11017,124 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "license": "MIT" }, + "node_modules/jsdom": { + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", + "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssstyle": "^4.1.0", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.12", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.7.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^2.11.2" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", + "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -11126,6 +11270,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -11703,29 +11848,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/livekit-client": { - "version": "2.5.10", - "resolved": "https://registry.npmjs.org/livekit-client/-/livekit-client-2.5.10.tgz", - "integrity": "sha512-H7EeIb19LAH8ejlvhh0JWtWkvXDan6Yf3bpFGlDMb54uPmyRgBY+McfgQsFgJCB9WJL0X+GYUoV1Cmnn8iAoIQ==", - "license": "Apache-2.0", - "dependencies": { - "@livekit/mutex": "1.0.0", - "@livekit/protocol": "1.24.0", - "events": "^3.3.0", - "loglevel": "^1.8.0", - "sdp-transform": "^2.14.1", - "ts-debounce": "^4.0.0", - "tslib": "2.7.0", - "typed-emitter": "^2.1.0", - "webrtc-adapter": "^9.0.0" - } - }, - "node_modules/livekit-client/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, "node_modules/load-plugin": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", @@ -11837,6 +11959,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.isplainobject": { @@ -11931,19 +12054,6 @@ "node": ">=8" } }, - "node_modules/loglevel": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -12038,6 +12148,19 @@ "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" } }, + "node_modules/marked": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", + "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -12051,69 +12174,6 @@ "node": ">=10" } }, - "node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -12929,74 +12989,6 @@ "@types/unist": "*" } }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-markdown": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", @@ -13522,22 +13514,6 @@ "micromark-util-symbol": "^2.0.0" } }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, "node_modules/micromark-util-events-to-acorn": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", @@ -13622,31 +13598,11 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13659,14 +13615,17 @@ ], "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13679,67 +13638,11 @@ ], "license": "MIT" }, - "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -13994,6 +13897,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -14060,7 +13964,6 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", - "optional": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -14226,6 +14129,13 @@ "set-blocking": "^2.0.0" } }, + "node_modules/nwsapi": { + "version": "2.2.13", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", + "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "dev": true, + "license": "MIT" + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -14508,10 +14418,17 @@ } }, "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } }, "node_modules/path-exists": { "version": "4.0.0", @@ -15160,16 +15077,6 @@ "react-is": "^16.13.1" } }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", @@ -15409,749 +15316,145 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, - "node_modules/react-markdown": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", - "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", + "node_modules/react-pdf": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.1.tgz", + "integrity": "sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ==", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "@types/prop-types": "^15.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "prop-types": "^15.0.0", - "property-information": "^6.0.0", - "react-is": "^18.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" + "clsx": "^2.0.0", + "dequal": "^2.0.3", + "make-cancellable-promise": "^1.3.1", + "make-event-props": "^1.6.0", + "merge-refs": "^1.3.0", + "pdfjs-dist": "4.4.168", + "tiny-invariant": "^1.0.0", + "warning": "^4.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" }, "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0" + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/react-markdown/node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "license": "MIT", "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true } - ], + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "license": "MIT", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" } }, - "node_modules/react-markdown/node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/react-webcam": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", + "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "peerDependencies": { + "react": ">=16.2.0", + "react-dom": ">=16.2.0" } }, - "node_modules/react-markdown/node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/react-markdown/node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-markdown/node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-markdown/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/react-pdf": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.1.1.tgz", - "integrity": "sha512-Cn3RTJZMqVOOCgLMRXDamLk4LPGfyB2Np3OwQAUjmHIh47EpuGW1OpAA1Z1GVDLoHx4d5duEDo/YbUkDbr4QFQ==", - "license": "MIT", - "dependencies": { - "clsx": "^2.0.0", - "dequal": "^2.0.3", - "make-cancellable-promise": "^1.3.1", - "make-event-props": "^1.6.0", - "merge-refs": "^1.3.0", - "pdfjs-dist": "4.4.168", - "tiny-invariant": "^1.0.0", - "warning": "^4.0.0" - }, - "funding": { - "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", - "license": "MIT", - "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" - }, - "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", - "redux": "^5.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.6", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.1", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "invariant": "^2.2.4", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-webcam": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", - "integrity": "sha512-xkrzYPqa1ag2DP+2Q/kLKBmCIfEx49bVdgCCCcZf88oF+0NPEbkwYk3/s/C7Zy0mhM8k+hpdNkBLzxg8H0aWcg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.2.0", - "react-dom": ">=16.2.0" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" + "pify": "^2.3.0" } }, "node_modules/read-package-json-fast": { @@ -16359,93 +15662,10 @@ "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/rehype-raw": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz", - "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-raw": "^7.2.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/rehype-raw/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-raw/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "jsesc": "~3.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "regjsparser": "bin/parser" } }, "node_modules/remark-mdx": { @@ -16618,90 +15838,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/remark-rehype/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -17032,6 +16168,13 @@ "fsevents": "~2.3.2" } }, + "node_modules/rrweb-cssom": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17068,6 +16211,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, "license": "MIT", "dependencies": { "mri": "^1.1.0" @@ -17165,6 +16309,19 @@ "node": ">=18" } }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -17199,15 +16356,6 @@ "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==", "license": "MIT" }, - "node_modules/sdp-transform": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.14.2.tgz", - "integrity": "sha512-icY6jVao7MfKCieyo1AyxFYm1baiM+fA00qW/KrNNVlkxHAd34riEKuEkUe4bBb3gJwLJZM+xT60Yj1QL8rHiA==", - "license": "MIT", - "bin": { - "sdp-verify": "checker.js" - } - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -17548,16 +16696,6 @@ "dev": true, "license": "MIT" }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -17927,15 +17065,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, "node_modules/stylus-lookup": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-6.0.0.tgz", @@ -18077,6 +17206,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, "node_modules/synckit": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", @@ -18432,6 +17568,26 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/tldts": { + "version": "6.1.58", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.58.tgz", + "integrity": "sha512-MQJrJhjHOYGYb8DobR6Y4AdDbd4TYkyQ+KBDVc5ODzs1cbrvPpfN1IemYi9jfipJ/vR1YWvrDli0hg1y19VRoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.58" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.58", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.58.tgz", + "integrity": "sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg==", + "dev": true, + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -18497,23 +17653,13 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT", - "optional": true - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "license": "MIT" }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -18533,12 +17679,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-debounce": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-4.0.0.tgz", - "integrity": "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==", - "license": "MIT" - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -18719,15 +17859,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-emitter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", - "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", - "license": "MIT", - "optionalDependencies": { - "rxjs": "*" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -19032,16 +18163,6 @@ "node": ">=8" } }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-inspect": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-8.1.0.tgz", @@ -19070,19 +18191,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-position-from-estree": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", @@ -19097,12 +18205,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-position/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -19305,21 +18407,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/usehooks-ts": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", - "integrity": "sha512-bBIa7yUyPhE1BCc0GmR96VU/15l/9gP1Ch5mYdLcFBaFGQsdmXkvjV0TtOqW1yUd6VjIwDunm+flSciCQXujiw==", - "license": "MIT", - "dependencies": { - "lodash.debounce": "^4.0.8" - }, - "engines": { - "node": ">=16.15.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -19344,6 +18431,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0", @@ -19414,69 +18502,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", - "license": "MIT" - }, - "node_modules/vfile-location/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -20398,6 +19423,19 @@ "dev": true, "license": "MIT" }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", @@ -20438,22 +19476,11 @@ "defaults": "^1.0.3" } }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause", - "optional": true + "license": "BSD-2-Clause" }, "node_modules/webpack": { "version": "5.95.0", @@ -20549,12 +19576,34 @@ "npm": ">=3.10.0" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", - "optional": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -21233,6 +20282,28 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xlsx": { "version": "0.18.5", "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", @@ -21254,6 +20325,23 @@ "node": ">=0.8" } }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -21314,6 +20402,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, "license": "MIT", "funding": { "type": "github", diff --git a/package.json b/package.json index e779081dc4b..a84fdb9ac13 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "hi-profiles": "^1.1.0", "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", + "i18next-http-backend": "^2.6.2", "lodash-es": "^4.17.21", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", @@ -90,10 +91,8 @@ "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", "react-infinite-scroll-component": "^6.1.0", - "react-markdown": "^8.0.7", "react-pdf": "^9.1.0", "react-webcam": "^7.2.0", - "rehype-raw": "^6.1.1", "tailwind-merge": "^2.5.2", "tailwindcss-animate": "^1.0.7", "use-keyboard-shortcut": "^1.1.6", @@ -103,8 +102,11 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/dompurify": "^3.0.5", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", + "@types/jsdom": "^21.1.7", "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", @@ -119,6 +121,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dompurify": "^3.1.7", "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", @@ -128,8 +131,10 @@ "eslint-plugin-react-hooks": "^4.6.2", "glob": "^11.0.0", "husky": "^8.0.3", + "jsdom": "^25.0.1", "lint-staged": "^13.2.3", "local-cypress": "^1.2.6", + "marked": "^14.1.3", "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", @@ -168,4 +173,4 @@ "node": ">=20.12.0" }, "packageManager": "npm@10.5.0" -} \ No newline at end of file +} diff --git a/src/Locale/hi.json b/public/locale/hi.json similarity index 99% rename from src/Locale/hi.json rename to public/locale/hi.json index 20a822323bf..0eb0cc28cfd 100644 --- a/src/Locale/hi.json +++ b/public/locale/hi.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "संपत्ति बनाने के लिए आपको कम से कम एक स्थान की आवश्यकता होगी।", "zoom_in": "ज़ूम इन", "zoom_out": "ज़ूम आउट" -} \ No newline at end of file +} diff --git a/src/Locale/kn.json b/public/locale/kn.json similarity index 99% rename from src/Locale/kn.json rename to public/locale/kn.json index 0fa96427b85..be18432e0ce 100644 --- a/src/Locale/kn.json +++ b/public/locale/kn.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಕನಿಷ್ಠ ಸ್ಥಳದ ಅಗತ್ಯವಿದೆ.", "zoom_in": "ಜೂಮ್ ಇನ್", "zoom_out": "ಜೂಮ್ ಔಟ್" -} \ No newline at end of file +} diff --git a/src/Locale/ml.json b/public/locale/ml.json similarity index 99% rename from src/Locale/ml.json rename to public/locale/ml.json index b9a45ca73fb..cf381c32c0e 100644 --- a/src/Locale/ml.json +++ b/public/locale/ml.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ഒരു അസസ്‌റ്റ് സൃഷ്‌ടിക്കാൻ നിങ്ങൾക്ക് ഒരു ലൊക്കേഷനെങ്കിലും ആവശ്യമാണ്.", "zoom_in": "സൂം ഇൻ ചെയ്യുക", "zoom_out": "സൂം ഔട്ട്" -} \ No newline at end of file +} diff --git a/src/Locale/mr.json b/public/locale/mr.json similarity index 100% rename from src/Locale/mr.json rename to public/locale/mr.json diff --git a/src/Locale/ta.json b/public/locale/ta.json similarity index 99% rename from src/Locale/ta.json rename to public/locale/ta.json index fb5dd0a72c8..694efd52e20 100644 --- a/src/Locale/ta.json +++ b/public/locale/ta.json @@ -809,4 +809,4 @@ "you_need_at_least_a_location_to_create_an_assest": "ஒரு அசெஸ்ட்டை உருவாக்க குறைந்தபட்சம் ஒரு இருப்பிடமாவது தேவை.", "zoom_in": "பெரிதாக்கவும்", "zoom_out": "பெரிதாக்கவும்" -} \ No newline at end of file +} diff --git a/src/App.tsx b/src/App.tsx index eea75d84c1a..62a173c8409 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,13 +1,16 @@ import { Suspense } from "react"; -import Routers from "./Routers"; -import Integrations from "./Integrations"; -import Loading from "@/components/Common/Loading"; -import HistoryAPIProvider from "./Providers/HistoryAPIProvider"; -import AuthUserProvider from "./Providers/AuthUserProvider"; -import PluginEngine from "./PluginEngine"; -import { FeatureFlagsProvider } from "./Utils/featureFlags"; + import { Toaster } from "@/components/ui/toaster"; +import Loading from "@/components/Common/Loading"; + +import Integrations from "@/Integrations"; +import PluginEngine from "@/PluginEngine"; +import AuthUserProvider from "@/Providers/AuthUserProvider"; +import HistoryAPIProvider from "@/Providers/HistoryAPIProvider"; +import Routers from "@/Routers"; +import { FeatureFlagsProvider } from "@/Utils/featureFlags"; + const App = () => { return ( }> diff --git a/src/CAREUI/display/Chip.tsx b/src/CAREUI/display/Chip.tsx index 14f98da8506..a2bacf8bd61 100644 --- a/src/CAREUI/display/Chip.tsx +++ b/src/CAREUI/display/Chip.tsx @@ -1,6 +1,8 @@ -import CareIcon, { IconName } from "../icons/CareIcon"; -import { ButtonVariant } from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../Utils/utils"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { ButtonVariant } from "@/components/Common/ButtonV2"; + +import { classNames } from "@/Utils/utils"; interface Props { size?: "small" | "medium" | "large"; diff --git a/src/CAREUI/display/Count.tsx b/src/CAREUI/display/Count.tsx index 6b28ca4f962..1f43325d010 100644 --- a/src/CAREUI/display/Count.tsx +++ b/src/CAREUI/display/Count.tsx @@ -1,5 +1,6 @@ -import { classNames } from "../../Utils/utils"; -import CareIcon, { IconName } from "../icons/CareIcon"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; interface Props { count: number; diff --git a/src/CAREUI/display/FilterBadge.tsx b/src/CAREUI/display/FilterBadge.tsx index 0259439a4b8..3a5d40f26f2 100644 --- a/src/CAREUI/display/FilterBadge.tsx +++ b/src/CAREUI/display/FilterBadge.tsx @@ -1,4 +1,4 @@ -import CareIcon from "../icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; export interface FilterBadgeProps { name: string; diff --git a/src/CAREUI/display/NetworkSignal.tsx b/src/CAREUI/display/NetworkSignal.tsx index d241a37674a..6cc212f2f0a 100644 --- a/src/CAREUI/display/NetworkSignal.tsx +++ b/src/CAREUI/display/NetworkSignal.tsx @@ -1,5 +1,6 @@ -import { classNames } from "../../Utils/utils"; -import CareIcon from "../icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; interface Props { /** diff --git a/src/CAREUI/display/PopupModal.tsx b/src/CAREUI/display/PopupModal.tsx index b0b40f2dc7d..6410addbcc2 100644 --- a/src/CAREUI/display/PopupModal.tsx +++ b/src/CAREUI/display/PopupModal.tsx @@ -1,10 +1,13 @@ import { ReactNode, useEffect, useRef, useState } from "react"; -import { Cancel, Submit } from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../Utils/utils"; import { useTranslation } from "react-i18next"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; +import useBreakpoints from "@/hooks/useBreakpoints"; + +import { classNames } from "@/Utils/utils"; + type Props = { show: boolean; onHide: () => void; diff --git a/src/CAREUI/display/RecordMeta.tsx b/src/CAREUI/display/RecordMeta.tsx index 2363ddbd551..6d04c9b8def 100644 --- a/src/CAREUI/display/RecordMeta.tsx +++ b/src/CAREUI/display/RecordMeta.tsx @@ -1,11 +1,13 @@ -import CareIcon from "../icons/CareIcon"; +import { ReactNode } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { formatDateTime, formatName, isUserOnline, relativeTime, -} from "../../Utils/utils"; -import { ReactNode } from "react"; +} from "@/Utils/utils"; interface Props { time?: string; diff --git a/src/CAREUI/display/SubHeading.tsx b/src/CAREUI/display/SubHeading.tsx index 1161ecd8e55..67072fd9e02 100644 --- a/src/CAREUI/display/SubHeading.tsx +++ b/src/CAREUI/display/SubHeading.tsx @@ -1,6 +1,7 @@ import { ReactNode } from "react"; -import CareIcon from "../icons/CareIcon"; -import RecordMeta from "./RecordMeta"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; interface Props { title: ReactNode; diff --git a/src/CAREUI/display/Timeline.tsx b/src/CAREUI/display/Timeline.tsx index aa3fd06e7de..2b029ff526f 100644 --- a/src/CAREUI/display/Timeline.tsx +++ b/src/CAREUI/display/Timeline.tsx @@ -1,10 +1,12 @@ -import CareIcon, { IconName } from "../icons/CareIcon"; -import { classNames, formatName } from "../../Utils/utils"; import { createContext, useContext } from "react"; +import { useTranslation } from "react-i18next"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; -import RecordMeta from "./RecordMeta"; import { UserBareMinimum } from "@/components/Users/models"; -import { useTranslation } from "react-i18next"; + +import { classNames, formatName } from "@/Utils/utils"; export interface TimelineEvent { type: TType; diff --git a/src/CAREUI/icons/CareIcon.tsx b/src/CAREUI/icons/CareIcon.tsx index a45117cc675..80b57085615 100644 --- a/src/CAREUI/icons/CareIcon.tsx +++ b/src/CAREUI/icons/CareIcon.tsx @@ -1,5 +1,5 @@ -import iconData from "./UniconPaths.json"; -import "./icon.css"; +import iconData from "@/CAREUI/icons/UniconPaths.json"; +import "@/CAREUI/icons/icon.css"; export type IconName = keyof typeof iconData; diff --git a/src/CAREUI/icons/Index.tsx b/src/CAREUI/icons/Index.tsx index 527bdfd0a4c..c7f553512aa 100644 --- a/src/CAREUI/icons/Index.tsx +++ b/src/CAREUI/icons/Index.tsx @@ -1,10 +1,13 @@ /* eslint-disable i18next/no-literal-string */ -import React, { useState } from "react"; -import CareIcon, { IconName } from "./CareIcon"; -import iconPaths from "./UniconPaths.json"; import { t } from "i18next"; +import React, { useState } from "react"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; +import iconPaths from "@/CAREUI/icons/UniconPaths.json"; + import PageTitle from "@/components/Common/PageTitle"; -import { useToast } from "@/hooks/use-toast"; + +import { useToast } from "@/hooks/useToast"; const IconIndex: React.FC = () => { const { toast } = useToast(); diff --git a/src/CAREUI/interactive/FiltersSlideover.tsx b/src/CAREUI/interactive/FiltersSlideover.tsx index 4330486e9bc..959fd0621e8 100644 --- a/src/CAREUI/interactive/FiltersSlideover.tsx +++ b/src/CAREUI/interactive/FiltersSlideover.tsx @@ -1,9 +1,12 @@ -import { useTranslation } from "react-i18next"; -import useFilters from "@/common/hooks/useFilters"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import SlideOver from "./SlideOver"; import { ReactNode } from "react"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import SlideOver from "@/CAREUI/interactive/SlideOver"; + +import ButtonV2 from "@/components/Common/ButtonV2"; + +import useFilters from "@/hooks/useFilters"; type AdvancedFilter = ReturnType["advancedFilter"]; diff --git a/src/CAREUI/interactive/HumanChart.tsx b/src/CAREUI/interactive/HumanChart.tsx index 63552d28682..1f6d87f31b3 100644 --- a/src/CAREUI/interactive/HumanChart.tsx +++ b/src/CAREUI/interactive/HumanChart.tsx @@ -1,4 +1,5 @@ import { Fragment } from "react/jsx-runtime"; + import { HumanBodyPaths, HumanBodyRegion } from "@/common/constants"; type Props = { diff --git a/src/CAREUI/interactive/KeyboardShortcut.tsx b/src/CAREUI/interactive/KeyboardShortcut.tsx index 4ad46c99387..07f3af6a429 100644 --- a/src/CAREUI/interactive/KeyboardShortcut.tsx +++ b/src/CAREUI/interactive/KeyboardShortcut.tsx @@ -1,5 +1,6 @@ import useKeyboardShortcut from "use-keyboard-shortcut"; -import { classNames, isAppleDevice } from "../../Utils/utils"; + +import { classNames, isAppleDevice } from "@/Utils/utils"; interface Props { children?: React.ReactNode; diff --git a/src/CAREUI/interactive/LegendInput.tsx b/src/CAREUI/interactive/LegendInput.tsx index 83486095f7a..cb415d76ab1 100644 --- a/src/CAREUI/interactive/LegendInput.tsx +++ b/src/CAREUI/interactive/LegendInput.tsx @@ -1,8 +1,10 @@ -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { RefObject, useRef, useState, useEffect } from "react"; +import { RefObject, useEffect, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + type InputProps = { id?: string; name: string; diff --git a/src/CAREUI/interactive/ScrollOverlay.tsx b/src/CAREUI/interactive/ScrollOverlay.tsx index 7389f313e7c..47d3048e2aa 100644 --- a/src/CAREUI/interactive/ScrollOverlay.tsx +++ b/src/CAREUI/interactive/ScrollOverlay.tsx @@ -1,5 +1,6 @@ -import useVisibility from "../../Utils/useVisibility"; -import { classNames } from "../../Utils/utils"; +import useVisibility from "@/hooks/useVisibility"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/CAREUI/interactive/SlideOver.tsx b/src/CAREUI/interactive/SlideOver.tsx index 78982efc39d..d979be77f99 100644 --- a/src/CAREUI/interactive/SlideOver.tsx +++ b/src/CAREUI/interactive/SlideOver.tsx @@ -4,8 +4,10 @@ import { Transition, TransitionChild, } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; -import CareIcon from "../icons/CareIcon"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; export type SlideFromEdges = "left" | "top" | "right" | "bottom"; diff --git a/src/CAREUI/interactive/Switch.tsx b/src/CAREUI/interactive/Switch.tsx index 495722a0f39..a30f85fbc14 100644 --- a/src/CAREUI/interactive/Switch.tsx +++ b/src/CAREUI/interactive/Switch.tsx @@ -1,4 +1,4 @@ -import { classNames } from "../../Utils/utils"; +import { classNames } from "@/Utils/utils"; interface Props { tabs: Record; diff --git a/src/CAREUI/interactive/Zoom.tsx b/src/CAREUI/interactive/Zoom.tsx index c88412dca1e..0d6513efbba 100644 --- a/src/CAREUI/interactive/Zoom.tsx +++ b/src/CAREUI/interactive/Zoom.tsx @@ -1,6 +1,8 @@ -import { createContext, ReactNode, useContext, useState } from "react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; +import { ReactNode, createContext, useContext, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; type ProviderValue = { scale: number; diff --git a/src/CAREUI/misc/AuthorizedChild.tsx b/src/CAREUI/misc/AuthorizedChild.tsx index e71a4f64b5e..5805ed5f44c 100644 --- a/src/CAREUI/misc/AuthorizedChild.tsx +++ b/src/CAREUI/misc/AuthorizedChild.tsx @@ -1,8 +1,10 @@ import { ReactNode } from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import { useIsAuthorized } from "@/common/hooks/useIsAuthorized"; -import useSlug from "@/common/hooks/useSlug"; -import { AuthorizedForCB } from "../../Utils/AuthorizeFor"; + +import useAuthUser from "@/hooks/useAuthUser"; +import { useIsAuthorized } from "@/hooks/useIsAuthorized"; +import useSlug from "@/hooks/useSlug"; + +import { AuthorizedForCB } from "@/Utils/AuthorizeFor"; interface Props { children: (value: { isAuthorized: boolean }) => JSX.Element; diff --git a/src/CAREUI/misc/PaginatedList.tsx b/src/CAREUI/misc/PaginatedList.tsx index 93a3685b394..1c5f9db99a2 100644 --- a/src/CAREUI/misc/PaginatedList.tsx +++ b/src/CAREUI/misc/PaginatedList.tsx @@ -1,13 +1,14 @@ import { createContext, useContext, useEffect, useState } from "react"; -import { PaginatedResponse, QueryRoute } from "../../Utils/request/types"; -import useQuery, { QueryOptions } from "../../Utils/request/useQuery"; -import ButtonV2, { - CommonButtonProps, -} from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { CommonButtonProps } from "@/components/Common/ButtonV2"; import Pagination from "@/components/Common/Pagination"; +import { PaginatedResponse, QueryRoute } from "@/Utils/request/types"; +import useQuery, { QueryOptions } from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; + const DEFAULT_PER_PAGE_LIMIT = 14; interface PaginatedListContext diff --git a/src/CAREUI/misc/PrintPreview.tsx b/src/CAREUI/misc/PrintPreview.tsx index 9efa11cc01b..53eda1339ac 100644 --- a/src/CAREUI/misc/PrintPreview.tsx +++ b/src/CAREUI/misc/PrintPreview.tsx @@ -1,11 +1,19 @@ import { ReactNode } from "react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import Page from "@/components/Common/components/Page"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; import { useTranslation } from "react-i18next"; -import { ZoomControls, ZoomProvider, ZoomTransform } from "../interactive/Zoom"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import { + ZoomControls, + ZoomProvider, + ZoomTransform, +} from "@/CAREUI/interactive/Zoom"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import Page from "@/components/Common/Page"; + +import useBreakpoints from "@/hooks/useBreakpoints"; + +import { classNames } from "@/Utils/utils"; type Props = { children: ReactNode; diff --git a/src/Integrations/Plausible.tsx b/src/Integrations/Plausible.tsx index e6c4d2fa42a..dfbb2942e5d 100644 --- a/src/Integrations/Plausible.tsx +++ b/src/Integrations/Plausible.tsx @@ -1,7 +1,8 @@ +import careConfig from "@careConfig"; import { useLocationChange } from "raviger"; -import Script from "@/components/Common/Script"; import { useEffect } from "react"; -import careConfig from "@careConfig"; + +import Script from "@/components/Common/Script"; export default function Plausible() { useLocationChange(() => { diff --git a/src/Integrations/index.tsx b/src/Integrations/index.tsx index 9b2b1e156fd..5582a58bc8e 100644 --- a/src/Integrations/index.tsx +++ b/src/Integrations/index.tsx @@ -1,5 +1,5 @@ -import Sentry from "./Sentry"; -import Plausible from "./Plausible"; +import Plausible from "@/Integrations/Plausible"; +import Sentry from "@/Integrations/Sentry"; const Integrations = { Sentry, Plausible }; diff --git a/src/Locale/TRANSLATION_CONTRIBUTION.md b/src/Locale/TRANSLATION_CONTRIBUTION.md deleted file mode 100644 index f3150ae8fc0..00000000000 --- a/src/Locale/TRANSLATION_CONTRIBUTION.md +++ /dev/null @@ -1,13 +0,0 @@ -# Contributing Translations - -## Adding a new language - -- Open the Terminal and `cd` to `care_fe/src/Locale` -- Run the command `node update_locale.js ` - Eg: `node update_locale.js ml` for Malayalam -- The command will create a directory with default locale files. -- After it's done, add the new language to `care_fe/src/Locale/config.ts` file. - -## Note - -⚠ - Try to separate the translation files for each module like `Facility`, `Patient` and more. Don't dump all the keys in one JSON file. diff --git a/src/Locale/en.json b/src/Locale/en.json deleted file mode 100644 index ed8b9011d69..00000000000 --- a/src/Locale/en.json +++ /dev/null @@ -1,1295 +0,0 @@ -{ - "404_message": "It appears that you have stumbled upon a page that either does not exist or has been moved to another URL. Make sure you have entered the correct link!", - "APPETITE__CANNOT_BE_ASSESSED": "Cannot be assessed", - "APPETITE__INCREASED": "Increased", - "APPETITE__NO_TASTE_FOR_FOOD": "No taste for food", - "APPETITE__REDUCED": "Reduced", - "APPETITE__SATISFACTORY": "Satisfactory", - "AUTOMATED": "Automated", - "BED_WITH_OXYGEN_SUPPORT": "Bed with Oxygen Support", - "BLADDER_DRAINAGE__CONDOM_CATHETER": "Condom Catheter", - "BLADDER_DRAINAGE__CONTINUOUS_INDWELLING_CATHETER": "Continuous Indwelling Catheter", - "BLADDER_DRAINAGE__CONTINUOUS_SUPRAPUBIC_CATHETER": "Continuous Suprapubic Catheter", - "BLADDER_DRAINAGE__DIAPER": "Diaper", - "BLADDER_DRAINAGE__INTERMITTENT_CATHETER": "Intermittent Catheter", - "BLADDER_DRAINAGE__NORMAL": "Normal", - "BLADDER_DRAINAGE__UROSTOMY": "Urostomy", - "BLADDER_ISSUE__HESITANCY": "Hesitancy", - "BLADDER_ISSUE__INCONTINENCE": "Incontinence", - "BLADDER_ISSUE__NO_ISSUES": "No issues", - "BLADDER_ISSUE__RETENTION": "Retention", - "BOWEL_ISSUE__CONSTIPATION": "Constipation", - "BOWEL_ISSUE__DIARRHOEA": "Diarrhoea", - "BOWEL_ISSUE__NO_DIFFICULTY": "No difficulty", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "Agitated or Confused", - "CONSCIOUSNESS_LEVEL__ALERT": "Alert", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "Onset of Agitation and Confusion", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "Responds to Pain", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "Responds to Voice", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "Unresponsive", - "CONSULTATION_TAB__ABDM": "ABDM Records", - "CONSULTATION_TAB__ABG": "ABG", - "CONSULTATION_TAB__DIALYSIS": "Dialysis", - "CONSULTATION_TAB__FEED": "Feed", - "CONSULTATION_TAB__FILES": "Files", - "CONSULTATION_TAB__INVESTIGATIONS": "Investigations", - "CONSULTATION_TAB__MEDICINES": "Medicines", - "CONSULTATION_TAB__NEUROLOGICAL_MONITORING": "Neuro", - "CONSULTATION_TAB__NURSING": "Nursing", - "CONSULTATION_TAB__NUTRITION": "Nutrition", - "CONSULTATION_TAB__PRESSURE_SORE": "Pressure Sore", - "CONSULTATION_TAB__SUMMARY": "Vitals", - "CONSULTATION_TAB__UPDATES": "Overview", - "CONSULTATION_TAB__VENTILATOR": "Ventilation", - "Cancel": "Cancel", - "DD/MM/YYYY": "DD/MM/YYYY", - "DOCTORS_LOG": "Progress Note", - "DOMESTIC_HEALTHCARE_SUPPORT__FAMILY_MEMBER": "Family member", - "DOMESTIC_HEALTHCARE_SUPPORT__NO_SUPPORT": "No support", - "DOMESTIC_HEALTHCARE_SUPPORT__PAID_CAREGIVER": "Paid caregiver", - "GENDER__1": "Male", - "GENDER__2": "Female", - "GENDER__3": "Non-binary", - "HEARTBEAT_RHYTHM__IRREGULAR": "Irregular", - "HEARTBEAT_RHYTHM__REGULAR": "Regular", - "HEARTBEAT_RHYTHM__UNKNOWN": "Unknown", - "ICU": "ICU", - "INSULIN_INTAKE_FREQUENCY__BD": "Twice a day (BD)", - "INSULIN_INTAKE_FREQUENCY__OD": "Once a day (OD)", - "INSULIN_INTAKE_FREQUENCY__TD": "Thrice a day (TD)", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "Unknown", - "ISOLATION": "Isolation", - "KASP Empanelled": "KASP Empanelled", - "LIMB_RESPONSE__EXTENSION": "Extension", - "LIMB_RESPONSE__FLEXION": "Flexion", - "LIMB_RESPONSE__MODERATE": "Moderate", - "LIMB_RESPONSE__NONE": "None", - "LIMB_RESPONSE__STRONG": "Strong", - "LIMB_RESPONSE__UNKNOWN": "Unknown", - "LIMB_RESPONSE__WEAK": "Weak", - "LOG_UPDATE_CREATED_NOTIFICATION": "{{ roundType }} created successfully", - "LOG_UPDATE_FIELD_LABEL__action": "Action", - "LOG_UPDATE_FIELD_LABEL__appetite": "Appetite", - "LOG_UPDATE_FIELD_LABEL__bladder_drainage": "Drainage", - "LOG_UPDATE_FIELD_LABEL__bladder_issue": "Issues", - "LOG_UPDATE_FIELD_LABEL__blood_sugar_level": "Blood Sugar Level", - "LOG_UPDATE_FIELD_LABEL__bowel_issue": "Bowel", - "LOG_UPDATE_FIELD_LABEL__bp": "Blood Pressure", - "LOG_UPDATE_FIELD_LABEL__consciousness_level": "Level of Consciousness", - "LOG_UPDATE_FIELD_LABEL__is_experiencing_dysuria": "Experiences Dysuria?", - "LOG_UPDATE_FIELD_LABEL__nutrition_route": "Nutrition Route", - "LOG_UPDATE_FIELD_LABEL__oral_issue": "Oral issues", - "LOG_UPDATE_FIELD_LABEL__other_details": "Other details", - "LOG_UPDATE_FIELD_LABEL__patient_category": "Category", - "LOG_UPDATE_FIELD_LABEL__physical_examination_info": "Physical Examination Info", - "LOG_UPDATE_FIELD_LABEL__pulse": "Pulse", - "LOG_UPDATE_FIELD_LABEL__resp": "Respiratory Rate", - "LOG_UPDATE_FIELD_LABEL__review_interval": "Review after", - "LOG_UPDATE_FIELD_LABEL__rhythm": "Heartbeat Rhythm", - "LOG_UPDATE_FIELD_LABEL__rhythm_detail": "Rhythm Description", - "LOG_UPDATE_FIELD_LABEL__rounds_type": "Rounds Type", - "LOG_UPDATE_FIELD_LABEL__sleep": "Sleep", - "LOG_UPDATE_FIELD_LABEL__temperature": "Temperature", - "LOG_UPDATE_FIELD_LABEL__urination_frequency": "Frequency of Urination", - "LOG_UPDATE_FIELD_LABEL__ventilator_spo2": "SpO₂", - "LOG_UPDATE_UPDATED_NOTIFICATION": "{{ roundType }} updated successfully", - "NORMAL": "Brief Update", - "NURSING_CARE_PROCEDURE__ascitic_tapping": "Ascitic Tapping", - "NURSING_CARE_PROCEDURE__bed_bath": "Bed Bath", - "NURSING_CARE_PROCEDURE__catheter_care": "Catheter Care", - "NURSING_CARE_PROCEDURE__catheter_change": "Catheter Change", - "NURSING_CARE_PROCEDURE__chest_tube_care": "Chest Tube Care", - "NURSING_CARE_PROCEDURE__colostomy_care": "Colostomy Care", - "NURSING_CARE_PROCEDURE__colostomy_change": "Colostomy Change", - "NURSING_CARE_PROCEDURE__dressing": "Dressing", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT Pump Stocking", - "NURSING_CARE_PROCEDURE__eye_care": "Eye Care", - "NURSING_CARE_PROCEDURE__hair_care": "Hair Care", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV Site Care", - "NURSING_CARE_PROCEDURE__lymphedema_care": "Lymphedema Care", - "NURSING_CARE_PROCEDURE__nubulisation": "Nubulisation", - "NURSING_CARE_PROCEDURE__oral_care": "Oral Care", - "NURSING_CARE_PROCEDURE__perineal_care": "Perineal Care", - "NURSING_CARE_PROCEDURE__personal_hygiene": "Other Personal Hygiene", - "NURSING_CARE_PROCEDURE__positioning": "Positioning", - "NURSING_CARE_PROCEDURE__pre_enema": "P.R.E. Enema", - "NURSING_CARE_PROCEDURE__restrain": "Restrain", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "Ryle’s Tube Care", - "NURSING_CARE_PROCEDURE__ryles_tube_change": "Ryle’s Tube Change", - "NURSING_CARE_PROCEDURE__skin_care": "Skin Care", - "NURSING_CARE_PROCEDURE__stoma_care": "Stoma Care", - "NURSING_CARE_PROCEDURE__suctioning": "Suctioning", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "Tracheostomy Care", - "NURSING_CARE_PROCEDURE__tracheostomy_tube_change": "Tracheostomy Tube Change", - "NURSING_CARE_PROCEDURE__wound_dressing": "Wound Dressing", - "NUTRITION_ROUTE__GASTROSTOMY_OR_JEJUNOSTOMY": "Gastrostomy / Jejunostomy", - "NUTRITION_ROUTE__ORAL": "Oral", - "NUTRITION_ROUTE__PARENTERAL_TUBING_FLUID": "Parenteral Tubing (Fluid)", - "NUTRITION_ROUTE__PARENTERAL_TUBING_TPN": "Parenteral Tubing (TPN)", - "NUTRITION_ROUTE__PEG": "PEG", - "NUTRITION_ROUTE__RYLES_TUBE": "Ryle's Tube", - "Notifications": "Notifications", - "ORAL_ISSUE__DYSPHAGIA": "Dysphagia", - "ORAL_ISSUE__NO_ISSUE": "No issues", - "ORAL_ISSUE__ODYNOPHAGIA": "Odynophagia", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "High Flow Nasal Cannula", - "OXYGEN_MODALITY__NASAL_PRONGS": "Nasal Prongs", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "Non Rebreathing Mask", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "Simple Face Mask", - "PRESCRIPTION_FREQUENCY_BD": "Twice daily", - "PRESCRIPTION_FREQUENCY_HS": "Night only", - "PRESCRIPTION_FREQUENCY_OD": "Once daily", - "PRESCRIPTION_FREQUENCY_Q4H": "4th hourly", - "PRESCRIPTION_FREQUENCY_QID": "6th hourly", - "PRESCRIPTION_FREQUENCY_QOD": "Alternate day", - "PRESCRIPTION_FREQUENCY_QWK": "Once a week", - "PRESCRIPTION_FREQUENCY_STAT": "Imediately", - "PRESCRIPTION_FREQUENCY_TID": "8th hourly", - "PRESCRIPTION_ROUTE_IM": "IM", - "PRESCRIPTION_ROUTE_INHALATION": "Inhalation", - "PRESCRIPTION_ROUTE_INTRATHECAL": "intrathecal injection", - "PRESCRIPTION_ROUTE_IV": "IV", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "Nasogastric / Gastrostomy tube", - "PRESCRIPTION_ROUTE_ORAL": "Oral", - "PRESCRIPTION_ROUTE_RECTAL": "Rectal", - "PRESCRIPTION_ROUTE_SC": "S/C", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "Sublingual", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "Transdermal", - "PUPIL_REACTION__BRISK": "Brisk", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "Cannot be assessed", - "PUPIL_REACTION__FIXED": "Fixed", - "PUPIL_REACTION__SLUGGISH": "Sluggish", - "PUPIL_REACTION__UNKNOWN": "Unknown", - "REGULAR": "Regular", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O₂ Support", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "None", - "RESPIRATORY_SUPPORT__INVASIVE": "Invasive ventilator (IV)", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "Non-Invasive ventilator (NIV)", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "Oxygen Support", - "RESPIRATORY_SUPPORT__UNKNOWN": "None", - "ROUNDS_TYPE__AUTOMATED": "Virtual Nursing Assistant", - "ROUNDS_TYPE__COMMUNITY_NURSES_LOG": "Community Nurse's Log", - "ROUNDS_TYPE__DOCTORS_LOG": "Progress Note", - "ROUNDS_TYPE__NORMAL": "Brief Update", - "ROUNDS_TYPE__TELEMEDICINE": "Tele-medicine Log", - "ROUNDS_TYPE__VENTILATOR": "Detailed Update", - "SLEEP__EXCESSIVE": "Excessive", - "SLEEP__NO_SLEEP": "No sleep", - "SLEEP__SATISFACTORY": "Satisfactory", - "SLEEP__UNSATISFACTORY": "Unsatisfactory", - "SOCIOECONOMIC_STATUS__MIDDLE_CLASS": "Middle Class", - "SOCIOECONOMIC_STATUS__POOR": "Poor", - "SOCIOECONOMIC_STATUS__VERY_POOR": "Very Poor", - "SOCIOECONOMIC_STATUS__WELL_OFF": "Well Off", - "SORT_OPTIONS__-bed__name": "Bed No. N-1", - "SORT_OPTIONS__-category_severity": "Highest Severity category first", - "SORT_OPTIONS__-created_date": "Latest created date first", - "SORT_OPTIONS__-modified_date": "Latest updated date first", - "SORT_OPTIONS__-name": "Patient name Z-A", - "SORT_OPTIONS__-review_time": "Latest review date first", - "SORT_OPTIONS__-taken_at": "Latest taken date first", - "SORT_OPTIONS__bed__name": "Bed No. 1-N", - "SORT_OPTIONS__category_severity": "Lowest Severity category first", - "SORT_OPTIONS__created_date": "Oldest created date first", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "Bed No. N-1", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "Bed No. 1-N", - "SORT_OPTIONS__modified_date": "Oldest updated date first", - "SORT_OPTIONS__name": "Patient name A-Z", - "SORT_OPTIONS__review_time": "Oldest review date first", - "SORT_OPTIONS__taken_at": "Oldest taken date first", - "Submit": "Submit", - "TELEMEDICINE": "Telemedicine", - "URINATION_FREQUENCY__DECREASED": "Decreased", - "URINATION_FREQUENCY__INCREASED": "Increased", - "URINATION_FREQUENCY__NORMAL": "Normal", - "VENTILATOR": "Detailed Update", - "VENTILATOR_MODE__CMV": "Control Mechanical Ventilation (CMV)", - "VENTILATOR_MODE__PCV": "Pressure Control Ventilation (PCV)", - "VENTILATOR_MODE__PC_SIMV": "Pressure Controlled SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "C-PAP / Pressure Support Ventilation (PSV)", - "VENTILATOR_MODE__SIMV": "Synchronised Intermittent Mandatory Ventilation (SIMV)", - "VENTILATOR_MODE__VCV": "Volume Control Ventilation (VCV)", - "VENTILATOR_MODE__VC_SIMV": "Volume Controlled SIMV (VC-SIMV)", - "View Facility": "View Facility", - "aadhaar_number": "Aadhaar Number", - "aadhaar_number_will_not_be_stored": "Aadhaar number will not be stored by CARE", - "aadhaar_otp_send_error": "Failed to send OTP. Please try again later.", - "aadhaar_otp_send_success": "OTP has been sent to the mobile number registered with the Aadhar number.", - "aadhaar_validation_length_error": "Should be a 12-digit aadhaar number or 16-digit virtual ID", - "aadhaar_validation_space_error": "Aadhaar number should not contain spaces", - "abha__auth_method__AADHAAR_OTP": "Aadhaar OTP", - "abha__auth_method__MOBILE_OTP": "Mobile OTP", - "abha__disclaimer_1": "I am voluntarily sharing my Aadhaar Number / Virtual ID issued by the Unique Identification Authority of India (\"UIDAI\"), and my demographic information for the purpose of creating an Ayushman Bharat Health Account number (\"ABHA number\") and Ayushman Bharat Health Account address (\"ABHA Address\"). I authorize NHA to use my Aadhaar number / Virtual ID for performing Aadhaar based authentication with UIDAI as per the provisions of the Aadhaar (Targeted Delivery of Financial and other Subsidies, Benefits and Services) Act, 2016 for the aforesaid purpose. I understand that UIDAI will share my e-KYC details, or response of \"Yes\" with NHA upon successful authentication.", - "abha__disclaimer_2": "I consent to usage of my ABHA address and ABHA number for linking of my legacy (past) health records and those which will be generated during this encounter.", - "abha__disclaimer_3": "I authorize the sharing of all my health records with healthcare provider(s) for the purpose of providing healthcare services to me during this encounter.", - "abha__disclaimer_4": "I consent to the anonymization and subsequent use of my health records for public health purposes.", - "abha__qr_scanning_error": "Error scanning QR code, Invalid QR code", - "abha_address": "ABHA Address", - "abha_address_created_error": "Failed to create Abha Address. Please try again later.", - "abha_address_created_success": "Abha Address has been created successfully.", - "abha_address_suggestions": "Here are some suggestions:", - "abha_address_validation_character_error": "Should only contain letters, numbers, underscore(_) or dot(.)", - "abha_address_validation_end_error": "Shouldn't end with a dot (.)", - "abha_address_validation_length_error": "Should be atleast 4 character long", - "abha_address_validation_start_error": "Shouldn't start with a number or dot (.)", - "abha_details": "ABHA Details", - "abha_disabled_due_to_no_health_facility": "ABHA Number generation and linking is disabled for this facility, Please link a health facility to enable this feature.", - "abha_link_options__create_with_aadhaar__description": "Create New ABHA Number Using Aadhaar Number", - "abha_link_options__create_with_aadhaar__title": "Create with Aadhaar", - "abha_link_options__create_with_driving_license__description": "Create New ABHA Number Using Driving License", - "abha_link_options__create_with_driving_license__title": "Create with Driving License", - "abha_link_options__disabled_tooltip": "We are currently working on this feature", - "abha_link_options__link_with_demographics__description": "Link Existing ABHA Number Using Demographic details", - "abha_link_options__link_with_demographics__title": "Link with Demographics", - "abha_link_options__link_with_otp__description": "Link Existing ABHA Number Using Mobile or Aadhaar OTP", - "abha_link_options__link_with_otp__title": "Link with OTP", - "abha_link_options__link_with_qr__title": "Link with ABHA QR", - "abha_number": "ABHA Number", - "abha_number_exists": "ABHA Number already exists", - "abha_number_exists_description": "There is an ABHA Number already linked with the given Aadhaar Number, Do you want to create a new ABHA Address?", - "abha_number_linked_successfully": "ABHA Number has been linked successfully.", - "abha_profile": "ABHA Profile", - "access_level": "Access Level", - "action_irreversible": "This action is irreversible", - "active": "Active", - "active_prescriptions": "Active Prescriptions", - "add": "Add", - "add_as": "Add as", - "add_attachments": "Add Attachments", - "add_beds": "Add Bed(s)", - "add_beds_to_configure_presets": "Add beds to this location to configure presets for them.", - "add_details_of_patient": "Add Details of Patient", - "add_location": "Add Location", - "add_new_beds": "Add New Bed(s)", - "add_new_user": "Add New User", - "add_notes": "Add notes", - "add_policy": "Add Insurance Policy", - "add_prescription_medication": "Add Prescription Medication", - "add_prescription_to_consultation_note": "Add a new prescription to this consultation.", - "add_preset": "Add preset", - "add_prn_prescription": "Add PRN Prescription", - "add_remarks": "Add remarks", - "add_spoke": "Add Spoke Facility", - "address": "Address", - "administer": "Administer", - "administer_medicine": "Administer Medicine", - "administer_medicines": "Administer Medicines", - "administer_selected_medicines": "Administer Selected Medicines", - "administered_on": "Administered on", - "administration_dosage_range_error": "Dosage should be between start and target dosage", - "administration_notes": "Administration Notes", - "advanced_filters": "Advanced Filters", - "age": "Age", - "all_changes_have_been_saved": "All changes have been saved", - "all_details": "All Details", - "allergies": "Allergies", - "allowed_formats_are": "Allowed formats are", - "already_a_member": "Already a member?", - "ambulance_driver_name": "Name of ambulance driver", - "ambulance_number": "Ambulance No", - "ambulance_phone_number": "Phone number of Ambulance", - "antenatal": "Antenatal", - "any_id": "Enter any ID linked with your ABHA number", - "any_id_description": "Currently we support: Aadhaar Number / Mobile Number", - "any_other_comments": "Any other comments", - "apply": "Apply", - "approved_by_district_covid_control_room": "Approved by District COVID Control Room", - "approving_facility": "Name of Approving Facility", - "archive": "Archive", - "archived": "Archived", - "are_non_editable_fields": "are non-editable fields", - "are_you_still_watching": "Are you still watching?", - "are_you_sure_want_to_delete": "Are you sure you want to delete {{name}}?", - "are_you_sure_want_to_delete_this_record": "Are you sure want to delete this record?", - "ari": "ARI - Acute Respiratory illness", - "asset_class": "Asset Class", - "asset_location": "Asset Location", - "asset_name": "Asset Name", - "asset_not_found_msg": "Oops! The asset you are looking for does not exist. Please check the asset id.", - "asset_qr_id": "Asset QR ID", - "asset_type": "Asset Type", - "assets": "Assets", - "assigned_facility": "Facility assigned", - "assigned_to": "Assigned to", - "async_operation_warning": "This operation may take some time. Please check back later.", - "atypical_presentation_details": "Atypical presentation details", - "audio__allow_permission": "Please allow microphone permission in site settings", - "audio__allow_permission_button": "Click here to know how to allow", - "audio__allow_permission_helper": "You might have denied microphone access in the past.", - "audio__permission_message": "Please grant microphone permission to record audio.", - "audio__record": "Record Audio", - "audio__record_helper": "Click the button to start recording", - "audio__recorded": "Audio Recorded", - "audio__recording": "Recording", - "audio__recording_helper": "Please speak into your microphone.", - "audio__recording_helper_2": "Click on the button to stop recording.", - "audio__start_again": "Start Again", - "audit_log": "Audit Log", - "auth_login_title": "Authorized Login", - "auth_method_unsupported": "This authentication method is not supported, please try a different method", - "authorize_shift_delete": "Authorize shift delete", - "auto_generated_for_care": "Auto Generated for Care", - "available_features": "Available Features", - "available_in": "Available in", - "average_weekly_working_hours": "Average weekly working hours", - "awaiting_destination_approval": "AWAITING DESTINATION APPROVAL", - "back": "Back", - "back_dated_encounter_date_caution": "You are creating an encounter for", - "back_to_consultation": "Go back to Consultation", - "back_to_login": "Back to login", - "base_dosage": "Dosage", - "bed_capacity": "Bed Capacity", - "bed_created_notification_one": "{{count}} Bed created successfully", - "bed_created_notification_other": "{{count}} Beds created successfully", - "bed_not_linked_to_camera": "This bed has not been linked to this camera.", - "bed_search_placeholder": "Search by beds name", - "bed_type": "Bed Type", - "bed_type__100": "ICU Bed", - "bed_type__200": "Ordinary Bed", - "bed_type__300": "Oxygen Supported Bed", - "bed_type__400": "Isolation Bed", - "bed_type__500": "Others", - "beta": "beta", - "bladder": "Bladder", - "blood_group": "Blood Group", - "blood_pressure_error": { - "missing": "Field is required. Either specify both or clear both.", - "exceed": "Value cannot exceed 250 mmHg.", - "systolic_less_than_diastolic": "Systolic must be greater than diastolic." - }, - "board_view": "Board View", - "bradycardia": "Bradycardia", - "breathlessness_level": "Breathlessness level", - "camera": "Camera", - "camera_bed_link_success": "Camera linked to bed successfully.", - "camera_permission_denied": "Camera Permission denied", - "camera_was_linked_to_bed": "This camera was linked to this bed", - "cancel": "Cancel", - "capture": "Capture", - "capture_cover_photo": "Capture Cover Photo", - "care": "CARE", - "category": "Category", - "caution": "Caution", - "central_nursing_station": "Central Nursing Station", - "change_file": "Change File", - "change_password": "Change Password", - "check_eligibility": "Check Eligibility", - "check_for_available_update": "Check for available update", - "check_for_update": "Check for Update", - "check_policy_eligibility": "Check Policy Eligibility", - "check_status": "Check Status", - "checking_consent_status": "Consent request status is being checked!", - "checking_eligibility": "Checking Eligibility", - "checking_for_update": "Checking for update", - "checking_policy_eligibility": "Checking Policy Eligibility", - "choose_date_time": "Choose Date and Time", - "choose_file": "Upload From Device", - "choose_location": "Choose Location", - "claim__add_item": "Add Item", - "claim__create_claim": "Create Claim", - "claim__create_preauthorization": "Create Pre Authorization", - "claim__creating_claim": "Creating Claim", - "claim__creating_preauthorization": "Creating Pre Authorization", - "claim__error_fetching_claim_approval_results": "Error Fetching Claim Approval Results", - "claim__failed_to_create_claim": "Failed to create Claim", - "claim__failed_to_create_preauthorization": "Failed to create Pre Authorization", - "claim__fetched_claim_approval_results": "Fetched Claim Approval Results", - "claim__item": "Item", - "claim__item__add_at_least_one": "Add at least one item", - "claim__item__category": "Category", - "claim__item__fill_all_details": "Fill all the item details", - "claim__item__id": "ID", - "claim__item__id__example": "PROC001", - "claim__item__name": "Name", - "claim__item__name__example": "Knee Replacement", - "claim__item__price": "Price", - "claim__item__price__example": "100.00", - "claim__item__procedure": "Procedure", - "claim__items": "Items", - "claim__request_claim": "Request Claim", - "claim__requesting_claim": "Requesting Claim", - "claim__status__approved": "Approved", - "claim__status__pending": "Pending", - "claim__status__rejected": "Rejected", - "claim__total_approved_amount": "Total Approved Amount", - "claim__total_claim_amount": "Total Claim Amount", - "claim__use": "Use", - "claim__use__claim": "Claim", - "claim__use__preauthorization": "Pre Authorization", - "claims": "Claims", - "clear": "Clear", - "clear_all_filters": "Clear All Filters", - "clear_home_facility": "Clear Home Facility", - "clear_selection": "Clear selection", - "close": "Close", - "close_scanner": "Close Scanner", - "collapse_sidebar": "Collapse Sidebar", - "comment_added_successfully": "Comment added successfully", - "comment_min_length": "Comment Should Contain At Least 1 Character", - "comments": "Comments", - "communication__sent_to_hcx": "Sent communication to HCX", - "completed": "Completed", - "configure": "Configure", - "configure_facility": "Configure Facility", - "confirm": "Confirm", - "confirm_delete": "Confirm Delete", - "confirm_discontinue": "Confirm Discontinue", - "confirm_password": "Confirm Password", - "confirm_transfer_complete": "Confirm Transfer Complete!", - "confirmed": "Confirmed", - "consent__hi_range": "Health Information Range", - "consent__hi_type__DiagnosticReport": "Diagnostic Report", - "consent__hi_type__DischargeSummary": "Discharge Summary", - "consent__hi_type__HealthDocumentRecord": "Health Document Record", - "consent__hi_type__ImmunizationRecord": "Immunization Record", - "consent__hi_type__OPConsultation": "OP Consultation", - "consent__hi_type__Prescription": "Prescription", - "consent__hi_type__WellnessRecord": "Wellness Record", - "consent__hi_types": "HI Profiles", - "consent__patient": "Patient", - "consent__purpose": "Purpose", - "consent__purpose__BTG": "Break The Glass", - "consent__purpose__CAREMGT": "Care Management", - "consent__purpose__DSRCH": "Disease Specific Healthcare Research", - "consent__purpose__HPAYMT": "Healthcare Payment", - "consent__purpose__PATRQT": "Self Requested", - "consent__purpose__PUBHLTH": "Public Health", - "consent__status": "Status", - "consent__status__DENIED": "Denied", - "consent__status__EXPIRED": "Expired", - "consent__status__GRANTED": "Granted", - "consent__status__REQUESTED": "Requested", - "consent__status__REVOKED": "Revoked", - "consent_request__date_range": "Health Records Date Range", - "consent_request__expiry": "Consent Expiry Date", - "consent_request__hi_types": "Health Information Types", - "consent_request__hi_types_placeholder": "Select One or More HI Types", - "consent_request__patient_identifier": "Patient Identifier", - "consent_request__purpose": "Purpose of Request", - "consent_request_rejected": "Patient has rejected the consent request", - "consent_request_waiting_approval": "Waiting for the Patient to approve the consent request", - "consent_requested_successfully": "Consent requested successfully!", - "consultation_missing_warning": "You have not created a consultation for the patient in", - "consultation_not_filed": "You have not filed a consultation for this patient yet.", - "consultation_not_filed_description": "Please file a consultation for this patient to continue.", - "consultation_notes": "General Instructions (Advice)", - "consultation_updates": "Consultation updates", - "contact_number": "Contact Number", - "contact_person": "Name of Contact Person at Facility", - "contact_person_at_the_facility": "Contact person at the current facility", - "contact_person_number": "Contact person number", - "contact_phone": "Contact Person Number", - "contact_with_confirmed_carrier": "Contact with confirmed carrier", - "contact_with_suspected_carrier": "Contact with suspected carrier", - "contact_your_admin_to_add_skills": "Contact your admin to add skills", - "continue": "Continue", - "continue_watching": "Continue watching", - "contribute_github": "Contribute on Github", - "copied_to_clipboard": "Copied to clipboard", - "countries_travelled": "Countries travelled", - "covid_19_cat_gov": "Covid_19 Clinical Category as per Govt. of Kerala guideline (A/B/C)", - "covid_19_death_reporting_form_1": "Covid-19 Death Reporting : Form 1", - "create": "Create", - "create_abha_address": "Create ABHA Address", - "create_add_more": "Create & Add More", - "create_asset": "Create Asset", - "create_consultation": "Create Consultation", - "create_facility": "Create a new facility", - "create_new_abha_address": "Create New ABHA Address", - "create_new_abha_profile": "Don't have an ABHA Number", - "create_new_asset": "Create New Asset", - "create_position_preset": "Create a new position preset", - "create_position_preset_description": "Creates a new position preset in Care from the current position of the camera for the given name", - "create_preset_prerequisite": "To create presets for this bed, you'll need to link the camera to the bed first.", - "create_resource_request": "Create Resource Request", - "created": "Created", - "created_date": "Created Date", - "created_on": "Created On", - "csv_file_in_the_specified_format": "Select a CSV file in the specified format", - "current_password": "Current Password", - "customer_support_email": "Customer Support Email", - "customer_support_name": "Customer Support Name", - "customer_support_number": "Customer support number", - "cylinders": "Cylinders", - "cylinders_per_day": "Cylinders/day", - "daily_rounds": "Daily Rounds", - "date_and_time": "Date and Time", - "date_declared_positive": "Date of declaring positive", - "date_of_admission": "Date of Admission", - "date_of_birth": "Date of birth", - "date_of_positive_covid_19_swab": "Date of Positive Covid 19 Swab", - "date_of_result": "Covid confirmation date", - "date_of_test": "Date of sample collection for Covid testing", - "days": "Days", - "delete": "Delete", - "delete_facility": "Delete Facility", - "delete_item": "Delete {{name}}", - "delete_record": "Delete Record", - "deleted_successfully": "{{name}} deleted successfully", - "denied_on": "Denied On", - "describe_why_the_asset_is_not_working": "Describe why the asset is not working", - "description": "Description", - "details_about_the_equipment": "Details about the equipment", - "details_of_assigned_facility": "Details of assigned facility", - "details_of_origin_facility": "Details of origin facility", - "details_of_patient": "Details of patient", - "details_of_shifting_approving_facility": "Details of shifting approving facility", - "diagnoses": "Diagnoses", - "diagnosis": "Diagnosis", - "diagnosis__confirmed": "Confirmed", - "diagnosis__differential": "Differential", - "diagnosis__principal": "Principal", - "diagnosis__provisional": "Provisional", - "diagnosis__unconfirmed": "Unconfirmed", - "diagnosis_already_added": "This diagnosis was already added", - "diagnosis_at_discharge": "Diagnosis at Discharge", - "diastolic": "Diastolic", - "differential": "Differential", - "differential_diagnosis": "Differential diagnosis", - "discard": "Discard", - "discharge": "Discharge", - "discharge_from_care": "Discharge from CARE", - "discharge_prescription": "Discharge Prescription", - "discharge_summary": "Discharge Summary", - "discharge_summary_not_ready": "Discharge summary is not ready yet.", - "discharged": "Discharged", - "discharged_patients": "Discharged Patients", - "discharged_patients_empty": "No discharged patients present in this facility", - "disclaimer": "Disclaimer", - "discontinue": "Discontinue", - "discontinue_caution_note": "Are you sure you want to discontinue this prescription?", - "discontinued": "Discontinued", - "disease_status": "Disease status", - "district": "District", - "district_program_management_supporting_unit": "District Program Management Supporting Unit", - "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", - "doctors_name": "Doctor's Name", - "domestic_healthcare_support": "Domestic healthcare support", - "domestic_international_travel": "Domestic/international Travel (within last 28 days)", - "done": "Done", - "dosage": "Dosage", - "down": "Down", - "download": "Download", - "download_discharge_summary": "Download discharge summary", - "download_type": "Download Type", - "downloading": "Downloading", - "downloading_abha_card": "Generating ABHA Card, Please hold on", - "downloads": "Downloads", - "drag_drop_image_to_upload": "Drag & drop image to upload", - "duplicate_patient_record_birth_unknown": "Please contact your district care coordinator, the shifting facility or the patient themselves if you are not sure about the patient's year of birth.", - "duplicate_patient_record_confirmation": "Admit the patient record to your facility by adding the year of birth", - "duplicate_patient_record_rejection": "I confirm that the suspect / patient I want to create is not on the list.", - "edit": "Edit", - "edit_avatar": "Edit Avatar", - "edit_caution_note": "A new prescription will be added to the consultation with the edited details and the current prescription will be discontinued.", - "edit_cover_photo": "Edit Cover Photo", - "edit_history": "Edit History", - "edit_policy": "Edit Insurance Policy", - "edit_policy_description": "Add or edit patient's insurance details", - "edit_prescriptions": "Edit Prescriptions", - "edit_user_profile": "Edit Profile", - "edited_by": "Edited by", - "edited_on": "Edited on", - "eg_abc": "Eg. ABC", - "eg_details_on_functionality_service_etc": "Eg. Details on functionality, service, etc.", - "eg_mail_example_com": "Eg. mail@example.com", - "eg_xyz": "Eg. XYZ", - "eligible": "Eligible", - "email": "Email Address", - "email_address": "Email Address", - "email_discharge_summary_description": "Enter your valid email address to receive the discharge summary", - "email_success": "We will be sending an email shortly. Please check your inbox.", - "emergency": "Emergency", - "emergency_contact_number": "Emergency Contact Number", - "empty_date_time": "--:-- --; --/--/----", - "encounter_date_field_label__A": "Date & Time of Admission to the Facility", - "encounter_date_field_label__DC": "Date & Time of Domiciliary Care commencement", - "encounter_date_field_label__DD": "Date & Time of Consultation", - "encounter_date_field_label__HI": "Date & Time of Consultation", - "encounter_date_field_label__OP": "Date & Time of Out-patient visit", - "encounter_date_field_label__R": "Date & Time of Consultation", - "encounter_duration_confirmation": "The duration of this encounter would be", - "encounter_suggestion__A": "Admission", - "encounter_suggestion__DC": "Domiciliary Care", - "encounter_suggestion__DD": "Consultation", - "encounter_suggestion__HI": "Consultation", - "encounter_suggestion__OP": "Out-patient visit", - "encounter_suggestion__R": "Consultation", - "encounter_suggestion_edit_disallowed": "Not allowed to switch to this option in edit consultation", - "enter_aadhaar_number": "Enter a 12-digit Aadhaar ID", - "enter_aadhaar_otp": "Enter OTP sent to the registered mobile with Aadhaar", - "enter_abha_address": "Enter ABHA Address", - "enter_any_id": "Enter any ID linked with your ABHA number", - "enter_file_name": "Enter File Name", - "enter_message": "Start typing...", - "enter_mobile_number": "Enter Mobile Number", - "enter_mobile_otp": "Enter OTP sent to the given mobile number", - "enter_otp": "Enter OTP sent to the registered mobile with the respective ID", - "enter_valid_age": "Please Enter Valid Age", - "entered-in-error": "Entered in error", - "error_404": "Error 404", - "error_deleting_shifting": "Error while deleting Shifting record", - "error_while_deleting_record": "Error while deleting record", - "escape": "Escape", - "estimated_contact_date": "Estimated contact date", - "etiology_identified": "Etiology identified", - "events": "Events", - "expand_sidebar": "Expand Sidebar", - "expected_burn_rate": "Expected Burn Rate", - "expired_on": "Expired On", - "expires_on": "Expires On", - "facilities": "Facilities", - "facility": "Facility", - "facility_consent_requests_page_title": "Patient Consent List", - "facility_name": "Facility Name", - "facility_preference": "Facility preference", - "facility_search_placeholder": "Search by Facility / District Name", - "facility_type": "Facility Type", - "failed_to_link_abha_number": "Failed to link ABHA Number. Please try again later.", - "fast_track_testing_reason": "Fast track testing reason", - "features": "Features", - "feed_configurations": "Feed Configurations", - "feed_is_currently_not_live": "Feed is currently not live", - "feed_optimal_experience_for_apple_phones": "For optimal viewing experience, consider rotating your device. Ensure auto-rotate is enabled in your device settings.", - "feed_optimal_experience_for_phones": "For optimal viewing experience, consider rotating your device.", - "fetched_attachments_successfully": "Fetched attachments successfully", - "fetching": "Fetching", - "field_required": "This field is required", - "file_error__choose_file": "Please choose a file to upload", - "file_error__dynamic": "Error Uploading File: {{statusText}}", - "file_error__file_name": "Please give a name for all files!", - "file_error__file_size": "Maximum size of files is 100 MB", - "file_error__file_type": "Invalid file type \".{{extension}}\" Allowed types: {{allowedExtensions}}", - "file_error__network": "Error Uploading File: Network Error", - "file_error__single_file_name": "Please give a name for the file", - "file_list_headings__consultation": "Consultation Files", - "file_list_headings__patient": "Patient Files", - "file_list_headings__sample_report": "Sample Report", - "file_list_headings__supporting_info": "Supporting Info", - "file_preview": "File Preview", - "file_preview_not_supported": "Can't preview this file. Try downloading it.", - "file_uploaded": "File Uploaded Successfully", - "filter": "Filter", - "filter_by": "Filter By", - "filter_by_category": "Filter by category", - "filters": "Filters", - "first_name": "First Name", - "footer_body": "Open Healthcare Network is an open-source public utility designed by a multi-disciplinary team of innovators and volunteers. Open Healthcare Network CARE is a Digital Public Good recognised by the United Nations.", - "forget_password": "Forgot password?", - "forget_password_instruction": "Enter your username, and if it exists, we will send you a link to reset your password.", - "frequency": "Frequency", - "full_name": "Full Name", - "full_screen": "Full Screen", - "gender": "Gender", - "generate_link_abha": "Generate/Link ABHA Number", - "generate_report": "Generate Report", - "generated_summary_caution": "This is a computer generated summary using the information captured in the CARE system.", - "generating": "Generating", - "generating_discharge_summary": "Generating discharge summary", - "get_auth_methods": "Get Available Authentication Methods", - "get_auth_mode_error": "Could not find any supported authentication methods, Please try again with a different authentication method", - "get_tests": "Get Tests", - "goal": "Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.", - "granted_on": "Granted On", - "has_domestic_healthcare_support": "Has domestic healthcare support?", - "has_sari": "Has SARI (Severe Acute Respiratory illness)?", - "health_facility__config_registration_error": "Health ID registration failed", - "health_facility__config_update_error": "Health Facility config update failed", - "health_facility__config_update_success": "Health Facility config updated successfully", - "health_facility__hf_id": "Health Facility Id", - "health_facility__link": "Link Health Facility", - "health_facility__not_registered_1.1": "The ABDM health facility is successfully linked with care", - "health_facility__not_registered_1.2": "but not registered as a service in bridge", - "health_facility__not_registered_2": "Click on Link Health Facility to register the service", - "health_facility__not_registered_3": "Not Registered", - "health_facility__registered_1.1": "The ABDM health facility is successfully linked with care", - "health_facility__registered_1.2": "and registered as a service in bridge", - "health_facility__registered_2": "No Action Required", - "health_facility__registered_3": "Registered", - "health_facility__validation__hf_id_required": "Health Facility Id is required", - "help_confirmed": "There is sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", - "help_differential": "One of a set of potential (and typically mutually exclusive) diagnoses asserted to further guide the diagnostic process and preliminary treatment.", - "help_entered-in-error": "The statement was entered in error and is not valid.", - "help_provisional": "This is a tentative diagnosis - still a candidate that is under consideration.", - "help_refuted": "This condition has been ruled out by subsequent diagnostic and clinical evidence.", - "help_unconfirmed": "There is not sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", - "hi__fetch_records": "Fetch Records over ABDM", - "hi__page_title": "Health Information", - "hi__record_archived__title": "This record has been archived", - "hi__record_archived_description": "This record has been archived and is no longer available for viewing.", - "hi__record_archived_on": " This record was archived on", - "hi__record_not_fetched_description": "This record hasn't been fetched yet. Please check back after some time.", - "hi__record_not_fetched_title": "This record hasn't been fetched yet", - "hi__waiting_for_record": "Waiting for the Host HIP to send the record.", - "hide": "Hide", - "home_facility": "Home Facility", - "hubs": "Hub Facilities", - "i_declare": "I hereby declare that:", - "icd11_as_recommended": "As per ICD-11 recommended by WHO", - "icmr_specimen_referral_form": "ICMR Specimen Referral Form", - "incomplete_patient_details_warning": "Patient details are incomplete. Please update the details before proceeding.", - "inconsistent_dosage_units_error": "Dosage units must be same", - "indian_mobile": "Indian Mobile", - "indicator": "Indicator", - "inidcator_event": "Indicator Event", - "instruction_on_titration": "Instruction on titration", - "insurer_name_required": "Insurer Name is required", - "international_mobile": "International Mobile", - "invalid_asset_id_msg": "Oops! The asset ID you entered does not appear to be valid.", - "invalid_email": "Please Enter a Valid Email Address", - "invalid_ip_address": "Invalid IP Address", - "invalid_link_msg": "It appears that the password reset link you have used is either invalid or expired. Please request a new password reset link.", - "invalid_password": "Password doesn't meet the requirements", - "invalid_password_reset_link": "Invalid password reset link", - "invalid_phone": "Please enter valid phone number", - "invalid_phone_number": "Invalid Phone Number", - "invalid_pincode": "Invalid Pincode", - "invalid_reset": "Invalid Reset", - "invalid_username": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", - "inventory_management": "Inventory Management", - "investigation_report": "Investigation Report", - "investigation_report_for_{{name}}": "Investigation Report for {{name}}", - "investigation_report_of_{{name}}": "Investigation Report of : {{name}}", - "investigation_reports": "Investigation Reports", - "investigations": "Investigations", - "investigations__date": "Date", - "investigations__ideal_value": "Ideal Value", - "investigations__name": "Name", - "investigations__range": "Value Range", - "investigations__result": "Result", - "investigations__unit": "Unit", - "investigations_suggested": "Investigations Suggested", - "is": "Is", - "is_antenatal": "Is Antenatal", - "is_atypical_presentation": "Is Atypical presentation", - "is_declared_positive": "Whether declared positive", - "is_emergency": "Is emergency", - "is_emergency_case": "Is emergency case", - "is_it_upshift": "is it upshift", - "is_this_an_emergency": "Is this an emergency?", - "is_this_an_upshift": "Is this an upshift?", - "is_unusual_course": "Is unusual course", - "is_up_shift": "Is up shift", - "is_upshift_case": "Is upshift case", - "is_vaccinated": "Whether vaccinated", - "label": "Label", - "landline": "Indian landline", - "language_selection": "Language Selection", - "last_administered": "Last administered", - "last_edited": "Last Edited", - "last_modified": "Last Modified", - "last_name": "Last Name", - "last_online": "Last Online", - "last_serviced_on": "Last Serviced On", - "latitude_invalid": "Latitude must be between -90 and 90", - "left": "Left", - "length": "Length ({{unit}})", - "link_abha_number": "Link ABHA Number", - "link_abha_profile": "Link ABHA Profile", - "link_camera_and_bed": "Link bed to Camera", - "link_existing_abha_profile": "Already have an ABHA number", - "linked_facilities": "Linked Facilities", - "linked_skills": "Linked Skills", - "liquid_oxygen_capacity": "Liquid Oxygen Capacity", - "list_view": "List View", - "litres": "Litres", - "litres_per_day": "Litres/day", - "live": "Live", - "live_monitoring": "Live Monitoring", - "live_patients_total_beds": "Live Patients / Total beds", - "load_more": "Load More", - "loading": "Loading...", - "local_body": "Local body", - "local_ip_address": "Local IP Address", - "local_ip_address_example": "e.g. 192.168.0.123", - "location": "Location", - "location_beds_empty": "No beds available in this location", - "location_management": "Location Management", - "log_lab_results": "Log Lab Results", - "log_report": "Log Report", - "login": "Login", - "longitude_invalid": "Longitude must be between -180 and 180", - "lsg": "Lsg", - "make_multiple_beds_label": "Do you want to make multiple beds?", - "manage_bed_presets": "Manage Presets of Bed", - "manage_prescriptions": "Manage Prescriptions", - "manage_preset": "Manage preset {{ name }}", - "manufacturer": "Manufacturer", - "map_acronym": "M.A.P.", - "mark_all_as_read": "Mark all as Read", - "mark_as_read": "Mark as Read", - "mark_as_unread": "Mark as Unread", - "mark_this_transfer_as_complete_question": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", - "mark_transfer_complete_confirmation": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", - "max_dosage_24_hrs": "Max. dosage in 24 hrs.", - "max_dosage_in_24hrs_gte_base_dosage_error": "Max. dosage in 24 hours must be greater than or equal to base dosage", - "max_size_for_image_uploaded_should_be": "Max size for image uploaded should be", - "measured_after": "Measured after", - "measured_before": "Measured before", - "medical_council_registration": "Medical Council Registration", - "medical_worker": "Medical Worker", - "medicine": "Medicine", - "medicine_administration_history": "Medicine Administration History", - "medicines_administered": "Medicine(s) administered", - "medicines_administered_error": "Error administering medicine(s)", - "member_id_required": "Member Id is required", - "middleware_hostname": "Middleware Hostname", - "middleware_hostname_example": "e.g. example.ohc.network", - "middleware_hostname_sourced_from": "Middleware hostname sourced from {{ source }}", - "min_password_len_8": "Minimum password length 8", - "min_time_bw_doses": "Min. time b/w doses", - "minimize": "Minimize", - "mobile": "Mobile", - "mobile_number": "Mobile Number", - "mobile_number_different_from_aadhaar_mobile_number": "We have noticed that you have entered a mobile number that is different from the one linked to your Aadhaar. We will send an OTP to this number to link it with your Abha number.", - "mobile_number_validation_error": "Enter a valid mobile number", - "mobile_otp_send_error": "Failed to send OTP. Please try again later.", - "mobile_otp_send_success": "OTP has been sent to the given mobile number.", - "mobile_otp_verify_error": "Failed to verify mobile number. Please try again later.", - "mobile_otp_verify_success": "Mobile number has been verified successfully.", - "modification_caution_note": "No modifications possible once added", - "modified": "Modified", - "modified_date": "Modified Date", - "modified_on": "Modified On", - "monitor": "Monitor", - "more_info": "More Info", - "move_to_onvif_preset": "Move to an ONVIF Preset", - "moving_camera": "Moving Camera", - "name": "Name", - "name_of_hospital": "Name of Hospital", - "name_of_shifting_approving_facility": "Name of shifting approving facility", - "nationality": "Nationality", - "never": "never", - "new_password": "New Password", - "new_password_confirmation": "Confirm New Password", - "next_sessions": "Next Sessions", - "no": "No", - "no_attachments_found": "This communication has no attachments.", - "no_bed_types_found": "No Bed Types found", - "no_beds_available": "No beds available", - "no_changes": "No changes", - "no_changes_made": "No changes made", - "no_consultation_updates": "No consultation updates", - "no_data_found": "No data found", - "no_duplicate_facility": "You should not create duplicate facilities", - "no_facilities": "No Facilities found", - "no_files_found": "No {{type}} files found", - "no_home_facility": "No home facility assigned", - "no_image_found": "No image found", - "no_investigation": "No investigation Reports found", - "no_investigation_suggestions": "No Investigation Suggestions", - "no_linked_facilities": "No Linked Facilities", - "no_log_update_delta": "No changes since previous log update", - "no_notices_for_you": "No notices for you.", - "no_patients_to_show": "No patients to show.", - "no_policy_added": "No Insurance Policy Added", - "no_policy_found": "No Insurance Policy Found for this Patient", - "no_presets": "No Presets", - "no_records_found": "No records found", - "no_remarks": "No remarks", - "no_results_found": "No Results Found", - "no_staff": "No staff found", - "no_tests_taken": "No tests taken", - "no_treating_physicians_available": "This facility does not have any home facility doctors. Please contact your admin.", - "no_users_found": "No Users Found", - "no_vitals_present": "No Vitals Monitor present in this location or facility", - "none": "None", - "normal": "Normal", - "not_eligible": "Not Eligible", - "not_specified": "Not Specified", - "notes": "Notes", - "notes_placeholder": "Type your Notes", - "notice_board": "Notice Board", - "notification_permission_denied": "Notification permission denied", - "notification_permission_granted": "Notification permission granted", - "number_of_aged_dependents": "Number of Aged Dependents (Above 60)", - "number_of_aged_dependents_above_60": "Number Of Aged Dependents (Above 60)", - "number_of_beds": "Number of beds", - "number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100", - "number_of_chronic_diseased_dependents": "Number Of Chronic Diseased Dependents", - "nursing_care": "Nursing Care", - "nursing_information": "Nursing Information", - "nutrition": "Nutrition", - "occupancy": "Occupancy", - "occupation": "Occupation", - "occupied": "Occupied", - "on": "On", - "ongoing_medications": "Ongoing Medications", - "only_indian_mobile_numbers_supported": "Currently only Indian numbers are supported", - "open": "Open", - "open_camera": "Open Camera", - "open_live_monitoring": "Open Live Monitoring", - "optional": "Optional", - "oral_issue_for_non_oral_nutrition_route_error": "Can be specified only if nutrition route is set to Oral", - "ordering": "Ordering", - "origin_facility": "Current facility", - "other_details": "Other details", - "otp_verification_error": "Failed to verify OTP. Please try again later.", - "otp_verification_success": "OTP has been verified successfully.", - "out_of_range_error": "Value must be between {{ start }} and {{ end }}.", - "oxygen_information": "Oxygen Information", - "page_not_found": "Page Not Found", - "pain": "Pain", - "pain_chart_description": "Mark region and intensity of pain", - "passport_number": "Passport Number", - "password": "Password", - "password_mismatch": "Password and confirm password must be same.", - "password_reset_failure": "Password Reset Failed", - "password_reset_success": "Password Reset successfully", - "password_sent": "Password Reset Email Sent", - "patient": "Patient", - "patient_address": "Patient Address", - "patient_body": "Patient Body", - "patient_category": "Patient Category", - "patient_consultation__admission": "Date of admission", - "patient_consultation__consultation_notes": "General Instructions", - "patient_consultation__dc_admission": "Date of domiciliary care commenced", - "patient_consultation__ip": "IP", - "patient_consultation__op": "OP", - "patient_consultation__special_instruction": "Special Instructions", - "patient_consultation__treatment__plan": "Plan", - "patient_consultation__treatment__summary": "Summary", - "patient_consultation__treatment__summary__date": "Date", - "patient_consultation__treatment__summary__spo2": "SpO2", - "patient_consultation__treatment__summary__temperature": "Temperature", - "patient_created": "Patient Created", - "patient_details": "Patient Details", - "patient_details_incomplete": "Patient Details Incomplete", - "patient_face": "Patient Face", - "patient_name": "Patient name", - "patient_no": "OP/IP No", - "patient_notes_thread__Doctors": "Doctor's Discussions", - "patient_notes_thread__Nurses": "Nurse's Discussions", - "patient_phone_number": "Patient Phone Number", - "patient_registration__address": "Address", - "patient_registration__age": "Age", - "patient_registration__comorbidities": "Comorbidities", - "patient_registration__comorbidities__details": "Details", - "patient_registration__comorbidities__disease": "Disease", - "patient_registration__contact": "Emergency Contact", - "patient_registration__gender": "Gender", - "patient_registration__name": "Name", - "patient_state": "Patient State", - "patient_status": "Patient Status", - "patient_transfer_birth_match_note": "Note: Year of birth must match the patient to process the transfer request.", - "patients": "Patients", - "personal_information": "Personal Information", - "phone": "Phone", - "phone_no": "Phone no.", - "phone_number": "Phone Number", - "phone_number_at_current_facility": "Phone Number of Contact person at current Facility", - "pincode": "Pincode", - "please_enter_a_reason_for_the_shift": "Please enter a reason for the shift.", - "please_select_a_facility": "Please select a facility", - "please_select_breathlessness_level": "Please select Breathlessness Level", - "please_select_facility_type": "Please select Facility Type", - "please_select_patient_category": "Please select Patient Category", - "please_select_preferred_vehicle_type": "Please select Preferred Vehicle Type", - "please_select_status": "Please select Status", - "please_upload_a_csv_file": "Please Upload A CSV file", - "policy": "Policy", - "policy__insurer": "Insurer", - "policy__insurer__example": "GICOFINDIA", - "policy__insurer_id": "Insurer ID", - "policy__insurer_id__example": "GICOFINDIA", - "policy__insurer_name": "Insurer Name", - "policy__insurer_name__example": "GIC OF INDIA", - "policy__policy_id": "Policy ID / Policy Name", - "policy__policy_id__example": "POL001", - "policy__subscriber_id": "Member ID", - "policy__subscriber_id__example": "SUB001", - "policy_id_required": "Policy Id or Policy Name is required", - "position": "Position", - "post_your_comment": "Post Your Comment", - "powered_by": "Powered By", - "preferred_facility_type": "Preferred Facility Type", - "preferred_vehicle": "Preferred Vehicle", - "prescription": "Prescription", - "prescription_details": "Prescription Details", - "prescription_discontinued": "Prescription discontinued", - "prescription_logs": "Prescription Logs", - "prescription_medication": "Prescription Medication", - "prescription_medications": "Prescription Medications", - "prescriptions__dosage_frequency": "Dosage & Frequency", - "prescriptions__medicine": "Medicine", - "prescriptions__route": "Route", - "prescriptions__start_date": "Prescribed On", - "preset_deleted": "Preset deleted", - "preset_name_placeholder": "Specify an identifiable name for the new preset", - "preset_updated": "Preset updated", - "prev_sessions": "Prev Sessions", - "principal": "Principal", - "principal_diagnosis": "Principal diagnosis", - "print": "Print", - "print_referral_letter": "Print Referral Letter", - "prn_prescription": "PRN Prescription", - "prn_prescriptions": "PRN Prescriptions", - "procedure_suggestions": "Procedure Suggestions", - "procedures_select_placeholder": "Select procedures to add details", - "profile": "Profile", - "provisional": "Provisional", - "qualification": "Qualification", - "raise_consent_request": "Raise a consent request to fetch patient records over ABDM", - "ration_card__APL": "APL", - "ration_card__BPL": "BPL", - "ration_card__NO_CARD": "Non-card holder", - "ration_card_category": "Ration Card Category", - "reason": "Reason", - "reason_for_discontinuation": "Reason for discontinuation", - "reason_for_edit": "Reason for edit", - "reason_for_referral": "Reason for referral", - "reason_for_shift": "Reason for shift", - "recommended_aspect_ratio_for": "Recommended aspect ratio for", - "record": "Record Audio", - "record_delete_confirm": "Are you sure you want to delete this record?", - "record_has_been_deleted_successfully": "Record has been deleted successfully.", - "record_updates": "Record Updates", - "recording": "Recording", - "redirected_to_create_consultation": "Note: You will be redirected to create consultation form. Please complete the form to finish the transfer process", - "referral_letter": "Referral Letter", - "referred_to": "Referred to", - "refresh": "Refresh", - "refresh_list": "Refresh List", - "refuted": "Refuted", - "register_hospital": "Register Hospital", - "register_page_title": "Register As Hospital Administrator", - "reload": "Reload", - "remove": "Remove", - "rename": "Rename", - "reply": "Reply", - "report": "Report", - "req_atleast_one_digit": "Require at least one digit", - "req_atleast_one_lowercase": "Require at least one lower case letter", - "req_atleast_one_symbol": "Require at least one symbol", - "req_atleast_one_uppercase": "Require at least one upper case", - "request_consent": "Request Consent", - "request_description": "Description of Request", - "request_description_placeholder": "Type your description here", - "request_title": "Request Title", - "request_title_placeholder": "Type your title here", - "required": "Required", - "required_quantity": "Required Quantity", - "resend_otp": "Resend OTP", - "reset": "Reset", - "reset_password": "Reset Password", - "resource": "Resource", - "resource_approving_facility": "Resource approving facility", - "resource_origin_facility": "Origin Facility", - "resource_request": "Resource Request", - "result": "Result", - "result_date": "Result Date", - "result_details": "Result details", - "result_on": "Result on", - "resume": "Resume", - "retake": "Retake", - "return_to_care": "Return to CARE", - "return_to_login": "Return to Login", - "return_to_password_reset": "Return to Password Reset", - "return_to_patient_dashboard": "Return to Patient Dashboard", - "revoked_on": "Revoked On", - "right": "Right", - "route": "Route", - "routine": "Routine", - "sample_collection_date": "Sample Collection Date", - "sample_format": "Sample Format", - "sample_test": "Sample Test", - "sample_test_details": "Sample Test Details", - "sample_test_history": "Sample Test History", - "sample_type": "Sample Type", - "sample_type_description": "Sample Type Description", - "sari": "SARI - Severe Acute Respiratory illness", - "save": "Save", - "save_and_continue": "Save and Continue", - "save_investigation": "Save Investigation", - "scan_asset_qr": "Scan Asset QR!", - "search_by_username": "Search by username", - "search_for_facility": "Search for Facility", - "search_icd11_placeholder": "Search for ICD-11 Diagnoses", - "search_investigation_placeholder": "Search Investigation & Groups", - "search_patient": "Search Patient", - "search_resource": "Search Resource", - "see_attachments": "See Attachments", - "select": "Select", - "select_all": "Select All", - "select_date": "Select date", - "select_eligible_policy": "Select an Eligible Insurance Policy", - "select_facility_for_discharged_patients_warning": "Facility needs to be selected to view discharged patients.", - "select_for_administration": "Select for Administration", - "select_groups": "Select Groups", - "select_investigation": "Select Investigations (all investigations will be selected by default)", - "select_investigation_groups": "Select Investigation Groups", - "select_investigations": "Select Investigations", - "select_local_body": "Select Local Body", - "select_policy": "Select an Insurance Policy", - "select_policy_to_add_items": "Select a Policy to Add Items", - "select_skills": "Select and add some skills", - "select_wards": "Select wards", - "send": "Send", - "send_email": "Send Email", - "send_message": "Send Message", - "send_otp": "Send OTP", - "send_otp_error": "Failed to send OTP. Please try again later.", - "send_otp_success": "OTP has been sent to the respective mobile number", - "send_reset_link": "Send Reset Link", - "serial_number": "Serial Number", - "serviced_on": "Serviced on", - "session_expired": "Session Expired", - "session_expired_msg": "It appears that your session has expired. This could be due to inactivity. Please login again to continue.", - "set_average_weekly_working_hours_for": "Set Average weekly working hours for", - "set_your_local_language": "Set your local language", - "settings_and_filters": "Settings and Filters", - "severity_of_breathlessness": "Severity of Breathlessness", - "shift_request_updated_successfully": "Shift request updated successfully", - "shifting": "Shifting", - "shifting_approval_facility": "Shifting approval facility", - "shifting_approving_facility": "Shifting approving facility", - "shifting_approving_facility_can_not_be_empty": "Shifting approving facility can not be empty.", - "shifting_deleted": "Shifting record has been deleted successfully.", - "shifting_details": "Shifting details", - "shifting_status": "Shifting status", - "show_abha_profile": "Show ABHA Profile", - "show_all": "Show all", - "show_all_notifications": "Show All", - "show_default_presets": "Show Default Presets", - "show_patient_presets": "Show Patient Presets", - "show_unread_notifications": "Show Unread", - "sign_out": "Sign Out", - "skills": "Skills", - "socioeconomic_status": "Socioeconomic status", - "software_update": "Software Update", - "something_went_wrong": "Something went wrong..!", - "something_wrong": "Something went wrong! Try again later!", - "sort_by": "Sort By", - "source": "Source", - "spokes": "Spoke Facilities", - "srf_id": "SRF ID", - "staff_list": "Staff List", - "start_dosage": "Start Dosage", - "state": "State", - "status": "Status", - "stop": "Stop", - "stream_stop_due_to_inativity": "The live feed will stop streaming due to inactivity", - "stream_stopped_due_to_inativity": "The live feed has stopped streaming due to inactivity", - "stream_uuid": "Stream UUID", - "sub_category": "Sub Category", - "submit": "Submit", - "submitting": "Submitting", - "subscribe": "Subscribe", - "subscribe_on_this_device": "Subscribe on this device", - "subscription_error": "Subscription Error", - "suggested_investigations": "Suggested Investigations", - "summary": "Summary", - "support": "Support", - "switch": "Switch", - "switch_camera_is_not_available": "Switch camera is not available.", - "systolic": "Systolic", - "tachycardia": "Tachycardia", - "target_dosage": "Target Dosage", - "test_type": "Type of test done", - "tested_on": "Tested on", - "third_party_software_licenses": "Third Party Software Licenses", - "titrate_dosage": "Titrate Dosage", - "to_be_conducted": "To be conducted", - "total_amount": "Total Amount", - "total_beds": "Total Beds", - "total_staff": "Total Staff", - "total_users": "Total Users", - "transfer_in_progress": "TRANSFER IN PROGRESS", - "transfer_to_receiving_facility": "Transfer to receiving facility", - "travel_within_last_28_days": "Domestic/international Travel (within last 28 days)", - "treating_doctor": "Treating Doctor", - "treatment_summary": "Treatment Summary", - "treatment_summary__head_title": "Treatment Summary", - "treatment_summary__heading": "INTERIM TREATMENT SUMMARY", - "treatment_summary__print": "Print Treatment Summary", - "try_again_later": "Try again later!", - "try_different_abha_linking_option": "Want to try a different linking option, here are some more:", - "type_any_extra_comments_here": "type any extra comments here", - "type_b_cylinders": "B Type Cylinders", - "type_c_cylinders": "C Type Cylinders", - "type_d_cylinders": "D Type Cylinders", - "type_to_search": "Type to search", - "type_your_comment": "Type your comment", - "type_your_reason_here": "Type your reason here", - "unable_to_get_current_position": "Unable to get current position.", - "unconfirmed": "Unconfirmed", - "unique_id": "Unique Id", - "unknown": "Unknown", - "unlink_asset_bed_and_presets": "Delete linked presets and unlink bed", - "unlink_asset_bed_caution": "This action will also delete all presets that are associated to this camera and bed.", - "unlink_camera_and_bed": "Unlink this bed from this camera", - "unsubscribe": "Unsubscribe", - "unsubscribe_failed": "Unsubscribe failed.", - "unsupported_browser": "Unsupported Browser", - "unsupported_browser_description": "Your browser ({{name}} version {{version}}) is not supported. Please update your browser to the latest version or switch to a supported browser for the best experience.", - "up": "Up", - "up_shift": "Up Shift", - "update": "Update", - "update_asset": "Update Asset", - "update_asset_service_record": "Update Asset Service Record", - "update_available": "Update Available", - "update_bed": "Update Bed", - "update_facility": "Update Facility", - "update_facility_middleware_success": "Facility middleware updated successfully", - "update_log": "Update Log", - "update_patient_details": "Update Patient Details", - "update_preset_position_to_current": "Update preset's position to camera's current position", - "update_record": "Update Record", - "update_record_for_asset": "Update record for asset", - "update_shift_request": "Update Shift Request", - "update_status_details": "Update Status/Details", - "updated": "Updated", - "updated_on": "Updated On", - "updating": "Updating", - "upload": "Upload", - "upload_an_image": "Upload an image", - "upload_headings__consultation": "Upload New Consultation File", - "upload_headings__patient": "Upload New Patient File", - "upload_headings__sample_report": "Upload Sample Report", - "upload_headings__supporting_info": "Upload Supporting Info", - "uploading": "Uploading", - "use_existing_abha_address": "Use Existing ABHA Address", - "user_deleted_successfuly": "User Deleted Successfuly", - "user_management": "User Management", - "username": "Username", - "users": "Users", - "vacant": "Vacant", - "vehicle_preference": "Vehicle preference", - "vendor_name": "Vendor Name", - "verify_and_link": "Verify and Link", - "verify_otp": "Verify OTP", - "verify_otp_error": "Failed to verify OTP. Please try again later.", - "verify_otp_success": "OTP has been verified successfully.", - "verify_patient_identifier": "Please verify the patient identifier", - "verify_using": "Verify Using", - "video_conference_link": "Video Conference Link", - "view": "View", - "view_abdm_records": "View ABDM Records", - "view_asset": "View Assets", - "view_cns": "View CNS", - "view_details": "View Details", - "view_faciliy": "View Facility", - "view_patients": "View Patients", - "view_users": "View Users", - "virtual_nursing_assistant": "Virtual Nursing Assistant", - "vitals": "Vitals", - "vitals_monitor": "Vitals Monitor", - "vitals_present": "Vitals Monitor present", - "ward": "Ward", - "warranty_amc_expiry": "Warranty / AMC Expiry", - "what_facility_assign_the_patient_to": "What facility would you like to assign the patient to", - "whatsapp_number": "Whatsapp Number", - "why_the_asset_is_not_working": "Why the asset is not working?", - "width": "Width ({{unit}})", - "working_status": "Working Status", - "years": "years", - "years_of_experience": "Years of Experience", - "years_of_experience_of_the_doctor": "Years of Experience of the Doctor", - "yes": "Yes", - "yet_to_be_decided": "Yet to be decided", - "you_need_at_least_a_location_to_create_an_assest": "You need at least a location to create an assest.", - "zoom_in": "Zoom In", - "zoom_out": "Zoom Out" -} diff --git a/src/Locale/update_locale.js b/src/Locale/update_locale.js index 61f5e32cf84..204fef3a80a 100644 --- a/src/Locale/update_locale.js +++ b/src/Locale/update_locale.js @@ -1,11 +1,10 @@ /* eslint-disable no-undef */ - import { existsSync, mkdirSync, + readFileSync, readdirSync, writeFileSync, - readFileSync, } from "fs"; const DEFAULT_LOCALE = "en"; diff --git a/src/PluginEngine.tsx b/src/PluginEngine.tsx index a56fe21b5b8..9f2fc0113fb 100644 --- a/src/PluginEngine.tsx +++ b/src/PluginEngine.tsx @@ -1,9 +1,12 @@ -import { CareAppsContext, useCareApps } from "@/common/hooks/useCareApps"; /* eslint-disable i18next/no-literal-string */ import React, { Suspense } from "react"; -import { SupportedPluginComponents, pluginMap } from "./pluginTypes"; import ErrorBoundary from "@/components/Common/ErrorBoundary"; +import Loading from "@/components/Common/Loading"; + +import { CareAppsContext, useCareApps } from "@/hooks/useCareApps"; + +import { SupportedPluginComponents, pluginMap } from "@/pluginTypes"; export default function PluginEngine({ children, @@ -11,7 +14,7 @@ export default function PluginEngine({ children: React.ReactNode; }) { return ( - Loading plugins...
}> + }> diff --git a/src/Providers/AuthUserProvider.tsx b/src/Providers/AuthUserProvider.tsx index 43263b98dab..1e4545f64a2 100644 --- a/src/Providers/AuthUserProvider.tsx +++ b/src/Providers/AuthUserProvider.tsx @@ -1,12 +1,16 @@ +import careConfig from "@careConfig"; +import { navigate } from "raviger"; import { useCallback, useEffect } from "react"; -import { AuthUserContext } from "@/common/hooks/useAuthUser"; + import Loading from "@/components/Common/Loading"; -import routes from "../Redux/api"; -import useQuery from "../Utils/request/useQuery"; + +import { AuthUserContext } from "@/hooks/useAuthUser"; + import { LocalStorageKeys } from "@/common/constants"; -import request from "../Utils/request/request"; -import { navigate } from "raviger"; -import careConfig from "@careConfig"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; interface Props { children: React.ReactNode; diff --git a/src/Providers/HistoryAPIProvider.tsx b/src/Providers/HistoryAPIProvider.tsx index 0f60437360d..20077733b01 100644 --- a/src/Providers/HistoryAPIProvider.tsx +++ b/src/Providers/HistoryAPIProvider.tsx @@ -1,5 +1,5 @@ import { useLocationChange } from "raviger"; -import { createContext, ReactNode, useState } from "react"; +import { ReactNode, createContext, useState } from "react"; export const HistoryContext = createContext([]); // eslint-disable-next-line @typescript-eslint/no-empty-function diff --git a/src/Routers/AppRouter.tsx b/src/Routers/AppRouter.tsx index 7275c7c2860..c8f6fbec83e 100644 --- a/src/Routers/AppRouter.tsx +++ b/src/Routers/AppRouter.tsx @@ -1,30 +1,34 @@ +import careConfig from "@careConfig"; +import { Redirect, usePath, useRedirect, useRoutes } from "raviger"; +import { useEffect, useState } from "react"; + +import IconIndex from "@/CAREUI/icons/Index"; + +import ABDMFacilityRecords from "@/components/ABDM/ABDMFacilityRecords"; +import HealthInformation from "@/components/ABDM/HealthInformation"; import { DesktopSidebar, MobileSidebar, SIDEBAR_SHRINK_PREFERENCE_KEY, SidebarShrinkContext, } from "@/components/Common/Sidebar/Sidebar"; -import { Redirect, usePath, useRedirect, useRoutes } from "raviger"; -import { useEffect, useState } from "react"; - -import ABDMFacilityRecords from "@/components/ABDM/ABDMFacilityRecords"; -import AssetRoutes from "./routes/AssetRoutes"; -import { BLACKLISTED_PATHS } from "@/common/constants"; -import ConsultationRoutes from "./routes/ConsultationRoutes"; import Error404 from "@/components/ErrorPages/404"; -import FacilityRoutes from "./routes/FacilityRoutes"; -import HealthInformation from "@/components/ABDM/HealthInformation"; -import IconIndex from "../CAREUI/icons/Index"; -import { NoticeBoard } from "@/components/Notifications/NoticeBoard"; -import PatientRoutes from "./routes/PatientRoutes"; -import ResourceRoutes from "./routes/ResourceRoutes"; -import SampleRoutes from "./routes/SampleRoutes"; import SessionExpired from "@/components/ErrorPages/SessionExpired"; -import ShiftingRoutes from "./routes/ShiftingRoutes"; +import { NoticeBoard } from "@/components/Notifications/NoticeBoard"; import ShowPushNotification from "@/components/Notifications/ShowPushNotification"; -import UserRoutes from "./routes/UserRoutes"; -import careConfig from "@careConfig"; -import { usePluginRoutes } from "@/common/hooks/useCareApps"; + +import { usePluginRoutes } from "@/hooks/useCareApps"; + +import { BLACKLISTED_PATHS } from "@/common/constants"; + +import AssetRoutes from "@/Routers/routes/AssetRoutes"; +import ConsultationRoutes from "@/Routers/routes/ConsultationRoutes"; +import FacilityRoutes from "@/Routers/routes/FacilityRoutes"; +import PatientRoutes from "@/Routers/routes/PatientRoutes"; +import ResourceRoutes from "@/Routers/routes/ResourceRoutes"; +import SampleRoutes from "@/Routers/routes/SampleRoutes"; +import ShiftingRoutes from "@/Routers/routes/ShiftingRoutes"; +import UserRoutes from "@/Routers/routes/UserRoutes"; export type RouteParams = T extends `${string}:${infer Param}/${infer Rest}` diff --git a/src/Routers/SessionRouter.tsx b/src/Routers/SessionRouter.tsx index f6556b38c39..8982a629ba0 100644 --- a/src/Routers/SessionRouter.tsx +++ b/src/Routers/SessionRouter.tsx @@ -1,14 +1,20 @@ -import { Login, ResetPassword } from "@/components/Auth"; import { useRoutes } from "raviger"; -import SessionExpired from "@/components/ErrorPages/SessionExpired"; +import { lazy } from "react"; + +import Login from "@/components/Auth/Login"; +import ResetPassword from "@/components/Auth/ResetPassword"; import InvalidReset from "@/components/ErrorPages/InvalidReset"; -import LicensesPage from "@/components/Licenses/LicensesPage"; +import SessionExpired from "@/components/ErrorPages/SessionExpired"; + +const LicensesPage = lazy(() => import("@/components/Licenses/LicensesPage")); const routes = { "/": () => , "/login": () => , "/forgot-password": () => , - "/password_reset/:token": ({ token }: any) => , + "/password_reset/:token": ({ token }: { token: string }) => ( + + ), "/session-expired": () => , "/licenses": () => , "/invalid-reset": () => , diff --git a/src/Routers/index.tsx b/src/Routers/index.tsx index 8a27df7b59d..e1b507dbde0 100644 --- a/src/Routers/index.tsx +++ b/src/Routers/index.tsx @@ -1,5 +1,5 @@ -import SessionRouter from "./SessionRouter"; -import AppRouter from "./AppRouter"; +import AppRouter from "@/Routers/AppRouter"; +import SessionRouter from "@/Routers/SessionRouter"; const routers = { SessionRouter, AppRouter }; diff --git a/src/Routers/routes/AssetRoutes.tsx b/src/Routers/routes/AssetRoutes.tsx index 4c32df55069..8a54e465c79 100644 --- a/src/Routers/routes/AssetRoutes.tsx +++ b/src/Routers/routes/AssetRoutes.tsx @@ -2,7 +2,8 @@ import AssetConfigure from "@/components/Assets/AssetConfigure"; import AssetManage from "@/components/Assets/AssetManage"; import AssetsList from "@/components/Assets/AssetsList"; import AssetCreate from "@/components/Facility/AssetCreate"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const AssetRoutes: AppRoutes = { "/assets": () => , diff --git a/src/Routers/routes/ConsultationRoutes.tsx b/src/Routers/routes/ConsultationRoutes.tsx index bb804bd7613..2d283df27d7 100644 --- a/src/Routers/routes/ConsultationRoutes.tsx +++ b/src/Routers/routes/ConsultationRoutes.tsx @@ -1,19 +1,20 @@ +import { ConsultationDetails } from "@/components/Facility/ConsultationDetails"; +import ConsultationDoctorNotes from "@/components/Facility/ConsultationDoctorNotes"; import { ConsultationForm } from "@/components/Facility/ConsultationForm"; import Investigation from "@/components/Facility/Investigations"; +import InvestigationPrintPreview from "@/components/Facility/Investigations/InvestigationsPrintPreview"; import ShowInvestigation from "@/components/Facility/Investigations/ShowInvestigation"; -import ManagePrescriptions from "@/components/Medicine/ManagePrescriptions"; -import { DailyRoundListDetails } from "@/components/Patient/DailyRoundListDetails"; -import { DailyRounds } from "@/components/Patient/DailyRounds"; -import { ConsultationDetails } from "@/components/Facility/ConsultationDetails"; import TreatmentSummary from "@/components/Facility/TreatmentSummary"; -import ConsultationDoctorNotes from "@/components/Facility/ConsultationDoctorNotes"; -import PatientConsentRecords from "@/components/Patient/PatientConsentRecords"; import CriticalCareEditor from "@/components/LogUpdate/CriticalCareEditor"; -import PrescriptionsPrintPreview from "@/components/Medicine/PrintPreview"; import CriticalCarePreview from "@/components/LogUpdate/CriticalCarePreview"; +import ManagePrescriptions from "@/components/Medicine/ManagePrescriptions"; +import PrescriptionsPrintPreview from "@/components/Medicine/PrintPreview"; +import { DailyRoundListDetails } from "@/components/Patient/DailyRoundListDetails"; +import { DailyRounds } from "@/components/Patient/DailyRounds"; import FileUploadPage from "@/components/Patient/FileUploadPage"; -import InvestigationPrintPreview from "@/components/Facility/Investigations/InvestigationsPrintPreview"; -import { AppRoutes } from "../AppRouter"; +import PatientConsentRecords from "@/components/Patient/PatientConsentRecords"; + +import { AppRoutes } from "@/Routers/AppRouter"; const consultationRoutes: AppRoutes = { "/facility/:facilityId/patient/:patientId/consultation": ({ diff --git a/src/Routers/routes/FacilityInventoryRoutes.tsx b/src/Routers/routes/FacilityInventoryRoutes.tsx index 3de193ffe08..e096460ed46 100644 --- a/src/Routers/routes/FacilityInventoryRoutes.tsx +++ b/src/Routers/routes/FacilityInventoryRoutes.tsx @@ -1,9 +1,11 @@ import { Redirect } from "raviger"; + import InventoryList from "@/components/Facility/InventoryList"; import InventoryLog from "@/components/Facility/InventoryLog"; import MinQuantityList from "@/components/Facility/MinQuantityList"; import { SetInventoryForm } from "@/components/Facility/SetInventoryForm"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const FacilityInventoryRoutes: AppRoutes = { "/facility/:facilityId/inventory": ({ facilityId }) => ( diff --git a/src/Routers/routes/FacilityLocationRoutes.tsx b/src/Routers/routes/FacilityLocationRoutes.tsx index e2f574664ce..c142ed5ed01 100644 --- a/src/Routers/routes/FacilityLocationRoutes.tsx +++ b/src/Routers/routes/FacilityLocationRoutes.tsx @@ -1,12 +1,13 @@ +import CentralLiveMonitoring from "@/components/CameraFeed/CentralLiveMonitoring"; import { AddBedForm } from "@/components/Facility/AddBedForm"; import { AddInventoryForm } from "@/components/Facility/AddInventoryForm"; import { AddLocationForm } from "@/components/Facility/AddLocationForm"; import { BedManagement } from "@/components/Facility/BedManagement"; import LocationManagement from "@/components/Facility/LocationManagement"; -import CentralLiveMonitoring from "@/components/CameraFeed/CentralLiveMonitoring"; -import { AuthorizeUserRoute } from "../../Utils/AuthorizeFor"; -import { CameraFeedPermittedUserTypes } from "../../Utils/permissions"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; +import { AuthorizeUserRoute } from "@/Utils/AuthorizeFor"; +import { CameraFeedPermittedUserTypes } from "@/Utils/permissions"; const FacilityLocationRoutes: AppRoutes = { "/facility/:facilityId/location": ({ facilityId }) => ( diff --git a/src/Routers/routes/FacilityRoutes.tsx b/src/Routers/routes/FacilityRoutes.tsx index e3b787abd9f..8c942518996 100644 --- a/src/Routers/routes/FacilityRoutes.tsx +++ b/src/Routers/routes/FacilityRoutes.tsx @@ -1,15 +1,16 @@ +import CentralNursingStation from "@/components/Facility/CentralNursingStation"; +import DischargedPatientsList from "@/components/Facility/DischargedPatientsList"; import { FacilityConfigure } from "@/components/Facility/FacilityConfigure"; import { FacilityCreate } from "@/components/Facility/FacilityCreate"; import { FacilityHome } from "@/components/Facility/FacilityHome"; -import FacilityUsers from "@/components/Facility/FacilityUsers"; import { FacilityList } from "@/components/Facility/FacilityList"; +import FacilityUsers from "@/components/Facility/FacilityUsers"; import { TriageForm } from "@/components/Facility/TriageForm"; import ResourceCreate from "@/components/Resource/ResourceCreate"; -import CentralNursingStation from "@/components/Facility/CentralNursingStation"; -import FacilityLocationRoutes from "./FacilityLocationRoutes"; -import FacilityInventoryRoutes from "./FacilityInventoryRoutes"; -import DischargedPatientsList from "@/components/Facility/DischargedPatientsList"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; +import FacilityInventoryRoutes from "@/Routers/routes/FacilityInventoryRoutes"; +import FacilityLocationRoutes from "@/Routers/routes/FacilityLocationRoutes"; const FacilityRoutes: AppRoutes = { "/facility": () => , diff --git a/src/Routers/routes/PatientRoutes.tsx b/src/Routers/routes/PatientRoutes.tsx index 8f9d8bd460f..0a46190cfd1 100644 --- a/src/Routers/routes/PatientRoutes.tsx +++ b/src/Routers/routes/PatientRoutes.tsx @@ -1,12 +1,13 @@ +import DeathReport from "@/components/DeathReport/DeathReport"; import InvestigationReports from "@/components/Facility/Investigations/Reports"; +import FileUploadPage from "@/components/Patient/FileUploadPage"; +import { InsuranceDetails } from "@/components/Patient/InsuranceDetails"; import { PatientManager } from "@/components/Patient/ManagePatients"; import { PatientHome } from "@/components/Patient/PatientHome"; import PatientNotes from "@/components/Patient/PatientNotes"; import { PatientRegister } from "@/components/Patient/PatientRegister"; -import DeathReport from "@/components/DeathReport/DeathReport"; -import { InsuranceDetails } from "@/components/Patient/InsuranceDetails"; -import FileUploadPage from "@/components/Patient/FileUploadPage"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const PatientRoutes: AppRoutes = { "/patients": () => , diff --git a/src/Routers/routes/ResourceRoutes.tsx b/src/Routers/routes/ResourceRoutes.tsx index 24e60ec5ad9..547aeb53610 100644 --- a/src/Routers/routes/ResourceRoutes.tsx +++ b/src/Routers/routes/ResourceRoutes.tsx @@ -1,10 +1,12 @@ -import ResourceDetails from "@/components/Resource/ResourceDetails"; -import { ResourceDetailsUpdate } from "@/components/Resource/ResourceDetailsUpdate"; import { Redirect } from "raviger"; -import { AppRoutes } from "../AppRouter"; + import BoardView from "@/components/Resource/ResourceBoard"; +import ResourceDetails from "@/components/Resource/ResourceDetails"; +import { ResourceDetailsUpdate } from "@/components/Resource/ResourceDetailsUpdate"; import ListView from "@/components/Resource/ResourceList"; +import { AppRoutes } from "@/Routers/AppRouter"; + const getDefaultView = () => localStorage.getItem("defaultResourceView") === "list" ? "list" : "board"; diff --git a/src/Routers/routes/SampleRoutes.tsx b/src/Routers/routes/SampleRoutes.tsx index a09f5603a62..d9d3162cdd9 100644 --- a/src/Routers/routes/SampleRoutes.tsx +++ b/src/Routers/routes/SampleRoutes.tsx @@ -2,7 +2,8 @@ import { SampleDetails } from "@/components/Patient/SampleDetails"; import SampleReport from "@/components/Patient/SamplePreview"; import { SampleTest } from "@/components/Patient/SampleTest"; import SampleViewAdmin from "@/components/Patient/SampleViewAdmin"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const SampleRoutes: AppRoutes = { "/sample": () => , diff --git a/src/Routers/routes/ShiftingRoutes.tsx b/src/Routers/routes/ShiftingRoutes.tsx index b5448cc527f..68131390f50 100644 --- a/src/Routers/routes/ShiftingRoutes.tsx +++ b/src/Routers/routes/ShiftingRoutes.tsx @@ -1,10 +1,12 @@ +import { Redirect } from "raviger"; + import { ShiftCreate } from "@/components/Patient/ShiftCreate"; import ShiftDetails from "@/components/Shifting/ShiftDetails"; import { ShiftDetailsUpdate } from "@/components/Shifting/ShiftDetailsUpdate"; -import ListView from "@/components/Shifting/ShiftingList"; import BoardView from "@/components/Shifting/ShiftingBoard"; -import { Redirect } from "raviger"; -import { AppRoutes } from "../AppRouter"; +import ListView from "@/components/Shifting/ShiftingList"; + +import { AppRoutes } from "@/Routers/AppRouter"; const getDefaultView = () => localStorage.getItem("defaultShiftView") === "list" ? "list" : "board"; diff --git a/src/Routers/routes/UserRoutes.tsx b/src/Routers/routes/UserRoutes.tsx index d7542c15a15..ff7212a02e2 100644 --- a/src/Routers/routes/UserRoutes.tsx +++ b/src/Routers/routes/UserRoutes.tsx @@ -1,7 +1,8 @@ import ManageUsers from "@/components/Users/ManageUsers"; import { UserAdd } from "@/components/Users/UserAdd"; import UserProfile from "@/components/Users/UserProfile"; -import { AppRoutes } from "../AppRouter"; + +import { AppRoutes } from "@/Routers/AppRouter"; const UserRoutes: AppRoutes = { "/users": () => , diff --git a/src/Utils/AuthorizeFor.tsx b/src/Utils/AuthorizeFor.tsx index 6e1e048ee4e..6324dd9909e 100644 --- a/src/Utils/AuthorizeFor.tsx +++ b/src/Utils/AuthorizeFor.tsx @@ -1,8 +1,11 @@ -import { UserRole } from "@/common/constants"; import React from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; + import Error404 from "@/components/ErrorPages/404"; +import useAuthUser from "@/hooks/useAuthUser"; + +import { UserRole } from "@/common/constants"; + export type AuthorizedForCB = (userType: UserRole) => boolean; interface AuthorizeUserRouteProps { diff --git a/src/Utils/AutoSave.tsx b/src/Utils/AutoSave.tsx index 45217dd51b4..f621a58802d 100644 --- a/src/Utils/AutoSave.tsx +++ b/src/Utils/AutoSave.tsx @@ -1,16 +1,20 @@ import React, { - useReducer, + Dispatch, + ReactNode, + useContext, useEffect, + useReducer, useRef, useState, - Dispatch, - useContext, - ReactNode, } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { Button } from "@/components/ui/button"; + import { FormAction, FormReducer, FormState } from "@/components/Form/Utils"; -import { relativeTime } from "./utils"; -import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { relativeTime } from "@/Utils/utils"; type Draft = { timestamp: number; diff --git a/src/Utils/Notifications.js b/src/Utils/Notifications.js index ce57ab5edd9..5b3ecdf143c 100644 --- a/src/Utils/Notifications.js +++ b/src/Utils/Notifications.js @@ -1,6 +1,6 @@ -import { alert, Stack, defaultModules } from "@pnotify/core"; +import { Stack, alert, defaultModules } from "@pnotify/core"; import * as PNotifyMobile from "@pnotify/mobile"; -import { startCase, camelCase } from "lodash-es"; +import { camelCase, startCase } from "lodash-es"; defaultModules.set(PNotifyMobile, {}); diff --git a/src/Utils/dayjs.ts b/src/Utils/dayjs.ts index b70c2fc044b..a053cd1ffbb 100644 --- a/src/Utils/dayjs.ts +++ b/src/Utils/dayjs.ts @@ -1,8 +1,8 @@ import dayjs from "dayjs"; -import relativeTime from "dayjs/plugin/relativeTime"; -import duration from "dayjs/plugin/duration"; import customParseFormat from "dayjs/plugin/customParseFormat"; +import duration from "dayjs/plugin/duration"; import isBetween from "dayjs/plugin/isBetween"; +import relativeTime from "dayjs/plugin/relativeTime"; dayjs.extend(relativeTime); dayjs.extend(duration); diff --git a/src/Utils/featureFlags.tsx b/src/Utils/featureFlags.tsx index 7a1fd85e28b..a475bee57d6 100644 --- a/src/Utils/featureFlags.tsx +++ b/src/Utils/featureFlags.tsx @@ -1,9 +1,12 @@ -import { createContext, useContext, useState, useEffect } from "react"; -import useQuery from "./request/useQuery"; -import routes from "../Redux/api"; -import useAuthUser from "@/common/hooks/useAuthUser"; +import { createContext, useContext, useEffect, useState } from "react"; + import { FacilityModel } from "@/components/Facility/models"; +import useAuthUser from "@/hooks/useAuthUser"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; + export type FeatureFlag = "SCRIBE_ENABLED"; // "HCX_ENABLED" | "ABDM_ENABLED" | export interface FeatureFlagsResponse { diff --git a/src/Utils/permissions.ts b/src/Utils/permissions.ts index 3037f23c9f7..35f12715eff 100644 --- a/src/Utils/permissions.ts +++ b/src/Utils/permissions.ts @@ -1,6 +1,7 @@ -import { USER_TYPES, UserRole } from "@/common/constants"; import { UserModel } from "@/components/Users/models"; +import { USER_TYPES, UserRole } from "@/common/constants"; + export const showUserDelete = (authUser: UserModel, targetUser: UserModel) => { // Auth user should be higher in hierarchy than target user if ( diff --git a/src/Redux/api.tsx b/src/Utils/request/api.tsx similarity index 99% rename from src/Redux/api.tsx rename to src/Utils/request/api.tsx index a2794e35203..441b9a3d8c8 100644 --- a/src/Redux/api.tsx +++ b/src/Utils/request/api.tsx @@ -1,7 +1,13 @@ +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; import { ConsentRequestModel, CreateConsentTBody, } from "@/components/ABDM/types/consent"; +import { + IHealthFacility, + IcreateHealthFacilityTBody, + IpartialUpdateHealthFacilityTBody, +} from "@/components/ABDM/types/health-facility"; import { HealthInformationModel } from "@/components/ABDM/types/health-information"; import { AssetBedBody, @@ -14,6 +20,22 @@ import { AvailabilityRecord, PatientAssetBed, } from "@/components/Assets/AssetTypes"; +import { ICD11DiagnosisModel } from "@/components/Diagnosis/types"; +import { + IDeleteBedCapacity, + ILocalBodies, + ILocalBodyByDistrict, +} from "@/components/ExternalResult/models"; +import { + EventGeneric, + type Type, +} from "@/components/Facility/ConsultationDetails/Events/types"; +import { + InvestigationGroup, + InvestigationType, +} from "@/components/Facility/Investigations"; +import { Investigation } from "@/components/Facility/Investigations/Reports/types"; +import { InvestigationSessionType } from "@/components/Facility/Investigations/investigationsTab"; import { BedModel, CapacityModal, @@ -47,40 +69,30 @@ import { StateModel, WardModel, } from "@/components/Facility/models"; -import { - DailyRoundsModel, - PatientModel, - SampleReportModel, - SampleTestModel, -} from "@/components/Patient/models"; -import { - IDeleteBedCapacity, - ILocalBodies, - ILocalBodyByDistrict, -} from "@/components/ExternalResult/models"; -import { - InvestigationGroup, - InvestigationType, -} from "@/components/Facility/Investigations"; import { DupPatientModel, PatientConsentModel, PatientTransferRequest, } from "@/components/Facility/models"; +import { InsurerOptionModel } from "@/components/HCX/InsurerAutocomplete"; +import { HCXPolicyModel } from "@/components/HCX/models"; import { MedibaseMedicine, Prescription } from "@/components/Medicine/models"; import { NotificationData, PNconfigData, } from "@/components/Notifications/models"; -import { HCXPolicyModel } from "@/components/HCX/models"; -import { ICD11DiagnosisModel } from "@/components/Diagnosis/types"; -import { Investigation } from "@/components/Facility/Investigations/Reports/types"; -import { PaginatedResponse } from "../Utils/request/types"; +import { + DailyRoundsModel, + PatientModel, + SampleReportModel, + SampleTestModel, +} from "@/components/Patient/models"; import { CreateFileRequest, CreateFileResponse, FileUploadModel, } from "@/components/Patient/models"; +import { ScribeModel } from "@/components/Scribe/Scribe"; import { SkillModel, SkillObjectModel, @@ -88,19 +100,8 @@ import { UserAssignedModel, UserModel, } from "@/components/Users/models"; -import { - EventGeneric, - type Type, -} from "@/components/Facility/ConsultationDetails/Events/types"; -import { InvestigationSessionType } from "@/components/Facility/Investigations/investigationsTab"; -import { AbhaNumberModel } from "@/components/ABDM/types/abha"; -import { ScribeModel } from "@/components/Scribe/Scribe"; -import { - IcreateHealthFacilityTBody, - IHealthFacility, - IpartialUpdateHealthFacilityTBody, -} from "@/components/ABDM/types/health-facility"; -import { InsurerOptionModel } from "@/components/HCX/InsurerAutocomplete"; + +import { PaginatedResponse } from "@/Utils/request/types"; /** * A fake function that returns an empty object casted to type T diff --git a/src/Utils/request/handleResponse.ts b/src/Utils/request/handleResponse.ts index 905417ad0e2..339d5559b6b 100644 --- a/src/Utils/request/handleResponse.ts +++ b/src/Utils/request/handleResponse.ts @@ -1,7 +1,8 @@ -import { RequestResult } from "./types"; -import * as Notifications from "../Notifications"; import { navigate } from "raviger"; +import * as Notifications from "@/Utils/Notifications"; +import { RequestResult } from "@/Utils/request/types"; + export default function handleResponse( { res, error }: RequestResult, silent?: boolean, diff --git a/src/Utils/request/request.ts b/src/Utils/request/request.ts index 3fa648316af..d036ad49750 100644 --- a/src/Utils/request/request.ts +++ b/src/Utils/request/request.ts @@ -1,7 +1,8 @@ import careConfig from "@careConfig"; -import handleResponse from "./handleResponse"; -import { RequestOptions, RequestResult, Route } from "./types"; -import { makeHeaders, makeUrl } from "./utils"; + +import handleResponse from "@/Utils/request/handleResponse"; +import { RequestOptions, RequestResult, Route } from "@/Utils/request/types"; +import { makeHeaders, makeUrl } from "@/Utils/request/utils"; type ControllerXORControllerRef = | { diff --git a/src/Utils/request/uploadFile.ts b/src/Utils/request/uploadFile.ts index ca62672f642..005eeaf92aa 100644 --- a/src/Utils/request/uploadFile.ts +++ b/src/Utils/request/uploadFile.ts @@ -1,6 +1,7 @@ import { Dispatch, SetStateAction } from "react"; -import { handleUploadPercentage } from "./utils"; -import * as Notification from "../../Utils/Notifications"; + +import * as Notification from "@/Utils/Notifications"; +import { handleUploadPercentage } from "@/Utils/request/utils"; const uploadFile = ( url: string, diff --git a/src/Utils/request/useMutation.ts b/src/Utils/request/useMutation.ts index 737b32a2237..fbc6edc3940 100644 --- a/src/Utils/request/useMutation.ts +++ b/src/Utils/request/useMutation.ts @@ -1,3 +1,5 @@ +import React from "react"; + import request from "@/Utils/request/request"; import { MutationRoute, @@ -5,7 +7,6 @@ import { RequestResult, } from "@/Utils/request/types"; import { mergeRequestOptions } from "@/Utils/request/utils"; -import React from "react"; export default function useMutation( route: MutationRoute, diff --git a/src/Utils/request/useQuery.ts b/src/Utils/request/useQuery.ts index d9bec8f7a05..109ff0bb2f1 100644 --- a/src/Utils/request/useQuery.ts +++ b/src/Utils/request/useQuery.ts @@ -1,7 +1,12 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { QueryRoute, RequestOptions, RequestResult } from "./types"; -import request from "./request"; -import { mergeRequestOptions } from "./utils"; + +import request from "@/Utils/request/request"; +import { + QueryRoute, + RequestOptions, + RequestResult, +} from "@/Utils/request/types"; +import { mergeRequestOptions } from "@/Utils/request/utils"; export interface QueryOptions extends RequestOptions { prefetch?: boolean; diff --git a/src/Utils/request/utils.ts b/src/Utils/request/utils.ts index 2734625e196..8fd7bc96bea 100644 --- a/src/Utils/request/utils.ts +++ b/src/Utils/request/utils.ts @@ -1,7 +1,9 @@ import { Dispatch, SetStateAction } from "react"; + import { LocalStorageKeys } from "@/common/constants"; -import * as Notification from "../Notifications"; -import { QueryParams, RequestOptions } from "./types"; + +import * as Notification from "@/Utils/Notifications"; +import { QueryParams, RequestOptions } from "@/Utils/request/types"; export function makeUrl( path: string, diff --git a/src/Utils/useRecorder.d.ts b/src/Utils/useRecorder.d.ts deleted file mode 100644 index ed253a47646..00000000000 --- a/src/Utils/useRecorder.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import useRecorder from "./useRecorder"; -export default useRecorder as any; diff --git a/src/Utils/useSegmentedRecorder.ts b/src/Utils/useSegmentedRecorder.ts index fe38afb3b06..c10379a9d12 100644 --- a/src/Utils/useSegmentedRecorder.ts +++ b/src/Utils/useSegmentedRecorder.ts @@ -1,7 +1,8 @@ -import { useState, useEffect } from "react"; -import * as Notify from "./Notifications"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import * as Notify from "@/Utils/Notifications"; + const useSegmentedRecording = () => { const [isRecording, setIsRecording] = useState(false); const [recorder, setRecorder] = useState(null); diff --git a/src/Utils/utils.ts b/src/Utils/utils.ts index 4ba10746d61..3888406ad29 100644 --- a/src/Utils/utils.ts +++ b/src/Utils/utils.ts @@ -1,7 +1,9 @@ +import { PatientModel } from "@/components/Patient/models"; + import { AREACODES, IN_LANDLINE_AREA_CODES } from "@/common/constants"; import phoneCodesJson from "@/common/static/countryPhoneAndFlags.json"; -import dayjs from "./dayjs"; -import { PatientModel } from "@/components/Patient/models"; + +import dayjs from "@/Utils/dayjs"; interface ApacheParams { age: number; diff --git a/src/common/constants.tsx b/src/common/constants.tsx index 87432fcaadb..b917ea1aa68 100644 --- a/src/common/constants.tsx +++ b/src/common/constants.tsx @@ -1,13 +1,16 @@ +import { IconName } from "@/CAREUI/icons/CareIcon"; + +import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; +import { SortOption } from "@/components/Common/SortDropdown"; import { PatientCategory, SpokeRelationship, } from "@/components/Facility/models"; -import { SortOption } from "@/components/Common/SortDropdown"; -import { dateQueryString } from "../Utils/utils"; -import { IconName } from "../CAREUI/icons/CareIcon"; import { PhoneNumberValidator } from "@/components/Form/FieldValidators"; -import { SchemaType } from "./schemaParser"; -import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; + +import { SchemaType } from "@/common/schemaParser"; + +import { dateQueryString } from "@/Utils/utils"; export const RESULTS_PER_PAGE_LIMIT = 14; export const PAGINATION_LIMIT = 36; diff --git a/src/common/utils.tsx b/src/common/utils.tsx index 4e14e3bf5ba..7089851a018 100644 --- a/src/common/utils.tsx +++ b/src/common/utils.tsx @@ -1,7 +1,9 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { useEffect } from "react"; -import { OptionsType } from "./constants"; -import { humanizeStrings } from "../Utils/utils"; + +import { OptionsType } from "@/common/constants"; + +import { humanizeStrings } from "@/Utils/utils"; export interface statusType { aborted?: boolean; diff --git a/src/components/ABDM/ABDMFacilityRecords.tsx b/src/components/ABDM/ABDMFacilityRecords.tsx index 3e23e82fc8f..ef3a1da8ab4 100644 --- a/src/components/ABDM/ABDMFacilityRecords.tsx +++ b/src/components/ABDM/ABDMFacilityRecords.tsx @@ -1,13 +1,16 @@ import { Link } from "raviger"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; -import { classNames, formatDateTime } from "../../Utils/utils"; -import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import Loading from "@/components/Common/Loading"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames, formatDateTime } from "@/Utils/utils"; + interface IProps { facilityId: string; } @@ -184,6 +187,13 @@ export default function ABDMFacilityRecords({ facilityId }: IProps) { + {consentsResult?.results.length === 0 && ( +
+

+ {t("no_records_found")} +

+
+ )} diff --git a/src/components/ABDM/ABDMRecordsTab.tsx b/src/components/ABDM/ABDMRecordsTab.tsx index d97edbb0cc2..3b6f2493fb4 100644 --- a/src/components/ABDM/ABDMRecordsTab.tsx +++ b/src/components/ABDM/ABDMRecordsTab.tsx @@ -1,16 +1,22 @@ -import { ConsentArtefactModel, ConsentRequestModel } from "./types/consent"; import dayjs from "dayjs"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import * as Notification from "../../Utils/Notifications"; -import Loading from "@/components/Common/Loading"; -import { classNames, formatName } from "../../Utils/utils"; import { Link } from "raviger"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; -import useQuery from "../../Utils/request/useQuery"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + ConsentArtefactModel, + ConsentRequestModel, +} from "@/components/ABDM/types/consent"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import Loading from "@/components/Common/Loading"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames, formatName } from "@/Utils/utils"; + interface IConsentArtefactCardProps { artefact: ConsentArtefactModel; } diff --git a/src/components/ABDM/ABHAProfileModal.tsx b/src/components/ABDM/ABHAProfileModal.tsx index f242a1e2fa8..1e348a40778 100644 --- a/src/components/ABDM/ABHAProfileModal.tsx +++ b/src/components/ABDM/ABHAProfileModal.tsx @@ -1,15 +1,17 @@ -import * as Notify from "../../Utils/Notifications"; - -import CareIcon from "../../CAREUI/icons/CareIcon"; -import DialogModal from "@/components/Common/Dialog"; import QRCode from "qrcode.react"; -import { formatDateTime } from "../../Utils/utils"; import { useRef } from "react"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { AbhaNumberModel } from "./types/abha"; import { useTranslation } from "react-i18next"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import DialogModal from "@/components/Common/Dialog"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { formatDateTime } from "@/Utils/utils"; + interface IProps { patientId?: string; abha?: AbhaNumberModel; diff --git a/src/components/ABDM/ConfigureHealthFacility.tsx b/src/components/ABDM/ConfigureHealthFacility.tsx index 78b71e58bc3..ba3eb325dec 100644 --- a/src/components/ABDM/ConfigureHealthFacility.tsx +++ b/src/components/ABDM/ConfigureHealthFacility.tsx @@ -1,17 +1,19 @@ -import { useReducer, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; import { navigate } from "raviger"; -import { Submit } from "@/components/Common/components/ButtonV2"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { classNames } from "../../Utils/utils"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; -import { FieldChangeEvent } from "../Form/FormFields/Utils"; -import { IHealthFacility } from "./types/health-facility"; +import { useReducer, useState } from "react"; import { useTranslation } from "react-i18next"; +import { IHealthFacility } from "@/components/ABDM/types/health-facility"; +import { Submit } from "@/components/Common/ButtonV2"; import Loading from "@/components/Common/Loading"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { FieldChangeEvent } from "@/components/Form/FormFields/Utils"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; + const initForm = { health_facility: null as IHealthFacility | null, hf_id: "", diff --git a/src/components/ABDM/FetchRecordsModal.tsx b/src/components/ABDM/FetchRecordsModal.tsx index 441bee0ddbd..9433374f931 100644 --- a/src/components/ABDM/FetchRecordsModal.tsx +++ b/src/components/ABDM/FetchRecordsModal.tsx @@ -1,24 +1,27 @@ -import * as Notification from "../../Utils/Notifications"; +import dayjs from "dayjs"; +import { navigate } from "raviger"; +import { useState } from "react"; +import { useTranslation } from "react-i18next"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import { ConsentHIType, ConsentPurpose } from "@/components/ABDM/types/consent"; +import ButtonV2 from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { useState } from "react"; +import DateFormField from "@/components/Form/FormFields/DateFormField"; +import DateRangeFormField from "@/components/Form/FormFields/DateRangeFormField"; import { MultiSelectFormField, SelectFormField, -} from "../Form/FormFields/SelectFormField"; +} from "@/components/Form/FormFields/SelectFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; + +import { useMessageListener } from "@/hooks/useMessageListener"; + import { ABDM_CONSENT_PURPOSE, ABDM_HI_TYPE } from "@/common/constants"; -import DateRangeFormField from "../Form/FormFields/DateRangeFormField"; -import dayjs from "dayjs"; -import { navigate } from "raviger"; -import DateFormField from "../Form/FormFields/DateFormField"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { useMessageListener } from "@/common/hooks/useMessageListener"; -import { AbhaNumberModel } from "./types/abha"; -import { ConsentHIType, ConsentPurpose } from "./types/consent"; -import { useTranslation } from "react-i18next"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; const getDate = (value: string | Date) => (value && dayjs(value).isValid() && dayjs(value).toDate()) || undefined; diff --git a/src/components/ABDM/HealthInformation.tsx b/src/components/ABDM/HealthInformation.tsx index e3571c90d9f..e147f050131 100644 --- a/src/components/ABDM/HealthInformation.tsx +++ b/src/components/ABDM/HealthInformation.tsx @@ -1,9 +1,11 @@ +import { HIProfile } from "hi-profiles"; import { useTranslation } from "react-i18next"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; + import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import { HIProfile } from "hi-profiles"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; interface IProps { artefactId: string; diff --git a/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx b/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx index dc2b5ff7ef6..d2697633bea 100644 --- a/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx +++ b/src/components/ABDM/LinkAbhaNumber/CreateWithAadhaar.tsx @@ -1,19 +1,21 @@ -import { useTranslation } from "react-i18next"; -import useMultiStepForm, { InjectedStepProps } from "./useMultiStepForm"; -import { classNames } from "../../../Utils/utils"; -import TextFormField from "../../Form/FormFields/TextFormField"; import { useEffect, useState } from "react"; -import ButtonV2, { - ButtonWithTimer, -} from "@/components/Common/components/ButtonV2"; -import OtpFormField from "../../Form/FormFields/OtpFormField"; -import PhoneNumberFormField from "../../Form/FormFields/PhoneNumberFormField"; -import { AbhaNumberModel } from "../types/abha"; -import { validateRule } from "../../Users/UserAdd"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import * as Notify from "../../../Utils/Notifications"; -import CheckBoxFormField from "../../Form/FormFields/CheckBoxFormField"; +import { useTranslation } from "react-i18next"; + +import useMultiStepForm, { + InjectedStepProps, +} from "@/components/ABDM/LinkAbhaNumber/useMultiStepForm"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2, { ButtonWithTimer } from "@/components/Common/ButtonV2"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import OtpFormField from "@/components/Form/FormFields/OtpFormField"; +import PhoneNumberFormField from "@/components/Form/FormFields/PhoneNumberFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { validateRule } from "@/components/Users/UserAdd"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; const MAX_OTP_RESEND_ALLOWED = 2; @@ -682,18 +684,22 @@ function ChooseAbhaAddress({ {validateRule( healthId.length >= 4, t("abha_address_validation_length_error"), + false, )} {validateRule( - isNaN(Number(healthId[0])) && healthId[0] !== ".", + Number.isNaN(Number(healthId[0])) && healthId[0] !== ".", t("abha_address_validation_start_error"), + false, )} {validateRule( healthId[healthId.length - 1] !== ".", t("abha_address_validation_end_error"), + false, )} {validateRule( /^[0-9a-zA-Z._]+$/.test(healthId), t("abha_address_validation_character_error"), + false, )} diff --git a/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx b/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx index 2ca9dbfc5f4..9b8150dee86 100644 --- a/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx +++ b/src/components/ABDM/LinkAbhaNumber/LinkWithOtp.tsx @@ -1,18 +1,20 @@ -import { useTranslation } from "react-i18next"; -import { AbhaNumberModel } from "../types/abha"; -import useMultiStepForm, { InjectedStepProps } from "./useMultiStepForm"; import { useMemo, useState } from "react"; -import TextFormField from "../../Form/FormFields/TextFormField"; -import { classNames } from "../../../Utils/utils"; -import ButtonV2, { - ButtonWithTimer, -} from "@/components/Common/components/ButtonV2"; -import Dropdown, { DropdownItem } from "@/components/Common/components/Menu"; -import OtpFormField from "../../Form/FormFields/OtpFormField"; -import * as Notify from "../../../Utils/Notifications"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import CheckBoxFormField from "../../Form/FormFields/CheckBoxFormField"; +import { useTranslation } from "react-i18next"; + +import useMultiStepForm, { + InjectedStepProps, +} from "@/components/ABDM/LinkAbhaNumber/useMultiStepForm"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2, { ButtonWithTimer } from "@/components/Common/ButtonV2"; +import Dropdown, { DropdownItem } from "@/components/Common/Menu"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import OtpFormField from "@/components/Form/FormFields/OtpFormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; + +import * as Notify from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; const MAX_OTP_RESEND_ALLOWED = 2; diff --git a/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx b/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx index 4e91f89b384..712d28943b4 100644 --- a/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx +++ b/src/components/ABDM/LinkAbhaNumber/LinkWithQr.tsx @@ -1,11 +1,12 @@ +import { IDetectedBarcode, Scanner } from "@yudiel/react-qr-scanner"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; -import { AbhaNumberModel, ABHAQRContent } from "../types/abha"; -import * as Notification from "../../../Utils/Notifications"; -import { Scanner, IDetectedBarcode } from "@yudiel/react-qr-scanner"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import { useState } from "react"; +import { ABHAQRContent, AbhaNumberModel } from "@/components/ABDM/types/abha"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; type ILoginWithQrProps = { onSuccess: (abhaNumber: AbhaNumberModel) => void; diff --git a/src/components/ABDM/LinkAbhaNumber/index.tsx b/src/components/ABDM/LinkAbhaNumber/index.tsx index d8e4e955be2..45cd0b34d02 100644 --- a/src/components/ABDM/LinkAbhaNumber/index.tsx +++ b/src/components/ABDM/LinkAbhaNumber/index.tsx @@ -1,12 +1,14 @@ import { useState } from "react"; -import DialogModal from "@/components/Common/Dialog"; -import { AbhaNumberModel } from "../types/abha"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { classNames } from "../../../Utils/utils"; -import CreateWithAadhaar from "./CreateWithAadhaar"; import { useTranslation } from "react-i18next"; -import LinkWithOtp from "./LinkWithOtp"; -import LinkWithQr from "./LinkWithQr"; + +import CreateWithAadhaar from "@/components/ABDM/LinkAbhaNumber/CreateWithAadhaar"; +import LinkWithOtp from "@/components/ABDM/LinkAbhaNumber/LinkWithOtp"; +import LinkWithQr from "@/components/ABDM/LinkAbhaNumber/LinkWithQr"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; + +import { classNames } from "@/Utils/utils"; interface ILinkAbhaNumberProps { show: boolean; diff --git a/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts b/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts index 8107fff8370..79bc9ec71c6 100644 --- a/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts +++ b/src/components/ABDM/LinkAbhaNumber/useMultiStepForm.ts @@ -1,8 +1,8 @@ import { - cloneElement, Dispatch, ReactElement, SetStateAction, + cloneElement, useCallback, useMemo, useState, diff --git a/src/components/ABDM/types/abha.ts b/src/components/ABDM/types/abha.ts index d94549e2242..f189bd111cb 100644 --- a/src/components/ABDM/types/abha.ts +++ b/src/components/ABDM/types/abha.ts @@ -1,4 +1,4 @@ -import { PatientModel } from "../../Patient/models"; +import { PatientModel } from "@/components/Patient/models"; export type AbhaNumberModel = { id: number; diff --git a/src/components/ABDM/types/consent.ts b/src/components/ABDM/types/consent.ts index 9ca60c7bd99..a5041f5767d 100644 --- a/src/components/ABDM/types/consent.ts +++ b/src/components/ABDM/types/consent.ts @@ -1,5 +1,5 @@ -import { UserBaseModel } from "../../Users/models"; -import { AbhaNumberModel } from "./abha"; +import { AbhaNumberModel } from "@/components/ABDM/types/abha"; +import { UserBaseModel } from "@/components/Users/models"; export type ConsentPurpose = | "CAREMGT" diff --git a/src/components/Assets/AssetConfigure.tsx b/src/components/Assets/AssetConfigure.tsx index 9f04bddc321..d0d3e4f9420 100644 --- a/src/components/Assets/AssetConfigure.tsx +++ b/src/components/Assets/AssetConfigure.tsx @@ -1,9 +1,10 @@ +import HL7Monitor from "@/components/Assets/AssetType/HL7Monitor"; +import ConfigureCamera from "@/components/CameraFeed/ConfigureCamera"; import Loading from "@/components/Common/Loading"; -import HL7Monitor from "./AssetType/HL7Monitor"; -import ConfigureCamera from "../CameraFeed/ConfigureCamera"; -import Page from "@/components/Common/components/Page"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; +import Page from "@/components/Common/Page"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; interface AssetConfigureProps { assetId: string; diff --git a/src/components/Assets/AssetFilter.tsx b/src/components/Assets/AssetFilter.tsx index 8095b96389e..fda9d0cfdf2 100644 --- a/src/components/Assets/AssetFilter.tsx +++ b/src/components/Assets/AssetFilter.tsx @@ -1,19 +1,22 @@ -import { useState, useEffect } from "react"; +import dayjs from "dayjs"; import { useQueryParams } from "raviger"; +import { useEffect, useState } from "react"; + +import FiltersSlideover from "@/CAREUI/interactive/FiltersSlideover"; + +import { AssetClass } from "@/components/Assets/AssetTypes"; +import { DateRange } from "@/components/Common/DateRangeInputV2"; import { FacilitySelect } from "@/components/Common/FacilitySelect"; -import { FacilityModel } from "../Facility/models"; import { LocationSelect } from "@/components/Common/LocationSelect"; -import { AssetClass } from "./AssetTypes"; -import { FieldLabel } from "../Form/FormFields/FormField"; -import { SelectFormField } from "../Form/FormFields/SelectFormField"; -import FiltersSlideover from "../../CAREUI/interactive/FiltersSlideover"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; -import DateRangeFormField from "../Form/FormFields/DateRangeFormField"; -import dayjs from "dayjs"; -import { FieldChangeEvent } from "../Form/FormFields/Utils"; -import { DateRange } from "@/components/Common/DateRangeInputV2"; -import { dateQueryString } from "../../Utils/utils"; +import { FacilityModel } from "@/components/Facility/models"; +import DateRangeFormField from "@/components/Form/FormFields/DateRangeFormField"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import { SelectFormField } from "@/components/Form/FormFields/SelectFormField"; +import { FieldChangeEvent } from "@/components/Form/FormFields/Utils"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; +import { dateQueryString } from "@/Utils/utils"; const getDate = (value: any) => value && dayjs(value).isValid() && dayjs(value).toDate(); diff --git a/src/components/Assets/AssetImportModal.tsx b/src/components/Assets/AssetImportModal.tsx index 08fd4891078..beb0dd2c2c1 100644 --- a/src/components/Assets/AssetImportModal.tsx +++ b/src/components/Assets/AssetImportModal.tsx @@ -1,17 +1,20 @@ -import { lazy, useState } from "react"; -import { sleep } from "../../Utils/utils"; -import { FacilityModel } from "../Facility/models"; -import { AssetData } from "./AssetTypes"; -import * as Notification from "../../Utils/Notifications"; -import { Cancel } from "@/components/Common/components/ButtonV2"; +import careConfig from "@careConfig"; import { Link } from "raviger"; -import { AssetImportSchema } from "@/common/constants"; +import { lazy, useState } from "react"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import { Cancel } from "@/components/Common/ButtonV2"; import DialogModal from "@/components/Common/Dialog"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import { SelectFormField } from "../Form/FormFields/SelectFormField"; -import careConfig from "@careConfig"; -import request from "../../Utils/request/request"; +import { FacilityModel } from "@/components/Facility/models"; +import { SelectFormField } from "@/components/Form/FormFields/SelectFormField"; + +import { AssetImportSchema } from "@/common/constants"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { sleep } from "@/Utils/utils"; const ExcelFileDragAndDrop = lazy( () => import("@/components/Common/ExcelFIleDragAndDrop"), diff --git a/src/components/Assets/AssetManage.tsx b/src/components/Assets/AssetManage.tsx index 0ee4f107d40..b56cb908c42 100644 --- a/src/components/Assets/AssetManage.tsx +++ b/src/components/Assets/AssetManage.tsx @@ -1,36 +1,41 @@ -import { useState, useEffect, ReactElement } from "react"; +import dayjs from "dayjs"; +import QRCode from "qrcode.react"; +import { navigate } from "raviger"; +import { ReactElement, useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; + +import Chip from "@/CAREUI/display/Chip"; +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetServiceEditModal } from "@/components/Assets/AssetServiceEditModal"; import { AssetClass, - assetClassProps, AssetData, AssetService, AssetTransaction, -} from "./AssetTypes"; -import Pagination from "@/components/Common/Pagination"; -import { navigate } from "raviger"; -import QRCode from "qrcode.react"; -import AssetWarrantyCard from "./AssetWarrantyCard"; -import { formatDate, formatDateTime, formatName } from "../../Utils/utils"; -import Chip from "../../CAREUI/display/Chip"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { UserRole, USER_TYPES } from "@/common/constants"; + assetClassProps, +} from "@/components/Assets/AssetTypes"; +import AssetWarrantyCard from "@/components/Assets/AssetWarrantyCard"; +import { warrantyAmcValidityChip } from "@/components/Assets/AssetsList"; +import ButtonV2 from "@/components/Common/ButtonV2"; import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import RecordMeta from "../../CAREUI/display/RecordMeta"; -import { useTranslation } from "react-i18next"; import Loading from "@/components/Common/Loading"; -import * as Notification from "../../Utils/Notifications"; -import { NonReadOnlyUsers } from "../../Utils/AuthorizeFor"; -import Uptime from "@/components/Common/Uptime"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import dayjs from "dayjs"; +import Page from "@/components/Common/Page"; +import Pagination from "@/components/Common/Pagination"; import RelativeDateUserMention from "@/components/Common/RelativeDateUserMention"; -import { AssetServiceEditModal } from "./AssetServiceEditModal"; -import { warrantyAmcValidityChip } from "./AssetsList"; -import Page from "@/components/Common/components/Page"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; +import Uptime from "@/components/Common/Uptime"; + +import useAuthUser from "@/hooks/useAuthUser"; + +import { USER_TYPES, UserRole } from "@/common/constants"; + +import { NonReadOnlyUsers } from "@/Utils/AuthorizeFor"; +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { formatDate, formatDateTime, formatName } from "@/Utils/utils"; interface AssetManageProps { assetId: string; diff --git a/src/components/Assets/AssetServiceEditModal.tsx b/src/components/Assets/AssetServiceEditModal.tsx index fecea8ad124..b946ea03e31 100644 --- a/src/components/Assets/AssetServiceEditModal.tsx +++ b/src/components/Assets/AssetServiceEditModal.tsx @@ -1,19 +1,23 @@ -import { useEffect, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; -import ButtonV2, { - Cancel, - Submit, -} from "@/components/Common/components/ButtonV2"; -import DialogModal from "@/components/Common/Dialog"; -import { AssetData, AssetService, AssetServiceEdit } from "./AssetTypes"; import dayjs from "dayjs"; -import TextAreaFormField from "../Form/FormFields/TextAreaFormField"; -import { formatDate, formatDateTime } from "../../Utils/utils"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import DateFormField from "../Form/FormFields/DateFormField"; import { t } from "i18next"; +import { useEffect, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + AssetData, + AssetService, + AssetServiceEdit, +} from "@/components/Assets/AssetTypes"; +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; +import DateFormField from "@/components/Form/FormFields/DateFormField"; +import TextAreaFormField from "@/components/Form/FormFields/TextAreaFormField"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { formatDate, formatDateTime } from "@/Utils/utils"; export const AssetServiceEditModal = (props: { asset?: AssetData; diff --git a/src/components/Assets/AssetType/HL7Monitor.tsx b/src/components/Assets/AssetType/HL7Monitor.tsx index 43e968f33eb..76d761383bd 100644 --- a/src/components/Assets/AssetType/HL7Monitor.tsx +++ b/src/components/Assets/AssetType/HL7Monitor.tsx @@ -1,21 +1,30 @@ import { SyntheticEvent, useEffect, useState } from "react"; -import { AssetClass, AssetData, ResolvedMiddleware } from "../AssetTypes"; -import * as Notification from "../../../Utils/Notifications"; + +import Card from "@/CAREUI/display/Card"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { + AssetClass, + AssetData, + ResolvedMiddleware, +} from "@/components/Assets/AssetTypes"; +import { BedSelect } from "@/components/Common/BedSelect"; +import { Submit } from "@/components/Common/ButtonV2"; import Loading from "@/components/Common/Loading"; +import { BedModel } from "@/components/Facility/models"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import HL7PatientVitalsMonitor from "@/components/VitalsMonitor/HL7PatientVitalsMonitor"; +import VentilatorPatientVitalsMonitor from "@/components/VitalsMonitor/VentilatorPatientVitalsMonitor"; + +import useAuthUser from "@/hooks/useAuthUser"; + import { checkIfValidIP } from "@/common/validation"; -import Card from "../../../CAREUI/display/Card"; -import { Submit } from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; -import TextFormField from "../../Form/FormFields/TextFormField"; -import HL7PatientVitalsMonitor from "../../VitalsMonitor/HL7PatientVitalsMonitor"; -import VentilatorPatientVitalsMonitor from "../../VitalsMonitor/VentilatorPatientVitalsMonitor"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import request from "../../../Utils/request/request"; -import routes from "../../../Redux/api"; -import { BedModel } from "../../Facility/models"; -import useQuery from "../../../Utils/request/useQuery"; -import { FieldLabel } from "../../Form/FormFields/FormField"; -import { BedSelect } from "@/components/Common/BedSelect"; + +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; interface HL7MonitorProps { assetId: string; diff --git a/src/components/Assets/AssetTypes.tsx b/src/components/Assets/AssetTypes.tsx index 24f3f3e9352..14d1e40afe0 100644 --- a/src/components/Assets/AssetTypes.tsx +++ b/src/components/Assets/AssetTypes.tsx @@ -1,6 +1,7 @@ -import { BedModel } from "../Facility/models"; -import { IconName } from "../../CAREUI/icons/CareIcon"; -import { PatientModel } from "../Patient/models"; +import { IconName } from "@/CAREUI/icons/CareIcon"; + +import { BedModel } from "@/components/Facility/models"; +import { PatientModel } from "@/components/Patient/models"; import { UserBareMinimum } from "@/components/Users/models"; export enum AssetLocationType { diff --git a/src/components/Assets/AssetWarrantyCard.tsx b/src/components/Assets/AssetWarrantyCard.tsx index e26575f712b..ebaaca7e6c8 100644 --- a/src/components/Assets/AssetWarrantyCard.tsx +++ b/src/components/Assets/AssetWarrantyCard.tsx @@ -1,9 +1,12 @@ -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { AssetData } from "./AssetTypes"; -import { formatDate } from "../../Utils/utils"; -import CopyToClipboard from "react-copy-to-clipboard"; import { t } from "i18next"; import { useEffect, useState } from "react"; +import CopyToClipboard from "react-copy-to-clipboard"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; + +import { formatDate } from "@/Utils/utils"; export default function AssetWarrantyCard(props: { asset: AssetData }) { const { asset } = props; diff --git a/src/components/Assets/AssetsList.tsx b/src/components/Assets/AssetsList.tsx index 613b87e5ea5..eceee4887e8 100644 --- a/src/components/Assets/AssetsList.tsx +++ b/src/components/Assets/AssetsList.tsx @@ -1,30 +1,34 @@ import { IDetectedBarcode, Scanner } from "@yudiel/react-qr-scanner"; -import * as Notification from "../../Utils/Notifications"; -import { assetClassProps, AssetData } from "./AssetTypes"; -import { useState, useEffect } from "react"; import { Link, navigate } from "raviger"; -import AssetFilter from "./AssetFilter"; -import { parseQueryParams } from "../../Utils/primitives"; -import Chip from "../../CAREUI/display/Chip"; -import SearchInput from "../Form/SearchInput"; -import useFilters from "@/common/hooks/useFilters"; -import { FacilityModel } from "../Facility/models"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { useIsAuthorized } from "@/common/hooks/useIsAuthorized"; -import AuthorizeFor, { NonReadOnlyUsers } from "../../Utils/AuthorizeFor"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import FacilitiesSelectDialogue from "../ExternalResult/FacilitiesSelectDialogue"; -import ExportMenu from "@/components/Common/Export"; -import CountBlock from "../../CAREUI/display/Count"; -import AssetImportModal from "./AssetImportModal"; -import Page from "@/components/Common/components/Page"; -import { AdvancedFilterButton } from "../../CAREUI/interactive/FiltersSlideover"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; +import Chip from "@/CAREUI/display/Chip"; +import CountBlock from "@/CAREUI/display/Count"; +import CareIcon from "@/CAREUI/icons/CareIcon"; +import { AdvancedFilterButton } from "@/CAREUI/interactive/FiltersSlideover"; + +import AssetFilter from "@/components/Assets/AssetFilter"; +import AssetImportModal from "@/components/Assets/AssetImportModal"; +import { AssetData, assetClassProps } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import ExportMenu from "@/components/Common/Export"; import Loading from "@/components/Common/Loading"; +import Page from "@/components/Common/Page"; +import FacilitiesSelectDialogue from "@/components/ExternalResult/FacilitiesSelectDialogue"; +import { FacilityModel } from "@/components/Facility/models"; +import SearchInput from "@/components/Form/SearchInput"; + +import useFilters from "@/hooks/useFilters"; +import { useIsAuthorized } from "@/hooks/useIsAuthorized"; + +import AuthorizeFor, { NonReadOnlyUsers } from "@/Utils/AuthorizeFor"; +import * as Notification from "@/Utils/Notifications"; +import { parseQueryParams } from "@/Utils/primitives"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; + const AssetsList = () => { const { t } = useTranslation(); const { @@ -240,12 +244,19 @@ const AssetsList = () => { className="text-2xl" /> -

- {asset.name} -

+
+

+ {asset.name} +

+ {asset.name.length > 20 && ( + + {asset.name} + + )} +

diff --git a/src/components/Auth/Login.tsx b/src/components/Auth/Login.tsx index 403b133757f..bcf0d4e3415 100644 --- a/src/components/Auth/Login.tsx +++ b/src/components/Auth/Login.tsx @@ -1,22 +1,25 @@ +import careConfig from "@careConfig"; +import { Link } from "raviger"; import { useEffect, useState } from "react"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { useTranslation } from "react-i18next"; import ReCaptcha from "react-google-recaptcha"; -import * as Notification from "../../Utils/Notifications"; -import LegendInput from "../../CAREUI/interactive/LegendInput"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import LegendInput from "@/CAREUI/interactive/LegendInput"; + +import CircularProgress from "@/components/Common/CircularProgress"; import LanguageSelectorLogin from "@/components/Common/LanguageSelectorLogin"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import CircularProgress from "@/components/Common/components/CircularProgress"; -import ReactMarkdown from "react-markdown"; -import rehypeRaw from "rehype-raw"; -import { useAuthContext } from "@/common/hooks/useAuthUser"; -import FiltersCache from "../../Utils/FiltersCache"; -import { classNames } from "../../Utils/utils"; -import BrowserWarning from "../ErrorPages/BrowserWarning"; -import careConfig from "@careConfig"; +import BrowserWarning from "@/components/ErrorPages/BrowserWarning"; + +import { useAuthContext } from "@/hooks/useAuthUser"; -export const Login = (props: { forgot?: boolean }) => { +import FiltersCache from "@/Utils/FiltersCache"; +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import { classNames } from "@/Utils/utils"; + +const Login = (props: { forgot?: boolean }) => { const { signIn } = useAuthContext(); const { mainLogo, @@ -25,8 +28,8 @@ export const Login = (props: { forgot?: boolean }) => { stateLogo, customLogo, customLogoAlt, - customDescription, } = careConfig; + const customDescriptionHtml = __CUSTOM_DESCRIPTION_HTML__; const initForm: any = { username: "", password: "", @@ -190,14 +193,14 @@ export const Login = (props: { forgot?: boolean }) => {

{t("care")}

- {customDescription ? ( + {customDescriptionHtml ? (
- - {customDescription || t("goal")} - + dangerouslySetInnerHTML={{ + __html: __CUSTOM_DESCRIPTION_HTML__, + }} + />
) : (
@@ -247,14 +250,14 @@ export const Login = (props: { forgot?: boolean }) => { {t("contribute_github")} | - {t("third_party_software_licenses")} - +
@@ -417,3 +420,5 @@ export const Login = (props: { forgot?: boolean }) => { ); }; + +export default Login; diff --git a/src/components/Auth/ResetPassword.tsx b/src/components/Auth/ResetPassword.tsx index 15fc6cbac69..11b541e276c 100644 --- a/src/components/Auth/ResetPassword.tsx +++ b/src/components/Auth/ResetPassword.tsx @@ -1,16 +1,23 @@ -import { useEffect, useState } from "react"; -import request from "../../Utils/request/request"; -import * as Notification from "../../Utils/Notifications"; import { navigate } from "raviger"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { validateRule } from "@/components/Users/UserAdd"; + import { LocalStorageKeys } from "@/common/constants"; -import { Cancel, Submit } from "@/components/Common/components/ButtonV2"; -import TextFormField from "../Form/FormFields/TextFormField"; -import { validateRule } from "../Users/UserAdd"; import { validatePassword } from "@/common/validation"; -import routes from "../../Redux/api"; -export const ResetPassword = (props: any) => { +import * as Notification from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; + +interface ResetPasswordProps { + token: string; +} + +const ResetPassword = (props: ResetPasswordProps) => { const initForm: any = { password: "", confirm: "", @@ -128,18 +135,22 @@ export const ResetPassword = (props: any) => { {validateRule( form.password?.length >= 8, "Password should be atleast 8 characters long", + !form.password, )} {validateRule( form.password !== form.password.toUpperCase(), "Password should contain at least 1 lowercase letter", + !form.password, )} {validateRule( form.password !== form.password.toLowerCase(), "Password should contain at least 1 uppercase letter", + !form.password, )} {validateRule( /\d/.test(form.password), "Password should contain at least 1 number", + !form.password, )} )} @@ -154,9 +165,11 @@ export const ResetPassword = (props: any) => { /> {confirmPasswordInputInFocus && form.confirm.length > 0 && + form.password.length > 0 && validateRule( form.confirm === form.password, "Confirm password should match the entered password", + !form.password && form.password.length > 0, )}
@@ -169,3 +182,5 @@ export const ResetPassword = (props: any) => {
); }; + +export default ResetPassword; diff --git a/src/components/Auth/index.tsx b/src/components/Auth/index.tsx deleted file mode 100644 index 3713307768b..00000000000 --- a/src/components/Auth/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -export { Login } from "./Login"; -export { ResetPassword } from "./ResetPassword"; diff --git a/src/components/CameraFeed/CameraFeed.tsx b/src/components/CameraFeed/CameraFeed.tsx index daa237cd851..9646e0354bf 100644 --- a/src/components/CameraFeed/CameraFeed.tsx +++ b/src/components/CameraFeed/CameraFeed.tsx @@ -1,19 +1,27 @@ import { useCallback, useEffect, useRef, useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import useOperateCamera, { PTZPayload } from "./useOperateCamera"; -import { getStreamUrl } from "./utils"; -import { classNames, isIOS } from "../../Utils/utils"; -import FeedAlert, { FeedAlertState, StreamStatus } from "./FeedAlert"; -import FeedNetworkSignal from "./FeedNetworkSignal"; -import NoFeedAvailable from "./NoFeedAvailable"; -import FeedControls from "./FeedControls"; -import FeedWatermark from "./FeedWatermark"; -import useFullscreen from "@/common/hooks/useFullscreen"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; -import { GetPresetsResponse } from "./routes"; -import VideoPlayer from "./videoPlayer"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import FeedAlert, { + FeedAlertState, + StreamStatus, +} from "@/components/CameraFeed/FeedAlert"; +import FeedControls from "@/components/CameraFeed/FeedControls"; +import FeedNetworkSignal from "@/components/CameraFeed/FeedNetworkSignal"; +import FeedWatermark from "@/components/CameraFeed/FeedWatermark"; +import NoFeedAvailable from "@/components/CameraFeed/NoFeedAvailable"; +import { GetPresetsResponse } from "@/components/CameraFeed/routes"; +import useOperateCamera, { + PTZPayload, +} from "@/components/CameraFeed/useOperateCamera"; +import { getStreamUrl } from "@/components/CameraFeed/utils"; +import VideoPlayer from "@/components/CameraFeed/videoPlayer"; import AssetInfoPopover from "@/components/Common/AssetInfoPopover"; +import useBreakpoints from "@/hooks/useBreakpoints"; +import useFullscreen from "@/hooks/useFullscreen"; + +import { classNames, isIOS } from "@/Utils/utils"; + interface Props { children?: React.ReactNode; asset: AssetData; diff --git a/src/components/CameraFeed/CameraFeedWithBedPresets.tsx b/src/components/CameraFeed/CameraFeedWithBedPresets.tsx index 3e447e34e21..be43fe3f810 100644 --- a/src/components/CameraFeed/CameraFeedWithBedPresets.tsx +++ b/src/components/CameraFeed/CameraFeedWithBedPresets.tsx @@ -1,11 +1,13 @@ import { useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import CameraFeed from "./CameraFeed"; -import useQuery from "../../Utils/request/useQuery"; -import { CameraPresetDropdown } from "./CameraPresetSelect"; -import useOperateCamera from "./useOperateCamera"; -import { classNames } from "../../Utils/utils"; -import { CameraPreset, FeedRoutes } from "./routes"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import CameraFeed from "@/components/CameraFeed/CameraFeed"; +import { CameraPresetDropdown } from "@/components/CameraFeed/CameraPresetSelect"; +import { CameraPreset, FeedRoutes } from "@/components/CameraFeed/routes"; +import useOperateCamera from "@/components/CameraFeed/useOperateCamera"; + +import useQuery from "@/Utils/request/useQuery"; +import { classNames } from "@/Utils/utils"; interface Props { asset: AssetData; diff --git a/src/components/CameraFeed/CameraPresetSelect.tsx b/src/components/CameraFeed/CameraPresetSelect.tsx index 95b6d195688..7b21a236493 100644 --- a/src/components/CameraFeed/CameraPresetSelect.tsx +++ b/src/components/CameraFeed/CameraPresetSelect.tsx @@ -4,11 +4,14 @@ import { ListboxOption, ListboxOptions, } from "@headlessui/react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { dropdownOptionClassNames } from "../Form/MultiSelectMenuV2"; -import { CameraPreset } from "./routes"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { CameraPreset } from "@/components/CameraFeed/routes"; +import ButtonV2 from "@/components/Common/ButtonV2"; +import { dropdownOptionClassNames } from "@/components/Form/MultiSelectMenuV2"; + +import { classNames } from "@/Utils/utils"; interface Props { disabled?: boolean; diff --git a/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx b/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx index 837a351fff5..ee91ccd7fea 100644 --- a/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx +++ b/src/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters.tsx @@ -4,14 +4,17 @@ import { PopoverPanel, Transition, } from "@headlessui/react"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import { FieldLabel } from "../../Form/FormFields/FormField"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; import { LocationSelect } from "@/components/Common/LocationSelect"; import Pagination from "@/components/Common/Pagination"; -import useFilters from "@/common/hooks/useFilters"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; -import useSlug from "@/common/hooks/useSlug"; -import { useTranslation } from "react-i18next"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; + +import useFilters from "@/hooks/useFilters"; +import useSlug from "@/hooks/useSlug"; interface Props { perPageLimit: number; diff --git a/src/components/CameraFeed/CentralLiveMonitoring/index.tsx b/src/components/CameraFeed/CentralLiveMonitoring/index.tsx index 987289ef74d..4a65480054d 100644 --- a/src/components/CameraFeed/CentralLiveMonitoring/index.tsx +++ b/src/components/CameraFeed/CentralLiveMonitoring/index.tsx @@ -1,14 +1,18 @@ +import { useQueryParams } from "raviger"; import { useState } from "react"; + +import Fullscreen from "@/CAREUI/misc/Fullscreen"; + +import LocationFeedTile from "@/components/CameraFeed/CameraFeedWithBedPresets"; +import LiveMonitoringFilters from "@/components/CameraFeed/CentralLiveMonitoring/LiveMonitoringFilters"; +import StillWatching from "@/components/CameraFeed/StillWatching"; import Loading from "@/components/Common/Loading"; -import Page from "@/components/Common/components/Page"; -import useQuery from "../../../Utils/request/useQuery"; -import routes from "../../../Redux/api"; -import LocationFeedTile from "../CameraFeedWithBedPresets"; -import Fullscreen from "../../../CAREUI/misc/Fullscreen"; -import useBreakpoints from "@/common/hooks/useBreakpoints"; -import { useQueryParams } from "raviger"; -import LiveMonitoringFilters from "./LiveMonitoringFilters"; -import StillWatching from "../StillWatching"; +import Page from "@/components/Common/Page"; + +import useBreakpoints from "@/hooks/useBreakpoints"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; export default function CentralLiveMonitoring(props: { facilityId: string }) { const [isFullscreen, setFullscreen] = useState(false); diff --git a/src/components/CameraFeed/ConfigureCamera.tsx b/src/components/CameraFeed/ConfigureCamera.tsx index c0cb19e6a23..f969ed2b0ca 100644 --- a/src/components/CameraFeed/ConfigureCamera.tsx +++ b/src/components/CameraFeed/ConfigureCamera.tsx @@ -1,37 +1,43 @@ -import { useEffect, useState } from "react"; -import { AssetData } from "../Assets/AssetTypes"; -import { getCameraConfig, makeAccessKey } from "../../Utils/transformUtils"; -import TextFormField from "../Form/FormFields/TextFormField"; -import ButtonV2, { - Cancel, - Submit, -} from "@/components/Common/components/ButtonV2"; -import useAuthUser from "@/common/hooks/useAuthUser"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useOperateCamera from "./useOperateCamera"; -import CameraFeed from "./CameraFeed"; -import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { Error, Success } from "../../Utils/Notifications"; -import { useQueryParams } from "raviger"; -import useQuery from "../../Utils/request/useQuery"; -import { classNames, compareBy } from "../../Utils/utils"; -import RecordMeta from "../../CAREUI/display/RecordMeta"; -import { CameraPreset, FeedRoutes, GetStatusResponse } from "./routes"; -import DialogModal from "@/components/Common/Dialog"; import { Listbox, ListboxButton, ListboxOption, ListboxOptions, } from "@headlessui/react"; -import { dropdownOptionClassNames } from "../Form/MultiSelectMenuV2"; -import Loading from "@/components/Common/Loading"; +import { useQueryParams } from "raviger"; +import { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; + +import RecordMeta from "@/CAREUI/display/RecordMeta"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import CameraFeed from "@/components/CameraFeed/CameraFeed"; +import { + CameraPreset, + FeedRoutes, + GetStatusResponse, +} from "@/components/CameraFeed/routes"; +import useOperateCamera from "@/components/CameraFeed/useOperateCamera"; +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import { FieldLabel } from "../Form/FormFields/FormField"; +import DialogModal from "@/components/Common/Dialog"; +import Loading from "@/components/Common/Loading"; +import CheckBoxFormField from "@/components/Form/FormFields/CheckBoxFormField"; +import { FieldLabel } from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; +import { dropdownOptionClassNames } from "@/components/Form/MultiSelectMenuV2"; + +import useAuthUser from "@/hooks/useAuthUser"; + import { checkIfValidIP } from "@/common/validation"; -import CheckBoxFormField from "../Form/FormFields/CheckBoxFormField"; + +import { Error, Success } from "@/Utils/Notifications"; +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; +import useQuery from "@/Utils/request/useQuery"; +import { getCameraConfig, makeAccessKey } from "@/Utils/transformUtils"; +import { classNames, compareBy } from "@/Utils/utils"; interface Props { asset: AssetData; diff --git a/src/components/CameraFeed/FeedAlert.tsx b/src/components/CameraFeed/FeedAlert.tsx index 86c5468decf..5c42677611f 100644 --- a/src/components/CameraFeed/FeedAlert.tsx +++ b/src/components/CameraFeed/FeedAlert.tsx @@ -1,7 +1,10 @@ import { Transition } from "@headlessui/react"; import { useEffect, useState } from "react"; -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + export type StreamStatus = "playing" | "stop" | "loading" | "offline"; export type FeedAlertState = diff --git a/src/components/CameraFeed/FeedButton.tsx b/src/components/CameraFeed/FeedButton.tsx index e2ae2a8fe9e..c5d591955d9 100644 --- a/src/components/CameraFeed/FeedButton.tsx +++ b/src/components/CameraFeed/FeedButton.tsx @@ -1,5 +1,6 @@ -import KeyboardShortcut from "../../CAREUI/interactive/KeyboardShortcut"; -import { classNames } from "../../Utils/utils"; +import KeyboardShortcut from "@/CAREUI/interactive/KeyboardShortcut"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/components/CameraFeed/FeedControls.tsx b/src/components/CameraFeed/FeedControls.tsx index 36d3aa96cd2..4b7add78a1d 100644 --- a/src/components/CameraFeed/FeedControls.tsx +++ b/src/components/CameraFeed/FeedControls.tsx @@ -1,8 +1,11 @@ import { useState } from "react"; -import FeedButton from "./FeedButton"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { PTZPayload } from "./useOperateCamera"; -import { isAppleDevice } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import FeedButton from "@/components/CameraFeed/FeedButton"; +import { PTZPayload } from "@/components/CameraFeed/useOperateCamera"; + +import { isAppleDevice } from "@/Utils/utils"; const Actions = { UP: 1 << 0, diff --git a/src/components/CameraFeed/FeedNetworkSignal.tsx b/src/components/CameraFeed/FeedNetworkSignal.tsx index 4b1e6c7fbe3..bb187ca8167 100644 --- a/src/components/CameraFeed/FeedNetworkSignal.tsx +++ b/src/components/CameraFeed/FeedNetworkSignal.tsx @@ -1,7 +1,9 @@ import { useEffect, useState } from "react"; -import { calculateVideoDelay } from "./utils"; -import NetworkSignal from "../../CAREUI/display/NetworkSignal"; -import { StreamStatus } from "./FeedAlert"; + +import NetworkSignal from "@/CAREUI/display/NetworkSignal"; + +import { StreamStatus } from "@/components/CameraFeed/FeedAlert"; +import { calculateVideoDelay } from "@/components/CameraFeed/utils"; interface Props { playerRef: React.RefObject; diff --git a/src/components/CameraFeed/FeedWatermark.tsx b/src/components/CameraFeed/FeedWatermark.tsx index f71bab24ac6..eb129b7db72 100644 --- a/src/components/CameraFeed/FeedWatermark.tsx +++ b/src/components/CameraFeed/FeedWatermark.tsx @@ -1,5 +1,6 @@ import { useEffect, useRef } from "react"; -import useAuthUser from "@/common/hooks/useAuthUser"; + +import useAuthUser from "@/hooks/useAuthUser"; export default function FeedWatermark() { const me = useAuthUser(); diff --git a/src/components/CameraFeed/NoFeedAvailable.tsx b/src/components/CameraFeed/NoFeedAvailable.tsx index 05e07327458..ae70f7abbc0 100644 --- a/src/components/CameraFeed/NoFeedAvailable.tsx +++ b/src/components/CameraFeed/NoFeedAvailable.tsx @@ -1,7 +1,9 @@ -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import { classNames } from "../../Utils/utils"; -import { AssetData } from "../Assets/AssetTypes"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import { AssetData } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; + +import { classNames } from "@/Utils/utils"; interface Props { className?: string; diff --git a/src/components/CameraFeed/StillWatching.tsx b/src/components/CameraFeed/StillWatching.tsx index 8993d0344d7..b9c565ccd8a 100644 --- a/src/components/CameraFeed/StillWatching.tsx +++ b/src/components/CameraFeed/StillWatching.tsx @@ -1,10 +1,13 @@ +import careConfig from "@careConfig"; import { useEffect, useState } from "react"; -import ConfirmDialog from "@/components/Common/ConfirmDialog"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; import { useTranslation } from "react-i18next"; -import { useTimer } from "../../Utils/useTimer"; -import careConfig from "@careConfig"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; +import ConfirmDialog from "@/components/Common/ConfirmDialog"; + +import { useTimer } from "@/hooks/useTimer"; type State = "watching" | "prompted" | "timed-out"; diff --git a/src/components/CameraFeed/routes.ts b/src/components/CameraFeed/routes.ts index bffcb0fc9b0..e5a0ef72491 100644 --- a/src/components/CameraFeed/routes.ts +++ b/src/components/CameraFeed/routes.ts @@ -1,10 +1,13 @@ -import { OperationAction, PTZPayload } from "./useOperateCamera"; - -import { AssetBedModel } from "../Assets/AssetTypes"; -import { PaginatedResponse } from "../../Utils/request/types"; -import { Type } from "../../Redux/api"; +import { AssetBedModel } from "@/components/Assets/AssetTypes"; +import { + OperationAction, + PTZPayload, +} from "@/components/CameraFeed/useOperateCamera"; import { UserBareMinimum } from "@/components/Users/models"; -import { WritableOnly } from "../../Utils/types"; + +import { Type } from "@/Utils/request/api"; +import { PaginatedResponse } from "@/Utils/request/types"; +import { WritableOnly } from "@/Utils/types"; export type GetStatusResponse = { result: { diff --git a/src/components/CameraFeed/useOperateCamera.ts b/src/components/CameraFeed/useOperateCamera.ts index 0e65fb0130c..6fcc2436ac3 100644 --- a/src/components/CameraFeed/useOperateCamera.ts +++ b/src/components/CameraFeed/useOperateCamera.ts @@ -1,6 +1,8 @@ import { useState } from "react"; -import request from "../../Utils/request/request"; -import { FeedRoutes } from "./routes"; + +import { FeedRoutes } from "@/components/CameraFeed/routes"; + +import request from "@/Utils/request/request"; export interface PTZPayload { x: number; diff --git a/src/components/CameraFeed/utils.ts b/src/components/CameraFeed/utils.ts index 1cb721ebcc3..e13934c301b 100644 --- a/src/components/CameraFeed/utils.ts +++ b/src/components/CameraFeed/utils.ts @@ -1,6 +1,8 @@ import { MutableRefObject } from "react"; -import { AssetClass, AssetData } from "../Assets/AssetTypes"; -import { getCameraConfig } from "../../Utils/transformUtils"; + +import { AssetClass, AssetData } from "@/components/Assets/AssetTypes"; + +import { getCameraConfig } from "@/Utils/transformUtils"; export const calculateVideoDelay = ( ref: MutableRefObject, diff --git a/src/components/Common/components/AccordionV2.tsx b/src/components/Common/AccordionV2.tsx similarity index 100% rename from src/components/Common/components/AccordionV2.tsx rename to src/components/Common/AccordionV2.tsx diff --git a/src/components/Common/AssetInfoPopover.tsx b/src/components/Common/AssetInfoPopover.tsx index 986bed795c9..034073f473d 100644 --- a/src/components/Common/AssetInfoPopover.tsx +++ b/src/components/Common/AssetInfoPopover.tsx @@ -1,14 +1,16 @@ -import CareIcon from "../../CAREUI/icons/CareIcon"; -import { AssetData, assetClassProps } from "../Assets/AssetTypes"; -import ButtonV2 from "./components/ButtonV2"; -import { navigate } from "raviger"; -import { useTranslation } from "react-i18next"; import { Popover, PopoverButton, PopoverPanel, Transition, } from "@headlessui/react"; +import { navigate } from "raviger"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { AssetData, assetClassProps } from "@/components/Assets/AssetTypes"; +import ButtonV2 from "@/components/Common/ButtonV2"; interface AssetInfoPopoverProps { asset?: AssetData; diff --git a/src/components/Common/AssetSelect.tsx b/src/components/Common/AssetSelect.tsx index 0db7b46b67c..b1feb8fc839 100644 --- a/src/components/Common/AssetSelect.tsx +++ b/src/components/Common/AssetSelect.tsx @@ -1,7 +1,9 @@ import { useCallback } from "react"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; -import routes from "../../Redux/api"; -import request from "../../Utils/request/request"; + +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface AssetSelectProps { name: string; diff --git a/src/components/Common/Avatar.tsx b/src/components/Common/Avatar.tsx index 7a7ded17265..2c463fa093b 100644 --- a/src/components/Common/Avatar.tsx +++ b/src/components/Common/Avatar.tsx @@ -1,6 +1,7 @@ -import { cn } from "@/lib/utils"; import React from "react"; +import { cn } from "@/lib/utils"; + const colors: string[] = [ "#E6F3FF", // Light Blue "#FFF0E6", // Light Peach diff --git a/src/components/Common/AvatarEditModal.tsx b/src/components/Common/AvatarEditModal.tsx index 8884b62e3c2..38b54b1f1d2 100644 --- a/src/components/Common/AvatarEditModal.tsx +++ b/src/components/Common/AvatarEditModal.tsx @@ -1,17 +1,21 @@ import React, { - useState, ChangeEventHandler, useCallback, useEffect, useRef, + useState, } from "react"; -import { Warn } from "@/Utils/Notifications"; -import useDragAndDrop from "@/Utils/useDragAndDrop"; -import ButtonV2, { Cancel, Submit } from "./components/ButtonV2"; +import { useTranslation } from "react-i18next"; import Webcam from "react-webcam"; + import CareIcon from "@/CAREUI/icons/CareIcon"; -import { useTranslation } from "react-i18next"; -import DialogModal from "./Dialog"; + +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; + +import useDragAndDrop from "@/hooks/useDragAndDrop"; + +import { Warn } from "@/Utils/Notifications"; interface Props { title: string; diff --git a/src/components/Common/AvatarEditable.tsx b/src/components/Common/AvatarEditable.tsx index f8c0f4885bb..bbf3ab6c35f 100644 --- a/src/components/Common/AvatarEditable.tsx +++ b/src/components/Common/AvatarEditable.tsx @@ -1,7 +1,10 @@ -import CareIcon from "@/CAREUI/icons/CareIcon"; -import { cn } from "@/lib/utils"; import { useTranslation } from "react-i18next"; -import { AvatarProps, Avatar } from "@/components/Common/Avatar"; + +import { cn } from "@/lib/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { Avatar, AvatarProps } from "@/components/Common/Avatar"; interface AvatarEditableProps extends AvatarProps { id?: string; diff --git a/src/components/Common/BedSelect.tsx b/src/components/Common/BedSelect.tsx index 7ed741061ee..741049e7d74 100644 --- a/src/components/Common/BedSelect.tsx +++ b/src/components/Common/BedSelect.tsx @@ -1,10 +1,12 @@ import { useCallback } from "react"; -import { BedModel } from "../Facility/models"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; import { useTranslation } from "react-i18next"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import { AssetClass } from "../Assets/AssetTypes"; + +import { AssetClass } from "@/components/Assets/AssetTypes"; +import { BedModel } from "@/components/Facility/models"; +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface BedSelectProps { name: string; diff --git a/src/components/Common/BloodPressureFormField.tsx b/src/components/Common/BloodPressureFormField.tsx index beddd34cf38..77ef37fe5d7 100644 --- a/src/components/Common/BloodPressureFormField.tsx +++ b/src/components/Common/BloodPressureFormField.tsx @@ -1,13 +1,14 @@ import { useTranslation } from "react-i18next"; -import { FieldValidator } from "../Form/FieldValidators"; -import FormField from "../Form/FormFields/FormField"; + +import { FieldValidator } from "@/components/Form/FieldValidators"; +import FormField from "@/components/Form/FormFields/FormField"; +import TextFormField from "@/components/Form/FormFields/TextFormField"; import { FieldChangeEvent, FormFieldBaseProps, useFormFieldPropsResolver, -} from "../Form/FormFields/Utils"; -import { BloodPressure } from "../Patient/models"; -import TextFormField from "../Form/FormFields/TextFormField"; +} from "@/components/Form/FormFields/Utils"; +import { BloodPressure } from "@/components/Patient/models"; type Props = FormFieldBaseProps; diff --git a/src/components/Common/Breadcrumbs.tsx b/src/components/Common/Breadcrumbs.tsx index 4ccbbfd717e..410df597a5d 100644 --- a/src/components/Common/Breadcrumbs.tsx +++ b/src/components/Common/Breadcrumbs.tsx @@ -1,9 +1,13 @@ -import { usePath, Link } from "raviger"; +import { Link, usePath } from "raviger"; import { useState } from "react"; -import { classNames } from "../../Utils/utils"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + import { Button } from "@/components/ui/button"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useAppHistory from "@/common/hooks/useAppHistory"; + +import useAppHistory from "@/hooks/useAppHistory"; + +import { classNames } from "@/Utils/utils"; const MENU_TAGS: { [key: string]: string } = { facility: "Facilities", diff --git a/src/components/Common/components/ButtonV2.tsx b/src/components/Common/ButtonV2.tsx similarity index 96% rename from src/components/Common/components/ButtonV2.tsx rename to src/components/Common/ButtonV2.tsx index b7eab5f29d7..11b6aa95d20 100644 --- a/src/components/Common/components/ButtonV2.tsx +++ b/src/components/Common/ButtonV2.tsx @@ -1,11 +1,14 @@ -import AuthorizedChild from "../../../CAREUI/misc/AuthorizedChild"; -import { AuthorizedElementProps } from "../../../Utils/AuthorizeFor"; -import CareIcon from "../../../CAREUI/icons/CareIcon"; import { Link } from "raviger"; -import { classNames } from "../../../Utils/utils"; -import { useTranslation } from "react-i18next"; import { useEffect, useState } from "react"; -import Spinner from "../Spinner"; +import { useTranslation } from "react-i18next"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; +import AuthorizedChild from "@/CAREUI/misc/AuthorizedChild"; + +import Spinner from "@/components/Common/Spinner"; + +import { AuthorizedElementProps } from "@/Utils/AuthorizeFor"; +import { classNames } from "@/Utils/utils"; export type ButtonSize = "small" | "default" | "large"; export type ButtonShape = "square" | "circle"; diff --git a/src/components/Common/components/CircularProgress.tsx b/src/components/Common/CircularProgress.tsx similarity index 100% rename from src/components/Common/components/CircularProgress.tsx rename to src/components/Common/CircularProgress.tsx diff --git a/src/components/Common/components/CollapseV2.tsx b/src/components/Common/CollapseV2.tsx similarity index 100% rename from src/components/Common/components/CollapseV2.tsx rename to src/components/Common/CollapseV2.tsx diff --git a/src/components/Common/ConfirmDialog.tsx b/src/components/Common/ConfirmDialog.tsx index a6bc14e8d4f..0183fc1d651 100644 --- a/src/components/Common/ConfirmDialog.tsx +++ b/src/components/Common/ConfirmDialog.tsx @@ -1,5 +1,5 @@ -import DialogModal from "./Dialog"; -import { ButtonVariant, Cancel, Submit } from "./components/ButtonV2"; +import { ButtonVariant, Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; type ConfirmDialogProps = { className?: string; diff --git a/src/components/Common/components/ContactLink.tsx b/src/components/Common/ContactLink.tsx similarity index 91% rename from src/components/Common/components/ContactLink.tsx rename to src/components/Common/ContactLink.tsx index ee834b3f2a9..c8115b42a1f 100644 --- a/src/components/Common/components/ContactLink.tsx +++ b/src/components/Common/ContactLink.tsx @@ -1,4 +1,4 @@ -import CareIcon from "../../../CAREUI/icons/CareIcon"; +import CareIcon from "@/CAREUI/icons/CareIcon"; type ContactLinkProps = | { mailto: string; tel?: undefined } diff --git a/src/components/Common/DateInputV2.tsx b/src/components/Common/DateInputV2.tsx index 87a29debe5b..e72639700fc 100644 --- a/src/components/Common/DateInputV2.tsx +++ b/src/components/Common/DateInputV2.tsx @@ -1,12 +1,14 @@ -import { MutableRefObject, useEffect, useRef, useState } from "react"; - -import CareIcon from "../../CAREUI/icons/CareIcon"; import { Popover, PopoverButton, PopoverPanel } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; -import dayjs from "../../Utils/dayjs"; -import * as Notification from "../../Utils/Notifications"; import { t } from "i18next"; -import DateTextInput from "./DateTextInput"; +import { MutableRefObject, useEffect, useRef, useState } from "react"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import DateTextInput from "@/components/Common/DateTextInput"; + +import * as Notification from "@/Utils/Notifications"; +import dayjs from "@/Utils/dayjs"; +import { classNames } from "@/Utils/utils"; type DatePickerType = "date" | "month" | "year"; @@ -190,6 +192,16 @@ const DateInputV2: React.FC = ({ year = datePickerHeaderDate.getFullYear(), ) => { const date = new Date(year, month, day); + if ( + min && + max && + min.getDate() === max.getDate() && + day === min.getDate() && + month === min.getMonth() && + year === min.getFullYear() + ) { + return true; + } if (min) if (date < min) return false; if (max) if (date > max) return false; return true; diff --git a/src/components/Common/DateRangeInputV2.tsx b/src/components/Common/DateRangeInputV2.tsx index aa426ad0cb2..d3f57e59884 100644 --- a/src/components/Common/DateRangeInputV2.tsx +++ b/src/components/Common/DateRangeInputV2.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; -import DateInputV2 from "./DateInputV2"; + +import DateInputV2 from "@/components/Common/DateInputV2"; export type DateRange = { start: Date | undefined; diff --git a/src/components/Common/DateTextInput.tsx b/src/components/Common/DateTextInput.tsx index 38e13b23283..f2cd4844a1c 100644 --- a/src/components/Common/DateTextInput.tsx +++ b/src/components/Common/DateTextInput.tsx @@ -1,8 +1,10 @@ -import CareIcon from "@/CAREUI/icons/CareIcon"; -import { classNames } from "@/Utils/utils"; import dayjs from "dayjs"; import { Fragment, KeyboardEvent, useEffect, useState } from "react"; +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { classNames } from "@/Utils/utils"; + /** * DateTextInput component. * diff --git a/src/components/Common/Dialog.tsx b/src/components/Common/Dialog.tsx index 07722daf793..a67981dd3f8 100644 --- a/src/components/Common/Dialog.tsx +++ b/src/components/Common/Dialog.tsx @@ -5,7 +5,8 @@ import { Transition, TransitionChild, } from "@headlessui/react"; -import { classNames } from "../../Utils/utils"; + +import { classNames } from "@/Utils/utils"; type DialogProps = { title: React.ReactNode; diff --git a/src/components/Common/DistrictAutocompleteFormField.tsx b/src/components/Common/DistrictAutocompleteFormField.tsx index 25fef151f2a..91f1c9389f8 100644 --- a/src/components/Common/DistrictAutocompleteFormField.tsx +++ b/src/components/Common/DistrictAutocompleteFormField.tsx @@ -1,8 +1,9 @@ -import { FormFieldBaseProps } from "../Form/FormFields/Utils"; -import AutocompleteFormField from "../Form/FormFields/Autocomplete"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import { DistrictModel, StateModel } from "../Facility/models"; +import { DistrictModel, StateModel } from "@/components/Facility/models"; +import AutocompleteFormField from "@/components/Form/FormFields/Autocomplete"; +import { FormFieldBaseProps } from "@/components/Form/FormFields/Utils"; + +import routes from "@/Utils/request/api"; +import useQuery from "@/Utils/request/useQuery"; type Props = FormFieldBaseProps & { placeholder?: string; diff --git a/src/components/Common/ExcelFIleDragAndDrop.tsx b/src/components/Common/ExcelFIleDragAndDrop.tsx index d79cab62d34..67c64f0f433 100644 --- a/src/components/Common/ExcelFIleDragAndDrop.tsx +++ b/src/components/Common/ExcelFIleDragAndDrop.tsx @@ -1,18 +1,23 @@ import { forIn } from "lodash-es"; import { useEffect, useRef, useState } from "react"; -import * as Notification from "../../Utils/Notifications"; import { useTranslation } from "react-i18next"; -import { Cancel, Submit } from "./components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useDragAndDrop from "../../Utils/useDragAndDrop"; -import ExcelViewer from "./ExcelViewer"; import * as XLSX from "xlsx"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import { Cancel, Submit } from "@/components/Common/ButtonV2"; +import ExcelViewer from "@/components/Common/ExcelViewer"; + +import useDragAndDrop from "@/hooks/useDragAndDrop"; + import schemaParser, { - SchemaType, ErrorData, ParsedData, + SchemaType, } from "@/common/schemaParser"; +import * as Notification from "@/Utils/Notifications"; + interface Props { handleSubmit: (data: any) => void; loading: boolean; diff --git a/src/components/Common/ExcelViewer.tsx b/src/components/Common/ExcelViewer.tsx index 4705d23c733..d35c98a6cc8 100644 --- a/src/components/Common/ExcelViewer.tsx +++ b/src/components/Common/ExcelViewer.tsx @@ -1,8 +1,11 @@ import { ReactNode, useEffect, useState } from "react"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import ButtonV2, { Cancel, Submit } from "./components/ButtonV2"; -import DialogModal from "./Dialog"; -import Pagination from "./Pagination"; + +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { Cancel, Submit } from "@/components/Common/ButtonV2"; +import DialogModal from "@/components/Common/Dialog"; +import Pagination from "@/components/Common/Pagination"; + import { ParsedData } from "@/common/schemaParser"; type FilePreviewProps = { diff --git a/src/components/Common/Export.tsx b/src/components/Common/Export.tsx index c34e3f6b5d9..6cd786977ed 100644 --- a/src/components/Common/Export.tsx +++ b/src/components/Common/Export.tsx @@ -1,13 +1,15 @@ +import CareIcon from "@/CAREUI/icons/CareIcon"; + +import ButtonV2 from "@/components/Common/ButtonV2"; import DropdownMenu, { DropdownItem, DropdownItemProps, -} from "@/components/Common/components/Menu"; +} from "@/components/Common/Menu"; + +import useExport from "@/hooks/useExport"; -import ButtonV2 from "@/components/Common/components/ButtonV2"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import useExport from "@/common/hooks/useExport"; -import { Route } from "../../Utils/request/types"; -import request from "../../Utils/request/request"; +import request from "@/Utils/request/request"; +import { Route } from "@/Utils/request/types"; interface ExportItem { options?: DropdownItemProps; diff --git a/src/components/Common/FacilitySelect.tsx b/src/components/Common/FacilitySelect.tsx index d91b9a7f8fc..e4397cbcb9c 100644 --- a/src/components/Common/FacilitySelect.tsx +++ b/src/components/Common/FacilitySelect.tsx @@ -1,9 +1,11 @@ -import { useCallback } from "react"; -import AutoCompleteAsync from "../Form/AutoCompleteAsync"; -import { FacilityModel } from "../Facility/models"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; import { t } from "i18next"; +import { useCallback } from "react"; + +import { FacilityModel } from "@/components/Facility/models"; +import AutoCompleteAsync from "@/components/Form/AutoCompleteAsync"; + +import routes from "@/Utils/request/api"; +import request from "@/Utils/request/request"; interface FacilitySelectProps { name: string; diff --git a/src/components/Common/FilePreviewDialog.tsx b/src/components/Common/FilePreviewDialog.tsx index 13768a0cf04..4b7a07bd0cd 100644 --- a/src/components/Common/FilePreviewDialog.tsx +++ b/src/components/Common/FilePreviewDialog.tsx @@ -1,11 +1,21 @@ -import CircularProgress from "./components/CircularProgress"; +import { + Dispatch, + ReactNode, + SetStateAction, + Suspense, + lazy, + useState, +} from "react"; import { useTranslation } from "react-i18next"; -import { StateInterface } from "../Files/FileUpload"; -import { Dispatch, ReactNode, SetStateAction, useState } from "react"; -import CareIcon, { IconName } from "../../CAREUI/icons/CareIcon"; -import ButtonV2, { Cancel } from "./components/ButtonV2"; -import DialogModal from "./Dialog"; -import PDFViewer from "./PDFViewer"; + +import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon"; + +import ButtonV2, { Cancel } from "@/components/Common/ButtonV2"; +import CircularProgress from "@/components/Common/CircularProgress"; +import DialogModal from "@/components/Common/Dialog"; +import { StateInterface } from "@/components/Files/FileUpload"; + +const PDFViewer = lazy(() => import("@/components/Common/PDFViewer")); export const zoom_values = [ "scale-25", @@ -135,14 +145,16 @@ const FilePreviewDialog = (props: FilePreviewProps) => { } ${getRotationClass(file_state.rotation)}`} /> ) : file_state.extension === "pdf" ? ( - { - setPage(1); - setNumPages(numPages); - }} - pageNumber={page} - /> + }> + { + setPage(1); + setNumPages(numPages); + }} + pageNumber={page} + /> + ) : previewExtensions.includes(file_state.extension) ? (