mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-10 02:58:29 +00:00
chore: generate
This commit is contained in:
parent
4f88cab20d
commit
ddbc8d3b75
20 changed files with 169 additions and 97 deletions
|
|
@ -182,7 +182,8 @@ const en = {
|
|||
"model.noDataDescription": "Try opening a model from the leaderboard.",
|
||||
"model.noMatched": "No model facts or usage rows matched {{id}}.",
|
||||
"model.fallback": "Model",
|
||||
"model.catalogFallback": "Model facts from the shared model index. OpenCode Go usage appears once this model has activity.",
|
||||
"model.catalogFallback":
|
||||
"Model facts from the shared model index. OpenCode Go usage appears once this model has activity.",
|
||||
"model.unranked": "Unranked across last week's OpenCode Go usage",
|
||||
"model.ranked": "Ranked #{{rank}} across last week's OpenCode Go usage",
|
||||
"model.observedVolume": "with {{share}} of observed 2M volume.",
|
||||
|
|
|
|||
|
|
@ -163,7 +163,8 @@ export const dict = {
|
|||
"model.noDataDescription": "جرّب فتح نموذج من لوحة الترتيب.",
|
||||
"model.noMatched": "لم تطابق أي حقائق نموذج أو صفوف استخدام {{id}}.",
|
||||
"model.fallback": "نموذج",
|
||||
"model.catalogFallback": "حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
|
||||
"model.catalogFallback":
|
||||
"حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
|
||||
"model.unranked": "غير مصنف ضمن استخدام OpenCode Go للأسبوع الماضي",
|
||||
"model.ranked": "مصنف رقم {{rank}} ضمن استخدام OpenCode Go للأسبوع الماضي",
|
||||
"model.observedVolume": "مع {{share}} من حجم 2M المرصود.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Atualizado",
|
||||
"home.noRows": "Ainda não há linhas",
|
||||
"home.justNow": "agora mesmo",
|
||||
"home.heroCopy": "Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
|
||||
"home.heroCopy":
|
||||
"Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
|
||||
"home.loadingTitle": "Carregando dados",
|
||||
"home.loadingDescription": "Lendo agregados de modelos.",
|
||||
"home.usageTitle": "Uso",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Nenhum modelo correspondeu a este laboratório.",
|
||||
"lab.heroPrefix": "Explore {{count}} modelos da {{lab}} usados no OpenCode",
|
||||
"lab.heroIncluding": "incluindo {{models}}",
|
||||
"lab.heroSuffix": "Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
|
||||
"lab.heroSuffix":
|
||||
"Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
|
||||
"lab.tokensProcessed": "Tokens processados",
|
||||
"lab.pending": "Pendente",
|
||||
"lab.usageAfterActivity": "O uso aparece depois que a atividade do modelo chega",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Tente abrir um modelo pela classificação.",
|
||||
"model.noMatched": "Nenhum fato do modelo ou linha de uso correspondeu a {{id}}.",
|
||||
"model.fallback": "Modelo",
|
||||
"model.catalogFallback": "Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
|
||||
"model.catalogFallback":
|
||||
"Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
|
||||
"model.unranked": "Sem classificação no uso do OpenCode Go da última semana",
|
||||
"model.ranked": "Classificado em #{{rank}} no uso do OpenCode Go da última semana",
|
||||
"model.observedVolume": "com {{share}} do volume observado de 2M.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Opdateret",
|
||||
"home.noRows": "Ingen rækker endnu",
|
||||
"home.justNow": "lige nu",
|
||||
"home.heroCopy": "Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
|
||||
"home.heroCopy":
|
||||
"Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
|
||||
"home.loadingTitle": "Indlæser data",
|
||||
"home.loadingDescription": "Læser modelaggregater.",
|
||||
"home.usageTitle": "Brug",
|
||||
|
|
@ -163,7 +164,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Prøv at åbne en model fra ranglisten.",
|
||||
"model.noMatched": "Ingen modelfakta eller brugsrækker matchede {{id}}.",
|
||||
"model.fallback": "Model",
|
||||
"model.catalogFallback": "Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
|
||||
"model.catalogFallback":
|
||||
"Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
|
||||
"model.unranked": "Ikke rangeret i sidste uges OpenCode Go-brug",
|
||||
"model.ranked": "Rangeret #{{rank}} i sidste uges OpenCode Go-brug",
|
||||
"model.observedVolume": "med {{share}} af observeret 2M-volumen.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Aktualisiert",
|
||||
"home.noRows": "Noch keine Zeilen",
|
||||
"home.justNow": "gerade eben",
|
||||
"home.heroCopy": "Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
|
||||
"home.heroCopy":
|
||||
"Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
|
||||
"home.loadingTitle": "Daten werden geladen",
|
||||
"home.loadingDescription": "Modellaggregate werden gelesen.",
|
||||
"home.usageTitle": "Nutzung",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Keine Modelle passten zu diesem Lab.",
|
||||
"lab.heroPrefix": "Erkunde {{count}} {{lab}}-Modelle, die in OpenCode verwendet werden",
|
||||
"lab.heroIncluding": "einschließlich {{models}}",
|
||||
"lab.heroSuffix": "Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
|
||||
"lab.heroSuffix":
|
||||
"Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
|
||||
"lab.tokensProcessed": "Verarbeitete Tokens",
|
||||
"lab.pending": "Ausstehend",
|
||||
"lab.usageAfterActivity": "Nutzung erscheint, sobald Modellaktivität vorliegt",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Öffne ein Modell aus der Bestenliste.",
|
||||
"model.noMatched": "Keine Modellfakten oder Nutzungszeilen passten zu {{id}}.",
|
||||
"model.fallback": "Modell",
|
||||
"model.catalogFallback": "Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
|
||||
"model.catalogFallback":
|
||||
"Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
|
||||
"model.unranked": "In der OpenCode Go-Nutzung der letzten Woche nicht platziert",
|
||||
"model.ranked": "Rang #{{rank}} in der OpenCode Go-Nutzung der letzten Woche",
|
||||
"model.observedVolume": "mit {{share}} des beobachteten 2M-Volumens.",
|
||||
|
|
|
|||
|
|
@ -135,7 +135,8 @@ export const dict = {
|
|||
"lab.notFound": "Ningún modelo coincidió con este laboratorio.",
|
||||
"lab.heroPrefix": "Explora {{count}} modelos de {{lab}} usados en OpenCode",
|
||||
"lab.heroIncluding": "incluidos {{models}}",
|
||||
"lab.heroSuffix": "Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
|
||||
"lab.heroSuffix":
|
||||
"Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
|
||||
"lab.tokensProcessed": "Tokens procesados",
|
||||
"lab.pending": "Pendiente",
|
||||
"lab.usageAfterActivity": "El uso aparece después de que llegue actividad del modelo",
|
||||
|
|
@ -163,7 +164,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Prueba a abrir un modelo desde la clasificación.",
|
||||
"model.noMatched": "Ningún dato del modelo ni fila de uso coincidió con {{id}}.",
|
||||
"model.fallback": "Modelo",
|
||||
"model.catalogFallback": "Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
|
||||
"model.catalogFallback":
|
||||
"Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
|
||||
"model.unranked": "Sin clasificación en el uso de OpenCode Go de la semana pasada",
|
||||
"model.ranked": "Clasificado #{{rank}} en el uso de OpenCode Go de la semana pasada",
|
||||
"model.observedVolume": "con {{share}} del volumen 2M observado.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Mis à jour",
|
||||
"home.noRows": "Aucune ligne pour l'instant",
|
||||
"home.justNow": "à l'instant",
|
||||
"home.heroCopy": "Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
|
||||
"home.heroCopy":
|
||||
"Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
|
||||
"home.loadingTitle": "Chargement des données",
|
||||
"home.loadingDescription": "Lecture des agrégats de modèles.",
|
||||
"home.usageTitle": "Utilisation",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Aucun modèle ne correspondait à ce laboratoire.",
|
||||
"lab.heroPrefix": "Explorez {{count}} modèles {{lab}} utilisés dans OpenCode",
|
||||
"lab.heroIncluding": "dont {{models}}",
|
||||
"lab.heroSuffix": "Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
|
||||
"lab.heroSuffix":
|
||||
"Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
|
||||
"lab.tokensProcessed": "Tokens traités",
|
||||
"lab.pending": "En attente",
|
||||
"lab.usageAfterActivity": "L'utilisation apparaît après l'arrivée de l'activité du modèle",
|
||||
|
|
@ -144,7 +146,8 @@ export const dict = {
|
|||
"lab.usageTitle": "Utilisation des tokens {{lab}}",
|
||||
"lab.usageDescription": "Volume quotidien de tokens OpenCode sur les deux derniers mois.",
|
||||
"lab.noUsageTitle": "Aucune utilisation pour l'instant",
|
||||
"lab.noUsageDescription": "L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
|
||||
"lab.noUsageDescription":
|
||||
"L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
|
||||
"lab.dailyTokenChart": "Graphique quotidien d'utilisation des tokens {{lab}}",
|
||||
"lab.dailyTokens": "Tokens quotidiens",
|
||||
"lab.tokens": "tokens",
|
||||
|
|
@ -163,7 +166,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Essayez d'ouvrir un modèle depuis le classement.",
|
||||
"model.noMatched": "Aucun fait de modèle ni aucune ligne d'utilisation ne correspondait à {{id}}.",
|
||||
"model.fallback": "Modèle",
|
||||
"model.catalogFallback": "Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
|
||||
"model.catalogFallback":
|
||||
"Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
|
||||
"model.unranked": "Non classé dans l'utilisation OpenCode Go de la semaine dernière",
|
||||
"model.ranked": "Classé #{{rank}} dans l'utilisation OpenCode Go de la semaine dernière",
|
||||
"model.observedVolume": "avec {{share}} du volume 2M observé.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Aggiornato",
|
||||
"home.noRows": "Ancora nessuna riga",
|
||||
"home.justNow": "proprio ora",
|
||||
"home.heroCopy": "Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
|
||||
"home.heroCopy":
|
||||
"Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
|
||||
"home.loadingTitle": "Caricamento dati",
|
||||
"home.loadingDescription": "Lettura degli aggregati dei modelli.",
|
||||
"home.usageTitle": "Utilizzo",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Nessun modello corrispondeva a questo laboratorio.",
|
||||
"lab.heroPrefix": "Esplora {{count}} modelli {{lab}} usati in OpenCode",
|
||||
"lab.heroIncluding": "inclusi {{models}}",
|
||||
"lab.heroSuffix": "Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
|
||||
"lab.heroSuffix":
|
||||
"Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
|
||||
"lab.tokensProcessed": "Token elaborati",
|
||||
"lab.pending": "In sospeso",
|
||||
"lab.usageAfterActivity": "L'utilizzo appare dopo l'arrivo dell'attività del modello",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Prova ad aprire un modello dalla classifica.",
|
||||
"model.noMatched": "Nessun fatto modello o riga di utilizzo corrispondeva a {{id}}.",
|
||||
"model.fallback": "Modello",
|
||||
"model.catalogFallback": "Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
|
||||
"model.catalogFallback":
|
||||
"Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
|
||||
"model.unranked": "Non classificato nell'utilizzo OpenCode Go della scorsa settimana",
|
||||
"model.ranked": "Posizione #{{rank}} nell'utilizzo OpenCode Go della scorsa settimana",
|
||||
"model.observedVolume": "con {{share}} del volume 2M osservato.",
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ export const dict = {
|
|||
"home.updated": "更新済み",
|
||||
"home.noRows": "まだ行がありません",
|
||||
"home.justNow": "たった今",
|
||||
"home.heroCopy": "実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
|
||||
"home.heroCopy":
|
||||
"実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
|
||||
"home.loadingTitle": "データを読み込み中",
|
||||
"home.loadingDescription": "モデル集計を読み込んでいます。",
|
||||
"home.usageTitle": "使用量",
|
||||
|
|
@ -165,7 +166,8 @@ export const dict = {
|
|||
"model.noDataDescription": "ランキングからモデルを開いてみてください。",
|
||||
"model.noMatched": "{{id}}に一致するモデル情報または使用行はありません。",
|
||||
"model.fallback": "モデル",
|
||||
"model.catalogFallback": "共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
|
||||
"model.catalogFallback":
|
||||
"共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
|
||||
"model.unranked": "先週のOpenCode Go使用量では未ランク",
|
||||
"model.ranked": "先週のOpenCode Go使用量で#{{rank}}位",
|
||||
"model.observedVolume": "観測された2M量の{{share}}。",
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@ export const dict = {
|
|||
"home.updated": "업데이트됨",
|
||||
"home.noRows": "아직 행이 없습니다",
|
||||
"home.justNow": "방금 전",
|
||||
"home.heroCopy": "실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
|
||||
"home.heroCopy":
|
||||
"실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
|
||||
"home.loadingTitle": "데이터 로딩 중",
|
||||
"home.loadingDescription": "모델 집계를 읽는 중입니다.",
|
||||
"home.usageTitle": "사용량",
|
||||
|
|
@ -165,7 +166,8 @@ export const dict = {
|
|||
"model.noDataDescription": "리더보드에서 모델을 열어보세요.",
|
||||
"model.noMatched": "{{id}}와 일치하는 모델 정보나 사용 행이 없습니다.",
|
||||
"model.fallback": "모델",
|
||||
"model.catalogFallback": "공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
|
||||
"model.catalogFallback":
|
||||
"공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
|
||||
"model.unranked": "지난주 OpenCode Go 사용량에서 순위 없음",
|
||||
"model.ranked": "지난주 OpenCode Go 사용량에서 #{{rank}}위",
|
||||
"model.observedVolume": "관측된 2M 볼륨의 {{share}}.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Oppdatert",
|
||||
"home.noRows": "Ingen rader ennå",
|
||||
"home.justNow": "akkurat nå",
|
||||
"home.heroCopy": "Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
|
||||
"home.heroCopy":
|
||||
"Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
|
||||
"home.loadingTitle": "Laster data",
|
||||
"home.loadingDescription": "Leser modellaggregater.",
|
||||
"home.usageTitle": "Bruk",
|
||||
|
|
@ -163,7 +164,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Prøv å åpne en modell fra rangeringen.",
|
||||
"model.noMatched": "Ingen modellfakta eller bruksrader matchet {{id}}.",
|
||||
"model.fallback": "Modell",
|
||||
"model.catalogFallback": "Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
|
||||
"model.catalogFallback":
|
||||
"Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
|
||||
"model.unranked": "Ikke rangert i forrige ukes OpenCode Go-bruk",
|
||||
"model.ranked": "Rangert #{{rank}} i forrige ukes OpenCode Go-bruk",
|
||||
"model.observedVolume": "med {{share}} av observert 2M-volum.",
|
||||
|
|
|
|||
|
|
@ -163,7 +163,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Spróbuj otworzyć model z rankingu.",
|
||||
"model.noMatched": "Żadne fakty modelu ani wiersze użycia nie pasowały do {{id}}.",
|
||||
"model.fallback": "Model",
|
||||
"model.catalogFallback": "Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
|
||||
"model.catalogFallback":
|
||||
"Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
|
||||
"model.unranked": "Bez pozycji w użyciu OpenCode Go z zeszłego tygodnia",
|
||||
"model.ranked": "Pozycja #{{rank}} w użyciu OpenCode Go z zeszłego tygodnia",
|
||||
"model.observedVolume": "z {{share}} obserwowanego wolumenu 2M.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Обновлено",
|
||||
"home.noRows": "Строк пока нет",
|
||||
"home.justNow": "только что",
|
||||
"home.heroCopy": "Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
|
||||
"home.heroCopy":
|
||||
"Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
|
||||
"home.loadingTitle": "Загрузка данных",
|
||||
"home.loadingDescription": "Читаем агрегаты моделей.",
|
||||
"home.usageTitle": "Использование",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Нет моделей, соответствующих этой лаборатории.",
|
||||
"lab.heroPrefix": "Изучайте {{count}} моделей {{lab}}, используемых в OpenCode",
|
||||
"lab.heroIncluding": "включая {{models}}",
|
||||
"lab.heroSuffix": "Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
|
||||
"lab.heroSuffix":
|
||||
"Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
|
||||
"lab.tokensProcessed": "Обработанные токены",
|
||||
"lab.pending": "Ожидает",
|
||||
"lab.usageAfterActivity": "Использование появится после активности модели",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Попробуйте открыть модель из рейтинга.",
|
||||
"model.noMatched": "Нет фактов модели или строк использования для {{id}}.",
|
||||
"model.fallback": "Модель",
|
||||
"model.catalogFallback": "Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
|
||||
"model.catalogFallback":
|
||||
"Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
|
||||
"model.unranked": "Нет рейтинга по использованию OpenCode Go за прошлую неделю",
|
||||
"model.ranked": "Ранг #{{rank}} по использованию OpenCode Go за прошлую неделю",
|
||||
"model.observedVolume": "с {{share}} наблюдаемого объема 2M.",
|
||||
|
|
|
|||
|
|
@ -165,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "ลองเปิดโมเดลจากลีดเดอร์บอร์ด",
|
||||
"model.noMatched": "ไม่มีข้อเท็จจริงของโมเดลหรือแถวการใช้งานที่ตรงกับ {{id}}",
|
||||
"model.fallback": "โมเดล",
|
||||
"model.catalogFallback": "ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
|
||||
"model.catalogFallback":
|
||||
"ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
|
||||
"model.unranked": "ไม่มีอันดับในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
|
||||
"model.ranked": "อันดับ #{{rank}} ในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
|
||||
"model.observedVolume": "พร้อม {{share}} ของปริมาณ 2M ที่สังเกตได้",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Güncellendi",
|
||||
"home.noRows": "Henüz satır yok",
|
||||
"home.justNow": "az önce",
|
||||
"home.heroCopy": "Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
|
||||
"home.heroCopy":
|
||||
"Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
|
||||
"home.loadingTitle": "Veriler yükleniyor",
|
||||
"home.loadingDescription": "Model toplamları okunuyor.",
|
||||
"home.usageTitle": "Kullanım",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Bu laboratuvarla eşleşen model yok.",
|
||||
"lab.heroPrefix": "OpenCode'da kullanılan {{count}} {{lab}} modelini keşfedin",
|
||||
"lab.heroIncluding": "{{models}} dahil",
|
||||
"lab.heroSuffix": "Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
|
||||
"lab.heroSuffix":
|
||||
"Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
|
||||
"lab.tokensProcessed": "İşlenen Tokenlar",
|
||||
"lab.pending": "Beklemede",
|
||||
"lab.usageAfterActivity": "Kullanım, model etkinliği ulaştıktan sonra görünür",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Sıralamadan bir model açmayı deneyin.",
|
||||
"model.noMatched": "{{id}} ile eşleşen model bilgisi veya kullanım satırı yok.",
|
||||
"model.fallback": "Model",
|
||||
"model.catalogFallback": "Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
|
||||
"model.catalogFallback":
|
||||
"Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
|
||||
"model.unranked": "Geçen haftaki OpenCode Go kullanımında sıralanmamış",
|
||||
"model.ranked": "Geçen haftaki OpenCode Go kullanımında #{{rank}} sırada",
|
||||
"model.observedVolume": "gözlemlenen 2M hacmin {{share}} payıyla.",
|
||||
|
|
|
|||
|
|
@ -81,7 +81,8 @@ export const dict = {
|
|||
"home.updated": "Оновлено",
|
||||
"home.noRows": "Рядків поки немає",
|
||||
"home.justNow": "щойно",
|
||||
"home.heroCopy": "Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
|
||||
"home.heroCopy":
|
||||
"Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
|
||||
"home.loadingTitle": "Завантаження даних",
|
||||
"home.loadingDescription": "Читаємо агрегати моделей.",
|
||||
"home.usageTitle": "Використання",
|
||||
|
|
@ -135,7 +136,8 @@ export const dict = {
|
|||
"lab.notFound": "Жодна модель не відповідала цій лабораторії.",
|
||||
"lab.heroPrefix": "Досліджуйте {{count}} моделей {{lab}}, що використовуються в OpenCode",
|
||||
"lab.heroIncluding": "зокрема {{models}}",
|
||||
"lab.heroSuffix": "Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
|
||||
"lab.heroSuffix":
|
||||
"Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
|
||||
"lab.tokensProcessed": "Оброблені токени",
|
||||
"lab.pending": "Очікується",
|
||||
"lab.usageAfterActivity": "Використання з'явиться після активності моделі",
|
||||
|
|
@ -163,7 +165,8 @@ export const dict = {
|
|||
"model.noDataDescription": "Спробуйте відкрити модель із рейтингу.",
|
||||
"model.noMatched": "Жодні факти моделі або рядки використання не відповідали {{id}}.",
|
||||
"model.fallback": "Модель",
|
||||
"model.catalogFallback": "Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
|
||||
"model.catalogFallback":
|
||||
"Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
|
||||
"model.unranked": "Без рейтингу у використанні OpenCode Go за минулий тиждень",
|
||||
"model.ranked": "Ранг #{{rank}} у використанні OpenCode Go за минулий тиждень",
|
||||
"model.observedVolume": "з {{share}} спостережуваного обсягу 2M.",
|
||||
|
|
|
|||
|
|
@ -107,11 +107,10 @@ export default function StatsModel() {
|
|||
const modelName = createMemo(() => catalogEntry()?.name ?? stats()?.model ?? modelParam() ?? i18n.t("model.fallback"))
|
||||
const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam()))
|
||||
const modelTitle = createMemo(() => i18n.t("model.title", { model: modelName() }))
|
||||
const modelDescription = createMemo(
|
||||
() => i18n.t("model.description", { model: modelName() }),
|
||||
)
|
||||
const modelDescription = createMemo(() => i18n.t("model.description", { model: modelName() }))
|
||||
const modelPath = createMemo(
|
||||
() => `/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
|
||||
() =>
|
||||
`/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
|
||||
)
|
||||
const modelUrl = createMemo(() => localizedUrl(language.locale(), modelPath()))
|
||||
const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
|
||||
|
|
@ -261,17 +260,10 @@ function ModelHero(props: { data: StatsModelData | null; catalog: ModelCatalogEn
|
|||
<span data-slot="model-id-tag">{modelId()}</span>
|
||||
</div>
|
||||
<h1>{props.catalog?.name ?? props.data?.model ?? i18n.t("model.fallback")}</h1>
|
||||
<Show
|
||||
when={props.data}
|
||||
fallback={
|
||||
<p>{i18n.t("model.catalogFallback")}</p>
|
||||
}
|
||||
>
|
||||
<Show when={props.data} fallback={<p>{i18n.t("model.catalogFallback")}</p>}>
|
||||
{(data) => (
|
||||
<p>
|
||||
{data().rank === null
|
||||
? i18n.t("model.unranked")
|
||||
: i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
|
||||
{data().rank === null ? i18n.t("model.unranked") : i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
|
||||
{i18n.t("model.observedVolume", { share: formatPercent(data().tokenShare) })}
|
||||
</p>
|
||||
)}
|
||||
|
|
@ -322,8 +314,14 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
|
|||
return (
|
||||
<aside data-component="model-catalog" aria-label={i18n.t("model.facts")}>
|
||||
<div data-slot="model-catalog-grid">
|
||||
<CatalogDatum label={i18n.t("model.context")} value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))} />
|
||||
<CatalogDatum label={i18n.t("model.output")} value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))} />
|
||||
<CatalogDatum
|
||||
label={i18n.t("model.context")}
|
||||
value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))}
|
||||
/>
|
||||
<CatalogDatum
|
||||
label={i18n.t("model.output")}
|
||||
value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))}
|
||||
/>
|
||||
<CatalogDatum
|
||||
label={i18n.t("model.knowledge")}
|
||||
value={formatCatalogDate(props.data.knowledge, language.tag(language.locale()), i18n.t("home.unknown"))}
|
||||
|
|
@ -332,7 +330,10 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
|
|||
label={i18n.t("model.release")}
|
||||
value={formatCatalogDate(props.data.releaseDate, language.tag(language.locale()), i18n.t("home.unknown"))}
|
||||
/>
|
||||
<CatalogDatum label={i18n.t("model.inputs")} value={formatCatalogModalities(props.data.modalities.input, i18n)} />
|
||||
<CatalogDatum
|
||||
label={i18n.t("model.inputs")}
|
||||
value={formatCatalogModalities(props.data.modalities.input, i18n)}
|
||||
/>
|
||||
</div>
|
||||
</aside>
|
||||
)
|
||||
|
|
@ -360,9 +361,21 @@ function ModelOverview(props: { data: StatsModelData | null }) {
|
|||
>
|
||||
{(data) => (
|
||||
<div data-component="model-metric-grid">
|
||||
<MetricCard label={i18n.t("model.tokens")} value={formatTokens(data().totals.tokens)} detail={i18n.t("model.lastTwoMonths")} />
|
||||
<MetricCard label={i18n.t("model.uniqueUsers")} value={formatUsers(data().totals.uniqueUsers)} detail={i18n.t("model.lastTwoMonths")} />
|
||||
<MetricCard label={i18n.t("model.sessions")} value={formatInteger(data().totals.sessions)} detail={i18n.t("model.completedSessions")} />
|
||||
<MetricCard
|
||||
label={i18n.t("model.tokens")}
|
||||
value={formatTokens(data().totals.tokens)}
|
||||
detail={i18n.t("model.lastTwoMonths")}
|
||||
/>
|
||||
<MetricCard
|
||||
label={i18n.t("model.uniqueUsers")}
|
||||
value={formatUsers(data().totals.uniqueUsers)}
|
||||
detail={i18n.t("model.lastTwoMonths")}
|
||||
/>
|
||||
<MetricCard
|
||||
label={i18n.t("model.sessions")}
|
||||
value={formatInteger(data().totals.sessions)}
|
||||
detail={i18n.t("model.completedSessions")}
|
||||
/>
|
||||
<MetricCard
|
||||
label={i18n.t("model.tokenShare")}
|
||||
value={formatPercent(data().tokenShare)}
|
||||
|
|
@ -388,7 +401,9 @@ function ModelUsageSection(props: { data: ModelUsagePoint[] }) {
|
|||
<SectionTitle title={i18n.t("nav.usage")} description={i18n.t("model.usageDescription")} />
|
||||
<Show
|
||||
when={props.data.some((item) => item.tokens > 0)}
|
||||
fallback={<ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />}
|
||||
fallback={
|
||||
<ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />
|
||||
}
|
||||
>
|
||||
<ModelColumnChart data={props.data} metric="tokens" ariaLabel={i18n.t("model.dailyTokenChart")} />
|
||||
</Show>
|
||||
|
|
@ -400,10 +415,7 @@ function ModelUsersSection(props: { data: ModelUsagePoint[] }) {
|
|||
const i18n = useI18n()
|
||||
return (
|
||||
<section id="users" data-section="model-panel">
|
||||
<SectionTitle
|
||||
title={i18n.t("model.uniqueUsers")}
|
||||
description={i18n.t("model.usersDescription")}
|
||||
/>
|
||||
<SectionTitle title={i18n.t("model.uniqueUsers")} description={i18n.t("model.usersDescription")} />
|
||||
<Show
|
||||
when={props.data.some((item) => item.users > 0)}
|
||||
fallback={
|
||||
|
|
@ -541,12 +553,19 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
|
|||
<Show
|
||||
when={props.data}
|
||||
fallback={
|
||||
<ModelEmptyState title={i18n.t("model.noEfficiencyTitle")} description={i18n.t("model.noEfficiencyDescription")} />
|
||||
<ModelEmptyState
|
||||
title={i18n.t("model.noEfficiencyTitle")}
|
||||
description={i18n.t("model.noEfficiencyDescription")}
|
||||
/>
|
||||
}
|
||||
>
|
||||
{(data) => (
|
||||
<div data-component="model-metric-grid" data-variant="dense">
|
||||
<MetricCard label={i18n.t("model.cost")} value={formatMoney(data().totals.cost)} detail={i18n.t("model.totalSpend")} />
|
||||
<MetricCard
|
||||
label={i18n.t("model.cost")}
|
||||
value={formatMoney(data().totals.cost)}
|
||||
detail={i18n.t("model.totalSpend")}
|
||||
/>
|
||||
<MetricCard
|
||||
label={i18n.t("model.costPerMillion")}
|
||||
value={
|
||||
|
|
@ -564,7 +583,11 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
|
|||
value={formatTokens(data().totals.tokensPerSession)}
|
||||
detail={i18n.t("model.average")}
|
||||
/>
|
||||
<MetricCard label={i18n.t("model.cacheRatio")} value={formatPercent(data().totals.cacheRatio)} detail={i18n.t("model.inputTokens")} />
|
||||
<MetricCard
|
||||
label={i18n.t("model.cacheRatio")}
|
||||
value={formatPercent(data().totals.cacheRatio)}
|
||||
detail={i18n.t("model.inputTokens")}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</Show>
|
||||
|
|
@ -602,9 +625,7 @@ function ModelGeoBreakdownSection(props: { data: Record<UsageRange, CountryEntry
|
|||
<SectionTitle title={i18n.t("nav.geoBreakdown")} description={i18n.t("model.geoDescription")} />
|
||||
<Show
|
||||
when={data().length > 0}
|
||||
fallback={
|
||||
<ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />
|
||||
}
|
||||
fallback={<ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />}
|
||||
>
|
||||
<div data-component="geo-breakdown">
|
||||
<div data-slot="geo-map-panel">
|
||||
|
|
@ -769,7 +790,9 @@ function ModelPeersSection(props: { data: StatsModelData | null }) {
|
|||
<SectionTitle title={i18n.t("nav.peers")} description={i18n.t("model.peersDescription")} />
|
||||
<Show
|
||||
when={props.data?.peers.length}
|
||||
fallback={<ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />}
|
||||
fallback={
|
||||
<ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />
|
||||
}
|
||||
>
|
||||
<ol data-component="model-peer-list">
|
||||
<For each={props.data?.peers ?? []}>
|
||||
|
|
|
|||
|
|
@ -62,9 +62,7 @@ export default function StatsLab() {
|
|||
const [themePreference, setThemePreference] = createSignal<ThemePreference>("system")
|
||||
const labName = createMemo(() => lab()?.name ?? formatCatalogLabName(labParam()))
|
||||
const labTitle = createMemo(() => i18n.t("lab.title", { lab: labName() }))
|
||||
const labDescription = createMemo(
|
||||
() => i18n.t("lab.description", { lab: labName() }),
|
||||
)
|
||||
const labDescription = createMemo(() => i18n.t("lab.description", { lab: labName() }))
|
||||
const labPath = createMemo(() => `/data/${lab()?.id ?? labParam()}`)
|
||||
const labUrl = createMemo(() => localizedUrl(language.locale(), labPath()))
|
||||
const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
|
||||
|
|
@ -212,7 +210,9 @@ function LabHero(props: { lab: ModelCatalogLab; stats: StatsLabData | null }) {
|
|||
{props.stats
|
||||
? i18n.t("lab.shareOfUsage", { share: formatPercent(props.stats.tokenShare) })
|
||||
: latest()
|
||||
? i18n.t("lab.latestRelease", { date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")) })
|
||||
? i18n.t("lab.latestRelease", {
|
||||
date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")),
|
||||
})
|
||||
: i18n.t("lab.usageAfterActivity")}
|
||||
</p>
|
||||
</div>
|
||||
|
|
@ -240,12 +240,7 @@ function LabUsageSection(props: { lab: ModelCatalogLab; data: StatsLabData | nul
|
|||
</p>
|
||||
<Show
|
||||
when={usage().some((item) => item.tokens > 0)}
|
||||
fallback={
|
||||
<LabEmptyState
|
||||
title={i18n.t("lab.noUsageTitle")}
|
||||
description={i18n.t("lab.noUsageDescription")}
|
||||
/>
|
||||
}
|
||||
fallback={<LabEmptyState title={i18n.t("lab.noUsageTitle")} description={i18n.t("lab.noUsageDescription")} />}
|
||||
>
|
||||
<div
|
||||
data-component="model-usage-chart"
|
||||
|
|
|
|||
|
|
@ -216,8 +216,7 @@ function Hero(props: { updatedAt: string | null }) {
|
|||
if (
|
||||
formatUpdatedAtLabel(
|
||||
formatUpdatedAtParts(props.updatedAt, nextTimeZone, language.tag(language.locale()), i18n.t("home.justNow")),
|
||||
) ===
|
||||
formatUpdatedAtLabel(updatedAtParts("UTC"))
|
||||
) === formatUpdatedAtLabel(updatedAtParts("UTC"))
|
||||
)
|
||||
return
|
||||
const timeouts: number[] = []
|
||||
|
|
@ -993,7 +992,9 @@ function LeaderboardCard(props: {
|
|||
data-component="leader-card"
|
||||
data-size={props.size}
|
||||
data-active={props.active ? "true" : undefined}
|
||||
href={language.route(`${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`)}
|
||||
href={language.route(
|
||||
`${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`,
|
||||
)}
|
||||
role="listitem"
|
||||
tabIndex={0}
|
||||
aria-label={`${String(props.entry.rank).padStart(2, "0")} ${props.entry.model} ${i18n.t("chart.byAuthor", { author: props.entry.author })}`}
|
||||
|
|
@ -1110,7 +1111,9 @@ function MarketShareSection(props: { data: StatsHomeData["market"] }) {
|
|||
<p>
|
||||
<span>[*]</span>
|
||||
<strong>
|
||||
{inspecting() ? formatMarketDate(activeDay(), i18n.t("home.noData")) : formatMarketRange(data(), i18n.t("home.noData"))}
|
||||
{inspecting()
|
||||
? formatMarketDate(activeDay(), i18n.t("home.noData"))
|
||||
: formatMarketRange(data(), i18n.t("home.noData"))}
|
||||
</strong>
|
||||
</p>
|
||||
<div hidden>
|
||||
|
|
@ -1311,7 +1314,9 @@ function GeoBreakdownSection(props: { data: StatsHomeData["country"] }) {
|
|||
{(country) => (
|
||||
<div data-slot="geo-active-country">
|
||||
<span>#{String(country().rank).padStart(2, "0")}</span>
|
||||
<strong>{formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
|
||||
<strong>
|
||||
{formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}
|
||||
</strong>
|
||||
<p>
|
||||
<b>{formatGeoTokens(country().tokens)}</b>
|
||||
<em>{formatGeoShare(country().share)}</em>
|
||||
|
|
@ -1444,7 +1449,9 @@ function GeoCountryList(props: {
|
|||
>
|
||||
<span>{String(country.rank).padStart(2, "0")}</span>
|
||||
<i />
|
||||
<strong>{formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
|
||||
<strong>
|
||||
{formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}
|
||||
</strong>
|
||||
<em>{formatGeoTokens(country.tokens)}</em>
|
||||
<b>{formatGeoShare(country.share)}</b>
|
||||
</button>
|
||||
|
|
@ -1661,9 +1668,7 @@ function CacheRatioSection(props: { data: StatsHomeData["cacheRatio"] }) {
|
|||
<SectionTitle title={i18n.t("home.cacheRatioTitle")} description={i18n.t("home.cacheRatioDescription")} />
|
||||
<Show
|
||||
when={visible().length > 0}
|
||||
fallback={
|
||||
<EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />
|
||||
}
|
||||
fallback={<EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />}
|
||||
>
|
||||
<CacheRatioChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />
|
||||
</Show>
|
||||
|
|
@ -1790,10 +1795,7 @@ function SessionCostSection(props: { data: StatsHomeData["sessionCost"] }) {
|
|||
<Show
|
||||
when={visible().length > 0}
|
||||
fallback={
|
||||
<EmptyState
|
||||
title={i18n.t("home.noSessionCostTitle")}
|
||||
description={i18n.t("home.noSessionCostDescription")}
|
||||
/>
|
||||
<EmptyState title={i18n.t("home.noSessionCostTitle")} description={i18n.t("home.noSessionCostDescription")} />
|
||||
}
|
||||
>
|
||||
<SessionCostChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />
|
||||
|
|
|
|||
|
|
@ -102,7 +102,11 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
|
|||
return (
|
||||
<header data-component="top" data-menu-open={menuOpen() ? "true" : undefined}>
|
||||
<div data-slot="header-bar">
|
||||
<a data-slot="brand" href={localHref(props.brandHref ?? import.meta.env.BASE_URL)} aria-label={i18n.t("header.brandLabel")}>
|
||||
<a
|
||||
data-slot="brand"
|
||||
href={localHref(props.brandHref ?? import.meta.env.BASE_URL)}
|
||||
aria-label={i18n.t("header.brandLabel")}
|
||||
>
|
||||
<DataWordmark />
|
||||
</a>
|
||||
<nav data-component="section-nav" aria-label={i18n.t("header.sectionNavLabel")}>
|
||||
|
|
@ -147,7 +151,12 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
|
|||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<nav id="stats-mobile-nav" data-slot="mobile-menu" aria-label={i18n.t("header.sectionNavLabel")} hidden={!menuOpen()}>
|
||||
<nav
|
||||
id="stats-mobile-nav"
|
||||
data-slot="mobile-menu"
|
||||
aria-label={i18n.t("header.sectionNavLabel")}
|
||||
hidden={!menuOpen()}
|
||||
>
|
||||
<a
|
||||
data-slot="mobile-menu-item"
|
||||
data-variant="github"
|
||||
|
|
@ -303,9 +312,7 @@ function FooterLanguageSwitcher() {
|
|||
if (href !== current) window.location.assign(href)
|
||||
}}
|
||||
>
|
||||
<For each={language.locales}>
|
||||
{(locale) => <option value={locale}>{language.label(locale)}</option>}
|
||||
</For>
|
||||
<For each={language.locales}>{(locale) => <option value={locale}>{language.label(locale)}</option>}</For>
|
||||
</select>
|
||||
</label>
|
||||
)
|
||||
|
|
@ -422,7 +429,12 @@ function SubscribeModal(props: { onClose: () => void }) {
|
|||
<div data-slot="modal-panel">
|
||||
<div data-slot="modal-brand">
|
||||
<img data-slot="modal-logo" src={opencodeWordmarkDark} alt="OpenCode" />
|
||||
<button data-slot="modal-close" type="button" aria-label={i18n.t("modal.closeNewsletter")} onClick={props.onClose}>
|
||||
<button
|
||||
data-slot="modal-close"
|
||||
type="button"
|
||||
aria-label={i18n.t("modal.closeNewsletter")}
|
||||
onClick={props.onClose}
|
||||
>
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M4.44 4.44L11.56 11.56M11.56 4.44L4.44 11.56" stroke="currentColor" />
|
||||
</svg>
|
||||
|
|
@ -499,7 +511,11 @@ function FooterColumn(props: {
|
|||
<nav aria-label={props.title}>
|
||||
<For each={props.links}>
|
||||
{(link) => (
|
||||
<a href={props.localHref(link.href)} target={link.href.startsWith("http") ? "_blank" : undefined} rel="noreferrer">
|
||||
<a
|
||||
href={props.localHref(link.href)}
|
||||
target={link.href.startsWith("http") ? "_blank" : undefined}
|
||||
rel="noreferrer"
|
||||
>
|
||||
{link.label}
|
||||
</a>
|
||||
)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue