From e81d477628a9073b9a7067cd0b2a98f317e58c32 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 22 May 2026 10:41:40 +1000 Subject: [PATCH 01/11] chore: setup S2 AI components package --- .storybook-s2/main.ts | 3 +- package.json | 2 + packages/@react-spectrum/s2-ai/.gitignore | 1 + .../@react-spectrum/s2-ai/intl/ar-AE.json | 49 + .../@react-spectrum/s2-ai/intl/bg-BG.json | 49 + .../@react-spectrum/s2-ai/intl/cs-CZ.json | 49 + .../@react-spectrum/s2-ai/intl/da-DK.json | 49 + .../@react-spectrum/s2-ai/intl/de-DE.json | 49 + .../@react-spectrum/s2-ai/intl/el-GR.json | 49 + .../@react-spectrum/s2-ai/intl/en-US.json | 49 + .../@react-spectrum/s2-ai/intl/es-ES.json | 49 + .../@react-spectrum/s2-ai/intl/et-EE.json | 49 + .../@react-spectrum/s2-ai/intl/fi-FI.json | 49 + .../@react-spectrum/s2-ai/intl/fr-FR.json | 49 + .../@react-spectrum/s2-ai/intl/he-IL.json | 49 + .../@react-spectrum/s2-ai/intl/hr-HR.json | 49 + .../@react-spectrum/s2-ai/intl/hu-HU.json | 49 + .../@react-spectrum/s2-ai/intl/it-IT.json | 49 + .../@react-spectrum/s2-ai/intl/ja-JP.json | 49 + .../@react-spectrum/s2-ai/intl/ko-KR.json | 49 + .../@react-spectrum/s2-ai/intl/lt-LT.json | 49 + .../@react-spectrum/s2-ai/intl/lv-LV.json | 49 + .../@react-spectrum/s2-ai/intl/nb-NO.json | 49 + .../@react-spectrum/s2-ai/intl/nl-NL.json | 49 + .../@react-spectrum/s2-ai/intl/pl-PL.json | 49 + .../@react-spectrum/s2-ai/intl/pt-BR.json | 49 + .../@react-spectrum/s2-ai/intl/pt-PT.json | 49 + .../@react-spectrum/s2-ai/intl/ro-RO.json | 49 + .../@react-spectrum/s2-ai/intl/ru-RU.json | 49 + .../@react-spectrum/s2-ai/intl/sk-SK.json | 49 + .../@react-spectrum/s2-ai/intl/sl-SI.json | 49 + .../@react-spectrum/s2-ai/intl/sr-SP.json | 49 + .../@react-spectrum/s2-ai/intl/sv-SE.json | 49 + .../@react-spectrum/s2-ai/intl/tr-TR.json | 49 + .../@react-spectrum/s2-ai/intl/uk-UA.json | 49 + .../@react-spectrum/s2-ai/intl/zh-CN.json | 49 + .../@react-spectrum/s2-ai/intl/zh-TW.json | 49 + packages/@react-spectrum/s2-ai/package.json | 90 ++ .../s2-ai/src/HorizontalCard.tsx | 984 ++++++++++++++++++ .../s2-ai/stories/HorizontalCard.stories.tsx | 200 ++++ .../@react-spectrum/s2/exports/Skeleton.ts | 2 +- .../@react-spectrum/s2/exports/style-utils.ts | 2 + .../@react-spectrum/s2/exports/useDOMRef.ts | 1 + .../s2/exports/useSpectrumContextProps.ts | 1 + packages/@react-spectrum/s2/package.json | 13 + yarn.lock | 27 +- 46 files changed, 2989 insertions(+), 3 deletions(-) create mode 100644 packages/@react-spectrum/s2-ai/.gitignore create mode 100644 packages/@react-spectrum/s2-ai/intl/ar-AE.json create mode 100644 packages/@react-spectrum/s2-ai/intl/bg-BG.json create mode 100644 packages/@react-spectrum/s2-ai/intl/cs-CZ.json create mode 100644 packages/@react-spectrum/s2-ai/intl/da-DK.json create mode 100644 packages/@react-spectrum/s2-ai/intl/de-DE.json create mode 100644 packages/@react-spectrum/s2-ai/intl/el-GR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/en-US.json create mode 100644 packages/@react-spectrum/s2-ai/intl/es-ES.json create mode 100644 packages/@react-spectrum/s2-ai/intl/et-EE.json create mode 100644 packages/@react-spectrum/s2-ai/intl/fi-FI.json create mode 100644 packages/@react-spectrum/s2-ai/intl/fr-FR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/he-IL.json create mode 100644 packages/@react-spectrum/s2-ai/intl/hr-HR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/hu-HU.json create mode 100644 packages/@react-spectrum/s2-ai/intl/it-IT.json create mode 100644 packages/@react-spectrum/s2-ai/intl/ja-JP.json create mode 100644 packages/@react-spectrum/s2-ai/intl/ko-KR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/lt-LT.json create mode 100644 packages/@react-spectrum/s2-ai/intl/lv-LV.json create mode 100644 packages/@react-spectrum/s2-ai/intl/nb-NO.json create mode 100644 packages/@react-spectrum/s2-ai/intl/nl-NL.json create mode 100644 packages/@react-spectrum/s2-ai/intl/pl-PL.json create mode 100644 packages/@react-spectrum/s2-ai/intl/pt-BR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/pt-PT.json create mode 100644 packages/@react-spectrum/s2-ai/intl/ro-RO.json create mode 100644 packages/@react-spectrum/s2-ai/intl/ru-RU.json create mode 100644 packages/@react-spectrum/s2-ai/intl/sk-SK.json create mode 100644 packages/@react-spectrum/s2-ai/intl/sl-SI.json create mode 100644 packages/@react-spectrum/s2-ai/intl/sr-SP.json create mode 100644 packages/@react-spectrum/s2-ai/intl/sv-SE.json create mode 100644 packages/@react-spectrum/s2-ai/intl/tr-TR.json create mode 100644 packages/@react-spectrum/s2-ai/intl/uk-UA.json create mode 100644 packages/@react-spectrum/s2-ai/intl/zh-CN.json create mode 100644 packages/@react-spectrum/s2-ai/intl/zh-TW.json create mode 100644 packages/@react-spectrum/s2-ai/package.json create mode 100644 packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx create mode 100644 packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx create mode 100644 packages/@react-spectrum/s2/exports/style-utils.ts create mode 100644 packages/@react-spectrum/s2/exports/useDOMRef.ts create mode 100644 packages/@react-spectrum/s2/exports/useSpectrumContextProps.ts diff --git a/.storybook-s2/main.ts b/.storybook-s2/main.ts index 80e5a6f9d64..5f501e7bb2e 100644 --- a/.storybook-s2/main.ts +++ b/.storybook-s2/main.ts @@ -20,7 +20,8 @@ const localAddon = (rel: string) => fileURLToPath(import.meta.resolve(rel)); const config: StorybookConfig = { stories: [ './docs/*.mdx', - '../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)' + '../packages/@react-spectrum/s2/stories/*.stories.@(js|jsx|mjs|ts|tsx)', + '../packages/@react-spectrum/s2-ai/stories/*.stories.@(js|jsx|mjs|ts|tsx)' ], addons: [ localAddon('./custom-addons/provider/preset.ts'), diff --git a/package.json b/package.json index 29c841fb4f1..4cb8df6cb83 100644 --- a/package.json +++ b/package.json @@ -275,6 +275,8 @@ "packages/@adobe/react-spectrum/src/color/*.tsx", "packages/@react-spectrum/s2/**/*.{js,ts,tsx}", "packages/@react-spectrum/s2/stories/**", + "packages/@react-spectrum/s2-ai/**/*.{js,ts,tsx}", + "packages/@react-spectrum/s2-ai/stories/**", ".storybook-s2/**", "packages/dev/s2-docs/**", "starters/**" diff --git a/packages/@react-spectrum/s2-ai/.gitignore b/packages/@react-spectrum/s2-ai/.gitignore new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/.gitignore @@ -0,0 +1 @@ + diff --git a/packages/@react-spectrum/s2-ai/intl/ar-AE.json b/packages/@react-spectrum/s2-ai/intl/ar-AE.json new file mode 100644 index 00000000000..fd9c15149d8 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/ar-AE.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "الإجراءات", + "actionbar.actionsAvailable": "الإجراءات المتاحة.", + "actionbar.clearSelection": "إزالة التحديد", + "actionbar.selected": "{count, plural, =0 {غير محدد} other {# محدد}}", + "actionbar.selectedAll": "تم تحديد الكل", + "breadcrumbs.more": "المزيد من العناصر", + "button.pending": "قيد الانتظار", + "calendar.invalidSelection": "{selectedCount, plural, one {التاريخ} other {التواريخ}} المحدد/المحددة غير متوفرة.", + "combobox.noResults": "لا توجد نتائج", + "contextualhelp.help": "مساعدة", + "contextualhelp.info": "معلومات", + "datepicker.endTime": "وقت الانتهاء", + "datepicker.startTime": "وقت البدء", + "datepicker.time": "الوقت", + "dialog.alert": "تنبيه", + "dialog.dismiss": "تجاهل", + "dropzone.replaceMessage": "للاستبدال، قم بإفلات الملف", + "inlinealert.informative": "معلومات", + "inlinealert.negative": "خطأ", + "inlinealert.notice": "تحذير", + "inlinealert.positive": "تم بنجاح", + "label.(optional)": "(اختياري)", + "label.(required)": "(مطلوب)", + "menu.moreActions": "المزيد من الإجراءات", + "menu.unavailable": "غير مُتوفر، قُم بالتوسيع للحصول على التفاصيل", + "notificationbadge.indicatorOnly": "نشاط جديد", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "تحديد…", + "picker.selectedCount": "{count, plural, =0 {لم يتم تحديد أي عنصر} one {تم تحديد عنصر واحد} two {تم تحديد عنصرين} few {تم تحديد # عناصر} other {تم تحديد # عنصر}}", + "slider.maximum": "أقصى", + "slider.minimum": "أدنى", + "table.cancel": "إلغاء", + "table.drag": "سحب", + "table.editCell": "تعديل الخلية", + "table.loading": "جارٍ التحميل...", + "table.loadingMore": "جارٍ تحميل المزيد...", + "table.resizeColumn": "تغيير حجم العمود", + "table.save": "حفظ", + "table.sortAscending": "فرز بترتيب تصاعدي", + "table.sortDescending": "فرز بترتيب تنازلي", + "tag.actions": "الإجراءات", + "tag.hideButtonLabel": "إظهار أقل", + "tag.noTags": "بدون", + "tag.showAllButtonLabel": "عرض الكل ({tagCount, number})", + "toast.clearAll": "مسح الكل", + "toast.collapse": "طي", + "toast.showAll": "إظهار الكل" +} diff --git a/packages/@react-spectrum/s2-ai/intl/bg-BG.json b/packages/@react-spectrum/s2-ai/intl/bg-BG.json new file mode 100644 index 00000000000..e8c88d92877 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/bg-BG.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Действия", + "actionbar.actionsAvailable": "Налични действия.", + "actionbar.clearSelection": "Изчистване на избора", + "actionbar.selected": "{count, plural, =0 {Няма избрани} one {# избран} other {# избрани}}", + "actionbar.selectedAll": "Всички избрани", + "breadcrumbs.more": "Още елементи", + "button.pending": "недовършено", + "calendar.invalidSelection": "{selectedCount, plural, one {Избраната дата не е налична} other {Избраните дати не са налични}}.", + "combobox.noResults": "Няма резултати", + "contextualhelp.help": "Помощ", + "contextualhelp.info": "Информация", + "datepicker.endTime": "Краен час", + "datepicker.startTime": "Начален час", + "datepicker.time": "Време", + "dialog.alert": "Сигнал", + "dialog.dismiss": "Отхвърляне", + "dropzone.replaceMessage": "Пуснете файл за замяна", + "inlinealert.informative": "Информация", + "inlinealert.negative": "Грешка", + "inlinealert.notice": "Предупреждение", + "inlinealert.positive": "Успешно", + "label.(optional)": "(незадължително)", + "label.(required)": "(задължително)", + "menu.moreActions": "Повече действия", + "menu.unavailable": "Недостъпно, разгънете за подробности", + "notificationbadge.indicatorOnly": "Нова дейност", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Изберете…", + "picker.selectedCount": "{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елемента}}", + "slider.maximum": "Максимум", + "slider.minimum": "Минимум", + "table.cancel": "Отказ", + "table.drag": "Плъзнете", + "table.editCell": "Редактиране на клетка", + "table.loading": "Зареждане...", + "table.loadingMore": "Зареждане на още...", + "table.resizeColumn": "Преоразмеряване на колона", + "table.save": "Запазване", + "table.sortAscending": "Възходящо сортиране", + "table.sortDescending": "Низходящо сортиране ", + "tag.actions": "Действия", + "tag.hideButtonLabel": "Показване на по-малко", + "tag.noTags": "Нито един", + "tag.showAllButtonLabel": "Показване на всички ({tagCount, number})", + "toast.clearAll": "Изчисти всички", + "toast.collapse": "Свиване", + "toast.showAll": "Покажи всички" +} diff --git a/packages/@react-spectrum/s2-ai/intl/cs-CZ.json b/packages/@react-spectrum/s2-ai/intl/cs-CZ.json new file mode 100644 index 00000000000..e16ea158b89 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/cs-CZ.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Akce", + "actionbar.actionsAvailable": "Dostupné akce.", + "actionbar.clearSelection": "Vymazat výběr", + "actionbar.selected": "Vybráno: { count }", + "actionbar.selectedAll": "Vybráno vše", + "breadcrumbs.more": "Další položky", + "button.pending": "čeká na vyřízení", + "calendar.invalidSelection": "{selectedCount, plural, one {Vybrané datum není} other {Vybraná data nejsou}} k dispozici.", + "combobox.noResults": "Žádné výsledky", + "contextualhelp.help": "Nápověda", + "contextualhelp.info": "Informace", + "datepicker.endTime": "Konečný čas", + "datepicker.startTime": "Počáteční čas", + "datepicker.time": "Čas", + "dialog.alert": "Výstraha", + "dialog.dismiss": "Odstranit", + "dropzone.replaceMessage": "Přetáhněte soubor k nahrazení", + "inlinealert.informative": "Informace", + "inlinealert.negative": "Chyba", + "inlinealert.notice": "Varování", + "inlinealert.positive": "Úspěch", + "label.(optional)": "(volitelně)", + "label.(required)": "(požadováno)", + "menu.moreActions": "Další akce", + "menu.unavailable": "Není k dispozici, rozbalením zobrazíte podrobnosti", + "notificationbadge.indicatorOnly": "Nová aktivita", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Vybrat…", + "picker.selectedCount": "{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} few {Vybrány # položky} other {Vybráno # položek}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Zrušit", + "table.drag": "Přetáhnout", + "table.editCell": "Upravit buňku", + "table.loading": "Načítání...", + "table.loadingMore": "Načítání dalších...", + "table.resizeColumn": "Změnit velikost sloupce", + "table.save": "Uložit", + "table.sortAscending": "Seřadit vzestupně", + "table.sortDescending": "Seřadit sestupně", + "tag.actions": "Akce", + "tag.hideButtonLabel": "Zobrazit méně", + "tag.noTags": "Žádný", + "tag.showAllButtonLabel": "Zobrazit vše ({tagCount, number})", + "toast.clearAll": "Smazat vše", + "toast.collapse": "Sbalit", + "toast.showAll": "Zobrazit vše" +} diff --git a/packages/@react-spectrum/s2-ai/intl/da-DK.json b/packages/@react-spectrum/s2-ai/intl/da-DK.json new file mode 100644 index 00000000000..7c32d0692ee --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/da-DK.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Handlinger", + "actionbar.actionsAvailable": "Tilgængelige handlinger.", + "actionbar.clearSelection": "Ryd markering", + "actionbar.selected": "{count, plural, =0 {Ingen valgt} other {# valgt}}", + "actionbar.selectedAll": "Alle valgt", + "breadcrumbs.more": "Flere elementer", + "button.pending": "afventende", + "calendar.invalidSelection": "Valgte {selectedCount, plural, one {dato} other {datoer}} ikke ledige.", + "combobox.noResults": "Ingen resultater", + "contextualhelp.help": "Hjælp", + "contextualhelp.info": "Oplysninger", + "datepicker.endTime": "Sluttidspunkt", + "datepicker.startTime": "Starttidspunkt", + "datepicker.time": "Klokkeslæt", + "dialog.alert": "Advarsel", + "dialog.dismiss": "Luk", + "dropzone.replaceMessage": "Drop fil for at erstatte", + "inlinealert.informative": "Oplysninger", + "inlinealert.negative": "Fejl", + "inlinealert.notice": "Advarsel", + "inlinealert.positive": "Fuldført", + "label.(optional)": "(valgfrit)", + "label.(required)": "(obligatorisk)", + "menu.moreActions": "Flere handlinger", + "menu.unavailable": "Ikke tilgængelig, udvid for detaljer", + "notificationbadge.indicatorOnly": "Ny aktivitet", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Vælg…", + "picker.selectedCount": "{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}", + "slider.maximum": "Maksimum", + "slider.minimum": "Minimum", + "table.cancel": "Annuller", + "table.drag": "Træk", + "table.editCell": "Rediger celle", + "table.loading": "Indlæser...", + "table.loadingMore": "Indlæser flere...", + "table.resizeColumn": "Tilpas størrelse på kolonne", + "table.save": "Gem", + "table.sortAscending": "Sorter stigende", + "table.sortDescending": "Sorter faldende", + "tag.actions": "Handlinger", + "tag.hideButtonLabel": "Vis mindre", + "tag.noTags": "Ingen", + "tag.showAllButtonLabel": "Vis alle ({tagCount, number})", + "toast.clearAll": "Ryd alle", + "toast.collapse": "Skjul", + "toast.showAll": "Vis alle" +} diff --git a/packages/@react-spectrum/s2-ai/intl/de-DE.json b/packages/@react-spectrum/s2-ai/intl/de-DE.json new file mode 100644 index 00000000000..331ba998331 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/de-DE.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Aktionen", + "actionbar.actionsAvailable": "Aktionen verfügbar.", + "actionbar.clearSelection": "Auswahl löschen", + "actionbar.selected": "{count, plural, =0 {Nichts ausgewählt} one {# ausgewählt} other {# ausgewählt}}", + "actionbar.selectedAll": "Alles ausgewählt", + "breadcrumbs.more": "Weitere Elemente", + "button.pending": "Ausstehend", + "calendar.invalidSelection": "Ausgewählte(s) {selectedCount, plural, one {Datum} other {Daten}} nicht verfügbar.", + "combobox.noResults": "Keine Ergebnisse", + "contextualhelp.help": "Hilfe", + "contextualhelp.info": "Informationen", + "datepicker.endTime": "Endzeit", + "datepicker.startTime": "Startzeit", + "datepicker.time": "Uhrzeit", + "dialog.alert": "Warnhinweis", + "dialog.dismiss": "Schließen", + "dropzone.replaceMessage": "Datei zum Ersetzen ablegen", + "inlinealert.informative": "Informationen", + "inlinealert.negative": "Fehler", + "inlinealert.notice": "Warnung", + "inlinealert.positive": "Erfolg", + "label.(optional)": "(optional)", + "label.(required)": "(erforderlich)", + "menu.moreActions": "Mehr Aktionen", + "menu.unavailable": "Nicht verfügbar, für Details erweitern", + "notificationbadge.indicatorOnly": "Neue Aktivität", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Auswählen…", + "picker.selectedCount": "{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Abbrechen", + "table.drag": "Ziehen", + "table.editCell": "Zelle bearbeiten", + "table.loading": "Laden...", + "table.loadingMore": "Mehr laden ...", + "table.resizeColumn": "Spaltengröße ändern", + "table.save": "Speichern", + "table.sortAscending": "Aufsteigend sortieren", + "table.sortDescending": "Absteigend sortieren", + "tag.actions": "Aktionen", + "tag.hideButtonLabel": "Weniger zeigen", + "tag.noTags": "Keine", + "tag.showAllButtonLabel": "Alle anzeigen ({tagCount, number})", + "toast.clearAll": "Alle löschen", + "toast.collapse": "Reduzieren", + "toast.showAll": "Alle anzeigen" +} diff --git a/packages/@react-spectrum/s2-ai/intl/el-GR.json b/packages/@react-spectrum/s2-ai/intl/el-GR.json new file mode 100644 index 00000000000..5a4bbe0f93c --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/el-GR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Ενέργειες", + "actionbar.actionsAvailable": "Υπάρχουν διαθέσιμες ενέργειες.", + "actionbar.clearSelection": "Εκκαθάριση επιλογής", + "actionbar.selected": "{count, plural, =0 {Δεν επιλέχθηκε κανένα} one {# επιλεγμένο} other {# επιλεγμένα}}", + "actionbar.selectedAll": "Επιλέχθηκαν όλα", + "breadcrumbs.more": "Περισσότερα στοιχεία", + "button.pending": "σε εκκρεμότητα", + "calendar.invalidSelection": "{selectedCount, plural, one {Η επιλεγμένη ημερομηνία δεν είναι διαθέσιμη} other {Οι επιλεγμένες ημερομηνίες δεν είναι διαθέσιμες}}.", + "combobox.noResults": "Κανένα αποτέλεσμα", + "contextualhelp.help": "Βοήθεια", + "contextualhelp.info": "Πληροφορίες", + "datepicker.endTime": "Χρόνος λήξης", + "datepicker.startTime": "Ώρα έναρξης", + "datepicker.time": "Χρόνος", + "dialog.alert": "Ειδοποίηση", + "dialog.dismiss": "Απόρριψη", + "dropzone.replaceMessage": "Απόθεση αρχείου για αντικατάσταση", + "inlinealert.informative": "Πληροφορίες", + "inlinealert.negative": "Σφάλμα", + "inlinealert.notice": "Προειδοποίηση", + "inlinealert.positive": "Επιτυχία", + "label.(optional)": "(προαιρετικό)", + "label.(required)": "(απαιτείται)", + "menu.moreActions": "Περισσότερες ενέργειες", + "menu.unavailable": "Μη διαθέσιμο, ανάπτυξη για λεπτομέρειες", + "notificationbadge.indicatorOnly": "Νέα δραστηριότητα", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Επιλογή…", + "picker.selectedCount": "{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}", + "slider.maximum": "Μέγιστο", + "slider.minimum": "Ελάχιστο", + "table.cancel": "Ακύρωση", + "table.drag": "Μεταφορά", + "table.editCell": "Επεξεργασία κελιού", + "table.loading": "Φόρτωση...", + "table.loadingMore": "Φόρτωση περισσότερων...", + "table.resizeColumn": "Αλλαγή μεγέθους στήλης", + "table.save": "Αποθήκευση", + "table.sortAscending": "Ταξινόμηση κατά αύξουσα σειρά", + "table.sortDescending": "Ταξινόμηση κατά φθίνουσα σειρά", + "tag.actions": "Ενέργειες", + "tag.hideButtonLabel": "Εμφάνιση λιγότερων", + "tag.noTags": "Κανένα", + "tag.showAllButtonLabel": "Εμφάνιση όλων ({tagCount, number})", + "toast.clearAll": "Εκκαθάριση όλων", + "toast.collapse": "Σύμπτυξη", + "toast.showAll": "Εμφάνιση όλων" +} diff --git a/packages/@react-spectrum/s2-ai/intl/en-US.json b/packages/@react-spectrum/s2-ai/intl/en-US.json new file mode 100644 index 00000000000..1a1e1570bae --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/en-US.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Actions", + "actionbar.actionsAvailable": "Actions available.", + "actionbar.clearSelection": "Clear selection", + "actionbar.selected": "{count, plural, =0 {None selected} other {# selected}}", + "actionbar.selectedAll": "All selected", + "breadcrumbs.more": "More items", + "button.pending": "pending", + "calendar.invalidSelection": "Selected {selectedCount, plural, one {date} other {dates}} unavailable.", + "combobox.noResults": "No results", + "contextualhelp.help": "Help", + "contextualhelp.info": "Information", + "datepicker.endTime": "End time", + "datepicker.startTime": "Start time", + "datepicker.time": "Time", + "dialog.alert": "Alert", + "dialog.dismiss": "Dismiss", + "dropzone.replaceMessage": "Drop file to replace", + "inlinealert.informative": "Information", + "inlinealert.negative": "Error", + "inlinealert.notice": "Warning", + "inlinealert.positive": "Success", + "label.(optional)": "(optional)", + "label.(required)": "(required)", + "menu.moreActions": "More actions", + "menu.unavailable": "Unavailable, expand for details", + "notificationbadge.indicatorOnly": "New activity", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Select…", + "picker.selectedCount": "{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Cancel", + "table.drag": "Drag", + "table.editCell": "Edit cell", + "table.loading": "Loading…", + "table.loadingMore": "Loading more…", + "table.resizeColumn": "Resize column", + "table.save": "Save", + "table.sortAscending": "Sort Ascending", + "table.sortDescending": "Sort Descending", + "tag.actions": "Actions", + "tag.hideButtonLabel": "Show less", + "tag.noTags": "None", + "tag.showAllButtonLabel": "Show all ({tagCount, number})", + "toast.clearAll": "Clear all", + "toast.collapse": "Collapse", + "toast.showAll": "Show all" +} diff --git a/packages/@react-spectrum/s2-ai/intl/es-ES.json b/packages/@react-spectrum/s2-ai/intl/es-ES.json new file mode 100644 index 00000000000..04cacae4880 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/es-ES.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Acciones", + "actionbar.actionsAvailable": "Acciones disponibles.", + "actionbar.clearSelection": "Borrar selección", + "actionbar.selected": "{count, plural, =0 {Nada seleccionado} one {# seleccionado} other {# seleccionados}}", + "actionbar.selectedAll": "Todos seleccionados", + "breadcrumbs.more": "Más elementos", + "button.pending": "pendiente", + "calendar.invalidSelection": "{selectedCount, plural, one {La fecha seleccionada no está disponible} other {Las fechas seleccionadas no están disponibles}}.", + "combobox.noResults": "Sin resultados", + "contextualhelp.help": "Ayuda", + "contextualhelp.info": "Información", + "datepicker.endTime": "Hora de finalización", + "datepicker.startTime": "Hora de inicio", + "datepicker.time": "Hora", + "dialog.alert": "Alerta", + "dialog.dismiss": "Descartar", + "dropzone.replaceMessage": "Suelte el archivo para reemplazar", + "inlinealert.informative": "Información", + "inlinealert.negative": "Error", + "inlinealert.notice": "Advertencia", + "inlinealert.positive": "Éxito", + "label.(optional)": "(opcional)", + "label.(required)": "(obligatorio)", + "menu.moreActions": "Más acciones", + "menu.unavailable": "No disponible, ampliar para más detalles", + "notificationbadge.indicatorOnly": "Nueva actividad", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Seleccione…", + "picker.selectedCount": "{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}", + "slider.maximum": "Máximo", + "slider.minimum": "Mínimo", + "table.cancel": "Cancelar", + "table.drag": "Arrastrar", + "table.editCell": "Editar celda", + "table.loading": "Cargando…", + "table.loadingMore": "Cargando más…", + "table.resizeColumn": "Cambiar el tamaño de la columna", + "table.save": "Guardar", + "table.sortAscending": "Orden ascendente", + "table.sortDescending": "Orden descendente", + "tag.actions": "Acciones", + "tag.hideButtonLabel": "Mostrar menos", + "tag.noTags": "Ninguno", + "tag.showAllButtonLabel": "Mostrar todo ({tagCount, number})", + "toast.clearAll": "Borrar todo", + "toast.collapse": "Contraer", + "toast.showAll": "Mostrar todo" +} diff --git a/packages/@react-spectrum/s2-ai/intl/et-EE.json b/packages/@react-spectrum/s2-ai/intl/et-EE.json new file mode 100644 index 00000000000..c5ef8d69641 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/et-EE.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Toimingud", + "actionbar.actionsAvailable": "Toimingud saadaval.", + "actionbar.clearSelection": "Puhasta valik", + "actionbar.selected": "{count, plural, =0 {Pole valitud} other {# valitud}}", + "actionbar.selectedAll": "Kõik valitud", + "breadcrumbs.more": "Veel üksusi", + "button.pending": "ootel", + "calendar.invalidSelection": "Valitud {selectedCount, plural, one {kuupäev} other {kuupäevad}} pole saadaval.", + "combobox.noResults": "Tulemusi pole", + "contextualhelp.help": "Spikker", + "contextualhelp.info": "Teave", + "datepicker.endTime": "Lõpuaeg", + "datepicker.startTime": "Algusaeg", + "datepicker.time": "Aeg", + "dialog.alert": "Teade", + "dialog.dismiss": "Lõpeta", + "dropzone.replaceMessage": "Kukuta fail asendamiseks", + "inlinealert.informative": "Teave", + "inlinealert.negative": "Viga", + "inlinealert.notice": "Hoiatus", + "inlinealert.positive": "Valmis", + "label.(optional)": "(valikuline)", + "label.(required)": "(nõutav)", + "menu.moreActions": "Veel toiminguid", + "menu.unavailable": "Pole kättesaadav, üksikasjade vaatamiseks laiendage", + "notificationbadge.indicatorOnly": "Uus tegevus", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Valige…", + "picker.selectedCount": "{count, plural, =0 {üksuseid pole valitud} one {# üksus valitud} other {# üksust valitud}}", + "slider.maximum": "Maksimaalne", + "slider.minimum": "Minimaalne", + "table.cancel": "Tühista", + "table.drag": "Lohista", + "table.editCell": "Muuda lahtrit", + "table.loading": "Laadimine...", + "table.loadingMore": "Laadi rohkem...", + "table.resizeColumn": "Muuda veeru suurust", + "table.save": "Salvesta", + "table.sortAscending": "Sordi kasvavalt", + "table.sortDescending": "Sordi kahanevalt", + "tag.actions": "Toimingud", + "tag.hideButtonLabel": "Kuva vähem", + "tag.noTags": "Puudub", + "tag.showAllButtonLabel": "Kuva kõik ({tagCount, number})", + "toast.clearAll": "Tühjenda kõik", + "toast.collapse": "Ahenda", + "toast.showAll": "Kuva kõik" +} diff --git a/packages/@react-spectrum/s2-ai/intl/fi-FI.json b/packages/@react-spectrum/s2-ai/intl/fi-FI.json new file mode 100644 index 00000000000..06a7af7a2bd --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/fi-FI.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Toiminnot", + "actionbar.actionsAvailable": "Toiminnot käytettävissä.", + "actionbar.clearSelection": "Poista valinta", + "actionbar.selected": "{count, plural, =0 {Ei mitään valittu} other {# valittu}}", + "actionbar.selectedAll": "Kaikki valittu", + "breadcrumbs.more": "Lisää kohteita", + "button.pending": "odottaa", + "calendar.invalidSelection": "{selectedCount, plural, one {Valittu päivämäärä ei ole} other {Valitut päivämäärät eivät ole}} saatavilla.", + "combobox.noResults": "Ei tuloksia", + "contextualhelp.help": "Ohje", + "contextualhelp.info": "Tiedot", + "datepicker.endTime": "Päättymisaika", + "datepicker.startTime": "Alkamisaika", + "datepicker.time": "Aika", + "dialog.alert": "Hälytys", + "dialog.dismiss": "Hylkää", + "dropzone.replaceMessage": "Pudota korvaava tiedosto", + "inlinealert.informative": "Tiedot", + "inlinealert.negative": "Virhe", + "inlinealert.notice": "Varoitus", + "inlinealert.positive": "Onnistui", + "label.(optional)": "(valinnainen)", + "label.(required)": "(pakollinen)", + "menu.moreActions": "Lisää toimintoja", + "menu.unavailable": "Ei saatavilla, laajenna saadaksesi lisätietoja", + "notificationbadge.indicatorOnly": "Uusi toiminta", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Valitse…", + "picker.selectedCount": "{count, plural, =0 {Kohteita ei ole valittu} one {# kohde valittu} other {# kohdetta valittu}}", + "slider.maximum": "Maksimi", + "slider.minimum": "Minimi", + "table.cancel": "Peruuta", + "table.drag": "Vedä", + "table.editCell": "Muokkaa solua", + "table.loading": "Ladataan…", + "table.loadingMore": "Ladataan lisää…", + "table.resizeColumn": "Muuta sarakkeen kokoa", + "table.save": "Tallenna", + "table.sortAscending": "Lajittelujärjestys: nouseva", + "table.sortDescending": "Lajittelujärjestys: laskeva", + "tag.actions": "Toiminnot", + "tag.hideButtonLabel": "Näytä vähemmän", + "tag.noTags": "Ei mitään", + "tag.showAllButtonLabel": "Näytä kaikki ({tagCount, number})", + "toast.clearAll": "Tyhjennä kaikki", + "toast.collapse": "Pienennä", + "toast.showAll": "Näytä kaikki" +} diff --git a/packages/@react-spectrum/s2-ai/intl/fr-FR.json b/packages/@react-spectrum/s2-ai/intl/fr-FR.json new file mode 100644 index 00000000000..67907cc37ce --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/fr-FR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Actions", + "actionbar.actionsAvailable": "Actions disponibles.", + "actionbar.clearSelection": "Supprimer la sélection", + "actionbar.selected": "{count, plural, =0 {Aucun élément sélectionné} one {# sélectionné} other {# sélectionnés}}", + "actionbar.selectedAll": "Toute la sélection", + "breadcrumbs.more": "Plus d’éléments", + "button.pending": "En attente", + "calendar.invalidSelection": "{selectedCount, plural, one {La date sélectionnée est indisponible} other {Les dates sélectionnées sont indisponibles}}.", + "combobox.noResults": "Aucun résultat", + "contextualhelp.help": "Aide", + "contextualhelp.info": "Informations", + "datepicker.endTime": "Heure de fin", + "datepicker.startTime": "Heure de début", + "datepicker.time": "Heure", + "dialog.alert": "Alerte", + "dialog.dismiss": "Rejeter", + "dropzone.replaceMessage": "Déposer le fichier à remplacer", + "inlinealert.informative": "Informations", + "inlinealert.negative": "Erreur", + "inlinealert.notice": "Avertissement", + "inlinealert.positive": "Succès", + "label.(optional)": "(facultatif)", + "label.(required)": "(requis)", + "menu.moreActions": "Autres actions", + "menu.unavailable": "Indisponible, développer pour plus de détails", + "notificationbadge.indicatorOnly": "Nouvelle activité", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Sélectionner…", + "picker.selectedCount": "{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Annuler", + "table.drag": "Faire glisser", + "table.editCell": "Modifier la cellule", + "table.loading": "Chargement...", + "table.loadingMore": "Chargement supplémentaire...", + "table.resizeColumn": "Redimensionner la colonne", + "table.save": "Enregistrer", + "table.sortAscending": "Trier par ordre croissant", + "table.sortDescending": "Trier par ordre décroissant", + "tag.actions": "Actions", + "tag.hideButtonLabel": "Afficher moins", + "tag.noTags": "Aucun", + "tag.showAllButtonLabel": "Tout afficher ({tagCount, number})", + "toast.clearAll": "Tout effacer", + "toast.collapse": "Réduire", + "toast.showAll": "Tout afficher" +} diff --git a/packages/@react-spectrum/s2-ai/intl/he-IL.json b/packages/@react-spectrum/s2-ai/intl/he-IL.json new file mode 100644 index 00000000000..4e20ed953c0 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/he-IL.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "פעולות", + "actionbar.actionsAvailable": "פעולות זמינות.", + "actionbar.clearSelection": "נקה בחירה", + "actionbar.selected": "{count, plural, =0 {לא בוצעה בחירה} one { # בחר} other {# נבחרו}}\",", + "actionbar.selectedAll": "כל הפריטים שנבחרו", + "breadcrumbs.more": "פריטים נוספים", + "button.pending": "ממתין ל", + "calendar.invalidSelection": "נבחר {selectedCount, plural, one {תאריך} other {תאריכים}} אינו זמין.", + "combobox.noResults": "אין תוצאות", + "contextualhelp.help": "עזרה", + "contextualhelp.info": "מידע", + "datepicker.endTime": "שעת סיום", + "datepicker.startTime": "שעת התחלה", + "datepicker.time": "זמן", + "dialog.alert": "התראה", + "dialog.dismiss": "התעלם", + "dropzone.replaceMessage": "שחרר את הקובץ להחלפה", + "inlinealert.informative": "מידע", + "inlinealert.negative": "שגיאה", + "inlinealert.notice": "אזהרה", + "inlinealert.positive": "הצלחה", + "label.(optional)": "(אופציונלי)", + "label.(required)": "(נדרש)", + "menu.moreActions": "פעולות נוספות", + "menu.unavailable": "לא זמין, הרחב לפרטים", + "notificationbadge.indicatorOnly": "פעילות חדשה", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "בחר…", + "picker.selectedCount": "{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}", + "slider.maximum": "מקסימום", + "slider.minimum": "מינימום", + "table.cancel": "ביטול", + "table.drag": "גרור", + "table.editCell": "עריכת תא", + "table.loading": "טוען...", + "table.loadingMore": "טוען עוד...", + "table.resizeColumn": "שנה את גודל העמודה", + "table.save": "שמירה", + "table.sortAscending": "מיין בסדר עולה", + "table.sortDescending": "מיין בסדר יורד", + "tag.actions": "פעולות", + "tag.hideButtonLabel": "הצג פחות", + "tag.noTags": "ללא", + "tag.showAllButtonLabel": "הצג הכל ({tagCount, number})", + "toast.clearAll": "נקה הכול", + "toast.collapse": "כווץ", + "toast.showAll": "הצג הכול" +} diff --git a/packages/@react-spectrum/s2-ai/intl/hr-HR.json b/packages/@react-spectrum/s2-ai/intl/hr-HR.json new file mode 100644 index 00000000000..47c1d6efb7d --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/hr-HR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Radnje", + "actionbar.actionsAvailable": "Dostupne radnje.", + "actionbar.clearSelection": "Poništi odabir", + "actionbar.selected": "Odabrano: { count }", + "actionbar.selectedAll": "Sve odabrano", + "breadcrumbs.more": "Više stavki", + "button.pending": "u tijeku", + "calendar.invalidSelection": "{selectedCount, plural, one {Odabrani datum nije dostupan} other {Odabrani datumi nisu dostupni}}.", + "combobox.noResults": "Nema rezultata", + "contextualhelp.help": "Pomoć", + "contextualhelp.info": "Informacije", + "datepicker.endTime": "Vrijeme završetka", + "datepicker.startTime": "Vrijeme početka", + "datepicker.time": "Vrijeme", + "dialog.alert": "Upozorenje", + "dialog.dismiss": "Odbaci", + "dropzone.replaceMessage": "Ispustite datoteku za zamjenu", + "inlinealert.informative": "Informacije", + "inlinealert.negative": "Pogreška", + "inlinealert.notice": "Upozorenje", + "inlinealert.positive": "Uspješno", + "label.(optional)": "(opcionalno)", + "label.(required)": "(obvezno)", + "menu.moreActions": "Dodatne radnje", + "menu.unavailable": "Nije dostupno, proširi za detalje", + "notificationbadge.indicatorOnly": "Nova aktivnost", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Odaberite…", + "picker.selectedCount": "{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}", + "slider.maximum": "Najviše", + "slider.minimum": "Najmanje", + "table.cancel": "Poništi", + "table.drag": "Povucite", + "table.editCell": "Uredi ćeliju", + "table.loading": "Učitavam...", + "table.loadingMore": "Učitavam još...", + "table.resizeColumn": "Promijeni veličinu stupca", + "table.save": "Spremi", + "table.sortAscending": "Sortiraj uzlazno", + "table.sortDescending": "Sortiraj silazno", + "tag.actions": "Radnje", + "tag.hideButtonLabel": "Prikaži manje", + "tag.noTags": "Nema", + "tag.showAllButtonLabel": "Prikaži sve ({tagCount, number})", + "toast.clearAll": "Poništi sve", + "toast.collapse": "Sažmi", + "toast.showAll": "Prikaži sve" +} diff --git a/packages/@react-spectrum/s2-ai/intl/hu-HU.json b/packages/@react-spectrum/s2-ai/intl/hu-HU.json new file mode 100644 index 00000000000..96421940d0b --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/hu-HU.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Műveletek", + "actionbar.actionsAvailable": "Műveletek állnak rendelkezésre.", + "actionbar.clearSelection": "Kijelölés törlése", + "actionbar.selected": "{count, plural, =0 {Egy sincs kijelölve} other {# kijelölve}}", + "actionbar.selectedAll": "Mind kijelölve", + "breadcrumbs.more": "További elemek", + "button.pending": "függőben levő", + "calendar.invalidSelection": "A kijelölt {selectedCount, plural, one {dátum nem érhető el} other {dátumok nem érhetőek el}}.", + "combobox.noResults": "Nincsenek találatok", + "contextualhelp.help": "Súgó", + "contextualhelp.info": "Információ", + "datepicker.endTime": "Befejezés ideje", + "datepicker.startTime": "Kezdés ideje", + "datepicker.time": "Idő", + "dialog.alert": "Figyelmeztetés", + "dialog.dismiss": "Elutasítás", + "dropzone.replaceMessage": "Ejtse le a fájlt a cseréhez", + "inlinealert.informative": "Információ", + "inlinealert.negative": "Hiba", + "inlinealert.notice": "Figyelmeztetés", + "inlinealert.positive": "Siker", + "label.(optional)": "(opcionális)", + "label.(required)": "(kötelező)", + "menu.moreActions": "További lehetőségek", + "menu.unavailable": "Nem érhető el, a részletekért bontsa ki", + "notificationbadge.indicatorOnly": "Új tevékenység", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Kiválasztás…", + "picker.selectedCount": "{count, plural, =0 {Nincs kijelölve elem} one {# elem kijelölve} other {# elem kijelölve}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Mégse", + "table.drag": "Húzás", + "table.editCell": "Cella szerkesztése", + "table.loading": "Betöltés folyamatban…", + "table.loadingMore": "Továbbiak betöltése folyamatban…", + "table.resizeColumn": "Oszlop átméretezése", + "table.save": "Mentés", + "table.sortAscending": "Növekvő rendezés", + "table.sortDescending": "Csökkenő rendezés", + "tag.actions": "Műveletek", + "tag.hideButtonLabel": "Mutass kevesebbet", + "tag.noTags": "Egyik sem", + "tag.showAllButtonLabel": "Az összes megjelenítése ({tagCount, number})", + "toast.clearAll": "Összes törlése", + "toast.collapse": "Összecsukás", + "toast.showAll": "Összes megjelenítése" +} diff --git a/packages/@react-spectrum/s2-ai/intl/it-IT.json b/packages/@react-spectrum/s2-ai/intl/it-IT.json new file mode 100644 index 00000000000..f3a63076f15 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/it-IT.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Azioni", + "actionbar.actionsAvailable": "Azioni disponibili.", + "actionbar.clearSelection": "Annulla selezione", + "actionbar.selected": "{count, plural, =0 {Nessuno selezionato} one {# selezionato} other {# selezionati}}", + "actionbar.selectedAll": "Tutti selezionati", + "breadcrumbs.more": "Altri elementi", + "button.pending": "in sospeso", + "calendar.invalidSelection": "{selectedCount, plural, one {Data selezionata non disponibile} other {Date selezionate non disponibili}}.", + "combobox.noResults": "Nessun risultato", + "contextualhelp.help": "Aiuto", + "contextualhelp.info": "Informazioni", + "datepicker.endTime": "Ora di fine", + "datepicker.startTime": "Ora di inizio", + "datepicker.time": "Ora", + "dialog.alert": "Avviso", + "dialog.dismiss": "Ignora", + "dropzone.replaceMessage": "Rilascia il file da sostituire", + "inlinealert.informative": "Informazioni", + "inlinealert.negative": "Errore", + "inlinealert.notice": "Avvertenza", + "inlinealert.positive": "Operazione riuscita", + "label.(optional)": "(facoltativo)", + "label.(required)": "(obbligatorio)", + "menu.moreActions": "Altre azioni", + "menu.unavailable": "Non disponibile, espandi per i dettagli", + "notificationbadge.indicatorOnly": "Nuova attività", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Seleziona…", + "picker.selectedCount": "{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}", + "slider.maximum": "Massimo", + "slider.minimum": "Minimo", + "table.cancel": "Annulla", + "table.drag": "Trascina", + "table.editCell": "Modifica cella", + "table.loading": "Caricamento...", + "table.loadingMore": "Caricamento altri...", + "table.resizeColumn": "Ridimensiona colonna", + "table.save": "Salva", + "table.sortAscending": "Ordinamento crescente", + "table.sortDescending": "Ordinamento decrescente", + "tag.actions": "Azioni", + "tag.hideButtonLabel": "Mostra meno", + "tag.noTags": "Nessuno", + "tag.showAllButtonLabel": "Mostra tutto ({tagCount, number})", + "toast.clearAll": "Cancella tutto", + "toast.collapse": "Comprimi", + "toast.showAll": "Mostra tutto" +} diff --git a/packages/@react-spectrum/s2-ai/intl/ja-JP.json b/packages/@react-spectrum/s2-ai/intl/ja-JP.json new file mode 100644 index 00000000000..7b5481cd72c --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/ja-JP.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "アクション", + "actionbar.actionsAvailable": "アクションを利用できます。", + "actionbar.clearSelection": "選択をクリア", + "actionbar.selected": "{count, plural, =0 {選択されていません} other {# 個を選択しました}}", + "actionbar.selectedAll": "すべてを選択", + "breadcrumbs.more": "その他の項目", + "button.pending": "保留", + "calendar.invalidSelection": "選択した{selectedCount, plural, one {日付} other {日付}}は使用できません。", + "combobox.noResults": "結果なし", + "contextualhelp.help": "ヘルプ", + "contextualhelp.info": "情報", + "datepicker.endTime": "終了時刻", + "datepicker.startTime": "開始時刻", + "datepicker.time": "時刻", + "dialog.alert": "アラート", + "dialog.dismiss": "閉じる", + "dropzone.replaceMessage": "ファイルをドロップして置換", + "inlinealert.informative": "情報", + "inlinealert.negative": "エラー", + "inlinealert.notice": "警告", + "inlinealert.positive": "成功", + "label.(optional)": "(オプション)", + "label.(required)": "(必須)", + "menu.moreActions": "その他のアクション", + "menu.unavailable": "利用できません。詳しくは、展開して確認してください", + "notificationbadge.indicatorOnly": "新規アクティビティ", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "選択…", + "picker.selectedCount": "{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}", + "slider.maximum": "最大", + "slider.minimum": "最小", + "table.cancel": "キャンセル", + "table.drag": "ドラッグ", + "table.editCell": "セルを編集", + "table.loading": "読み込み中...", + "table.loadingMore": "さらに読み込み中...", + "table.resizeColumn": "列幅を変更", + "table.save": "保存", + "table.sortAscending": "昇順に並べ替え", + "table.sortDescending": "降順に並べ替え", + "tag.actions": "アクション", + "tag.hideButtonLabel": "表示を減らす", + "tag.noTags": "なし", + "tag.showAllButtonLabel": "すべての ({tagCount, number}) を表示", + "toast.clearAll": "すべてクリア", + "toast.collapse": "折りたたむ", + "toast.showAll": "すべてを表示" +} diff --git a/packages/@react-spectrum/s2-ai/intl/ko-KR.json b/packages/@react-spectrum/s2-ai/intl/ko-KR.json new file mode 100644 index 00000000000..ed1cdefd539 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/ko-KR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "액션", + "actionbar.actionsAvailable": "사용 가능한 액션", + "actionbar.clearSelection": "선택 항목 지우기", + "actionbar.selected": "{count, plural, =0 {선택된 항목 없음} other {#개 선택됨}}", + "actionbar.selectedAll": "모두 선택됨", + "breadcrumbs.more": "기타 항목", + "button.pending": "보류 중", + "calendar.invalidSelection": "선택한 {selectedCount, plural, one {일자를} other {일자를}} 사용할 수 없습니다.", + "combobox.noResults": "결과 없음", + "contextualhelp.help": "도움말", + "contextualhelp.info": "정보", + "datepicker.endTime": "종료 시간", + "datepicker.startTime": "시작 시간", + "datepicker.time": "시간", + "dialog.alert": "경고", + "dialog.dismiss": "무시", + "dropzone.replaceMessage": "파일을 드롭하여 바꾸기", + "inlinealert.informative": "정보", + "inlinealert.negative": "오류", + "inlinealert.notice": "경고", + "inlinealert.positive": "성공", + "label.(optional)": "(선택 사항)", + "label.(required)": "(필수 사항)", + "menu.moreActions": "기타 액션", + "menu.unavailable": "사용할 수 없음, 자세히 보려면 펼치기", + "notificationbadge.indicatorOnly": "새로운 활동", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "선택…", + "picker.selectedCount": "{count, plural, =0 {선택한 항목 없음} one {#개 항목 선택됨} other {#개 항목 선택됨}}", + "slider.maximum": "최대", + "slider.minimum": "최소", + "table.cancel": "취소", + "table.drag": "드래그", + "table.editCell": "셀 편집", + "table.loading": "로드 중…", + "table.loadingMore": "추가 로드 중…", + "table.resizeColumn": "열 크기 조정", + "table.save": "저장", + "table.sortAscending": "오름차순 정렬", + "table.sortDescending": "내림차순 정렬", + "tag.actions": "액션", + "tag.hideButtonLabel": "간략히 보기", + "tag.noTags": "없음", + "tag.showAllButtonLabel": "모두 표시 ({tagCount, number})", + "toast.clearAll": "모두 지우기", + "toast.collapse": "접기", + "toast.showAll": "모두 표시" +} diff --git a/packages/@react-spectrum/s2-ai/intl/lt-LT.json b/packages/@react-spectrum/s2-ai/intl/lt-LT.json new file mode 100644 index 00000000000..14a5de70039 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/lt-LT.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Veiksmai", + "actionbar.actionsAvailable": "Galimi veiksmai.", + "actionbar.clearSelection": "Išvalyti pasirinkimą", + "actionbar.selected": "Pasirinkta: {count}", + "actionbar.selectedAll": "Pasirinkta viskas", + "breadcrumbs.more": "Daugiau elementų", + "button.pending": "laukiama", + "calendar.invalidSelection": "{selectedCount, plural, one {Datos} other {Datų}} pasirinkimas negalimas.", + "combobox.noResults": "Rezultatų nėra", + "contextualhelp.help": "Žinynas", + "contextualhelp.info": "Informacija", + "datepicker.endTime": "Pabaigos laikas", + "datepicker.startTime": "Pradžios laikas", + "datepicker.time": "Laikas", + "dialog.alert": "Įspėjimas", + "dialog.dismiss": "Atmesti", + "dropzone.replaceMessage": "Pašalinkite failą, kad pakeistumėte", + "inlinealert.informative": "Informacija", + "inlinealert.negative": "Klaida", + "inlinealert.notice": "Įspėjimas", + "inlinealert.positive": "Sėkmingai", + "label.(optional)": "(pasirenkama)", + "label.(required)": "(privaloma)", + "menu.moreActions": "Daugiau veiksmų", + "menu.unavailable": "Nepasiekiama, norėdami gauti daugiau informacijos, išskleiskite", + "notificationbadge.indicatorOnly": "Nauja veikla", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Pasirinkite…", + "picker.selectedCount": "{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}", + "slider.maximum": "Daugiausia", + "slider.minimum": "Mažiausia", + "table.cancel": "Atšaukti", + "table.drag": "Vilkti", + "table.editCell": "Redaguoti langelį", + "table.loading": "Įkeliama...", + "table.loadingMore": "Įkeliama daugiau...", + "table.resizeColumn": "Keisti stulpelio dydį", + "table.save": "Įrašyti", + "table.sortAscending": "Rikiuoti didėjimo tvarka", + "table.sortDescending": "Rikiuoti mažėjimo tvarka", + "tag.actions": "Veiksmai", + "tag.hideButtonLabel": "Rodyti mažiau", + "tag.noTags": "Nėra", + "tag.showAllButtonLabel": "Rodyti viską ({tagCount, number})", + "toast.clearAll": "Išvalyti viską", + "toast.collapse": "Sutraukti", + "toast.showAll": "Rodyti viską" +} diff --git a/packages/@react-spectrum/s2-ai/intl/lv-LV.json b/packages/@react-spectrum/s2-ai/intl/lv-LV.json new file mode 100644 index 00000000000..ac009435241 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/lv-LV.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Darbības", + "actionbar.actionsAvailable": "Pieejamas darbības.", + "actionbar.clearSelection": "Notīrīt atlasi", + "actionbar.selected": "{count, plural, =0 {Nav atlasīts nekas} other {Atlasīts(-i): #}}", + "actionbar.selectedAll": "Atlasīts viss", + "breadcrumbs.more": "Vairāk vienumu", + "button.pending": "gaida", + "calendar.invalidSelection": "Atlasītais(-ie) {selectedCount, plural, one {date} other {dates}} nav pieejams(-i).", + "combobox.noResults": "Nav rezultātu", + "contextualhelp.help": "Palīdzība", + "contextualhelp.info": "Informācija", + "datepicker.endTime": "Beigu laiks", + "datepicker.startTime": "Sākuma laiks", + "datepicker.time": "Laiks", + "dialog.alert": "Brīdinājums", + "dialog.dismiss": "Nerādīt", + "dropzone.replaceMessage": "Lai aizstātu, nometiet failu", + "inlinealert.informative": "Informācija", + "inlinealert.negative": "Kļūda", + "inlinealert.notice": "Brīdinājums", + "inlinealert.positive": "Izdevās", + "label.(optional)": "(neobligāti)", + "label.(required)": "(obligāti)", + "menu.moreActions": "Citas darbības", + "menu.unavailable": "Nav pieejams, izvērsiet, lai skatītu sīkāku informāciju", + "notificationbadge.indicatorOnly": "Jauna aktivitāte", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Izvēlēties…", + "picker.selectedCount": "{count, plural, =0 {Nav atlasīts neviens vienums} one {# vienums atlasīts} other {# ieraksti vienumi}}", + "slider.maximum": "Maksimālā vērtība", + "slider.minimum": "Minimālā vērtība", + "table.cancel": "Atcelt", + "table.drag": "Vilkšana", + "table.editCell": "Rediģēt šūnu", + "table.loading": "Notiek ielāde...", + "table.loadingMore": "Tiek ielādēts vēl...", + "table.resizeColumn": "Mainīt kolonnas lielumu", + "table.save": "Saglabāt", + "table.sortAscending": "Kārtot augošā secībā", + "table.sortDescending": "Kārtot dilstošā secībā", + "tag.actions": "Darbības", + "tag.hideButtonLabel": "Rādīt mazāk", + "tag.noTags": "Nav", + "tag.showAllButtonLabel": "Rādīt visu ({tagCount, number})", + "toast.clearAll": "Notīrīt visu", + "toast.collapse": "Sakļaut", + "toast.showAll": "Rādīt visu" +} diff --git a/packages/@react-spectrum/s2-ai/intl/nb-NO.json b/packages/@react-spectrum/s2-ai/intl/nb-NO.json new file mode 100644 index 00000000000..5a0cac5d422 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/nb-NO.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Handlinger", + "actionbar.actionsAvailable": "Tilgjengelige handlinger.", + "actionbar.clearSelection": "Tøm utvalg", + "actionbar.selected": "Valde element: {count}", + "actionbar.selectedAll": "Alle er valgt", + "breadcrumbs.more": "Flere elementer", + "button.pending": "avventer", + "calendar.invalidSelection": "Valgt(e) {selectedCount, plural, one {dato} other {datoer}} er utilgjengelig.", + "combobox.noResults": "Ingen resultater", + "contextualhelp.help": "Hjelp", + "contextualhelp.info": "Informasjon", + "datepicker.endTime": "Sluttid", + "datepicker.startTime": "Starttid", + "datepicker.time": "Tid", + "dialog.alert": "Varsel", + "dialog.dismiss": "Lukk", + "dropzone.replaceMessage": "Slipp filen for å erstatte", + "inlinealert.informative": "Informasjon", + "inlinealert.negative": "Feil", + "inlinealert.notice": "Advarsel", + "inlinealert.positive": "Vellykket", + "label.(optional)": "(valgfritt)", + "label.(required)": "(obligatorisk)", + "menu.moreActions": "Flere handlinger", + "menu.unavailable": "Utilgjengelig, utvid for detaljer", + "notificationbadge.indicatorOnly": "Ny aktivitet", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Velg …", + "picker.selectedCount": "{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}", + "slider.maximum": "Maksimum", + "slider.minimum": "Minimum", + "table.cancel": "Avbryt", + "table.drag": "Dra", + "table.editCell": "Rediger celle", + "table.loading": "Laster inn...", + "table.loadingMore": "Laster inn flere...", + "table.resizeColumn": "Endre størrelse på kolonne", + "table.save": "Lagre", + "table.sortAscending": "Sorter stigende", + "table.sortDescending": "Sorter synkende", + "tag.actions": "Handlinger", + "tag.hideButtonLabel": "Vis mindre", + "tag.noTags": "Ingen", + "tag.showAllButtonLabel": "Vis alle ({tagCount, number})", + "toast.clearAll": "Fjern alle", + "toast.collapse": "Skjul", + "toast.showAll": "Vis alle" +} diff --git a/packages/@react-spectrum/s2-ai/intl/nl-NL.json b/packages/@react-spectrum/s2-ai/intl/nl-NL.json new file mode 100644 index 00000000000..b5efe3224ae --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/nl-NL.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Acties", + "actionbar.actionsAvailable": "Acties beschikbaar.", + "actionbar.clearSelection": "Selectie wissen", + "actionbar.selected": "{count, plural, =0 {Niets geselecteerd} other {# geselecteerd}}", + "actionbar.selectedAll": "Alles geselecteerd", + "breadcrumbs.more": "Meer items", + "button.pending": "in behandeling", + "calendar.invalidSelection": "Geselecteerde {selectedCount, plural, one {datum} other {datums}} niet beschikbaar.", + "combobox.noResults": "Geen resultaten", + "contextualhelp.help": "Help", + "contextualhelp.info": "Informatie", + "datepicker.endTime": "Eindtijd", + "datepicker.startTime": "Starttijd", + "datepicker.time": "Tijd", + "dialog.alert": "Melding", + "dialog.dismiss": "Negeren", + "dropzone.replaceMessage": "Bestand neerzetten om te vervangen", + "inlinealert.informative": "Informatie", + "inlinealert.negative": "Fout", + "inlinealert.notice": "Waarschuwing", + "inlinealert.positive": "Geslaagd", + "label.(optional)": "(optioneel)", + "label.(required)": "(vereist)", + "menu.moreActions": "Meer handelingen", + "menu.unavailable": "Niet beschikbaar, uitvouwen voor meer informatie", + "notificationbadge.indicatorOnly": "Nieuwe activiteit", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Selecteren…", + "picker.selectedCount": "{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Annuleren", + "table.drag": "Slepen", + "table.editCell": "Cel bewerken", + "table.loading": "Laden...", + "table.loadingMore": "Meer laden...", + "table.resizeColumn": "Kolomgrootte wijzigen", + "table.save": "Opslaan", + "table.sortAscending": "Oplopend sorteren", + "table.sortDescending": "Aflopend sorteren", + "tag.actions": "Acties", + "tag.hideButtonLabel": "Minder weergeven", + "tag.noTags": "Geen", + "tag.showAllButtonLabel": "Alles tonen ({tagCount, number})", + "toast.clearAll": "Alles wissen", + "toast.collapse": "Samenvouwen", + "toast.showAll": "Alles weergeven" +} diff --git a/packages/@react-spectrum/s2-ai/intl/pl-PL.json b/packages/@react-spectrum/s2-ai/intl/pl-PL.json new file mode 100644 index 00000000000..f66771ac302 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/pl-PL.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Działania", + "actionbar.actionsAvailable": "Dostępne działania.", + "actionbar.clearSelection": "Wyczyść zaznaczenie", + "actionbar.selected": "Zaznaczono: {count}", + "actionbar.selectedAll": "Wszystkie zaznaczone", + "breadcrumbs.more": "Więcej elementów", + "button.pending": "oczekujące", + "calendar.invalidSelection": "{selectedCount, plural, one {Wybrana data jest niedostępna} other {Wybrane daty są niedostępne}}.", + "combobox.noResults": "Brak wyników", + "contextualhelp.help": "Pomoc", + "contextualhelp.info": "Informacja", + "datepicker.endTime": "Godzina końcowa", + "datepicker.startTime": "Godzina początkowa", + "datepicker.time": "Godzina", + "dialog.alert": "Ostrzeżenie", + "dialog.dismiss": "Zignoruj", + "dropzone.replaceMessage": "Upuść plik, aby zastąpić", + "inlinealert.informative": "Informacja", + "inlinealert.negative": "Błąd", + "inlinealert.notice": "Ostrzeżenie", + "inlinealert.positive": "Powodzenie", + "label.(optional)": "(opcjonalne)", + "label.(required)": "(wymagane)", + "menu.moreActions": "Więcej akcji", + "menu.unavailable": "Niedostępne, rozwiń, aby zobaczyć szczegóły", + "notificationbadge.indicatorOnly": "Nowa aktywność", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Zaznacz…", + "picker.selectedCount": "{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} few {# zaznaczone elementy} many {# zaznaczonych elementów} other {# zaznaczonych elementów}}", + "slider.maximum": "Maksimum", + "slider.minimum": "Minimum", + "table.cancel": "Anuluj", + "table.drag": "Przeciągnij", + "table.editCell": "Edytuj komórkę", + "table.loading": "Wczytywanie...", + "table.loadingMore": "Wczytywanie większej liczby...", + "table.resizeColumn": "Zmień rozmiar kolumny", + "table.save": "Zapisz", + "table.sortAscending": "Sortuj rosnąco", + "table.sortDescending": "Sortuj malejąco", + "tag.actions": "Działania", + "tag.hideButtonLabel": "Wyświetl mniej", + "tag.noTags": "Brak", + "tag.showAllButtonLabel": "Pokaż wszystko ({tagCount, number})", + "toast.clearAll": "Wyczyść wszystko", + "toast.collapse": "Zwiń", + "toast.showAll": "Pokaż wszystko" +} diff --git a/packages/@react-spectrum/s2-ai/intl/pt-BR.json b/packages/@react-spectrum/s2-ai/intl/pt-BR.json new file mode 100644 index 00000000000..fc920093184 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/pt-BR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Ações", + "actionbar.actionsAvailable": "Ações disponíveis.", + "actionbar.clearSelection": "Limpar seleção", + "actionbar.selected": "{count, plural, =0 {Nenhum selecionado} one {# selecionado} other {# selecionados}}", + "actionbar.selectedAll": "Todos selecionados", + "breadcrumbs.more": "Mais itens", + "button.pending": "pendente", + "calendar.invalidSelection": "{selectedCount, plural, one {Data} other {Datas}} selecionada(s) indisponível(is).", + "combobox.noResults": "Nenhum resultado", + "contextualhelp.help": "Ajuda", + "contextualhelp.info": "Informações", + "datepicker.endTime": "Hora final", + "datepicker.startTime": "Hora inicial", + "datepicker.time": "Hora", + "dialog.alert": "Alerta", + "dialog.dismiss": "Descartar", + "dropzone.replaceMessage": "Solte o arquivo para substituir", + "inlinealert.informative": "Informações", + "inlinealert.negative": "Erro", + "inlinealert.notice": "Aviso", + "inlinealert.positive": "Sucesso", + "label.(optional)": "(opcional)", + "label.(required)": "(obrigatório)", + "menu.moreActions": "Mais ações", + "menu.unavailable": "Indisponível. Expanda para ver os detalhes", + "notificationbadge.indicatorOnly": "Nova atividade", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Selecionar…", + "picker.selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}", + "slider.maximum": "Máximo", + "slider.minimum": "Mínimo", + "table.cancel": "Cancelar", + "table.drag": "Arraste", + "table.editCell": "Editar célula", + "table.loading": "Carregando...", + "table.loadingMore": "Carregando mais...", + "table.resizeColumn": "Redimensionar coluna", + "table.save": "Salvar", + "table.sortAscending": "Ordenar por ordem crescente", + "table.sortDescending": "Ordenar por ordem decrescente", + "tag.actions": "Ações", + "tag.hideButtonLabel": "Mostrar menos", + "tag.noTags": "Nenhum", + "tag.showAllButtonLabel": "Mostrar tudo ({tagCount, number})", + "toast.clearAll": "Limpar tudo", + "toast.collapse": "Recolher", + "toast.showAll": "Mostrar tudo" +} diff --git a/packages/@react-spectrum/s2-ai/intl/pt-PT.json b/packages/@react-spectrum/s2-ai/intl/pt-PT.json new file mode 100644 index 00000000000..0c309cd582e --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/pt-PT.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Ações", + "actionbar.actionsAvailable": "Ações disponíveis.", + "actionbar.clearSelection": "Limpar seleção", + "actionbar.selected": "{count, plural, =0 {Nenhum selecionado} one {# selecionado} other {# selecionados}}", + "actionbar.selectedAll": "Tudo selecionado", + "breadcrumbs.more": "Mais artigos", + "button.pending": "pendente", + "calendar.invalidSelection": "A(s) {selectedCount, plural, one {data} other {datas}} selecionada(s) não está(ão) disponível/disponível(eis).", + "combobox.noResults": "Sem resultados", + "contextualhelp.help": "Ajuda", + "contextualhelp.info": "Informação", + "datepicker.endTime": "Terminar tempo", + "datepicker.startTime": "Iniciar tempo", + "datepicker.time": "Tempo", + "dialog.alert": "Alerta", + "dialog.dismiss": "Dispensar", + "dropzone.replaceMessage": "Largar ficheiro para substituir", + "inlinealert.informative": "Informação", + "inlinealert.negative": "Erro", + "inlinealert.notice": "Aviso", + "inlinealert.positive": "Sucesso", + "label.(optional)": "(opcional)", + "label.(required)": "(obrigatório)", + "menu.moreActions": "Mais ações", + "menu.unavailable": "Indisponível, expandir para mais detalhes", + "notificationbadge.indicatorOnly": "Nova atividade", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Selecionar…", + "picker.selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.", + "slider.maximum": "Máximo", + "slider.minimum": "Mínimo", + "table.cancel": "Cancelar", + "table.drag": "Arrastar", + "table.editCell": "Editar célula", + "table.loading": "A carregar...", + "table.loadingMore": "A carregar mais...", + "table.resizeColumn": "Redimensionar coluna", + "table.save": "Guardar", + "table.sortAscending": "Ordenar por ordem ascendente", + "table.sortDescending": "Ordenar por ordem decrescente", + "tag.actions": "Ações", + "tag.hideButtonLabel": "Mostrar menos", + "tag.noTags": "Nenhum", + "tag.showAllButtonLabel": "Mostrar tudo ({tagCount, number})", + "toast.clearAll": "Limpar tudo", + "toast.collapse": "Colapsar", + "toast.showAll": "Mostrar tudo" +} diff --git a/packages/@react-spectrum/s2-ai/intl/ro-RO.json b/packages/@react-spectrum/s2-ai/intl/ro-RO.json new file mode 100644 index 00000000000..a194f3dd837 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/ro-RO.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Acțiuni", + "actionbar.actionsAvailable": "Acțiuni disponibile.", + "actionbar.clearSelection": "Goliți selecția", + "actionbar.selected": "{count, plural, =0 {Niciunul selectat} one { # selectat} other {# selectate}}", + "actionbar.selectedAll": "Toate elementele selectate", + "breadcrumbs.more": "Mai multe articole", + "button.pending": "în așteptare", + "calendar.invalidSelection": "{selectedCount, plural, one {Data selectată nu este disponibilă} other {Datele selectate nu sunt disponibile}}.", + "combobox.noResults": "Niciun rezultat", + "contextualhelp.help": "Ajutor", + "contextualhelp.info": "Informații", + "datepicker.endTime": "Ora de sfârșit", + "datepicker.startTime": "Ora de început", + "datepicker.time": "Ora", + "dialog.alert": "Alertă", + "dialog.dismiss": "Revocare", + "dropzone.replaceMessage": "Plasați fișierul pentru a înlocui", + "inlinealert.informative": "Informații", + "inlinealert.negative": "Eroare", + "inlinealert.notice": "Avertisment", + "inlinealert.positive": "Succes", + "label.(optional)": "(opţional)", + "label.(required)": "(obligatoriu)", + "menu.moreActions": "Mai multe acțiuni", + "menu.unavailable": "Indisponibil, extindeți pentru detalii", + "notificationbadge.indicatorOnly": "Activitate nouă", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Selectați…", + "picker.selectedCount": "{count, plural, =0 {Niciun articol selectat} one {# articol selectat} other {# articole selectate}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Anulare", + "table.drag": "Trageți", + "table.editCell": "Editați celula", + "table.loading": "Se încarcă...", + "table.loadingMore": "Se încarcă mai multe...", + "table.resizeColumn": "Redimensionați coloana", + "table.save": "Salvați", + "table.sortAscending": "Sortați crescător", + "table.sortDescending": "Sortați descrescător", + "tag.actions": "Acțiuni", + "tag.hideButtonLabel": "Se afișează mai puțin", + "tag.noTags": "Niciuna", + "tag.showAllButtonLabel": "Se afișează tot ({tagCount, number})", + "toast.clearAll": "Goliți tot", + "toast.collapse": "Restrângeți", + "toast.showAll": "Afișați tot" +} diff --git a/packages/@react-spectrum/s2-ai/intl/ru-RU.json b/packages/@react-spectrum/s2-ai/intl/ru-RU.json new file mode 100644 index 00000000000..1548b59d0b0 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/ru-RU.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Действия", + "actionbar.actionsAvailable": "Действия доступны.", + "actionbar.clearSelection": "Очистить выбор", + "actionbar.selected": "{count, plural, =0 {Не выбрано} other {Выбрано #}}", + "actionbar.selectedAll": "Выбрано все", + "breadcrumbs.more": "Дополнительные элементы", + "button.pending": "в ожидании", + "calendar.invalidSelection": "{selectedCount, plural, one {Выбранная дата недоступна} other {Выбранные даты недоступны}}.", + "combobox.noResults": "Результаты отсутствуют", + "contextualhelp.help": "Справка", + "contextualhelp.info": "Информация", + "datepicker.endTime": "Время окончания", + "datepicker.startTime": "Время начала", + "datepicker.time": "Время", + "dialog.alert": "Предупреждение", + "dialog.dismiss": "Пропустить", + "dropzone.replaceMessage": "Перетащите файл для замены", + "inlinealert.informative": "Информация", + "inlinealert.negative": "Ошибка", + "inlinealert.notice": "Предупреждение", + "inlinealert.positive": "Успешно", + "label.(optional)": "(дополнительно)", + "label.(required)": "(обязательно)", + "menu.moreActions": "Дополнительные действия", + "menu.unavailable": "Недоступно, разверните для подробностей", + "notificationbadge.indicatorOnly": "Новая активность", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Выбрать…", + "picker.selectedCount": "{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# эл. выбрано}}", + "slider.maximum": "Максимум", + "slider.minimum": "Минимум", + "table.cancel": "Отмена", + "table.drag": "Перетаскивание", + "table.editCell": "Редактировать ячейку", + "table.loading": "Загрузка...", + "table.loadingMore": "Дополнительная загрузка...", + "table.resizeColumn": "Изменить размер столбца", + "table.save": "Сохранить", + "table.sortAscending": "Сортировать по возрастанию", + "table.sortDescending": "Сортировать по убыванию", + "tag.actions": "Действия", + "tag.hideButtonLabel": "Показать меньше", + "tag.noTags": "Нет", + "tag.showAllButtonLabel": "Показать все ({tagCount, number})", + "toast.clearAll": "Очистить все", + "toast.collapse": "Свернуть", + "toast.showAll": "Показать все" +} diff --git a/packages/@react-spectrum/s2-ai/intl/sk-SK.json b/packages/@react-spectrum/s2-ai/intl/sk-SK.json new file mode 100644 index 00000000000..26bea942988 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/sk-SK.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Akcie", + "actionbar.actionsAvailable": "Dostupné akcie.", + "actionbar.clearSelection": "Vymazať výber", + "actionbar.selected": "Vybrané položky: {count}", + "actionbar.selectedAll": "Všetky vybraté položky", + "breadcrumbs.more": "Ďalšie položky", + "button.pending": "čakajúce", + "calendar.invalidSelection": "{selectedCount, plural, one {Vybratý dátum} other {Vybraté dátumy}}: nedostupné.", + "combobox.noResults": "Žiadne výsledky", + "contextualhelp.help": "Pomoc", + "contextualhelp.info": "Informácie", + "datepicker.endTime": "Čas ukončenia", + "datepicker.startTime": "Čas začiatku", + "datepicker.time": "Čas", + "dialog.alert": "Upozornenie", + "dialog.dismiss": "Zrušiť", + "dropzone.replaceMessage": "Presuňte súbor, ktorý chcete nahradiť", + "inlinealert.informative": "Informácie", + "inlinealert.negative": "Chyba", + "inlinealert.notice": "Upozornenie", + "inlinealert.positive": "Úspech", + "label.(optional)": "(nepovinné)", + "label.(required)": "(povinné)", + "menu.moreActions": "Ďalšie akcie", + "menu.unavailable": "Nedostupné, rozbaľte podrobnosti", + "notificationbadge.indicatorOnly": "Nová aktivita", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Vybrať…", + "picker.selectedCount": "{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek #}}", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Zrušiť", + "table.drag": "Presunúť", + "table.editCell": "Upraviť bunku", + "table.loading": "Načítava sa...", + "table.loadingMore": "Načítava sa viac...", + "table.resizeColumn": "Zmeniť veľkosť stĺpca", + "table.save": "Uložiť", + "table.sortAscending": "Zoradiť vzostupne", + "table.sortDescending": "Zoradiť zostupne", + "tag.actions": "Akcie", + "tag.hideButtonLabel": "Zobraziť menej", + "tag.noTags": "Žiadne", + "tag.showAllButtonLabel": "Zobraziť všetko ({tagCount, number})", + "toast.clearAll": "Vymazať všetko", + "toast.collapse": "Zbaliť", + "toast.showAll": "Zobraziť všetko" +} diff --git a/packages/@react-spectrum/s2-ai/intl/sl-SI.json b/packages/@react-spectrum/s2-ai/intl/sl-SI.json new file mode 100644 index 00000000000..75cd20ed807 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/sl-SI.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Dejanja", + "actionbar.actionsAvailable": "Na voljo so dejanja.", + "actionbar.clearSelection": "Počisti izbor", + "actionbar.selected": "Izbrano: {count}", + "actionbar.selectedAll": "Izbrano vse", + "breadcrumbs.more": "Več elementov", + "button.pending": "v teku", + "calendar.invalidSelection": "Izbrano {selectedCount, plural, one {date} other {dates}} ni na voljo.", + "combobox.noResults": "Ni rezultatov", + "contextualhelp.help": "Pomoč", + "contextualhelp.info": "Informacije", + "datepicker.endTime": "Končni čas", + "datepicker.startTime": "Začetni čas", + "datepicker.time": "Čas", + "dialog.alert": "Opozorilo", + "dialog.dismiss": "Opusti", + "dropzone.replaceMessage": "Spustite datoteko za zamenjavo", + "inlinealert.informative": "Informacije", + "inlinealert.negative": "Napaka", + "inlinealert.notice": "Opozorilo", + "inlinealert.positive": "Uspešno", + "label.(optional)": "(opcijsko)", + "label.(required)": "(obvezno)", + "menu.moreActions": "Več možnosti", + "menu.unavailable": "Ni na voljo, razširite za podrobnosti", + "notificationbadge.indicatorOnly": "Nova dejavnost", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Izberite…", + "picker.selectedCount": "{count, plural, =0 {Ni izbranih elementov} one {izbran je # element} other {izbranih je # elementov}}.", + "slider.maximum": "Največji", + "slider.minimum": "Najmanj", + "table.cancel": "Prekliči", + "table.drag": "Povleci", + "table.editCell": "Uredi celico", + "table.loading": "Nalaganje...", + "table.loadingMore": "Nalaganje več vsebine...", + "table.resizeColumn": "Spremeni velikost stolpca", + "table.save": "Shrani", + "table.sortAscending": "Razvrsti naraščajoče", + "table.sortDescending": "Razvrsti padajoče", + "tag.actions": "Dejanja", + "tag.hideButtonLabel": "Prikaži manj", + "tag.noTags": "Nič", + "tag.showAllButtonLabel": "Prikaž vse ({tagCount, number})", + "toast.clearAll": "Počisti vse", + "toast.collapse": "Strni", + "toast.showAll": "Prikaži vse" +} diff --git a/packages/@react-spectrum/s2-ai/intl/sr-SP.json b/packages/@react-spectrum/s2-ai/intl/sr-SP.json new file mode 100644 index 00000000000..4bfa3ae75e1 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/sr-SP.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Radnje", + "actionbar.actionsAvailable": "Dostupne su radnje.", + "actionbar.clearSelection": "Poništi izbor", + "actionbar.selected": "Izabrano: {count}", + "actionbar.selectedAll": "Sve je izabrano", + "breadcrumbs.more": "Više stavki", + "button.pending": "nerešeno", + "calendar.invalidSelection": "Izabrani {selectedCount, plural, one {date} other {dates}} nije dostupan.", + "combobox.noResults": "Nema rezultata", + "contextualhelp.help": "Pomoć", + "contextualhelp.info": "Informacije", + "datepicker.endTime": "Završno vreme", + "datepicker.startTime": "Početno vreme", + "datepicker.time": "Vreme", + "dialog.alert": "Upozorenje", + "dialog.dismiss": "Odbaci", + "dropzone.replaceMessage": "Otpustite datoteku radi zamene", + "inlinealert.informative": "Informacije", + "inlinealert.negative": "Greška", + "inlinealert.notice": "Upozorenje", + "inlinealert.positive": "Uspešno", + "label.(optional)": "(opciono)", + "label.(required)": "(obavezno)", + "menu.moreActions": "Dodatne radnje", + "menu.unavailable": "Nije dostupno, proširite za detalje", + "notificationbadge.indicatorOnly": "Nova aktivnost", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Izaberite...", + "picker.selectedCount": "{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}", + "slider.maximum": "Najviše", + "slider.minimum": "Najmanje", + "table.cancel": "Otkaži", + "table.drag": "Prevuci", + "table.editCell": "Uredi ćeliju", + "table.loading": "Učitavam...", + "table.loadingMore": "Učitavam još...", + "table.resizeColumn": "Promeni veličinu kolone", + "table.save": "Sačuvaj", + "table.sortAscending": "Sortiraj po rastućem redosledu", + "table.sortDescending": "Sortiraj po opadajućem redosledu", + "tag.actions": "Radnje", + "tag.hideButtonLabel": "Prikaži manje", + "tag.noTags": "Ne postoji", + "tag.showAllButtonLabel": "Prikaži sve ({tagCount, number})", + "toast.clearAll": "Obriši sve", + "toast.collapse": " Skupi", + "toast.showAll": "Prikaži sve" +} diff --git a/packages/@react-spectrum/s2-ai/intl/sv-SE.json b/packages/@react-spectrum/s2-ai/intl/sv-SE.json new file mode 100644 index 00000000000..c7229bc8e55 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/sv-SE.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Åtgärder", + "actionbar.actionsAvailable": "Åtgärder finns.", + "actionbar.clearSelection": "Rensa markering", + "actionbar.selected": "{count, plural, =0 {Inga valda} one {# vald} other {# valda}}", + "actionbar.selectedAll": "Alla markerade", + "breadcrumbs.more": "Fler artiklar", + "button.pending": "väntande", + "calendar.invalidSelection": "{selectedCount, plural, one {Valt datum är inte tillgängligt.} other {Valda datum är inte tillgängliga.}}", + "combobox.noResults": "Inga resultat", + "contextualhelp.help": "Hjälp", + "contextualhelp.info": "Information", + "datepicker.endTime": "Sluttid", + "datepicker.startTime": "Starttid", + "datepicker.time": "Tid", + "dialog.alert": "Varning", + "dialog.dismiss": "Avvisa", + "dropzone.replaceMessage": "Släpp filen för att ersätta", + "inlinealert.informative": "Information", + "inlinealert.negative": "Fel", + "inlinealert.notice": "Varning", + "inlinealert.positive": "Lyckades", + "label.(optional)": "(valfritt)", + "label.(required)": "(krävs)", + "menu.moreActions": "Fler åtgärder", + "menu.unavailable": "Ej tillgänglig, expandera för mer information", + "notificationbadge.indicatorOnly": "Ny aktivitet", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Välj…", + "picker.selectedCount": "{count, plural, =0 {Inga objekt markerade} one {# objekt markerat} other {# objekt markerade}}.", + "slider.maximum": "Maximum", + "slider.minimum": "Minimum", + "table.cancel": "Avbryt", + "table.drag": "Dra", + "table.editCell": "Redigera cell", + "table.loading": "Läser in...", + "table.loadingMore": "Läser in mer...", + "table.resizeColumn": "Ändra storlek på kolumn", + "table.save": "Spara", + "table.sortAscending": "Sortera i stigande ordning", + "table.sortDescending": "Sortera i fallande ordning", + "tag.actions": "Åtgärder", + "tag.hideButtonLabel": "Visa mindre", + "tag.noTags": "Ingen", + "tag.showAllButtonLabel": "Visa alla ({tagCount, number})", + "toast.clearAll": "Rensa alla", + "toast.collapse": "Dölj", + "toast.showAll": "Visa alla" +} diff --git a/packages/@react-spectrum/s2-ai/intl/tr-TR.json b/packages/@react-spectrum/s2-ai/intl/tr-TR.json new file mode 100644 index 00000000000..e0c2c26654d --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/tr-TR.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Eylemler", + "actionbar.actionsAvailable": "Eylemler mevcut.", + "actionbar.clearSelection": "Seçimi temizle", + "actionbar.selected": "{count, plural, =0 {Hiçbiri seçilmedi} other {# seçildi}}", + "actionbar.selectedAll": "Tümü seçildi", + "breadcrumbs.more": "Daha fazla öğe", + "button.pending": "beklemede", + "calendar.invalidSelection": "Seçilen {selectedCount, plural, one {tarih} other {tarihler}} müsait değil.", + "combobox.noResults": "Sonuç yok", + "contextualhelp.help": "Yardım", + "contextualhelp.info": "Bilgiler", + "datepicker.endTime": "Bitiş saati", + "datepicker.startTime": "Başlangıç saati", + "datepicker.time": "Saat", + "dialog.alert": "Uyarı", + "dialog.dismiss": "Kapat", + "dropzone.replaceMessage": "Değiştirmek için dosyayı bırakın", + "inlinealert.informative": "Bilgiler", + "inlinealert.negative": "Hata", + "inlinealert.notice": "Uyarı", + "inlinealert.positive": "Başarılı", + "label.(optional)": "(isteğe bağlı)", + "label.(required)": "(gerekli)", + "menu.moreActions": "Daha fazla eylem", + "menu.unavailable": "Kullanılamıyor, ayrıntıları görmek için genişletin", + "notificationbadge.indicatorOnly": "Yeni etkinlik", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Seçin…", + "picker.selectedCount": "{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}", + "slider.maximum": "Maksimum", + "slider.minimum": "Minimum", + "table.cancel": "İptal et", + "table.drag": "Sürükle", + "table.editCell": "Hücreyi düzenle", + "table.loading": "Yükleniyor...", + "table.loadingMore": "Daha fazla yükleniyor...", + "table.resizeColumn": "Sütunu yeniden boyutlandır", + "table.save": "Kaydet", + "table.sortAscending": "Artan Sıralama", + "table.sortDescending": "Azalan Sıralama", + "tag.actions": "Eylemler", + "tag.hideButtonLabel": "Daha az göster", + "tag.noTags": "Hiçbiri", + "tag.showAllButtonLabel": "Tümünü göster ({tagCount, number})", + "toast.clearAll": "Tümünü temizle", + "toast.collapse": "Daralt", + "toast.showAll": "Tümünü göster" +} diff --git a/packages/@react-spectrum/s2-ai/intl/uk-UA.json b/packages/@react-spectrum/s2-ai/intl/uk-UA.json new file mode 100644 index 00000000000..cd6a894956b --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/uk-UA.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "Дії", + "actionbar.actionsAvailable": "Доступні дії.", + "actionbar.clearSelection": "Очистити вибір", + "actionbar.selected": "Вибрано: {count}", + "actionbar.selectedAll": "Усе вибрано", + "breadcrumbs.more": "Більше елементів", + "button.pending": "в очікуванні", + "calendar.invalidSelection": "{selectedCount, plural, one {Вибрана дата недоступна} other {Вибрані дати недоступні}}.", + "combobox.noResults": "Результатів немає", + "contextualhelp.help": "Довідка", + "contextualhelp.info": "Інформація", + "datepicker.endTime": "Час завершення", + "datepicker.startTime": "Час початку", + "datepicker.time": "Час", + "dialog.alert": "Сигнал тривоги", + "dialog.dismiss": "Скасувати", + "dropzone.replaceMessage": "Перетягніть файл для заміни", + "inlinealert.informative": "Інформація", + "inlinealert.negative": "Помилка", + "inlinealert.notice": "Попередження", + "inlinealert.positive": "Успішно", + "label.(optional)": "(необов’язково)", + "label.(required)": "(обов’язково)", + "menu.moreActions": "Більше дій", + "menu.unavailable": "Недоступно, розгорніть для докладнішої інформації", + "notificationbadge.indicatorOnly": "Нова активність", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "Вибрати…", + "picker.selectedCount": "{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}", + "slider.maximum": "Максимум", + "slider.minimum": "Мінімум", + "table.cancel": "Скасувати", + "table.drag": "Перетягнути", + "table.editCell": "Редагувати клітинку", + "table.loading": "Завантаження…", + "table.loadingMore": "Завантаження інших об’єктів...", + "table.resizeColumn": "Змінити розмір стовпця", + "table.save": "Зберегти", + "table.sortAscending": "Сортувати за зростанням", + "table.sortDescending": "Сортувати за спаданням", + "tag.actions": "Дії", + "tag.hideButtonLabel": "Показувати менше", + "tag.noTags": "Немає", + "tag.showAllButtonLabel": "Показати всі ({tagCount, number})", + "toast.clearAll": "Очистити все", + "toast.collapse": "Згорнути", + "toast.showAll": "Показати все" +} diff --git a/packages/@react-spectrum/s2-ai/intl/zh-CN.json b/packages/@react-spectrum/s2-ai/intl/zh-CN.json new file mode 100644 index 00000000000..a385d658555 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/zh-CN.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "操作", + "actionbar.actionsAvailable": "有可用操作。", + "actionbar.clearSelection": "清除选择", + "actionbar.selected": "{count, plural, =0 {无选择} other {已选择 # 个}}", + "actionbar.selectedAll": "全选", + "breadcrumbs.more": "更多项目", + "button.pending": "待处理", + "calendar.invalidSelection": "选定的 {selectedCount, plural, one {个日期} other {个日期}} 不可用。", + "combobox.noResults": "无结果", + "contextualhelp.help": "帮助", + "contextualhelp.info": "信息", + "datepicker.endTime": "结束时间", + "datepicker.startTime": "开始时间", + "datepicker.time": "时间", + "dialog.alert": "警报", + "dialog.dismiss": "取消", + "dropzone.replaceMessage": "删除要替换的文件", + "inlinealert.informative": "信息", + "inlinealert.negative": "错误", + "inlinealert.notice": "警告", + "inlinealert.positive": "成功", + "label.(optional)": "(可选)", + "label.(required)": "(必填)", + "menu.moreActions": "更多操作", + "menu.unavailable": "不可用,展开以查看详细信息", + "notificationbadge.indicatorOnly": "新活动", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "选择...", + "picker.selectedCount": "{count, plural, =0 {未选择任何项} one {已选择 # 个项} other {已选择 # 个项}}", + "slider.maximum": "最大", + "slider.minimum": "最小", + "table.cancel": "取消", + "table.drag": "拖动", + "table.editCell": "编辑单元格", + "table.loading": "正在加载...", + "table.loadingMore": "正在加载更多...", + "table.resizeColumn": "调整列大小", + "table.save": "保存", + "table.sortAscending": "升序排序", + "table.sortDescending": "降序排序", + "tag.actions": "操作", + "tag.hideButtonLabel": "显示更少", + "tag.noTags": "无", + "tag.showAllButtonLabel": "全部显示 ({tagCount, number})", + "toast.clearAll": "全部清除", + "toast.collapse": "折叠", + "toast.showAll": "显示全部" +} diff --git a/packages/@react-spectrum/s2-ai/intl/zh-TW.json b/packages/@react-spectrum/s2-ai/intl/zh-TW.json new file mode 100644 index 00000000000..48caecc340c --- /dev/null +++ b/packages/@react-spectrum/s2-ai/intl/zh-TW.json @@ -0,0 +1,49 @@ +{ + "actionbar.actions": "動作", + "actionbar.actionsAvailable": "可執行的動作。", + "actionbar.clearSelection": "清除選取項目", + "actionbar.selected": "{count, plural, =0 {未選取任何項目} other {已選取 # 個}}", + "actionbar.selectedAll": "已選取所有項目", + "breadcrumbs.more": "更多項目", + "button.pending": "待處理", + "calendar.invalidSelection": "所選的{selectedCount, plural, one {日期} other {日期}}無法使用。", + "combobox.noResults": "無任何結果", + "contextualhelp.help": "說明", + "contextualhelp.info": "資訊", + "datepicker.endTime": "結束時間", + "datepicker.startTime": "開始時間", + "datepicker.time": "時間", + "dialog.alert": "警示", + "dialog.dismiss": "關閉", + "dropzone.replaceMessage": "放置要取代的檔案", + "inlinealert.informative": "資訊", + "inlinealert.negative": "錯誤", + "inlinealert.notice": "警告", + "inlinealert.positive": "成功", + "label.(optional)": "(選填)", + "label.(required)": "(必填)", + "menu.moreActions": "更多動作", + "menu.unavailable": "無法使用,展開以取得詳細資料", + "notificationbadge.indicatorOnly": "新活動", + "notificationbadge.plus": "{notifications}+", + "picker.placeholder": "選取…", + "picker.selectedCount": "{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}", + "slider.maximum": "最大值", + "slider.minimum": "最小值", + "table.cancel": "取消", + "table.drag": "拖曳", + "table.editCell": "編輯儲存格", + "table.loading": "載入中…", + "table.loadingMore": "正在載入更多…", + "table.resizeColumn": "調整欄大小", + "table.save": "儲存", + "table.sortAscending": "升序排序", + "table.sortDescending": "降序排序", + "tag.actions": "動作", + "tag.hideButtonLabel": "顯示較少", + "tag.noTags": "無", + "tag.showAllButtonLabel": "顯示全部 ({tagCount, number})", + "toast.clearAll": "全部清除", + "toast.collapse": "收合", + "toast.showAll": "顯示全部" +} diff --git a/packages/@react-spectrum/s2-ai/package.json b/packages/@react-spectrum/s2-ai/package.json new file mode 100644 index 00000000000..486089f9ded --- /dev/null +++ b/packages/@react-spectrum/s2-ai/package.json @@ -0,0 +1,90 @@ +{ + "name": "@react-spectrum/s2-ai", + "version": "1.0.0-alpha.1", + "description": "Spectrum 2 UI AI components in React", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/adobe/react-spectrum" + }, + "source": "exports/index.ts", + "files": [ + "dist", + "src", + "exports", + "*.js" + ], + "sideEffects": [ + "*.css" + ], + "main": "./dist/exports/index.cjs", + "module": "./dist/exports/index.mjs", + "types": "./dist/types/exports/index.d.ts", + "exports": { + ".": { + "source": "./exports/index.ts", + "types": "./dist/types/exports/index.d.ts", + "module": "./dist/exports/index.mjs", + "import": "./dist/exports/index.mjs", + "require": "./dist/exports/index.cjs" + }, + "./package.json": "./package.json", + "./*": { + "source": "./exports/*.ts", + "types": "./dist/types/exports/*.d.ts", + "import": "./dist/exports/*.mjs", + "require": "./dist/exports/*.cjs" + }, + "./private/*": null + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "prepack": "npm pkg delete scripts devDependencies resolutions alias targets", + "postpack": "git checkout -- package.json" + }, + "dependencies": { + "@internationalized/date": "^3.12.1", + "@internationalized/number": "^3.6.6", + "@parcel/macros": "^2.16.3", + "@react-spectrum/s2": "^1.3.1", + "@react-types/shared": "^3.34.0", + "react-aria": "3.48.0", + "react-aria-components": "1.17.0", + "react-stately": "3.46.0" + }, + "devDependencies": { + "@react-aria/test-utils": "^1.0.0-alpha.8", + "@storybook/jest": "^0.2.3", + "@testing-library/dom": "^10.1.0", + "@testing-library/react": "^16.0.0", + "@testing-library/user-event": "^14.0.0", + "react": "^19.0.0-rc.1", + "react-dom": "^19.0.0-rc.1" + }, + "peerDependencies": { + "react": "^19.0.0-rc.1", + "react-dom": "^19.0.0-rc.1" + }, + "browserslist": "last 2 Chrome versions, last 2 Safari versions, last 2 Firefox versions, last 2 Edge versions", + "targets": { + "module": false, + "main": false, + "types": false, + "exports-module": { + "source": "exports/*.ts", + "distDir": "dist", + "isLibrary": true, + "outputFormat": "esmodule", + "includeNodeModules": false + }, + "exports-main": { + "source": "exports/*.ts", + "distDir": "dist", + "isLibrary": true, + "outputFormat": "commonjs", + "includeNodeModules": false + } + } +} diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx new file mode 100644 index 00000000000..bb8a964aa1a --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -0,0 +1,984 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {ActionMenuContext} from '@react-spectrum/s2/ActionMenu'; +import { + baseColor, + color, + focusRing, + lightDark, + space, + style +} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {Button} from 'react-aria-components/Button'; +import {ButtonContext} from '@react-spectrum/s2/Button'; +import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; +import {Checkbox} from '@react-spectrum/s2/Checkbox'; +import {composeRenderProps} from 'react-aria-components/composeRenderProps'; +import {ContentContext} from '@react-spectrum/s2/Content'; +import {FooterContext} from '@react-spectrum/s2/Footer'; +import {TextContext} from '@react-spectrum/s2/Text'; +import {ContextValue, DEFAULT_SLOT, Provider} from 'react-aria-components/slots'; +import { + controlSize, + getAllowedOverrides +} from '@react-spectrum/s2/style-utils' with {type: 'macro'}; +import {createContext, forwardRef, ReactNode, useContext, useRef} from 'react'; +import CrossIcon from '@react-spectrum/s2/ui-icons/Cross'; +import { + DOMProps, + DOMRef, + DOMRefValue, + FocusableRefValue, + GlobalDOMAttributes +} from '@react-types/shared'; +import {filterDOMProps} from 'react-aria/filterDOMProps'; +import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; +import {ImageContext} from '@react-spectrum/s2/Image'; +import {ImageCoordinator} from '@react-spectrum/s2/ImageCoordinator'; +import {inertValue} from 'react-aria/private/utils/inertValue'; +// @ts-ignore +import intlMessages from '../intl/*.json'; +import {Link} from 'react-aria-components/Link'; +import {mergeStyles} from '@react-spectrum/s2/style/runtime'; +import {pressScale} from '@react-spectrum/s2/pressScale'; +import {SkeletonContext, useIsSkeleton} from '@react-spectrum/s2/Skeleton'; +import type {StyleProps, UnsafeStyles} from '@react-spectrum/s2/style-utils'; +import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; +import {useDOMRef} from '@react-spectrum/s2/useDOMRef'; +import {useFocusableRef} from '@react-spectrum/s2/useDOMRef'; +import {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter'; +import {useSpectrumContextProps} from '@react-spectrum/s2/useSpectrumContextProps'; + +interface CardRenderProps { + /** The size of the Card. */ + size: 'XS' | 'S' | 'M' | 'L' | 'XL'; +} + +export interface CardProps + extends + Omit< + GridListItemProps, + | 'className' + | 'style' + | 'render' + | 'children' + | 'onHoverChange' + | 'onHoverStart' + | 'onHoverEnd' + | 'onClick' + | keyof GlobalDOMAttributes + >, + StyleProps { + /** The children of the Card. */ + children: ReactNode | ((renderProps: CardRenderProps) => ReactNode); + /** + * The size of the Card. + * + * @default 'M' + */ + size?: 'XS' | 'S' | 'M' | 'L' | 'XL'; + /** + * The amount of internal padding within the Card. + * + * @default 'regular' + */ + density?: 'compact' | 'regular' | 'spacious'; + /** + * The visual style of the Card. + * + * @default 'primary' + */ + variant?: 'primary' | 'secondary' | 'tertiary' | 'quiet'; +} + +const borderRadius = { + default: 'lg', + size: { + XS: 'default', + S: 'default' + }, + isBasic: 'default' +} as const; + +// Figma missing a lot of combinations of variant, tshirt, density +// Quiet Basic cards? +// Does Basic not participate in selection? +// Why is there a flipped horizontal card? +// Max width on contents for horizontal cards? Doesn't appear to be one that includes the preview because the preview can have any ratio and that +// causes the width grow. +// (Max) height on cards? Maybe that makes more sense. + +const onlyPreview = ':not(:has([data-slot=content])):not(:has([data-slot=preview]))'; + +let card = style( + { + display: 'flex', + flexDirection: 'row', + position: 'relative', + borderRadius, + '--s2-container-bg': { + type: 'backgroundColor', + value: { + variant: { + primary: 'elevated', + secondary: 'layer-1', + basic: 'layer-2' + }, + forcedColors: 'ButtonFace' + } + }, + backgroundColor: { + default: '--s2-container-bg', + variant: { + tertiary: 'transparent', + quiet: 'transparent' + } + }, + // TODO: No box shadow for basic, secondary, dark + // also none for basic tertiary + boxShadow: { + default: 'emphasized', + isHovered: 'elevated', + isFocusVisible: 'elevated', + isSelected: 'elevated', + forcedColors: '[0 0 0 1px var(--hcm-buttonborder, ButtonBorder)]', + variant: { + tertiary: { + // Render border with box-shadow to avoid affecting layout. + default: `[0 0 0 2px ${color('gray-100')}]`, + isHovered: `[0 0 0 2px ${color('gray-200')}]`, + isFocusVisible: `[0 0 0 2px ${color('gray-200')}]`, + isSelected: 'none', + forcedColors: '[0 0 0 2px var(--hcm-buttonborder, ButtonBorder)]' + }, + quiet: 'none' + } + }, + forcedColorAdjust: 'none', + transition: 'default', + fontFamily: 'sans', + textDecoration: 'none', + overflow: { + default: 'clip', + variant: { + quiet: 'visible' + } + }, + contain: 'layout', + disableTapHighlight: true, + userSelect: { + isCardView: 'none' + }, + cursor: { + isLink: 'pointer' + }, + height: { + default: { + size: { + XS: 160, + S: 180, + M: 200, + L: 220, + XL: 240 + } + }, + isBasic: 68, + isCardView: 'full', + [onlyPreview]: 'auto' + }, + width: { + default: 'full', + [onlyPreview]: 'auto' + }, + aspectRatio: { + [onlyPreview]: '1/1' + }, + '--card-spacing': { + type: 'paddingTop', + value: { + density: { + compact: { + size: { + XS: '[6px]', + S: 8, + M: 12, + L: 16, + XL: 20 + } + }, + regular: { + size: { + XS: 8, + S: 12, + M: 16, + L: 20, + XL: 24 + } + }, + spacious: { + size: { + XS: 12, + S: 16, + M: 20, + L: 24, + XL: 28 + } + } + }, + [onlyPreview]: 0 + } + }, + '--card-padding-y': { + type: 'paddingTop', + value: { + default: '--card-spacing', + variant: { + quiet: 0 + } + } + }, + '--card-padding-x': { + type: 'paddingStart', + value: { + default: '--card-spacing', + variant: { + quiet: 0 + } + } + }, + paddingY: '--card-padding-y', + paddingX: '--card-padding-x', + boxSizing: 'border-box', + ...focusRing(), + outlineStyle: { + default: 'none', + isFocusVisible: 'solid', + // Focus ring moves to preview when quiet. + variant: { + quiet: 'none' + } + } + }, + getAllowedOverrides() +); + +let selectionIndicator = style({ + position: 'absolute', + inset: 0, + zIndex: 2, + borderRadius, + pointerEvents: 'none', + borderWidth: 2, + borderStyle: 'solid', + borderColor: 'gray-1000', + transition: 'default', + opacity: { + default: 0, + isSelected: 1 + }, + // Quiet cards with no checkbox have an extra inner stroke + // to distinguish the selection indicator from the preview. + outlineColor: lightDark('transparent-white-600', 'transparent-black-600'), + outlineOffset: -4, + outlineStyle: { + default: 'none', + isStrokeInner: 'solid' + }, + outlineWidth: 2 +}); + +let preview = style({ + position: 'relative', + transition: 'default', + overflow: 'clip', + marginY: 'calc(var(--card-padding-y) * -1)', + marginStart: 'calc(var(--card-padding-x) * -1)', + marginEnd: { + ':last-child': 'calc(var(--card-padding-x) * -1)' + }, + borderRadius: { + isQuiet: borderRadius + }, + boxShadow: { + isQuiet: { + isHovered: 'elevated', + isFocusVisible: 'elevated', + isSelected: 'elevated' + } + }, + ...focusRing(), + outlineStyle: { + default: 'none', + isQuiet: { + isFocusVisible: 'solid' + } + } +}); + +const image = style({ + height: 'full', + aspectRatio: '1/1', + objectFit: 'cover', + userSelect: 'none', + pointerEvents: 'none' +}); + +let title = style({ + font: 'title', + fontSize: { + size: { + XS: 'title-xs', + S: 'title-xs', + M: 'title-sm', + L: 'title', + XL: 'title-lg' + } + }, + lineClamp: 3, + gridArea: 'title' +}); + +let description = style({ + font: 'body', + fontSize: { + size: { + XS: 'body-2xs', + S: 'body-2xs', + M: 'body-xs', + L: 'body-sm', + XL: 'body' + } + }, + lineClamp: 3, + gridArea: 'description' +}); + +let content = style({ + display: 'grid', + // By default, all elements are displayed in a stack. + // If an action menu is present, place it next to the title. + gridTemplateColumns: { + default: ['1fr'], + ':has([data-slot=menu])': ['minmax(0, 1fr)', 'auto'] + }, + gridTemplateAreas: { + default: ['title', 'description'], + ':has([data-slot=menu])': ['title menu', 'description description'] + }, + columnGap: 4, + flexGrow: 1, + alignItems: 'baseline', + alignContent: 'start', + rowGap: { + size: { + XS: 4, + S: 4, + M: space(6), + L: space(6), + XL: 8 + } + }, + paddingStart: { + default: '--card-spacing', + ':first-child': 0 + }, + paddingEnd: { + default: 'calc(var(--card-spacing) * 1.5 / 2)', + ':last-child': 0 + } +}); + +let actionMenu = style({ + gridArea: 'menu', + // Don't cause the row to expand, preserve gap between title and description text. + // Would use -100% here but it doesn't work in Firefox. + marginY: 'calc(-1 * self(height))' +}); + +let footer = style({ + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + gap: 8 +}); + +export const InternalCardViewContext = createContext({ + ElementType: 'div' as 'div' | typeof GridListItem, + layout: 'grid' as 'grid' | 'waterfall' +}); +export const CardContext = + createContext, DOMRefValue>>(null); + +interface InternalCardContextValue { + isQuiet: boolean; + size: 'XS' | 'S' | 'M' | 'L' | 'XL'; + isSelected: boolean; + isHovered: boolean; + isFocusVisible: boolean; + isPressed: boolean; + isCheckboxSelection: boolean; +} + +const InternalCardContext = createContext({ + isQuiet: false, + size: 'M', + isSelected: false, + isHovered: false, + isFocusVisible: false, + isPressed: false, + isCheckboxSelection: true +}); + +const actionButtonSize = { + XS: 'XS', + S: 'XS', + M: 'S', + L: 'M', + XL: 'L' +} as const; + +const Card = forwardRef(function Card( + props: CardProps & {isBasic?: boolean}, + ref: DOMRef +) { + [props] = useSpectrumContextProps(props, ref, CardContext); + let {ElementType} = useContext(InternalCardViewContext); + let domRef = useDOMRef(ref); + let { + isBasic = false, + density = 'regular', + size = 'M', + variant = 'primary', + UNSAFE_className = '', + UNSAFE_style, + styles, + id, + ...otherProps + } = props; + let isQuiet = variant === 'quiet'; + let isSkeleton = useIsSkeleton(); + let children = ( + + + {typeof props.children === 'function' ? props.children({size}) : props.children} + + + ); + + let press = pressScale(domRef, UNSAFE_style); + if (ElementType === 'div' && !isSkeleton && props.href) { + // Standalone Card that has an href should be rendered as a Link. + // NOTE: In this case, the card must not contain interactive elements. + return ( + + UNSAFE_className + + card( + {...renderProps, size, density, variant, isBasic, isCardView: false, isLink: true}, + styles + ) + } + style={renderProps => + // Only the preview in quiet cards scales down on press + variant === 'quiet' ? UNSAFE_style : press(renderProps) + }> + {renderProps => ( + + {children} + + )} + + ); + } + + if (ElementType === 'div' || isSkeleton) { + return ( +
+ + {children} + +
+ ); + } + + return ( + + UNSAFE_className + + card( + {...renderProps, isCardView: true, isLink: !!props.href, size, density, variant, isBasic}, + styles + ) + } + style={renderProps => + // Only the preview in quiet cards scales down on press + variant === 'quiet' ? UNSAFE_style : press(renderProps) + }> + {({selectionMode, selectionBehavior, isHovered, isFocusVisible, isSelected, isPressed}) => ( + + {/* Selection indicator and checkbox move inside the preview for quiet cards */} + {!isQuiet && } + {!isQuiet && selectionMode !== 'none' && selectionBehavior === 'toggle' && ( + + )} + {/* this makes the :first-child selector work even with the checkbox */} +
{children}
+
+ )} +
+ ); +}); + +function SelectionIndicator() { + let {size, isSelected, isQuiet, isCheckboxSelection} = useContext(InternalCardContext); + return ( +
+ ); +} + +function CardCheckbox() { + let {size} = useContext(InternalCardContext); + return ( +
+ +
+ ); +} + +export interface CardPreviewProps extends UnsafeStyles, DOMProps { + children: ReactNode; +} + +export const CardPreview = forwardRef(function CardPreview( + props: CardPreviewProps, + ref: DOMRef +) { + let {size, isQuiet, isHovered, isFocusVisible, isSelected, isPressed, isCheckboxSelection} = + useContext(InternalCardContext); + let {UNSAFE_className = '', UNSAFE_style} = props; + let domRef = useDOMRef(ref); + return ( +
+ {isQuiet && } + {isQuiet && isCheckboxSelection && } +
+ {props.children} +
+
+ ); +}); + +const collection = style({ + display: 'grid', + gridTemplateColumns: 'repeat(3, 1fr)', + gap: { + default: 4, + size: { + XS: 2, + S: 2 + } + } +}); + +const collectionImage = style({ + width: 'full', + aspectRatio: { + default: 'square', + ':nth-last-child(4):first-child': '3/2' + }, + gridColumnEnd: { + ':nth-last-child(4):first-child': 'span 3' + }, + objectFit: 'cover', + pointerEvents: 'none', + userSelect: 'none' +}); + +export const CollectionCardPreview = forwardRef(function CollectionCardPreview( + props: CardPreviewProps, + ref: DOMRef +) { + let {size} = useContext(InternalCardContext)!; + return ( + +
+ + {props.children} + +
+
+ ); +}); + +const buttonSize = { + XS: 'S', + S: 'S', + M: 'M', + L: 'L', + XL: 'XL' +} as const; + +export const HorizontalCard = forwardRef(function HorizontalCard( + props: CardProps, + ref: DOMRef +) { + let {size = 'M'} = props; + return ( + + {composeRenderProps(props.children, children => ( + + {children} + + ))} + + ); +}); + +export const BasicHorizontalCard = forwardRef(function BasicHorizontalCard( + props: CardProps, + ref: DOMRef +) { + let {size = 'M'} = props; + return ( + + {composeRenderProps(props.children, children => ( + + {children} + + ))} + + ); +}); + +const hoverBackground = { + default: 'gray-200', + isStaticColor: 'transparent-overlay-200' +} as const; + +const styles = style<{ + isDisabled: boolean; + isHovered: boolean; + isFocusVisible: boolean; + isPressed: boolean; + size: 'S' | 'M' | 'L' | 'XL'; +}>( + { + ...focusRing(), + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + size: controlSize(), + flexShrink: 0, + borderRadius: 'full', + padding: 0, + borderStyle: 'none', + transition: 'default', + backgroundColor: { + default: 'gray-200', + isHovered: hoverBackground, + isFocusVisible: hoverBackground, + isPressed: hoverBackground + }, + '--iconPrimary': { + type: 'color', + value: { + default: baseColor('neutral'), + isDisabled: 'disabled', + forcedColors: { + default: 'ButtonText', + isDisabled: 'GrayText' + } + } + }, + outlineColor: { + default: 'focus-ring', + forcedColors: 'Highlight' + }, + disableTapHighlight: true + }, + getAllowedOverrides() +); +const CloseButton = function CloseButton(props) { + let ref = useRef>(null); + let domRef = useFocusableRef(ref); + let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2'); + return ( + + ); +}; + +let assetListStyles = style({}, getAllowedOverrides()); + +export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { + let domRef = useDOMRef(ref); + return ( + + + {props.children} + + + ); +}); + +export const Asset = forwardRef(function Asset(props: CardProps, ref: DOMRef) { + let domRef = useDOMRef(ref); + return ( + + {props.children} + {/** Definitely not a close button, though looks like one. */} +
+ +
+
+ ); +}); diff --git a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx new file mode 100644 index 00000000000..11ef0672578 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx @@ -0,0 +1,200 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {ActionButton} from '@react-spectrum/s2/ActionButton'; +import {ActionMenu} from '@react-spectrum/s2/ActionMenu'; +import { + Asset as AssetComponent, + AssetList, + BasicHorizontalCard, + HorizontalCard, + CardPreview as HorizontalCardPreview +} from '../src/HorizontalCard'; +import {Card, CardProps} from '@react-spectrum/s2/Card'; +import ChevronRight from '@react-spectrum/s2/icons/ChevronRight'; +import {Content} from '@react-spectrum/s2/Content'; +import {Footer} from '@react-spectrum/s2/Footer'; +import {Text} from '@react-spectrum/s2/Text'; +import {Image} from '@react-spectrum/s2/Image'; +import {MenuItem} from '@react-spectrum/s2/Menu'; +import type {Meta, StoryObj} from '@storybook/react'; +import {Skeleton} from '@react-spectrum/s2/Skeleton'; +import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + +const meta: Meta = { + component: HorizontalCard, + parameters: { + layout: 'centered' + }, + tags: ['autodocs'], + args: { + isLoading: false + }, + argTypes: { + href: {table: {disable: true}}, + download: {table: {disable: true}}, + hrefLang: {table: {disable: true}}, + referrerPolicy: {table: {disable: true}}, + rel: {table: {disable: true}}, + routerOptions: {table: {disable: true}}, + ping: {table: {disable: true}}, + target: {table: {disable: true}}, + value: {table: {disable: true}}, + textValue: {table: {disable: true}}, + onAction: {table: {disable: true}}, + isDisabled: {table: {disable: true}}, + children: {table: {disable: true}} + }, + decorators: (children, {args}) => ( + {children(args)} + ), + title: 'HorizontalCard' +}; + +export default meta; + +type Story = StoryObj; + +export const Horizontal: Story = { + render: args => ( +
+ + + + + + + Card title + + Card description. Give a concise overview of the context or functionality that's + mentioned in the card title. + + + + + + + + + + + Card title + + + Card description. Give a concise overview of the context or functionality that's + mentioned in the card title. + + + + + + + Card title + Card description. + +
+ + Test + +
+
+ + + + Card title + Card description. + +
+ + + +
+
+ + + + Card title + Card description. + + + + + + Card title + Card description. + + + + + +
+ ) +}; + +export const AIAssetList: Story = { + render: args => ( + + + + + + + + + + + + ) +}; diff --git a/packages/@react-spectrum/s2/exports/Skeleton.ts b/packages/@react-spectrum/s2/exports/Skeleton.ts index 70789e790f8..214c45b746f 100644 --- a/packages/@react-spectrum/s2/exports/Skeleton.ts +++ b/packages/@react-spectrum/s2/exports/Skeleton.ts @@ -1,2 +1,2 @@ -export {Skeleton, useIsSkeleton} from '../src/Skeleton'; +export {Skeleton, SkeletonContext, useIsSkeleton} from '../src/Skeleton'; export type {SkeletonProps} from '../src/Skeleton'; diff --git a/packages/@react-spectrum/s2/exports/style-utils.ts b/packages/@react-spectrum/s2/exports/style-utils.ts new file mode 100644 index 00000000000..90ca4c5fdd3 --- /dev/null +++ b/packages/@react-spectrum/s2/exports/style-utils.ts @@ -0,0 +1,2 @@ +export {controlSize, getAllowedOverrides} from '../src/style-utils'; +export type {StyleProps, UnsafeStyles} from '../src/style-utils'; diff --git a/packages/@react-spectrum/s2/exports/useDOMRef.ts b/packages/@react-spectrum/s2/exports/useDOMRef.ts new file mode 100644 index 00000000000..9b009d2fcb6 --- /dev/null +++ b/packages/@react-spectrum/s2/exports/useDOMRef.ts @@ -0,0 +1 @@ +export {createDOMRef, createFocusableRef, useDOMRef, useFocusableRef, unwrapDOMRef, useUnwrapDOMRef} from '../src/useDOMRef'; diff --git a/packages/@react-spectrum/s2/exports/useSpectrumContextProps.ts b/packages/@react-spectrum/s2/exports/useSpectrumContextProps.ts new file mode 100644 index 00000000000..1f4cec2d7b9 --- /dev/null +++ b/packages/@react-spectrum/s2/exports/useSpectrumContextProps.ts @@ -0,0 +1 @@ +export {useSpectrumContextProps} from '../src/useSpectrumContextProps'; diff --git a/packages/@react-spectrum/s2/package.json b/packages/@react-spectrum/s2/package.json index 57bb36b5d7a..757a2489d5b 100644 --- a/packages/@react-spectrum/s2/package.json +++ b/packages/@react-spectrum/s2/package.json @@ -45,6 +45,13 @@ "import": "./style/dist/module.mjs", "require": "./style/dist/main.cjs" }, + "./style/runtime": { + "source": "./style/runtime.ts", + "types": "./dist/types/style/runtime.d.ts", + "module": "./style/dist/runtime.mjs", + "import": "./style/dist/runtime.mjs", + "require": "./style/dist/runtime.cjs" + }, "./icons/*": { "source": "./s2wf-icons/S2_Icon_*_20_N.svg", "types": [ @@ -67,6 +74,12 @@ }, "./illustrations/linear/internal/*": null, "./illustrations/gradient/*/internal/*": null, + "./ui-icons/*": { + "source": "./ui-icons/*.tsx", + "types": "./dist/types/ui-icons/*.d.ts", + "import": "./dist/ui-icons/*.mjs", + "require": "./dist/ui-icons/*.cjs" + }, "./package.json": "./package.json", "./*": { "source": "./exports/*.ts", diff --git a/yarn.lock b/yarn.lock index def4ad819e5..ec5c6d289c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8006,6 +8006,31 @@ __metadata: languageName: unknown linkType: soft +"@react-spectrum/s2-ai@workspace:packages/@react-spectrum/s2-ai": + version: 0.0.0-use.local + resolution: "@react-spectrum/s2-ai@workspace:packages/@react-spectrum/s2-ai" + dependencies: + "@internationalized/date": "npm:^3.12.1" + "@internationalized/number": "npm:^3.6.6" + "@parcel/macros": "npm:^2.16.3" + "@react-aria/test-utils": "npm:^1.0.0-alpha.8" + "@react-spectrum/s2": "npm:^1.3.1" + "@react-types/shared": "npm:^3.34.0" + "@storybook/jest": "npm:^0.2.3" + "@testing-library/dom": "npm:^10.1.0" + "@testing-library/react": "npm:^16.0.0" + "@testing-library/user-event": "npm:^14.0.0" + react: "npm:^19.0.0-rc.1" + react-aria: "npm:3.48.0" + react-aria-components: "npm:1.17.0" + react-dom: "npm:^19.0.0-rc.1" + react-stately: "npm:3.46.0" + peerDependencies: + react: ^19.0.0-rc.1 + react-dom: ^19.0.0-rc.1 + languageName: unknown + linkType: soft + "@react-spectrum/s2-docs@workspace:packages/dev/s2-docs": version: 0.0.0-use.local resolution: "@react-spectrum/s2-docs@workspace:packages/dev/s2-docs" @@ -8082,7 +8107,7 @@ __metadata: languageName: unknown linkType: soft -"@react-spectrum/s2@npm:1.3.1, @react-spectrum/s2@npm:^1.0.0, @react-spectrum/s2@workspace:packages/@react-spectrum/s2": +"@react-spectrum/s2@npm:1.3.1, @react-spectrum/s2@npm:^1.0.0, @react-spectrum/s2@npm:^1.3.1, @react-spectrum/s2@workspace:packages/@react-spectrum/s2": version: 0.0.0-use.local resolution: "@react-spectrum/s2@workspace:packages/@react-spectrum/s2" dependencies: From d9e1578adfa9c6cf3967ad6fb3b5a5b472384173 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 22 May 2026 11:06:11 +1000 Subject: [PATCH 02/11] fix all the lints --- .oxlintrc.json | 6 +++++- packages/@react-spectrum/s2-ai/README.md | 3 +++ packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx | 8 ++++---- .../s2-ai/stories/HorizontalCard.stories.tsx | 2 +- packages/@react-spectrum/s2/exports/useDOMRef.ts | 9 ++++++++- yarn.config.cjs | 4 +++- 6 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 packages/@react-spectrum/s2-ai/README.md diff --git a/.oxlintrc.json b/.oxlintrc.json index 70c61a932a3..f6fcaf1ee5c 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -371,7 +371,11 @@ } }, { - "files": ["packages/@react-spectrum/s2/**", "packages/dev/s2-docs/**"], + "files": [ + "packages/@react-spectrum/s2/**", + "packages/dev/s2-docs/**", + "packages/@react-spectrum/s2-ai/**" + ], "rules": { "react/react-in-jsx-scope": "off" } diff --git a/packages/@react-spectrum/s2-ai/README.md b/packages/@react-spectrum/s2-ai/README.md new file mode 100644 index 00000000000..75adcd8b512 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/README.md @@ -0,0 +1,3 @@ +# @react-spectrum/s2-ai + +This package is part of [react-spectrum](https://github.com/adobe/react-spectrum). See the repo for more details. \ No newline at end of file diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx index bb8a964aa1a..e7942ccebc0 100644 --- a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -21,12 +21,9 @@ import { } from '@react-spectrum/s2/style' with {type: 'macro'}; import {Button} from 'react-aria-components/Button'; import {ButtonContext} from '@react-spectrum/s2/Button'; -import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; import {Checkbox} from '@react-spectrum/s2/Checkbox'; import {composeRenderProps} from 'react-aria-components/composeRenderProps'; import {ContentContext} from '@react-spectrum/s2/Content'; -import {FooterContext} from '@react-spectrum/s2/Footer'; -import {TextContext} from '@react-spectrum/s2/Text'; import {ContextValue, DEFAULT_SLOT, Provider} from 'react-aria-components/slots'; import { controlSize, @@ -42,18 +39,21 @@ import { GlobalDOMAttributes } from '@react-types/shared'; import {filterDOMProps} from 'react-aria/filterDOMProps'; +import {FooterContext} from '@react-spectrum/s2/Footer'; import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; import {ImageContext} from '@react-spectrum/s2/Image'; import {ImageCoordinator} from '@react-spectrum/s2/ImageCoordinator'; import {inertValue} from 'react-aria/private/utils/inertValue'; -// @ts-ignore import intlMessages from '../intl/*.json'; import {Link} from 'react-aria-components/Link'; +// @ts-ignore +import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; import {mergeStyles} from '@react-spectrum/s2/style/runtime'; import {pressScale} from '@react-spectrum/s2/pressScale'; import {SkeletonContext, useIsSkeleton} from '@react-spectrum/s2/Skeleton'; import type {StyleProps, UnsafeStyles} from '@react-spectrum/s2/style-utils'; import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; +import {TextContext} from '@react-spectrum/s2/Text'; import {useDOMRef} from '@react-spectrum/s2/useDOMRef'; import {useFocusableRef} from '@react-spectrum/s2/useDOMRef'; import {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter'; diff --git a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx index 11ef0672578..f139b8b0cc5 100644 --- a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx +++ b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx @@ -23,12 +23,12 @@ import {Card, CardProps} from '@react-spectrum/s2/Card'; import ChevronRight from '@react-spectrum/s2/icons/ChevronRight'; import {Content} from '@react-spectrum/s2/Content'; import {Footer} from '@react-spectrum/s2/Footer'; -import {Text} from '@react-spectrum/s2/Text'; import {Image} from '@react-spectrum/s2/Image'; import {MenuItem} from '@react-spectrum/s2/Menu'; import type {Meta, StoryObj} from '@storybook/react'; import {Skeleton} from '@react-spectrum/s2/Skeleton'; import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; +import {Text} from '@react-spectrum/s2/Text'; const meta: Meta = { component: HorizontalCard, diff --git a/packages/@react-spectrum/s2/exports/useDOMRef.ts b/packages/@react-spectrum/s2/exports/useDOMRef.ts index 9b009d2fcb6..ec296ff5965 100644 --- a/packages/@react-spectrum/s2/exports/useDOMRef.ts +++ b/packages/@react-spectrum/s2/exports/useDOMRef.ts @@ -1 +1,8 @@ -export {createDOMRef, createFocusableRef, useDOMRef, useFocusableRef, unwrapDOMRef, useUnwrapDOMRef} from '../src/useDOMRef'; +export { + createDOMRef, + createFocusableRef, + useDOMRef, + useFocusableRef, + unwrapDOMRef, + useUnwrapDOMRef +} from '../src/useDOMRef'; diff --git a/yarn.config.cjs b/yarn.config.cjs index d09717c85f7..ae94cb2e987 100644 --- a/yarn.config.cjs +++ b/yarn.config.cjs @@ -26,7 +26,8 @@ function enforceConsistentDependenciesAcrossTheProject({Yarn}) { dependency.update('*'); } else if ( dependency.workspace.ident === '@react-spectrum/s2' || - dependency.workspace.ident === '@react-spectrum/s2-icon-builder' + dependency.workspace.ident === '@react-spectrum/s2-icon-builder' || + dependency.workspace.ident === '@react-spectrum/s2-ai' ) { dependency.update('^19.0.0-rc.1'); } else if (dependency.workspace.ident === '@react-spectrum/codemods') { @@ -57,6 +58,7 @@ function enforceConsistentDependenciesAcrossTheProject({Yarn}) { workspace.ident !== '@internationalized/string-compiler' && workspace.ident !== 'tailwindcss-react-aria-components' && workspace.ident !== '@react-spectrum/s2' && + workspace.ident !== '@react-spectrum/s2-ai' && workspace.manifest.rsp?.type !== 'cli' ) { workspace.set('dependencies.@swc/helpers', '^0.5.0'); From 94d0817aba95f2e6e41a04e5938e7fad3b813642 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 22 May 2026 11:47:45 +1000 Subject: [PATCH 03/11] cleanup --- .../@react-spectrum/s2-ai/intl/ar-AE.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/bg-BG.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/cs-CZ.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/da-DK.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/de-DE.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/el-GR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/en-US.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/es-ES.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/et-EE.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/fi-FI.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/fr-FR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/he-IL.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/hr-HR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/hu-HU.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/it-IT.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/ja-JP.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/ko-KR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/lt-LT.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/lv-LV.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/nb-NO.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/nl-NL.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/pl-PL.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/pt-BR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/pt-PT.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/ro-RO.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/ru-RU.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/sk-SK.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/sl-SI.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/sr-SP.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/sv-SE.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/tr-TR.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/uk-UA.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/zh-CN.json | 49 ------------------- .../@react-spectrum/s2-ai/intl/zh-TW.json | 49 ------------------- .../s2-ai/src/HorizontalCard.tsx | 5 +- 35 files changed, 2 insertions(+), 1669 deletions(-) delete mode 100644 packages/@react-spectrum/s2-ai/intl/ar-AE.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/bg-BG.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/cs-CZ.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/da-DK.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/de-DE.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/el-GR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/en-US.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/es-ES.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/et-EE.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/fi-FI.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/fr-FR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/he-IL.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/hr-HR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/hu-HU.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/it-IT.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/ja-JP.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/ko-KR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/lt-LT.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/lv-LV.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/nb-NO.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/nl-NL.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/pl-PL.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/pt-BR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/pt-PT.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/ro-RO.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/ru-RU.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/sk-SK.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/sl-SI.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/sr-SP.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/sv-SE.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/tr-TR.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/uk-UA.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/zh-CN.json delete mode 100644 packages/@react-spectrum/s2-ai/intl/zh-TW.json diff --git a/packages/@react-spectrum/s2-ai/intl/ar-AE.json b/packages/@react-spectrum/s2-ai/intl/ar-AE.json deleted file mode 100644 index fd9c15149d8..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/ar-AE.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "الإجراءات", - "actionbar.actionsAvailable": "الإجراءات المتاحة.", - "actionbar.clearSelection": "إزالة التحديد", - "actionbar.selected": "{count, plural, =0 {غير محدد} other {# محدد}}", - "actionbar.selectedAll": "تم تحديد الكل", - "breadcrumbs.more": "المزيد من العناصر", - "button.pending": "قيد الانتظار", - "calendar.invalidSelection": "{selectedCount, plural, one {التاريخ} other {التواريخ}} المحدد/المحددة غير متوفرة.", - "combobox.noResults": "لا توجد نتائج", - "contextualhelp.help": "مساعدة", - "contextualhelp.info": "معلومات", - "datepicker.endTime": "وقت الانتهاء", - "datepicker.startTime": "وقت البدء", - "datepicker.time": "الوقت", - "dialog.alert": "تنبيه", - "dialog.dismiss": "تجاهل", - "dropzone.replaceMessage": "للاستبدال، قم بإفلات الملف", - "inlinealert.informative": "معلومات", - "inlinealert.negative": "خطأ", - "inlinealert.notice": "تحذير", - "inlinealert.positive": "تم بنجاح", - "label.(optional)": "(اختياري)", - "label.(required)": "(مطلوب)", - "menu.moreActions": "المزيد من الإجراءات", - "menu.unavailable": "غير مُتوفر، قُم بالتوسيع للحصول على التفاصيل", - "notificationbadge.indicatorOnly": "نشاط جديد", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "تحديد…", - "picker.selectedCount": "{count, plural, =0 {لم يتم تحديد أي عنصر} one {تم تحديد عنصر واحد} two {تم تحديد عنصرين} few {تم تحديد # عناصر} other {تم تحديد # عنصر}}", - "slider.maximum": "أقصى", - "slider.minimum": "أدنى", - "table.cancel": "إلغاء", - "table.drag": "سحب", - "table.editCell": "تعديل الخلية", - "table.loading": "جارٍ التحميل...", - "table.loadingMore": "جارٍ تحميل المزيد...", - "table.resizeColumn": "تغيير حجم العمود", - "table.save": "حفظ", - "table.sortAscending": "فرز بترتيب تصاعدي", - "table.sortDescending": "فرز بترتيب تنازلي", - "tag.actions": "الإجراءات", - "tag.hideButtonLabel": "إظهار أقل", - "tag.noTags": "بدون", - "tag.showAllButtonLabel": "عرض الكل ({tagCount, number})", - "toast.clearAll": "مسح الكل", - "toast.collapse": "طي", - "toast.showAll": "إظهار الكل" -} diff --git a/packages/@react-spectrum/s2-ai/intl/bg-BG.json b/packages/@react-spectrum/s2-ai/intl/bg-BG.json deleted file mode 100644 index e8c88d92877..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/bg-BG.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Действия", - "actionbar.actionsAvailable": "Налични действия.", - "actionbar.clearSelection": "Изчистване на избора", - "actionbar.selected": "{count, plural, =0 {Няма избрани} one {# избран} other {# избрани}}", - "actionbar.selectedAll": "Всички избрани", - "breadcrumbs.more": "Още елементи", - "button.pending": "недовършено", - "calendar.invalidSelection": "{selectedCount, plural, one {Избраната дата не е налична} other {Избраните дати не са налични}}.", - "combobox.noResults": "Няма резултати", - "contextualhelp.help": "Помощ", - "contextualhelp.info": "Информация", - "datepicker.endTime": "Краен час", - "datepicker.startTime": "Начален час", - "datepicker.time": "Време", - "dialog.alert": "Сигнал", - "dialog.dismiss": "Отхвърляне", - "dropzone.replaceMessage": "Пуснете файл за замяна", - "inlinealert.informative": "Информация", - "inlinealert.negative": "Грешка", - "inlinealert.notice": "Предупреждение", - "inlinealert.positive": "Успешно", - "label.(optional)": "(незадължително)", - "label.(required)": "(задължително)", - "menu.moreActions": "Повече действия", - "menu.unavailable": "Недостъпно, разгънете за подробности", - "notificationbadge.indicatorOnly": "Нова дейност", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Изберете…", - "picker.selectedCount": "{count, plural, =0 {Няма избрани елементи} one {# избран елемент} other {# избрани елемента}}", - "slider.maximum": "Максимум", - "slider.minimum": "Минимум", - "table.cancel": "Отказ", - "table.drag": "Плъзнете", - "table.editCell": "Редактиране на клетка", - "table.loading": "Зареждане...", - "table.loadingMore": "Зареждане на още...", - "table.resizeColumn": "Преоразмеряване на колона", - "table.save": "Запазване", - "table.sortAscending": "Възходящо сортиране", - "table.sortDescending": "Низходящо сортиране ", - "tag.actions": "Действия", - "tag.hideButtonLabel": "Показване на по-малко", - "tag.noTags": "Нито един", - "tag.showAllButtonLabel": "Показване на всички ({tagCount, number})", - "toast.clearAll": "Изчисти всички", - "toast.collapse": "Свиване", - "toast.showAll": "Покажи всички" -} diff --git a/packages/@react-spectrum/s2-ai/intl/cs-CZ.json b/packages/@react-spectrum/s2-ai/intl/cs-CZ.json deleted file mode 100644 index e16ea158b89..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/cs-CZ.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Akce", - "actionbar.actionsAvailable": "Dostupné akce.", - "actionbar.clearSelection": "Vymazat výběr", - "actionbar.selected": "Vybráno: { count }", - "actionbar.selectedAll": "Vybráno vše", - "breadcrumbs.more": "Další položky", - "button.pending": "čeká na vyřízení", - "calendar.invalidSelection": "{selectedCount, plural, one {Vybrané datum není} other {Vybraná data nejsou}} k dispozici.", - "combobox.noResults": "Žádné výsledky", - "contextualhelp.help": "Nápověda", - "contextualhelp.info": "Informace", - "datepicker.endTime": "Konečný čas", - "datepicker.startTime": "Počáteční čas", - "datepicker.time": "Čas", - "dialog.alert": "Výstraha", - "dialog.dismiss": "Odstranit", - "dropzone.replaceMessage": "Přetáhněte soubor k nahrazení", - "inlinealert.informative": "Informace", - "inlinealert.negative": "Chyba", - "inlinealert.notice": "Varování", - "inlinealert.positive": "Úspěch", - "label.(optional)": "(volitelně)", - "label.(required)": "(požadováno)", - "menu.moreActions": "Další akce", - "menu.unavailable": "Není k dispozici, rozbalením zobrazíte podrobnosti", - "notificationbadge.indicatorOnly": "Nová aktivita", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Vybrat…", - "picker.selectedCount": "{count, plural, =0 {Nevybrány žádné položky} one {Vybrána # položka} few {Vybrány # položky} other {Vybráno # položek}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Zrušit", - "table.drag": "Přetáhnout", - "table.editCell": "Upravit buňku", - "table.loading": "Načítání...", - "table.loadingMore": "Načítání dalších...", - "table.resizeColumn": "Změnit velikost sloupce", - "table.save": "Uložit", - "table.sortAscending": "Seřadit vzestupně", - "table.sortDescending": "Seřadit sestupně", - "tag.actions": "Akce", - "tag.hideButtonLabel": "Zobrazit méně", - "tag.noTags": "Žádný", - "tag.showAllButtonLabel": "Zobrazit vše ({tagCount, number})", - "toast.clearAll": "Smazat vše", - "toast.collapse": "Sbalit", - "toast.showAll": "Zobrazit vše" -} diff --git a/packages/@react-spectrum/s2-ai/intl/da-DK.json b/packages/@react-spectrum/s2-ai/intl/da-DK.json deleted file mode 100644 index 7c32d0692ee..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/da-DK.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Handlinger", - "actionbar.actionsAvailable": "Tilgængelige handlinger.", - "actionbar.clearSelection": "Ryd markering", - "actionbar.selected": "{count, plural, =0 {Ingen valgt} other {# valgt}}", - "actionbar.selectedAll": "Alle valgt", - "breadcrumbs.more": "Flere elementer", - "button.pending": "afventende", - "calendar.invalidSelection": "Valgte {selectedCount, plural, one {dato} other {datoer}} ikke ledige.", - "combobox.noResults": "Ingen resultater", - "contextualhelp.help": "Hjælp", - "contextualhelp.info": "Oplysninger", - "datepicker.endTime": "Sluttidspunkt", - "datepicker.startTime": "Starttidspunkt", - "datepicker.time": "Klokkeslæt", - "dialog.alert": "Advarsel", - "dialog.dismiss": "Luk", - "dropzone.replaceMessage": "Drop fil for at erstatte", - "inlinealert.informative": "Oplysninger", - "inlinealert.negative": "Fejl", - "inlinealert.notice": "Advarsel", - "inlinealert.positive": "Fuldført", - "label.(optional)": "(valgfrit)", - "label.(required)": "(obligatorisk)", - "menu.moreActions": "Flere handlinger", - "menu.unavailable": "Ikke tilgængelig, udvid for detaljer", - "notificationbadge.indicatorOnly": "Ny aktivitet", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Vælg…", - "picker.selectedCount": "{count, plural, =0 {Ingen elementer valgt} one {# element valgt} other {# elementer valgt}}", - "slider.maximum": "Maksimum", - "slider.minimum": "Minimum", - "table.cancel": "Annuller", - "table.drag": "Træk", - "table.editCell": "Rediger celle", - "table.loading": "Indlæser...", - "table.loadingMore": "Indlæser flere...", - "table.resizeColumn": "Tilpas størrelse på kolonne", - "table.save": "Gem", - "table.sortAscending": "Sorter stigende", - "table.sortDescending": "Sorter faldende", - "tag.actions": "Handlinger", - "tag.hideButtonLabel": "Vis mindre", - "tag.noTags": "Ingen", - "tag.showAllButtonLabel": "Vis alle ({tagCount, number})", - "toast.clearAll": "Ryd alle", - "toast.collapse": "Skjul", - "toast.showAll": "Vis alle" -} diff --git a/packages/@react-spectrum/s2-ai/intl/de-DE.json b/packages/@react-spectrum/s2-ai/intl/de-DE.json deleted file mode 100644 index 331ba998331..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/de-DE.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Aktionen", - "actionbar.actionsAvailable": "Aktionen verfügbar.", - "actionbar.clearSelection": "Auswahl löschen", - "actionbar.selected": "{count, plural, =0 {Nichts ausgewählt} one {# ausgewählt} other {# ausgewählt}}", - "actionbar.selectedAll": "Alles ausgewählt", - "breadcrumbs.more": "Weitere Elemente", - "button.pending": "Ausstehend", - "calendar.invalidSelection": "Ausgewählte(s) {selectedCount, plural, one {Datum} other {Daten}} nicht verfügbar.", - "combobox.noResults": "Keine Ergebnisse", - "contextualhelp.help": "Hilfe", - "contextualhelp.info": "Informationen", - "datepicker.endTime": "Endzeit", - "datepicker.startTime": "Startzeit", - "datepicker.time": "Uhrzeit", - "dialog.alert": "Warnhinweis", - "dialog.dismiss": "Schließen", - "dropzone.replaceMessage": "Datei zum Ersetzen ablegen", - "inlinealert.informative": "Informationen", - "inlinealert.negative": "Fehler", - "inlinealert.notice": "Warnung", - "inlinealert.positive": "Erfolg", - "label.(optional)": "(optional)", - "label.(required)": "(erforderlich)", - "menu.moreActions": "Mehr Aktionen", - "menu.unavailable": "Nicht verfügbar, für Details erweitern", - "notificationbadge.indicatorOnly": "Neue Aktivität", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Auswählen…", - "picker.selectedCount": "{count, plural, =0 {Keine Elemente ausgewählt} one {# Element ausgewählt} other {# Elemente ausgewählt}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Abbrechen", - "table.drag": "Ziehen", - "table.editCell": "Zelle bearbeiten", - "table.loading": "Laden...", - "table.loadingMore": "Mehr laden ...", - "table.resizeColumn": "Spaltengröße ändern", - "table.save": "Speichern", - "table.sortAscending": "Aufsteigend sortieren", - "table.sortDescending": "Absteigend sortieren", - "tag.actions": "Aktionen", - "tag.hideButtonLabel": "Weniger zeigen", - "tag.noTags": "Keine", - "tag.showAllButtonLabel": "Alle anzeigen ({tagCount, number})", - "toast.clearAll": "Alle löschen", - "toast.collapse": "Reduzieren", - "toast.showAll": "Alle anzeigen" -} diff --git a/packages/@react-spectrum/s2-ai/intl/el-GR.json b/packages/@react-spectrum/s2-ai/intl/el-GR.json deleted file mode 100644 index 5a4bbe0f93c..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/el-GR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Ενέργειες", - "actionbar.actionsAvailable": "Υπάρχουν διαθέσιμες ενέργειες.", - "actionbar.clearSelection": "Εκκαθάριση επιλογής", - "actionbar.selected": "{count, plural, =0 {Δεν επιλέχθηκε κανένα} one {# επιλεγμένο} other {# επιλεγμένα}}", - "actionbar.selectedAll": "Επιλέχθηκαν όλα", - "breadcrumbs.more": "Περισσότερα στοιχεία", - "button.pending": "σε εκκρεμότητα", - "calendar.invalidSelection": "{selectedCount, plural, one {Η επιλεγμένη ημερομηνία δεν είναι διαθέσιμη} other {Οι επιλεγμένες ημερομηνίες δεν είναι διαθέσιμες}}.", - "combobox.noResults": "Κανένα αποτέλεσμα", - "contextualhelp.help": "Βοήθεια", - "contextualhelp.info": "Πληροφορίες", - "datepicker.endTime": "Χρόνος λήξης", - "datepicker.startTime": "Ώρα έναρξης", - "datepicker.time": "Χρόνος", - "dialog.alert": "Ειδοποίηση", - "dialog.dismiss": "Απόρριψη", - "dropzone.replaceMessage": "Απόθεση αρχείου για αντικατάσταση", - "inlinealert.informative": "Πληροφορίες", - "inlinealert.negative": "Σφάλμα", - "inlinealert.notice": "Προειδοποίηση", - "inlinealert.positive": "Επιτυχία", - "label.(optional)": "(προαιρετικό)", - "label.(required)": "(απαιτείται)", - "menu.moreActions": "Περισσότερες ενέργειες", - "menu.unavailable": "Μη διαθέσιμο, ανάπτυξη για λεπτομέρειες", - "notificationbadge.indicatorOnly": "Νέα δραστηριότητα", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Επιλογή…", - "picker.selectedCount": "{count, plural, =0 {Δεν επιλέχθηκαν στοιχεία} one {Επιλέχθηκε # στοιχείο} other {Επιλέχθηκαν # στοιχεία}}", - "slider.maximum": "Μέγιστο", - "slider.minimum": "Ελάχιστο", - "table.cancel": "Ακύρωση", - "table.drag": "Μεταφορά", - "table.editCell": "Επεξεργασία κελιού", - "table.loading": "Φόρτωση...", - "table.loadingMore": "Φόρτωση περισσότερων...", - "table.resizeColumn": "Αλλαγή μεγέθους στήλης", - "table.save": "Αποθήκευση", - "table.sortAscending": "Ταξινόμηση κατά αύξουσα σειρά", - "table.sortDescending": "Ταξινόμηση κατά φθίνουσα σειρά", - "tag.actions": "Ενέργειες", - "tag.hideButtonLabel": "Εμφάνιση λιγότερων", - "tag.noTags": "Κανένα", - "tag.showAllButtonLabel": "Εμφάνιση όλων ({tagCount, number})", - "toast.clearAll": "Εκκαθάριση όλων", - "toast.collapse": "Σύμπτυξη", - "toast.showAll": "Εμφάνιση όλων" -} diff --git a/packages/@react-spectrum/s2-ai/intl/en-US.json b/packages/@react-spectrum/s2-ai/intl/en-US.json deleted file mode 100644 index 1a1e1570bae..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/en-US.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Actions", - "actionbar.actionsAvailable": "Actions available.", - "actionbar.clearSelection": "Clear selection", - "actionbar.selected": "{count, plural, =0 {None selected} other {# selected}}", - "actionbar.selectedAll": "All selected", - "breadcrumbs.more": "More items", - "button.pending": "pending", - "calendar.invalidSelection": "Selected {selectedCount, plural, one {date} other {dates}} unavailable.", - "combobox.noResults": "No results", - "contextualhelp.help": "Help", - "contextualhelp.info": "Information", - "datepicker.endTime": "End time", - "datepicker.startTime": "Start time", - "datepicker.time": "Time", - "dialog.alert": "Alert", - "dialog.dismiss": "Dismiss", - "dropzone.replaceMessage": "Drop file to replace", - "inlinealert.informative": "Information", - "inlinealert.negative": "Error", - "inlinealert.notice": "Warning", - "inlinealert.positive": "Success", - "label.(optional)": "(optional)", - "label.(required)": "(required)", - "menu.moreActions": "More actions", - "menu.unavailable": "Unavailable, expand for details", - "notificationbadge.indicatorOnly": "New activity", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Select…", - "picker.selectedCount": "{count, plural, =0 {No items selected} one {# item selected} other {# items selected}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Cancel", - "table.drag": "Drag", - "table.editCell": "Edit cell", - "table.loading": "Loading…", - "table.loadingMore": "Loading more…", - "table.resizeColumn": "Resize column", - "table.save": "Save", - "table.sortAscending": "Sort Ascending", - "table.sortDescending": "Sort Descending", - "tag.actions": "Actions", - "tag.hideButtonLabel": "Show less", - "tag.noTags": "None", - "tag.showAllButtonLabel": "Show all ({tagCount, number})", - "toast.clearAll": "Clear all", - "toast.collapse": "Collapse", - "toast.showAll": "Show all" -} diff --git a/packages/@react-spectrum/s2-ai/intl/es-ES.json b/packages/@react-spectrum/s2-ai/intl/es-ES.json deleted file mode 100644 index 04cacae4880..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/es-ES.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Acciones", - "actionbar.actionsAvailable": "Acciones disponibles.", - "actionbar.clearSelection": "Borrar selección", - "actionbar.selected": "{count, plural, =0 {Nada seleccionado} one {# seleccionado} other {# seleccionados}}", - "actionbar.selectedAll": "Todos seleccionados", - "breadcrumbs.more": "Más elementos", - "button.pending": "pendiente", - "calendar.invalidSelection": "{selectedCount, plural, one {La fecha seleccionada no está disponible} other {Las fechas seleccionadas no están disponibles}}.", - "combobox.noResults": "Sin resultados", - "contextualhelp.help": "Ayuda", - "contextualhelp.info": "Información", - "datepicker.endTime": "Hora de finalización", - "datepicker.startTime": "Hora de inicio", - "datepicker.time": "Hora", - "dialog.alert": "Alerta", - "dialog.dismiss": "Descartar", - "dropzone.replaceMessage": "Suelte el archivo para reemplazar", - "inlinealert.informative": "Información", - "inlinealert.negative": "Error", - "inlinealert.notice": "Advertencia", - "inlinealert.positive": "Éxito", - "label.(optional)": "(opcional)", - "label.(required)": "(obligatorio)", - "menu.moreActions": "Más acciones", - "menu.unavailable": "No disponible, ampliar para más detalles", - "notificationbadge.indicatorOnly": "Nueva actividad", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Seleccione…", - "picker.selectedCount": "{count, plural, =0 {Ningún elemento seleccionado} one {# elemento seleccionado} other {# elementos seleccionados}}", - "slider.maximum": "Máximo", - "slider.minimum": "Mínimo", - "table.cancel": "Cancelar", - "table.drag": "Arrastrar", - "table.editCell": "Editar celda", - "table.loading": "Cargando…", - "table.loadingMore": "Cargando más…", - "table.resizeColumn": "Cambiar el tamaño de la columna", - "table.save": "Guardar", - "table.sortAscending": "Orden ascendente", - "table.sortDescending": "Orden descendente", - "tag.actions": "Acciones", - "tag.hideButtonLabel": "Mostrar menos", - "tag.noTags": "Ninguno", - "tag.showAllButtonLabel": "Mostrar todo ({tagCount, number})", - "toast.clearAll": "Borrar todo", - "toast.collapse": "Contraer", - "toast.showAll": "Mostrar todo" -} diff --git a/packages/@react-spectrum/s2-ai/intl/et-EE.json b/packages/@react-spectrum/s2-ai/intl/et-EE.json deleted file mode 100644 index c5ef8d69641..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/et-EE.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Toimingud", - "actionbar.actionsAvailable": "Toimingud saadaval.", - "actionbar.clearSelection": "Puhasta valik", - "actionbar.selected": "{count, plural, =0 {Pole valitud} other {# valitud}}", - "actionbar.selectedAll": "Kõik valitud", - "breadcrumbs.more": "Veel üksusi", - "button.pending": "ootel", - "calendar.invalidSelection": "Valitud {selectedCount, plural, one {kuupäev} other {kuupäevad}} pole saadaval.", - "combobox.noResults": "Tulemusi pole", - "contextualhelp.help": "Spikker", - "contextualhelp.info": "Teave", - "datepicker.endTime": "Lõpuaeg", - "datepicker.startTime": "Algusaeg", - "datepicker.time": "Aeg", - "dialog.alert": "Teade", - "dialog.dismiss": "Lõpeta", - "dropzone.replaceMessage": "Kukuta fail asendamiseks", - "inlinealert.informative": "Teave", - "inlinealert.negative": "Viga", - "inlinealert.notice": "Hoiatus", - "inlinealert.positive": "Valmis", - "label.(optional)": "(valikuline)", - "label.(required)": "(nõutav)", - "menu.moreActions": "Veel toiminguid", - "menu.unavailable": "Pole kättesaadav, üksikasjade vaatamiseks laiendage", - "notificationbadge.indicatorOnly": "Uus tegevus", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Valige…", - "picker.selectedCount": "{count, plural, =0 {üksuseid pole valitud} one {# üksus valitud} other {# üksust valitud}}", - "slider.maximum": "Maksimaalne", - "slider.minimum": "Minimaalne", - "table.cancel": "Tühista", - "table.drag": "Lohista", - "table.editCell": "Muuda lahtrit", - "table.loading": "Laadimine...", - "table.loadingMore": "Laadi rohkem...", - "table.resizeColumn": "Muuda veeru suurust", - "table.save": "Salvesta", - "table.sortAscending": "Sordi kasvavalt", - "table.sortDescending": "Sordi kahanevalt", - "tag.actions": "Toimingud", - "tag.hideButtonLabel": "Kuva vähem", - "tag.noTags": "Puudub", - "tag.showAllButtonLabel": "Kuva kõik ({tagCount, number})", - "toast.clearAll": "Tühjenda kõik", - "toast.collapse": "Ahenda", - "toast.showAll": "Kuva kõik" -} diff --git a/packages/@react-spectrum/s2-ai/intl/fi-FI.json b/packages/@react-spectrum/s2-ai/intl/fi-FI.json deleted file mode 100644 index 06a7af7a2bd..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/fi-FI.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Toiminnot", - "actionbar.actionsAvailable": "Toiminnot käytettävissä.", - "actionbar.clearSelection": "Poista valinta", - "actionbar.selected": "{count, plural, =0 {Ei mitään valittu} other {# valittu}}", - "actionbar.selectedAll": "Kaikki valittu", - "breadcrumbs.more": "Lisää kohteita", - "button.pending": "odottaa", - "calendar.invalidSelection": "{selectedCount, plural, one {Valittu päivämäärä ei ole} other {Valitut päivämäärät eivät ole}} saatavilla.", - "combobox.noResults": "Ei tuloksia", - "contextualhelp.help": "Ohje", - "contextualhelp.info": "Tiedot", - "datepicker.endTime": "Päättymisaika", - "datepicker.startTime": "Alkamisaika", - "datepicker.time": "Aika", - "dialog.alert": "Hälytys", - "dialog.dismiss": "Hylkää", - "dropzone.replaceMessage": "Pudota korvaava tiedosto", - "inlinealert.informative": "Tiedot", - "inlinealert.negative": "Virhe", - "inlinealert.notice": "Varoitus", - "inlinealert.positive": "Onnistui", - "label.(optional)": "(valinnainen)", - "label.(required)": "(pakollinen)", - "menu.moreActions": "Lisää toimintoja", - "menu.unavailable": "Ei saatavilla, laajenna saadaksesi lisätietoja", - "notificationbadge.indicatorOnly": "Uusi toiminta", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Valitse…", - "picker.selectedCount": "{count, plural, =0 {Kohteita ei ole valittu} one {# kohde valittu} other {# kohdetta valittu}}", - "slider.maximum": "Maksimi", - "slider.minimum": "Minimi", - "table.cancel": "Peruuta", - "table.drag": "Vedä", - "table.editCell": "Muokkaa solua", - "table.loading": "Ladataan…", - "table.loadingMore": "Ladataan lisää…", - "table.resizeColumn": "Muuta sarakkeen kokoa", - "table.save": "Tallenna", - "table.sortAscending": "Lajittelujärjestys: nouseva", - "table.sortDescending": "Lajittelujärjestys: laskeva", - "tag.actions": "Toiminnot", - "tag.hideButtonLabel": "Näytä vähemmän", - "tag.noTags": "Ei mitään", - "tag.showAllButtonLabel": "Näytä kaikki ({tagCount, number})", - "toast.clearAll": "Tyhjennä kaikki", - "toast.collapse": "Pienennä", - "toast.showAll": "Näytä kaikki" -} diff --git a/packages/@react-spectrum/s2-ai/intl/fr-FR.json b/packages/@react-spectrum/s2-ai/intl/fr-FR.json deleted file mode 100644 index 67907cc37ce..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/fr-FR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Actions", - "actionbar.actionsAvailable": "Actions disponibles.", - "actionbar.clearSelection": "Supprimer la sélection", - "actionbar.selected": "{count, plural, =0 {Aucun élément sélectionné} one {# sélectionné} other {# sélectionnés}}", - "actionbar.selectedAll": "Toute la sélection", - "breadcrumbs.more": "Plus d’éléments", - "button.pending": "En attente", - "calendar.invalidSelection": "{selectedCount, plural, one {La date sélectionnée est indisponible} other {Les dates sélectionnées sont indisponibles}}.", - "combobox.noResults": "Aucun résultat", - "contextualhelp.help": "Aide", - "contextualhelp.info": "Informations", - "datepicker.endTime": "Heure de fin", - "datepicker.startTime": "Heure de début", - "datepicker.time": "Heure", - "dialog.alert": "Alerte", - "dialog.dismiss": "Rejeter", - "dropzone.replaceMessage": "Déposer le fichier à remplacer", - "inlinealert.informative": "Informations", - "inlinealert.negative": "Erreur", - "inlinealert.notice": "Avertissement", - "inlinealert.positive": "Succès", - "label.(optional)": "(facultatif)", - "label.(required)": "(requis)", - "menu.moreActions": "Autres actions", - "menu.unavailable": "Indisponible, développer pour plus de détails", - "notificationbadge.indicatorOnly": "Nouvelle activité", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Sélectionner…", - "picker.selectedCount": "{count, plural, =0 {Aucun élément sélectionné} one {# élément sélectionné} other {# éléments sélectionnés}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Annuler", - "table.drag": "Faire glisser", - "table.editCell": "Modifier la cellule", - "table.loading": "Chargement...", - "table.loadingMore": "Chargement supplémentaire...", - "table.resizeColumn": "Redimensionner la colonne", - "table.save": "Enregistrer", - "table.sortAscending": "Trier par ordre croissant", - "table.sortDescending": "Trier par ordre décroissant", - "tag.actions": "Actions", - "tag.hideButtonLabel": "Afficher moins", - "tag.noTags": "Aucun", - "tag.showAllButtonLabel": "Tout afficher ({tagCount, number})", - "toast.clearAll": "Tout effacer", - "toast.collapse": "Réduire", - "toast.showAll": "Tout afficher" -} diff --git a/packages/@react-spectrum/s2-ai/intl/he-IL.json b/packages/@react-spectrum/s2-ai/intl/he-IL.json deleted file mode 100644 index 4e20ed953c0..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/he-IL.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "פעולות", - "actionbar.actionsAvailable": "פעולות זמינות.", - "actionbar.clearSelection": "נקה בחירה", - "actionbar.selected": "{count, plural, =0 {לא בוצעה בחירה} one { # בחר} other {# נבחרו}}\",", - "actionbar.selectedAll": "כל הפריטים שנבחרו", - "breadcrumbs.more": "פריטים נוספים", - "button.pending": "ממתין ל", - "calendar.invalidSelection": "נבחר {selectedCount, plural, one {תאריך} other {תאריכים}} אינו זמין.", - "combobox.noResults": "אין תוצאות", - "contextualhelp.help": "עזרה", - "contextualhelp.info": "מידע", - "datepicker.endTime": "שעת סיום", - "datepicker.startTime": "שעת התחלה", - "datepicker.time": "זמן", - "dialog.alert": "התראה", - "dialog.dismiss": "התעלם", - "dropzone.replaceMessage": "שחרר את הקובץ להחלפה", - "inlinealert.informative": "מידע", - "inlinealert.negative": "שגיאה", - "inlinealert.notice": "אזהרה", - "inlinealert.positive": "הצלחה", - "label.(optional)": "(אופציונלי)", - "label.(required)": "(נדרש)", - "menu.moreActions": "פעולות נוספות", - "menu.unavailable": "לא זמין, הרחב לפרטים", - "notificationbadge.indicatorOnly": "פעילות חדשה", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "בחר…", - "picker.selectedCount": "{count, plural, =0 {לא נבחרו פריטים} one {פריט # נבחר} other {# פריטים נבחרו}}", - "slider.maximum": "מקסימום", - "slider.minimum": "מינימום", - "table.cancel": "ביטול", - "table.drag": "גרור", - "table.editCell": "עריכת תא", - "table.loading": "טוען...", - "table.loadingMore": "טוען עוד...", - "table.resizeColumn": "שנה את גודל העמודה", - "table.save": "שמירה", - "table.sortAscending": "מיין בסדר עולה", - "table.sortDescending": "מיין בסדר יורד", - "tag.actions": "פעולות", - "tag.hideButtonLabel": "הצג פחות", - "tag.noTags": "ללא", - "tag.showAllButtonLabel": "הצג הכל ({tagCount, number})", - "toast.clearAll": "נקה הכול", - "toast.collapse": "כווץ", - "toast.showAll": "הצג הכול" -} diff --git a/packages/@react-spectrum/s2-ai/intl/hr-HR.json b/packages/@react-spectrum/s2-ai/intl/hr-HR.json deleted file mode 100644 index 47c1d6efb7d..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/hr-HR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Radnje", - "actionbar.actionsAvailable": "Dostupne radnje.", - "actionbar.clearSelection": "Poništi odabir", - "actionbar.selected": "Odabrano: { count }", - "actionbar.selectedAll": "Sve odabrano", - "breadcrumbs.more": "Više stavki", - "button.pending": "u tijeku", - "calendar.invalidSelection": "{selectedCount, plural, one {Odabrani datum nije dostupan} other {Odabrani datumi nisu dostupni}}.", - "combobox.noResults": "Nema rezultata", - "contextualhelp.help": "Pomoć", - "contextualhelp.info": "Informacije", - "datepicker.endTime": "Vrijeme završetka", - "datepicker.startTime": "Vrijeme početka", - "datepicker.time": "Vrijeme", - "dialog.alert": "Upozorenje", - "dialog.dismiss": "Odbaci", - "dropzone.replaceMessage": "Ispustite datoteku za zamjenu", - "inlinealert.informative": "Informacije", - "inlinealert.negative": "Pogreška", - "inlinealert.notice": "Upozorenje", - "inlinealert.positive": "Uspješno", - "label.(optional)": "(opcionalno)", - "label.(required)": "(obvezno)", - "menu.moreActions": "Dodatne radnje", - "menu.unavailable": "Nije dostupno, proširi za detalje", - "notificationbadge.indicatorOnly": "Nova aktivnost", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Odaberite…", - "picker.selectedCount": "{count, plural, =0 {Nije odabrana nijedna stavka} one {Odabrana je # stavka} other {Odabrano je # stavki}}", - "slider.maximum": "Najviše", - "slider.minimum": "Najmanje", - "table.cancel": "Poništi", - "table.drag": "Povucite", - "table.editCell": "Uredi ćeliju", - "table.loading": "Učitavam...", - "table.loadingMore": "Učitavam još...", - "table.resizeColumn": "Promijeni veličinu stupca", - "table.save": "Spremi", - "table.sortAscending": "Sortiraj uzlazno", - "table.sortDescending": "Sortiraj silazno", - "tag.actions": "Radnje", - "tag.hideButtonLabel": "Prikaži manje", - "tag.noTags": "Nema", - "tag.showAllButtonLabel": "Prikaži sve ({tagCount, number})", - "toast.clearAll": "Poništi sve", - "toast.collapse": "Sažmi", - "toast.showAll": "Prikaži sve" -} diff --git a/packages/@react-spectrum/s2-ai/intl/hu-HU.json b/packages/@react-spectrum/s2-ai/intl/hu-HU.json deleted file mode 100644 index 96421940d0b..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/hu-HU.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Műveletek", - "actionbar.actionsAvailable": "Műveletek állnak rendelkezésre.", - "actionbar.clearSelection": "Kijelölés törlése", - "actionbar.selected": "{count, plural, =0 {Egy sincs kijelölve} other {# kijelölve}}", - "actionbar.selectedAll": "Mind kijelölve", - "breadcrumbs.more": "További elemek", - "button.pending": "függőben levő", - "calendar.invalidSelection": "A kijelölt {selectedCount, plural, one {dátum nem érhető el} other {dátumok nem érhetőek el}}.", - "combobox.noResults": "Nincsenek találatok", - "contextualhelp.help": "Súgó", - "contextualhelp.info": "Információ", - "datepicker.endTime": "Befejezés ideje", - "datepicker.startTime": "Kezdés ideje", - "datepicker.time": "Idő", - "dialog.alert": "Figyelmeztetés", - "dialog.dismiss": "Elutasítás", - "dropzone.replaceMessage": "Ejtse le a fájlt a cseréhez", - "inlinealert.informative": "Információ", - "inlinealert.negative": "Hiba", - "inlinealert.notice": "Figyelmeztetés", - "inlinealert.positive": "Siker", - "label.(optional)": "(opcionális)", - "label.(required)": "(kötelező)", - "menu.moreActions": "További lehetőségek", - "menu.unavailable": "Nem érhető el, a részletekért bontsa ki", - "notificationbadge.indicatorOnly": "Új tevékenység", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Kiválasztás…", - "picker.selectedCount": "{count, plural, =0 {Nincs kijelölve elem} one {# elem kijelölve} other {# elem kijelölve}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Mégse", - "table.drag": "Húzás", - "table.editCell": "Cella szerkesztése", - "table.loading": "Betöltés folyamatban…", - "table.loadingMore": "Továbbiak betöltése folyamatban…", - "table.resizeColumn": "Oszlop átméretezése", - "table.save": "Mentés", - "table.sortAscending": "Növekvő rendezés", - "table.sortDescending": "Csökkenő rendezés", - "tag.actions": "Műveletek", - "tag.hideButtonLabel": "Mutass kevesebbet", - "tag.noTags": "Egyik sem", - "tag.showAllButtonLabel": "Az összes megjelenítése ({tagCount, number})", - "toast.clearAll": "Összes törlése", - "toast.collapse": "Összecsukás", - "toast.showAll": "Összes megjelenítése" -} diff --git a/packages/@react-spectrum/s2-ai/intl/it-IT.json b/packages/@react-spectrum/s2-ai/intl/it-IT.json deleted file mode 100644 index f3a63076f15..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/it-IT.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Azioni", - "actionbar.actionsAvailable": "Azioni disponibili.", - "actionbar.clearSelection": "Annulla selezione", - "actionbar.selected": "{count, plural, =0 {Nessuno selezionato} one {# selezionato} other {# selezionati}}", - "actionbar.selectedAll": "Tutti selezionati", - "breadcrumbs.more": "Altri elementi", - "button.pending": "in sospeso", - "calendar.invalidSelection": "{selectedCount, plural, one {Data selezionata non disponibile} other {Date selezionate non disponibili}}.", - "combobox.noResults": "Nessun risultato", - "contextualhelp.help": "Aiuto", - "contextualhelp.info": "Informazioni", - "datepicker.endTime": "Ora di fine", - "datepicker.startTime": "Ora di inizio", - "datepicker.time": "Ora", - "dialog.alert": "Avviso", - "dialog.dismiss": "Ignora", - "dropzone.replaceMessage": "Rilascia il file da sostituire", - "inlinealert.informative": "Informazioni", - "inlinealert.negative": "Errore", - "inlinealert.notice": "Avvertenza", - "inlinealert.positive": "Operazione riuscita", - "label.(optional)": "(facoltativo)", - "label.(required)": "(obbligatorio)", - "menu.moreActions": "Altre azioni", - "menu.unavailable": "Non disponibile, espandi per i dettagli", - "notificationbadge.indicatorOnly": "Nuova attività", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Seleziona…", - "picker.selectedCount": "{count, plural, =0 {Nessun elemento selezionato} one {# elemento selezionato} other {# elementi selezionati}}", - "slider.maximum": "Massimo", - "slider.minimum": "Minimo", - "table.cancel": "Annulla", - "table.drag": "Trascina", - "table.editCell": "Modifica cella", - "table.loading": "Caricamento...", - "table.loadingMore": "Caricamento altri...", - "table.resizeColumn": "Ridimensiona colonna", - "table.save": "Salva", - "table.sortAscending": "Ordinamento crescente", - "table.sortDescending": "Ordinamento decrescente", - "tag.actions": "Azioni", - "tag.hideButtonLabel": "Mostra meno", - "tag.noTags": "Nessuno", - "tag.showAllButtonLabel": "Mostra tutto ({tagCount, number})", - "toast.clearAll": "Cancella tutto", - "toast.collapse": "Comprimi", - "toast.showAll": "Mostra tutto" -} diff --git a/packages/@react-spectrum/s2-ai/intl/ja-JP.json b/packages/@react-spectrum/s2-ai/intl/ja-JP.json deleted file mode 100644 index 7b5481cd72c..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/ja-JP.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "アクション", - "actionbar.actionsAvailable": "アクションを利用できます。", - "actionbar.clearSelection": "選択をクリア", - "actionbar.selected": "{count, plural, =0 {選択されていません} other {# 個を選択しました}}", - "actionbar.selectedAll": "すべてを選択", - "breadcrumbs.more": "その他の項目", - "button.pending": "保留", - "calendar.invalidSelection": "選択した{selectedCount, plural, one {日付} other {日付}}は使用できません。", - "combobox.noResults": "結果なし", - "contextualhelp.help": "ヘルプ", - "contextualhelp.info": "情報", - "datepicker.endTime": "終了時刻", - "datepicker.startTime": "開始時刻", - "datepicker.time": "時刻", - "dialog.alert": "アラート", - "dialog.dismiss": "閉じる", - "dropzone.replaceMessage": "ファイルをドロップして置換", - "inlinealert.informative": "情報", - "inlinealert.negative": "エラー", - "inlinealert.notice": "警告", - "inlinealert.positive": "成功", - "label.(optional)": "(オプション)", - "label.(required)": "(必須)", - "menu.moreActions": "その他のアクション", - "menu.unavailable": "利用できません。詳しくは、展開して確認してください", - "notificationbadge.indicatorOnly": "新規アクティビティ", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "選択…", - "picker.selectedCount": "{count, plural, =0 {項目が選択されていません} one {# 項目を選択しました} other {# 項目を選択しました}}", - "slider.maximum": "最大", - "slider.minimum": "最小", - "table.cancel": "キャンセル", - "table.drag": "ドラッグ", - "table.editCell": "セルを編集", - "table.loading": "読み込み中...", - "table.loadingMore": "さらに読み込み中...", - "table.resizeColumn": "列幅を変更", - "table.save": "保存", - "table.sortAscending": "昇順に並べ替え", - "table.sortDescending": "降順に並べ替え", - "tag.actions": "アクション", - "tag.hideButtonLabel": "表示を減らす", - "tag.noTags": "なし", - "tag.showAllButtonLabel": "すべての ({tagCount, number}) を表示", - "toast.clearAll": "すべてクリア", - "toast.collapse": "折りたたむ", - "toast.showAll": "すべてを表示" -} diff --git a/packages/@react-spectrum/s2-ai/intl/ko-KR.json b/packages/@react-spectrum/s2-ai/intl/ko-KR.json deleted file mode 100644 index ed1cdefd539..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/ko-KR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "액션", - "actionbar.actionsAvailable": "사용 가능한 액션", - "actionbar.clearSelection": "선택 항목 지우기", - "actionbar.selected": "{count, plural, =0 {선택된 항목 없음} other {#개 선택됨}}", - "actionbar.selectedAll": "모두 선택됨", - "breadcrumbs.more": "기타 항목", - "button.pending": "보류 중", - "calendar.invalidSelection": "선택한 {selectedCount, plural, one {일자를} other {일자를}} 사용할 수 없습니다.", - "combobox.noResults": "결과 없음", - "contextualhelp.help": "도움말", - "contextualhelp.info": "정보", - "datepicker.endTime": "종료 시간", - "datepicker.startTime": "시작 시간", - "datepicker.time": "시간", - "dialog.alert": "경고", - "dialog.dismiss": "무시", - "dropzone.replaceMessage": "파일을 드롭하여 바꾸기", - "inlinealert.informative": "정보", - "inlinealert.negative": "오류", - "inlinealert.notice": "경고", - "inlinealert.positive": "성공", - "label.(optional)": "(선택 사항)", - "label.(required)": "(필수 사항)", - "menu.moreActions": "기타 액션", - "menu.unavailable": "사용할 수 없음, 자세히 보려면 펼치기", - "notificationbadge.indicatorOnly": "새로운 활동", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "선택…", - "picker.selectedCount": "{count, plural, =0 {선택한 항목 없음} one {#개 항목 선택됨} other {#개 항목 선택됨}}", - "slider.maximum": "최대", - "slider.minimum": "최소", - "table.cancel": "취소", - "table.drag": "드래그", - "table.editCell": "셀 편집", - "table.loading": "로드 중…", - "table.loadingMore": "추가 로드 중…", - "table.resizeColumn": "열 크기 조정", - "table.save": "저장", - "table.sortAscending": "오름차순 정렬", - "table.sortDescending": "내림차순 정렬", - "tag.actions": "액션", - "tag.hideButtonLabel": "간략히 보기", - "tag.noTags": "없음", - "tag.showAllButtonLabel": "모두 표시 ({tagCount, number})", - "toast.clearAll": "모두 지우기", - "toast.collapse": "접기", - "toast.showAll": "모두 표시" -} diff --git a/packages/@react-spectrum/s2-ai/intl/lt-LT.json b/packages/@react-spectrum/s2-ai/intl/lt-LT.json deleted file mode 100644 index 14a5de70039..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/lt-LT.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Veiksmai", - "actionbar.actionsAvailable": "Galimi veiksmai.", - "actionbar.clearSelection": "Išvalyti pasirinkimą", - "actionbar.selected": "Pasirinkta: {count}", - "actionbar.selectedAll": "Pasirinkta viskas", - "breadcrumbs.more": "Daugiau elementų", - "button.pending": "laukiama", - "calendar.invalidSelection": "{selectedCount, plural, one {Datos} other {Datų}} pasirinkimas negalimas.", - "combobox.noResults": "Rezultatų nėra", - "contextualhelp.help": "Žinynas", - "contextualhelp.info": "Informacija", - "datepicker.endTime": "Pabaigos laikas", - "datepicker.startTime": "Pradžios laikas", - "datepicker.time": "Laikas", - "dialog.alert": "Įspėjimas", - "dialog.dismiss": "Atmesti", - "dropzone.replaceMessage": "Pašalinkite failą, kad pakeistumėte", - "inlinealert.informative": "Informacija", - "inlinealert.negative": "Klaida", - "inlinealert.notice": "Įspėjimas", - "inlinealert.positive": "Sėkmingai", - "label.(optional)": "(pasirenkama)", - "label.(required)": "(privaloma)", - "menu.moreActions": "Daugiau veiksmų", - "menu.unavailable": "Nepasiekiama, norėdami gauti daugiau informacijos, išskleiskite", - "notificationbadge.indicatorOnly": "Nauja veikla", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Pasirinkite…", - "picker.selectedCount": "{count, plural, =0 {Nepasirinktas nė vienas elementas} one {Pasirinktas # elementas} other {Pasirinkta elementų: #}}", - "slider.maximum": "Daugiausia", - "slider.minimum": "Mažiausia", - "table.cancel": "Atšaukti", - "table.drag": "Vilkti", - "table.editCell": "Redaguoti langelį", - "table.loading": "Įkeliama...", - "table.loadingMore": "Įkeliama daugiau...", - "table.resizeColumn": "Keisti stulpelio dydį", - "table.save": "Įrašyti", - "table.sortAscending": "Rikiuoti didėjimo tvarka", - "table.sortDescending": "Rikiuoti mažėjimo tvarka", - "tag.actions": "Veiksmai", - "tag.hideButtonLabel": "Rodyti mažiau", - "tag.noTags": "Nėra", - "tag.showAllButtonLabel": "Rodyti viską ({tagCount, number})", - "toast.clearAll": "Išvalyti viską", - "toast.collapse": "Sutraukti", - "toast.showAll": "Rodyti viską" -} diff --git a/packages/@react-spectrum/s2-ai/intl/lv-LV.json b/packages/@react-spectrum/s2-ai/intl/lv-LV.json deleted file mode 100644 index ac009435241..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/lv-LV.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Darbības", - "actionbar.actionsAvailable": "Pieejamas darbības.", - "actionbar.clearSelection": "Notīrīt atlasi", - "actionbar.selected": "{count, plural, =0 {Nav atlasīts nekas} other {Atlasīts(-i): #}}", - "actionbar.selectedAll": "Atlasīts viss", - "breadcrumbs.more": "Vairāk vienumu", - "button.pending": "gaida", - "calendar.invalidSelection": "Atlasītais(-ie) {selectedCount, plural, one {date} other {dates}} nav pieejams(-i).", - "combobox.noResults": "Nav rezultātu", - "contextualhelp.help": "Palīdzība", - "contextualhelp.info": "Informācija", - "datepicker.endTime": "Beigu laiks", - "datepicker.startTime": "Sākuma laiks", - "datepicker.time": "Laiks", - "dialog.alert": "Brīdinājums", - "dialog.dismiss": "Nerādīt", - "dropzone.replaceMessage": "Lai aizstātu, nometiet failu", - "inlinealert.informative": "Informācija", - "inlinealert.negative": "Kļūda", - "inlinealert.notice": "Brīdinājums", - "inlinealert.positive": "Izdevās", - "label.(optional)": "(neobligāti)", - "label.(required)": "(obligāti)", - "menu.moreActions": "Citas darbības", - "menu.unavailable": "Nav pieejams, izvērsiet, lai skatītu sīkāku informāciju", - "notificationbadge.indicatorOnly": "Jauna aktivitāte", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Izvēlēties…", - "picker.selectedCount": "{count, plural, =0 {Nav atlasīts neviens vienums} one {# vienums atlasīts} other {# ieraksti vienumi}}", - "slider.maximum": "Maksimālā vērtība", - "slider.minimum": "Minimālā vērtība", - "table.cancel": "Atcelt", - "table.drag": "Vilkšana", - "table.editCell": "Rediģēt šūnu", - "table.loading": "Notiek ielāde...", - "table.loadingMore": "Tiek ielādēts vēl...", - "table.resizeColumn": "Mainīt kolonnas lielumu", - "table.save": "Saglabāt", - "table.sortAscending": "Kārtot augošā secībā", - "table.sortDescending": "Kārtot dilstošā secībā", - "tag.actions": "Darbības", - "tag.hideButtonLabel": "Rādīt mazāk", - "tag.noTags": "Nav", - "tag.showAllButtonLabel": "Rādīt visu ({tagCount, number})", - "toast.clearAll": "Notīrīt visu", - "toast.collapse": "Sakļaut", - "toast.showAll": "Rādīt visu" -} diff --git a/packages/@react-spectrum/s2-ai/intl/nb-NO.json b/packages/@react-spectrum/s2-ai/intl/nb-NO.json deleted file mode 100644 index 5a0cac5d422..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/nb-NO.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Handlinger", - "actionbar.actionsAvailable": "Tilgjengelige handlinger.", - "actionbar.clearSelection": "Tøm utvalg", - "actionbar.selected": "Valde element: {count}", - "actionbar.selectedAll": "Alle er valgt", - "breadcrumbs.more": "Flere elementer", - "button.pending": "avventer", - "calendar.invalidSelection": "Valgt(e) {selectedCount, plural, one {dato} other {datoer}} er utilgjengelig.", - "combobox.noResults": "Ingen resultater", - "contextualhelp.help": "Hjelp", - "contextualhelp.info": "Informasjon", - "datepicker.endTime": "Sluttid", - "datepicker.startTime": "Starttid", - "datepicker.time": "Tid", - "dialog.alert": "Varsel", - "dialog.dismiss": "Lukk", - "dropzone.replaceMessage": "Slipp filen for å erstatte", - "inlinealert.informative": "Informasjon", - "inlinealert.negative": "Feil", - "inlinealert.notice": "Advarsel", - "inlinealert.positive": "Vellykket", - "label.(optional)": "(valgfritt)", - "label.(required)": "(obligatorisk)", - "menu.moreActions": "Flere handlinger", - "menu.unavailable": "Utilgjengelig, utvid for detaljer", - "notificationbadge.indicatorOnly": "Ny aktivitet", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Velg …", - "picker.selectedCount": "{count, plural, =0 {Ingen elementer er valgt} one {# element er valgt} other {# elementer er valgt}}", - "slider.maximum": "Maksimum", - "slider.minimum": "Minimum", - "table.cancel": "Avbryt", - "table.drag": "Dra", - "table.editCell": "Rediger celle", - "table.loading": "Laster inn...", - "table.loadingMore": "Laster inn flere...", - "table.resizeColumn": "Endre størrelse på kolonne", - "table.save": "Lagre", - "table.sortAscending": "Sorter stigende", - "table.sortDescending": "Sorter synkende", - "tag.actions": "Handlinger", - "tag.hideButtonLabel": "Vis mindre", - "tag.noTags": "Ingen", - "tag.showAllButtonLabel": "Vis alle ({tagCount, number})", - "toast.clearAll": "Fjern alle", - "toast.collapse": "Skjul", - "toast.showAll": "Vis alle" -} diff --git a/packages/@react-spectrum/s2-ai/intl/nl-NL.json b/packages/@react-spectrum/s2-ai/intl/nl-NL.json deleted file mode 100644 index b5efe3224ae..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/nl-NL.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Acties", - "actionbar.actionsAvailable": "Acties beschikbaar.", - "actionbar.clearSelection": "Selectie wissen", - "actionbar.selected": "{count, plural, =0 {Niets geselecteerd} other {# geselecteerd}}", - "actionbar.selectedAll": "Alles geselecteerd", - "breadcrumbs.more": "Meer items", - "button.pending": "in behandeling", - "calendar.invalidSelection": "Geselecteerde {selectedCount, plural, one {datum} other {datums}} niet beschikbaar.", - "combobox.noResults": "Geen resultaten", - "contextualhelp.help": "Help", - "contextualhelp.info": "Informatie", - "datepicker.endTime": "Eindtijd", - "datepicker.startTime": "Starttijd", - "datepicker.time": "Tijd", - "dialog.alert": "Melding", - "dialog.dismiss": "Negeren", - "dropzone.replaceMessage": "Bestand neerzetten om te vervangen", - "inlinealert.informative": "Informatie", - "inlinealert.negative": "Fout", - "inlinealert.notice": "Waarschuwing", - "inlinealert.positive": "Geslaagd", - "label.(optional)": "(optioneel)", - "label.(required)": "(vereist)", - "menu.moreActions": "Meer handelingen", - "menu.unavailable": "Niet beschikbaar, uitvouwen voor meer informatie", - "notificationbadge.indicatorOnly": "Nieuwe activiteit", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Selecteren…", - "picker.selectedCount": "{count, plural, =0 {Geen items geselecteerd} one {# item geselecteerd} other {# items geselecteerd}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Annuleren", - "table.drag": "Slepen", - "table.editCell": "Cel bewerken", - "table.loading": "Laden...", - "table.loadingMore": "Meer laden...", - "table.resizeColumn": "Kolomgrootte wijzigen", - "table.save": "Opslaan", - "table.sortAscending": "Oplopend sorteren", - "table.sortDescending": "Aflopend sorteren", - "tag.actions": "Acties", - "tag.hideButtonLabel": "Minder weergeven", - "tag.noTags": "Geen", - "tag.showAllButtonLabel": "Alles tonen ({tagCount, number})", - "toast.clearAll": "Alles wissen", - "toast.collapse": "Samenvouwen", - "toast.showAll": "Alles weergeven" -} diff --git a/packages/@react-spectrum/s2-ai/intl/pl-PL.json b/packages/@react-spectrum/s2-ai/intl/pl-PL.json deleted file mode 100644 index f66771ac302..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/pl-PL.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Działania", - "actionbar.actionsAvailable": "Dostępne działania.", - "actionbar.clearSelection": "Wyczyść zaznaczenie", - "actionbar.selected": "Zaznaczono: {count}", - "actionbar.selectedAll": "Wszystkie zaznaczone", - "breadcrumbs.more": "Więcej elementów", - "button.pending": "oczekujące", - "calendar.invalidSelection": "{selectedCount, plural, one {Wybrana data jest niedostępna} other {Wybrane daty są niedostępne}}.", - "combobox.noResults": "Brak wyników", - "contextualhelp.help": "Pomoc", - "contextualhelp.info": "Informacja", - "datepicker.endTime": "Godzina końcowa", - "datepicker.startTime": "Godzina początkowa", - "datepicker.time": "Godzina", - "dialog.alert": "Ostrzeżenie", - "dialog.dismiss": "Zignoruj", - "dropzone.replaceMessage": "Upuść plik, aby zastąpić", - "inlinealert.informative": "Informacja", - "inlinealert.negative": "Błąd", - "inlinealert.notice": "Ostrzeżenie", - "inlinealert.positive": "Powodzenie", - "label.(optional)": "(opcjonalne)", - "label.(required)": "(wymagane)", - "menu.moreActions": "Więcej akcji", - "menu.unavailable": "Niedostępne, rozwiń, aby zobaczyć szczegóły", - "notificationbadge.indicatorOnly": "Nowa aktywność", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Zaznacz…", - "picker.selectedCount": "{count, plural, =0 {Nie zaznaczono żadnych elementów} one {# zaznaczony element} few {# zaznaczone elementy} many {# zaznaczonych elementów} other {# zaznaczonych elementów}}", - "slider.maximum": "Maksimum", - "slider.minimum": "Minimum", - "table.cancel": "Anuluj", - "table.drag": "Przeciągnij", - "table.editCell": "Edytuj komórkę", - "table.loading": "Wczytywanie...", - "table.loadingMore": "Wczytywanie większej liczby...", - "table.resizeColumn": "Zmień rozmiar kolumny", - "table.save": "Zapisz", - "table.sortAscending": "Sortuj rosnąco", - "table.sortDescending": "Sortuj malejąco", - "tag.actions": "Działania", - "tag.hideButtonLabel": "Wyświetl mniej", - "tag.noTags": "Brak", - "tag.showAllButtonLabel": "Pokaż wszystko ({tagCount, number})", - "toast.clearAll": "Wyczyść wszystko", - "toast.collapse": "Zwiń", - "toast.showAll": "Pokaż wszystko" -} diff --git a/packages/@react-spectrum/s2-ai/intl/pt-BR.json b/packages/@react-spectrum/s2-ai/intl/pt-BR.json deleted file mode 100644 index fc920093184..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/pt-BR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Ações", - "actionbar.actionsAvailable": "Ações disponíveis.", - "actionbar.clearSelection": "Limpar seleção", - "actionbar.selected": "{count, plural, =0 {Nenhum selecionado} one {# selecionado} other {# selecionados}}", - "actionbar.selectedAll": "Todos selecionados", - "breadcrumbs.more": "Mais itens", - "button.pending": "pendente", - "calendar.invalidSelection": "{selectedCount, plural, one {Data} other {Datas}} selecionada(s) indisponível(is).", - "combobox.noResults": "Nenhum resultado", - "contextualhelp.help": "Ajuda", - "contextualhelp.info": "Informações", - "datepicker.endTime": "Hora final", - "datepicker.startTime": "Hora inicial", - "datepicker.time": "Hora", - "dialog.alert": "Alerta", - "dialog.dismiss": "Descartar", - "dropzone.replaceMessage": "Solte o arquivo para substituir", - "inlinealert.informative": "Informações", - "inlinealert.negative": "Erro", - "inlinealert.notice": "Aviso", - "inlinealert.positive": "Sucesso", - "label.(optional)": "(opcional)", - "label.(required)": "(obrigatório)", - "menu.moreActions": "Mais ações", - "menu.unavailable": "Indisponível. Expanda para ver os detalhes", - "notificationbadge.indicatorOnly": "Nova atividade", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Selecionar…", - "picker.selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}", - "slider.maximum": "Máximo", - "slider.minimum": "Mínimo", - "table.cancel": "Cancelar", - "table.drag": "Arraste", - "table.editCell": "Editar célula", - "table.loading": "Carregando...", - "table.loadingMore": "Carregando mais...", - "table.resizeColumn": "Redimensionar coluna", - "table.save": "Salvar", - "table.sortAscending": "Ordenar por ordem crescente", - "table.sortDescending": "Ordenar por ordem decrescente", - "tag.actions": "Ações", - "tag.hideButtonLabel": "Mostrar menos", - "tag.noTags": "Nenhum", - "tag.showAllButtonLabel": "Mostrar tudo ({tagCount, number})", - "toast.clearAll": "Limpar tudo", - "toast.collapse": "Recolher", - "toast.showAll": "Mostrar tudo" -} diff --git a/packages/@react-spectrum/s2-ai/intl/pt-PT.json b/packages/@react-spectrum/s2-ai/intl/pt-PT.json deleted file mode 100644 index 0c309cd582e..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/pt-PT.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Ações", - "actionbar.actionsAvailable": "Ações disponíveis.", - "actionbar.clearSelection": "Limpar seleção", - "actionbar.selected": "{count, plural, =0 {Nenhum selecionado} one {# selecionado} other {# selecionados}}", - "actionbar.selectedAll": "Tudo selecionado", - "breadcrumbs.more": "Mais artigos", - "button.pending": "pendente", - "calendar.invalidSelection": "A(s) {selectedCount, plural, one {data} other {datas}} selecionada(s) não está(ão) disponível/disponível(eis).", - "combobox.noResults": "Sem resultados", - "contextualhelp.help": "Ajuda", - "contextualhelp.info": "Informação", - "datepicker.endTime": "Terminar tempo", - "datepicker.startTime": "Iniciar tempo", - "datepicker.time": "Tempo", - "dialog.alert": "Alerta", - "dialog.dismiss": "Dispensar", - "dropzone.replaceMessage": "Largar ficheiro para substituir", - "inlinealert.informative": "Informação", - "inlinealert.negative": "Erro", - "inlinealert.notice": "Aviso", - "inlinealert.positive": "Sucesso", - "label.(optional)": "(opcional)", - "label.(required)": "(obrigatório)", - "menu.moreActions": "Mais ações", - "menu.unavailable": "Indisponível, expandir para mais detalhes", - "notificationbadge.indicatorOnly": "Nova atividade", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Selecionar…", - "picker.selectedCount": "{count, plural, =0 {Nenhum item selecionado} one {# item selecionado} other {# itens selecionados}}.", - "slider.maximum": "Máximo", - "slider.minimum": "Mínimo", - "table.cancel": "Cancelar", - "table.drag": "Arrastar", - "table.editCell": "Editar célula", - "table.loading": "A carregar...", - "table.loadingMore": "A carregar mais...", - "table.resizeColumn": "Redimensionar coluna", - "table.save": "Guardar", - "table.sortAscending": "Ordenar por ordem ascendente", - "table.sortDescending": "Ordenar por ordem decrescente", - "tag.actions": "Ações", - "tag.hideButtonLabel": "Mostrar menos", - "tag.noTags": "Nenhum", - "tag.showAllButtonLabel": "Mostrar tudo ({tagCount, number})", - "toast.clearAll": "Limpar tudo", - "toast.collapse": "Colapsar", - "toast.showAll": "Mostrar tudo" -} diff --git a/packages/@react-spectrum/s2-ai/intl/ro-RO.json b/packages/@react-spectrum/s2-ai/intl/ro-RO.json deleted file mode 100644 index a194f3dd837..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/ro-RO.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Acțiuni", - "actionbar.actionsAvailable": "Acțiuni disponibile.", - "actionbar.clearSelection": "Goliți selecția", - "actionbar.selected": "{count, plural, =0 {Niciunul selectat} one { # selectat} other {# selectate}}", - "actionbar.selectedAll": "Toate elementele selectate", - "breadcrumbs.more": "Mai multe articole", - "button.pending": "în așteptare", - "calendar.invalidSelection": "{selectedCount, plural, one {Data selectată nu este disponibilă} other {Datele selectate nu sunt disponibile}}.", - "combobox.noResults": "Niciun rezultat", - "contextualhelp.help": "Ajutor", - "contextualhelp.info": "Informații", - "datepicker.endTime": "Ora de sfârșit", - "datepicker.startTime": "Ora de început", - "datepicker.time": "Ora", - "dialog.alert": "Alertă", - "dialog.dismiss": "Revocare", - "dropzone.replaceMessage": "Plasați fișierul pentru a înlocui", - "inlinealert.informative": "Informații", - "inlinealert.negative": "Eroare", - "inlinealert.notice": "Avertisment", - "inlinealert.positive": "Succes", - "label.(optional)": "(opţional)", - "label.(required)": "(obligatoriu)", - "menu.moreActions": "Mai multe acțiuni", - "menu.unavailable": "Indisponibil, extindeți pentru detalii", - "notificationbadge.indicatorOnly": "Activitate nouă", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Selectați…", - "picker.selectedCount": "{count, plural, =0 {Niciun articol selectat} one {# articol selectat} other {# articole selectate}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Anulare", - "table.drag": "Trageți", - "table.editCell": "Editați celula", - "table.loading": "Se încarcă...", - "table.loadingMore": "Se încarcă mai multe...", - "table.resizeColumn": "Redimensionați coloana", - "table.save": "Salvați", - "table.sortAscending": "Sortați crescător", - "table.sortDescending": "Sortați descrescător", - "tag.actions": "Acțiuni", - "tag.hideButtonLabel": "Se afișează mai puțin", - "tag.noTags": "Niciuna", - "tag.showAllButtonLabel": "Se afișează tot ({tagCount, number})", - "toast.clearAll": "Goliți tot", - "toast.collapse": "Restrângeți", - "toast.showAll": "Afișați tot" -} diff --git a/packages/@react-spectrum/s2-ai/intl/ru-RU.json b/packages/@react-spectrum/s2-ai/intl/ru-RU.json deleted file mode 100644 index 1548b59d0b0..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/ru-RU.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Действия", - "actionbar.actionsAvailable": "Действия доступны.", - "actionbar.clearSelection": "Очистить выбор", - "actionbar.selected": "{count, plural, =0 {Не выбрано} other {Выбрано #}}", - "actionbar.selectedAll": "Выбрано все", - "breadcrumbs.more": "Дополнительные элементы", - "button.pending": "в ожидании", - "calendar.invalidSelection": "{selectedCount, plural, one {Выбранная дата недоступна} other {Выбранные даты недоступны}}.", - "combobox.noResults": "Результаты отсутствуют", - "contextualhelp.help": "Справка", - "contextualhelp.info": "Информация", - "datepicker.endTime": "Время окончания", - "datepicker.startTime": "Время начала", - "datepicker.time": "Время", - "dialog.alert": "Предупреждение", - "dialog.dismiss": "Пропустить", - "dropzone.replaceMessage": "Перетащите файл для замены", - "inlinealert.informative": "Информация", - "inlinealert.negative": "Ошибка", - "inlinealert.notice": "Предупреждение", - "inlinealert.positive": "Успешно", - "label.(optional)": "(дополнительно)", - "label.(required)": "(обязательно)", - "menu.moreActions": "Дополнительные действия", - "menu.unavailable": "Недоступно, разверните для подробностей", - "notificationbadge.indicatorOnly": "Новая активность", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Выбрать…", - "picker.selectedCount": "{count, plural, =0 {Нет выбранных элементов} one {# элемент выбран} other {# эл. выбрано}}", - "slider.maximum": "Максимум", - "slider.minimum": "Минимум", - "table.cancel": "Отмена", - "table.drag": "Перетаскивание", - "table.editCell": "Редактировать ячейку", - "table.loading": "Загрузка...", - "table.loadingMore": "Дополнительная загрузка...", - "table.resizeColumn": "Изменить размер столбца", - "table.save": "Сохранить", - "table.sortAscending": "Сортировать по возрастанию", - "table.sortDescending": "Сортировать по убыванию", - "tag.actions": "Действия", - "tag.hideButtonLabel": "Показать меньше", - "tag.noTags": "Нет", - "tag.showAllButtonLabel": "Показать все ({tagCount, number})", - "toast.clearAll": "Очистить все", - "toast.collapse": "Свернуть", - "toast.showAll": "Показать все" -} diff --git a/packages/@react-spectrum/s2-ai/intl/sk-SK.json b/packages/@react-spectrum/s2-ai/intl/sk-SK.json deleted file mode 100644 index 26bea942988..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/sk-SK.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Akcie", - "actionbar.actionsAvailable": "Dostupné akcie.", - "actionbar.clearSelection": "Vymazať výber", - "actionbar.selected": "Vybrané položky: {count}", - "actionbar.selectedAll": "Všetky vybraté položky", - "breadcrumbs.more": "Ďalšie položky", - "button.pending": "čakajúce", - "calendar.invalidSelection": "{selectedCount, plural, one {Vybratý dátum} other {Vybraté dátumy}}: nedostupné.", - "combobox.noResults": "Žiadne výsledky", - "contextualhelp.help": "Pomoc", - "contextualhelp.info": "Informácie", - "datepicker.endTime": "Čas ukončenia", - "datepicker.startTime": "Čas začiatku", - "datepicker.time": "Čas", - "dialog.alert": "Upozornenie", - "dialog.dismiss": "Zrušiť", - "dropzone.replaceMessage": "Presuňte súbor, ktorý chcete nahradiť", - "inlinealert.informative": "Informácie", - "inlinealert.negative": "Chyba", - "inlinealert.notice": "Upozornenie", - "inlinealert.positive": "Úspech", - "label.(optional)": "(nepovinné)", - "label.(required)": "(povinné)", - "menu.moreActions": "Ďalšie akcie", - "menu.unavailable": "Nedostupné, rozbaľte podrobnosti", - "notificationbadge.indicatorOnly": "Nová aktivita", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Vybrať…", - "picker.selectedCount": "{count, plural, =0 {Žiadne vybraté položky} one {# vybratá položka} other {Počet vybratých položiek #}}", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Zrušiť", - "table.drag": "Presunúť", - "table.editCell": "Upraviť bunku", - "table.loading": "Načítava sa...", - "table.loadingMore": "Načítava sa viac...", - "table.resizeColumn": "Zmeniť veľkosť stĺpca", - "table.save": "Uložiť", - "table.sortAscending": "Zoradiť vzostupne", - "table.sortDescending": "Zoradiť zostupne", - "tag.actions": "Akcie", - "tag.hideButtonLabel": "Zobraziť menej", - "tag.noTags": "Žiadne", - "tag.showAllButtonLabel": "Zobraziť všetko ({tagCount, number})", - "toast.clearAll": "Vymazať všetko", - "toast.collapse": "Zbaliť", - "toast.showAll": "Zobraziť všetko" -} diff --git a/packages/@react-spectrum/s2-ai/intl/sl-SI.json b/packages/@react-spectrum/s2-ai/intl/sl-SI.json deleted file mode 100644 index 75cd20ed807..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/sl-SI.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Dejanja", - "actionbar.actionsAvailable": "Na voljo so dejanja.", - "actionbar.clearSelection": "Počisti izbor", - "actionbar.selected": "Izbrano: {count}", - "actionbar.selectedAll": "Izbrano vse", - "breadcrumbs.more": "Več elementov", - "button.pending": "v teku", - "calendar.invalidSelection": "Izbrano {selectedCount, plural, one {date} other {dates}} ni na voljo.", - "combobox.noResults": "Ni rezultatov", - "contextualhelp.help": "Pomoč", - "contextualhelp.info": "Informacije", - "datepicker.endTime": "Končni čas", - "datepicker.startTime": "Začetni čas", - "datepicker.time": "Čas", - "dialog.alert": "Opozorilo", - "dialog.dismiss": "Opusti", - "dropzone.replaceMessage": "Spustite datoteko za zamenjavo", - "inlinealert.informative": "Informacije", - "inlinealert.negative": "Napaka", - "inlinealert.notice": "Opozorilo", - "inlinealert.positive": "Uspešno", - "label.(optional)": "(opcijsko)", - "label.(required)": "(obvezno)", - "menu.moreActions": "Več možnosti", - "menu.unavailable": "Ni na voljo, razširite za podrobnosti", - "notificationbadge.indicatorOnly": "Nova dejavnost", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Izberite…", - "picker.selectedCount": "{count, plural, =0 {Ni izbranih elementov} one {izbran je # element} other {izbranih je # elementov}}.", - "slider.maximum": "Največji", - "slider.minimum": "Najmanj", - "table.cancel": "Prekliči", - "table.drag": "Povleci", - "table.editCell": "Uredi celico", - "table.loading": "Nalaganje...", - "table.loadingMore": "Nalaganje več vsebine...", - "table.resizeColumn": "Spremeni velikost stolpca", - "table.save": "Shrani", - "table.sortAscending": "Razvrsti naraščajoče", - "table.sortDescending": "Razvrsti padajoče", - "tag.actions": "Dejanja", - "tag.hideButtonLabel": "Prikaži manj", - "tag.noTags": "Nič", - "tag.showAllButtonLabel": "Prikaž vse ({tagCount, number})", - "toast.clearAll": "Počisti vse", - "toast.collapse": "Strni", - "toast.showAll": "Prikaži vse" -} diff --git a/packages/@react-spectrum/s2-ai/intl/sr-SP.json b/packages/@react-spectrum/s2-ai/intl/sr-SP.json deleted file mode 100644 index 4bfa3ae75e1..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/sr-SP.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Radnje", - "actionbar.actionsAvailable": "Dostupne su radnje.", - "actionbar.clearSelection": "Poništi izbor", - "actionbar.selected": "Izabrano: {count}", - "actionbar.selectedAll": "Sve je izabrano", - "breadcrumbs.more": "Više stavki", - "button.pending": "nerešeno", - "calendar.invalidSelection": "Izabrani {selectedCount, plural, one {date} other {dates}} nije dostupan.", - "combobox.noResults": "Nema rezultata", - "contextualhelp.help": "Pomoć", - "contextualhelp.info": "Informacije", - "datepicker.endTime": "Završno vreme", - "datepicker.startTime": "Početno vreme", - "datepicker.time": "Vreme", - "dialog.alert": "Upozorenje", - "dialog.dismiss": "Odbaci", - "dropzone.replaceMessage": "Otpustite datoteku radi zamene", - "inlinealert.informative": "Informacije", - "inlinealert.negative": "Greška", - "inlinealert.notice": "Upozorenje", - "inlinealert.positive": "Uspešno", - "label.(optional)": "(opciono)", - "label.(required)": "(obavezno)", - "menu.moreActions": "Dodatne radnje", - "menu.unavailable": "Nije dostupno, proširite za detalje", - "notificationbadge.indicatorOnly": "Nova aktivnost", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Izaberite...", - "picker.selectedCount": "{count, plural, =0 {Nije izabrana nijedna stavka} one {Izabrana je # stavka} other {Izabrano je # stavki}}", - "slider.maximum": "Najviše", - "slider.minimum": "Najmanje", - "table.cancel": "Otkaži", - "table.drag": "Prevuci", - "table.editCell": "Uredi ćeliju", - "table.loading": "Učitavam...", - "table.loadingMore": "Učitavam još...", - "table.resizeColumn": "Promeni veličinu kolone", - "table.save": "Sačuvaj", - "table.sortAscending": "Sortiraj po rastućem redosledu", - "table.sortDescending": "Sortiraj po opadajućem redosledu", - "tag.actions": "Radnje", - "tag.hideButtonLabel": "Prikaži manje", - "tag.noTags": "Ne postoji", - "tag.showAllButtonLabel": "Prikaži sve ({tagCount, number})", - "toast.clearAll": "Obriši sve", - "toast.collapse": " Skupi", - "toast.showAll": "Prikaži sve" -} diff --git a/packages/@react-spectrum/s2-ai/intl/sv-SE.json b/packages/@react-spectrum/s2-ai/intl/sv-SE.json deleted file mode 100644 index c7229bc8e55..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/sv-SE.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Åtgärder", - "actionbar.actionsAvailable": "Åtgärder finns.", - "actionbar.clearSelection": "Rensa markering", - "actionbar.selected": "{count, plural, =0 {Inga valda} one {# vald} other {# valda}}", - "actionbar.selectedAll": "Alla markerade", - "breadcrumbs.more": "Fler artiklar", - "button.pending": "väntande", - "calendar.invalidSelection": "{selectedCount, plural, one {Valt datum är inte tillgängligt.} other {Valda datum är inte tillgängliga.}}", - "combobox.noResults": "Inga resultat", - "contextualhelp.help": "Hjälp", - "contextualhelp.info": "Information", - "datepicker.endTime": "Sluttid", - "datepicker.startTime": "Starttid", - "datepicker.time": "Tid", - "dialog.alert": "Varning", - "dialog.dismiss": "Avvisa", - "dropzone.replaceMessage": "Släpp filen för att ersätta", - "inlinealert.informative": "Information", - "inlinealert.negative": "Fel", - "inlinealert.notice": "Varning", - "inlinealert.positive": "Lyckades", - "label.(optional)": "(valfritt)", - "label.(required)": "(krävs)", - "menu.moreActions": "Fler åtgärder", - "menu.unavailable": "Ej tillgänglig, expandera för mer information", - "notificationbadge.indicatorOnly": "Ny aktivitet", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Välj…", - "picker.selectedCount": "{count, plural, =0 {Inga objekt markerade} one {# objekt markerat} other {# objekt markerade}}.", - "slider.maximum": "Maximum", - "slider.minimum": "Minimum", - "table.cancel": "Avbryt", - "table.drag": "Dra", - "table.editCell": "Redigera cell", - "table.loading": "Läser in...", - "table.loadingMore": "Läser in mer...", - "table.resizeColumn": "Ändra storlek på kolumn", - "table.save": "Spara", - "table.sortAscending": "Sortera i stigande ordning", - "table.sortDescending": "Sortera i fallande ordning", - "tag.actions": "Åtgärder", - "tag.hideButtonLabel": "Visa mindre", - "tag.noTags": "Ingen", - "tag.showAllButtonLabel": "Visa alla ({tagCount, number})", - "toast.clearAll": "Rensa alla", - "toast.collapse": "Dölj", - "toast.showAll": "Visa alla" -} diff --git a/packages/@react-spectrum/s2-ai/intl/tr-TR.json b/packages/@react-spectrum/s2-ai/intl/tr-TR.json deleted file mode 100644 index e0c2c26654d..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/tr-TR.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Eylemler", - "actionbar.actionsAvailable": "Eylemler mevcut.", - "actionbar.clearSelection": "Seçimi temizle", - "actionbar.selected": "{count, plural, =0 {Hiçbiri seçilmedi} other {# seçildi}}", - "actionbar.selectedAll": "Tümü seçildi", - "breadcrumbs.more": "Daha fazla öğe", - "button.pending": "beklemede", - "calendar.invalidSelection": "Seçilen {selectedCount, plural, one {tarih} other {tarihler}} müsait değil.", - "combobox.noResults": "Sonuç yok", - "contextualhelp.help": "Yardım", - "contextualhelp.info": "Bilgiler", - "datepicker.endTime": "Bitiş saati", - "datepicker.startTime": "Başlangıç saati", - "datepicker.time": "Saat", - "dialog.alert": "Uyarı", - "dialog.dismiss": "Kapat", - "dropzone.replaceMessage": "Değiştirmek için dosyayı bırakın", - "inlinealert.informative": "Bilgiler", - "inlinealert.negative": "Hata", - "inlinealert.notice": "Uyarı", - "inlinealert.positive": "Başarılı", - "label.(optional)": "(isteğe bağlı)", - "label.(required)": "(gerekli)", - "menu.moreActions": "Daha fazla eylem", - "menu.unavailable": "Kullanılamıyor, ayrıntıları görmek için genişletin", - "notificationbadge.indicatorOnly": "Yeni etkinlik", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Seçin…", - "picker.selectedCount": "{count, plural, =0 {Hiçbir öge seçilmedi} one {# öge seçildi} other {# öge seçildi}}", - "slider.maximum": "Maksimum", - "slider.minimum": "Minimum", - "table.cancel": "İptal et", - "table.drag": "Sürükle", - "table.editCell": "Hücreyi düzenle", - "table.loading": "Yükleniyor...", - "table.loadingMore": "Daha fazla yükleniyor...", - "table.resizeColumn": "Sütunu yeniden boyutlandır", - "table.save": "Kaydet", - "table.sortAscending": "Artan Sıralama", - "table.sortDescending": "Azalan Sıralama", - "tag.actions": "Eylemler", - "tag.hideButtonLabel": "Daha az göster", - "tag.noTags": "Hiçbiri", - "tag.showAllButtonLabel": "Tümünü göster ({tagCount, number})", - "toast.clearAll": "Tümünü temizle", - "toast.collapse": "Daralt", - "toast.showAll": "Tümünü göster" -} diff --git a/packages/@react-spectrum/s2-ai/intl/uk-UA.json b/packages/@react-spectrum/s2-ai/intl/uk-UA.json deleted file mode 100644 index cd6a894956b..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/uk-UA.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "Дії", - "actionbar.actionsAvailable": "Доступні дії.", - "actionbar.clearSelection": "Очистити вибір", - "actionbar.selected": "Вибрано: {count}", - "actionbar.selectedAll": "Усе вибрано", - "breadcrumbs.more": "Більше елементів", - "button.pending": "в очікуванні", - "calendar.invalidSelection": "{selectedCount, plural, one {Вибрана дата недоступна} other {Вибрані дати недоступні}}.", - "combobox.noResults": "Результатів немає", - "contextualhelp.help": "Довідка", - "contextualhelp.info": "Інформація", - "datepicker.endTime": "Час завершення", - "datepicker.startTime": "Час початку", - "datepicker.time": "Час", - "dialog.alert": "Сигнал тривоги", - "dialog.dismiss": "Скасувати", - "dropzone.replaceMessage": "Перетягніть файл для заміни", - "inlinealert.informative": "Інформація", - "inlinealert.negative": "Помилка", - "inlinealert.notice": "Попередження", - "inlinealert.positive": "Успішно", - "label.(optional)": "(необов’язково)", - "label.(required)": "(обов’язково)", - "menu.moreActions": "Більше дій", - "menu.unavailable": "Недоступно, розгорніть для докладнішої інформації", - "notificationbadge.indicatorOnly": "Нова активність", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "Вибрати…", - "picker.selectedCount": "{count, plural, =0 {Жодних елементів не вибрано} one {# елемент вибрано} other {Вибрано елементів: #}}", - "slider.maximum": "Максимум", - "slider.minimum": "Мінімум", - "table.cancel": "Скасувати", - "table.drag": "Перетягнути", - "table.editCell": "Редагувати клітинку", - "table.loading": "Завантаження…", - "table.loadingMore": "Завантаження інших об’єктів...", - "table.resizeColumn": "Змінити розмір стовпця", - "table.save": "Зберегти", - "table.sortAscending": "Сортувати за зростанням", - "table.sortDescending": "Сортувати за спаданням", - "tag.actions": "Дії", - "tag.hideButtonLabel": "Показувати менше", - "tag.noTags": "Немає", - "tag.showAllButtonLabel": "Показати всі ({tagCount, number})", - "toast.clearAll": "Очистити все", - "toast.collapse": "Згорнути", - "toast.showAll": "Показати все" -} diff --git a/packages/@react-spectrum/s2-ai/intl/zh-CN.json b/packages/@react-spectrum/s2-ai/intl/zh-CN.json deleted file mode 100644 index a385d658555..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/zh-CN.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "操作", - "actionbar.actionsAvailable": "有可用操作。", - "actionbar.clearSelection": "清除选择", - "actionbar.selected": "{count, plural, =0 {无选择} other {已选择 # 个}}", - "actionbar.selectedAll": "全选", - "breadcrumbs.more": "更多项目", - "button.pending": "待处理", - "calendar.invalidSelection": "选定的 {selectedCount, plural, one {个日期} other {个日期}} 不可用。", - "combobox.noResults": "无结果", - "contextualhelp.help": "帮助", - "contextualhelp.info": "信息", - "datepicker.endTime": "结束时间", - "datepicker.startTime": "开始时间", - "datepicker.time": "时间", - "dialog.alert": "警报", - "dialog.dismiss": "取消", - "dropzone.replaceMessage": "删除要替换的文件", - "inlinealert.informative": "信息", - "inlinealert.negative": "错误", - "inlinealert.notice": "警告", - "inlinealert.positive": "成功", - "label.(optional)": "(可选)", - "label.(required)": "(必填)", - "menu.moreActions": "更多操作", - "menu.unavailable": "不可用,展开以查看详细信息", - "notificationbadge.indicatorOnly": "新活动", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "选择...", - "picker.selectedCount": "{count, plural, =0 {未选择任何项} one {已选择 # 个项} other {已选择 # 个项}}", - "slider.maximum": "最大", - "slider.minimum": "最小", - "table.cancel": "取消", - "table.drag": "拖动", - "table.editCell": "编辑单元格", - "table.loading": "正在加载...", - "table.loadingMore": "正在加载更多...", - "table.resizeColumn": "调整列大小", - "table.save": "保存", - "table.sortAscending": "升序排序", - "table.sortDescending": "降序排序", - "tag.actions": "操作", - "tag.hideButtonLabel": "显示更少", - "tag.noTags": "无", - "tag.showAllButtonLabel": "全部显示 ({tagCount, number})", - "toast.clearAll": "全部清除", - "toast.collapse": "折叠", - "toast.showAll": "显示全部" -} diff --git a/packages/@react-spectrum/s2-ai/intl/zh-TW.json b/packages/@react-spectrum/s2-ai/intl/zh-TW.json deleted file mode 100644 index 48caecc340c..00000000000 --- a/packages/@react-spectrum/s2-ai/intl/zh-TW.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "actionbar.actions": "動作", - "actionbar.actionsAvailable": "可執行的動作。", - "actionbar.clearSelection": "清除選取項目", - "actionbar.selected": "{count, plural, =0 {未選取任何項目} other {已選取 # 個}}", - "actionbar.selectedAll": "已選取所有項目", - "breadcrumbs.more": "更多項目", - "button.pending": "待處理", - "calendar.invalidSelection": "所選的{selectedCount, plural, one {日期} other {日期}}無法使用。", - "combobox.noResults": "無任何結果", - "contextualhelp.help": "說明", - "contextualhelp.info": "資訊", - "datepicker.endTime": "結束時間", - "datepicker.startTime": "開始時間", - "datepicker.time": "時間", - "dialog.alert": "警示", - "dialog.dismiss": "關閉", - "dropzone.replaceMessage": "放置要取代的檔案", - "inlinealert.informative": "資訊", - "inlinealert.negative": "錯誤", - "inlinealert.notice": "警告", - "inlinealert.positive": "成功", - "label.(optional)": "(選填)", - "label.(required)": "(必填)", - "menu.moreActions": "更多動作", - "menu.unavailable": "無法使用,展開以取得詳細資料", - "notificationbadge.indicatorOnly": "新活動", - "notificationbadge.plus": "{notifications}+", - "picker.placeholder": "選取…", - "picker.selectedCount": "{count, plural, =0 {未選取任何項目} one {已選取 # 個項目} other {已選取 # 個項目}}", - "slider.maximum": "最大值", - "slider.minimum": "最小值", - "table.cancel": "取消", - "table.drag": "拖曳", - "table.editCell": "編輯儲存格", - "table.loading": "載入中…", - "table.loadingMore": "正在載入更多…", - "table.resizeColumn": "調整欄大小", - "table.save": "儲存", - "table.sortAscending": "升序排序", - "table.sortDescending": "降序排序", - "tag.actions": "動作", - "tag.hideButtonLabel": "顯示較少", - "tag.noTags": "無", - "tag.showAllButtonLabel": "顯示全部 ({tagCount, number})", - "toast.clearAll": "全部清除", - "toast.collapse": "收合", - "toast.showAll": "顯示全部" -} diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx index e7942ccebc0..5f2b6cfa8c9 100644 --- a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -44,9 +44,9 @@ import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; import {ImageContext} from '@react-spectrum/s2/Image'; import {ImageCoordinator} from '@react-spectrum/s2/ImageCoordinator'; import {inertValue} from 'react-aria/private/utils/inertValue'; +// @ts-ignore import intlMessages from '../intl/*.json'; import {Link} from 'react-aria-components/Link'; -// @ts-ignore import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; import {mergeStyles} from '@react-spectrum/s2/style/runtime'; import {pressScale} from '@react-spectrum/s2/pressScale'; @@ -924,16 +924,15 @@ const styles = style<{ }, getAllowedOverrides() ); + const CloseButton = function CloseButton(props) { let ref = useRef>(null); let domRef = useFocusableRef(ref); - let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/s2'); return ( + ); +}; + +let assetListStyles = style({}, getAllowedOverrides()); + +export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { + let domRef = useDOMRef(ref); + return ( + + + {props.children} + + + ); +}); + +export const Asset = forwardRef(function Asset(props: CardProps, ref: DOMRef) { + let { + textValue, + 'aria-label': ariaLabel, + 'aria-labelledby': ariaLabelledby, + 'aria-describedby': ariaDescribedby, + ...otherProps + } = props; + let domRef = useDOMRef(ref); + return ( + + {props.children} + {/** Definitely not a close button, though looks like one. */} +
+ +
+
+ ); +}); diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx index 3a3e8ca5aca..ff832df277a 100644 --- a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -1,5 +1,5 @@ /* - * Copyright 2024 Adobe. All rights reserved. + * Copyright 2026 Adobe. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0 @@ -11,49 +11,35 @@ */ import {ActionMenuContext} from '@react-spectrum/s2/ActionMenu'; +import {ButtonContext} from '@react-spectrum/s2/Button'; +import {Checkbox} from '@react-spectrum/s2/Checkbox'; import { - baseColor, color, focusRing, lightDark, space, style } from '@react-spectrum/s2/style' with {type: 'macro'}; -import {Button} from 'react-aria-components/Button'; -import {ButtonContext} from '@react-spectrum/s2/Button'; -import {Checkbox} from '@react-spectrum/s2/Checkbox'; import {composeRenderProps} from 'react-aria-components/composeRenderProps'; import {ContentContext} from '@react-spectrum/s2/Content'; import {ContextValue, DEFAULT_SLOT, Provider} from 'react-aria-components/slots'; -import { - controlSize, - getAllowedOverrides -} from '@react-spectrum/s2/style-utils' with {type: 'macro'}; -import {createContext, forwardRef, ReactNode, useContext, useRef} from 'react'; -import CrossIcon from '@react-spectrum/s2/ui-icons/Cross'; -import { - DOMProps, - DOMRef, - DOMRefValue, - FocusableRefValue, - GlobalDOMAttributes -} from '@react-types/shared'; +import {createContext, forwardRef, ReactNode, useContext} from 'react'; +import {DOMProps, DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/shared'; import {filterDOMProps} from 'react-aria/filterDOMProps'; import {FooterContext} from '@react-spectrum/s2/Footer'; +import {getAllowedOverrides} from '@react-spectrum/s2/style-utils' with {type: 'macro'}; import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; import {ImageContext} from '@react-spectrum/s2/Image'; import {ImageCoordinator} from '@react-spectrum/s2/ImageCoordinator'; import {inertValue} from 'react-aria/private/utils/inertValue'; import {Link} from 'react-aria-components/Link'; import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; -import {mergeStyles} from '@react-spectrum/s2/style/runtime'; +import {mergeStyles} from '@react-spectrum/s2/mergeStyles'; import {pressScale} from '@react-spectrum/s2/pressScale'; import {SkeletonContext, useIsSkeleton} from '@react-spectrum/s2/Skeleton'; import type {StyleProps, UnsafeStyles} from '@react-spectrum/s2/style-utils'; -import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; import {TextContext} from '@react-spectrum/s2/Text'; import {useDOMRef} from '@react-spectrum/s2/useDOMRef'; -import {useFocusableRef} from '@react-spectrum/s2/useDOMRef'; import {useSpectrumContextProps} from '@react-spectrum/s2/useSpectrumContextProps'; interface CardRenderProps { @@ -191,7 +177,7 @@ let card = style( }, isBasic: 68, isCardView: 'full', - [onlyPreview]: 'auto' + [onlyPreview]: 68 }, width: { default: 'full', @@ -264,6 +250,20 @@ let card = style( variant: { quiet: 'none' } + }, + '--basic-thumb-size': { + type: 'height', + value: { + default: 68, + size: { + XS: 24, + S: 26, + M: 32, + L: 36, + XL: 40 + }, + [onlyPreview]: 'full' + } } }, getAllowedOverrides() @@ -822,15 +822,7 @@ export const BasicHorizontalCard = forwardRef(function BasicHorizontalCard( alignSelf: 'center', pointerEvents: 'none', userSelect: 'none', - size: { - size: { - XS: 24, - S: 26, - M: 32, - L: 36, - XL: 40 - } - }, + size: '--basic-thumb-size', borderRadius: { default: 'default', size: { @@ -872,109 +864,3 @@ export const BasicHorizontalCard = forwardRef(function BasicHorizontalCard( ); }); - -const hoverBackground = { - default: 'gray-200', - isStaticColor: 'transparent-overlay-200' -} as const; - -const styles = style<{ - isDisabled: boolean; - isHovered: boolean; - isFocusVisible: boolean; - isPressed: boolean; - size: 'S' | 'M' | 'L' | 'XL'; -}>( - { - ...focusRing(), - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - size: controlSize(), - flexShrink: 0, - borderRadius: 'full', - padding: 0, - borderStyle: 'none', - transition: 'default', - backgroundColor: { - default: 'gray-200', - isHovered: hoverBackground, - isFocusVisible: hoverBackground, - isPressed: hoverBackground - }, - '--iconPrimary': { - type: 'color', - value: { - default: baseColor('neutral'), - isDisabled: 'disabled', - forcedColors: { - default: 'ButtonText', - isDisabled: 'GrayText' - } - } - }, - outlineColor: { - default: 'focus-ring', - forcedColors: 'Highlight' - }, - disableTapHighlight: true - }, - getAllowedOverrides() -); - -const CloseButton = function CloseButton(props) { - let ref = useRef>(null); - let domRef = useFocusableRef(ref); - return ( - - ); -}; - -let assetListStyles = style({}, getAllowedOverrides()); - -export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { - let domRef = useDOMRef(ref); - return ( - - - {props.children} - - - ); -}); - -export const Asset = forwardRef(function Asset(props: CardProps, ref: DOMRef) { - let domRef = useDOMRef(ref); - return ( - - {props.children} - {/** Definitely not a close button, though looks like one. */} -
- -
-
- ); -}); diff --git a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx index f139b8b0cc5..c7d0c85529a 100644 --- a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx +++ b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx @@ -12,9 +12,8 @@ import {ActionButton} from '@react-spectrum/s2/ActionButton'; import {ActionMenu} from '@react-spectrum/s2/ActionMenu'; +import {Asset as AssetComponent, AssetList} from '../src/AssetList'; import { - Asset as AssetComponent, - AssetList, BasicHorizontalCard, HorizontalCard, CardPreview as HorizontalCardPreview @@ -195,6 +194,16 @@ export const AIAssetList: Story = { src={new URL('../../s2/stories/assets/placeholder.png', import.meta.url).toString()} /> + + + + Card title + Card description. + + ) }; diff --git a/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx b/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx new file mode 100644 index 00000000000..ddbb86b2995 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx @@ -0,0 +1,29 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {Asset, AssetList} from '../src/AssetList'; +import {Image} from '@react-spectrum/s2/Image'; +import {render} from '@react-spectrum/test-utils-internal'; + +describe('AssetList', () => { + it('should render', () => { + let {getByRole} = render( + + + + + + ); + + expect(getByRole('grid')).toBeInTheDocument(); + }); +}); diff --git a/packages/@react-spectrum/s2/package.json b/packages/@react-spectrum/s2/package.json index 757a2489d5b..b75030e9341 100644 --- a/packages/@react-spectrum/s2/package.json +++ b/packages/@react-spectrum/s2/package.json @@ -45,13 +45,6 @@ "import": "./style/dist/module.mjs", "require": "./style/dist/main.cjs" }, - "./style/runtime": { - "source": "./style/runtime.ts", - "types": "./dist/types/style/runtime.d.ts", - "module": "./style/dist/runtime.mjs", - "import": "./style/dist/runtime.mjs", - "require": "./style/dist/runtime.cjs" - }, "./icons/*": { "source": "./s2wf-icons/S2_Icon_*_20_N.svg", "types": [ diff --git a/packages/react-aria/src/tag/useTag.ts b/packages/react-aria/src/tag/useTag.ts index 8f7f9143ffa..1e99ae80332 100644 --- a/packages/react-aria/src/tag/useTag.ts +++ b/packages/react-aria/src/tag/useTag.ts @@ -19,7 +19,6 @@ import intlMessages from '../../intl/tag/*.json'; import {KeyboardEvent} from 'react'; import type {ListState} from 'react-stately/useListState'; import {mergeProps} from '../utils/mergeProps'; -// @ts-ignore import {SelectableItemStates} from '../selection/useSelectableItem'; import {useDescription} from '../utils/useDescription'; import {useFocusable} from '../interactions/useFocusable'; From d872fe44d43dc910a348062b193bdf04382c1111 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 22 May 2026 13:30:55 +1000 Subject: [PATCH 06/11] fix ts --- packages/@react-spectrum/s2-ai/src/AssetList.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/@react-spectrum/s2-ai/src/AssetList.tsx b/packages/@react-spectrum/s2-ai/src/AssetList.tsx index 90d5d6b6fd5..f584a56e33a 100644 --- a/packages/@react-spectrum/s2-ai/src/AssetList.tsx +++ b/packages/@react-spectrum/s2-ai/src/AssetList.tsx @@ -10,6 +10,7 @@ * governing permissions and limitations under the License. */ +import {AriaLabelingProps, DOMRef, FocusableRefValue} from '@react-types/shared'; import {baseColor, focusRing, style} from '@react-spectrum/s2/style' with {type: 'macro'}; import {BasicHorizontalCard} from './HorizontalCard'; import {Button} from 'react-aria-components/Button'; @@ -19,7 +20,6 @@ import { getAllowedOverrides } from '@react-spectrum/s2/style-utils' with {type: 'macro'}; import CrossIcon from '@react-spectrum/s2/ui-icons/Cross'; -import {DOMRef, FocusableRefValue} from '@react-types/shared'; import {forwardRef, useRef} from 'react'; import {pressScale} from '@react-spectrum/s2/pressScale'; import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; @@ -113,7 +113,10 @@ export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { +export const Asset = forwardRef(function Asset( + props: CardProps & AriaLabelingProps, + ref: DOMRef +) { let { textValue, 'aria-label': ariaLabel, From 71c5fe21addc71965fbf3b3b9823380ee649cd7c Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Fri, 22 May 2026 14:36:48 +1000 Subject: [PATCH 07/11] fix build --- packages/@react-spectrum/s2-ai/exports/AssetList.ts | 1 + packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts | 2 ++ packages/@react-spectrum/s2-ai/exports/index.ts | 2 ++ .../@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx | 4 ++-- packages/@react-spectrum/s2-ai/test/AssetList.test.tsx | 2 +- 5 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 packages/@react-spectrum/s2-ai/exports/AssetList.ts create mode 100644 packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts create mode 100644 packages/@react-spectrum/s2-ai/exports/index.ts diff --git a/packages/@react-spectrum/s2-ai/exports/AssetList.ts b/packages/@react-spectrum/s2-ai/exports/AssetList.ts new file mode 100644 index 00000000000..1a2c9706fe5 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/exports/AssetList.ts @@ -0,0 +1 @@ +export {Asset, AssetList} from '../src/AssetList'; diff --git a/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts b/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts new file mode 100644 index 00000000000..0e444d6d3b8 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts @@ -0,0 +1,2 @@ +export {BasicHorizontalCard, HorizontalCard} from '../src/HorizontalCard'; +export {CardPreview} from '@react-spectrum/s2/Card'; diff --git a/packages/@react-spectrum/s2-ai/exports/index.ts b/packages/@react-spectrum/s2-ai/exports/index.ts new file mode 100644 index 00000000000..e0ccfb657c1 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/exports/index.ts @@ -0,0 +1,2 @@ +export {Asset, AssetList} from '../src/AssetList'; +export {BasicHorizontalCard, HorizontalCard} from '../src/HorizontalCard'; diff --git a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx index c7d0c85529a..b7f4fecef3f 100644 --- a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx +++ b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx @@ -12,12 +12,12 @@ import {ActionButton} from '@react-spectrum/s2/ActionButton'; import {ActionMenu} from '@react-spectrum/s2/ActionMenu'; -import {Asset as AssetComponent, AssetList} from '../src/AssetList'; +import {Asset as AssetComponent, AssetList} from '@react-spectrum/s2-ai/AssetList'; import { BasicHorizontalCard, HorizontalCard, CardPreview as HorizontalCardPreview -} from '../src/HorizontalCard'; +} from '@react-spectrum/s2-ai/HorizontalCard'; import {Card, CardProps} from '@react-spectrum/s2/Card'; import ChevronRight from '@react-spectrum/s2/icons/ChevronRight'; import {Content} from '@react-spectrum/s2/Content'; diff --git a/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx b/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx index ddbb86b2995..ebaf0a3df29 100644 --- a/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx +++ b/packages/@react-spectrum/s2-ai/test/AssetList.test.tsx @@ -10,7 +10,7 @@ * governing permissions and limitations under the License. */ -import {Asset, AssetList} from '../src/AssetList'; +import {Asset, AssetList} from '@react-spectrum/s2-ai/AssetList'; import {Image} from '@react-spectrum/s2/Image'; import {render} from '@react-spectrum/test-utils-internal'; From 124504c3b2fc05aa937c46db97cb4fa2bd876ed6 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Thu, 28 May 2026 16:08:59 +1000 Subject: [PATCH 08/11] copy code and reduce new exports --- .../s2-ai/exports/HorizontalCard.ts | 3 +- .../@react-spectrum/s2-ai/src/AssetList.tsx | 41 ++- .../s2-ai/src/HorizontalCard.tsx | 34 +-- .../@react-spectrum/s2-ai/src/mergeStyles.ts | 133 +++++++++ .../s2-ai/src/style-utils-copy.ts | 92 +++++++ packages/@react-spectrum/s2-ai/src/types.ts | 260 ++++++++++++++++++ .../s2-ai/src/useSpectrumContextProps.ts | 49 ++++ .../s2-ai/stories/HorizontalCard.stories.tsx | 14 +- .../@react-spectrum/s2/exports/style-utils.ts | 2 - .../@react-spectrum/s2/exports/useDOMRef.ts | 8 - .../s2/exports/useSpectrumContextProps.ts | 1 - packages/@react-spectrum/s2/package.json | 6 - 12 files changed, 580 insertions(+), 63 deletions(-) create mode 100644 packages/@react-spectrum/s2-ai/src/mergeStyles.ts create mode 100644 packages/@react-spectrum/s2-ai/src/style-utils-copy.ts create mode 100644 packages/@react-spectrum/s2-ai/src/types.ts create mode 100644 packages/@react-spectrum/s2-ai/src/useSpectrumContextProps.ts delete mode 100644 packages/@react-spectrum/s2/exports/style-utils.ts delete mode 100644 packages/@react-spectrum/s2/exports/useDOMRef.ts delete mode 100644 packages/@react-spectrum/s2/exports/useSpectrumContextProps.ts diff --git a/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts b/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts index 0e444d6d3b8..f67371b1f56 100644 --- a/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts +++ b/packages/@react-spectrum/s2-ai/exports/HorizontalCard.ts @@ -1,2 +1 @@ -export {BasicHorizontalCard, HorizontalCard} from '../src/HorizontalCard'; -export {CardPreview} from '@react-spectrum/s2/Card'; +export {BasicHorizontalCard, HorizontalCard, CardPreview} from '../src/HorizontalCard'; diff --git a/packages/@react-spectrum/s2-ai/src/AssetList.tsx b/packages/@react-spectrum/s2-ai/src/AssetList.tsx index f584a56e33a..02d5b2fb45e 100644 --- a/packages/@react-spectrum/s2-ai/src/AssetList.tsx +++ b/packages/@react-spectrum/s2-ai/src/AssetList.tsx @@ -10,21 +10,17 @@ * governing permissions and limitations under the License. */ -import {AriaLabelingProps, DOMRef, FocusableRefValue} from '@react-types/shared'; +import {AriaLabelingProps} from '@react-types/shared'; import {baseColor, focusRing, style} from '@react-spectrum/s2/style' with {type: 'macro'}; import {BasicHorizontalCard} from './HorizontalCard'; import {Button} from 'react-aria-components/Button'; import {CardProps} from '@react-spectrum/s2/Card'; -import { - controlSize, - getAllowedOverrides -} from '@react-spectrum/s2/style-utils' with {type: 'macro'}; -import CrossIcon from '@react-spectrum/s2/ui-icons/Cross'; +import Close from '@react-spectrum/s2/icons/Close'; +import {controlSize, getAllowedOverrides} from './style-utils-copy' with {type: 'macro'}; import {forwardRef, useRef} from 'react'; +import {iconStyle} from '@react-spectrum/s2/style' with {type: 'macro'}; import {pressScale} from '@react-spectrum/s2/pressScale'; import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; -import {useDOMRef} from '@react-spectrum/s2/useDOMRef'; -import {useFocusableRef} from '@react-spectrum/s2/useDOMRef'; const hoverBackground = { default: 'gray-200', @@ -75,29 +71,33 @@ const styles = style<{ getAllowedOverrides() ); +const closeIconStyle = ({size = 'M'}) => { + if (size === 'S') return iconStyle({size: 'XS'}); + else if (size === 'M') return iconStyle({size: 'S'}); + else if (size === 'L') return iconStyle({size: 'M'}); + else if (size === 'XL') return iconStyle({size: 'L'}); + else return iconStyle({size: 'S'}); +}; + const CloseButton = function CloseButton(props) { - let ref = useRef>(null); - let domRef = useFocusableRef(ref); + let ref = useRef(null); return ( ); }; let assetListStyles = style({}, getAllowedOverrides()); -export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { - let domRef = useDOMRef(ref); +export const AssetList = forwardRef(function AssetList(props: any, ref: Ref) { return ( - + + ref: Ref ) { let { textValue, @@ -124,14 +124,13 @@ export const Asset = forwardRef(function Asset( 'aria-describedby': ariaDescribedby, ...otherProps } = props; - let domRef = useDOMRef(ref); return ( {props.children} {/** Definitely not a close button, though looks like one. */} diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx index ff832df277a..43d034847cd 100644 --- a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -23,24 +23,23 @@ import { import {composeRenderProps} from 'react-aria-components/composeRenderProps'; import {ContentContext} from '@react-spectrum/s2/Content'; import {ContextValue, DEFAULT_SLOT, Provider} from 'react-aria-components/slots'; -import {createContext, forwardRef, ReactNode, useContext} from 'react'; +import {createContext, forwardRef, ReactNode, useContext, useRef} from 'react'; import {DOMProps, DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/shared'; import {filterDOMProps} from 'react-aria/filterDOMProps'; import {FooterContext} from '@react-spectrum/s2/Footer'; -import {getAllowedOverrides} from '@react-spectrum/s2/style-utils' with {type: 'macro'}; +import {getAllowedOverrides} from './style-utils-copy' with {type: 'macro'}; import {GridListItem, GridListItemProps} from 'react-aria-components/GridList'; import {ImageContext} from '@react-spectrum/s2/Image'; import {ImageCoordinator} from '@react-spectrum/s2/ImageCoordinator'; import {inertValue} from 'react-aria/private/utils/inertValue'; import {Link} from 'react-aria-components/Link'; import {LinkButtonContext} from '@react-spectrum/s2/LinkButton'; -import {mergeStyles} from '@react-spectrum/s2/mergeStyles'; +import {mergeStyles} from './mergeStyles'; import {pressScale} from '@react-spectrum/s2/pressScale'; import {SkeletonContext, useIsSkeleton} from '@react-spectrum/s2/Skeleton'; -import type {StyleProps, UnsafeStyles} from '@react-spectrum/s2/style-utils'; +import type {StyleProps, UnsafeStyles} from './style-utils-copy'; import {TextContext} from '@react-spectrum/s2/Text'; -import {useDOMRef} from '@react-spectrum/s2/useDOMRef'; -import {useSpectrumContextProps} from '@react-spectrum/s2/useSpectrumContextProps'; +import {useSpectrumContextProps} from './useSpectrumContextProps'; interface CardRenderProps { /** The size of the Card. */ @@ -447,11 +446,10 @@ const actionButtonSize = { const Card = forwardRef(function Card( props: CardProps & {isBasic?: boolean}, - ref: DOMRef + ref: Ref ) { [props] = useSpectrumContextProps(props, ref, CardContext); let {ElementType} = useContext(InternalCardViewContext); - let domRef = useDOMRef(ref); let { isBasic = false, density = 'regular', @@ -507,14 +505,16 @@ const Card = forwardRef(function Card( ); - let press = pressScale(domRef, UNSAFE_style); + let fallbackRef = useRef(null); + let newRef = ref ?? fallbackRef; + let press = pressScale(newRef, UNSAFE_style); if (ElementType === 'div' && !isSkeleton && props.href) { // Standalone Card that has an href should be rendered as a Link. // NOTE: In this case, the card must not contain interactive elements. return ( UNSAFE_className + card( @@ -543,7 +543,7 @@ const Card = forwardRef(function Card( id={id != null ? String(id) : undefined} // @ts-ignore - React < 19 compat inert={inertValue(isSkeleton)} - ref={domRef} + ref={ref} className={ UNSAFE_className + card({size, density, variant, isBasic, isCardView: ElementType !== 'div'}, styles) @@ -568,7 +568,7 @@ const Card = forwardRef(function Card( return ( UNSAFE_className + card( @@ -644,19 +644,21 @@ export interface CardPreviewProps extends UnsafeStyles, DOMProps { export const CardPreview = forwardRef(function CardPreview( props: CardPreviewProps, - ref: DOMRef + ref: Ref ) { + console.log('CardPreview', props); let {size, isQuiet, isHovered, isFocusVisible, isSelected, isPressed, isCheckboxSelection} = useContext(InternalCardContext); let {UNSAFE_className = '', UNSAFE_style} = props; - let domRef = useDOMRef(ref); + let fallbackRef = useRef(null); + let newRef = ref ?? fallbackRef; return (
+ style={isQuiet ? pressScale(newRef)({isPressed}) : UNSAFE_style}> {isQuiet && } {isQuiet && isCheckboxSelection && }
diff --git a/packages/@react-spectrum/s2-ai/src/mergeStyles.ts b/packages/@react-spectrum/s2-ai/src/mergeStyles.ts new file mode 100644 index 00000000000..c6d3d0bc6f9 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/mergeStyles.ts @@ -0,0 +1,133 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {StyleString} from './types'; +// import {RuntimeStyleFunction, RenderProps} from './types'; + +// taken from: https://stackoverflow.com/questions/51603250/typescript-3-parameter-list-intersection-type/51604379#51604379 +// type ArgTypes = T extends (props: infer V) => any ? NullToObject : never; +// type NullToObject = T extends (null | undefined) ? {} : T; +// type BoxedTupleTypes = { [P in keyof T]: [ArgTypes] }[Exclude]; +// type BoxedReturnTypes = { [P in keyof T]: [InferReturn] }[Exclude]; +// type UnboxIntersection = T extends { 0: infer U } ? U : never; +// type Arg = RuntimeStyleFunction | null | undefined; +// type NoInfer = [T, void][T extends any ? 0 : 1]; +// type InferReturn = T extends (props: any) => infer R ? NullToObject : never; +// type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; +// type InferReturnType = UnboxIntersection>>; + +// Two overloads: +// 1. If a render props type is expected based on the return type, forward that type to all arguments. +// 2. Otherwise, infer the return type based on the arguments. +// export function merge = never, X = {}>(...args: Arg, NoInfer>[]): RuntimeStyleFunction; +// export function merge[]>(...args: T): RuntimeStyleFunction, UnboxIntersection>>>; +// export function merge(...args: any[]): RuntimeStyleFunction { +// return (props) => { +// return mergeStyles(...args.map(f => typeof f === 'function' ? f(props) : null)); +// }; +// } + +/** + * Merges multiple style strings together, combining the CSS properties from each. + * Later styles take precedence over earlier ones for the same property. + * Useful for composing styles from multiple `style()` macro calls. + * + * @example + * import {mergeStyles} from '@react-spectrum/s2'; + * import {style} from '@react-spectrum/s2/style' with {type: 'macro'}; + * + * const baseStyles = style({padding: 8}); + * const overrideStyles = style({padding: 16, color: 'heading'}); + * const merged = mergeStyles(baseStyles, overrideStyles); + * // merged has `padding: 16` and `color: heading`. + */ +export function mergeStyles(...styles: (StyleString | null | undefined)[]): StyleString { + let definedStyles = styles.filter(Boolean) as StyleString[]; + if (definedStyles.length === 1) { + let first = definedStyles[0]; + if (typeof first !== 'string') { + // static macro has a toString method so that we generate the style macro map for the entry + // it's automatically called in other places, but for our merging, we have to call it ourselves + return (first as StyleString).toString() as StyleString; + } + return first; + } + + let map = new Map(); + + for (let style of definedStyles) { + // must call toString here for the static macro + let str = style.toString(); + + for (let [k, v] of parse(str)) { + map.set(k, v); + } + } + + let res = ''; + for (let value of map.values()) { + res += value; + } + + return res as StyleString; +} + +function parse(s: string) { + let properties = new Map(); + let i = 0; + while (i < s.length) { + while (i < s.length && s[i] === ' ') { + i++; + } + + let start = i; + readValue(); // property index + + // read conditions (up to the last segment) + let condition = i; + while (i < s.length && s[i] !== ' ') { + readValue(); + } + + let property = s.slice(start, condition); + if (process.env.NODE_ENV !== 'production' && property.startsWith('-macro-')) { + let value = s.slice(start, i); + properties.set(value, ' ' + value); + } else { + properties.set(property, (properties.get(property) || '') + ' ' + s.slice(start, i)); + } + } + + function readValue() { + if (s[i] === '-') { + // the beginning and end of arbitrary values are marked with - + while (i < s.length && s[i] !== ' ') { + i++; + if (s[i] === '-') { + i++; + break; + } + } + } else { + while (i < s.length) { + if (s[i] === '_') { + i++; + } else { + i++; + break; + } + } + } + } + + return properties; +} diff --git a/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts b/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts new file mode 100644 index 00000000000..9cf0bfe2c48 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts @@ -0,0 +1,92 @@ +export const controlSize = (size: 'sm' | 'md' = 'md'): typeof controlSizeM | typeof controlSizeS => + size === 'sm' ? controlSizeS : controlSizeM; + +const controlSizeM = { + default: 32, + size: { + XS: 20, + S: 24, + L: 40, + XL: 48 + } +} as const; + +const controlSizeS = { + default: 16, + size: { + S: 14, + L: 18, + XL: 20 + } +} as const; + +const allowedOverrides = [ + 'margin', + 'marginStart', + 'marginEnd', + 'marginTop', + 'marginBottom', + 'marginX', + 'marginY', + 'flexGrow', + 'flexShrink', + 'flexBasis', + 'justifySelf', + 'alignSelf', + 'order', + 'gridArea', + 'gridRowStart', + 'gridRowEnd', + 'gridColumnStart', + 'gridColumnEnd', + 'position', + 'zIndex', + 'top', + 'bottom', + 'inset', + 'insetX', + 'insetY', + 'insetStart', + 'insetEnd', + 'visibility' +] as const; + +export const widthProperties = ['width', 'minWidth', 'maxWidth'] as const; + +export const heightProperties = ['size', 'height', 'minHeight', 'maxHeight'] as const; + +export type StylesProp = StyleString< + (typeof allowedOverrides)[number] | (typeof widthProperties)[number] +>; +export type StylesPropWithHeight = StyleString< + | (typeof allowedOverrides)[number] + | (typeof widthProperties)[number] + | (typeof heightProperties)[number] +>; +export type StylesPropWithoutWidth = StyleString<(typeof allowedOverrides)[number]>; +export type UnsafeClassName = string & {properties?: never}; +export interface UnsafeStyles { + /** + * Sets the CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) + * for the element. Only use as a **last resort**. Use the `style` macro via the `styles` prop + * instead. + */ + UNSAFE_className?: UnsafeClassName; + /** + * Sets inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for + * the element. Only use as a **last resort**. Use the `style` macro via the `styles` prop + * instead. + */ + UNSAFE_style?: CSSProperties; +} + +export interface StyleProps extends UnsafeStyles { + /** Spectrum-defined styles, returned by the `style()` macro. */ + styles?: StylesProp; +} + +export function getAllowedOverrides({width = true, height = false} = {}): string[] { + return (allowedOverrides as unknown as string[]) + .concat(width ? widthProperties : []) + .concat(height ? heightProperties : []); +} diff --git a/packages/@react-spectrum/s2-ai/src/types.ts b/packages/@react-spectrum/s2-ai/src/types.ts new file mode 100644 index 00000000000..a2d5a52d98b --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/types.ts @@ -0,0 +1,260 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import type * as CSS from 'csstype'; + +export type CSSValue = string | number; +export type CustomValue = string | number | boolean; +export type Value = CustomValue | readonly any[]; +export type PropertyValueDefinition = T | {[condition: string]: PropertyValueDefinition}; +export type PropertyValueMap = { + [name in T]: PropertyValueDefinition; +}; + +export type CustomProperty = `--${string}`; +export type CSSProperties = CSS.Properties & { + [k: CustomProperty]: CSSValue; +}; + +export interface Property { + cssProperties: string[]; + toCSSValue(value: T): PropertyValueDefinition; + toCSSProperties( + customProperty: string | null, + value: PropertyValueDefinition + ): PropertyValueDefinition<[CSSProperties]>; +} + +export type ShorthandProperty = (value: T) => {[name: string]: Value}; + +export interface Theme { + properties: { + [name: string]: PropertyValueMap | Property | string[]; + }; + conditions: { + [name: string]: string | string[]; + }; + shorthands: { + [name: string]: string[] | ShorthandProperty; + }; +} + +type PropertyValue = + T extends Property + ? P + : T extends PropertyValueMap + ? P + : T extends string[] + ? T[number] + : never; + +type FunctionName = + | 'var' + | 'calc' + | 'min' + | 'max' + | 'clamp' + | 'round' + | 'mod' + | 'rem' + | 'sin' + | 'cos' + | 'tan' + | 'asin' + | 'acos' + | 'atan' + | 'atan2' + | 'pow' + | 'sqrt' + | 'hypot' + | 'log' + | 'exp' + | 'abs' + | 'sign'; +type CSSWideKeyword = 'inherit' | 'initial' | 'unset'; +export type ArbitraryValue = + | CustomProperty + | `[${string}]` + | `${FunctionName}(${string})` + | CSSWideKeyword; +type PropertyValue2 = PropertyValue | ArbitraryValue; +type Merge = T extends any ? T : never; +type ShorthandValue = P extends string[] + ? PropertyValue2 + : P extends ShorthandProperty + ? V + : never; + +// Pre-compute value types for all theme properties ahead of time. +export type ThemeProperties = Merge<{ + [K in keyof T['properties'] | keyof T['shorthands']]: K extends keyof T['properties'] + ? Merge> + : K extends keyof T['shorthands'] + ? Merge> + : never; +}>; + +type Style< + T extends ThemeProperties, + C extends string, + R extends RenderProps +> = StaticProperties & CustomProperties; + +type StaticProperties< + T extends ThemeProperties, + C extends string, + R extends RenderProps +> = { + [Name in keyof T]?: StyleValue; +}; + +type CustomProperties< + T extends ThemeProperties, + C extends string, + R extends RenderProps +> = { + [key: CustomProperty]: CustomPropertyValue; +}; + +// Infer the value type of custom property values from the `type` key, which references a theme property. +type CustomPropertyValue< + T extends ThemeProperties, + P extends keyof T, + C extends string, + R extends RenderProps +> = P extends any ? {type: P; value: StyleValue} : never; + +export type RenderProps = { + [key in K]: any; +}; + +export type StyleValue> = + | V + | Conditional; +export type Condition = 'default' | Extract; +type Conditional> = CSSConditions< + V, + C, + R +> & + RuntimeConditions; + +type ArbitraryCondition = `:${string}` | `@${string}`; +type CSSConditions> = { + [name in C]?: StyleValue; +}; + +// If render props are unknown, allow any custom conditions to be inferred. +// Unfortunately this breaks "may only specify known properties" errors. +type RuntimeConditions> = [ + R +] extends [never] + ? UnknownConditions + : RenderPropConditions; + +type UnknownConditions = { + [name: string]: StyleValue | VariantMap; +}; + +type BooleanConditionName = `is${Capitalize}` | `allows${Capitalize}`; +type RenderPropConditions> = { + [K in keyof R]?: K extends BooleanConditionName ? StyleValue : VariantMap; +}; + +type Values = { + [k in K]: T[k]; +}[K]; + +export type VariantMap< + K extends CSSValue, + V extends Value, + C extends string, + R extends RenderProps +> = { + [k in K]?: StyleValue; +}; + +// These types are used to recursively extract all runtime conditions/variants in case an +// explicit render prop generic type is not provided/inferred. This allows the returned function +// to automatically accept the correct arguments based on the style definition. +type ExtractConditionalValue = V extends Value + ? never + : + // Add the keys from this level for boolean conditions not in the theme. + | RuntimeConditionObject, boolean> + // Add variant values for non-boolean named keys. + | Variants> + // Recursively include conditions from the next level. + | ExtractConditionalValue< + C, + | Values> + // And skip over variants to get to the values. + | Values>> + >; + +type RuntimeConditionObject = K extends keyof any ? {[P in K]?: V} : never; + +type Variants = K extends any + ? { + [k in K]?: keyof T[k]; + } + : never; + +type InferCustomPropertyValue = T extends {value: infer V} ? V : never; + +// https://stackoverflow.com/questions/49401866/all-possible-keys-of-an-union-type +type KeysOfUnion = T extends T ? keyof T : never; +type KeyValue> = T extends {[k in K]?: any} ? T[K] : never; +type MergeUnion = {[K in KeysOfUnion]: KeyValue}; + +type RuntimeConditionsObject> = MergeUnion< + ExtractConditionalValue< + C, + | Values> + // Skip top-level object for custom properties and go straight to value. + | InferCustomPropertyValue>> + > +>; + +// Return an intersection between string and the used style props so we can prevent passing certain properties to components. +export type StyleString

= string & {properties: P}; +type Keys = [R] extends [never] ? never : keyof R; +export type RuntimeStyleFunction = + Keys extends never ? () => StyleString : (props: R) => StyleString; + +// If a render prop type was provided, use that so that we get autocomplete for conditions. +// Otherwise, fall back to inferring the render props from the style definition itself. +type InferProps> = [R] extends [never] + ? AllowOthers> + : R; +type AllowOthers = Keys extends never ? never : R | {[x: string]: any}; +type StyleFunctionResult = + Keys extends never ? StyleString : (props: R) => StyleString; +type StyleFunctionResultWithOverrides = ( + props: Keys extends never ? null : R, + overrides?: StyleString | null +) => StyleString; +export type StyleFunction, C extends string> = { + < + R extends RenderProps = never, + S extends Style = Style + >( + style: S + ): StyleFunctionResult>; + < + R extends RenderProps = never, + S extends Style = Style + >( + style: S, + allowedProperties: readonly string[] + ): StyleFunctionResultWithOverrides>; +}; diff --git a/packages/@react-spectrum/s2-ai/src/useSpectrumContextProps.ts b/packages/@react-spectrum/s2-ai/src/useSpectrumContextProps.ts new file mode 100644 index 00000000000..210743f597a --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/useSpectrumContextProps.ts @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {Context, ForwardedRef, useMemo} from 'react'; +import {ContextValue, SlotProps, useSlottedContext} from 'react-aria-components/slots'; +import {mergeProps} from 'react-aria/mergeProps'; +import {mergeRefs} from 'react-aria/mergeRefs'; +import {mergeStyles} from './mergeStyles'; +import {RefObject} from '@react-types/shared'; +import {useObjectRef} from 'react-aria/useObjectRef'; + +export function useSpectrumContextProps( + props: T & SlotProps, + ref: ForwardedRef, + context: Context> +): [T, RefObject] { + let ctx = useSlottedContext(context, props.slot) || {}; + let {ref: contextRef, ...contextProps} = ctx as any; + let mergedRef = useObjectRef(useMemo(() => mergeRefs(ref, contextRef), [ref, contextRef])); + let mergedProps = mergeProps(contextProps, props) as unknown as T; + + // mergeProps does not merge `UNSAFE_style` + if ( + 'UNSAFE_style' in contextProps && + contextProps.UNSAFE_style && + 'UNSAFE_style' in props && + props.UNSAFE_style + ) { + // @ts-ignore + mergedProps.UNSAFE_style = {...contextProps.UNSAFE_style, ...props.UNSAFE_style}; + } + + // Merge macro styles. + if ('styles' in contextProps && contextProps.styles && 'styles' in props && props.styles) { + // @ts-ignore + mergedProps.styles = mergeStyles(contextProps.styles, props.styles); + } + + return [mergedProps, mergedRef]; +} diff --git a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx index b7f4fecef3f..c86960d95a1 100644 --- a/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx +++ b/packages/@react-spectrum/s2-ai/stories/HorizontalCard.stories.tsx @@ -15,8 +15,8 @@ import {ActionMenu} from '@react-spectrum/s2/ActionMenu'; import {Asset as AssetComponent, AssetList} from '@react-spectrum/s2-ai/AssetList'; import { BasicHorizontalCard, - HorizontalCard, - CardPreview as HorizontalCardPreview + CardPreview, + HorizontalCard } from '@react-spectrum/s2-ai/HorizontalCard'; import {Card, CardProps} from '@react-spectrum/s2/Card'; import ChevronRight from '@react-spectrum/s2/icons/ChevronRight'; @@ -56,7 +56,7 @@ const meta: Meta = { decorators: (children, {args}) => ( {children(args)} ), - title: 'HorizontalCard' + title: 'S2-AI/HorizontalCard' }; export default meta; @@ -74,12 +74,12 @@ export const Horizontal: Story = { justifyContent: 'center' }}> - + - + - + - + Date: Thu, 28 May 2026 16:09:42 +1000 Subject: [PATCH 09/11] reduce diff --- packages/react-aria/src/tag/useTag.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/react-aria/src/tag/useTag.ts b/packages/react-aria/src/tag/useTag.ts index 1e99ae80332..078fdf77109 100644 --- a/packages/react-aria/src/tag/useTag.ts +++ b/packages/react-aria/src/tag/useTag.ts @@ -15,6 +15,7 @@ import {AriaButtonProps} from '../button/useButton'; import {DOMAttributes, FocusableElement, Node, RefObject} from '@react-types/shared'; import {filterDOMProps} from '../utils/filterDOMProps'; import {hookData} from './useTagGroup'; +// @ts-ignore import intlMessages from '../../intl/tag/*.json'; import {KeyboardEvent} from 'react'; import type {ListState} from 'react-stately/useListState'; From 29a82b789f6556a68c815ed90862ecfa22c9dcc0 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Thu, 28 May 2026 16:10:27 +1000 Subject: [PATCH 10/11] undo --- packages/react-aria/src/tag/useTag.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-aria/src/tag/useTag.ts b/packages/react-aria/src/tag/useTag.ts index 078fdf77109..8f7f9143ffa 100644 --- a/packages/react-aria/src/tag/useTag.ts +++ b/packages/react-aria/src/tag/useTag.ts @@ -15,11 +15,11 @@ import {AriaButtonProps} from '../button/useButton'; import {DOMAttributes, FocusableElement, Node, RefObject} from '@react-types/shared'; import {filterDOMProps} from '../utils/filterDOMProps'; import {hookData} from './useTagGroup'; -// @ts-ignore import intlMessages from '../../intl/tag/*.json'; import {KeyboardEvent} from 'react'; import type {ListState} from 'react-stately/useListState'; import {mergeProps} from '../utils/mergeProps'; +// @ts-ignore import {SelectableItemStates} from '../selection/useSelectableItem'; import {useDescription} from '../utils/useDescription'; import {useFocusable} from '../interactions/useFocusable'; From 87f3c5a6d258c8aea526d05bd765b54b3e242998 Mon Sep 17 00:00:00 2001 From: Rob Snow Date: Thu, 28 May 2026 16:38:09 +1000 Subject: [PATCH 11/11] fix all the things --- jest.config.js | 1 + .../@react-spectrum/s2-ai/src/AssetList.tsx | 13 +++++--- .../s2-ai/src/HorizontalCard.tsx | 26 +++++++-------- .../s2-ai/src/style-utils-copy.ts | 3 ++ .../@react-spectrum/s2-ai/src/useDOMRef.ts | 32 +++++++++++++++++++ 5 files changed, 56 insertions(+), 19 deletions(-) create mode 100644 packages/@react-spectrum/s2-ai/src/useDOMRef.ts diff --git a/jest.config.js b/jest.config.js index 7254c140eb6..49d69cd0c80 100644 --- a/jest.config.js +++ b/jest.config.js @@ -93,6 +93,7 @@ module.exports = { moduleNameMapper: { '^bundle-text:.*\\.svg$': '/__mocks__/fileMock.js', '\\.svg$': '/__mocks__/svg.js', + '^@react-spectrum/s2/icons/.+$': '/__mocks__/svg.js', '\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/__mocks__/fileMock.js', '\\.(css|styl)$': 'identity-obj-proxy' diff --git a/packages/@react-spectrum/s2-ai/src/AssetList.tsx b/packages/@react-spectrum/s2-ai/src/AssetList.tsx index 02d5b2fb45e..665a5d3b4e4 100644 --- a/packages/@react-spectrum/s2-ai/src/AssetList.tsx +++ b/packages/@react-spectrum/s2-ai/src/AssetList.tsx @@ -10,7 +10,7 @@ * governing permissions and limitations under the License. */ -import {AriaLabelingProps} from '@react-types/shared'; +import {AriaLabelingProps, DOMRef} from '@react-types/shared'; import {baseColor, focusRing, style} from '@react-spectrum/s2/style' with {type: 'macro'}; import {BasicHorizontalCard} from './HorizontalCard'; import {Button} from 'react-aria-components/Button'; @@ -21,6 +21,7 @@ import {forwardRef, useRef} from 'react'; import {iconStyle} from '@react-spectrum/s2/style' with {type: 'macro'}; import {pressScale} from '@react-spectrum/s2/pressScale'; import {Tag, TagGroup, TagList} from 'react-aria-components/TagGroup'; +import {useDOMRef} from './useDOMRef'; const hoverBackground = { default: 'gray-200', @@ -95,9 +96,10 @@ const CloseButton = function CloseButton(props) { let assetListStyles = style({}, getAllowedOverrides()); -export const AssetList = forwardRef(function AssetList(props: any, ref: Ref) { +export const AssetList = forwardRef(function AssetList(props: any, ref: DOMRef) { + let domRef = useDOMRef(ref); return ( - + + ref: DOMRef ) { let { textValue, @@ -124,13 +126,14 @@ export const Asset = forwardRef(function Asset( 'aria-describedby': ariaDescribedby, ...otherProps } = props; + let domRef = useDOMRef(ref); return ( {props.children} {/** Definitely not a close button, though looks like one. */} diff --git a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx index 43d034847cd..d4aadc9d74c 100644 --- a/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx +++ b/packages/@react-spectrum/s2-ai/src/HorizontalCard.tsx @@ -23,7 +23,7 @@ import { import {composeRenderProps} from 'react-aria-components/composeRenderProps'; import {ContentContext} from '@react-spectrum/s2/Content'; import {ContextValue, DEFAULT_SLOT, Provider} from 'react-aria-components/slots'; -import {createContext, forwardRef, ReactNode, useContext, useRef} from 'react'; +import {createContext, forwardRef, ReactNode, useContext} from 'react'; import {DOMProps, DOMRef, DOMRefValue, GlobalDOMAttributes} from '@react-types/shared'; import {filterDOMProps} from 'react-aria/filterDOMProps'; import {FooterContext} from '@react-spectrum/s2/Footer'; @@ -39,6 +39,7 @@ import {pressScale} from '@react-spectrum/s2/pressScale'; import {SkeletonContext, useIsSkeleton} from '@react-spectrum/s2/Skeleton'; import type {StyleProps, UnsafeStyles} from './style-utils-copy'; import {TextContext} from '@react-spectrum/s2/Text'; +import {useDOMRef} from './useDOMRef'; import {useSpectrumContextProps} from './useSpectrumContextProps'; interface CardRenderProps { @@ -446,10 +447,11 @@ const actionButtonSize = { const Card = forwardRef(function Card( props: CardProps & {isBasic?: boolean}, - ref: Ref + ref: DOMRef ) { [props] = useSpectrumContextProps(props, ref, CardContext); let {ElementType} = useContext(InternalCardViewContext); + let domRef = useDOMRef(ref); let { isBasic = false, density = 'regular', @@ -505,16 +507,14 @@ const Card = forwardRef(function Card( ); - let fallbackRef = useRef(null); - let newRef = ref ?? fallbackRef; - let press = pressScale(newRef, UNSAFE_style); + let press = pressScale(domRef, UNSAFE_style); if (ElementType === 'div' && !isSkeleton && props.href) { // Standalone Card that has an href should be rendered as a Link. // NOTE: In this case, the card must not contain interactive elements. return ( UNSAFE_className + card( @@ -543,7 +543,7 @@ const Card = forwardRef(function Card( id={id != null ? String(id) : undefined} // @ts-ignore - React < 19 compat inert={inertValue(isSkeleton)} - ref={ref} + ref={domRef} className={ UNSAFE_className + card({size, density, variant, isBasic, isCardView: ElementType !== 'div'}, styles) @@ -568,7 +568,7 @@ const Card = forwardRef(function Card( return ( UNSAFE_className + card( @@ -644,21 +644,19 @@ export interface CardPreviewProps extends UnsafeStyles, DOMProps { export const CardPreview = forwardRef(function CardPreview( props: CardPreviewProps, - ref: Ref + ref: DOMRef ) { - console.log('CardPreview', props); let {size, isQuiet, isHovered, isFocusVisible, isSelected, isPressed, isCheckboxSelection} = useContext(InternalCardContext); let {UNSAFE_className = '', UNSAFE_style} = props; - let fallbackRef = useRef(null); - let newRef = ref ?? fallbackRef; + let domRef = useDOMRef(ref); return (

+ style={isQuiet ? pressScale(domRef)({isPressed}) : UNSAFE_style}> {isQuiet && } {isQuiet && isCheckboxSelection && }
diff --git a/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts b/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts index 9cf0bfe2c48..fa4bb418230 100644 --- a/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts +++ b/packages/@react-spectrum/s2-ai/src/style-utils-copy.ts @@ -1,3 +1,6 @@ +import {CSSProperties} from 'react'; +import {StyleString} from './types'; + export const controlSize = (size: 'sm' | 'md' = 'md'): typeof controlSizeM | typeof controlSizeS => size === 'sm' ? controlSizeS : controlSizeM; diff --git a/packages/@react-spectrum/s2-ai/src/useDOMRef.ts b/packages/@react-spectrum/s2-ai/src/useDOMRef.ts new file mode 100644 index 00000000000..8b3afaf7881 --- /dev/null +++ b/packages/@react-spectrum/s2-ai/src/useDOMRef.ts @@ -0,0 +1,32 @@ +/* + * Copyright 2026 Adobe. All rights reserved. + * This file is licensed to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. You may obtain a copy + * of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + * OF ANY KIND, either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +import {DOMRef, DOMRefValue, RefObject} from '@react-types/shared'; +import {useImperativeHandle, useRef} from 'react'; + +export function createDOMRef( + ref: RefObject +): DOMRefValue { + return { + UNSAFE_getDOMNode() { + return ref.current; + } + }; +} + +export function useDOMRef( + ref: DOMRef +): RefObject { + let domRef = useRef(null); + useImperativeHandle(ref, () => createDOMRef(domRef)); + return domRef; +}