diff --git a/packages/browser-extension/src/_locales/ar/messages.json b/packages/browser-extension/src/_locales/ar/messages.json new file mode 100644 index 0000000..2ee7ea1 --- /dev/null +++ b/packages/browser-extension/src/_locales/ar/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "هل ذكر أحد حوارات موافقة ملفات تعريف الارتباط؟ 😋" + }, + "contextMenu_issueOption": { + "message": "متابعة هذه المشكلة" + }, + "contextMenu_reportOption": { + "message": "الإبلاغ عن هذا الموقع" + }, + "contextMenu_settingsOption": { + "message": "إدارة قائمة الاستبعاد" + }, + "options_addButton": { + "message": "إضافة استبعاد" + }, + "options_addPrompt": { + "message": "أدخل النطاق" + }, + "options_clearButton": { + "message": "مسح القائمة" + }, + "options_exclusionListTitle": { + "message": "قائمة الاستبعاد" + }, + "options_exportButton": { + "message": "تصدير القائمة" + }, + "options_filterPlaceholder": { + "message": "اضغط ENTER للتصفية بعد الكتابة" + }, + "options_importButton": { + "message": "استيراد القائمة" + }, + "popup_bannerIssueOpen": { + "message": "تم الإبلاغ عن مشكلة في هذه الصفحة. قد لا تعمل الإضافة بشكل متوقع مؤقتًا. تابع المشكلة أو أضف المزيد من المعلومات" + }, + "popup_bannerIssueWontFix": { + "message": "تم الإبلاغ عن مشكلة في هذه الصفحة ولكن لن يتم إصلاحها. يُرجى العلم أن الإضافة قد لا تعمل كما هو متوقع في هذه الصفحة. نوصي بشدة بإيقاف تشغيل الإضافة باستخدام الزر أدناه" + }, + "popup_bannerSupport": { + "message": "لم يعد هذا الموقع مدعومًا. لمزيد من المعلومات، يرجى المتابعة هنا" + }, + "popup_bannerUpdateAvailable": { + "message": "التحديث متاح. يرجى تثبيت أحدث إصدار لحل المشكلات المعروفة قبل الإبلاغ عن مشكلات جديدة" + }, + "popup_contributeOption": { + "message": "ساهم في هذا المشروع" + }, + "popup_databaseVersion": { + "message": "إصدار قاعدة البيانات" + }, + "popup_extensionVersion": { + "message": "إصدار الإضافة" + }, + "popup_helpOption": { + "message": "المساعدة أو المشاكل؟" + }, + "popup_rateOption": { + "message": "قيّم هذه الإضافة" + }, + "report_bodyText": { + "message": "يرجى عدم مشاركة أي معلومات شخصية في هذا التقرير. إذا كنت تريد إضافة المزيد من التفاصيل، انتقل إلى المشكلة في الخطوة التالية وأضف تعليقًا." + }, + "report_cancelButtonText": { + "message": "إلغاء" + }, + "report_reasonInputError": { + "message": "يرجى إدخال سبب يتكون من 10 أحرف على الأقل ولا يزيد عن 1000 حرف" + }, + "report_reasonInputLabel": { + "message": "السبب" + }, + "report_reasonInputPlaceholder": { + "message": "ظهر إشعار" + }, + "report_submitErrorExtraText": { + "message": "يبدو أن هناك مشكلة مفتوحة بالفعل أو تم تحديدها بأنها لن يتم إصلاحها. يرجى الدخول إلى المشكلة إذا كنت ترغب في إضافة المزيد من المعلومات باستخدام الزر التالي." + }, + "report_submitErrorText": { + "message": "لم يتم إرسال التقرير؟" + }, + "report_submitSuccessExtraText": { + "message": "بينما نعمل على هذه المسألة، يمكنك إضافة هذا الموقع إلى قائمة الاستبعاد في إعدادات الإضافة أو تعطيل الإضافة لهذا الموقع بالنقر فوق أيقونة الإضافة في شريط الأدوات الخاص بالمتصفح" + }, + "report_submitSuccessText": { + "message": "تم إرسال التقرير!" + }, + "report_urlInputError": { + "message": "يرجى إدخال عنوان URL صالح لا يزيد عن 1000 حرف" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/_locales/de/messages.json b/packages/browser-extension/src/_locales/de/messages.json index bab0c60..79d9c88 100644 --- a/packages/browser-extension/src/_locales/de/messages.json +++ b/packages/browser-extension/src/_locales/de/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Ein Problem wurde für diese Seite gemeldet, wird jedoch nicht behoben. Bitte beachten Sie, dass die Erweiterung auf dieser Seite möglicherweise nicht wie erwartet funktioniert. Wir empfehlen dringend, die Erweiterung über die Schaltfläche unten zu deaktivieren." }, + "popup_bannerSupport": { + "message": "Diese Seite wird nicht mehr unterstützt. Für weitere Informationen lesen Sie bitte hier weiter" + }, "popup_bannerUpdateAvailable": { "message": "Update verfügbar. Bitte installieren Sie die neueste Version, um bekannte Probleme zu beheben, bevor Sie neue melden" }, diff --git a/packages/browser-extension/src/_locales/en/messages.json b/packages/browser-extension/src/_locales/en/messages.json index bad3e9c..2222478 100644 --- a/packages/browser-extension/src/_locales/en/messages.json +++ b/packages/browser-extension/src/_locales/en/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "An issue has been reported for this page, but it won't be fixed. Please be aware that the extension may not function as expected on this page. We highly recommend turning off the extension using the button below" }, + "popup_bannerSupport": { + "message": "This site is no longer supported. For more information, please keep reading here" + }, "popup_bannerUpdateAvailable": { "message": "Update available. Please install the latest version to address known issues before reporting new ones" }, diff --git a/packages/browser-extension/src/_locales/es/messages.json b/packages/browser-extension/src/_locales/es/messages.json index c7bff92..5c21486 100644 --- a/packages/browser-extension/src/_locales/es/messages.json +++ b/packages/browser-extension/src/_locales/es/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Se ha informado de un problema en esta página, pero no se solucionará. Tenga en cuenta que la extensión puede no funcionar como se espera en esta página. Recomendamos encarecidamente desactivar la extensión utilizando el botón a continuación." }, + "popup_bannerSupport": { + "message": "Este sitio ya no es compatible. Para más información, sigue leyendo aquí" + }, "popup_bannerUpdateAvailable": { "message": "Actualización disponible. Por favor, instale la última versión para solucionar problemas conocidos antes de informar nuevos" }, diff --git a/packages/browser-extension/src/_locales/fr/messages.json b/packages/browser-extension/src/_locales/fr/messages.json index 74dcfba..022112a 100644 --- a/packages/browser-extension/src/_locales/fr/messages.json +++ b/packages/browser-extension/src/_locales/fr/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Un problème a été signalé pour cette page, mais il ne sera pas résolu. Veuillez noter que l'extension pourrait ne pas fonctionner comme prévu sur cette page. Nous vous recommandons vivement de désactiver l'extension en utilisant le bouton ci-dessous." }, + "popup_bannerSupport": { + "message": "Ce site n'est plus pris en charge. Pour plus d'informations, veuillez continuer à lire ici" + }, "popup_bannerUpdateAvailable": { "message": "Mise à jour disponible. Veuillez installer la dernière version pour résoudre les problèmes connus avant d'en signaler de nouveaux" }, diff --git a/packages/browser-extension/src/_locales/hi/messages.json b/packages/browser-extension/src/_locales/hi/messages.json new file mode 100644 index 0000000..751eaca --- /dev/null +++ b/packages/browser-extension/src/_locales/hi/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "क्या किसी ने कुकी सहमति संवाद का उल्लेख किया? 😋" + }, + "contextMenu_issueOption": { + "message": "इस समस्या का पालन करें" + }, + "contextMenu_reportOption": { + "message": "इस वेबसाइट की रिपोर्ट करें" + }, + "contextMenu_settingsOption": { + "message": "बहिष्करण सूची प्रबंधित करें" + }, + "options_addButton": { + "message": "बहिष्करण जोड़ें" + }, + "options_addPrompt": { + "message": "डोमेन दर्ज करें" + }, + "options_clearButton": { + "message": "सूची साफ़ करें" + }, + "options_exclusionListTitle": { + "message": "बहिष्करण सूची" + }, + "options_exportButton": { + "message": "सूची निर्यात करें" + }, + "options_filterPlaceholder": { + "message": "टाइप करने के बाद ENTER दबाएं फ़िल्टर करने के लिए" + }, + "options_importButton": { + "message": "सूची आयात करें" + }, + "popup_bannerIssueOpen": { + "message": "इस पृष्ठ के लिए एक समस्या दर्ज की गई है। अस्थायी रूप से एक्सटेंशन ठीक से काम नहीं कर सकता है। समस्या का पालन करें या अधिक जानकारी जोड़ें" + }, + "popup_bannerIssueWontFix": { + "message": "इस पृष्ठ के लिए एक समस्या दर्ज की गई है, लेकिन इसे ठीक नहीं किया जाएगा। कृपया ध्यान दें कि एक्सटेंशन इस पृष्ठ पर अपेक्षित रूप से कार्य नहीं कर सकता है। हम नीचे दिए गए बटन से एक्सटेंशन को बंद करने की सलाह देते हैं" + }, + "popup_bannerSupport": { + "message": "इस साइट को अब समर्थन प्राप्त नहीं है। अधिक जानकारी के लिए कृपया यहाँ पढ़ें" + }, + "popup_bannerUpdateAvailable": { + "message": "अपडेट उपलब्ध है। कृपया नई समस्याओं की रिपोर्ट करने से पहले ज्ञात मुद्दों को हल करने के लिए नवीनतम संस्करण इंस्टॉल करें" + }, + "popup_contributeOption": { + "message": "इस प्रोजेक्ट में योगदान करें" + }, + "popup_databaseVersion": { + "message": "डेटाबेस संस्करण" + }, + "popup_extensionVersion": { + "message": "एक्सटेंशन संस्करण" + }, + "popup_helpOption": { + "message": "मदद या समस्याएँ?" + }, + "popup_rateOption": { + "message": "इस एक्सटेंशन को रेट करें" + }, + "report_bodyText": { + "message": "कृपया इस रिपोर्ट में कोई भी व्यक्तिगत जानकारी साझा न करें। यदि आप अधिक विवरण जोड़ना चाहते हैं, तो अगले चरण में समस्या पर जाएं और एक टिप्पणी जोड़ें।" + }, + "report_cancelButtonText": { + "message": "रद्द करें" + }, + "report_reasonInputError": { + "message": "कृपया कम से कम 10 अक्षरों और 1000 से अधिक नहीं अक्षरों के साथ एक कारण दर्ज करें" + }, + "report_reasonInputLabel": { + "message": "कारण" + }, + "report_reasonInputPlaceholder": { + "message": "पॉपअप दिखाई दिया" + }, + "report_submitErrorExtraText": { + "message": "ऐसा लगता है कि पहले से ही एक मुद्दा खुला है, या इसे 'फिक्स नहीं होगा' के रूप में चिह्नित किया गया है। कृपया अधिक जानकारी जोड़ने के लिए अगले बटन का उपयोग करके समस्या में जाएं।" + }, + "report_submitErrorText": { + "message": "रिपोर्ट नहीं भेजी गई?" + }, + "report_submitSuccessExtraText": { + "message": "जब तक हम इस पर काम कर रहे हैं, तब तक आप इस वेबसाइट को एक्सटेंशन सेटिंग में बहिष्करण सूची में जोड़ सकते हैं या अपने ब्राउज़र टूलबार में एक्सटेंशन आइकन पर क्लिक करके इस वेबसाइट के लिए एक्सटेंशन को अक्षम कर सकते हैं" + }, + "report_submitSuccessText": { + "message": "रिपोर्ट भेज दी गई!" + }, + "report_urlInputError": { + "message": "कृपया अधिकतम 1000 अक्षरों के साथ एक मान्य URL दर्ज करें" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/_locales/id/messages.json b/packages/browser-extension/src/_locales/id/messages.json new file mode 100644 index 0000000..e9fb7d8 --- /dev/null +++ b/packages/browser-extension/src/_locales/id/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "Ada yang bilang dialog persetujuan cookie? 😋" + }, + "contextMenu_issueOption": { + "message": "Ikuti masalah ini" + }, + "contextMenu_reportOption": { + "message": "Laporkan situs ini" + }, + "contextMenu_settingsOption": { + "message": "Kelola daftar pengecualian" + }, + "options_addButton": { + "message": "Tambahkan pengecualian" + }, + "options_addPrompt": { + "message": "Masukkan domain" + }, + "options_clearButton": { + "message": "Bersihkan daftar" + }, + "options_exclusionListTitle": { + "message": "Daftar pengecualian" + }, + "options_exportButton": { + "message": "Ekspor daftar" + }, + "options_filterPlaceholder": { + "message": "Tekan ENTER untuk memfilter setelah mengetik" + }, + "options_importButton": { + "message": "Impor daftar" + }, + "popup_bannerIssueOpen": { + "message": "Ada masalah yang dilaporkan untuk halaman ini. Ekstensi mungkin tidak berfungsi seperti yang diharapkan untuk sementara. Ikuti masalahnya atau tambahkan informasi lainnya" + }, + "popup_bannerIssueWontFix": { + "message": "Ada masalah yang dilaporkan untuk halaman ini, tetapi tidak akan diperbaiki. Harap diperhatikan bahwa ekstensi mungkin tidak berfungsi seperti yang diharapkan di halaman ini. Kami sangat menyarankan untuk mematikan ekstensi menggunakan tombol di bawah ini" + }, + "popup_bannerSupport": { + "message": "Situs ini tidak lagi didukung. Untuk informasi lebih lanjut, silakan baca di sini" + }, + "popup_bannerUpdateAvailable": { + "message": "Pembaruan tersedia. Harap instal versi terbaru untuk menyelesaikan masalah yang diketahui sebelum melaporkan masalah baru" + }, + "popup_contributeOption": { + "message": "Berkontribusi pada proyek ini" + }, + "popup_databaseVersion": { + "message": "Versi basis data" + }, + "popup_extensionVersion": { + "message": "Versi ekstensi" + }, + "popup_helpOption": { + "message": "Butuh bantuan atau ada masalah?" + }, + "popup_rateOption": { + "message": "Beri peringkat pada ekstensi ini" + }, + "report_bodyText": { + "message": "Jangan membagikan informasi pribadi apa pun dalam laporan ini. Jika Anda ingin menambahkan lebih banyak detail, buka masalah pada langkah berikutnya dan tambahkan komentar." + }, + "report_cancelButtonText": { + "message": "Batal" + }, + "report_reasonInputError": { + "message": "Harap masukkan alasan yang terdiri dari minimal 10 karakter dan maksimal 1000 karakter" + }, + "report_reasonInputLabel": { + "message": "Alasan" + }, + "report_reasonInputPlaceholder": { + "message": "Muncul pop-up" + }, + "report_submitErrorExtraText": { + "message": "Tampaknya sudah ada masalah yang terbuka atau ditandai sebagai 'tidak akan diperbaiki'. Silakan buka masalah menggunakan tombol di bawah ini untuk menambahkan lebih banyak informasi." + }, + "report_submitErrorText": { + "message": "Laporan tidak terkirim?" + }, + "report_submitSuccessExtraText": { + "message": "Sambil kami menangani masalah ini, Anda dapat menambahkan situs web ini ke daftar pengecualian di pengaturan ekstensi atau menonaktifkan ekstensi untuk situs ini dengan mengklik ikon ekstensi di bilah alat peramban Anda" + }, + "report_submitSuccessText": { + "message": "Laporan terkirim!" + }, + "report_urlInputError": { + "message": "Masukkan URL yang valid dengan maksimal 1000 karakter" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/_locales/it/messages.json b/packages/browser-extension/src/_locales/it/messages.json index 744d42e..8a07f20 100644 --- a/packages/browser-extension/src/_locales/it/messages.json +++ b/packages/browser-extension/src/_locales/it/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "È stato segnalato un problema per questa pagina, ma non verrà risolto. Si prega di notare che l'estensione potrebbe non funzionare come previsto su questa pagina. Si consiglia vivamente di disattivare l'estensione utilizzando il pulsante qui sotto." }, + "popup_bannerSupport": { + "message": "Questo sito non è più supportato. Per ulteriori informazioni, continua a leggere qui" + }, "popup_bannerUpdateAvailable": { "message": "Aggiornamento disponibile. Si prega di installare l'ultima versione per risolvere i problemi noti prima di segnalarne di nuovi" }, diff --git a/packages/browser-extension/src/_locales/jp/messages.json b/packages/browser-extension/src/_locales/jp/messages.json new file mode 100644 index 0000000..59c1a01 --- /dev/null +++ b/packages/browser-extension/src/_locales/jp/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "クッキー同意ダイアログの話をしている? 😋" + }, + "contextMenu_issueOption": { + "message": "この問題をフォローする" + }, + "contextMenu_reportOption": { + "message": "このウェブサイトを報告する" + }, + "contextMenu_settingsOption": { + "message": "除外リストを管理する" + }, + "options_addButton": { + "message": "除外を追加" + }, + "options_addPrompt": { + "message": "ドメインを入力してください" + }, + "options_clearButton": { + "message": "リストをクリア" + }, + "options_exclusionListTitle": { + "message": "除外リスト" + }, + "options_exportButton": { + "message": "リストをエクスポート" + }, + "options_filterPlaceholder": { + "message": "入力後にENTERキーを押してフィルタリング" + }, + "options_importButton": { + "message": "リストをインポート" + }, + "popup_bannerIssueOpen": { + "message": "このページで問題が報告されました。拡張機能が一時的に正常に動作しない可能性があります。問題をフォローするか、追加情報を提供してください" + }, + "popup_bannerIssueWontFix": { + "message": "このページで問題が報告されましたが、修正されません。このページで拡張機能が期待通りに機能しない可能性があります。以下のボタンで拡張機能をオフにすることをお勧めします" + }, + "popup_bannerSupport": { + "message": "このサイトはもうサポートされていません。詳しくは、ここをお読みください" + }, + "popup_bannerUpdateAvailable": { + "message": "アップデートが利用可能です。新しい問題を報告する前に、既知の問題を解決するため最新バージョンをインストールしてください" + }, + "popup_contributeOption": { + "message": "このプロジェクトに貢献する" + }, + "popup_databaseVersion": { + "message": "データベースバージョン" + }, + "popup_extensionVersion": { + "message": "拡張機能のバージョン" + }, + "popup_helpOption": { + "message": "ヘルプまたは問題?" + }, + "popup_rateOption": { + "message": "この拡張機能を評価する" + }, + "report_bodyText": { + "message": "このレポートには個人情報を含めないでください。追加の詳細を提供する場合は、次のステップで問題に移動し、コメントを追加してください。" + }, + "report_cancelButtonText": { + "message": "キャンセル" + }, + "report_reasonInputError": { + "message": "10文字以上、1000文字以下の理由を入力してください" + }, + "report_reasonInputLabel": { + "message": "理由" + }, + "report_reasonInputPlaceholder": { + "message": "ポップアップが表示されました" + }, + "report_submitErrorExtraText": { + "message": "既に問題が開かれているか、「修正しない」とマークされています。追加情報を提供する場合は、次のボタンから問題に移動してください。" + }, + "report_submitErrorText": { + "message": "レポートが送信されませんでしたか?" + }, + "report_submitSuccessExtraText": { + "message": "処理が完了するまでの間、このウェブサイトを拡張機能の設定で除外リストに追加するか、ブラウザツールバーの拡張アイコンをクリックしてこのウェブサイトで拡張機能を無効にしてください" + }, + "report_submitSuccessText": { + "message": "レポートが送信されました!" + }, + "report_urlInputError": { + "message": "1000文字以下の有効なURLを入力してください" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/_locales/ko/messages.json b/packages/browser-extension/src/_locales/ko/messages.json new file mode 100644 index 0000000..f7ec19c --- /dev/null +++ b/packages/browser-extension/src/_locales/ko/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "쿠키 동의 대화 상자를 말한 사람이 있나요? 😋" + }, + "contextMenu_issueOption": { + "message": "이 문제를 팔로우하기" + }, + "contextMenu_reportOption": { + "message": "이 웹사이트 신고하기" + }, + "contextMenu_settingsOption": { + "message": "제외 목록 관리하기" + }, + "options_addButton": { + "message": "제외 추가" + }, + "options_addPrompt": { + "message": "도메인 입력" + }, + "options_clearButton": { + "message": "목록 지우기" + }, + "options_exclusionListTitle": { + "message": "제외 목록" + }, + "options_exportButton": { + "message": "목록 내보내기" + }, + "options_filterPlaceholder": { + "message": "입력 후 ENTER를 눌러 필터링" + }, + "options_importButton": { + "message": "목록 가져오기" + }, + "popup_bannerIssueOpen": { + "message": "이 페이지에 대한 문제가 보고되었습니다. 확장이 일시적으로 예상대로 작동하지 않을 수 있습니다. 문제를 팔로우하거나 추가 정보를 제공하십시오" + }, + "popup_bannerIssueWontFix": { + "message": "이 페이지에 대한 문제가 보고되었지만 수정되지 않습니다. 이 페이지에서 확장이 예상대로 작동하지 않을 수 있습니다. 아래 버튼을 사용하여 확장을 끄는 것이 좋습니다" + }, + "popup_bannerSupport": { + "message": "이 사이트는 더 이상 지원되지 않습니다. 자세한 내용은 여기를 계속 읽어 주세요" + }, + "popup_bannerUpdateAvailable": { + "message": "업데이트 가능. 새 문제를 보고하기 전에 알려진 문제를 해결하려면 최신 버전을 설치하십시오" + }, + "popup_contributeOption": { + "message": "이 프로젝트에 기여하기" + }, + "popup_databaseVersion": { + "message": "데이터베이스 버전" + }, + "popup_extensionVersion": { + "message": "확장 버전" + }, + "popup_helpOption": { + "message": "도움말 또는 문제?" + }, + "popup_rateOption": { + "message": "이 확장 평가하기" + }, + "report_bodyText": { + "message": "이 보고서에 개인 정보를 공유하지 마십시오. 더 자세한 내용을 추가하려면 다음 단계에서 문제로 이동하여 댓글을 추가하십시오." + }, + "report_cancelButtonText": { + "message": "취소" + }, + "report_reasonInputError": { + "message": "10자 이상, 1000자 이하의 이유를 입력하십시오" + }, + "report_reasonInputLabel": { + "message": "이유" + }, + "report_reasonInputPlaceholder": { + "message": "팝업이 나타났습니다" + }, + "report_submitErrorExtraText": { + "message": "이미 열린 문제가 있거나 '수정하지 않음'으로 표시된 것 같습니다. 추가 정보를 추가하려면 다음 버튼을 사용하여 문제로 이동하십시오." + }, + "report_submitErrorText": { + "message": "보고서가 전송되지 않았습니까?" + }, + "report_submitSuccessExtraText": { + "message": "이 문제를 처리하는 동안 확장 설정에서 제외 목록에 이 웹사이트를 추가하거나 브라우저 툴바의 확장 아이콘을 클릭하여 이 웹사이트에서 확장을 비활성화할 수 있습니다" + }, + "report_submitSuccessText": { + "message": "보고서가 전송되었습니다!" + }, + "report_urlInputError": { + "message": "유효한 URL을 1000자 이하로 입력하십시오" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/_locales/pl/messages.json b/packages/browser-extension/src/_locales/pl/messages.json index 4a0eb7d..287daca 100644 --- a/packages/browser-extension/src/_locales/pl/messages.json +++ b/packages/browser-extension/src/_locales/pl/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Zgłoszono problem z tą stroną, ale nie zostanie on naprawiony. Należy pamiętać, że rozszerzenie może nie działać zgodnie z oczekiwaniami na tej stronie. Zdecydowanie zalecamy wyłączenie rozszerzenia za pomocą poniższego przycisku." }, + "popup_bannerSupport": { + "message": "Ta strona nie jest już obsługiwana. Aby uzyskać więcej informacji, proszę czytać dalej tutaj" + }, "popup_bannerUpdateAvailable": { "message": "Dostępna aktualizacja. Zainstaluj najnowszą wersję, aby rozwiązać znane problemy przed zgłoszeniem nowych" }, diff --git a/packages/browser-extension/src/_locales/pt_BR/messages.json b/packages/browser-extension/src/_locales/pt_BR/messages.json index e276722..a74306a 100644 --- a/packages/browser-extension/src/_locales/pt_BR/messages.json +++ b/packages/browser-extension/src/_locales/pt_BR/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Um problema foi relatado para esta página, mas não será corrigido. Esteja ciente de que a extensão pode não funcionar conforme o esperado nesta página. Recomendamos desativar a extensão usando o botão abaixo." }, + "popup_bannerSupport": { + "message": "Este site não é mais compatível. Para mais informações, continue lendo aqui" + }, "popup_bannerUpdateAvailable": { "message": "Atualização disponível. Por favor, instale a versão mais recente para corrigir problemas conhecidos antes de relatar novos" }, diff --git a/packages/browser-extension/src/_locales/pt_PT/messages.json b/packages/browser-extension/src/_locales/pt_PT/messages.json index 324bd5a..5ee5241 100644 --- a/packages/browser-extension/src/_locales/pt_PT/messages.json +++ b/packages/browser-extension/src/_locales/pt_PT/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Foi relatado um problema para esta página, mas não será resolvido. Esteja ciente de que a extensão pode não funcionar conforme o esperado nesta página. Recomendamos desativar a extensão usando o botão abaixo." }, + "popup_bannerSupport": { + "message": "Este site já não é suportado. Para mais informações, continue a ler aqui" + }, "popup_bannerUpdateAvailable": { "message": "Atualização disponível. Por favor, instale a versão mais recente para resolver problemas conhecidos antes de relatar novos" }, diff --git a/packages/browser-extension/src/_locales/ro/messages.json b/packages/browser-extension/src/_locales/ro/messages.json index ff7e036..df7ffe4 100644 --- a/packages/browser-extension/src/_locales/ro/messages.json +++ b/packages/browser-extension/src/_locales/ro/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "A fost raportată o problemă pentru această pagină, dar nu va fi rezolvată. Rețineți că extensia poate să nu funcționeze conform așteptărilor pe această pagină. Vă recomandăm cu insistență să dezactivați extensia folosind butonul de mai jos." }, + "popup_bannerSupport": { + "message": "Acest site nu mai este acceptat. Pentru mai multe informații, continuați să citiți aici" + }, "popup_bannerUpdateAvailable": { "message": "Actualizare disponibilă. Vă rugăm să instalați cea mai recentă versiune pentru a rezolva problemele cunoscute înainte de a raporta altele noi." }, diff --git a/packages/browser-extension/src/_locales/ru/messages.json b/packages/browser-extension/src/_locales/ru/messages.json index f5122d5..d96a316 100644 --- a/packages/browser-extension/src/_locales/ru/messages.json +++ b/packages/browser-extension/src/_locales/ru/messages.json @@ -38,6 +38,9 @@ "popup_bannerIssueWontFix": { "message": "Для этой страницы было сообщено о проблеме, но она не будет исправлена. Обратите внимание, что расширение может работать некорректно на этой странице. Мы настоятельно рекомендуем отключить расширение, используя кнопку ниже." }, + "popup_bannerSupport": { + "message": "Этот сайт больше не поддерживается. Для получения дополнительной информации продолжайте читать здесь" + }, "popup_bannerUpdateAvailable": { "message": "Доступно обновление. Установите последнюю версию, чтобы устранить известные проблемы перед отправкой новых отчётов." }, diff --git a/packages/browser-extension/src/_locales/tr/messages.json b/packages/browser-extension/src/_locales/tr/messages.json new file mode 100644 index 0000000..96f744c --- /dev/null +++ b/packages/browser-extension/src/_locales/tr/messages.json @@ -0,0 +1,95 @@ +{ + "appDesc": { + "message": "Biri çerez onayı diyaloglarını mı söyledi? 😋" + }, + "contextMenu_issueOption": { + "message": "Bu sorunu takip et" + }, + "contextMenu_reportOption": { + "message": "Bu web sitesini bildir" + }, + "contextMenu_settingsOption": { + "message": "Hariç tutma listesini yönet" + }, + "options_addButton": { + "message": "Hariç tutma ekle" + }, + "options_addPrompt": { + "message": "Alan adı girin" + }, + "options_clearButton": { + "message": "Listeyi temizle" + }, + "options_exclusionListTitle": { + "message": "Hariç tutma listesi" + }, + "options_exportButton": { + "message": "Listeyi dışa aktar" + }, + "options_filterPlaceholder": { + "message": "Yazdıktan sonra ENTER tuşuna basarak filtreleyin" + }, + "options_importButton": { + "message": "Listeyi içe aktar" + }, + "popup_bannerIssueOpen": { + "message": "Bu sayfa için bir sorun bildirildi. Uzantı geçici olarak beklenildiği gibi çalışmayabilir. Sorunu takip edin veya daha fazla bilgi ekleyin" + }, + "popup_bannerIssueWontFix": { + "message": "Bu sayfa için bir sorun bildirildi ancak düzeltilmeyecek. Bu sayfada uzantının beklenildiği gibi çalışmayabileceğini unutmayın. Aşağıdaki düğmeyi kullanarak uzantıyı kapatmanızı öneririz" + }, + "popup_bannerSupport": { + "message": "Bu site artık desteklenmiyor. Daha fazla bilgi için lütfen buradan okumaya devam edin" + }, + "popup_bannerUpdateAvailable": { + "message": "Güncelleme mevcut. Yeni sorunları bildirmeden önce bilinen sorunları gidermek için lütfen en son sürümü yükleyin" + }, + "popup_contributeOption": { + "message": "Bu projeye katkıda bulun" + }, + "popup_databaseVersion": { + "message": "Veritabanı sürümü" + }, + "popup_extensionVersion": { + "message": "Uzantı sürümü" + }, + "popup_helpOption": { + "message": "Yardım veya sorunlar?" + }, + "popup_rateOption": { + "message": "Bu uzantıyı değerlendir" + }, + "report_bodyText": { + "message": "Bu raporda kişisel bilgi paylaşmayın. Daha fazla ayrıntı eklemek istiyorsanız, bir sonraki adımda soruna gidin ve yorum ekleyin." + }, + "report_cancelButtonText": { + "message": "İptal" + }, + "report_reasonInputError": { + "message": "Lütfen en az 10 ve en fazla 1000 karakterlik bir sebep girin" + }, + "report_reasonInputLabel": { + "message": "Sebep" + }, + "report_reasonInputPlaceholder": { + "message": "Açılır pencere göründü" + }, + "report_submitErrorExtraText": { + "message": "Zaten açık bir sorun var gibi görünüyor veya 'düzeltmeyecek' olarak işaretlenmiş. Aşağıdaki düğmeyi kullanarak sorun sayfasına giderek daha fazla bilgi ekleyin." + }, + "report_submitErrorText": { + "message": "Rapor gönderilmedi mi?" + }, + "report_submitSuccessExtraText": { + "message": "Bu sorun üzerinde çalışırken, uzantı ayarlarında bu web sitesini hariç tutma listesine ekleyebilir veya tarayıcı araç çubuğundaki uzantı simgesine tıklayarak bu web sitesi için uzantıyı devre dışı bırakabilirsiniz" + }, + "report_submitSuccessText": { + "message": "Rapor gönderildi!" + }, + "report_urlInputError": { + "message": "Lütfen en fazla 1000 karakterle geçerli bir URL girin" + }, + "report_urlInputLabel": { + "message": "URL" + } +} diff --git a/packages/browser-extension/src/manifest.json b/packages/browser-extension/src/manifest.json index e29441c..aabb76c 100644 --- a/packages/browser-extension/src/manifest.json +++ b/packages/browser-extension/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Cookie Dialog Monster", - "version": "8.0.3", + "version": "8.0.4", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { @@ -11,6 +11,7 @@ }, "action": { "default_icon": "assets/icons/off.png", + "default_popup": "popup.html", "default_title": "Cookie Dialog Monster" }, "options_page": "options.html", diff --git a/packages/browser-extension/src/popup.html b/packages/browser-extension/src/popup.html index c745037..ab366e2 100644 --- a/packages/browser-extension/src/popup.html +++ b/packages/browser-extension/src/popup.html @@ -12,7 +12,11 @@

Cookie Dialog Monster

- - + + + +
+
+ +
diff --git a/packages/browser-extension/src/scripts/background.js b/packages/browser-extension/src/scripts/background.js index d02c509..8324244 100644 --- a/packages/browser-extension/src/scripts/background.js +++ b/packages/browser-extension/src/scripts/background.js @@ -1,6 +1,5 @@ /** * @typedef {Object} ExtensionIssue - * @property {number} [expiresIn] * @property {string[]} [flags] * @property {string} [url] */ @@ -9,7 +8,6 @@ * @typedef {Object} ExtensionState * @property {ExtensionIssue} [issue] * @property {boolean} on - * @property {string} [updateAvailable] */ if (typeof browser === 'undefined') { @@ -84,7 +82,7 @@ const script = browser.scripting; * @description Default value for extension state * @type {ExtensionState} */ -const stateByDefault = { issue: { expiresIn: 0 }, on: true }; +const stateByDefault = { issue: undefined, on: true }; /** * @description The storage to use @@ -125,15 +123,6 @@ async function getData() { return data; } -/** - * @async - * @description Disable report context menu option - * @returns {Promise} - */ -async function disableReport() { - return browser.contextMenus.update(reportMenuItemId, { enabled: false }); -} - /** * @description Get current hostname * @param {string} url @@ -161,14 +150,26 @@ async function getTab() { * @returns {Promise} */ async function getState(hostname) { - const keys = [hostname, 'updateAvailable']; - const { [hostname]: state = stateByDefault, updateAvailable } = await storage.get(keys); + const { [hostname]: state = stateByDefault } = await storage.get(hostname); - if ((state.issue && Date.now() > state.issue.expiresIn) || !state.issue?.expiresIn) { - state.issue = await refreshIssue(hostname); + state.issue = await refreshIssue(hostname); + + return { ...stateByDefault, ...state }; +} + +/** + * @async + * @description Get latest version available for this extension + * @returns {Promise} + */ +async function getLatestVersion() { + try { + const { data } = await requestManager.fetch(`${apiUrl}/version/`); + + return data; + } catch { + return ''; } - - return { ...stateByDefault, ...state, updateAvailable }; } /** @@ -202,20 +203,7 @@ async function refreshIssue(hostname, attempt = 1) { if (attempt <= 3) { try { const { data = {} } = await requestManager.fetch(`${apiUrl}/issues/${hostname}/`); - - if (Object.keys(data).length === 0) { - await updateStore(hostname, { issue: { expiresIn: Date.now() + 8 * 60 * 60 * 1000 } }); - - return undefined; - } - - const issue = { - expiresIn: Date.now() + 4 * 60 * 60 * 1000, - flags: data.flags, - url: data.url, - }; - - await updateStore(hostname, { issue }); + await updateStore(hostname, { issue: { flags: data.flags, url: data.url } }); return data; } catch { @@ -288,9 +276,6 @@ browser.runtime.onMessage.addListener((message, sender, callback) => { const tabId = sender.tab?.id; switch (message.type) { - case 'DISABLE_REPORT': - if (isPage && tabId !== undefined) disableReport(); - break; case 'DISABLE_ICON': if (isPage && tabId !== undefined) { browser.action.setIcon({ path: '/assets/icons/off.png', tabId }, suppressLastError); @@ -302,16 +287,6 @@ browser.runtime.onMessage.addListener((message, sender, callback) => { return true; } break; - case 'ENABLE_POPUP': - if (isPage && tabId !== undefined) { - browser.action.setPopup({ popup: '/popup.html', tabId }, suppressLastError); - } - break; - case 'ENABLE_REPORT': - if (isPage && tabId !== undefined) { - browser.contextMenus.update(reportMenuItemId, { enabled: true }); - } - break; case 'GET_DATA': getData().then(callback); return true; @@ -323,6 +298,9 @@ browser.runtime.onMessage.addListener((message, sender, callback) => { callback(exclusionList); }); return true; + case 'GET_LATEST_VERSION': + getLatestVersion().then(callback); + return true; case 'GET_STATE': if (hostname) { getState(hostname).then(callback); @@ -381,7 +359,6 @@ browser.runtime.onInstalled.addListener((details) => { { contexts: ['all'], documentUrlPatterns, - enabled: false, id: reportMenuItemId, parentId: extensionMenuItemId, title: browser.i18n.getMessage('contextMenu_reportOption'), @@ -389,15 +366,9 @@ browser.runtime.onInstalled.addListener((details) => { suppressLastError ); - if (details.reason === 'update') refreshData(); - storage.remove('updateAvailable'); -}); - -/** - * @description Listen to available updates - */ -browser.runtime.onUpdateAvailable.addListener((details) => { - storage.set({ updateAvailable: details.version }, suppressLastError); + if (details.reason === 'update') { + refreshData(); + } }); /** @@ -407,13 +378,6 @@ browser.runtime.onStartup.addListener(() => { refreshData(); }); -/** - * @description Listen to tab changes - */ -browser.tabs.onActivated.addListener(() => { - disableReport(); -}); - /** * @description Listen to the moment before a request is made to apply the rules * @returns {Promise} diff --git a/packages/browser-extension/src/scripts/content.js b/packages/browser-extension/src/scripts/content.js index 60960c5..92c37ab 100644 --- a/packages/browser-extension/src/scripts/content.js +++ b/packages/browser-extension/src/scripts/content.js @@ -469,8 +469,6 @@ async function setUp(params = {}) { } state = await dispatch({ hostname, type: 'GET_STATE' }); - dispatch({ type: 'ENABLE_POPUP' }); - dispatch({ type: 'ENABLE_REPORT' }); if (state.on) { browser.runtime.onMessage.addListener(handleRuntimeMessage); diff --git a/packages/browser-extension/src/scripts/popup.js b/packages/browser-extension/src/scripts/popup.js index 4713946..bc2d6d7 100644 --- a/packages/browser-extension/src/scripts/popup.js +++ b/packages/browser-extension/src/scripts/popup.js @@ -2,7 +2,6 @@ * @typedef {Object} ExtensionState * @property {ExtensionIssue} [issue] * @property {boolean} on - * @property {string} [updateAvailable] */ /** @@ -90,54 +89,10 @@ function handleCancelClick() { */ async function handleContentLoaded() { const tab = await dispatch({ type: 'GET_TAB' }); - const tabUrl = tab?.url ? new URL(tab.url) : undefined; + const url = tab?.url ? new URL(tab.url) : undefined; - hostname = tabUrl?.hostname.split('.').slice(-3).join('.').replace('www.', ''); - - const next = await dispatch({ hostname, type: 'GET_STATE' }); - state = { ...(next ?? state), tabId: tab?.id }; - - if (state.issue?.url) { - const issueBanner = document.getElementById('issue-banner'); - issueBanner.removeAttribute('aria-hidden'); - - const issueBannerText = document.getElementById('issue-banner-text'); - if (state.issue.flags.includes('wontfix')) - issueBannerText.innerText = browser.i18n.getMessage('popup_bannerIssueWontFix'); - else issueBannerText.innerText = browser.i18n.getMessage('popup_bannerIssueOpen'); - - const issueBannerUrl = document.getElementById('issue-banner-url'); - issueBannerUrl.setAttribute('href', state.issue.url); - } else { - const cancelButtonElement = document.getElementsByClassName('report-cancel-button')[0]; - cancelButtonElement?.addEventListener('click', handleCancelClick); - - const reasonInputElement = document.getElementById('report-input-reason'); - reasonInputElement?.addEventListener('input', handleInputChange); - reasonInputElement?.addEventListener('keydown', handleInputKeyDown); - - if (!state.updateAvailable) { - const reportButtonElement = document.getElementById('report-button'); - reportButtonElement?.addEventListener('click', handleReportClick); - reportButtonElement?.removeAttribute('disabled'); - } - - const urlInputElement = document.getElementById('report-input-url'); - urlInputElement?.addEventListener('input', handleInputChange); - urlInputElement?.addEventListener('keydown', handleInputKeyDown); - if (tabUrl) urlInputElement?.setAttribute('value', `${tabUrl.origin}${tabUrl.pathname}`); - - const submitButtonElement = document.getElementsByClassName('report-submit-button')[0]; - submitButtonElement?.addEventListener('click', handleSubmitButtonClick); - } - - if (state.updateAvailable) { - const updateBanner = document.getElementById('update-banner'); - updateBanner.removeAttribute('aria-hidden'); - - const updateBannerUrl = document.getElementById('update-banner-url'); - updateBannerUrl.href += `/tag/${state.updateAvailable}`; - } + hostname = url?.hostname.split('.').slice(-3).join('.').replace('www.', ''); + state = { ...((await dispatch({ hostname, type: 'GET_STATE' })) ?? state), tabId: tab?.id }; const hostTextElement = document.getElementById('host'); hostTextElement.innerText = hostname ?? 'unknown'; @@ -151,14 +106,9 @@ async function handleContentLoaded() { const extensionVersionElement = document.getElementById('extension-version'); extensionVersionElement.innerText = browser.runtime.getManifest().version; - const helpButtonElement = document.getElementById('help-option'); + const helpButtonElement = document.getElementById('help-button'); helpButtonElement?.addEventListener('click', handleLinkRedirect); - const powerButtonElement = document.getElementById('power-option'); - powerButtonElement?.addEventListener('click', handlePowerToggle); - if (state.on) powerButtonElement?.setAttribute('data-value', 'on'); - else powerButtonElement?.setAttribute('data-value', 'off'); - const rateButtonElement = document.getElementById('rate-option'); rateButtonElement?.addEventListener('click', handleLinkRedirect); if (isEdge) rateButtonElement?.setAttribute('data-href', edgeUrl); @@ -170,6 +120,67 @@ async function handleContentLoaded() { translate(); await updateDatabaseVersion(); + + const { exclusions } = (await dispatch({ hostname, type: 'GET_DATA' })) ?? {}; + const currentVersion = browser.runtime.getManifest().version; + const latestVersion = await dispatch({ type: 'GET_LATEST_VERSION' }); + const updateAvailable = currentVersion !== latestVersion; + + if (updateAvailable) { + const updateBanner = document.getElementById('update-banner'); + updateBanner.removeAttribute('aria-hidden'); + + const updateBannerUrl = document.getElementById('update-banner-url'); + updateBannerUrl.href += `/tag/${latestVersion}`; + } + + const loader = document.getElementById('loader'); + loader.style.setProperty('display', 'none'); + + if (exclusions?.domains.some((x) => url.hostname.match(x.replaceAll(/\*/g, '[^ ]*')))) { + const supportBanner = document.getElementById('support-banner'); + supportBanner.removeAttribute('aria-hidden'); + return; + } + + const powerButtonElement = document.getElementById('power-option'); + powerButtonElement?.addEventListener('click', handlePowerToggle); + powerButtonElement?.removeAttribute('disabled'); + if (state.on) powerButtonElement?.setAttribute('data-value', 'on'); + else powerButtonElement?.setAttribute('data-value', 'off'); + + if (state.issue?.url) { + const issueBanner = document.getElementById('issue-banner'); + issueBanner.removeAttribute('aria-hidden'); + + const issueBannerText = document.getElementById('issue-banner-text'); + if (state.issue.flags.includes('wontfix')) + issueBannerText.innerText = browser.i18n.getMessage('popup_bannerIssueWontFix'); + else issueBannerText.innerText = browser.i18n.getMessage('popup_bannerIssueOpen'); + + const issueBannerUrl = document.getElementById('issue-banner-url'); + issueBannerUrl.setAttribute('href', state.issue.url); + return; + } + + const cancelButtonElement = document.getElementsByClassName('report-cancel-button')[0]; + cancelButtonElement?.addEventListener('click', handleCancelClick); + + const reasonInputElement = document.getElementById('report-input-reason'); + reasonInputElement?.addEventListener('input', handleInputChange); + reasonInputElement?.addEventListener('keydown', handleInputKeyDown); + + const reportButtonElement = document.getElementById('report-option'); + reportButtonElement?.addEventListener('click', handleReportClick); + reportButtonElement?.removeAttribute('disabled'); + + const submitButtonElement = document.getElementsByClassName('report-submit-button')[0]; + submitButtonElement?.addEventListener('click', handleSubmitButtonClick); + + const urlInputElement = document.getElementById('report-input-url'); + urlInputElement?.addEventListener('input', handleInputChange); + urlInputElement?.addEventListener('keydown', handleInputKeyDown); + if (url) urlInputElement?.setAttribute('value', `${url.origin}${url.pathname}`); } /** @@ -234,6 +245,7 @@ async function handleLinkRedirect(event) { if (href) { await browser.tabs.create({ url: href }); + window.close(); } } @@ -243,7 +255,7 @@ async function handleLinkRedirect(event) { * @returns {void} */ async function handlePowerToggle() { - const next = { on: !state.on }; + const next = { ...state, on: !state.on }; await dispatch({ hostname, state: next, type: 'UPDATE_STORE' }); await browser.tabs.reload(state.tabId, { bypassCache: true }); @@ -394,6 +406,7 @@ function validateForm(params) { } try { + if (/\s/.test(url)) throw new Error(); new URL(url); } catch { errors = { diff --git a/packages/browser-extension/src/styles/popup.css b/packages/browser-extension/src/styles/popup.css index 3ffa7b7..dfd81b7 100644 --- a/packages/browser-extension/src/styles/popup.css +++ b/packages/browser-extension/src/styles/popup.css @@ -8,6 +8,10 @@ --color-white: #ffffff; } +b { + font-weight: bold; +} + body { box-sizing: border-box; color: var(--color-tertiary); @@ -26,30 +30,6 @@ body * { font-family: Inter, Arial, Helvetica, sans-serif; } -button { - align-items: center; - background-color: var(--color-secondary); - border: none; - border-radius: 4px; - color: var(--color-white); - display: inline-flex; - gap: 4px; - outline: none; - padding: 2px; - transition: 0.4s; - - &:focus:not(:disabled), - &:hover:not(:disabled) { - background-color: var(--color-white); - color: var(--color-secondary); - } - - &:disabled { - cursor: not-allowed; - opacity: 0.5; - } -} - footer { background-color: var(--color-secondary); flex-shrink: 0; @@ -73,11 +53,6 @@ header { & .header-actions { display: flex; gap: 8px; - - & #report-button:focus:not(:disabled) > svg, - & #report-button:hover:not(:disabled) > svg { - color: var(--color-error); - } } } @@ -89,7 +64,7 @@ header { } } -main > .banner { +.banner { font-size: 14px; line-height: 18px; margin: 0px; @@ -99,6 +74,11 @@ main > .banner { display: none; } + &[data-variant='error'] { + background-color: #e74c3c; + color: var(--color-white); + } + &[data-variant='notice'] { background-color: #2196f3; color: var(--color-white); @@ -109,23 +89,42 @@ main > .banner { color: #c0392b; } - & #issue-banner-url, - & #update-banner-url { + & a { color: inherit; display: inline-block; vertical-align: middle; } } -main > .content { +.grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; padding: 16px; } -popup-button { +.header-button { + align-items: center; + background-color: var(--color-secondary); + border: none; border-radius: 4px; + color: var(--color-white); + display: inline-flex; + gap: 4px; + outline: none; + padding: 2px; + transition: 0.4s; + + &:focus:not(:disabled), + &:hover:not(:disabled) { + background-color: var(--color-white); + color: var(--color-secondary); + } +} + +.popup-button { + border-radius: 4px; + color: var(--color-secondary); cursor: pointer; display: grid; font-size: 14px; @@ -140,53 +139,62 @@ popup-button { transition: 0.4s; width: 100%; word-break: break-word; + + &:focus, + &:hover { + box-shadow: + rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, + rgba(0, 0, 0, 0.3) 0px 1px 3px -1px; + } + + &:disabled { + background-color: var(--color-tertiary); + box-shadow: none; + color: var(--color-white); + cursor: not-allowed; + opacity: 0.5; + } + + & span { + align-self: flex-start; + } + + & svg { + align-self: flex-end; + } } -popup-button:focus, -popup-button:hover { - box-shadow: - rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, - rgba(0, 0, 0, 0.3) 0px 1px 3px -1px; -} - -popup-button > span { - align-self: flex-start; -} - -popup-button > svg { - align-self: flex-end; -} - -popup-data { +.popup-data { align-items: center; display: flex; gap: 4px; justify-content: center; outline: none; + + &:not(:first-child) { + margin-top: 4px; + } } -popup-data:not(:first-child) { - margin-top: 4px; -} - -popup-data-button { +.popup-data-button { + color: var(--color-tertiary); cursor: pointer; line-height: 0; outline: none; transition: 0.4s; -} -popup-data-button[aria-disabled='true'] { - cursor: not-allowed; -} + &[aria-disabled='true'] { + cursor: not-allowed; + } -popup-data-button[data-animation='flip']:focus, -popup-data-button[data-animation='flip']:hover { - transform: rotate(-180deg); -} + &[data-animation='flip']:focus, + &[data-animation='flip']:hover { + transform: rotate(-180deg); + } -popup-data-button[data-refreshing='true'] { - animation: spin 1s linear infinite; + &[data-refreshing='true'] { + animation: spin 1s linear infinite; + } } @keyframes spin { @@ -195,7 +203,7 @@ popup-data-button[data-refreshing='true'] { } } -popup-data-container { +.popup-data-container { font-size: 12px; grid-column: 1 / -1; justify-self: center; @@ -396,25 +404,49 @@ popup-data-container { } } -b { - font-weight: bold; +#loader { + align-items: center; + background-color: var(--color-white); + bottom: 0px; + display: flex; + justify-content: center; + left: 0px; + position: fixed; + right: 0px; + top: 0px; + + & > span { + animation: rotation 1s linear infinite; + border-bottom-color: var(--color-primary) !important; + border-radius: 50%; + border: 6px solid var(--color-secondary); + box-sizing: border-box; + display: inline-block; + height: 48px; + width: 48px; + } } -#refresh-database-check { - display: none; +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } } #power-option { color: var(--color-white); word-break: break-all; -} -#power-option[data-value='off'] { - background-color: var(--color-error); -} + &[data-value='off'] { + background-color: var(--color-error); + } -#power-option[data-value='on'] { - background-color: var(--color-success); + &[data-value='on'] { + background-color: var(--color-success); + } } #rate-option > svg { @@ -426,3 +458,7 @@ b { color: var(--color-warning); fill: var(--color-warning); } + +#refresh-database-check { + display: none; +}