From 198b6135da410a6b6296140d6b9aa4860fe34915 Mon Sep 17 00:00:00 2001 From: plebeius Date: Mon, 8 Dec 2025 23:52:13 +0100 Subject: [PATCH 01/16] fix: show cached feed time filter in UI --- src/views/board/board.tsx | 2 +- src/views/catalog/catalog.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/board/board.tsx b/src/views/board/board.tsx index 18a7d27b..591887e3 100644 --- a/src/views/board/board.tsx +++ b/src/views/board/board.tsx @@ -197,7 +197,7 @@ const Board = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, t return () => clearTimeout(timer); }, []); - const currentTimeFilterName = params?.timeFilterName || timeFilterName; + const currentTimeFilterName = timeFilterName || params?.timeFilterName; const Footer = () => { let footerContent; diff --git a/src/views/catalog/catalog.tsx b/src/views/catalog/catalog.tsx index c218e6a5..03568814 100644 --- a/src/views/catalog/catalog.tsx +++ b/src/views/catalog/catalog.tsx @@ -365,7 +365,7 @@ const Catalog = ({ feedCacheKey, viewType, boardIdentifier: boardIdentifierProp, ); - const currentTimeFilterName = params?.timeFilterName || timeFilterName; + const currentTimeFilterName = timeFilterName || params?.timeFilterName; const Footer = () => { let footerContent; From 0ef06ef323202ef950ce18be28da892d92743f61 Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 9 Dec 2025 16:59:38 +0100 Subject: [PATCH 02/16] chore: ignore generated asset manifest --- .gitignore | 3 +++ src/generated/asset-manifest.ts | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 src/generated/asset-manifest.ts diff --git a/.gitignore b/.gitignore index 76d8ee48..a75b80ea 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,9 @@ web_modules/ # TypeScript cache *.tsbuildinfo +# Generated files +src/generated/asset-manifest.ts + # Optional npm cache directory .npm diff --git a/src/generated/asset-manifest.ts b/src/generated/asset-manifest.ts deleted file mode 100644 index 3271841f..00000000 --- a/src/generated/asset-manifest.ts +++ /dev/null @@ -1,7 +0,0 @@ -// Auto-generated file - do not edit manually -// Run 'node scripts/generate-asset-manifest.js' to regenerate -// This file is generated from public/assets/ directory - -export const BANNERS = ['assets/banners/banner-1.jpg', 'assets/banners/banner-2.jpg', 'assets/banners/banner-3.gif', 'assets/banners/banner-4.png'] as const; - -export const NOT_FOUND_IMAGES = ['assets/not-found/not-found-1.png'] as const; From e2149ca02caf729f6d01d328105f435122b8649f Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 9 Dec 2025 17:05:01 +0100 Subject: [PATCH 03/16] feat(crypto wallets settings): add timestamp field --- .../crypto-wallets-setting/crypto-wallets-setting.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx index c89642ff..a4b5de47 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx @@ -132,6 +132,15 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { +
+ {_.capitalize(t('timestamp'))}: + setWalletsArrayProperty(selectedWallet, 'timestamp', Number(e.target.value))} + value={walletsArray[selectedWallet].timestamp || ''} + placeholder='Timestamp' + /> +
{_.capitalize(t('paste_signature'))}: Date: Tue, 9 Dec 2025 17:11:51 +0100 Subject: [PATCH 04/16] fix spacing and color --- .../settings-modal/account-settings/account-settings.module.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/settings-modal/account-settings/account-settings.module.css b/src/components/settings-modal/account-settings/account-settings.module.css index c7f0e3a6..7dbc1b69 100644 --- a/src/components/settings-modal/account-settings/account-settings.module.css +++ b/src/components/settings-modal/account-settings/account-settings.module.css @@ -36,7 +36,9 @@ } .deleteAccount { + margin-top: 10px; display: block; + color: red; } .setting .createAccount { From 112abe179521fe1da710f82aa6f42777d7053f28 Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 9 Dec 2025 17:12:01 +0100 Subject: [PATCH 05/16] fix translation component --- .../crypto-wallets-setting/crypto-wallets-setting.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx index a4b5de47..53888d5b 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx @@ -125,12 +125,12 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { i18nKey='copy_message_etherscan' components={{ // eslint-disable-next-line - 1: , + 1:
{_.capitalize(t('timestamp'))}: From dbf67f55b649fcfc6f6c0dc0579b7273e9219beb Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 9 Dec 2025 17:32:14 +0100 Subject: [PATCH 06/16] feat(crypto-wallets-setting): add CSS-based step numbering and reorganize delete button --- .../crypto-wallets-setting.module.css | 38 +++++++++++++++++++ .../crypto-wallets-setting.tsx | 18 +++++---- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css index 62011551..0b7268e9 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css @@ -21,6 +21,35 @@ .walletField { margin-top: 5px; margin-left: 5px; + position: relative; +} + +.timestampfield { + margin-left: 10px; +} + +.walletField[class*='step']::before { + margin-left: -5px; +} + +.walletField.step1::before { + content: '1. '; +} + +.walletField.step2::before { + content: '2. '; +} + +.walletField.step3::before { + content: '3. '; +} + +.walletField.step4::before { + content: '4. '; +} + +.save.step5::before { + content: '5. '; } .walletField input { @@ -61,4 +90,13 @@ .toggleWallet { margin-right: 7px; +} + +.deleteWalletContainer { + margin-top: 20px; + margin-left: 5px; +} + +.removeWallet { + color: red; } \ No newline at end of file diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx index 53888d5b..3fa2a48f 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx @@ -101,7 +101,7 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { const walletsInputs = walletsArray.length > 0 ? (
-
+
{_.capitalize(t('chain_ticker'))}: { placeholder='eth/sol/avax' />
-
+
{_.capitalize(t('wallet_address'))}: { placeholder='0x...' />
-
+
{
- {_.capitalize(t('timestamp'))}: + {_.capitalize(t('timestamp'))}: setWalletsArrayProperty(selectedWallet, 'timestamp', Number(e.target.value))} @@ -141,7 +141,7 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { placeholder='Timestamp' />
-
+
{_.capitalize(t('paste_signature'))}: { -
+
+ +
) : null; From 078de21839ba139413b9ae32ae83513661d44a85 Mon Sep 17 00:00:00 2001 From: plebeius Date: Tue, 9 Dec 2025 18:22:39 +0100 Subject: [PATCH 07/16] refactor(settings-modal): align avatar settings UI with crypto wallets Refactor avatar settings to match crypto wallets UI structure and styling. Use flexbox layout for consistent spacing, align input widths, use ErrorDisplay component for errors, and add delete avatar functionality with translations. --- public/translations/ar/default.json | 3 +- public/translations/bn/default.json | 3 +- public/translations/cs/default.json | 3 +- public/translations/da/default.json | 3 +- public/translations/de/default.json | 3 +- public/translations/el/default.json | 3 +- public/translations/en/default.json | 1 + public/translations/es/default.json | 3 +- public/translations/fa/default.json | 3 +- public/translations/fi/default.json | 3 +- public/translations/fil/default.json | 3 +- public/translations/fr/default.json | 3 +- public/translations/he/default.json | 3 +- public/translations/hi/default.json | 3 +- public/translations/hu/default.json | 3 +- public/translations/id/default.json | 3 +- public/translations/it/default.json | 3 +- public/translations/ja/default.json | 3 +- public/translations/ko/default.json | 3 +- public/translations/mr/default.json | 3 +- public/translations/nl/default.json | 3 +- public/translations/no/default.json | 3 +- public/translations/pl/default.json | 3 +- public/translations/pt/default.json | 3 +- public/translations/ro/default.json | 3 +- public/translations/ru/default.json | 3 +- public/translations/sq/default.json | 3 +- public/translations/sv/default.json | 3 +- public/translations/te/default.json | 3 +- public/translations/th/default.json | 3 +- public/translations/tr/default.json | 3 +- public/translations/uk/default.json | 3 +- public/translations/ur/default.json | 3 +- public/translations/vi/default.json | 3 +- public/translations/zh/default.json | 3 +- .../avatar-settings.module.css | 81 +++++++++++++------ .../avatar-settings/avatar-settings.tsx | 79 ++++++++++-------- .../crypto-wallets-setting.module.css | 11 ++- 38 files changed, 181 insertions(+), 93 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index fd5d3ecd..aa6b0ed2 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} مواضيع منذ {{currentTimeFilterName}} — [<1>عرض المزيد من المواضيع من السنة الماضية]", "moderator_of_this_board": "هذا المستخدم هو مشرف على هذا المنتدى", "administrator_of_this_board": "هذا المستخدم هو مسؤول عن هذا المنتدى", - "copy_content_id": "نسخ معرف المحتوى" + "copy_content_id": "نسخ معرف المحتوى", + "delete_avatar": "حذف الصورة الرمزية" } diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 4e230c99..fc0936dc 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} থ্রেড {{currentTimeFilterName}} থেকে — [<1>গত বছরের আরও থ্রেড দেখান]", "moderator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন মডারেটর", "administrator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন প্রশাসক", - "copy_content_id": "কনটেন্ট আইডি কপি করুন" + "copy_content_id": "কনটেন্ট আইডি কপি করুন", + "delete_avatar": "অবতার মুছুন" } diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index e1f7e5d8..80408ea4 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} příspěvků od {{currentTimeFilterName}} — [<1>Zobrazit více příspěvků z minulého roku]", "moderator_of_this_board": "Tento uživatel je moderátorem tohoto fóra", "administrator_of_this_board": "Tento uživatel je administrátorem tohoto fóra", - "copy_content_id": "kopírovat ID obsahu" + "copy_content_id": "kopírovat ID obsahu", + "delete_avatar": "Smazat avatar" } diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 46ceeb0e..c1f0f9a0 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} tråde siden {{currentTimeFilterName}} — [<1>Vis flere tråde fra sidste år]", "moderator_of_this_board": "Denne bruger er moderator for dette board", "administrator_of_this_board": "Denne bruger er administrator for dette board", - "copy_content_id": "kopier indhold-ID" + "copy_content_id": "kopier indhold-ID", + "delete_avatar": "Slet avatar" } diff --git a/public/translations/de/default.json b/public/translations/de/default.json index 854bd4c2..a05db211 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} Threads seit {{currentTimeFilterName}} — [<1>Mehr Threads vom letzten Jahr anzeigen]", "moderator_of_this_board": "Dieser Benutzer ist Moderator dieses Boards", "administrator_of_this_board": "Dieser Benutzer ist Administrator dieses Boards", - "copy_content_id": "Inhalts-ID kopieren" + "copy_content_id": "Inhalts-ID kopieren", + "delete_avatar": "Avatar löschen" } diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 81f2d598..5488c163 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} νήματα από {{currentTimeFilterName}} — [<1>Προβολή περισσότερων νημάτων από το περασμένο έτος]", "moderator_of_this_board": "Αυτός ο χρήστης είναι συντονιστής αυτού του πίνακα", "administrator_of_this_board": "Αυτός ο χρήστης είναι διαχειριστής αυτού του πίνακα", - "copy_content_id": "αντιγραφή ID περιεχομένου" + "copy_content_id": "αντιγραφή ID περιεχομένου", + "delete_avatar": "Διαγραφή avatar" } diff --git a/public/translations/en/default.json b/public/translations/en/default.json index 6e778db7..dfc3a109 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -245,6 +245,7 @@ "reset_changes": "Reset Changes", "crypto_address_yours": "Crypto address belongs to this account.", "delete_wallet": "Delete Wallet", + "delete_avatar": "Delete Avatar", "loading_board": "Loading board", "last_bumped": "Last Bumped", "threads_without_images_tip": "Only display threads that link to embeddable media", diff --git a/public/translations/es/default.json b/public/translations/es/default.json index 1ea2d451..c054ee03 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} hilos desde {{currentTimeFilterName}} — [<1>Ver más hilos del año pasado]", "moderator_of_this_board": "Este usuario es moderador de este tablero", "administrator_of_this_board": "Este usuario es administrador de este tablero", - "copy_content_id": "Copiar ID de contenido" + "copy_content_id": "Copiar ID de contenido", + "delete_avatar": "Eliminar avatar" } diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index efe055d4..baafe471 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} پست از {{currentTimeFilterName}} — [<1>نمایش بیشتر پست‌های سال گذشته]", "moderator_of_this_board": "این کاربر مدیر این انجمن است", "administrator_of_this_board": "این کاربر مدیرکل این انجمن است", - "copy_content_id": "کپی شناسه محتوا" + "copy_content_id": "کپی شناسه محتوا", + "delete_avatar": "حذف آواتار" } diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 5812e9ac..ddc88e44 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} ketjua sitten {{currentTimeFilterName}} — [<1>Näytä lisää viime vuoden ketjuja]", "moderator_of_this_board": "Tämä käyttäjä on tämän taulun moderaattori", "administrator_of_this_board": "Tämä käyttäjä on tämän taulun järjestelmänvalvoja", - "copy_content_id": "kopioi sisältö-ID" + "copy_content_id": "kopioi sisältö-ID", + "delete_avatar": "Poista avatar" } diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index cef59755..b10ede4b 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} mga thread mula {{currentTimeFilterName}} — [<1>Ipakita ang higit pang mga thread mula noong nakaraang taon]", "moderator_of_this_board": "Ang user na ito ay moderator ng board na ito", "administrator_of_this_board": "Ang user na ito ay administrator ng board na ito", - "copy_content_id": "kopyahin ang content ID" + "copy_content_id": "kopyahin ang content ID", + "delete_avatar": "Tanggalin ang avatar" } diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index bf427dff..2b2d4c26 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} fils depuis {{currentTimeFilterName}} — [<1>Afficher plus de fils de l'année dernière]", "moderator_of_this_board": "Cet utilisateur est modérateur de ce tableau", "administrator_of_this_board": "Cet utilisateur est administrateur de ce tableau", - "copy_content_id": "Copier l'ID du contenu" + "copy_content_id": "Copier l'ID du contenu", + "delete_avatar": "Supprimer l'avatar" } diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 71d414a1..0cdb8a05 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} חוטים מאז {{currentTimeFilterName}} — [<1>הצג עוד חוטים מהשנה שעברה]", "moderator_of_this_board": "משתמש זה הוא מנהל של הלוח הזה", "administrator_of_this_board": "משתמש זה הוא מנהל מערכת של הלוח הזה", - "copy_content_id": "העתק מזהה תוכן" + "copy_content_id": "העתק מזהה תוכן", + "delete_avatar": "מחק אווטר" } diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index a863332b..8c315d64 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} थ्रेड्स {{currentTimeFilterName}} से — [<1>पिछले साल के अधिक थ्रेड्स दिखाएं]", "moderator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का मॉडरेटर है", "administrator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का प्रशासक है", - "copy_content_id": "कंटेंट ID कॉपी करें" + "copy_content_id": "कंटेंट ID कॉपी करें", + "delete_avatar": "अवतार हटाएं" } diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 361d0ec3..a68c38dd 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} szál {{currentTimeFilterName}} óta — [<1>Több szál megjelenítése a múlt évből]", "moderator_of_this_board": "Ez a felhasználó ennek a táblának a moderátora", "administrator_of_this_board": "Ez a felhasználó ennek a táblának a rendszergazdája", - "copy_content_id": "tartalom ID másolása" + "copy_content_id": "tartalom ID másolása", + "delete_avatar": "Avatar törlése" } diff --git a/public/translations/id/default.json b/public/translations/id/default.json index ded3510c..019d411b 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} thread sejak {{currentTimeFilterName}} — [<1>Tampilkan lebih banyak thread dari tahun lalu]", "moderator_of_this_board": "Pengguna ini adalah moderator papan ini", "administrator_of_this_board": "Pengguna ini adalah administrator papan ini", - "copy_content_id": "salin ID konten" + "copy_content_id": "salin ID konten", + "delete_avatar": "Hapus avatar" } diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 20bbbd47..43f4fb34 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} thread da {{currentTimeFilterName}} — [<1>Mostra altri thread dell'anno scorso]", "moderator_of_this_board": "Questo utente è moderatore di questa bacheca", "administrator_of_this_board": "Questo utente è amministratore di questa bacheca", - "copy_content_id": "Copia ID contenuto" + "copy_content_id": "Copia ID contenuto", + "delete_avatar": "Elimina avatar" } diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 68febef2..69f32ac5 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} スレッド {{currentTimeFilterName}} から — [<1>去年のスレッドをさらに表示]", "moderator_of_this_board": "このユーザーはこのボードのモデレーターです", "administrator_of_this_board": "このユーザーはこのボードの管理者です", - "copy_content_id": "コンテンツIDをコピー" + "copy_content_id": "コンテンツIDをコピー", + "delete_avatar": "アバターを削除" } diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index b0def60b..409b0eb0 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} 스레드 {{currentTimeFilterName}} 이후 — [<1>작년의 스레드 더 보기]", "moderator_of_this_board": "이 사용자는 이 게시판의 관리자입니다", "administrator_of_this_board": "이 사용자는 이 게시판의 관리자입니다", - "copy_content_id": "콘텐츠 ID 복사" + "copy_content_id": "콘텐츠 ID 복사", + "delete_avatar": "아바타 삭제" } diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 34fda63c..209f71c5 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} ध糀ं {{currentTimeFilterName}} पासून — [<1>गेल्या वर्षातील आणखी थ्रेड्स दाखवा]", "moderator_of_this_board": "हा वापरकर्ता या बोर्डचा मॉडरेटर आहे", "administrator_of_this_board": "हा वापरकर्ता या बोर्डचा प्रशासक आहे", - "copy_content_id": "कंटेंट ID कॉपी करा" + "copy_content_id": "कंटेंट ID कॉपी करा", + "delete_avatar": "अवतार हटवा" } diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 1909770e..445c7b06 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} threads sinds {{currentTimeFilterName}} — [<1>Meer threads van afgelopen jaar tonen]", "moderator_of_this_board": "Deze gebruiker is moderator van dit bord", "administrator_of_this_board": "Deze gebruiker is beheerder van dit bord", - "copy_content_id": "kopieer inhoud-ID" + "copy_content_id": "kopieer inhoud-ID", + "delete_avatar": "Avatar verwijderen" } diff --git a/public/translations/no/default.json b/public/translations/no/default.json index ca400413..91279587 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} tråder siden {{currentTimeFilterName}} — [<1>Vis flere tråder fra forrige år]", "moderator_of_this_board": "Denne brukeren er moderator for dette tavlet", "administrator_of_this_board": "Denne brukeren er administrator for dette tavlet", - "copy_content_id": "kopier innhold-ID" + "copy_content_id": "kopier innhold-ID", + "delete_avatar": "Slett avatar" } diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 7fe844cf..25f5cc0c 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} wątki od {{currentTimeFilterName}} — [<1>Pokaż więcej wątków z zeszłego roku]", "moderator_of_this_board": "Ten użytkownik jest moderatorem tego forum", "administrator_of_this_board": "Ten użytkownik jest administratorem tego forum", - "copy_content_id": "skopiuj ID treści" + "copy_content_id": "skopiuj ID treści", + "delete_avatar": "Usuń avatar" } diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index a0ece426..960106cf 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} tópicos desde {{currentTimeFilterName}} — [<1>Mostrar mais tópicos do ano passado]", "moderator_of_this_board": "Este usuário é moderador deste quadro", "administrator_of_this_board": "Este usuário é administrador deste quadro", - "copy_content_id": "Copiar ID do conteúdo" + "copy_content_id": "Copiar ID do conteúdo", + "delete_avatar": "Excluir avatar" } diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 1d9f92e8..d83c6315 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} subiecte din {{currentTimeFilterName}} — [<1>Afișați mai multe subiecte de anul trecut]", "moderator_of_this_board": "Acest utilizator este moderator al acestui forum", "administrator_of_this_board": "Acest utilizator este administrator al acestui forum", - "copy_content_id": "copiați ID-ul conținutului" + "copy_content_id": "copiați ID-ul conținutului", + "delete_avatar": "Șterge avatar" } diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 6c812038..f0264f8e 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} темы с {{currentTimeFilterName}} — [<1>Показать больше тем с прошлого года]", "moderator_of_this_board": "Этот пользователь является модератором этого форума", "administrator_of_this_board": "Этот пользователь является администратором этого форума", - "copy_content_id": "копировать ID контента" + "copy_content_id": "копировать ID контента", + "delete_avatar": "Удалить аватар" } diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 990ce141..17bbe19c 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} tema nga {{currentTimeFilterName}} — [<1>Shfaq më shumë tema nga viti i kaluar]", "moderator_of_this_board": "Ky përdorues është moderator i këtij bordi", "administrator_of_this_board": "Ky përdorues është administrator i këtij bordi", - "copy_content_id": "kopjo ID e përmbajtjes" + "copy_content_id": "kopjo ID e përmbajtjes", + "delete_avatar": "Fshi avatarin" } diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 4108c506..288de1fc 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} trådar sedan {{currentTimeFilterName}} — [<1>Visa fler trådar från förra året]", "moderator_of_this_board": "Denna användare är moderator för detta forum", "administrator_of_this_board": "Denna användare är administratör för detta forum", - "copy_content_id": "kopiera innehålls-ID" + "copy_content_id": "kopiera innehålls-ID", + "delete_avatar": "Ta bort avatar" } diff --git a/public/translations/te/default.json b/public/translations/te/default.json index c574e05c..7f214fea 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} థ్రెడ్‌లు {{currentTimeFilterName}} నుండి — [<1>గత సంవత్సరం నుండి మరిన్ని థ్రెడ్‌లను చూపించండి]", "moderator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క మోడరేటర్", "administrator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క నిర్వాహకుడు", - "copy_content_id": "కంటెంట్ ID కాపీ చేయండి" + "copy_content_id": "కంటెంట్ ID కాపీ చేయండి", + "delete_avatar": "అవతార్ను తొలగించు" } diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 17799c5d..6ce20d84 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} กระทู้ตั้งแต่ {{currentTimeFilterName}} — [<1>แสดงกระทู้จากปีที่แล้วเพิ่มเติม]", "moderator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลของบอร์ดนี้", "administrator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลระบบของบอร์ดนี้", - "copy_content_id": "คัดลอก ID เนื้อหา" + "copy_content_id": "คัดลอก ID เนื้อหา", + "delete_avatar": "ลบอวตาร" } diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 9d26f691..7c77d465 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} konu {{currentTimeFilterName}} itibariyle — [<1>Geçen yıldan daha fazla konu göster]", "moderator_of_this_board": "Bu kullanıcı bu panonun moderatörüdür", "administrator_of_this_board": "Bu kullanıcı bu panonun yöneticisidir", - "copy_content_id": "içerik ID'sini kopyala" + "copy_content_id": "içerik ID'sini kopyala", + "delete_avatar": "Avatarı sil" } diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 430203fa..8fb1655b 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} тем з {{currentTimeFilterName}} — [<1>Показати більше тем з минулого року]", "moderator_of_this_board": "Цей користувач є модератором цього форуму", "administrator_of_this_board": "Цей користувач є адміністратором цього форуму", - "copy_content_id": "копіювати ID контенту" + "copy_content_id": "копіювати ID контенту", + "delete_avatar": "Видалити аватар" } diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 96b60bd3..c3539c1c 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} تھریڈز {{currentTimeFilterName}} سے — [<1>گزشتہ سال کے مزید تھریڈز دکھائیں]", "moderator_of_this_board": "یہ صارف اس بورڈ کا ماڈریٹر ہے", "administrator_of_this_board": "یہ صارف اس بورڈ کا منتظم ہے", - "copy_content_id": "مواد کی شناخت کاپی کریں" + "copy_content_id": "مواد کی شناخت کاپی کریں", + "delete_avatar": "اوتار حذف کریں" } diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index 696a1102..16cd76ed 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} chủ đề từ {{currentTimeFilterName}} — [<1>Hiển thị thêm các chủ đề từ năm ngoái]", "moderator_of_this_board": "Người dùng này là người điều hành của bảng này", "administrator_of_this_board": "Người dùng này là quản trị viên của bảng này", - "copy_content_id": "sao chép ID nội dung" + "copy_content_id": "sao chép ID nội dung", + "delete_avatar": "Xóa avatar" } diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 6ce7a1ba..0c70a188 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -296,5 +296,6 @@ "more_threads_last_year": "{{count}} 主题自 {{currentTimeFilterName}} — [<1>显示更多去年的主题]", "moderator_of_this_board": "此用户是此版块的版主", "administrator_of_this_board": "此用户是此版块的管理员", - "copy_content_id": "复制内容ID" + "copy_content_id": "复制内容ID", + "delete_avatar": "删除头像" } diff --git a/src/components/settings-modal/avatar-settings/avatar-settings.module.css b/src/components/settings-modal/avatar-settings/avatar-settings.module.css index 409947bb..33433cbe 100644 --- a/src/components/settings-modal/avatar-settings/avatar-settings.module.css +++ b/src/components/settings-modal/avatar-settings/avatar-settings.module.css @@ -26,61 +26,94 @@ } .avatarSettingsForm { - padding: 10px 0 15px 10px; + padding: 5px 0 15px 10px; } -.avatarSettingsForm input { - width: 200px; +.settingField { + margin-top: 5px; + margin-left: 5px; + position: relative; + display: flex; + align-items: center; + flex-wrap: nowrap; +} + +.settingField input { + flex: 0 1 200px; + min-width: 0; + max-width: 200px; padding: 2px; + margin-left: 5px; + box-shadow: var(--box-shadow-input); } -.avatarSettingInput input { - margin-bottom: 10px; - display: block; +.settingField[class*='step']::before { + margin-left: -5px; } -.avatarSettingInput a { - color: var(--link-primary); +.settingField.step1::before { + content: '1.\00a0'; } -.avatarSettingInput a { +.settingField.step2::before { + content: '2.\00a0'; +} + +.settingField.step3::before { + content: '3.\00a0'; +} + +.settingField.step4::before { + content: '4.\00a0'; +} + +.settingField a { color: var(--post-link-text-color); text-decoration: var(--post-content-link-text-decoration); } -.avatarSettingInput a:hover { +.settingField a:hover { color: var(--post-link-text-color-hover); text-decoration: var(--post-content-link-text-decoration-hover); } .settingTitle { - font-style: italic; - text-transform: lowercase; + font-style: inherit; + text-transform: none; + white-space: nowrap; + flex-shrink: 0; } -.copyMessage { - padding-bottom: 10px; +.timestampfield { + margin-left: 10px; } -.pasteSignature span { - display: block; -} - -.pasteSignature button { +.buttons { + margin-top: 10px; margin-left: 5px; } +.save { + margin-right: 5px; +} + .state { + text-transform: lowercase; padding-top: 10px; padding-left: 10px; max-width: 300px; color: var(--post-mobile-abbr-text-color); } -.copyMessage a { - color: var(--text-primary); +.error { + color: red; } -.copyMessage a:hover { - text-decoration: underline; -} \ No newline at end of file +.deleteAvatarContainer { + margin-top: 20px; + margin-left: 5px; +} + +.removeAvatar { + color: red; +} diff --git a/src/components/settings-modal/avatar-settings/avatar-settings.tsx b/src/components/settings-modal/avatar-settings/avatar-settings.tsx index f3b03acc..1fc7e242 100644 --- a/src/components/settings-modal/avatar-settings/avatar-settings.tsx +++ b/src/components/settings-modal/avatar-settings/avatar-settings.tsx @@ -4,6 +4,8 @@ import { setAccount, useAccount, useAuthorAvatar } from '@plebbit/plebbit-react- import styles from './avatar-settings.module.css'; import { Trans, useTranslation } from 'react-i18next'; import LoadingEllipsis from '../../loading-ellipsis'; +import ErrorDisplay from '../../error-display/error-display'; +import _ from 'lodash'; const AvatarPreview = ({ avatar }: any) => { const { t } = useTranslation(); @@ -31,7 +33,7 @@ const AvatarPreview = ({ avatar }: any) => {
{state !== 'succeeded' && account?.author?.avatar && (
- {!error && stateText} {error && error?.message} + {!error && stateText} {error && }
)} @@ -111,15 +113,26 @@ const AvatarSettings = () => { return alert(t('missing_signature')); } setAccount({ ...account, author: { ...account?.author, avatar } }); - alert(`saved`); + alert(t('saved')); + }; + + const _removeAvatar = () => { + if (window.confirm(t('delete_confirm', { value: 'avatar', interpolation: { escapeValue: false } }))) { + setAccount({ ...account, author: { ...account?.author, avatar: undefined } }); + setChainTicker(undefined); + setTokenAddress(undefined); + setTokenId(undefined); + setTimestamp(undefined); + setSignature(undefined); + } }; return (
-
- {t('chain_ticker')} +
+ {_.capitalize(t('chain_ticker'))}: { onChange={(e) => setChainTicker(e.target.value)} />
-
+
{ ), }} /> + :{' '} { onChange={(e) => setTokenAddress(e.target.value)} />
-
- {t('token_id')} - setTokenId(e.target.value)} - /> +
+ + , + // eslint-disable-next-line + 2: , + }} + /> +
- -
- {t('timestamp')} +
+ {_.capitalize(t('timestamp'))}: setTimestamp(Number(e.target.value))} />
-
- {t('paste_signature')} +
+ {_.capitalize(t('paste_signature'))}: { defaultValue={account?.author?.avatar?.signature?.signature} onChange={(e) => setSignature(e.target.value)} /> - +
+
+ +
+
+
diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css index 0b7268e9..4a599555 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.module.css @@ -52,9 +52,16 @@ content: '5. '; } -.walletField input { - width: 200px; +.walletField { + position: relative; +} + +.settingField input { + flex: 1 1 auto; + min-width: 0; + max-width: 100%; padding: 2px; + margin-left: 5px; box-shadow: var(--box-shadow-input); } From 141bc984e60ad3c2ff94f25966923ca0301eecaf Mon Sep 17 00:00:00 2001 From: plebeius Date: Fri, 12 Dec 2025 12:39:30 +0100 Subject: [PATCH 08/16] fix eslint --- .../crypto-wallets-setting/crypto-wallets-setting.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx index 3fa2a48f..9de08b42 100644 --- a/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx +++ b/src/components/settings-modal/crypto-wallets-setting/crypto-wallets-setting.tsx @@ -124,8 +124,8 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { copyMessageToSign(walletsArray[selectedWallet], selectedWallet)} />, + // eslint-disable-next-line 2:
, }} values={{ copy: hasCopied ? t('copied') : t('copy') }} From 186b89597000a7fa266b83a9f635ebf9c41805f0 Mon Sep 17 00:00:00 2001 From: plebeius Date: Fri, 12 Dec 2025 13:05:41 +0100 Subject: [PATCH 09/16] refactor: simplify disclaimer modal to focus on age verification --- .../disclaimer-modal/disclaimer-modal.tsx | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/components/disclaimer-modal/disclaimer-modal.tsx b/src/components/disclaimer-modal/disclaimer-modal.tsx index 9c74d4c2..f0683e8b 100644 --- a/src/components/disclaimer-modal/disclaimer-modal.tsx +++ b/src/components/disclaimer-modal/disclaimer-modal.tsx @@ -38,22 +38,11 @@ const DisclaimerModal = () => {
-

To access boards on 5chan (the "website"), you understand and agree to the following:

+

This web application may contain content for mature audiences only. By clicking "Accept," you confirm that:

+
    -
  1. - The content on boards may be for mature audiences only and may not be suitable for minors. Boards are created and moderated by individual owners who run - their own nodes. If you are a minor or it is illegal for you to access mature content, do not proceed. -
  2. -
  3. - This website is presented to you AS IS, with no warranty, express or implied. By clicking "Accept," you agree that 5chan is a decentralized, - serverless, and adminless platform. 5chan is open-source software (GPLv2 license) with no owner—anyone can host their own instance on any domain. The - operator of this domain is merely hosting the web app and does not own, create, moderate, or control 5chan or any board content, which is stored - peer-to-peer and generated by board owners and users. -
  4. -
  5. - Each board has its own rules set by its owner. You agree to comply with the individual board's rules, which you can find on each board's page. - There are no global rules as 5chan has no central authority. -
  6. +
  7. You are at least 18 years old (or the age of majority in your jurisdiction).
  8. +
  9. It is legal for you to view such content in your location.
From 970db2a4097538f8c9e2b3fc3ac04b20220fadc4 Mon Sep 17 00:00:00 2001 From: plebeius Date: Fri, 12 Dec 2025 22:20:58 +0100 Subject: [PATCH 10/16] chore: add vitest and jsdom dev dependencies --- package.json | 2 + yarn.lock | 429 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 426 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 84a9fff7..80da78c7 100644 --- a/package.json +++ b/package.json @@ -121,6 +121,7 @@ "eslint-plugin-react-hooks": "5.2.0", "husky": "4.3.8", "isomorphic-fetch": "3.0.0", + "jsdom": "27.3.0", "lint-staged": "12.3.8", "progress": "2.0.3", "react-grab": "0.0.18", @@ -130,6 +131,7 @@ "vite-plugin-eslint": "1.8.1", "vite-plugin-node-polyfills": "0.23.0", "vite-plugin-pwa": "0.21.1", + "vitest": "4.0.15", "wait-on": "9.0.3" }, "resolutions": { diff --git a/yarn.lock b/yarn.lock index 5292c23e..9974ae75 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,11 @@ resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.2.0.tgz#7a03314684dd6572b7dfa89e68ce31d60286854d" integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A== +"@acemir/cssom@^0.9.28": + version "0.9.29" + resolved "https://registry.yarnpkg.com/@acemir/cssom/-/cssom-0.9.29.tgz#3ae97903c49b388a5ff5d231a7a6d42a32e5b148" + integrity sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA== + "@achingbrain/http-parser-js@^0.5.9": version "0.5.9" resolved "https://registry.yarnpkg.com/@achingbrain/http-parser-js/-/http-parser-js-0.5.9.tgz#708aab4a46f7369f9f33d2a836fb37f5027f0038" @@ -63,6 +68,33 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@asamuzakjp/css-color@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@asamuzakjp/css-color/-/css-color-4.1.0.tgz#4c8c6f48ed2e5c1ad9cc1aa23c80d665e56dd458" + integrity sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-color-parser" "^3.1.0" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + lru-cache "^11.2.2" + +"@asamuzakjp/dom-selector@^6.7.6": + version "6.7.6" + resolved "https://registry.yarnpkg.com/@asamuzakjp/dom-selector/-/dom-selector-6.7.6.tgz#9cd7671a61a9cb490852ed6a441b3b0950aab945" + integrity sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg== + dependencies: + "@asamuzakjp/nwsapi" "^2.3.9" + bidi-js "^1.0.3" + css-tree "^3.1.0" + is-potential-custom-element-name "^1.0.1" + lru-cache "^11.2.4" + +"@asamuzakjp/nwsapi@^2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz#ad5549322dfe9d153d4b4dd6f7ff2ae234b06e24" + integrity sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q== + "@assemblyscript/loader@^0.9.4": version "0.9.4" resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" @@ -1366,6 +1398,39 @@ "@types/conventional-commits-parser" "^5.0.0" chalk "^5.3.0" +"@csstools/color-helpers@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.1.0.tgz#106c54c808cabfd1ab4c602d8505ee584c2996ef" + integrity sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA== + +"@csstools/css-calc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" + integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== + +"@csstools/css-color-parser@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz#4e386af3a99dd36c46fef013cfe4c1c341eed6f0" + integrity sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA== + dependencies: + "@csstools/color-helpers" "^5.1.0" + "@csstools/css-calc" "^2.1.4" + +"@csstools/css-parser-algorithms@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" + integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== + +"@csstools/css-syntax-patches-for-csstree@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz#96e8bd829dea29da6460ac7568ee922f48ecc382" + integrity sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q== + +"@csstools/css-tokenizer@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" + integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== + "@develar/schema-utils@~2.6.5": version "2.6.5" resolved "https://registry.yarnpkg.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz#3ece22c5838402419a6e0425f85742b961d9b6c6" @@ -4874,6 +4939,14 @@ "@types/node" "*" "@types/responselike" "^1.0.0" +"@types/chai@^5.2.2": + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.3.tgz#8e9cd9e1c3581fa6b341a5aed5588eb285be0b4a" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== + dependencies: + "@types/deep-eql" "*" + assertion-error "^2.0.1" + "@types/connect@^3.4.33": version "3.4.38" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" @@ -4895,6 +4968,11 @@ dependencies: "@types/ms" "*" +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + "@types/dns-packet@*": version "5.6.5" resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" @@ -5462,6 +5540,64 @@ "@types/babel__core" "^7.20.5" react-refresh "^0.14.2" +"@vitest/expect@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-4.0.15.tgz#8e7e1daf54b7bc9ef6db4d989563c1d55ce424f5" + integrity sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w== + dependencies: + "@standard-schema/spec" "^1.0.0" + "@types/chai" "^5.2.2" + "@vitest/spy" "4.0.15" + "@vitest/utils" "4.0.15" + chai "^6.2.1" + tinyrainbow "^3.0.3" + +"@vitest/mocker@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-4.0.15.tgz#5aca5f9c4691efdd2397763efcbde9c680f79caf" + integrity sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ== + dependencies: + "@vitest/spy" "4.0.15" + estree-walker "^3.0.3" + magic-string "^0.30.21" + +"@vitest/pretty-format@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-4.0.15.tgz#2cd8e1bcb4fc8e24124d889a23d1140aecca5744" + integrity sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A== + dependencies: + tinyrainbow "^3.0.3" + +"@vitest/runner@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-4.0.15.tgz#fdd4e5d05a4c6b73be9746845d29c7329c37ae3b" + integrity sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw== + dependencies: + "@vitest/utils" "4.0.15" + pathe "^2.0.3" + +"@vitest/snapshot@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-4.0.15.tgz#52f686d7f314bae53657c1404f8ce7b0b99d2cec" + integrity sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g== + dependencies: + "@vitest/pretty-format" "4.0.15" + magic-string "^0.30.21" + pathe "^2.0.3" + +"@vitest/spy@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-4.0.15.tgz#57987c857c3f1bcea5513b379e8dfc8f06b37b8f" + integrity sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw== + +"@vitest/utils@4.0.15": + version "4.0.15" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-4.0.15.tgz#2e36d5c34656a1ce1a057d8595a835bff524f1bc" + integrity sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA== + dependencies: + "@vitest/pretty-format" "4.0.15" + tinyrainbow "^3.0.3" + "@xmldom/xmldom@^0.8.8": version "0.8.11" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.11.tgz#b79de2d67389734c57c52595f7a7305e30c2d608" @@ -5550,7 +5686,7 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" -agent-base@^7.1.2: +agent-base@^7.1.0, agent-base@^7.1.2: version "7.1.4" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== @@ -5875,6 +6011,11 @@ assert@2.1.0, assert@^2.0.0: object.assign "^4.1.4" util "^0.12.5" +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + ast-types-flow@^0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" @@ -6068,6 +6209,13 @@ better-sqlite3@12.4.1: bindings "^1.5.0" prebuild-install "^7.1.1" +bidi-js@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.3.tgz#6f8bcf3c877c4d9220ddf49b9bb6930c88f877d2" + integrity sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== + dependencies: + require-from-string "^2.0.2" + big-integer@1.6.x: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" @@ -6608,6 +6756,11 @@ ccount@^2.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== +chai@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-6.2.1.tgz#d1e64bc42433fbee6175ad5346799682060b5b6a" + integrity sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg== + chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -7288,6 +7441,14 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" +css-tree@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.1.0.tgz#7aabc035f4e66b5c86f54570d55e05b1346eb0fd" + integrity sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== + dependencies: + mdn-data "2.12.2" + source-map-js "^1.0.1" + css-what@^6.1.0: version "6.2.2" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" @@ -7307,6 +7468,15 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" +cssstyle@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-5.3.4.tgz#75635973c06998f36b3224cfc4b11b045e224f75" + integrity sha512-KyOS/kJMEq5O9GdPnaf82noigg5X5DYn0kZPJTaAsCUaBizp6Xa1y9D4Qoqf/JazEXWuruErHgVXwjN5391ZJw== + dependencies: + "@asamuzakjp/css-color" "^4.1.0" + "@csstools/css-syntax-patches-for-csstree" "1.0.14" + css-tree "^3.1.0" + csstype@^3.0.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -7352,6 +7522,14 @@ dargs@^8.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-8.1.0.tgz#a34859ea509cbce45485e5aa356fef70bfcc7272" integrity sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw== +data-urls@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-6.0.0.tgz#95a7943c8ac14c1d563b771f2621cc50e8ec7744" + integrity sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA== + dependencies: + whatwg-mimetype "^4.0.0" + whatwg-url "^15.0.0" + data-view-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" @@ -7455,6 +7633,11 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decimal.js@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + decode-named-character-reference@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" @@ -8125,6 +8308,11 @@ es-iterator-helpers@^1.2.1: iterator.prototype "^1.1.4" safe-array-concat "^1.1.3" +es-module-lexer@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" @@ -8710,6 +8898,11 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +expect-type@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.3.0.tgz#0d58ed361877a31bbc4dd6cf71bbfef7faf6bd68" + integrity sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA== + expect@^29.0.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" @@ -9704,6 +9897,13 @@ hpagent@1.2.0: resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== +html-encoding-sniffer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" + integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== + dependencies: + whatwg-encoding "^3.1.1" + html-parse-stringify@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" @@ -9749,6 +9949,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-proxy@1.18.1: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" @@ -10397,6 +10605,11 @@ is-plain-obj@^4.0.0, is-plain-obj@^4.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + is-promise@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -11073,6 +11286,32 @@ js-yaml@4.1.1, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsdom@27.3.0: + version "27.3.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-27.3.0.tgz#7f08340b047ab3555ac7d8128fcf1feeca4d8587" + integrity sha512-GtldT42B8+jefDUC4yUKAvsaOrH7PDHmZxZXNgF2xMmymjUbRYJvpAybZAKEmXDGTM0mCsz8duOa4vTm5AY2Kg== + dependencies: + "@acemir/cssom" "^0.9.28" + "@asamuzakjp/dom-selector" "^6.7.6" + cssstyle "^5.3.4" + data-urls "^6.0.0" + decimal.js "^10.6.0" + html-encoding-sniffer "^4.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.6" + is-potential-custom-element-name "^1.0.1" + parse5 "^8.0.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^6.0.0" + w3c-xmlserializer "^5.0.0" + webidl-conversions "^8.0.0" + whatwg-encoding "^3.1.1" + whatwg-mimetype "^4.0.0" + whatwg-url "^15.1.0" + ws "^8.18.3" + xml-name-validator "^5.0.0" + jsesc@^3.0.2, jsesc@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" @@ -11515,6 +11754,11 @@ lru-cache@^11.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.2.tgz#40fd37edffcfae4b2940379c0722dc6eeaa75f24" integrity sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg== +lru-cache@^11.2.2, lru-cache@^11.2.4: + version "11.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d" + integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -11553,6 +11797,13 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.30.21: + version "0.30.21" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.21.tgz#56763ec09a0fa8091df27879fd94d19078c00d91" + integrity sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + magic-string@^0.30.3: version "0.30.19" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" @@ -11812,6 +12063,11 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: dependencies: "@types/mdast" "^3.0.0" +mdn-data@2.12.2: + version "2.12.2" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.12.2.tgz#9ae6c41a9e65adf61318b32bff7b64fbfb13f8cf" + integrity sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== + memoizee@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" @@ -12840,6 +13096,11 @@ object.values@^1.1.6, object.values@^1.2.1: define-properties "^1.2.1" es-object-atoms "^1.0.0" +obug@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/obug/-/obug-2.1.1.tgz#2cba74ff241beb77d63055ddf4cd1e9f90b538be" + integrity sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -13156,6 +13417,13 @@ parse5@^7.0.0, parse5@^7.3.0: dependencies: entities "^6.0.0" +parse5@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-8.0.0.tgz#aceb267f6b15f9b6e6ba9e35bfdd481fc2167b12" + integrity sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA== + dependencies: + entities "^6.0.0" + path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -13207,6 +13475,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + pbkdf2@^3.1.2, pbkdf2@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366" @@ -13319,7 +13592,7 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== -postcss@^8.5.3: +postcss@^8.5.3, postcss@^8.5.6: version "8.5.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== @@ -14131,7 +14404,7 @@ rollup@^2.43.1, rollup@^2.77.2: optionalDependencies: fsevents "~2.3.2" -rollup@^4.34.9: +rollup@^4.34.9, rollup@^4.43.0: version "4.53.3" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.53.3.tgz#dbc8cd8743b38710019fb8297e8d7a76e3faa406" integrity sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA== @@ -14285,6 +14558,13 @@ sax@>=0.6.0, sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + scheduler@^0.26.0: version "0.26.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337" @@ -14467,6 +14747,11 @@ side-channel@^1.0.4, side-channel@^1.1.0: side-channel-map "^1.0.1" side-channel-weakmap "^1.0.2" +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" @@ -14613,7 +14898,7 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -source-map-js@^1.2.1: +source-map-js@^1.0.1, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -14740,11 +15025,21 @@ stack-utils@^2.0.3, stack-utils@^2.0.6: dependencies: escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + stat-mode@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== +std-env@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.10.0.tgz#d810b27e3a073047b2b5e40034881f5ea6f9c83b" + integrity sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg== + steno@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/steno/-/steno-4.0.2.tgz#9bd9b0ffc226a1f9436f29132c8b8e7199d22c50" @@ -15066,6 +15361,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + tabbable@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" @@ -15239,6 +15539,11 @@ tiny-typed-emitter@2.1.0: resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== +tinybench@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.9.0.tgz#103c9f8ba6d7237a47ab6dd1dcff77251863426b" + integrity sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg== + tinycache@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/tinycache/-/tinycache-1.1.2.tgz#4a0cde5390105135140c6b1251d377c0fbefd3d5" @@ -15246,7 +15551,12 @@ tinycache@1.1.2: dependencies: js-sizeof "0.0.1" -tinyglobby@^0.2.10, tinyglobby@^0.2.13: +tinyexec@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.2.tgz#bdd2737fe2ba40bd6f918ae26642f264b99ca251" + integrity sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg== + +tinyglobby@^0.2.10, tinyglobby@^0.2.13, tinyglobby@^0.2.15: version "0.2.15" resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== @@ -15254,6 +15564,23 @@ tinyglobby@^0.2.10, tinyglobby@^0.2.13: fdir "^6.5.0" picomatch "^4.0.3" +tinyrainbow@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-3.0.3.tgz#984a5b1c1b25854a9b6bccbe77964d0593d1ea42" + integrity sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q== + +tldts-core@^7.0.19: + version "7.0.19" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.19.tgz#9dd8a457a09b4e65c8266c029f1847fa78dead20" + integrity sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A== + +tldts@^7.0.5: + version "7.0.19" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.19.tgz#84cd7a7f04e68ec93b93b106fac038c527b99368" + integrity sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA== + dependencies: + tldts-core "^7.0.19" + tmp-promise@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" @@ -15289,6 +15616,13 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tough-cookie@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.0.tgz#11e418b7864a2c0d874702bc8ce0f011261940e5" + integrity sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w== + dependencies: + tldts "^7.0.5" + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -15296,6 +15630,13 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-6.0.0.tgz#f5a1ae546a0adb32a277a2278d0d17fa2f9093e6" + integrity sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw== + dependencies: + punycode "^2.3.1" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -16025,6 +16366,46 @@ vite@6.4.1: optionalDependencies: fsevents "~2.3.3" +"vite@^6.0.0 || ^7.0.0": + version "7.2.7" + resolved "https://registry.yarnpkg.com/vite/-/vite-7.2.7.tgz#0789a4c3206081699f34a9ecca2dda594a07478e" + integrity sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ== + dependencies: + esbuild "^0.25.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.15" + optionalDependencies: + fsevents "~2.3.3" + +vitest@4.0.15: + version "4.0.15" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-4.0.15.tgz#bb65e8289d49c89bc3c1dba8e1bf9c13f039c6b0" + integrity sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA== + dependencies: + "@vitest/expect" "4.0.15" + "@vitest/mocker" "4.0.15" + "@vitest/pretty-format" "4.0.15" + "@vitest/runner" "4.0.15" + "@vitest/snapshot" "4.0.15" + "@vitest/spy" "4.0.15" + "@vitest/utils" "4.0.15" + es-module-lexer "^1.7.0" + expect-type "^1.2.2" + magic-string "^0.30.21" + obug "^2.1.1" + pathe "^2.0.3" + picomatch "^4.0.3" + std-env "^3.10.0" + tinybench "^2.9.0" + tinyexec "^1.0.2" + tinyglobby "^0.2.15" + tinyrainbow "^3.0.3" + vite "^6.0.0 || ^7.0.0" + why-is-node-running "^2.3.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -16035,6 +16416,13 @@ void-elements@3.1.0: resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== +w3c-xmlserializer@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" + integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== + dependencies: + xml-name-validator "^5.0.0" + wait-on@9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-9.0.3.tgz#3ea858db0b854039e6aff5f323885aaef25e32bf" @@ -16095,6 +16483,11 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-8.0.0.tgz#821c92aa4f88d88a31264d887e244cb9655690c6" + integrity sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA== + webpack-virtual-modules@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" @@ -16117,6 +16510,14 @@ whatwg-mimetype@^4.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== +whatwg-url@^15.0.0, whatwg-url@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-15.1.0.tgz#5c433439b9a5789eeb3806bbd0da89a8bd40b8d7" + integrity sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g== + dependencies: + tr46 "^6.0.0" + webidl-conversions "^8.0.0" + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -16213,6 +16614,14 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +why-is-node-running@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz#a3f69a97107f494b3cdc3bdddd883a7d65cebf04" + integrity sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -16454,6 +16863,11 @@ ws@^7.5.10: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +xml-name-validator@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" + integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== + xml2js@^0.6.0, xml2js@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" @@ -16472,6 +16886,11 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xtend@^4.0.0, xtend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" From 51d90668c746028973e6a8a1c732abb6fc18e22d Mon Sep 17 00:00:00 2001 From: plebeius Date: Fri, 12 Dec 2025 22:38:08 +0100 Subject: [PATCH 11/16] add missing tokenId field to avatar settings --- .../avatar-settings/avatar-settings.module.css | 4 ++++ .../avatar-settings/avatar-settings.tsx | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/settings-modal/avatar-settings/avatar-settings.module.css b/src/components/settings-modal/avatar-settings/avatar-settings.module.css index 33433cbe..60065e08 100644 --- a/src/components/settings-modal/avatar-settings/avatar-settings.module.css +++ b/src/components/settings-modal/avatar-settings/avatar-settings.module.css @@ -67,6 +67,10 @@ content: '4.\00a0'; } +.settingField.step5::before { + content: '5.\00a0'; +} + .settingField a { color: var(--post-link-text-color); text-decoration: var(--post-content-link-text-decoration); diff --git a/src/components/settings-modal/avatar-settings/avatar-settings.tsx b/src/components/settings-modal/avatar-settings/avatar-settings.tsx index 1fc7e242..dd7f2f0a 100644 --- a/src/components/settings-modal/avatar-settings/avatar-settings.tsx +++ b/src/components/settings-modal/avatar-settings/avatar-settings.tsx @@ -172,6 +172,18 @@ const AvatarSettings = () => { />
+ Token ID: + setTokenId(e.target.value)} + /> +
+
{ onChange={(e) => setTimestamp(Number(e.target.value))} />
-
+
{_.capitalize(t('paste_signature'))}: Date: Sun, 14 Dec 2025 13:20:38 +0100 Subject: [PATCH 12/16] update homepage intro text --- public/translations/ar/default.json | 2 +- public/translations/bn/default.json | 2 +- public/translations/cs/default.json | 2 +- public/translations/da/default.json | 2 +- public/translations/de/default.json | 2 +- public/translations/el/default.json | 2 +- public/translations/en/default.json | 2 +- public/translations/es/default.json | 2 +- public/translations/fa/default.json | 2 +- public/translations/fi/default.json | 2 +- public/translations/fil/default.json | 2 +- public/translations/fr/default.json | 2 +- public/translations/he/default.json | 2 +- public/translations/hi/default.json | 2 +- public/translations/hu/default.json | 2 +- public/translations/id/default.json | 2 +- public/translations/it/default.json | 2 +- public/translations/ja/default.json | 2 +- public/translations/ko/default.json | 2 +- public/translations/mr/default.json | 2 +- public/translations/nl/default.json | 2 +- public/translations/no/default.json | 2 +- public/translations/pl/default.json | 2 +- public/translations/pt/default.json | 2 +- public/translations/ro/default.json | 2 +- public/translations/ru/default.json | 2 +- public/translations/sq/default.json | 2 +- public/translations/sv/default.json | 2 +- public/translations/te/default.json | 2 +- public/translations/th/default.json | 2 +- public/translations/tr/default.json | 2 +- public/translations/uk/default.json | 2 +- public/translations/ur/default.json | 2 +- public/translations/vi/default.json | 2 +- public/translations/zh/default.json | 2 +- 35 files changed, 35 insertions(+), 35 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index aa6b0ed2..52df61f8 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "ما هو 5chan؟", "go": "اذهب", "or": "أو", - "5chan_description": "5chan هو بديل لـ 4chan موزع، بدون خادم، بدون مسؤولين، ومفتوح المصدر، حيث يمكن لأي شخص إنشاء وامتلاك منتديات غير محدودة بشكل تشفيري. جميع المنتديات مستضافة ذاتياً من قبل أصحابها، الذين يشغلون عقد <1>plebbit التي يتصل بها المستخدمون، نقطة لنقطة. جميع البيانات نصية فقط، بما في ذلك الروابط لتحميل الوسائط/التضمينات. لا تتردد في النقر فوق منتدى أدناه الذي يهمك والانضمام فورًا!", + "5chan_description": "5chan هو بديل لـ 4chan بدون خوادم، بدون إدارة، لامركزي ومفتوح المصدر، حيث يمكن لأي شخص إنشاء وامتلاك عدد غير محدود من المنتديات بشكل مشفر. جميع المنتديات مستضافة ومراقبة من قبل مالكيها، الذين يديرون عقدًا يتصل بها المستخدمون ويشاركونها، من نظير إلى نظير. جميع البيانات نصية فقط، بما في ذلك الروابط لتضمين الصور. لا تتردد في النقر على منتدى أدناه يثير اهتمامك والبدء مباشرة!", "no_global_rules_info": "يمكنك دائمًا الاتصال بأي منتدى، بشكل كامل P2P، لا يمكن لأحد إيقافك. ببساطة الصق عنوانه في حقل البحث أعلاه.", "boards": "منتديات", "popular_threads": "المواضيع الشائعة", diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index fc0936dc..2fb429d2 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan কি?", "go": "যাও", "or": "অথবা", - "5chan_description": "5chan একটি সার্ভারলেস, অ্যাডমিনলেস, ডিসেন্ট্রালাইজড এবং ওপেন-সোর্স 4chan বিকল্প যেখানে কেউই অসীম বোর্ড তৈরি এবং ক্রিপ্টোগ্রাফিকভাবে মালিকত্ব করতে পারেন। সমস্ত বোর্ড তাদের মালিকদের দ্বারা স্ব-হোস্ট করা হয়, যারা <1>plebbit নোড চালায় যেগুলিতে ব্যবহারকারীরা পিয়ার-টু-পিয়ার সংযোগ করে। সমস্ত ডেটা শুধুমাত্র টেক্সট, মিডিয়া/এমবেড লোড করার লিংক সহ। আপনি যেটা আপনার সাথে আগ্রহী তার নিচে একটি বোর্ডে ক্লিক করে যথাযথভাবে যোগদান করতে পারেন!", + "5chan_description": "5chan হল একটি সার্ভারহীন, অ্যাডমিনহীন, বিকেন্দ্রীকৃত এবং ওপেন-সোর্স 4chan বিকল্প, যেখানে যে কেউ সীমাহীন বোর্ড তৈরি করতে এবং ক্রিপ্টোগ্রাফিকভাবে মালিকানা নিতে পারে। সমস্ত বোর্ড তাদের মালিকদের দ্বারা হোস্ট এবং মডারেট করা হয়, যারা নোড চালায় যেখানে ব্যবহারকারীরা সংযুক্ত হয় এবং সিড করে, পিয়ার-টু-পিয়ার। সমস্ত ডেটা শুধুমাত্র পাঠ্য, এমবেড ইমেজের লিঙ্ক সহ। নীচে একটি বোর্ডে ক্লিক করতে নির্দ্বিধায় যা আপনাকে আগ্রহী করে এবং সরাসরি শুরু করুন!", "no_global_rules_info": "আপনি সবসময় যেকোনো বোর্ডে সংযোগ করতে পারেন, সম্পূর্ণ P2P, কেউ আপনাকে থামাতে পারে না। উপরের সার্চ ফিল্ডে এর ঠিকানা পেস্ট করুন।", "boards": "বোর্ডসমূহ", "popular_threads": "জনপ্রিয় থ্রেডগুলি", diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index 80408ea4..e074a9c1 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Co je 5chan?", "go": "jít", "or": "nebo", - "5chan_description": "5chan je decentralizovaná alternativa 4chan bez serveru, bez administrátorů, open-source, kde si každý může vytvořit a kryptograficky vlastnit neomezené nástěnky. Všechny nástěnky jsou hostovány jejich vlastníky, kteří provozují <1>plebbit uzly, ke kterým se uživatelé připojují peer-to-peer. Všechna data jsou pouze textová, včetně odkazů pro načítání médií/embedů. Neváhejte kliknout na nástěnku níže, která vás zajímá, a okamžitě se připojit!", + "5chan_description": "5chan je bezserverová, bez administrátora, decentralizovaná a open-source alternativa k 4chan, kde kdokoli může vytvářet a kryptograficky vlastnit neomezené desky. Všechny desky jsou hostovány a moderovány jejich majiteli, kteří provozují uzly, ke kterým se uživatelé připojují a sdílejí, peer-to-peer. Všechna data jsou pouze textová, včetně odkazů na vložené obrázky. Neváhejte kliknout na desku níže, která vás zajímá, a začněte hned!", "no_global_rules_info": "Můžete se vždy připojit k jakékoli nástěnce, plně P2P, nikdo vás nemůže zastavit. Jednoduše vložte její adresu do vyhledávacího pole výše.", "boards": "nástěnky", "popular_threads": "Oblíbená vlákna", diff --git a/public/translations/da/default.json b/public/translations/da/default.json index c1f0f9a0..8b61e702 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Hvad er 5chan?", "go": "gå", "or": "eller", - "5chan_description": "5chan er et serverløst, adminløst, decentraliseret og open-source 4chan-alternativ, hvor enhver kan oprette og kryptografisk eje ubegrænsede opslagstavler. Alle opslagstavler er selv-hostet af deres ejere, som kører <1>plebbit noder, som brugere forbinder til peer-to-peer. Alle data er kun tekst, inklusive links til at indlæse medier/embeds. Du er velkommen til at klikke på en opslagstavle nedenfor, der interesserer dig, og springe direkte ind!", + "5chan_description": "5chan er et serverløst, adminløst, decentraliseret og open-source alternativ til 4chan, hvor alle kan oprette og kryptografisk eje ubegrænsede boards. Alle boards hostes og modereres af deres ejere, som kører noder, som brugere forbinder til og seed, peer-to-peer. Alle data er kun tekst, inklusive links til at indlejre billeder. Du er velkommen til at klikke på et board nedenfor, der interesserer dig, og komme i gang med det samme!", "no_global_rules_info": "Du kan altid forbinde til enhver opslagstavle, fuldt P2P, ingen kan stoppe dig. Indsæt simpelthen dens adresse i søgefeltet ovenfor.", "boards": "opslagstavler", "popular_threads": "Populære tråde", diff --git a/public/translations/de/default.json b/public/translations/de/default.json index a05db211..b36dcb33 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Was ist 5chan?", "go": "gehen", "or": "oder", - "5chan_description": "5chan ist eine serverlose, adminlose, dezentralisierte und open-source Alternative zu 4chan, bei der jeder unbegrenzte Foren erstellen und kryptografisch besitzen kann. Alle Foren werden von ihren Besitzern selbst gehostet, die <1>plebbit Knoten betreiben, zu denen sich Benutzer peer-to-peer verbinden. Alle Daten sind nur Text, einschließlich Links zum Laden von Medien/Embeds. Fühlen Sie sich frei, auf ein Forum unten zu klicken, das Sie interessiert, und steigen Sie direkt ein!", + "5chan_description": "5chan ist eine serverlose, adminlose, dezentralisierte und Open-Source-Alternative zu 4chan, bei der jeder unbegrenzte Boards erstellen und kryptografisch besitzen kann. Alle Boards werden von ihren Besitzern gehostet und moderiert, die Knoten betreiben, zu denen sich Benutzer peer-to-peer verbinden und seeden. Alle Daten sind nur Text, einschließlich Links zum Einbetten von Bildern. Klicken Sie gerne auf ein Board unten, das Sie interessiert, und steigen Sie direkt ein!", "no_global_rules_info": "Sie können sich jederzeit mit jedem Forum verbinden, vollständig P2P, niemand kann Sie aufhalten. Fügen Sie einfach seine Adresse in das Suchfeld oben ein.", "boards": "Foren", "popular_threads": "Beliebte Threads", diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 5488c163..01e42adb 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Τι είναι το 5chan;", "go": "πήγαινε", "or": "ή", - "5chan_description": "Το 5chan είναι μια αντικατάσταση του 4chan χωρίς διακομιστή, χωρίς διαχειριστές, αποκεντρωμένη και ανοιχτού κώδικα, όπου οποιοσδήποτε μπορεί να δημιουργήσει και να έχει κρυπτογραφικά απεριόριστα boards. Όλα τα boards φιλοξενούνται από τους ιδιοκτήτες τους, οι οποίοι τρέχουν κόμβους <1>plebbit στους οποίους συνδέονται οι χρήστες peer-to-peer. Όλα τα δεδομένα είναι μόνο κείμενο, συμπεριλαμβανομένων των συνδέσμων για φόρτωση πολυμέσων/embeds. Μη διστάσετε να κάνετε κλικ σε ένα board παρακάτω που σας ενδιαφέρει και να μπείτε αμέσως μέσα!", + "5chan_description": "Το 5chan είναι μια εναλλακτική λύση χωρίς διακομιστές, χωρίς διαχειριστές, αποκεντρωμένη και ανοιχτού κώδικα για το 4chan, όπου οποιοσδήποτε μπορεί να δημιουργήσει και να κατέχει κρυπτογραφικά απεριόριστα forums. Όλα τα forums φιλοξενούνται και διαχειρίζονται από τους ιδιοκτήτες τους, οι οποίοι λειτουργούν κόμβους στους οποίους οι χρήστες συνδέονται και διαμοιράζονται, peer-to-peer. Όλα τα δεδομένα είναι μόνο κείμενο, συμπεριλαμβανομένων συνδέσμων για ενσωμάτωση εικόνων. Αισθανθείτε ελεύθεροι να κάνετε κλικ σε ένα forum παρακάτω που σας ενδιαφέρει και ξεκινήστε αμέσως!", "no_global_rules_info": "Μπορείτε πάντα να συνδεθείτε σε οποιοδήποτε board, πλήρως P2P, κανείς δεν μπορεί να σας σταματήσει. Απλά επικολλήστε τη διεύθυνσή του στο πεδίο αναζήτησης παραπάνω.", "boards": "διαδικτυακές πινακίδες", "popular_threads": "Δημοφιλή νήματα", diff --git a/public/translations/en/default.json b/public/translations/en/default.json index dfc3a109..a443a525 100644 --- a/public/translations/en/default.json +++ b/public/translations/en/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "What is 5chan?", "go": "go", "or": "or", - "5chan_description": "5chan is a serverless, adminless, decentralized and open-source 4chan alternative, where anyone can create and cryptographically own unlimited boards. All boards are selfhosted by their owners, who run <1>plebbit nodes that users connect to, peer-to-peer. All data is text-only, including links to load media/embeds. Feel free to click on a board below that interests you and jump right in!", + "5chan_description": "5chan is a serverless, adminless, decentralized and open-source 4chan alternative, where anyone can create and cryptographically own unlimited boards. All boards are hosted and moderated by their owners, who run nodes that users connect to and seed, peer-to-peer. All data is text-only, including links to embed images. Feel free to click on a board below that interests you and jump right in!", "no_global_rules_info": "You can always connect to any board, fully P2P, nobody can stop you. Simply paste its address in the search field above.", "boards": "boards", "popular_threads": "Popular threads", diff --git a/public/translations/es/default.json b/public/translations/es/default.json index c054ee03..1189e2c6 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "¿Qué es 5chan?", "go": "ir", "or": "o", - "5chan_description": "5chan es una alternativa descentralizada, sin servidor, sin administrador y de código abierto de 4chan donde cualquiera puede crear y poseer criptográficamente foros ilimitados. Todos los foros son auto-hospedados por sus propietarios, quienes ejecutan nodos <1>plebbit a los que los usuarios se conectan peer-to-peer. Todos los datos son solo texto, incluyendo enlaces para cargar medios/embeds. ¡Siéntete libre de hacer clic en un foro a continuación que te interese y únete de inmediato!", + "5chan_description": "5chan es una alternativa descentralizada, sin servidor, sin administrador y de código abierto a 4chan, donde cualquiera puede crear y poseer criptográficamente foros ilimitados. Todos los foros son alojados y moderados por sus propietarios, quienes ejecutan nodos a los que los usuarios se conectan y comparten, peer-to-peer. Todos los datos son solo texto, incluyendo enlaces para incrustar imágenes. ¡Siéntete libre de hacer clic en un foro a continuación que te interese y únete de inmediato!", "no_global_rules_info": "Siempre puedes conectarte a cualquier foro, completamente P2P, nadie puede detenerte. Simplemente pega su dirección en el campo de búsqueda de arriba.", "boards": "foros", "popular_threads": "Hilos populares", diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index baafe471..b2783889 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan چیست؟", "go": "برو", "or": "یا", - "5chan_description": "پلبچن یک جایگزین ۴چن بدون سرور، بدون مدیر، غیرمتمرکز و منبع باز است که هر کسی می‌تواند تالارهای نامحدودی را ایجاد و رمزنگاری کند. تمام تالارها توسط مالکانشان خودمیزبان هستند، که گره‌های <1>بیت‌سوشال را اجرا می‌کنند که کاربران به آنها همتا به همتا متصل می‌شوند. تمام داده‌ها فقط متن هستند، از جمله پیوندها برای بارگذاری رسانه/جاسازی‌ها. لطفاً روی یک تالار زیر که به شما علاقه‌مند است کلیک کنید و مستقیماً به آن بپیوندید!", + "5chan_description": "5chan یک جایگزین بدون سرور، بدون ادمین، غیرمتمرکز و متن باز برای 4chan است، جایی که هر کسی می‌تواند انجمن‌های نامحدود ایجاد کند و به صورت رمزنگاری شده مالک آن‌ها باشد. همه انجمن‌ها توسط مالکانشان میزبانی و مدیریت می‌شوند، که نودهایی را اجرا می‌کنند که کاربران به آن‌ها متصل می‌شوند و به اشتراک می‌گذارند، همتا به همتا. همه داده‌ها فقط متن هستند، از جمله لینک‌های جاسازی تصاویر. آزادانه روی یک انجمن زیر کلیک کنید که شما را علاقه‌مند می‌کند و مستقیماً شروع کنید!", "no_global_rules_info": "شما همیشه می‌توانید به هر تالاری متصل شوید، کاملاً P2P، هیچ کس نمی‌تواند شما را متوقف کند. به سادگی آدرس آن را در فیلد جستجوی بالا قرار دهید.", "boards": "تالارهای پیام", "popular_threads": "نخستین موضوعات", diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index ddc88e44..c9e37c81 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Mikä on 5chan?", "go": "mennä", "or": "tai", - "5chan_description": "5chan on palvelin- ja ylläpitovapaa hajautettu avoimen lähdekoodin vaihtoehto 4chanille, jossa kuka tahansa voi luoda ja kryptografisesti omistaa rajoittamattomasti foorumeita. Kaikki foorumit ovat omistajiensa itsehostaamia, jotka ajavat <1>plebbit-solmuja, joihin käyttäjät yhdistyvät vertaisverkossa. Kaikki tiedot ovat vain tekstiä, mukaan lukien linkit mediasisältöjen/upotusten lataamiseen. Voit vapaasti klikata alla olevaa foorumia, joka kiinnostaa sinua, ja liittyä heti mukaan!", + "5chan_description": "5chan on palvelimeton, hallintaton, hajautettu ja avoimen lähdekoodin vaihtoehto 4chanille, jossa kuka tahansa voi luoda ja kryptografisesti omistaa rajattomia tauluja. Kaikki taulut isännöidään ja moderoivat niiden omistajat, jotka ajavat solmuja, joihin käyttäjät yhdistävät ja jakavat, peer-to-peer. Kaikki tiedot ovat vain tekstiä, mukaan lukien linkit upotettaviin kuviin. Voit vapaasti klikata alla olevaa taulua, joka kiinnostaa sinua, ja aloittaa heti!", "no_global_rules_info": "Voit aina yhdistää mihin tahansa foorumiin, täysin P2P, kukaan ei voi pysäyttää sinua. Liitä vain sen osoite yllä olevaan hakukenttään.", "boards": "foorumit", "popular_threads": "Suositut langat", diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index b10ede4b..5aac1a89 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Ano ang 5chan?", "go": "pumunta", "or": "o", - "5chan_description": "Ang 5chan ay isang serverless, adminless, decentralized at open-source na alternatibo sa 4chan kung saan maaaring lumikha at kriptograpikong magmamay-ari ang sinuman ng walang limitasyong boards. Lahat ng boards ay self-hosted ng kanilang mga may-ari, na nagpapatakbo ng <1>plebbit nodes na kinokonekta ng mga user peer-to-peer. Lahat ng data ay text-only, kabilang ang mga link para sa pag-load ng media/embeds. Huwag mag-atubiling mag-click sa isang board sa ibaba na nais mong salihan at sumali na agad!", + "5chan_description": "Ang 5chan ay isang serverless, adminless, decentralized at open-source na alternatibo sa 4chan, kung saan sinuman ay maaaring lumikha at cryptographically magmamay-ari ng walang limitasyong boards. Lahat ng boards ay hosted at moderated ng kanilang mga may-ari, na nagpapatakbo ng nodes na ikinokonekta at siniseed ng mga user, peer-to-peer. Lahat ng data ay text-only, kasama ang mga link para i-embed ang mga imahe. Huwag mag-atubiling mag-click sa isang board sa ibaba na interesado ka at magsimula kaagad!", "no_global_rules_info": "Maaari mong palaging kumonekta sa anumang board, ganap na P2P, walang makakapigil sa iyo. Ilagay lamang ang address nito sa search field sa itaas.", "boards": "mga board", "popular_threads": "Mga popular na thread", diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 2b2d4c26..ce946d40 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Qu'est-ce que 5chan?", "go": "aller", "or": "ou", - "5chan_description": "5chan est une alternative décentralisée, sans serveur, sans administrateur et open-source à 4chan où n'importe qui peut créer et posséder cryptographiquement des forums illimités. Tous les forums sont auto-hébergés par leurs propriétaires, qui exécutent des nœuds <1>plebbit auxquels les utilisateurs se connectent peer-to-peer. Toutes les données sont uniquement du texte, y compris les liens pour charger les médias/embeds. N'hésitez pas à cliquer sur un forum ci-dessous qui vous intéresse et à vous joindre immédiatement !", + "5chan_description": "5chan est une alternative décentralisée, sans serveur, sans administrateur et open-source à 4chan où n'importe qui peut créer et posséder cryptographiquement des forums illimités. Tous les forums sont hébergés et modérés par leurs propriétaires, qui exécutent des nœuds auxquels les utilisateurs se connectent et partagent, peer-to-peer. Toutes les données sont uniquement du texte, y compris les liens pour intégrer des images. N'hésitez pas à cliquer sur un forum ci-dessous qui vous intéresse et à vous joindre immédiatement !", "no_global_rules_info": "Vous pouvez toujours vous connecter à n'importe quel forum, entièrement P2P, personne ne peut vous arrêter. Collez simplement son adresse dans le champ de recherche ci-dessus.", "boards": "forums", "popular_threads": "Fils populaires", diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 0cdb8a05..23b2853b 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "מה זה 5chan?", "go": "לך", "or": "או", - "5chan_description": "פלבצ'ן הוא אלטרנטיבה חדשה, ללא שרת, ללא מנהל, ללא מרכזית וקוד פתוח ל־4chan, בה כל אחד יכול ליצור ולבעוט בלוחות ללא הגבלה בצורה קריפטוגרפית. כל הלוחות מארחים את עצמם על ידי בעליהם, שמפעילים צמתים <1>plebbit שמשתמשים מתחברים אליהם פר-לפר. כל הנתונים הם טקסט בלבד, כולל קישורים לטעינת מדיה/הטמעות. נכון ללחוץ על לוח מטה שמעניין אתכם ולהצטרף מיידית!", + "5chan_description": "5chan הוא חלופה ללא שרת, ללא מנהל, מבוזרת וקוד פתוח ל-4chan, שבה כל אחד יכול ליצור ולבעול בצורה קריפטוגרפית לוחות בלתי מוגבלים. כל הלוחות מתארחים ומנוהלים על ידי בעליהם, שמפעילים צמתים שמשתמשים מתחברים אליהם ומשתפים, peer-to-peer. כל הנתונים הם טקסט בלבד, כולל קישורים להטמעת תמונות. אל תהססו ללחוץ על לוח למטה שמעניין אתכם ולהתחיל מיד!", "no_global_rules_info": "תמיד תוכל להתחבר לכל לוח, לגמרי P2P, אף אחד לא יכול לעצור אותך. פשוט הדבק את הכתובת שלו בשדה החיפוש למעלה.", "boards": "פורומים", "popular_threads": "אשכולות פופולריים", diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index 8c315d64..d3150aed 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan क्या है?", "go": "जाओ", "or": "या", - "5chan_description": "प्लेबचान एक सर्वरलेस, एडमिनलेस, डीसेंट्रलाइज्ड और ओपन-सोर्स 4chan का विकल्प है जहां कोई भी असीमित बोर्ड बना सकता है और क्रिप्टोग्राफिक रूप से मालिक हो सकता है। सभी बोर्ड उनके मालिकों द्वारा सेल्फ-होस्टेड हैं, जो <1>बिटसोशल नोड्स चलाते हैं जिनसे उपयोगकर्ता पीयर-टू-पीयर जुड़ते हैं। सभी डेटा केवल टेक्स्ट है, मीडिया/एम्बेड्स लोड करने के लिंक सहित। आपको जो भी बोर्ड नीचे पसंद है, उसपर क्लिक करें और तुरंत शामिल हों!", + "5chan_description": "5chan एक सर्वरहीन, एडमिनहीन, विकेंद्रीकृत और ओपन-सोर्स 4chan विकल्प है, जहाँ कोई भी असीमित बोर्ड बना सकता है और क्रिप्टोग्राफिक रूप से उनका स्वामित्व ले सकता है। सभी बोर्ड उनके मालिकों द्वारा होस्ट और मॉडरेट किए जाते हैं, जो नोड्स चलाते हैं जिनसे उपयोगकर्ता जुड़ते हैं और सीड करते हैं, peer-to-peer। सभी डेटा केवल टेक्स्ट है, जिसमें इमेज एम्बेड करने के लिंक शामिल हैं। नीचे एक बोर्ड पर क्लिक करने के लिए स्वतंत्र महसूस करें जो आपकी रुचि रखता है और तुरंत शुरू करें!", "no_global_rules_info": "आप हमेशा किसी भी बोर्ड से जुड़ सकते हैं, पूरी तरह से P2P, कोई आपको रोक नहीं सकता। बस उसका पता ऊपर के खोज क्षेत्र में पेस्ट करें।", "boards": "मंच", "popular_threads": "लोकप्रिय थ्रेड्स", diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index a68c38dd..4a00a65e 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Mi az a 5chan?", "go": "menni", "or": "vagy", - "5chan_description": "A 5chan egy szerver nélküli, admin nélküli, decentralizált és nyílt forráskódú 4chan alternatíva, ahol bárki létrehozhat és kriptográfiai módon birtokolhat korlátlan fórumokat. Minden fórum a tulajdonosok által önállóan üzemeltetett, akik <1>plebbit csomópontokat futtatnak, amelyekhez a felhasználók peer-to-peer kapcsolódnak. Minden adat csak szöveg, beleértve a médiák/beágyazások betöltéséhez szükséges hivatkozásokat. Kattints bármelyik lent lévő fórumra, amely érdekel, és csatlakozz azonnal!", + "5chan_description": "A 5chan egy szerver nélküli, adminisztrátor nélküli, decentralizált és nyílt forráskódú alternatíva a 4chan számára, ahol bárki létrehozhat és kriptográfiailag birtokolhat korlátlan táblákat. Minden táblát a tulajdonosaik üzemeltetnek és moderálnak, akik olyan csomópontokat futtatnak, amelyekhez a felhasználók peer-to-peer módon csatlakoznak és seedelnek. Minden adat csak szöveg, beleértve a képek beágyazásához szükséges linkeket. Nyugodtan kattintson egy alábbi táblára, amely érdekli, és azonnal kezdjen bele!", "no_global_rules_info": "Bármikor csatlakozhatsz bármely fórumhoz, teljesen P2P, senki sem tud megállítani. Egyszerűen illeszd be a címét a fenti keresőmezőbe.", "boards": "fórumok", "popular_threads": "Népszerű szálak", diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 019d411b..60734310 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Apa itu 5chan?", "go": "pergi", "or": "atau", - "5chan_description": "5chan adalah alternatif 4chan tanpa server, tanpa admin, terdesentralisasi dan open-source di mana siapa pun bisa membuat dan memiliki kriptografis papan tak terbatas. Semua papan di-host sendiri oleh pemiliknya, yang menjalankan node <1>plebbit yang dihubungkan pengguna peer-to-peer. Semua data hanya teks, termasuk tautan untuk memuat media/embeds. Jangan ragu untuk mengklik papan di bawah yang menarik bagi Anda dan bergabung segera!", + "5chan_description": "5chan adalah alternatif 4chan tanpa server, tanpa admin, terdesentralisasi dan open-source, di mana siapa pun dapat membuat dan secara kriptografis memiliki papan tak terbatas. Semua papan dihosting dan dimoderasi oleh pemiliknya, yang menjalankan node yang pengguna sambungkan dan seed, peer-to-peer. Semua data hanya teks, termasuk tautan untuk menyematkan gambar. Jangan ragu untuk mengklik papan di bawah yang menarik minat Anda dan langsung mulai!", "no_global_rules_info": "Anda selalu dapat terhubung ke papan mana pun, sepenuhnya P2P, tidak ada yang bisa menghentikan Anda. Cukup tempelkan alamatnya di bidang pencarian di atas.", "boards": "papan pesan", "popular_threads": "Benang populer", diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 43f4fb34..b1a82346 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Cos'è 5chan?", "go": "vai", "or": "oppure", - "5chan_description": "5chan è un'alternativa a 4chan decentralizzata, senza server, senza amministratori e open-source, in cui chiunque può creare e possedere criptograficamente board illimitate. Tutte le board sono self-hosted dai loro proprietari, che eseguono nodi <1>plebbit a cui gli utenti si connettono peer-to-peer. Tutti i dati sono solo testo, inclusi i link per caricare media/embeds. Sentiti libero di cliccare su una board qui sotto che ti interessa e unisciti subito!", + "5chan_description": "5chan è un'alternativa decentralizzata, senza server, senza amministratore e open-source a 4chan, dove chiunque può creare e possedere criptograficamente board illimitati. Tutte le board sono ospitate e moderate dai loro proprietari, che eseguono nodi a cui gli utenti si connettono e condividono, peer-to-peer. Tutti i dati sono solo testo, inclusi i link per incorporare immagini. Sentiti libero di cliccare su una board qui sotto che ti interessa e inizia subito!", "no_global_rules_info": "Puoi sempre connetterti a qualsiasi board, completamente P2P, nessuno può fermarti. Basta incollare il suo indirizzo nel campo di ricerca sopra.", "boards": "board", "popular_threads": "Thread popolari", diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index 69f32ac5..a748ffe8 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chanとは何ですか?", "go": "行く", "or": "または", - "5chan_description": "5chan は、サーバーレス、管理者なし、分散型、オープンソースの 4chan の代替であり、誰でも無制限のボードを作成して暗号学的に所有できます。すべてのボードは所有者によってセルフホストされ、ユーザーがピアツーピアで接続する <1>plebbit ノードを実行します。すべてのデータはテキストのみで、メディア/埋め込みを読み込むためのリンクを含みます。興味のあるボードをクリックして、すぐに参加してください!", + "5chan_description": "5chanは、サーバーレス、管理者なし、分散型、オープンソースの4chanの代替品で、誰でも無制限のボードを作成し、暗号的に所有できます。すべてのボードは所有者によってホストおよびモデレートされ、ユーザーが接続してシードするノードを実行します(ピアツーピア)。すべてのデータはテキストのみで、画像を埋め込むためのリンクを含みます。興味のあるボードをクリックして、すぐに始めてください!", "no_global_rules_info": "いつでも任意のボードに接続できます、完全にP2P、誰もあなたを止めることはできません。上記の検索フィールドにそのアドレスを貼り付けるだけです。", "boards": "掲示板", "popular_threads": "人気のあるスレッド", diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 409b0eb0..08821bad 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan이란 무엇인가요?", "go": "가기", "or": "또는", - "5chan_description": "5chan은 서버 없이, 관리자 없이, 분산형이고 오픈소스인 4chan 대안으로 누구나 무제한의 게시판을 생성하고 암호학적으로 소유할 수 있습니다. 모든 게시판은 소유자에 의해 자체 호스팅되며, 사용자가 피어투피어로 연결하는 <1>plebbit 노드를 실행합니다. 모든 데이터는 텍스트만이며, 미디어/임베드를 로드하는 링크를 포함합니다. 관심 있는 아래의 게시판을 클릭하고 바로 참여해보세요!", + "5chan_description": "5chan은 서버리스, 관리자 없음, 분산형 및 오픈 소스 4chan 대안으로, 누구나 무제한 보드를 생성하고 암호화적으로 소유할 수 있습니다. 모든 보드는 소유자가 호스팅하고 관리하며, 사용자가 연결하고 시드하는 노드를 실행합니다(피어 투 피어). 모든 데이터는 텍스트 전용이며 이미지를 임베드하는 링크를 포함합니다. 관심 있는 보드를 클릭하고 바로 시작하세요!", "no_global_rules_info": "언제든지 어떤 게시판이든 연결할 수 있습니다, 완전히 P2P, 아무도 당신을 막을 수 없습니다. 위의 검색 필드에 주소를 붙여넣기만 하면 됩니다.", "boards": "게시판", "popular_threads": "인기 있는 스레드", diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index 209f71c5..dab5bbaa 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan काय आहे?", "go": "जा", "or": "किव्हा", - "5chan_description": "प्लेबचॅन हा सर्व्हरलेस, एडमिनलेस, डीसेंट्रलाइझ्ड आणि ओपन-सोर्स ४चॅनचा पर्याय आहे ज्यात कोणीही अमित बोर्ड तयार करून क्रिप्टोग्राफिकली मालकी घेऊ शकतो. सर्व बोर्ड त्यांच्या मालकांकडून सेल्फ-होस्टेड असतात, जे <1>plebbit नोड्स चालवतात ज्यांना वापरकर्ते पीयर-टू-पीयर कनेक्ट करतात. सर्व डेटा फक्त टेक्स्ट आहे, मीडिया/एम्बेड्स लोड करण्यासाठी लिंक्ससह. आपल्याला आवडता असलेला खालील बोर्ड क्लिक करून प्रवेश करा आणि लगेच ज्वाइन करा!", + "5chan_description": "5chan हे सर्व्हरहीन, अॅडमिनहीन, विकेंद्रीकृत आणि ओपन-सोर्स 4chan पर्याय आहे, जेथे कोणीही अमर्यादित बोर्ड तयार करू शकतो आणि क्रिप्टोग्राफिकदृष्ट्या त्यांची मालकी घेऊ शकतो. सर्व बोर्ड त्यांच्या मालकांद्वारे होस्ट आणि मॉडरेट केले जातात, जे नोड्स चालवतात ज्यांना वापरकर्ते कनेक्ट करतात आणि सीड करतात, peer-to-peer. सर्व डेटा फक्त मजकूर आहे, प्रतिमा एम्बेड करण्यासाठी लिंक समाविष्ट आहेत. खाली असलेल्या बोर्डवर क्लिक करण्यासाठी मोकळ्या मनाने जे तुम्हाला स्वारस्य वाटते आणि त्वरित सुरू करा!", "no_global_rules_info": "तुम्ही नेहमी कोणत्याही बोर्डशी कनेक्ट होऊ शकता, पूर्णपणे P2P, कोणीही तुम्हाला थांबवू शकत नाही. फक्त वरील शोध फील्डमध्ये त्याचा पत्ता पेस्ट करा.", "boards": "संदेश फलक", "popular_threads": "लोकप्रिय थ्रेड्स", diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index 445c7b06..ee2c2ac9 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Wat is 5chan?", "go": "gaan", "or": "of", - "5chan_description": "5chan is een serverloos, adminloos, gedecentraliseerd en open-source alternatief voor 4chan waar iedereen onbeperkte forums kan maken en cryptografisch bezitten. Alle forums worden zelf gehost door hun eigenaren, die <1>plebbit nodes draaien waarmee gebruikers peer-to-peer verbinden. Alle gegevens zijn alleen tekst, inclusief links voor het laden van media/embeds. Voel je vrij om op een forum hieronder te klikken dat je interesseert en spring er meteen in!", + "5chan_description": "5chan is een serverloos, adminloos, gedecentraliseerd en open-source alternatief voor 4chan, waar iedereen onbeperkte boards kan maken en cryptografisch bezitten. Alle boards worden gehost en gemodereerd door hun eigenaren, die nodes draaien waarmee gebruikers verbinden en seeden, peer-to-peer. Alle gegevens zijn alleen tekst, inclusief links om afbeeldingen in te sluiten. Voel je vrij om op een board hieronder te klikken dat je interesseert en begin meteen!", "no_global_rules_info": "Je kunt altijd verbinden met elk forum, volledig P2P, niemand kan je stoppen. Plak gewoon het adres in het zoekveld hierboven.", "boards": "forums", "popular_threads": "Populaire threads", diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 91279587..88d5b664 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Hva er 5chan?", "go": "gå", "or": "eller", - "5chan_description": "5chan er et serverløst, adminløst, desentralisert og open-source alternativ til 4chan der hvem som helst kan opprette og kryptografisk eie ubegrensede fora. Alle fora er selv-hostet av sine eiere, som kjører <1>plebbit noder som brukere kobler til peer-to-peer. Alle data er bare tekst, inkludert lenker for å laste medier/embeds. Ikke nøl med å klikke på et forum nedenfor som interesserer deg og bli med en gang!", + "5chan_description": "5chan er et serverløst, adminløst, desentralisert og åpen kildekode-alternativ til 4chan, hvor alle kan opprette og kryptografisk eie ubegrensede boards. Alle boards hostes og modereres av sine eiere, som kjører noder som brukere kobler til og seed, peer-to-peer. Alle data er kun tekst, inkludert lenker for å bygge inn bilder. Gjerne klikk på et board nedenfor som interesserer deg og kom i gang med en gang!", "no_global_rules_info": "Du kan alltid koble til hvilket som helst forum, fullt P2P, ingen kan stoppe deg. Lim bare adressen i søkefeltet ovenfor.", "boards": "fora", "popular_threads": "Populære tråder", diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 25f5cc0c..03bdb4a7 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Co to jest 5chan?", "go": "iść", "or": "lub", - "5chan_description": "5chan to bezserwerowa, bezadministracyjna, zdecentralizowana i open-source alternatywa dla 4chan, gdzie każdy może tworzyć i kryptograficznie posiadać nieograniczone fora. Wszystkie fora są hostowane przez ich właścicieli, którzy uruchamiają węzły <1>plebbit, z którymi użytkownicy łączą się peer-to-peer. Wszystkie dane to tylko tekst, w tym linki do ładowania mediów/embeds. Śmiało kliknij na forum poniżej, które Cię interesuje, i dołącz!", + "5chan_description": "5chan to bezserwerowa, bez administratora, zdecentralizowana i open-source alternatywa dla 4chan, gdzie każdy może tworzyć i kryptograficznie posiadać nieograniczone tablice. Wszystkie tablice są hostowane i moderowane przez ich właścicieli, którzy uruchamiają węzły, do których użytkownicy się łączą i seedują, peer-to-peer. Wszystkie dane są tylko tekstem, w tym linki do osadzania obrazów. Śmiało kliknij na tablicę poniżej, która Cię interesuje i zacznij od razu!", "no_global_rules_info": "Zawsze możesz połączyć się z dowolnym forum, w pełni P2P, nikt nie może cię zatrzymać. Po prostu wklej jego adres w polu wyszukiwania powyżej.", "boards": "fora", "popular_threads": "Popularne wątki", diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 960106cf..1467b591 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "O que é 5chan?", "go": "vai", "or": "ou", - "5chan_description": "5chan é uma alternativa descentralizada, sem servidor, sem administradores e de código aberto ao 4chan onde qualquer pessoa pode criar e possuir criptograficamente fóruns ilimitados. Todos os fóruns são auto-hospedados por seus proprietários, que executam nós <1>plebbit aos quais os usuários se conectam peer-to-peer. Todos os dados são apenas texto, incluindo links para carregar mídia/embeds. Sinta-se à vontade para clicar em um fórum abaixo que lhe interesse e participar imediatamente!", + "5chan_description": "5chan é uma alternativa descentralizada, sem servidor, sem administrador e de código aberto ao 4chan, onde qualquer pessoa pode criar e possuir criptograficamente quadros ilimitados. Todos os quadros são hospedados e moderados por seus proprietários, que executam nós aos quais os usuários se conectam e compartilham, peer-to-peer. Todos os dados são apenas texto, incluindo links para incorporar imagens. Sinta-se à vontade para clicar em um quadro abaixo que lhe interesse e comece imediatamente!", "no_global_rules_info": "Você sempre pode se conectar a qualquer fórum, completamente P2P, ninguém pode impedi-lo. Simplesmente cole o endereço no campo de pesquisa acima.", "boards": "fóruns", "popular_threads": "Tópicos populares", diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index d83c6315..19229dc9 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Ce este 5chan?", "go": "du-te", "or": "sau", - "5chan_description": "5chan este o alternativă descentralizată, fără server, fără administratori și open-source la 4chan, unde oricine poate crea și deține criptografic forumuri nelimitate. Toate forumurile sunt auto-găzduite de proprietarii lor, care rulează noduri <1>plebbit la care utilizatorii se conectează peer-to-peer. Toate datele sunt doar text, inclusiv linkuri pentru încărcarea mediilor/embeds. Nu ezitați să faceți clic pe un forum de mai jos care vă interesează și să vă alăturați imediat!", + "5chan_description": "5chan este o alternativă descentralizată, fără server, fără administrator și open-source la 4chan, unde oricine poate crea și deține criptografic panouri nelimitate. Toate panourile sunt găzduite și moderate de proprietarii lor, care rulează noduri la care utilizatorii se conectează și distribuie, peer-to-peer. Toate datele sunt doar text, inclusiv link-uri pentru a încorpora imagini. Simțiți-vă liber să faceți clic pe un panou de mai jos care vă interesează și începeți imediat!", "no_global_rules_info": "Poți să te conectezi întotdeauna la orice forum, complet P2P, nimeni nu te poate opri. Pur și simplu lipește adresa în câmpul de căutare de mai sus.", "boards": "forumuri", "popular_threads": "Threaduri populare", diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index f0264f8e..252aa268 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Что такое 5chan?", "go": "идти", "or": "или", - "5chan_description": "5chan - это безсерверная, безадминистративная, децентрализованная и открытая альтернатива 4chan, где любой может создавать и криптографически владеть неограниченным количеством форумов. Все форумы само-хостятся их владельцами, которые запускают узлы <1>plebbit, к которым пользователи подключаются peer-to-peer. Все данные только текстовые, включая ссылки для загрузки медиа/встроек. Не стесняйтесь нажимать на форум ниже, который вас интересует, и присоединяйтесь немедленно!", + "5chan_description": "5chan — это серверная, без администратора, децентрализованная и открытая альтернатива 4chan, где любой может создавать и криптографически владеть неограниченным количеством досок. Все доски размещаются и модерируются их владельцами, которые запускают узлы, к которым пользователи подключаются и раздают, peer-to-peer. Все данные только текстовые, включая ссылки для встраивания изображений. Не стесняйтесь нажать на доску ниже, которая вас заинтересует, и сразу же начните!", "no_global_rules_info": "Вы всегда можете подключиться к любому форуму, полностью P2P, никто не может вас остановить. Просто вставьте адрес в поле поиска выше.", "boards": "форумы", "popular_threads": "Популярные темы", diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 17bbe19c..caa7b05d 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Çfarë është 5chan?", "go": "shko", "or": "ose", - "5chan_description": "5chan është një alternativë e 4chan decentralizuar, pa server, pa administratorë dhe me kod të hapur, ku kushdo mund të krijojë dhe të posedojë kriptografikisht forume të pakufizuara. Të gjitha forumet janë vetë-hostuar nga pronarët e tyre, të cilët drejtojnë nyje <1>plebbit me të cilat përdoruesit lidhen peer-to-peer. Të gjitha të dhënat janë vetëm tekst, duke përfshirë lidhjet për ngarkimin e media/embeds. Mos ngurroni të klikoni në një forum më poshtë që ju intereson dhe të bashkoheni menjëherë!", + "5chan_description": "5chan është një alternativë pa server, pa administrator, e decentralizuar dhe me kod të hapur për 4chan, ku kushdo mund të krijojë dhe të zotërojë kriptografikisht borda të pakufizuara. Të gjitha bordat hostohen dhe moderohen nga pronarët e tyre, të cilët ekzekutojnë nyje me të cilat përdoruesit lidhen dhe shpërndajnë, peer-to-peer. Të gjitha të dhënat janë vetëm tekst, duke përfshirë lidhjet për të integruar imazhe. Mos ngurroni të klikoni në një bord më poshtë që ju intereson dhe filloni menjëherë!", "no_global_rules_info": "Mund të lidheni gjithmonë me çdo forum, plotësisht P2P, askush nuk mund t'ju ndalojë. Thjesht ngjisni adresën në fushën e kërkimit më sipër.", "boards": "forume", "popular_threads": "Threadet e njohur", diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 288de1fc..c023955c 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Vad är 5chan?", "go": "gå", "or": "eller", - "5chan_description": "5chan är ett serverlöst, adminlöst, decentraliserat och öppen källkod alternativ till 4chan där vem som helst kan skapa och kryptografiskt äga obegränsade forum. Alla forum är själv-hostade av sina ägare, som kör <1>plebbit noder som användare ansluter till peer-to-peer. Alla data är endast text, inklusive länkar för att ladda media/embeds. Tveka inte att klicka på ett forum nedan som intresserar dig och gå med direkt!", + "5chan_description": "5chan är ett serverlöst, adminlöst, decentraliserat och öppen källkodsalternativ till 4chan, där vem som helst kan skapa och kryptografiskt äga obegränsade tavlor. Alla tavlor hostas och modereras av sina ägare, som kör noder som användare ansluter till och seedar, peer-to-peer. All data är endast text, inklusive länkar för att bädda in bilder. Känn dig fri att klicka på en tavla nedan som intresserar dig och börja direkt!", "no_global_rules_info": "Du kan alltid ansluta till vilket forum som helst, helt P2P, ingen kan stoppa dig. Klistra bara in adressen i sökfältet ovan.", "boards": "forum", "popular_threads": "Populära trådar", diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 7f214fea..a079b361 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan ఏమిటి?", "go": "వెళ్లు", "or": "లేదా", - "5chan_description": "5chan ఒక సర్వర్‌లేని, అడ్మిన్‌లేని, డిసెంట్రలైజ్‌డ్ మరియు ఓపెన్-సోర్స్ 4chan వైకల్పికం, ఇక్కడ ఎవరైనా అపరిమిత బోర్డ్‌లను సృష్టించి క్రిప్టోగ్రాఫిక్‌గా కలిగి ఉండవచ్చు. అన్ని బోర్డ్‌లు వాటి యజమానులచే సెల్ఫ్-హోస్ట్ చేయబడతాయి, వారు <1>plebbit నోడ్‌లను నడుపుతారు, వీటికి వినియోగదారులు పీయర్-టు-పీయర్ కనెక్ట్ అవుతారు. అన్ని డేటా టెక్స్ట్ మాత్రమే, మీడియా/ఎంబెడ్‌లను లోడ్ చేయడానికి లింక్‌లతో సహా. మీకు ఆసక్తి కలిగించే క్రింది బోర్డ్‌పై క్లిక్ చేసి వెంటనే చేరండి!", + "5chan_description": "5chan అనేది సర్వర్-లేని, అడ్మిన్-లేని, వికేంద్రీకృత మరియు ఓపెన్-సోర్స్ 4chan ప్రత్యామ్నాయం, ఇక్కడ ఎవరైనా అపరిమిత బోర్డులను సృష్టించవచ్చు మరియు క్రిప్టోగ్రాఫిక్‌గా కలిగి ఉండవచ్చు. అన్ని బోర్డులు వాటి యజమానులచే హోస్ట్ చేయబడతాయి మరియు మోడరేట్ చేయబడతాయి, వారు నోడ్‌లను అమలు చేస్తారు, వీటికి వినియోగదారులు కనెక్ట్ అవుతారు మరియు సీడ్ చేస్తారు, peer-to-peer. అన్ని డేటా టెక్స్ట్ మాత్రమే, చిత్రాలను ఎంబెడ్ చేయడానికి లింక్‌లతో సహా. మీకు ఆసక్తి ఉన్న క్రింది బోర్డుపై క్లిక్ చేయడానికి స్వేచ్ఛగా ఉండండి మరియు వెంటనే ప్రారంభించండి!", "no_global_rules_info": "మీరు ఎప్పుడైనా ఏదైనా బోర్డ్‌కు కనెక్ట్ అవ్వవచ్చు, పూర్తిగా P2P, మిమ్మల్ని ఎవరూ ఆపలేరు. దాని చిరునామాను పైన ఉన్న శోధన ఫీల్డ్‌లో అతికించండి.", "boards": "సందేశ బోర్డులు", "popular_threads": "జనప్రియమైన థ్రెడ్‌లు", diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 6ce20d84..a9209f9a 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan คืออะไร?", "go": "ไป", "or": "หรือ", - "5chan_description": "5chan เป็นทางเลือกที่ไม่มีเซิร์ฟเวอร์ ไม่มีแอดมิน แบบกระจายอำนาจ และโอเพนซอร์สสำหรับ 4chan ที่ใครก็สามารถสร้างและเป็นเจ้าของบอร์ดได้ไม่จำกัดด้วยการเข้ารหัส บอร์ดทั้งหมดถูกโฮสต์เองโดยเจ้าของผู้ซึ่งรันโหนด <1>plebbit ที่ผู้ใช้เชื่อมต่อแบบ peer-to-peer ข้อมูลทั้งหมดเป็นข้อความเท่านั้น รวมถึงลิงก์สำหรับโหลดสื่อ/embeds อย่าลังเลที่จะคลิกบอร์ดด้านล่างที่คุณสนใจและเข้าร่วมทันที!", + "5chan_description": "5chan เป็นทางเลือกที่ไม่มีเซิร์ฟเวอร์ ไม่มีผู้ดูแล กระจายอำนาจ และโอเพนซอร์สสำหรับ 4chan ซึ่งทุกคนสามารถสร้างและเป็นเจ้าของบอร์ดได้ไม่จำกัดด้วยการเข้ารหัส บอร์ดทั้งหมดถูกโฮสต์และดูแลโดยเจ้าของ ซึ่งรันโหนดที่ผู้ใช้เชื่อมต่อและแชร์ peer-to-peer ข้อมูลทั้งหมดเป็นข้อความเท่านั้น รวมถึงลิงก์สำหรับฝังรูปภาพ อย่าลังเลที่จะคลิกที่บอร์ดด้านล่างที่คุณสนใจและเริ่มต้นทันที!", "no_global_rules_info": "คุณสามารถเชื่อมต่อกับบอร์ดใดก็ได้เสมอ แบบ P2P เต็มรูปแบบ ไม่มีใครสามารถหยุดคุณได้ เพียงแค่วางที่อยู่ของมันในช่องค้นหาด้านบน", "boards": "กระดานข่าว", "popular_threads": "กระทู้ยอดนิยม", diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 7c77d465..b2966b1e 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan nedir?", "go": "git", "or": "veya", - "5chan_description": "5chan, herkesin sınırsız forum oluşturabileceği ve kriptografik olarak sahip olabileceği sunucusuz, yöneticisiz, merkezi olmayan ve açık kaynaklı bir 4chan alternatifidir. Tüm forumlar sahipleri tarafından kendi kendine barındırılır ve kullanıcıların peer-to-peer bağlandığı <1>plebbit düğümlerini çalıştırırlar. Tüm veriler yalnızca metindir, medya/embeds yüklemek için bağlantılar dahil. İlgilendiğiniz aşağıdaki foruma tıklamaktan çekinmeyin ve hemen katılın!", + "5chan_description": "5chan, herkesin sınırsız panolar oluşturabileceği ve kriptografik olarak sahip olabileceği sunucusuz, yöneticisiz, merkezi olmayan ve açık kaynaklı bir 4chan alternatifidir. Tüm panolar, kullanıcıların bağlandığı ve paylaştığı düğümleri çalıştıran sahipleri tarafından barındırılır ve yönetilir, peer-to-peer. Tüm veriler yalnızca metindir, görüntüleri gömme bağlantıları dahil. İlginizi çeken aşağıdaki bir panoya tıklamaktan çekinmeyin ve hemen başlayın!", "no_global_rules_info": "Her zaman herhangi bir foruma bağlanabilirsiniz, tamamen P2P, kimse sizi durduramaz. Adresini yukarıdaki arama alanına yapıştırmanız yeterli.", "boards": "forumlar", "popular_threads": "Popüler konular", diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 8fb1655b..32da29ed 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "Що таке 5chan?", "go": "йди", "or": "або", - "5chan_description": "5chan - це безсерверний, безадміністративний, децентралізований та відкритий альтернативний 4chan, де будь-хто може створити та криптографічно володіти необмеженою кількістю форумів. Усі форуми само-хостяться їх власниками, які запускають вузли <1>plebbit, до яких користувачі підключаються peer-to-peer. Усі дані лише текстові, включаючи посилання для завантаження медіа/embeds. Не соромтеся натискати на форум нижче, який вас цікавить, і приєднуйтеся одразу!", + "5chan_description": "5chan — це безсерверна, без адміністратора, децентралізована та відкрита альтернатива 4chan, де будь-хто може створювати та криптографічно володіти необмеженою кількістю дошок. Усі дошки розміщуються та модеруються їх власниками, які запускають вузли, до яких користувачі підключаються та роздають, peer-to-peer. Усі дані лише текстові, включаючи посилання для вбудовування зображень. Не соромтеся натиснути на дошку нижче, яка вас цікавить, і одразу почніть!", "no_global_rules_info": "Ви завжди можете підключитися до будь-якого форуму, повністю P2P, ніхто не може вас зупинити. Просто вставте його адресу в поле пошуку вище.", "boards": "форуми", "popular_threads": "Популярні теми", diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index c3539c1c..4bd176c9 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan کیا ہے؟", "go": "جا", "or": "یا", - "5chan_description": "5chan ایک سرور کے بغیر، ایڈمن کے بغیر، غیر مرکزی اور اوپن سورس 4chan کا متبادل ہے جہاں کوئی بھی لامحدود بورڈز بنا سکتا ہے اور کریپٹوگرافک طور پر ان کا مالک ہو سکتا ہے۔ تمام بورڈز ان کے مالکان کے ذریعے خود میزبانی کیے جاتے ہیں، جو <1>plebbit نوڈز چلاتے ہیں جن سے صارفین پیر-ٹو-پیر کنیکٹ ہوتے ہیں۔ تمام ڈیٹا صرف ٹیکسٹ ہے، میڈیا/ایمبیڈز لوڈ کرنے کے لیے لنکس سمیت۔ آپ کو جو بورڈ دلچسپ لگے اس پر کلک کریں اور فوراً شامل ہوں!", + "5chan_description": "5chan ایک سرور-فری، ایڈمن-فری، غیر مرکزی اور اوپن سورس 4chan متبادل ہے، جہاں کوئی بھی لامحدود بورڈز بنا سکتا ہے اور کریپٹوگرافک طور پر ان کا مالک ہو سکتا ہے۔ تمام بورڈز ان کے مالکان کی طرف سے ہوسٹ اور ماڈریٹ کیے جاتے ہیں، جو نوڈز چلاتے ہیں جن سے صارفین جڑتے ہیں اور سیڈ کرتے ہیں، peer-to-peer۔ تمام ڈیٹا صرف متن ہے، بشمول تصاویر کو ایمبیڈ کرنے کے لنکس۔ نیچے دیے گئے بورڈ پر کلک کرنے میں آزاد محسوس کریں جو آپ کی دلچسپی رکھتا ہے اور فوراً شروع کریں!", "no_global_rules_info": "آپ ہمیشہ کسی بھی بورڈ سے کنیکٹ ہو سکتے ہیں، مکمل طور پر P2P، کوئی آپ کو روک نہیں سکتا۔ بس اس کا پتہ اوپر والے سرچ فیلڈ میں پیسٹ کریں۔", "boards": "پیغام بورڈز", "popular_threads": "مقبول تھریڈز", diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index 16cd76ed..b636d17d 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan là gì?", "go": "đi", "or": "hoặc", - "5chan_description": "5chan là một lựa chọn thay thế phi tập trung, không có máy chủ, không có quản trị viên và mã nguồn mở cho 4chan nơi bất kỳ ai cũng có thể tạo và sở hữu mã hóa các diễn đàn không giới hạn. Tất cả các diễn đàn được tự lưu trữ bởi chủ sở hữu của chúng, những người chạy các nút <1>plebbit mà người dùng kết nối peer-to-peer. Tất cả dữ liệu chỉ là văn bản, bao gồm các liên kết để tải phương tiện/embeds. Hãy thoải mái nhấp vào một diễn đàn dưới đây mà bạn quan tâm và tham gia ngay!", + "5chan_description": "5chan là một thay thế không máy chủ, không quản trị viên, phi tập trung và mã nguồn mở cho 4chan, nơi bất kỳ ai cũng có thể tạo và sở hữu mã hóa các bảng không giới hạn. Tất cả các bảng được lưu trữ và điều hành bởi chủ sở hữu của chúng, những người chạy các nút mà người dùng kết nối và chia sẻ, peer-to-peer. Tất cả dữ liệu chỉ là văn bản, bao gồm các liên kết để nhúng hình ảnh. Hãy thoải mái nhấp vào một bảng bên dưới mà bạn quan tâm và bắt đầu ngay!", "no_global_rules_info": "Bạn luôn có thể kết nối với bất kỳ diễn đàn nào, hoàn toàn P2P, không ai có thể ngăn cản bạn. Chỉ cần dán địa chỉ của nó vào trường tìm kiếm ở trên.", "boards": "diễn đàn", "popular_threads": "Chủ đề phổ biến", diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 0c70a188..6437b879 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -2,7 +2,7 @@ "what_is_5chan": "5chan是什么?", "go": "去", "or": "或者", - "5chan_description": "5chan是4chan的无服务器、无管理员、去中心化和开源的替代品,任何人都可以创建和加密拥有无限的论坛。所有论坛都由其所有者自托管,他们运行<1>plebbit节点,用户以点对点方式连接。所有数据都是纯文本,包括加载媒体/嵌入的链接。随时点击下面您感兴趣的论坛,立即加入吧!", + "5chan_description": "5chan是一个无服务器、无管理员、去中心化和开源的4chan替代品,任何人都可以创建并加密拥有无限数量的板块。所有板块都由其所有者托管和审核,他们运行节点,用户连接到这些节点并进行种子分享,点对点。所有数据都只是文本,包括用于嵌入图像的链接。请随时点击下面您感兴趣的板块并立即开始!", "no_global_rules_info": "您始终可以连接到任何论坛,完全P2P,没有人能阻止您。只需将其地址粘贴到上面的搜索字段中即可。", "boards": "论坛", "popular_threads": "热门主题", From 5f00be5b2386350a511376a6c412d42fd0f79a4c Mon Sep 17 00:00:00 2001 From: plebeius Date: Sun, 14 Dec 2025 16:03:13 +0100 Subject: [PATCH 13/16] update homepage footer --- public/translations/ar/default.json | 3 ++- public/translations/bn/default.json | 3 ++- public/translations/cs/default.json | 3 ++- public/translations/da/default.json | 3 ++- public/translations/de/default.json | 3 ++- public/translations/el/default.json | 3 ++- public/translations/es/default.json | 3 ++- public/translations/fa/default.json | 3 ++- public/translations/fi/default.json | 3 ++- public/translations/fil/default.json | 3 ++- public/translations/fr/default.json | 3 ++- public/translations/he/default.json | 3 ++- public/translations/hi/default.json | 3 ++- public/translations/hu/default.json | 3 ++- public/translations/id/default.json | 3 ++- public/translations/it/default.json | 3 ++- public/translations/ja/default.json | 3 ++- public/translations/ko/default.json | 3 ++- public/translations/mr/default.json | 3 ++- public/translations/nl/default.json | 3 ++- public/translations/no/default.json | 3 ++- public/translations/pl/default.json | 3 ++- public/translations/pt/default.json | 3 ++- public/translations/ro/default.json | 3 ++- public/translations/ru/default.json | 3 ++- public/translations/sq/default.json | 3 ++- public/translations/sv/default.json | 3 ++- public/translations/te/default.json | 3 ++- public/translations/th/default.json | 3 ++- public/translations/tr/default.json | 3 ++- public/translations/uk/default.json | 3 ++- public/translations/ur/default.json | 3 ++- public/translations/vi/default.json | 3 ++- public/translations/zh/default.json | 3 ++- src/views/home/home.module.css | 1 - src/views/home/home.tsx | 15 +++++++-------- 36 files changed, 75 insertions(+), 43 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 52df61f8..86fd6ccb 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "هذا المستخدم هو مشرف على هذا المنتدى", "administrator_of_this_board": "هذا المستخدم هو مسؤول عن هذا المنتدى", "copy_content_id": "نسخ معرف المحتوى", - "delete_avatar": "حذف الصورة الرمزية" + "delete_avatar": "حذف الصورة الرمزية", + "updates": "التحديثات" } diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 2fb429d2..2e63a736 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন মডারেটর", "administrator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন প্রশাসক", "copy_content_id": "কনটেন্ট আইডি কপি করুন", - "delete_avatar": "অবতার মুছুন" + "delete_avatar": "অবতার মুছুন", + "updates": "আপডেট" } diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index e074a9c1..485225fb 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Tento uživatel je moderátorem tohoto fóra", "administrator_of_this_board": "Tento uživatel je administrátorem tohoto fóra", "copy_content_id": "kopírovat ID obsahu", - "delete_avatar": "Smazat avatar" + "delete_avatar": "Smazat avatar", + "updates": "Aktualizace" } diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 8b61e702..00701e67 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Denne bruger er moderator for dette board", "administrator_of_this_board": "Denne bruger er administrator for dette board", "copy_content_id": "kopier indhold-ID", - "delete_avatar": "Slet avatar" + "delete_avatar": "Slet avatar", + "updates": "Opdateringer" } diff --git a/public/translations/de/default.json b/public/translations/de/default.json index b36dcb33..d81c8658 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Dieser Benutzer ist Moderator dieses Boards", "administrator_of_this_board": "Dieser Benutzer ist Administrator dieses Boards", "copy_content_id": "Inhalts-ID kopieren", - "delete_avatar": "Avatar löschen" + "delete_avatar": "Avatar löschen", + "updates": "Aktualisierungen" } diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 01e42adb..6723a04d 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Αυτός ο χρήστης είναι συντονιστής αυτού του πίνακα", "administrator_of_this_board": "Αυτός ο χρήστης είναι διαχειριστής αυτού του πίνακα", "copy_content_id": "αντιγραφή ID περιεχομένου", - "delete_avatar": "Διαγραφή avatar" + "delete_avatar": "Διαγραφή avatar", + "updates": "Ενημερώσεις" } diff --git a/public/translations/es/default.json b/public/translations/es/default.json index 1189e2c6..ec716ff0 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Este usuario es moderador de este tablero", "administrator_of_this_board": "Este usuario es administrador de este tablero", "copy_content_id": "Copiar ID de contenido", - "delete_avatar": "Eliminar avatar" + "delete_avatar": "Eliminar avatar", + "updates": "Actualizaciones" } diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index b2783889..04369d00 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "این کاربر مدیر این انجمن است", "administrator_of_this_board": "این کاربر مدیرکل این انجمن است", "copy_content_id": "کپی شناسه محتوا", - "delete_avatar": "حذف آواتار" + "delete_avatar": "حذف آواتار", + "updates": "به‌روزرسانی‌ها" } diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index c9e37c81..6b76e329 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Tämä käyttäjä on tämän taulun moderaattori", "administrator_of_this_board": "Tämä käyttäjä on tämän taulun järjestelmänvalvoja", "copy_content_id": "kopioi sisältö-ID", - "delete_avatar": "Poista avatar" + "delete_avatar": "Poista avatar", + "updates": "Päivitykset" } diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 5aac1a89..53bf2c0c 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Ang user na ito ay moderator ng board na ito", "administrator_of_this_board": "Ang user na ito ay administrator ng board na ito", "copy_content_id": "kopyahin ang content ID", - "delete_avatar": "Tanggalin ang avatar" + "delete_avatar": "Tanggalin ang avatar", + "updates": "Mga Update" } diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index ce946d40..45b6e068 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Cet utilisateur est modérateur de ce tableau", "administrator_of_this_board": "Cet utilisateur est administrateur de ce tableau", "copy_content_id": "Copier l'ID du contenu", - "delete_avatar": "Supprimer l'avatar" + "delete_avatar": "Supprimer l'avatar", + "updates": "Mises à jour" } diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 23b2853b..4ffabcbd 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "משתמש זה הוא מנהל של הלוח הזה", "administrator_of_this_board": "משתמש זה הוא מנהל מערכת של הלוח הזה", "copy_content_id": "העתק מזהה תוכן", - "delete_avatar": "מחק אווטר" + "delete_avatar": "מחק אווטר", + "updates": "עדכונים" } diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index d3150aed..a6836c7c 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का मॉडरेटर है", "administrator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का प्रशासक है", "copy_content_id": "कंटेंट ID कॉपी करें", - "delete_avatar": "अवतार हटाएं" + "delete_avatar": "अवतार हटाएं", + "updates": "अपडेट" } diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 4a00a65e..60c6fdf6 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Ez a felhasználó ennek a táblának a moderátora", "administrator_of_this_board": "Ez a felhasználó ennek a táblának a rendszergazdája", "copy_content_id": "tartalom ID másolása", - "delete_avatar": "Avatar törlése" + "delete_avatar": "Avatar törlése", + "updates": "Frissítések" } diff --git a/public/translations/id/default.json b/public/translations/id/default.json index 60734310..ec05851b 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Pengguna ini adalah moderator papan ini", "administrator_of_this_board": "Pengguna ini adalah administrator papan ini", "copy_content_id": "salin ID konten", - "delete_avatar": "Hapus avatar" + "delete_avatar": "Hapus avatar", + "updates": "Pembaruan" } diff --git a/public/translations/it/default.json b/public/translations/it/default.json index b1a82346..01da2deb 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Questo utente è moderatore di questa bacheca", "administrator_of_this_board": "Questo utente è amministratore di questa bacheca", "copy_content_id": "Copia ID contenuto", - "delete_avatar": "Elimina avatar" + "delete_avatar": "Elimina avatar", + "updates": "Aggiornamenti" } diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index a748ffe8..db7d8f75 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "このユーザーはこのボードのモデレーターです", "administrator_of_this_board": "このユーザーはこのボードの管理者です", "copy_content_id": "コンテンツIDをコピー", - "delete_avatar": "アバターを削除" + "delete_avatar": "アバターを削除", + "updates": "更新" } diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index 08821bad..e3ab7fc3 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "이 사용자는 이 게시판의 관리자입니다", "administrator_of_this_board": "이 사용자는 이 게시판의 관리자입니다", "copy_content_id": "콘텐츠 ID 복사", - "delete_avatar": "아바타 삭제" + "delete_avatar": "아바타 삭제", + "updates": "업데이트" } diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index dab5bbaa..a14523e2 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "हा वापरकर्ता या बोर्डचा मॉडरेटर आहे", "administrator_of_this_board": "हा वापरकर्ता या बोर्डचा प्रशासक आहे", "copy_content_id": "कंटेंट ID कॉपी करा", - "delete_avatar": "अवतार हटवा" + "delete_avatar": "अवतार हटवा", + "updates": "अपडेट्स" } diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index ee2c2ac9..cd6f069d 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Deze gebruiker is moderator van dit bord", "administrator_of_this_board": "Deze gebruiker is beheerder van dit bord", "copy_content_id": "kopieer inhoud-ID", - "delete_avatar": "Avatar verwijderen" + "delete_avatar": "Avatar verwijderen", + "updates": "Updates" } diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 88d5b664..68040348 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Denne brukeren er moderator for dette tavlet", "administrator_of_this_board": "Denne brukeren er administrator for dette tavlet", "copy_content_id": "kopier innhold-ID", - "delete_avatar": "Slett avatar" + "delete_avatar": "Slett avatar", + "updates": "Oppdateringer" } diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index 03bdb4a7..f695a2b0 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Ten użytkownik jest moderatorem tego forum", "administrator_of_this_board": "Ten użytkownik jest administratorem tego forum", "copy_content_id": "skopiuj ID treści", - "delete_avatar": "Usuń avatar" + "delete_avatar": "Usuń avatar", + "updates": "Aktualizacje" } diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index 1467b591..dbf6cfba 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Este usuário é moderador deste quadro", "administrator_of_this_board": "Este usuário é administrador deste quadro", "copy_content_id": "Copiar ID do conteúdo", - "delete_avatar": "Excluir avatar" + "delete_avatar": "Excluir avatar", + "updates": "Atualizações" } diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 19229dc9..1cdfb4a1 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Acest utilizator este moderator al acestui forum", "administrator_of_this_board": "Acest utilizator este administrator al acestui forum", "copy_content_id": "copiați ID-ul conținutului", - "delete_avatar": "Șterge avatar" + "delete_avatar": "Șterge avatar", + "updates": "Actualizări" } diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 252aa268..292019ae 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Этот пользователь является модератором этого форума", "administrator_of_this_board": "Этот пользователь является администратором этого форума", "copy_content_id": "копировать ID контента", - "delete_avatar": "Удалить аватар" + "delete_avatar": "Удалить аватар", + "updates": "Обновления" } diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index caa7b05d..8c4f4cab 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Ky përdorues është moderator i këtij bordi", "administrator_of_this_board": "Ky përdorues është administrator i këtij bordi", "copy_content_id": "kopjo ID e përmbajtjes", - "delete_avatar": "Fshi avatarin" + "delete_avatar": "Fshi avatarin", + "updates": "Përditësime" } diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index c023955c..9a7383ce 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Denna användare är moderator för detta forum", "administrator_of_this_board": "Denna användare är administratör för detta forum", "copy_content_id": "kopiera innehålls-ID", - "delete_avatar": "Ta bort avatar" + "delete_avatar": "Ta bort avatar", + "updates": "Uppdateringar" } diff --git a/public/translations/te/default.json b/public/translations/te/default.json index a079b361..1026428c 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క మోడరేటర్", "administrator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క నిర్వాహకుడు", "copy_content_id": "కంటెంట్ ID కాపీ చేయండి", - "delete_avatar": "అవతార్ను తొలగించు" + "delete_avatar": "అవతార్ను తొలగించు", + "updates": "నవీకరణలు" } diff --git a/public/translations/th/default.json b/public/translations/th/default.json index a9209f9a..22f76627 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลของบอร์ดนี้", "administrator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลระบบของบอร์ดนี้", "copy_content_id": "คัดลอก ID เนื้อหา", - "delete_avatar": "ลบอวตาร" + "delete_avatar": "ลบอวตาร", + "updates": "อัปเดต" } diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index b2966b1e..6a070fff 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Bu kullanıcı bu panonun moderatörüdür", "administrator_of_this_board": "Bu kullanıcı bu panonun yöneticisidir", "copy_content_id": "içerik ID'sini kopyala", - "delete_avatar": "Avatarı sil" + "delete_avatar": "Avatarı sil", + "updates": "Güncellemeler" } diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index 32da29ed..ed7e995a 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Цей користувач є модератором цього форуму", "administrator_of_this_board": "Цей користувач є адміністратором цього форуму", "copy_content_id": "копіювати ID контенту", - "delete_avatar": "Видалити аватар" + "delete_avatar": "Видалити аватар", + "updates": "Оновлення" } diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index 4bd176c9..acd1fdf8 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "یہ صارف اس بورڈ کا ماڈریٹر ہے", "administrator_of_this_board": "یہ صارف اس بورڈ کا منتظم ہے", "copy_content_id": "مواد کی شناخت کاپی کریں", - "delete_avatar": "اوتار حذف کریں" + "delete_avatar": "اوتار حذف کریں", + "updates": "اپڈیٹس" } diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index b636d17d..8f975267 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "Người dùng này là người điều hành của bảng này", "administrator_of_this_board": "Người dùng này là quản trị viên của bảng này", "copy_content_id": "sao chép ID nội dung", - "delete_avatar": "Xóa avatar" + "delete_avatar": "Xóa avatar", + "updates": "Cập nhật" } diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index 6437b879..f710ab12 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -297,5 +297,6 @@ "moderator_of_this_board": "此用户是此版块的版主", "administrator_of_this_board": "此用户是此版块的管理员", "copy_content_id": "复制内容ID", - "delete_avatar": "删除头像" + "delete_avatar": "删除头像", + "updates": "更新" } diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index 2f845310..bf1dff80 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -169,7 +169,6 @@ padding-top: 2em; padding-bottom: 1em; font-size: 11px; - text-transform: lowercase; } .version a { diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 219aac6b..213ca292 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -121,13 +121,13 @@ export const Footer = () => { <>
+ + {' '} + - GPLv2 Licensed +
); From e14c755208327479d4fa7d4aea2e0cc68ae31ba0 Mon Sep 17 00:00:00 2001 From: plebeius Date: Sun, 14 Dec 2025 16:36:14 +0100 Subject: [PATCH 14/16] update loading string --- public/translations/ar/default.json | 3 ++- public/translations/bn/default.json | 3 ++- public/translations/cs/default.json | 3 ++- public/translations/da/default.json | 3 ++- public/translations/de/default.json | 3 ++- public/translations/el/default.json | 3 ++- public/translations/es/default.json | 3 ++- public/translations/fa/default.json | 3 ++- public/translations/fi/default.json | 3 ++- public/translations/fil/default.json | 3 ++- public/translations/fr/default.json | 3 ++- public/translations/he/default.json | 3 ++- public/translations/hi/default.json | 3 ++- public/translations/hu/default.json | 3 ++- public/translations/id/default.json | 3 ++- public/translations/it/default.json | 3 ++- public/translations/ja/default.json | 3 ++- public/translations/ko/default.json | 3 ++- public/translations/mr/default.json | 3 ++- public/translations/nl/default.json | 3 ++- public/translations/no/default.json | 3 ++- public/translations/pl/default.json | 3 ++- public/translations/pt/default.json | 3 ++- public/translations/ro/default.json | 3 ++- public/translations/ru/default.json | 3 ++- public/translations/sq/default.json | 3 ++- public/translations/sv/default.json | 3 ++- public/translations/te/default.json | 3 ++- public/translations/th/default.json | 3 ++- public/translations/tr/default.json | 3 ++- public/translations/uk/default.json | 3 ++- public/translations/ur/default.json | 3 ++- public/translations/vi/default.json | 3 ++- public/translations/zh/default.json | 3 ++- src/components/post-desktop/post-desktop.tsx | 2 +- src/hooks/use-is-subplebbit-offline.ts | 2 +- 36 files changed, 70 insertions(+), 36 deletions(-) diff --git a/public/translations/ar/default.json b/public/translations/ar/default.json index 86fd6ccb..44f54806 100644 --- a/public/translations/ar/default.json +++ b/public/translations/ar/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "هذا المستخدم هو مسؤول عن هذا المنتدى", "copy_content_id": "نسخ معرف المحتوى", "delete_avatar": "حذف الصورة الرمزية", - "updates": "التحديثات" + "updates": "التحديثات", + "downloading_board": "جارٍ تنزيل المنتدى" } diff --git a/public/translations/bn/default.json b/public/translations/bn/default.json index 2e63a736..eaf3b716 100644 --- a/public/translations/bn/default.json +++ b/public/translations/bn/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "এই ব্যবহারকারী এই বোর্ডের একজন প্রশাসক", "copy_content_id": "কনটেন্ট আইডি কপি করুন", "delete_avatar": "অবতার মুছুন", - "updates": "আপডেট" + "updates": "আপডেট", + "downloading_board": "বোর্ড ডাউনলোড করা হচ্ছে" } diff --git a/public/translations/cs/default.json b/public/translations/cs/default.json index 485225fb..d0bb98d5 100644 --- a/public/translations/cs/default.json +++ b/public/translations/cs/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Tento uživatel je administrátorem tohoto fóra", "copy_content_id": "kopírovat ID obsahu", "delete_avatar": "Smazat avatar", - "updates": "Aktualizace" + "updates": "Aktualizace", + "downloading_board": "stahování fóra" } diff --git a/public/translations/da/default.json b/public/translations/da/default.json index 00701e67..93e2cdb5 100644 --- a/public/translations/da/default.json +++ b/public/translations/da/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Denne bruger er administrator for dette board", "copy_content_id": "kopier indhold-ID", "delete_avatar": "Slet avatar", - "updates": "Opdateringer" + "updates": "Opdateringer", + "downloading_board": "downloader forum" } diff --git a/public/translations/de/default.json b/public/translations/de/default.json index d81c8658..5ded3187 100644 --- a/public/translations/de/default.json +++ b/public/translations/de/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Dieser Benutzer ist Administrator dieses Boards", "copy_content_id": "Inhalts-ID kopieren", "delete_avatar": "Avatar löschen", - "updates": "Aktualisierungen" + "updates": "Aktualisierungen", + "downloading_board": "Forum wird heruntergeladen" } diff --git a/public/translations/el/default.json b/public/translations/el/default.json index 6723a04d..ab547e60 100644 --- a/public/translations/el/default.json +++ b/public/translations/el/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Αυτός ο χρήστης είναι διαχειριστής αυτού του πίνακα", "copy_content_id": "αντιγραφή ID περιεχομένου", "delete_avatar": "Διαγραφή avatar", - "updates": "Ενημερώσεις" + "updates": "Ενημερώσεις", + "downloading_board": "λήψη φόρουμ" } diff --git a/public/translations/es/default.json b/public/translations/es/default.json index ec716ff0..39eb99f3 100644 --- a/public/translations/es/default.json +++ b/public/translations/es/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Este usuario es administrador de este tablero", "copy_content_id": "Copiar ID de contenido", "delete_avatar": "Eliminar avatar", - "updates": "Actualizaciones" + "updates": "Actualizaciones", + "downloading_board": "descargando foro" } diff --git a/public/translations/fa/default.json b/public/translations/fa/default.json index 04369d00..6d78a05d 100644 --- a/public/translations/fa/default.json +++ b/public/translations/fa/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "این کاربر مدیرکل این انجمن است", "copy_content_id": "کپی شناسه محتوا", "delete_avatar": "حذف آواتار", - "updates": "به‌روزرسانی‌ها" + "updates": "به‌روزرسانی‌ها", + "downloading_board": "در حال دانلود تالار" } diff --git a/public/translations/fi/default.json b/public/translations/fi/default.json index 6b76e329..6114b6dc 100644 --- a/public/translations/fi/default.json +++ b/public/translations/fi/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Tämä käyttäjä on tämän taulun järjestelmänvalvoja", "copy_content_id": "kopioi sisältö-ID", "delete_avatar": "Poista avatar", - "updates": "Päivitykset" + "updates": "Päivitykset", + "downloading_board": "ladataan foorumia" } diff --git a/public/translations/fil/default.json b/public/translations/fil/default.json index 53bf2c0c..490aa838 100644 --- a/public/translations/fil/default.json +++ b/public/translations/fil/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Ang user na ito ay administrator ng board na ito", "copy_content_id": "kopyahin ang content ID", "delete_avatar": "Tanggalin ang avatar", - "updates": "Mga Update" + "updates": "Mga Update", + "downloading_board": "nagda-download ng board" } diff --git a/public/translations/fr/default.json b/public/translations/fr/default.json index 45b6e068..c1095dff 100644 --- a/public/translations/fr/default.json +++ b/public/translations/fr/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Cet utilisateur est administrateur de ce tableau", "copy_content_id": "Copier l'ID du contenu", "delete_avatar": "Supprimer l'avatar", - "updates": "Mises à jour" + "updates": "Mises à jour", + "downloading_board": "téléchargement du forum" } diff --git a/public/translations/he/default.json b/public/translations/he/default.json index 4ffabcbd..456a358f 100644 --- a/public/translations/he/default.json +++ b/public/translations/he/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "משתמש זה הוא מנהל מערכת של הלוח הזה", "copy_content_id": "העתק מזהה תוכן", "delete_avatar": "מחק אווטר", - "updates": "עדכונים" + "updates": "עדכונים", + "downloading_board": "מוריד פורום" } diff --git a/public/translations/hi/default.json b/public/translations/hi/default.json index a6836c7c..477d070b 100644 --- a/public/translations/hi/default.json +++ b/public/translations/hi/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "यह उपयोगकर्ता इस बोर्ड का प्रशासक है", "copy_content_id": "कंटेंट ID कॉपी करें", "delete_avatar": "अवतार हटाएं", - "updates": "अपडेट" + "updates": "अपडेट", + "downloading_board": "फोरम डाउनलोड हो रहा है" } diff --git a/public/translations/hu/default.json b/public/translations/hu/default.json index 60c6fdf6..2bd81df4 100644 --- a/public/translations/hu/default.json +++ b/public/translations/hu/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Ez a felhasználó ennek a táblának a rendszergazdája", "copy_content_id": "tartalom ID másolása", "delete_avatar": "Avatar törlése", - "updates": "Frissítések" + "updates": "Frissítések", + "downloading_board": "fórum letöltése" } diff --git a/public/translations/id/default.json b/public/translations/id/default.json index ec05851b..fc728107 100644 --- a/public/translations/id/default.json +++ b/public/translations/id/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Pengguna ini adalah administrator papan ini", "copy_content_id": "salin ID konten", "delete_avatar": "Hapus avatar", - "updates": "Pembaruan" + "updates": "Pembaruan", + "downloading_board": "mengunduh forum" } diff --git a/public/translations/it/default.json b/public/translations/it/default.json index 01da2deb..53d494ae 100644 --- a/public/translations/it/default.json +++ b/public/translations/it/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Questo utente è amministratore di questa bacheca", "copy_content_id": "Copia ID contenuto", "delete_avatar": "Elimina avatar", - "updates": "Aggiornamenti" + "updates": "Aggiornamenti", + "downloading_board": "scaricando board" } diff --git a/public/translations/ja/default.json b/public/translations/ja/default.json index db7d8f75..8e6375fa 100644 --- a/public/translations/ja/default.json +++ b/public/translations/ja/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "このユーザーはこのボードの管理者です", "copy_content_id": "コンテンツIDをコピー", "delete_avatar": "アバターを削除", - "updates": "更新" + "updates": "更新", + "downloading_board": "掲示板をダウンロード中" } diff --git a/public/translations/ko/default.json b/public/translations/ko/default.json index e3ab7fc3..023234e5 100644 --- a/public/translations/ko/default.json +++ b/public/translations/ko/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "이 사용자는 이 게시판의 관리자입니다", "copy_content_id": "콘텐츠 ID 복사", "delete_avatar": "아바타 삭제", - "updates": "업데이트" + "updates": "업데이트", + "downloading_board": "게시판 다운로드 중" } diff --git a/public/translations/mr/default.json b/public/translations/mr/default.json index a14523e2..b80abbba 100644 --- a/public/translations/mr/default.json +++ b/public/translations/mr/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "हा वापरकर्ता या बोर्डचा प्रशासक आहे", "copy_content_id": "कंटेंट ID कॉपी करा", "delete_avatar": "अवतार हटवा", - "updates": "अपडेट्स" + "updates": "अपडेट्स", + "downloading_board": "फोरम डाउनलोड करत आहे" } diff --git a/public/translations/nl/default.json b/public/translations/nl/default.json index cd6f069d..8d2df461 100644 --- a/public/translations/nl/default.json +++ b/public/translations/nl/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Deze gebruiker is beheerder van dit bord", "copy_content_id": "kopieer inhoud-ID", "delete_avatar": "Avatar verwijderen", - "updates": "Updates" + "updates": "Updates", + "downloading_board": "board downloaden" } diff --git a/public/translations/no/default.json b/public/translations/no/default.json index 68040348..fb42291d 100644 --- a/public/translations/no/default.json +++ b/public/translations/no/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Denne brukeren er administrator for dette tavlet", "copy_content_id": "kopier innhold-ID", "delete_avatar": "Slett avatar", - "updates": "Oppdateringer" + "updates": "Oppdateringer", + "downloading_board": "laster ned forum" } diff --git a/public/translations/pl/default.json b/public/translations/pl/default.json index f695a2b0..6bd85bea 100644 --- a/public/translations/pl/default.json +++ b/public/translations/pl/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Ten użytkownik jest administratorem tego forum", "copy_content_id": "skopiuj ID treści", "delete_avatar": "Usuń avatar", - "updates": "Aktualizacje" + "updates": "Aktualizacje", + "downloading_board": "pobieranie forum" } diff --git a/public/translations/pt/default.json b/public/translations/pt/default.json index dbf6cfba..f15c4c47 100644 --- a/public/translations/pt/default.json +++ b/public/translations/pt/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Este usuário é administrador deste quadro", "copy_content_id": "Copiar ID do conteúdo", "delete_avatar": "Excluir avatar", - "updates": "Atualizações" + "updates": "Atualizações", + "downloading_board": "baixando fórum" } diff --git a/public/translations/ro/default.json b/public/translations/ro/default.json index 1cdfb4a1..901a6da8 100644 --- a/public/translations/ro/default.json +++ b/public/translations/ro/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Acest utilizator este administrator al acestui forum", "copy_content_id": "copiați ID-ul conținutului", "delete_avatar": "Șterge avatar", - "updates": "Actualizări" + "updates": "Actualizări", + "downloading_board": "se descarcă forumul" } diff --git a/public/translations/ru/default.json b/public/translations/ru/default.json index 292019ae..6bf2e374 100644 --- a/public/translations/ru/default.json +++ b/public/translations/ru/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Этот пользователь является администратором этого форума", "copy_content_id": "копировать ID контента", "delete_avatar": "Удалить аватар", - "updates": "Обновления" + "updates": "Обновления", + "downloading_board": "загрузка форума" } diff --git a/public/translations/sq/default.json b/public/translations/sq/default.json index 8c4f4cab..aa3c4d9f 100644 --- a/public/translations/sq/default.json +++ b/public/translations/sq/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Ky përdorues është administrator i këtij bordi", "copy_content_id": "kopjo ID e përmbajtjes", "delete_avatar": "Fshi avatarin", - "updates": "Përditësime" + "updates": "Përditësime", + "downloading_board": "duke shkarkuar forum" } diff --git a/public/translations/sv/default.json b/public/translations/sv/default.json index 9a7383ce..2550242a 100644 --- a/public/translations/sv/default.json +++ b/public/translations/sv/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Denna användare är administratör för detta forum", "copy_content_id": "kopiera innehålls-ID", "delete_avatar": "Ta bort avatar", - "updates": "Uppdateringar" + "updates": "Uppdateringar", + "downloading_board": "laddar ner forum" } diff --git a/public/translations/te/default.json b/public/translations/te/default.json index 1026428c..a488c498 100644 --- a/public/translations/te/default.json +++ b/public/translations/te/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "ఈ వినియోగదారు ఈ బోర్డ్ యొక్క నిర్వాహకుడు", "copy_content_id": "కంటెంట్ ID కాపీ చేయండి", "delete_avatar": "అవతార్ను తొలగించు", - "updates": "నవీకరణలు" + "updates": "నవీకరణలు", + "downloading_board": "ఫోరం డౌన్‌లోడ్ చేయడం" } diff --git a/public/translations/th/default.json b/public/translations/th/default.json index 22f76627..aa9411fa 100644 --- a/public/translations/th/default.json +++ b/public/translations/th/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "ผู้ใช้รายนี้เป็นผู้ดูแลระบบของบอร์ดนี้", "copy_content_id": "คัดลอก ID เนื้อหา", "delete_avatar": "ลบอวตาร", - "updates": "อัปเดต" + "updates": "อัปเดต", + "downloading_board": "กำลังดาวน์โหลดกระดาน" } diff --git a/public/translations/tr/default.json b/public/translations/tr/default.json index 6a070fff..f81f849c 100644 --- a/public/translations/tr/default.json +++ b/public/translations/tr/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Bu kullanıcı bu panonun yöneticisidir", "copy_content_id": "içerik ID'sini kopyala", "delete_avatar": "Avatarı sil", - "updates": "Güncellemeler" + "updates": "Güncellemeler", + "downloading_board": "forum indiriliyor" } diff --git a/public/translations/uk/default.json b/public/translations/uk/default.json index ed7e995a..c75660a5 100644 --- a/public/translations/uk/default.json +++ b/public/translations/uk/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Цей користувач є адміністратором цього форуму", "copy_content_id": "копіювати ID контенту", "delete_avatar": "Видалити аватар", - "updates": "Оновлення" + "updates": "Оновлення", + "downloading_board": "завантаження форуму" } diff --git a/public/translations/ur/default.json b/public/translations/ur/default.json index acd1fdf8..d2a3d505 100644 --- a/public/translations/ur/default.json +++ b/public/translations/ur/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "یہ صارف اس بورڈ کا منتظم ہے", "copy_content_id": "مواد کی شناخت کاپی کریں", "delete_avatar": "اوتار حذف کریں", - "updates": "اپڈیٹس" + "updates": "اپڈیٹس", + "downloading_board": "فورم ڈاؤن لوڈ ہو رہا ہے" } diff --git a/public/translations/vi/default.json b/public/translations/vi/default.json index 8f975267..f85d4d60 100644 --- a/public/translations/vi/default.json +++ b/public/translations/vi/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "Người dùng này là quản trị viên của bảng này", "copy_content_id": "sao chép ID nội dung", "delete_avatar": "Xóa avatar", - "updates": "Cập nhật" + "updates": "Cập nhật", + "downloading_board": "đang tải diễn đàn" } diff --git a/public/translations/zh/default.json b/public/translations/zh/default.json index f710ab12..b8e6491d 100644 --- a/public/translations/zh/default.json +++ b/public/translations/zh/default.json @@ -298,5 +298,6 @@ "administrator_of_this_board": "此用户是此版块的管理员", "copy_content_id": "复制内容ID", "delete_avatar": "删除头像", - "updates": "更新" + "updates": "更新", + "downloading_board": "正在下载论坛" } diff --git a/src/components/post-desktop/post-desktop.tsx b/src/components/post-desktop/post-desktop.tsx index bc30671b..af4ca30f 100644 --- a/src/components/post-desktop/post-desktop.tsx +++ b/src/components/post-desktop/post-desktop.tsx @@ -425,7 +425,7 @@ const PostDesktop = ({ post, roles, showAllReplies, showReplies = true }: PostPr const linksCount = pinned ? totalLinksCount : totalLinksCount - visiblelinksCount; const { showOmittedReplies, setShowOmittedReplies } = useShowOmittedReplies(); - const stateString = useStateString(post) || t('loading_board'); + const stateString = useStateString(post) || t('downloading_board'); const subplebbit = useSubplebbitsStore((state) => state.subplebbits[subplebbitAddress]); diff --git a/src/hooks/use-is-subplebbit-offline.ts b/src/hooks/use-is-subplebbit-offline.ts index 50a80023..aca27d4c 100644 --- a/src/hooks/use-is-subplebbit-offline.ts +++ b/src/hooks/use-is-subplebbit-offline.ts @@ -34,7 +34,7 @@ const useIsSubplebbitOffline = (subplebbit: Subplebbit) => { const offlineIconClass = isLoading ? 'yellowOfflineIcon' : isOffline ? 'redOfflineIcon' : ''; const offlineTitle = isLoading - ? t('loading_board') + ? 'downloading board...' : updatedAt ? isOffline && t('posts_last_synced_info', { time: getFormattedTimeAgo(updatedAt), interpolation: { escapeValue: false } }) : t('subplebbit_offline_info'); From 0d488389a5d4734bf47713e9ba08b70d7b7707c7 Mon Sep 17 00:00:00 2001 From: plebeius Date: Sun, 14 Dec 2025 17:54:21 +0100 Subject: [PATCH 15/16] feat(footer): add feedback and contact links and update styling --- src/views/home/home.module.css | 14 +++++--------- src/views/home/home.tsx | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/views/home/home.module.css b/src/views/home/home.module.css index bf1dff80..42e96632 100644 --- a/src/views/home/home.module.css +++ b/src/views/home/home.module.css @@ -164,20 +164,16 @@ text-transform: capitalize; } -.version { +.footerInfo { text-align: center; - padding-top: 2em; - padding-bottom: 1em; + margin-top: 1em; + margin-bottom: 1em; font-size: 11px; } -.version a { - text-decoration: none; - color: unset; -} -.version a:hover { - text-decoration: underline; +.footerInfo a:visited { + color: blue; } .popularThreads { diff --git a/src/views/home/home.tsx b/src/views/home/home.tsx index 213ca292..9f142f20 100644 --- a/src/views/home/home.tsx +++ b/src/views/home/home.tsx @@ -154,12 +154,21 @@ export const Footer = () => {
-
- - - {' '} - - GPLv2 Licensed - +
+
+ •{' '} + + Feedback + {' '} + •{' '} + + Contact + + +
+
+
+ 5chan is free and open source software under GPLv2 license.
); From 36a01f70128c57cfb8938a6a644d0cb7ad5aceb5 Mon Sep 17 00:00:00 2001 From: plebeius Date: Mon, 15 Dec 2025 13:45:55 +0100 Subject: [PATCH 16/16] refactor: remove unused Avalanche RPC settings --- .../avatar-settings/avatar-settings.tsx | 4 +-- .../crypto-wallets-setting.tsx | 4 +-- .../plebbit-options/plebbit-options.tsx | 26 ++++--------------- 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/components/settings-modal/avatar-settings/avatar-settings.tsx b/src/components/settings-modal/avatar-settings/avatar-settings.tsx index dd7f2f0a..58ab356d 100644 --- a/src/components/settings-modal/avatar-settings/avatar-settings.tsx +++ b/src/components/settings-modal/avatar-settings/avatar-settings.tsx @@ -135,7 +135,7 @@ const AvatarSettings = () => { {_.capitalize(t('chain_ticker'))}: { {_.capitalize(t('timestamp'))}: { type='text' onChange={(e) => setWalletsArrayProperty(selectedWallet, 'chainTicker', e.target.value)} value={walletsArray[selectedWallet].chainTicker} - placeholder='eth/sol/avax' + placeholder='eth/sol/matic' />
@@ -138,7 +138,7 @@ const CryptoWalletsForm = ({ account }: { account: Account | undefined }) => { type='text' onChange={(e) => setWalletsArrayProperty(selectedWallet, 'timestamp', Number(e.target.value))} value={walletsArray[selectedWallet].timestamp || ''} - placeholder='Timestamp' + placeholder='1234567890' />
diff --git a/src/components/settings-modal/plebbit-options/plebbit-options.tsx b/src/components/settings-modal/plebbit-options/plebbit-options.tsx index e35780b2..bc4e2ce8 100644 --- a/src/components/settings-modal/plebbit-options/plebbit-options.tsx +++ b/src/components/settings-modal/plebbit-options/plebbit-options.tsx @@ -10,7 +10,6 @@ interface SettingsProps { ethRpcRef?: RefObject; solRpcRef?: RefObject; maticRpcRef?: RefObject; - avaxRpcRef?: RefObject; plebbitRpcRef?: RefObject; plebbitDataPathRef?: RefObject; } @@ -74,33 +73,28 @@ const PubsubProvidersSettings = ({ pubsubProvidersRef }: SettingsProps) => { ); }; -const BlockchainProvidersSettings = ({ ethRpcRef, solRpcRef, maticRpcRef, avaxRpcRef }: SettingsProps) => { +const BlockchainProvidersSettings = ({ ethRpcRef, solRpcRef, maticRpcRef }: SettingsProps) => { const account = useAccount(); const { plebbitOptions } = account || {}; const { chainProviders } = plebbitOptions || {}; const ethRpcDefaultValue = chainProviders?.['eth']?.urls.join('\n'); const solRpcDefaultValue = chainProviders?.['sol']?.urls.join('\n'); const maticRpcDefaultValue = chainProviders?.['matic']?.urls.join('\n'); - const avaxRpcDefaultValue = chainProviders?.['avax']?.urls.join('\n'); return (
- Ethereum RPC, for .eth addresses + Ethereum RPC, for .eth domains