diff --git a/apps/web/locales/af-ZA.po b/apps/web/locales/af-ZA.po index 6664c9a36..137d58443 100644 --- a/apps/web/locales/af-ZA.po +++ b/apps/web/locales/af-ZA.po @@ -1338,6 +1338,11 @@ msgstr "Kon nie hierdie pleister herstel nie." msgid "Could not set up two-factor authentication." msgstr "Kon nie twee-faktor-magtiging opstel nie." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Kon nie verskafferverbinding verifieer nie." @@ -5031,6 +5036,10 @@ msgstr "Iets het verkeerd geloop tydens jou aanmelding. Probeer asseblief weer." msgid "Something went wrong. Please try again." msgstr "Iets het verkeerd geloop. Probeer asseblief weer." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/am-ET.po b/apps/web/locales/am-ET.po index af330033f..6d769a5c7 100644 --- a/apps/web/locales/am-ET.po +++ b/apps/web/locales/am-ET.po @@ -1338,6 +1338,11 @@ msgstr "ይህንን ፓች ወደነበረበት መመለስ አልተቻለ msgid "Could not set up two-factor authentication." msgstr "ሁለት-ደረጃ ማረጋገጫን ማዋቀር አልተቻለም።" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "የአቅራቢውን ግንኙነት ማረጋገጥ አልተቻለም።" @@ -5031,6 +5036,10 @@ msgstr "ስንገባዎት የሆነ ችግር ተፈጥሯል። እባክዎ msgid "Something went wrong. Please try again." msgstr "የተሳሳተ ነገር ተፈጥሯል። እባክዎን ደግመው ይሞክሩ።" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ar-SA.po b/apps/web/locales/ar-SA.po index 785cf4c35..ec13e2e9e 100644 --- a/apps/web/locales/ar-SA.po +++ b/apps/web/locales/ar-SA.po @@ -1338,6 +1338,11 @@ msgstr "تعذر استعادة هذا التحديث." msgid "Could not set up two-factor authentication." msgstr "تعذّر إعداد المصادقة الثنائية." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "تعذر التحقق من اتصال مزود الخدمة." @@ -5031,6 +5036,10 @@ msgstr "حدث خطأ ما أثناء تسجيل دخولك. يُرجى المح msgid "Something went wrong. Please try again." msgstr "حدث خطأ ما. يُرجى المحاولة مرة أخرى." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/az-AZ.po b/apps/web/locales/az-AZ.po index c144999d2..ac9814687 100644 --- a/apps/web/locales/az-AZ.po +++ b/apps/web/locales/az-AZ.po @@ -1338,6 +1338,11 @@ msgstr "Bu yamağı bərpa etmək mümkün olmadı." msgid "Could not set up two-factor authentication." msgstr "İki mərhələli autentifikasiya qurula bilmədi." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Provayder bağlantısını yoxlamaq mümkün olmadı." @@ -5031,6 +5036,10 @@ msgstr "Sizi daxil edərkən nəsə səhv getdi. Zəhmət olmasa yenidən cəhd msgid "Something went wrong. Please try again." msgstr "Nəsə səhv getdi. Zəhmət olmasa, yenidən cəhd edin." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/bg-BG.po b/apps/web/locales/bg-BG.po index 8348237d3..1f4d4680f 100644 --- a/apps/web/locales/bg-BG.po +++ b/apps/web/locales/bg-BG.po @@ -1338,6 +1338,11 @@ msgstr "Не можа да се възстанови този пач." msgid "Could not set up two-factor authentication." msgstr "Двуфакторното удостоверяване не можа да бъде настроено." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Не можа да се провери връзката с доставчика." @@ -5031,6 +5036,10 @@ msgstr "Нещо се обърка при влизането ви. Моля, о msgid "Something went wrong. Please try again." msgstr "Нещо се обърка. Моля, опитайте отново." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/bn-BD.po b/apps/web/locales/bn-BD.po index b0b14fa69..a5d100c41 100644 --- a/apps/web/locales/bn-BD.po +++ b/apps/web/locales/bn-BD.po @@ -1338,6 +1338,11 @@ msgstr "এই প্যাচটি পুনরুদ্ধার করা msgid "Could not set up two-factor authentication." msgstr "টু‑ফ্যাক্টর প্রমাণীকরণ সেট আপ করা যায়নি।" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "প্রোভাইডার সংযোগ যাচাই করা যায়নি।" @@ -5031,6 +5036,10 @@ msgstr "আপনাকে সাইন ইন করানোর সময় msgid "Something went wrong. Please try again." msgstr "কিছু একটা ভুল হয়েছে। অনুগ্রহ করে আবার চেষ্টা করুন।" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ca-ES.po b/apps/web/locales/ca-ES.po index bcbcf3209..27d9ba490 100644 --- a/apps/web/locales/ca-ES.po +++ b/apps/web/locales/ca-ES.po @@ -1338,6 +1338,11 @@ msgstr "No s'ha pogut restaurar aquest pegat." msgid "Could not set up two-factor authentication." msgstr "No s'ha pogut configurar l'autenticació en dos passos." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "No s'ha pogut verificar la connexió del proveïdor." @@ -5031,6 +5036,10 @@ msgstr "Alguna cosa ha anat malament en iniciar la sessió. Torna-ho a provar." msgid "Something went wrong. Please try again." msgstr "Alguna cosa ha anat malament. Torna-ho a provar." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/cs-CZ.po b/apps/web/locales/cs-CZ.po index 9760a5026..6cbea30dc 100644 --- a/apps/web/locales/cs-CZ.po +++ b/apps/web/locales/cs-CZ.po @@ -1338,6 +1338,11 @@ msgstr "Tuto záplatu se nepodařilo obnovit." msgid "Could not set up two-factor authentication." msgstr "Nepodařilo se nastavit dvoufaktorové ověření." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nepodařilo se ověřit připojení poskytovatele." @@ -5031,6 +5036,10 @@ msgstr "Při přihlašování se něco pokazilo. Zkuste to prosím znovu." msgid "Something went wrong. Please try again." msgstr "Něco se pokazilo. Zkuste to prosím znovu." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/da-DK.po b/apps/web/locales/da-DK.po index 903860402..6c4b06096 100644 --- a/apps/web/locales/da-DK.po +++ b/apps/web/locales/da-DK.po @@ -1338,6 +1338,11 @@ msgstr "Kunne ikke gendanne denne programrettelse." msgid "Could not set up two-factor authentication." msgstr "Kunne ikke opsætte to-faktor-godkendelse." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Kunne ikke bekræfte udbyderforbindelsen." @@ -5031,6 +5036,10 @@ msgstr "Noget gik galt, da du skulle logges ind. Prøv venligst igen." msgid "Something went wrong. Please try again." msgstr "Noget gik galt. Prøv igen." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/de-DE.po b/apps/web/locales/de-DE.po index fdff6870e..f1f94c720 100644 --- a/apps/web/locales/de-DE.po +++ b/apps/web/locales/de-DE.po @@ -1338,6 +1338,11 @@ msgstr "Dieser Patch konnte nicht wiederhergestellt werden." msgid "Could not set up two-factor authentication." msgstr "Die Zwei-Faktor-Authentifizierung konnte nicht eingerichtet werden." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Die Providerverbindung konnte nicht verifiziert werden." @@ -5031,6 +5036,10 @@ msgstr "Bei der Anmeldung ist etwas schiefgelaufen. Bitte versuchen Sie es erneu msgid "Something went wrong. Please try again." msgstr "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/el-GR.po b/apps/web/locales/el-GR.po index defbbb616..9f33a8582 100644 --- a/apps/web/locales/el-GR.po +++ b/apps/web/locales/el-GR.po @@ -1338,6 +1338,11 @@ msgstr "Δεν ήταν δυνατή η επαναφορά αυτής της ε msgid "Could not set up two-factor authentication." msgstr "Δεν ήταν δυνατή η ρύθμιση του ελέγχου ταυτότητας δύο σταδίων." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Δεν ήταν δυνατή η επαλήθευση της σύνδεσης του παρόχου." @@ -5031,6 +5036,10 @@ msgstr "Κάτι πήγε στραβά κατά τη σύνδεσή σας. Δο msgid "Something went wrong. Please try again." msgstr "Κάτι πήγε στραβά. Παρακαλώ δοκιμάστε ξανά." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/en-GB.po b/apps/web/locales/en-GB.po index d6f7c8c75..b74685c74 100644 --- a/apps/web/locales/en-GB.po +++ b/apps/web/locales/en-GB.po @@ -1338,6 +1338,11 @@ msgstr "Could not restore this patch." msgid "Could not set up two-factor authentication." msgstr "Could not set up two-factor authentication." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Could not verify provider connection." @@ -5031,6 +5036,10 @@ msgstr "Something went wrong while signing you in. Please try again." msgid "Something went wrong. Please try again." msgstr "Something went wrong. Please try again." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/en-US.po b/apps/web/locales/en-US.po index 6be1a104c..b5c0e1e44 100644 --- a/apps/web/locales/en-US.po +++ b/apps/web/locales/en-US.po @@ -1409,6 +1409,11 @@ msgstr "Could not save the cover letter. Please try again." msgid "Could not set up two-factor authentication." msgstr "Could not set up two-factor authentication." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "Could not sort these items; they stayed at the end: {0}." + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Could not verify provider connection." @@ -5297,6 +5302,10 @@ msgstr "Something went wrong while signing you in. Please try again." msgid "Something went wrong. Please try again." msgstr "Something went wrong. Please try again." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "Sort by date" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/es-ES.po b/apps/web/locales/es-ES.po index 49b4d5451..f6ff185de 100644 --- a/apps/web/locales/es-ES.po +++ b/apps/web/locales/es-ES.po @@ -1338,6 +1338,11 @@ msgstr "No se pudo restaurar este parche." msgid "Could not set up two-factor authentication." msgstr "No se pudo configurar la autenticación de doble factor." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "No se pudo verificar la conexión con el proveedor." @@ -5031,6 +5036,10 @@ msgstr "Algo salió mal al iniciar tu sesión. Inténtalo de nuevo." msgid "Something went wrong. Please try again." msgstr "Algo salió mal. Vuelve a intentarlo." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/fa-IR.po b/apps/web/locales/fa-IR.po index e22f0c7c9..25548a710 100644 --- a/apps/web/locales/fa-IR.po +++ b/apps/web/locales/fa-IR.po @@ -1338,6 +1338,11 @@ msgstr "نتوانستم این پچ را بازیابی کنم." msgid "Could not set up two-factor authentication." msgstr "راه‌اندازی احراز هویت دو مرحله‌ای ممکن نشد." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "اتصال ارائه دهنده تأیید نشد." @@ -5031,6 +5036,10 @@ msgstr "هنگام ورود شما مشکلی پیش آمد. لطفاً دوبا msgid "Something went wrong. Please try again." msgstr "مشکلی پیش آمد. لطفاً دوباره تلاش کنید." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/fi-FI.po b/apps/web/locales/fi-FI.po index d18abc033..13343c1ad 100644 --- a/apps/web/locales/fi-FI.po +++ b/apps/web/locales/fi-FI.po @@ -1338,6 +1338,11 @@ msgstr "Tätä korjaustiedostoa ei voitu palauttaa." msgid "Could not set up two-factor authentication." msgstr "Kaksivaiheista todennusta ei voitu ottaa käyttöön." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Palveluntarjoajan yhteyden vahvistaminen epäonnistui." @@ -5031,6 +5036,10 @@ msgstr "Kirjautumisessa tapahtui virhe. Yritä uudelleen." msgid "Something went wrong. Please try again." msgstr "Jokin meni pieleen. Yritä uudelleen." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/fr-FR.po b/apps/web/locales/fr-FR.po index 33f27d08f..fc220a2c3 100644 --- a/apps/web/locales/fr-FR.po +++ b/apps/web/locales/fr-FR.po @@ -1338,6 +1338,11 @@ msgstr "Impossible de restaurer ce correctif." msgid "Could not set up two-factor authentication." msgstr "Impossible de configurer l'authentification à deux facteurs." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Impossible de vérifier la connexion au fournisseur." @@ -5031,6 +5036,10 @@ msgstr "Une erreur s'est produite lors de votre connexion. Veuillez réessayer." msgid "Something went wrong. Please try again." msgstr "Une erreur s'est produite. Veuillez réessayer." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/he-IL.po b/apps/web/locales/he-IL.po index f68f526f7..1400f217b 100644 --- a/apps/web/locales/he-IL.po +++ b/apps/web/locales/he-IL.po @@ -1338,6 +1338,11 @@ msgstr "לא ניתן היה לשחזר את התיקון הזה." msgid "Could not set up two-factor authentication." msgstr "לא ניתן היה להגדיר אימות דו־שלבי." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "לא ניתן היה לאמת את חיבור הספק." @@ -5031,6 +5036,10 @@ msgstr "משהו השתבש בזמן ההתחברות שלך. נסה שוב." msgid "Something went wrong. Please try again." msgstr "משהו השתבש. נא לנסות שוב." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/hi-IN.po b/apps/web/locales/hi-IN.po index 3157bab5a..2bff7bfc5 100644 --- a/apps/web/locales/hi-IN.po +++ b/apps/web/locales/hi-IN.po @@ -1338,6 +1338,11 @@ msgstr "इस पैच को पुनर्स्थापित नही msgid "Could not set up two-factor authentication." msgstr "दो कारक प्रमाणीकरण सेट नहीं किया जा सका।" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "प्रदाता कनेक्शन सत्यापित नहीं हो सका।" @@ -5031,6 +5036,10 @@ msgstr "आपको साइन इन करते समय कुछ गड msgid "Something went wrong. Please try again." msgstr "कुछ गड़बड़ हो गई। कृपया फिर से प्रयास करें।" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/hu-HU.po b/apps/web/locales/hu-HU.po index ccdda5b95..03c48be46 100644 --- a/apps/web/locales/hu-HU.po +++ b/apps/web/locales/hu-HU.po @@ -1338,6 +1338,11 @@ msgstr "Nem sikerült visszaállítani ezt a javítást." msgid "Could not set up two-factor authentication." msgstr "Nem sikerült beállítani a kétlépcsős hitelesítést." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nem sikerült ellenőrizni a szolgáltató kapcsolatát." @@ -5031,6 +5036,10 @@ msgstr "Hiba történt a bejelentkezés során. Kérjük, próbálja újra." msgid "Something went wrong. Please try again." msgstr "Valami hiba történt. Kérjük, próbáld újra." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/id-ID.po b/apps/web/locales/id-ID.po index 0507bff73..8c1227c4e 100644 --- a/apps/web/locales/id-ID.po +++ b/apps/web/locales/id-ID.po @@ -1338,6 +1338,11 @@ msgstr "Patch ini tidak dapat dipulihkan." msgid "Could not set up two-factor authentication." msgstr "Tidak dapat menyiapkan autentikasi dua faktor." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Koneksi penyedia tidak dapat diverifikasi." @@ -5031,6 +5036,10 @@ msgstr "Terjadi kesalahan saat memasukkan Anda. Silakan coba lagi." msgid "Something went wrong. Please try again." msgstr "Terjadi sesuatu yang salah. Silakan coba lagi." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/it-IT.po b/apps/web/locales/it-IT.po index 81a8df200..81a78e836 100644 --- a/apps/web/locales/it-IT.po +++ b/apps/web/locales/it-IT.po @@ -1338,6 +1338,11 @@ msgstr "Impossibile ripristinare questa patch." msgid "Could not set up two-factor authentication." msgstr "Impossibile configurare l'autenticazione a due fattori." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Impossibile verificare la connessione al provider." @@ -5031,6 +5036,10 @@ msgstr "Si è verificato un problema durante l'accesso. Riprova." msgid "Something went wrong. Please try again." msgstr "Qualcosa è andato storto. Riprova." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ja-JP.po b/apps/web/locales/ja-JP.po index cc63642c5..45d433ee3 100644 --- a/apps/web/locales/ja-JP.po +++ b/apps/web/locales/ja-JP.po @@ -1338,6 +1338,11 @@ msgstr "このパッチを復元できませんでした。" msgid "Could not set up two-factor authentication." msgstr "二要素認証を設定できませんでした。" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "プロバイダとの接続を確認できませんでした。" @@ -5031,6 +5036,10 @@ msgstr "サインイン中に問題が発生しました。もう一度お試し msgid "Something went wrong. Please try again." msgstr "問題が発生しました。もう一度お試しください。" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/km-KH.po b/apps/web/locales/km-KH.po index 697e06dce..a1ea79efa 100644 --- a/apps/web/locales/km-KH.po +++ b/apps/web/locales/km-KH.po @@ -1338,6 +1338,11 @@ msgstr "មិនអាចស្ដារបំណះនេះឡើងវិញ msgid "Could not set up two-factor authentication." msgstr "មិនអាចដំឡើងការផ្ទៀងផ្ទាត់ពីរជាន់បានទេ។" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "មិនអាចផ្ទៀងផ្ទាត់ការតភ្ជាប់របស់អ្នកផ្តល់សេវាបានទេ។" @@ -5031,6 +5036,10 @@ msgstr "មានបញ្ហាកើតឡើងពេលចូល។ សូ msgid "Something went wrong. Please try again." msgstr "មាន​អ្វីមួយ​ខុសប្រក្រតី។ សូម​ព្យាយាម​ម្ដង​ទៀត។" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/kn-IN.po b/apps/web/locales/kn-IN.po index 0243d2e42..a5d3a77fc 100644 --- a/apps/web/locales/kn-IN.po +++ b/apps/web/locales/kn-IN.po @@ -1338,6 +1338,11 @@ msgstr "ಈ ಪ್ಯಾಚ್ ಅನ್ನು ಪುನಃಸ್ಥಾಪಿಸ msgid "Could not set up two-factor authentication." msgstr "ಎರಡು ಅಂಶಗಳ ದೃಢೀಕರಣವನ್ನು ಸಿದ್ಧಪಡಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "ಪೂರೈಕೆದಾರರ ಸಂಪರ್ಕವನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ." @@ -5031,6 +5036,10 @@ msgstr "ನಿಮ್ಮನ್ನು ಸೈನ್ ಇನ್ ಮಾಡುವಾಗ msgid "Something went wrong. Please try again." msgstr "ಏನೋ ತಪ್ಪಾಗಿದೆ. ದಯವಿಟ್ಟು ಮರುಪ್ರಯತ್ನಿಸಿ." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ko-KR.po b/apps/web/locales/ko-KR.po index 7bbf4bd57..a1ed2ec80 100644 --- a/apps/web/locales/ko-KR.po +++ b/apps/web/locales/ko-KR.po @@ -1338,6 +1338,11 @@ msgstr "이 패치를 복원할 수 없습니다." msgid "Could not set up two-factor authentication." msgstr "2단계 인증을 설정하지 못했습니다." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "공급자 연결을 확인할 수 없습니다." @@ -5031,6 +5036,10 @@ msgstr "로그인하는 중에 문제가 발생했습니다. 다시 시도해 msgid "Something went wrong. Please try again." msgstr "문제가 발생했습니다. 다시 시도해 주세요." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/lt-LT.po b/apps/web/locales/lt-LT.po index 339e862cc..6009d5045 100644 --- a/apps/web/locales/lt-LT.po +++ b/apps/web/locales/lt-LT.po @@ -1338,6 +1338,11 @@ msgstr "Nepavyko atkurti šio pataisymo." msgid "Could not set up two-factor authentication." msgstr "Nepavyko nustatyti dviejų veiksnių autentifikavimo." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nepavyko patvirtinti tiekėjo ryšio." @@ -5031,6 +5036,10 @@ msgstr "Jungiant įvyko klaida. Bandykite dar kartą." msgid "Something went wrong. Please try again." msgstr "Kažkas nepavyko. Bandykite dar kartą." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/lv-LV.po b/apps/web/locales/lv-LV.po index 1d28952e5..9d821c9f6 100644 --- a/apps/web/locales/lv-LV.po +++ b/apps/web/locales/lv-LV.po @@ -1338,6 +1338,11 @@ msgstr "Nevarēja atjaunot šo ielāpu." msgid "Could not set up two-factor authentication." msgstr "Neizdevās iestatīt divu faktoru autentifikāciju." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nevarēja pārbaudīt pakalpojumu sniedzēja savienojumu." @@ -5031,6 +5036,10 @@ msgstr "Piesakoties radās kļūda. Lūdzu, mēģiniet vēlreiz." msgid "Something went wrong. Please try again." msgstr "Kaut kas nogāja greizi. Lūdzu, mēģiniet vēlreiz." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ml-IN.po b/apps/web/locales/ml-IN.po index 0b9fe43af..63d62fc58 100644 --- a/apps/web/locales/ml-IN.po +++ b/apps/web/locales/ml-IN.po @@ -1338,6 +1338,11 @@ msgstr "ഈ പാച്ച് പുനഃസ്ഥാപിക്കാൻ ക msgid "Could not set up two-factor authentication." msgstr "ടു-ഫാക്ടർ ഓത്‌ന്റിക്കേഷൻ സജ്ജമാക്കാനായില്ല." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "ദാതാവിന്റെ കണക്ഷൻ പരിശോധിക്കാൻ കഴിഞ്ഞില്ല." @@ -5031,6 +5036,10 @@ msgstr "നിങ്ങളെ സൈൻ ഇൻ ചെയ്യുമ്പോൾ msgid "Something went wrong. Please try again." msgstr "എന്തോ പിശക് സംഭവിച്ചു. ദയവായി വീണ്ടും ശ്രമിക്കുക." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/mr-IN.po b/apps/web/locales/mr-IN.po index 669c3a26e..f667da796 100644 --- a/apps/web/locales/mr-IN.po +++ b/apps/web/locales/mr-IN.po @@ -1338,6 +1338,11 @@ msgstr "हा पॅच पुनर्स्थापित करता आ msgid "Could not set up two-factor authentication." msgstr "दुहेरी घटक ओथेंटिकेशन सेट करता आले नाही." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "प्रोव्हायडर कनेक्शनची पडताळणी होऊ शकली नाही." @@ -5031,6 +5036,10 @@ msgstr "तुम्हाला साइन इन करताना का msgid "Something went wrong. Please try again." msgstr "काही तरी चूक झाली. कृपया पुन्हा प्रयत्न करा." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ms-MY.po b/apps/web/locales/ms-MY.po index b9e54472a..00fc796da 100644 --- a/apps/web/locales/ms-MY.po +++ b/apps/web/locales/ms-MY.po @@ -1338,6 +1338,11 @@ msgstr "Tidak dapat memulihkan tampalan ini." msgid "Could not set up two-factor authentication." msgstr "Tidak dapat menyediakan pengesahan dua faktor." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Tidak dapat mengesahkan sambungan pembekal." @@ -5031,6 +5036,10 @@ msgstr "Sesuatu telah berlaku semasa anda log masuk. Sila cuba lagi." msgid "Something went wrong. Please try again." msgstr "Ada sesuatu yang tidak kena. Sila cuba lagi." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ne-NP.po b/apps/web/locales/ne-NP.po index 7d7bfbfc6..174049f7f 100644 --- a/apps/web/locales/ne-NP.po +++ b/apps/web/locales/ne-NP.po @@ -1338,6 +1338,11 @@ msgstr "यो प्याच पुनर्स्थापित गर्न msgid "Could not set up two-factor authentication." msgstr "दुई-कारक प्रमाणीकरण सेटअप गर्न सकिएन।" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "प्रदायक जडान प्रमाणित गर्न सकिएन।" @@ -5031,6 +5036,10 @@ msgstr "तपाईंलाई साइन इन गर्दा केह msgid "Something went wrong. Please try again." msgstr "केही समस्या भयो। कृपया पुनः प्रयास गर्नुहोस्।" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/nl-NL.po b/apps/web/locales/nl-NL.po index c3541a605..a1b3931bd 100644 --- a/apps/web/locales/nl-NL.po +++ b/apps/web/locales/nl-NL.po @@ -1338,6 +1338,11 @@ msgstr "Deze patch kon niet worden hersteld." msgid "Could not set up two-factor authentication." msgstr "Tweestapsverificatie kon niet worden ingesteld." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "De verbinding met de provider kon niet worden geverifieerd." @@ -5031,6 +5036,10 @@ msgstr "Er is iets misgegaan tijdens het inloggen. Probeer het opnieuw." msgid "Something went wrong. Please try again." msgstr "Er is iets misgegaan. Probeer het alstublieft opnieuw." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/no-NO.po b/apps/web/locales/no-NO.po index b91718da1..0c5acaa5a 100644 --- a/apps/web/locales/no-NO.po +++ b/apps/web/locales/no-NO.po @@ -1338,6 +1338,11 @@ msgstr "Kunne ikke gjenopprette denne oppdateringen." msgid "Could not set up two-factor authentication." msgstr "Kunne ikke sette opp tofaktorautentisering." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Kunne ikke bekrefte leverandørtilkoblingen." @@ -5031,6 +5036,10 @@ msgstr "Noe gikk galt under innloggingen. Prøv igjen." msgid "Something went wrong. Please try again." msgstr "Noe gikk galt. Vennligst prøv igjen." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/or-IN.po b/apps/web/locales/or-IN.po index fb54d7dab..ee97bf452 100644 --- a/apps/web/locales/or-IN.po +++ b/apps/web/locales/or-IN.po @@ -1338,6 +1338,11 @@ msgstr "ଏହି ପ୍ୟାଚ୍ ପୁନଃସ୍ଥାପନ କରିପ msgid "Could not set up two-factor authentication." msgstr "ଦ୍ୱି-ଘଟକ ପରିଚୟ ପ୍ରମାଣିକରଣ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିଲା ନାହିଁ।" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "ପ୍ରଦାତା ସଂଯୋଗ ଯାଞ୍ଚ କରିପାରିଲା ନାହିଁ।" @@ -5031,6 +5036,10 @@ msgstr "ଆପଣଙ୍କୁ ସାଇନ୍ ଇନ୍ କରିବା ସମ msgid "Something went wrong. Please try again." msgstr "କିଛି ଭୁଲ୍ ହୋଇଛି। ଦୟାକରି ପୁନଃ ଚେଷ୍ଟା କରନ୍ତୁ।" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/pl-PL.po b/apps/web/locales/pl-PL.po index 56ae5c976..3c0a3e4fe 100644 --- a/apps/web/locales/pl-PL.po +++ b/apps/web/locales/pl-PL.po @@ -1338,6 +1338,11 @@ msgstr "Nie udało się przywrócić tej poprawki." msgid "Could not set up two-factor authentication." msgstr "Nie udało się skonfigurować uwierzytelniania dwuskładnikowego." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nie można zweryfikować połączenia z dostawcą." @@ -5031,6 +5036,10 @@ msgstr "Coś poszło nie tak podczas logowania. Spróbuj ponownie." msgid "Something went wrong. Please try again." msgstr "Coś poszło nie tak. Spróbuj ponownie." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/pt-BR.po b/apps/web/locales/pt-BR.po index a8bf0fd05..47e119bd1 100644 --- a/apps/web/locales/pt-BR.po +++ b/apps/web/locales/pt-BR.po @@ -1338,6 +1338,11 @@ msgstr "Não foi possível restaurar este patch." msgid "Could not set up two-factor authentication." msgstr "Não foi possível configurar a autenticação de dois fatores." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Não foi possível verificar a conexão com o provedor." @@ -5031,6 +5036,10 @@ msgstr "Algo deu errado ao fazer seu login. Tente novamente." msgid "Something went wrong. Please try again." msgstr "Algo deu errado. Tente novamente." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/pt-PT.po b/apps/web/locales/pt-PT.po index 054474ae9..05924b454 100644 --- a/apps/web/locales/pt-PT.po +++ b/apps/web/locales/pt-PT.po @@ -1338,6 +1338,11 @@ msgstr "Não foi possível restaurar este patch." msgid "Could not set up two-factor authentication." msgstr "Não foi possível configurar a autenticação de dois fatores." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Não foi possível verificar a ligação com o fornecedor." @@ -5031,6 +5036,10 @@ msgstr "Algo correu mal ao iniciar a sua sessão. Tente novamente." msgid "Something went wrong. Please try again." msgstr "Algo correu mal. Tente novamente." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ro-RO.po b/apps/web/locales/ro-RO.po index 5adb25379..1f131a48b 100644 --- a/apps/web/locales/ro-RO.po +++ b/apps/web/locales/ro-RO.po @@ -1338,6 +1338,11 @@ msgstr "Nu s-a putut restaura acest patch." msgid "Could not set up two-factor authentication." msgstr "Nu s-a putut configura autentificarea cu doi factori." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nu s-a putut verifica conexiunea furnizorului." @@ -5031,6 +5036,10 @@ msgstr "A apărut o problemă la conectare. Încearcă din nou." msgid "Something went wrong. Please try again." msgstr "Ceva nu a funcționat. Vă rugăm să încercați din nou." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ru-RU.po b/apps/web/locales/ru-RU.po index c049eb177..045e0c708 100644 --- a/apps/web/locales/ru-RU.po +++ b/apps/web/locales/ru-RU.po @@ -1338,6 +1338,11 @@ msgstr "Восстановить этот патч не удалось." msgid "Could not set up two-factor authentication." msgstr "Не удалось настроить двухфакторную аутентификацию." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Не удалось проверить подключение к провайдеру." @@ -5031,6 +5036,10 @@ msgstr "При входе что-то пошло не так. Попробуйт msgid "Something went wrong. Please try again." msgstr "Что-то пошло не так. Пожалуйста, попробуйте еще раз." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/sk-SK.po b/apps/web/locales/sk-SK.po index ab715dbb3..f11908436 100644 --- a/apps/web/locales/sk-SK.po +++ b/apps/web/locales/sk-SK.po @@ -1338,6 +1338,11 @@ msgstr "Túto záplatu sa nepodarilo obnoviť." msgid "Could not set up two-factor authentication." msgstr "Nepodarilo sa nastaviť dvojfaktorové overenie." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nepodarilo sa overiť pripojenie poskytovateľa." @@ -5031,6 +5036,10 @@ msgstr "Pri prihlasovaní sa niečo pokazilo. Skúste to prosím znova." msgid "Something went wrong. Please try again." msgstr "Niečo sa pokazilo. Skús to, prosím, znova." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/sl-SI.po b/apps/web/locales/sl-SI.po index a8906b37a..536076e21 100644 --- a/apps/web/locales/sl-SI.po +++ b/apps/web/locales/sl-SI.po @@ -1338,6 +1338,11 @@ msgstr "Tega popravka ni bilo mogoče obnoviti." msgid "Could not set up two-factor authentication." msgstr "Dvofaktorske avtentikacije ni bilo mogoče nastaviti." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Povezave s ponudnikom ni bilo mogoče preveriti." @@ -5031,6 +5036,10 @@ msgstr "Pri prijavi je prišlo do napake. Poskusite znova." msgid "Something went wrong. Please try again." msgstr "Nekaj je šlo narobe. Prosimo, poskusite znova." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/sq-AL.po b/apps/web/locales/sq-AL.po index 3601d5458..ea4de9209 100644 --- a/apps/web/locales/sq-AL.po +++ b/apps/web/locales/sq-AL.po @@ -1338,6 +1338,11 @@ msgstr "Nuk mundi ta rikthente këtë patch." msgid "Could not set up two-factor authentication." msgstr "Vërtetimi me dy faktorë nuk u konfigurua dot." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Nuk mund të verifikohej lidhja e ofruesit." @@ -5031,6 +5036,10 @@ msgstr "Diçka shkoi keq gjatë hyrjes suaj. Ju lutemi provoni sërish." msgid "Something went wrong. Please try again." msgstr "Diçka shkoi keq. Ju lutemi provoni përsëri." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/sr-SP.po b/apps/web/locales/sr-SP.po index 6998336b7..3dc82e024 100644 --- a/apps/web/locales/sr-SP.po +++ b/apps/web/locales/sr-SP.po @@ -1338,6 +1338,11 @@ msgstr "Није могуће вратити ову закрпу." msgid "Could not set up two-factor authentication." msgstr "Није било могуће подесити двофакторску аутентификацију." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Није могуће проверити везу са провајдером." @@ -5031,6 +5036,10 @@ msgstr "Дошло је до грешке приликом пријављива msgid "Something went wrong. Please try again." msgstr "Нешто је пошло наопако. Покушајте поново." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/sv-SE.po b/apps/web/locales/sv-SE.po index c91e82e48..e63382a1b 100644 --- a/apps/web/locales/sv-SE.po +++ b/apps/web/locales/sv-SE.po @@ -1338,6 +1338,11 @@ msgstr "Kunde inte återställa den här patchen." msgid "Could not set up two-factor authentication." msgstr "Det gick inte att ställa in tvåfaktorsautentisering." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Kunde inte verifiera leverantörsanslutningen." @@ -5031,6 +5036,10 @@ msgstr "Något gick fel när du loggades in. Försök igen." msgid "Something went wrong. Please try again." msgstr "Något gick fel. Försök igen." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/ta-IN.po b/apps/web/locales/ta-IN.po index 2555c6ca4..dbcd2ad3d 100644 --- a/apps/web/locales/ta-IN.po +++ b/apps/web/locales/ta-IN.po @@ -1338,6 +1338,11 @@ msgstr "இந்தத் திருத்தத்தை மீட்டெ msgid "Could not set up two-factor authentication." msgstr "இரண்டு நிலை அங்கீகாரத்தை அமைக்க முடியவில்லை." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "வழங்குநர் இணைப்பைச் சரிபார்க்க முடியவில்லை." @@ -5031,6 +5036,10 @@ msgstr "உங்களை உள்நுழைக்கும்போது msgid "Something went wrong. Please try again." msgstr "ஏதோ தவறு நடந்துள்ளது. தயவுசெய்து மீண்டும் முயற்சிக்கவும்." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/te-IN.po b/apps/web/locales/te-IN.po index 13e3c1174..331f66947 100644 --- a/apps/web/locales/te-IN.po +++ b/apps/web/locales/te-IN.po @@ -1338,6 +1338,11 @@ msgstr "ఈ ప్యాచ్‌ను పునరుద్ధరించల msgid "Could not set up two-factor authentication." msgstr "రెండు దశల ధృవీకరణను సెటప్ చేయలేకపోయాం." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "ప్రొవైడర్ కనెక్షన్‌ను ధృవీకరించలేకపోయాము." @@ -5031,6 +5036,10 @@ msgstr "మిమ్మల్ని సైన్ ఇన్ చేస్తున msgid "Something went wrong. Please try again." msgstr "ఏదో తప్పు జరిగింది. దయచేసి మళ్లీ ప్రయత్నించండి." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/th-TH.po b/apps/web/locales/th-TH.po index d29922384..66ad8413b 100644 --- a/apps/web/locales/th-TH.po +++ b/apps/web/locales/th-TH.po @@ -1338,6 +1338,11 @@ msgstr "ไม่สามารถกู้คืนแพทช์นี้ไ msgid "Could not set up two-factor authentication." msgstr "ไม่สามารถตั้งค่าการยืนยันตัวตนแบบสองขั้นตอนได้" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "ไม่สามารถตรวจสอบการเชื่อมต่อของผู้ให้บริการได้" @@ -5031,6 +5036,10 @@ msgstr "เกิดข้อผิดพลาดขณะลงชื่อเ msgid "Something went wrong. Please try again." msgstr "เกิดข้อผิดพลาดบางอย่าง กรุณาลองใหม่อีกครั้ง" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/tr-TR.po b/apps/web/locales/tr-TR.po index 2d126adaf..d696ca3e3 100644 --- a/apps/web/locales/tr-TR.po +++ b/apps/web/locales/tr-TR.po @@ -1338,6 +1338,11 @@ msgstr "Bu yama geri yüklenemedi." msgid "Could not set up two-factor authentication." msgstr "İki faktörlü kimlik doğrulama kurulamadı." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Servis sağlayıcı bağlantısı doğrulanamadı." @@ -5031,6 +5036,10 @@ msgstr "Oturumunuz açılırken bir sorun oluştu. Lütfen tekrar deneyin." msgid "Something went wrong. Please try again." msgstr "Bir hata oluştu. Lütfen tekrar deneyin." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/uk-UA.po b/apps/web/locales/uk-UA.po index 0cd7ed671..781aac1cb 100644 --- a/apps/web/locales/uk-UA.po +++ b/apps/web/locales/uk-UA.po @@ -1338,6 +1338,11 @@ msgstr "Не вдалося відновити цей патч." msgid "Could not set up two-factor authentication." msgstr "Не вдалося налаштувати двофакторну автентифікацію." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Не вдалося перевірити підключення постачальника." @@ -5031,6 +5036,10 @@ msgstr "Під час входу сталася помилка. Спробуйт msgid "Something went wrong. Please try again." msgstr "Щось пішло не так. Будь ласка, спробуйте ще раз." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/uz-UZ.po b/apps/web/locales/uz-UZ.po index 5b469dbdf..066de7d3f 100644 --- a/apps/web/locales/uz-UZ.po +++ b/apps/web/locales/uz-UZ.po @@ -1338,6 +1338,11 @@ msgstr "Ushbu yamoqni tiklab bo'lmadi." msgid "Could not set up two-factor authentication." msgstr "Ikki bosqichli autentifikatsiyani sozlab bo'lmadi." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Provayder ulanishini tekshirib bo'lmadi." @@ -5031,6 +5036,10 @@ msgstr "Kirish paytida xatolik yuz berdi. Iltimos, qayta urinib ko‘ring." msgid "Something went wrong. Please try again." msgstr "Nimadir xato ketdi. Iltimos, qayta urinib koʻring." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/vi-VN.po b/apps/web/locales/vi-VN.po index 69c012d15..c4c9b07b9 100644 --- a/apps/web/locales/vi-VN.po +++ b/apps/web/locales/vi-VN.po @@ -1338,6 +1338,11 @@ msgstr "Không thể khôi phục bản vá này." msgid "Could not set up two-factor authentication." msgstr "Không thể thiết lập xác thực hai yếu tố." +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "Không thể xác minh kết nối với nhà cung cấp." @@ -5031,6 +5036,10 @@ msgstr "Đã xảy ra lỗi khi đăng nhập cho bạn. Vui lòng thử lại." msgid "Something went wrong. Please try again." msgstr "Đã xảy ra lỗi. Vui lòng thử lại." +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/zh-CN.po b/apps/web/locales/zh-CN.po index a79e1e336..ca6a1eede 100644 --- a/apps/web/locales/zh-CN.po +++ b/apps/web/locales/zh-CN.po @@ -1338,6 +1338,11 @@ msgstr "无法恢复此补丁。" msgid "Could not set up two-factor authentication." msgstr "无法设置双重身份验证。" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "无法验证提供商连接。" @@ -5031,6 +5036,10 @@ msgstr "登录时出错。请重试。" msgid "Something went wrong. Please try again." msgstr "出现了一些问题。请重试。" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/zh-TW.po b/apps/web/locales/zh-TW.po index 2e92ddab5..217d8a75c 100644 --- a/apps/web/locales/zh-TW.po +++ b/apps/web/locales/zh-TW.po @@ -1338,6 +1338,11 @@ msgstr "無法恢復此補丁。" msgid "Could not set up two-factor authentication." msgstr "無法設定雙因子驗證。" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "無法驗證提供者連線。" @@ -5031,6 +5036,10 @@ msgstr "登入時發生錯誤。請再試一次。" msgid "Something went wrong. Please try again." msgstr "發生錯誤。請再試一次。" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/locales/zu-ZA.po b/apps/web/locales/zu-ZA.po index 4d72b13d7..b0a9a2cf6 100644 --- a/apps/web/locales/zu-ZA.po +++ b/apps/web/locales/zu-ZA.po @@ -1324,6 +1324,11 @@ msgstr "" msgid "Could not set up two-factor authentication." msgstr "" +#. placeholder {0}: unresolvedLabels.join(", ") +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Could not sort these items; they stayed at the end: {0}." +msgstr "" + #: src/features/settings/integrations/components/ai-section.tsx msgid "Could not verify provider connection." msgstr "" @@ -4998,6 +5003,10 @@ msgstr "" msgid "Something went wrong. Please try again." msgstr "" +#: src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +msgid "Sort by date" +msgstr "" + #: src/routes/dashboard/applications/index.tsx #: src/routes/dashboard/resumes/index.tsx msgid "Sort by" diff --git a/apps/web/src/features/resume/builder/draft.test.ts b/apps/web/src/features/resume/builder/draft.test.ts index 9db0f65e3..7bcef58aa 100644 --- a/apps/web/src/features/resume/builder/draft.test.ts +++ b/apps/web/src/features/resume/builder/draft.test.ts @@ -5,6 +5,7 @@ import type { Resume } from "./draft"; import { act, renderHook } from "@testing-library/react"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { i18n } from "@lingui/core"; +import { sortSectionItemsByPeriod } from "@reactive-resume/resume/section-sort"; import { defaultResumeData } from "@reactive-resume/schema/resume/default"; import { isEditableElementFocused, @@ -112,6 +113,24 @@ function withBasicsName(resume: Resume, name: string): Resume { }; } +function experienceItem( + id: string, + company: string, + period: string, +): ResumeData["sections"]["experience"]["items"][number] { + return { + id, + company, + position: "Engineer", + location: "", + period, + description: "", + hidden: false, + website: { url: "", label: "", inlineLink: false }, + roles: [], + }; +} + async function flushMicrotasks() { await Promise.resolve(); await Promise.resolve(); @@ -480,6 +499,69 @@ describe("builder resume undo/redo", () => { expect(store().canRedo).toBe(false); }); + it("restores the exact authored Experience order with one undo after a one-shot sort", () => { + const store = useResumeStore.getState; + const initial = makeResume("sort-undo"); + initial.data.sections.experience.items = [ + experienceItem("unknown", "Mystery Co", "Recently"), + experienceItem("older", "Older Co", "2018 - 2020"), + experienceItem("current", "Current Co", "2023 - Present"), + ]; + const authoredItems = cloneResumeData(initial.data).sections.experience.items; + store().initialize(initial); + + store().updateResumeData((draft) => { + draft.sections.experience.items = sortSectionItemsByPeriod( + draft.sections.experience.items, + draft.metadata.page.locale, + ).items; + }); + + expect(store().resume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older", "unknown"]); + expect(store().undoStack).toHaveLength(1); + + store().undo(); + expect(store().resume?.data.sections.experience.items).toEqual(authoredItems); + expect(store().canUndo).toBe(false); + }); + + it("retains the chosen order through autosave/reload and never resorts later field edits", async () => { + const store = useResumeStore.getState; + const initial = makeResume("sort-persistence"); + initial.data.sections.experience.items = [ + experienceItem("older", "Older Co", "2018 - 2020"), + experienceItem("current", "Current Co", "2023 - Present"), + ]; + let savedResume: Resume | undefined; + orpcMocks.updateResume.mockImplementation((input: { id: string; data: ResumeData }) => { + savedResume = { ...makeResume(input.id), data: cloneResumeData(input.data) }; + return Promise.resolve(savedResume); + }); + store().initialize(initial); + + store().updateResumeData((draft) => { + draft.sections.experience.items = sortSectionItemsByPeriod( + draft.sections.experience.items, + draft.metadata.page.locale, + ).items; + }); + vi.advanceTimersByTime(500); + await flushMicrotasks(); + + expect(orpcMocks.updateResume).toHaveBeenCalledTimes(1); + expect(savedResume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older"]); + if (!savedResume) throw new Error("expected the sorted resume to be saved"); + + store().reset(); + store().initialize(savedResume); + store().updateResumeData((draft) => { + const currentItem = draft.sections.experience.items.find(({ id }) => id === "current"); + if (currentItem) currentItem.period = "2010 - 2011"; + }); + + expect(store().resume?.data.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older"]); + }); + it("separates edits outside the coalesce window into distinct undo steps", async () => { const store = useResumeStore.getState; store().initialize(makeResume("undo-boundary")); diff --git a/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.test.tsx b/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.test.tsx index e4e948456..a24657a27 100644 --- a/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.test.tsx +++ b/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.test.tsx @@ -1,28 +1,25 @@ // @vitest-environment happy-dom -import { render, screen } from "@testing-library/react"; +import type { Resume } from "@/features/resume/builder/draft"; +import { fireEvent, render, screen } from "@testing-library/react"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { i18n } from "@lingui/core"; import { I18nProvider } from "@lingui/react"; import { SectionDropdownMenu } from "./section-menu"; -const mockUpdateResumeData = vi.fn(); +const mocks = vi.hoisted(() => ({ + updateResumeData: vi.fn(), + toastAdd: vi.fn(), + resume: { value: {} as Resume }, +})); vi.mock("@/features/resume/builder/draft", () => ({ - useCurrentResume: () => ({ - data: { - sections: { - skills: { - title: "Skills", - columns: 2, - hidden: false, - layout: "default", - items: [], - }, - }, - }, - }), - useUpdateResumeData: () => mockUpdateResumeData, + useCurrentResume: () => mocks.resume.value, + useUpdateResumeData: () => mocks.updateResumeData, +})); + +vi.mock("@reactive-resume/ui/components/toast", () => ({ + toast: { add: mocks.toastAdd }, })); vi.mock("@/hooks/use-confirm", () => ({ @@ -44,9 +41,49 @@ beforeAll(() => { }); beforeEach(() => { - mockUpdateResumeData.mockClear(); + mocks.updateResumeData.mockClear(); + mocks.toastAdd.mockClear(); + mocks.resume.value = { + isLocked: false, + data: { + metadata: { page: { locale: "en-US" } }, + sections: { + skills: { + title: "Skills", + columns: 2, + hidden: false, + layout: "default", + items: [], + }, + experience: { + title: "Experience", + columns: 1, + hidden: false, + items: [ + { id: "unknown", company: "Mystery Co", period: "Recently" }, + { id: "older", company: "Older Co", period: "2018 - 2020" }, + { id: "current", company: "Current Co", period: "2023 - Present" }, + ], + }, + education: { + title: "Education", + columns: 1, + hidden: false, + items: [ + { id: "earlier", school: "Earlier School", period: "2016 - 2020" }, + { id: "later", school: "Later School", period: "2020 - 2024" }, + ], + }, + }, + }, + } as unknown as Resume; }); +function openSectionOptions() { + fireEvent.click(screen.getByRole("button", { name: "Section options" })); + return screen.findByRole("menu"); +} + describe("SkillsSectionDropdownMenu", () => { it("updates resume data correctly when selecting 'inline' for skills section", async () => { render( @@ -55,16 +92,16 @@ describe("SkillsSectionDropdownMenu", () => { , ); - screen.getByRole("button", { name: "Section options" }).click(); + await openSectionOptions(); (await screen.findByRole("menuitem", { name: /columns/i })).click(); (await screen.findByRole("menuitemradio", { name: /inline/i })).click(); - expect(mockUpdateResumeData).toHaveBeenCalledTimes(1); - expect(mockUpdateResumeData).toHaveBeenCalledWith(expect.any(Function)); + expect(mocks.updateResumeData).toHaveBeenCalledTimes(1); + expect(mocks.updateResumeData).toHaveBeenCalledWith(expect.any(Function)); - const mutation = mockUpdateResumeData.mock.calls[0][0]; + const mutation = mocks.updateResumeData.mock.calls[0][0]; const mockDraft = { sections: { skills: { @@ -90,16 +127,16 @@ describe("SkillsSectionDropdownMenu", () => { , ); - screen.getByRole("button", { name: "Section options" }).click(); + await openSectionOptions(); (await screen.findByRole("menuitem", { name: /columns/i })).click(); (await screen.findByRole("menuitemradio", { name: /3 columns/i })).click(); - expect(mockUpdateResumeData).toHaveBeenCalledTimes(1); - expect(mockUpdateResumeData).toHaveBeenCalledWith(expect.any(Function)); + expect(mocks.updateResumeData).toHaveBeenCalledTimes(1); + expect(mocks.updateResumeData).toHaveBeenCalledWith(expect.any(Function)); - const mutation = mockUpdateResumeData.mock.calls[0][0]; + const mutation = mocks.updateResumeData.mock.calls[0][0]; const mockDraft = { sections: { skills: { @@ -118,3 +155,74 @@ describe("SkillsSectionDropdownMenu", () => { expect(mockDraft.sections.skills.columns).toBe(3); }); }); + +describe("chronological section sorting", () => { + it("sorts Experience once through one draft mutation and names only unresolved items", async () => { + render( + + + , + ); + + await openSectionOptions(); + fireEvent.click(await screen.findByRole("menuitem", { name: "Sort by date" })); + + expect(mocks.updateResumeData).toHaveBeenCalledTimes(1); + const mutation = mocks.updateResumeData.mock.calls[0]?.[0] as (draft: Resume["data"]) => void; + const draft = structuredClone(mocks.resume.value.data); + mutation(draft); + + expect(draft.sections.experience.items.map(({ id }) => id)).toEqual(["current", "older", "unknown"]); + expect(mocks.toastAdd).toHaveBeenCalledWith({ + type: "warning", + description: "Could not sort these items; they stayed at the end: Mystery Co.", + }); + }); + + it("sorts Education once without showing an unresolved notice", async () => { + render( + + + , + ); + + await openSectionOptions(); + fireEvent.click(await screen.findByRole("menuitem", { name: "Sort by date" })); + + expect(mocks.updateResumeData).toHaveBeenCalledTimes(1); + const mutation = mocks.updateResumeData.mock.calls[0]?.[0] as (draft: Resume["data"]) => void; + const draft = structuredClone(mocks.resume.value.data); + mutation(draft); + + expect(draft.sections.education.items.map(({ id }) => id)).toEqual(["later", "earlier"]); + expect(mocks.toastAdd).not.toHaveBeenCalled(); + }); + + it("disables sorting when the resume is locked", async () => { + mocks.resume.value = { ...mocks.resume.value, isLocked: true }; + render( + + + , + ); + + await openSectionOptions(); + const sortItem = await screen.findByRole("menuitem", { name: "Sort by date" }); + + expect(sortItem).toHaveAttribute("aria-disabled", "true"); + fireEvent.keyDown(sortItem, { key: "Escape" }); + expect(mocks.updateResumeData).not.toHaveBeenCalled(); + }); + + it("does not offer date sorting for other built-in sections", async () => { + render( + + + , + ); + + await openSectionOptions(); + + expect(screen.queryByRole("menuitem", { name: "Sort by date" })).not.toBeInTheDocument(); + }); +}); diff --git a/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx b/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx index 3bae583e2..34d1016d9 100644 --- a/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx +++ b/apps/web/src/routes/builder/$resumeId/-sidebar/left/shared/section-menu.tsx @@ -9,7 +9,9 @@ import { ListIcon, PencilSimpleLineIcon, PlusIcon, + SortDescendingIcon, } from "@phosphor-icons/react"; +import { sortSectionItemsByPeriod } from "@reactive-resume/resume/section-sort"; import { Button } from "@reactive-resume/ui/components/button"; import { DropdownMenu, @@ -24,6 +26,7 @@ import { DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@reactive-resume/ui/components/dropdown-menu"; +import { toast } from "@reactive-resume/ui/components/toast"; import { useDialogStore } from "@/dialogs/store"; import { useCurrentResume, useUpdateResumeData } from "@/features/resume/builder/draft"; import { useConfirm } from "@/hooks/use-confirm"; @@ -49,6 +52,36 @@ export function SectionDropdownMenu({ type }: Props) { openDialog(`resume.sections.${type}.create`, undefined); }; + const onSortByDate = () => { + if ((type !== "experience" && type !== "education") || resume.isLocked) return; + + let unresolvedLabels: string[] = []; + if (type === "experience") { + const currentItems = resume.data.sections.experience.items; + const result = sortSectionItemsByPeriod(currentItems, resume.data.metadata.page.locale); + const labelById = new Map(currentItems.map((item) => [item.id, item.company.trim() || item.id])); + unresolvedLabels = result.unresolvedIds.map((id) => labelById.get(id) ?? id); + updateResumeData((draft) => { + draft.sections.experience.items = result.items; + }); + } else { + const currentItems = resume.data.sections.education.items; + const result = sortSectionItemsByPeriod(currentItems, resume.data.metadata.page.locale); + const labelById = new Map(currentItems.map((item) => [item.id, item.school.trim() || item.id])); + unresolvedLabels = result.unresolvedIds.map((id) => labelById.get(id) ?? id); + updateResumeData((draft) => { + draft.sections.education.items = result.items; + }); + } + + if (unresolvedLabels.length > 0) { + toast.add({ + type: "warning", + description: t`Could not sort these items; they stayed at the end: ${unresolvedLabels.join(", ")}.`, + }); + } + }; + const onToggleVisibility = () => { updateResumeData((draft) => { if (type === "summary") { @@ -137,6 +170,13 @@ export function SectionDropdownMenu({ type }: Props) { Add a new item + + {(type === "experience" || type === "education") && ( + + + Sort by date + + )} diff --git a/packages/resume/package.json b/packages/resume/package.json index fa0bf05a2..5f1da1180 100644 --- a/packages/resume/package.json +++ b/packages/resume/package.json @@ -12,6 +12,7 @@ "./markdown": "./src/markdown.ts", "./patch": "./src/patch.ts", "./section-availability": "./src/section-availability.ts", + "./section-sort": "./src/section-sort.ts", "./social-meta": "./src/social-meta.ts", "./stylesheet": "./src/stylesheet/index.ts", "./stylesheet/registry": "./src/stylesheet/registry/index.ts", diff --git a/packages/resume/src/ats/period.test.ts b/packages/resume/src/ats/period.test.ts index c671bb18f..120c22345 100644 --- a/packages/resume/src/ats/period.test.ts +++ b/packages/resume/src/ats/period.test.ts @@ -4,6 +4,25 @@ import { isFutureEndpoint, isReversedPeriod, ONGOING_TOKENS_BY_LANGUAGE, parsePe const NOW = new Date("2024-06-15T00:00:00Z"); describe("parsePeriod", () => { + it.each([ + ["numeric range", "2020 - 2024", "en-US", { start: { year: 2020 }, end: { year: 2024 }, ongoing: false }], + [ + "localized range", + "janvier 2020 - mars 2022", + "fr-FR", + { start: { year: 2020, month: 1 }, end: { year: 2022, month: 3 }, ongoing: false }, + ], + ["ongoing range", "January 2024 - Present", "en-US", { start: { year: 2024, month: 1 }, ongoing: true }], + ["year-only value", "2024", "en-US", { start: { year: 2024 }, ongoing: false }], + ["reversed range", "2024 - 2020", "en-US", { start: { year: 2024 }, end: { year: 2020 }, ongoing: false }], + ["blank value", "", "en-US", null], + ["bare ongoing value", "Present", "en-US", null], + ["prose value", "Summer of love", "en-US", null], + ["equal range", "2024 - 2024", "en-US", { start: { year: 2024 }, end: { year: 2024 }, ongoing: false }], + ] as const)("characterizes %s", (_case, input, locale, expected) => { + expect(parsePeriod(input, locale)).toEqual(expected); + }); + it.each([ ["Jan 2020 - Present", { start: { year: 2020, month: 1 }, ongoing: true }], ["January 2020 – March 2022", { start: { year: 2020, month: 1 }, end: { year: 2022, month: 3 }, ongoing: false }], diff --git a/packages/resume/src/section-sort.test.ts b/packages/resume/src/section-sort.test.ts new file mode 100644 index 000000000..5d0bd3508 --- /dev/null +++ b/packages/resume/src/section-sort.test.ts @@ -0,0 +1,133 @@ +import { describe, expect, it } from "vitest"; +import { sortSectionItemsByPeriod } from "./section-sort"; + +type Item = { + id: string; + period: string; + title: string; + metadata?: { note: string }; +}; + +const item = (id: string, period: string, title = id): Item => ({ id, period, title }); +const ids = (items: readonly Item[]) => items.map(({ id }) => id); + +describe("sortSectionItemsByPeriod", () => { + it("orders ongoing, ended, equal, and unresolved periods by the documented total order", () => { + const equalFirst = item("equal-first", "2020 - 2023"); + const equalSecond = item("equal-second", "2020 - 2023"); + const input = [ + item("blank", ""), + equalFirst, + item("ended-2024", "2020 - 2024"), + item("ongoing-2020", "2020 - Present"), + item("prose", "A long time ago"), + item("ended-2025", "2022 - 2025"), + equalSecond, + item("ongoing-2024", "January 2024 - Present"), + item("reversed", "2025 - 2024"), + ]; + + const result = sortSectionItemsByPeriod(input, "en-US"); + + expect(ids(result.items)).toEqual([ + "ongoing-2024", + "ongoing-2020", + "ended-2025", + "ended-2024", + "equal-first", + "equal-second", + "blank", + "prose", + "reversed", + ]); + expect(result.unresolvedIds).toEqual(["blank", "prose", "reversed"]); + }); + + it("uses locale-aware months and ranks year precision below a known month in the same year", () => { + const input = [ + item("year-only-end", "2020 - 2024"), + item("localized-march", "janvier 2020 - mars 2024"), + item("localized-february", "janvier 2020 - février 2024"), + ]; + + const result = sortSectionItemsByPeriod(input, "fr-FR"); + + expect(ids(result.items)).toEqual(["localized-march", "localized-february", "year-only-end"]); + expect(result.unresolvedIds).toEqual([]); + }); + + it("ranks missing end points after known end points, then compares known starts", () => { + const input = [item("single-2025", "2025"), item("ended-2020", "2019 - 2020"), item("single-2024", "2024")]; + + const result = sortSectionItemsByPeriod(input, "en-US"); + + expect(ids(result.items)).toEqual(["ended-2020", "single-2025", "single-2024"]); + }); + + it("keeps mixed-precision comparisons transitive", () => { + const input = [ + item("december-2023", "2020 - December 2023"), + item("may-2024", "2020 - May 2024"), + item("year-2024", "2020 - 2024"), + ]; + + expect(ids(sortSectionItemsByPeriod(input, "en-US").items)).toEqual(["may-2024", "year-2024", "december-2023"]); + }); + + it("leaves bare ongoing tokens, blanks, prose, and reversed periods stable at the end", () => { + const input = [ + item("present", "Present"), + item("known", "2020 - 2021"), + item("blank", " "), + item("prose", "During university"), + item("reversed", "March 2024 - February 2024"), + ]; + + const result = sortSectionItemsByPeriod(input, "en-US"); + + expect(ids(result.items)).toEqual(["known", "present", "blank", "prose", "reversed"]); + expect(result.unresolvedIds).toEqual(["present", "blank", "prose", "reversed"]); + }); + + it("returns new arrays while preserving every original object and all content", () => { + const first = item("first", "2020 - 2021", "Original title"); + first.metadata = { note: "Keep me" }; + const second = item("second", "2022 - Present", "Another title"); + const input = [first, second]; + const snapshot = structuredClone(input); + + const result = sortSectionItemsByPeriod(input, "en-US"); + + expect(result.items).not.toBe(input); + expect(result.items).toEqual([second, first]); + expect(result.items[0]).toBe(second); + expect(result.items[1]).toBe(first); + expect([...ids(result.items)].sort()).toEqual([...ids(input)].sort()); + expect(input).toEqual(snapshot); + }); + + it("is deterministic across repeated invocation without changing stable ties", () => { + const input = [item("equal-a", "2020 - 2024"), item("newest", "2021 - 2025"), item("equal-b", "2020 - 2024")]; + + const first = sortSectionItemsByPeriod(input, "en-US"); + const second = sortSectionItemsByPeriod(first.items, "en-US"); + + expect(ids(first.items)).toEqual(["newest", "equal-a", "equal-b"]); + expect(ids(second.items)).toEqual(ids(first.items)); + expect(second.unresolvedIds).toEqual(first.unresolvedIds); + }); + + it("returns fresh arrays for empty and single-item inputs", () => { + const empty: Item[] = []; + const single = [item("only", "2024")]; + + const emptyResult = sortSectionItemsByPeriod(empty, "en-US"); + const singleResult = sortSectionItemsByPeriod(single, "en-US"); + + expect(emptyResult).toEqual({ items: [], unresolvedIds: [] }); + expect(emptyResult.items).not.toBe(empty); + expect(singleResult).toEqual({ items: single, unresolvedIds: [] }); + expect(singleResult.items).not.toBe(single); + expect(singleResult.items[0]).toBe(single[0]); + }); +}); diff --git a/packages/resume/src/section-sort.ts b/packages/resume/src/section-sort.ts new file mode 100644 index 000000000..2d686054b --- /dev/null +++ b/packages/resume/src/section-sort.ts @@ -0,0 +1,82 @@ +import type { PeriodEndpoint } from "./ats/period"; +import { isReversedPeriod, parsePeriod } from "./ats/period"; + +type SectionItemWithPeriod = { + id: string; + period: string; +}; + +export type SortSectionItemsByPeriodResult = { + items: T[]; + unresolvedIds: string[]; +}; + +type SortGroup = "ongoing" | "ended" | "unresolved"; + +type RankedItem = { + item: T; + index: number; + group: SortGroup; + start?: PeriodEndpoint; + end?: PeriodEndpoint; +}; + +function compareEndpointDescending(left: PeriodEndpoint | undefined, right: PeriodEndpoint | undefined): number { + if (!left && !right) return 0; + if (!left) return 1; + if (!right) return -1; + if (left.year !== right.year) return right.year - left.year; + return (right.month ?? 0) - (left.month ?? 0); +} + +function rankItem(item: T, index: number, locale: string): RankedItem { + const period = parsePeriod(item.period, locale); + if (!period?.start || (period.end && isReversedPeriod(period.start, period.end))) { + return { item, index, group: "unresolved" }; + } + + return { + item, + index, + group: period.ongoing ? "ongoing" : "ended", + start: period.start, + ...(period.end ? { end: period.end } : {}), + }; +} + +const GROUP_RANK: Readonly> = { + ongoing: 0, + ended: 1, + unresolved: 2, +}; + +function compareRankedItems(left: RankedItem, right: RankedItem): number { + const groupOrder = GROUP_RANK[left.group] - GROUP_RANK[right.group]; + if (groupOrder !== 0) return groupOrder; + + if (left.group === "ongoing" && right.group === "ongoing") { + return compareEndpointDescending(left.start, right.start) || left.index - right.index; + } + + if (left.group === "ended" && right.group === "ended") { + return ( + compareEndpointDescending(left.end, right.end) || + compareEndpointDescending(left.start, right.start) || + left.index - right.index + ); + } + + return left.index - right.index; +} + +export function sortSectionItemsByPeriod( + items: readonly T[], + locale: string, +): SortSectionItemsByPeriodResult { + const rankedItems = items.map((item, index) => rankItem(item, index, locale)); + + return { + items: rankedItems.toSorted(compareRankedItems).map(({ item }) => item), + unresolvedIds: rankedItems.filter(({ group }) => group === "unresolved").map(({ item }) => item.id), + }; +} diff --git a/tests/e2e/specs/section-date-sorting.spec.ts b/tests/e2e/specs/section-date-sorting.spec.ts new file mode 100644 index 000000000..4697765a8 --- /dev/null +++ b/tests/e2e/specs/section-date-sorting.spec.ts @@ -0,0 +1,126 @@ +import { Pool } from "pg"; +import { createSampleResumeFromDashboard, openSidebarSection } from "../fixtures/resume"; +import { resumeIdFromPage } from "../fixtures/semantic-css"; +import { expect, test } from "../fixtures/test"; + +type ExperienceItem = { + id: string; + company: string; + position: string; + location: string; + period: string; + description: string; + hidden: boolean; + website: { url: string; label: string; inlineLink: boolean }; + roles: []; +}; + +const experienceItem = (id: string, company: string, period: string): ExperienceItem => ({ + id, + company, + position: "Engineer", + location: "", + period, + description: "", + hidden: false, + website: { url: "", label: "", inlineLink: false }, + roles: [], +}); + +function databasePool() { + if (!process.env.DATABASE_URL) throw new Error("DATABASE_URL is required for section sorting E2E coverage."); + return new Pool({ connectionString: process.env.DATABASE_URL }); +} + +async function seedExperienceItems(resumeId: string, items: ExperienceItem[]) { + const pool = databasePool(); + try { + const result = await pool.query<{ data: { sections: { experience: { items: ExperienceItem[] } } } }>( + 'select data from "resume" where id = $1', + [resumeId], + ); + const data = result.rows[0]?.data; + if (!data) throw new Error(`Resume ${resumeId} was not found.`); + data.sections.experience.items = items; + await pool.query('update "resume" set data = $2, updated_at = now() where id = $1', [resumeId, data]); + } finally { + await pool.end(); + } +} + +async function readExperienceItems(resumeId: string) { + const pool = databasePool(); + try { + const result = await pool.query<{ data: { sections: { experience: { items: ExperienceItem[] } } } }>( + 'select data from "resume" where id = $1', + [resumeId], + ); + const items = result.rows[0]?.data.sections.experience.items; + if (!items) throw new Error(`Resume ${resumeId} was not found.`); + return items; + } finally { + await pool.end(); + } +} + +const itemIds = (items: ExperienceItem[]) => items.map(({ id }) => id); + +test("sorts Experience once while preserving undo, persistence, later edits, and locking", async ({ + authPage: page, +}, testInfo) => { + test.setTimeout(90_000); + await createSampleResumeFromDashboard(page, testInfo); + const resumeId = resumeIdFromPage(page); + const authoredItems = [ + experienceItem("unknown-sort", "Mystery Co", "Recently"), + experienceItem("older-sort", "Older Co", "2018 - 2020"), + experienceItem("current-sort", "Current Co", "2023 - Present"), + ]; + await seedExperienceItems(resumeId, authoredItems); + await page.reload(); + await openSidebarSection(page, "Experience"); + const section = page.locator("#sidebar-experience"); + const renderedItemIds = () => + section + .locator('[id^="resume-item-"]') + .evaluateAll((nodes) => nodes.map(({ id }) => id.replace("resume-item-", ""))); + + await expect.poll(renderedItemIds).toEqual(["unknown-sort", "older-sort", "current-sort"]); + await section.getByRole("button", { name: "Section options" }).click(); + await page.getByRole("menuitem", { name: "Sort by date" }).click(); + await expect(page.getByText("Could not sort these items; they stayed at the end: Mystery Co.")).toBeVisible(); + await expect + .poll(async () => itemIds(await readExperienceItems(resumeId))) + .toEqual(["current-sort", "older-sort", "unknown-sort"]); + await expect.poll(renderedItemIds).toEqual(["current-sort", "older-sort", "unknown-sort"]); + + await page.getByRole("button", { name: "Undo", exact: true }).click(); + await expect + .poll(async () => itemIds(await readExperienceItems(resumeId))) + .toEqual(["unknown-sort", "older-sort", "current-sort"]); + + await section.getByRole("button", { name: "Section options" }).click(); + await page.getByRole("menuitem", { name: "Sort by date" }).click(); + await expect + .poll(async () => itemIds(await readExperienceItems(resumeId))) + .toEqual(["current-sort", "older-sort", "unknown-sort"]); + await page.reload(); + await openSidebarSection(page, "Experience"); + await expect.poll(renderedItemIds).toEqual(["current-sort", "older-sort", "unknown-sort"]); + + await section.getByText("Current Co", { exact: true }).click(); + const updateDialog = page.getByRole("dialog", { name: "Update an existing experience" }); + await updateDialog.getByLabel("Period").fill("2010 - 2011"); + await updateDialog.getByRole("button", { name: "Save Changes" }).click(); + await expect + .poll(async () => { + const items = await readExperienceItems(resumeId); + return { ids: itemIds(items), currentPeriod: items.find(({ id }) => id === "current-sort")?.period }; + }) + .toEqual({ ids: ["current-sort", "older-sort", "unknown-sort"], currentPeriod: "2010 - 2011" }); + + await page.getByRole("button", { name: "Resume options" }).click(); + await page.getByRole("menuitem", { name: "Lock" }).click(); + await page.getByRole("alertdialog").getByRole("button", { name: "Confirm" }).click(); + await expect(section.getByRole("button", { name: "Section options" })).toBeDisabled(); +});