diff --git a/bun.lock b/bun.lock index 7991ff65c1d..6a066555bb6 100644 --- a/bun.lock +++ b/bun.lock @@ -858,25 +858,18 @@ "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", "@solidjs/start": "catalog:", - "d3-geo": "3.1.1", "d3-scale": "4.0.2", "effect": "catalog:", "i18n-iso-countries": "7.14.0", "nitro": "3.0.1-alpha.1", "solid-js": "catalog:", "sst": "catalog:", - "topojson-client": "3.1.0", "vite": "catalog:", - "world-atlas": "2.0.2", }, "devDependencies": { "@cloudflare/workers-types": "catalog:", "@types/bun": "catalog:", - "@types/d3-geo": "3.1.0", "@types/d3-scale": "4.0.9", - "@types/geojson": "7946.0.16", - "@types/topojson-client": "3.1.5", - "@types/topojson-specification": "1.0.5", "@typescript/native-preview": "catalog:", "typescript": "catalog:", }, @@ -2843,8 +2836,6 @@ "@types/cross-spawn": ["@types/cross-spawn@6.0.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA=="], - "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], - "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], @@ -2865,8 +2856,6 @@ "@types/fs-extra": ["@types/fs-extra@9.0.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA=="], - "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], "@types/http-cache-semantics": ["@types/http-cache-semantics@4.2.0", "", {}, "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q=="], @@ -2945,10 +2934,6 @@ "@types/ssri": ["@types/ssri@7.1.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw=="], - "@types/topojson-client": ["@types/topojson-client@3.1.5", "", { "dependencies": { "@types/geojson": "*", "@types/topojson-specification": "*" } }, "sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw=="], - - "@types/topojson-specification": ["@types/topojson-specification@1.0.5", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ=="], - "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], "@types/tsscmp": ["@types/tsscmp@1.0.2", "", {}, "sha512-cy7BRSU8GYYgxjcx0Py+8lo5MthuDhlyu076KUcYzVNXL23luYgRHkMG2fIFEc6neckeh/ntP82mw+U4QjZq+g=="], @@ -3437,8 +3422,6 @@ "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], - "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], - "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], @@ -5317,8 +5300,6 @@ "toolbeam-docs-theme": ["toolbeam-docs-theme@0.4.8", "", { "peerDependencies": { "@astrojs/starlight": "^0.34.3", "astro": "^5.7.13" } }, "sha512-b+5ynEFp4Woe5a22hzNQm42lD23t13ZMihVxHbzjA50zdcM9aOSJTIjdJ0PDSd4/50HbBXcpHiQsz6rM4N88ww=="], - "topojson-client": ["topojson-client@3.1.0", "", { "dependencies": { "commander": "2" }, "bin": { "topo2geo": "bin/topo2geo", "topomerge": "bin/topomerge", "topoquantize": "bin/topoquantize" } }, "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw=="], - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "traverse": ["traverse@0.3.9", "", {}, "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="], @@ -5561,8 +5542,6 @@ "workerd": ["workerd@1.20251118.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20251118.0", "@cloudflare/workerd-darwin-arm64": "1.20251118.0", "@cloudflare/workerd-linux-64": "1.20251118.0", "@cloudflare/workerd-linux-arm64": "1.20251118.0", "@cloudflare/workerd-windows-64": "1.20251118.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-Om5ns0Lyx/LKtYI04IV0bjIrkBgoFNg0p6urzr2asekJlfP18RqFzyqMFZKf0i9Gnjtz/JfAS/Ol6tjCe5JJsQ=="], - "world-atlas": ["world-atlas@2.0.2", "", {}, "sha512-IXfV0qwlKXpckz1FhwXVwKRjiIhOnWttOskm5CtxMsjgE/MXAYRHWJqgXOpM8IkcPBoXnyTU5lFHcYa5ChG0LQ=="], - "wrangler": ["wrangler@4.50.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.11", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20251118.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20251118.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20251118.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-+nuZuHZxDdKmAyXOSrHlciGshCoAPiy5dM+t6mEohWm7HpXvTHmWQGUf/na9jjWlWJHCJYOWzkA1P5HBJqrIEA=="], "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], @@ -6515,8 +6494,6 @@ "tiny-async-pool/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], - "topojson-client/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "tree-sitter-bash/node-addon-api": ["node-addon-api@8.8.0", "", {}, "sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA=="], "tw-to-css/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], diff --git a/packages/stats/app/package.json b/packages/stats/app/package.json index 1bf1f673816..47299905649 100644 --- a/packages/stats/app/package.json +++ b/packages/stats/app/package.json @@ -19,25 +19,18 @@ "@solidjs/meta": "catalog:", "@solidjs/router": "catalog:", "@solidjs/start": "catalog:", - "d3-geo": "3.1.1", "d3-scale": "4.0.2", "effect": "catalog:", "i18n-iso-countries": "7.14.0", "nitro": "3.0.1-alpha.1", "solid-js": "catalog:", "sst": "catalog:", - "topojson-client": "3.1.0", - "vite": "catalog:", - "world-atlas": "2.0.2" + "vite": "catalog:" }, "devDependencies": { "@cloudflare/workers-types": "catalog:", "@types/bun": "catalog:", - "@types/d3-geo": "3.1.0", "@types/d3-scale": "4.0.9", - "@types/geojson": "7946.0.16", - "@types/topojson-client": "3.1.5", - "@types/topojson-specification": "1.0.5", "@typescript/native-preview": "catalog:", "typescript": "catalog:" }, diff --git a/packages/stats/app/src/i18n.ts b/packages/stats/app/src/i18n.ts index b8e5d7335a7..e846ce5089b 100644 --- a/packages/stats/app/src/i18n.ts +++ b/packages/stats/app/src/i18n.ts @@ -129,8 +129,6 @@ const en = { "home.geoTitle": "Geographic Breakdown", "home.noGeoTitle": "No geo data", "home.noGeoDescription": "No geo rows matched this range.", - "home.worldMap": "World map of token usage by country", - "home.geoMapTitle": "Geo Breakdown map", "home.unknown": "Unknown", "home.tokenCostTitle": "Token Cost", "home.tokenCostDescription": "Price per 1M tokens.", @@ -238,7 +236,6 @@ const en = { "model.geoDescription": "OpenCode model tokens used by country.", "model.noGeoTitle": "No geo data", "model.noGeoDescription": "No OpenCode geo rows matched this model.", - "model.worldMap": "World map of model token usage by country", "model.peersDescription": "Nearby models by recent OpenCode token volume.", "model.noPeersTitle": "No peers", "model.noPeersDescription": "Peer rankings appear after usage lands.", diff --git a/packages/stats/app/src/i18n/ar.ts b/packages/stats/app/src/i18n/ar.ts index 733a789bf53..1fb48911737 100644 --- a/packages/stats/app/src/i18n/ar.ts +++ b/packages/stats/app/src/i18n/ar.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "التوزيع الجغرافي", "home.noGeoTitle": "لا توجد بيانات جغرافية", "home.noGeoDescription": "لم تطابق أي صفوف جغرافية هذا النطاق.", - "home.worldMap": "خريطة عالمية لاستخدام الرموز حسب البلد", - "home.geoMapTitle": "خريطة التوزيع الجغرافي", "home.unknown": "غير معروف", "home.tokenCostTitle": "تكلفة الرموز", "home.tokenCostDescription": "السعر لكل مليون رمز.", @@ -218,7 +216,6 @@ export const dict = { "model.geoDescription": "رموز نموذج OpenCode المستخدمة حسب البلد.", "model.noGeoTitle": "لا توجد بيانات جغرافية", "model.noGeoDescription": "لم تطابق أي صفوف جغرافية في OpenCode هذا النموذج.", - "model.worldMap": "خريطة عالمية لاستخدام رموز النموذج حسب البلد", "model.peersDescription": "نماذج قريبة حسب حجم رموز OpenCode الأخير.", "model.noPeersTitle": "لا توجد نماذج مشابهة", "model.noPeersDescription": "تظهر ترتيبات النماذج المشابهة بعد وصول الاستخدام.", diff --git a/packages/stats/app/src/i18n/br.ts b/packages/stats/app/src/i18n/br.ts index 7c0dec74f88..4ef584ce63e 100644 --- a/packages/stats/app/src/i18n/br.ts +++ b/packages/stats/app/src/i18n/br.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Distribuição geográfica", "home.noGeoTitle": "Sem dados geográficos", "home.noGeoDescription": "Nenhuma linha geográfica correspondeu a este intervalo.", - "home.worldMap": "Mapa-múndi do uso de tokens por país", - "home.geoMapTitle": "Mapa da distribuição geográfica", "home.unknown": "Desconhecido", "home.tokenCostTitle": "Custo de tokens", "home.tokenCostDescription": "Preço por 1 milhão de tokens.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Tokens do modelo OpenCode usados por país.", "model.noGeoTitle": "Sem dados geográficos", "model.noGeoDescription": "Nenhuma linha geográfica do OpenCode correspondeu a este modelo.", - "model.worldMap": "Mapa-múndi do uso de tokens do modelo por país", "model.peersDescription": "Modelos próximos por volume recente de tokens do OpenCode.", "model.noPeersTitle": "Sem pares", "model.noPeersDescription": "Os rankings de pares aparecem depois que o uso chega.", diff --git a/packages/stats/app/src/i18n/da.ts b/packages/stats/app/src/i18n/da.ts index c564ae33b20..1da9eb733bb 100644 --- a/packages/stats/app/src/i18n/da.ts +++ b/packages/stats/app/src/i18n/da.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografisk opdeling", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georækker matchede dette interval.", - "home.worldMap": "Verdenskort over tokenbrug efter land", - "home.geoMapTitle": "Kort over geografisk opdeling", "home.unknown": "Ukendt", "home.tokenCostTitle": "Tokenomkostning", "home.tokenCostDescription": "Pris pr. 1 mio. tokens.", @@ -219,7 +217,6 @@ export const dict = { "model.geoDescription": "OpenCode-modeltokens brugt efter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georækker matchede denne model.", - "model.worldMap": "Verdenskort over modeltokenbrug efter land", "model.peersDescription": "Nærliggende modeller efter seneste OpenCode-tokenvolumen.", "model.noPeersTitle": "Ingen lignende modeller", "model.noPeersDescription": "Ranglister over lignende modeller vises, når brug lander.", diff --git a/packages/stats/app/src/i18n/de.ts b/packages/stats/app/src/i18n/de.ts index 71d79a4c263..21d131cade5 100644 --- a/packages/stats/app/src/i18n/de.ts +++ b/packages/stats/app/src/i18n/de.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografische Aufschlüsselung", "home.noGeoTitle": "Keine Geodaten", "home.noGeoDescription": "Keine Geozeilen passten zu diesem Zeitraum.", - "home.worldMap": "Weltkarte der Tokennutzung nach Land", - "home.geoMapTitle": "Karte der geografischen Aufschlüsselung", "home.unknown": "Unbekannt", "home.tokenCostTitle": "Tokenkosten", "home.tokenCostDescription": "Preis pro 1 Mio. Tokens.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "OpenCode-Modelltokens nach Land.", "model.noGeoTitle": "Keine Geodaten", "model.noGeoDescription": "Keine OpenCode-Geozeilen passten zu diesem Modell.", - "model.worldMap": "Weltkarte der Modelltokennutzung nach Land", "model.peersDescription": "Nahe Modelle nach aktuellem OpenCode-Tokenvolumen.", "model.noPeersTitle": "Keine Vergleichsmodelle", "model.noPeersDescription": "Vergleichsrankings erscheinen, nachdem Nutzung eingegangen ist.", diff --git a/packages/stats/app/src/i18n/es.ts b/packages/stats/app/src/i18n/es.ts index a26d83e2322..92988954bbf 100644 --- a/packages/stats/app/src/i18n/es.ts +++ b/packages/stats/app/src/i18n/es.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "Desglose geográfico", "home.noGeoTitle": "Sin datos geográficos", "home.noGeoDescription": "Ninguna fila geográfica coincidió con este rango.", - "home.worldMap": "Mapa mundial del uso de tokens por país", - "home.geoMapTitle": "Mapa de desglose geográfico", "home.unknown": "Desconocido", "home.tokenCostTitle": "Coste de tokens", "home.tokenCostDescription": "Precio por 1 M de tokens.", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "Tokens del modelo de OpenCode usados por país.", "model.noGeoTitle": "Sin datos geográficos", "model.noGeoDescription": "Ninguna fila geográfica de OpenCode coincidió con este modelo.", - "model.worldMap": "Mapa mundial del uso de tokens del modelo por país", "model.peersDescription": "Modelos cercanos por volumen reciente de tokens de OpenCode.", "model.noPeersTitle": "Sin modelos similares", "model.noPeersDescription": "Las clasificaciones de modelos similares aparecen después de que llegue uso.", diff --git a/packages/stats/app/src/i18n/fr.ts b/packages/stats/app/src/i18n/fr.ts index 64b0d561f26..3bd3256808b 100644 --- a/packages/stats/app/src/i18n/fr.ts +++ b/packages/stats/app/src/i18n/fr.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Répartition géographique", "home.noGeoTitle": "Aucune donnée géographique", "home.noGeoDescription": "Aucune ligne géographique ne correspondait à cette période.", - "home.worldMap": "Carte mondiale de l'utilisation des tokens par pays", - "home.geoMapTitle": "Carte de répartition géographique", "home.unknown": "Inconnu", "home.tokenCostTitle": "Coût des tokens", "home.tokenCostDescription": "Prix par million de tokens.", @@ -222,7 +220,6 @@ export const dict = { "model.geoDescription": "Tokens du modèle OpenCode utilisés par pays.", "model.noGeoTitle": "Aucune donnée géographique", "model.noGeoDescription": "Aucune ligne géographique OpenCode ne correspondait à ce modèle.", - "model.worldMap": "Carte mondiale de l'utilisation des tokens du modèle par pays", "model.peersDescription": "Modèles proches par volume récent de tokens OpenCode.", "model.noPeersTitle": "Aucun modèle proche", "model.noPeersDescription": "Les classements de modèles proches apparaissent après l'arrivée de l'utilisation.", diff --git a/packages/stats/app/src/i18n/it.ts b/packages/stats/app/src/i18n/it.ts index dc9a25c66b2..f0ccde5013e 100644 --- a/packages/stats/app/src/i18n/it.ts +++ b/packages/stats/app/src/i18n/it.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Ripartizione geografica", "home.noGeoTitle": "Nessun dato geografico", "home.noGeoDescription": "Nessuna riga geografica corrispondeva a questo intervallo.", - "home.worldMap": "Mappa mondiale dell'utilizzo dei token per paese", - "home.geoMapTitle": "Mappa della ripartizione geografica", "home.unknown": "Sconosciuto", "home.tokenCostTitle": "Costo token", "home.tokenCostDescription": "Prezzo per 1 M di token.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Token del modello OpenCode usati per paese.", "model.noGeoTitle": "Nessun dato geografico", "model.noGeoDescription": "Nessuna riga geografica OpenCode corrispondeva a questo modello.", - "model.worldMap": "Mappa mondiale dell'utilizzo dei token del modello per paese", "model.peersDescription": "Modelli vicini per volume recente di token OpenCode.", "model.noPeersTitle": "Nessun modello simile", "model.noPeersDescription": "Le classifiche dei modelli simili appaiono dopo l'arrivo dell'utilizzo.", diff --git a/packages/stats/app/src/i18n/ja.ts b/packages/stats/app/src/i18n/ja.ts index 707cdea91bf..beac7cabc97 100644 --- a/packages/stats/app/src/i18n/ja.ts +++ b/packages/stats/app/src/i18n/ja.ts @@ -113,8 +113,6 @@ export const dict = { "home.geoTitle": "地域別内訳", "home.noGeoTitle": "地域データがありません", "home.noGeoDescription": "この期間に一致する地域行はありません。", - "home.worldMap": "国別トークン使用量の世界地図", - "home.geoMapTitle": "地域別内訳マップ", "home.unknown": "不明", "home.tokenCostTitle": "トークンコスト", "home.tokenCostDescription": "100万トークンあたりの価格。", @@ -222,7 +220,6 @@ export const dict = { "model.geoDescription": "国別のOpenCodeモデルのトークン使用量。", "model.noGeoTitle": "地域データがありません", "model.noGeoDescription": "このモデルに一致するOpenCode地域行はありません。", - "model.worldMap": "国別モデル別トークン使用量の世界地図", "model.peersDescription": "最近のOpenCodeトークン量が近いモデル。", "model.noPeersTitle": "類似モデルがありません", "model.noPeersDescription": "使用量が届くと類似モデルのランキングが表示されます。", diff --git a/packages/stats/app/src/i18n/ko.ts b/packages/stats/app/src/i18n/ko.ts index 693123fd88c..ac5293125d4 100644 --- a/packages/stats/app/src/i18n/ko.ts +++ b/packages/stats/app/src/i18n/ko.ts @@ -113,8 +113,6 @@ export const dict = { "home.geoTitle": "지역별 분포", "home.noGeoTitle": "지역 데이터 없음", "home.noGeoDescription": "이 범위에 맞는 지역 행이 없습니다.", - "home.worldMap": "국가별 토큰 사용량 세계 지도", - "home.geoMapTitle": "지역별 분포 지도", "home.unknown": "알 수 없음", "home.tokenCostTitle": "토큰 비용", "home.tokenCostDescription": "100만 토큰당 가격입니다.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "국가별 OpenCode 모델 토큰 사용량입니다.", "model.noGeoTitle": "지역 데이터 없음", "model.noGeoDescription": "이 모델과 일치하는 OpenCode 지역 행이 없습니다.", - "model.worldMap": "국가별 모델 토큰 사용량 세계 지도", "model.peersDescription": "최근 OpenCode 토큰 볼륨이 가까운 모델입니다.", "model.noPeersTitle": "비슷한 모델 없음", "model.noPeersDescription": "사용량이 들어오면 비슷한 모델 순위가 표시됩니다.", diff --git a/packages/stats/app/src/i18n/no.ts b/packages/stats/app/src/i18n/no.ts index 54595422f94..e64617e4015 100644 --- a/packages/stats/app/src/i18n/no.ts +++ b/packages/stats/app/src/i18n/no.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Geografisk fordeling", "home.noGeoTitle": "Ingen geodata", "home.noGeoDescription": "Ingen georader matchet dette intervallet.", - "home.worldMap": "Verdenskart over tokenbruk etter land", - "home.geoMapTitle": "Kart over geografisk fordeling", "home.unknown": "Ukjent", "home.tokenCostTitle": "Tokenkostnad", "home.tokenCostDescription": "Pris per 1 mill. tokens.", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "OpenCode-modelltokens brukt etter land.", "model.noGeoTitle": "Ingen geodata", "model.noGeoDescription": "Ingen OpenCode-georader matchet denne modellen.", - "model.worldMap": "Verdenskart over modelltokenbruk etter land", "model.peersDescription": "Nærliggende modeller etter nylig OpenCode-tokenvolum.", "model.noPeersTitle": "Ingen lignende modeller", "model.noPeersDescription": "Rangeringer for lignende modeller vises etter at bruk lander.", diff --git a/packages/stats/app/src/i18n/pl.ts b/packages/stats/app/src/i18n/pl.ts index bd1e486b00a..dc15861421d 100644 --- a/packages/stats/app/src/i18n/pl.ts +++ b/packages/stats/app/src/i18n/pl.ts @@ -110,8 +110,6 @@ export const dict = { "home.geoTitle": "Podział geograficzny", "home.noGeoTitle": "Brak danych geograficznych", "home.noGeoDescription": "Żadne wiersze geograficzne nie pasowały do tego zakresu.", - "home.worldMap": "Mapa świata użycia tokenów według kraju", - "home.geoMapTitle": "Mapa podziału geograficznego", "home.unknown": "Nieznane", "home.tokenCostTitle": "Koszt tokenów", "home.tokenCostDescription": "Cena za 1 mln tokenów.", @@ -219,7 +217,6 @@ export const dict = { "model.geoDescription": "Tokeny modelu OpenCode użyte według kraju.", "model.noGeoTitle": "Brak danych geograficznych", "model.noGeoDescription": "Żadne wiersze geograficzne OpenCode nie pasowały do tego modelu.", - "model.worldMap": "Mapa świata użycia tokenów modelu według kraju", "model.peersDescription": "Pobliskie modele według ostatniego wolumenu tokenów OpenCode.", "model.noPeersTitle": "Brak podobnych modeli", "model.noPeersDescription": "Rankingi podobnych modeli pojawią się po nadejściu użycia.", diff --git a/packages/stats/app/src/i18n/ru.ts b/packages/stats/app/src/i18n/ru.ts index 984cd36f2b5..3515b4a097a 100644 --- a/packages/stats/app/src/i18n/ru.ts +++ b/packages/stats/app/src/i18n/ru.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Географический разрез", "home.noGeoTitle": "Нет геоданных", "home.noGeoDescription": "Нет географических строк для этого диапазона.", - "home.worldMap": "Карта мира использования токенов по странам", - "home.geoMapTitle": "Карта географического разреза", "home.unknown": "Неизвестно", "home.tokenCostTitle": "Стоимость токенов", "home.tokenCostDescription": "Цена за 1 млн токенов.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Токены модели OpenCode, использованные по странам.", "model.noGeoTitle": "Нет геоданных", "model.noGeoDescription": "Нет географических строк OpenCode для этой модели.", - "model.worldMap": "Карта мира использования токенов модели по странам", "model.peersDescription": "Близкие модели по недавнему объему токенов OpenCode.", "model.noPeersTitle": "Нет похожих моделей", "model.noPeersDescription": "Рейтинги похожих моделей появятся после использования.", diff --git a/packages/stats/app/src/i18n/th.ts b/packages/stats/app/src/i18n/th.ts index 00efb26c612..e16996635ed 100644 --- a/packages/stats/app/src/i18n/th.ts +++ b/packages/stats/app/src/i18n/th.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "แยกตามภูมิศาสตร์", "home.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "home.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ที่ตรงกับช่วงเวลานี้", - "home.worldMap": "แผนที่โลกของการใช้ token แยกตามประเทศ", - "home.geoMapTitle": "แผนที่แยกตามภูมิศาสตร์", "home.unknown": "ไม่ทราบ", "home.tokenCostTitle": "ต้นทุน Token", "home.tokenCostDescription": "ราคาต่อ 1 ล้าน token", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "token ของโมเดล OpenCode ที่ใช้แยกตามประเทศ", "model.noGeoTitle": "ไม่มีข้อมูลภูมิศาสตร์", "model.noGeoDescription": "ไม่มีแถวภูมิศาสตร์ของ OpenCode ที่ตรงกับโมเดลนี้", - "model.worldMap": "แผนที่โลกของการใช้ token ของโมเดลแยกตามประเทศ", "model.peersDescription": "โมเดลใกล้เคียงตามปริมาณ token ล่าสุดของ OpenCode", "model.noPeersTitle": "ไม่มีโมเดลใกล้เคียง", "model.noPeersDescription": "อันดับโมเดลใกล้เคียงจะแสดงหลังจากมีการใช้งานเข้ามา", diff --git a/packages/stats/app/src/i18n/tr.ts b/packages/stats/app/src/i18n/tr.ts index e4f8d34c174..1935a0ebc76 100644 --- a/packages/stats/app/src/i18n/tr.ts +++ b/packages/stats/app/src/i18n/tr.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Coğrafi Dağılım", "home.noGeoTitle": "Coğrafi veri yok", "home.noGeoDescription": "Bu aralıkla eşleşen coğrafi satır yok.", - "home.worldMap": "Ülkeye göre token kullanımının dünya haritası", - "home.geoMapTitle": "Coğrafi Dağılım haritası", "home.unknown": "Bilinmiyor", "home.tokenCostTitle": "Token Maliyeti", "home.tokenCostDescription": "1 milyon token başına fiyat.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Ülkeye göre kullanılan OpenCode model tokenları.", "model.noGeoTitle": "Coğrafi veri yok", "model.noGeoDescription": "Bu modelle eşleşen OpenCode coğrafi satırı yok.", - "model.worldMap": "Ülkeye göre model token kullanımının dünya haritası", "model.peersDescription": "Son OpenCode token hacmine göre yakındaki modeller.", "model.noPeersTitle": "Benzer yok", "model.noPeersDescription": "Benzer model sıralamaları kullanım geldikten sonra görünür.", diff --git a/packages/stats/app/src/i18n/uk.ts b/packages/stats/app/src/i18n/uk.ts index e35dd34a945..78d113fa0b2 100644 --- a/packages/stats/app/src/i18n/uk.ts +++ b/packages/stats/app/src/i18n/uk.ts @@ -111,8 +111,6 @@ export const dict = { "home.geoTitle": "Географічний розріз", "home.noGeoTitle": "Немає геоданих", "home.noGeoDescription": "Жодні географічні рядки не відповідали цьому діапазону.", - "home.worldMap": "Карта світу використання токенів за країнами", - "home.geoMapTitle": "Карта географічного розрізу", "home.unknown": "Невідомо", "home.tokenCostTitle": "Вартість токенів", "home.tokenCostDescription": "Ціна за 1 млн токенів.", @@ -221,7 +219,6 @@ export const dict = { "model.geoDescription": "Токени моделі OpenCode, використані за країнами.", "model.noGeoTitle": "Немає геоданих", "model.noGeoDescription": "Жодні географічні рядки OpenCode не відповідали цій моделі.", - "model.worldMap": "Карта світу використання токенів моделі за країнами", "model.peersDescription": "Близькі моделі за нещодавнім обсягом токенів OpenCode.", "model.noPeersTitle": "Немає схожих моделей", "model.noPeersDescription": "Рейтинги схожих моделей з'являться після використання.", diff --git a/packages/stats/app/src/i18n/zh.ts b/packages/stats/app/src/i18n/zh.ts index 4d2f3768bd2..06081f701e0 100644 --- a/packages/stats/app/src/i18n/zh.ts +++ b/packages/stats/app/src/i18n/zh.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "地理分布", "home.noGeoTitle": "无地理数据", "home.noGeoDescription": "没有符合该时间范围的地理行。", - "home.worldMap": "按国家/地区显示 token 使用量的世界地图", - "home.geoMapTitle": "地理分布地图", "home.unknown": "未知", "home.tokenCostTitle": "Token 成本", "home.tokenCostDescription": "每 100 万 token 的价格。", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "按国家/地区统计的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "无地理数据", "model.noGeoDescription": "没有符合此模型的 OpenCode 地理行。", - "model.worldMap": "按国家/地区显示模型 token 使用量的世界地图", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", "model.noPeersTitle": "无同类模型", "model.noPeersDescription": "使用量到达后会显示同类模型排名。", diff --git a/packages/stats/app/src/i18n/zht.ts b/packages/stats/app/src/i18n/zht.ts index 9545748b69a..d6d7ed10117 100644 --- a/packages/stats/app/src/i18n/zht.ts +++ b/packages/stats/app/src/i18n/zht.ts @@ -112,8 +112,6 @@ export const dict = { "home.geoTitle": "地理分布", "home.noGeoTitle": "無地理數據", "home.noGeoDescription": "沒有符合該時間範圍的地理列。", - "home.worldMap": "按國家/地區顯示 token 使用量的世界地圖", - "home.geoMapTitle": "地理分布地圖", "home.unknown": "未知", "home.tokenCostTitle": "Token 成本", "home.tokenCostDescription": "每 100 萬 token 的價格。", @@ -220,7 +218,6 @@ export const dict = { "model.geoDescription": "按國家/地區統計的 OpenCode 模型 token 使用量。", "model.noGeoTitle": "無地理數據", "model.noGeoDescription": "沒有符合此模型的 OpenCode 地理列。", - "model.worldMap": "按國家/地區顯示模型 token 使用量的世界地圖", "model.peersDescription": "按近期 OpenCode token 用量排列的相近模型。", "model.noPeersTitle": "無同類模型", "model.noPeersDescription": "使用量到達後會顯示同類模型排名。", diff --git a/packages/stats/app/src/routes/[lab]/[model].tsx b/packages/stats/app/src/routes/[lab]/[model].tsx index ad931aab1c2..e5ff838ae87 100644 --- a/packages/stats/app/src/routes/[lab]/[model].tsx +++ b/packages/stats/app/src/routes/[lab]/[model].tsx @@ -17,7 +17,6 @@ import { useI18n } from "../../context/i18n" import { useLanguage } from "../../context/language" import { localizedUrl } from "../../lib/language" import { findModelCatalogEntry, formatCatalogLabName, loadModelCatalog, type ModelCatalogEntry } from "../model-catalog" -import { geoMapHeight, geoMapWidth, worldBorderPath, worldCountryMarkers, worldCountryPaths } from "../geo-map" import { SectionHeading } from "../section-heading" import { runStatsEffect } from "../../stats-runtime" import { setStatsPageCacheHeaders } from "../stats-cache" @@ -892,21 +891,10 @@ function ModelEfficiencySection(props: { data: StatsModelPageData | null; catalo function ModelGeoBreakdownSection(props: { data: CountryEntry[] }) { const i18n = useI18n() - const language = useLanguage() const [activeCountry, setActiveCountry] = createSignal() const data = createMemo(() => props.data) - const countryById = createMemo( - () => - new Map( - data().flatMap((country) => { - const id = countryNumericId(country.country) - return id ? [[id, country] as const] : [] - }), - ), - ) const maxTokens = createMemo(() => Math.max(0, ...data().map((country) => country.tokens)) || 1) const topCountries = createMemo(() => data().slice(0, 15)) - const active = createMemo(() => data().find((country) => country.country === activeCountry()) ?? data()[0]) return (
} >
-
- - - {(country) => ( -
- #{String(country().rank).padStart(2, "0")} - {formatCountryName(country().country, language.tag(language.locale()), i18n)} -

- {formatGeoTokens(country().tokens)} - {formatGeoShare(country().share)} -

-
- )} -
-
- activeCountry: string | undefined - maxTokens: number - onActiveCountryChange: (country: string | undefined) => void -}) { - const i18n = useI18n() - const opacityScale = createMemo(() => scaleSqrt().domain([0, props.maxTokens]).range([0.26, 0.96]).clamp(true)) - const countryOpacity = (country: CountryEntry | undefined) => { - if (!country || country.tokens <= 0) return 0 - const opacity = opacityScale()(country.tokens) - if (props.activeCountry === country.country) return 1 - if (!props.activeCountry) return opacity - return Math.max(0.18, opacity * 0.36) - } - - return ( - - {i18n.t("home.geoMapTitle")} - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - - - {(country) => { - const entry = () => props.countryById.get(country.id) - return ( - - - ) - }} - - - - - ) -} - function GeoCountryList(props: { data: CountryEntry[] activeCountry: string | undefined diff --git a/packages/stats/app/src/routes/geo-map.ts b/packages/stats/app/src/routes/geo-map.ts deleted file mode 100644 index 53a82eb87fa..00000000000 --- a/packages/stats/app/src/routes/geo-map.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { geoEquirectangular, geoPath } from "d3-geo" -import { feature, mesh } from "topojson-client" -import countriesTopologySource from "world-atlas/countries-110m.json?raw" -import type { FeatureCollection, GeometryObject, GeoJsonProperties } from "geojson" -import type { GeometryCollection, Topology } from "topojson-specification" - -export const geoMapWidth = 960 -export const geoMapHeight = 430 - -type WorldCountryProperties = GeoJsonProperties & { name?: string } -type WorldTopology = Topology<{ countries: GeometryCollection }> - -const worldTopology = JSON.parse(countriesTopologySource) as WorldTopology -const worldCountryGeometries: GeometryCollection = { - ...worldTopology.objects.countries, - geometries: worldTopology.objects.countries.geometries.filter((country) => String(country.id ?? "") !== "010"), -} -const worldCountries = feature(worldTopology, worldCountryGeometries) as FeatureCollection< - GeometryObject, - WorldCountryProperties -> -const worldProjection = geoEquirectangular().fitExtent( - [ - [10, 12], - [geoMapWidth - 10, geoMapHeight - 12], - ], - worldCountries, -) -const worldPath = geoPath(worldProjection) - -export const worldCountryPaths = worldCountries.features.map((country) => ({ - id: String(country.id ?? "").padStart(3, "0"), - path: worldPath(country) ?? "", -})) - -export const worldBorderPath = worldPath(mesh(worldTopology, worldCountryGeometries, (a, b) => a !== b)) ?? "" - -function geoCountryMarker(country: (typeof worldCountries.features)[number]) { - const bounds = worldPath.bounds(country) - const [x, y] = worldPath.centroid(country) - if (!Number.isFinite(x) || !Number.isFinite(y)) return undefined - if (bounds[1][0] - bounds[0][0] >= 3 && bounds[1][1] - bounds[0][1] >= 3) return undefined - return { x, y } -} - -// The 110m topology omits small regions. Geographic centroids keep those countries interactive without shipping 50m paths. -const fallbackCountryMarkerCoordinates = [ - ["016", -170.7179, -14.3046], - ["020", 1.5606, 42.542], - ["028", -61.7945, 17.2762], - ["048", 50.5425, 26.0417], - ["052", -59.5602, 13.1811], - ["060", -64.7558, 32.3131], - ["086", 72.4453, -7.3312], - ["092", -64.4704, 18.5276], - ["132", -23.9576, 15.9551], - ["136", -80.9129, 19.43], - ["174", 43.6844, -11.879], - ["184", -159.7871, -21.2195], - ["212", -61.3576, 15.4394], - ["234", -6.8808, 62.0527], - ["239", -36.4863, -54.4641], - ["248", 19.9528, 60.2153], - ["258", -144.8045, -14.7283], - ["296", -167.9217, 0.893], - ["308", -61.6818, 12.1174], - ["316", 144.767, 13.4406], - ["334", 73.52, -53.0872], - ["336", 12.4343, 41.9021], - ["344", 114.1143, 22.3983], - ["438", 9.5357, 47.1367], - ["446", 113.509, 22.2231], - ["462", 73.4573, 3.7316], - ["470", 14.405, 35.9215], - ["480", 57.5714, -20.2779], - ["492", 7.4073, 43.7526], - ["500", -62.1856, 16.7404], - ["520", 166.9326, -0.5189], - ["531", -68.9721, 12.1957], - ["533", -69.9827, 12.521], - ["534", -63.0572, 18.0509], - ["570", -169.8704, -19.0489], - ["574", 167.9497, -29.0516], - ["580", 145.6193, 15.8288], - ["583", 153.2966, 7.5361], - ["584", 170.3313, 7.015], - ["585", 134.4056, 7.286], - ["612", -128.3167, -24.3649], - ["652", -62.841, 17.8988], - ["654", -9.7009, -12.3548], - ["659", -62.6873, 17.2647], - ["660", -63.066, 18.2243], - ["662", -60.9696, 13.8946], - ["663", -63.0599, 18.0888], - ["666", -56.3037, 46.9187], - ["670", -61.2008, 13.2251], - ["674", 12.4594, 43.9415], - ["678", 6.7235, 0.4434], - ["690", 55.476, -4.6601], - ["702", 103.817, 1.359], - ["776", -174.7998, -20.4161], - ["796", -71.9734, 21.8312], - ["831", -2.5726, 49.4678], - ["832", -2.1272, 49.2181], - ["833", -4.5388, 54.224], - ["850", -64.8028, 17.9555], - ["876", -177.3469, -13.8898], - ["882", -172.1649, -13.7536], -] as const - -export const worldCountryMarkers = [ - ...worldCountries.features.flatMap((country) => { - const marker = geoCountryMarker(country) - return marker ? [{ id: String(country.id ?? "").padStart(3, "0"), marker }] : [] - }), - ...fallbackCountryMarkerCoordinates.flatMap(([id, longitude, latitude]) => { - const marker = worldProjection([longitude, latitude]) - return marker ? [{ id, marker: { x: marker[0], y: marker[1] } }] : [] - }), -] diff --git a/packages/stats/app/src/routes/index.css b/packages/stats/app/src/routes/index.css index edbdd048311..e37fef9b48b 100644 --- a/packages/stats/app/src/routes/index.css +++ b/packages/stats/app/src/routes/index.css @@ -2264,121 +2264,6 @@ body { align-items: start; } -[data-page="stats"] [data-slot="geo-map-panel"] { - position: relative; - min-width: 0; - overflow: hidden; - background: var(--stats-layer); - border: 1px solid var(--stats-line); -} - -[data-page="stats"] [data-component="geo-world-map"] { - display: block; - width: 100%; - height: auto; -} - -[data-page="stats"] [data-slot="geo-countries"] path { - fill: var(--stats-layer-2); - stroke: var(--stats-bg); - stroke-width: 0.45px; - transition: - fill 140ms ease, - opacity 140ms ease; -} - -[data-page="stats"] [data-slot="geo-countries"] path[data-has-data="true"] { - fill: var(--stats-accent); - opacity: var(--geo-country-opacity); - cursor: pointer; -} - -[data-page="stats"] [data-slot="geo-countries"] path[data-active="true"] { - fill: color-mix(in srgb, var(--stats-accent) 70%, var(--stats-text)); - opacity: var(--geo-country-opacity); -} - -[data-page="stats"] [data-slot="geo-country-markers"] circle { - fill: var(--stats-accent); - stroke: var(--stats-bg); - stroke-width: 1.1px; - opacity: var(--geo-country-opacity); - cursor: pointer; - transition: - fill 140ms ease, - opacity 140ms ease, - r 140ms ease; -} - -[data-page="stats"] [data-slot="geo-country-markers"] circle[data-active="true"] { - fill: color-mix(in srgb, var(--stats-accent) 70%, var(--stats-text)); - opacity: var(--geo-country-opacity); -} - -[data-page="stats"] [data-slot="geo-borders"] { - fill: none; - stroke: var(--stats-line-strong); - stroke-linejoin: round; - stroke-width: 0.6px; - pointer-events: none; -} - -[data-page="stats"] [data-slot="geo-active-country"] { - position: absolute; - bottom: 16px; - left: 16px; - display: grid; - gap: 8px; - min-width: 168px; - max-width: calc(100% - 32px); - box-sizing: border-box; - padding: 12px; - background: color-mix(in srgb, var(--stats-bg) 92%, transparent); - box-shadow: - 0 0 0 0.5px var(--stats-line-strong), - 0 6px 16px #0000000d, - 0 2px 6px #0000000f; -} - -[data-page="stats"] [data-slot="geo-active-country"] span, -[data-page="stats"] [data-slot="geo-active-country"] em { - color: var(--stats-faint); - font-style: normal; -} - -[data-page="stats"] [data-slot="geo-active-country"] span { - font-size: 10px; - font-weight: 600; - line-height: 1; -} - -[data-page="stats"] [data-slot="geo-active-country"] strong { - min-width: 0; - overflow: hidden; - color: var(--stats-text); - font-size: 16px; - font-weight: 600; - line-height: 1.2; - text-overflow: ellipsis; - white-space: nowrap; -} - -[data-page="stats"] [data-slot="geo-active-country"] p { - display: flex; - align-items: center; - justify-content: space-between; - gap: 16px; - color: var(--stats-muted); - font-size: 11px; - font-weight: 500; - line-height: 1; -} - -[data-page="stats"] [data-slot="geo-active-country"] b { - color: var(--stats-accent-text); - font-weight: 600; -} - [data-page="stats"] [data-component="geo-country-list"] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 212px), 1fr)); @@ -8386,13 +8271,6 @@ body { height: 400px; } - [data-page="stats"] [data-slot="geo-active-country"] { - position: static; - min-width: 0; - max-width: none; - margin: 0 12px 12px; - } - [data-page="stats"] [data-component="geo-country-list"] button { grid-template-columns: 26px 8px minmax(0, 1fr) auto; }