-
-
+
+
diff --git a/apps/app-frontend/src/locales/ar-SA/index.json b/apps/app-frontend/src/locales/ar-SA/index.json
index 734bf0e863..75ef336e77 100644
--- a/apps/app-frontend/src/locales/ar-SA/index.json
+++ b/apps/app-frontend/src/locales/ar-SA/index.json
@@ -122,9 +122,6 @@
"app.export-modal.modpack-name-placeholder": {
"message": "إسم حزمة التعديل"
},
- "app.export-modal.select-files-label": {
- "message": "أختيار الملفات التي سيتم تصديرها"
- },
"app.export-modal.version-number-label": {
"message": "رقم الإصدار"
},
diff --git a/apps/app-frontend/src/locales/cs-CZ/index.json b/apps/app-frontend/src/locales/cs-CZ/index.json
index c1bf4c5503..3996f59835 100644
--- a/apps/app-frontend/src/locales/cs-CZ/index.json
+++ b/apps/app-frontend/src/locales/cs-CZ/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Exportovat modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Zahrnout \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Název modpacku"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Název modpacku"
},
- "app.export-modal.select-files-label": {
- "message": "Nastavte, které soubory mají být do tohoto exportu zahrnuty"
- },
"app.export-modal.version-number-label": {
"message": "Číslo verze"
},
diff --git a/apps/app-frontend/src/locales/da-DK/index.json b/apps/app-frontend/src/locales/da-DK/index.json
index 64ca6848bc..1ac5619f1e 100644
--- a/apps/app-frontend/src/locales/da-DK/index.json
+++ b/apps/app-frontend/src/locales/da-DK/index.json
@@ -164,18 +164,12 @@
"app.export-modal.header": {
"message": "Eksporter modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Inkludere \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modpack Navn"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpack navn"
},
- "app.export-modal.select-files-label": {
- "message": "Konfigurer hvilke filer inkludere i denne eksport"
- },
"app.export-modal.version-number-label": {
"message": "Versionsnummer"
},
diff --git a/apps/app-frontend/src/locales/de-CH/index.json b/apps/app-frontend/src/locales/de-CH/index.json
index d4d65fcab8..7b0b52ac5e 100644
--- a/apps/app-frontend/src/locales/de-CH/index.json
+++ b/apps/app-frontend/src/locales/de-CH/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Modpack exportieren"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "\"{file}\" einschliessen?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modpaketname"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpaketname"
},
- "app.export-modal.select-files-label": {
- "message": "Konfiguriere, welche Dateien in diesem Export miteinbezogen werden"
- },
"app.export-modal.version-number-label": {
"message": "Versionsnummer"
},
diff --git a/apps/app-frontend/src/locales/de-DE/index.json b/apps/app-frontend/src/locales/de-DE/index.json
index f2584ef42a..ccbbe77b5f 100644
--- a/apps/app-frontend/src/locales/de-DE/index.json
+++ b/apps/app-frontend/src/locales/de-DE/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Modpack exportieren"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "\"{file}\" einschließen?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modpackname"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpackname"
},
- "app.export-modal.select-files-label": {
- "message": "Konfiguriere, welche Dateien in diesen Export enthalten sind"
- },
"app.export-modal.version-number-label": {
"message": "Versionsnummer"
},
diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json
index e5613ca1d3..9ce7cc877f 100644
--- a/apps/app-frontend/src/locales/en-US/index.json
+++ b/apps/app-frontend/src/locales/en-US/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Export modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Include \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
- "message": "Modpack Name"
+ "message": "Modpack name"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpack name"
},
- "app.export-modal.select-files-label": {
- "message": "Configure which files are included in this export"
- },
"app.export-modal.version-number-label": {
"message": "Version number"
},
diff --git a/apps/app-frontend/src/locales/es-419/index.json b/apps/app-frontend/src/locales/es-419/index.json
index 5bfb7ad82a..8b3bfc865c 100644
--- a/apps/app-frontend/src/locales/es-419/index.json
+++ b/apps/app-frontend/src/locales/es-419/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Exportar modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "¿Incluir \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nombre del modpack"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nombre del modpack"
},
- "app.export-modal.select-files-label": {
- "message": "Configura que archivos incluir en esta exportación"
- },
"app.export-modal.version-number-label": {
"message": "Número de la versión"
},
diff --git a/apps/app-frontend/src/locales/es-ES/index.json b/apps/app-frontend/src/locales/es-ES/index.json
index d4ed8c66bc..863c85f0fd 100644
--- a/apps/app-frontend/src/locales/es-ES/index.json
+++ b/apps/app-frontend/src/locales/es-ES/index.json
@@ -182,18 +182,12 @@
"app.export-modal.header": {
"message": "Exportar modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "¿Incluir \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nombre del modpack"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nombre del modpack"
},
- "app.export-modal.select-files-label": {
- "message": "Configura que archivos se incluirán en esta instancia"
- },
"app.export-modal.version-number-label": {
"message": "Número de versión"
},
diff --git a/apps/app-frontend/src/locales/fi-FI/index.json b/apps/app-frontend/src/locales/fi-FI/index.json
index 7ba0089558..5f5020e903 100644
--- a/apps/app-frontend/src/locales/fi-FI/index.json
+++ b/apps/app-frontend/src/locales/fi-FI/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Vie modipaketti"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Sisällytä \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modipaketin nimi"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modipaketin nimi"
},
- "app.export-modal.select-files-label": {
- "message": "Muuta mitkä tiedostot sisältyvät tähän vientiin"
- },
"app.export-modal.version-number-label": {
"message": "Versio numero"
},
diff --git a/apps/app-frontend/src/locales/fil-PH/index.json b/apps/app-frontend/src/locales/fil-PH/index.json
index 5b8383e975..fbff587648 100644
--- a/apps/app-frontend/src/locales/fil-PH/index.json
+++ b/apps/app-frontend/src/locales/fil-PH/index.json
@@ -164,18 +164,12 @@
"app.export-modal.header": {
"message": "Iluwas ang modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Salihin ang \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Pangalan ng Modpack"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Pangalan ng modpack"
},
- "app.export-modal.select-files-label": {
- "message": "Isaayos kung anong mga file ang isasali sa pagluwas"
- },
"app.export-modal.version-number-label": {
"message": "Numero ng bersiyon"
},
diff --git a/apps/app-frontend/src/locales/fr-FR/index.json b/apps/app-frontend/src/locales/fr-FR/index.json
index 503b564519..9461752870 100644
--- a/apps/app-frontend/src/locales/fr-FR/index.json
+++ b/apps/app-frontend/src/locales/fr-FR/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Exporter le modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Inclure « {file} » ?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nom du modpack"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nom du modpack"
},
- "app.export-modal.select-files-label": {
- "message": "Configurez quels fichiers sont inclus dans cette exportation"
- },
"app.export-modal.version-number-label": {
"message": "Numéro de version"
},
diff --git a/apps/app-frontend/src/locales/hu-HU/index.json b/apps/app-frontend/src/locales/hu-HU/index.json
index afbbb36438..62562df7f7 100644
--- a/apps/app-frontend/src/locales/hu-HU/index.json
+++ b/apps/app-frontend/src/locales/hu-HU/index.json
@@ -176,18 +176,12 @@
"app.export-modal.header": {
"message": "Modcsomag exportálása"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Tartalmaz „{file}” fájlokat?"
- },
"app.export-modal.modpack-name-label": {
"message": "A modcsomag neve"
},
"app.export-modal.modpack-name-placeholder": {
"message": "A modcsomag neve"
},
- "app.export-modal.select-files-label": {
- "message": "Állítsd be, hogy mely fájlok kerüljenek bele az exportba"
- },
"app.export-modal.version-number-label": {
"message": "Verziószám"
},
diff --git a/apps/app-frontend/src/locales/id-ID/index.json b/apps/app-frontend/src/locales/id-ID/index.json
index 2762dab656..152b175cc4 100644
--- a/apps/app-frontend/src/locales/id-ID/index.json
+++ b/apps/app-frontend/src/locales/id-ID/index.json
@@ -170,18 +170,12 @@
"app.export-modal.header": {
"message": "Ekspor paket mod"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Sertakan \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nama Paket Mod"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nama paket mod"
},
- "app.export-modal.select-files-label": {
- "message": "Konfigurasikan berkas mana yang disertakan dalam pengeksporan ini"
- },
"app.export-modal.version-number-label": {
"message": "Nomor versi"
},
diff --git a/apps/app-frontend/src/locales/it-IT/index.json b/apps/app-frontend/src/locales/it-IT/index.json
index 5e447bc1b7..28adfc3dba 100644
--- a/apps/app-frontend/src/locales/it-IT/index.json
+++ b/apps/app-frontend/src/locales/it-IT/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Esporta pacchetto"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Includere \"{file}\" nell'esportazione?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nome del pacchetto"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nome del pacchetto"
},
- "app.export-modal.select-files-label": {
- "message": "Seleziona i file da includere in questa esportazione"
- },
"app.export-modal.version-number-label": {
"message": "Numero di versione"
},
diff --git a/apps/app-frontend/src/locales/ko-KR/index.json b/apps/app-frontend/src/locales/ko-KR/index.json
index 369ec61bef..dcfe993ccb 100644
--- a/apps/app-frontend/src/locales/ko-KR/index.json
+++ b/apps/app-frontend/src/locales/ko-KR/index.json
@@ -164,18 +164,12 @@
"app.export-modal.header": {
"message": "모드팩 내보내기"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "\"{file}\"(을)를 포함할까요?"
- },
"app.export-modal.modpack-name-label": {
"message": "모드팩 이름"
},
"app.export-modal.modpack-name-placeholder": {
"message": "모드팩 이름"
},
- "app.export-modal.select-files-label": {
- "message": "내보내기에 어느 파일이 포함될지 구성"
- },
"app.export-modal.version-number-label": {
"message": "버전 구분"
},
diff --git a/apps/app-frontend/src/locales/ms-MY/index.json b/apps/app-frontend/src/locales/ms-MY/index.json
index dff99a287e..8d1c52d97c 100644
--- a/apps/app-frontend/src/locales/ms-MY/index.json
+++ b/apps/app-frontend/src/locales/ms-MY/index.json
@@ -155,18 +155,12 @@
"app.export-modal.header": {
"message": "Eksport pek mod"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Sertakan \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nama Pek Mod"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nama pek mod"
},
- "app.export-modal.select-files-label": {
- "message": "Konfigurasikan fail yang disertakan dalam eksport ini"
- },
"app.export-modal.version-number-label": {
"message": "Nombor versi"
},
diff --git a/apps/app-frontend/src/locales/nl-NL/index.json b/apps/app-frontend/src/locales/nl-NL/index.json
index d12fd0a204..d33e2336e6 100644
--- a/apps/app-frontend/src/locales/nl-NL/index.json
+++ b/apps/app-frontend/src/locales/nl-NL/index.json
@@ -170,18 +170,12 @@
"app.export-modal.header": {
"message": "Exporteer modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Betrek \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modpack Naam"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpack naam"
},
- "app.export-modal.select-files-label": {
- "message": "Configureer welke bestanden bij deze export zijn betrokken"
- },
"app.export-modal.version-number-label": {
"message": "Versie nummer"
},
diff --git a/apps/app-frontend/src/locales/pl-PL/index.json b/apps/app-frontend/src/locales/pl-PL/index.json
index 761b786daa..0a52fa2be7 100644
--- a/apps/app-frontend/src/locales/pl-PL/index.json
+++ b/apps/app-frontend/src/locales/pl-PL/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Eksportuj paczkę modów"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Dołączyć \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nazwa paczki modów"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nazwa paczki modów"
},
- "app.export-modal.select-files-label": {
- "message": "Skonfiguruje jakie pliki zostaną załączone w tym eksporcie"
- },
"app.export-modal.version-number-label": {
"message": "Numer wersji"
},
diff --git a/apps/app-frontend/src/locales/pt-BR/index.json b/apps/app-frontend/src/locales/pt-BR/index.json
index f2b2f4a61e..4ca721a2f6 100644
--- a/apps/app-frontend/src/locales/pt-BR/index.json
+++ b/apps/app-frontend/src/locales/pt-BR/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Exportar pacote de mods"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Incluir \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Nome do pacote de mods"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Nome do pacote de mods"
},
- "app.export-modal.select-files-label": {
- "message": "Configure quais arquivos serão incluídos na exportação"
- },
"app.export-modal.version-number-label": {
"message": "Número da versão"
},
diff --git a/apps/app-frontend/src/locales/ru-RU/index.json b/apps/app-frontend/src/locales/ru-RU/index.json
index bac8e8c0a4..a722d690ee 100644
--- a/apps/app-frontend/src/locales/ru-RU/index.json
+++ b/apps/app-frontend/src/locales/ru-RU/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Экспорт сборки"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Добавить «{file}» в экспорт?"
- },
"app.export-modal.modpack-name-label": {
"message": "Название сборки"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Название сборки"
},
- "app.export-modal.select-files-label": {
- "message": "Выберите файлы для экспорта"
- },
"app.export-modal.version-number-label": {
"message": "Номер версии"
},
diff --git a/apps/app-frontend/src/locales/sv-SE/index.json b/apps/app-frontend/src/locales/sv-SE/index.json
index 7a40453644..058ea2ba20 100644
--- a/apps/app-frontend/src/locales/sv-SE/index.json
+++ b/apps/app-frontend/src/locales/sv-SE/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Exportera modpaket"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Inkludera \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Modpaketets namn"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Modpaketets namn"
},
- "app.export-modal.select-files-label": {
- "message": "Konfigurera vilka filer som inkluderas i denna export"
- },
"app.export-modal.version-number-label": {
"message": "Versionsnummer"
},
diff --git a/apps/app-frontend/src/locales/th-TH/index.json b/apps/app-frontend/src/locales/th-TH/index.json
index 59f3779a52..d5e5100dd3 100644
--- a/apps/app-frontend/src/locales/th-TH/index.json
+++ b/apps/app-frontend/src/locales/th-TH/index.json
@@ -170,18 +170,12 @@
"app.export-modal.header": {
"message": "ส่งออกแพ็กม็อด"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "รวมถึง \"{file}\" ใช่หรือไม่"
- },
"app.export-modal.modpack-name-label": {
"message": "ชื่อแพ็กม็อด"
},
"app.export-modal.modpack-name-placeholder": {
"message": "ชื่อแพ็กม็อด"
},
- "app.export-modal.select-files-label": {
- "message": "กำหนดไฟล์ที่ต้องการจะส่งออก"
- },
"app.export-modal.version-number-label": {
"message": "หมายเลขเวอร์ชัน"
},
diff --git a/apps/app-frontend/src/locales/tr-TR/index.json b/apps/app-frontend/src/locales/tr-TR/index.json
index 3040683051..e39707996b 100644
--- a/apps/app-frontend/src/locales/tr-TR/index.json
+++ b/apps/app-frontend/src/locales/tr-TR/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "Mod paketini dışa aktar"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "\"{file}\" dahil mi?"
- },
"app.export-modal.modpack-name-label": {
"message": "Mod Paketi Adı"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Mod paketi adı"
},
- "app.export-modal.select-files-label": {
- "message": "Bu dışa aktarmaya hangi dosyaların dahil edileceğini yapılandırma"
- },
"app.export-modal.version-number-label": {
"message": "Sürüm numarası"
},
diff --git a/apps/app-frontend/src/locales/uk-UA/index.json b/apps/app-frontend/src/locales/uk-UA/index.json
index ab2c3a06ab..1ac448c6b7 100644
--- a/apps/app-frontend/src/locales/uk-UA/index.json
+++ b/apps/app-frontend/src/locales/uk-UA/index.json
@@ -170,18 +170,12 @@
"app.export-modal.header": {
"message": "Експортувати збірку"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Уключити «{file}»?"
- },
"app.export-modal.modpack-name-label": {
"message": "Назва збірки"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Назва збірки"
},
- "app.export-modal.select-files-label": {
- "message": "Змініть файли, які додані до експорту"
- },
"app.export-modal.version-number-label": {
"message": "Номер версії"
},
diff --git a/apps/app-frontend/src/locales/vi-VN/index.json b/apps/app-frontend/src/locales/vi-VN/index.json
index 02d53755fd..7c0465ebf6 100644
--- a/apps/app-frontend/src/locales/vi-VN/index.json
+++ b/apps/app-frontend/src/locales/vi-VN/index.json
@@ -170,18 +170,12 @@
"app.export-modal.header": {
"message": "Xuất modpack"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "Bao gồm \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "Tên modpack"
},
"app.export-modal.modpack-name-placeholder": {
"message": "Tên modpack"
},
- "app.export-modal.select-files-label": {
- "message": "Cấu hình các tệp nào được bao gồm trong quá trình xuất phiên bản này"
- },
"app.export-modal.version-number-label": {
"message": "Phiên bản"
},
diff --git a/apps/app-frontend/src/locales/zh-CN/index.json b/apps/app-frontend/src/locales/zh-CN/index.json
index f56bf80700..73c6437d42 100644
--- a/apps/app-frontend/src/locales/zh-CN/index.json
+++ b/apps/app-frontend/src/locales/zh-CN/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "导出整合包"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "包含 \"{file}\"?"
- },
"app.export-modal.modpack-name-label": {
"message": "整合包名称"
},
"app.export-modal.modpack-name-placeholder": {
"message": "整合包名称"
},
- "app.export-modal.select-files-label": {
- "message": "配置此导出中包含哪些文件"
- },
"app.export-modal.version-number-label": {
"message": "版本号"
},
diff --git a/apps/app-frontend/src/locales/zh-TW/index.json b/apps/app-frontend/src/locales/zh-TW/index.json
index de9dcf0772..10b15aca8f 100644
--- a/apps/app-frontend/src/locales/zh-TW/index.json
+++ b/apps/app-frontend/src/locales/zh-TW/index.json
@@ -203,18 +203,12 @@
"app.export-modal.header": {
"message": "匯出模組包"
},
- "app.export-modal.include-file-accessibility-label": {
- "message": "要包含「{file}」嗎?"
- },
"app.export-modal.modpack-name-label": {
"message": "模組包名稱"
},
"app.export-modal.modpack-name-placeholder": {
"message": "模組包名稱"
},
- "app.export-modal.select-files-label": {
- "message": "設定要包含在此匯出檔案中的檔案"
- },
"app.export-modal.version-number-label": {
"message": "版本號碼"
},
diff --git a/packages/ui/src/components/base/FileTreeSelect.vue b/packages/ui/src/components/base/FileTreeSelect.vue
new file mode 100644
index 0000000000..4f1a5c278b
--- /dev/null
+++ b/packages/ui/src/components/base/FileTreeSelect.vue
@@ -0,0 +1,604 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
event.key === 'Enter' && navigateTo(parentPath)"
+ >
+
+
+
+
+
+ {{ formatMessage(messages.parentFolder) }}
+
+
+
+
+
+
+
+
+
+ {{ formatMessage(messages.emptyFolderTitle) }}
+
+
event.key === 'Enter' && selectEntry(entry)"
+ >
+
+
+
+
+
+ {{ entry.name }}
+
+
+
+ {{ formatSize(entry) }}
+
+
+ {{ formatModified(entry) }}
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/ui/src/components/base/index.ts b/packages/ui/src/components/base/index.ts
index 5afcec8f57..7fa6262111 100644
--- a/packages/ui/src/components/base/index.ts
+++ b/packages/ui/src/components/base/index.ts
@@ -32,6 +32,8 @@ export { default as EmptyState } from './EmptyState.vue'
export { default as EnvironmentIndicator } from './EnvironmentIndicator.vue'
export { default as ErrorInformationCard } from './ErrorInformationCard.vue'
export { default as FileInput } from './FileInput.vue'
+export type { FileTreeSelectItem } from './FileTreeSelect.vue'
+export { default as FileTreeSelect } from './FileTreeSelect.vue'
export type { FilterBarOption } from './FilterBar.vue'
export { default as FilterBar } from './FilterBar.vue'
export type { FilterPillOption } from './FilterPills.vue'
diff --git a/packages/ui/src/components/modal/NewModal.vue b/packages/ui/src/components/modal/NewModal.vue
index b9af98524f..d93cca8a64 100644
--- a/packages/ui/src/components/modal/NewModal.vue
+++ b/packages/ui/src/components/modal/NewModal.vue
@@ -126,7 +126,7 @@
@@ -292,10 +292,22 @@ function hide() {
}, 300)
}
+async function scrollToBottom(behavior: ScrollBehavior = 'smooth') {
+ await nextTick()
+ if (!scrollContainer.value) return
+
+ scrollContainer.value.scrollTo({
+ top: scrollContainer.value.scrollHeight,
+ behavior,
+ })
+ requestAnimationFrame(checkScrollState)
+}
+
defineExpose({
show,
hide,
checkScrollState,
+ scrollToBottom,
})
const mouseX = ref(0)
diff --git a/packages/ui/src/locales/en-US/index.json b/packages/ui/src/locales/en-US/index.json
index 325d5a6c20..cb27036c9e 100644
--- a/packages/ui/src/locales/en-US/index.json
+++ b/packages/ui/src/locales/en-US/index.json
@@ -1406,6 +1406,9 @@
"files.row.item-count": {
"defaultMessage": "{count, plural, one {# item} other {# items}}"
},
+ "files.row.parent-folder": {
+ "defaultMessage": "Parent folder"
+ },
"files.table-header.created": {
"defaultMessage": "Created"
},
diff --git a/packages/ui/src/stories/base/FileTreeSelect.stories.ts b/packages/ui/src/stories/base/FileTreeSelect.stories.ts
new file mode 100644
index 0000000000..a85d13ab5e
--- /dev/null
+++ b/packages/ui/src/stories/base/FileTreeSelect.stories.ts
@@ -0,0 +1,86 @@
+import type { Meta, StoryObj } from '@storybook/vue3-vite'
+import { computed, ref } from 'vue'
+
+import FileTreeSelect, { type FileTreeSelectItem } from '../../components/base/FileTreeSelect.vue'
+
+const modified = Math.floor(new Date('2026-06-29T10:30:00Z').getTime() / 1000)
+
+const MODPACK_FILES: FileTreeSelectItem[] = [
+ { path: 'config/fabric_loader_dependencies.json', size: 918, modified: modified - 600 },
+ { path: 'config/modmenu.json', size: 2401, modified: modified - 7200 },
+ { path: 'config/iris.properties', size: 1208, modified: modified - 5400 },
+ { path: 'config/crash_assistant/settings.toml', size: 714, modified: modified - 1200 },
+ { path: 'config/defaultoptions/options.txt', size: 4820, modified: modified - 3200 },
+ { path: 'config/defaultoptions/keybindings.txt', size: 3012, modified: modified - 3300 },
+ { path: 'mods/sodium-fabric-0.6.13+mc1.21.6.jar', size: 1290240, modified: modified - 900 },
+ { path: 'mods/iris-fabric-1.8.8+mc1.21.6.jar', size: 2782400, modified: modified - 1100 },
+ { path: 'mods/modmenu-15.0.0-beta.3.jar', size: 824220, modified: modified - 1800 },
+ { path: 'resourcepacks/FreshAnimations_v1.9.3.zip', size: 4382210, modified: modified - 2600 },
+ { path: 'resourcepacks/Mod Menu Helper.zip', size: 104522, modified: modified - 2800 },
+ {
+ path: 'shaderpacks/ComplementaryUnbound_r5.5.1.zip',
+ size: 23882210,
+ modified: modified - 3400,
+ },
+ { path: 'datapacks/terralith.zip', size: 17452213, modified: modified - 4200 },
+ { path: 'icon.png', size: 128044, modified: modified - 5000 },
+ { path: 'profile.json', size: 928, modified: modified - 400, disabled: true },
+ { path: 'modrinth_logs/launcher.log', size: 224018, modified: modified - 100, disabled: true },
+]
+
+const meta = {
+ title: 'Base/FileTreeSelect',
+ component: FileTreeSelect,
+} satisfies Meta
+
+export default meta
+
+export const ModpackExport: StoryObj = {
+ render: () => ({
+ components: { FileTreeSelect },
+ setup() {
+ const selected = ref([
+ 'config/fabric_loader_dependencies.json',
+ 'config/crash_assistant/settings.toml',
+ 'config/defaultoptions/options.txt',
+ 'mods/sodium-fabric-0.6.13+mc1.21.6.jar',
+ 'mods/iris-fabric-1.8.8+mc1.21.6.jar',
+ 'resourcepacks/FreshAnimations_v1.9.3.zip',
+ 'shaderpacks/ComplementaryUnbound_r5.5.1.zip',
+ ])
+ const selectedLabel = computed(() => `${selected.value.length} selected`)
+
+ return {
+ items: MODPACK_FILES,
+ selected,
+ selectedLabel,
+ }
+ },
+ template: /*html*/ `
+
+
+
+
{{ selectedLabel }}
+
+ {{ path }}
+
+
+
+ `,
+ }),
+}
+
+export const EmptyRoot: StoryObj = {
+ render: () => ({
+ components: { FileTreeSelect },
+ setup() {
+ const selected = ref([])
+ return { selected }
+ },
+ template: /*html*/ `
+
+
+
+ `,
+ }),
+}