;
+}
+
diff --git a/inji-web/src/components/DataShare/DataShareDisclaimer.tsx b/inji-web/src/components/DataShare/DataShareDisclaimer.tsx
new file mode 100644
index 00000000..da0296b0
--- /dev/null
+++ b/inji-web/src/components/DataShare/DataShareDisclaimer.tsx
@@ -0,0 +1,9 @@
+import React from "react";
+import {DSDisclaimerProps} from "../../types/components";
+
+export const DataShareDisclaimer:React.FC = (props) => {
+ return
+
{props.content}
+
;
+}
+
diff --git a/inji-web/src/components/DataShare/DataShareFooter.tsx b/inji-web/src/components/DataShare/DataShareFooter.tsx
new file mode 100644
index 00000000..7f8bf510
--- /dev/null
+++ b/inji-web/src/components/DataShare/DataShareFooter.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+import {DSFooterProps} from "../../types/components";
+
+export const DataShareFooter:React.FC = (props) => {
+ return
+
+
+
;
+}
+
+
diff --git a/inji-web/src/components/DataShare/DataShareHeader.tsx b/inji-web/src/components/DataShare/DataShareHeader.tsx
new file mode 100644
index 00000000..21b857c0
--- /dev/null
+++ b/inji-web/src/components/DataShare/DataShareHeader.tsx
@@ -0,0 +1,12 @@
+import React from "react";
+import {DSHeaderProps} from "../../types/components";
+
+export const DataShareHeader:React.FC = (props) => {
+ return
+
+
{props.title}
+
{props.subTitle}
+
+
;
+}
+
diff --git a/inji-web/src/index.css b/inji-web/src/index.css
index c08f8de1..7d8162f5 100644
--- a/inji-web/src/index.css
+++ b/inji-web/src/index.css
@@ -34,6 +34,15 @@
--iw-color-shieldSuccessShadow: #f1f7ee;
--iw-color-shieldErrorShadow: #FEF2F2;
--iw-color-shieldLoadingShadow: #f6dfbe;
+ --iw-color-backDrop: #000000;
+ --iw-color-borderDark: #717171;
+ --iw-color-borderLight: #E8EBEC;
+ --iw-color-arrowDown: #164EA840;
+ --iw-color-hoverBackGround: #164EA840;
+ --iw-color-text: #FFFFFF;
+ --iw-color-subText: #A0A8AC;
+ --iw-color-disclaimerBackGround: #FFF7E5;
+ --iw-color-disclaimerText: #8B6105;
}
[class="purple_theme"] {
--iw-font-base: "Gentium Plus", serif;
@@ -62,6 +71,15 @@
--iw-color-shieldSuccessShadow: #f1f7ee;
--iw-color-shieldErrorShadow: #FEF2F2;
--iw-color-shieldLoadingShadow: #f6dfbe;
+ --iw-color-backDrop: #000000;
+ --iw-color-borderDark: #717171;
+ --iw-color-borderLight: #E8EBEC;
+ --iw-color-arrowDown: #164EA840;
+ --iw-color-hoverBackGround: #164EA840;
+ --iw-color-text: #FFFFFF;
+ --iw-color-subText: #A0A8AC;
+ --iw-color-disclaimerBackGround: #FFF7E5;
+ --iw-color-disclaimerText: #8B6105;
}
}
diff --git a/inji-web/src/locales/ar.json b/inji-web/src/locales/ar.json
index 7c2c7929..ef1d966b 100644
--- a/inji-web/src/locales/ar.json
+++ b/inji-web/src/locales/ar.json
@@ -221,5 +221,30 @@
"description3": "2. المشاركة عبر الإنترنت: يقوم هذا الخيار بإنشاء رمز QR مع عنوان URL الذي يشير إلى VC المخزن بشكل آمن عبر الإنترنت. ",
"description4": "يمكن العثور على هذه التكوينات في تكوين جهة إصدار Mimoto. "
}
+ },
+ "DataShareExpiryModal": {
+ "title": "صلاحية المشاركة",
+ "subTitle": "يرجى تقديم موافقتك على تعيين صلاحية مشاركة {{credentialName}}",
+ "content": {
+ "selectedDocument": "المستند المحدد",
+ "consent": "صلاحية الموافقة *",
+ "validityTimesHeader": "عدد المرات",
+ "validityTimesOptions": {
+ "once": "مرة واحدة",
+ "thrice": "ثلاث مرات",
+ "noLimit": "لا يوجد حد",
+ "custom": "مخصص"
+ },
+ "validityDate": "تاريخ"
+ },
+ "success": "يتابع",
+ "cancel": "خلف",
+ "disclaimer": "يرجى ملاحظة أنه لا يمكن مشاركة رمز الاستجابة السريعة إلا لعدد المرات التي اخترتها هنا. "
+ },
+ "CustomExpiryModal": {
+ "title": "الرجاء إدخال عدد المرات التي تريد فيها استخدام بيانات الاعتماد هذه ",
+ "metrics": "مرات",
+ "success": "يتابع",
+ "cancel": "يلغي"
}
}
\ No newline at end of file
diff --git a/inji-web/src/locales/en.json b/inji-web/src/locales/en.json
index c32a7928..39c6bdfa 100644
--- a/inji-web/src/locales/en.json
+++ b/inji-web/src/locales/en.json
@@ -221,6 +221,30 @@
"description3":"2. OnlineSharing: This option generates a QR code with a URL that points to the VC stored securely online. This ensures a less dense QR code, making it easier to scan, and supports seamless online sharing.",
"description4":"These configurations can be found in the Mimoto issuer's configuration. Depending on your needs, you can switch between these two options to adjust how the VC is downloaded and shared."
}
-
+ },
+ "DataShareExpiryModal": {
+ "title": "Share Validity",
+ "subTitle": "Please provide your consent to set a validity for sharing the {{credentialName}}",
+ "content": {
+ "selectedDocument": "Selected Document",
+ "consent" : "Consent Validity *",
+ "validityTimesHeader": "Number of times",
+ "validityTimesOptions": {
+ "once": "Once",
+ "thrice": "Thrice",
+ "noLimit": "No Limit",
+ "custom": "Custom"
+ },
+ "validityDate": "Date"
+ },
+ "success": "Proceed",
+ "cancel": "Back",
+ "disclaimer": "Please note that the QR Code can be shared only for the number of times you have chosen here. To use the QR Code for sharing again, you have to download the PDF again."
+ },
+ "CustomExpiryModal": {
+ "title": "Please enter the number of times you want to use this credential ",
+ "metrics": "Times",
+ "success": "Proceed",
+ "cancel": "Cancel"
}
}
diff --git a/inji-web/src/locales/fr.json b/inji-web/src/locales/fr.json
index 851407dc..963dffe6 100644
--- a/inji-web/src/locales/fr.json
+++ b/inji-web/src/locales/fr.json
@@ -221,5 +221,30 @@
"description3": "2. Partage en ligne : cette option génère un code QR avec une URL qui pointe vers le VC stocké en ligne de manière sécurisée. ",
"description4": "Ces configurations se trouvent dans la configuration de l'émetteur Mimoto. "
}
+ },
+ "DataShareExpiryModal": {
+ "title": "Validité du partage",
+ "subTitle": "Veuillez donner votre consentement pour définir une validité pour le partage du {{credentialName}}",
+ "content": {
+ "selectedDocument": "Document sélectionné",
+ "consent": "Validité du consentement *",
+ "validityTimesHeader": "Nombre de fois",
+ "validityTimesOptions": {
+ "once": "Une fois",
+ "thrice": "Trois fois",
+ "noLimit": "Aucune limite",
+ "custom": "Coutume"
+ },
+ "validityDate": "Date"
+ },
+ "success": "Procéder",
+ "cancel": "Dos",
+ "disclaimer": "Veuillez noter que le QR Code ne peut être partagé que le nombre de fois que vous avez choisi ici. "
+ },
+ "CustomExpiryModal": {
+ "title": "Veuillez saisir le nombre de fois que vous souhaitez utiliser cet identifiant ",
+ "metrics": "Fois",
+ "success": "Procéder",
+ "cancel": "Annuler"
}
}
\ No newline at end of file
diff --git a/inji-web/src/locales/hi.json b/inji-web/src/locales/hi.json
index 95611d11..d2bc50fe 100644
--- a/inji-web/src/locales/hi.json
+++ b/inji-web/src/locales/hi.json
@@ -221,5 +221,30 @@
"description3": "2. ऑनलाइन शेयरिंग: यह विकल्प एक यूआरएल के साथ एक क्यूआर कोड उत्पन्न करता है जो सुरक्षित रूप से ऑनलाइन संग्रहीत वीसी को इंगित करता है। ",
"description4": "ये कॉन्फ़िगरेशन मिमोटो जारीकर्ता के कॉन्फ़िगरेशन में पाए जा सकते हैं। "
}
+ },
+ "DataShareExpiryModal": {
+ "title": "वैधता साझा करें",
+ "subTitle": "कृपया साझा करने की वैधता निर्धारित करने के लिए अपनी सहमति प्रदान करें {{credentialName}}",
+ "content": {
+ "selectedDocument": "चयनित दस्तावेज़",
+ "consent": "सहमति की वैधता*",
+ "validityTimesHeader": "कितनी बार",
+ "validityTimesOptions": {
+ "once": "एक बार",
+ "thrice": "तीन बार",
+ "noLimit": "कोई सीमा नहीं",
+ "custom": "रिवाज़"
+ },
+ "validityDate": "तारीख"
+ },
+ "success": "आगे बढ़ना",
+ "cancel": "पीछे",
+ "disclaimer": "कृपया ध्यान दें कि क्यूआर कोड केवल उतनी ही बार साझा किया जा सकता है जितनी बार आपने यहां चुना है। "
+ },
+ "CustomExpiryModal": {
+ "title": "कृपया वह संख्या दर्ज करें जितनी बार आप इस क्रेडेंशियल का उपयोग करना चाहते हैं ",
+ "metrics": "टाइम्स",
+ "success": "आगे बढ़ना",
+ "cancel": "रद्द करना"
}
}
\ No newline at end of file
diff --git a/inji-web/src/locales/kn.json b/inji-web/src/locales/kn.json
index 4b108f5e..7517f7ed 100644
--- a/inji-web/src/locales/kn.json
+++ b/inji-web/src/locales/kn.json
@@ -221,5 +221,30 @@
"description3": "2. ಆನ್ಲೈನ್ಹಂಚಿಕೆ: ಈ ಆಯ್ಕೆಯು ಆನ್ಲೈನ್ನಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾದ VC ಯನ್ನು ಸೂಚಿಸುವ URL ನೊಂದಿಗೆ QR ಕೋಡ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. ",
"description4": "ಈ ಸಂರಚನೆಗಳನ್ನು Mimoto ನೀಡುವವರ ಸಂರಚನೆಯಲ್ಲಿ ಕಾಣಬಹುದು. "
}
+ },
+ "DataShareExpiryModal": {
+ "title": "Share Validity",
+ "subTitle": "გთხოვთ, მიუთითოთ თქვენი თანხმობა გაზიარების მოქმედების დაწესებაზე {{credentialName}}",
+ "content": {
+ "selectedDocument": "არჩეული დოკუმენტი",
+ "consent": "თანხმობის ვადა *",
+ "validityTimesHeader": "რამდენჯერმე",
+ "validityTimesOptions": {
+ "once": "ერთხელ",
+ "thrice": "სამჯერ",
+ "noLimit": "არანაირი ლიმიტი",
+ "custom": "საბაჟო"
+ },
+ "validityDate": "თარიღი"
+ },
+ "success": "გაგრძელება",
+ "cancel": "უკან",
+ "disclaimer": "გთხოვთ, გაითვალისწინოთ, რომ QR კოდის გაზიარება შესაძლებელია მხოლოდ იმდენჯერ, რამდენჯერაც აირჩევთ აქ. "
+ },
+ "CustomExpiryModal": {
+ "title": "გთხოვთ, შეიყვანოთ რამდენჯერ გსურთ ამ რწმუნებათა სიგელის გამოყენება ",
+ "metrics": "ჯერ",
+ "success": "გაგრძელება",
+ "cancel": "გაუქმება"
}
}
\ No newline at end of file
diff --git a/inji-web/src/locales/ta.json b/inji-web/src/locales/ta.json
index fced838d..4c015088 100644
--- a/inji-web/src/locales/ta.json
+++ b/inji-web/src/locales/ta.json
@@ -221,5 +221,30 @@
"description3": "2. ஆன்லைன் பகிர்வு: இந்த விருப்பம் URL உடன் QR குறியீட்டை உருவாக்குகிறது, இது ஆன்லைனில் பாதுகாப்பாக சேமிக்கப்பட்ட VC ஐக் குறிக்கிறது. ",
"description4": "இந்த உள்ளமைவுகளை Mimoto வழங்குபவரின் உள்ளமைவில் காணலாம். "
}
+ },
+ "DataShareExpiryModal": {
+ "title": "பங்கு செல்லுபடியாகும்",
+ "subTitle": "பகிர்வதற்கான செல்லுபடியை அமைக்க உங்கள் ஒப்புதலை வழங்கவும் {{credentialName}}",
+ "content": {
+ "selectedDocument": "தேர்ந்தெடுக்கப்பட்ட ஆவணம்",
+ "consent": "ஒப்புதல் செல்லுபடியாகும் *",
+ "validityTimesHeader": "முறைகளின் எண்ணிக்கை",
+ "validityTimesOptions": {
+ "once": "ஒருமுறை",
+ "thrice": "மூன்று முறை",
+ "noLimit": "வரம்பு இல்லை",
+ "custom": "தனிப்பயன்"
+ },
+ "validityDate": "தேதி"
+ },
+ "success": "தொடரவும்",
+ "cancel": "மீண்டும்",
+ "disclaimer": "நீங்கள் இங்கு எத்தனை முறை தேர்வு செய்தீர்களோ அந்த அளவுக்கு மட்டுமே QR குறியீட்டைப் பகிர முடியும் என்பதை நினைவில் கொள்ளவும். "
+ },
+ "CustomExpiryModal": {
+ "title": "இந்த நற்சான்றிதழை நீங்கள் எத்தனை முறை பயன்படுத்த விரும்புகிறீர்கள் என்பதை உள்ளிடவும் ",
+ "metrics": "நேரங்கள்",
+ "success": "தொடரவும்",
+ "cancel": "ரத்து செய்"
}
}
\ No newline at end of file
diff --git a/inji-web/src/modals/CustomExpiryModal.tsx b/inji-web/src/modals/CustomExpiryModal.tsx
new file mode 100644
index 00000000..b0cd76c4
--- /dev/null
+++ b/inji-web/src/modals/CustomExpiryModal.tsx
@@ -0,0 +1,25 @@
+import React, {useState} from "react";
+import {ModalWrapper} from "./ModalWrapper";
+import {DataShareFooter} from "../components/DataShare/DataShareFooter";
+import {CustomExpiryTimesContent} from "../components/DataShare/CustomExpiryTimes/CustomExpiryTimesContent";
+import {CustomExpiryTimesHeader} from "../components/DataShare/CustomExpiryTimes/CustomExpiryTimesHeader";
+import {useDispatch, useSelector} from "react-redux";
+import {storevcStorageExpiryLimitInTimes} from "../redux/reducers/commonReducer";
+import {RootState} from "../types/redux";
+import {useTranslation} from "react-i18next";
+import {CustomExpiryModalProps} from "../types/components";
+
+
+export const CustomExpiryModal: React.FC = (props) => {
+
+ const vcStorageExpiryLimitInTimes = useSelector((state: RootState) => state.common.vcStorageExpiryLimitInTimes);
+ const [expiryTime, setExpiryTime] = useState(vcStorageExpiryLimitInTimes);
+ const {t} = useTranslation("CustomExpiryModal");
+ const dispatch = useDispatch();
+ return }
+ content={}
+ footer={ {dispatch(storevcStorageExpiryLimitInTimes(expiryTime));props.onSuccess()} } onCancel={props.onCancel}/>}
+ size={"sm"}
+ zIndex={50} />
+}
+
diff --git a/inji-web/src/modals/DataShareExpiryModal.tsx b/inji-web/src/modals/DataShareExpiryModal.tsx
new file mode 100644
index 00000000..92643d67
--- /dev/null
+++ b/inji-web/src/modals/DataShareExpiryModal.tsx
@@ -0,0 +1,24 @@
+import React, {useState} from "react";
+import {ModalWrapper} from "./ModalWrapper";
+import {DataShareHeader} from "../components/DataShare/DataShareHeader";
+import {DataShareFooter} from "../components/DataShare/DataShareFooter";
+import {DataShareContent} from "../components/DataShare/DataShareContent";
+import {CustomExpiryModal} from "./CustomExpiryModal";
+import {useTranslation} from "react-i18next";
+import {DataShareExpiryModalProps} from "../types/components";
+
+export const DataShareExpiryModal: React.FC = (props) => {
+
+ const [isCustomExpiryInTimesModalOpen, setIsCustomExpiryInTimesModalOpen] = useState(false);
+ const {t} = useTranslation("DataShareExpiryModal")
+ return
+ }
+ content={}
+ footer={}
+ size={"3xl"}
+ zIndex={40}/>
+ {isCustomExpiryInTimesModalOpen && setIsCustomExpiryInTimesModalOpen(false)} onCancel={() => setIsCustomExpiryInTimesModalOpen(false)}/>}
+
+
+}
+
diff --git a/inji-web/src/modals/ModalWrapper.tsx b/inji-web/src/modals/ModalWrapper.tsx
new file mode 100644
index 00000000..6ed314fb
--- /dev/null
+++ b/inji-web/src/modals/ModalWrapper.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+import {ModalWrapperProps} from "../types/components";
+
+export const ModalWrapper:React.FC = (props) => {
+
+ return <>
+