tokentracker-cli 0.93.0 → 0.93.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.de.md +1 -1
  2. package/README.ja.md +1 -1
  3. package/README.ko.md +1 -1
  4. package/README.md +1 -1
  5. package/README.zh-CN.md +1 -1
  6. package/dashboard/dist/assets/{AchievementBadge-BJRW8Tr1.js → AchievementBadge-Bl3bWjZw.js} +1 -1
  7. package/dashboard/dist/assets/{AchievementsPage-ChEJSRiQ.js → AchievementsPage-B6FrDjg8.js} +2 -2
  8. package/dashboard/dist/assets/{AchievementsSection-CUaUhyL6.js → AchievementsSection-D5TJtcI5.js} +1 -1
  9. package/dashboard/dist/assets/{BadgeDetailModal-CN7MTGyp.js → BadgeDetailModal-BFlrt34z.js} +1 -1
  10. package/dashboard/dist/assets/{BotAnimated-Dr4FOdii.js → BotAnimated-KONFZbQT.js} +1 -1
  11. package/dashboard/dist/assets/{Card-DMxCaW9y.js → Card-DDZHhXlQ.js} +1 -1
  12. package/dashboard/dist/assets/{ClawdAnimated-DpscEjzV.js → ClawdAnimated-DMw54QJ_.js} +2 -2
  13. package/dashboard/dist/assets/{CommandPalette-CQGglOYQ.js → CommandPalette-CxVv0uo_.js} +1 -1
  14. package/dashboard/dist/assets/{CommunityStatsModal-Venaet7m.js → CommunityStatsModal-CR2MuFo3.js} +1 -1
  15. package/dashboard/dist/assets/{ConfirmModal-BHoo6GZs.js → ConfirmModal-B-jvLsxn.js} +1 -1
  16. package/dashboard/dist/assets/{Controls-CaNOFGCk.js → Controls-DXA3Zxx0.js} +1 -1
  17. package/dashboard/dist/assets/{DashboardPage-Dw0RrlPj.js → DashboardPage-0jQPu59U.js} +1 -1
  18. package/dashboard/dist/assets/{DevicePage-21SUMJc6.js → DevicePage-CMR7jT8-.js} +1 -1
  19. package/dashboard/dist/assets/{DialogClose-DnSGAKIz.js → DialogClose-B1j73B1g.js} +1 -1
  20. package/dashboard/dist/assets/DialogDescription-ZS29ikF4.js +1 -0
  21. package/dashboard/dist/assets/{DialogTitle-CiPqqI8_.js → DialogTitle-eIgptOU-.js} +1 -1
  22. package/dashboard/dist/assets/{FadeIn-Dfc9sjiG.js → FadeIn-B8aisUg4.js} +1 -1
  23. package/dashboard/dist/assets/{HeaderGithubStar-DXxjTnOW.js → HeaderGithubStar-B7MEGODn.js} +1 -1
  24. package/dashboard/dist/assets/{HoverTooltip-DjR_uW9N.js → HoverTooltip-DfBzMfW7.js} +1 -1
  25. package/dashboard/dist/assets/{IpCheckPage-CUoutDvP.js → IpCheckPage-BBvSL0Zz.js} +1 -1
  26. package/dashboard/dist/assets/{LandingPage-CFlAug6D.js → LandingPage-CcX03ndP.js} +2 -2
  27. package/dashboard/dist/assets/{LeaderboardAvatar-CYoNgJ16.js → LeaderboardAvatar-Dk4UJx-j.js} +1 -1
  28. package/dashboard/dist/assets/{LeaderboardPage-S9BvOGn-.js → LeaderboardPage-CcIp7sjv.js} +2 -2
  29. package/dashboard/dist/assets/{LeaderboardProfileModal-D5Fd1T4y.js → LeaderboardProfileModal-DzXfmNhy.js} +3 -3
  30. package/dashboard/dist/assets/{LeaderboardProfilePage-DQ9OnTBZ.js → LeaderboardProfilePage-18ijOFN-.js} +1 -1
  31. package/dashboard/dist/assets/{LimitsPage-CkW9RNDs.js → LimitsPage-ZeRD1J97.js} +1 -1
  32. package/dashboard/dist/assets/{LocalOnlyNotice-BC236cdv.js → LocalOnlyNotice-DQ_wPyho.js} +1 -1
  33. package/dashboard/dist/assets/{LoginCard-CKePPmoP.js → LoginCard-DX5-Bxhr.js} +1 -1
  34. package/dashboard/dist/assets/{LoginModal-Z6HTE1rD.js → LoginModal-_Rt3qUyK.js} +1 -1
  35. package/dashboard/dist/assets/{LoginPage-oCM0aV5_.js → LoginPage-CvYcDpeR.js} +1 -1
  36. package/dashboard/dist/assets/{PetPage-2vhNPBD2.js → PetPage-D0D4mRwd.js} +1 -1
  37. package/dashboard/dist/assets/{PopoverPopup-BWZpTgX_.js → PopoverPopup-Bz3yRvv6.js} +1 -1
  38. package/dashboard/dist/assets/{ProviderIcon-DzpcY7dM.js → ProviderIcon-PauvxgNb.js} +1 -1
  39. package/dashboard/dist/assets/{ResetPasswordPage-CDXZRCcV.js → ResetPasswordPage-BiC1Us4d.js} +1 -1
  40. package/dashboard/dist/assets/{SegmentedControl-DTUalF_Q.js → SegmentedControl-bW8MsUDI.js} +1 -1
  41. package/dashboard/dist/assets/{Select-Bh-c5WZM.js → Select-BSpIj6-K.js} +1 -1
  42. package/dashboard/dist/assets/{SelectItemText-D7ecykkn.js → SelectItemText-taYIkVIw.js} +1 -1
  43. package/dashboard/dist/assets/{ServiceStatusPage-B-3Nj7Yw.js → ServiceStatusPage-GMkqBtrt.js} +1 -1
  44. package/dashboard/dist/assets/{SessionsPage-C4XeRHCn.js → SessionsPage-QydYL4yt.js} +1 -1
  45. package/dashboard/dist/assets/{SettingsPage-B-2tu3Gx.js → SettingsPage-BFvCcos0.js} +2 -2
  46. package/dashboard/dist/assets/{SkillsPage-CIjJkI3G.js → SkillsPage-CKci6NM2.js} +1 -1
  47. package/dashboard/dist/assets/{TokenGalaxy-CmhqWAxg.js → TokenGalaxy-DMof07_u.js} +1 -1
  48. package/dashboard/dist/assets/{ToolbarRootContext-beEFe6Jn.js → ToolbarRootContext-CAsiI0PJ.js} +1 -1
  49. package/dashboard/dist/assets/{TrendMonitor-DUenZHaf.js → TrendMonitor-Dj2Uxs9x.js} +1 -1
  50. package/dashboard/dist/assets/{WidgetsPage-C5f1GlXu.js → WidgetsPage-DOr-nMn1.js} +1 -1
  51. package/dashboard/dist/assets/{WrappedPage-CbV2-x-X.js → WrappedPage-BZUv1rX5.js} +1 -1
  52. package/dashboard/dist/assets/{__vite-browser-external-BE7h4Ou0.js → __vite-browser-external-WKiEWJ30.js} +2 -2
  53. package/dashboard/dist/assets/{agent-logos-ChlriZKC.js → agent-logos-1FaE1SqE.js} +1 -1
  54. package/dashboard/dist/assets/{arrow-up-right-CXeIA60k.js → arrow-up-right-Bs5oicPH.js} +1 -1
  55. package/dashboard/dist/assets/{check-B_20gPQX.js → check-Be2PwUMS.js} +1 -1
  56. package/dashboard/dist/assets/{chevron-right-CQCceB2r.js → chevron-right-DH93vlVo.js} +1 -1
  57. package/dashboard/dist/assets/{copy-Ba1Oh3iI.js → copy-xOLhiaQa.js} +1 -1
  58. package/dashboard/dist/assets/{download-B5EQJQ9n.js → download-qUjPQH7V.js} +1 -1
  59. package/dashboard/dist/assets/{external-link-D9GSJ4tn.js → external-link-D0nLaYYu.js} +1 -1
  60. package/dashboard/dist/assets/{flame-PKC57o-h.js → flame-DFEEnwot.js} +1 -1
  61. package/dashboard/dist/assets/{format-tokens-E_eZCw2b.js → format-tokens-BPq1moPg.js} +1 -1
  62. package/dashboard/dist/assets/{icons-DXrj24F-.js → icons-DxM91e9c.js} +1 -1
  63. package/dashboard/dist/assets/{index-ldDiPXbH.js → index-BEi52jGG.js} +1 -1
  64. package/dashboard/dist/assets/{index-pSCG6bXN.js → index-C8Sb5l3M.js} +1 -1
  65. package/dashboard/dist/assets/{index-CPbjzYzk.js → index-CEl88_eC.js} +1 -1
  66. package/dashboard/dist/assets/{info-Dhj9LcZm.js → info-C43iVFmY.js} +1 -1
  67. package/dashboard/dist/assets/{limits-providers-BWOIsV_O.js → limits-providers-xNF55jgX.js} +1 -1
  68. package/dashboard/dist/assets/{link-2-Bbzo_bnV.js → link-2-CfarpF4W.js} +1 -1
  69. package/dashboard/dist/assets/{loader-circle-CfkDmJbH.js → loader-circle-CIKyaEoN.js} +1 -1
  70. package/dashboard/dist/assets/{maximize-2-BQkNBiZ-.js → maximize-2-DlTJ_PyX.js} +1 -1
  71. package/dashboard/dist/assets/{modifiers.esm-BhhAKBAH.js → modifiers.esm-CXV6l89k.js} +1 -1
  72. package/dashboard/dist/assets/{monitor-smartphone-BO4o9Fi6.js → monitor-smartphone-6dCO7HCP.js} +1 -1
  73. package/dashboard/dist/assets/{provider-display-DnMOck0l.js → provider-display-DNEUispM.js} +1 -1
  74. package/dashboard/dist/assets/{react-DoVntgJI.js → react-us685QUG.js} +1 -1
  75. package/dashboard/dist/assets/{search-CQOHSZGo.js → search-NcbnjXYq.js} +1 -1
  76. package/dashboard/dist/assets/{skills-api-DldHXWSv.js → skills-api-CFSZ441M.js} +1 -1
  77. package/dashboard/dist/assets/{sortable.esm-l0p6v-ts.js → sortable.esm-DiFLdkJ7.js} +1 -1
  78. package/dashboard/dist/assets/{store-D9UN_t1a.js → store-B-d1Nz34.js} +1 -1
  79. package/dashboard/dist/assets/{terminal-Cvwjd-k9.js → terminal-D3L94ngT.js} +1 -1
  80. package/dashboard/dist/assets/{trash-2-b2Z7B317.js → trash-2-esrIc05L.js} +1 -1
  81. package/dashboard/dist/assets/{use-community-stats-DDhp2Qat.js → use-community-stats-C4nPlCzJ.js} +1 -1
  82. package/dashboard/dist/assets/{use-limits-display-prefs-Cqtye4Ji.js → use-limits-display-prefs-iXm2ziaO.js} +1 -1
  83. package/dashboard/dist/assets/{use-ordered-list-CLogKuZq.js → use-ordered-list-DU8WcVsn.js} +1 -1
  84. package/dashboard/dist/assets/use-reduced-motion-DDhy4yg_.js +1 -0
  85. package/dashboard/dist/assets/{use-session-efficiency-pref-mSDx6-SO.js → use-session-efficiency-pref-CpGicS2y.js} +1 -1
  86. package/dashboard/dist/assets/{use-transform-Bt5K4W-2.js → use-transform-WxJRtugr.js} +1 -1
  87. package/dashboard/dist/assets/{use-usage-limits-Cm2Bjsp0.js → use-usage-limits-55w4KAqE.js} +1 -1
  88. package/dashboard/dist/assets/{useCurrency-DyJG5xmN.js → useCurrency-C6HKlFA6.js} +1 -1
  89. package/dashboard/dist/assets/{useScrollLock-BEpIOp1F.js → useScrollLock-CZ1Na38Y.js} +1 -1
  90. package/dashboard/dist/assets/{useTokenFormat-Cbj7RbpO.js → useTokenFormat-BR7kJQ6x.js} +1 -1
  91. package/dashboard/dist/assets/{zap-CUYx_JsZ.js → zap-BcwbN9j5.js} +1 -1
  92. package/dashboard/dist/index.html +1 -1
  93. package/dashboard/dist/ip-check.html +1 -1
  94. package/dashboard/dist/leaderboard.html +1 -1
  95. package/dashboard/dist/share.html +1 -1
  96. package/package.json +1 -1
  97. package/src/commands/status.js +5 -1
  98. package/src/lib/pricing/seed-snapshot.json +1 -1
  99. package/dashboard/dist/assets/DialogDescription-DyaMB47K.js +0 -1
  100. package/dashboard/dist/assets/use-reduced-motion-CkoMrH9Y.js +0 -1
package/README.de.md CHANGED
@@ -196,7 +196,7 @@ Aktualisieren mit `brew upgrade --cask xiufengsun/tokentracker/tokentracker`. De
196
196
  | **Qoder** | ✅ Auto | Passiver SQLite-Reader (`Qoder/SharedClientCache/cache/db/local.db`; liest nur assistant-`token_info`, trennt Cache-Eingaben und liest keine Prompts oder Antworten) sowie Plan Credits und Ultimate-Gratisaufrufe aus der lokalen Qoder-Sitzung |
197
197
  | **AnythingLLM Desktop** | ✅ Auto | Passiver SQLite-Reader (`anythingllm-desktop/storage/anythingllm.db`, nur Token-Metriken pro Nachricht) |
198
198
  | **Claude Science** | ✅ Auto | Passiver SQLite-Reader (`~/.claude-science/operon-cli.db`, nur die Token-Zähler der `frames`-Tabelle; keine Prompts, Artefakte oder Forschungsinhalte). Kein natives Windows-Build — unter Windows läuft die App in WSL und wird von dort gelesen. |
199
- | **TRAE Work CN** | ✅ Auto | Liest bei vorhandener lokaler TRAE Work CN-Anmeldung während eines zulässigen Syncs außerhalb des Hintergrundbetriebs unter macOS die Session-Token-Nutzung der angemeldeten App; die interne API kann sich ändern |
199
+ | **TRAE Work CN** | ✅ Auto | **Erfordert eine ausdrückliche Zustimmung: `TOKENTRACKER_TRAE_CN_USAGE=1` setzen.** Das Lesen der Nutzung überträgt die lokal gespeicherte Anmeldeautorisierung an die interne API von TRAE, daher wird nichts gesendet, bevor du es aktivierst. Danach: liest bei vorhandener lokaler TRAE Work CN-Anmeldung während eines zulässigen Syncs außerhalb des Hintergrundbetriebs unter macOS die Session-Token-Nutzung der angemeldeten App; die interne API kann sich ändern |
200
200
 
201
201
  > **Muss ich Plugins oder Hooks manuell installieren?** Nein. `tokentracker` (oder `tokentracker init`) erledigt alles beim ersten Start:
202
202
  > - **Hook-basiert** (Claude Code, Codex, Gemini, Every Code, CodeBuddy, WorkBuddy, Grok Build) — wir schreiben einen SessionEnd-Hook oder TOML-Notify-Eintrag in die Konfiguration des Tools.
package/README.ja.md CHANGED
@@ -199,7 +199,7 @@ brew install xiufengsun/tokentracker/tokentracker
199
199
  | **AnythingLLM Desktop** | ✅ 自動 | パッシブな SQLite リーダー (`anythingllm-desktop/storage/anythingllm.db`、メッセージごとの token 指標のみ) |
200
200
  | **Claude Science** | ✅ 自動 | パッシブな SQLite リーダー (`~/.claude-science/operon-cli.db`、`frames` テーブルの token カウンタのみ。prompt・成果物・研究内容は読みません)。ネイティブ Windows 版はなく、Windows では WSL 内で動作するアプリを読み取ります。 |
201
201
  | **DeepSeek Harness** | ✅ 自動 | パッシブなセッションリーダー (`~/.dsh/sessions/**/session.jsonl[.zstd]`、セッションヘッダーと assistant イベントを解析し、複数フレームの zstd 展開に対応) |
202
- | **TRAE Work CN** | ✅ 自動 | ローカル TRAE Work CN のサインイン認証がある場合、実行可能な非バックグラウンド同期中に macOS のサインイン済みアプリから session-token 使用量を読み取ります。内部 API は変更される可能性があります |
202
+ | **TRAE Work CN** | ✅ 自動 | **明示的なオプトインが必要です: `TOKENTRACKER_TRAE_CN_USAGE=1` を設定してください。** 使用量の読み取りはローカルに保存されたサインイン認証を TRAE の内部 API に送信するため、有効にするまで何も送信されません。有効化後: ローカル TRAE Work CN のサインイン認証がある場合、実行可能な非バックグラウンド同期中に macOS のサインイン済みアプリから session-token 使用量を読み取ります。内部 API は変更される可能性があります |
203
203
 
204
204
  > **プラグインや hook を手動でインストールする必要はありますか?** いいえ。`tokentracker`(または `tokentracker init`)が初回実行ですべて処理します:
205
205
  > - **Hook ベース**のツール (Claude Code、Codex、Gemini、Every Code、**CodeBuddy**、**WorkBuddy**、**Grok Build**) — ツール自身の設定に SessionEnd hook または TOML notify エントリーを書き込みます。
package/README.ko.md CHANGED
@@ -199,7 +199,7 @@ brew install xiufengsun/tokentracker/tokentracker
199
199
  | **AnythingLLM Desktop** | ✅ 자동 | 패시브 SQLite 리더 (`anythingllm-desktop/storage/anythingllm.db`, 메시지별 token 지표만 읽음) |
200
200
  | **Claude Science** | ✅ 자동 | 패시브 SQLite 리더 (`~/.claude-science/operon-cli.db`, `frames` 테이블의 token 카운터만 읽으며 prompt·산출물·연구 내용은 읽지 않음). 네이티브 Windows 빌드가 없어 Windows에서는 WSL 안에서 실행되는 앱을 읽습니다. |
201
201
  | **DeepSeek Harness** | ✅ 자동 | 패시브 세션 리더 (`~/.dsh/sessions/**/session.jsonl[.zstd]`, 세션 헤더와 assistant 이벤트를 파싱하고 멀티 프레임 zstd 압축 해제를 지원) |
202
- | **TRAE Work CN** | ✅ 자동 | 로컬 TRAE Work CN 인증이 있을 때 실행 가능한 비백그라운드 동기화 중에 macOS의 로그인된 앱에서 session-token 사용량을 읽습니다. 내부 API는 변경될 수 있습니다 |
202
+ | **TRAE Work CN** | ✅ 자동 | **명시적인 옵트인이 필요합니다: `TOKENTRACKER_TRAE_CN_USAGE=1` 을 설정하세요.** 사용량을 읽으면 로컬에 저장된 로그인 인증이 TRAE의 내부 API로 전송되므로, 켜기 전에는 아무것도 전송되지 않습니다. 켠 뒤에는: 로컬 TRAE Work CN 인증이 있을 때 실행 가능한 비백그라운드 동기화 중에 macOS의 로그인된 앱에서 session-token 사용량을 읽습니다. 내부 API는 변경될 수 있습니다 |
203
203
 
204
204
  > **플러그인이나 hook을 수동으로 설치해야 하나요?** 아니요. `tokentracker` (또는 `tokentracker init`)가 첫 실행에서 모든 것을 처리합니다:
205
205
  > - **Hook 기반** 도구 (Claude Code, Codex, Gemini, Every Code, **CodeBuddy**, **WorkBuddy**, **Grok Build**) — 도구 자체의 설정에 SessionEnd hook 또는 TOML notify 엔트리를 작성합니다.
package/README.md CHANGED
@@ -260,7 +260,7 @@ An Arch `PKGBUILD` for a local pacman install lives in `TokenTrackerLinux/packag
260
260
  | **AnythingLLM Desktop** | ✅ Auto | Passive SQLite reader (`anythingllm-desktop/storage/anythingllm.db`; reads per-message token metrics only, never prompts or responses) |
261
261
  | **Claude Science** | ✅ Auto | Passive SQLite reader (`~/.claude-science/operon-cli.db`; reads the `frames` table's token counters only, never prompts, artifacts or research content). No native Windows build — on Windows the app runs inside WSL and is read from there. |
262
262
  | **DeepSeek Harness** | ✅ Auto | Passive session reader (`~/.dsh/sessions/**/session.jsonl[.zstd]`; parses session header and assistant events, handles multi-frame zstd decompression) |
263
- | **TRAE Work CN** | ✅ Auto | During eligible non-background sync when local TRAE Work CN auth exists, reads session-token usage from the locally signed-in macOS app; its internal API may change |
263
+ | **TRAE Work CN** | ✅ Auto | **Requires an explicit opt-in: set `TOKENTRACKER_TRAE_CN_USAGE=1`.** Reading usage transmits the locally stored sign-in authorization to TRAE's internal API, so nothing is sent until you turn it on. Once opted in: during eligible non-background sync when local TRAE Work CN auth exists, reads session-token usage from the locally signed-in macOS app; its internal API may change |
264
264
 
265
265
  > **Do I need to install any plugin or hook manually?** No. `tokentracker` (or `tokentracker init`) handles everything on first run:
266
266
  > - **Hook-based** tools (Claude Code, Codex, Gemini, Every Code, **CodeBuddy**, **WorkBuddy**, **Grok Build**) — we write a SessionEnd hook or TOML notify entry into the tool's own config.
package/README.zh-CN.md CHANGED
@@ -201,7 +201,7 @@ brew install xiufengsun/tokentracker/tokentracker
201
201
  | **AnythingLLM Desktop** | ✅ 自动 | 被动 SQLite 读取(`anythingllm-desktop/storage/anythingllm.db`;只读取每条消息的 token 指标,不读取 prompt 或回复) |
202
202
  | **Claude Science** | ✅ 自动 | 被动 SQLite 读取(`~/.claude-science/operon-cli.db`;只读取 `frames` 表的 token 计数,不读取 prompt、产物或研究内容)。没有原生 Windows 版——Windows 上该应用运行在 WSL 内,从 WSL 中读取。 |
203
203
  | **DeepSeek Harness** | ✅ 自动 | 被动读取会话日志(`~/.dsh/sessions/**/session.jsonl[.zstd]`;解析会话头部与 assistant 事件,支持多帧 zstd 解压) |
204
- | **TRAE Work CN** | ✅ 自动 | 仅在存在本地 TRAE Work CN 登录授权的可执行非后台同步期间,读取 macOS 本地登录应用的 session-token 用量;内部 API 可能变化 |
204
+ | **TRAE Work CN** | ✅ 自动 | **需要显式开启:设置 `TOKENTRACKER_TRAE_CN_USAGE=1`。** 读取用量会把本地保存的登录授权发送到 TRAE 的内部 API,因此在你开启之前不会发出任何请求。开启后:仅在存在本地 TRAE Work CN 登录授权的可执行非后台同步期间,读取 macOS 本地登录应用的 session-token 用量;内部 API 可能变化 |
205
205
 
206
206
  > **需要手动装什么插件 / hook 吗?** 不需要。`tokentracker`(或 `tokentracker init`)第一次跑的时候会全部搞定:
207
207
  > - **基于 hook 的工具**(Claude Code、Codex、Gemini、Every Code、**CodeBuddy**、**WorkBuddy**、**Grok Build**)—— 我们把 SessionEnd hook 或 TOML notify 条目写入它们自己的配置文件
@@ -1 +1 @@
1
- import{m as o,d as N,j as r}from"./__vite-browser-external-BE7h4Ou0.js";import{Z as $}from"./zap-CUYx_JsZ.js";import{F as A}from"./flame-PKC57o-h.js";const j=[["path",{d:"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2",key:"1ah6g2"}],["rect",{x:"14",y:"2",width:"8",height:"8",rx:"1",key:"88lufb"}]],E=o("blocks",j);const L=[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]],C=o("brain",L);const T=[["path",{d:"M8 2v3",key:"1ioesn"}],["path",{d:"M16 2v3",key:"otl347"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M12 13h.01",key:"y0uutt"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M8 17h.01",key:"p3bg7i"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M16 17h.01",key:"ql8jdd"}]],q=o("calendar-days",T);const z=[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]],B=o("crown",z);const H=[["path",{d:"M14.086 18.412A2 2 0 0112.67 19H5v-7.672a2 2 0 01.586-1.414L11.75 3.75a6 6 0 118.49 8.49z",key:"1nq9jb"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.488 15H9",key:"16yirz"}]],R=o("feather",H);const D=[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]],F=o("folder-git-2",D);const I=[["path",{d:"M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",key:"1dudjm"}],["path",{d:"M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z",key:"l2t8xc"}],["path",{d:"M16 17h4",key:"1dejxt"}],["path",{d:"M4 13h4",key:"1bwh8b"}]],G=o("footprints",I);const S=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],V=o("heart",S);const Z=[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]],O=o("medal",Z);const P=[["path",{d:"M18 5h4",key:"1lhgn2"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],X=o("moon-star",P);const K=[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]],U=o("rocket",K);const W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Y=o("shield-check",W);const J=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Q=o("trending-up",J),k=[{id:"token_titan",scope:"cloud",icon:B,format:"tokens",art:"/achievements/token-titan.png"},{id:"big_day",scope:"cloud",icon:$,format:"tokens",art:"/achievements/big-day.png"},{id:"wordsmith",scope:"cloud",icon:R,format:"tokens",art:"/achievements/wordsmith.png"},{id:"marathoner",scope:"cloud",icon:G,format:"days",art:"/achievements/marathoner.png"},{id:"streak",scope:"cloud",icon:A,format:"days",art:"/achievements/streak.png"},{id:"weekend_warrior",scope:"cloud",icon:q,format:"days",art:"/achievements/weekend-warrior.png"},{id:"momentum",scope:"cloud",icon:Q,format:"multiplier",art:"/achievements/momentum.png"},{id:"polyglot",scope:"cloud",icon:C,format:"count",art:"/achievements/polyglot.png"},{id:"trendsetter",scope:"cloud",icon:U,format:"count",art:"/achievements/trendsetter.png"},{id:"multitool",scope:"cloud",icon:E,format:"count",art:"/achievements/multitool.png"},{id:"podium",scope:"cloud",icon:O,format:"rank",art:"/achievements/podium.png"},{id:"veteran",scope:"cloud",icon:Y,format:"days",art:"/achievements/veteran.png"},{id:"project_hopper",scope:"local",icon:F,format:"count",art:"/achievements/project-hopper.png"},{id:"project_devotion",scope:"local",icon:V,format:"tokens",art:"/achievements/project-devotion.png"},{id:"night_owl",scope:"local",icon:X,format:"count",art:"/achievements/night-owl.png"}],u=new Map(k.map(e=>[e.id,e])),m=new Map(k.map((e,a)=>[e.id,a]));function de(e,a){return`achievements.badge.${e}.${a}`}function ee(e){return[...e||[]].sort((a,t)=>{const c=(t?.tier||0)-(a?.tier||0);return c!==0?c:(m.get(a?.id)??99)-(m.get(t?.id)??99)})}function re(e){const a=(e||[]).filter(t=>t&&(t.tier||0)>=1&&u.has(t.id));return a.length===0?null:ee(a)[0]}const v={1:"bronze",2:"silver",3:"gold",4:"diamond"},ie=["bronze","silver","gold","diamond"],ae={bronze:{rim:["#a06a44","#5c3a22"],face:["#d29a6c","#96602f"],glyph:"#3f2817",ring:"#e8c3a0",sheen:"rgba(255, 236, 220, 0.45)",label:"#a06a44"},silver:{rim:["#aab3bb","#67707b"],face:["#dde2e7","#9ba5ae"],glyph:"#39424b",ring:"#f2f5f7",sheen:"rgba(255, 255, 255, 0.55)",label:"#8b959f"},gold:{rim:["#c9971c","#8a6508"],face:["#f2ca52","#cf9c26"],glyph:"#5c430e",ring:"#ffe9a8",sheen:"rgba(255, 248, 214, 0.55)",label:"#b8860b"},diamond:{rim:["#62b1e0","#7c6fd9"],face:["#c8ecf6","#84b4ea"],glyph:"#27496d",ring:"#eafcff",sheen:"rgba(255, 255, 255, 0.65)",label:"#5a9bd8"}},y={rim:["#a8ada9","#7c817d"],face:["#cdd2ce","#a3a8a4"],glyph:"#6a706c",ring:"#dde1de",sheen:"rgba(255, 255, 255, 0.25)",label:"#8b908c"};function te(e,a=!1){return a||!e||e<1?y:ae[v[Math.min(e,4)]]||y}function se(e){return v[e]||null}const g={xs:18,sm:24,md:44,xl:88,lg:108},f={xs:.75,sm:1,md:1.5,xl:2,lg:2};function le({badgeId:e,tier:a=0,size:t="md",locked:c=!1,label:i,className:M=""}){const s=u.get(e),h=c||!a||a<1,n=te(a,h),d=t==="fill",l=d?"100%":g[t]||g.md,b=d?4:f[t]||f.md,[_,x]=N.useState(!1),p=s?.icon||null,w=!!s?.art&&!_;return r.jsx("span",{role:i?"img":void 0,"aria-label":i||void 0,"aria-hidden":i?void 0:!0,className:`inline-flex shrink-0 rounded-full ${M}`,style:{width:l,height:l,padding:b,background:`linear-gradient(135deg, ${n.rim[0]} 0%, ${n.ring} 42%, ${n.rim[1]} 100%)`,boxShadow:d||t==="md"||t==="xl"||t==="lg"?"0 0 0 1px rgba(10, 15, 12, 0.06), 0 1px 2px rgba(10, 15, 12, 0.08)":void 0},children:w?r.jsx("img",{src:s.art,alt:"",draggable:!1,loading:"lazy",onError:()=>x(!0),className:"h-full w-full rounded-full object-cover",style:h?{filter:"grayscale(1)",opacity:.55}:void 0}):r.jsx("span",{className:"flex h-full w-full items-center justify-center rounded-full",style:{background:`linear-gradient(145deg, ${n.face[0]}, ${n.face[1]})`},children:p?r.jsx(p,{size:d?64:Math.round(l*.5),color:n.glyph,strokeWidth:2}):null})})}export{le as A,k as B,V as H,Q as T,ae as a,de as b,u as c,ie as d,re as h,te as p,ee as s,se as t};
1
+ import{m as o,d as N,j as r}from"./__vite-browser-external-WKiEWJ30.js";import{Z as $}from"./zap-BcwbN9j5.js";import{F as A}from"./flame-DFEEnwot.js";const j=[["path",{d:"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2",key:"1ah6g2"}],["rect",{x:"14",y:"2",width:"8",height:"8",rx:"1",key:"88lufb"}]],E=o("blocks",j);const L=[["path",{d:"M12 18V5",key:"adv99a"}],["path",{d:"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4",key:"1e3is1"}],["path",{d:"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5",key:"1gqd8o"}],["path",{d:"M17.997 5.125a4 4 0 0 1 2.526 5.77",key:"iwvgf7"}],["path",{d:"M18 18a4 4 0 0 0 2-7.464",key:"efp6ie"}],["path",{d:"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517",key:"1gq6am"}],["path",{d:"M6 18a4 4 0 0 1-2-7.464",key:"k1g0md"}],["path",{d:"M6.003 5.125a4 4 0 0 0-2.526 5.77",key:"q97ue3"}]],C=o("brain",L);const T=[["path",{d:"M8 2v3",key:"1ioesn"}],["path",{d:"M16 2v3",key:"otl347"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M8 13h.01",key:"1sbv64"}],["path",{d:"M12 13h.01",key:"y0uutt"}],["path",{d:"M16 13h.01",key:"wip0gl"}],["path",{d:"M8 17h.01",key:"p3bg7i"}],["path",{d:"M12 17h.01",key:"p32p05"}],["path",{d:"M16 17h.01",key:"ql8jdd"}]],q=o("calendar-days",T);const z=[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]],B=o("crown",z);const H=[["path",{d:"M14.086 18.412A2 2 0 0112.67 19H5v-7.672a2 2 0 01.586-1.414L11.75 3.75a6 6 0 118.49 8.49z",key:"1nq9jb"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.488 15H9",key:"16yirz"}]],R=o("feather",H);const D=[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]],F=o("folder-git-2",D);const I=[["path",{d:"M4 16v-2.38C4 11.5 2.97 10.5 3 8c.03-2.72 1.49-6 4.5-6C9.37 2 10 3.8 10 5.5c0 3.11-2 5.66-2 8.68V16a2 2 0 1 1-4 0Z",key:"1dudjm"}],["path",{d:"M20 20v-2.38c0-2.12 1.03-3.12 1-5.62-.03-2.72-1.49-6-4.5-6C14.63 6 14 7.8 14 9.5c0 3.11 2 5.66 2 8.68V20a2 2 0 1 0 4 0Z",key:"l2t8xc"}],["path",{d:"M16 17h4",key:"1dejxt"}],["path",{d:"M4 13h4",key:"1bwh8b"}]],G=o("footprints",I);const S=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],V=o("heart",S);const Z=[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]],O=o("medal",Z);const P=[["path",{d:"M18 5h4",key:"1lhgn2"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],X=o("moon-star",P);const K=[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]],U=o("rocket",K);const W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Y=o("shield-check",W);const J=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Q=o("trending-up",J),k=[{id:"token_titan",scope:"cloud",icon:B,format:"tokens",art:"/achievements/token-titan.png"},{id:"big_day",scope:"cloud",icon:$,format:"tokens",art:"/achievements/big-day.png"},{id:"wordsmith",scope:"cloud",icon:R,format:"tokens",art:"/achievements/wordsmith.png"},{id:"marathoner",scope:"cloud",icon:G,format:"days",art:"/achievements/marathoner.png"},{id:"streak",scope:"cloud",icon:A,format:"days",art:"/achievements/streak.png"},{id:"weekend_warrior",scope:"cloud",icon:q,format:"days",art:"/achievements/weekend-warrior.png"},{id:"momentum",scope:"cloud",icon:Q,format:"multiplier",art:"/achievements/momentum.png"},{id:"polyglot",scope:"cloud",icon:C,format:"count",art:"/achievements/polyglot.png"},{id:"trendsetter",scope:"cloud",icon:U,format:"count",art:"/achievements/trendsetter.png"},{id:"multitool",scope:"cloud",icon:E,format:"count",art:"/achievements/multitool.png"},{id:"podium",scope:"cloud",icon:O,format:"rank",art:"/achievements/podium.png"},{id:"veteran",scope:"cloud",icon:Y,format:"days",art:"/achievements/veteran.png"},{id:"project_hopper",scope:"local",icon:F,format:"count",art:"/achievements/project-hopper.png"},{id:"project_devotion",scope:"local",icon:V,format:"tokens",art:"/achievements/project-devotion.png"},{id:"night_owl",scope:"local",icon:X,format:"count",art:"/achievements/night-owl.png"}],u=new Map(k.map(e=>[e.id,e])),m=new Map(k.map((e,a)=>[e.id,a]));function de(e,a){return`achievements.badge.${e}.${a}`}function ee(e){return[...e||[]].sort((a,t)=>{const c=(t?.tier||0)-(a?.tier||0);return c!==0?c:(m.get(a?.id)??99)-(m.get(t?.id)??99)})}function re(e){const a=(e||[]).filter(t=>t&&(t.tier||0)>=1&&u.has(t.id));return a.length===0?null:ee(a)[0]}const v={1:"bronze",2:"silver",3:"gold",4:"diamond"},ie=["bronze","silver","gold","diamond"],ae={bronze:{rim:["#a06a44","#5c3a22"],face:["#d29a6c","#96602f"],glyph:"#3f2817",ring:"#e8c3a0",sheen:"rgba(255, 236, 220, 0.45)",label:"#a06a44"},silver:{rim:["#aab3bb","#67707b"],face:["#dde2e7","#9ba5ae"],glyph:"#39424b",ring:"#f2f5f7",sheen:"rgba(255, 255, 255, 0.55)",label:"#8b959f"},gold:{rim:["#c9971c","#8a6508"],face:["#f2ca52","#cf9c26"],glyph:"#5c430e",ring:"#ffe9a8",sheen:"rgba(255, 248, 214, 0.55)",label:"#b8860b"},diamond:{rim:["#62b1e0","#7c6fd9"],face:["#c8ecf6","#84b4ea"],glyph:"#27496d",ring:"#eafcff",sheen:"rgba(255, 255, 255, 0.65)",label:"#5a9bd8"}},y={rim:["#a8ada9","#7c817d"],face:["#cdd2ce","#a3a8a4"],glyph:"#6a706c",ring:"#dde1de",sheen:"rgba(255, 255, 255, 0.25)",label:"#8b908c"};function te(e,a=!1){return a||!e||e<1?y:ae[v[Math.min(e,4)]]||y}function se(e){return v[e]||null}const g={xs:18,sm:24,md:44,xl:88,lg:108},f={xs:.75,sm:1,md:1.5,xl:2,lg:2};function le({badgeId:e,tier:a=0,size:t="md",locked:c=!1,label:i,className:M=""}){const s=u.get(e),h=c||!a||a<1,n=te(a,h),d=t==="fill",l=d?"100%":g[t]||g.md,b=d?4:f[t]||f.md,[_,x]=N.useState(!1),p=s?.icon||null,w=!!s?.art&&!_;return r.jsx("span",{role:i?"img":void 0,"aria-label":i||void 0,"aria-hidden":i?void 0:!0,className:`inline-flex shrink-0 rounded-full ${M}`,style:{width:l,height:l,padding:b,background:`linear-gradient(135deg, ${n.rim[0]} 0%, ${n.ring} 42%, ${n.rim[1]} 100%)`,boxShadow:d||t==="md"||t==="xl"||t==="lg"?"0 0 0 1px rgba(10, 15, 12, 0.06), 0 1px 2px rgba(10, 15, 12, 0.08)":void 0},children:w?r.jsx("img",{src:s.art,alt:"",draggable:!1,loading:"lazy",onError:()=>x(!0),className:"h-full w-full rounded-full object-cover",style:h?{filter:"grayscale(1)",opacity:.55}:void 0}):r.jsx("span",{className:"flex h-full w-full items-center justify-center rounded-full",style:{background:`linear-gradient(145deg, ${n.face[0]}, ${n.face[1]})`},children:p?r.jsx(p,{size:d?64:Math.round(l*.5),color:n.glyph,strokeWidth:2}):null})})}export{le as A,k as B,V as H,Q as T,ae as a,de as b,u as c,ie as d,re as h,te as p,ee as s,se as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BadgeDetailModal-CN7MTGyp.js","assets/__vite-browser-external-BE7h4Ou0.js","assets/__vite-browser-external-CiR9-j4L.css","assets/react-DoVntgJI.js","assets/AchievementBadge-BJRW8Tr1.js","assets/zap-CUYx_JsZ.js","assets/flame-PKC57o-h.js","assets/use-transform-Bt5K4W-2.js","assets/use-reduced-motion-CkoMrH9Y.js","assets/AchievementsSection-CUaUhyL6.js","assets/format-tokens-E_eZCw2b.js","assets/DialogTitle-CiPqqI8_.js","assets/useScrollLock-BEpIOp1F.js","assets/store-D9UN_t1a.js"])))=>i.map(i=>d[i]);
2
- import{r as l,G as h,H as f,I as v,j as e,c,L as p,d as g,a as y,J as b,K as k,_ as j}from"./__vite-browser-external-BE7h4Ou0.js";import{A as w}from"./AchievementsSection-CUaUhyL6.js";import{B as x}from"./AchievementBadge-BJRW8Tr1.js";import"./react-DoVntgJI.js";import"./format-tokens-E_eZCw2b.js";import"./use-reduced-motion-CkoMrH9Y.js";import"./zap-CUYx_JsZ.js";import"./flame-PKC57o-h.js";function N({enabled:a=!0}={}){const[n,t]=l.useState({status:"loading",achievements:[],error:null}),s=l.useMemo(()=>h(),[]);return l.useEffect(()=>{if(!a){t({status:"disabled",achievements:[],error:null});return}let i=!1;return t(r=>({...r,status:"loading"})),f({timeZone:s,tzOffsetMinutes:v()}).then(r=>{i||t({status:"ready",achievements:Array.isArray(r?.achievements)?r.achievements:[],error:null})}).catch(r=>{i||t({status:"error",achievements:[],error:r})}),()=>{i=!0}},[a,s]),n}const A=g.lazy(()=>j(()=>import("./BadgeDetailModal-CN7MTGyp.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])));function I({authLoading:a,authEnabled:n,authUserId:t,mockEnabled:s}){if(s)return{authLoading:!1,signedIn:!0,userId:"mock-user"};const i=!!(n&&t);return{authLoading:!!a,signedIn:i,userId:i?t:null}}function B(){const a=y(),[n,t]=l.useState({status:"loading",achievements:[],userId:null}),s=b(),{authLoading:i,signedIn:r,userId:o}=I({authLoading:a?.loading,authEnabled:a?.enabled,authUserId:a?.user?.id,mockEnabled:s});return l.useEffect(()=>{if(i){t({status:"loading",achievements:[],userId:null});return}if(!r){t({status:"signed-out",achievements:[],userId:null});return}let d=!1;return t({status:"loading",achievements:[],userId:o}),(async()=>{try{const u=s?null:await a.getAccessToken?.(),m=await k({accessToken:u,userId:o});if(d)return;t({status:"ready",achievements:Array.isArray(m?.badges)?m.badges:[],userId:o})}catch{d||t({status:"error",achievements:[],userId:o})}})(),()=>{d=!0}},[i,s,r,o]),{...n,signedIn:r,settled:_({authLoading:i,signedIn:r,userId:o,state:n})}}function _({authLoading:a,signedIn:n,userId:t,state:s}){return a?!1:n?s.userId===t&&(s.status==="ready"||s.status==="error"):s.status==="signed-out"}function S(){return e.jsx("div",{className:"mx-0 grid animate-pulse grid-cols-[repeat(3,max-content)] justify-between gap-y-7 sm:-mx-2 sm:grid-cols-[repeat(4,max-content)] lg:grid-cols-[repeat(5,max-content)]","aria-hidden":!0,children:Array.from({length:x.length}).map((a,n)=>e.jsxs("div",{className:"flex w-[6.75rem] flex-col items-center px-0 pb-3 pt-4 sm:w-[7.75rem]",children:[e.jsx("div",{className:"h-[108px] w-[108px] rounded-full bg-oai-gray-200 dark:bg-oai-gray-800"}),e.jsx("div",{className:"mt-3 h-3 w-16 rounded bg-oai-gray-200 dark:bg-oai-gray-800"}),e.jsx("div",{className:"mt-2 h-2 w-10 rounded bg-oai-gray-100 dark:bg-oai-gray-800/60"})]},n))})}function D(){const a=N(),n=B(),[t,s]=l.useState(null),i=a.status==="loading"||!n.settled,r=l.useMemo(()=>[...n.achievements||[],...a.achievements||[]],[n.achievements,a.achievements]),o=l.useMemo(()=>r.filter(u=>(u?.tier||0)>=1).length,[r]),d=x.length;return e.jsxs("div",{className:"flex flex-1 flex-col font-oai text-oai-black antialiased dark:text-oai-white",children:[e.jsx("main",{className:"flex-1 pb-12 pt-8 sm:pb-16 sm:pt-10",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-7 flex items-baseline justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-3xl font-semibold tracking-tight text-oai-black dark:text-white sm:text-4xl",children:c("achievements.page.title")}),e.jsx("p",{className:"mt-1.5 text-sm text-oai-gray-500 dark:text-oai-gray-400",children:c("achievements.page.local_note")})]}),!i&&e.jsxs("div",{className:"shrink-0 text-right",children:[e.jsxs("div",{className:"font-mono text-2xl font-semibold leading-none tabular-nums text-oai-black dark:text-white",children:[o,e.jsxs("span",{className:"text-oai-gray-400 dark:text-oai-gray-600",children:["/",d]})]}),e.jsx("div",{className:"mt-2 h-1 w-24 overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:e.jsx("div",{className:"h-full rounded-full bg-oai-brand-600 transition-[width] duration-500",style:{width:`${Math.round(o/d*100)}%`}})})]})]}),!n.signedIn&&!i&&e.jsxs("div",{className:"mb-6 flex flex-wrap items-center justify-between gap-x-4 gap-y-2 rounded-xl border border-oai-gray-200 bg-oai-gray-50 px-4 py-3 dark:border-oai-gray-800 dark:bg-oai-gray-900/60",children:[e.jsx("p",{className:"text-sm text-oai-gray-600 dark:text-oai-gray-300",children:c("achievements.signin.prompt")}),e.jsx(p,{to:"/login",className:"shrink-0 rounded-lg bg-oai-brand-600 px-3 py-1.5 text-sm font-medium text-white transition-colors duration-200 hover:bg-oai-brand-700 active:scale-[0.98]",children:c("achievements.signin.action")})]}),i?e.jsx(S,{}):e.jsxs(e.Fragment,{children:[e.jsx(w,{achievements:r,isOwn:!0,columns:"wide",size:"lg",animateIn:!0,onSelect:s}),e.jsxs("p",{className:"mt-10 text-center text-xs text-oai-gray-400 dark:text-oai-gray-500",children:[c("achievements.page.suggest")," ",e.jsx("a",{href:"https://github.com/xiufengsun/TokenTracker/issues",target:"_blank",rel:"noopener noreferrer",className:"underline decoration-oai-gray-300 underline-offset-2 transition-colors hover:text-oai-gray-700 hover:decoration-oai-gray-500 dark:decoration-oai-gray-600 dark:hover:text-oai-gray-300",children:c("achievements.page.suggest_link")})]})]})]})}),t&&e.jsx(g.Suspense,{fallback:null,children:e.jsx(A,{badge:t,onClose:()=>s(null)})})]})}export{_ as cloudBadgesSettled,D as default,I as resolveCloudBadgeIdentity};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BadgeDetailModal-BFlrt34z.js","assets/__vite-browser-external-WKiEWJ30.js","assets/__vite-browser-external-CiR9-j4L.css","assets/react-us685QUG.js","assets/AchievementBadge-Bl3bWjZw.js","assets/zap-BcwbN9j5.js","assets/flame-DFEEnwot.js","assets/use-transform-WxJRtugr.js","assets/use-reduced-motion-DDhy4yg_.js","assets/AchievementsSection-D5TJtcI5.js","assets/format-tokens-BPq1moPg.js","assets/DialogTitle-eIgptOU-.js","assets/useScrollLock-CZ1Na38Y.js","assets/store-B-d1Nz34.js"])))=>i.map(i=>d[i]);
2
+ import{r as l,G as h,H as f,I as v,j as e,c,L as p,d as g,a as y,J as b,K as k,_ as j}from"./__vite-browser-external-WKiEWJ30.js";import{A as w}from"./AchievementsSection-D5TJtcI5.js";import{B as x}from"./AchievementBadge-Bl3bWjZw.js";import"./react-us685QUG.js";import"./format-tokens-BPq1moPg.js";import"./use-reduced-motion-DDhy4yg_.js";import"./zap-BcwbN9j5.js";import"./flame-DFEEnwot.js";function N({enabled:a=!0}={}){const[n,t]=l.useState({status:"loading",achievements:[],error:null}),s=l.useMemo(()=>h(),[]);return l.useEffect(()=>{if(!a){t({status:"disabled",achievements:[],error:null});return}let i=!1;return t(r=>({...r,status:"loading"})),f({timeZone:s,tzOffsetMinutes:v()}).then(r=>{i||t({status:"ready",achievements:Array.isArray(r?.achievements)?r.achievements:[],error:null})}).catch(r=>{i||t({status:"error",achievements:[],error:r})}),()=>{i=!0}},[a,s]),n}const A=g.lazy(()=>j(()=>import("./BadgeDetailModal-BFlrt34z.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13])));function I({authLoading:a,authEnabled:n,authUserId:t,mockEnabled:s}){if(s)return{authLoading:!1,signedIn:!0,userId:"mock-user"};const i=!!(n&&t);return{authLoading:!!a,signedIn:i,userId:i?t:null}}function B(){const a=y(),[n,t]=l.useState({status:"loading",achievements:[],userId:null}),s=b(),{authLoading:i,signedIn:r,userId:o}=I({authLoading:a?.loading,authEnabled:a?.enabled,authUserId:a?.user?.id,mockEnabled:s});return l.useEffect(()=>{if(i){t({status:"loading",achievements:[],userId:null});return}if(!r){t({status:"signed-out",achievements:[],userId:null});return}let d=!1;return t({status:"loading",achievements:[],userId:o}),(async()=>{try{const u=s?null:await a.getAccessToken?.(),m=await k({accessToken:u,userId:o});if(d)return;t({status:"ready",achievements:Array.isArray(m?.badges)?m.badges:[],userId:o})}catch{d||t({status:"error",achievements:[],userId:o})}})(),()=>{d=!0}},[i,s,r,o]),{...n,signedIn:r,settled:_({authLoading:i,signedIn:r,userId:o,state:n})}}function _({authLoading:a,signedIn:n,userId:t,state:s}){return a?!1:n?s.userId===t&&(s.status==="ready"||s.status==="error"):s.status==="signed-out"}function S(){return e.jsx("div",{className:"mx-0 grid animate-pulse grid-cols-[repeat(3,max-content)] justify-between gap-y-7 sm:-mx-2 sm:grid-cols-[repeat(4,max-content)] lg:grid-cols-[repeat(5,max-content)]","aria-hidden":!0,children:Array.from({length:x.length}).map((a,n)=>e.jsxs("div",{className:"flex w-[6.75rem] flex-col items-center px-0 pb-3 pt-4 sm:w-[7.75rem]",children:[e.jsx("div",{className:"h-[108px] w-[108px] rounded-full bg-oai-gray-200 dark:bg-oai-gray-800"}),e.jsx("div",{className:"mt-3 h-3 w-16 rounded bg-oai-gray-200 dark:bg-oai-gray-800"}),e.jsx("div",{className:"mt-2 h-2 w-10 rounded bg-oai-gray-100 dark:bg-oai-gray-800/60"})]},n))})}function D(){const a=N(),n=B(),[t,s]=l.useState(null),i=a.status==="loading"||!n.settled,r=l.useMemo(()=>[...n.achievements||[],...a.achievements||[]],[n.achievements,a.achievements]),o=l.useMemo(()=>r.filter(u=>(u?.tier||0)>=1).length,[r]),d=x.length;return e.jsxs("div",{className:"flex flex-1 flex-col font-oai text-oai-black antialiased dark:text-oai-white",children:[e.jsx("main",{className:"flex-1 pb-12 pt-8 sm:pb-16 sm:pt-10",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-4 sm:px-6",children:[e.jsxs("div",{className:"mb-7 flex items-baseline justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-3xl font-semibold tracking-tight text-oai-black dark:text-white sm:text-4xl",children:c("achievements.page.title")}),e.jsx("p",{className:"mt-1.5 text-sm text-oai-gray-500 dark:text-oai-gray-400",children:c("achievements.page.local_note")})]}),!i&&e.jsxs("div",{className:"shrink-0 text-right",children:[e.jsxs("div",{className:"font-mono text-2xl font-semibold leading-none tabular-nums text-oai-black dark:text-white",children:[o,e.jsxs("span",{className:"text-oai-gray-400 dark:text-oai-gray-600",children:["/",d]})]}),e.jsx("div",{className:"mt-2 h-1 w-24 overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:e.jsx("div",{className:"h-full rounded-full bg-oai-brand-600 transition-[width] duration-500",style:{width:`${Math.round(o/d*100)}%`}})})]})]}),!n.signedIn&&!i&&e.jsxs("div",{className:"mb-6 flex flex-wrap items-center justify-between gap-x-4 gap-y-2 rounded-xl border border-oai-gray-200 bg-oai-gray-50 px-4 py-3 dark:border-oai-gray-800 dark:bg-oai-gray-900/60",children:[e.jsx("p",{className:"text-sm text-oai-gray-600 dark:text-oai-gray-300",children:c("achievements.signin.prompt")}),e.jsx(p,{to:"/login",className:"shrink-0 rounded-lg bg-oai-brand-600 px-3 py-1.5 text-sm font-medium text-white transition-colors duration-200 hover:bg-oai-brand-700 active:scale-[0.98]",children:c("achievements.signin.action")})]}),i?e.jsx(S,{}):e.jsxs(e.Fragment,{children:[e.jsx(w,{achievements:r,isOwn:!0,columns:"wide",size:"lg",animateIn:!0,onSelect:s}),e.jsxs("p",{className:"mt-10 text-center text-xs text-oai-gray-400 dark:text-oai-gray-500",children:[c("achievements.page.suggest")," ",e.jsx("a",{href:"https://github.com/xiufengsun/TokenTracker/issues",target:"_blank",rel:"noopener noreferrer",className:"underline decoration-oai-gray-300 underline-offset-2 transition-colors hover:text-oai-gray-700 hover:decoration-oai-gray-500 dark:decoration-oai-gray-600 dark:hover:text-oai-gray-300",children:c("achievements.page.suggest_link")})]})]})]})}),t&&e.jsx(g.Suspense,{fallback:null,children:e.jsx(A,{badge:t,onClose:()=>s(null)})})]})}export{_ as cloudBadgesSettled,D as default,I as resolveCloudBadgeIdentity};
@@ -1 +1 @@
1
- import{m as _,j as s,c as l}from"./__vite-browser-external-BE7h4Ou0.js";import{m as $}from"./react-DoVntgJI.js";import{B as x,s as b,b as C,t as T,A as B,a as E}from"./AchievementBadge-BJRW8Tr1.js";import{f as L}from"./format-tokens-E_eZCw2b.js";import{u as I}from"./use-reduced-motion-CkoMrH9Y.js";const D=[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]],F=_("hard-drive",D);function V(r,i){const t=Number(i)||0;switch(r){case"tokens":return L(t);case"rank":return`#${Math.round(t)}`;case"multiplier":return`${(Math.round(t*10)/10).toString()}×`;default:return Math.round(t).toLocaleString()}}function H(r){if(!r)return 0;const i=Number(r.next_threshold),t=Number(r.metric_value??r.value);if(!Number.isFinite(i)||i<=0)return r.tier>=4?1:0;if(!Number.isFinite(t)||t<=0)return 0;const o=r.lower_is_better?i/t:t/i;return Math.max(0,Math.min(1,o))}function q(r){const i=r?.achieved||{},t=Object.values(i).map(o=>o?Date.parse(o):NaN).filter(o=>Number.isFinite(o));return t.length>0?Math.max(...t):null}function K({achievements:r,isOwn:i=!1,scope:t,onSelect:o,size:m="xl",columns:v="default",animateIn:y=!1,className:N=""}){const k=I(),u=y&&!k,p=new Map;for(const e of Array.isArray(r)?r:[])e&&e.id&&p.set(e.id,e);const g=t?x.filter(e=>e.scope===t):x;let c;if(i){const e=g.map(a=>({entry:a,record:p.get(a.id)||{id:a.id,tier:0}})),n=b(e.filter(a=>(a.record.tier||0)>=1).map(a=>({...a,id:a.entry.id,tier:a.record.tier}))),h=e.filter(a=>(a.record.tier||0)<1);c=[...n,...h]}else c=b(g.map(e=>({entry:e,record:p.get(e.id)})).filter(e=>e.record&&(e.record.tier||0)>=1).map(e=>({...e,id:e.entry.id,tier:e.record.tier}))).map(({entry:e,record:n})=>({entry:e,record:n}));if(c.length===0)return null;const j=v==="wide"?"grid-cols-[repeat(3,max-content)] sm:grid-cols-[repeat(4,max-content)] lg:grid-cols-[repeat(5,max-content)]":"grid-cols-[repeat(3,max-content)] sm:grid-cols-[repeat(4,max-content)]",w=m==="lg"?"mx-0 sm:-mx-2":"-mx-2 sm:-mx-4",M=m==="lg"?"px-0":"px-1";return s.jsx("div",{className:`${w} grid justify-between gap-y-7 ${j} ${N}`,children:c.map(({entry:e,record:n},h)=>{const a=(n.tier||0)>=1,f=l(C(e.id,"name")),d=a?T(n.tier):null,A=H(n);return s.jsxs($.button,{type:"button",initial:u?{opacity:0,y:16,scale:.9}:!1,animate:u?{opacity:1,y:0,scale:1}:void 0,whileTap:u?{scale:.97}:void 0,transition:{delay:.05+h*.035,duration:.45,ease:[.16,1,.3,1]},onClick:o?()=>o({...n,id:e.id}):void 0,className:`group flex w-[6.75rem] flex-col items-center rounded-xl ${M} pb-3 pt-4 text-center transition-[background-color,transform] duration-200 ease-out hover:bg-oai-gray-50 active:scale-[0.97] dark:hover:bg-oai-gray-900/70 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand/60 sm:w-[7.75rem]`,"aria-label":l("achievements.badge.aria",{name:f,tier:d?l(`achievements.tier.${d}`):l("achievements.modal.locked")}),children:[s.jsx(B,{badgeId:e.id,tier:n.tier,locked:!a,size:m,className:"transition-transform duration-200 ease-out group-hover:-translate-y-0.5 group-hover:scale-105"}),s.jsxs("span",{className:"mt-2.5 flex w-full items-center justify-center gap-1",children:[s.jsx("span",{title:f,className:"min-w-0 truncate text-xs font-medium leading-tight text-oai-gray-800 dark:text-oai-gray-200",children:f}),e.scope==="local"&&s.jsx("span",{title:l("achievements.page.local_note"),"aria-label":l("achievements.scope.local"),className:"inline-flex shrink-0 text-oai-gray-400 dark:text-oai-gray-500",children:s.jsx(F,{size:11,strokeWidth:2,"aria-hidden":!0})})]}),s.jsx("span",{className:"mt-1 flex h-4 w-full items-center justify-center",children:a?s.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.08em]",style:{color:E[d]?.label},children:l(`achievements.tier.${d}`)}):i?s.jsx("span",{className:"h-[3px] w-14 overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:s.jsx("span",{className:"block h-full rounded-full bg-oai-brand/70",style:{width:`${Math.round(A*100)}%`}})}):null})]},e.id)})})}export{K as A,H as b,V as f,q as l};
1
+ import{m as _,j as s,c as l}from"./__vite-browser-external-WKiEWJ30.js";import{m as $}from"./react-us685QUG.js";import{B as x,s as b,b as C,t as T,A as B,a as E}from"./AchievementBadge-Bl3bWjZw.js";import{f as L}from"./format-tokens-BPq1moPg.js";import{u as I}from"./use-reduced-motion-DDhy4yg_.js";const D=[["path",{d:"M10 16h.01",key:"1bzywj"}],["path",{d:"M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"18tbho"}],["path",{d:"M21.946 12.013H2.054",key:"zqlbp7"}],["path",{d:"M6 16h.01",key:"1pmjb7"}]],F=_("hard-drive",D);function V(r,i){const t=Number(i)||0;switch(r){case"tokens":return L(t);case"rank":return`#${Math.round(t)}`;case"multiplier":return`${(Math.round(t*10)/10).toString()}×`;default:return Math.round(t).toLocaleString()}}function H(r){if(!r)return 0;const i=Number(r.next_threshold),t=Number(r.metric_value??r.value);if(!Number.isFinite(i)||i<=0)return r.tier>=4?1:0;if(!Number.isFinite(t)||t<=0)return 0;const o=r.lower_is_better?i/t:t/i;return Math.max(0,Math.min(1,o))}function q(r){const i=r?.achieved||{},t=Object.values(i).map(o=>o?Date.parse(o):NaN).filter(o=>Number.isFinite(o));return t.length>0?Math.max(...t):null}function K({achievements:r,isOwn:i=!1,scope:t,onSelect:o,size:m="xl",columns:v="default",animateIn:y=!1,className:N=""}){const k=I(),u=y&&!k,p=new Map;for(const e of Array.isArray(r)?r:[])e&&e.id&&p.set(e.id,e);const g=t?x.filter(e=>e.scope===t):x;let c;if(i){const e=g.map(a=>({entry:a,record:p.get(a.id)||{id:a.id,tier:0}})),n=b(e.filter(a=>(a.record.tier||0)>=1).map(a=>({...a,id:a.entry.id,tier:a.record.tier}))),h=e.filter(a=>(a.record.tier||0)<1);c=[...n,...h]}else c=b(g.map(e=>({entry:e,record:p.get(e.id)})).filter(e=>e.record&&(e.record.tier||0)>=1).map(e=>({...e,id:e.entry.id,tier:e.record.tier}))).map(({entry:e,record:n})=>({entry:e,record:n}));if(c.length===0)return null;const j=v==="wide"?"grid-cols-[repeat(3,max-content)] sm:grid-cols-[repeat(4,max-content)] lg:grid-cols-[repeat(5,max-content)]":"grid-cols-[repeat(3,max-content)] sm:grid-cols-[repeat(4,max-content)]",w=m==="lg"?"mx-0 sm:-mx-2":"-mx-2 sm:-mx-4",M=m==="lg"?"px-0":"px-1";return s.jsx("div",{className:`${w} grid justify-between gap-y-7 ${j} ${N}`,children:c.map(({entry:e,record:n},h)=>{const a=(n.tier||0)>=1,f=l(C(e.id,"name")),d=a?T(n.tier):null,A=H(n);return s.jsxs($.button,{type:"button",initial:u?{opacity:0,y:16,scale:.9}:!1,animate:u?{opacity:1,y:0,scale:1}:void 0,whileTap:u?{scale:.97}:void 0,transition:{delay:.05+h*.035,duration:.45,ease:[.16,1,.3,1]},onClick:o?()=>o({...n,id:e.id}):void 0,className:`group flex w-[6.75rem] flex-col items-center rounded-xl ${M} pb-3 pt-4 text-center transition-[background-color,transform] duration-200 ease-out hover:bg-oai-gray-50 active:scale-[0.97] dark:hover:bg-oai-gray-900/70 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-oai-brand/60 sm:w-[7.75rem]`,"aria-label":l("achievements.badge.aria",{name:f,tier:d?l(`achievements.tier.${d}`):l("achievements.modal.locked")}),children:[s.jsx(B,{badgeId:e.id,tier:n.tier,locked:!a,size:m,className:"transition-transform duration-200 ease-out group-hover:-translate-y-0.5 group-hover:scale-105"}),s.jsxs("span",{className:"mt-2.5 flex w-full items-center justify-center gap-1",children:[s.jsx("span",{title:f,className:"min-w-0 truncate text-xs font-medium leading-tight text-oai-gray-800 dark:text-oai-gray-200",children:f}),e.scope==="local"&&s.jsx("span",{title:l("achievements.page.local_note"),"aria-label":l("achievements.scope.local"),className:"inline-flex shrink-0 text-oai-gray-400 dark:text-oai-gray-500",children:s.jsx(F,{size:11,strokeWidth:2,"aria-hidden":!0})})]}),s.jsx("span",{className:"mt-1 flex h-4 w-full items-center justify-center",children:a?s.jsx("span",{className:"text-[10px] font-semibold uppercase tracking-[0.08em]",style:{color:E[d]?.label},children:l(`achievements.tier.${d}`)}):i?s.jsx("span",{className:"h-[3px] w-14 overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:s.jsx("span",{className:"block h-full rounded-full bg-oai-brand/70",style:{width:`${Math.round(A*100)}%`}})}):null})]},e.id)})})}export{K as A,H as b,V as f,q as l};
@@ -1 +1 @@
1
- import{r as L,j as a,bP as De,c as h,e as ye,X as Ie}from"./__vite-browser-external-BE7h4Ou0.js";import{k as _e,V as Me,l as Ve,r as Te,n as $e,o as be,q as ve,s as Oe,t as Re,v as Be,w as Pe,x as Ke,y as Ce,z as Fe,A as Le,B as Xe,S as Ge,H as We,C as G,D as ze,E as Ue,e as Ye,F as He,m as C}from"./react-DoVntgJI.js";import{c as je,A as Ze,p as qe,b as U,t as le,a as T,d as Je}from"./AchievementBadge-BJRW8Tr1.js";import{u as Qe,a as z}from"./use-transform-Bt5K4W-2.js";import{u as et}from"./use-reduced-motion-CkoMrH9Y.js";import{l as ce,f as ue,b as tt}from"./AchievementsSection-CUaUhyL6.js";import{D as nt,a as rt,b as at,c as st,d as it,e as ot}from"./DialogTitle-CiPqqI8_.js";import"./zap-CUYx_JsZ.js";import"./flame-PKC57o-h.js";import"./format-tokens-E_eZCw2b.js";import"./useScrollLock-BEpIOp1F.js";import"./store-D9UN_t1a.js";const lt=(e,t,n)=>{const r=t-e;return((n-e)%r+r)%r+e};function Ne(e,t){return _e(e)?e[lt(0,e.length,t)]:e}class ct{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>t.finished))}getAll(t){return this.animations[0][t]}setAll(t,n){for(let r=0;r<this.animations.length;r++)this.animations[r][t]=n}attachTimeline(t){const n=this.animations.map(r=>r.attachTimeline(t));return()=>{n.forEach((r,s)=>{r&&r(),this.animations[s].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get state(){return this.getAll("state")}get startTime(){return this.getAll("startTime")}get duration(){return de(this.animations,"duration")}get iterationDuration(){return de(this.animations,"iterationDuration")}runAll(t){this.animations.forEach(n=>n[t]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}function de(e,t){let n=0;for(let r=0;r<e.length;r++){const s=e[r][t];s!==null&&s>n&&(n=s)}return n}class ut extends ct{then(t,n){return this.finished.finally(t).then(()=>{})}}function dt(e,t){return e in t}class mt extends Me{constructor(){super(...arguments),this.type="object"}readValueFromInstance(t,n){if(dt(n,t)){const r=t[n];if(typeof r=="string"||typeof r=="number")return r}}getBaseTargetFromProps(){}removeValueFromRenderState(t,n){delete n.output[t]}measureInstanceViewportBox(){return Ve()}build(t,n){Object.assign(t.output,n)}renderInstance(t,{output:n}){Object.assign(t,n)}sortInstanceNodePosition(){return 0}}function Y(e){return typeof e=="object"&&!Array.isArray(e)}function ke(e,t,n,r){return e==null?[]:typeof e=="string"&&Y(t)?Te(e,n,r):e instanceof NodeList?Array.from(e):Array.isArray(e)?e.filter(s=>s!=null):[e]}function ft(e,t,n){return e*(t+1)+n*t}function me(e,t,n,r){return typeof t=="number"?t:t.startsWith("-")||t.startsWith("+")?Math.max(0,e+parseFloat(t)):t==="<"?n:t.startsWith("<")?Math.max(0,n+parseFloat(t.slice(1))):r.get(t)??e}function pt(e,t,n){for(let r=0;r<e.length;r++){const s=e[r];s.at>t&&s.at<n&&(be(e,s),r--)}}function ht(e,t,n,r,s,c){pt(e,s,c);for(let i=0;i<t.length;i++)e.push({value:t[i],at:$e(s,c,r[i]),easing:Ne(n,i)})}function gt(e,t,n=0){const r=t+1+t*n;for(let s=0;s<e.length;s++)e[s]=e[s]/r}function xt(e,t){return e.at===t.at?e.value===null?1:t.value===null?-1:0:e.at-t.at}const yt="easeInOut",bt=20;function vt(e,{defaultTransition:t={},...n}={},r,s){const c=t.duration||.3,i=new Map,f=new Map,m={},p=new Map;let g=0,u=0,x=0;for(let N=0;N<e.length;N++){const k=e[N];if(typeof k=="string"){p.set(k,u);continue}else if(!Array.isArray(k)){p.set(k.name,me(u,k.at,g,p));continue}let[E,b,v={}]=k;v.at!==void 0&&(u=me(u,v.at,g,p));let j=0;const _=(w,M,A,o=0,l=0)=>{const d=jt(w),{delay:D=0,times:y=Oe(d),type:R=t.type||"keyframes",repeat:B,repeatType:W,repeatDelay:H=0,...Se}=M;let{ease:I=t.ease||"easeOut",duration:S}=M;const Z=typeof D=="function"?D(o,l):D,q=d.length,J=Ke(R)?R:s?.[R||"keyframes"];if(q<=2&&J){let $=100;if(q===2&&wt(d)){const P=d[1]-d[0];$=Math.abs(P)}const O={...t,...Se};S!==void 0&&(O.duration=Ce(S));const X=Re(O,$,J);I=X.ease,S=X.duration}S??(S=c);const Q=u+Z;y.length===1&&y[0]===0&&(y[1]=1);const ee=y.length-d.length;if(ee>0&&Be(y,ee),d.length===1&&d.unshift(null),B&&B<bt){const $=S>0?H/S:0;S=ft(S,B,H);const O=[...d],X=[...y];I=Array.isArray(I)?[...I]:[I];const P=[...I],ne=W==="reverse"||W==="mirror";let re=O,ae=P;ne&&(re=[...O].reverse(),W==="reverse"&&(ae=[...P].reverse().map(V=>typeof V=="function"?Pe(V):V)));for(let V=0;V<B;V++){const se=ne&&V%2===0,ie=se?re:O,Ee=se?ae:P,oe=(V+1)*(1+$);$>0&&(d.push(d[d.length-1]),y.push(oe),I.push("linear")),d.push(...ie);for(let K=0;K<ie.length;K++)y.push(X[K]+oe),I.push(K===0?"linear":Ne(Ee,K-1))}gt(y,B,$)}const te=Q+S;ht(A,d,I,y,Q,te),j=Math.max(Z+S,j),x=Math.max(te,x)};if(ve(E)){const w=fe(E,f);_(b,v,pe("default",w))}else{const w=ke(E,b,r,m),M=w.length;for(let A=0;A<M;A++){b=b,v=v;const o=w[A],l=fe(o,f);for(const d in b)_(b[d],Nt(v,d),pe(d,l),A,M)}}g=u,u+=j}return f.forEach((N,k)=>{for(const E in N){const b=N[E];b.sort(xt);const v=[],j=[],_=[];for(let o=0;o<b.length;o++){const{at:l,value:d,easing:D}=b[o];v.push(d),j.push(Fe(0,x,l)),_.push(D||"easeOut")}j[0]!==0&&(j.unshift(0),v.unshift(v[0]),_.unshift(yt)),j[j.length-1]!==1&&(j.push(1),v.push(null)),i.has(k)||i.set(k,{keyframes:{},transition:{}});const w=i.get(k);w.keyframes[E]=v;const{type:M,...A}=t;w.transition[E]={...A,duration:x,ease:_,times:j,...n}}}),i}function fe(e,t){return!t.has(e)&&t.set(e,{}),t.get(e)}function pe(e,t){return t[e]||(t[e]=[]),t[e]}function jt(e){return Array.isArray(e)?e:[e]}function Nt(e,t){return e&&e[t]?{...e,...e[t]}:{...e}}const kt=e=>typeof e=="number",wt=e=>e.every(kt);function At(e){const t={presenceContext:null,props:{},visualState:{renderState:{transform:{},transformOrigin:{},style:{},vars:{},attrs:{}},latestValues:{}}},n=Le(e)&&!Xe(e)?new Ge(t):new We(t);n.mount(e),G.set(e,n)}function St(e){const t={presenceContext:null,props:{},visualState:{renderState:{output:{}},latestValues:{}}},n=new mt(t);n.mount(e),G.set(e,n)}function Et(e,t){return ve(e)||typeof e=="number"||typeof e=="string"&&!Y(t)}function we(e,t,n,r){const s=[];if(Et(e,t))s.push(ze(e,Y(t)&&t.default||t,n&&(n.default||n)));else{if(e==null)return s;const c=ke(e,t,r),i=c.length;for(let f=0;f<i;f++){const m=c[f],p=m instanceof Element?At:St;G.has(m)||p(m);const g=G.get(m),u={...n};"delay"in u&&typeof u.delay=="function"&&(u.delay=u.delay(f,i)),s.push(...Ue(g,{...t,transition:u},{}))}}return s}function Dt(e,t,n){const r=[],s=e.map(i=>{if(Array.isArray(i)&&typeof i[0]=="function"){const f=i[0],m=Ye(0);return m.on("change",f),i.length===1?[m,[0,1]]:i.length===2?[m,[0,1],i[1]]:[m,i[1],i[2]]}return i});return vt(s,t,n,{spring:He}).forEach(({keyframes:i,transition:f},m)=>{r.push(...we(m,i,f))}),r}function It(e){return Array.isArray(e)&&e.some(Array.isArray)}function _t(e={}){const{scope:t,reduceMotion:n,skipAnimations:r}=e;function s(c,i,f){let m=[],p;const g={};if(n!==void 0&&(g.reduceMotion=n),r!==void 0&&(g.skipAnimations=r),It(c)){const{onComplete:x,...N}=i||{};typeof x=="function"&&(p=x),m=Dt(c,{...g,...N},t)}else{const{onComplete:x,...N}=f||{};typeof x=="function"&&(p=x),m=we(c,i,{...g,...N},t)}const u=new ut(m);return p&&u.finished.then(p),t&&(t.animations.push(u),u.finished.then(()=>{be(t.animations,u)})),u}return s}const F=_t(),he=8;function Mt({badgeId:e,tier:t,locked:n=!1,size:r=176,backLines:s=[],label:c}){const i=Qe(0),f=et(),m=L.useRef(null),p=L.useRef(null),g=L.useRef(!1),u=qe(t,n),x=je.get(e)?.icon||null,N=z(i,o=>`${(o%360+360)%360/360*160-80}%`),k=z(i,o=>`${80-(o%360+360)%360/360*160}%`),E=z(i,o=>{const l=Math.abs(Math.sin(o*Math.PI/180));return Math.max(0,(l-.35)/.65)*.3}),b=()=>{p.current?.stop?.(),p.current=null};L.useEffect(()=>{if(f||g.current)return;let o=!1;i.set(-360);const l=F(i,0,{duration:.9,ease:[.16,1,.3,1]});return p.current=l,l.then(()=>{o||g.current||(p.current=F(i,[0,-14,14,0],{duration:4.5,repeat:1/0,ease:"easeInOut"}))}),()=>{o=!0,b()}},[f,i]);const v=o=>{const l=i.get();if(f){const y=Math.round(l/180)*180;p.current=F(i,y,{duration:.2,ease:"easeOut"});return}const d=l+o*.35,D=Math.round(d/180)*180;p.current=F(i,D,{type:"spring",velocity:o,stiffness:58,damping:13.5,mass:1})},j=o=>{g.current=!0,b(),o.currentTarget.setPointerCapture?.(o.pointerId),m.current={pointerId:o.pointerId,startX:o.clientX,startRot:i.get(),samples:[{t:o.timeStamp,x:o.clientX}]}},_=o=>{const l=m.current;!l||l.pointerId!==o.pointerId||(i.set(l.startRot+(o.clientX-l.startX)*.55),l.samples.push({t:o.timeStamp,x:o.clientX}),l.samples.length>5&&l.samples.shift())},w=o=>{const l=m.current;if(!l||l.pointerId!==o.pointerId)return;m.current=null;const d=l.samples[0],D=l.samples[l.samples.length-1],y=D.t-d.t,R=y>0?(D.x-d.x)*.55*1e3/y:0;v(R)},M=o=>{if(o.key!=="ArrowLeft"&&o.key!=="ArrowRight")return;o.preventDefault(),g.current=!0,b();const l=o.key==="ArrowRight"?30:-30;p.current=F(i,i.get()+l,{duration:.15,ease:"easeOut"})},A={backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"};return a.jsx("div",{role:"img","aria-label":c,tabIndex:0,onPointerDown:j,onPointerMove:_,onPointerUp:w,onPointerCancel:w,onKeyDown:M,className:"inline-flex cursor-grab select-none items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-oai-brand/60 rounded-full active:cursor-grabbing",style:{perspective:900,touchAction:"pan-y"},children:a.jsxs("div",{className:"relative",style:{transform:"rotateX(-8deg)",transformStyle:"preserve-3d"},children:[a.jsxs(C.div,{className:"relative",style:{rotateY:i,transformStyle:"preserve-3d",width:r,height:r},children:[[-3,-1.5,0,1.5,3].map(o=>a.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 rounded-full",style:{transform:`translateZ(${o}px)`,background:u.rim[1]}},o)),a.jsxs("div",{className:"absolute inset-0 overflow-hidden rounded-full",style:{...A,transform:`translateZ(${he/2}px)`},children:[a.jsx(Ze,{badgeId:e,tier:t,locked:n,size:"fill",className:"brightness-105 saturate-[1.08]"}),a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"radial-gradient(circle at 30% 20%, rgba(255,255,255,0.45), rgba(255,255,255,0) 42%), linear-gradient(172deg, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0) 38%, rgba(0,0,0,0.08) 100%)",boxShadow:"inset 0 3px 7px rgba(255,255,255,0.5), inset 0 -3px 8px rgba(0,0,0,0.15)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{x:N,background:"linear-gradient(105deg, transparent 34%, rgba(255,255,255,0.5) 50%, transparent 66%)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{opacity:E,background:"rgba(8, 12, 10, 0.9)"}})]}),a.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-1 overflow-hidden rounded-full px-6 text-center",style:{...A,transform:`rotateY(180deg) translateZ(${he/2}px)`,background:`linear-gradient(145deg, ${u.face[0]}, ${u.face[1]})`,boxShadow:`inset 0 0 0 6px ${u.rim[1]}, inset 0 0 0 7.5px rgba(255,255,255,0.22), inset 0 3px 7px rgba(255,255,255,0.4), inset 0 -4px 12px rgba(0,0,0,0.22)`},children:[a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"repeating-radial-gradient(circle at 50% 50%, rgba(255,255,255,0.06) 0px, rgba(255,255,255,0.06) 1px, transparent 1px, transparent 4px)"}}),x?a.jsx(x,{"aria-hidden":!0,size:Math.round(r*.62),strokeWidth:1.1,color:u.glyph,className:"pointer-events-none absolute opacity-[0.13]",style:{filter:"drop-shadow(0 1px 0 rgba(255,255,255,0.3)) drop-shadow(0 -1px 0 rgba(0,0,0,0.35))"}}):null,a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"radial-gradient(circle at 70% 20%, rgba(255,255,255,0.4), rgba(255,255,255,0) 44%), linear-gradient(188deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0) 38%, rgba(0,0,0,0.10) 100%)"}}),s.map((o,l)=>a.jsx("div",{className:`font-mono tabular-nums ${l===0?"text-[10px] uppercase tracking-[0.18em]":l===1?"text-lg font-bold":"text-[11px]"}`,style:{color:u.glyph,textShadow:"0 1px 0 rgba(255,255,255,0.28), 0 -1px 0 rgba(0,0,0,0.3)"},children:o},`${l}-${o}`)),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{x:k,background:"linear-gradient(105deg, transparent 34%, rgba(255,255,255,0.45) 50%, transparent 66%)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{opacity:E,background:"rgba(8, 12, 10, 0.9)"}})]})]}),a.jsx("div",{"aria-hidden":!0,className:"absolute left-1/2 h-3 w-3/5 rounded-[100%] bg-black/20 blur-md dark:bg-black/45",style:{bottom:-20,transform:"translateX(-50%)"}})]})})}function Ae(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleDateString():null}function Vt(e){const t=Number(e);return!Number.isSafeInteger(t)||t<1?null:String(t).padStart(6,"0")}function Tt(e,t,n){if(t?.scope!=="cloud"||!n)return null;const r=Number(e?.serials?.[n]);return Number.isSafeInteger(r)&&r>=1?r:null}function $t({badge:e}){return a.jsx("div",{className:"flex items-center gap-1",children:Je.map((t,n)=>{const r=(e.tier||0)>=n+1,s=Ae(e.achieved?.[t]),c=T[t];return a.jsx("span",{title:s?`${h(`achievements.tier.${t}`)} · ${s}`:h(`achievements.tier.${t}`),className:"inline-flex h-2 w-8 rounded-full",style:r?{background:`linear-gradient(120deg, ${c.rim[0]} 0%, ${c.ring} 55%, ${c.rim[1]} 100%)`,boxShadow:"inset 0 1px 1px rgba(255,255,255,0.4), 0 0 0 1px rgba(10,15,12,0.05)"}:void 0,children:!r&&a.jsx("span",{className:"h-full w-full rounded-full bg-oai-gray-200 dark:bg-oai-gray-800"})},t)})})}function ge({badge:e,onClose:t}){const n=je.get(e.id),r=h(U(e.id,"name")),s=(e.tier||0)>=1,c=s?le(e.tier):null,i=Ae(s?e.achieved?.[c]||(ce(e)?new Date(ce(e)).toISOString():null):null),f=ue(n?.format,e.metric_value),m=tt(e),p=e.tier<4?le((e.tier||0)+1):null,g=Tt(e,n,c),u=Vt(g),x=u?[h("achievements.modal.achieved_label"),h("achievements.modal.issue_number",{number:u}),i||r]:[s?h("achievements.modal.achieved_label"):h("achievements.modal.locked"),s?f:"···",s&&i?i:r];return a.jsxs("div",{className:"flex flex-col items-center px-6 pb-6 pt-5 text-center",children:[a.jsxs("div",{className:"flex w-full items-start justify-between gap-3",children:[a.jsxs("div",{className:"min-w-0 flex-1 text-left",children:[a.jsx("h2",{className:"truncate text-lg font-semibold tracking-tight text-oai-black dark:text-white",children:r}),a.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:h(U(e.id,"desc"))})]}),a.jsx("button",{type:"button",onClick:t,"aria-label":h("achievements.modal.close"),className:"shrink-0 rounded-md p-1.5 text-oai-gray-400 transition-colors hover:bg-oai-gray-100 hover:text-oai-gray-700 dark:hover:bg-oai-gray-900 dark:hover:text-oai-gray-200",children:a.jsx(Ie,{size:16})})]}),a.jsx("div",{className:"mt-5 mb-7",children:a.jsx(Mt,{badgeId:e.id,tier:e.tier,locked:!s,backLines:x,label:h("achievements.modal.coin_aria",{name:r})})}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:"rounded-full px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-wide",style:s?{background:`linear-gradient(120deg, ${T[c].rim[0]} 0%, ${T[c].ring} 55%, ${T[c].rim[1]} 100%)`,color:T[c].glyph,textShadow:"0 1px 0 rgba(255,255,255,0.35)",boxShadow:"inset 0 1px 1px rgba(255,255,255,0.4), 0 0 0 1px rgba(10,15,12,0.06)"}:{background:"rgba(128,134,130,0.75)",color:"rgba(250,250,250,0.95)"},children:s?h(`achievements.tier.${c}`):h("achievements.modal.locked")}),s&&i?a.jsx("span",{className:"text-xs tabular-nums text-oai-gray-500 dark:text-oai-gray-400",children:i}):null]}),a.jsxs("dl",{className:"mt-5 w-full space-y-3 border-t border-oai-gray-200/70 pt-4 text-left dark:border-oai-gray-800/60",children:[a.jsxs("div",{className:"flex items-baseline justify-between gap-3 text-sm",children:[a.jsx("dt",{className:"text-oai-gray-500 dark:text-oai-gray-400",children:h("achievements.modal.value_label")}),a.jsx("dd",{className:"font-mono font-semibold tabular-nums text-oai-black dark:text-white",children:f})]}),a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between gap-3 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:[a.jsx("span",{children:e.tier>=4?h("achievements.modal.max_tier"):h("achievements.modal.progress_to_next",{tier:h(`achievements.tier.${p}`)})}),e.tier<4&&e.next_threshold!=null?a.jsxs("span",{className:"font-mono tabular-nums",children:[f," ",e.lower_is_better?"→":"/"," ",ue(n?.format,e.next_threshold)]}):null]}),a.jsx("div",{className:"mt-1.5 h-1.5 w-full overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:a.jsx("div",{className:"h-full rounded-full transition-[width] duration-500",style:{width:`${Math.round((e.tier>=4?1:m)*100)}%`,background:s?`linear-gradient(90deg, ${T[c].rim[0]} 0%, ${T[c].ring} 55%, ${T[c].rim[1]} 100%)`:"rgba(128,134,130,0.75)",boxShadow:s?"inset 0 1px 1px rgba(255,255,255,0.35)":void 0}})})]}),a.jsxs("div",{className:"flex items-center justify-between gap-3 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:[a.jsx("span",{children:h("achievements.modal.tier_history")}),a.jsx($t,{badge:e})]})]})]})}const xe=ye("relative w-full max-w-[380px] flex flex-col","rounded-2xl bg-white dark:bg-oai-gray-950","shadow-[0_20px_60px_-20px_rgba(0,0,0,0.25)] dark:shadow-[0_20px_60px_-10px_rgba(0,0,0,0.65)]","ring-1 ring-oai-gray-200 dark:ring-oai-gray-800 overflow-hidden","dark:border-t dark:border-white/[0.08]");function Ut({badge:e,onClose:t}){const n=De(),r=!!e;return L.useEffect(()=>{if(!n||!r)return;const s=c=>{c.key==="Escape"&&(c.stopPropagation(),t?.())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[n,r,t]),r?n?a.jsxs("div",{className:"fixed inset-0 z-[120] flex items-center justify-center p-4",children:[a.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-[2px]",onClick:t,"aria-hidden":!0}),a.jsx("div",{className:xe,children:a.jsx(ge,{badge:e,onClose:t})})]}):a.jsx(nt,{open:!0,onOpenChange:s=>{s||t?.()},children:a.jsxs(rt,{children:[a.jsx(at,{className:"cost-modal-backdrop z-[110]"}),a.jsx(st,{className:"fixed inset-0 z-[120] flex items-center justify-center p-4",children:a.jsxs(it,{className:ye("cost-modal-popup",xe),children:[a.jsx(ot,{render:a.jsx("h2",{className:"sr-only"}),children:h(U(e.id,"name"))}),a.jsx(ge,{badge:e,onClose:t})]})})]})}):null}export{Ut as BadgeDetailModal,Tt as currentBadgeIssueNumber,Ut as default,Vt as formatIssueNumber};
1
+ import{r as L,j as a,bP as De,c as h,e as ye,X as Ie}from"./__vite-browser-external-WKiEWJ30.js";import{k as _e,V as Me,l as Ve,r as Te,n as $e,o as be,q as ve,s as Oe,t as Re,v as Be,w as Pe,x as Ke,y as Ce,z as Fe,A as Le,B as Xe,S as Ge,H as We,C as G,D as ze,E as Ue,e as Ye,F as He,m as C}from"./react-us685QUG.js";import{c as je,A as Ze,p as qe,b as U,t as le,a as T,d as Je}from"./AchievementBadge-Bl3bWjZw.js";import{u as Qe,a as z}from"./use-transform-WxJRtugr.js";import{u as et}from"./use-reduced-motion-DDhy4yg_.js";import{l as ce,f as ue,b as tt}from"./AchievementsSection-D5TJtcI5.js";import{D as nt,a as rt,b as at,c as st,d as it,e as ot}from"./DialogTitle-eIgptOU-.js";import"./zap-BcwbN9j5.js";import"./flame-DFEEnwot.js";import"./format-tokens-BPq1moPg.js";import"./useScrollLock-CZ1Na38Y.js";import"./store-B-d1Nz34.js";const lt=(e,t,n)=>{const r=t-e;return((n-e)%r+r)%r+e};function Ne(e,t){return _e(e)?e[lt(0,e.length,t)]:e}class ct{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>t.finished))}getAll(t){return this.animations[0][t]}setAll(t,n){for(let r=0;r<this.animations.length;r++)this.animations[r][t]=n}attachTimeline(t){const n=this.animations.map(r=>r.attachTimeline(t));return()=>{n.forEach((r,s)=>{r&&r(),this.animations[s].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get state(){return this.getAll("state")}get startTime(){return this.getAll("startTime")}get duration(){return de(this.animations,"duration")}get iterationDuration(){return de(this.animations,"iterationDuration")}runAll(t){this.animations.forEach(n=>n[t]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}function de(e,t){let n=0;for(let r=0;r<e.length;r++){const s=e[r][t];s!==null&&s>n&&(n=s)}return n}class ut extends ct{then(t,n){return this.finished.finally(t).then(()=>{})}}function dt(e,t){return e in t}class mt extends Me{constructor(){super(...arguments),this.type="object"}readValueFromInstance(t,n){if(dt(n,t)){const r=t[n];if(typeof r=="string"||typeof r=="number")return r}}getBaseTargetFromProps(){}removeValueFromRenderState(t,n){delete n.output[t]}measureInstanceViewportBox(){return Ve()}build(t,n){Object.assign(t.output,n)}renderInstance(t,{output:n}){Object.assign(t,n)}sortInstanceNodePosition(){return 0}}function Y(e){return typeof e=="object"&&!Array.isArray(e)}function ke(e,t,n,r){return e==null?[]:typeof e=="string"&&Y(t)?Te(e,n,r):e instanceof NodeList?Array.from(e):Array.isArray(e)?e.filter(s=>s!=null):[e]}function ft(e,t,n){return e*(t+1)+n*t}function me(e,t,n,r){return typeof t=="number"?t:t.startsWith("-")||t.startsWith("+")?Math.max(0,e+parseFloat(t)):t==="<"?n:t.startsWith("<")?Math.max(0,n+parseFloat(t.slice(1))):r.get(t)??e}function pt(e,t,n){for(let r=0;r<e.length;r++){const s=e[r];s.at>t&&s.at<n&&(be(e,s),r--)}}function ht(e,t,n,r,s,c){pt(e,s,c);for(let i=0;i<t.length;i++)e.push({value:t[i],at:$e(s,c,r[i]),easing:Ne(n,i)})}function gt(e,t,n=0){const r=t+1+t*n;for(let s=0;s<e.length;s++)e[s]=e[s]/r}function xt(e,t){return e.at===t.at?e.value===null?1:t.value===null?-1:0:e.at-t.at}const yt="easeInOut",bt=20;function vt(e,{defaultTransition:t={},...n}={},r,s){const c=t.duration||.3,i=new Map,f=new Map,m={},p=new Map;let g=0,u=0,x=0;for(let N=0;N<e.length;N++){const k=e[N];if(typeof k=="string"){p.set(k,u);continue}else if(!Array.isArray(k)){p.set(k.name,me(u,k.at,g,p));continue}let[E,b,v={}]=k;v.at!==void 0&&(u=me(u,v.at,g,p));let j=0;const _=(w,M,A,o=0,l=0)=>{const d=jt(w),{delay:D=0,times:y=Oe(d),type:R=t.type||"keyframes",repeat:B,repeatType:W,repeatDelay:H=0,...Se}=M;let{ease:I=t.ease||"easeOut",duration:S}=M;const Z=typeof D=="function"?D(o,l):D,q=d.length,J=Ke(R)?R:s?.[R||"keyframes"];if(q<=2&&J){let $=100;if(q===2&&wt(d)){const P=d[1]-d[0];$=Math.abs(P)}const O={...t,...Se};S!==void 0&&(O.duration=Ce(S));const X=Re(O,$,J);I=X.ease,S=X.duration}S??(S=c);const Q=u+Z;y.length===1&&y[0]===0&&(y[1]=1);const ee=y.length-d.length;if(ee>0&&Be(y,ee),d.length===1&&d.unshift(null),B&&B<bt){const $=S>0?H/S:0;S=ft(S,B,H);const O=[...d],X=[...y];I=Array.isArray(I)?[...I]:[I];const P=[...I],ne=W==="reverse"||W==="mirror";let re=O,ae=P;ne&&(re=[...O].reverse(),W==="reverse"&&(ae=[...P].reverse().map(V=>typeof V=="function"?Pe(V):V)));for(let V=0;V<B;V++){const se=ne&&V%2===0,ie=se?re:O,Ee=se?ae:P,oe=(V+1)*(1+$);$>0&&(d.push(d[d.length-1]),y.push(oe),I.push("linear")),d.push(...ie);for(let K=0;K<ie.length;K++)y.push(X[K]+oe),I.push(K===0?"linear":Ne(Ee,K-1))}gt(y,B,$)}const te=Q+S;ht(A,d,I,y,Q,te),j=Math.max(Z+S,j),x=Math.max(te,x)};if(ve(E)){const w=fe(E,f);_(b,v,pe("default",w))}else{const w=ke(E,b,r,m),M=w.length;for(let A=0;A<M;A++){b=b,v=v;const o=w[A],l=fe(o,f);for(const d in b)_(b[d],Nt(v,d),pe(d,l),A,M)}}g=u,u+=j}return f.forEach((N,k)=>{for(const E in N){const b=N[E];b.sort(xt);const v=[],j=[],_=[];for(let o=0;o<b.length;o++){const{at:l,value:d,easing:D}=b[o];v.push(d),j.push(Fe(0,x,l)),_.push(D||"easeOut")}j[0]!==0&&(j.unshift(0),v.unshift(v[0]),_.unshift(yt)),j[j.length-1]!==1&&(j.push(1),v.push(null)),i.has(k)||i.set(k,{keyframes:{},transition:{}});const w=i.get(k);w.keyframes[E]=v;const{type:M,...A}=t;w.transition[E]={...A,duration:x,ease:_,times:j,...n}}}),i}function fe(e,t){return!t.has(e)&&t.set(e,{}),t.get(e)}function pe(e,t){return t[e]||(t[e]=[]),t[e]}function jt(e){return Array.isArray(e)?e:[e]}function Nt(e,t){return e&&e[t]?{...e,...e[t]}:{...e}}const kt=e=>typeof e=="number",wt=e=>e.every(kt);function At(e){const t={presenceContext:null,props:{},visualState:{renderState:{transform:{},transformOrigin:{},style:{},vars:{},attrs:{}},latestValues:{}}},n=Le(e)&&!Xe(e)?new Ge(t):new We(t);n.mount(e),G.set(e,n)}function St(e){const t={presenceContext:null,props:{},visualState:{renderState:{output:{}},latestValues:{}}},n=new mt(t);n.mount(e),G.set(e,n)}function Et(e,t){return ve(e)||typeof e=="number"||typeof e=="string"&&!Y(t)}function we(e,t,n,r){const s=[];if(Et(e,t))s.push(ze(e,Y(t)&&t.default||t,n&&(n.default||n)));else{if(e==null)return s;const c=ke(e,t,r),i=c.length;for(let f=0;f<i;f++){const m=c[f],p=m instanceof Element?At:St;G.has(m)||p(m);const g=G.get(m),u={...n};"delay"in u&&typeof u.delay=="function"&&(u.delay=u.delay(f,i)),s.push(...Ue(g,{...t,transition:u},{}))}}return s}function Dt(e,t,n){const r=[],s=e.map(i=>{if(Array.isArray(i)&&typeof i[0]=="function"){const f=i[0],m=Ye(0);return m.on("change",f),i.length===1?[m,[0,1]]:i.length===2?[m,[0,1],i[1]]:[m,i[1],i[2]]}return i});return vt(s,t,n,{spring:He}).forEach(({keyframes:i,transition:f},m)=>{r.push(...we(m,i,f))}),r}function It(e){return Array.isArray(e)&&e.some(Array.isArray)}function _t(e={}){const{scope:t,reduceMotion:n,skipAnimations:r}=e;function s(c,i,f){let m=[],p;const g={};if(n!==void 0&&(g.reduceMotion=n),r!==void 0&&(g.skipAnimations=r),It(c)){const{onComplete:x,...N}=i||{};typeof x=="function"&&(p=x),m=Dt(c,{...g,...N},t)}else{const{onComplete:x,...N}=f||{};typeof x=="function"&&(p=x),m=we(c,i,{...g,...N},t)}const u=new ut(m);return p&&u.finished.then(p),t&&(t.animations.push(u),u.finished.then(()=>{be(t.animations,u)})),u}return s}const F=_t(),he=8;function Mt({badgeId:e,tier:t,locked:n=!1,size:r=176,backLines:s=[],label:c}){const i=Qe(0),f=et(),m=L.useRef(null),p=L.useRef(null),g=L.useRef(!1),u=qe(t,n),x=je.get(e)?.icon||null,N=z(i,o=>`${(o%360+360)%360/360*160-80}%`),k=z(i,o=>`${80-(o%360+360)%360/360*160}%`),E=z(i,o=>{const l=Math.abs(Math.sin(o*Math.PI/180));return Math.max(0,(l-.35)/.65)*.3}),b=()=>{p.current?.stop?.(),p.current=null};L.useEffect(()=>{if(f||g.current)return;let o=!1;i.set(-360);const l=F(i,0,{duration:.9,ease:[.16,1,.3,1]});return p.current=l,l.then(()=>{o||g.current||(p.current=F(i,[0,-14,14,0],{duration:4.5,repeat:1/0,ease:"easeInOut"}))}),()=>{o=!0,b()}},[f,i]);const v=o=>{const l=i.get();if(f){const y=Math.round(l/180)*180;p.current=F(i,y,{duration:.2,ease:"easeOut"});return}const d=l+o*.35,D=Math.round(d/180)*180;p.current=F(i,D,{type:"spring",velocity:o,stiffness:58,damping:13.5,mass:1})},j=o=>{g.current=!0,b(),o.currentTarget.setPointerCapture?.(o.pointerId),m.current={pointerId:o.pointerId,startX:o.clientX,startRot:i.get(),samples:[{t:o.timeStamp,x:o.clientX}]}},_=o=>{const l=m.current;!l||l.pointerId!==o.pointerId||(i.set(l.startRot+(o.clientX-l.startX)*.55),l.samples.push({t:o.timeStamp,x:o.clientX}),l.samples.length>5&&l.samples.shift())},w=o=>{const l=m.current;if(!l||l.pointerId!==o.pointerId)return;m.current=null;const d=l.samples[0],D=l.samples[l.samples.length-1],y=D.t-d.t,R=y>0?(D.x-d.x)*.55*1e3/y:0;v(R)},M=o=>{if(o.key!=="ArrowLeft"&&o.key!=="ArrowRight")return;o.preventDefault(),g.current=!0,b();const l=o.key==="ArrowRight"?30:-30;p.current=F(i,i.get()+l,{duration:.15,ease:"easeOut"})},A={backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"};return a.jsx("div",{role:"img","aria-label":c,tabIndex:0,onPointerDown:j,onPointerMove:_,onPointerUp:w,onPointerCancel:w,onKeyDown:M,className:"inline-flex cursor-grab select-none items-center justify-center outline-none focus-visible:ring-2 focus-visible:ring-oai-brand/60 rounded-full active:cursor-grabbing",style:{perspective:900,touchAction:"pan-y"},children:a.jsxs("div",{className:"relative",style:{transform:"rotateX(-8deg)",transformStyle:"preserve-3d"},children:[a.jsxs(C.div,{className:"relative",style:{rotateY:i,transformStyle:"preserve-3d",width:r,height:r},children:[[-3,-1.5,0,1.5,3].map(o=>a.jsx("div",{"aria-hidden":!0,className:"absolute inset-0 rounded-full",style:{transform:`translateZ(${o}px)`,background:u.rim[1]}},o)),a.jsxs("div",{className:"absolute inset-0 overflow-hidden rounded-full",style:{...A,transform:`translateZ(${he/2}px)`},children:[a.jsx(Ze,{badgeId:e,tier:t,locked:n,size:"fill",className:"brightness-105 saturate-[1.08]"}),a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"radial-gradient(circle at 30% 20%, rgba(255,255,255,0.45), rgba(255,255,255,0) 42%), linear-gradient(172deg, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0) 38%, rgba(0,0,0,0.08) 100%)",boxShadow:"inset 0 3px 7px rgba(255,255,255,0.5), inset 0 -3px 8px rgba(0,0,0,0.15)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{x:N,background:"linear-gradient(105deg, transparent 34%, rgba(255,255,255,0.5) 50%, transparent 66%)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{opacity:E,background:"rgba(8, 12, 10, 0.9)"}})]}),a.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-1 overflow-hidden rounded-full px-6 text-center",style:{...A,transform:`rotateY(180deg) translateZ(${he/2}px)`,background:`linear-gradient(145deg, ${u.face[0]}, ${u.face[1]})`,boxShadow:`inset 0 0 0 6px ${u.rim[1]}, inset 0 0 0 7.5px rgba(255,255,255,0.22), inset 0 3px 7px rgba(255,255,255,0.4), inset 0 -4px 12px rgba(0,0,0,0.22)`},children:[a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"repeating-radial-gradient(circle at 50% 50%, rgba(255,255,255,0.06) 0px, rgba(255,255,255,0.06) 1px, transparent 1px, transparent 4px)"}}),x?a.jsx(x,{"aria-hidden":!0,size:Math.round(r*.62),strokeWidth:1.1,color:u.glyph,className:"pointer-events-none absolute opacity-[0.13]",style:{filter:"drop-shadow(0 1px 0 rgba(255,255,255,0.3)) drop-shadow(0 -1px 0 rgba(0,0,0,0.35))"}}):null,a.jsx("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{background:"radial-gradient(circle at 70% 20%, rgba(255,255,255,0.4), rgba(255,255,255,0) 44%), linear-gradient(188deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0) 38%, rgba(0,0,0,0.10) 100%)"}}),s.map((o,l)=>a.jsx("div",{className:`font-mono tabular-nums ${l===0?"text-[10px] uppercase tracking-[0.18em]":l===1?"text-lg font-bold":"text-[11px]"}`,style:{color:u.glyph,textShadow:"0 1px 0 rgba(255,255,255,0.28), 0 -1px 0 rgba(0,0,0,0.3)"},children:o},`${l}-${o}`)),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",style:{x:k,background:"linear-gradient(105deg, transparent 34%, rgba(255,255,255,0.45) 50%, transparent 66%)"}}),a.jsx(C.div,{"aria-hidden":!0,className:"pointer-events-none absolute inset-0 rounded-full",style:{opacity:E,background:"rgba(8, 12, 10, 0.9)"}})]})]}),a.jsx("div",{"aria-hidden":!0,className:"absolute left-1/2 h-3 w-3/5 rounded-[100%] bg-black/20 blur-md dark:bg-black/45",style:{bottom:-20,transform:"translateX(-50%)"}})]})})}function Ae(e){if(!e)return null;const t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleDateString():null}function Vt(e){const t=Number(e);return!Number.isSafeInteger(t)||t<1?null:String(t).padStart(6,"0")}function Tt(e,t,n){if(t?.scope!=="cloud"||!n)return null;const r=Number(e?.serials?.[n]);return Number.isSafeInteger(r)&&r>=1?r:null}function $t({badge:e}){return a.jsx("div",{className:"flex items-center gap-1",children:Je.map((t,n)=>{const r=(e.tier||0)>=n+1,s=Ae(e.achieved?.[t]),c=T[t];return a.jsx("span",{title:s?`${h(`achievements.tier.${t}`)} · ${s}`:h(`achievements.tier.${t}`),className:"inline-flex h-2 w-8 rounded-full",style:r?{background:`linear-gradient(120deg, ${c.rim[0]} 0%, ${c.ring} 55%, ${c.rim[1]} 100%)`,boxShadow:"inset 0 1px 1px rgba(255,255,255,0.4), 0 0 0 1px rgba(10,15,12,0.05)"}:void 0,children:!r&&a.jsx("span",{className:"h-full w-full rounded-full bg-oai-gray-200 dark:bg-oai-gray-800"})},t)})})}function ge({badge:e,onClose:t}){const n=je.get(e.id),r=h(U(e.id,"name")),s=(e.tier||0)>=1,c=s?le(e.tier):null,i=Ae(s?e.achieved?.[c]||(ce(e)?new Date(ce(e)).toISOString():null):null),f=ue(n?.format,e.metric_value),m=tt(e),p=e.tier<4?le((e.tier||0)+1):null,g=Tt(e,n,c),u=Vt(g),x=u?[h("achievements.modal.achieved_label"),h("achievements.modal.issue_number",{number:u}),i||r]:[s?h("achievements.modal.achieved_label"):h("achievements.modal.locked"),s?f:"···",s&&i?i:r];return a.jsxs("div",{className:"flex flex-col items-center px-6 pb-6 pt-5 text-center",children:[a.jsxs("div",{className:"flex w-full items-start justify-between gap-3",children:[a.jsxs("div",{className:"min-w-0 flex-1 text-left",children:[a.jsx("h2",{className:"truncate text-lg font-semibold tracking-tight text-oai-black dark:text-white",children:r}),a.jsx("p",{className:"mt-0.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:h(U(e.id,"desc"))})]}),a.jsx("button",{type:"button",onClick:t,"aria-label":h("achievements.modal.close"),className:"shrink-0 rounded-md p-1.5 text-oai-gray-400 transition-colors hover:bg-oai-gray-100 hover:text-oai-gray-700 dark:hover:bg-oai-gray-900 dark:hover:text-oai-gray-200",children:a.jsx(Ie,{size:16})})]}),a.jsx("div",{className:"mt-5 mb-7",children:a.jsx(Mt,{badgeId:e.id,tier:e.tier,locked:!s,backLines:x,label:h("achievements.modal.coin_aria",{name:r})})}),a.jsxs("div",{className:"flex items-center gap-2",children:[a.jsx("span",{className:"rounded-full px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-wide",style:s?{background:`linear-gradient(120deg, ${T[c].rim[0]} 0%, ${T[c].ring} 55%, ${T[c].rim[1]} 100%)`,color:T[c].glyph,textShadow:"0 1px 0 rgba(255,255,255,0.35)",boxShadow:"inset 0 1px 1px rgba(255,255,255,0.4), 0 0 0 1px rgba(10,15,12,0.06)"}:{background:"rgba(128,134,130,0.75)",color:"rgba(250,250,250,0.95)"},children:s?h(`achievements.tier.${c}`):h("achievements.modal.locked")}),s&&i?a.jsx("span",{className:"text-xs tabular-nums text-oai-gray-500 dark:text-oai-gray-400",children:i}):null]}),a.jsxs("dl",{className:"mt-5 w-full space-y-3 border-t border-oai-gray-200/70 pt-4 text-left dark:border-oai-gray-800/60",children:[a.jsxs("div",{className:"flex items-baseline justify-between gap-3 text-sm",children:[a.jsx("dt",{className:"text-oai-gray-500 dark:text-oai-gray-400",children:h("achievements.modal.value_label")}),a.jsx("dd",{className:"font-mono font-semibold tabular-nums text-oai-black dark:text-white",children:f})]}),a.jsxs("div",{children:[a.jsxs("div",{className:"flex items-baseline justify-between gap-3 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:[a.jsx("span",{children:e.tier>=4?h("achievements.modal.max_tier"):h("achievements.modal.progress_to_next",{tier:h(`achievements.tier.${p}`)})}),e.tier<4&&e.next_threshold!=null?a.jsxs("span",{className:"font-mono tabular-nums",children:[f," ",e.lower_is_better?"→":"/"," ",ue(n?.format,e.next_threshold)]}):null]}),a.jsx("div",{className:"mt-1.5 h-1.5 w-full overflow-hidden rounded-full bg-oai-gray-200 dark:bg-oai-gray-800",children:a.jsx("div",{className:"h-full rounded-full transition-[width] duration-500",style:{width:`${Math.round((e.tier>=4?1:m)*100)}%`,background:s?`linear-gradient(90deg, ${T[c].rim[0]} 0%, ${T[c].ring} 55%, ${T[c].rim[1]} 100%)`:"rgba(128,134,130,0.75)",boxShadow:s?"inset 0 1px 1px rgba(255,255,255,0.35)":void 0}})})]}),a.jsxs("div",{className:"flex items-center justify-between gap-3 text-xs text-oai-gray-500 dark:text-oai-gray-400",children:[a.jsx("span",{children:h("achievements.modal.tier_history")}),a.jsx($t,{badge:e})]})]})]})}const xe=ye("relative w-full max-w-[380px] flex flex-col","rounded-2xl bg-white dark:bg-oai-gray-950","shadow-[0_20px_60px_-20px_rgba(0,0,0,0.25)] dark:shadow-[0_20px_60px_-10px_rgba(0,0,0,0.65)]","ring-1 ring-oai-gray-200 dark:ring-oai-gray-800 overflow-hidden","dark:border-t dark:border-white/[0.08]");function Ut({badge:e,onClose:t}){const n=De(),r=!!e;return L.useEffect(()=>{if(!n||!r)return;const s=c=>{c.key==="Escape"&&(c.stopPropagation(),t?.())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[n,r,t]),r?n?a.jsxs("div",{className:"fixed inset-0 z-[120] flex items-center justify-center p-4",children:[a.jsx("div",{className:"absolute inset-0 bg-black/40 backdrop-blur-[2px]",onClick:t,"aria-hidden":!0}),a.jsx("div",{className:xe,children:a.jsx(ge,{badge:e,onClose:t})})]}):a.jsx(nt,{open:!0,onOpenChange:s=>{s||t?.()},children:a.jsxs(rt,{children:[a.jsx(at,{className:"cost-modal-backdrop z-[110]"}),a.jsx(st,{className:"fixed inset-0 z-[120] flex items-center justify-center p-4",children:a.jsxs(it,{className:ye("cost-modal-popup",xe),children:[a.jsx(ot,{render:a.jsx("h2",{className:"sr-only"}),children:h(U(e.id,"name"))}),a.jsx(ge,{badge:e,onClose:t})]})})]})}):null}export{Ut as BadgeDetailModal,Tt as currentBadgeIssueNumber,Ut as default,Vt as formatIssueNumber};
@@ -1 +1 @@
1
- import{r as _,j as I}from"./__vite-browser-external-BE7h4Ou0.js";import{T as j,r as $,c as p,d as et,l as H,e as y,f as U,s as rt,g as T,p as Yt,h as ut,i as Wt,S as Zt,t as at,j as jt,k as Jt,m as te,n as ee,C as se,o as ne,q as mt,u as ie,v as xt,w as oe,x as re}from"./skins-C8EyB85e.js";function nt(t,e=.55,s=.62){const n=(t%360+360)%360,i=(1-Math.abs(2*s-1))*e,r=i*(1-Math.abs(n/60%2-1)),o=s-i/2,[l,c,u]=n<60?[i,r,0]:n<120?[r,i,0]:n<180?[0,i,r]:n<240?[0,r,i]:n<300?[r,0,i]:[i,0,r],h=f=>Math.round((f+o)*255).toString(16).padStart(2,"0");return`#${h(l)}${h(c)}${h(u)}`}function ae(t,e,s,n,i=1){const r=t.phase+e*t.speed*j,o=Math.cos(t.tilt),l=Math.sin(t.tilt),c=Math.sqrt(Math.max(0,1-t.k*t.k)),u=64,h=t.sweep*j;let f="",M="",k=null;for(let P=0;P<=u;P++){const x=r+P/u*h,m=Math.cos(x),g=Math.sin(x),d=t.a*(m*o+g*-l*t.k)+t.cx,C=t.a*(m*l+g*o*t.k)+t.cy,R=t.a*g*c<0,a=$(d*s),O=$(C*s),E=R!==k?"M":"L";R?M+=`${E}${a} ${O}`:f+=`${E}${a} ${O}`,k=R}const A=Math.cos(t.tilt)*t.a*s,w=Math.sin(t.tilt)*t.a*s;return{id:n,front:f,back:M,width:t.width*s,opacity:i,grad:{x1:$(t.cx*s-A),y1:$(t.cy*s-w),x2:$(t.cx*s+A),y2:$(t.cy*s+w),stops:[nt(t.hue),nt(t.hue+t.hueSpan*.5),nt(t.hue+t.hueSpan)]}}}const D=et(659918),gt=Array.from({length:6},(t,e)=>({a:1.3+D()*.1,k:.05+D()*.4,tilt:e/6*Math.PI+D()*.5,speed:3+D()*.7,phase:D()*j,sweep:.6+D()*.25,hue:e*360/6+D()*30,hueSpan:60+D()*60,width:.05+D()*.012,cx:0,cy:.1})),ce=Array.from({length:4},(t,e)=>({a:.78+e*.2,k:.05+e*.02,tilt:-.62+e*.05,speed:.3,phase:.06*e,sweep:.4,hue:95+e*62,hueSpan:100,width:.05,cx:0,cy:-.12})),Mt=[-.557,-.013,.532],bt=.165,At=1.25,wt=et(48879),le=Array.from({length:5},(t,e)=>({birth:e*.2,angle:wt()*j,rho:.58+wt()*.18}));function he(t,e){const s=[];for(const n of le){const i=t-n.birth;if(i<0||i>.62)continue;const r=n.rho*Math.pow(.75,i*10),o=n.angle+i*100*Math.PI/180;s.push({x:Math.cos(o)*r*e,y:Math.sin(o)*r*e,r:(.04+.028*p(i/.55))*e,depth:p(1-r/.8),opacity:p(i/.06)*p((.62-i)/.08)})}return s}const kt=et(49383),ue=Array.from({length:4},(t,e)=>{const s=e-1.5;return{a:.85*(1+s*.03),k:.15/.85*(1+s*.16),tilt:34*Math.PI/180+s*.035,speed:210/360,phase:-e*.045+kt()*.012,sweep:.34,hue:e*85+kt()*20,hueSpan:80,width:.095,cx:0,cy:0}}),pe=.129,de="#2496e8",fe=-42,It=1.003,ye=.15,me=1.14,xe=.054,pt=15.46,ct=.186,lt=.412,st={yaw:28.49,pitch:28.62,roll:-13},J=t=>t*Math.PI/180;function tt(t,e,s){const n=Math.cos(s),i=Math.sin(s);return[[t[0]*n+e[0]*i,t[1]*n+e[1]*i,t[2]*n+e[2]*i],[e[0]*n-t[0]*i,e[1]*n-t[1]*i,e[2]*n-t[2]*i]]}function Ht(t,e,s=pt){let n=[0,0,1],i=[1,0,0],r=[0,1,0];[n,i]=tt(n,i,J(t.yaw)),[r,n]=tt(r,n,J(t.pitch)),[i,r]=tt(i,r,J(t.roll));const o=l=>{const[c,u]=tt(n,i,J(s*l));return{x:c[0]*e,y:c[1]*e,a:u[0],b:u[1],c:r[0],d:r[1],depth:c[2]}};return[o(-1),o(1)]}const Pt=et(24301),Et=(()=>{const t=[];let e=1.4;for(;e<900;)t.push(e),e+=1.9+Pt()*2.7,Pt()<.18&&(t.push(e),e+=.24);return t})(),ge=.18;function Me(t){for(let e=0;e<Et.length;e++){const s=Et[e];if(t<s)break;const n=(t-s)/ge;if(n>=0&&n<=1)return n<.45?1-n/.45:(n-.45)/.55}return 1}function be(t,e={}){const{wander:s=1,blink:n=!0,float:i=!0}=e;return{dYaw:(H(t,11.3,.4)*5.5+H(t,3.7,2.1)*1.6)*s,dPitch:(H(t,9.1,1.3)*4.2+H(t,4.3,.7)*1.3)*s,dRoll:H(t,13.7,3.2)*2.2*s,lid:n?Me(t):1,driftX:i?H(t,7.9,1.9)*.006:0,driftY:i?H(t,5.3,.3)*.007:0,breath:i?1+Math.sin(t/3.4*Math.PI*2)*.005:1}}function Ae(t){return .06+.94*p(t)}const L=(t,e,s=0,n=1)=>({w:t,h:e,tilt:s,open:n}),F=(t,e,s=0,n=1)=>[L(t,e,s,n),L(t,e,-s,n)],Xt=[{id:"neutre",gaze:{...st},split:pt,eyes:[L(ct,lt),L(ct,lt)]},{id:"attentif",gaze:{yaw:4,pitch:5,roll:-4},split:16,eyes:F(.21,.44)},{id:"surpris",gaze:{yaw:3,pitch:-3,roll:0},split:19,eyes:F(.45,.47)},{id:"excite",gaze:{yaw:6,pitch:-14,roll:0},split:19.5,eyes:F(.4,.56,-10)},{id:"heureux",gaze:{yaw:5,pitch:9,roll:0},split:17,eyes:F(.27,.17,14)},{id:"hilare",gaze:{yaw:4,pitch:14,roll:0},split:18,eyes:F(.34,.13,20)},{id:"colere",gaze:{yaw:3,pitch:7,roll:0},split:17,eyes:F(.34,.15,30)},{id:"triste",gaze:{yaw:3,pitch:-13,roll:0},split:16,eyes:F(.22,.4,-28)},{id:"effraye",gaze:{yaw:2,pitch:-20,roll:0},split:20.5,eyes:F(.4,.6)},{id:"mefiant",gaze:{yaw:12,pitch:6,roll:-6},split:16,eyes:[L(.21,.4),L(.22,.15)]},{id:"confus",gaze:{yaw:-14,pitch:3,roll:8},split:16.5,eyes:[L(.2,.44,-18),L(.28,.17,14)]},{id:"curieux",gaze:{yaw:16,pitch:-9,roll:-15},split:16.5,eyes:[L(.24,.46,-8),L(.2,.38,-8)]},{id:"fier",gaze:{yaw:5,pitch:17,roll:0},split:17,eyes:F(.3,.15,18)},{id:"timide",gaze:{yaw:-19,pitch:-14,roll:-7},split:14,eyes:F(.17,.3)},{id:"blase",gaze:{yaw:-22,pitch:2,roll:0},split:16,eyes:F(.3,.12)},{id:"somnolent",gaze:{yaw:6,pitch:-9,roll:-3},split:16,eyes:F(.2,.42,0,.42)}],Ot=new Map(Xt.map(t=>[t.id,t])),zt=(t,e,s)=>({w:y(t.w,e.w,s),h:y(t.h,e.h,s),tilt:y(t.tilt??0,e.tilt??0,s),open:y(t.open,e.open,s)});function we(t,e,s){return{id:e.id,gaze:{yaw:y(t.gaze.yaw,e.gaze.yaw,s),pitch:y(t.gaze.pitch,e.gaze.pitch,s),roll:y(t.gaze.roll,e.gaze.roll,s)},split:y(t.split,e.split,s),eyes:[zt(t.eyes[0],e.eyes[0],s),zt(t.eyes[1],e.eyes[1],s)]}}const X=(t,e)=>[{w:t,h:e,open:1},{w:t,h:e,open:1}];function S(t={}){return{sil:U(1),offX:0,offY:0,gaze:{...st},split:pt,eyes:X(ct,lt),eyeAlpha:1,bodyAlpha:1,dots:[],arcs:[],notif:null,dotsBehind:!1,...t}}const Gt=-.1875,ke=Yt(ut(0,-.505,.132,0,.13,.075),0,Gt),Ie=Yt(ut(0,-.2535,.1345,0,.2535,.1345),0,0),Pe=(t={})=>({radii:[...ke],rot:0,cx:0,cy:Gt,sx:1,sy:1,...t}),Ee=(t={})=>({radii:[...Ie],rot:0,cx:0,cy:0,sx:1,sy:1,...t}),Oe=Wt(ut(0,0,.118,0,.172,.012)),Rt=.213;function _t(t){return rt("triangle",{rot:t,cx:-Rt*Math.sin(t),cy:Rt*Math.cos(t)})}function St(t,e){const s=((t-e*.5)/1.5%1+1)%1,n=s<.5?.5-.5*Math.cos(s*j):0;return p(n*2)}const Ut=[{id:"idle",duration:2.4,morph:.45,blinkIn:!1,baseFace:!0,baseBody:!0,pose:()=>S()},{id:"thinking",duration:2.6,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:t=>{const e=St(t,1),s=.3+.7*T.easeOutCubic(p(t/.3));return S({sil:U(bt*(1+(At-1)*e),{cx:Mt[1]}),eyeAlpha:0,dots:[0,2].map(n=>{const i=St(t,n);return{x:Mt[n]*s,y:0,r:bt*(1+(At-1)*i),opacity:.55+.45*i}})})}},{id:"wink",duration:1.6,morph:.3,blinkIn:!0,baseFace:!1,baseBody:!0,pose:()=>S({gaze:{yaw:-5.37,pitch:4.55,roll:6.7},split:16.25,eyes:[{w:.236,h:.464,open:1},{w:.447,h:.089,open:1}]})},{id:"wide",duration:1.8,morph:.55,blinkIn:!0,baseFace:!1,baseBody:!0,pose:()=>S({gaze:{yaw:6.92,pitch:-21.96,roll:11.6},split:18.43,eyes:X(.356,.875)})},{id:"alert",duration:2.4,minDuration:2,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=p(t/1.5),s=T.easeInOutCubic(e)*.82-.087,n=t>1.6?p((t-1.6)/.4):0,i=s*(1-n)+.1*n,r=Math.sin(t*2.5*j)*.005,o=17.7*Math.PI/180;return S({sil:Ee({rot:o,cx:i,cy:-.325-r}),eyeAlpha:0,dots:[{x:i-Math.sin(o)*.58,y:-.325+Math.cos(o)*.58+r*2.8,r:.118,d:Oe,rot:o*180/Math.PI,opacity:1}]})}},{id:"notify",duration:2.2,morph:.5,blinkIn:!0,baseFace:!1,baseBody:!0,pose:t=>{const e=p(t/.45),s=1+(me-1)*Math.sin(e*Math.PI)*(1-e*.35),n=ye*(e<1?s:1),i=fe*Math.PI/180;return S({gaze:{yaw:-21.94,pitch:-5.82,roll:-12.2},split:18.89,eyes:X(.505,.498),notif:{x:Math.cos(i)*It,y:Math.sin(i)*It,r:n,notch:n+xe}})}},{id:"exclaim",duration:2,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:()=>S({sil:Pe(),eyeAlpha:0,dots:[{x:-.012,y:.526,r:.113,opacity:1}]})},{id:"sleep",duration:2.4,morph:.5,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>S({sil:U(.1585,{cy:.11+Math.sin(t*(j/.6))*.19}),eyeAlpha:0})},{id:"egg",duration:1.8,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:()=>S({sil:rt("egg"),gaze:{yaw:19.97,pitch:26.01,roll:-17.1},split:11.07,eyes:X(.164,.385)})},{id:"hexagon",duration:1.6,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:()=>S({sil:rt("hexagon"),gaze:{yaw:23.11,pitch:24.42,roll:-13.3},split:13.37,eyes:X(.177,.411)})},{id:"play",duration:2,morph:.5,baseFace:!1,baseBody:!1,blinkIn:!0,pose:t=>{const e=p(t/.35)*p((2.2-t)/.5);return S({sil:_t(0),gaze:{yaw:12,pitch:-8,roll:-6},split:15,eyes:X(.18,.34),arcs:ce.map((s,n)=>({id:`sw${n}`,seed:{...s,cx:.45-t*.42},t,opacity:e}))})}},{id:"orbit",duration:3.4,minDuration:2.5,morph:.6,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=T.easeInOutCubic(p(t/.35)),s=-j*1.25*t*e,n=T.easeInOutCubic(p((t-1.6)/.9)),i=_t(s),r=U(1,{rot:s}),o={radii:i.radii.map((c,u)=>c+(r.radii[u]-c)*n),rot:s,cx:i.cx*(1-n),cy:i.cy*(1-n),sx:1,sy:1},l=p(t/.8)*p((3.6-t)/.9);return S({sil:o,gaze:{yaw:st.yaw+Math.sin(t*6.5)*65*(1-n),pitch:-4+n*32,roll:-13},eyes:X(.18,.34+n*.07),arcs:gt.map((c,u)=>({id:`rg${u}`,seed:c,t,opacity:l*p((t-u*.13)/.3)}))})}},{id:"swirl",duration:1.3,minDuration:1.3,morph:.3,baseFace:!0,baseBody:!0,blinkIn:!0,pose:t=>S({arcs:gt.slice(0,3).map((e,s)=>({id:`sw${s}`,seed:e,t,opacity:p((t-s*.06)/.14)*p((1.22-t)/.34)}))})},{id:"burst",duration:2.6,minDuration:2.4,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=1-.834*T.easeOutQuint(p(t/.7)),s=T.easeOutQuint(p((t-1.7)/.7));return S({sil:U(e+(1-e)*s),eyeAlpha:p((t-1.85)/.4),dots:he(t,1),dotsBehind:!0})}},{id:"comet",duration:2.4,minDuration:2.4,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=1-(1-pe)*T.easeOutQuint(p(t/.55)),s=T.easeOutQuint(p((t-1.85)/.6)),n=p((t-.15)/.25)*p((1.95-t)/.3);return S({sil:U(e+(1-e)*s,{cy:Math.sin(p(t/1.7)*Math.PI)*.035}),eyeAlpha:p((t-2)/.35),arcs:ue.map((i,r)=>({id:`cm${r}`,seed:i,t,opacity:n}))})}}],Q=new Map(Ut.map(t=>[t.id,t])),Y=100,Tt=5.5+1.6,vt=4.2+1.3,ze=.006,Re=.007;function Ft(t,e,s){const n=[],i=Ht(t.gaze,Y,t.split);for(let r=0;r<2;r++){const o=i[r];if(o.depth<=.02)continue;const l=t.eyes[r],c=(l.tilt??0)*Math.PI/180,u=Math.cos(c),h=Math.sin(c),f=o.a*u+o.c*h,M=o.b*u+o.d*h,k=-o.a*h+o.c*u,A=-o.b*h+o.d*u,w=Math.max(l.w*Y,.01)/2,P=Math.max(l.h*Y,.01)/2,x=Math.min(w,P),m=P>w,g=m?P-x:w-x,d=jt(s,Math.atan2(o.y,o.x)-e.rot);n.push({x:o.x*d,y:o.y*d,ax:(m?k:f)*g,ay:(m?A:M)*g,r:x,m:[f,M,k,A]})}return n}function _e(t,e,s,n,i){const r=n-e,o=i-s,l=r*r+o*o;let c=1/0,u=0,h=0;for(let M=0;M<t.length;M++){const k=t[M];let A=l>0?((k.x-e)*r+(k.y-s)*o)/l:0;A=A<0?0:A>1?1:A;const w=e+A*r-k.x,P=s+A*o-k.y,x=w*w+P*P;x<c&&(c=x,u=w,h=P)}const f=Math.sqrt(c);return{d:f,ux:f>1e-9?u/f:0,uy:f>1e-9?h/f:0}}const Se=Math.hypot(ze,Re)*Y;function Bt(t,e,s,n){let i=1/0,r=0,o=0;for(const l of e){const c=l.x+s,u=l.y+n,h=_e(t,c-l.ax,u-l.ay,c+l.ax,u+l.ay),[f,M,k,A]=l.m,w=l.r*Math.hypot(f*h.ux+M*h.uy,k*h.ux+A*h.uy)+Se;h.d-w<i&&(i=h.d-w,r=h.ux,o=h.uy)}return{marge:i,ux:r,uy:o}}const $t=12,Te=8;function ve(t){if(!t.length)return{x:0,y:0};const e=(x,m)=>{let g=1/0;for(const d of t)g=Math.min(g,Bt(d.contour,d.empreintes,x,m).marge);return g};let s=1/0;for(const x of t)s=Math.min(s,Bt(x.calContour,x.reference,0,0).marge);let n=0,i=0;const r=t[0].empreintes;for(const x of r)n-=x.x/r.length,i-=x.y/r.length;const o=Math.max(.35*Y,Math.hypot(n,i)*1.25);s=Math.min(s,e(n,i));const l=e(0,0);if(l>=s&&l>=0)return{x:0,y:0};const c=Math.max(s,0);let u=0,h=0,f=1/0,M=0,k=0,A=l;for(let x=0;x<$t;x++){const m=x/$t*Math.PI*2,g=Math.cos(m),d=Math.sin(m);if(e(g*o,d*o)<c){for(const R of[.3,.6,1]){const a=e(g*o*R,d*o*R);a>A&&(A=a,M=g*o*R,k=d*o*R)}continue}let C=0,v=o;for(let R=0;R<Te;R++){const a=(C+v)/2;e(g*a,d*a)>=c?v=a:C=a}v<f&&(f=v,u=g*v,h=d*v)}const w=f===1/0?M:u,P=f===1/0?k:h;return{x:+(w/Y).toFixed(6),y:+(P/Y).toFixed(6)}}function Fe(t,e,s){return t.baseFace&&s?{gaze:s.gaze,split:s.split,eyes:s.eyes}:{gaze:e.gaze,split:e.split,eyes:e.eyes}}function Be(t){const e=n=>JSON.stringify([n.gaze,n.split,n.eyes,n.sil.rot,n.sil.cx,n.sil.cy,n.sil.sx,n.sil.sy]);if(e(t.pose(0))===e(t.pose(t.duration)))return[0];const s=3;return Array.from({length:s},(n,i)=>i/(s-1)*t.duration)}function $e(t,e,s){const n=[];for(const i of Be(t)){const r=t.pose(i),o=at({...r.sil,radii:e},Y),l=at(r.sil,Y),c=Fe(t,r,s),u=[];for(const h of[-Tt,Tt])for(const f of[-vt,vt])u.push({...c,gaze:{yaw:c.gaze.yaw+h,pitch:c.gaze.pitch+f,roll:c.gaze.roll}});for(const h of u)n.push({empreintes:Ft(h,r.sil,e),reference:Ft(h,r.sil,r.sil.radii),contour:o,calContour:l})}return ve(n)}const it={x:0,y:0},ht=(t,e)=>`${t}|${e??""}`;function Ce(){return new Map(Zt.map(t=>{const e=new Map;for(const s of Ut){if(!s.baseBody)continue;const n=s.baseFace?[null,...Xt]:[null];for(const i of n)e.set(ht(s.id,i?.id??null),$e(s,t.radii,i))}return[t.radii,e]}))}const Le=Ce();function Ct(t,e,s){if(!t)return it;const n=Le.get(t);return n?n.get(ht(e,s))??n.get(ht(e,null))??it:it}const ot={yaw:0,pitch:0,mix:0,spin:0,wander:1},Ne=(t,e,s)=>({yaw:y(t.yaw,e.yaw,s),pitch:y(t.pitch,e.pitch,s),mix:y(t.mix,e.mix,s),spin:y(t.spin,e.spin,s),wander:y(t.wander,e.wander,s)}),Lt=(t,e,s)=>({w:y(t.w,e.w,s),h:y(t.h,e.h,s),open:y(t.open,e.open,s),tilt:y(t.tilt??0,e.tilt??0,s)});function Nt(t,e,s){const n=1-s;return{sil:ee(t.sil,e.sil,s),offX:y(t.offX,e.offX,s),offY:y(t.offY,e.offY,s),gaze:{yaw:y(t.gaze.yaw,e.gaze.yaw,s),pitch:y(t.gaze.pitch,e.gaze.pitch,s),roll:y(t.gaze.roll,e.gaze.roll,s)},split:y(t.split,e.split,s),eyes:[Lt(t.eyes[0],e.eyes[0],s),Lt(t.eyes[1],e.eyes[1],s)],eyeAlpha:y(t.eyeAlpha,e.eyeAlpha,s),bodyAlpha:y(t.bodyAlpha,e.bodyAlpha,s),dots:[...t.dots.map(i=>({...i,opacity:i.opacity*n})),...e.dots.map(i=>({...i,opacity:i.opacity*s}))],arcs:[...t.arcs.map(i=>({...i,id:`a${i.id}`,opacity:i.opacity*n})),...e.arcs.map(i=>({...i,id:`b${i.id}`,opacity:i.opacity*s}))],notif:s<.5?t.notif:e.notif,dotsBehind:s<.5?t.dotsBehind:e.dotsBehind}}class G{scale;cur;prev=null;departFige=null;tCur=0;tPrev=0;blinkAt=-10;pts=[];shape=null;shapePrev=null;shapeAt=-10;expr=null;exprPrev=null;exprAt=-10;look=ot;lookPrev=ot;lookAt=-10;lookMorph=.24;static SHAPE_MORPH=.45;static LOOK_MORPH=.24;constructor(e=100,s="idle",n=null,i=null){this.scale=e,this.cur=s,this.shape=n,this.expr=i}setExpression(e,s=0){e!==this.expr&&(this.exprPrev=this.expr,this.expr=e,this.exprAt=s)}exprAtTime(e){const s=this.expr,n=this.exprPrev;if(!s||!n)return s;const i=(e-this.exprAt)/G.SHAPE_MORPH;return i>=1?s:we(n,s,T.easeOutQuint(p(i)))}setShape(e,s=0){e!==this.shape&&(this.shapePrev=this.shape,this.shape=e,this.shapeAt=s)}shapeAtTime(e){const s=this.shape,n=this.shapePrev;if(!s||!n)return s;const i=(e-this.shapeAt)/G.SHAPE_MORPH;if(i>=1)return s;const r=T.easeOutQuint(p(i));return s.map((o,l)=>y(n[l]??o,o,r))}setLook(e,s,n=G.LOOK_MORPH){e&&!Number.isFinite(e.yaw+e.pitch+e.mix+e.spin+e.wander)||(this.lookPrev=this.lookAtTime(s),this.look=e??ot,this.lookAt=s,this.lookMorph=n)}lookAtTime(e){const s=(e-this.lookAt)/this.lookMorph;return s>=1?this.look:Ne(this.lookPrev,this.look,T.easeOutQuint(p(s)))}posed(e,s,n,i){let r=e.pose(s);return e.baseBody&&n&&(r={...r,sil:{...r.sil,radii:n}}),e.baseFace&&i&&(r={...r,gaze:i.gaze,split:i.split,eyes:i.eyes}),r}decalageAtTime(e,s){const n=(r,o,l,c)=>{if(l===c)return c;const u=(e-r)/o;if(u>=1)return c;const h=T.easeOutQuint(p(u));return{x:y(l.x,c.x,h),y:y(l.y,c.y,h)}},i=r=>n(this.exprAt,G.SHAPE_MORPH,Ct(r,s,this.exprPrev?.id??null),Ct(r,s,this.expr?.id??null));return n(this.shapeAt,G.SHAPE_MORPH,i(this.shapePrev),i(this.shape))}get state(){return this.cur}reset(e,s){this.cur=e,this.prev=null,this.departFige=null,this.tCur=s,this.tPrev=s,this.blinkAt=-10}origine(e,s,n){if(this.departFige)return this.departFige;if(!this.prev)return null;const i=Q.get(this.prev);return this.posed(i,Math.max(0,e-this.tPrev),s,n)}poseComposee(e){const s=Q.get(this.cur),n=this.shapeAtTime(e),i=this.exprAtTime(e),r=this.posed(s,Math.max(0,e-this.tCur),n,i),o=e-this.tCur;if(o>=s.morph)return r;const l=this.origine(e,n,i);return l?Nt(l,r,T.easeOutQuint(p(o/s.morph))):r}setState(e,s){if(e===this.cur)return;const n=Q.get(this.cur).morph,i=this.prev!==null&&s-this.tCur<n;this.departFige=i?this.poseComposee(s):null,this.prev=this.cur,this.tPrev=this.tCur,this.cur=e,this.tCur=s,Q.get(e)?.blinkIn&&(this.blinkAt=s)}sample(e){const s=this.scale,n=Q.get(this.cur),i=this.shapeAtTime(e),r=this.exprAtTime(e);let o=this.posed(n,Math.max(0,e-this.tCur),i,r),l=this.decalageAtTime(e,this.cur);const c=e-this.tCur,u=c<n.morph?this.origine(e,i,r):null;if(u){const b=T.easeOutQuint(p(c/n.morph));o=Nt(u,o,b);const N=this.prev;if(N){const z=this.decalageAtTime(e,N);l={x:y(z.x,l.x,b),y:y(z.y,l.y,b)}}}const h=o.eyeAlpha>.01,f=this.lookAtTime(e),M=be(e,{wander:h?f.wander:0,blink:h}),k={yaw:y(o.gaze.yaw,f.yaw,f.mix)+M.dYaw-f.spin,pitch:y(o.gaze.pitch,f.pitch,f.mix)+M.dPitch,roll:o.gaze.roll+M.dRoll},A=p((e-this.blinkAt)/.2),w=A<1?Math.abs(A*2-1):1,P=Math.min(M.lid,w),x=o.offX+M.driftX,m=o.offY+M.driftY,g={...o.sil,cx:o.sil.cx+x,cy:o.sil.cy+m,sy:o.sil.sy*M.breath},d=Jt(at(g,s,this.pts)),C=(b,N)=>jt(o.sil.radii,Math.atan2(N,b)-o.sil.rot),v=[];if(o.eyeAlpha>.01){const b=Ht(k,s,o.split);for(let N=0;N<2;N++){const z=b[N];if(z.depth<=.02)continue;const K=o.eyes[N],dt=C(z.x,z.y),ft=(K.tilt??0)*Math.PI/180,W=Math.cos(ft),Z=Math.sin(ft),Qt=z.a*W+z.c*Z,Vt=z.b*W+z.d*Z,qt=-z.a*Z+z.c*W,Kt=-z.b*Z+z.d*W,yt=Ae(Math.min(P,K.open));v.push({d:te(K.w*s,K.h*s),matrix:`matrix(${$(Qt)},${$(Vt*yt)},${$(qt)},${$(Kt*yt)},${$(z.x*dt+(x+l.x)*s)},${$(z.y*dt+(m+l.y)*s)})`,alpha:o.eyeAlpha*p(z.depth/.12)})}}const R=o.dots.filter(b=>b.opacity>.01&&b.r>5e-4).map(b=>({...b,x:(b.x+x)*s,y:(b.y+m)*s,r:b.r*s})),a=o.notif?C(o.notif.x,o.notif.y):1,O=o.notif?(o.notif.x*a+x)*s:0,E=o.notif?(o.notif.y*a+m)*s:0,V=o.notif?{x:O,y:E,r:o.notif.r*s}:null,q=o.notif?{x:O,y:E,r:o.notif.notch*s}:null;return{bodyPath:d,bodyAlpha:o.bodyAlpha,eyes:v,dots:R,dotsBehind:o.dotsBehind,arcs:o.arcs.filter(b=>b.opacity>.01).map(b=>ae(b.seed,b.t,s,b.id,b.opacity)),notif:V,notch:q}}}const Dt=100,De=158,B=De,Ye=1e3/30,je=34;function He(){const[t,e]=_.useState(()=>typeof document>"u"?!1:document.documentElement.classList.contains("dark"));return _.useEffect(()=>{if(typeof MutationObserver!="function")return;const s=document.documentElement,n=new MutationObserver(()=>e(s.classList.contains("dark")));return n.observe(s,{attributes:!0,attributeFilter:["class"]}),()=>n.disconnect()},[]),t}function Xe(){const[t,e]=_.useState(()=>typeof document>"u"?!0:document.visibilityState!=="hidden");return _.useEffect(()=>{if(typeof document>"u")return;const s=()=>e(document.visibilityState!=="hidden");return document.addEventListener("visibilitychange",s),()=>document.removeEventListener("visibilitychange",s)},[]),t}function Ge(){const[t,e]=_.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return _.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const s=window.matchMedia("(prefers-reduced-motion: reduce)"),n=i=>e(i.matches);return s.addEventListener("change",n),()=>s.removeEventListener("change",n)},[]),t}function Ve({state:t="idle-living",dragState:e=null,size:s=48,className:n="",leanX:i=0,shape:r=ie,color:o="auto",paper:l=null}){const c=oe(e==="running-left"||e==="running-right"?e:t),u=Ge(),h=Xe(),f=He(),M=l||(f?xt.dark:xt.light),k=se.get(ne(o,f)).hex,A=_.useId(),w=_.useMemo(()=>A.replace(/[^a-zA-Z0-9_-]/g,""),[A]),P=`bot-mask-${w}`,x=_.useRef(null);x.current===null&&(x.current=new G(Dt,c.state,mt.get(r)?.radii??null,Ot.get(c.expression)??null));const m=x.current,g=_.useRef(0),[d,C]=_.useState(()=>m.sample(0));_.useEffect(()=>{m.setShape(mt.get(r)?.radii??null,g.current)},[m,r]),_.useEffect(()=>{m.setExpression(Ot.get(c.expression)??null,g.current)},[m,c.expression]),_.useEffect(()=>{m.state!==c.state&&(m.setState(c.state,g.current),C(m.sample(g.current)))},[m,c.state]),_.useEffect(()=>{const a=Math.min(1,Math.abs(i));if(a<=0||!Q.get(c.state)?.baseFace){m.setLook(null,g.current);return}m.setLook({yaw:i*je,pitch:st.pitch,mix:a,spin:0,wander:1-a},g.current)},[m,i,c.state]),_.useEffect(()=>{if(u||!h)return;let a=0,O=0,E=0;const V=q=>{a=requestAnimationFrame(V);const b=O?Math.min((q-O)/1e3,.064):0;O=q,g.current+=b,E+=b*1e3,!(E<Ye)&&(E=0,C(m.sample(g.current)))};return a=requestAnimationFrame(V),()=>cancelAnimationFrame(a)},[m,u,h]);const v=a=>{const E={fill:a.color??(a.depth===void 0?k:re(M,k,a.depth)),opacity:a.opacity};return a.d?{...E,d:a.d,transform:`translate(${a.x} ${a.y}) rotate(${a.rot??0}) scale(${Dt})`}:{...E,cx:a.x,cy:a.y,r:a.r}},R=d.dots.map((a,O)=>{const E=v(a);return a.d?I.jsx("path",{...E},O):I.jsx("circle",{...E},O)});return I.jsxs("svg",{"aria-hidden":"true",className:`bot-animated ${n}`,width:s,height:s,viewBox:`${-B} ${-B} ${B*2} ${B*2}`,children:[I.jsxs("defs",{children:[I.jsxs("mask",{id:P,maskUnits:"userSpaceOnUse",x:-B,y:-B,width:B*2,height:B*2,children:[I.jsx("path",{d:d.bodyPath,fill:"#fff"}),d.eyes.map((a,O)=>I.jsx("path",{d:a.d,transform:a.matrix,opacity:a.alpha,fill:"#000"},O)),d.notch?I.jsx("circle",{cx:d.notch.x,cy:d.notch.y,r:d.notch.r,fill:"#000"}):null]}),d.arcs.map(a=>I.jsx("linearGradient",{id:`${w}-${a.id}`,gradientUnits:"userSpaceOnUse",x1:a.grad.x1,y1:a.grad.y1,x2:a.grad.x2,y2:a.grad.y2,children:a.grad.stops.map((O,E)=>I.jsx("stop",{offset:E/(a.grad.stops.length-1),stopColor:O},E))},a.id))]}),I.jsx("g",{fill:"none",strokeLinecap:"round",children:d.arcs.map(a=>I.jsx("path",{d:a.back,stroke:`url(#${w}-${a.id})`,strokeWidth:a.width,opacity:a.opacity},a.id))}),d.dotsBehind?I.jsx("g",{children:R}):null,I.jsxs("g",{opacity:d.bodyAlpha,children:[I.jsx("path",{d:d.bodyPath,fill:M}),I.jsx("g",{mask:`url(#${P})`,children:I.jsx("rect",{x:-B,y:-B,width:B*2,height:B*2,fill:k})})]}),d.dotsBehind?null:I.jsx("g",{children:R}),d.notif?I.jsx("circle",{cx:d.notif.x,cy:d.notif.y,r:d.notif.r,fill:de}):null,I.jsx("g",{fill:"none",strokeLinecap:"round",children:d.arcs.map(a=>I.jsx("path",{d:a.front,stroke:`url(#${w}-${a.id})`,strokeWidth:a.width,opacity:a.opacity},`f${a.id}`))})]})}export{Ve as BotAnimated};
1
+ import{r as _,j as I}from"./__vite-browser-external-WKiEWJ30.js";import{T as j,r as $,c as p,d as et,l as H,e as y,f as U,s as rt,g as T,p as Yt,h as ut,i as Wt,S as Zt,t as at,j as jt,k as Jt,m as te,n as ee,C as se,o as ne,q as mt,u as ie,v as xt,w as oe,x as re}from"./skins-C8EyB85e.js";function nt(t,e=.55,s=.62){const n=(t%360+360)%360,i=(1-Math.abs(2*s-1))*e,r=i*(1-Math.abs(n/60%2-1)),o=s-i/2,[l,c,u]=n<60?[i,r,0]:n<120?[r,i,0]:n<180?[0,i,r]:n<240?[0,r,i]:n<300?[r,0,i]:[i,0,r],h=f=>Math.round((f+o)*255).toString(16).padStart(2,"0");return`#${h(l)}${h(c)}${h(u)}`}function ae(t,e,s,n,i=1){const r=t.phase+e*t.speed*j,o=Math.cos(t.tilt),l=Math.sin(t.tilt),c=Math.sqrt(Math.max(0,1-t.k*t.k)),u=64,h=t.sweep*j;let f="",M="",k=null;for(let P=0;P<=u;P++){const x=r+P/u*h,m=Math.cos(x),g=Math.sin(x),d=t.a*(m*o+g*-l*t.k)+t.cx,C=t.a*(m*l+g*o*t.k)+t.cy,R=t.a*g*c<0,a=$(d*s),O=$(C*s),E=R!==k?"M":"L";R?M+=`${E}${a} ${O}`:f+=`${E}${a} ${O}`,k=R}const A=Math.cos(t.tilt)*t.a*s,w=Math.sin(t.tilt)*t.a*s;return{id:n,front:f,back:M,width:t.width*s,opacity:i,grad:{x1:$(t.cx*s-A),y1:$(t.cy*s-w),x2:$(t.cx*s+A),y2:$(t.cy*s+w),stops:[nt(t.hue),nt(t.hue+t.hueSpan*.5),nt(t.hue+t.hueSpan)]}}}const D=et(659918),gt=Array.from({length:6},(t,e)=>({a:1.3+D()*.1,k:.05+D()*.4,tilt:e/6*Math.PI+D()*.5,speed:3+D()*.7,phase:D()*j,sweep:.6+D()*.25,hue:e*360/6+D()*30,hueSpan:60+D()*60,width:.05+D()*.012,cx:0,cy:.1})),ce=Array.from({length:4},(t,e)=>({a:.78+e*.2,k:.05+e*.02,tilt:-.62+e*.05,speed:.3,phase:.06*e,sweep:.4,hue:95+e*62,hueSpan:100,width:.05,cx:0,cy:-.12})),Mt=[-.557,-.013,.532],bt=.165,At=1.25,wt=et(48879),le=Array.from({length:5},(t,e)=>({birth:e*.2,angle:wt()*j,rho:.58+wt()*.18}));function he(t,e){const s=[];for(const n of le){const i=t-n.birth;if(i<0||i>.62)continue;const r=n.rho*Math.pow(.75,i*10),o=n.angle+i*100*Math.PI/180;s.push({x:Math.cos(o)*r*e,y:Math.sin(o)*r*e,r:(.04+.028*p(i/.55))*e,depth:p(1-r/.8),opacity:p(i/.06)*p((.62-i)/.08)})}return s}const kt=et(49383),ue=Array.from({length:4},(t,e)=>{const s=e-1.5;return{a:.85*(1+s*.03),k:.15/.85*(1+s*.16),tilt:34*Math.PI/180+s*.035,speed:210/360,phase:-e*.045+kt()*.012,sweep:.34,hue:e*85+kt()*20,hueSpan:80,width:.095,cx:0,cy:0}}),pe=.129,de="#2496e8",fe=-42,It=1.003,ye=.15,me=1.14,xe=.054,pt=15.46,ct=.186,lt=.412,st={yaw:28.49,pitch:28.62,roll:-13},J=t=>t*Math.PI/180;function tt(t,e,s){const n=Math.cos(s),i=Math.sin(s);return[[t[0]*n+e[0]*i,t[1]*n+e[1]*i,t[2]*n+e[2]*i],[e[0]*n-t[0]*i,e[1]*n-t[1]*i,e[2]*n-t[2]*i]]}function Ht(t,e,s=pt){let n=[0,0,1],i=[1,0,0],r=[0,1,0];[n,i]=tt(n,i,J(t.yaw)),[r,n]=tt(r,n,J(t.pitch)),[i,r]=tt(i,r,J(t.roll));const o=l=>{const[c,u]=tt(n,i,J(s*l));return{x:c[0]*e,y:c[1]*e,a:u[0],b:u[1],c:r[0],d:r[1],depth:c[2]}};return[o(-1),o(1)]}const Pt=et(24301),Et=(()=>{const t=[];let e=1.4;for(;e<900;)t.push(e),e+=1.9+Pt()*2.7,Pt()<.18&&(t.push(e),e+=.24);return t})(),ge=.18;function Me(t){for(let e=0;e<Et.length;e++){const s=Et[e];if(t<s)break;const n=(t-s)/ge;if(n>=0&&n<=1)return n<.45?1-n/.45:(n-.45)/.55}return 1}function be(t,e={}){const{wander:s=1,blink:n=!0,float:i=!0}=e;return{dYaw:(H(t,11.3,.4)*5.5+H(t,3.7,2.1)*1.6)*s,dPitch:(H(t,9.1,1.3)*4.2+H(t,4.3,.7)*1.3)*s,dRoll:H(t,13.7,3.2)*2.2*s,lid:n?Me(t):1,driftX:i?H(t,7.9,1.9)*.006:0,driftY:i?H(t,5.3,.3)*.007:0,breath:i?1+Math.sin(t/3.4*Math.PI*2)*.005:1}}function Ae(t){return .06+.94*p(t)}const L=(t,e,s=0,n=1)=>({w:t,h:e,tilt:s,open:n}),F=(t,e,s=0,n=1)=>[L(t,e,s,n),L(t,e,-s,n)],Xt=[{id:"neutre",gaze:{...st},split:pt,eyes:[L(ct,lt),L(ct,lt)]},{id:"attentif",gaze:{yaw:4,pitch:5,roll:-4},split:16,eyes:F(.21,.44)},{id:"surpris",gaze:{yaw:3,pitch:-3,roll:0},split:19,eyes:F(.45,.47)},{id:"excite",gaze:{yaw:6,pitch:-14,roll:0},split:19.5,eyes:F(.4,.56,-10)},{id:"heureux",gaze:{yaw:5,pitch:9,roll:0},split:17,eyes:F(.27,.17,14)},{id:"hilare",gaze:{yaw:4,pitch:14,roll:0},split:18,eyes:F(.34,.13,20)},{id:"colere",gaze:{yaw:3,pitch:7,roll:0},split:17,eyes:F(.34,.15,30)},{id:"triste",gaze:{yaw:3,pitch:-13,roll:0},split:16,eyes:F(.22,.4,-28)},{id:"effraye",gaze:{yaw:2,pitch:-20,roll:0},split:20.5,eyes:F(.4,.6)},{id:"mefiant",gaze:{yaw:12,pitch:6,roll:-6},split:16,eyes:[L(.21,.4),L(.22,.15)]},{id:"confus",gaze:{yaw:-14,pitch:3,roll:8},split:16.5,eyes:[L(.2,.44,-18),L(.28,.17,14)]},{id:"curieux",gaze:{yaw:16,pitch:-9,roll:-15},split:16.5,eyes:[L(.24,.46,-8),L(.2,.38,-8)]},{id:"fier",gaze:{yaw:5,pitch:17,roll:0},split:17,eyes:F(.3,.15,18)},{id:"timide",gaze:{yaw:-19,pitch:-14,roll:-7},split:14,eyes:F(.17,.3)},{id:"blase",gaze:{yaw:-22,pitch:2,roll:0},split:16,eyes:F(.3,.12)},{id:"somnolent",gaze:{yaw:6,pitch:-9,roll:-3},split:16,eyes:F(.2,.42,0,.42)}],Ot=new Map(Xt.map(t=>[t.id,t])),zt=(t,e,s)=>({w:y(t.w,e.w,s),h:y(t.h,e.h,s),tilt:y(t.tilt??0,e.tilt??0,s),open:y(t.open,e.open,s)});function we(t,e,s){return{id:e.id,gaze:{yaw:y(t.gaze.yaw,e.gaze.yaw,s),pitch:y(t.gaze.pitch,e.gaze.pitch,s),roll:y(t.gaze.roll,e.gaze.roll,s)},split:y(t.split,e.split,s),eyes:[zt(t.eyes[0],e.eyes[0],s),zt(t.eyes[1],e.eyes[1],s)]}}const X=(t,e)=>[{w:t,h:e,open:1},{w:t,h:e,open:1}];function S(t={}){return{sil:U(1),offX:0,offY:0,gaze:{...st},split:pt,eyes:X(ct,lt),eyeAlpha:1,bodyAlpha:1,dots:[],arcs:[],notif:null,dotsBehind:!1,...t}}const Gt=-.1875,ke=Yt(ut(0,-.505,.132,0,.13,.075),0,Gt),Ie=Yt(ut(0,-.2535,.1345,0,.2535,.1345),0,0),Pe=(t={})=>({radii:[...ke],rot:0,cx:0,cy:Gt,sx:1,sy:1,...t}),Ee=(t={})=>({radii:[...Ie],rot:0,cx:0,cy:0,sx:1,sy:1,...t}),Oe=Wt(ut(0,0,.118,0,.172,.012)),Rt=.213;function _t(t){return rt("triangle",{rot:t,cx:-Rt*Math.sin(t),cy:Rt*Math.cos(t)})}function St(t,e){const s=((t-e*.5)/1.5%1+1)%1,n=s<.5?.5-.5*Math.cos(s*j):0;return p(n*2)}const Ut=[{id:"idle",duration:2.4,morph:.45,blinkIn:!1,baseFace:!0,baseBody:!0,pose:()=>S()},{id:"thinking",duration:2.6,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:t=>{const e=St(t,1),s=.3+.7*T.easeOutCubic(p(t/.3));return S({sil:U(bt*(1+(At-1)*e),{cx:Mt[1]}),eyeAlpha:0,dots:[0,2].map(n=>{const i=St(t,n);return{x:Mt[n]*s,y:0,r:bt*(1+(At-1)*i),opacity:.55+.45*i}})})}},{id:"wink",duration:1.6,morph:.3,blinkIn:!0,baseFace:!1,baseBody:!0,pose:()=>S({gaze:{yaw:-5.37,pitch:4.55,roll:6.7},split:16.25,eyes:[{w:.236,h:.464,open:1},{w:.447,h:.089,open:1}]})},{id:"wide",duration:1.8,morph:.55,blinkIn:!0,baseFace:!1,baseBody:!0,pose:()=>S({gaze:{yaw:6.92,pitch:-21.96,roll:11.6},split:18.43,eyes:X(.356,.875)})},{id:"alert",duration:2.4,minDuration:2,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=p(t/1.5),s=T.easeInOutCubic(e)*.82-.087,n=t>1.6?p((t-1.6)/.4):0,i=s*(1-n)+.1*n,r=Math.sin(t*2.5*j)*.005,o=17.7*Math.PI/180;return S({sil:Ee({rot:o,cx:i,cy:-.325-r}),eyeAlpha:0,dots:[{x:i-Math.sin(o)*.58,y:-.325+Math.cos(o)*.58+r*2.8,r:.118,d:Oe,rot:o*180/Math.PI,opacity:1}]})}},{id:"notify",duration:2.2,morph:.5,blinkIn:!0,baseFace:!1,baseBody:!0,pose:t=>{const e=p(t/.45),s=1+(me-1)*Math.sin(e*Math.PI)*(1-e*.35),n=ye*(e<1?s:1),i=fe*Math.PI/180;return S({gaze:{yaw:-21.94,pitch:-5.82,roll:-12.2},split:18.89,eyes:X(.505,.498),notif:{x:Math.cos(i)*It,y:Math.sin(i)*It,r:n,notch:n+xe}})}},{id:"exclaim",duration:2,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:()=>S({sil:Pe(),eyeAlpha:0,dots:[{x:-.012,y:.526,r:.113,opacity:1}]})},{id:"sleep",duration:2.4,morph:.5,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>S({sil:U(.1585,{cy:.11+Math.sin(t*(j/.6))*.19}),eyeAlpha:0})},{id:"egg",duration:1.8,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:()=>S({sil:rt("egg"),gaze:{yaw:19.97,pitch:26.01,roll:-17.1},split:11.07,eyes:X(.164,.385)})},{id:"hexagon",duration:1.6,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!0,pose:()=>S({sil:rt("hexagon"),gaze:{yaw:23.11,pitch:24.42,roll:-13.3},split:13.37,eyes:X(.177,.411)})},{id:"play",duration:2,morph:.5,baseFace:!1,baseBody:!1,blinkIn:!0,pose:t=>{const e=p(t/.35)*p((2.2-t)/.5);return S({sil:_t(0),gaze:{yaw:12,pitch:-8,roll:-6},split:15,eyes:X(.18,.34),arcs:ce.map((s,n)=>({id:`sw${n}`,seed:{...s,cx:.45-t*.42},t,opacity:e}))})}},{id:"orbit",duration:3.4,minDuration:2.5,morph:.6,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=T.easeInOutCubic(p(t/.35)),s=-j*1.25*t*e,n=T.easeInOutCubic(p((t-1.6)/.9)),i=_t(s),r=U(1,{rot:s}),o={radii:i.radii.map((c,u)=>c+(r.radii[u]-c)*n),rot:s,cx:i.cx*(1-n),cy:i.cy*(1-n),sx:1,sy:1},l=p(t/.8)*p((3.6-t)/.9);return S({sil:o,gaze:{yaw:st.yaw+Math.sin(t*6.5)*65*(1-n),pitch:-4+n*32,roll:-13},eyes:X(.18,.34+n*.07),arcs:gt.map((c,u)=>({id:`rg${u}`,seed:c,t,opacity:l*p((t-u*.13)/.3)}))})}},{id:"swirl",duration:1.3,minDuration:1.3,morph:.3,baseFace:!0,baseBody:!0,blinkIn:!0,pose:t=>S({arcs:gt.slice(0,3).map((e,s)=>({id:`sw${s}`,seed:e,t,opacity:p((t-s*.06)/.14)*p((1.22-t)/.34)}))})},{id:"burst",duration:2.6,minDuration:2.4,morph:.4,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=1-.834*T.easeOutQuint(p(t/.7)),s=T.easeOutQuint(p((t-1.7)/.7));return S({sil:U(e+(1-e)*s),eyeAlpha:p((t-1.85)/.4),dots:he(t,1),dotsBehind:!0})}},{id:"comet",duration:2.4,minDuration:2.4,morph:.45,baseFace:!1,baseBody:!1,blinkIn:!1,pose:t=>{const e=1-(1-pe)*T.easeOutQuint(p(t/.55)),s=T.easeOutQuint(p((t-1.85)/.6)),n=p((t-.15)/.25)*p((1.95-t)/.3);return S({sil:U(e+(1-e)*s,{cy:Math.sin(p(t/1.7)*Math.PI)*.035}),eyeAlpha:p((t-2)/.35),arcs:ue.map((i,r)=>({id:`cm${r}`,seed:i,t,opacity:n}))})}}],Q=new Map(Ut.map(t=>[t.id,t])),Y=100,Tt=5.5+1.6,vt=4.2+1.3,ze=.006,Re=.007;function Ft(t,e,s){const n=[],i=Ht(t.gaze,Y,t.split);for(let r=0;r<2;r++){const o=i[r];if(o.depth<=.02)continue;const l=t.eyes[r],c=(l.tilt??0)*Math.PI/180,u=Math.cos(c),h=Math.sin(c),f=o.a*u+o.c*h,M=o.b*u+o.d*h,k=-o.a*h+o.c*u,A=-o.b*h+o.d*u,w=Math.max(l.w*Y,.01)/2,P=Math.max(l.h*Y,.01)/2,x=Math.min(w,P),m=P>w,g=m?P-x:w-x,d=jt(s,Math.atan2(o.y,o.x)-e.rot);n.push({x:o.x*d,y:o.y*d,ax:(m?k:f)*g,ay:(m?A:M)*g,r:x,m:[f,M,k,A]})}return n}function _e(t,e,s,n,i){const r=n-e,o=i-s,l=r*r+o*o;let c=1/0,u=0,h=0;for(let M=0;M<t.length;M++){const k=t[M];let A=l>0?((k.x-e)*r+(k.y-s)*o)/l:0;A=A<0?0:A>1?1:A;const w=e+A*r-k.x,P=s+A*o-k.y,x=w*w+P*P;x<c&&(c=x,u=w,h=P)}const f=Math.sqrt(c);return{d:f,ux:f>1e-9?u/f:0,uy:f>1e-9?h/f:0}}const Se=Math.hypot(ze,Re)*Y;function Bt(t,e,s,n){let i=1/0,r=0,o=0;for(const l of e){const c=l.x+s,u=l.y+n,h=_e(t,c-l.ax,u-l.ay,c+l.ax,u+l.ay),[f,M,k,A]=l.m,w=l.r*Math.hypot(f*h.ux+M*h.uy,k*h.ux+A*h.uy)+Se;h.d-w<i&&(i=h.d-w,r=h.ux,o=h.uy)}return{marge:i,ux:r,uy:o}}const $t=12,Te=8;function ve(t){if(!t.length)return{x:0,y:0};const e=(x,m)=>{let g=1/0;for(const d of t)g=Math.min(g,Bt(d.contour,d.empreintes,x,m).marge);return g};let s=1/0;for(const x of t)s=Math.min(s,Bt(x.calContour,x.reference,0,0).marge);let n=0,i=0;const r=t[0].empreintes;for(const x of r)n-=x.x/r.length,i-=x.y/r.length;const o=Math.max(.35*Y,Math.hypot(n,i)*1.25);s=Math.min(s,e(n,i));const l=e(0,0);if(l>=s&&l>=0)return{x:0,y:0};const c=Math.max(s,0);let u=0,h=0,f=1/0,M=0,k=0,A=l;for(let x=0;x<$t;x++){const m=x/$t*Math.PI*2,g=Math.cos(m),d=Math.sin(m);if(e(g*o,d*o)<c){for(const R of[.3,.6,1]){const a=e(g*o*R,d*o*R);a>A&&(A=a,M=g*o*R,k=d*o*R)}continue}let C=0,v=o;for(let R=0;R<Te;R++){const a=(C+v)/2;e(g*a,d*a)>=c?v=a:C=a}v<f&&(f=v,u=g*v,h=d*v)}const w=f===1/0?M:u,P=f===1/0?k:h;return{x:+(w/Y).toFixed(6),y:+(P/Y).toFixed(6)}}function Fe(t,e,s){return t.baseFace&&s?{gaze:s.gaze,split:s.split,eyes:s.eyes}:{gaze:e.gaze,split:e.split,eyes:e.eyes}}function Be(t){const e=n=>JSON.stringify([n.gaze,n.split,n.eyes,n.sil.rot,n.sil.cx,n.sil.cy,n.sil.sx,n.sil.sy]);if(e(t.pose(0))===e(t.pose(t.duration)))return[0];const s=3;return Array.from({length:s},(n,i)=>i/(s-1)*t.duration)}function $e(t,e,s){const n=[];for(const i of Be(t)){const r=t.pose(i),o=at({...r.sil,radii:e},Y),l=at(r.sil,Y),c=Fe(t,r,s),u=[];for(const h of[-Tt,Tt])for(const f of[-vt,vt])u.push({...c,gaze:{yaw:c.gaze.yaw+h,pitch:c.gaze.pitch+f,roll:c.gaze.roll}});for(const h of u)n.push({empreintes:Ft(h,r.sil,e),reference:Ft(h,r.sil,r.sil.radii),contour:o,calContour:l})}return ve(n)}const it={x:0,y:0},ht=(t,e)=>`${t}|${e??""}`;function Ce(){return new Map(Zt.map(t=>{const e=new Map;for(const s of Ut){if(!s.baseBody)continue;const n=s.baseFace?[null,...Xt]:[null];for(const i of n)e.set(ht(s.id,i?.id??null),$e(s,t.radii,i))}return[t.radii,e]}))}const Le=Ce();function Ct(t,e,s){if(!t)return it;const n=Le.get(t);return n?n.get(ht(e,s))??n.get(ht(e,null))??it:it}const ot={yaw:0,pitch:0,mix:0,spin:0,wander:1},Ne=(t,e,s)=>({yaw:y(t.yaw,e.yaw,s),pitch:y(t.pitch,e.pitch,s),mix:y(t.mix,e.mix,s),spin:y(t.spin,e.spin,s),wander:y(t.wander,e.wander,s)}),Lt=(t,e,s)=>({w:y(t.w,e.w,s),h:y(t.h,e.h,s),open:y(t.open,e.open,s),tilt:y(t.tilt??0,e.tilt??0,s)});function Nt(t,e,s){const n=1-s;return{sil:ee(t.sil,e.sil,s),offX:y(t.offX,e.offX,s),offY:y(t.offY,e.offY,s),gaze:{yaw:y(t.gaze.yaw,e.gaze.yaw,s),pitch:y(t.gaze.pitch,e.gaze.pitch,s),roll:y(t.gaze.roll,e.gaze.roll,s)},split:y(t.split,e.split,s),eyes:[Lt(t.eyes[0],e.eyes[0],s),Lt(t.eyes[1],e.eyes[1],s)],eyeAlpha:y(t.eyeAlpha,e.eyeAlpha,s),bodyAlpha:y(t.bodyAlpha,e.bodyAlpha,s),dots:[...t.dots.map(i=>({...i,opacity:i.opacity*n})),...e.dots.map(i=>({...i,opacity:i.opacity*s}))],arcs:[...t.arcs.map(i=>({...i,id:`a${i.id}`,opacity:i.opacity*n})),...e.arcs.map(i=>({...i,id:`b${i.id}`,opacity:i.opacity*s}))],notif:s<.5?t.notif:e.notif,dotsBehind:s<.5?t.dotsBehind:e.dotsBehind}}class G{scale;cur;prev=null;departFige=null;tCur=0;tPrev=0;blinkAt=-10;pts=[];shape=null;shapePrev=null;shapeAt=-10;expr=null;exprPrev=null;exprAt=-10;look=ot;lookPrev=ot;lookAt=-10;lookMorph=.24;static SHAPE_MORPH=.45;static LOOK_MORPH=.24;constructor(e=100,s="idle",n=null,i=null){this.scale=e,this.cur=s,this.shape=n,this.expr=i}setExpression(e,s=0){e!==this.expr&&(this.exprPrev=this.expr,this.expr=e,this.exprAt=s)}exprAtTime(e){const s=this.expr,n=this.exprPrev;if(!s||!n)return s;const i=(e-this.exprAt)/G.SHAPE_MORPH;return i>=1?s:we(n,s,T.easeOutQuint(p(i)))}setShape(e,s=0){e!==this.shape&&(this.shapePrev=this.shape,this.shape=e,this.shapeAt=s)}shapeAtTime(e){const s=this.shape,n=this.shapePrev;if(!s||!n)return s;const i=(e-this.shapeAt)/G.SHAPE_MORPH;if(i>=1)return s;const r=T.easeOutQuint(p(i));return s.map((o,l)=>y(n[l]??o,o,r))}setLook(e,s,n=G.LOOK_MORPH){e&&!Number.isFinite(e.yaw+e.pitch+e.mix+e.spin+e.wander)||(this.lookPrev=this.lookAtTime(s),this.look=e??ot,this.lookAt=s,this.lookMorph=n)}lookAtTime(e){const s=(e-this.lookAt)/this.lookMorph;return s>=1?this.look:Ne(this.lookPrev,this.look,T.easeOutQuint(p(s)))}posed(e,s,n,i){let r=e.pose(s);return e.baseBody&&n&&(r={...r,sil:{...r.sil,radii:n}}),e.baseFace&&i&&(r={...r,gaze:i.gaze,split:i.split,eyes:i.eyes}),r}decalageAtTime(e,s){const n=(r,o,l,c)=>{if(l===c)return c;const u=(e-r)/o;if(u>=1)return c;const h=T.easeOutQuint(p(u));return{x:y(l.x,c.x,h),y:y(l.y,c.y,h)}},i=r=>n(this.exprAt,G.SHAPE_MORPH,Ct(r,s,this.exprPrev?.id??null),Ct(r,s,this.expr?.id??null));return n(this.shapeAt,G.SHAPE_MORPH,i(this.shapePrev),i(this.shape))}get state(){return this.cur}reset(e,s){this.cur=e,this.prev=null,this.departFige=null,this.tCur=s,this.tPrev=s,this.blinkAt=-10}origine(e,s,n){if(this.departFige)return this.departFige;if(!this.prev)return null;const i=Q.get(this.prev);return this.posed(i,Math.max(0,e-this.tPrev),s,n)}poseComposee(e){const s=Q.get(this.cur),n=this.shapeAtTime(e),i=this.exprAtTime(e),r=this.posed(s,Math.max(0,e-this.tCur),n,i),o=e-this.tCur;if(o>=s.morph)return r;const l=this.origine(e,n,i);return l?Nt(l,r,T.easeOutQuint(p(o/s.morph))):r}setState(e,s){if(e===this.cur)return;const n=Q.get(this.cur).morph,i=this.prev!==null&&s-this.tCur<n;this.departFige=i?this.poseComposee(s):null,this.prev=this.cur,this.tPrev=this.tCur,this.cur=e,this.tCur=s,Q.get(e)?.blinkIn&&(this.blinkAt=s)}sample(e){const s=this.scale,n=Q.get(this.cur),i=this.shapeAtTime(e),r=this.exprAtTime(e);let o=this.posed(n,Math.max(0,e-this.tCur),i,r),l=this.decalageAtTime(e,this.cur);const c=e-this.tCur,u=c<n.morph?this.origine(e,i,r):null;if(u){const b=T.easeOutQuint(p(c/n.morph));o=Nt(u,o,b);const N=this.prev;if(N){const z=this.decalageAtTime(e,N);l={x:y(z.x,l.x,b),y:y(z.y,l.y,b)}}}const h=o.eyeAlpha>.01,f=this.lookAtTime(e),M=be(e,{wander:h?f.wander:0,blink:h}),k={yaw:y(o.gaze.yaw,f.yaw,f.mix)+M.dYaw-f.spin,pitch:y(o.gaze.pitch,f.pitch,f.mix)+M.dPitch,roll:o.gaze.roll+M.dRoll},A=p((e-this.blinkAt)/.2),w=A<1?Math.abs(A*2-1):1,P=Math.min(M.lid,w),x=o.offX+M.driftX,m=o.offY+M.driftY,g={...o.sil,cx:o.sil.cx+x,cy:o.sil.cy+m,sy:o.sil.sy*M.breath},d=Jt(at(g,s,this.pts)),C=(b,N)=>jt(o.sil.radii,Math.atan2(N,b)-o.sil.rot),v=[];if(o.eyeAlpha>.01){const b=Ht(k,s,o.split);for(let N=0;N<2;N++){const z=b[N];if(z.depth<=.02)continue;const K=o.eyes[N],dt=C(z.x,z.y),ft=(K.tilt??0)*Math.PI/180,W=Math.cos(ft),Z=Math.sin(ft),Qt=z.a*W+z.c*Z,Vt=z.b*W+z.d*Z,qt=-z.a*Z+z.c*W,Kt=-z.b*Z+z.d*W,yt=Ae(Math.min(P,K.open));v.push({d:te(K.w*s,K.h*s),matrix:`matrix(${$(Qt)},${$(Vt*yt)},${$(qt)},${$(Kt*yt)},${$(z.x*dt+(x+l.x)*s)},${$(z.y*dt+(m+l.y)*s)})`,alpha:o.eyeAlpha*p(z.depth/.12)})}}const R=o.dots.filter(b=>b.opacity>.01&&b.r>5e-4).map(b=>({...b,x:(b.x+x)*s,y:(b.y+m)*s,r:b.r*s})),a=o.notif?C(o.notif.x,o.notif.y):1,O=o.notif?(o.notif.x*a+x)*s:0,E=o.notif?(o.notif.y*a+m)*s:0,V=o.notif?{x:O,y:E,r:o.notif.r*s}:null,q=o.notif?{x:O,y:E,r:o.notif.notch*s}:null;return{bodyPath:d,bodyAlpha:o.bodyAlpha,eyes:v,dots:R,dotsBehind:o.dotsBehind,arcs:o.arcs.filter(b=>b.opacity>.01).map(b=>ae(b.seed,b.t,s,b.id,b.opacity)),notif:V,notch:q}}}const Dt=100,De=158,B=De,Ye=1e3/30,je=34;function He(){const[t,e]=_.useState(()=>typeof document>"u"?!1:document.documentElement.classList.contains("dark"));return _.useEffect(()=>{if(typeof MutationObserver!="function")return;const s=document.documentElement,n=new MutationObserver(()=>e(s.classList.contains("dark")));return n.observe(s,{attributes:!0,attributeFilter:["class"]}),()=>n.disconnect()},[]),t}function Xe(){const[t,e]=_.useState(()=>typeof document>"u"?!0:document.visibilityState!=="hidden");return _.useEffect(()=>{if(typeof document>"u")return;const s=()=>e(document.visibilityState!=="hidden");return document.addEventListener("visibilitychange",s),()=>document.removeEventListener("visibilitychange",s)},[]),t}function Ge(){const[t,e]=_.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return _.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const s=window.matchMedia("(prefers-reduced-motion: reduce)"),n=i=>e(i.matches);return s.addEventListener("change",n),()=>s.removeEventListener("change",n)},[]),t}function Ve({state:t="idle-living",dragState:e=null,size:s=48,className:n="",leanX:i=0,shape:r=ie,color:o="auto",paper:l=null}){const c=oe(e==="running-left"||e==="running-right"?e:t),u=Ge(),h=Xe(),f=He(),M=l||(f?xt.dark:xt.light),k=se.get(ne(o,f)).hex,A=_.useId(),w=_.useMemo(()=>A.replace(/[^a-zA-Z0-9_-]/g,""),[A]),P=`bot-mask-${w}`,x=_.useRef(null);x.current===null&&(x.current=new G(Dt,c.state,mt.get(r)?.radii??null,Ot.get(c.expression)??null));const m=x.current,g=_.useRef(0),[d,C]=_.useState(()=>m.sample(0));_.useEffect(()=>{m.setShape(mt.get(r)?.radii??null,g.current)},[m,r]),_.useEffect(()=>{m.setExpression(Ot.get(c.expression)??null,g.current)},[m,c.expression]),_.useEffect(()=>{m.state!==c.state&&(m.setState(c.state,g.current),C(m.sample(g.current)))},[m,c.state]),_.useEffect(()=>{const a=Math.min(1,Math.abs(i));if(a<=0||!Q.get(c.state)?.baseFace){m.setLook(null,g.current);return}m.setLook({yaw:i*je,pitch:st.pitch,mix:a,spin:0,wander:1-a},g.current)},[m,i,c.state]),_.useEffect(()=>{if(u||!h)return;let a=0,O=0,E=0;const V=q=>{a=requestAnimationFrame(V);const b=O?Math.min((q-O)/1e3,.064):0;O=q,g.current+=b,E+=b*1e3,!(E<Ye)&&(E=0,C(m.sample(g.current)))};return a=requestAnimationFrame(V),()=>cancelAnimationFrame(a)},[m,u,h]);const v=a=>{const E={fill:a.color??(a.depth===void 0?k:re(M,k,a.depth)),opacity:a.opacity};return a.d?{...E,d:a.d,transform:`translate(${a.x} ${a.y}) rotate(${a.rot??0}) scale(${Dt})`}:{...E,cx:a.x,cy:a.y,r:a.r}},R=d.dots.map((a,O)=>{const E=v(a);return a.d?I.jsx("path",{...E},O):I.jsx("circle",{...E},O)});return I.jsxs("svg",{"aria-hidden":"true",className:`bot-animated ${n}`,width:s,height:s,viewBox:`${-B} ${-B} ${B*2} ${B*2}`,children:[I.jsxs("defs",{children:[I.jsxs("mask",{id:P,maskUnits:"userSpaceOnUse",x:-B,y:-B,width:B*2,height:B*2,children:[I.jsx("path",{d:d.bodyPath,fill:"#fff"}),d.eyes.map((a,O)=>I.jsx("path",{d:a.d,transform:a.matrix,opacity:a.alpha,fill:"#000"},O)),d.notch?I.jsx("circle",{cx:d.notch.x,cy:d.notch.y,r:d.notch.r,fill:"#000"}):null]}),d.arcs.map(a=>I.jsx("linearGradient",{id:`${w}-${a.id}`,gradientUnits:"userSpaceOnUse",x1:a.grad.x1,y1:a.grad.y1,x2:a.grad.x2,y2:a.grad.y2,children:a.grad.stops.map((O,E)=>I.jsx("stop",{offset:E/(a.grad.stops.length-1),stopColor:O},E))},a.id))]}),I.jsx("g",{fill:"none",strokeLinecap:"round",children:d.arcs.map(a=>I.jsx("path",{d:a.back,stroke:`url(#${w}-${a.id})`,strokeWidth:a.width,opacity:a.opacity},a.id))}),d.dotsBehind?I.jsx("g",{children:R}):null,I.jsxs("g",{opacity:d.bodyAlpha,children:[I.jsx("path",{d:d.bodyPath,fill:M}),I.jsx("g",{mask:`url(#${P})`,children:I.jsx("rect",{x:-B,y:-B,width:B*2,height:B*2,fill:k})})]}),d.dotsBehind?null:I.jsx("g",{children:R}),d.notif?I.jsx("circle",{cx:d.notif.x,cy:d.notif.y,r:d.notif.r,fill:de}):null,I.jsx("g",{fill:"none",strokeLinecap:"round",children:d.arcs.map(a=>I.jsx("path",{d:a.front,stroke:`url(#${w}-${a.id})`,strokeWidth:a.width,opacity:a.opacity},`f${a.id}`))})]})}export{Ve as BotAnimated};
@@ -1 +1 @@
1
- import{j as r,e}from"./__vite-browser-external-BE7h4Ou0.js";function n({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:e("rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200",s),children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{n as C};
1
+ import{j as r,e}from"./__vite-browser-external-WKiEWJ30.js";function n({children:i,title:a,subtitle:o,className:s="",bodyClassName:d=""}){return r.jsxs("div",{className:e("rounded-xl border border-oai-gray-200 dark:border-oai-gray-800 bg-white dark:bg-oai-gray-900 transition-colors duration-200",s),children:[(a||o)&&r.jsxs("div",{className:"px-5 py-4 border-b border-oai-gray-200 dark:border-oai-gray-800 transition-colors duration-200",children:[a&&r.jsx("h3",{className:"text-sm font-medium text-oai-gray-500 dark:text-oai-gray-300 uppercase tracking-wide transition-colors duration-200",children:a}),o&&r.jsx("p",{className:"text-sm text-oai-gray-500 dark:text-oai-gray-300 mt-1 transition-colors duration-200",children:o})]}),r.jsx("div",{className:`p-5 ${d}`,children:i})]})}export{n as C};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BotAnimated-Dr4FOdii.js","assets/__vite-browser-external-BE7h4Ou0.js","assets/__vite-browser-external-CiR9-j4L.css","assets/skins-C8EyB85e.js"])))=>i.map(i=>d[i]);
2
- import{r,j as l,_ as $}from"./__vite-browser-external-BE7h4Ou0.js";const C=Object.assign(Object.create(null),{clawd:"clawd",bot:"vector"});function T(e){return C[v(e)]||"atlas"}function v(e){const n=String(e||"").trim().toLowerCase();return/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/.test(n)?n:"clawd"}const V=.84,I=1.35,O=Object.assign(Object.create(null),{clawd:V,bot:I});function M(e){return O[v(e)]??1}const z={idle:{row:0,durations:[280,110,110,140,140,320]},"running-right":{row:1,durations:[120,120,120,120,120,120,120,220]},"running-left":{row:2,durations:[120,120,120,120,120,120,120,220]},waving:{row:3,durations:[140,140,140,280]},jumping:{row:4,durations:[140,140,140,140,280]},failed:{row:5,durations:[140,140,140,140,140,140,140,240]},waiting:{row:6,durations:[150,150,150,150,150,260]},running:{row:7,durations:[120,120,120,120,120,220]},review:{row:8,durations:[150,150,150,150,150,280]}};function P(e){return["error","disconnected","working-overheated"].includes(e)?"failed":["happy","waking","mini-happy","jumping"].includes(e)?"jumping":["working-typing","working-ultrathink","working-juggling","running"].includes(e)?"running":["working-thinking","working-wizard","review"].includes(e)?"review":["sleeping","idle-doze","mini-sleep","waiting"].includes(e)?"waiting":["mini-peek","waving"].includes(e)?"waving":e==="running-left"||e==="running-right"?e:"idle"}function B(){const[e,n]=r.useState(()=>typeof document>"u"?!0:document.visibilityState!=="hidden");return r.useEffect(()=>{if(typeof document>"u")return;const i=()=>n(document.visibilityState!=="hidden");return document.addEventListener("visibilitychange",i),()=>document.removeEventListener("visibilitychange",i)},[]),e}function H(){const[e,n]=r.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return r.useEffect(()=>{if(typeof window.matchMedia!="function")return;const i=window.matchMedia("(prefers-reduced-motion: reduce)"),t=o=>n(o.matches);return i.addEventListener("change",t),()=>i.removeEventListener("change",t)},[]),e}function N({character:e,pet:n=null,state:i="idle-living",dragState:t=null,size:o=48,className:c="",lookDirectionIndex:g=null}){const d=v(e),u=t==="running-left"||t==="running-right"?t:P(i),a=z[u],s=n?.spriteVersionNumber===2?2:1,f=s===2?11:9,w=s===2&&u==="idle"&&Number.isInteger(g)?(g%16+16)%16:null,h=w==null?a.row:9+Math.floor(w/8),m=w==null?null:w%8,k=H(),y=B(),[b,S]=r.useState(0);r.useEffect(()=>{if(S(0),k||!y||w!=null)return;let E=!1,j=0;const x=R=>{j=window.setTimeout(()=>{if(E)return;const A=(R+1)%a.durations.length;S(A),x(A)},a.durations[R])};return x(0),()=>{E=!0,window.clearTimeout(j)}},[w,k,y,a]);const L=r.useMemo(()=>({width:o*(192/208),height:o,backgroundImage:`url(${n?.assetUrl||`/pets/${d}/spritesheet.webp`})`,backgroundRepeat:"no-repeat",backgroundSize:`800% ${f*100}%`,backgroundPosition:`${(m??b)/7*100}% ${h/(f-1)*100}%`,imageRendering:"pixelated"}),[f,m,h,b,d,n?.assetUrl,o]);return l.jsx("div",{"aria-hidden":"true",className:`pet-atlas-animated ${c}`,style:L})}const U=r.lazy(()=>$(()=>import("./BotAnimated-Dr4FOdii.js"),__vite__mapDeps([0,1,2,3])).then(e=>({default:e.BotAnimated}))),_={"idle-living":"idle/living.svg","idle-doze":"idle/doze.svg","idle-follow":"idle/follow.svg","idle-look":"idle/look.svg","idle-yawn":"idle/yawn.svg","idle-collapse":"idle/collapse.svg","working-building":"working/building.svg","working-carrying":"working/carrying.svg","working-conducting":"working/conducting.svg","working-confused":"working/confused.svg","working-debugger":"working/debugger.svg","working-juggling":"working/juggling.svg","working-overheated":"working/overheated.svg","working-pushing":"working/pushing.svg","working-sweeping":"working/sweeping.svg","working-thinking":"working/thinking.svg","working-typing":"working/typing.svg","working-ultrathink":"working/ultrathink.svg","working-wizard":"working/wizard.svg","mini-alert":"mini/alert.svg","mini-crabwalk":"mini/crabwalk.svg","mini-enter":"mini/enter.svg","mini-enter-sleep":"mini/enter-sleep.svg","mini-happy":"mini/happy.svg","mini-idle":"mini/idle.svg","mini-peek":"mini/peek.svg","mini-sleep":"mini/sleep.svg","react-double":"react/double.svg","react-drag":"react/drag.svg","react-left":"react/left.svg","react-right":"react/right.svg","collapse-sleep":"sleep/collapse-sleep.svg",sleeping:"sleep/sleeping.svg",wake:"sleep/wake.svg",disconnected:"status/disconnected.svg",error:"status/error.svg",notification:"status/notification.svg",happy:"happy.svg","static-base":"static-base.svg"},p=new Map;async function q(e){if(p.has(e))return p.get(e);if(typeof fetch!="function")return null;let n;try{n=await fetch(`/clawd/${e}`)}catch{return null}if(!n.ok)return null;const t=(await n.text()).replace(/<svg([^>]*)>/,(o,c)=>`<svg${c.replace(/\s+width="[^"]*"/g,"").replace(/\s+height="[^"]*"/g,"")} width="100%" height="100%">`);return p.set(e,t),t}function F({state:e="idle-living",size:n=48,className:i=""}){const[t,o]=r.useState(""),c=r.useRef(null),d=D()?"static-base":e,u=_[d]||_["static-base"];return r.useEffect(()=>{let a=!1;return q(u).then(s=>{!a&&s&&o(s)}),()=>{a=!0}},[u]),r.useEffect(()=>{const a=c.current?.querySelector("svg");if(a)try{const s=a.getBBox();s.width>0&&s.height>0&&a.setAttribute("viewBox",`${s.x-2} ${s.y-2} ${s.width+4} ${s.height+4}`)}catch{}},[t]),l.jsx("div",{ref:c,"aria-hidden":"true",className:`clawd-animated ${i}`,style:{width:n,height:n,display:"inline-flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},dangerouslySetInnerHTML:{__html:t}})}function G({state:e="idle-living",size:n=48,className:i="",character:t="clawd",pet:o=null,lookDirectionIndex:c=null,botColor:g="auto"}){const d=v(t),u=T(d);return u==="vector"?l.jsx(r.Suspense,{fallback:l.jsx("span",{"aria-hidden":"true",style:{width:n,height:n,display:"inline-block"}}),children:l.jsx(U,{state:e,size:n*M(d),className:i,color:g})}):u==="atlas"?l.jsx(N,{character:d,pet:o,state:e,size:n,className:i,lookDirectionIndex:c}):l.jsx(F,{state:e,size:n*M(d),className:i})}function D(){const[e,n]=r.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return r.useEffect(()=>{if(typeof window.matchMedia!="function")return;const i=window.matchMedia("(prefers-reduced-motion: reduce)"),t=o=>n(o.matches);return i.addEventListener("change",t),()=>i.removeEventListener("change",t)},[]),e}export{G as C,v as n,T as p};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/BotAnimated-KONFZbQT.js","assets/__vite-browser-external-WKiEWJ30.js","assets/__vite-browser-external-CiR9-j4L.css","assets/skins-C8EyB85e.js"])))=>i.map(i=>d[i]);
2
+ import{r,j as l,_ as $}from"./__vite-browser-external-WKiEWJ30.js";const C=Object.assign(Object.create(null),{clawd:"clawd",bot:"vector"});function T(e){return C[v(e)]||"atlas"}function v(e){const n=String(e||"").trim().toLowerCase();return/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/.test(n)?n:"clawd"}const V=.84,I=1.35,O=Object.assign(Object.create(null),{clawd:V,bot:I});function M(e){return O[v(e)]??1}const z={idle:{row:0,durations:[280,110,110,140,140,320]},"running-right":{row:1,durations:[120,120,120,120,120,120,120,220]},"running-left":{row:2,durations:[120,120,120,120,120,120,120,220]},waving:{row:3,durations:[140,140,140,280]},jumping:{row:4,durations:[140,140,140,140,280]},failed:{row:5,durations:[140,140,140,140,140,140,140,240]},waiting:{row:6,durations:[150,150,150,150,150,260]},running:{row:7,durations:[120,120,120,120,120,220]},review:{row:8,durations:[150,150,150,150,150,280]}};function P(e){return["error","disconnected","working-overheated"].includes(e)?"failed":["happy","waking","mini-happy","jumping"].includes(e)?"jumping":["working-typing","working-ultrathink","working-juggling","running"].includes(e)?"running":["working-thinking","working-wizard","review"].includes(e)?"review":["sleeping","idle-doze","mini-sleep","waiting"].includes(e)?"waiting":["mini-peek","waving"].includes(e)?"waving":e==="running-left"||e==="running-right"?e:"idle"}function B(){const[e,n]=r.useState(()=>typeof document>"u"?!0:document.visibilityState!=="hidden");return r.useEffect(()=>{if(typeof document>"u")return;const i=()=>n(document.visibilityState!=="hidden");return document.addEventListener("visibilitychange",i),()=>document.removeEventListener("visibilitychange",i)},[]),e}function H(){const[e,n]=r.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return r.useEffect(()=>{if(typeof window.matchMedia!="function")return;const i=window.matchMedia("(prefers-reduced-motion: reduce)"),t=o=>n(o.matches);return i.addEventListener("change",t),()=>i.removeEventListener("change",t)},[]),e}function N({character:e,pet:n=null,state:i="idle-living",dragState:t=null,size:o=48,className:c="",lookDirectionIndex:g=null}){const d=v(e),u=t==="running-left"||t==="running-right"?t:P(i),a=z[u],s=n?.spriteVersionNumber===2?2:1,f=s===2?11:9,w=s===2&&u==="idle"&&Number.isInteger(g)?(g%16+16)%16:null,h=w==null?a.row:9+Math.floor(w/8),m=w==null?null:w%8,k=H(),y=B(),[b,S]=r.useState(0);r.useEffect(()=>{if(S(0),k||!y||w!=null)return;let E=!1,j=0;const x=R=>{j=window.setTimeout(()=>{if(E)return;const A=(R+1)%a.durations.length;S(A),x(A)},a.durations[R])};return x(0),()=>{E=!0,window.clearTimeout(j)}},[w,k,y,a]);const L=r.useMemo(()=>({width:o*(192/208),height:o,backgroundImage:`url(${n?.assetUrl||`/pets/${d}/spritesheet.webp`})`,backgroundRepeat:"no-repeat",backgroundSize:`800% ${f*100}%`,backgroundPosition:`${(m??b)/7*100}% ${h/(f-1)*100}%`,imageRendering:"pixelated"}),[f,m,h,b,d,n?.assetUrl,o]);return l.jsx("div",{"aria-hidden":"true",className:`pet-atlas-animated ${c}`,style:L})}const U=r.lazy(()=>$(()=>import("./BotAnimated-KONFZbQT.js"),__vite__mapDeps([0,1,2,3])).then(e=>({default:e.BotAnimated}))),_={"idle-living":"idle/living.svg","idle-doze":"idle/doze.svg","idle-follow":"idle/follow.svg","idle-look":"idle/look.svg","idle-yawn":"idle/yawn.svg","idle-collapse":"idle/collapse.svg","working-building":"working/building.svg","working-carrying":"working/carrying.svg","working-conducting":"working/conducting.svg","working-confused":"working/confused.svg","working-debugger":"working/debugger.svg","working-juggling":"working/juggling.svg","working-overheated":"working/overheated.svg","working-pushing":"working/pushing.svg","working-sweeping":"working/sweeping.svg","working-thinking":"working/thinking.svg","working-typing":"working/typing.svg","working-ultrathink":"working/ultrathink.svg","working-wizard":"working/wizard.svg","mini-alert":"mini/alert.svg","mini-crabwalk":"mini/crabwalk.svg","mini-enter":"mini/enter.svg","mini-enter-sleep":"mini/enter-sleep.svg","mini-happy":"mini/happy.svg","mini-idle":"mini/idle.svg","mini-peek":"mini/peek.svg","mini-sleep":"mini/sleep.svg","react-double":"react/double.svg","react-drag":"react/drag.svg","react-left":"react/left.svg","react-right":"react/right.svg","collapse-sleep":"sleep/collapse-sleep.svg",sleeping:"sleep/sleeping.svg",wake:"sleep/wake.svg",disconnected:"status/disconnected.svg",error:"status/error.svg",notification:"status/notification.svg",happy:"happy.svg","static-base":"static-base.svg"},p=new Map;async function q(e){if(p.has(e))return p.get(e);if(typeof fetch!="function")return null;let n;try{n=await fetch(`/clawd/${e}`)}catch{return null}if(!n.ok)return null;const t=(await n.text()).replace(/<svg([^>]*)>/,(o,c)=>`<svg${c.replace(/\s+width="[^"]*"/g,"").replace(/\s+height="[^"]*"/g,"")} width="100%" height="100%">`);return p.set(e,t),t}function F({state:e="idle-living",size:n=48,className:i=""}){const[t,o]=r.useState(""),c=r.useRef(null),d=D()?"static-base":e,u=_[d]||_["static-base"];return r.useEffect(()=>{let a=!1;return q(u).then(s=>{!a&&s&&o(s)}),()=>{a=!0}},[u]),r.useEffect(()=>{const a=c.current?.querySelector("svg");if(a)try{const s=a.getBBox();s.width>0&&s.height>0&&a.setAttribute("viewBox",`${s.x-2} ${s.y-2} ${s.width+4} ${s.height+4}`)}catch{}},[t]),l.jsx("div",{ref:c,"aria-hidden":"true",className:`clawd-animated ${i}`,style:{width:n,height:n,display:"inline-flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},dangerouslySetInnerHTML:{__html:t}})}function G({state:e="idle-living",size:n=48,className:i="",character:t="clawd",pet:o=null,lookDirectionIndex:c=null,botColor:g="auto"}){const d=v(t),u=T(d);return u==="vector"?l.jsx(r.Suspense,{fallback:l.jsx("span",{"aria-hidden":"true",style:{width:n,height:n,display:"inline-block"}}),children:l.jsx(U,{state:e,size:n*M(d),className:i,color:g})}):u==="atlas"?l.jsx(N,{character:d,pet:o,state:e,size:n,className:i,lookDirectionIndex:c}):l.jsx(F,{state:e,size:n*M(d),className:i})}function D(){const[e,n]=r.useState(()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches);return r.useEffect(()=>{if(typeof window.matchMedia!="function")return;const i=window.matchMedia("(prefers-reduced-motion: reduce)"),t=o=>n(o.matches);return i.addEventListener("change",t),()=>i.removeEventListener("change",t)},[]),e}export{G as C,v as n,T as p};
@@ -1 +1 @@
1
- import{m as M,f as D,r,F as E,c as i,j as o,e as I}from"./__vite-browser-external-BE7h4Ou0.js";import{m as j}from"./react-DoVntgJI.js";import{P as L}from"./ProviderIcon-DzpcY7dM.js";import{g as A}from"./skills-api-DldHXWSv.js";import{S as $}from"./search-CQOHSZGo.js";import{u as R}from"./use-reduced-motion-CkoMrH9Y.js";import{A as K}from"./index-CPbjzYzk.js";const q=[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]],O=M("corner-down-left",q),T=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");function Q(){const f=D(),d=R(),[u,g]=r.useState(!1),[x,h]=r.useState(""),[n,l]=r.useState(0),[m,k]=r.useState([]),b=r.useRef(null),w=r.useRef(null);r.useEffect(()=>{const e=t=>{(t.metaKey||t.ctrlKey)&&(t.key==="k"||t.key==="K")&&(t.preventDefault(),g(c=>!c))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),r.useEffect(()=>{if(!u)return;h(""),l(0);const e=requestAnimationFrame(()=>b.current?.focus());return T&&!m.length&&A().then(t=>k(t?.skills||[])).catch(()=>k([])),()=>cancelAnimationFrame(e)},[u,m.length]);const y=r.useMemo(()=>{const e=E().flatMap(a=>a.items.map(c=>({kind:"page",id:`page:${c.id}`,label:c.label,sub:i("cmdk.group.pages"),Icon:c.icon,run:()=>f(c.to)}))),t=(m||[]).map(a=>({kind:"skill",id:`skill:${a.id||a.directory}`,label:a.name||a.directory,sub:a.repoOwner&&a.repoName?`${a.repoOwner}/${a.repoName}`:i("cmdk.group.skills"),provider:(a.targets||[])[0]||"claude",run:()=>f(`/skills?skill=${encodeURIComponent(a.directory||a.id)}`)}));return[...e,...t]},[f,m]),s=r.useMemo(()=>{const e=x.trim().toLowerCase();return e?y.filter(t=>t.label.toLowerCase().includes(e)||String(t.sub||"").toLowerCase().includes(e)):y},[y,x]);r.useEffect(()=>{n>=s.length&&l(s.length?s.length-1:0)},[n,s.length]),r.useEffect(()=>{if(!u)return;w.current?.querySelector(`[data-cmdk-index="${n}"]`)?.scrollIntoView({block:"nearest"})},[n,u]);const p=r.useCallback(()=>g(!1),[]),v=r.useCallback(e=>{e&&(p(),e.run())},[p]),N=e=>{e.key==="ArrowDown"?(e.preventDefault(),l(t=>Math.min(t+1,Math.max(0,s.length-1)))):e.key==="ArrowUp"?(e.preventDefault(),l(t=>Math.max(t-1,0))):e.key==="Enter"?(e.preventDefault(),v(s[n])):e.key==="Escape"&&(e.preventDefault(),p())},C={duration:d?0:.12},S=d?{duration:0}:{type:"spring",stiffness:460,damping:34,mass:.6};return o.jsx(K,{children:u?o.jsxs(j.div,{className:"fixed inset-0 z-[120] flex items-start justify-center px-4 pt-[16vh]",initial:d?!1:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:C,children:[o.jsx("button",{type:"button","aria-label":i("cmdk.close"),onClick:p,className:"absolute inset-0 cursor-default bg-oai-black/40"}),o.jsxs(j.div,{role:"dialog","aria-modal":"true","aria-label":i("cmdk.open_aria"),initial:d?!1:{opacity:0,y:-8,scale:.985},animate:{opacity:1,y:0,scale:1},exit:d?{opacity:0}:{opacity:0,y:-8,scale:.985},transition:S,className:"relative w-full max-w-xl overflow-hidden rounded-2xl border border-oai-gray-200 bg-oai-white shadow-2xl dark:border-oai-gray-800 dark:bg-oai-gray-950",children:[o.jsxs("div",{className:"flex items-center gap-2.5 border-b border-oai-gray-200 px-4 dark:border-oai-gray-800",children:[o.jsx($,{className:"h-4 w-4 shrink-0 text-oai-gray-400","aria-hidden":!0}),o.jsx("input",{ref:b,type:"text",value:x,onChange:e=>{h(e.target.value),l(0)},onKeyDown:N,"aria-label":i("cmdk.placeholder"),"aria-controls":"cmdk-listbox","aria-activedescendant":s[n]?`cmdk-opt-${n}`:void 0,role:"combobox","aria-expanded":"true",placeholder:i("cmdk.placeholder"),className:"h-12 w-full bg-transparent text-sm text-oai-black placeholder:text-oai-gray-400 focus:outline-none dark:text-white"})]}),o.jsx("div",{ref:w,id:"cmdk-listbox",role:"listbox",className:"max-h-[min(56vh,22rem)] overflow-y-auto p-1.5",children:s.length===0?o.jsx("div",{className:"px-3 py-8 text-center text-sm text-oai-gray-500 dark:text-oai-gray-400",children:i("cmdk.empty")}):s.map((e,t)=>{const a=t===n;return o.jsxs("button",{type:"button",role:"option",id:`cmdk-opt-${t}`,"data-cmdk-index":t,"aria-selected":a,onMouseMove:()=>l(t),onClick:()=>v(e),className:I("flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm transition-colors",a?"bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800/70 dark:text-white":"text-oai-gray-700 dark:text-oai-gray-200"),children:[o.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center text-oai-gray-500 dark:text-oai-gray-400",children:e.kind==="skill"?o.jsx(L,{provider:e.provider,size:16}):o.jsx(e.Icon,{className:"h-4 w-4","aria-hidden":!0})}),o.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:e.label}),o.jsx("span",{className:"shrink-0 truncate text-xs text-oai-gray-400 dark:text-oai-gray-500",children:e.sub}),a?o.jsx(O,{className:"h-3.5 w-3.5 shrink-0 text-oai-gray-400","aria-hidden":!0}):null]},e.id)})})]})]}):null})}export{Q as CommandPalette};
1
+ import{m as M,f as D,r,F as E,c as i,j as o,e as I}from"./__vite-browser-external-WKiEWJ30.js";import{m as j}from"./react-us685QUG.js";import{P as L}from"./ProviderIcon-PauvxgNb.js";import{g as A}from"./skills-api-CFSZ441M.js";import{S as $}from"./search-NcbnjXYq.js";import{u as R}from"./use-reduced-motion-DDhy4yg_.js";import{A as K}from"./index-CEl88_eC.js";const q=[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]],O=M("corner-down-left",q),T=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1");function Q(){const f=D(),d=R(),[u,g]=r.useState(!1),[x,h]=r.useState(""),[n,l]=r.useState(0),[m,k]=r.useState([]),b=r.useRef(null),w=r.useRef(null);r.useEffect(()=>{const e=t=>{(t.metaKey||t.ctrlKey)&&(t.key==="k"||t.key==="K")&&(t.preventDefault(),g(c=>!c))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),r.useEffect(()=>{if(!u)return;h(""),l(0);const e=requestAnimationFrame(()=>b.current?.focus());return T&&!m.length&&A().then(t=>k(t?.skills||[])).catch(()=>k([])),()=>cancelAnimationFrame(e)},[u,m.length]);const y=r.useMemo(()=>{const e=E().flatMap(a=>a.items.map(c=>({kind:"page",id:`page:${c.id}`,label:c.label,sub:i("cmdk.group.pages"),Icon:c.icon,run:()=>f(c.to)}))),t=(m||[]).map(a=>({kind:"skill",id:`skill:${a.id||a.directory}`,label:a.name||a.directory,sub:a.repoOwner&&a.repoName?`${a.repoOwner}/${a.repoName}`:i("cmdk.group.skills"),provider:(a.targets||[])[0]||"claude",run:()=>f(`/skills?skill=${encodeURIComponent(a.directory||a.id)}`)}));return[...e,...t]},[f,m]),s=r.useMemo(()=>{const e=x.trim().toLowerCase();return e?y.filter(t=>t.label.toLowerCase().includes(e)||String(t.sub||"").toLowerCase().includes(e)):y},[y,x]);r.useEffect(()=>{n>=s.length&&l(s.length?s.length-1:0)},[n,s.length]),r.useEffect(()=>{if(!u)return;w.current?.querySelector(`[data-cmdk-index="${n}"]`)?.scrollIntoView({block:"nearest"})},[n,u]);const p=r.useCallback(()=>g(!1),[]),v=r.useCallback(e=>{e&&(p(),e.run())},[p]),N=e=>{e.key==="ArrowDown"?(e.preventDefault(),l(t=>Math.min(t+1,Math.max(0,s.length-1)))):e.key==="ArrowUp"?(e.preventDefault(),l(t=>Math.max(t-1,0))):e.key==="Enter"?(e.preventDefault(),v(s[n])):e.key==="Escape"&&(e.preventDefault(),p())},C={duration:d?0:.12},S=d?{duration:0}:{type:"spring",stiffness:460,damping:34,mass:.6};return o.jsx(K,{children:u?o.jsxs(j.div,{className:"fixed inset-0 z-[120] flex items-start justify-center px-4 pt-[16vh]",initial:d?!1:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:C,children:[o.jsx("button",{type:"button","aria-label":i("cmdk.close"),onClick:p,className:"absolute inset-0 cursor-default bg-oai-black/40"}),o.jsxs(j.div,{role:"dialog","aria-modal":"true","aria-label":i("cmdk.open_aria"),initial:d?!1:{opacity:0,y:-8,scale:.985},animate:{opacity:1,y:0,scale:1},exit:d?{opacity:0}:{opacity:0,y:-8,scale:.985},transition:S,className:"relative w-full max-w-xl overflow-hidden rounded-2xl border border-oai-gray-200 bg-oai-white shadow-2xl dark:border-oai-gray-800 dark:bg-oai-gray-950",children:[o.jsxs("div",{className:"flex items-center gap-2.5 border-b border-oai-gray-200 px-4 dark:border-oai-gray-800",children:[o.jsx($,{className:"h-4 w-4 shrink-0 text-oai-gray-400","aria-hidden":!0}),o.jsx("input",{ref:b,type:"text",value:x,onChange:e=>{h(e.target.value),l(0)},onKeyDown:N,"aria-label":i("cmdk.placeholder"),"aria-controls":"cmdk-listbox","aria-activedescendant":s[n]?`cmdk-opt-${n}`:void 0,role:"combobox","aria-expanded":"true",placeholder:i("cmdk.placeholder"),className:"h-12 w-full bg-transparent text-sm text-oai-black placeholder:text-oai-gray-400 focus:outline-none dark:text-white"})]}),o.jsx("div",{ref:w,id:"cmdk-listbox",role:"listbox",className:"max-h-[min(56vh,22rem)] overflow-y-auto p-1.5",children:s.length===0?o.jsx("div",{className:"px-3 py-8 text-center text-sm text-oai-gray-500 dark:text-oai-gray-400",children:i("cmdk.empty")}):s.map((e,t)=>{const a=t===n;return o.jsxs("button",{type:"button",role:"option",id:`cmdk-opt-${t}`,"data-cmdk-index":t,"aria-selected":a,onMouseMove:()=>l(t),onClick:()=>v(e),className:I("flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm transition-colors",a?"bg-oai-gray-100 text-oai-black dark:bg-oai-gray-800/70 dark:text-white":"text-oai-gray-700 dark:text-oai-gray-200"),children:[o.jsx("span",{className:"flex h-5 w-5 shrink-0 items-center justify-center text-oai-gray-500 dark:text-oai-gray-400",children:e.kind==="skill"?o.jsx(L,{provider:e.provider,size:16}):o.jsx(e.Icon,{className:"h-4 w-4","aria-hidden":!0})}),o.jsx("span",{className:"min-w-0 flex-1 truncate font-medium",children:e.label}),o.jsx("span",{className:"shrink-0 truncate text-xs text-oai-gray-400 dark:text-oai-gray-500",children:e.sub}),a?o.jsx(O,{className:"h-3.5 w-3.5 shrink-0 text-oai-gray-400","aria-hidden":!0}):null]},e.id)})})]})]}):null})}export{Q as CommandPalette};
@@ -1 +1 @@
1
- import{m as L,j as e,$ as R,n as P,r as D,c as n,X as z,l as S}from"./__vite-browser-external-BE7h4Ou0.js";import{m as M}from"./react-DoVntgJI.js";import{A as K,W as U}from"./icons-DXrj24F-.js";import{u as B}from"./useTokenFormat-Cbj7RbpO.js";import{P as F}from"./ProviderIcon-DzpcY7dM.js";import{T as G}from"./TrendMonitor-DUenZHaf.js";import{T as W}from"./AchievementBadge-BJRW8Tr1.js";import{T as V}from"./terminal-Cvwjd-k9.js";import{D as X,a as Y,b as Z,c as H,d as q,e as J}from"./DialogTitle-CiPqqI8_.js";import{D as Q}from"./DialogDescription-DyaMB47K.js";import{D as ee}from"./DialogClose-DnSGAKIz.js";import"./useCurrency-DyJG5xmN.js";import"./chevron-right-CQCceB2r.js";import"./PopoverPopup-BWZpTgX_.js";import"./useScrollLock-BEpIOp1F.js";import"./store-D9UN_t1a.js";import"./ToolbarRootContext-beEFe6Jn.js";import"./maximize-2-BQkNBiZ-.js";import"./use-reduced-motion-CkoMrH9Y.js";import"./zap-CUYx_JsZ.js";import"./flame-PKC57o-h.js";const ae=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],te=L("trending-down",ae),O=10,_={input:"var(--community-token-input)",cache_read:"var(--community-token-cache-read)",cache_write:"var(--community-token-cache-write)",output:"var(--community-token-output)",reasoning:"var(--community-token-reasoning)"},re={CLAUDE:"var(--community-claude)",CODEX:"var(--community-codex)",GEMINI:"var(--community-gemini)",CURSOR:"var(--community-cursor)",OPENCODE:"var(--community-opencode)",HERMES:"var(--community-hermes)",KIMI:"var(--community-kimi)",MIMO:"var(--community-mimo)",COPILOT:"var(--community-copilot)",KIRO:"var(--community-kiro)",GROK:"var(--community-grok)",DEEPSEEK:"var(--community-deepseek)",ZCODE:"var(--community-zcode)",WORKBUDDY:"var(--community-workbuddy)",MINIMAX:"var(--community-minimax)",DROID:"var(--community-droid)"};function ie(t){return re[String(t||"").toUpperCase()]||"var(--community-muted)"}const se=[[/claude|fable|opus|sonnet|haiku/,"CLAUDE"],[/gpt|codex|o3|o4/,"CODEX"],[/gemini/,"GEMINI"],[/composer|cursor/,"CURSOR"],[/kimi/,"KIMI"],[/mimo/,"MIMO"],[/copilot/,"COPILOT"],[/kiro/,"KIRO"],[/grok/,"GROK"],[/deepseek/,"DEEPSEEK"],[/glm/,"ZCODE"],[/hy3/,"WORKBUDDY"],[/minimax/,"MINIMAX"]],g=["overview","providers","community","models"];function oe(t){const s=String(t||"").toLowerCase(),a=se.find(([i])=>i.test(s));return a?a[1]:""}function u(t){const s=Number(t);return Number.isFinite(s)?`${s.toFixed(1)}%`:"—"}function p(t){return S(Number(t)||0)}function ne(t){return t?new Date(`${t}T00:00:00Z`).toLocaleDateString(void 0,{month:"short",day:"numeric",timeZone:"UTC"}):""}function k(){return e.jsx("div",{className:"flex h-full min-h-40 items-center justify-center text-xs text-oai-gray-400",children:n("leaderboard.community.modal.no_data")})}function b({children:t,detail:s}){return e.jsxs("div",{className:"mb-3 flex items-baseline justify-between gap-4",children:[e.jsx("h3",{className:"text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400",children:t}),s?e.jsx("span",{className:"text-xs text-oai-gray-400",children:s}):null]})}function C({value:t,label:s}){const a=Number(t);if(!Number.isFinite(a))return null;const i=Math.sign(a)!==-1,r=i?W:te;return e.jsxs("span",{className:`inline-flex items-center gap-1 text-xs font-medium tabular-nums ${i?"text-emerald-600 dark:text-emerald-400":"text-rose-600 dark:text-rose-400"}`,title:s,children:[e.jsx(r,{className:"size-3","aria-hidden":"true"}),i?"+":"",a.toFixed(1),"%"]})}function j({label:t,value:s,title:a,delta:i,deltaLabel:r}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"truncate text-xs font-medium text-oai-gray-500 dark:text-oai-gray-400",children:t}),e.jsxs("div",{className:"mt-1 flex min-w-0 items-baseline gap-2",children:[e.jsx("span",{className:"truncate text-xl font-semibold leading-none tracking-tight text-oai-black tabular-nums dark:text-white",title:a,children:s}),e.jsx(C,{value:i,label:r})]})]})}function I({fillWidth:t,share:s,color:a="var(--oai-blue)",ariaLabel:i,dataAttrs:r,children:o}){return e.jsxs("div",{...r,className:"group relative grid min-h-11 grid-cols-[minmax(0,1fr)_auto] items-center gap-3 overflow-hidden px-2.5 transition-colors hover:bg-oai-gray-50 dark:hover:bg-oai-gray-900/60",children:[e.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-0 opacity-[0.15] transition-opacity group-hover:opacity-[0.22] dark:opacity-[0.24] dark:group-hover:opacity-[0.32]",style:{width:`${t}%`,backgroundColor:a},role:"progressbar","aria-label":i,"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":Number(s)||0}),o]})}function A({rank:t,provider:s,name:a,fillWidth:i,share:r,tokens:o,tokensTitle:l,dataAttrs:c}){return e.jsxs(I,{fillWidth:i,share:r,color:ie(s),ariaLabel:`${a} ${u(r)}`,dataAttrs:c,children:[e.jsxs("div",{className:"relative flex min-w-0 items-center gap-2.5",children:[e.jsx("span",{className:`w-5 shrink-0 text-xs tabular-nums ${t<=3?"font-semibold text-oai-gray-700 dark:text-oai-gray-200":"text-oai-gray-400"}`,children:t}),e.jsx("span",{className:"grid size-6 shrink-0 place-items-center text-oai-gray-700 dark:text-oai-gray-200",children:e.jsx(F,{provider:s,size:15})}),e.jsx("span",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",title:a,children:a})]}),e.jsxs("div",{className:"relative min-w-[4.5rem] text-right",children:[e.jsx("div",{className:"text-xs font-semibold text-oai-black tabular-nums dark:text-white",title:l,children:o}),e.jsx("div",{className:"text-xs text-oai-gray-500 tabular-nums dark:text-oai-gray-400",children:u(r)})]})]})}function le({rows:t,formatTokensTooltip:s}){return t.length?e.jsxs("div",{className:"mt-7",children:[e.jsx(b,{children:n("leaderboard.community.modal.token_mix")}),e.jsx("div",{className:"flex h-1.5 overflow-hidden bg-oai-gray-100 dark:bg-oai-gray-800",children:t.map(a=>e.jsx("div",{style:{width:`${Math.max(Number(a.share)||0,0)}%`,backgroundColor:_[a.key]||"var(--community-muted)"},title:`${n(`leaderboard.community.modal.token_mix.${a.key}`)} · ${u(a.share)}`},a.key))}),e.jsx("div",{className:"mt-3 flex flex-wrap gap-x-5 gap-y-1.5",children:t.map(a=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",title:s(a.tokens),children:[e.jsx("span",{className:"size-2",style:{backgroundColor:_[a.key]||"var(--community-muted)"}}),n(`leaderboard.community.modal.token_mix.${a.key}`),e.jsx("span",{className:"tabular-nums text-oai-gray-700 dark:text-oai-gray-200",children:u(a.share)})]},a.key))})]}):null}function f({label:t,value:s,title:a,delta:i,deltaLabel:r,className:o=""}){return e.jsxs("div",{className:`min-w-0 ${o}`,children:[e.jsx("div",{className:"truncate text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t}),e.jsxs("div",{className:"mt-1 flex min-w-0 items-baseline gap-2",children:[e.jsx("span",{className:"truncate text-base font-semibold leading-none tracking-tight tabular-nums text-oai-black dark:text-white",title:a,children:s}),e.jsx(C,{value:i,label:r})]})]})}function de({trendRows:t,activeDevelopers30d:s,developerGrowthPct:a,formatTokens:i,formatTokensTooltip:r}){if(!t.length)return null;const o=t.reduce((m,h)=>m+h.value,0),l=t.reduce((m,h)=>m.value<h.value?h:m,t[0]),c=o/t.length;return e.jsxs("div",{className:"mt-5 grid grid-cols-3 divide-x divide-oai-gray-100 border-y border-oai-gray-100 py-3.5 dark:divide-oai-gray-800/80 dark:border-oai-gray-800/80",children:[e.jsx(f,{className:"pr-4",label:n("leaderboard.community.modal.daily_average"),value:i(c),title:r(c)}),e.jsx(f,{className:"px-4",label:`${n("leaderboard.community.modal.peak_day")} · ${l.day}`,value:i(l.value),title:r(l.value)}),e.jsx(f,{className:"pl-4",label:n("leaderboard.community.modal.active_30d"),value:p(s),title:Number(s).toLocaleString(),delta:a,deltaLabel:n("leaderboard.community.modal.vs_previous_week")})]})}function me({trendRows:t,mix:s,activeDevelopers30d:a,developerGrowthPct:i,formatTokens:r,formatTokensTooltip:o}){return!t.length&&!s.length?e.jsx(k,{}):e.jsxs("div",{children:[e.jsx(b,{detail:n("leaderboard.community.modal.utc_note"),children:n("leaderboard.community.modal.community_activity")}),e.jsx(G,{embedded:!0,rows:t,from:t[0]?.day,to:t.at(-1)?.day,chartHeightClass:"h-44"}),e.jsx(de,{trendRows:t,activeDevelopers30d:a,developerGrowthPct:i,formatTokens:r,formatTokensTooltip:o}),e.jsx(le,{rows:s,formatTokensTooltip:o})]})}function ce({rows:t,maxShare:s,formatTokens:a,formatTokensTooltip:i}){return t.length?e.jsx("div",{className:"space-y-0.5",children:t.map((r,o)=>e.jsx(A,{rank:o+1,dataAttrs:{"data-provider-rank":o+1,"data-provider-name":r.name},provider:String(r.name).toUpperCase(),name:r.name,fillWidth:Math.max((Number(r.share)||0)/s*100,2),share:r.share,tokens:a(r.tokens),tokensTitle:i(r.tokens)},r.name))}):e.jsx(k,{})}function xe({rows:t,maxShare:s,formatTokens:a,formatTokensTooltip:i}){return t.length?e.jsx("div",{className:"space-y-0.5",children:t.map((r,o)=>{const l=Number(r.share)||0;return e.jsx(A,{rank:o+1,dataAttrs:{"data-model-rank":o+1,"data-model-name":r.name},provider:oe(r.name),name:r.name,fillWidth:Math.max(l/s*100,2),share:l,tokens:a(r.tokens),tokensTitle:i(r.tokens)},r.name)})}):e.jsx(k,{})}function ue({name:t}){const s=String(t||"").toLowerCase();return s==="darwin"?e.jsx(K,{className:"size-3.5"}):s==="win32"?e.jsx(U,{className:"size-3.5"}):e.jsx(V,{className:"size-4","aria-hidden":"true"})}const he=.175,ye=.3;function ge({bands:t,formatTokensTooltip:s}){const a=t.reduce((r,o)=>Math.max(r,Number(o.developer_share)||0),0)||1,i=r=>`${n(`leaderboard.community.modal.band.${r.key}`)} · ${n("leaderboard.community.modal.developer_count",{count:p(r.developers)})} (${s(r.tokens)})`;return e.jsxs("div",{children:[e.jsx("div",{className:"flex gap-2 border-b border-oai-gray-200 dark:border-oai-gray-800",children:t.map((r,o)=>{const l=Number(r.developer_share)||0,c=Math.max(l/a*80,2);return e.jsxs("div",{className:"relative h-32 min-w-0 flex-1",title:i(r),children:[e.jsx("div",{role:"progressbar","aria-label":n("leaderboard.community.modal.developer_share_title",{share:u(l)}),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":l,className:"absolute inset-x-0 bottom-0",style:{height:`${c}%`,backgroundColor:"var(--oai-blue)",opacity:ye+o*he}}),e.jsx("div",{className:"absolute inset-x-0 text-center text-xs font-medium tabular-nums text-oai-gray-700 dark:text-oai-gray-200",style:{bottom:`calc(${c}% + 4px)`},children:u(l)})]},r.key)})}),e.jsx("div",{className:"mt-2 flex gap-2",children:t.map(r=>e.jsxs("div",{className:"min-w-0 flex-1 text-center",title:i(r),children:[e.jsx("div",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",children:n(`leaderboard.community.modal.band.${r.key}`)}),e.jsx("div",{className:"truncate text-xs tabular-nums text-oai-gray-500 dark:text-oai-gray-400",children:p(r.developers)})]},r.key))})]})}function pe({bands:t,platforms:s,formatTokensTooltip:a}){return!t.length&&!s.length?e.jsx(k,{}):e.jsxs("div",{className:"space-y-8",children:[t.length?e.jsxs("div",{children:[e.jsx(b,{children:n("leaderboard.community.modal.usage_distribution")}),e.jsx(ge,{bands:t,formatTokensTooltip:a})]}):null,s.length?e.jsxs("div",{children:[e.jsx(b,{children:n("leaderboard.community.modal.platforms")}),e.jsx("div",{className:"space-y-0.5",children:s.map(i=>e.jsxs(I,{fillWidth:Math.max(Number(i.share)||0,1),share:i.share,ariaLabel:`${n(`leaderboard.community.modal.platform.${i.name}`)} ${u(i.share)}`,children:[e.jsxs("div",{className:"relative flex min-w-0 items-center gap-2.5",children:[e.jsx("span",{className:"grid size-6 shrink-0 place-items-center text-oai-gray-700 dark:text-oai-gray-200",children:e.jsx(ue,{name:i.name})}),e.jsx("span",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",children:n(`leaderboard.community.modal.platform.${i.name}`)})]}),e.jsxs("div",{className:"relative min-w-[4.5rem] text-right",children:[e.jsx("div",{className:"text-xs font-semibold text-oai-black tabular-nums dark:text-white",children:u(i.share)}),e.jsx("div",{className:"text-xs text-oai-gray-500 tabular-nums dark:text-oai-gray-400",title:Number(i.machines||0).toLocaleString(),children:n("leaderboard.community.modal.machine_count",{count:p(i.machines)})})]})]},i.name))})]}):null]})}function ve({isOpen:t,onClose:s,communityStats:a}){const{formatTokens:i,formatTokensTooltip:r}=B(),[o,l]=D.useState("overview"),c=a?.status==="ready",m=D.useMemo(()=>{if(!c)return null;const d=(Array.isArray(a.providers)?a.providers:[]).slice(0,O),x=(Array.isArray(a.topModels)?a.topModels:[]).slice(0,O),y=v=>v.reduce((E,$)=>Math.max(E,Number($.share)||0),0)||1;return{providers:d,models:x,providersMaxShare:y(d),modelsMaxShare:y(x),trendRows:(Array.isArray(a.dailyGrowth)?a.dailyGrowth:[]).map(v=>({day:ne(v.day),value:Number(v.tokens)||0})),mix:Array.isArray(a.tokenMix)?a.tokenMix:[],bands:Array.isArray(a.userDistribution)?a.userDistribution:[],platforms:Array.isArray(a.platforms)?a.platforms:[]}},[c,a]);if(!m)return null;const h=Number(a.tokenFloor)||0,N=Number(a.activeDevelopersTotal)||Number(a.totalEntries)||0,w=Number(a.tokens30d)||0,T=d=>{if(d.key!=="ArrowRight"&&d.key!=="ArrowLeft")return;d.preventDefault();const x=d.key==="ArrowRight"?1:-1,y=g[(g.indexOf(o)+x+g.length)%g.length];l(y),d.currentTarget.querySelector(`[data-tab-id="${y}"]`)?.focus()};return e.jsx(X,{open:t,onOpenChange:d=>!d&&s(),children:e.jsxs(Y,{children:[e.jsx(Z,{className:"fixed inset-0 z-[100] bg-black/50 backdrop-blur-[3px] transition-opacity duration-200 ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0"}),e.jsx(H,{className:"fixed inset-0 z-[101] flex items-center justify-center p-2 sm:p-5",children:e.jsxs(q,{className:"relative flex h-[min(42rem,92vh)] w-full max-w-xl flex-col overflow-hidden rounded-2xl bg-white shadow-2xl ring-1 ring-black/10 transition-[opacity,transform] duration-[220ms] ease-[cubic-bezier(0.16,1,0.3,1)] data-[ending-style]:translate-y-3 data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0 data-[starting-style]:translate-y-3 data-[starting-style]:scale-[0.98] data-[starting-style]:opacity-0 dark:bg-oai-gray-950 dark:ring-white/10",children:[e.jsxs("header",{"data-testid":"community-metrics-header",className:"shrink-0 px-5 pt-5 sm:px-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(J,{className:"text-lg font-semibold tracking-[-0.02em] text-oai-black dark:text-white",children:n("leaderboard.community.modal.title")}),e.jsx(Q,{className:"sr-only",children:n("leaderboard.community.modal.description")})]}),e.jsx(ee,{className:"-mr-1 -mt-1 grid size-8 place-items-center rounded-full text-oai-gray-400 transition-colors hover:bg-black/5 hover:text-oai-black dark:hover:bg-white/10 dark:hover:text-white","aria-label":n("shared.dialog.close"),children:e.jsx(z,{className:"size-4"})})]}),e.jsxs("div",{className:"mt-4 grid grid-cols-3 gap-x-5",children:[e.jsx(j,{label:n("leaderboard.community.modal.total_tokens"),value:i(h),title:r(h)}),e.jsx(j,{label:n("leaderboard.community.modal.tokens_30d"),value:i(w),title:r(w),delta:a.tokenGrowthPct,deltaLabel:n("leaderboard.community.modal.vs_previous_week")}),e.jsx(j,{label:n("leaderboard.community.modal.contributors"),value:p(N),title:N.toLocaleString()})]}),e.jsx("div",{className:"mt-4 flex items-end overflow-x-auto border-b border-oai-gray-100 dark:border-oai-gray-900",role:"tablist","aria-label":n("leaderboard.community.modal.views"),onKeyDown:T,children:g.map(d=>{const x=o===d;return e.jsxs("button",{type:"button",role:"tab","data-tab-id":d,"aria-selected":x,tabIndex:x?0:-1,onClick:()=>l(d),className:`relative mr-5 h-10 shrink-0 text-sm font-medium transition-colors last:mr-0 ${x?"text-oai-black dark:text-white":"text-oai-gray-500 hover:text-oai-gray-700 dark:text-oai-gray-400 dark:hover:text-oai-gray-200"}`,children:[n(`leaderboard.community.modal.tab.${d}`),x?e.jsx(M.span,{layoutId:"community-metrics-tab-underline",className:"absolute inset-x-0 -bottom-px h-0.5 rounded-full bg-oai-black dark:bg-white",transition:{type:"spring",stiffness:420,damping:34}}):null]},d)})})]}),e.jsx("div",{"data-testid":"community-metrics-content",className:"min-h-0 flex-1 overflow-y-auto px-5 py-5 sm:px-6",children:e.jsxs(M.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},transition:{duration:.18,ease:[.16,1,.3,1]},className:"h-full",children:[o==="overview"?e.jsx(me,{trendRows:m.trendRows,mix:m.mix,activeDevelopers30d:Number(a.activeDevelopers30d)||0,developerGrowthPct:a.developerGrowthPct,formatTokens:i,formatTokensTooltip:r}):null,o==="providers"?e.jsx(ce,{rows:m.providers,maxShare:m.providersMaxShare,formatTokens:i,formatTokensTooltip:r}):null,o==="community"?e.jsx(pe,{bands:m.bands,platforms:m.platforms,formatTokensTooltip:r}):null,o==="models"?e.jsx(xe,{rows:m.models,maxShare:m.modelsMaxShare,formatTokens:i,formatTokensTooltip:r}):null]},o)})]})})]})})}function Ke(t){return e.jsx(R,{mode:P.COMPACT,children:e.jsx(ve,{...t})})}export{Ke as CommunityStatsModal};
1
+ import{m as L,j as e,$ as R,n as P,r as D,c as n,X as z,l as S}from"./__vite-browser-external-WKiEWJ30.js";import{m as M}from"./react-us685QUG.js";import{A as K,W as U}from"./icons-DxM91e9c.js";import{u as B}from"./useTokenFormat-BR7kJQ6x.js";import{P as F}from"./ProviderIcon-PauvxgNb.js";import{T as G}from"./TrendMonitor-Dj2Uxs9x.js";import{T as W}from"./AchievementBadge-Bl3bWjZw.js";import{T as V}from"./terminal-D3L94ngT.js";import{D as X,a as Y,b as Z,c as H,d as q,e as J}from"./DialogTitle-eIgptOU-.js";import{D as Q}from"./DialogDescription-ZS29ikF4.js";import{D as ee}from"./DialogClose-B1j73B1g.js";import"./useCurrency-C6HKlFA6.js";import"./chevron-right-DH93vlVo.js";import"./PopoverPopup-Bz3yRvv6.js";import"./useScrollLock-CZ1Na38Y.js";import"./store-B-d1Nz34.js";import"./ToolbarRootContext-CAsiI0PJ.js";import"./maximize-2-DlTJ_PyX.js";import"./use-reduced-motion-DDhy4yg_.js";import"./zap-BcwbN9j5.js";import"./flame-DFEEnwot.js";const ae=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],te=L("trending-down",ae),O=10,_={input:"var(--community-token-input)",cache_read:"var(--community-token-cache-read)",cache_write:"var(--community-token-cache-write)",output:"var(--community-token-output)",reasoning:"var(--community-token-reasoning)"},re={CLAUDE:"var(--community-claude)",CODEX:"var(--community-codex)",GEMINI:"var(--community-gemini)",CURSOR:"var(--community-cursor)",OPENCODE:"var(--community-opencode)",HERMES:"var(--community-hermes)",KIMI:"var(--community-kimi)",MIMO:"var(--community-mimo)",COPILOT:"var(--community-copilot)",KIRO:"var(--community-kiro)",GROK:"var(--community-grok)",DEEPSEEK:"var(--community-deepseek)",ZCODE:"var(--community-zcode)",WORKBUDDY:"var(--community-workbuddy)",MINIMAX:"var(--community-minimax)",DROID:"var(--community-droid)"};function ie(t){return re[String(t||"").toUpperCase()]||"var(--community-muted)"}const se=[[/claude|fable|opus|sonnet|haiku/,"CLAUDE"],[/gpt|codex|o3|o4/,"CODEX"],[/gemini/,"GEMINI"],[/composer|cursor/,"CURSOR"],[/kimi/,"KIMI"],[/mimo/,"MIMO"],[/copilot/,"COPILOT"],[/kiro/,"KIRO"],[/grok/,"GROK"],[/deepseek/,"DEEPSEEK"],[/glm/,"ZCODE"],[/hy3/,"WORKBUDDY"],[/minimax/,"MINIMAX"]],g=["overview","providers","community","models"];function oe(t){const s=String(t||"").toLowerCase(),a=se.find(([i])=>i.test(s));return a?a[1]:""}function u(t){const s=Number(t);return Number.isFinite(s)?`${s.toFixed(1)}%`:"—"}function p(t){return S(Number(t)||0)}function ne(t){return t?new Date(`${t}T00:00:00Z`).toLocaleDateString(void 0,{month:"short",day:"numeric",timeZone:"UTC"}):""}function k(){return e.jsx("div",{className:"flex h-full min-h-40 items-center justify-center text-xs text-oai-gray-400",children:n("leaderboard.community.modal.no_data")})}function b({children:t,detail:s}){return e.jsxs("div",{className:"mb-3 flex items-baseline justify-between gap-4",children:[e.jsx("h3",{className:"text-xs font-medium uppercase tracking-wide text-oai-gray-500 dark:text-oai-gray-400",children:t}),s?e.jsx("span",{className:"text-xs text-oai-gray-400",children:s}):null]})}function C({value:t,label:s}){const a=Number(t);if(!Number.isFinite(a))return null;const i=Math.sign(a)!==-1,r=i?W:te;return e.jsxs("span",{className:`inline-flex items-center gap-1 text-xs font-medium tabular-nums ${i?"text-emerald-600 dark:text-emerald-400":"text-rose-600 dark:text-rose-400"}`,title:s,children:[e.jsx(r,{className:"size-3","aria-hidden":"true"}),i?"+":"",a.toFixed(1),"%"]})}function j({label:t,value:s,title:a,delta:i,deltaLabel:r}){return e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"truncate text-xs font-medium text-oai-gray-500 dark:text-oai-gray-400",children:t}),e.jsxs("div",{className:"mt-1 flex min-w-0 items-baseline gap-2",children:[e.jsx("span",{className:"truncate text-xl font-semibold leading-none tracking-tight text-oai-black tabular-nums dark:text-white",title:a,children:s}),e.jsx(C,{value:i,label:r})]})]})}function I({fillWidth:t,share:s,color:a="var(--oai-blue)",ariaLabel:i,dataAttrs:r,children:o}){return e.jsxs("div",{...r,className:"group relative grid min-h-11 grid-cols-[minmax(0,1fr)_auto] items-center gap-3 overflow-hidden px-2.5 transition-colors hover:bg-oai-gray-50 dark:hover:bg-oai-gray-900/60",children:[e.jsx("div",{className:"pointer-events-none absolute inset-y-0 left-0 opacity-[0.15] transition-opacity group-hover:opacity-[0.22] dark:opacity-[0.24] dark:group-hover:opacity-[0.32]",style:{width:`${t}%`,backgroundColor:a},role:"progressbar","aria-label":i,"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":Number(s)||0}),o]})}function A({rank:t,provider:s,name:a,fillWidth:i,share:r,tokens:o,tokensTitle:l,dataAttrs:c}){return e.jsxs(I,{fillWidth:i,share:r,color:ie(s),ariaLabel:`${a} ${u(r)}`,dataAttrs:c,children:[e.jsxs("div",{className:"relative flex min-w-0 items-center gap-2.5",children:[e.jsx("span",{className:`w-5 shrink-0 text-xs tabular-nums ${t<=3?"font-semibold text-oai-gray-700 dark:text-oai-gray-200":"text-oai-gray-400"}`,children:t}),e.jsx("span",{className:"grid size-6 shrink-0 place-items-center text-oai-gray-700 dark:text-oai-gray-200",children:e.jsx(F,{provider:s,size:15})}),e.jsx("span",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",title:a,children:a})]}),e.jsxs("div",{className:"relative min-w-[4.5rem] text-right",children:[e.jsx("div",{className:"text-xs font-semibold text-oai-black tabular-nums dark:text-white",title:l,children:o}),e.jsx("div",{className:"text-xs text-oai-gray-500 tabular-nums dark:text-oai-gray-400",children:u(r)})]})]})}function le({rows:t,formatTokensTooltip:s}){return t.length?e.jsxs("div",{className:"mt-7",children:[e.jsx(b,{children:n("leaderboard.community.modal.token_mix")}),e.jsx("div",{className:"flex h-1.5 overflow-hidden bg-oai-gray-100 dark:bg-oai-gray-800",children:t.map(a=>e.jsx("div",{style:{width:`${Math.max(Number(a.share)||0,0)}%`,backgroundColor:_[a.key]||"var(--community-muted)"},title:`${n(`leaderboard.community.modal.token_mix.${a.key}`)} · ${u(a.share)}`},a.key))}),e.jsx("div",{className:"mt-3 flex flex-wrap gap-x-5 gap-y-1.5",children:t.map(a=>e.jsxs("span",{className:"inline-flex items-center gap-1.5 text-xs text-oai-gray-500 dark:text-oai-gray-400",title:s(a.tokens),children:[e.jsx("span",{className:"size-2",style:{backgroundColor:_[a.key]||"var(--community-muted)"}}),n(`leaderboard.community.modal.token_mix.${a.key}`),e.jsx("span",{className:"tabular-nums text-oai-gray-700 dark:text-oai-gray-200",children:u(a.share)})]},a.key))})]}):null}function f({label:t,value:s,title:a,delta:i,deltaLabel:r,className:o=""}){return e.jsxs("div",{className:`min-w-0 ${o}`,children:[e.jsx("div",{className:"truncate text-xs text-oai-gray-500 dark:text-oai-gray-400",children:t}),e.jsxs("div",{className:"mt-1 flex min-w-0 items-baseline gap-2",children:[e.jsx("span",{className:"truncate text-base font-semibold leading-none tracking-tight tabular-nums text-oai-black dark:text-white",title:a,children:s}),e.jsx(C,{value:i,label:r})]})]})}function de({trendRows:t,activeDevelopers30d:s,developerGrowthPct:a,formatTokens:i,formatTokensTooltip:r}){if(!t.length)return null;const o=t.reduce((m,h)=>m+h.value,0),l=t.reduce((m,h)=>m.value<h.value?h:m,t[0]),c=o/t.length;return e.jsxs("div",{className:"mt-5 grid grid-cols-3 divide-x divide-oai-gray-100 border-y border-oai-gray-100 py-3.5 dark:divide-oai-gray-800/80 dark:border-oai-gray-800/80",children:[e.jsx(f,{className:"pr-4",label:n("leaderboard.community.modal.daily_average"),value:i(c),title:r(c)}),e.jsx(f,{className:"px-4",label:`${n("leaderboard.community.modal.peak_day")} · ${l.day}`,value:i(l.value),title:r(l.value)}),e.jsx(f,{className:"pl-4",label:n("leaderboard.community.modal.active_30d"),value:p(s),title:Number(s).toLocaleString(),delta:a,deltaLabel:n("leaderboard.community.modal.vs_previous_week")})]})}function me({trendRows:t,mix:s,activeDevelopers30d:a,developerGrowthPct:i,formatTokens:r,formatTokensTooltip:o}){return!t.length&&!s.length?e.jsx(k,{}):e.jsxs("div",{children:[e.jsx(b,{detail:n("leaderboard.community.modal.utc_note"),children:n("leaderboard.community.modal.community_activity")}),e.jsx(G,{embedded:!0,rows:t,from:t[0]?.day,to:t.at(-1)?.day,chartHeightClass:"h-44"}),e.jsx(de,{trendRows:t,activeDevelopers30d:a,developerGrowthPct:i,formatTokens:r,formatTokensTooltip:o}),e.jsx(le,{rows:s,formatTokensTooltip:o})]})}function ce({rows:t,maxShare:s,formatTokens:a,formatTokensTooltip:i}){return t.length?e.jsx("div",{className:"space-y-0.5",children:t.map((r,o)=>e.jsx(A,{rank:o+1,dataAttrs:{"data-provider-rank":o+1,"data-provider-name":r.name},provider:String(r.name).toUpperCase(),name:r.name,fillWidth:Math.max((Number(r.share)||0)/s*100,2),share:r.share,tokens:a(r.tokens),tokensTitle:i(r.tokens)},r.name))}):e.jsx(k,{})}function xe({rows:t,maxShare:s,formatTokens:a,formatTokensTooltip:i}){return t.length?e.jsx("div",{className:"space-y-0.5",children:t.map((r,o)=>{const l=Number(r.share)||0;return e.jsx(A,{rank:o+1,dataAttrs:{"data-model-rank":o+1,"data-model-name":r.name},provider:oe(r.name),name:r.name,fillWidth:Math.max(l/s*100,2),share:l,tokens:a(r.tokens),tokensTitle:i(r.tokens)},r.name)})}):e.jsx(k,{})}function ue({name:t}){const s=String(t||"").toLowerCase();return s==="darwin"?e.jsx(K,{className:"size-3.5"}):s==="win32"?e.jsx(U,{className:"size-3.5"}):e.jsx(V,{className:"size-4","aria-hidden":"true"})}const he=.175,ye=.3;function ge({bands:t,formatTokensTooltip:s}){const a=t.reduce((r,o)=>Math.max(r,Number(o.developer_share)||0),0)||1,i=r=>`${n(`leaderboard.community.modal.band.${r.key}`)} · ${n("leaderboard.community.modal.developer_count",{count:p(r.developers)})} (${s(r.tokens)})`;return e.jsxs("div",{children:[e.jsx("div",{className:"flex gap-2 border-b border-oai-gray-200 dark:border-oai-gray-800",children:t.map((r,o)=>{const l=Number(r.developer_share)||0,c=Math.max(l/a*80,2);return e.jsxs("div",{className:"relative h-32 min-w-0 flex-1",title:i(r),children:[e.jsx("div",{role:"progressbar","aria-label":n("leaderboard.community.modal.developer_share_title",{share:u(l)}),"aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":l,className:"absolute inset-x-0 bottom-0",style:{height:`${c}%`,backgroundColor:"var(--oai-blue)",opacity:ye+o*he}}),e.jsx("div",{className:"absolute inset-x-0 text-center text-xs font-medium tabular-nums text-oai-gray-700 dark:text-oai-gray-200",style:{bottom:`calc(${c}% + 4px)`},children:u(l)})]},r.key)})}),e.jsx("div",{className:"mt-2 flex gap-2",children:t.map(r=>e.jsxs("div",{className:"min-w-0 flex-1 text-center",title:i(r),children:[e.jsx("div",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",children:n(`leaderboard.community.modal.band.${r.key}`)}),e.jsx("div",{className:"truncate text-xs tabular-nums text-oai-gray-500 dark:text-oai-gray-400",children:p(r.developers)})]},r.key))})]})}function pe({bands:t,platforms:s,formatTokensTooltip:a}){return!t.length&&!s.length?e.jsx(k,{}):e.jsxs("div",{className:"space-y-8",children:[t.length?e.jsxs("div",{children:[e.jsx(b,{children:n("leaderboard.community.modal.usage_distribution")}),e.jsx(ge,{bands:t,formatTokensTooltip:a})]}):null,s.length?e.jsxs("div",{children:[e.jsx(b,{children:n("leaderboard.community.modal.platforms")}),e.jsx("div",{className:"space-y-0.5",children:s.map(i=>e.jsxs(I,{fillWidth:Math.max(Number(i.share)||0,1),share:i.share,ariaLabel:`${n(`leaderboard.community.modal.platform.${i.name}`)} ${u(i.share)}`,children:[e.jsxs("div",{className:"relative flex min-w-0 items-center gap-2.5",children:[e.jsx("span",{className:"grid size-6 shrink-0 place-items-center text-oai-gray-700 dark:text-oai-gray-200",children:e.jsx(ue,{name:i.name})}),e.jsx("span",{className:"truncate text-xs font-medium text-oai-gray-700 dark:text-oai-gray-200",children:n(`leaderboard.community.modal.platform.${i.name}`)})]}),e.jsxs("div",{className:"relative min-w-[4.5rem] text-right",children:[e.jsx("div",{className:"text-xs font-semibold text-oai-black tabular-nums dark:text-white",children:u(i.share)}),e.jsx("div",{className:"text-xs text-oai-gray-500 tabular-nums dark:text-oai-gray-400",title:Number(i.machines||0).toLocaleString(),children:n("leaderboard.community.modal.machine_count",{count:p(i.machines)})})]})]},i.name))})]}):null]})}function ve({isOpen:t,onClose:s,communityStats:a}){const{formatTokens:i,formatTokensTooltip:r}=B(),[o,l]=D.useState("overview"),c=a?.status==="ready",m=D.useMemo(()=>{if(!c)return null;const d=(Array.isArray(a.providers)?a.providers:[]).slice(0,O),x=(Array.isArray(a.topModels)?a.topModels:[]).slice(0,O),y=v=>v.reduce((E,$)=>Math.max(E,Number($.share)||0),0)||1;return{providers:d,models:x,providersMaxShare:y(d),modelsMaxShare:y(x),trendRows:(Array.isArray(a.dailyGrowth)?a.dailyGrowth:[]).map(v=>({day:ne(v.day),value:Number(v.tokens)||0})),mix:Array.isArray(a.tokenMix)?a.tokenMix:[],bands:Array.isArray(a.userDistribution)?a.userDistribution:[],platforms:Array.isArray(a.platforms)?a.platforms:[]}},[c,a]);if(!m)return null;const h=Number(a.tokenFloor)||0,N=Number(a.activeDevelopersTotal)||Number(a.totalEntries)||0,w=Number(a.tokens30d)||0,T=d=>{if(d.key!=="ArrowRight"&&d.key!=="ArrowLeft")return;d.preventDefault();const x=d.key==="ArrowRight"?1:-1,y=g[(g.indexOf(o)+x+g.length)%g.length];l(y),d.currentTarget.querySelector(`[data-tab-id="${y}"]`)?.focus()};return e.jsx(X,{open:t,onOpenChange:d=>!d&&s(),children:e.jsxs(Y,{children:[e.jsx(Z,{className:"fixed inset-0 z-[100] bg-black/50 backdrop-blur-[3px] transition-opacity duration-200 ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0"}),e.jsx(H,{className:"fixed inset-0 z-[101] flex items-center justify-center p-2 sm:p-5",children:e.jsxs(q,{className:"relative flex h-[min(42rem,92vh)] w-full max-w-xl flex-col overflow-hidden rounded-2xl bg-white shadow-2xl ring-1 ring-black/10 transition-[opacity,transform] duration-[220ms] ease-[cubic-bezier(0.16,1,0.3,1)] data-[ending-style]:translate-y-3 data-[ending-style]:scale-[0.98] data-[ending-style]:opacity-0 data-[starting-style]:translate-y-3 data-[starting-style]:scale-[0.98] data-[starting-style]:opacity-0 dark:bg-oai-gray-950 dark:ring-white/10",children:[e.jsxs("header",{"data-testid":"community-metrics-header",className:"shrink-0 px-5 pt-5 sm:px-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx(J,{className:"text-lg font-semibold tracking-[-0.02em] text-oai-black dark:text-white",children:n("leaderboard.community.modal.title")}),e.jsx(Q,{className:"sr-only",children:n("leaderboard.community.modal.description")})]}),e.jsx(ee,{className:"-mr-1 -mt-1 grid size-8 place-items-center rounded-full text-oai-gray-400 transition-colors hover:bg-black/5 hover:text-oai-black dark:hover:bg-white/10 dark:hover:text-white","aria-label":n("shared.dialog.close"),children:e.jsx(z,{className:"size-4"})})]}),e.jsxs("div",{className:"mt-4 grid grid-cols-3 gap-x-5",children:[e.jsx(j,{label:n("leaderboard.community.modal.total_tokens"),value:i(h),title:r(h)}),e.jsx(j,{label:n("leaderboard.community.modal.tokens_30d"),value:i(w),title:r(w),delta:a.tokenGrowthPct,deltaLabel:n("leaderboard.community.modal.vs_previous_week")}),e.jsx(j,{label:n("leaderboard.community.modal.contributors"),value:p(N),title:N.toLocaleString()})]}),e.jsx("div",{className:"mt-4 flex items-end overflow-x-auto border-b border-oai-gray-100 dark:border-oai-gray-900",role:"tablist","aria-label":n("leaderboard.community.modal.views"),onKeyDown:T,children:g.map(d=>{const x=o===d;return e.jsxs("button",{type:"button",role:"tab","data-tab-id":d,"aria-selected":x,tabIndex:x?0:-1,onClick:()=>l(d),className:`relative mr-5 h-10 shrink-0 text-sm font-medium transition-colors last:mr-0 ${x?"text-oai-black dark:text-white":"text-oai-gray-500 hover:text-oai-gray-700 dark:text-oai-gray-400 dark:hover:text-oai-gray-200"}`,children:[n(`leaderboard.community.modal.tab.${d}`),x?e.jsx(M.span,{layoutId:"community-metrics-tab-underline",className:"absolute inset-x-0 -bottom-px h-0.5 rounded-full bg-oai-black dark:bg-white",transition:{type:"spring",stiffness:420,damping:34}}):null]},d)})})]}),e.jsx("div",{"data-testid":"community-metrics-content",className:"min-h-0 flex-1 overflow-y-auto px-5 py-5 sm:px-6",children:e.jsxs(M.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},transition:{duration:.18,ease:[.16,1,.3,1]},className:"h-full",children:[o==="overview"?e.jsx(me,{trendRows:m.trendRows,mix:m.mix,activeDevelopers30d:Number(a.activeDevelopers30d)||0,developerGrowthPct:a.developerGrowthPct,formatTokens:i,formatTokensTooltip:r}):null,o==="providers"?e.jsx(ce,{rows:m.providers,maxShare:m.providersMaxShare,formatTokens:i,formatTokensTooltip:r}):null,o==="community"?e.jsx(pe,{bands:m.bands,platforms:m.platforms,formatTokensTooltip:r}):null,o==="models"?e.jsx(xe,{rows:m.models,maxShare:m.modelsMaxShare,formatTokens:i,formatTokensTooltip:r}):null]},o)})]})})]})})}function Ke(t){return e.jsx(R,{mode:P.COMPACT,children:e.jsx(ve,{...t})})}export{Ke as CommunityStatsModal};