codexLB-up 1.25.0b10__py3-none-any.whl

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 (827) hide show
  1. app/__init__.py +10 -0
  2. app/admin_cli.py +494 -0
  3. app/cli.py +339 -0
  4. app/codex_sessions_retag.py +487 -0
  5. app/core/__init__.py +0 -0
  6. app/core/audit/__init__.py +0 -0
  7. app/core/audit/service.py +216 -0
  8. app/core/audit/types.py +94 -0
  9. app/core/auth/__init__.py +236 -0
  10. app/core/auth/api_key_cache.py +65 -0
  11. app/core/auth/dashboard_access.py +429 -0
  12. app/core/auth/dashboard_mode.py +171 -0
  13. app/core/auth/dashboard_session_ttl.py +74 -0
  14. app/core/auth/dashboard_users_cache.py +120 -0
  15. app/core/auth/dependencies.py +710 -0
  16. app/core/auth/external_identity.py +78 -0
  17. app/core/auth/guardian.py +374 -0
  18. app/core/auth/models.py +49 -0
  19. app/core/auth/providers/__init__.py +129 -0
  20. app/core/auth/providers/oidc.py +838 -0
  21. app/core/auth/providers/registry.py +118 -0
  22. app/core/auth/refresh.py +394 -0
  23. app/core/auth/step_up.py +117 -0
  24. app/core/auth/totp.py +81 -0
  25. app/core/balancer/__init__.py +71 -0
  26. app/core/balancer/logic.py +1612 -0
  27. app/core/balancer/rendezvous_hash.py +21 -0
  28. app/core/balancer/types.py +21 -0
  29. app/core/bootstrap.py +172 -0
  30. app/core/cache/invalidation.py +426 -0
  31. app/core/clients/__init__.py +0 -0
  32. app/core/clients/codex.py +996 -0
  33. app/core/clients/codex_version.py +187 -0
  34. app/core/clients/codex_version_snapshot.py +2 -0
  35. app/core/clients/files.py +534 -0
  36. app/core/clients/headers.py +29 -0
  37. app/core/clients/http.py +511 -0
  38. app/core/clients/model_fetcher.py +276 -0
  39. app/core/clients/native_egress.py +1304 -0
  40. app/core/clients/oauth.py +477 -0
  41. app/core/clients/proxy.py +6089 -0
  42. app/core/clients/proxy_websocket.py +1411 -0
  43. app/core/clients/rate_limit_reset_credits.py +412 -0
  44. app/core/clients/stream_errors.py +12 -0
  45. app/core/clients/thread_cache_identity.py +347 -0
  46. app/core/clients/usage.py +467 -0
  47. app/core/clock.py +170 -0
  48. app/core/config/__init__.py +0 -0
  49. app/core/config/background_jobs.py +73 -0
  50. app/core/config/context_window_overrides.py +166 -0
  51. app/core/config/dashboard_overrides.py +145 -0
  52. app/core/config/inheritable.py +47 -0
  53. app/core/config/key_fingerprint.py +115 -0
  54. app/core/config/settings.py +872 -0
  55. app/core/config/settings_cache.py +100 -0
  56. app/core/config/spool_retention.py +217 -0
  57. app/core/config/tiers.py +174 -0
  58. app/core/conversation_archive.py +568 -0
  59. app/core/crypto.py +37 -0
  60. app/core/draining.py +11 -0
  61. app/core/errors.py +365 -0
  62. app/core/exceptions.py +155 -0
  63. app/core/handlers/__init__.py +3 -0
  64. app/core/handlers/exceptions.py +478 -0
  65. app/core/http_protocol.py +176 -0
  66. app/core/http_protocol_httptools.py +204 -0
  67. app/core/ingress_limits.py +17 -0
  68. app/core/metadata_store.py +18 -0
  69. app/core/metrics/__init__.py +0 -0
  70. app/core/metrics/middleware.py +74 -0
  71. app/core/metrics/prometheus.py +604 -0
  72. app/core/middleware/__init__.py +25 -0
  73. app/core/middleware/api_firewall.py +111 -0
  74. app/core/middleware/app_version.py +37 -0
  75. app/core/middleware/dashboard_auth_proxy.py +55 -0
  76. app/core/middleware/dashboard_csrf.py +177 -0
  77. app/core/middleware/dashboard_gzip.py +41 -0
  78. app/core/middleware/dashboard_overrides.py +59 -0
  79. app/core/middleware/firewall_cache.py +91 -0
  80. app/core/middleware/inflight.py +126 -0
  81. app/core/middleware/multipart_content_encoding.py +129 -0
  82. app/core/middleware/path_rewrite.py +148 -0
  83. app/core/middleware/request_body_limit.py +196 -0
  84. app/core/middleware/request_decompression.py +209 -0
  85. app/core/middleware/request_id.py +72 -0
  86. app/core/middleware/required_capability_http.py +116 -0
  87. app/core/middleware/trusted_proxy_headers.py +36 -0
  88. app/core/multipart.py +237 -0
  89. app/core/multipart_fields.py +91 -0
  90. app/core/openai/__init__.py +0 -0
  91. app/core/openai/chat_requests.py +493 -0
  92. app/core/openai/chat_responses.py +931 -0
  93. app/core/openai/contracts.py +46 -0
  94. app/core/openai/exceptions.py +24 -0
  95. app/core/openai/host_models.py +14 -0
  96. app/core/openai/images.py +413 -0
  97. app/core/openai/message_coercion.py +376 -0
  98. app/core/openai/model_refresh_scheduler.py +423 -0
  99. app/core/openai/model_registry.py +997 -0
  100. app/core/openai/model_registry_store.py +548 -0
  101. app/core/openai/models.py +172 -0
  102. app/core/openai/parsing.py +97 -0
  103. app/core/openai/requests.py +1980 -0
  104. app/core/openai/strict_schema.py +199 -0
  105. app/core/openai/tool_call_safety.py +99 -0
  106. app/core/openai/v1_requests.py +187 -0
  107. app/core/plan_types.py +90 -0
  108. app/core/prestop.py +202 -0
  109. app/core/rate_limiter/__init__.py +0 -0
  110. app/core/rate_limiter/db_rate_limiter.py +215 -0
  111. app/core/request_locality.py +473 -0
  112. app/core/resilience/__init__.py +0 -0
  113. app/core/resilience/backpressure.py +57 -0
  114. app/core/resilience/bulkhead.py +202 -0
  115. app/core/resilience/circuit_breaker.py +150 -0
  116. app/core/resilience/degradation.py +55 -0
  117. app/core/resilience/loop_lag_monitor.py +60 -0
  118. app/core/resilience/memory_monitor.py +137 -0
  119. app/core/resilience/network_recovery.py +256 -0
  120. app/core/resilience/overload.py +98 -0
  121. app/core/resilience/toggles.py +114 -0
  122. app/core/retention/__init__.py +0 -0
  123. app/core/retention/job.py +240 -0
  124. app/core/retention/scheduler.py +69 -0
  125. app/core/runtime_logging.py +601 -0
  126. app/core/scheduling/__init__.py +0 -0
  127. app/core/scheduling/leader_election.py +993 -0
  128. app/core/scheduling/leader_election_handle.py +25 -0
  129. app/core/server.py +140 -0
  130. app/core/shutdown.py +326 -0
  131. app/core/socket_peer.py +22 -0
  132. app/core/startup.py +41 -0
  133. app/core/timeout_invariants.py +347 -0
  134. app/core/tracing/__init__.py +0 -0
  135. app/core/tracing/otel.py +207 -0
  136. app/core/types.py +6 -0
  137. app/core/upstream_proxy/__init__.py +13 -0
  138. app/core/upstream_proxy/cache.py +130 -0
  139. app/core/upstream_proxy/resolver.py +189 -0
  140. app/core/upstream_proxy/types.py +104 -0
  141. app/core/usage/__init__.py +407 -0
  142. app/core/usage/depletion.py +109 -0
  143. app/core/usage/live_hub.py +41 -0
  144. app/core/usage/live_snapshots.py +174 -0
  145. app/core/usage/logs.py +212 -0
  146. app/core/usage/metadata_scheduler.py +118 -0
  147. app/core/usage/models.py +54 -0
  148. app/core/usage/pricing.py +576 -0
  149. app/core/usage/pricing_catalog.py +241 -0
  150. app/core/usage/pricing_snapshot.json +821 -0
  151. app/core/usage/quota.py +133 -0
  152. app/core/usage/refresh_policy.py +21 -0
  153. app/core/usage/refresh_scheduler.py +713 -0
  154. app/core/usage/reset_credits_refresh_scheduler.py +435 -0
  155. app/core/usage/types.py +168 -0
  156. app/core/utils/__init__.py +0 -0
  157. app/core/utils/json_guards.py +18 -0
  158. app/core/utils/locks.py +33 -0
  159. app/core/utils/masking.py +20 -0
  160. app/core/utils/proxy_env.py +104 -0
  161. app/core/utils/request_id.py +65 -0
  162. app/core/utils/retry.py +77 -0
  163. app/core/utils/shared_future.py +172 -0
  164. app/core/utils/sse.py +286 -0
  165. app/core/utils/time.py +24 -0
  166. app/db/__init__.py +0 -0
  167. app/db/account_identity_lock.py +56 -0
  168. app/db/alembic/__init__.py +1 -0
  169. app/db/alembic/env.py +70 -0
  170. app/db/alembic/revision_ids.py +43 -0
  171. app/db/alembic/versions/20260213_000000_base_schema.py +248 -0
  172. app/db/alembic/versions/20260213_000100_normalize_account_plan_types.py +45 -0
  173. app/db/alembic/versions/20260213_000200_add_request_logs_reasoning_effort.py +45 -0
  174. app/db/alembic/versions/20260213_000300_add_accounts_reset_at.py +45 -0
  175. app/db/alembic/versions/20260213_000400_add_accounts_chatgpt_account_id.py +45 -0
  176. app/db/alembic/versions/20260213_000500_add_dashboard_settings.py +70 -0
  177. app/db/alembic/versions/20260213_000600_add_dashboard_settings_totp.py +64 -0
  178. app/db/alembic/versions/20260213_000700_add_dashboard_settings_password.py +59 -0
  179. app/db/alembic/versions/20260213_000800_add_api_keys.py +87 -0
  180. app/db/alembic/versions/20260214_000000_add_api_key_limits.py +143 -0
  181. app/db/alembic/versions/20260215_000000_add_idx_logs_requested_at.py +38 -0
  182. app/db/alembic/versions/20260218_000000_add_api_key_usage_reservations.py +117 -0
  183. app/db/alembic/versions/20260218_000100_add_import_without_overwrite_and_drop_accounts_email_unique.py +198 -0
  184. app/db/alembic/versions/20260225_000000_add_dashboard_settings_routing_strategy.py +53 -0
  185. app/db/alembic/versions/20260228_020000_align_api_key_limit_enum_types.py +104 -0
  186. app/db/alembic/versions/20260228_030000_add_api_firewall_allowlist.py +42 -0
  187. app/db/alembic/versions/20260306_000000_add_request_logs_service_tier.py +45 -0
  188. app/db/alembic/versions/20260307_000000_add_api_key_enforcement_fields.py +56 -0
  189. app/db/alembic/versions/20260308_000000_add_sqlite_performance_indexes.py +41 -0
  190. app/db/alembic/versions/20260309_000000_add_additional_usage_history.py +71 -0
  191. app/db/alembic/versions/20260309_000000_request_logs_nullable_account_id.py +28 -0
  192. app/db/alembic/versions/20260310_000000_add_request_logs_transport.py +45 -0
  193. app/db/alembic/versions/20260310_000000_fix_postgresql_enum_value_casing.py +79 -0
  194. app/db/alembic/versions/20260310_120000_add_sticky_session_kinds_and_affinity_ttl.py +110 -0
  195. app/db/alembic/versions/20260312_000000_add_additional_usage_quota_key.py +193 -0
  196. app/db/alembic/versions/20260312_000000_split_sticky_sessions_primary_key_by_kind.py +96 -0
  197. app/db/alembic/versions/20260312_010000_merge_additional_usage_and_sticky_session_heads.py +25 -0
  198. app/db/alembic/versions/20260312_020000_merge_request_logs_transport_and_feature_heads.py +25 -0
  199. app/db/alembic/versions/20260312_020000_merge_request_logs_transport_and_sticky_heads.py +25 -0
  200. app/db/alembic/versions/20260312_120000_add_dashboard_upstream_stream_transport.py +62 -0
  201. app/db/alembic/versions/20260313_024500_merge_request_log_transport_heads.py +27 -0
  202. app/db/alembic/versions/20260319_100937_increase_prompt_cache_ttl_to_1800s.py +73 -0
  203. app/db/alembic/versions/20260319_111500_merge_prompt_cache_ttl_and_upstream_transport_heads.py +25 -0
  204. app/db/alembic/versions/20260319_183000_normalize_sqlite_account_status_casing.py +48 -0
  205. app/db/alembic/versions/20260320_000000_add_request_log_requested_actual_tiers.py +51 -0
  206. app/db/alembic/versions/20260321_190000_tighten_dashboard_db_indexes.py +64 -0
  207. app/db/alembic/versions/20260321_210000_merge_request_log_tiers_and_dashboard_index_heads.py +25 -0
  208. app/db/alembic/versions/20260325_000000_add_request_log_cost.py +193 -0
  209. app/db/alembic/versions/20260328_000000_add_rate_limit_attempts.py +48 -0
  210. app/db/alembic/versions/20260328_120000_add_request_log_ttft.py +37 -0
  211. app/db/alembic/versions/20260328_130000_add_audit_logs_table.py +45 -0
  212. app/db/alembic/versions/20260328_140000_add_scheduler_leader_table.py +39 -0
  213. app/db/alembic/versions/20260330_000000_add_cache_locality_settings.py +69 -0
  214. app/db/alembic/versions/20260330_010000_merge_scheduler_leader_and_cache_locality_heads.py +25 -0
  215. app/db/alembic/versions/20260330_020000_add_bridge_ring_members.py +46 -0
  216. app/db/alembic/versions/20260401_000000_add_api_key_enforced_service_tier.py +52 -0
  217. app/db/alembic/versions/20260401_000000_add_cache_invalidation.py +41 -0
  218. app/db/alembic/versions/20260401_020000_merge_cache_invalidation_and_api_key_service_tier_heads.py +22 -0
  219. app/db/alembic/versions/20260402_000000_switch_dashboard_routing_default_to_capacity_weighted.py +66 -0
  220. app/db/alembic/versions/20260403_000000_add_credit_api_key_limit_values.py +44 -0
  221. app/db/alembic/versions/20260406_000000_add_api_key_account_assignments.py +57 -0
  222. app/db/alembic/versions/20260406_010000_add_api_key_assignment_scope_flag.py +75 -0
  223. app/db/alembic/versions/20260407_000000_add_bridge_gateway_safe_mode.py +51 -0
  224. app/db/alembic/versions/20260407_010000_merge_api_key_assignment_and_bridge_gateway_heads.py +25 -0
  225. app/db/alembic/versions/20260408_000000_switch_import_without_overwrite_default_to_true.py +73 -0
  226. app/db/alembic/versions/20260408_010000_merge_import_without_overwrite_and_assignment_heads.py +25 -0
  227. app/db/alembic/versions/20260409_000000_add_http_bridge_sessions.py +130 -0
  228. app/db/alembic/versions/20260409_000000_switch_sticky_threads_and_prefer_earlier_reset_defaults_to_true.py +89 -0
  229. app/db/alembic/versions/20260409_010000_add_dashboard_settings_bootstrap_token.py +57 -0
  230. app/db/alembic/versions/20260409_010000_merge_http_bridge_and_import_without_overwrite_heads.py +25 -0
  231. app/db/alembic/versions/20260409_020000_fix_http_bridge_last_seen_index.py +46 -0
  232. app/db/alembic/versions/20260410_000000_backfill_pristine_dashboard_settings_defaults.py +77 -0
  233. app/db/alembic/versions/20260410_030000_restore_import_without_overwrite_default_true.py +73 -0
  234. app/db/alembic/versions/20260410_040000_merge_dashboard_defaults_and_import_default_heads.py +25 -0
  235. app/db/alembic/versions/20260413_000000_add_accounts_blocked_at.py +44 -0
  236. app/db/alembic/versions/20260415_160000_add_automations_tables.py +189 -0
  237. app/db/alembic/versions/20260415_160000_add_request_logs_response_lookup_index.py +67 -0
  238. app/db/alembic/versions/20260417_000000_add_request_log_plan_type.py +44 -0
  239. app/db/alembic/versions/20260418_190000_add_automation_runs_cycle_key.py +87 -0
  240. app/db/alembic/versions/20260419_000000_add_automation_run_cycle_metadata.py +56 -0
  241. app/db/alembic/versions/20260419_020000_add_automation_run_cycles_snapshot_tables.py +342 -0
  242. app/db/alembic/versions/20260421_000000_add_dashboard_session_ttl_setting.py +51 -0
  243. app/db/alembic/versions/20260421_120000_merge_request_log_lookup_and_plan_type_heads.py +25 -0
  244. app/db/alembic/versions/20260421_130000_merge_automation_and_request_log_heads.py +25 -0
  245. app/db/alembic/versions/20260422_103000_normalize_legacy_automation_run_cycle_keys.py +648 -0
  246. app/db/alembic/versions/20260423_120000_add_api_key_limit_reset_at_index.py +43 -0
  247. app/db/alembic/versions/20260424_000000_merge_dashboard_session_ttl_and_request_log_heads.py +25 -0
  248. app/db/alembic/versions/20260426_000000_add_dashboard_relative_availability_settings.py +68 -0
  249. app/db/alembic/versions/20260427_130000_add_warmup_model_and_request_kind.py +75 -0
  250. app/db/alembic/versions/20260506_000000_add_account_routing_policy.py +37 -0
  251. app/db/alembic/versions/20260509_000000_add_api_key_traffic_class.py +37 -0
  252. app/db/alembic/versions/20260509_010000_add_additional_quota_routing_policies.py +37 -0
  253. app/db/alembic/versions/20260513_000000_add_accounts_alias.py +44 -0
  254. app/db/alembic/versions/20260513_000000_add_api_key_apply_to_codex_model.py +59 -0
  255. app/db/alembic/versions/20260514_000000_add_request_logs_api_key_time_index.py +43 -0
  256. app/db/alembic/versions/20260515_000000_add_prefer_earlier_reset_window.py +47 -0
  257. app/db/alembic/versions/20260515_000000_soft_delete_request_logs_on_account_delete.py +83 -0
  258. app/db/alembic/versions/20260515_020000_add_split_sticky_budget_thresholds.py +62 -0
  259. app/db/alembic/versions/20260516_000000_add_sqlite_hot_path_indexes.py +75 -0
  260. app/db/alembic/versions/20260517_000000_merge_sqlite_hot_path_and_request_log_delete_heads.py +24 -0
  261. app/db/alembic/versions/20260518_000000_add_http_bridge_durable_input_prefix.py +44 -0
  262. app/db/alembic/versions/20260518_010000_merge_http_bridge_and_sqlite_recovery_heads.py +25 -0
  263. app/db/alembic/versions/20260518_120000_add_dashboard_guest_access.py +57 -0
  264. app/db/alembic/versions/20260520_000000_merge_api_key_and_http_bridge_heads.py +26 -0
  265. app/db/alembic/versions/20260520_010000_add_request_logs_api_key_account_index.py +45 -0
  266. app/db/alembic/versions/20260520_010000_merge_automation_and_api_key_heads.py +26 -0
  267. app/db/alembic/versions/20260520_030000_add_quota_planner.py +194 -0
  268. app/db/alembic/versions/20260520_040000_merge_quota_planner_and_request_log_index_heads.py +24 -0
  269. app/db/alembic/versions/20260521_000000_add_account_security_work_authorized.py +46 -0
  270. app/db/alembic/versions/20260521_000000_merge_dashboard_guest_and_api_key_heads.py +26 -0
  271. app/db/alembic/versions/20260521_000000_merge_prefer_reset_window_head.py +26 -0
  272. app/db/alembic/versions/20260521_000000_merge_warmup_and_request_log_index_heads.py +25 -0
  273. app/db/alembic/versions/20260522_000000_add_limit_warmup_trigger.py +195 -0
  274. app/db/alembic/versions/20260524_000000_merge_accounts_alias_and_reset_window_heads.py +24 -0
  275. app/db/alembic/versions/20260525_000000_add_usage_raw_window_latest_index.py +31 -0
  276. app/db/alembic/versions/20260526_000000_add_request_log_failure_metadata.py +100 -0
  277. app/db/alembic/versions/20260531_000000_add_account_workspace_identity.py +39 -0
  278. app/db/alembic/versions/20260531_000000_add_single_account_routing.py +42 -0
  279. app/db/alembic/versions/20260601_000000_merge_relative_availability_and_usage_raw_heads.py +24 -0
  280. app/db/alembic/versions/20260601_010000_add_api_key_usage_sections.py +58 -0
  281. app/db/alembic/versions/20260601_010000_add_routing_policy_persistence.py +67 -0
  282. app/db/alembic/versions/20260601_010000_merge_security_work_and_relative_availability_heads.py +25 -0
  283. app/db/alembic/versions/20260601_010000_merge_split_sticky_and_relative_usage_heads.py +25 -0
  284. app/db/alembic/versions/20260601_010000_merge_warmup_and_relative_availability_heads.py +25 -0
  285. app/db/alembic/versions/20260601_020000_merge_additional_quota_routing_and_relative_availability_heads.py +25 -0
  286. app/db/alembic/versions/20260601_020000_merge_quota_planner_and_relative_availability_heads.py +25 -0
  287. app/db/alembic/versions/20260601_020000_merge_reset_window_and_relative_availability_heads.py +25 -0
  288. app/db/alembic/versions/20260601_020000_merge_routing_policy_and_split_threshold_heads.py +24 -0
  289. app/db/alembic/versions/20260601_020000_merge_warmup_and_request_log_failure_heads.py +25 -0
  290. app/db/alembic/versions/20260601_030000_merge_single_account_and_routing_quota_heads.py +29 -0
  291. app/db/alembic/versions/20260601_040000_merge_security_work_and_routing_consolidation_heads.py +25 -0
  292. app/db/alembic/versions/20260601_050000_merge_quota_planner_and_routing_consolidation_heads.py +25 -0
  293. app/db/alembic/versions/20260602_050000_add_upstream_proxy_routing.py +164 -0
  294. app/db/alembic/versions/20260602_060000_merge_account_workspace_and_failure_heads.py +25 -0
  295. app/db/alembic/versions/20260602_070000_add_request_log_useragent_fields.py +86 -0
  296. app/db/alembic/versions/20260602_070000_merge_quota_planner_and_account_workspace_heads.py +25 -0
  297. app/db/alembic/versions/20260602_080000_merge_upstream_proxy_and_quota_planner_heads.py +25 -0
  298. app/db/alembic/versions/20260602_080000_merge_useragent_and_upstream_proxy_heads.py +24 -0
  299. app/db/alembic/versions/20260603_000000_add_weekly_pace_working_days.py +52 -0
  300. app/db/alembic/versions/20260603_000000_free_account_monthly_window.py +60 -0
  301. app/db/alembic/versions/20260604_000000_add_reauth_required_account_status.py +159 -0
  302. app/db/alembic/versions/20260604_010000_merge_automations_and_reauth_status_heads.py +25 -0
  303. app/db/alembic/versions/20260604_010000_merge_dashboard_guest_and_reauth_status_heads.py +25 -0
  304. app/db/alembic/versions/20260604_010000_merge_useragent_and_reauth_heads.py +24 -0
  305. app/db/alembic/versions/20260607_000000_merge_weekly_monthly_useragent_heads.py +28 -0
  306. app/db/alembic/versions/20260608_000000_add_hide_upstream_quota_from_api_keys.py +50 -0
  307. app/db/alembic/versions/20260611_000000_add_request_log_archive_request_id.py +47 -0
  308. app/db/alembic/versions/20260611_000000_merge_automations_and_weekly_monthly_useragent_heads.py +26 -0
  309. app/db/alembic/versions/20260611_000000_merge_dashboard_guest_and_weekly_useragent_heads.py +26 -0
  310. app/db/alembic/versions/20260611_010000_add_request_log_client_ip.py +57 -0
  311. app/db/alembic/versions/20260611_020000_merge_request_log_archive_and_client_ip_heads.py +26 -0
  312. app/db/alembic/versions/20260611_030000_merge_dashboard_guest_and_request_log_client_ip_heads.py +26 -0
  313. app/db/alembic/versions/20260613_000000_add_accounts_codex_installation_id.py +57 -0
  314. app/db/alembic/versions/20260613_010000_merge_installation_id_and_dashboard_weekly_heads.py +26 -0
  315. app/db/alembic/versions/20260615_000000_merge_automations_and_dashboard_guest_heads.py +26 -0
  316. app/db/alembic/versions/20260623_000000_add_limit_warmup_exhausted_threshold.py +51 -0
  317. app/db/alembic/versions/20260626_000000_add_http_downstream_transport_policy.py +46 -0
  318. app/db/alembic/versions/20260626_010000_add_request_logs_upstream_transport.py +31 -0
  319. app/db/alembic/versions/20260629_000000_add_dashboard_query_hot_path_indexes.py +53 -0
  320. app/db/alembic/versions/20260630_000000_add_limit_warmup_staggered_idle.py +47 -0
  321. app/db/alembic/versions/20260630_000000_merge_request_log_client_ip_and_dashboard_hot_path_heads.py +26 -0
  322. app/db/alembic/versions/20260630_010000_merge_warmup_and_request_log_dashboard_heads.py +26 -0
  323. app/db/alembic/versions/20260630_020000_merge_automations_and_main_heads.py +26 -0
  324. app/db/alembic/versions/20260630_020000_merge_warmup_threshold_and_main_heads.py +26 -0
  325. app/db/alembic/versions/20260630_030000_add_automation_run_model_snapshot.py +59 -0
  326. app/db/alembic/versions/20260630_040000_merge_automation_snapshot_and_warmup_threshold_heads.py +26 -0
  327. app/db/alembic/versions/20260630_050000_add_automation_run_prompt_snapshot.py +52 -0
  328. app/db/alembic/versions/20260701_000000_add_weekly_pace_smoothing_minutes.py +51 -0
  329. app/db/alembic/versions/20260702_000000_add_model_sources.py +176 -0
  330. app/db/alembic/versions/20260705_000000_add_model_source_audio_transcriptions.py +50 -0
  331. app/db/alembic/versions/20260705_000000_harden_dashboard_session_ttl.py +62 -0
  332. app/db/alembic/versions/20260706_000000_add_model_source_audio_per_minute.py +43 -0
  333. app/db/alembic/versions/20260707_000000_merge_model_sources_and_session_ttl.py +24 -0
  334. app/db/alembic/versions/20260707_010000_merge_automations_and_model_sources_heads.py +24 -0
  335. app/db/alembic/versions/20260707_020000_add_automation_job_account_scope.py +125 -0
  336. app/db/alembic/versions/20260709_000000_add_ttft_phase_observability.py +66 -0
  337. app/db/alembic/versions/20260711_000000_add_dashboard_prohibit_fast_mode.py +42 -0
  338. app/db/alembic/versions/20260711_010000_add_account_chatgpt_user_id.py +40 -0
  339. app/db/alembic/versions/20260711_020000_add_dashboard_account_concurrency_caps.py +71 -0
  340. app/db/alembic/versions/20260711_030000_add_limit_warmup_idle_threshold.py +51 -0
  341. app/db/alembic/versions/20260712_010000_add_account_usage_rollups.py +56 -0
  342. app/db/alembic/versions/20260712_020000_add_api_key_usage_rollups.py +53 -0
  343. app/db/alembic/versions/20260713_020000_add_model_registry_snapshot.py +42 -0
  344. app/db/alembic/versions/20260713_040000_add_account_refresh_claims.py +42 -0
  345. app/db/alembic/versions/20260713_040000_add_replica_guardrails.py +64 -0
  346. app/db/alembic/versions/20260713_070000_add_reset_credit_redeem_tables.py +58 -0
  347. app/db/alembic/versions/20260714_000000_add_oauth_flow_states.py +63 -0
  348. app/db/alembic/versions/20260715_000000_add_request_log_queue_latency.py +44 -0
  349. app/db/alembic/versions/20260716_000000_add_oauth_device_flow_slots.py +41 -0
  350. app/db/alembic/versions/20260716_010000_add_dashboard_retention_settings.py +48 -0
  351. app/db/alembic/versions/20260716_010000_add_reset_credit_display_settings.py +73 -0
  352. app/db/alembic/versions/20260717_000000_add_http_bridge_retry_circuits.py +47 -0
  353. app/db/alembic/versions/20260717_000000_merge_retention_and_reset_credit_display_heads.py +26 -0
  354. app/db/alembic/versions/20260717_000000_optimize_dashboard_hot_path_indexes.py +162 -0
  355. app/db/alembic/versions/20260717_000001_merge_retry_circuits_and_dashboard_indexes.py +22 -0
  356. app/db/alembic/versions/20260720_000000_add_request_log_conversation_id.py +57 -0
  357. app/db/alembic/versions/20260722_000000_backfill_request_log_useragent_families.py +40 -0
  358. app/db/alembic/versions/20260724_000000_add_request_usage_time_rollups.py +176 -0
  359. app/db/alembic/versions/20260724_000000_merge_request_log_schema_heads.py +33 -0
  360. app/db/alembic/versions/20260725_000000_add_http_bridge_pending_tool_calls.py +43 -0
  361. app/db/alembic/versions/20260726_000000_add_account_plan_downgrade_observations.py +44 -0
  362. app/db/alembic/versions/20260726_000000_repair_request_usage_rollups_after_merge.py +37 -0
  363. app/db/alembic/versions/20260727_000000_add_sticky_session_continuity_abandoned_at.py +45 -0
  364. app/db/alembic/versions/20260728_000000_merge_pending_tool_calls_and_rollup_repair_heads.py +31 -0
  365. app/db/alembic/versions/20260730_000000_add_api_key_fair_share_threshold.py +44 -0
  366. app/db/alembic/versions/20260730_000000_add_http_bridge_recovery_attempts.py +60 -0
  367. app/db/alembic/versions/20260731_000000_add_capability_lineage_markers.py +38 -0
  368. app/db/alembic/versions/20260803_000000_merge_http_bridge_recovery_and_capability_lineage_heads.py +30 -0
  369. app/db/alembic/versions/20260804_000000_add_http_bridge_operations.py +63 -0
  370. app/db/alembic/versions/20260804_000001_add_global_http_bridge_operation_fingerprint.py +53 -0
  371. app/db/alembic/versions/20260804_230000_add_request_log_connection_request_kind.py +43 -0
  372. app/db/alembic/versions/20260805_000000_add_http_bridge_operation_spool.py +75 -0
  373. app/db/alembic/versions/20260805_000001_finalize_http_bridge_operation_spool.py +65 -0
  374. app/db/alembic/versions/20260806_000000_add_additional_usage_alias_probe_indexes.py +84 -0
  375. app/db/alembic/versions/20260806_000000_add_anonymous_telemetry.py +49 -0
  376. app/db/alembic/versions/20260806_010000_add_conversation_presence_rollup.py +72 -0
  377. app/db/alembic/versions/20260806_020000_add_usage_history_bulk_covering_indexes.py +99 -0
  378. app/db/alembic/versions/20260806_030000_add_api_key_allowed_reasoning_efforts.py +65 -0
  379. app/db/alembic/versions/20260806_120000_add_http_bridge_owner_process_epoch.py +57 -0
  380. app/db/alembic/versions/20260807_000000_merge_http_bridge_operation_spool_and_latest_main.py +24 -0
  381. app/db/alembic/versions/20260808_000000_tune_usage_history_autovacuum.py +54 -0
  382. app/db/alembic/versions/20260810_000000_add_http_bridge_recovery_dispatch_count.py +44 -0
  383. app/db/alembic/versions/20260811_000000_add_hourly_rollup_cancelled_count.py +92 -0
  384. app/db/alembic/versions/20260812_000000_merge_recovery_dispatch_and_hourly_cancelled_heads.py +25 -0
  385. app/db/alembic/versions/20260812_120000_add_sticky_abandonment_scope.py +43 -0
  386. app/db/alembic/versions/20260813_000000_add_file_account_pins.py +40 -0
  387. app/db/alembic/versions/20260816_000000_add_account_pending_deletion.py +81 -0
  388. app/db/alembic/versions/20260816_000000_add_model_source_embeddings.py +50 -0
  389. app/db/alembic/versions/20260821_000000_add_retry_circuit_admission_generation.py +49 -0
  390. app/db/alembic/versions/20260826_000000_add_http_bridge_event_chunks.py +107 -0
  391. app/db/alembic/versions/20260828_000000_add_accounts_chatgpt_identity_index.py +55 -0
  392. app/db/alembic/versions/20260830_000000_add_quota_warmup_claim_expiry.py +83 -0
  393. app/db/alembic/versions/20260908_000000_add_guest_session_generation.py +37 -0
  394. app/db/alembic/versions/20260908_000000_add_subscription_overflow.py +140 -0
  395. app/db/alembic/versions/20260908_000000_replace_upstream_stream_transport_default_sentinel.py +50 -0
  396. app/db/alembic/versions/20260908_020000_merge_overflow_transport_heads.py +27 -0
  397. app/db/alembic/versions/20260909_000000_add_dashboard_roles.py +72 -0
  398. app/db/alembic/versions/20260909_010000_add_dashboard_users.py +183 -0
  399. app/db/alembic/versions/20260909_020000_reproject_compat_admin_credentials.py +105 -0
  400. app/db/alembic/versions/20260909_030000_add_audit_actor_columns.py +103 -0
  401. app/db/alembic/versions/20260909_030000_dashboard_resilience_toggle_settings.py +63 -0
  402. app/db/alembic/versions/20260909_040000_add_dashboard_user_invites.py +54 -0
  403. app/db/alembic/versions/20260909_040000_dashboard_timeout_settings.py +68 -0
  404. app/db/alembic/versions/20260909_050000_dashboard_routing_overload_settings.py +65 -0
  405. app/db/alembic/versions/20260909_060000_add_report_rollup.py +74 -0
  406. app/db/alembic/versions/20260909_070000_automation_run_claim_budget.py +50 -0
  407. app/db/alembic/versions/20260909_080000_dashboard_stream_bridge_budgets.py +62 -0
  408. app/db/alembic/versions/20260909_090000_dashboard_background_job_toggles.py +63 -0
  409. app/db/alembic/versions/20260909_100000_dashboard_codex_prewarm.py +49 -0
  410. app/db/alembic/versions/20260909_110000_model_context_window_overrides.py +45 -0
  411. app/db/alembic/versions/20260909_120000_dashboard_conversation_archive.py +48 -0
  412. app/db/alembic/versions/20260909_130000_add_request_logs_live_facet_indexes.py +96 -0
  413. app/db/alembic/versions/20260910_000000_add_totp_required_for_admin_role.py +44 -0
  414. app/db/alembic/versions/20260910_000000_request_logs_missing_cost_index.py +52 -0
  415. app/db/alembic/versions/20260910_010000_add_dashboard_auth_providers.py +134 -0
  416. app/db/alembic/versions/20260910_010000_dashboard_spool_retention.py +52 -0
  417. app/db/alembic/versions/20260910_020000_add_dashboard_role_mappings.py +74 -0
  418. app/db/alembic/versions/20260910_143000_request_log_affinity.py +28 -0
  419. app/db/alembic/versions/20260910_180000_merge_affinity_guest_heads.py +17 -0
  420. app/db/alembic/versions/20260910_200000_merge_affinity_identity_heads.py +17 -0
  421. app/db/alembic/versions/20260910_220000_merge_affinity_invite_heads.py +17 -0
  422. app/db/alembic/versions/20260911_000000_model_source_pins_kind_expires_index.py +43 -0
  423. app/db/alembic/versions/20260911_010000_merge_pin_index_and_affinity_heads.py +17 -0
  424. app/db/alembic/versions/20260911_020000_add_http_bridge_terminal_append_phase.py +54 -0
  425. app/db/alembic/versions/20260911_030000_add_local_login_policy.py +48 -0
  426. app/db/alembic/versions/20260911_040000_add_thread_cache_identity_mode.py +48 -0
  427. app/db/alembic/versions/20260911_060000_add_bridge_session_continuity_abandonment.py +40 -0
  428. app/db/alembic/versions/20260912_000000_merge_thread_cache_and_bridge_retirement_heads.py +22 -0
  429. app/db/alembic/versions/20260912_010000_drop_legacy_dashboard_credentials.py +140 -0
  430. app/db/alembic/versions/20260913_000000_add_oidc_provider_flow.py +134 -0
  431. app/db/alembic/versions/20260914_000000_add_scim_tokens.py +78 -0
  432. app/db/alembic/versions/20260914_000000_drop_subscription_overflow_schema.py +132 -0
  433. app/db/alembic/versions/20260918_000000_merge_scim_and_overflow_heads.py +17 -0
  434. app/db/alembic/versions/__init__.py +1 -0
  435. app/db/backup.py +64 -0
  436. app/db/migrate.py +1249 -0
  437. app/db/migration_lock.py +160 -0
  438. app/db/migration_url.py +18 -0
  439. app/db/models.py +3100 -0
  440. app/db/recover.py +244 -0
  441. app/db/session.py +1295 -0
  442. app/db/snapshot.py +46 -0
  443. app/db/sqlite_lock_retry.py +190 -0
  444. app/db/sqlite_utils.py +549 -0
  445. app/dependencies.py +462 -0
  446. app/main.py +1240 -0
  447. app/modules/__init__.py +0 -0
  448. app/modules/accounts/__init__.py +0 -0
  449. app/modules/accounts/api.py +426 -0
  450. app/modules/accounts/auth_manager.py +1439 -0
  451. app/modules/accounts/background_repository.py +160 -0
  452. app/modules/accounts/deletion.py +540 -0
  453. app/modules/accounts/mappers.py +654 -0
  454. app/modules/accounts/refresh_claims.py +352 -0
  455. app/modules/accounts/repository.py +1679 -0
  456. app/modules/accounts/schemas.py +308 -0
  457. app/modules/accounts/service.py +809 -0
  458. app/modules/accounts/usage_rollup.py +486 -0
  459. app/modules/accounts/usage_rollup_scheduler.py +75 -0
  460. app/modules/accounts/usage_time_rollup.py +1037 -0
  461. app/modules/accounts/usage_time_rollup_read.py +522 -0
  462. app/modules/api_keys/__init__.py +1 -0
  463. app/modules/api_keys/api.py +344 -0
  464. app/modules/api_keys/last_used_coalescer.py +216 -0
  465. app/modules/api_keys/limit_windows.py +41 -0
  466. app/modules/api_keys/repository.py +1200 -0
  467. app/modules/api_keys/reset_scheduler.py +85 -0
  468. app/modules/api_keys/schemas.py +135 -0
  469. app/modules/api_keys/service.py +2123 -0
  470. app/modules/audit/__init__.py +0 -0
  471. app/modules/audit/api.py +88 -0
  472. app/modules/audit/repository.py +74 -0
  473. app/modules/audit/schemas.py +33 -0
  474. app/modules/audit/service.py +71 -0
  475. app/modules/auth_providers/__init__.py +0 -0
  476. app/modules/auth_providers/api.py +127 -0
  477. app/modules/auth_providers/config.py +343 -0
  478. app/modules/auth_providers/repository.py +101 -0
  479. app/modules/auth_providers/schemas.py +88 -0
  480. app/modules/auth_providers/seed.py +105 -0
  481. app/modules/auth_providers/service.py +289 -0
  482. app/modules/automations/__init__.py +1 -0
  483. app/modules/automations/api.py +369 -0
  484. app/modules/automations/repository.py +1896 -0
  485. app/modules/automations/scheduler.py +107 -0
  486. app/modules/automations/schemas.py +158 -0
  487. app/modules/automations/service.py +2548 -0
  488. app/modules/cache_isolation_probe/__init__.py +0 -0
  489. app/modules/cache_isolation_probe/api.py +188 -0
  490. app/modules/cache_isolation_probe/prefix.py +144 -0
  491. app/modules/cache_isolation_probe/schemas.py +94 -0
  492. app/modules/cache_isolation_probe/sender.py +229 -0
  493. app/modules/cache_isolation_probe/service.py +525 -0
  494. app/modules/conversation_archive/__init__.py +1 -0
  495. app/modules/conversation_archive/api.py +101 -0
  496. app/modules/conversation_archive/schemas.py +28 -0
  497. app/modules/conversation_archive/service.py +165 -0
  498. app/modules/dashboard/__init__.py +1 -0
  499. app/modules/dashboard/api.py +106 -0
  500. app/modules/dashboard/builders.py +107 -0
  501. app/modules/dashboard/repository.py +304 -0
  502. app/modules/dashboard/schemas.py +148 -0
  503. app/modules/dashboard/service.py +534 -0
  504. app/modules/dashboard/timeframes.py +19 -0
  505. app/modules/dashboard/weekly_pace.py +617 -0
  506. app/modules/dashboard_auth/__init__.py +1 -0
  507. app/modules/dashboard_auth/api.py +1344 -0
  508. app/modules/dashboard_auth/oidc_api.py +753 -0
  509. app/modules/dashboard_auth/oidc_flows.py +330 -0
  510. app/modules/dashboard_auth/repository.py +452 -0
  511. app/modules/dashboard_auth/schemas.py +232 -0
  512. app/modules/dashboard_auth/service.py +1384 -0
  513. app/modules/dashboard_roles/__init__.py +0 -0
  514. app/modules/dashboard_roles/api.py +64 -0
  515. app/modules/dashboard_roles/repository.py +54 -0
  516. app/modules/dashboard_roles/schemas.py +29 -0
  517. app/modules/dashboard_roles/seed.py +80 -0
  518. app/modules/dashboard_roles/service.py +142 -0
  519. app/modules/dashboard_users/__init__.py +0 -0
  520. app/modules/dashboard_users/api.py +278 -0
  521. app/modules/dashboard_users/break_glass.py +169 -0
  522. app/modules/dashboard_users/credentials.py +18 -0
  523. app/modules/dashboard_users/identity_resolver.py +665 -0
  524. app/modules/dashboard_users/repository.py +725 -0
  525. app/modules/dashboard_users/schemas.py +117 -0
  526. app/modules/dashboard_users/service.py +1054 -0
  527. app/modules/firewall/__init__.py +1 -0
  528. app/modules/firewall/api.py +78 -0
  529. app/modules/firewall/repository.py +51 -0
  530. app/modules/firewall/schemas.py +28 -0
  531. app/modules/firewall/service.py +93 -0
  532. app/modules/fleet/__init__.py +1 -0
  533. app/modules/fleet/api.py +177 -0
  534. app/modules/fleet/mappers.py +56 -0
  535. app/modules/fleet/observability.py +372 -0
  536. app/modules/fleet/schemas.py +119 -0
  537. app/modules/health/__init__.py +0 -0
  538. app/modules/health/api.py +246 -0
  539. app/modules/health/schemas.py +27 -0
  540. app/modules/limit_warmup/__init__.py +1 -0
  541. app/modules/limit_warmup/repository.py +159 -0
  542. app/modules/limit_warmup/service.py +1001 -0
  543. app/modules/model_sources/__init__.py +1 -0
  544. app/modules/model_sources/api.py +99 -0
  545. app/modules/model_sources/catalog.py +307 -0
  546. app/modules/model_sources/forwarding.py +1435 -0
  547. app/modules/model_sources/projection.py +55 -0
  548. app/modules/model_sources/repository.py +201 -0
  549. app/modules/model_sources/schemas.py +79 -0
  550. app/modules/model_sources/selection.py +166 -0
  551. app/modules/model_sources/service.py +236 -0
  552. app/modules/oauth/__init__.py +0 -0
  553. app/modules/oauth/api.py +101 -0
  554. app/modules/oauth/repository.py +238 -0
  555. app/modules/oauth/schemas.py +49 -0
  556. app/modules/oauth/service.py +1196 -0
  557. app/modules/oauth/templates/oauth_success.html +122 -0
  558. app/modules/proxy/__init__.py +0 -0
  559. app/modules/proxy/_load_balancer/__init__.py +1 -0
  560. app/modules/proxy/_load_balancer/error_rate.py +116 -0
  561. app/modules/proxy/_load_balancer/latency_cohort.py +154 -0
  562. app/modules/proxy/_load_balancer/model_eligibility.py +250 -0
  563. app/modules/proxy/_load_balancer/opportunistic_admission.py +350 -0
  564. app/modules/proxy/_load_balancer/overload_backoff.py +394 -0
  565. app/modules/proxy/_load_balancer/sticky_selection.py +2417 -0
  566. app/modules/proxy/_load_balancer/throughput_cohort.py +233 -0
  567. app/modules/proxy/_load_balancer/ttft_cohort.py +214 -0
  568. app/modules/proxy/_load_balancer/tunables.py +97 -0
  569. app/modules/proxy/_load_balancer/types.py +96 -0
  570. app/modules/proxy/_load_balancer/unbound_selection.py +534 -0
  571. app/modules/proxy/_service/__init__.py +6 -0
  572. app/modules/proxy/_service/api_key_usage.py +745 -0
  573. app/modules/proxy/_service/clock_budget.py +38 -0
  574. app/modules/proxy/_service/codex_control.py +611 -0
  575. app/modules/proxy/_service/compact.py +2211 -0
  576. app/modules/proxy/_service/file_ops.py +749 -0
  577. app/modules/proxy/_service/http_bridge/__init__.py +3 -0
  578. app/modules/proxy/_service/http_bridge/accepted_replay.py +331 -0
  579. app/modules/proxy/_service/http_bridge/account_sessions.py +57 -0
  580. app/modules/proxy/_service/http_bridge/activity.py +178 -0
  581. app/modules/proxy/_service/http_bridge/helpers.py +3959 -0
  582. app/modules/proxy/_service/http_bridge/mixin.py +2435 -0
  583. app/modules/proxy/_service/http_bridge/owner_forwarding.py +609 -0
  584. app/modules/proxy/_service/http_bridge/protocol.py +167 -0
  585. app/modules/proxy/_service/http_bridge/proxy_failover.py +58 -0
  586. app/modules/proxy/_service/http_bridge/quarantine.py +443 -0
  587. app/modules/proxy/_service/http_bridge/request_submit.py +4582 -0
  588. app/modules/proxy/_service/http_bridge/retry_circuit.py +2442 -0
  589. app/modules/proxy/_service/http_bridge/service_stubs.py +492 -0
  590. app/modules/proxy/_service/http_bridge/session_registry.py +778 -0
  591. app/modules/proxy/_service/http_bridge/streaming.py +5328 -0
  592. app/modules/proxy/_service/http_bridge/upstream_events.py +4538 -0
  593. app/modules/proxy/_service/observability.py +410 -0
  594. app/modules/proxy/_service/rate_limit.py +361 -0
  595. app/modules/proxy/_service/realtime_live.py +655 -0
  596. app/modules/proxy/_service/refresh.py +154 -0
  597. app/modules/proxy/_service/request_log.py +585 -0
  598. app/modules/proxy/_service/response_create.py +930 -0
  599. app/modules/proxy/_service/streaming/__init__.py +3 -0
  600. app/modules/proxy/_service/streaming/helpers.py +1317 -0
  601. app/modules/proxy/_service/streaming/mixin.py +1100 -0
  602. app/modules/proxy/_service/streaming/protocol.py +32 -0
  603. app/modules/proxy/_service/streaming/retry.py +3762 -0
  604. app/modules/proxy/_service/support.py +2122 -0
  605. app/modules/proxy/_service/transcribe.py +434 -0
  606. app/modules/proxy/_service/warmup.py +483 -0
  607. app/modules/proxy/_service/websocket/__init__.py +3 -0
  608. app/modules/proxy/_service/websocket/helpers.py +2360 -0
  609. app/modules/proxy/_service/websocket/mixin.py +7285 -0
  610. app/modules/proxy/_service/websocket/protocol.py +74 -0
  611. app/modules/proxy/account_cache.py +229 -0
  612. app/modules/proxy/account_eligibility.py +87 -0
  613. app/modules/proxy/additional_model_limits.py +40 -0
  614. app/modules/proxy/affinity.py +830 -0
  615. app/modules/proxy/affinity_observation.py +101 -0
  616. app/modules/proxy/api.py +10254 -0
  617. app/modules/proxy/api_key_usage.py +113 -0
  618. app/modules/proxy/cap_partitioning.py +280 -0
  619. app/modules/proxy/capability_lineage.py +65 -0
  620. app/modules/proxy/capability_lineage_repository.py +82 -0
  621. app/modules/proxy/capability_routing.py +253 -0
  622. app/modules/proxy/continuity.py +112 -0
  623. app/modules/proxy/downstream_delivery.py +277 -0
  624. app/modules/proxy/durable_bridge_coordinator.py +1217 -0
  625. app/modules/proxy/durable_bridge_repository.py +4516 -0
  626. app/modules/proxy/durable_bridge_runtime.py +9 -0
  627. app/modules/proxy/durable_bridge_transcript_codec.py +122 -0
  628. app/modules/proxy/fair_share.py +131 -0
  629. app/modules/proxy/file_pin_repository.py +210 -0
  630. app/modules/proxy/helpers.py +439 -0
  631. app/modules/proxy/http_bridge_event_batcher.py +613 -0
  632. app/modules/proxy/http_bridge_forwarding.py +797 -0
  633. app/modules/proxy/http_continuation.py +76 -0
  634. app/modules/proxy/images_observability.py +62 -0
  635. app/modules/proxy/images_service.py +1054 -0
  636. app/modules/proxy/load_balancer.py +3016 -0
  637. app/modules/proxy/rate_limit_cache.py +46 -0
  638. app/modules/proxy/replay_safety.py +1063 -0
  639. app/modules/proxy/repo_bundle.py +31 -0
  640. app/modules/proxy/request_policy.py +1054 -0
  641. app/modules/proxy/ring_membership.py +251 -0
  642. app/modules/proxy/schemas.py +345 -0
  643. app/modules/proxy/selection_errors.py +41 -0
  644. app/modules/proxy/service.py +2600 -0
  645. app/modules/proxy/source_admission.py +125 -0
  646. app/modules/proxy/source_dispatch.py +999 -0
  647. app/modules/proxy/sticky_repository.py +831 -0
  648. app/modules/proxy/thread_anchors.py +491 -0
  649. app/modules/proxy/tool_call_dedupe.py +802 -0
  650. app/modules/proxy/types.py +54 -0
  651. app/modules/proxy/work_admission.py +121 -0
  652. app/modules/quota_planner/__init__.py +1 -0
  653. app/modules/quota_planner/api.py +276 -0
  654. app/modules/quota_planner/logic.py +743 -0
  655. app/modules/quota_planner/repository.py +722 -0
  656. app/modules/quota_planner/scheduler.py +212 -0
  657. app/modules/quota_planner/schemas.py +102 -0
  658. app/modules/quota_planner/warmup.py +693 -0
  659. app/modules/rate_limit_reset_credits/__init__.py +0 -0
  660. app/modules/rate_limit_reset_credits/api.py +601 -0
  661. app/modules/rate_limit_reset_credits/redeem_coordination.py +274 -0
  662. app/modules/rate_limit_reset_credits/store.py +114 -0
  663. app/modules/reports/__init__.py +1 -0
  664. app/modules/reports/api.py +134 -0
  665. app/modules/reports/cache.py +74 -0
  666. app/modules/reports/filters.py +27 -0
  667. app/modules/reports/repository.py +525 -0
  668. app/modules/reports/rollup.py +150 -0
  669. app/modules/reports/rollup_read.py +148 -0
  670. app/modules/reports/schemas.py +123 -0
  671. app/modules/reports/service.py +287 -0
  672. app/modules/reports/thread_identity.py +256 -0
  673. app/modules/request_logs/__init__.py +0 -0
  674. app/modules/request_logs/api.py +224 -0
  675. app/modules/request_logs/cost_backfill.py +154 -0
  676. app/modules/request_logs/mappers.py +97 -0
  677. app/modules/request_logs/repository.py +1765 -0
  678. app/modules/request_logs/schemas.py +145 -0
  679. app/modules/request_logs/service.py +348 -0
  680. app/modules/role_mappings/__init__.py +0 -0
  681. app/modules/role_mappings/api.py +206 -0
  682. app/modules/role_mappings/matching.py +55 -0
  683. app/modules/role_mappings/repository.py +106 -0
  684. app/modules/role_mappings/schemas.py +67 -0
  685. app/modules/role_mappings/service.py +334 -0
  686. app/modules/runtime/__init__.py +1 -0
  687. app/modules/runtime/api.py +18 -0
  688. app/modules/runtime/schemas.py +14 -0
  689. app/modules/runtime/service.py +218 -0
  690. app/modules/scim/__init__.py +1 -0
  691. app/modules/scim/api.py +194 -0
  692. app/modules/scim/dependencies.py +112 -0
  693. app/modules/scim/errors.py +77 -0
  694. app/modules/scim/management_api.py +156 -0
  695. app/modules/scim/repository.py +212 -0
  696. app/modules/scim/schemas.py +145 -0
  697. app/modules/scim/service.py +786 -0
  698. app/modules/scim/tokens.py +43 -0
  699. app/modules/settings/__init__.py +1 -0
  700. app/modules/settings/api.py +1677 -0
  701. app/modules/settings/repository.py +606 -0
  702. app/modules/settings/schemas.py +496 -0
  703. app/modules/settings/service.py +769 -0
  704. app/modules/shared/__init__.py +0 -0
  705. app/modules/shared/schemas.py +22 -0
  706. app/modules/sticky_sessions/__init__.py +1 -0
  707. app/modules/sticky_sessions/api.py +118 -0
  708. app/modules/sticky_sessions/cleanup_scheduler.py +487 -0
  709. app/modules/sticky_sessions/schemas.py +78 -0
  710. app/modules/sticky_sessions/service.py +196 -0
  711. app/modules/telemetry/__init__.py +5 -0
  712. app/modules/telemetry/api.py +115 -0
  713. app/modules/telemetry/clients.py +62 -0
  714. app/modules/telemetry/consent.py +115 -0
  715. app/modules/telemetry/scheduler.py +85 -0
  716. app/modules/telemetry/schemas.py +163 -0
  717. app/modules/telemetry/sender.py +221 -0
  718. app/modules/telemetry/snapshot.py +490 -0
  719. app/modules/usage/__init__.py +0 -0
  720. app/modules/usage/additional_quota_keys.py +379 -0
  721. app/modules/usage/api.py +45 -0
  722. app/modules/usage/background_repository.py +147 -0
  723. app/modules/usage/builders.py +559 -0
  724. app/modules/usage/depletion_service.py +277 -0
  725. app/modules/usage/live_ingest.py +356 -0
  726. app/modules/usage/mappers.py +29 -0
  727. app/modules/usage/plan_downgrade_observations.py +488 -0
  728. app/modules/usage/repository.py +1890 -0
  729. app/modules/usage/schemas.py +68 -0
  730. app/modules/usage/service.py +102 -0
  731. app/modules/usage/updater.py +1488 -0
  732. app/static/assets/Trans-Cj-J9mVA.js +1 -0
  733. app/static/assets/access-page-DHzZiXZi.js +1 -0
  734. app/static/assets/account-cost-donut-DGhfA4U8.js +1 -0
  735. app/static/assets/account-identifiers-CxbdLshZ.js +1 -0
  736. app/static/assets/account-status-DIsU5sUS.js +1 -0
  737. app/static/assets/account-trend-chart-BptlfwwQ.js +1 -0
  738. app/static/assets/accounts-page-Bbai8ift.js +3 -0
  739. app/static/assets/api-Dwa7XxPe.js +1 -0
  740. app/static/assets/api-client-dugX1Pti.js +55 -0
  741. app/static/assets/api-key-create-dialog-DnRm0oYN.js +1 -0
  742. app/static/assets/api-key-created-dialog-B6jkDG9f.js +1 -0
  743. app/static/assets/api-key-edit-dialog-Ck3Bnc3V.js +1 -0
  744. app/static/assets/api-trend-chart-BchCw7Hj.js +1 -0
  745. app/static/assets/apis-page-BvXz9c6i.js +2 -0
  746. app/static/assets/arrow-up-Dqh_KzJo.js +1 -0
  747. app/static/assets/arrow-up-down-LBRgVDGY.js +1 -0
  748. app/static/assets/automations-page-DQgNAJOR.js +3 -0
  749. app/static/assets/badge-DqMb9es0.js +1 -0
  750. app/static/assets/blur-email-HEvKagG2.js +1 -0
  751. app/static/assets/button-BjVmmiGW.js +1 -0
  752. app/static/assets/checkbox-apsl9vzk.js +1 -0
  753. app/static/assets/chevron-left-1d_pHVa5.js +1 -0
  754. app/static/assets/circle-alert-BS0xd_o1.js +1 -0
  755. app/static/assets/clsx-DB0hHKMi.js +1 -0
  756. app/static/assets/colors-BBy8GEtr.js +1 -0
  757. app/static/assets/copy-button-D7nAvOKR.js +1 -0
  758. app/static/assets/cost-per-day-chart-YdqlkZVM.js +1 -0
  759. app/static/assets/createLucideIcon-DBLzLNh2.js +1 -0
  760. app/static/assets/dashboard-page-CSdhBy0f.js +2 -0
  761. app/static/assets/distribution-metric-format-yZTy1ZEu.js +1 -0
  762. app/static/assets/donut-chart-Bxc69cra.js +1 -0
  763. app/static/assets/download-kQteIcsB.js +1 -0
  764. app/static/assets/ellipsis-B_5OgIre.js +1 -0
  765. app/static/assets/empty-state-JcA7tc8m.js +1 -0
  766. app/static/assets/es2015-bMH8YKZT.js +41 -0
  767. app/static/assets/es6-B264ni6W.js +69 -0
  768. app/static/assets/external-link-UVAOgMQ0.js +1 -0
  769. app/static/assets/i18n-BWqZ9Ua2.js +1 -0
  770. app/static/assets/inbox-B_RM2s1J.js +1 -0
  771. app/static/assets/index-DIpd264Z.js +23 -0
  772. app/static/assets/index-DMeLKRJx.css +2 -0
  773. app/static/assets/inherit-badge-QhTYVaU6.js +1 -0
  774. app/static/assets/invite-dialog-0CYh0GiQ.js +1 -0
  775. app/static/assets/iso-Bpe5Ihbb.js +1 -0
  776. app/static/assets/label-CGaLmLNf.js +1 -0
  777. app/static/assets/lazy-recharts-Pv8p9ArM.js +2 -0
  778. app/static/assets/loading-overlay-CzKQfHLI.js +1 -0
  779. app/static/assets/mini-quota-bar-cGT_t8Ae.js +1 -0
  780. app/static/assets/model-distribution-donut-BKjAfT48.js +1 -0
  781. app/static/assets/model-source-multi-select-D2d06Vc7.js +1 -0
  782. app/static/assets/multi-select-filter-KIA5qU6Z.js +1 -0
  783. app/static/assets/oauth-dialog-XeaGGDjS.js +1 -0
  784. app/static/assets/pagination-controls-D1Ypd0RU.js +1 -0
  785. app/static/assets/payload-CIYnGZz9.js +1 -0
  786. app/static/assets/queue-wait-chart-VoV7Yg9L.js +1 -0
  787. app/static/assets/report-chart-card-BXDliwcc.js +1 -0
  788. app/static/assets/reports-page-CGCJeMHG.js +3 -0
  789. app/static/assets/reset-credit-confirm-dialog-QOifTnVB.js +1 -0
  790. app/static/assets/rolldown-runtime-hePW80VL.js +1 -0
  791. app/static/assets/search-HfhqwERt.js +1 -0
  792. app/static/assets/select-Cl33bz-g.js +1 -0
  793. app/static/assets/settings-page-mZj01HYl.js +2 -0
  794. app/static/assets/shim-CZwyM4Q7.js +1 -0
  795. app/static/assets/skeleton-C_EUc4Rp.js +1 -0
  796. app/static/assets/sparkline-chart-DdNNsddM.js +1 -0
  797. app/static/assets/status-badge-CHHA5X6c.js +1 -0
  798. app/static/assets/switch-CzxgokcM.js +1 -0
  799. app/static/assets/table-DXaNSQ0G.js +1 -0
  800. app/static/assets/time-to-first-token-chart--68L0u_v.js +1 -0
  801. app/static/assets/tokens-per-day-chart-Cs82BFuE.js +1 -0
  802. app/static/assets/tokens-per-second-chart-AD2dfOn6.js +1 -0
  803. app/static/assets/totp-settings-CRHtxQ7j.js +1 -0
  804. app/static/assets/trash-D3KyWr1h.js +1 -0
  805. app/static/assets/use-account-quota-display-BPmrTBTC.js +1 -0
  806. app/static/assets/use-accounts-PWlVGw3z.js +1 -0
  807. app/static/assets/use-auth-CuDlW3iC.js +1 -0
  808. app/static/assets/use-chart-colors-DIu6tClI.js +1 -0
  809. app/static/assets/use-model-sources-Bul24JBu.js +1 -0
  810. app/static/assets/use-models-DUCPUuZg.js +1 -0
  811. app/static/assets/use-reduced-motion-hAm5r6_d.js +1 -0
  812. app/static/assets/useTranslation--56nHhlH.js +1 -0
  813. app/static/assets/useragent-distribution-donut-Dup6sf_n.js +1 -0
  814. app/static/assets/users-uIC3TIlE.js +1 -0
  815. app/static/assets/vendor-query-_bHZuxEx.js +1 -0
  816. app/static/assets/vendor-react-BVL0YZPW.js +9 -0
  817. app/static/favicon.svg +10 -0
  818. app/static/fonts/GeistSans-Variable.woff2 +0 -0
  819. app/static/fonts/jetbrains-mono-latin-ext.woff2 +0 -0
  820. app/static/fonts/jetbrains-mono-latin.woff2 +0 -0
  821. app/static/index.html +29 -0
  822. codexlb_up-1.25.0b10.dist-info/METADATA +124 -0
  823. codexlb_up-1.25.0b10.dist-info/RECORD +827 -0
  824. codexlb_up-1.25.0b10.dist-info/WHEEL +4 -0
  825. codexlb_up-1.25.0b10.dist-info/entry_points.txt +3 -0
  826. codexlb_up-1.25.0b10.dist-info/licenses/LICENSE +21 -0
  827. config/additional_quota_registry.json +11 -0
@@ -0,0 +1 @@
1
+ import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{C as n,S as r}from"./vendor-query-_bHZuxEx.js";import{t as i}from"./createLucideIcon-DBLzLNh2.js";import{a,l as o,n as s,o as c,r as l}from"./iso-Bpe5Ihbb.js";import{n as u,t as d}from"./chevron-left-1d_pHVa5.js";import{i as f,n as p,o as m,s as h,t as g}from"./select-Cl33bz-g.js";import{r as _,t as v}from"./use-models-DUCPUuZg.js";import{n as y,t as b}from"./trash-D3KyWr1h.js";import{_ as x,a as S,b as ee,c as te,f as C,g as w,i as ne,l as re,m as ie,n as ae,o as oe,p as se,r as ce,s as le,t as T,v as E}from"./es2015-bMH8YKZT.js";import{t as D}from"./useTranslation--56nHhlH.js";import{a as ue,c as O,n as de,s as fe,t as k}from"./button-BjVmmiGW.js";import{t as pe}from"./switch-CzxgokcM.js";import{Dn as me,En as he,Kt as A,Nn as ge,On as _e,Pn as ve}from"./index-DIpd264Z.js";import{t as ye}from"./badge-DqMb9es0.js";import{c as be,d as xe,f as Se,l as Ce,u as we}from"./api-Dwa7XxPe.js";import{t as Te}from"./use-model-sources-Bul24JBu.js";var Ee={name:`calendar`,size:24,node:[[`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`}]]};Ee.node;var De=i(Ee),Oe={name:`infinity`,size:24,node:[[`path`,{d:`M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8`,key:`18ogeb`}]]};Oe.node;var ke=i(Oe),j=t(n(),1),M=r(),Ae=Object.defineProperty,N=(e,t)=>Ae(e,`name`,{value:t,configurable:!0}),je=`Popover`,[Me,Ne]=x(je,[c]),Pe=c(),[Fe,P]=Me(je),Ie=N(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=Pe(t),l=j.useRef(null),[u,d]=j.useState(!1),[f,p]=j.useState(0),[m,h]=j.useState(0),[g,_]=ie({prop:r,defaultProp:i??!1,onChange:a,caller:je});return(0,M.jsx)(s,{...c,children:(0,M.jsx)(Fe,{scope:t,contentId:C(),titleId:C(),descriptionId:C(),titlePresent:f>0,descriptionPresent:m>0,setTitleCount:p,setDescriptionCount:h,triggerRef:l,open:g,onOpenChange:_,onOpenToggle:j.useCallback(()=>_(e=>!e),[_]),hasCustomAnchor:u,onCustomAnchorAdd:j.useCallback(()=>d(!0),[]),onCustomAnchorRemove:j.useCallback(()=>d(!1),[]),modal:o,children:n})})},`Popover`),Le=`PopoverTrigger`,Re=j.forwardRef(N(function(e,t){let{__scopePopover:n,...r}=e,i=P(Le,n),a=Pe(n),o=fe(t,i.triggerRef),s=(0,M.jsx)(E.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":Ye(i.open),...r,ref:o,onClick:w(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,M.jsx)(l,{asChild:!0,...a,children:s})},`PopoverTrigger`)),ze=`PopoverPortal`,[Be,Ve]=Me(ze,{forceMount:void 0}),He=N(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=P(ze,t);return(0,M.jsx)(Be,{scope:t,forceMount:n,children:(0,M.jsx)(se,{present:n||a.open,children:(0,M.jsx)(ne,{asChild:!0,container:i,children:r})})})},`PopoverPortal`),Ue=`PopoverContent`,We=j.forwardRef(N(function(e,t){let n=Ve(Ue,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=P(Ue,e.__scopePopover);return(0,M.jsx)(se,{present:r||a.open,children:a.modal?(0,M.jsx)(Ke,{...i,ref:t}):(0,M.jsx)(qe,{...i,ref:t})})},`PopoverContent`)),Ge=ue(`PopoverContent.RemoveScroll`),Ke=j.forwardRef(N(function(e,t){let n=P(Ue,e.__scopePopover),r=j.useRef(null),i=fe(t,r),a=j.useRef(!1),{nodes:o,registry:s}=te();return j.useEffect(()=>{let e=r.current;if(e)return T(e)},[]),(0,M.jsx)(ae,{as:Ge,allowPinchZoom:!0,shards:j.useMemo(()=>[r,...o.map(e=>({current:e}))],[r,o]),children:(0,M.jsx)(Je,{...e,ref:i,branchNodes:o,branchRegistry:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:w(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:w(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;a.current=r},{checkForDefaultPrevented:!1}),onFocusOutside:w(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})},`PopoverContentModal`)),qe=j.forwardRef(N(function(e,t){let n=P(Ue,e.__scopePopover),r=j.useRef(!1),i=j.useRef(!1);return(0,M.jsx)(Je,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})},`PopoverContentNonModal`)),Je=j.forwardRef(N(function(e,t){let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:u,onInteractOutside:d,"aria-describedby":f,branchNodes:p,branchRegistry:m,...h}=e,g=P(Ue,n),_=Pe(n),[v,y]=j.useState(null),b=fe(t,y);return le(v),ce(),(0,M.jsx)(oe,{registry:m,children:(0,M.jsx)(S,{asChild:!0,loop:!0,trapped:r,branches:p,onMountAutoFocus:i,onUnmountAutoFocus:o,children:(0,M.jsx)(re,{asChild:!0,disableOutsidePointerEvents:s,onInteractOutside:d,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:u,onDismiss:()=>g.onOpenChange(!1),deferPointerDownOutside:!0,children:(0,M.jsx)(a,{"data-state":Ye(g.open),role:`dialog`,id:g.contentId,"aria-labelledby":g.titlePresent?g.titleId:void 0,"aria-describedby":g.descriptionPresent?Xe(f,g.descriptionId):f,..._,...h,ref:b,style:{...h.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})})},`PopoverContentImpl`));function Ye(e){return e?`open`:`closed`}N(Ye,`getState`);function Xe(...e){let t=new Set;for(let n of e)if(typeof n==`string`)for(let e of String(n).trim().split(/\s+/))e&&t.add(e);return t.size>0?Array.from(t).join(` `):void 0}N(Xe,`concatAriaDescribedby`);var Ze=365.2425,Qe=6048e5,$e=864e5,et=86400;et*7,et*Ze/12*3;var tt=Symbol.for(`constructDateFrom`);function F(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&tt in e?e[tt](t):e instanceof Date?new e.constructor(t):new Date(t)}function I(e,t){return F(t||e,e)}function nt(e,t,n){let r=I(e,n?.in);return isNaN(t)?F(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function rt(e,t,n){let r=I(e,n?.in);if(isNaN(t))return F(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=F(n?.in||e,r.getTime());return a.setMonth(r.getMonth()+t+1,0),i>=a.getDate()?a:(r.setFullYear(a.getFullYear(),a.getMonth(),i),r)}var it={};function at(){return it}function ot(e,t){let n=at(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=I(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function st(e,t){return ot(e,{...t,weekStartsOn:1})}function ct(e,t){let n=I(e,t?.in),r=n.getFullYear(),i=F(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=st(i),o=F(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=st(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function lt(e){let t=I(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-n}function ut(e,...t){let n=F.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function dt(e,t){let n=I(e,t?.in);return n.setHours(0,0,0,0),n}function ft(e,t,n){let[r,i]=ut(n?.in,e,t),a=dt(r),o=dt(i),s=+a-lt(a),c=+o-lt(o);return Math.round((s-c)/$e)}function pt(e,t){let n=ct(e,t),r=F(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),st(r)}function mt(e,t,n){return nt(e,t*7,n)}function ht(e,t,n){return rt(e,t*12,n)}function gt(e,t){let n,r=t?.in;return e.forEach(e=>{!r&&typeof e==`object`&&(r=F.bind(null,e));let t=I(e,r);(!n||n<t||isNaN(+t))&&(n=t)}),F(r,n||NaN)}function _t(e,t){let n,r=t?.in;return e.forEach(e=>{!r&&typeof e==`object`&&(r=F.bind(null,e));let t=I(e,r);(!n||n>t||isNaN(+t))&&(n=t)}),F(r,n||NaN)}function vt(e,t,n){let[r,i]=ut(n?.in,e,t);return+dt(r)==+dt(i)}function yt(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function bt(e){return!(!yt(e)&&typeof e!=`number`||isNaN(+I(e)))}function xt(e,t,n){let[r,i]=ut(n?.in,e,t),a=r.getFullYear()-i.getFullYear(),o=r.getMonth()-i.getMonth();return a*12+o}function St(e,t){let n=I(e,t?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function Ct(e,t){let[n,r]=ut(e,t.start,t.end);return{start:n,end:r}}function wt(e,t){let{start:n,end:r}=Ct(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setDate(1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(F(n,o)),o.setMonth(o.getMonth()+s);return i?c.reverse():c}function Tt(e,t){let n=I(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Et(e,t){let n=I(e,t?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function Dt(e,t){let n=I(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function Ot(e,t){let{start:n,end:r}=Ct(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0),o.setMonth(0,1);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(F(n,o)),o.setFullYear(o.getFullYear()+s);return i?c.reverse():c}function kt(e,t){let n=at(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=I(e,t?.in),a=i.getDay(),o=(a<r?-7:0)+6-(a-r);return i.setDate(i.getDate()+o),i.setHours(23,59,59,999),i}function At(e,t){return kt(e,{...t,weekStartsOn:1})}var jt={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},Mt=(e,t,n)=>{let r,i=jt[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function Nt(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var Pt={date:Nt({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:Nt({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:Nt({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},Ft={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},It=(e,t,n,r)=>Ft[e];function Lt(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var Rt={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:Lt({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:Lt({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:Lt({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:Lt({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:Lt({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function zt(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?Vt(s,e=>e.test(o)):Bt(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function Bt(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Vt(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function Ht(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var Ut={code:`en-US`,formatDistance:Mt,formatLong:Pt,formatRelative:It,localize:Rt,match:{ordinalNumber:Ht({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:zt({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:zt({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:zt({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:zt({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:zt({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Wt(e,t){let n=I(e,t?.in);return ft(n,Dt(n))+1}function Gt(e,t){let n=I(e,t?.in),r=+st(n)-pt(n);return Math.round(r/Qe)+1}function Kt(e,t){let n=I(e,t?.in),r=n.getFullYear(),i=at(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=F(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=ot(o,t),c=F(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=ot(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function qt(e,t){let n=at(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Kt(e,t),a=F(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),ot(a,t)}function Jt(e,t){let n=I(e,t?.in),r=+ot(n,t)-qt(n,t);return Math.round(r/Qe)+1}function L(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var R={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return L(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):L(n+1,2)},d(e,t){return L(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return L(e.getHours()%12||12,t.length)},H(e,t){return L(e.getHours(),t.length)},m(e,t){return L(e.getMinutes(),t.length)},s(e,t){return L(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return L(Math.trunc(r*10**(n-3)),t.length)}},Yt={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Xt={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return R.y(e,t)},Y:function(e,t,n,r){let i=Kt(e,r),a=i>0?i:1-i;return t===`YY`?L(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):L(a,t.length)},R:function(e,t){return L(ct(e),t.length)},u:function(e,t){return L(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return L(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return L(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return R.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return L(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=Jt(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):L(i,t.length)},I:function(e,t,n){let r=Gt(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):L(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):R.d(e,t)},D:function(e,t,n){let r=Wt(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):L(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return L(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return L(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return L(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?Yt.noon:r===0?Yt.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?Yt.evening:r>=12?Yt.afternoon:r>=4?Yt.morning:Yt.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return R.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):R.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):L(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):L(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):R.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):R.s(e,t)},S:function(e,t){return R.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return Qt(r);case`XXXX`:case`XX`:return z(r);default:return z(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return Qt(r);case`xxxx`:case`xx`:return z(r);default:return z(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+Zt(r,`:`);default:return`GMT`+z(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+Zt(r,`:`);default:return`GMT`+z(r,`:`)}},t:function(e,t,n){return L(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return L(+e,t.length)}};function Zt(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+L(a,2)}function Qt(e,t){return e%60==0?(e>0?`-`:`+`)+L(Math.abs(e)/60,2):z(e,t)}function z(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=L(Math.trunc(r/60),2),a=L(r%60,2);return n+i+t+a}var $t=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},en=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},tn={p:en,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return $t(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`})}return a.replace(`{{date}}`,$t(r,t)).replace(`{{time}}`,en(i,t))}},nn=/^D+$/,rn=/^Y+$/,an=[`D`,`DD`,`YY`,`YYYY`];function on(e){return nn.test(e)}function sn(e){return rn.test(e)}function cn(e,t,n){let r=ln(e,t,n);if(console.warn(r),an.includes(e))throw RangeError(r)}function ln(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var un=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,dn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,fn=/^'([^]*?)'?$/,pn=/''/g,mn=/[a-zA-Z]/;function B(e,t,n){let r=at(),i=n?.locale??r.locale??Ut,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=I(e,n?.in);if(!bt(s))throw RangeError(`Invalid time value`);let c=t.match(dn).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=tn[t];return n(e,i.formatLong)}return e}).join(``).match(un).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:hn(e)};if(Xt[t])return{isToken:!0,value:e};if(t.match(mn))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&sn(a)||!n?.useAdditionalDayOfYearTokens&&on(a))&&cn(a,t,String(e));let o=Xt[a[0]];return o(s,a,i.localize,l)}).join(``)}function hn(e){let t=e.match(fn);return t?t[1].replace(pn,`'`):e}function gn(e,t){let n=I(e,t?.in),r=n.getFullYear(),i=n.getMonth(),a=F(n,0);return a.setFullYear(r,i+1,0),a.setHours(0,0,0,0),a.getDate()}function _n(e,t){return I(e,t?.in).getMonth()}function vn(e,t){return I(e,t?.in).getFullYear()}function yn(e,t){return+I(e)>+I(t)}function bn(e,t){return+I(e)<+I(t)}function xn(e,t,n){let[r,i]=ut(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function Sn(e,t,n){let[r,i]=ut(n?.in,e,t);return r.getFullYear()===i.getFullYear()}function Cn(e,t,n){let r=I(e,n?.in),i=r.getFullYear(),a=r.getDate(),o=F(n?.in||e,0);o.setFullYear(i,t,15),o.setHours(0,0,0,0);let s=gn(o);return r.setMonth(t,Math.min(a,s)),r}function wn(e,t,n){let r=I(e,n?.in);return isNaN(+r)?F(n?.in||e,NaN):(r.setFullYear(t),r)}function Tn(e,t,n=`long`){return new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(` `)}var En={},Dn={};function V(e,t){try{let n=(En[e]||=new Intl.DateTimeFormat(`en-US`,{timeZone:e,timeZoneName:`longOffset`}).format)(t).split(`GMT`)[1];return n in Dn?Dn[n]:kn(n,n.split(`:`))}catch{if(e in Dn)return Dn[e];let t=e?.match(On);return t?kn(e,t.slice(1)):NaN}}var On=/([+-]\d\d):?(\d\d)?/;function kn(e,t){let n=+(t[0]||0),r=+(t[1]||0),i=(t[2]||0)/60;return Dn[e]=n*60+r>0?n*60+r+i:n*60-r-i}var An=class e extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]==`string`&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(V(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]==`number`&&(e.length===1||e.length===2&&typeof e[1]!=`number`)?this.setTime(e[0]):typeof e[0]==`string`?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),Pn(this,NaN),Mn(this)):this.setTime(Date.now())}static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}withTimeZone(t){return new e(+this,t)}getTimezoneOffset(){let e=-V(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),Mn(this),+this}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},jn=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!jn.test(e))return;let t=e.replace(jn,`$1UTC`);An.prototype[t]&&(e.startsWith(`get`)?An.prototype[e]=function(){return this.internal[t]()}:(An.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),Nn(this),+this},An.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),Mn(this),+this}))});function Mn(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-V(e.timeZone,e)*60))}function Nn(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),Pn(e)}function Pn(e){let t=V(e.timeZone,e),n=t>0?Math.floor(t):Math.ceil(t),r=new Date(+e);r.setUTCHours(r.getUTCHours()-1);let i=-new Date(+e).getTimezoneOffset(),a=i- -new Date(+r).getTimezoneOffset(),o=Date.prototype.getHours.apply(e)!==e.internal.getUTCHours();a&&o&&e.internal.setUTCMinutes(e.internal.getUTCMinutes()+a);let s=i-n;s&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+s);let c=new Date(+e);c.setUTCSeconds(0);let l=i>0?c.getSeconds():(c.getSeconds()-60)%60,u=Math.round(-(V(e.timeZone,e)*60))%60;(u||l)&&(e.internal.setUTCSeconds(e.internal.getUTCSeconds()+u),Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+u+l));let d=V(e.timeZone,e),f=d>0?Math.floor(d):Math.ceil(d),p=-new Date(+e).getTimezoneOffset()-f,m=f!==n,h=p-s;if(m&&h){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+h);let t=V(e.timeZone,e),n=f-(t>0?Math.floor(t):Math.ceil(t));n&&(e.internal.setUTCMinutes(e.internal.getUTCMinutes()+n),Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+n))}}var H=class e extends An{static tz(t,...n){return n.length?new e(...n,t):new e(Date.now(),t)}toISOString(){let[e,t,n]=this.tzComponents(),r=`${e}${t}:${n}`;return this.internal.toISOString().slice(0,-1)+r}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){let[e,t,n,r]=this.internal.toUTCString().split(` `);return`${e?.slice(0,-1)} ${n} ${t} ${r}`}toTimeString(){let e=this.internal.toUTCString().split(` `)[4],[t,n,r]=this.tzComponents();return`${e} GMT${t}${n}${r} (${Tn(this.timeZone,this)})`}toLocaleString(e,t){return Date.prototype.toLocaleString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleDateString(e,t){return Date.prototype.toLocaleDateString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}toLocaleTimeString(e,t){return Date.prototype.toLocaleTimeString.call(this,e,{...t,timeZone:t?.timeZone||this.timeZone})}tzComponents(){let e=this.getTimezoneOffset();return[e>0?`-`:`+`,String(Math.floor(Math.abs(e)/60)).padStart(2,`0`),String(Math.abs(e)%60).padStart(2,`0`)]}withTimeZone(t){return new e(+this,t)}[Symbol.for(`constructDateFrom`)](t){return new e(+new Date(t),this.timeZone)}},Fn=5,In=4;function Ln(e,t){let n=t.startOfMonth(e),r=n.getDay()>0?n.getDay():7,i=t.addDays(e,-r+1),a=t.addDays(i,34);return t.getMonth(e)===t.getMonth(a)?Fn:In}function Rn(e,t){let n=t.startOfMonth(e),r=n.getDay();return r===1?n:r===0?t.addDays(n,-6):t.addDays(n,-1*(r-1))}function zn(e,t){let n=Rn(e,t),r=Ln(e,t);return t.addDays(n,r*7-1)}var Bn={...Ut,labels:{labelDayButton:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>B(e,t,{locale:Ut,...n});let a=i(e,`PPPP`);return t.today&&(a=`Today, ${a}`),t.selected&&(a=`${a}, selected`),a},labelMonthDropdown:`Choose the Month`,labelNext:`Go to the Next Month`,labelPrevious:`Go to the Previous Month`,labelWeekNumber:e=>`Week ${e}`,labelYearDropdown:`Choose the Year`,labelGrid:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>B(e,n,{locale:Ut,...t}),r(e,`LLLL yyyy`)},labelGridcell:(e,t,n,r)=>{let i;i=r&&typeof r.format==`function`?r.format.bind(r):(e,t)=>B(e,t,{locale:Ut,...n});let a=i(e,`PPPP`);return t?.today&&(a=`Today, ${a}`),a},labelNav:`Navigation bar`,labelWeekNumberHeader:`Week Number`,labelWeekday:(e,t,n)=>{let r;return r=n&&typeof n.format==`function`?n.format.bind(n):(e,n)=>B(e,n,{locale:Ut,...t}),r(e,`cccc`)}}},U=class e{constructor(e,t){this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?H.tz(this.options.timeZone):new(this.options.Date??Date),this.newDate=(e,t,n)=>this.overrides?.newDate?this.overrides.newDate(e,t,n):this.options.timeZone?new H(e,t,n,this.options.timeZone):new Date(e,t,n),this.addDays=(e,t)=>this.overrides?.addDays?this.overrides.addDays(e,t):nt(e,t),this.addMonths=(e,t)=>this.overrides?.addMonths?this.overrides.addMonths(e,t):rt(e,t),this.addWeeks=(e,t)=>this.overrides?.addWeeks?this.overrides.addWeeks(e,t):mt(e,t),this.addYears=(e,t)=>this.overrides?.addYears?this.overrides.addYears(e,t):ht(e,t),this.differenceInCalendarDays=(e,t)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(e,t):ft(e,t),this.differenceInCalendarMonths=(e,t)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(e,t):xt(e,t),this.eachMonthOfInterval=e=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(e):wt(e),this.eachYearOfInterval=e=>{let t=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(e):Ot(e),n=new Set(t.map(e=>this.getYear(e)));if(n.size===t.length)return t;let r=[];return n.forEach(e=>{r.push(new Date(e,0,1))}),r},this.endOfBroadcastWeek=e=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(e):zn(e,this),this.endOfISOWeek=e=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(e):At(e),this.endOfMonth=e=>this.overrides?.endOfMonth?this.overrides.endOfMonth(e):St(e),this.endOfWeek=(e,t)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(e,t):kt(e,this.options),this.endOfYear=e=>this.overrides?.endOfYear?this.overrides.endOfYear(e):Et(e),this.format=(e,t,n)=>{let r=this.overrides?.format?this.overrides.format(e,t,this.options):B(e,t,this.options);return this.options.numerals&&this.options.numerals!==`latn`?this.replaceDigits(r):r},this.getISOWeek=e=>this.overrides?.getISOWeek?this.overrides.getISOWeek(e):Gt(e),this.getMonth=(e,t)=>this.overrides?.getMonth?this.overrides.getMonth(e,this.options):_n(e,this.options),this.getYear=(e,t)=>this.overrides?.getYear?this.overrides.getYear(e,this.options):vn(e,this.options),this.getWeek=(e,t)=>this.overrides?.getWeek?this.overrides.getWeek(e,this.options):Jt(e,this.options),this.isAfter=(e,t)=>this.overrides?.isAfter?this.overrides.isAfter(e,t):yn(e,t),this.isBefore=(e,t)=>this.overrides?.isBefore?this.overrides.isBefore(e,t):bn(e,t),this.isDate=e=>this.overrides?.isDate?this.overrides.isDate(e):yt(e),this.isSameDay=(e,t)=>this.overrides?.isSameDay?this.overrides.isSameDay(e,t):vt(e,t),this.isSameMonth=(e,t)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(e,t):xn(e,t),this.isSameYear=(e,t)=>this.overrides?.isSameYear?this.overrides.isSameYear(e,t):Sn(e,t),this.max=e=>this.overrides?.max?this.overrides.max(e):gt(e),this.min=e=>this.overrides?.min?this.overrides.min(e):_t(e),this.setMonth=(e,t)=>this.overrides?.setMonth?this.overrides.setMonth(e,t):Cn(e,t),this.setYear=(e,t)=>this.overrides?.setYear?this.overrides.setYear(e,t):wn(e,t),this.startOfBroadcastWeek=(e,t)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(e,this):Rn(e,this),this.startOfDay=e=>this.overrides?.startOfDay?this.overrides.startOfDay(e):dt(e),this.startOfISOWeek=e=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(e):st(e),this.startOfMonth=e=>this.overrides?.startOfMonth?this.overrides.startOfMonth(e):Tt(e),this.startOfWeek=(e,t)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(e,this.options):ot(e,this.options),this.startOfYear=e=>this.overrides?.startOfYear?this.overrides.startOfYear(e):Dt(e),this.options={locale:Bn,...e},this.overrides=t}getDigitMap(){let{numerals:e=`latn`}=this.options,t=new Intl.NumberFormat(`en-US`,{numberingSystem:e}),n={};for(let e=0;e<10;e++)n[e.toString()]=t.format(e);return n}replaceDigits(e){let t=this.getDigitMap();return e.replace(/\d/g,e=>t[e]||e)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){let t=this.options.locale?.code;return t&&e.yearFirstLocales.has(t)?`year-first`:`month-first`}formatMonthYear(t){let{locale:n,timeZone:r,numerals:i}=this.options,a=n?.code;if(a&&e.yearFirstLocales.has(a))try{return new Intl.DateTimeFormat(a,{month:`long`,year:`numeric`,timeZone:r,numberingSystem:i}).format(t)}catch{}let o=this.getMonthYearOrder()===`year-first`?`y LLLL`:`LLLL y`;return this.format(t,o)}};U.yearFirstLocales=new Set([`eu`,`hu`,`ja`,`ja-Hira`,`ja-JP`,`ko`,`ko-KR`,`lt`,`lt-LT`,`lv`,`lv-LV`,`mn`,`mn-MN`,`zh`,`zh-CN`,`zh-HK`,`zh-TW`]);var W=new U,Vn=class{constructor(e,t,n=W){this.date=e,this.displayMonth=t,this.outside=!(!t||n.isSameMonth(e,t)),this.dateLib=n,this.isoDate=n.format(e,`yyyy-MM-dd`),this.displayMonthId=n.format(t,`yyyy-MM`),this.dateMonthId=n.format(e,`yyyy-MM`)}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}},Hn=class{constructor(e,t){this.date=e,this.weeks=t}},Un=class{constructor(e,t){this.days=t,this.weekNumber=e}};function Wn(e){return j.createElement(`span`,{...e})}function Gn(e){let{size:t=24,orientation:n=`left`,className:r,style:i}=e;return j.createElement(`svg`,{className:r,style:i,width:t,height:t,viewBox:`0 0 24 24`},n===`up`&&j.createElement(`polygon`,{points:`6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28`}),n===`down`&&j.createElement(`polygon`,{points:`6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72`}),n===`left`&&j.createElement(`polygon`,{points:`16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20`}),n===`right`&&j.createElement(`polygon`,{points:`8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20`}))}function Kn(e){let{day:t,modifiers:n,...r}=e;return j.createElement(`td`,{...r})}function qn(e){let{day:t,modifiers:n,...r}=e,i=j.useRef(null);return j.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),j.createElement(`button`,{ref:i,...r})}var G;(function(e){e.Root=`root`,e.Chevron=`chevron`,e.Day=`day`,e.DayButton=`day_button`,e.CaptionLabel=`caption_label`,e.Dropdowns=`dropdowns`,e.Dropdown=`dropdown`,e.DropdownRoot=`dropdown_root`,e.Footer=`footer`,e.MonthGrid=`month_grid`,e.MonthCaption=`month_caption`,e.MonthsDropdown=`months_dropdown`,e.Month=`month`,e.Months=`months`,e.Nav=`nav`,e.NextMonthButton=`button_next`,e.PreviousMonthButton=`button_previous`,e.Week=`week`,e.Weeks=`weeks`,e.Weekday=`weekday`,e.Weekdays=`weekdays`,e.WeekNumber=`week_number`,e.WeekNumberHeader=`week_number_header`,e.YearsDropdown=`years_dropdown`})(G||={});var K;(function(e){e.disabled=`disabled`,e.hidden=`hidden`,e.outside=`outside`,e.focused=`focused`,e.today=`today`})(K||={});var q;(function(e){e.range_end=`range_end`,e.range_middle=`range_middle`,e.range_start=`range_start`,e.selected=`selected`})(q||={});var J;(function(e){e.weeks_before_enter=`weeks_before_enter`,e.weeks_before_exit=`weeks_before_exit`,e.weeks_after_enter=`weeks_after_enter`,e.weeks_after_exit=`weeks_after_exit`,e.caption_after_enter=`caption_after_enter`,e.caption_after_exit=`caption_after_exit`,e.caption_before_enter=`caption_before_enter`,e.caption_before_exit=`caption_before_exit`})(J||={});var Jn=(0,j.createContext)(void 0);function Yn(){let e=(0,j.useContext)(Jn);if(e===void 0)throw Error(`useDayPicker() must be used within a custom component.`);return e}function Xn(e){let{options:t,className:n,...r}=e,{classNames:i,components:a,styles:o}=Yn(),s=[i[G.Dropdown],n].join(` `),c=t?.find(({value:e})=>e===r.value);return j.createElement(`span`,{"data-disabled":r.disabled,className:i[G.DropdownRoot],style:o?.[G.DropdownRoot]},j.createElement(a.Select,{className:s,...r},t?.map(({value:e,label:t,disabled:n})=>j.createElement(a.Option,{key:e,value:e,disabled:n},t))),j.createElement(`span`,{className:i[G.CaptionLabel],style:o?.[G.CaptionLabel],"aria-hidden":!0},c?.label,j.createElement(a.Chevron,{orientation:`down`,size:18,className:i[G.Chevron],style:o?.[G.Chevron]})))}function Zn(e){return j.createElement(`div`,{...e})}function Qn(e){return j.createElement(`div`,{...e})}function $n(e){let{calendarMonth:t,displayIndex:n,...r}=e;return j.createElement(`div`,{...r},e.children)}function er(e){let{calendarMonth:t,displayIndex:n,...r}=e;return j.createElement(`div`,{...r})}function tr(e){return j.createElement(`table`,{...e})}function nr(e){return j.createElement(`div`,{...e})}function rr(e){let{components:t}=Yn();return j.createElement(t.Dropdown,{...e})}function ir(e){let{onPreviousClick:t,onNextClick:n,previousMonth:r,nextMonth:i,...a}=e,{components:o,classNames:s,styles:c,labels:{labelPrevious:l,labelNext:u}}=Yn(),d=(0,j.useCallback)(e=>{i&&n?.(e)},[i,n]),f=(0,j.useCallback)(e=>{r&&t?.(e)},[r,t]);return j.createElement(`nav`,{...a},j.createElement(o.PreviousMonthButton,{type:`button`,className:s[G.PreviousMonthButton],style:c?.[G.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":!r||void 0,"aria-label":l(r),onClick:f},j.createElement(o.Chevron,{disabled:!r||void 0,className:s[G.Chevron],style:c?.[G.Chevron],orientation:`left`})),j.createElement(o.NextMonthButton,{type:`button`,className:s[G.NextMonthButton],style:c?.[G.NextMonthButton],tabIndex:i?void 0:-1,"aria-disabled":!i||void 0,"aria-label":u(i),onClick:d},j.createElement(o.Chevron,{disabled:!i||void 0,orientation:`right`,className:s[G.Chevron],style:c?.[G.Chevron]})))}function ar(e){return j.createElement(`button`,{...e})}function or(e){return j.createElement(`option`,{...e})}function sr(e){return j.createElement(`button`,{...e})}function cr(e){let{rootRef:t,...n}=e;return j.createElement(`div`,{...n,ref:t})}function lr(e){return j.createElement(`select`,{...e})}function ur(e){let{week:t,...n}=e;return j.createElement(`tr`,{...n})}function dr(e){return j.createElement(`th`,{...e})}function fr(e){return j.createElement(`thead`,{"aria-hidden":!0},j.createElement(`tr`,{...e}))}function pr(e){let{week:t,...n}=e;return j.createElement(`th`,{...n})}function mr(e){return j.createElement(`th`,{...e})}function hr(e){return j.createElement(`tbody`,{...e})}function gr(e){let{components:t}=Yn();return j.createElement(t.Dropdown,{...e})}var _r=e({CaptionLabel:()=>Wn,Chevron:()=>Gn,Day:()=>Kn,DayButton:()=>qn,Dropdown:()=>Xn,DropdownNav:()=>Zn,Footer:()=>Qn,Month:()=>$n,MonthCaption:()=>er,MonthGrid:()=>tr,Months:()=>nr,MonthsDropdown:()=>rr,Nav:()=>ir,NextMonthButton:()=>ar,Option:()=>or,PreviousMonthButton:()=>sr,Root:()=>cr,Select:()=>lr,Week:()=>ur,WeekNumber:()=>pr,WeekNumberHeader:()=>mr,Weekday:()=>dr,Weekdays:()=>fr,Weeks:()=>hr,YearsDropdown:()=>gr});function Y(e,t,n=!1,r=W){let{from:i,to:a}=e,{differenceInCalendarDays:o,isSameDay:s}=r;return i&&a?(o(a,i)<0&&([i,a]=[a,i]),o(t,i)>=+!!n&&o(a,t)>=+!!n):!n&&a?s(a,t):!n&&i?s(i,t):!1}function vr(e){return!!(e&&typeof e==`object`&&`before`in e&&`after`in e)}function yr(e){return!!(e&&typeof e==`object`&&`from`in e)}function br(e){return!!(e&&typeof e==`object`&&`after`in e)}function xr(e){return!!(e&&typeof e==`object`&&`before`in e)}function Sr(e){return!!(e&&typeof e==`object`&&`dayOfWeek`in e)}function Cr(e,t){return Array.isArray(e)&&e.every(t.isDate)}function X(e,t,n=W){let r=Array.isArray(t)?t:[t],{isSameDay:i,differenceInCalendarDays:a,isAfter:o}=n;return r.some(t=>{if(typeof t==`boolean`)return t;if(n.isDate(t))return i(e,t);if(Cr(t,n))return t.some(t=>i(e,t));if(yr(t))return Y(t,e,!1,n);if(Sr(t))return Array.isArray(t.dayOfWeek)?t.dayOfWeek.includes(e.getDay()):t.dayOfWeek===e.getDay();if(vr(t)){let n=a(t.before,e),r=a(t.after,e),i=n>0,s=r<0;return o(t.before,t.after)?s&&i:i||s}return br(t)?a(e,t.after)>0:xr(t)?a(t.before,e)>0:typeof t==`function`&&t(e)})}function wr(e,t,n,r,i){let{disabled:a,hidden:o,modifiers:s,showOutsideDays:c,broadcastCalendar:l,today:u=i.today()}=t,{isSameDay:d,isSameMonth:f,startOfMonth:p,isBefore:m,endOfMonth:h,isAfter:g}=i,_=n&&p(n),v=r&&h(r),y={[K.focused]:[],[K.outside]:[],[K.disabled]:[],[K.hidden]:[],[K.today]:[]},b={};for(let t of e){let{date:e,displayMonth:n}=t,r=!(!n||f(e,n)),p=!!(_&&m(e,_)),h=!!(v&&g(e,v)),x=!!(a&&X(e,a,i)),S=!!(o&&X(e,o,i))||p||h||!l&&!c&&r||l&&c===!1&&r,ee=d(e,u);r&&y.outside.push(t),x&&y.disabled.push(t),S&&y.hidden.push(t),ee&&y.today.push(t),s&&Object.keys(s).forEach(n=>{let r=s?.[n];r&&X(e,r,i)&&(b[n]?b[n].push(t):b[n]=[t])})}return e=>{let t={[K.focused]:!1,[K.disabled]:!1,[K.hidden]:!1,[K.outside]:!1,[K.today]:!1},n={};for(let n in y)t[n]=y[n].some(t=>t===e);for(let t in b)n[t]=b[t].some(t=>t===e);return{...t,...n}}}function Tr(e,t,n={}){return Object.entries(e).filter(([,e])=>e===!0).reduce((e,[r])=>(n[r]?e.push(n[r]):t[K[r]]?e.push(t[K[r]]):t[q[r]]&&e.push(t[q[r]]),e),[t[G.Day]])}function Er(e){return{..._r,...e}}function Dr(e){let t={"data-mode":e.mode??void 0,"data-required":`required`in e?e.required:void 0,"data-multiple-months":e.numberOfMonths&&e.numberOfMonths>1||void 0,"data-week-numbers":e.showWeekNumber||void 0,"data-broadcast-calendar":e.broadcastCalendar||void 0,"data-nav-layout":e.navLayout||void 0};return Object.entries(e).forEach(([e,n])=>{e.startsWith(`data-`)&&(t[e]=n)}),t}function Or(){let e={};for(let t in G)e[G[t]]=`rdp-${G[t]}`;for(let t in K)e[K[t]]=`rdp-${K[t]}`;for(let t in q)e[q[t]]=`rdp-${q[t]}`;for(let t in J)e[J[t]]=`rdp-${J[t]}`;return e}function kr(e,t,n){return(n??new U(t)).formatMonthYear(e)}function Ar(e,t,n){return(n??new U(t)).format(e,`d`)}function jr(e,t=W){return t.format(e,`LLLL`)}function Mr(e,t,n){return(n??new U(t)).format(e,`cccccc`)}function Nr(e,t=W){return e<10?t.formatNumber(`0${e.toLocaleString()}`):t.formatNumber(`${e.toLocaleString()}`)}function Pr(){return``}function Fr(e,t=W){return t.format(e,`yyyy`)}var Ir=e({formatCaption:()=>kr,formatDay:()=>Ar,formatMonthDropdown:()=>jr,formatWeekNumber:()=>Nr,formatWeekNumberHeader:()=>Pr,formatWeekdayName:()=>Mr,formatYearDropdown:()=>Fr});function Lr(e){return{...Ir,...e}}function Rr(e,t,n,r){let i=(r??new U(n)).format(e,`PPPP`);return t.today&&(i=`Today, ${i}`),t.selected&&(i=`${i}, selected`),i}function zr(e,t,n){return(n??new U(t)).formatMonthYear(e)}function Br(e,t,n,r){let i=(r??new U(n)).format(e,`PPPP`);return t?.today&&(i=`Today, ${i}`),i}function Vr(e){return`Choose the Month`}function Hr(){return``}var Ur=`Go to the Next Month`;function Wr(e,t){return Ur}function Gr(e){return`Go to the Previous Month`}function Kr(e,t,n){return(n??new U(t)).format(e,`cccc`)}function qr(e,t){return`Week ${e}`}function Jr(e){return`Week Number`}function Yr(e){return`Choose the Year`}var Xr=e({labelDayButton:()=>Rr,labelGrid:()=>zr,labelGridcell:()=>Br,labelMonthDropdown:()=>Vr,labelNav:()=>Hr,labelNext:()=>Wr,labelPrevious:()=>Gr,labelWeekNumber:()=>qr,labelWeekNumberHeader:()=>Jr,labelWeekday:()=>Kr,labelYearDropdown:()=>Yr}),Z=(e,t,n)=>t||(n?typeof n==`function`?n:(...e)=>n:e);function Zr(e,t){let n=t.locale?.labels??{};return{...Xr,...e??{},labelDayButton:Z(Rr,e?.labelDayButton,n.labelDayButton),labelMonthDropdown:Z(Vr,e?.labelMonthDropdown,n.labelMonthDropdown),labelNext:Z(Wr,e?.labelNext,n.labelNext),labelPrevious:Z(Gr,e?.labelPrevious,n.labelPrevious),labelWeekNumber:Z(qr,e?.labelWeekNumber,n.labelWeekNumber),labelYearDropdown:Z(Yr,e?.labelYearDropdown,n.labelYearDropdown),labelGrid:Z(zr,e?.labelGrid,n.labelGrid),labelGridcell:Z(Br,e?.labelGridcell,n.labelGridcell),labelNav:Z(Hr,e?.labelNav,n.labelNav),labelWeekNumberHeader:Z(Jr,e?.labelWeekNumberHeader,n.labelWeekNumberHeader),labelWeekday:Z(Kr,e?.labelWeekday,n.labelWeekday)}}function Qr(e,t,n,r,i){let{startOfMonth:a,startOfYear:o,endOfYear:s,eachMonthOfInterval:c,getMonth:l}=i;return c({start:o(e),end:s(e)}).map(e=>{let o=r.formatMonthDropdown(e,i);return{value:l(e),label:o,disabled:t&&e<a(t)||n&&e>a(n)||!1}})}function $r(e,t={},n={}){let r={...t?.[G.Day]};return Object.entries(e).filter(([,e])=>e===!0).forEach(([e])=>{r={...r,...n?.[e]}}),r}function ei(e,t,n,r){let i=r??e.today(),a=n?e.startOfBroadcastWeek(i,e):t?e.startOfISOWeek(i):e.startOfWeek(i),o=[];for(let t=0;t<7;t++){let n=e.addDays(a,t);o.push(n)}return o}function ti(e,t,n,r,i=!1){if(!e||!t)return;let{startOfYear:a,endOfYear:o,eachYearOfInterval:s,getYear:c}=r,l=s({start:a(e),end:o(t)});return i&&l.reverse(),l.map(e=>{let t=n.formatYearDropdown(e,r);return{value:c(e),label:t,disabled:!1}})}function ni(e,t={}){let{weekStartsOn:n,locale:r}=t,i=n??r?.options?.weekStartsOn??0,a=t=>{let n=typeof t==`number`||typeof t==`string`?new Date(t):t;return new H(n.getFullYear(),n.getMonth(),n.getDate(),12,0,0,e)},o=e=>{let t=a(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)};return{today:()=>a(H.tz(e)),newDate:(t,n,r)=>new H(t,n,r,12,0,0,e),startOfDay:e=>a(e),startOfWeek:(e,t)=>{let n=a(e),r=t?.weekStartsOn??i,o=(n.getDay()-r+7)%7;return n.setDate(n.getDate()-o),n},startOfISOWeek:e=>{let t=a(e),n=(t.getDay()-1+7)%7;return t.setDate(t.getDate()-n),t},startOfMonth:e=>{let t=a(e);return t.setDate(1),t},startOfYear:e=>{let t=a(e);return t.setMonth(0,1),t},endOfWeek:(e,t)=>{let n=a(e),r=(((t?.weekStartsOn??i)+6)%7-n.getDay()+7)%7;return n.setDate(n.getDate()+r),n},endOfISOWeek:e=>{let t=a(e),n=(7-t.getDay())%7;return t.setDate(t.getDate()+n),t},endOfMonth:e=>{let t=a(e);return t.setMonth(t.getMonth()+1,0),t},endOfYear:e=>{let t=a(e);return t.setMonth(11,31),t},eachMonthOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new H(n.getFullYear(),n.getMonth(),1,12,0,0,e),s=r.getFullYear()*12+r.getMonth();for(;o.getFullYear()*12+o.getMonth()<=s;)i.push(new H(o,e)),o.setMonth(o.getMonth()+1,1);return i},addDays:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t),n},addWeeks:(e,t)=>{let n=a(e);return n.setDate(n.getDate()+t*7),n},addMonths:(e,t)=>{let n=a(e);return n.setMonth(n.getMonth()+t),n},addYears:(e,t)=>{let n=a(e);return n.setFullYear(n.getFullYear()+t),n},eachYearOfInterval:t=>{let n=a(t.start),r=a(t.end),i=[],o=new H(n.getFullYear(),0,1,12,0,0,e);for(;o.getFullYear()<=r.getFullYear();)i.push(new H(o,e)),o.setFullYear(o.getFullYear()+1,0,1);return i},getWeek:(e,t)=>Jt(o(e),{weekStartsOn:t?.weekStartsOn??i,firstWeekContainsDate:t?.firstWeekContainsDate??r?.options?.firstWeekContainsDate??1}),getISOWeek:e=>Gt(o(e)),differenceInCalendarDays:(e,t)=>ft(o(e),o(t)),differenceInCalendarMonths:(e,t)=>xt(o(e),o(t))}}var ri=e=>e instanceof HTMLElement?e:null,ii=e=>[...e.querySelectorAll(`[data-animated-month]`)??[]],ai=e=>ri(e.querySelector(`[data-animated-month]`)),oi=e=>ri(e.querySelector(`[data-animated-caption]`)),si=e=>ri(e.querySelector(`[data-animated-weeks]`)),ci=e=>ri(e.querySelector(`[data-animated-nav]`)),li=e=>ri(e.querySelector(`[data-animated-weekdays]`));function ui(e,t,{classNames:n,months:r,focused:i,dateLib:a}){let o=(0,j.useRef)(null),s=(0,j.useRef)(r),c=(0,j.useRef)(!1);(0,j.useLayoutEffect)(()=>{let l=s.current;if(s.current=r,!t||!e.current||!(e.current instanceof HTMLElement)||r.length===0||l.length===0||r.length!==l.length)return;let u=a.isSameMonth(r[0].date,l[0].date),d=a.isAfter(r[0].date,l[0].date),f=d?n[J.caption_after_enter]:n[J.caption_before_enter],p=d?n[J.weeks_after_enter]:n[J.weeks_before_enter],m=o.current,h=e.current.cloneNode(!0);if(h instanceof HTMLElement?(ii(h).forEach(e=>{if(!(e instanceof HTMLElement))return;let t=ai(e);t&&e.contains(t)&&e.removeChild(t);let n=oi(e);n&&n.classList.remove(f);let r=si(e);r&&r.classList.remove(p)}),o.current=h):o.current=null,c.current||u||i)return;let g=m instanceof HTMLElement?ii(m):[],_=ii(e.current);if(_?.every(e=>e instanceof HTMLElement)&&g?.every(e=>e instanceof HTMLElement)){c.current=!0;let t=[];e.current.style.isolation=`isolate`;let r=ci(e.current);r&&(r.style.zIndex=`1`),_.forEach((i,a)=>{let o=g[a];if(!o)return;i.style.position=`relative`,i.style.overflow=`hidden`;let s=oi(i);s&&s.classList.add(f);let l=si(i);l&&l.classList.add(p);let u=()=>{c.current=!1,e.current&&(e.current.style.isolation=``),r&&(r.style.zIndex=``),s&&s.classList.remove(f),l&&l.classList.remove(p),i.style.position=``,i.style.overflow=``,i.contains(o)&&i.removeChild(o)};t.push(u),o.style.pointerEvents=`none`,o.style.position=`absolute`,o.style.overflow=`hidden`,o.setAttribute(`aria-hidden`,`true`);let m=li(o);m&&(m.style.opacity=`0`);let h=oi(o);h&&(h.classList.add(d?n[J.caption_before_exit]:n[J.caption_after_exit]),h.addEventListener(`animationend`,u));let _=si(o);_&&_.classList.add(d?n[J.weeks_before_exit]:n[J.weeks_after_exit]),i.insertBefore(o,i.firstChild)})}})}function di(e,t,n,r){let i=e[0],a=e[e.length-1],{ISOWeek:o,fixedWeeks:s,broadcastCalendar:c}=n??{},{addDays:l,differenceInCalendarDays:u,differenceInCalendarMonths:d,endOfBroadcastWeek:f,endOfISOWeek:p,endOfMonth:m,endOfWeek:h,isAfter:g,startOfBroadcastWeek:_,startOfISOWeek:v,startOfWeek:y}=r,b=c?_(i,r):o?v(i):y(i),x=c?f(a):o?p(m(a)):h(m(a)),S=t&&(c?f(t):o?p(t):h(t)),ee=u(S&&g(x,S)?S:x,b),te=d(a,i)+1,C=[];for(let e=0;e<=ee;e++){let t=l(b,e);C.push(t)}let w=(c?35:42)*te;if(s&&C.length<w){let e=w-C.length;for(let t=0;t<e;t++){let e=l(C[C.length-1],1);C.push(e)}}return C}function fi(e){let t=[];return e.reduce((e,n)=>{let r=n.weeks.reduce((e,t)=>e.concat(t.days.slice()),t.slice());return e.concat(r.slice())},t.slice())}function pi(e,t,n,r){let{numberOfMonths:i=1}=n,a=[];for(let n=0;n<i;n++){let i=r.addMonths(e,n);if(t&&i>t)break;a.push(i)}return a}function mi(e,t,n,r){let{month:i,defaultMonth:a,today:o=r.today(),numberOfMonths:s=1}=e,c=i||a||o,{differenceInCalendarMonths:l,addMonths:u,startOfMonth:d}=r;return n&&l(n,c)<s-1&&(c=u(n,-1*(s-1))),t&&l(c,t)<0&&(c=t),d(c)}function hi(e,t,n,r){let{addDays:i,endOfBroadcastWeek:a,endOfISOWeek:o,endOfMonth:s,endOfWeek:c,getISOWeek:l,getWeek:u,startOfBroadcastWeek:d,startOfISOWeek:f,startOfWeek:p}=r,m=e.reduce((e,m)=>{let h=n.broadcastCalendar?d(m,r):n.ISOWeek?f(m):p(m),g=n.broadcastCalendar?a(m):n.ISOWeek?o(s(m)):c(s(m)),_=t.filter(e=>e>=h&&e<=g),v=n.broadcastCalendar?35:42;if(n.fixedWeeks&&_.length<v){let e=t.filter(e=>{let t=v-_.length;return e>g&&e<=i(g,t)});_.push(...e)}let y=new Hn(m,_.reduce((e,t)=>{let i=n.ISOWeek?l(t):u(t),a=e.find(e=>e.weekNumber===i),o=new Vn(t,m,r);return a?a.days.push(o):e.push(new Un(i,[o])),e},[]));return e.push(y),e},[]);return n.reverseMonths?m.reverse():m}function gi(e,t){let{startMonth:n,endMonth:r}=e,{startOfYear:i,startOfDay:a,startOfMonth:o,endOfMonth:s,addYears:c,endOfYear:l,today:u}=t,d=e.captionLayout===`dropdown`||e.captionLayout===`dropdown-years`;return n?n=o(n):!n&&d&&(n=i(c(e.today??u(),-100))),r?r=s(r):!r&&d&&(r=l(e.today??u())),[n&&a(n),r&&a(r)]}function _i(e,t,n,r){if(n.disableNavigation)return;let{pagedNavigation:i,numberOfMonths:a=1}=n,{startOfMonth:o,addMonths:s,differenceInCalendarMonths:c}=r,l=i?a:1,u=o(e);if(!t||!(c(t,e)<a))return s(u,l)}function vi(e,t,n,r){if(n.disableNavigation)return;let{pagedNavigation:i,numberOfMonths:a}=n,{startOfMonth:o,addMonths:s,differenceInCalendarMonths:c}=r,l=i?a??1:1,u=o(e);if(!t||!(c(u,t)<=0))return s(u,-l)}function yi(e){return e.reduce((e,t)=>e.concat(t.weeks.slice()),[].slice())}function bi(e,t){let[n,r]=(0,j.useState)(e);return[t===void 0?n:t,r]}function xi(e,t){let[n,r]=gi(e,t),{startOfMonth:i,endOfMonth:a}=t,o=mi(e,n,r,t),[s,c]=bi(o,e.month?o:void 0);(0,j.useEffect)(()=>{let i=mi(e,n,r,t);c(i)},[e.timeZone]);let{months:l,weeks:u,days:d,previousMonth:f,nextMonth:p}=(0,j.useMemo)(()=>{let i=pi(s,r,{numberOfMonths:e.numberOfMonths},t),o=hi(i,di(i,e.endMonth?a(e.endMonth):void 0,{ISOWeek:e.ISOWeek,fixedWeeks:e.fixedWeeks,broadcastCalendar:e.broadcastCalendar},t),{broadcastCalendar:e.broadcastCalendar,fixedWeeks:e.fixedWeeks,ISOWeek:e.ISOWeek,reverseMonths:e.reverseMonths},t);return{months:o,weeks:yi(o),days:fi(o),previousMonth:vi(s,n,e,t),nextMonth:_i(s,r,e,t)}},[t,s.getTime(),r?.getTime(),n?.getTime(),e.disableNavigation,e.broadcastCalendar,e.endMonth?.getTime(),e.fixedWeeks,e.ISOWeek,e.numberOfMonths,e.pagedNavigation,e.reverseMonths]),{disableNavigation:m,onMonthChange:h}=e,g=e=>u.some(t=>t.days.some(t=>t.isEqualTo(e))),_=e=>{if(m)return;let t=i(e);n&&t<i(n)&&(t=i(n)),r&&t>i(r)&&(t=i(r)),c(t),h?.(t)};return{months:l,weeks:u,days:d,navStart:n,navEnd:r,previousMonth:f,nextMonth:p,goToMonth:_,goToDay:e=>{g(e)||_(e.date)}}}var Q;(function(e){e[e.Today=0]=`Today`,e[e.Selected=1]=`Selected`,e[e.LastFocused=2]=`LastFocused`,e[e.FocusedModifier=3]=`FocusedModifier`})(Q||={});function Si(e){return!e[K.disabled]&&!e[K.hidden]&&!e[K.outside]}function Ci(e,t,n,r){let i,a=-1;for(let o of e){let e=t(o);Si(e)&&(e[K.focused]&&a<Q.FocusedModifier?(i=o,a=Q.FocusedModifier):r?.isEqualTo(o)&&a<Q.LastFocused?(i=o,a=Q.LastFocused):n(o.date)&&a<Q.Selected?(i=o,a=Q.Selected):e[K.today]&&a<Q.Today&&(i=o,a=Q.Today))}return i||=e.find(e=>Si(t(e))),i}function wi(e,t,n,r,i,a,o){let{ISOWeek:s,broadcastCalendar:c}=a,{addDays:l,addMonths:u,addWeeks:d,addYears:f,endOfBroadcastWeek:p,endOfISOWeek:m,endOfWeek:h,max:g,min:_,startOfBroadcastWeek:v,startOfISOWeek:y,startOfWeek:b}=o,x={day:l,week:d,month:u,year:f,startOfWeek:e=>c?v(e,o):s?y(e):b(e),endOfWeek:e=>c?p(e):s?m(e):h(e)}[e](n,t===`after`?1:-1);return t===`before`&&r?x=g([r,x]):t===`after`&&i&&(x=_([i,x])),x}function Ti(e,t,n,r,i,a,o,s=0){if(s>365)return;let c=wi(e,t,n.date,r,i,a,o),l=!!(a.disabled&&X(c,a.disabled,o)),u=!!(a.hidden&&X(c,a.hidden,o)),d=new Vn(c,c,o);return!l&&!u?d:Ti(e,t,d,r,i,a,o,s+1)}function Ei(e,t,n,r,i){let{autoFocus:a}=e,[o,s]=(0,j.useState)(),c=Ci(t.days,n,r||(()=>!1),o),[l,u]=(0,j.useState)(a?c:void 0);return(0,j.useEffect)(()=>{l&&c&&(t.days.some(e=>e.isEqualTo(l))||u(c))},[t.days,l,c]),{isFocusTarget:e=>!!c?.isEqualTo(e),setFocused:u,focused:l,blur:()=>{s(l),u(void 0)},moveFocus:(n,r)=>{if(!l)return;let a=Ti(n,r,l,t.navStart,t.navEnd,e,i);a&&(!e.disableNavigation||t.days.some(e=>e.isEqualTo(a)))&&(t.goToDay(a),u(a))}}}function Di(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=bi(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t,l=e=>s?.some(t=>c(t,e))??!1,{min:u,max:d}=e;return{selected:s,select:(e,t,n)=>{let a=[...s??[]];if(l(e)){if(s?.length===u||r&&s?.length===1)return;a=s?.filter(t=>!c(t,e))}else a=s?.length===d?[e]:[...a,e];return i||o(a),i?.(a,e,t,n),a},isSelected:l}}function Oi(e,t,n=0,r=0,i=!1,a=W){let{from:o,to:s}=t||{},{isSameDay:c,isAfter:l,isBefore:u}=a,d;if(!o&&!s)d={from:e,to:n>0?void 0:e};else if(o&&!s)d=c(o,e)?n===0?{from:o,to:e}:i?{from:o,to:void 0}:void 0:u(e,o)?{from:e,to:o}:{from:o,to:e};else if(o&&s){if(c(o,e)&&c(s,e))d=i?{from:o,to:s}:void 0;else if(c(o,e))d={from:o,to:n>0?void 0:e};else if(c(s,e))d={from:e,to:n>0?void 0:e};else if(u(e,o))d={from:e,to:s};else if(l(e,o))d={from:o,to:e};else if(l(e,s))d={from:o,to:e};else throw Error(`Invalid range`)}if(d?.from&&d?.to){let t=a.differenceInCalendarDays(d.to,d.from);(r>0&&t>r||n>1&&t<n)&&(d={from:e,to:void 0})}return d}function ki(e,t,n=W){let r=Array.isArray(t)?t:[t],i=e.from,a=n.differenceInCalendarDays(e.to,e.from),o=Math.min(a,6);for(let e=0;e<=o;e++){if(r.includes(i.getDay()))return!0;i=n.addDays(i,1)}return!1}function Ai(e,t,n=W){return Y(e,t.from,!1,n)||Y(e,t.to,!1,n)||Y(t,e.from,!1,n)||Y(t,e.to,!1,n)}function ji(e,t,n=W){let r=Array.isArray(t)?t:[t];if(r.filter(e=>typeof e!=`function`).some(t=>typeof t==`boolean`?t:n.isDate(t)?Y(e,t,!1,n):Cr(t,n)?t.some(t=>Y(e,t,!1,n)):yr(t)?t.from&&t.to?Ai(e,{from:t.from,to:t.to},n):!1:Sr(t)?ki(e,t.dayOfWeek,n):vr(t)?n.isAfter(t.before,t.after)?Ai(e,{from:n.addDays(t.after,1),to:n.addDays(t.before,-1)},n):X(e.from,t,n)||X(e.to,t,n):br(t)||xr(t)?X(e.from,t,n)||X(e.to,t,n):!1))return!0;let i=r.filter(e=>typeof e==`function`);if(i.length){let t=e.from,r=n.differenceInCalendarDays(e.to,e.from);for(let e=0;e<=r;e++){if(i.some(e=>e(t)))return!0;t=n.addDays(t,1)}}return!1}function Mi(e,t){let{disabled:n,excludeDisabled:r,resetOnSelect:i,selected:a,required:o,onSelect:s}=e,[c,l]=bi(a,s?a:void 0),u=s?a:c;return{selected:u,select:(a,c,d)=>{let{min:f,max:p}=e,m;if(a){let e=u?.from,n=u?.to,r=!!e&&!!n,s=!!e&&!!n&&t.isSameDay(e,n)&&t.isSameDay(a,e);m=i&&(r||!u?.from)?!o&&s?void 0:{from:a,to:void 0}:Oi(a,u,f,p,o,t)}return r&&n&&m?.from&&m.to&&ji({from:m.from,to:m.to},n,t)&&(m.from=a,m.to=void 0),s||l(m),s?.(m,a,c,d),m},isSelected:e=>u&&Y(u,e,!1,t)}}function Ni(e,t){let{selected:n,required:r,onSelect:i}=e,[a,o]=bi(n,i?n:void 0),s=i?n:a,{isSameDay:c}=t;return{selected:s,select:(e,t,n)=>{let a=e;return!r&&s&&s&&c(e,s)&&(a=void 0),i||o(a),i?.(a,e,t,n),a},isSelected:e=>s?c(s,e):!1}}function Pi(e,t){let n=Ni(e,t),r=Di(e,t),i=Mi(e,t);switch(e.mode){case`single`:return n;case`multiple`:return r;case`range`:return i;default:return}}function $(e,t){return e instanceof H&&e.timeZone===t?e:new H(e,t)}function Fi(e,t,n){if(!n)return $(e,t);let r=$(e,t),i=new H(r.getFullYear(),r.getMonth(),r.getDate(),12,0,0,t);return new Date(i.getTime())}function Ii(e,t,n){return typeof e==`boolean`||typeof e==`function`?e:e instanceof Date?Fi(e,t,n):Array.isArray(e)?e.map(e=>e instanceof Date?Fi(e,t,n):e):yr(e)?{...e,from:e.from?$(e.from,t):e.from,to:e.to?$(e.to,t):e.to}:vr(e)?{before:Fi(e.before,t,n),after:Fi(e.after,t,n)}:br(e)?{after:Fi(e.after,t,n)}:xr(e)?{before:Fi(e.before,t,n)}:e}function Li(e,t,n){return e&&(Array.isArray(e)?e.map(e=>Ii(e,t,n)):Ii(e,t,n))}function Ri(e){let t=e,n=t.timeZone;if(n&&(t={...e,timeZone:n},t.today&&(t.today=$(t.today,n)),t.month&&(t.month=$(t.month,n)),t.defaultMonth&&(t.defaultMonth=$(t.defaultMonth,n)),t.startMonth&&(t.startMonth=$(t.startMonth,n)),t.endMonth&&(t.endMonth=$(t.endMonth,n)),t.mode===`single`&&t.selected?t.selected=$(t.selected,n):t.mode===`multiple`&&t.selected?t.selected=t.selected?.map(e=>$(e,n)):t.mode===`range`&&t.selected&&(t.selected={from:t.selected.from?$(t.selected.from,n):t.selected.from,to:t.selected.to?$(t.selected.to,n):t.selected.to}),t.disabled!==void 0&&(t.disabled=Li(t.disabled,n)),t.hidden!==void 0&&(t.hidden=Li(t.hidden,n)),t.modifiers)){let e={};Object.keys(t.modifiers).forEach(r=>{e[r]=Li(t.modifiers?.[r],n)}),t.modifiers=e}let{components:r,formatters:i,labels:a,dateLib:o,locale:s,classNames:c}=(0,j.useMemo)(()=>{let e={...Bn,...t.locale},n=t.broadcastCalendar?1:t.weekStartsOn,r=t.noonSafe&&t.timeZone?ni(t.timeZone,{weekStartsOn:n,locale:e}):void 0,i=t.dateLib&&r?{...r,...t.dateLib}:t.dateLib??r,a=new U({locale:e,weekStartsOn:n,firstWeekContainsDate:t.firstWeekContainsDate,useAdditionalWeekYearTokens:t.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:t.useAdditionalDayOfYearTokens,timeZone:t.timeZone,numerals:t.numerals},i);return{dateLib:a,components:Er(t.components),formatters:Lr(t.formatters),labels:Zr(t.labels,a.options),locale:e,classNames:{...Or(),...t.classNames}}},[t.locale,t.broadcastCalendar,t.weekStartsOn,t.firstWeekContainsDate,t.useAdditionalWeekYearTokens,t.useAdditionalDayOfYearTokens,t.timeZone,t.numerals,t.dateLib,t.noonSafe,t.components,t.formatters,t.labels,t.classNames]);t.today||(t={...t,today:o.today()});let{captionLayout:l,mode:u,navLayout:d,numberOfMonths:f=1,onDayBlur:p,onDayClick:m,onDayFocus:h,onDayKeyDown:g,onDayMouseEnter:_,onDayMouseLeave:v,onNextClick:y,onPrevClick:b,showWeekNumber:x,styles:S}=t,{formatCaption:ee,formatDay:te,formatMonthDropdown:C,formatWeekNumber:w,formatWeekNumberHeader:ne,formatWeekdayName:re,formatYearDropdown:ie}=i,ae=xi(t,o),{days:oe,months:se,navStart:ce,navEnd:le,previousMonth:T,nextMonth:E,goToMonth:D}=ae,ue=wr(oe,t,ce,le,o),{isSelected:O,select:de,selected:fe}=Pi(t,o)??{},{blur:k,focused:pe,isFocusTarget:me,moveFocus:he,setFocused:A}=Ei(t,ae,ue,O??(()=>!1),o),{labelDayButton:ge,labelGridcell:_e,labelGrid:ve,labelMonthDropdown:ye,labelNav:be,labelPrevious:xe,labelNext:Se,labelWeekday:Ce,labelWeekNumber:we,labelWeekNumberHeader:Te,labelYearDropdown:Ee}=a,De=(0,j.useMemo)(()=>ei(o,t.ISOWeek,t.broadcastCalendar,t.today),[o,t.ISOWeek,t.broadcastCalendar,t.today]),Oe=u!==void 0||m!==void 0,ke=(0,j.useCallback)(()=>{T&&(D(T),b?.(T))},[T,D,b]),M=(0,j.useCallback)(()=>{E&&(D(E),y?.(E))},[D,E,y]),Ae=(0,j.useCallback)((e,t)=>n=>{n.preventDefault(),n.stopPropagation(),A(e),!t.disabled&&(de?.(e.date,t,n),m?.(e.date,t,n))},[de,m,A]),N=(0,j.useCallback)((e,t)=>n=>{A(e),h?.(e.date,t,n)},[h,A]),je=(0,j.useCallback)((e,t)=>n=>{k(),p?.(e.date,t,n)},[k,p]),Me=(0,j.useCallback)((e,n)=>r=>{let i={ArrowLeft:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`after`:`before`],ArrowRight:[r.shiftKey?`month`:`day`,t.dir===`rtl`?`before`:`after`],ArrowDown:[r.shiftKey?`year`:`week`,`after`],ArrowUp:[r.shiftKey?`year`:`week`,`before`],PageUp:[r.shiftKey?`year`:`month`,`before`],PageDown:[r.shiftKey?`year`:`month`,`after`],Home:[`startOfWeek`,`before`],End:[`endOfWeek`,`after`]};if(i[r.key]){r.preventDefault(),r.stopPropagation();let[e,t]=i[r.key];he(e,t)}g?.(e.date,n,r)},[he,g,t.dir]),Ne=(0,j.useCallback)((e,t)=>n=>{_?.(e.date,t,n)},[_]),Pe=(0,j.useCallback)((e,t)=>n=>{v?.(e.date,t,n)},[v]),Fe=(0,j.useCallback)((e,t)=>n=>{let r=Number(n.target.value),i=o.setMonth(o.startOfMonth(e),r);D(o.addMonths(i,-t))},[o,D]),P=(0,j.useCallback)((e,t)=>n=>{let r=Number(n.target.value),i=o.setYear(o.startOfMonth(e),r);D(o.addMonths(i,-t))},[o,D]),{className:Ie,style:Le}=(0,j.useMemo)(()=>({className:[c[G.Root],t.className].filter(Boolean).join(` `),style:{...S?.[G.Root],...t.style}}),[c,t.className,t.style,S]),Re=Dr(t),ze=e=>{let t=S?.[G.Dropdown],n=S?.[e];if(t||n)return{...t,...n}},Be=(0,j.useRef)(null);ui(Be,!!t.animate,{classNames:c,months:se,focused:pe,dateLib:o});let Ve={dayPickerProps:t,selected:fe,select:de,isSelected:O,months:se,nextMonth:E,previousMonth:T,goToMonth:D,getModifiers:ue,components:r,classNames:c,styles:S,labels:a,formatters:i};return j.createElement(Jn.Provider,{value:Ve},j.createElement(r.Root,{rootRef:t.animate?Be:void 0,className:Ie,style:Le,dir:t.dir,id:t.id,lang:t.lang??s.code,nonce:t.nonce,title:t.title,role:t.role,"aria-label":t[`aria-label`],"aria-labelledby":t[`aria-labelledby`],...Re},j.createElement(r.Months,{className:c[G.Months],style:S?.[G.Months]},!t.hideNavigation&&!d&&j.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[G.Nav],style:S?.[G.Nav],"aria-label":be(),onPreviousClick:ke,onNextClick:M,previousMonth:T,nextMonth:E}),se.map((e,n)=>{let a=t.reverseMonths?se.length-1-n:n;return j.createElement(r.Month,{"data-animated-month":t.animate?`true`:void 0,className:c[G.Month],style:S?.[G.Month],key:n,displayIndex:n,calendarMonth:e},d===`around`&&!t.hideNavigation&&n===0&&j.createElement(r.PreviousMonthButton,{type:`button`,className:c[G.PreviousMonthButton],style:S?.[G.PreviousMonthButton],tabIndex:T?void 0:-1,"aria-disabled":!T||void 0,"aria-label":xe(T),onClick:ke,"data-animated-button":t.animate?`true`:void 0},j.createElement(r.Chevron,{disabled:!T||void 0,className:c[G.Chevron],style:S?.[G.Chevron],orientation:t.dir===`rtl`?`right`:`left`})),j.createElement(r.MonthCaption,{"data-animated-caption":t.animate?`true`:void 0,className:c[G.MonthCaption],style:S?.[G.MonthCaption],calendarMonth:e,displayIndex:n},l?.startsWith(`dropdown`)?j.createElement(r.DropdownNav,{className:c[G.Dropdowns],style:S?.[G.Dropdowns]},(()=>{let n=l===`dropdown`||l===`dropdown-months`?j.createElement(r.MonthsDropdown,{key:`month`,className:c[G.MonthsDropdown],"aria-label":ye(),disabled:!!t.disableNavigation,onChange:Fe(e.date,a),options:Qr(e.date,ce,le,i,o),style:ze(G.MonthsDropdown),value:o.getMonth(e.date)}):j.createElement(`span`,{key:`month`},C(e.date,o)),s=l===`dropdown`||l===`dropdown-years`?j.createElement(r.YearsDropdown,{key:`year`,className:c[G.YearsDropdown],"aria-label":Ee(o.options),disabled:!!t.disableNavigation,onChange:P(e.date,a),options:ti(ce,le,i,o,!!t.reverseYears),style:ze(G.YearsDropdown),value:o.getYear(e.date)}):j.createElement(`span`,{key:`year`},ie(e.date,o));return o.getMonthYearOrder()===`year-first`?[s,n]:[n,s]})(),j.createElement(`span`,{role:`status`,"aria-live":`polite`,style:{border:0,clip:`rect(0 0 0 0)`,height:`1px`,margin:`-1px`,overflow:`hidden`,padding:0,position:`absolute`,width:`1px`,whiteSpace:`nowrap`,wordWrap:`normal`}},ee(e.date,o.options,o))):j.createElement(r.CaptionLabel,{className:c[G.CaptionLabel],style:S?.[G.CaptionLabel],role:`status`,"aria-live":`polite`},ee(e.date,o.options,o))),d===`around`&&!t.hideNavigation&&n===f-1&&j.createElement(r.NextMonthButton,{type:`button`,className:c[G.NextMonthButton],style:S?.[G.NextMonthButton],tabIndex:E?void 0:-1,"aria-disabled":!E||void 0,"aria-label":Se(E),onClick:M,"data-animated-button":t.animate?`true`:void 0},j.createElement(r.Chevron,{disabled:!E||void 0,className:c[G.Chevron],style:S?.[G.Chevron],orientation:t.dir===`rtl`?`left`:`right`})),n===f-1&&d===`after`&&!t.hideNavigation&&j.createElement(r.Nav,{"data-animated-nav":t.animate?`true`:void 0,className:c[G.Nav],style:S?.[G.Nav],"aria-label":be(),onPreviousClick:ke,onNextClick:M,previousMonth:T,nextMonth:E}),j.createElement(r.MonthGrid,{role:`grid`,"aria-multiselectable":u===`multiple`||u===`range`,"aria-label":ve(e.date,o.options,o)||void 0,className:c[G.MonthGrid],style:S?.[G.MonthGrid]},!t.hideWeekdays&&j.createElement(r.Weekdays,{"data-animated-weekdays":t.animate?`true`:void 0,className:c[G.Weekdays],style:S?.[G.Weekdays]},x&&j.createElement(r.WeekNumberHeader,{"aria-label":Te(o.options),className:c[G.WeekNumberHeader],style:S?.[G.WeekNumberHeader],scope:`col`},ne()),De.map(e=>j.createElement(r.Weekday,{"aria-label":Ce(e,o.options,o),className:c[G.Weekday],key:String(e),style:S?.[G.Weekday],scope:`col`},re(e,o.options,o)))),j.createElement(r.Weeks,{"data-animated-weeks":t.animate?`true`:void 0,className:c[G.Weeks],style:S?.[G.Weeks]},e.weeks.map(e=>j.createElement(r.Week,{className:c[G.Week],key:e.weekNumber,style:S?.[G.Week],week:e},x&&j.createElement(r.WeekNumber,{week:e,style:S?.[G.WeekNumber],"aria-label":we(e.weekNumber,{locale:s}),className:c[G.WeekNumber],scope:`row`,role:`rowheader`},w(e.weekNumber,o)),e.days.map(e=>{let{date:n}=e,i=ue(e);if(i[K.focused]=!i.hidden&&!!pe?.isEqualTo(e),i[q.selected]=O?.(n)||i.selected,yr(fe)){let{from:e,to:t}=fe;i[q.range_start]=!!(e&&t&&o.isSameDay(n,e)),i[q.range_end]=!!(e&&t&&o.isSameDay(n,t)),i[q.range_middle]=Y(fe,n,!0,o)}let a=$r(i,S,t.modifiersStyles),s=Tr(i,c,t.modifiersClassNames),l=!Oe&&!i.hidden?_e(n,i,o.options,o):void 0;return j.createElement(r.Day,{key:`${e.isoDate}_${e.displayMonthId}`,day:e,modifiers:i,className:s.join(` `),style:a,role:`gridcell`,"aria-selected":i.selected||void 0,"aria-label":l,"data-day":e.isoDate,"data-month":e.outside?e.dateMonthId:void 0,"data-selected":i.selected||void 0,"data-disabled":i.disabled||void 0,"data-hidden":i.hidden||void 0,"data-outside":e.outside||void 0,"data-focused":i.focused||void 0,"data-today":i.today||void 0},!i.hidden&&Oe?j.createElement(r.DayButton,{className:c[G.DayButton],style:S?.[G.DayButton],type:`button`,day:e,modifiers:i,disabled:!i.focused&&i.disabled||void 0,"aria-disabled":i.focused&&i.disabled||void 0,tabIndex:me(e)?0:-1,"aria-label":ge(n,i,o.options,o),onClick:Ae(e,i),onBlur:je(e,i),onFocus:N(e,i),onKeyDown:Me(e,i),onMouseEnter:Ne(e,i),onMouseLeave:Pe(e,i)},te(n,o.options,o)):!i.hidden&&te(e.date,o.options,o))}))))))})),t.footer&&j.createElement(r.Footer,{className:c[G.Footer],style:S?.[G.Footer],role:`status`,"aria-live":`polite`},t.footer)))}function zi({className:e,classNames:t,showOutsideDays:n=!0,...r}){return(0,M.jsx)(Ri,{showOutsideDays:n,className:O(`p-3`,e),classNames:{months:`relative flex flex-col sm:flex-row gap-2`,month:`flex flex-col gap-4`,month_caption:`flex items-center justify-center pt-1 h-7 w-full`,caption_label:`text-sm font-medium`,nav:`absolute inset-x-0 top-0 flex items-center justify-between z-10`,button_previous:O(de({variant:`outline`,size:`icon-sm`}),`bg-transparent hover:bg-accent`),button_next:O(de({variant:`outline`,size:`icon-sm`}),`bg-transparent hover:bg-accent`),month_grid:`w-full border-collapse`,weekdays:`flex`,weekday:`text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]`,week:`flex w-full mt-2`,day:O(`relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md`,`first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md`),day_button:O(de({variant:`ghost`}),`size-9 p-0 font-normal aria-selected:opacity-100`),range_end:`day-range-end`,selected:`bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground rounded-md`,today:`bg-accent text-accent-foreground rounded-md`,outside:`day-outside text-muted-foreground aria-selected:text-muted-foreground opacity-50`,disabled:`text-muted-foreground opacity-50`,range_middle:`aria-selected:bg-accent aria-selected:text-accent-foreground`,hidden:`invisible`,...t},components:{Chevron:({orientation:e})=>(0,M.jsx)(e===`left`?d:u,{className:`size-4`})},...r})}var Bi=Ie,Vi=Re;function Hi({className:e,align:t=`center`,sideOffset:n=4,...r}){return(0,M.jsx)(He,{children:(0,M.jsx)(We,{"data-slot":`popover-content`,align:t,sideOffset:n,className:O(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden`,e),...r})})}var Ui=[{labelKey:`apiKeys.expiry.presets.oneDay`,days:1},{labelKey:`apiKeys.expiry.presets.sevenDays`,days:7},{labelKey:`apiKeys.expiry.presets.thirtyDays`,days:30},{labelKey:`apiKeys.expiry.presets.ninetyDays`,days:90},{labelKey:`apiKeys.expiry.presets.oneYear`,days:365}];function Wi({value:e,onChange:t}){let{t:n}=D(),[r,i]=(0,j.useState)(!1),[a,s]=(0,j.useState)(!1),[c]=(0,j.useState)(()=>{let e=new Date;return e.setHours(0,0,0,0),e}),l=Ki(e),u=(0,j.useMemo)(()=>new Map(Ui.map(e=>[e.days,c?B(nt(c,e.days),`yyyy-MM-dd`):``])),[c]);function d(){t(null),s(!1),i(!1)}function f(e){let n=nt(new Date,e);n.setHours(23,59,59,0),t(n),s(!1),i(!1)}function p(e){e&&(e.setHours(23,59,59,0),t(e),s(!1),i(!1))}function m(e){i(e),e||s(!1)}function h(){if(!e)return n(`apiKeys.expiry.noExpiration`);let t=Ui.find(e=>e.days===l);return t?n(`apiKeys.expiry.presetWithDate`,{preset:n(t.labelKey),date:B(e,`yyyy-MM-dd`)}):B(e,`yyyy-MM-dd`)}return(0,M.jsxs)(Bi,{open:r,onOpenChange:m,children:[(0,M.jsx)(Vi,{asChild:!0,children:(0,M.jsxs)(k,{type:`button`,variant:`outline`,className:O(`w-full justify-between font-normal`,!e&&`text-muted-foreground`),children:[(0,M.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e?(0,M.jsx)(De,{className:`size-4`}):(0,M.jsx)(ke,{className:`size-4`}),h()]}),(0,M.jsx)(o,{className:`size-4 opacity-50`})]})}),(0,M.jsx)(Hi,{className:`w-auto min-w-[280px] p-1`,align:`start`,children:a?(0,M.jsxs)(`div`,{className:`-m-1`,children:[(0,M.jsx)(`div`,{className:`border-b px-3 py-2`,children:(0,M.jsx)(`button`,{type:`button`,className:`text-xs text-muted-foreground hover:text-foreground transition-colors`,onClick:()=>s(!1),children:n(`apiKeys.expiry.backToPresets`)})}),(0,M.jsx)(zi,{mode:`single`,selected:e??void 0,onSelect:p,disabled:e=>c?e<c:!1,autoFocus:!0})]}):(0,M.jsxs)(`div`,{children:[(0,M.jsxs)(Gi,{active:e===null,onClick:d,children:[(0,M.jsx)(ke,{className:`size-4`}),n(`apiKeys.expiry.noExpiration`)]}),(0,M.jsx)(`div`,{className:`bg-border -mx-1 my-1 h-px`}),Ui.map(e=>(0,M.jsxs)(Gi,{active:l===e.days,onClick:()=>f(e.days),children:[n(e.labelKey),(0,M.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:u.get(e.days)})]},e.days)),(0,M.jsx)(`div`,{className:`bg-border -mx-1 my-1 h-px`}),(0,M.jsxs)(Gi,{active:e!==null&&l===null,onClick:()=>s(!0),children:[(0,M.jsx)(De,{className:`size-4`}),n(`apiKeys.expiry.customDate`),e&&l===null&&(0,M.jsx)(`span`,{className:`ml-auto text-xs text-muted-foreground`,children:B(e,`yyyy-MM-dd`)})]})]})})]})}function Gi({active:e,onClick:t,children:n}){return(0,M.jsx)(`button`,{type:`button`,className:O(`flex w-full cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none transition-colors hover:bg-accent hover:text-accent-foreground`,e&&`bg-accent text-accent-foreground font-medium`),onClick:t,children:n})}function Ki(e){if(!e)return null;let t=new Date,n=e.getTime()-t.getTime(),r=Math.round(n/864e5);for(let e of Ui)if(Math.abs(r-e.days)<=0)return e.days;return null}function qi({value:e,onChange:t,placeholder:n}){let{t:r}=D(),i=n??r(`apiKeys.modelSelect.all`),{data:a=[],isLoading:o}=v(),[s,c]=(0,j.useState)(``),l=(0,j.useMemo)(()=>{if(!s.trim())return a;let e=s.toLowerCase();return a.filter(t=>t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e))},[a,s]),u=(0,j.useMemo)(()=>new Set(e),[e]),d=(0,j.useCallback)(n=>{u.has(n)?t(e.filter(e=>e!==n)):t([...e,n])},[u,e,t]),f=(0,j.useCallback)(n=>{t(e.filter(e=>e!==n))},[e,t]),p=(0,j.useCallback)(()=>{t([])},[t]),m=e.length===0?i:r(`apiKeys.modelSelect.selected`,{count:e.length});return(0,M.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,M.jsxs)(he,{children:[(0,M.jsx)(ve,{asChild:!0,children:(0,M.jsxs)(k,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,disabled:o,children:[(0,M.jsx)(`span`,{className:`truncate text-left`,children:o?r(`apiKeys.modelSelect.loading`):m}),(0,M.jsx)(_,{className:`ml-1 size-4 shrink-0 opacity-50`})]})}),(0,M.jsxs)(_e,{align:`start`,className:`w-[var(--radix-dropdown-menu-trigger-width)] max-h-64`,children:[(0,M.jsx)(`div`,{className:`px-2 py-1.5`,children:(0,M.jsx)(A,{value:s,onChange:e=>c(e.target.value),placeholder:r(`apiKeys.modelSelect.search`),className:`h-7 text-xs`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation()})}),(0,M.jsx)(ge,{}),(0,M.jsx)(me,{checked:e.length===0,onCheckedChange:p,onSelect:e=>e.preventDefault(),children:r(`apiKeys.modelSelect.all`)}),(0,M.jsx)(ge,{}),l.map(e=>(0,M.jsx)(me,{checked:u.has(e.id),onCheckedChange:()=>d(e.id),onSelect:e=>e.preventDefault(),children:e.id},e.id)),l.length===0?(0,M.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:r(`apiKeys.modelSelect.empty`)}):null]})]}),e.length>0?(0,M.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.map(e=>(0,M.jsxs)(ye,{variant:`secondary`,className:`gap-1 text-xs`,children:[e,(0,M.jsx)(`button`,{type:`button`,className:`hover:text-foreground ml-0.5`,onClick:()=>f(e),children:(0,M.jsx)(ee,{className:`size-3`})})]},e))}):null]})}var Ji={total_tokens:`Total Tokens`,input_tokens:`Input Tokens`,output_tokens:`Output Tokens`,cost_usd:`Cost ($)`,credits:`Credits`},Yi={daily:`Daily`,weekly:`Weekly`,monthly:`Monthly`,"5h":`5h`,"7d":`7d`},Xi=new Set(be),Zi=new Set(Ce);function Qi(e){return Xi.has(e)}function $i(e){return Zi.has(e)}function ea({rule:e,onChange:t,onRemove:n}){let{t:r}=D(),i=(0,j.useId)(),a=e.limitType===`cost_usd`,o=e.limitType===`credits`,s=a&&e.maxValue>0?String(e.maxValue/1e6):e.maxValue>0?String(e.maxValue):``,c=n=>{if(!n)t({...e,maxValue:0});else if(a){let r=parseFloat(n);isNaN(r)||t({...e,maxValue:Math.round(r*1e6)})}else{let r=parseInt(n,10);isNaN(r)||t({...e,maxValue:r})}},l=n=>{Qi(n)&&t({...e,limitType:n,modelFilter:n===`credits`?null:e.modelFilter})},u=n=>{$i(n)&&t({...e,limitWindow:n})},d=e.modelFilter?[e.modelFilter]:[];return(0,M.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border p-3`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,M.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:r(`apiKeys.limitRule.title`)}),(0,M.jsx)(k,{type:`button`,variant:`ghost`,size:`sm`,onClick:n,children:(0,M.jsx)(b,{className:`size-3.5`})})]}),(0,M.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`${i}-type`,className:`text-xs text-muted-foreground`,children:r(`apiKeys.limitRule.type`)}),(0,M.jsxs)(g,{value:e.limitType,onValueChange:l,children:[(0,M.jsx)(m,{id:`${i}-type`,className:`h-8 text-xs`,children:(0,M.jsx)(h,{})}),(0,M.jsx)(p,{children:be.map(e=>(0,M.jsx)(f,{value:e,children:r(`apiKeys.limitTypes.${e}`,{defaultValue:Ji[e]})},e))})]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`${i}-window`,className:`text-xs text-muted-foreground`,children:r(`apiKeys.limitRule.window`)}),(0,M.jsxs)(g,{value:e.limitWindow,onValueChange:u,children:[(0,M.jsx)(m,{id:`${i}-window`,className:`h-8 text-xs`,children:(0,M.jsx)(h,{})}),(0,M.jsx)(p,{children:Ce.map(e=>(0,M.jsx)(f,{value:e,children:r(`apiKeys.limitWindows.${e}`,{defaultValue:Yi[e]})},e))})]})]})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`${i}-max-value`,className:`text-xs text-muted-foreground`,children:r(a?`apiKeys.limitRule.maxValueUsd`:o?`apiKeys.limitRule.maxValueCredits`:`apiKeys.limitRule.maxValueTokens`)}),(0,M.jsx)(A,{id:`${i}-max-value`,type:`number`,min:a?.01:1,step:a?.01:1,value:s,onChange:e=>c(e.target.value),className:`h-8 text-xs`})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r(`apiKeys.limitRule.modelFilter`)}),(0,M.jsx)(qi,{value:d,onChange:n=>{o||t({...e,modelFilter:n[0]||null})},placeholder:r(o?`apiKeys.limitRule.creditsGlobal`:`apiKeys.modelSelect.all`)})]})]})}function ta(){return{limitType:`total_tokens`,limitWindow:`weekly`,maxValue:0,modelFilter:null}}function na({rules:e,onChange:t}){let{t:n}=D(),[r,i]=(0,j.useState)(()=>e.map((e,t)=>`limit-rule-${t}`)),[a,o]=(0,j.useState)(()=>e.length),[s,c]=(0,j.useState)(()=>e.length!==0&&e.some(e=>e.limitType!==`total_tokens`&&e.limitType!==`cost_usd`||e.limitWindow!==`weekly`||e.modelFilter!==null&&e.modelFilter!==void 0)),l=e.find(e=>e.limitType===`total_tokens`&&e.limitWindow===`weekly`&&!e.modelFilter),u=e.find(e=>e.limitType===`cost_usd`&&e.limitWindow===`weekly`&&!e.modelFilter),d=n=>{let r=n?parseInt(n,10):0,i=e.filter(e=>!(e.limitType===`total_tokens`&&e.limitWindow===`weekly`&&!e.modelFilter));t(r>0?[...i,{limitType:`total_tokens`,limitWindow:`weekly`,maxValue:r,modelFilter:null}]:i)},f=n=>{let r=n?parseFloat(n):0,i=e.filter(e=>!(e.limitType===`cost_usd`&&e.limitWindow===`weekly`&&!e.modelFilter));t(r>0?[...i,{limitType:`cost_usd`,limitWindow:`weekly`,maxValue:Math.round(r*1e6),modelFilter:null}]:i)},p=()=>{i([...r,`limit-rule-${a}`]),o(a+1),t([...e,ta()])},m=(n,r)=>{let i=[...e];i[n]=r,t(i)},h=n=>{i(r.filter((e,t)=>t!==n)),t(e.filter((e,t)=>t!==n))};return(0,M.jsxs)(`div`,{className:`space-y-3`,children:[(0,M.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,M.jsx)(`span`,{className:`text-sm font-medium`,children:n(`apiKeys.form.limits`)}),(0,M.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,M.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`apiKeys.limitRules.advanced`)}),(0,M.jsx)(pe,{checked:s,onCheckedChange:c})]})]}),s?(0,M.jsxs)(`div`,{className:`space-y-2`,children:[e.map((e,t)=>(0,M.jsx)(ea,{rule:e,onChange:e=>m(t,e),onRemove:()=>h(t)},r[t]??`limit-rule-${t}`)),(0,M.jsxs)(k,{type:`button`,variant:`outline`,size:`sm`,className:`w-full`,onClick:p,children:[(0,M.jsx)(y,{className:`mr-1 size-3.5`}),n(`apiKeys.limitRules.addRule`)]}),e.length>1?(0,M.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`apiKeys.limitRules.andHint`)}):null]}):(0,M.jsxs)(`div`,{className:`space-y-2`,children:[(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`weekly-token-limit`,className:`text-xs text-muted-foreground`,children:n(`apiKeys.limitRules.weeklyTokenLimit`)}),(0,M.jsx)(A,{id:`weekly-token-limit`,type:`number`,min:1,value:l?String(l.maxValue):``,onChange:e=>d(e.target.value),placeholder:n(`apiKeys.limitRules.noLimit`)})]}),(0,M.jsxs)(`div`,{children:[(0,M.jsx)(`label`,{htmlFor:`weekly-cost-limit`,className:`text-xs text-muted-foreground`,children:n(`apiKeys.limitRules.weeklyCostLimit`)}),(0,M.jsx)(A,{id:`weekly-cost-limit`,type:`number`,min:.01,step:.01,value:u&&u.maxValue>0?String(u.maxValue/1e6):``,onChange:e=>f(e.target.value),placeholder:n(`apiKeys.limitRules.noLimit`)})]})]})]})}function ra({value:e,onChange:t,disabled:n=!1}){let{t:r}=D(),i=(0,j.useMemo)(()=>new Set(e),[e]),a=(0,j.useCallback)(e=>{let n=new Set(i);n.has(e)?n.delete(e):n.add(e),t(we.filter(e=>n.has(e)))},[t,i]),o=e.length===0?r(`apiKeys.reasoningEfforts.all`):r(`apiKeys.reasoningEfforts.selected`,{count:e.length}),s=r(`apiKeys.form.allowedReasoningEfforts`);return(0,M.jsxs)(he,{children:[(0,M.jsx)(ve,{asChild:!0,children:(0,M.jsxs)(k,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,"aria-label":`${s}: ${o}`,disabled:n,children:[(0,M.jsx)(`span`,{className:`truncate text-left`,children:o}),(0,M.jsx)(_,{className:`ml-1 size-4 shrink-0 opacity-50`})]})}),(0,M.jsx)(_e,{align:`start`,className:`w-[var(--radix-dropdown-menu-trigger-width)]`,children:we.map(e=>(0,M.jsx)(me,{checked:i.has(e),onCheckedChange:()=>a(e),onSelect:e=>e.preventDefault(),children:r(`common.reasoning.${e}`)},e))})]})}function ia(e){let t=e.trim();if(t===``)return new Set;let n=t.split(`,`).map(e=>e.trim()).filter(e=>xe.includes(e));return n.length===0?new Set(xe):new Set(n)}function aa(e,t,n){let r=ia(e);return r.size===xe.length?t:r.size===0?n(`common.options.none`):xe.filter(e=>r.has(e)).map(e=>n(`apiKeys.usageSections.${e}`,{defaultValue:Se[e]})).join(`, `)}function oa({value:e,onChange:t,placeholder:n}){let{t:r}=D(),i=n??r(`apiKeys.usageSections.allSections`),a=(0,j.useMemo)(()=>ia(e),[e]),o=(0,j.useCallback)(e=>{let n=new Set(a);n.has(e)?n.delete(e):n.add(e),t(Array.from(n).join(`,`))},[t,a]),s=e.trim()===``?r(`common.options.none`):aa(e,i,r);return(0,M.jsxs)(he,{children:[(0,M.jsx)(ve,{asChild:!0,children:(0,M.jsxs)(k,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,children:[(0,M.jsx)(`span`,{className:`truncate text-left`,children:s}),(0,M.jsx)(_,{className:`ml-1 size-4 shrink-0 opacity-50`})]})}),(0,M.jsx)(_e,{align:`start`,className:`w-[var(--radix-dropdown-menu-trigger-width)]`,children:xe.map(e=>(0,M.jsx)(me,{checked:a.has(e),onCheckedChange:()=>o(e),onSelect:e=>e.preventDefault(),children:r(`apiKeys.usageSections.${e}`,{defaultValue:Se[e]})},e))})]})}function sa(e,t){let n=[e.supportsChatCompletions?`chat`:null,e.supportsResponses?`responses`:null,e.supportsAudioTranscriptions?`audio`:null,e.supportsEmbeddings?`embeddings`:null].filter(Boolean);return`${t(`modelSources.selector.modelCount`,{count:e.models.length})} · ${n.join(`, `)||t(`common.states.disabled`)}`}function ca({value:e,onChange:t,placeholder:n}){let{t:r}=D(),{modelSourcesQuery:i}=Te(),a=(0,j.useMemo)(()=>i.data?.sources??[],[i.data]),[o,s]=(0,j.useState)(``),c=(0,j.useMemo)(()=>new Set(e),[e]),l=(0,j.useMemo)(()=>{let e=o.trim().toLowerCase();return e?a.filter(t=>t.id.toLowerCase().includes(e)||t.name.toLowerCase().includes(e)||t.baseUrl.toLowerCase().includes(e)||t.models.some(t=>t.model.toLowerCase().includes(e))):a},[o,a]),u=(0,j.useMemo)(()=>e.map(e=>a.find(t=>t.id===e)).filter(e=>e!==void 0),[a,e]),d=(0,j.useCallback)(n=>{c.has(n)?t(e.filter(e=>e!==n)):t([...e,n])},[t,c,e]),f=(0,j.useCallback)(n=>{t(e.filter(e=>e!==n))},[t,e]),p=e.length===0?n??r(`modelSources.selector.all`):r(`modelSources.selector.selected`,{count:e.length});return(0,M.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,M.jsxs)(he,{children:[(0,M.jsx)(ve,{asChild:!0,children:(0,M.jsxs)(k,{type:`button`,variant:`outline`,className:`w-full justify-between font-normal`,disabled:i.isLoading,children:[(0,M.jsx)(`span`,{className:`truncate text-left`,children:i.isLoading?r(`modelSources.selector.loading`):p}),(0,M.jsx)(_,{className:`ml-1 size-4 shrink-0 opacity-50`})]})}),(0,M.jsxs)(_e,{align:`start`,className:`max-h-64 w-[var(--radix-dropdown-menu-trigger-width)]`,children:[(0,M.jsx)(`div`,{className:`px-2 py-1.5`,children:(0,M.jsx)(A,{value:o,onChange:e=>s(e.target.value),placeholder:r(`modelSources.selector.search`),className:`h-7 text-xs`,onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation()})}),(0,M.jsx)(ge,{}),(0,M.jsx)(me,{checked:e.length===0,onCheckedChange:()=>t([]),onSelect:e=>e.preventDefault(),children:r(`modelSources.selector.all`)}),(0,M.jsx)(ge,{}),l.map(e=>(0,M.jsx)(me,{checked:c.has(e.id),onCheckedChange:()=>d(e.id),onSelect:e=>e.preventDefault(),className:`items-start`,children:(0,M.jsxs)(`div`,{className:`min-w-0 py-0.5`,children:[(0,M.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.name}),(0,M.jsx)(`div`,{className:`truncate text-[11px] text-muted-foreground`,children:sa(e,r)})]})},e.id)),l.length===0?(0,M.jsx)(`div`,{className:`px-2 py-1.5 text-xs text-muted-foreground`,children:r(`modelSources.selector.empty`)}):null]})]}),u.length>0?(0,M.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:u.map(e=>(0,M.jsxs)(ye,{variant:`secondary`,className:`gap-1 text-xs`,children:[e.name,(0,M.jsx)(`button`,{type:`button`,className:`ml-0.5 hover:text-foreground`,onClick:()=>f(e.id),children:(0,M.jsx)(ee,{className:`size-3`})})]},e.id))}):null]})}export{qi as a,na as i,oa as n,Wi as o,ra as r,ca as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,S as n}from"./vendor-query-_bHZuxEx.js";import{l as r}from"./iso-Bpe5Ihbb.js";import{b as i}from"./es2015-bMH8YKZT.js";import{t as a}from"./useTranslation--56nHhlH.js";import{t as o}from"./button-BjVmmiGW.js";import{An as s,Dn as c,En as l,Nn as u,On as d,Pn as f,mt as p}from"./index-DIpd264Z.js";import{t as m}from"./badge-DqMb9es0.js";var h=e(t(),1),g=n();function _({label:e,values:t,options:n,onChange:_}){let{t:v}=a(),y=p(e=>e.blurred),b=(0,h.useMemo)(()=>{let e=new Map;for(let t of n)e.set(t.value,{...t,isStale:!1});for(let n of t)e.has(n)||e.set(n,{value:n,label:n,isStale:!0});return[...e.values()]},[n,t]),x=e=>{t.includes(e)?_(t.filter(t=>t!==e)):_([...t,e])},S=e=>{_(t.filter(t=>t!==e))},C=t.length===0?e:t.length===1?(()=>{let e=b.find(e=>e.value===t[0]),n=e?.label??t[0];return y&&e?.isEmail?(0,g.jsx)(`span`,{className:`privacy-blur`,children:n}):n})():`${e} (${t.length})`;return(0,g.jsxs)(l,{children:[(0,g.jsx)(f,{asChild:!0,children:(0,g.jsxs)(o,{type:`button`,variant:`outline`,size:`sm`,className:`min-w-[7rem] justify-between gap-1.5`,children:[C,(0,g.jsx)(r,{className:`h-3.5 w-3.5 shrink-0 opacity-50`})]})}),(0,g.jsxs)(d,{align:`start`,className:`max-h-80 min-w-56 overflow-y-auto`,children:[(0,g.jsx)(s,{children:e}),(0,g.jsx)(u,{}),b.length===0?(0,g.jsx)(`p`,{className:`px-2 py-1 text-xs text-muted-foreground`,children:v(`dashboard.filters.noOptions`)}):b.map(e=>(0,g.jsxs)(c,{checked:t.includes(e.value),onCheckedChange:()=>x(e.value),onSelect:e=>e.preventDefault(),children:[(0,g.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,g.jsx)(`span`,{className:y&&e.isEmail?`truncate privacy-blur`:`truncate`,children:e.label}),e.isStale?(0,g.jsx)(m,{variant:`secondary`,className:`text-[10px]`,children:v(`dashboard.filters.stale`)}):null]}),e.isStale?(0,g.jsx)(`button`,{type:`button`,className:`ml-auto inline-flex h-5 w-5 items-center justify-center rounded-sm text-muted-foreground hover:text-foreground`,onClick:t=>{t.preventDefault(),t.stopPropagation(),S(e.value)},"aria-label":v(`dashboard.filters.removeStale`,{label:e.label}),children:(0,g.jsx)(i,{className:`h-3.5 w-3.5`})}):null]},e.value))]})]})}export{_ as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,S as n}from"./vendor-query-_bHZuxEx.js";import{t as r}from"./circle-alert-BS0xd_o1.js";import{n as i,r as a}from"./copy-button-D7nAvOKR.js";import{t as o}from"./external-link-UVAOgMQ0.js";import{t as s}from"./useTranslation--56nHhlH.js";import{c,t as l}from"./button-BjVmmiGW.js";import{$n as u,A as d,Zn as f,an as p,cn as m,en as h,in as g,ir as _,nn as v,rn as y,tn as b}from"./index-DIpd264Z.js";var x=e(t(),1),S=n();function C(e){return e.status===`success`?`success`:e.status===`error`?`error`:e.method===`browser`&&(e.status===`pending`||e.status===`starting`)?`browser`:e.method===`device`&&(e.status===`pending`||e.status===`starting`)?`device`:`intro`}function w({text:e}){let{t}=s(),[n,r]=(0,x.useState)(!1),o=(0,x.useCallback)(async n=>{let a=n.currentTarget,o=a.closest(`[role='dialog']`),s=n.detail>0;try{if(!await i(e,{container:o instanceof HTMLElement?o:void 0})){m.error(t(`components.copyButton.toasts.failed`));return}r(!0),setTimeout(()=>r(!1),2e3)}catch{m.error(t(`components.copyButton.toasts.failed`))}finally{s&&a.blur()}},[e,t]);return(0,S.jsx)(l,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 cursor-pointer gap-1 px-2 text-xs disabled:cursor-not-allowed`,onMouseDown:e=>e.preventDefault(),onClick:e=>void o(e),children:n?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(_,{className:`h-3 w-3`}),t(`components.copyButton.copiedBang`)]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{className:`h-3 w-3`}),t(`components.copyButton.copy`)]})})}function T(e){return(0,S.jsx)(E,{...e},e.disabled?`disabled`:`enabled`)}function E({onSubmit:e,disabled:t=!1}){let{t:n}=s(),[r,i]=(0,x.useState)(``),[a,o]=(0,x.useState)(!1),c=(0,x.useCallback)(async()=>{if(r.trim()){o(!0);try{await e(r.trim()),i(``)}catch{}finally{o(!1)}}},[r,e]);return(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:n(`accounts.oauth.manualCallback.title`)}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,S.jsx)(`input`,{type:`text`,"aria-label":n(`accounts.oauth.manualCallback.aria`),value:r,onChange:e=>i(e.target.value),disabled:t,placeholder:`http://localhost:1455/auth/callback?code=...&state=...`,className:`flex-1 rounded-lg border bg-muted/20 px-3 py-2 font-mono text-xs outline-none focus:ring-1 focus:ring-primary disabled:cursor-not-allowed disabled:opacity-60`}),(0,S.jsx)(l,{type:`button`,size:`sm`,className:`h-8 cursor-pointer px-3 text-xs disabled:cursor-not-allowed`,disabled:t||!r.trim()||a,onClick:()=>void c(),children:n(a?`common.states.submitting`:`common.actions.submit`)})]})]})}function D({open:e,state:t,onOpenChange:n,onStart:i,onManualCallback:a,onReset:m}){let{t:E}=s(),[D,O]=(0,x.useState)(`browser`),k=C(t),A=k===`browser`&&t.status===`starting`,j=e=>{n(e),e||(m(),O(`browser`))},M=()=>{i(D)},N=()=>{i(`browser`)},P=()=>{m()};return(0,S.jsx)(h,{open:e,onOpenChange:j,children:(0,S.jsxs)(b,{children:[(0,S.jsxs)(g,{children:[(0,S.jsx)(p,{children:E(k===`success`?`accounts.oauth.titles.success`:k===`error`?`accounts.oauth.titles.error`:`accounts.oauth.titles.intro`)}),k===`intro`?(0,S.jsx)(v,{children:E(`accounts.oauth.introDescription`)}):null]}),k===`intro`?(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>O(`browser`),className:c(`w-full cursor-pointer rounded-lg border p-3 text-left transition-colors`,D===`browser`?`border-primary bg-primary/5`:`hover:bg-muted/50`),children:[(0,S.jsx)(`p`,{className:`text-sm font-medium`,children:E(`accounts.oauth.methods.browser.title`)}),(0,S.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:E(`accounts.oauth.methods.browser.description`)})]}),(0,S.jsxs)(`button`,{type:`button`,onClick:()=>O(`device`),className:c(`w-full cursor-pointer rounded-lg border p-3 text-left transition-colors`,D===`device`?`border-primary bg-primary/5`:`hover:bg-muted/50`),children:[(0,S.jsx)(`p`,{className:`text-sm font-medium`,children:E(`accounts.oauth.methods.device.title`)}),(0,S.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:E(`accounts.oauth.methods.device.description`)})]})]}):null,k===`browser`?(0,S.jsxs)(`div`,{className:`min-w-0 space-y-3 text-sm`,children:[(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:E(`accounts.oauth.authorizationUrl`)}),(0,S.jsx)(l,{type:`button`,size:`sm`,variant:`ghost`,className:`h-7 cursor-pointer gap-1 px-2 text-xs disabled:cursor-not-allowed`,disabled:A,onClick:N,children:A?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(u,{className:`h-3 w-3 animate-spin`}),E(`common.states.refreshing`)]}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(f,{className:`h-3 w-3`}),E(`accounts.oauth.refreshLink`)]})})]}),A?(0,S.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border bg-muted/20 px-3 py-2 text-xs text-muted-foreground`,children:[(0,S.jsx)(u,{className:`h-3.5 w-3.5 animate-spin`}),(0,S.jsx)(`span`,{children:E(`accounts.oauth.generatingLink`)})]}):t.authorizationUrl?(0,S.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-lg border bg-muted/20 px-3 py-2`,children:[(0,S.jsx)(`p`,{className:`min-w-0 flex-1 truncate font-mono text-xs`,children:t.authorizationUrl}),(0,S.jsx)(w,{text:t.authorizationUrl})]}):null,(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:E(`accounts.oauth.refreshHint`)})]}),(0,S.jsx)(T,{onSubmit:a,disabled:A}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,S.jsx)(u,{className:`h-3.5 w-3.5 animate-spin`}),(0,S.jsx)(`span`,{children:E(`accounts.oauth.waitingComplete`)})]})]}):null,k===`device`?(0,S.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,S.jsxs)(`ol`,{className:`list-inside list-decimal space-y-1 text-xs text-muted-foreground`,children:[(0,S.jsx)(`li`,{children:E(`accounts.oauth.deviceSteps.open`)}),(0,S.jsx)(`li`,{children:E(`accounts.oauth.deviceSteps.code`)}),(0,S.jsx)(`li`,{children:E(`accounts.oauth.deviceSteps.complete`)})]}),t.userCode?(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:E(`accounts.oauth.userCode`)}),(0,S.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border bg-muted/20 px-3 py-2`,children:[(0,S.jsx)(`p`,{className:`min-w-0 flex-1 font-mono text-lg font-bold tracking-widest`,children:t.userCode}),(0,S.jsx)(w,{text:t.userCode})]})]}):null,t.verificationUrl?(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:E(`accounts.oauth.verificationUrl`)}),(0,S.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 overflow-hidden rounded-lg border bg-muted/20 px-3 py-2`,children:[(0,S.jsx)(`p`,{className:`min-w-0 flex-1 truncate break-all font-mono text-xs`,children:t.verificationUrl}),(0,S.jsx)(w,{text:t.verificationUrl})]})]}):null,(0,S.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,S.jsx)(u,{className:`h-3.5 w-3.5 animate-spin`}),(0,S.jsxs)(`span`,{children:[E(`accounts.oauth.waiting`),t.expiresInSeconds!=null&&t.expiresInSeconds>0?` · ${E(`accounts.oauth.expiresIn`,{time:d(t.expiresInSeconds)})}`:`...`]})]})]}):null,k===`success`?(0,S.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-emerald-500/20 bg-emerald-500/10 px-3 py-3 text-sm text-emerald-700 dark:text-emerald-400`,children:[(0,S.jsx)(_,{className:`h-4 w-4 shrink-0`}),(0,S.jsx)(`p`,{children:E(`accounts.oauth.successMessage`)})]}):null,k===`error`?(0,S.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-3 text-sm text-destructive`,children:[(0,S.jsx)(r,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,S.jsx)(`p`,{children:t.errorMessage||E(`common.errors.unknown`)})]}):null,(0,S.jsxs)(y,{children:[k===`intro`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(l,{type:`button`,variant:`outline`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:()=>j(!1),children:E(`common.cancel`)}),(0,S.jsx)(l,{type:`button`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:M,children:E(`accounts.oauth.startSignIn`)})]}):null,k===`browser`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(l,{type:`button`,variant:`outline`,className:`cursor-pointer disabled:cursor-not-allowed`,disabled:A,onClick:P,children:E(`accounts.oauth.changeMethod`)}),t.authorizationUrl&&!A?(0,S.jsx)(l,{type:`button`,className:`cursor-pointer disabled:cursor-not-allowed`,asChild:!0,children:(0,S.jsxs)(`a`,{href:t.authorizationUrl,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(o,{className:`mr-1.5 h-3.5 w-3.5`}),E(`accounts.oauth.openSignInPage`)]})}):null]}):null,k===`device`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(l,{type:`button`,variant:`outline`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:P,children:E(`accounts.oauth.changeMethod`)}),t.verificationUrl?(0,S.jsx)(l,{type:`button`,className:`cursor-pointer disabled:cursor-not-allowed`,asChild:!0,children:(0,S.jsxs)(`a`,{href:t.verificationUrl,target:`_blank`,rel:`noreferrer`,children:[(0,S.jsx)(o,{className:`mr-1.5 h-3.5 w-3.5`}),E(`accounts.oauth.openLink`)]})}):null]}):null,k===`success`?(0,S.jsx)(l,{type:`button`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:()=>j(!1),children:E(`common.actions.done`)}):null,k===`error`?(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(l,{type:`button`,variant:`outline`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:P,children:E(`common.actions.tryAgain`)}),(0,S.jsx)(l,{type:`button`,className:`cursor-pointer disabled:cursor-not-allowed`,onClick:()=>j(!1),children:E(`common.actions.close`)})]}):null]})]})})}export{D as OauthDialog};
@@ -0,0 +1 @@
1
+ import{S as e}from"./vendor-query-_bHZuxEx.js";import{t}from"./createLucideIcon-DBLzLNh2.js";import{n,t as r}from"./chevron-left-1d_pHVa5.js";import{i,n as a,o,s,t as c}from"./select-Cl33bz-g.js";import{t as l}from"./useTranslation--56nHhlH.js";import{t as u}from"./button-BjVmmiGW.js";var d={name:`chevrons-left`,size:24,node:[[`path`,{d:`m11 17-5-5 5-5`,key:`13zhaf`}],[`path`,{d:`m18 17-5-5 5-5`,key:`h8a8et`}]]};d.node;var f=t(d),p={name:`chevrons-right`,size:24,node:[[`path`,{d:`m6 17 5-5-5-5`,key:`xnjwq`}],[`path`,{d:`m13 17 5-5-5-5`,key:`17xmmf`}]]};p.node;var m=t(p),h=e(),g=[10,25,50,100];function _({total:e,limit:t,offset:d,hasMore:p,onLimitChange:_,onOffsetChange:v}){let{t:y}=l(),b=e>0?Math.max(0,Math.ceil(e/t)-1)*t:0,x=e>0?d+1:0,S=Math.min(d+t,e);return(0,h.jsxs)(`div`,{className:`flex items-center gap-2 text-xs`,children:[(0,h.jsx)(`span`,{className:`text-muted-foreground`,children:y(`dashboard.pagination.rows`)}),(0,h.jsxs)(c,{value:String(t),onValueChange:e=>_(Number(e)),children:[(0,h.jsx)(o,{size:`sm`,className:`w-20`,children:(0,h.jsx)(s,{})}),(0,h.jsx)(a,{align:`end`,children:g.map(e=>(0,h.jsx)(i,{value:String(e),children:e},e))})]}),(0,h.jsx)(`span`,{className:`tabular-nums text-muted-foreground`,children:y(`dashboard.pagination.range`,{start:x,end:S,total:e})}),(0,h.jsx)(u,{type:`button`,variant:`outline`,size:`icon`,className:`h-8 w-8`,disabled:d<=0,onClick:()=>v(0),"aria-label":y(`dashboard.pagination.firstPage`),children:(0,h.jsx)(f,{className:`h-4 w-4`})}),(0,h.jsx)(u,{type:`button`,variant:`outline`,size:`icon`,className:`h-8 w-8`,disabled:d<=0,onClick:()=>v(Math.max(0,d-t)),"aria-label":y(`dashboard.pagination.previousPage`),children:(0,h.jsx)(r,{className:`h-4 w-4`})}),(0,h.jsx)(u,{type:`button`,variant:`outline`,size:`icon`,className:`h-8 w-8`,disabled:!p,onClick:()=>v(d+t),"aria-label":y(`dashboard.pagination.nextPage`),children:(0,h.jsx)(n,{className:`h-4 w-4`})}),(0,h.jsx)(u,{type:`button`,variant:`outline`,size:`icon`,className:`h-8 w-8`,disabled:!p,onClick:()=>v(b),"aria-label":y(`dashboard.pagination.lastPage`),children:(0,h.jsx)(m,{className:`h-4 w-4`})})]})}export{_ as t};
@@ -0,0 +1 @@
1
+ function e(e,t){let n={expectedVersion:e.version,stickyThreadsEnabled:e.stickyThreadsEnabled,upstreamStreamTransport:e.upstreamStreamTransport,prohibitFastMode:e.prohibitFastMode,httpDownstreamTransportPolicy:e.httpDownstreamTransportPolicy,preferEarlierResetAccounts:e.preferEarlierResetAccounts,preferEarlierResetWindow:e.preferEarlierResetWindow,showResetCreditBadges:e.showResetCreditBadges,autoRedeemResetCreditsBeforeExpiry:e.autoRedeemResetCreditsBeforeExpiry,showResetCreditExpiryBadge:e.showResetCreditExpiryBadge,routingStrategy:e.routingStrategy,relativeAvailabilityPower:e.relativeAvailabilityPower,relativeAvailabilityTopK:e.relativeAvailabilityTopK,singleAccountId:e.singleAccountId,openaiCacheAffinityMaxAgeSeconds:e.openaiCacheAffinityMaxAgeSeconds,dashboardSessionTtlSeconds:e.dashboardSessionTtlSeconds,warmupModel:e.warmupModel,stickyReallocationBudgetThresholdPct:e.stickyReallocationBudgetThresholdPct,stickyReallocationPrimaryBudgetThresholdPct:e.stickyReallocationPrimaryBudgetThresholdPct,stickyReallocationSecondaryBudgetThresholdPct:e.stickyReallocationSecondaryBudgetThresholdPct,additionalQuotaRoutingPolicies:e.additionalQuotaRoutingPolicies??{},importWithoutOverwrite:e.importWithoutOverwrite,totpRequiredOnLogin:e.totpRequiredOnLogin,totpRequiredForAdminRole:e.totpRequiredForAdminRole,apiKeyAuthEnabled:e.apiKeyAuthEnabled,limitWarmupEnabled:e.limitWarmupEnabled,limitWarmupWindows:e.limitWarmupWindows,limitWarmupModel:e.limitWarmupModel,limitWarmupPrompt:e.limitWarmupPrompt,limitWarmupCooldownSeconds:e.limitWarmupCooldownSeconds,limitWarmupExhaustedThresholdPercent:e.limitWarmupExhaustedThresholdPercent,limitWarmupIdleThresholdPercent:e.limitWarmupIdleThresholdPercent,limitWarmupMinAvailablePercent:e.limitWarmupMinAvailablePercent,limitWarmupStaggeredIdleEnabled:e.limitWarmupStaggeredIdleEnabled,weeklyPaceWorkingDays:e.weeklyPaceWorkingDays,weeklyPaceSmoothingMinutes:e.weeklyPaceSmoothingMinutes,guestAccessEnabled:e.guestAccessEnabled,hideUpstreamQuotaFromApiKeys:e.hideUpstreamQuotaFromApiKeys,...t};return n.expectedVersion===void 0&&delete n.expectedVersion,(n.stickyReallocationBudgetThresholdPct===void 0||e.__stickyReallocationBudgetThresholdPctProvided===!1)&&!(`stickyReallocationBudgetThresholdPct`in t)&&delete n.stickyReallocationBudgetThresholdPct,(n.stickyReallocationPrimaryBudgetThresholdPct===void 0||e.__stickyReallocationPrimaryBudgetThresholdPctProvided===!1)&&!(`stickyReallocationPrimaryBudgetThresholdPct`in t)&&delete n.stickyReallocationPrimaryBudgetThresholdPct,(n.stickyReallocationSecondaryBudgetThresholdPct===void 0||e.__stickyReallocationSecondaryBudgetThresholdPctProvided===!1)&&!(`stickyReallocationSecondaryBudgetThresholdPct`in t)&&delete n.stickyReallocationSecondaryBudgetThresholdPct,`stickyReallocationPrimaryBudgetThresholdPct`in t&&!(`stickyReallocationBudgetThresholdPct`in t)&&e.__stickyReallocationBudgetThresholdPctProvided!==!1&&(n.stickyReallocationBudgetThresholdPct=t.stickyReallocationPrimaryBudgetThresholdPct),n}export{e as t};
@@ -0,0 +1 @@
1
+ import{S as e}from"./vendor-query-_bHZuxEx.js";import{n as t,t as n}from"./report-chart-card-BXDliwcc.js";import{t as r}from"./useTranslation--56nHhlH.js";import{c as i,d as a,f as o,n as s,r as c,t as l,u}from"./lazy-recharts-Pv8p9ArM.js";import{t as d}from"./reports-page-CGCJeMHG.js";var f=e();function p(e){return e>=1e3?`${(e/1e3).toFixed(1)}s`:`${Math.round(e)}ms`}function m({startDate:e,endDate:m,data:h}){let{t:g}=r(),_=d(e,m,h).map(e=>({date:e.date.slice(5),queue:e.medianQueueMs??0}));return(0,f.jsx)(n,{title:g(`reports.charts.queueWait`),empty:h.length===0,children:(0,f.jsx)(i,{width:`100%`,height:`100%`,children:(0,f.jsxs)(s,{data:_,margin:{top:5,right:10,left:10,bottom:0},children:[(0,f.jsx)(`defs`,{children:(0,f.jsxs)(`linearGradient`,{id:`queueGrad`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,f.jsx)(`stop`,{offset:`0%`,stopColor:`#8b5cf6`,stopOpacity:.3}),(0,f.jsx)(`stop`,{offset:`100%`,stopColor:`#8b5cf6`,stopOpacity:.05})]})}),(0,f.jsx)(c,{strokeDasharray:`3 3`,stroke:`hsl(var(--border))`,vertical:!1}),(0,f.jsx)(a,{dataKey:`date`,tick:{fontSize:10,fill:`var(--muted-foreground)`},axisLine:!1,tickLine:!1}),(0,f.jsx)(o,{tick:{fontSize:10,fill:`var(--muted-foreground)`},axisLine:!1,tickLine:!1,tickFormatter:p}),(0,f.jsx)(u,{content:(0,f.jsx)(t,{names:{queue:g(`reports.charts.medianQueueWait`)},formatValue:p})}),(0,f.jsx)(l,{type:`monotone`,dataKey:`queue`,stroke:`#8b5cf6`,strokeWidth:2,fill:`url(#queueGrad)`,dot:!1,activeDot:{r:4,strokeWidth:1.5,fill:`hsl(var(--popover))`}})]})})})}export{m as QueueWaitChart};
@@ -0,0 +1 @@
1
+ import{S as e}from"./vendor-query-_bHZuxEx.js";import{t}from"./createLucideIcon-DBLzLNh2.js";import{t as n}from"./useTranslation--56nHhlH.js";import{t as r}from"./empty-state-JcA7tc8m.js";var i={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};i.node;var a=t(i),o=e();function s({active:e,payload:t,label:n,formatValue:r,names:i}){return!e||!t?.length?null:(0,o.jsxs)(`div`,{className:`rounded-xl border border-border bg-popover p-2.5 shadow-md`,children:[n!=null&&(0,o.jsx)(`p`,{className:`mb-1.5 px-2 text-[11px] font-medium text-muted-foreground`,children:n}),(0,o.jsx)(`div`,{className:`space-y-1`,children:t.map((e,t)=>{let n=e.color??`#888`,a=String(e.name??e.dataKey??``),s=i?.[a]??a,c=typeof e.value==`number`&&r?r(e.value,String(e.dataKey)):String(e.value);return(0,o.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-2.5 py-1.5`,style:{backgroundColor:`${n}18`},children:[(0,o.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:n}}),(0,o.jsx)(`span`,{className:`text-xs text-popover-foreground`,children:s}),(0,o.jsx)(`span`,{className:`ml-auto pl-2 text-xs font-semibold text-popover-foreground`,children:c})]},String(e.dataKey??t))})})]})}function c({title:e,empty:t,children:i}){let{t:s}=n();return(0,o.jsxs)(`div`,{className:`rounded-xl border bg-card p-5`,children:[(0,o.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:e}),t?(0,o.jsx)(`div`,{className:`mt-4`,children:(0,o.jsx)(r,{icon:a,title:s(`reports.charts.emptyTitle`),description:s(`reports.charts.emptyDescription`)})}):(0,o.jsx)(`div`,{className:`mt-4 h-[200px]`,children:i})]})}export{s as n,c as t};
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cost-per-day-chart-YdqlkZVM.js","assets/vendor-query-_bHZuxEx.js","assets/rolldown-runtime-hePW80VL.js","assets/report-chart-card-BXDliwcc.js","assets/createLucideIcon-DBLzLNh2.js","assets/useTranslation--56nHhlH.js","assets/shim-CZwyM4Q7.js","assets/empty-state-JcA7tc8m.js","assets/index-DIpd264Z.js","assets/vendor-react-BVL0YZPW.js","assets/iso-Bpe5Ihbb.js","assets/es2015-bMH8YKZT.js","assets/button-BjVmmiGW.js","assets/clsx-DB0hHKMi.js","assets/api-client-dugX1Pti.js","assets/circle-alert-BS0xd_o1.js","assets/i18n-BWqZ9Ua2.js","assets/label-CGaLmLNf.js","assets/use-auth-CuDlW3iC.js","assets/index-DMeLKRJx.css","assets/lazy-recharts-Pv8p9ArM.js","assets/tokens-per-day-chart-Cs82BFuE.js","assets/time-to-first-token-chart--68L0u_v.js","assets/tokens-per-second-chart-AD2dfOn6.js","assets/queue-wait-chart-VoV7Yg9L.js","assets/model-distribution-donut-BKjAfT48.js","assets/distribution-metric-format-yZTy1ZEu.js","assets/useragent-distribution-donut-Dup6sf_n.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,S as n,r}from"./vendor-query-_bHZuxEx.js";import{n as i,t as a}from"./arrow-up-Dqh_KzJo.js";import{t as o}from"./arrow-up-down-LBRgVDGY.js";import{t as s}from"./download-kQteIcsB.js";import{t as c}from"./useTranslation--56nHhlH.js";import{c as l,t as u}from"./button-BjVmmiGW.js";import{d,f,h as p,m,r as h,v as g}from"./api-client-dugX1Pti.js";import{Gt as _,K as ee,Ot as te,at as ne,dr as v,et as y,j as b,sn as x}from"./index-DIpd264Z.js";import{t as S}from"./multi-select-filter-KIA5qU6Z.js";var C=e(t(),1),w=n();function T(e,t,n){if(!D(e)||!D(t)||e>t)return n;let r=new Map(n.map(e=>[e.date,e])),i=[];for(let n=e;n<=t;n=E(n))i.push(r.get(n)??re(n));return i}function E(e){let t=new Date(`${e}T00:00:00Z`);return t.setUTCDate(t.getUTCDate()+1),t.toISOString().slice(0,10)}function D(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(`${e}T00:00:00Z`);return!Number.isNaN(t.getTime())&&t.toISOString().slice(0,10)===e}function re(e){return{date:e,requests:0,conversations:0,inputTokens:0,outputTokens:0,reasoningTokens:0,cachedInputTokens:0,costUsd:0,activeAccounts:0,cancelledCount:0,errorCount:0,medianTtftMs:0,medianTps:0,medianQueueMs:0}}var O=p({date:g(),requests:m(),conversations:m(),inputTokens:m(),outputTokens:m(),reasoningTokens:m().nullable(),cachedInputTokens:m(),costUsd:m(),activeAccounts:m(),cancelledCount:m(),errorCount:m(),medianTtftMs:m().optional().default(0),medianTps:m().optional().default(0),medianQueueMs:m().optional().default(0)}),k=p({model:g(),costUsd:m(),requests:m(),percentage:m()}),A=p({useragent:g(),costUsd:m(),requests:m(),percentage:m()}),j=p({accountId:g().nullable(),alias:g().nullable(),costUsd:m(),requests:m()}),M=p({totalCostUsd:m(),totalInputTokens:m(),totalOutputTokens:m(),totalReasoningTokens:m(),reasoningUsageKnownRequests:m(),totalCachedTokens:m(),totalRequests:m(),totalCancelled:m(),totalErrors:m(),totalConversations:m(),activeAccounts:m(),avgCostPerDay:m(),avgRequestsPerDay:m()}),ie=p({totalCostUsd:m(),totalTokens:m(),totalRequests:m()}),N=p({canCompare:f(),previous:ie}),ae=p({models:d(g()),useragents:d(g())}),oe=p({generatedAt:g().optional(),speedMetricsAvailable:f().optional(),speedMetricsMaxDays:m().optional(),summary:M,comparison:N,daily:d(O),byModel:d(k),byUseragent:d(A),byAccount:d(j)}),P=p({requests:m(),requestShare:m(),unattributedRequestShare:m(),conversations:m(),meanAccountsPerConversation:m(),singleAccountConversationShare:m(),turns:m(),accountSwitchRate:m(),cacheHitRatio:m(),cacheSampleInputTokens:m(),threadGroupingApproximate:f()}),se=p({generatedAt:g().optional(),available:f(),maxDays:m(),windowDays:m(),conversationMinRequests:m(),switchMaxGapSeconds:m(),cacheMinInputTokens:m(),totalRequests:m(),unkeyedRequestShare:m(),keyed:P,unkeyed:P});function F(e){let t=new URLSearchParams;if(e.startDate&&t.set(`start_date`,e.startDate),e.endDate&&t.set(`end_date`,e.endDate),e.model&&t.set(`model`,e.model),e.useragent&&t.set(`useragent_group`,e.useragent),e.timezone&&t.set(`timezone`,e.timezone),e.accountId)for(let n of e.accountId)t.append(`account_id`,n);if(e.apiKeyId)for(let n of e.apiKeyId)t.append(`api_key_id`,n);return t.size>0?`?${t.toString()}`:``}function ce(e={}){return h(`/api/reports${F(e)}`,oe)}function le(e={}){return h(`/api/reports/options${F(e)}`,ae)}function ue(e={}){return h(`/api/reports/thread-identity${F(e)}`,se)}var I=`codex-lb-reports-timezone`;function L(e){if(!e)return!1;if(typeof Intl.supportedValuesOf==`function`)return e===`UTC`||Intl.supportedValuesOf(`timeZone`).includes(e);try{return new Intl.DateTimeFormat(void 0,{timeZone:e}),!0}catch{return!1}}function R(){let e=Intl.DateTimeFormat().resolvedOptions().timeZone;if(L(e)){try{window.localStorage.setItem(I,e)}catch{}return e}try{let e=window.localStorage.getItem(I)??void 0;if(L(e))return e}catch{}}function z(e=new Date){let t=e.getTime()-e.getTimezoneOffset()*6e4;return new Date(t).toISOString().slice(0,10)}function B(e,t=new Date){let n=new Date(t);return n.setDate(n.getDate()-e),z(n)}function V(e,t){return!e||!t||e<=t}function de(e,t){let[n,r,i]=e.split(`-`);return!n||!r||!i?e:ee(`${n}-${r}-${i}T00:00:00`,t).date}function fe(e,t){return r({enabled:V(e.startDate,e.endDate),queryKey:[`reports`,e,t],queryFn:()=>ce({startDate:e.startDate,endDate:e.endDate,accountId:e.accountId.length>0?e.accountId:void 0,apiKeyId:e.apiKeyId&&e.apiKeyId.length>0?e.apiKeyId:void 0,model:e.model||void 0,useragent:e.useragent||void 0,timezone:t}),staleTime:3e5,refetchInterval:!1,refetchOnWindowFocus:!1,retry:!1})}function pe(e,t){let n={startDate:e.startDate,endDate:e.endDate,accountId:[...e.accountId].sort(),apiKeyId:[...e.apiKeyId??[]].sort(),timezone:t};return r({queryKey:[`reports-options`,n],enabled:V(e.startDate,e.endDate),queryFn:()=>le(n),staleTime:3e5,refetchInterval:!1,refetchOnWindowFocus:!1,retry:!1})}var me=3e5;function he(e,t,n){let i={startDate:e.startDate,endDate:e.endDate,timezone:t};return r({enabled:n&&V(e.startDate,e.endDate),queryKey:[`reports-thread-identity`,i],queryFn:()=>ue(i),staleTime:me,refetchInterval:!1,refetchOnWindowFocus:!1,retry:!1})}var H=[{id:`costByDay`,labelKey:`reports.charts.costByDay`},{id:`tokensByDay`,labelKey:`reports.charts.tokensByDay`},{id:`timeToFirstToken`,labelKey:`reports.charts.timeToFirstToken`},{id:`tokensPerSecond`,labelKey:`reports.charts.tokensPerSecond`},{id:`queueWait`,labelKey:`reports.charts.queueWait`},{id:`threadIdentity`,labelKey:`reports.threadIdentity.title`}],U=`codex-lb-reports-visible-charts`,W=H.map(({id:e})=>e);function G(){return[...W]}function ge(e){let t=new Set(e);return W.filter(e=>t.has(e))}function _e(){try{let e=localStorage.getItem(U);if(e===null)return G();let t=JSON.parse(e);return!Array.isArray(t)||!t.every(e=>typeof e==`string`)?G():ge(t)}catch{return G()}}function ve(){let[e,t]=(0,C.useState)(_e);return(0,C.useEffect)(()=>{try{localStorage.setItem(U,JSON.stringify(e))}catch{}},[e]),{visibleChartIds:e,setVisibleChartIds:e=>{t(ge(e))}}}var ye=[{label:`7d`,days:7},{label:`30d`,days:30},{label:`90d`,days:90}];function be({filters:e,selectedPresetDays:t,accountOptions:n,apiKeyOptions:r,modelOptions:i,useragentOptions:a,visibleChartIds:o,onPresetSelect:s,onFiltersChange:l,onVisibleChartIdsChange:d}){let{t:f}=c(),p=H.map(({id:e,labelKey:t})=>({value:e,label:f(t)})),m=z(),h=(0,C.useId)(),g=!V(e.startDate,e.endDate),_=e.endDate&&e.endDate<m?e.endDate:m;return(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 rounded-xl border bg-card p-3`,children:[ye.map(e=>{let n=t===e.days;return(0,w.jsx)(u,{variant:n?`default`:`outline`,size:`sm`,"aria-pressed":n,onClick:()=>s(e.days),children:e.label},e.days)}),(0,w.jsx)(S,{label:f(`dashboard.filters.accounts`),values:e.accountId,options:n,onChange:t=>l({...e,accountId:t})}),(0,w.jsx)(S,{label:f(`dashboard.filters.apiKeys`),values:e.apiKeyId,options:r,onChange:t=>l({...e,apiKeyId:t})}),(0,w.jsx)(S,{label:f(`dashboard.filters.model`),values:e.model?[e.model]:[],options:i,onChange:t=>l({...e,model:t.at(-1)??``})}),(0,w.jsx)(S,{label:f(`reports.filters.userAgent`),values:e.useragent?[e.useragent]:[],options:a,onChange:t=>l({...e,useragent:t.at(-1)??``})}),(0,w.jsx)(S,{label:f(`reports.filters.charts`),values:o,options:p,onChange:d}),(0,w.jsxs)(`div`,{className:`ml-auto flex flex-col items-end gap-1`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`input`,{type:`date`,name:`report-start-date`,autoComplete:`off`,"aria-label":f(`reports.filters.startDate`),"aria-invalid":g||void 0,"aria-describedby":g?h:void 0,max:_,value:e.startDate,onChange:t=>l({...e,startDate:t.target.value}),className:`h-8 rounded-md border bg-transparent px-2 text-xs text-foreground aria-invalid:border-destructive aria-invalid:ring-destructive/20`}),(0,w.jsx)(`span`,{"aria-hidden":`true`,className:`text-xs text-muted-foreground`,children:`—`}),(0,w.jsx)(`input`,{type:`date`,name:`report-end-date`,autoComplete:`off`,"aria-label":f(`reports.filters.endDate`),"aria-invalid":g||void 0,"aria-describedby":g?h:void 0,min:e.startDate||void 0,max:m,value:e.endDate,onChange:t=>l({...e,endDate:t.target.value}),className:`h-8 rounded-md border bg-transparent px-2 text-xs text-foreground aria-invalid:border-destructive aria-invalid:ring-destructive/20`})]}),g?(0,w.jsx)(`p`,{id:h,"aria-live":`polite`,className:`text-xs text-destructive`,children:f(`reports.filters.invalidDateRange`)}):null]})]})}var xe={positive:`text-emerald-600 dark:text-emerald-400`,negative:`text-red-600 dark:text-red-400`};function Se({summary:e,comparison:t}){let{t:n}=c(),r=[{id:`total-cost`,label:n(`reports.summary.totalCost`),value:b(e.totalCostUsd),sub:n(`reports.summary.avgCostPerDay`,{cost:b(e.avgCostPerDay)}),comparison:J(e.totalCostUsd,t.previous.totalCostUsd,t.canCompare)},{id:`tokens`,label:n(`reports.summary.tokens`),value:K(e.totalInputTokens+e.totalOutputTokens),sub:n(`reports.summary.tokensSub`,{input:K(e.totalInputTokens),cache:K(e.totalCachedTokens),output:K(e.totalOutputTokens)}),secondarySub:e.totalRequests>0?n(`reports.summary.reasoningSub`,{reasoning:K(e.totalReasoningTokens),known:e.reasoningUsageKnownRequests,total:e.totalRequests}):void 0,comparison:J(e.totalInputTokens+e.totalOutputTokens,t.previous.totalTokens,t.canCompare)},{id:`requests`,label:n(`reports.summary.requests`),value:K(e.totalRequests),sub:n(`reports.summary.requestsSub`,{requests:e.avgRequestsPerDay.toFixed(0),accounts:e.activeAccounts}),comparison:J(e.totalRequests,t.previous.totalRequests,t.canCompare)},{id:`conversations`,label:n(`reports.summary.conversations`),value:K(e.totalConversations)},{id:`cancelled`,label:n(`reports.summary.cancelled`),value:K(e.totalCancelled)},{id:`errors`,label:n(`reports.summary.errors`),value:K(e.totalErrors)}];return(0,w.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6`,children:r.map(e=>(0,w.jsxs)(`div`,{"data-testid":`report-summary-card-${e.id}`,className:`rounded-xl border bg-card p-4`,children:[(0,w.jsx)(`div`,{className:`text-[11px] font-medium uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,w.jsxs)(`div`,{className:`mt-1 flex items-baseline gap-2`,children:[(0,w.jsx)(`div`,{className:`text-[1.625rem] font-semibold tracking-[-0.02em] text-foreground`,children:e.value}),e.comparison?(0,w.jsx)(`div`,{className:l(`text-xs font-medium`,xe[e.comparison.tone]),children:e.comparison.text}):null]}),e.sub?(0,w.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:e.sub}):null,`secondarySub`in e&&e.secondarySub?(0,w.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.secondarySub}):null]},e.id))})}function K(e){return e>=1e9?q(e/1e9,`B`):e>=1e6?q(e/1e6,`M`):e>=1e3?q(e/1e3,`K`):String(e)}function q(e,t){return t===`M`&&e>=100&&Number.isInteger(e)?`${e.toFixed(0)}${t}`:`${e.toFixed(1)}${t}`}function J(e,t,n){if(!n||t<=0)return;let r=(e-t)/t*100,i=Math.round(Math.abs(r));if(i!==0)return r>0?{text:`▲ ${i}%`,tone:`positive`}:{text:`▼ ${i}%`,tone:`negative`}}var Ce=`max-h-[17.5rem]`;function Y(e){return e>=1e9?`${(e/1e9).toFixed(1)}B`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(0)}K`:String(e)}function we({startDate:e,endDate:t,data:n}){let{t:r}=c(),i=y(e=>e.dateDisplayFormat),[a,o]=(0,C.useState)({key:`date`,direction:`desc`}),l=Z(T(e,t,n),a),d=Z(l,{key:`date`,direction:`asc`}),f=e=>{o(t=>t.key===e?{key:e,direction:t.direction===`asc`?`desc`:`asc`}:{key:e,direction:`asc`})};return(0,w.jsxs)(`div`,{className:`rounded-xl border bg-card p-5`,children:[(0,w.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,w.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:r(`reports.dailyBreakdown.title`)}),(0,w.jsxs)(u,{variant:`outline`,size:`sm`,className:`h-7 gap-1 text-xs`,onClick:()=>Ee(d,r),children:[(0,w.jsx)(s,{className:`h-3 w-3`}),r(`reports.dailyBreakdown.csv`)]})]}),(0,w.jsx)(`div`,{"data-testid":`daily-breakdown-scroll-body`,className:`${Ce} overflow-x-auto overflow-y-auto`,children:(0,w.jsxs)(`table`,{className:`w-full table-fixed text-xs min-w-[1000px]`,children:[(0,w.jsx)(Te,{}),(0,w.jsx)(`thead`,{className:`sticky top-0 z-10 bg-card`,children:(0,w.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,w.jsx)(X,{align:`left`,label:r(`reports.dailyBreakdown.columns.day`),isActive:a.key===`date`,direction:a.direction,onClick:()=>f(`date`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.reqs`),isActive:a.key===`requests`,direction:a.direction,onClick:()=>f(`requests`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.conversations`),isActive:a.key===`conversations`,direction:a.direction,onClick:()=>f(`conversations`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.inputTokens`),isActive:a.key===`inputTokens`,direction:a.direction,onClick:()=>f(`inputTokens`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.outputTokens`),isActive:a.key===`outputTokens`,direction:a.direction,onClick:()=>f(`outputTokens`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.reasoningTokens`),isActive:a.key===`reasoningTokens`,direction:a.direction,onClick:()=>f(`reasoningTokens`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.cost`),isActive:a.key===`costUsd`,direction:a.direction,onClick:()=>f(`costUsd`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.accounts`),isActive:a.key===`activeAccounts`,direction:a.direction,onClick:()=>f(`activeAccounts`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.cancelled`),isActive:a.key===`cancelledCount`,direction:a.direction,onClick:()=>f(`cancelledCount`)}),(0,w.jsx)(X,{label:r(`reports.dailyBreakdown.columns.errors`),isActive:a.key===`errorCount`,direction:a.direction,onClick:()=>f(`errorCount`)})]})}),(0,w.jsx)(`tbody`,{children:l.map(e=>(0,w.jsxs)(`tr`,{"data-testid":`daily-breakdown-row-${e.date}`,className:`border-b border-border/50 last:border-0`,children:[(0,w.jsx)(`td`,{className:`py-2.5 pr-4 font-medium text-foreground`,children:de(e.date,i)}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:e.requests}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:e.conversations}),(0,w.jsxs)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:[(0,w.jsx)(`span`,{children:Y(e.inputTokens)}),` `,(0,w.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[`(`,Y(e.cachedInputTokens),`)`]})]}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:Y(e.outputTokens)}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:e.reasoningTokens==null?`—`:Y(e.reasoningTokens)}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right font-medium text-emerald-600 dark:text-emerald-400`,children:b(e.costUsd)}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-muted-foreground`,children:e.activeAccounts}),(0,w.jsx)(`td`,{className:`py-2.5 pr-4 text-right text-foreground`,children:e.cancelledCount}),(0,w.jsx)(`td`,{className:`py-2.5 text-right text-foreground`,children:e.errorCount})]},e.date))})]})})]})}function X({align:e=`right`,label:t,isActive:n,direction:r,onClick:s}){return(0,w.jsx)(`th`,{className:`pb-2 ${e===`left`?`pr-4`:e===`right`?`pr-4 text-right`:``} font-medium`,"aria-sort":n?r===`asc`?`ascending`:`descending`:`none`,children:(0,w.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-1 ${e===`left`?`justify-start text-left`:`justify-end text-right`} font-medium text-inherit`,onClick:s,children:[(0,w.jsx)(`span`,{children:t}),(0,w.jsx)(n?r===`asc`?a:i:o,{"aria-hidden":`true`,"data-testid":n?r===`asc`?`sort-icon-asc`:`sort-icon-desc`:`sort-icon-none`,"data-sort-icon":n?r===`asc`?`up`:`down`:`up-down`,className:`h-3 w-3 shrink-0 ${n?`text-foreground`:`text-muted-foreground/60`}`})]})})}function Te(){return(0,w.jsxs)(`colgroup`,{children:[(0,w.jsx)(`col`,{style:{width:`14%`}}),(0,w.jsx)(`col`,{style:{width:`8%`}}),(0,w.jsx)(`col`,{style:{width:`10%`}}),(0,w.jsx)(`col`,{style:{width:`12%`}}),(0,w.jsx)(`col`,{style:{width:`12%`}}),(0,w.jsx)(`col`,{style:{width:`13%`}}),(0,w.jsx)(`col`,{style:{width:`9%`}}),(0,w.jsx)(`col`,{style:{width:`8%`}}),(0,w.jsx)(`col`,{style:{width:`7%`}}),(0,w.jsx)(`col`,{style:{width:`7%`}})]})}function Z(e,t){return[...e].sort((e,n)=>{let r=e[t.key],i=n[t.key];return r==null&&i==null?0:r==null?1:i==null?-1:r<i?t.direction===`asc`?-1:1:r>i?t.direction===`asc`?1:-1:0})}function Ee(e,t){let n=[t(`reports.dailyBreakdown.csvColumns.date`),t(`reports.dailyBreakdown.csvColumns.requests`),t(`reports.dailyBreakdown.csvColumns.conversations`),t(`reports.dailyBreakdown.csvColumns.inputTokens`),t(`reports.dailyBreakdown.csvColumns.outputTokens`),t(`reports.dailyBreakdown.csvColumns.reasoningTokens`),t(`reports.dailyBreakdown.csvColumns.cachedTokens`),t(`reports.dailyBreakdown.csvColumns.costUsd`),t(`reports.dailyBreakdown.csvColumns.activeAccounts`),t(`reports.dailyBreakdown.csvColumns.cancelled`),t(`reports.dailyBreakdown.csvColumns.errors`)],r=e.map(e=>[e.date,e.requests,e.conversations,e.inputTokens,e.outputTokens,e.reasoningTokens??``,e.cachedInputTokens,e.costUsd.toFixed(4),e.activeAccounts,e.cancelledCount,e.errorCount].join(`,`)),i=[n.join(`,`),...r].join(`
3
+ `),a=new Blob([i],{type:`text/csv;charset=utf-8;`}),o=URL.createObjectURL(a),s=document.createElement(`a`);s.href=o,s.download=`reports-${e[0]?.date??`data`}-${e[e.length-1]?.date??`data`}.csv`,s.click(),URL.revokeObjectURL(o)}function Q(e){let t=e*100;return t>0&&t<.1?`<0.1%`:`${t.toFixed(1)}%`}function De(e){return e.toFixed(2)}function $(e){return e.toLocaleString()}function Oe({data:e}){let{t}=c();if(!e.available)return(0,w.jsxs)(`div`,{className:`rounded-xl border bg-card p-5`,"data-testid":`thread-identity-card`,children:[(0,w.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:t(`reports.threadIdentity.title`)}),(0,w.jsx)(`p`,{className:`mt-3 text-sm text-muted-foreground`,children:t(`reports.threadIdentity.unavailable`,{days:e.maxDays})})]});let n=[{id:`factor`,label:t(`reports.threadIdentity.metrics.accountsPerConversation`),hint:t(`reports.threadIdentity.hints.accountsPerConversation`,{requests:e.conversationMinRequests}),render:e=>De(e.meanAccountsPerConversation),sub:e=>t(`reports.threadIdentity.subs.conversations`,{conversations:$(e.conversations)})},{id:`single-account`,label:t(`reports.threadIdentity.metrics.singleAccountShare`),hint:t(`reports.threadIdentity.hints.singleAccountShare`),render:e=>Q(e.singleAccountConversationShare),sub:()=>null},{id:`switch-rate`,label:t(`reports.threadIdentity.metrics.switchRate`),hint:t(`reports.threadIdentity.hints.switchRate`,{minutes:Math.round(e.switchMaxGapSeconds/60)}),render:e=>Q(e.accountSwitchRate),sub:e=>t(`reports.threadIdentity.subs.turns`,{turns:$(e.turns)})},{id:`cache-hit`,label:t(`reports.threadIdentity.metrics.cacheHitRatio`),hint:t(`reports.threadIdentity.hints.cacheHitRatio`,{tokens:$(e.cacheMinInputTokens)}),render:e=>Q(e.cacheHitRatio),sub:e=>t(`reports.threadIdentity.subs.cacheSample`,{tokens:$(e.cacheSampleInputTokens)})},{id:`requests`,label:t(`reports.threadIdentity.metrics.requestShare`),hint:t(`reports.threadIdentity.hints.requestShare`),render:e=>Q(e.requestShare),sub:e=>t(`reports.threadIdentity.subs.requests`,{requests:$(e.requests)})}],r=e.totalRequests>0?(e.keyed.unattributedRequestShare*e.keyed.requests+e.unkeyed.unattributedRequestShare*e.unkeyed.requests)/e.totalRequests:0,i=[{id:`keyed`,label:t(`reports.threadIdentity.keyed`),facet:e.keyed},{id:`unkeyed`,label:t(`reports.threadIdentity.unkeyed`),facet:e.unkeyed}];return(0,w.jsxs)(`div`,{className:`rounded-xl border bg-card p-5`,"data-testid":`thread-identity-card`,children:[(0,w.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[(0,w.jsx)(`div`,{className:`text-sm font-semibold text-foreground`,children:t(`reports.threadIdentity.title`)}),(0,w.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:t(`reports.threadIdentity.unkeyedShare`,{share:Q(e.unkeyedRequestShare),requests:$(e.totalRequests)})})]}),(0,w.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:t(`reports.threadIdentity.subtitle`)}),(0,w.jsx)(`div`,{className:`mt-4 overflow-x-auto`,children:(0,w.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{className:`border-b text-[11px] font-medium uppercase tracking-wider text-muted-foreground`,children:[(0,w.jsx)(`th`,{scope:`col`,className:`py-2 pr-4 text-left font-medium`,children:t(`reports.threadIdentity.metricColumn`)}),i.map(e=>(0,w.jsx)(`th`,{scope:`col`,className:`py-2 pl-4 text-right font-medium`,children:e.label},e.id))]})}),(0,w.jsx)(`tbody`,{children:n.map(e=>(0,w.jsxs)(`tr`,{className:`border-b last:border-b-0 align-top`,children:[(0,w.jsxs)(`th`,{scope:`row`,className:`py-3 pr-4 text-left font-normal`,children:[(0,w.jsx)(`div`,{className:`text-foreground`,children:e.label}),(0,w.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:e.hint})]}),i.map(t=>{let n=e.sub(t.facet);return(0,w.jsxs)(`td`,{className:`py-3 pl-4 text-right tabular-nums`,"data-testid":`thread-identity-${t.id}-${e.id}`,children:[(0,w.jsx)(`div`,{className:`font-semibold text-foreground`,children:e.render(t.facet)}),n?(0,w.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:n}):null]},t.id)})]},e.id))})]})}),e.unkeyed.threadGroupingApproximate?(0,w.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:t(`reports.threadIdentity.approximate`)}):null,r>0?(0,w.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:t(`reports.threadIdentity.unattributed`,{share:Q(r)})}):null]})}var ke=(0,C.lazy)(()=>v(()=>import(`./cost-per-day-chart-YdqlkZVM.js`).then(e=>({default:t=>(0,w.jsx)(e.CostPerDayChart,{...t})})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]))),Ae=(0,C.lazy)(()=>v(()=>import(`./tokens-per-day-chart-Cs82BFuE.js`).then(e=>({default:t=>(0,w.jsx)(e.TokensPerDayChart,{...t})})),__vite__mapDeps([21,1,2,3,4,5,6,7,20,8,9,10,11,12,13,14,15,16,17,18,19]))),je=(0,C.lazy)(()=>v(()=>import(`./time-to-first-token-chart--68L0u_v.js`).then(e=>({default:t=>(0,w.jsx)(e.TimeToFirstTokenChart,{...t})})),__vite__mapDeps([22,1,2,3,4,5,6,7,20,8,9,10,11,12,13,14,15,16,17,18,19]))),Me=(0,C.lazy)(()=>v(()=>import(`./tokens-per-second-chart-AD2dfOn6.js`).then(e=>({default:t=>(0,w.jsx)(e.TokensPerSecondChart,{...t})})),__vite__mapDeps([23,1,2,3,4,5,6,7,20,8,9,10,11,12,13,14,15,16,17,18,19]))),Ne=(0,C.lazy)(()=>v(()=>import(`./queue-wait-chart-VoV7Yg9L.js`).then(e=>({default:t=>(0,w.jsx)(e.QueueWaitChart,{...t})})),__vite__mapDeps([24,1,2,3,4,5,6,7,20,8,9,10,11,12,13,14,15,16,17,18,19]))),Pe=(0,C.lazy)(()=>v(()=>import(`./model-distribution-donut-BKjAfT48.js`).then(e=>({default:t=>(0,w.jsx)(e.ModelDistributionDonut,{...t})})),__vite__mapDeps([25,2,1,5,6,20,8,9,4,10,11,12,13,14,15,16,17,18,19,26]))),Fe=(0,C.lazy)(()=>v(()=>import(`./useragent-distribution-donut-Dup6sf_n.js`).then(e=>({default:t=>(0,w.jsx)(e.UseragentDistributionDonut,{...t})})),__vite__mapDeps([27,2,1,5,6,20,8,9,4,10,11,12,13,14,15,16,17,18,19,26]))),Ie=6e4,Le=7,Re=()=>({startDate:B(6),endDate:z(),accountId:[],apiKeyId:[],model:``,useragent:``});function ze({initialFilters:e}={}){let{t}=c(),[n,i]=(0,C.useState)(()=>({...Re(),...e})),[a,o]=(0,C.useState)(Le),[s,l]=(0,C.useState)(()=>R()),{visibleChartIds:d,setVisibleChartIds:f}=ve();(0,C.useEffect)(()=>{let e=()=>{l(e=>{let t=R();return e===t?e:t})},t=window.setInterval(e,Ie);return window.addEventListener(`focus`,e),document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(t),window.removeEventListener(`focus`,e),document.removeEventListener(`visibilitychange`,e)}},[]);let p=fe(n,s),m=he(n,s,d.includes(`threadIdentity`)),h=pe(n,s),{data:g,error:ee,refetch:v}=r({queryKey:[`accounts`,`reports-filter`],queryFn:te}),{data:y,error:b,refetch:S}=r({queryKey:[`request-log-options`,`reports-filter`],queryFn:()=>ne()}),T=(0,C.useMemo)(()=>(g?.accounts??[]).map(e=>({value:e.accountId,label:e.alias||e.displayName||e.email||e.accountId,isEmail:!e.alias})),[g]),E=(0,C.useMemo)(()=>(y?.apiKeys??[]).map(e=>({value:e.id,label:e.keyPrefix?`${e.name} · ${e.keyPrefix}`:e.name})),[y]),D=(0,C.useMemo)(()=>(h.data?.models??[]).map(e=>({value:e,label:e})),[h.data]),re=(0,C.useMemo)(()=>(h.data?.useragents??[]).map(e=>({value:e,label:e})),[h.data]),O=_(p.error),k=_(h.error),A=_(ee),j=_(b),M=_(m.error),ie=!!(O||k||A||j),N=async()=>{V(n.startDate,n.endDate)?await Promise.allSettled([p.refetch(),h.refetch(),v(),S(),...d.includes(`threadIdentity`)?[m.refetch()]:[]]):await Promise.allSettled([v(),S()])};return(0,w.jsxs)(`div`,{className:`mx-auto w-full max-w-[1500px] flex-1 space-y-6 px-4 py-8 sm:px-6`,children:[(0,w.jsxs)(`div`,{children:[(0,w.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-foreground`,children:t(`reports.page.title`)}),(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`reports.page.subtitle`)})]}),(0,w.jsx)(be,{filters:n,selectedPresetDays:a,accountOptions:T,apiKeyOptions:E,modelOptions:D,useragentOptions:re,visibleChartIds:d,onPresetSelect:e=>{o(e),i(t=>({...t,startDate:B(e-1),endDate:z()}))},onFiltersChange:e=>{(e.startDate!==n.startDate||e.endDate!==n.endDate)&&o(null),i(e)},onVisibleChartIdsChange:f}),O?(0,w.jsx)(x,{variant:`error`,children:t(`reports.errors.data`,{error:O})}):null,k?(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,w.jsx)(x,{variant:`error`,className:`flex-1`,children:t(`reports.errors.options`,{error:k})}),(0,w.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{N()},children:t(`common.actions.retry`)})]}):null,A?(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,w.jsx)(x,{variant:`error`,className:`flex-1`,children:t(`reports.errors.accounts`,{error:A})}),(0,w.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{N()},children:t(`common.actions.retry`)})]}):null,j?(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,w.jsx)(x,{variant:`error`,className:`flex-1`,children:t(`reports.errors.apiKeys`,{error:j})}),(0,w.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{N()},children:t(`common.actions.retry`)})]}):null,(0,w.jsxs)(`div`,{className:`flex items-center justify-end gap-3`,children:[p.data?.generatedAt?(0,w.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t(`reports.asOf`,{time:new Date(p.data.generatedAt).toLocaleString()})}):null,(0,w.jsx)(u,{variant:`outline`,size:`sm`,disabled:p.isFetching||h.isFetching||!V(n.startDate,n.endDate),onClick:()=>{N()},children:t(`reports.refresh`)})]}),p.data?.speedMetricsAvailable===!1?(0,w.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`reports.speedUnavailable`,{days:p.data.speedMetricsMaxDays??7})}):null,p.isLoading?(0,w.jsx)(`div`,{className:`flex items-center justify-center py-20 text-sm text-muted-foreground`,children:t(`common.loading`)}):p.data?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(Se,{summary:p.data.summary,comparison:p.data.comparison}),d.length>0?(0,w.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2`,children:[d.includes(`costByDay`)?(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[270px] rounded-xl border bg-card`}),children:(0,w.jsx)(ke,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})}):null,d.includes(`tokensByDay`)?(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[270px] rounded-xl border bg-card`}),children:(0,w.jsx)(Ae,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})}):null,p.data.speedMetricsAvailable!==!1&&d.includes(`timeToFirstToken`)?(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[270px] rounded-xl border bg-card`}),children:(0,w.jsx)(je,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})}):null,p.data.speedMetricsAvailable!==!1&&d.includes(`tokensPerSecond`)?(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[270px] rounded-xl border bg-card`}),children:(0,w.jsx)(Me,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})}):null,p.data.speedMetricsAvailable!==!1&&d.includes(`queueWait`)?(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[270px] rounded-xl border bg-card`}),children:(0,w.jsx)(Ne,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})}):null]}):null,d.includes(`threadIdentity`)?M?(0,w.jsx)(x,{variant:`error`,children:t(`reports.errors.threadIdentity`,{error:M})}):m.data?(0,w.jsx)(Oe,{data:m.data}):null:null,(0,w.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-3`,children:[(0,w.jsxs)(`div`,{className:`space-y-4 lg:col-span-1`,children:[(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[220px] rounded-xl border bg-card`}),children:(0,w.jsx)(Pe,{data:p.data.byModel})}),(0,w.jsx)(C.Suspense,{fallback:(0,w.jsx)(`div`,{className:`h-[220px] rounded-xl border bg-card`}),children:(0,w.jsx)(Fe,{data:p.data.byUseragent})})]}),(0,w.jsx)(`div`,{className:`lg:col-span-2`,children:(0,w.jsx)(we,{startDate:n.startDate,endDate:n.endDate,data:p.data.daily})})]})]}):ie?(0,w.jsxs)(`div`,{className:`space-y-3 rounded-xl border bg-card p-4`,children:[(0,w.jsx)(x,{variant:`warning`,children:t(`reports.errors.partial`)}),(0,w.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>{N()},children:t(`common.actions.retry`)})]}):null]})}export{ze as ReportsPage,T as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,S as n}from"./vendor-query-_bHZuxEx.js";import{t as r}from"./createLucideIcon-DBLzLNh2.js";import{t as i}from"./useTranslation--56nHhlH.js";import{c as a}from"./button-BjVmmiGW.js";import{M as o,W as s,Wt as c,et as l}from"./index-DIpd264Z.js";import{t as u}from"./use-reduced-motion-hAm5r6_d.js";import{s as d}from"./account-status-DIsU5sUS.js";import{a as f,t as p}from"./use-accounts-PWlVGw3z.js";var m={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};m.node;var h=r(m),g=e(t(),1),_=1e3,v=9e4;function y(e){return e===null||!Number.isFinite(e)?null:Math.max(0,Math.min(100,e))}function b(e){let t=y(e),n=u(),[r,i]=(0,g.useState)(t),a=(0,g.useRef)(t);return(0,g.useEffect)(()=>{if(t===null){if(a.current===null)return;let e=window.setTimeout(()=>{a.current=null,i(null)},v);return()=>window.clearTimeout(e)}let e=a.current;if(e===null||n||Math.abs(e-t)<.01){a.current=t,i(t);return}let r=0,o=performance.now(),s=n=>{let c=Math.min(1,Math.max(0,(n-o)/_)),l=1-(1-c)**3,u=e+(t-e)*l;a.current=u,i(u),c<1&&(r=requestAnimationFrame(s))};return r=requestAnimationFrame(s),()=>cancelAnimationFrame(r)},[n,t]),{percent:r,everKnown:t!==null||r!==null}}var x=n();function S(e){if(!e||e.length===0)return null;let t=e.filter(e=>e.status===`available`);return t.length===0?null:t.reduce((e,t)=>(t.expiresAt?new Date(t.expiresAt).getTime():1/0)<(e.expiresAt?new Date(e.expiresAt).getTime():1/0)?t:e)}function C({expiresAt:e,label:t,suffix:n,colorClass:r,dateDisplayFormat:i}){if(!e)return(0,x.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t,n?` ${n}`:``]});let c=s(e);return(0,x.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t,` `,o(e,i),` `,(0,x.jsxs)(`span`,{className:a(`tabular-nums`,r??(c.expiringSoon?`text-destructive`:`text-foreground`)),children:[`(`,c.label,`)`]}),n?` ${n}`:``]})}function w(){return globalThis.crypto?.randomUUID?.()??`dashboard-${Date.now()}-${Math.random().toString(36).slice(2)}`}function T({open:e,onOpenChange:t,accountId:n,summaryAvailableCount:r=0}){let{t:a}=i(),o=l(e=>e.dateDisplayFormat),{resetCreditConsumeMutation:s}=p(),u=(0,g.useRef)(null),m=f(n,e),h=m.isPending,_=m.isError,v=c(m.error,a(`accounts.resetCreditDialog.loadFailed`)),y=S(m.data?.credits),b=(m.data?.credits??[]).filter(e=>e.status===`available`&&e.id!==y?.id),T=m.isSuccess?m.data?.availableCount??0:r,E=s.isPending,D=E||!n||h||_||T<=0;return(0,g.useEffect)(()=>{e||(u.current=null)},[e]),(0,x.jsx)(d,{open:e,title:a(`accounts.resetCreditDialog.title`),description:a(`accounts.resetCreditDialog.description`),confirmLabel:a(E?`accounts.resetCreditDialog.redeeming`:`accounts.resetCreditDialog.confirm`),cancelLabel:a(`common.cancel`),confirmDisabled:D,keepOpenOnConfirm:!0,onOpenChange:e=>{(e||!E)&&(e||(u.current=null),t(e))},onConfirm:()=>{n&&!E&&(u.current=u.current??w(),s.mutateAsync({accountId:n,redeemRequestId:u.current}).then(()=>{t(!1)}).catch(()=>{}))},children:(0,x.jsx)(`div`,{className:`text-sm`,children:h?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(`accounts.resetCreditDialog.loading`)}):_?(0,x.jsx)(`p`,{className:`text-xs text-destructive`,children:v}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`p`,{className:`font-medium`,children:a(`accounts.resetCreditDialog.availableCount`,{count:T})}),y?(0,x.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,x.jsx)(C,{expiresAt:y.expiresAt,label:a(`accounts.resetCreditDialog.resetExpiresOn`),suffix:a(`accounts.resetCreditDialog.willBeUsed`),dateDisplayFormat:o}),b.map(e=>(0,x.jsx)(C,{expiresAt:e.expiresAt,label:a(`accounts.resetCreditDialog.otherExpiresOn`),colorClass:`text-muted-foreground`,dateDisplayFormat:o},e.id)),!y.expiresAt&&b.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:a(`accounts.resetCreditDialog.noExpiryData`)}):null]}):T>0?(0,x.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(`accounts.resetCreditDialog.noExpiryData`)}):m.data===null?(0,x.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:a(`accounts.resetCreditDialog.detailsUnavailable`)}):null]})})})}export{b as n,h as r,T as t};
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,o)=>(o=n==null?{}:e(i(n)),c(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));export{s as n,l as r,o as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-DBLzLNh2.js";var t={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};t.node;var n=e(t),r={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};r.node;var i=e(r);export{n,i as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{C as t,S as n}from"./vendor-query-_bHZuxEx.js";import{n as r}from"./vendor-react-BVL0YZPW.js";import{t as i}from"./createLucideIcon-DBLzLNh2.js";import{a,c as o,l as s,n as c,o as l,r as u,s as d}from"./iso-Bpe5Ihbb.js";import{_ as f,a as p,d as m,f as h,g,h as _,i as v,l as y,m as b,n as x,p as S,r as C,t as ee,v as w}from"./es2015-bMH8YKZT.js";import{a as T,c as E,s as D,t as O}from"./button-BjVmmiGW.js";import{Bn as k,Gn as A,Hn as te,Kn as j,Rn as ne,Un as M,Vn as N,Wn as re,ir as P,qn as F,zn as I}from"./index-DIpd264Z.js";var L={name:`chevron-up`,size:24,node:[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]};L.node;var R=i(L),z=e(t(),1),B=n(),ie=Object.defineProperty,V=(e,t)=>ie(e,`name`,{value:t,configurable:!0}),[ae,oe]=f(`AlertDialog`,[j]),H=j(),se=V(e=>{let{__scopeAlertDialog:t,...n}=e,r=H(t);return(0,B.jsx)(ne,{...r,...n,modal:!0})},`AlertDialog`);z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,B.jsx)(A,{...i,...r,ref:t})},`AlertDialogTrigger`));var ce=V(e=>{let{__scopeAlertDialog:t,...n}=e,r=H(t);return(0,B.jsx)(M,{...r,...n})},`AlertDialogPortal`),le=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,B.jsx)(te,{...i,...r,ref:t})},`AlertDialogOverlay`)),[ue,de]=ae(`AlertDialogContent`),fe=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,children:r,...i}=e,a=H(n),o=z.useRef(null),s=D(t,o),c=z.useRef(null);return(0,B.jsx)(ue,{scope:n,cancelRef:c,children:(0,B.jsx)(k,{role:`alertdialog`,...a,...i,ref:s,onOpenAutoFocus:g(i.onOpenAutoFocus,e=>{e.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:r})})},`AlertDialogContent`)),pe=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,B.jsx)(re,{...i,...r,ref:t})},`AlertDialogTitle`)),me=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,B.jsx)(N,{...i,...r,ref:t})},`AlertDialogDescription`)),he=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=H(n);return(0,B.jsx)(I,{...i,...r,ref:t})},`AlertDialogAction`)),ge=`AlertDialogCancel`,_e=z.forwardRef(V(function(e,t){let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=de(ge,n),a=H(n),o=D(t,i);return(0,B.jsx)(I,{...a,...r,ref:o})},`AlertDialogCancel`)),ve=e(r(),1),ye=Object.defineProperty,be=(e,t)=>ye(e,`name`,{value:t,configurable:!0});function xe(e){let t=z.useRef({value:e,previous:e});return z.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}be(xe,`usePrevious`);var Se=Object.defineProperty,Ce=(e,t)=>Se(e,`name`,{value:t,configurable:!0});function we(e,[t,n]){return Math.min(n,Math.max(t,e))}Ce(we,`clamp`);var Te=Object.defineProperty,U=(e,t)=>Te(e,`name`,{value:t,configurable:!0}),Ee={ItemAligned:`item-aligned`,Popper:`popper`},De={LTR:`ltr`,RTL:`rtl`},Oe=[` `,`Enter`,`ArrowUp`,`ArrowDown`],ke=[` `,`Enter`],W=`Select`,[G,K,Ae]=o(W),[q,je]=f(W,[Ae,l]),Me=l(),[Ne,J]=q(W),[Pe,Fe]=q(W);function Ie(e){let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:m,required:g,form:_,internal_do_not_use_render:v}=e,y=Me(t),[x,S]=z.useState(null),[C,ee]=z.useState(null),[w,T]=z.useState(!1),E=d(u),[D,O]=b({prop:r,defaultProp:i??!1,onChange:a,caller:W}),[k,A]=b({prop:o,defaultProp:s,onChange:l,caller:W}),te=z.useRef(null),j=z.useRef(k);z.useEffect(()=>{let e=_?x?.ownerDocument.getElementById(_):x?.form;if(e instanceof HTMLFormElement){let t=U(()=>A(j.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[_,x,A]);let ne=!x||!!_||!!x.closest(`form`),[M,N]=z.useState(new Set),re=h(),P=Array.from(M).map(e=>e.props.value).join(`;`),F=z.useCallback(e=>{N(t=>new Set(t).add(e))},[]),I=z.useCallback(e=>{N(t=>{let n=new Set(t);return n.delete(e),n})},[]),L={required:g,trigger:x,onTriggerChange:S,valueNode:C,onValueNodeChange:ee,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:re,value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:te,disabled:m,name:f,autoComplete:p,form:_,nativeOptions:M,nativeSelectKey:P,isFormControl:ne};return(0,B.jsx)(c,{...y,children:(0,B.jsx)(Ne,{scope:t,...L,children:(0,B.jsx)(G.Provider,{scope:t,children:(0,B.jsx)(Pe,{scope:t,onNativeOptionAdd:F,onNativeOptionRemove:I,children:St(v)?v(L):n})})})})}U(Ie,`SelectProvider`);var Le=U(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,B.jsx)(Ie,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,B.jsxs)(B.Fragment,{children:[n,e?(0,B.jsx)(xt,{__scopeSelect:t}):null]})})},`Select`),Re=`SelectTrigger`,ze=z.forwardRef(U(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=Me(n),o=J(Re,n),s=o.disabled||r,c=D(t,o.onTriggerChange),l=K(n),d=z.useRef(`touch`),[f,p,m]=Ct(e=>{let t=l().filter(e=>!e.disabled),n=wt(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=U(e=>{s||(o.onOpenChange(!0),m()),e&&(o.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})},`handleOpen`);return(0,B.jsx)(u,{asChild:!0,...a,children:(0,B.jsx)(w.button,{type:`button`,role:`combobox`,"aria-controls":o.open?o.contentId:void 0,"aria-expanded":o.open,"aria-required":o.required,"aria-autocomplete":`none`,dir:o.dir,"data-state":o.open?`open`:`closed`,disabled:s,"data-disabled":s?``:void 0,"data-placeholder":$(o.value)?``:void 0,...i,ref:c,onClick:g(i.onClick,e=>{e.currentTarget.focus(),d.current!==`mouse`&&h(e)}),onPointerDown:g(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(h(e),e.preventDefault())}),onKeyDown:g(i.onKeyDown,e=>{let t=f.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&p(e.key),!(t&&e.key===` `)&&Oe.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),Be=`SelectValue`,Ve=z.forwardRef(U(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=J(Be,n),{onValueNodeHasChildrenChange:l}=c,u=a!==void 0,d=D(t,c.onValueNodeChange);_(()=>{l(u)},[l,u]);let f=$(c.value);return(0,B.jsx)(w.span,{...s,asChild:!f&&s.asChild,ref:d,style:{pointerEvents:`none`},children:(0,B.jsx)(z.Fragment,{children:f?o:a},f?`placeholder`:`value`)})},`SelectValue`)),He=z.forwardRef(U(function(e,t){let{__scopeSelect:n,children:r,...i}=e;return(0,B.jsx)(w.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})},`SelectIcon`)),[Ue,We]=q(`SelectPortal`,{forceMount:void 0}),Ge=U(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,B.jsx)(Ue,{scope:e.__scopeSelect,forceMount:n,children:(0,B.jsx)(v,{asChild:!0,...r})})},`SelectPortal`),Y=`SelectContent`,Ke=z.forwardRef(U(function(e,t){let n=We(Y,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=J(Y,e.__scopeSelect),[o,s]=z.useState();return _(()=>{s(new DocumentFragment)},[]),(0,B.jsx)(S,{present:r||a.open,children:({present:e})=>e?(0,B.jsx)(Xe,{...i,ref:t}):(0,B.jsx)(qe,{...i,fragment:o})})},`SelectContent`)),qe=z.forwardRef(U(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?ve.createPortal((0,B.jsx)(Je,{scope:n,children:(0,B.jsx)(G.Slot,{scope:n,children:(0,B.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),X=10,[Je,Z]=q(Y),Ye=T(`SelectContent.RemoveScroll`),Xe=z.forwardRef(U(function(e,t){let{__scopeSelect:n}=e,{position:r=Ee.ItemAligned,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:o,side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:m,sticky:h,hideWhenDetached:_,avoidCollisions:v,...b}=e,S=J(Y,n),[w,T]=z.useState(null),[E,O]=z.useState(null),k=D(t,T),[A,te]=z.useState(null),[j,ne]=z.useState(null),M=K(n),[N,re]=z.useState(!1),P=z.useRef(!1);z.useEffect(()=>{if(w)return ee(w)},[w]),C();let F=z.useCallback(e=>{let[t,...n]=M().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&E&&(E.scrollTop=0),n===r&&E&&(E.scrollTop=E.scrollHeight),n?.focus(),document.activeElement!==i))return},[M,E]),I=z.useCallback(()=>F([A,w]),[F,A,w]);z.useEffect(()=>{N&&I()},[N,I]);let{onOpenChange:L,triggerPointerDownPosRef:R}=S;z.useEffect(()=>{if(w){let e={x:0,y:0},t=U(t=>{e={x:Math.abs(Math.round(t.pageX)-(R.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(R.current?.y??0))}},`handlePointerMove`),n=U(n=>{e.x<=10&&e.y<=10?n.preventDefault():n.composedPath().includes(w)||L(!1),document.removeEventListener(`pointermove`,t),R.current=null},`handlePointerUp`);return R.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[w,L,R]),z.useEffect(()=>{let e=U(()=>L(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[L]);let[ie,V]=Ct(e=>{let t=M().filter(e=>!e.disabled),n=wt(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current?.focus())}),ae=z.useCallback((e,t,n)=>{let r=!P.current&&!n;(S.value!==void 0&&S.value===t||r)&&(te(e),r&&(P.current=!0))},[S.value]),oe=z.useCallback(()=>w?.focus(),[w]),H=z.useCallback((e,t,n)=>{let r=!P.current&&!n;(S.value!==void 0&&S.value===t||r)&&ne(e)},[S.value]),se=r===Ee.Popper?Qe:Ze,ce=se===Qe?{side:s,sideOffset:c,align:l,alignOffset:u,arrowPadding:d,collisionBoundary:f,collisionPadding:m,sticky:h,hideWhenDetached:_,avoidCollisions:v}:{};return(0,B.jsx)(Je,{scope:n,content:w,viewport:E,onViewportChange:O,itemRefCallback:ae,selectedItem:A,onItemLeave:oe,itemTextRefCallback:H,focusSelectedItem:I,selectedItemText:j,position:r,isPositioned:N,searchRef:ie,children:(0,B.jsx)(x,{as:Ye,allowPinchZoom:!0,children:(0,B.jsx)(p,{asChild:!0,trapped:S.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:g(i,e=>{S.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,B.jsx)(y,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>S.onOpenChange(!1),children:(0,B.jsx)(se,{role:`listbox`,id:S.contentId,"data-state":S.open?`open`:`closed`,dir:S.dir,onContextMenu:e=>e.preventDefault(),...b,...ce,onPlaced:()=>re(!0),ref:k,style:{display:`flex`,flexDirection:`column`,outline:`none`,...b.style},onKeyDown:g(b.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&V(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=M().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>F(t)),e.preventDefault()}})})})})})})},`SelectContentImpl`)),Ze=z.forwardRef(U(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=J(Y,n),o=Z(Y,n),[s,c]=z.useState(null),[l,u]=z.useState(null),d=D(t,u),f=K(n),p=z.useRef(!1),m=z.useRef(!0),{viewport:h,selectedItem:g,selectedItemText:v,focusSelectedItem:y}=o,b=z.useCallback(()=>{if(a.trigger&&a.valueNode&&s&&l&&h&&g&&v){let e=a.trigger.getBoundingClientRect(),t=l.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=v.getBoundingClientRect();if(a.dir!==De.RTL){let r=i.left-t.left,a=n.left-r,o=e.left-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-X,d=we(a,[X,Math.max(X,u-l)]);s.style.minWidth=c+`px`,s.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,c=e.width+o,l=Math.max(c,t.width),u=window.innerWidth-X,d=we(a,[X,Math.max(X,u-l)]);s.style.minWidth=c+`px`,s.style.right=d+`px`}let o=f(),c=window.innerHeight-X*2,u=h.scrollHeight,d=window.getComputedStyle(l),m=parseInt(d.borderTopWidth,10),_=parseInt(d.paddingTop,10),y=parseInt(d.borderBottomWidth,10),b=parseInt(d.paddingBottom,10),x=m+_+u+b+y,S=Math.min(g.offsetHeight*5,x),C=window.getComputedStyle(h),ee=parseInt(C.paddingTop,10),w=parseInt(C.paddingBottom,10),T=e.top+e.height/2-X,E=c-T,D=g.offsetHeight/2,O=g.offsetTop+D,k=m+_+O,A=x-k;if(k<=T){let e=o.length>0&&g===o[o.length-1].ref.current;s.style.bottom=`0px`;let t=l.clientHeight-h.offsetTop-h.offsetHeight,n=k+Math.max(E,D+(e?w:0)+t+y);s.style.height=n+`px`}else{let e=o.length>0&&g===o[0].ref.current;s.style.top=`0px`;let t=Math.max(T,m+h.offsetTop+(e?ee:0)+D)+A;s.style.height=t+`px`,h.scrollTop=k-T+h.offsetTop}s.style.margin=`${X}px 0`,s.style.minHeight=S+`px`,s.style.maxHeight=c+`px`,r?.(),requestAnimationFrame(()=>p.current=!0)}},[f,a.trigger,a.valueNode,s,l,h,g,v,a.dir,r]);_(()=>b(),[b]);let[x,S]=z.useState();_(()=>{l&&S(window.getComputedStyle(l).zIndex)},[l]);let C=z.useCallback(e=>{e&&m.current===!0&&(b(),y?.(),m.current=!1)},[b,y]);return(0,B.jsx)($e,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:p,onScrollButtonChange:C,children:(0,B.jsx)(`div`,{ref:c,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:x},children:(0,B.jsx)(w.div,{...i,ref:d,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})},`SelectItemAlignedPosition`)),Qe=z.forwardRef(U(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=X,...o}=e,s=Me(n);return(0,B.jsx)(a,{...s,...o,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...o.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})},`SelectPopperPosition`)),[$e,et]=q(Y,{}),tt=`SelectViewport`,nt=z.forwardRef(U(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=Z(tt,n),o=et(tt,n),s=D(t,a.onViewportChange),c=z.useRef(0);return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,B.jsx)(G.Slot,{scope:n,children:(0,B.jsx)(w.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:s,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:g(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=o;if(r?.current&&n){let e=Math.abs(c.current-t.scrollTop);if(e>0){let r=window.innerHeight-X*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}c.current=t.scrollTop})})})]})},`SelectViewport`)),[rt,it]=q(`SelectGroup`),at=z.forwardRef(U(function(e,t){let{__scopeSelect:n,...r}=e,i=h();return(0,B.jsx)(rt,{scope:n,id:i,children:(0,B.jsx)(w.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})},`SelectGroup`)),ot=`SelectLabel`,st=z.forwardRef(U(function(e,t){let{__scopeSelect:n,...r}=e,i=it(ot,n);return(0,B.jsx)(w.div,{id:i.id,...r,ref:t})},`SelectLabel`)),ct=`SelectItem`,[lt,ut]=q(ct),dt=z.forwardRef(U(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,s=J(ct,n),c=Z(ct,n),l=s.value===r,[u,d]=z.useState(a??``),[f,p]=z.useState(!1),_=m(e=>c.itemRefCallback?.(e,r,i)),v=D(t,_),y=h(),b=z.useRef(`touch`),x=U(()=>{s.onValueChange(r),s.onOpenChange(!1)},`handleSelect`);return(0,B.jsx)(lt,{scope:n,value:r,disabled:i,textId:y,isSelected:l,onItemTextChange:z.useCallback(e=>{d(t=>t||(e?.textContent??``).trim())},[]),children:(0,B.jsx)(G.ItemSlot,{scope:n,value:r,disabled:i,textValue:u,children:(0,B.jsx)(w.div,{role:`option`,"aria-labelledby":y,"data-highlighted":f?``:void 0,"aria-selected":l&&f,"data-state":l?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...o,ref:v,onFocus:g(o.onFocus,()=>p(!0)),onBlur:g(o.onBlur,()=>p(!1)),onClick:g(o.onClick,()=>{i||b.current!==`mouse`&&x()}),onPointerUp:g(o.onPointerUp,()=>{i||b.current===`mouse`&&x()}),onPointerDown:g(o.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:g(o.onPointerMove,e=>{b.current=e.pointerType,i?c.onItemLeave?.():b.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:g(o.onPointerLeave,e=>{e.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:g(o.onKeyDown,e=>{i||e.target!==e.currentTarget||(c.searchRef?.current===``||e.key!==` `)&&(ke.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),Q=`SelectItemText`,ft=z.forwardRef(U(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=J(Q,n),s=Z(Q,n),c=ut(Q,n),l=Fe(Q,n),[u,d]=z.useState(null),f=m(e=>s.itemTextRefCallback?.(e,c.value,c.disabled)),p=D(t,d,c.onItemTextChange,f),h=u?.textContent,g=z.useMemo(()=>(0,B.jsx)(`option`,{value:c.value,disabled:c.disabled,children:h},c.value),[c.disabled,c.value,h]),{onNativeOptionAdd:v,onNativeOptionRemove:y}=l;return _(()=>(v(g),()=>y(g)),[v,y,g]),(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(w.span,{id:c.textId,...a,ref:p}),c.isSelected&&o.valueNode&&!o.valueNodeHasChildren&&!$(o.value)?ve.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),pt=`SelectItemIndicator`,mt=z.forwardRef(U(function(e,t){let{__scopeSelect:n,...r}=e;return ut(pt,n).isSelected?(0,B.jsx)(w.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),ht=`SelectScrollUpButton`,gt=z.forwardRef(U(function(e,t){let n=Z(ht,e.__scopeSelect),r=et(ht,e.__scopeSelect),[i,a]=z.useState(!1),o=D(t,r.onScrollButtonChange);return _(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollTop>0;a(e)};U(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,B.jsx)(yt,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),_t=`SelectScrollDownButton`,vt=z.forwardRef(U(function(e,t){let n=Z(_t,e.__scopeSelect),r=et(_t,e.__scopeSelect),[i,a]=z.useState(!1),o=D(t,r.onScrollButtonChange);return _(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;a(n)};U(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,B.jsx)(yt,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),yt=z.forwardRef(U(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=Z(`SelectScrollButton`,n),o=z.useRef(null),s=K(n),c=z.useCallback(()=>{o.current!==null&&(window.clearInterval(o.current),o.current=null)},[]);return z.useEffect(()=>()=>c(),[c]),_(()=>{s().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[s]),(0,B.jsx)(w.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:g(i.onPointerDown,()=>{o.current===null&&(o.current=window.setInterval(r,50))}),onPointerMove:g(i.onPointerMove,()=>{a.onItemLeave?.(),o.current===null&&(o.current=window.setInterval(r,50))}),onPointerLeave:g(i.onPointerLeave,()=>{c()})})},`SelectScrollButtonImpl`)),bt=`SelectBubbleInput`,xt=z.forwardRef(U(function({__scopeSelect:e,...t},n){let r=J(bt,e),{value:i,onValueChange:a,required:o,disabled:s,name:c,autoComplete:l,form:u}=r,{nativeOptions:d,nativeSelectKey:f}=r,p=z.useRef(null),m=D(n,p),h=i??``,g=xe(h),_=Array.from(d).some(e=>(e.props.value??``)===``);return z.useEffect(()=>{let e=p.current;if(!e)return;let t=window.HTMLSelectElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(g!==h&&n){let t=new Event(`change`,{bubbles:!0});n.call(e,h),e.dispatchEvent(t)}},[g,h]),(0,B.jsxs)(w.select,{"aria-hidden":!0,required:o,tabIndex:-1,name:c,autoComplete:l,disabled:s,form:u,onChange:e=>a(e.target.value),...t,style:{...F,...t.style},ref:m,defaultValue:h,children:[$(i)&&!_?(0,B.jsx)(`option`,{value:``}):null,Array.from(d)]},f)},`SelectBubbleInput`));function St(e){return typeof e==`function`}U(St,`isFunction`);function $(e){return e===``||e===void 0}U($,`shouldShowPlaceholder`);function Ct(e){let t=m(e),n=z.useRef(``),r=z.useRef(0),i=z.useCallback(e=>{let i=n.current+e;t(i),U((function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))}),`updateSearch`)(i)},[t]),a=z.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return z.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}U(Ct,`useTypeaheadSearch`);function wt(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Tt(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}U(wt,`findNextItem`);function Tt(e,t){return e.map((n,r)=>e[(t+r)%e.length])}U(Tt,`wrapArray`);function Et({...e}){return(0,B.jsx)(se,{"data-slot":`alert-dialog`,...e})}function Dt({...e}){return(0,B.jsx)(ce,{"data-slot":`alert-dialog-portal`,...e})}function Ot({className:e,...t}){return(0,B.jsx)(le,{"data-slot":`alert-dialog-overlay`,className:E(`data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50`,e),...t})}function kt({className:e,size:t=`default`,...n}){return(0,B.jsxs)(Dt,{children:[(0,B.jsx)(Ot,{}),(0,B.jsx)(fe,{"data-slot":`alert-dialog-content`,"data-size":t,className:E(`bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg`,e),...n})]})}function At({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:E(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function jt({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:E(`flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function Mt({className:e,...t}){return(0,B.jsx)(pe,{"data-slot":`alert-dialog-title`,className:E(`text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function Nt({className:e,...t}){return(0,B.jsx)(me,{"data-slot":`alert-dialog-description`,className:E(`text-muted-foreground text-sm`,e),...t})}function Pt({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,B.jsx)(O,{variant:t,size:n,asChild:!0,children:(0,B.jsx)(he,{"data-slot":`alert-dialog-action`,className:E(e),...r})})}function Ft({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,B.jsx)(O,{variant:t,size:n,asChild:!0,children:(0,B.jsx)(_e,{"data-slot":`alert-dialog-cancel`,className:E(e),...r})})}function It({...e}){return(0,B.jsx)(Le,{"data-slot":`select`,...e})}function Lt({...e}){return(0,B.jsx)(at,{"data-slot":`select-group`,...e})}function Rt({...e}){return(0,B.jsx)(Ve,{"data-slot":`select-value`,...e})}function zt({className:e,size:t=`default`,children:n,...r}){return(0,B.jsxs)(ze,{"data-slot":`select-trigger`,"data-size":t,className:E(`border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...r,children:[n,(0,B.jsx)(He,{asChild:!0,children:(0,B.jsx)(s,{className:`size-4 opacity-50`})})]})}function Bt({className:e,children:t,position:n=`item-aligned`,align:r=`center`,...i}){return(0,B.jsx)(Ge,{children:(0,B.jsxs)(Ke,{"data-slot":`select-content`,className:E(`bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,align:r,...i,children:[(0,B.jsx)(Ut,{}),(0,B.jsx)(nt,{className:E(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1`),children:t}),(0,B.jsx)(Wt,{})]})})}function Vt({className:e,...t}){return(0,B.jsx)(st,{"data-slot":`select-label`,className:E(`text-muted-foreground px-2 py-1.5 text-xs`,e),...t})}function Ht({className:e,children:t,...n}){return(0,B.jsxs)(dt,{"data-slot":`select-item`,className:E(`focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2`,e),...n,children:[(0,B.jsx)(`span`,{"data-slot":`select-item-indicator`,className:`absolute right-2 flex size-3.5 items-center justify-center`,children:(0,B.jsx)(mt,{children:(0,B.jsx)(P,{className:`size-4`})})}),(0,B.jsx)(ft,{children:t})]})}function Ut({className:e,...t}){return(0,B.jsx)(gt,{"data-slot":`select-scroll-up-button`,className:E(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,B.jsx)(R,{className:`size-4`})})}function Wt({className:e,...t}){return(0,B.jsx)(vt,{"data-slot":`select-scroll-down-button`,className:E(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,B.jsx)(s,{className:`size-4`})})}export{Vt as a,Et as c,kt as d,Nt as f,R as g,Mt as h,Ht as i,Pt as l,At as m,Bt as n,zt as o,jt as p,Lt as r,Rt as s,It as t,Ft as u};