@hot-updater/console 0.36.7 → 1.0.0-rc.0

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 (266) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/AnalyticsCapabilityContext-BCke57-7.js +1 -0
  3. package/.output/public/assets/BundleActivityChart-CnsBe_1J.js +42 -0
  4. package/.output/public/assets/BundleIdDisplay-Dky75zLU.js +1 -0
  5. package/.output/public/assets/alert-C-1KvDW8.js +1 -0
  6. package/.output/public/assets/analytics-Bqz0c-BT.js +1 -0
  7. package/.output/public/assets/analytics-api-CJdrTLLO.js +1 -0
  8. package/.output/public/assets/api-B_Rh-uzC.js +1 -0
  9. package/.output/public/assets/api-keys-BurCFhzH.js +1 -0
  10. package/.output/public/assets/api-keys-api-BEDJdQg3.js +1 -0
  11. package/.output/public/assets/badge-Bf0fZ-Gx.js +1 -0
  12. package/.output/public/assets/chart-no-axes-combined-FaYMGmQS.js +1 -0
  13. package/.output/public/assets/createServerFn-gM2-LFBy.js +3 -0
  14. package/.output/public/assets/dialog-BS60BRr2.js +1 -0
  15. package/.output/public/assets/dist-DspNKfMj.js +1 -0
  16. package/.output/public/assets/download-O-yNBc9H.js +1 -0
  17. package/.output/public/assets/field-Buq148-A.js +1 -0
  18. package/.output/public/assets/index-kFhd2S78.js +10 -0
  19. package/.output/public/assets/installations-BrQ-od41.js +2 -0
  20. package/.output/public/assets/installations-CGlZ3ROz.js +1 -0
  21. package/.output/public/assets/lazyRouteComponent-rPzgA7S-.js +1 -0
  22. package/.output/public/assets/loader-circle-DCYF-wJl.js +1 -0
  23. package/.output/public/assets/preload-helper-TKOBYGYD.js +1 -0
  24. package/.output/public/assets/refresh-cw-n8XYbPPj.js +1 -0
  25. package/.output/public/assets/routes-CrdokJ80.js +1 -0
  26. package/.output/public/assets/routes-DcQnVajO.js +2 -0
  27. package/.output/public/assets/search-DLhbWw3W.js +1 -0
  28. package/.output/public/assets/shield-check-DE_hVuHu.js +1 -0
  29. package/.output/public/assets/signing-HRexfjsH.js +1 -0
  30. package/.output/public/assets/styles-eB4EtvFS.css +2 -0
  31. package/.output/public/assets/table-D8CLieHX.js +1 -0
  32. package/.output/public/assets/textarea-YJLTVAoq.js +1 -0
  33. package/.output/public/assets/useMutation-JsGVjQMY.js +1 -0
  34. package/.output/public/assets/useOpenInteractionType-4cRD5xO0.js +1 -0
  35. package/.output/server/__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs +146 -0
  36. package/.output/server/_libs/@base-ui/react+[...].mjs +16124 -0
  37. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
  38. package/.output/server/_libs/@tanstack/react-router+[...].mjs +41 -10
  39. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +132 -0
  40. package/.output/server/_libs/d3-array.mjs +231 -0
  41. package/.output/server/_libs/d3-color.mjs +330 -0
  42. package/.output/server/_libs/d3-format.mjs +252 -0
  43. package/.output/server/_libs/d3-interpolate.mjs +207 -0
  44. package/.output/server/_libs/d3-path.mjs +77 -0
  45. package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
  46. package/.output/server/_libs/d3-shape.mjs +818 -0
  47. package/.output/server/_libs/decimal.js-light.mjs +884 -0
  48. package/.output/server/_libs/es-toolkit.mjs +1134 -0
  49. package/.output/server/_libs/eventemitter3.mjs +236 -0
  50. package/.output/server/_libs/immer.mjs +532 -0
  51. package/.output/server/_libs/lucide-react.mjs +141 -13
  52. package/.output/server/_libs/next-themes.mjs +2 -2
  53. package/.output/server/_libs/react-redux+[...].mjs +205 -0
  54. package/.output/server/_libs/recharts+[...].mjs +14117 -0
  55. package/.output/server/_libs/sonner.mjs +2 -2
  56. package/.output/server/_libs/tanstack__query-core.mjs +114 -1
  57. package/.output/server/_libs/tanstack__react-query.mjs +3 -4
  58. package/.output/server/_runtime.mjs +10 -1
  59. package/.output/server/_ssr/AnalyticsCapabilityContext-ui4DX8GO.mjs +15 -0
  60. package/.output/server/_ssr/BundleActivityChart-BiB9ZORH.mjs +288 -0
  61. package/.output/server/_ssr/BundleIdDisplay-Czk6iR6p.mjs +13 -0
  62. package/.output/server/_ssr/alert-Dim3MGY5.mjs +86 -0
  63. package/.output/server/_ssr/analytics-DtMTn8fn.mjs +858 -0
  64. package/.output/server/_ssr/analytics-api-Cg1M5v_H.mjs +71 -0
  65. package/.output/server/_ssr/analytics-input-fRRRn0uA.mjs +96 -0
  66. package/.output/server/_ssr/analytics-rpc-DY5uXvHT.mjs +155 -0
  67. package/.output/server/_ssr/api-BTSv1tZb.mjs +282 -0
  68. package/.output/server/_ssr/api-keys-BnM_o2nS.mjs +300 -0
  69. package/.output/server/_ssr/api-keys-api-CIywsSF5.mjs +60 -0
  70. package/.output/server/_ssr/api-keys-rpc-BSp1wkIV.mjs +136 -0
  71. package/.output/server/_ssr/api-rpc-cG5wd_tO.mjs +1468 -0
  72. package/.output/server/_ssr/auth-BF8mbAgF.mjs +21 -0
  73. package/.output/server/_ssr/auth-rpc-BrJ6obHJ.mjs +24 -0
  74. package/.output/server/_ssr/auth.server-DwKoZoQM.mjs +50 -0
  75. package/.output/server/_ssr/badge-DCxbEeof.mjs +26 -0
  76. package/.output/server/_ssr/bundle-signing-rpc-COoQhW8E.mjs +16 -0
  77. package/.output/server/_ssr/bundle-signing.server-D5u8KkMp.mjs +51 -0
  78. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +13 -0
  79. package/.output/server/_ssr/config.server-DEiLhKmy.mjs +361 -0
  80. package/.output/server/_ssr/{createServerFn-DzU0k62V.mjs → createServerFn-B2hcXoPM.mjs} +1 -1
  81. package/.output/server/_ssr/createServerRpc-DB29C_5p.mjs +12 -0
  82. package/.output/server/_ssr/{sidebar-Cv_H0_Jv.mjs → createSsrRpc-9P0S0lJ3.mjs} +68 -50
  83. package/.output/server/_ssr/databaseRows-CwbNwYSl.mjs +166 -0
  84. package/.output/server/_ssr/deleteBundle-Cu_XOMt0.mjs +66 -0
  85. package/.output/server/_ssr/dialog-CQuRMNZ4.mjs +170 -0
  86. package/.output/server/_ssr/dist-BVSLTpoP.mjs +250 -0
  87. package/.output/server/_ssr/downloadBundle-CNnYxYO2.mjs +24 -0
  88. package/.output/server/_ssr/{empty-plugin-adapters-B4HCzgmM.mjs → empty-plugin-adapters-B5QvGpEl.mjs} +1 -1
  89. package/.output/server/_ssr/field-DRIXKjZG.mjs +74 -0
  90. package/.output/server/_ssr/{getBundleChildren-CVtSiH5t.mjs → getBundleChildren-BcRMFoDF.mjs} +10 -18
  91. package/.output/server/_ssr/installations-B-azgAvX.mjs +19 -0
  92. package/.output/server/_ssr/installations-Ctvzp2JH.mjs +535 -0
  93. package/.output/server/_ssr/router-C-KUBfOi.mjs +513 -0
  94. package/.output/server/_ssr/routes-BM4ht9jb.mjs +2286 -0
  95. package/.output/server/_ssr/routes-Z7TwC6nC.mjs +37 -0
  96. package/.output/server/_ssr/runtime.server-awTLiiXW.mjs +527 -0
  97. package/.output/server/_ssr/server-BjzmvXnO.mjs +7468 -0
  98. package/.output/server/_ssr/signing-k8GxyBDF.mjs +202 -0
  99. package/.output/server/_ssr/ssr.mjs +4 -5740
  100. package/.output/server/_ssr/start-DpViQGnt.mjs +4 -0
  101. package/.output/server/_ssr/table-v1yCvYo7.mjs +53 -0
  102. package/.output/server/_ssr/textarea-DYHnskhb.mjs +14 -0
  103. package/.output/server/_ssr/uuidv7-BbJ-9D_I.mjs +31 -0
  104. package/.output/server/_tanstack-start-manifest_v-CH4StzJu.mjs +108 -0
  105. package/.output/server/index.mjs +256 -53
  106. package/README.md +29 -8
  107. package/lib/index.d.mts +36 -0
  108. package/lib/index.mjs +4 -0
  109. package/lib/vite-internal.mjs +127 -0
  110. package/lib/vite.d.mts +10 -0
  111. package/lib/vite.mjs +5 -0
  112. package/package.json +51 -29
  113. package/public/apple-touch-icon.png +0 -0
  114. package/public/favicon-16x16.png +0 -0
  115. package/public/favicon-32x32.png +0 -0
  116. package/public/favicon.ico +0 -0
  117. package/public/logo.svg +1 -0
  118. package/public/manifest.json +30 -0
  119. package/public/robots.txt +3 -0
  120. package/src/components/AppSidebar.tsx +159 -0
  121. package/src/components/BundleIdDisplay.tsx +18 -0
  122. package/src/components/ChannelBadge.tsx +31 -0
  123. package/src/components/ConsoleAccessPage.tsx +122 -0
  124. package/src/components/EnabledStatusIcon.tsx +54 -0
  125. package/src/components/HashValueDisplay.tsx +85 -0
  126. package/src/components/HotUpdaterLogo.tsx +30 -0
  127. package/src/components/NotFoundPage.tsx +33 -0
  128. package/src/components/PlatformIcon.tsx +39 -0
  129. package/src/components/RolloutPercentageBadge.tsx +28 -0
  130. package/src/components/ThemeProvider.tsx +116 -0
  131. package/src/components/TimestampDisplay.tsx +41 -0
  132. package/src/components/features/analytics/ActivityChart.tsx +150 -0
  133. package/src/components/features/analytics/AnalyticsCapabilityContext.tsx +24 -0
  134. package/src/components/features/analytics/AnalyticsControls.tsx +115 -0
  135. package/src/components/features/analytics/AnalyticsErrorAlert.tsx +21 -0
  136. package/src/components/features/analytics/AnalyticsOverview.tsx +208 -0
  137. package/src/components/features/analytics/BundleDistribution.tsx +133 -0
  138. package/src/components/features/analytics/BundleSelector.tsx +114 -0
  139. package/src/components/features/analytics/InstallationHistoryCard.tsx +248 -0
  140. package/src/components/features/analytics/InstallationMatchesCard.tsx +132 -0
  141. package/src/components/features/analytics/InstallationPageHeader.tsx +138 -0
  142. package/src/components/features/analytics/InstallationPagination.tsx +48 -0
  143. package/src/components/features/analytics/InstallationSearch.tsx +230 -0
  144. package/src/components/features/analytics/UpdateOutcomes.tsx +147 -0
  145. package/src/components/features/api-keys/ApiKeysPage.tsx +377 -0
  146. package/src/components/features/bundles/BundleActivityChart.tsx +193 -0
  147. package/src/components/features/bundles/BundleAnalyticsSummary.tsx +123 -0
  148. package/src/components/features/bundles/BundleChildrenPanel.tsx +201 -0
  149. package/src/components/features/bundles/BundleMetadata.tsx +136 -0
  150. package/src/components/features/bundles/RolloutCohortsDialog.tsx +201 -0
  151. package/src/components/features/channels/ChannelManagementDialog.tsx +228 -0
  152. package/src/components/features/releases/ReleaseEditorSheet.tsx +879 -0
  153. package/src/components/features/releases/ReleaseStateBadge.tsx +20 -0
  154. package/src/components/features/signing/BundleSigningPage.tsx +247 -0
  155. package/src/components/ui/alert-dialog.tsx +185 -0
  156. package/src/components/ui/alert.tsx +76 -0
  157. package/src/components/ui/badge.tsx +49 -0
  158. package/src/components/ui/button.tsx +58 -0
  159. package/src/components/ui/card.tsx +89 -0
  160. package/src/components/ui/chart.tsx +371 -0
  161. package/src/components/ui/combobox.tsx +303 -0
  162. package/src/components/ui/dialog.tsx +156 -0
  163. package/src/components/ui/dropdown-menu.tsx +270 -0
  164. package/src/components/ui/field.tsx +235 -0
  165. package/src/components/ui/input-group.tsx +147 -0
  166. package/src/components/ui/input.tsx +19 -0
  167. package/src/components/ui/label.tsx +25 -0
  168. package/src/components/ui/progress.tsx +84 -0
  169. package/src/components/ui/select.tsx +205 -0
  170. package/src/components/ui/separator.tsx +23 -0
  171. package/src/components/ui/sheet.tsx +132 -0
  172. package/src/components/ui/sidebar.tsx +779 -0
  173. package/src/components/ui/skeleton.tsx +13 -0
  174. package/src/components/ui/slider.tsx +56 -0
  175. package/src/components/ui/sonner.tsx +45 -0
  176. package/src/components/ui/switch.tsx +25 -0
  177. package/src/components/ui/table.tsx +114 -0
  178. package/src/components/ui/textarea.tsx +18 -0
  179. package/src/components/ui/toggle-group.tsx +89 -0
  180. package/src/components/ui/toggle.tsx +43 -0
  181. package/src/components/ui/tooltip.tsx +66 -0
  182. package/src/hooks/use-mobile.ts +30 -0
  183. package/src/index.ts +48 -0
  184. package/src/lib/analytics-api.ts +145 -0
  185. package/src/lib/analytics-error.ts +19 -0
  186. package/src/lib/analytics-input.ts +187 -0
  187. package/src/lib/analytics-overview.ts +170 -0
  188. package/src/lib/analytics-rpc.ts +218 -0
  189. package/src/lib/api-keys-api.ts +69 -0
  190. package/src/lib/api-keys-rpc.ts +87 -0
  191. package/src/lib/api-rpc.ts +478 -0
  192. package/src/lib/api.ts +444 -0
  193. package/src/lib/auth-rpc.ts +16 -0
  194. package/src/lib/bundle-signing-api.ts +14 -0
  195. package/src/lib/bundle-signing-rpc.ts +16 -0
  196. package/src/lib/constants.ts +1 -0
  197. package/src/lib/git.ts +51 -0
  198. package/src/lib/server/auth.server.ts +43 -0
  199. package/src/lib/server/bundle-signing.server.ts +100 -0
  200. package/src/lib/server/config.server.ts +109 -0
  201. package/src/lib/server/console-runtime.server.ts +70 -0
  202. package/src/lib/server/deleteBundle.ts +145 -0
  203. package/src/lib/server/downloadBundle.ts +46 -0
  204. package/src/lib/server/getBundleChildren.ts +130 -0
  205. package/src/lib/server/listReleases.ts +61 -0
  206. package/src/lib/server/releaseActivity.ts +27 -0
  207. package/src/lib/server/releaseReachability.ts +95 -0
  208. package/src/lib/server/runtime.server.ts +172 -0
  209. package/src/lib/utils.ts +9 -0
  210. package/src/logo.svg +1 -0
  211. package/src/routeTree.gen.ts +199 -0
  212. package/src/router.tsx +21 -0
  213. package/src/routes/-installations-search.ts +19 -0
  214. package/src/routes/-releases-search.ts +74 -0
  215. package/src/routes/__root.tsx +174 -0
  216. package/src/routes/analytics.tsx +139 -0
  217. package/src/routes/api/auth/$.ts +19 -0
  218. package/src/routes/api/bundles/$bundleId/download.ts +17 -0
  219. package/src/routes/api-keys.tsx +37 -0
  220. package/src/routes/index.tsx +982 -0
  221. package/src/routes/installations.tsx +194 -0
  222. package/src/routes/signing.tsx +37 -0
  223. package/src/styles.css +152 -0
  224. package/src/virtual-modules.d.ts +21 -0
  225. package/src/vite-env.d.ts +1 -0
  226. package/src/vite-internal.ts +195 -0
  227. package/src/vite.ts +12 -0
  228. package/.output/public/assets/dist-DJX53faP.js +0 -3
  229. package/.output/public/assets/index-Iylis5kY.js +0 -10
  230. package/.output/public/assets/routes-HT21hs0C.js +0 -54
  231. package/.output/public/assets/styles-C0Re4quB.css +0 -2
  232. package/.output/server/__23tanstack-start-server-fn-resolver-CgwgZ0-i.mjs +0 -66
  233. package/.output/server/_libs/@floating-ui/core+[...].mjs +0 -698
  234. package/.output/server/_libs/@floating-ui/dom+[...].mjs +0 -644
  235. package/.output/server/_libs/@floating-ui/react-dom+[...].mjs +0 -839
  236. package/.output/server/_libs/@radix-ui/react-alert-dialog+[...].mjs +0 -2138
  237. package/.output/server/_libs/@radix-ui/react-popper+[...].mjs +0 -308
  238. package/.output/server/_libs/@radix-ui/react-select+[...].mjs +0 -1038
  239. package/.output/server/_libs/@tanstack/devtools-event-client+[...].mjs +0 -196
  240. package/.output/server/_libs/@tanstack/form-core+[...].mjs +0 -3228
  241. package/.output/server/_libs/@tanstack/react-form+[...].mjs +0 -430
  242. package/.output/server/_libs/@tanstack/react-table+[...].mjs +0 -2382
  243. package/.output/server/_libs/radix-ui__number.mjs +0 -6
  244. package/.output/server/_libs/radix-ui__primitive.mjs +0 -9
  245. package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
  246. package/.output/server/_libs/radix-ui__react-collection.mjs +0 -78
  247. package/.output/server/_libs/radix-ui__react-direction.mjs +0 -13
  248. package/.output/server/_libs/radix-ui__react-label.mjs +0 -22
  249. package/.output/server/_libs/radix-ui__react-separator.mjs +0 -30
  250. package/.output/server/_libs/radix-ui__react-slider.mjs +0 -510
  251. package/.output/server/_libs/radix-ui__react-switch.mjs +0 -157
  252. package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -493
  253. package/.output/server/_ssr/api-rpc-BIbDUKSz.mjs +0 -292
  254. package/.output/server/_ssr/config.server-BSS366KT.mjs +0 -41
  255. package/.output/server/_ssr/deleteBundle-BgbZTtpW.mjs +0 -141
  256. package/.output/server/_ssr/dist-KboydRVk.mjs +0 -120
  257. package/.output/server/_ssr/router-C3hqEy3k.mjs +0 -307
  258. package/.output/server/_ssr/routes-B0lQvvlC.mjs +0 -3048
  259. package/.output/server/_ssr/start-02sLteYG.mjs +0 -4
  260. package/.output/server/_ssr/storageProfile-FVkjPoGb.mjs +0 -9
  261. package/.output/server/_tanstack-start-manifest_v-Bpx52WOU.mjs +0 -20
  262. package/.output/server/node_modules/tslib/modules/index.js +0 -70
  263. package/.output/server/node_modules/tslib/modules/package.json +0 -3
  264. package/.output/server/node_modules/tslib/package.json +0 -47
  265. package/.output/server/node_modules/tslib/tslib.js +0 -484
  266. package/.output/server/package.json +0 -9
@@ -0,0 +1 @@
1
+ import{Dn as e,ir as t}from"./createServerFn-gM2-LFBy.js";var n=t();function r({bundleId:t,className:r}){return(0,n.jsx)(`span`,{translate:`no`,className:e(`break-all font-mono text-xs tabular-nums`,r),children:t})}export{r as t};
@@ -0,0 +1 @@
1
+ import{Dn as e,Pr as t,ir as n,zn as r}from"./createServerFn-gM2-LFBy.js";t();var i=n();function a({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card`,className:e(`rounded-xl border bg-card text-card-foreground shadow`,t),...n})}function o({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card-header`,className:e(`flex flex-col space-y-1.5 p-6`,t),...n})}function s({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card-title`,className:e(`font-semibold leading-none tracking-tight`,t),...n})}function c({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card-description`,className:e(`text-sm text-muted-foreground`,t),...n})}function l({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card-content`,className:e(`p-6 pt-0`,t),...n})}function u({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`card-footer`,className:e(`flex items-center p-6 pt-0`,t),...n})}var d=r(`group/alert relative grid w-full gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current`}},defaultVariants:{variant:`default`}});function f({className:t,variant:n,...r}){return(0,i.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:e(d({variant:n}),t),...r})}function p({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`alert-title`,className:e(`font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground`,t),...n})}function m({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`alert-description`,className:e(`text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4`,t),...n})}function h({className:t,...n}){return(0,i.jsx)(`div`,{"data-slot":`alert-action`,className:e(`absolute top-1.5 right-2`,t),...n})}export{a,u as c,p as i,o as l,h as n,l as o,m as r,c as s,f as t,s as u};
@@ -0,0 +1 @@
1
+ import{An as e,At as t,C as n,D as r,Dn as i,Dt as a,E as o,Et as s,Gn as c,Gt as l,H as u,Hn as d,Ht as f,It as p,J as m,Jn as h,Jt as g,K as _,Lr as v,Lt as y,Mn as b,Nr as x,Nt as S,O as C,On as w,P as T,Pr as E,Pt as D,S as O,Sn as k,St as ee,Tn as A,Tt as j,U as M,Un as te,Ut as N,W as ne,Wn as P,Wt as re,X as F,Xn as ie,Yn as I,_n as ae,_t as oe,an as se,b as ce,bn as le,et as ue,gn as de,gt as L,hn as fe,ht as pe,ir as me,jn as he,k as ge,kn as _e,m as ve,mn as ye,mt as R,on as be,pt as xe,q as z,qn as Se,qt as Ce,rt as we,vt as Te,w as Ee,x as De,xn as Oe,xt as ke,yt as Ae,zn as je,zt as Me}from"./createServerFn-gM2-LFBy.js";import{n as Ne,r as Pe}from"./AnalyticsCapabilityContext-BCke57-7.js";import{t as Fe}from"./chart-no-axes-combined-FaYMGmQS.js";import{a as Ie,c as Le,i as Re,s as ze,t as Be}from"./field-Buq148-A.js";import{A as Ve,B as He,C as Ue,D as We,E as Ge,F as Ke,H as qe,I as Je,L as Ye,M as Xe,N as Ze,O as Qe,P as $e,R as et,S as tt,T as nt,V as rt,a as it,b as at,c as ot,d as st,f as ct,g as lt,h as ut,i as dt,j as ft,k as pt,l as mt,m as ht,n as gt,o as _t,p as vt,s as B,t as yt,u as bt,w as xt,x as St,y as V,z as Ct}from"./BundleActivityChart-CnsBe_1J.js";import{t as wt}from"./search-DLhbWw3W.js";import{C as Tt,S as Et,b as H,c as U,d as Dt,h as Ot,i as kt,l as W,m as At,o as G,p as jt,r as Mt,s as Nt,t as Pt,u as K,v as Ft,w as It,x as Lt,y as Rt}from"./useOpenInteractionType-4cRD5xO0.js";import{i as zt,o as Bt}from"./analytics-api-CJdrTLLO.js";import{b as q,r as J,v as Vt,x as Ht,y as Ut}from"./api-B_Rh-uzC.js";import{a as Wt,c as Gt,l as Kt,o as qt,s as Jt,u as Yt}from"./alert-C-1KvDW8.js";var Y=v(E()),Xt=Y.createContext(void 0);function Zt(e=!0){let t=Y.useContext(Xt);if(t===void 0&&!e)throw Error(I(7));return t}function X(t={}){let{highlightItemOnHover:n,highlightedIndex:r,onHighlightedIndexChange:i}=e(),{ref:a,index:o}=et(t),s=r===o,c=Y.useRef(null),l=Se(a,c);return{compositeProps:Y.useMemo(()=>({tabIndex:s?0:-1,onFocus(){i(o)},onMouseMove(){let e=c.current;if(!n||!e)return;let t=e.hasAttribute(`disabled`)||e.ariaDisabled===`true`;!s&&!t&&e.focus()}}),[s,i,o,n]),compositeRef:l,index:o}}function Qt(e){let{render:t,className:n,style:r,state:i=P,props:a=te,refs:o=te,metadata:s,stateAttributesMapping:c,tag:l=`div`,...u}=e,{compositeProps:f,compositeRef:p}=X({metadata:s});return d(l,e,{state:i,ref:[...o,p],props:[f,...a,u],stateAttributesMapping:c})}var Z=me(),$t=Y.forwardRef(function(e,t){let{className:n,defaultPressed:r=!1,disabled:i=!1,form:a,onPressedChange:o,pressed:s,render:c,type:l,value:u,nativeButton:f=!0,style:p,...m}=e,h=Ee(u||void 0),_=Zt(),v=_?.value??[],y=_?void 0:r,b=(i||_?.disabled)??!1,[x,C]=Ct({controlled:_?h!==void 0&&v.indexOf(h)>-1:s,default:y,name:`Toggle`,state:`pressed`}),{getButtonProps:T,buttonRef:E}=w({disabled:b,native:f}),D={disabled:b,pressed:x},O=[E,t],k=[{"aria-pressed":x,onClick(e){let t=!x,n=S(g,e.nativeEvent);h&&_?.setGroupValue?.(h,t,n),o?.(t,n),!n.isCanceled&&C(t)}},m,T],ee=d(`button`,e,{enabled:!_,state:D,ref:O,props:k});return _?(0,Z.jsx)(Qt,{tag:`button`,render:c,className:n,style:p,state:D,refs:O,props:k}):ee});function en(e){return e==null||e.hasAttribute(`disabled`)||e.getAttribute(`aria-disabled`)===`true`}var tn=[];function nn(e){let{itemSizes:t,cols:n=1,loopFocus:r=!0,onLoop:i,dense:a=!1,orientation:o=`both`,direction:s,highlightedIndex:c,onHighlightedIndexChange:l,rootRef:u,enableHomeAndEndKeys:d=!1,stopEventPropagation:f=!1,disabledIndices:p,modifierKeys:m=tn}=e,[h,g]=Y.useState(0),_=n>1,v=Y.useRef(null),y=Se(v,u),x=Y.useRef([]),S=Y.useRef(!1),C=c??h,w=b((e,t=!1)=>{if((l??g)(e),t){let t=x.current[e];Lt(v.current,t,s,o)}}),T=b(e=>{if(e.size===0||S.current)return;S.current=!0;let t=Array.from(e.keys()),n=t.find(e=>e?.hasAttribute(`data-composite-item-active`))??null,r=n?t.indexOf(n):-1;r!==-1&&w(r),Lt(v.current,n,s,o)}),E=b((e,t,n)=>i?i?.(e,t,n,x):n),D=Y.useMemo(()=>({"aria-orientation":o===`both`?void 0:o,ref:y,onFocus(e){let t=v.current,n=be(e.nativeEvent);!t||n==null||!H(n)||n.setSelectionRange(0,n.value.length??0)},onKeyDown(e){let c=d?Dt:Nt;if(!c.has(e.key)||rn(e,m)||!v.current)return;let l=s===`rtl`,u=l?U:W,h={horizontal:u,vertical:G,both:u}[o],g=l?W:U,y={horizontal:g,vertical:K,both:g}[o],b=be(e.nativeEvent);if(b!=null&&H(b)&&!en(b)){let t=b.selectionStart,n=b.selectionEnd,r=b.value??``;if(t==null||e.shiftKey||t!==n||e.key!==y&&t<r.length||e.key!==h&&t>0)return}let S=C,T=Ae(x,p),D=Te(x,p);if(_){let i=t||Array.from({length:x.current.length},()=>({width:1,height:1})),s=xe(i,n,a),c=s.findIndex(e=>e!=null&&!ee(x.current,e,p)),u=s.reduce((e,t,n)=>t!=null&&!ee(x.current,t,p)?n:e,-1);S=s[oe(s.map(e=>e==null?null:x.current[e]),{event:e,orientation:o,loopFocus:r,onLoop:E,cols:n,disabledIndices:L([...p||x.current.map((e,t)=>ee(x.current,t)?t:void 0),void 0],s),minIndex:c,maxIndex:u,prevIndex:pe(C>D?T:C,i,s,n,e.key===`ArrowDown`?`bl`:e.key===`ArrowRight`?`tr`:`tl`),rtl:l})]}let O={horizontal:[u],vertical:[G],both:[u,G]}[o],k={horizontal:[g],vertical:[K],both:[g,K]}[o],A=_?c:{horizontal:d?At:jt,vertical:d?Rt:Ft,both:c}[o];d&&(e.key===`Home`?S=T:e.key===`End`&&(S=D)),S===C&&(O.includes(e.key)||k.includes(e.key))&&(r&&S===D&&O.includes(e.key)?(S=T,i&&(S=i(e,C,S,x))):r&&S===T&&k.includes(e.key)?(S=D,i&&(S=i(e,C,S,x))):S=R(x.current,{startingIndex:S,decrement:k.includes(e.key),disabledIndices:p})),S!==C&&!ke(x.current,S)&&(f&&e.stopPropagation(),A.has(e.key)&&e.preventDefault(),w(S,!0),queueMicrotask(()=>{x.current[S]?.focus()}))}}),[n,a,s,p,x,d,C,_,t,r,i,E,y,m,w,o,f]);return Y.useMemo(()=>({props:D,highlightedIndex:C,onHighlightedIndexChange:w,elementsRef:x,disabledIndices:p,onMapChange:T,relayKeyboardEvent:D.onKeyDown}),[D,C,w,x,p,T])}function rn(e,t){for(let n of Ot.values())if(!t.includes(n)&&e.getModifierState(n))return!0;return!1}function an(e){let{render:t,className:r,style:i,refs:a=te,props:o=te,state:s=P,stateAttributesMapping:c,highlightedIndex:l,onHighlightedIndexChange:u,orientation:f,dense:p,itemSizes:m,loopFocus:h,onLoop:g,cols:_,enableHomeAndEndKeys:v,onMapChange:y,stopEventPropagation:b=!0,rootRef:x,disabledIndices:S,modifierKeys:C,highlightItemOnHover:w=!1,tag:T=`div`,...E}=e,{props:D,highlightedIndex:O,onHighlightedIndexChange:k,elementsRef:ee,onMapChange:A,relayKeyboardEvent:j}=nn({itemSizes:m,cols:_,loopFocus:h,onLoop:g,dense:p,orientation:f,highlightedIndex:l,onHighlightedIndexChange:u,rootRef:x,stopEventPropagation:b,enableHomeAndEndKeys:v,direction:n(),disabledIndices:S,modifierKeys:C}),M=d(T,e,{state:s,ref:a,props:[D,...o,E],stateAttributesMapping:c}),N=Y.useMemo(()=>({highlightedIndex:O,onHighlightedIndexChange:k,highlightItemOnHover:w,relayKeyboardEvent:j}),[O,k,w,j]);return(0,Z.jsx)(_e.Provider,{value:N,children:(0,Z.jsx)(Je,{elementsRef:ee,onMapChange:e=>{y?.(e),A(e)},children:M})})}var on=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e.multiple=`data-multiple`,e}({}),sn={multiple(e){return e?{[on.multiple]:``}:null}},cn=Y.forwardRef(function(e,t){let{defaultValue:n,disabled:r=!1,loopFocus:i=!0,onValueChange:a,orientation:o=`horizontal`,multiple:s=!1,value:c,className:l,render:u,style:f,...p}=e,m=Ke(!0),h=Y.useMemo(()=>c!==void 0||n!==void 0,[c,n]),g=(m?.disabled??!1)||r,[_,v]=Ct({controlled:c,default:c===void 0?n??te:void 0,name:`ToggleGroup`,state:`value`}),y=b((e,t,n)=>{let r;s?(r=_.slice(),t?r.push(e):r.splice(_.indexOf(e),1)):r=t?[e]:[],a?.(r,n),!n.isCanceled&&v(r)}),x={disabled:g,multiple:s,orientation:o},S=Y.useMemo(()=>({disabled:g,orientation:o,setGroupValue:y,value:_,isValueInitialized:h}),[g,o,y,_,h]),C={role:`group`},w=d(`div`,e,{enabled:!!m,state:x,ref:t,props:[C,p],stateAttributesMapping:sn});return(0,Z.jsx)(Xt.Provider,{value:S,children:m?w:(0,Z.jsx)(an,{render:u,className:l,style:f,state:x,refs:[t],props:[C,p],stateAttributesMapping:sn,loopFocus:i,enableHomeAndEndKeys:!0,orientation:o})})}),ln=je(`group/toggle inline-flex items-center justify-center gap-1 rounded-md text-xs font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent hover:bg-muted`},size:{default:`h-7 min-w-7 px-2 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5`,sm:`h-6 min-w-6 rounded-[min(var(--radius-md),8px)] px-2 text-[0.625rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,lg:`h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`}},defaultVariants:{variant:`default`,size:`default`}}),un=Y.createContext({size:`default`,variant:`default`,spacing:2,orientation:`horizontal`});function dn({className:e,variant:t,size:n,spacing:r=2,orientation:a=`horizontal`,children:o,...s}){return(0,Z.jsx)(cn,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":a,style:{"--gap":r},className:i(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-md data-[size=sm]:rounded-[min(var(--radius-md),8px)] data-vertical:flex-col data-vertical:items-stretch`,e),...s,children:(0,Z.jsx)(un.Provider,{value:{variant:t,size:n,spacing:r,orientation:a},children:o})})}function fn({className:e,children:t,variant:n=`default`,size:r=`default`,...a}){let o=Y.useContext(un);return(0,Z.jsx)($t,{"data-slot":`toggle-group-item`,"data-variant":o.variant||n,"data-size":o.size||r,"data-spacing":o.spacing,className:i(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-md group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-md group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-md group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-md group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,ln({variant:o.variant||n,size:o.size||r}),e),...a,children:t})}var pn=[{value:`24h`,label:`24 hours`,shortLabel:`24h`},{value:`7d`,label:`7 days`,shortLabel:`7d`},{value:`30d`,label:`30 days`,shortLabel:`30d`}];function mn({onInstallationSearch:e,onWindowChange:t,window:n}){let[r,i]=(0,Y.useState)(``);return(0,Z.jsx)(`section`,{"aria-label":`Analytics controls`,className:`rounded-xl border bg-background px-4 py-3`,children:(0,Z.jsx)(`form`,{"aria-label":`Filter analytics`,className:`min-w-0`,onSubmit:t=>{t.preventDefault();let n=r.trim();n&&e(n)},role:`search`,children:(0,Z.jsxs)(Re,{className:`gap-3 md:grid md:grid-cols-[auto_minmax(18rem,1fr)] md:items-end`,children:[(0,Z.jsxs)(Be,{className:`min-w-0`,children:[(0,Z.jsx)(Ie,{children:`Reporting period`}),(0,Z.jsx)(dn,{"aria-label":`Reporting period`,className:`w-full lg:w-fit`,onValueChange:e=>{e[0]&&t(e[0])},spacing:0,size:`lg`,value:[n],variant:`outline`,children:pn.map(e=>(0,Z.jsx)(fn,{"aria-label":e.label,className:`flex-1 md:flex-none`,value:e.value,children:e.shortLabel},e.value))})]}),(0,Z.jsxs)(Be,{className:`min-w-0`,children:[(0,Z.jsx)(Ie,{htmlFor:`installation-history-search`,children:`Installation history`}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 sm:flex-row`,children:[(0,Z.jsxs)(Vt,{className:`h-8 flex-1`,children:[(0,Z.jsx)(Ut,{children:(0,Z.jsx)(wt,{"aria-hidden":`true`})}),(0,Z.jsx)(Ht,{"aria-label":`User or install ID`,id:`installation-history-search`,maxLength:1024,onChange:e=>i(e.target.value),placeholder:`User ID or install ID`,type:`search`,value:r}),r&&(0,Z.jsx)(Ut,{align:`inline-end`,children:(0,Z.jsx)(q,{"aria-label":`Clear installation search`,onClick:()=>i(``),size:`icon-xs`,children:(0,Z.jsx)(ze,{"aria-hidden":`true`})})})]}),(0,Z.jsxs)(A,{className:`w-full sm:w-auto`,size:`lg`,type:`submit`,children:[(0,Z.jsx)(wt,{"aria-hidden":`true`,"data-icon":`inline-start`}),`Search`]})]})]})]})})})}var hn=new Intl.DateTimeFormat(`en`,{day:`numeric`,month:`short`,timeZone:`UTC`}),gn=new Intl.DateTimeFormat(`en`,{day:`numeric`,hour:`numeric`,month:`short`,timeZone:`UTC`}),_n=(e,t)=>(t===`24h`?gn:hn).format(new Date(e)),vn={installations:{label:`Active installations`,color:`var(--chart-2)`}};function yn({series:e,window:t}){let n=e.map(e=>({bucketStartMs:e.bucketStartMs,installations:e.value})),r=e.some(({value:e})=>e>0),i=t===`24h`?`hour`:`day`;return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-4 gap-y-1`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`h3`,{className:`text-sm font-medium`,children:`Activity over time`}),(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Unique active installations per `,i]})]}),(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`UTC`})]}),!r&&(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No installations reported during this period.`}),(0,Z.jsx)(We,{"aria-label":`Active installations per ${i}`,className:`h-64 w-full aspect-auto`,config:vn,role:`img`,children:(0,Z.jsxs)(Ve,{accessibilityLayer:!0,data:n,margin:{left:-16,right:4,top:8},children:[(0,Z.jsx)($e,{vertical:!1}),(0,Z.jsx)(Xe,{axisLine:!1,dataKey:`bucketStartMs`,minTickGap:28,tickFormatter:e=>_n(e,t),tickLine:!1}),(0,Z.jsx)(ft,{allowDecimals:!1,axisLine:!1,tickLine:!1,width:32}),(0,Z.jsx)(Qe,{content:(0,Z.jsx)(pt,{labelFormatter:(e,n)=>{let r=n[0]?.payload.bucketStartMs;return typeof r==`number`?_n(r,t):``}})}),(0,Z.jsx)(Ze,{dataKey:`installations`,fill:`var(--color-installations)`,fillOpacity:.12,isAnimationActive:!1,stroke:`var(--color-installations)`,strokeWidth:2,type:`monotone`})]})}),(0,Z.jsxs)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:[`Each point counts an installation once in that `,i,`. The total above counts it once across the whole period, so the points do not add up to the total.`]}),(0,Z.jsx)(`div`,{className:`sr-only`,children:(0,Z.jsxs)(`table`,{"aria-label":`Exact active installations per ${i}`,children:[(0,Z.jsxs)(`caption`,{children:[`Unique installations that reported an update status in each UTC`,` ${i}`,`.`]}),(0,Z.jsx)(`thead`,{children:(0,Z.jsxs)(`tr`,{children:[(0,Z.jsxs)(`th`,{scope:`col`,children:[`UTC `,i]}),(0,Z.jsx)(`th`,{scope:`col`,children:`Active installations`})]})}),(0,Z.jsx)(`tbody`,{children:n.map(e=>(0,Z.jsxs)(`tr`,{children:[(0,Z.jsx)(`th`,{scope:`row`,children:_n(e.bucketStartMs,t)}),(0,Z.jsx)(`td`,{children:e.installations})]},e.bucketStartMs))})]})})]})}var bn=Y.createContext(void 0),xn=Y.createContext(void 0),Sn=Y.createContext(void 0),Cn=Y.createContext(``);function Q(){let e=Y.useContext(bn);if(!e)throw Error(I(22));return e}function wn(){let e=Y.useContext(xn);if(!e)throw Error(I(23));return e}function Tn(){let e=Y.useContext(Sn);if(!e)throw Error(I(24));return e}function En(){return Y.useContext(Cn)}var $={id:m(e=>e.id),labelId:m(e=>e.labelId),items:m(e=>e.items),selectedValue:m(e=>e.selectedValue),hasSelectionChips:m(e=>{let t=e.selectedValue;return Array.isArray(t)&&t.length>0}),hasSelectedValue:m(e=>{let{selectedValue:t,selectionMode:n}=e;return t==null?!1:n===`multiple`&&Array.isArray(t)?t.length>0:!0}),hasNullItemLabel:m((e,t)=>t?ut(e.items):!1),open:m(e=>e.open),mounted:m(e=>e.mounted),forceMounted:m(e=>e.forceMounted),inline:m(e=>e.inline),activeIndex:m(e=>e.activeIndex),selectedIndex:m(e=>e.selectedIndex),isActive:m((e,t)=>e.activeIndex===t),isSelected:m((e,t)=>{let n=e.isItemEqualToValue,r=e.selectedValue;return Array.isArray(r)?r.some(e=>St(t,e,n)):St(t,r,n)}),transitionStatus:m(e=>e.transitionStatus),popupProps:m(e=>e.popupProps),inputProps:m(e=>e.inputProps),triggerProps:m(e=>e.triggerProps),itemProps:m(e=>e.itemProps),positionerElement:m(e=>e.positionerElement),listElement:m(e=>e.listElement),triggerElement:m(e=>e.triggerElement),inputElement:m(e=>e.inputElement),inputGroupElement:m(e=>e.inputGroupElement),popupSide:m(e=>e.popupSide),openMethod:m(e=>e.openMethod),inputInsidePopup:m(e=>e.inputInsidePopup),inputOwnsFormValue:m(e=>e.inputOwnsFormValue),selectionMode:m(e=>e.selectionMode),name:m(e=>e.name),form:m(e=>e.form),disabled:m(e=>e.disabled),readOnly:m(e=>e.readOnly),required:m(e=>e.required),grid:m(e=>e.grid),virtualized:m(e=>e.virtualized),itemToStringLabel:m(e=>e.itemToStringLabel),isItemEqualToValue:m(e=>e.isItemEqualToValue),modal:m(e=>e.modal),autoHighlight:m(e=>e.autoHighlight),submitOnItemClick:m(e=>e.submitOnItemClick)};function Dn(e,t){return(n,r)=>{if(n==null)return!1;let i=V(n,t);return e.contains(i,r)}}function On(e,t,n){return(r,i)=>{if(r==null)return!1;if(!i)return!0;let a=V(r,t),o=n==null?``:V(n,t);return o&&e.contains(o,i)&&o.length===i.length?!0:e.contains(a,i)}}var kn=new Map;function An(e={}){let t={usage:`search`,sensitivity:`base`,ignorePunctuation:!0,...e},n=`${jn(e.locale)}|${JSON.stringify(t)}`,r=kn.get(n);if(r)return r;let i=new Intl.Collator(e.locale,t),a={contains(e,t,n){if(!t)return!0;let r=V(e,n);for(let e=0;e<=r.length-t.length;e+=1)if(i.compare(r.slice(e,e+t.length),t)===0)return!0;return!1},startsWith(e,t,n){if(!t)return!0;let r=V(e,n);return i.compare(r.slice(0,t.length),t)===0},endsWith(e,t,n){if(!t)return!0;let r=V(e,n),a=t.length;return r.length>=a&&i.compare(r.slice(r.length-a),t)===0}};return kn.set(n,a),a}function jn(e){return Array.isArray(e)?e.map(e=>jn(e)).join(`,`):e==null?``:String(e)}var Mn=An,Nn=Symbol(`none`),Pn={value:Nn,index:-1};function Fn(e){let{id:r,onOpenChangeComplete:i,defaultSelectedValue:a=null,selectedValue:o,onSelectedValueChange:d,defaultInputValue:f,inputValue:p,open:m,defaultOpen:v=!1,selectionMode:y=`none`,onItemHighlighted:x,name:C,form:w,disabled:E=!1,readOnly:O=!1,required:k=!1,inputRef:ee,grid:A=!1,items:M,filteredItems:I,filter:ae,openOnInputClick:oe=!0,autoHighlight:ce=!1,keepHighlight:le=!1,highlightItemOnHover:ue=!0,loopFocus:de=!0,itemToStringLabel:L,itemToStringValue:fe,isItemEqualToValue:pe=tt,virtualized:me=!1,inline:_e=!1,fillInputOnItemPress:ve=!0,modal:ye=!1,limit:R=-1,autoComplete:xe=`list`,formAutoComplete:Ce,locale:we,submitOnItemClick:Te=!1}=e,{clearErrors:Ee}=ot(),{setDirty:De,validityData:ke,shouldValidateOnChange:Ae,setFilled:je,name:Me,disabled:Ne,setTouched:Pe,setFocused:Fe,validationMode:Ie,validation:Le}=ct(),Re=n(),ze=_t({id:r}),Be=Mn({locale:we}),[Ve,He]=Y.useState(!1),[We,Ge]=Y.useState(null),Ke=Y.useRef([]),qe=Y.useRef([]),Je=Y.useRef(null),Ye=Y.useRef(null),Xe=Y.useRef(null),Ze=Y.useRef(null),Qe=Y.useRef(null),$e=Y.useRef(!0),et=Y.useRef(!1),it=Y.useRef(null),st=Y.useRef(null),ut=Y.useRef(null),dt=Y.useRef(Pn),ft=Y.useRef(null),pt=Y.useRef([]),ht=Y.useRef([]),gt=Ne||E,vt=Me??C,B=y===`multiple`,yt=y===`single`,bt=p!==void 0||f!==void 0,wt=M!==void 0,Et=I!==void 0,H;H=ce===`always`?`always`:ce?`input-change`:!1;let[U,Dt]=Ct({controlled:o,default:B?a??te:a,name:`Combobox`,state:`selectedValue`}),Ot=Y.useMemo(()=>ae===null?()=>!0:ae===void 0?yt&&!Ve?On(Be,L,U):Dn(Be,L):ae,[ae,yt,U,Ve,Be,L]),kt=h(()=>bt?f??``:yt?V(U,L):``).current,[W,At]=Ct({controlled:p,default:kt,name:`Combobox`,state:`inputValue`}),[G,jt]=Ct({controlled:m,default:v,name:`Combobox`,state:`open`}),Nt=lt(M),K=We??(W===``?``:String(W).trim()),Ft=yt?V(U,L):``,It=yt&&!Ve&&K!==``&&Ft!==``&&Ft.length===K.length&&Be.contains(Ft,K),Lt=It?``:K,Rt=wt&&Et&&It,zt=Y.useMemo(()=>M?Nt?M.flatMap(e=>e.items):M:te,[M,Nt]),Bt=Y.useMemo(()=>{if(I&&!Rt)return I;if(!M)return te;if(Nt){let e=M,t=[],n=0;for(let r of e){if(R>-1&&n>=R)break;let e=Lt===``?r.items:r.items.filter(e=>Ot(e,Lt,L));if(e.length===0)continue;let i=R>-1?R-n:1/0,a=e.slice(0,i);if(a.length>0){let e={...r,items:a};t.push(e),n+=a.length}}return t}if(Lt===``)return R>-1?zt.slice(0,R):zt;let e=[];for(let t of zt){if(R>-1&&e.length>=R)break;Ot(t,Lt,L)&&e.push(t)}return e},[I,Rt,M,Nt,Lt,R,Ot,L,zt]),q=Y.useMemo(()=>Nt?Bt.flatMap(e=>e.items):Bt,[Bt,Nt]),J=h(()=>new _({id:ze,labelId:void 0,selectedValue:U,open:G,filter:Ot,query:K,items:M,selectionMode:y,listRef:Ke,labelsRef:qe,popupRef:Je,emptyRef:Qe,inputRef:Ye,startDismissRef:Xe,endDismissRef:Ze,keyboardActiveRef:$e,chipsContainerRef:it,clearRef:st,valuesRef:pt,allValuesRef:ht,selectionEventRef:ut,name:vt,form:w,disabled:gt,readOnly:O,required:k,grid:A,isGrouped:Nt,virtualized:me,openOnInputClick:oe,itemToStringLabel:L,isItemEqualToValue:pe,modal:ye,autoHighlight:H,submitOnItemClick:Te,hasInputValue:bt,mounted:!1,forceMounted:!1,transitionStatus:`idle`,inline:_e,activeIndex:null,selectedIndex:null,popupProps:{},inputProps:{},triggerProps:{},itemProps:P,positionerElement:null,listElement:null,triggerElement:null,inputElement:null,inputGroupElement:null,popupSide:null,openMethod:null,inputInsidePopup:!0,inputOwnsFormValue:y===`none`,onOpenChangeComplete:i||c,setOpen:c,setInputValue:c,setSelectedValue:c,setIndices:c,onItemHighlighted:c,handleSelection:c,forceMount:c,requestSubmit:c})).current,Vt=y===`none`?W:U,Ht=Y.useMemo(()=>y===`none`?Vt:Array.isArray(U)?U.map(e=>at(e,fe)):at(U,fe),[Vt,fe,y,U]),Ut=b(x),Wt=b(i),Gt=z(J,$.activeIndex),Kt=z(J,$.selectedIndex),qt=z(J,$.positionerElement),Jt=z(J,$.listElement),Yt=z(J,$.triggerElement),Xt=z(J,$.inputElement),Zt=z(J,$.inputGroupElement),X=z(J,$.inline),Qt=z(J,$.inputInsidePopup),$t=z(J,$.inputOwnsFormValue),en=t(Yt),{mounted:tn,setMounted:nn,transitionStatus:rn}=ne(G),{openMethod:an,triggerProps:on}=Pt(G),sn=b(()=>Ht);mt(Qt?en:Ye,ze,Vt,sn);let cn=b(()=>{M?qe.current=q.map(e=>V(e,L)):J.set(`forceMounted`,!0)}),ln=Y.useRef(U);he(()=>{U!==ln.current&&cn()},[cn,U]);let un=b(e=>{J.update(e);let t=e.type||`none`;if(e.activeIndex!==void 0)if(e.activeIndex===null)dt.current!==Pn&&(dt.current=Pn,Ut(void 0,D(t,void 0,{index:-1})));else{let n=pt.current[e.activeIndex];dt.current={value:n,index:e.activeIndex},Ut(n,D(t,void 0,{index:e.activeIndex}))}}),dn=b((t,n)=>{if(et.current=n.reason===N,e.onInputValueChange?.(t,n),!n.isCanceled){if(n.reason===`input-change`){let e=n.event,r=e.inputType;if(e.type===`compositionend`||r!=null&&r!==``&&r!==`insertReplacementText`){let e=t.trim()!==``;e&&He(!0),ft.current={hasQuery:e},e&&H&&J.state.activeIndex==null&&J.set(`activeIndex`,0)}}At(t)}}),fn=b((t,n)=>{if(G!==t&&(n.reason===`escape-key`&&wt&&q.length===0&&!J.state.emptyRef.current&&n.allowPropagation(),e.onOpenChange?.(t,n),!n.isCanceled&&(t&&B&&Qt&&!X&&We!==null&&(He(!1),Ge(null),W!==``&&dn(``,S(N,n.event))),!t&&Ve&&(yt?(X||Ge(K),K===``&&He(!1)):B&&(X||Ge(K),Qt&&un({activeIndex:null}),(!Qt||X)&&dn(``,S(N,n.event)))),jt(t),!t&&Qt&&(n.reason===`focus-out`||n.reason===`outside-press`)&&(Pe(!0),Fe(!1),Ie===`onBlur`)))){let e=y===`none`?W:U;Le.commit(e)}}),pn=b((e,t)=>{d?.(e,t),!t.isCanceled&&(Dt(e),(y===`none`&&Je.current&&ve||yt&&!J.state.inputInsidePopup)&&dn(V(e,L),S(t.reason,t.event)),yt&&e!=null&&t.reason!==`input-change`&&Ve&&!X&&Ge(K))}),mn=b((e,t)=>{let n=t;if(n===void 0){if(Gt===null)return;n=pt.current[Gt]}let r=be(e),i=ut.current??e;ut.current=null;let a=S(l,i),o=r?.closest(`a`)?.getAttribute(`href`);if(o){o.startsWith(`#`)&&fn(!1,a);return}if(B){let e=Array.isArray(U)?U:[];if(pn(nt(e,n,J.state.isItemEqualToValue)?xt(e,n,J.state.isItemEqualToValue):[...e,n],a),!(Ye.current&&Ye.current.value.trim()!==``))return;J.state.inputInsidePopup?dn(``,S(N,a.event)):fn(!1,a)}else pn(n,a),fn(!1,a)}),hn=b(()=>{if(!J.state.submitOnItemClick)return;let e=Le.inputRef.current?.form??J.state.inputElement?.form;e&&typeof e.requestSubmit==`function`&&e.requestSubmit()}),gn=b(()=>{if(nn(!1),Wt?.(!1),He(!1),Ge(null),un(y===`none`?{activeIndex:null,selectedIndex:null}:{activeIndex:null}),B&&Ye.current&&Ye.current.value!==``&&!et.current&&dn(``,S(N)),yt)if(J.state.inputInsidePopup)Ye.current&&Ye.current.value!==``&&dn(``,S(N));else{let e=V(U,L);Ye.current&&Ye.current.value!==e&&dn(e,S(e===``?N:g))}}),_n=Y.useMemo(()=>X&&qt?{current:qt.closest(`[role="dialog"]`)}:Je,[X,qt]);u({enabled:!e.actionsRef,open:G,ref:_n,onComplete(){G||gn()}}),Y.useImperativeHandle(e.actionsRef,()=>({unmount:gn}),[gn]),he(function(){if(G||y===`none`)return;let e=M?zt:ht.current;if(B){let t=Array.isArray(U)?U:[],n=t[t.length-1],r=Ue(e,n,pe);un({selectedIndex:r===-1?null:r})}else{let t=Ue(e,U,pe);un({selectedIndex:t===-1?null:t})}},[G,U,M,y,zt,B,pe,un]),he(()=>{M&&(pt.current=q,Ke.current.length=q.length)},[M,q]),he(()=>{let e=ft.current;if(e&&(e.hasQuery?H&&J.set(`activeIndex`,0):H===`always`&&J.set(`activeIndex`,0),ft.current=null),!G&&!X)return;let t=wt||Et?q:pt.current,n=J.state.activeIndex;if(n==null){if(H===`always`&&t.length>0){J.set(`activeIndex`,0);return}dt.current!==Pn&&(dt.current=Pn,J.state.onItemHighlighted(void 0,D(g,void 0,{index:-1})));return}if(n>=t.length){dt.current!==Pn&&(dt.current=Pn,J.state.onItemHighlighted(void 0,D(g,void 0,{index:-1}))),J.set(`activeIndex`,null);return}let r=t[n],i=dt.current.value,a=i!==Nn&&St(r,i,J.state.isItemEqualToValue);(dt.current.index!==n||!a)&&(dt.current={value:r,index:n},J.state.onItemHighlighted(r,D(g,void 0,{index:n})))},[Gt,H,Et,wt,q,X,G,J]),he(()=>{if(y===`none`){je(String(W)!==``);return}je(B?Array.isArray(U)&&U.length>0:U!=null)},[je,y,W,U,B]),Y.useEffect(()=>{wt&&H&&q.length===0&&un({activeIndex:null})},[wt,H,q.length,un]),Mt(K,()=>{!G||K===``||K===String(kt)||He(!0)}),Mt(U,()=>{if(y!==`none`&&(Ee(vt),De(U!==ke.initialValue),Ae()?Le.commit(U):Le.commit(U,!0),yt&&!bt&&!Qt)){let e=V(U,L);W!==e&&dn(e,S(g))}}),Mt(W,()=>{y===`none`&&(Ee(vt),De(W!==ke.initialValue),Ae()?Le.commit(W):Le.commit(W,!0))}),Mt(M,()=>{if(!yt||bt||Qt||Ve)return;let e=V(U,L);W!==e&&dn(e,S(g))});let vn=ge({open:X?!0:G,onOpenChange:fn,elements:{reference:Qt?Yt:Xt,floating:qt}}),yn,Q;X||(yn=A?`grid`:`listbox`,Q=G?`true`:`false`);let wn=Y.useMemo(()=>{let e=Xt?.tagName===`INPUT`,t=Xt==null||e,n=t||G,r=t?{autoComplete:`off`,spellCheck:`false`,autoCorrect:`off`,autoCapitalize:`none`}:{};return n&&(r.role=`combobox`,r[`aria-expanded`]=Q,r[`aria-haspopup`]=yn,r[`aria-controls`]=G?Jt?.id:void 0,r[`aria-autocomplete`]=xe),{reference:r,floating:{role:`presentation`}}},[Xt,G,Q,yn,Jt?.id,xe]),Tn=Tt(vn,{enabled:!O&&!gt&&oe,event:`mousedown-only`,toggle:!1,touchOpenDelay:Qt?0:100,reason:re}),En=F(vn,{enabled:!O&&!gt&&!X,outsidePressEvent:{mouse:`sloppy`,touch:`intentional`},bubbles:X?!0:void 0,outsidePress(e){let t=be(e);return!se(Yt,t)&&!se(st.current,t)&&!se(it.current,t)&&!se(Zt,t)}}),kn=rt(vn,{enabled:!O&&!gt,id:ze,listRef:Ke,activeIndex:Gt,selectedIndex:Kt,virtual:!0,loopFocus:de,allowEscape:de&&!H,focusItemOnOpen:Ve||y===`none`&&!H?!1:`auto`,focusItemOnHover:ue,resetOnPointerLeave:!le,cols:A?2:1,orientation:A?`horizontal`:void 0,rtl:Re===`rtl`,disabledIndices:te,onNavigate(e,t){!t&&!G||rn===`ending`||un(t?{activeIndex:e,type:$e.current?`keyboard`:`pointer`}:{activeIndex:e})}}),An=Y.useMemo(()=>ie(kn.reference,En.reference,Tn.reference,wn.reference),[kn.reference,En.reference,Tn.reference,wn.reference]),jn=Y.useMemo(()=>ie(T,kn.floating,En.floating,wn.floating),[kn.floating,En.floating,wn.floating]),Fn=Y.useMemo(()=>{let e=kn.item;return e?{...e,onFocus:void 0}:P},[kn.item]);Oe(()=>{J.update({inline:_e,popupProps:jn,inputProps:An,triggerProps:on,itemProps:Fn,setOpen:fn,setInputValue:dn,setSelectedValue:pn,setIndices:un,onItemHighlighted:Ut,handleSelection:mn,forceMount:cn,requestSubmit:hn})}),he(()=>{J.update({id:ze,selectedValue:U,open:G,mounted:tn,transitionStatus:rn,items:M,inline:_e,popupProps:jn,inputProps:An,triggerProps:on,openMethod:an,itemProps:Fn,selectionMode:y,name:vt,form:w,disabled:gt,readOnly:O,required:k,grid:A,isGrouped:Nt,virtualized:me,onOpenChangeComplete:Wt,openOnInputClick:oe,itemToStringLabel:L,modal:ye,autoHighlight:H,isItemEqualToValue:pe,submitOnItemClick:Te,hasInputValue:bt,requestSubmit:hn,inputOwnsFormValue:y===`none`&&(_e||!J.state.inputInsidePopup)})},[J,ze,U,G,tn,rn,M,jn,An,Fn,an,on,y,vt,gt,O,k,Le,A,Nt,me,Wt,oe,L,ye,pe,Te,bt,_e,hn,H,w]);let In=Se(ee,Le.inputRef),Ln=Y.useMemo(()=>({query:K,hasItems:wt,filteredItems:Bt,flatFilteredItems:q}),[K,wt,Bt,q]),Rn=Y.useMemo(()=>Array.isArray(Vt)?``:at(Vt,fe),[Vt,fe]),zn=B&&Array.isArray(U)&&U.length>0,Bn=B||y===`none`&&$t?void 0:vt,Vn=Y.useMemo(()=>!B||!Array.isArray(U)||!vt?null:U.map(e=>{let t=at(e,fe);return(0,Z.jsx)(`input`,{type:`hidden`,form:w,name:vt,value:t},t)}),[B,U,w,vt,fe]),Hn=(0,Z.jsxs)(Y.Fragment,{children:[e.children,(0,Z.jsx)(`input`,{...Le.getInputValidationProps({onFocus(){if(Qt){Yt?.focus();return}(Ye.current||Yt)?.focus()},onChange(e){if(e.nativeEvent.defaultPrevented||gt||O){e.preventBaseUIHandler?.();return}let t=e.currentTarget.value,n=S(g,e.nativeEvent);function r(){if(B)return;if(y===`none`){De(t!==ke.initialValue),dn(t,n),Ae()&&Le.commit(t);return}let e=pt.current.find(e=>at(e,fe).toLowerCase()===t.toLowerCase()||V(e,L).toLowerCase()===t.toLowerCase());e!=null&&(De(e!==ke.initialValue),pn?.(e,n),Ae()&&Le.commit(e))}M?r():(cn(),queueMicrotask(r))}}),id:ze&&Bn==null?`${ze}-hidden-input`:void 0,form:w,name:Bn,autoComplete:Ce,disabled:gt,required:k&&!zn,readOnly:O,value:Rn,ref:In,style:Bn?s:j,tabIndex:-1,"aria-hidden":!0,suppressHydrationWarning:!0}),Vn]});return(0,Z.jsx)(bn.Provider,{value:J,children:(0,Z.jsx)(xn.Provider,{value:vn,children:(0,Z.jsx)(Sn.Provider,{value:Ln,children:(0,Z.jsx)(Cn.Provider,{value:W,children:Hn})})})})}var In={...r,...ht,popupSide:e=>e?{"data-popup-side":e}:null,listEmpty:e=>e?{"data-list-empty":``}:null},Ln=2,Rn=Y.forwardRef(function(e,t){let{render:n,className:r,nativeButton:i=!0,disabled:o=!1,id:s,style:c,...l}=e,{state:u,disabled:f,setTouched:p,setFocused:m,validationMode:h,validation:g}=ct(),{labelId:_}=B(),v=Q(),{filteredItems:y}=Tn(),x=z(v,$.selectionMode),C=z(v,$.disabled),T=z(v,$.readOnly),E=z(v,$.required),D=z(v,$.mounted),O=z(v,$.popupSide),k=z(v,$.positionerElement),ee=z(v,$.listElement),A=z(v,$.triggerProps),j=z(v,$.triggerElement),M=z(v,$.inputInsidePopup),te=z(v,$.id),N=z(v,$.labelId),ne=z(v,$.open),P=z(v,$.selectedValue),re=z(v,$.activeIndex),F=z(v,$.selectedIndex),ie=z(v,$.hasSelectedValue),I=wn(),ae=En(),oe=le(),ce=f||C||o,ue=y.length===0,de=D&&k?O:null;_t({id:M?s:void 0});let L=M?s??te:s,fe=dt(_,N),pe=Y.useRef(``);function me(e){pe.current=e.pointerType}let he=I.useState(`domReferenceElement`);Y.useEffect(()=>{M&&j&&j!==he&&I.set(`domReferenceElement`,j)},[j,he,I,M]);let{reference:ge}=He(I,{enabled:!ne&&!T&&!C&&x===`single`,listRef:v.state.labelsRef,activeIndex:re,selectedIndex:F,onMatch(e){let t=v.state.valuesRef.current[e];t!==void 0&&v.state.setSelectedValue(t,S(`none`))}}),{reference:_e}=Tt(I,{enabled:!T&&!C,event:`mousedown`}),{buttonRef:ve,getButtonProps:R}=w({native:i,disabled:ce}),xe={...u,open:ne,disabled:ce,popupSide:de,listEmpty:ue,placeholder:x===`none`?!1:!ie};return d(`button`,e,{ref:[t,ve,b(e=>{v.set(`triggerElement`,e)})],state:xe,props:[A,_e,ge,{id:L,tabIndex:M?0:-1,role:M?`combobox`:void 0,"aria-expanded":ne?`true`:`false`,"aria-haspopup":M?`dialog`:`listbox`,"aria-controls":ne?ee?.id:void 0,"aria-required":M&&E||void 0,"aria-labelledby":fe,onPointerDown:me,onPointerEnter:me,onFocus(){m(!0),!(ce||T)&&oe.start(0,v.state.forceMount)},onBlur(e){if(!se(k,e.relatedTarget)&&(p(!0),m(!1),h===`onBlur`)){let e=x===`none`?ae:P;g.commit(e)}},onMouseDown(e){if(ce||T||(M||I.set(`domReferenceElement`,e.currentTarget),v.state.forceMount(),pe.current!==`touch`&&(v.state.inputRef.current?.focus(),M||e.preventDefault()),ne))return;let t=a(e.currentTarget);function n(e){if(!j)return;let t=be(e),n=v.state.positionerElement,r=v.state.listElement;if(se(j,t)||se(n,t)||se(r,t)||t===j)return;let i=it(j),a=e.clientX>=i.left-Ln&&e.clientX<=i.right+Ln,o=e.clientY>=i.top-Ln&&e.clientY<=i.bottom+Ln;a&&o||v.state.setOpen(!1,S(`cancel-open`,e))}M&&t.addEventListener(`mouseup`,n,{once:!0})},onKeyDown(e){ce||T||(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(ye(e),v.state.setOpen(!0,S(Ce,e.nativeEvent)),v.state.inputRef.current?.focus())}},g?g.getValidationProps(l):l,R],stateAttributesMapping:In})}),zn=Y.createContext(void 0);function Bn(){return Y.useContext(zn)}var Vn=Y.createContext(void 0);function Hn(e){let t=Y.useContext(Vn);if(t===void 0&&!e)throw Error(I(21));return t}var Un=Y.forwardRef(function(e,t){let n=Q(),{buttonRef:r,getButtonProps:i}=w({native:!1}),a=Se(t,r);function o(e){n.state.setOpen(!1,S(y,e.nativeEvent,e.currentTarget))}return(0,Z.jsx)(`span`,{ref:a,...i({onClick:o}),"aria-label":`Dismiss`,tabIndex:void 0,style:s})}),Wn=Y.forwardRef(function(e,t){let{render:r,className:i,disabled:a=!1,id:o,style:s,...c}=e,{state:l,disabled:u,setTouched:p,setFocused:m,validationMode:h,validation:_}=ct(),{labelId:v}=B(),y=Bn(),x=!!Hn(!0),C=Q(),{filteredItems:w}=Tn(),T=En(),E=n(),D=z(C,$.required),O=z(C,$.disabled),k=z(C,$.readOnly),ee=z(C,$.name),A=z(C,$.form),j=z(C,$.selectionMode),M=z(C,$.autoHighlight),te=z(C,$.inputProps),ne=z(C,$.triggerProps),P=z(C,$.open),re=z(C,$.mounted),F=z(C,$.selectedValue),ie=z(C,$.popupSide),I=z(C,$.positionerElement),ae=z(C,$.id),oe=z(C,$.inline),se=z(C,$.modal),ce=!!M,le=re&&I?ie:null,ue=u||O||a,L=w.length===0,pe=x||oe,me=!pe||se,he=Ee(o??(pe?void 0:ae)),ge=dt(v,void 0),_e=x?vt:l,[ve,R]=Y.useState(null),be=Y.useRef(!1),xe=Y.useRef(null),Se=Y.useRef(!1),Ce=j===`none`&&!x,we=b(e=>{let t=x||C.state.inline;t&&!C.state.hasInputValue&&C.state.setInputValue(``,S(g)),C.update({inputElement:e,inputInsidePopup:t,inputOwnsFormValue:Ce})}),Te=x||!_?c:_.getValidationProps(c),De={..._e,open:P,disabled:ue,readOnly:k,popupSide:le,listEmpty:L};function Oe(e){if(!y)return;let t,{highlightedChipIndex:n}=y,r=y.chipsRef.current.length,i=E===`rtl`,a=i?`ArrowRight`:`ArrowLeft`,o=i?`ArrowLeft`:`ArrowRight`;if(n!==void 0){if(e.key===a)e.preventDefault(),t=n>0?n-1:void 0;else if(e.key===o)e.preventDefault(),t=n<r-1?n+1:void 0;else if(e.key===`Backspace`||e.key===`Delete`){e.preventDefault();let r=n>=F.length-1?F.length-2:n;t=r>=0?r:void 0,C.state.setIndices({activeIndex:null,selectedIndex:null,type:`keyboard`})}return t}return e.key===a&&(e.currentTarget.selectionStart??0)===0&&F.length>0?(e.preventDefault(),t=r>0?r-1:void 0):e.key===`Backspace`&&e.currentTarget.value===``&&F.length>0&&(C.state.setIndices({activeIndex:null,selectedIndex:null,type:`keyboard`}),e.preventDefault()),t}let ke=d(`input`,e,{state:De,ref:[t,C.state.inputRef,we],props:[te,ne,{type:`text`,value:e.value??ve??T,"aria-readonly":k||void 0,"aria-required":D||void 0,"aria-labelledby":ge,disabled:ue,readOnly:k,required:j===`none`?D:void 0,form:A,...Ce&&ee&&{name:ee},id:he,onFocus(){if(m(!0),!oe||!Se.current)return;Se.current=!1;let e=xe.current;e==null||!Object.hasOwn(C.state.valuesRef.current,e)||C.state.setIndices({activeIndex:e})},onBlur(){p(!0),m(!1);let e=C.state.activeIndex;if(oe&&e!==null&&M!==`always`&&(xe.current=e,Se.current=!0,C.state.setIndices({activeIndex:null})),h===`onBlur`){let e=j===`none`?T:F;_.commit(e)}},onCompositionStart(e){fe||(be.current=!0,R(e.currentTarget.value))},onCompositionEnd(e){be.current=!1;let t=e.currentTarget.value;R(null),C.state.setInputValue(t,S(f,e.nativeEvent))},onChange(e){let t=e.nativeEvent.inputType,n=!t||t===`insertReplacementText`,r=be.current||!n;if(be.current){let t=e.currentTarget.value;R(t),t===``&&!C.state.openOnInputClick&&!C.state.inputInsidePopup&&C.state.setOpen(!1,S(N,e.nativeEvent));let n=t.trim(),i=ce&&n!==``;!k&&!ue&&n&&r&&(C.state.setOpen(!0,S(f,e.nativeEvent)),ce||C.state.setIndices({activeIndex:null,selectedIndex:null,type:C.state.keyboardActiveRef.current?`keyboard`:`pointer`})),P&&C.state.activeIndex!==null&&!i&&C.state.setIndices({activeIndex:null,selectedIndex:null,type:C.state.keyboardActiveRef.current?`keyboard`:`pointer`});return}C.state.setInputValue(e.currentTarget.value,S(f,e.nativeEvent));let i=e.currentTarget.value===``,a=S(N,e.nativeEvent);i&&!C.state.inputInsidePopup&&(j===`single`&&C.state.setSelectedValue(null,a),C.state.openOnInputClick||C.state.setOpen(!1,a));let o=e.currentTarget.value.trim();!k&&!ue&&o&&r&&(C.state.setOpen(!0,S(f,e.nativeEvent)),ce||C.state.setIndices({activeIndex:null,selectedIndex:null,type:C.state.keyboardActiveRef.current?`keyboard`:`pointer`})),P&&C.state.activeIndex!==null&&!ce&&C.state.setIndices({activeIndex:null,selectedIndex:null,type:C.state.keyboardActiveRef.current?`keyboard`:`pointer`})},onKeyDown(e){if(ue||k||e.ctrlKey||e.shiftKey||e.altKey||e.metaKey)return;C.state.keyboardActiveRef.current=!0;let t=e.currentTarget,n=t.scrollWidth-t.clientWidth,r=E===`rtl`;if(e.key===`Home`){ye(e);let n=de&&r?t.value.length:0;t.setSelectionRange(n,n),t.scrollLeft=0;return}if(e.key===`End`){ye(e);let i=de&&r?0:t.value.length;t.setSelectionRange(i,i),t.scrollLeft=r?-n:n;return}if(!re&&e.key===`Escape`){let t=j===`multiple`&&Array.isArray(F)?F.length===0:F===null,n=S(Me,e.nativeEvent),r=j===`multiple`?[]:null;C.state.setInputValue(``,n),C.state.setSelectedValue(r,n),!t&&!C.state.inline&&!n.isPropagationAllowed&&e.stopPropagation();return}if(y&&e.key===`Backspace`&&t.value===``&&y.highlightedChipIndex===void 0&&Array.isArray(F)&&F.length>0){let t=y.chipsRef.current.length,n=t>0?t-1:F.length-1,r=F.filter((e,t)=>t!==n);C.state.setIndices({activeIndex:null,selectedIndex:null,type:C.state.keyboardActiveRef.current?`keyboard`:`pointer`}),C.state.setSelectedValue(r,S(g,e.nativeEvent));return}let i=y?.highlightedChipIndex!==void 0,a=Oe(e);if(y?.setHighlightedChipIndex(a),a===void 0?i&&C.state.inputRef.current?.focus():y?.chipsRef.current[a]?.focus(),e.which!==229&&e.key===`Enter`&&P){let t=C.state.activeIndex,n=e.nativeEvent;if(t===null){if(oe)return;C.state.setOpen(!1,S(g,n));return}ye(e);let r=C.state.listRef.current[t];r&&(C.state.selectionEventRef.current=n,r.click(),C.state.selectionEventRef.current=null)}},onPointerMove(){C.state.keyboardActiveRef.current=!1},onPointerDown(){C.state.keyboardActiveRef.current=!1}},Te],stateAttributesMapping:In}),Ae=x?(0,Z.jsx)(st.Provider,{value:bt,children:ke}):ke;return(0,Z.jsxs)(Y.Fragment,{children:[P&&me&&(0,Z.jsx)(Un,{ref:C.state.startDismissRef}),Ae]})}),Gn={...M,...C},Kn=Y.forwardRef(function(e,t){let{render:n,className:r,disabled:i=!1,nativeButton:a=!0,keepMounted:o=!1,style:s,...c}=e,{disabled:l}=ct(),f=Q(),m=z(f,$.selectionMode),h=z(f,$.disabled),g=z(f,$.readOnly),_=z(f,$.open),v=z(f,$.selectedValue),y=z(f,$.hasSelectionChips),b=En(),x=!1;x=m===`none`?b!==``:m===`single`?v!=null:y;let C=l||h||i,{buttonRef:T,getButtonProps:E}=w({native:a,disabled:C}),{mounted:D,transitionStatus:O,setMounted:k}=ne(x),ee={disabled:C,visible:x,open:_,transitionStatus:O};u({open:x,ref:f.state.clearRef,onComplete(){x||k(!1)}});let A=d(`button`,e,{state:ee,ref:[t,T,f.state.clearRef],props:[{tabIndex:-1,children:`x`,onMouseDown(e){e.preventDefault()},onClick(e){if(C||g)return;let t=f.state.keyboardActiveRef;f.state.setInputValue(``,S(p,e.nativeEvent)),m===`none`?f.state.setIndices({activeIndex:null,type:t.current?`keyboard`:`pointer`}):(f.state.setSelectedValue(Array.isArray(v)?[]:null,S(p,e.nativeEvent)),f.state.setIndices({activeIndex:null,selectedIndex:null,type:t.current?`keyboard`:`pointer`})),f.state.inputRef.current?.focus()}},c,E],stateAttributesMapping:Gn});return o||D?A:null}),qn=Y.createContext(null);function Jn(){return Y.useContext(qn)}function Yn(e){let{children:t}=e,{filteredItems:n}=Tn(),r=Jn(),i=r?r.items:n;return i?(0,Z.jsx)(Y.Fragment,{children:i.map(t)}):null}var Xn=Y.forwardRef(function(e,t){var n;let{render:r,className:i,style:a,children:o,...s}=e,c=Q(),l=wn(),u=!!Hn(!0),{filteredItems:f,hasItems:p}=Tn(),m=z(c,$.selectionMode),h=z(c,$.grid),g=z(c,$.popupProps),_=z(c,$.virtualized),v=m===`multiple`,y=f.length===0,x=b(e=>{c.set(`positionerElement`,e)}),S=b(e=>{c.set(`listElement`,e)}),C=Y.useMemo(()=>typeof o==`function`?n||=(0,Z.jsx)(Yn,{children:o}):o,[o]),w={empty:y},T=l.useState(`floatingId`),E=d(`div`,e,{state:w,ref:[t,S,u?null:x],props:[g,{children:C,tabIndex:-1,id:T,role:h?`grid`:`listbox`,"aria-multiselectable":v?`true`:void 0,onKeyDown(e){if(!(c.state.disabled||c.state.readOnly)&&e.key===`Enter`){let t=c.state.activeIndex;if(t==null)return;ye(e);let n=e.nativeEvent,r=c.state.listRef.current[t];r&&(c.state.selectionEventRef.current=n,r.click(),c.state.selectionEventRef.current=null)}},onKeyDownCapture(){c.state.keyboardActiveRef.current=!0},onPointerMoveCapture(){c.state.keyboardActiveRef.current=!1}},s]});return _?E:(0,Z.jsx)(Je,{elementsRef:c.state.listRef,labelsRef:p?void 0:c.state.labelsRef,children:E})}),Zn=`⁠`;function Qn(e){let t=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_TEXT),n=null;for(;t.nextNode();){let e=t.currentNode;e.nodeValue!==``&&(n=e)}return n}function $n(){let e=le(),t=Y.useRef(null);return Y.useEffect(()=>{if(ae)return;let n=t.current;if(n==null)return;let r=Qn(n);if(r==null)return;let i=r.nodeValue??``,a=`${i}${Zn}`;return r.nodeValue=a,e.start(200,()=>{r.nodeValue===a&&(r.nodeValue=i)}),()=>{e.clear(),r.nodeValue===a&&(r.nodeValue=i)}},[t,e]),t}var er=Y.createContext(void 0);function tr(){let e=Y.useContext(er);if(e===void 0)throw Error(I(20));return e}var nr=Y.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,i=Q(),a=z(i,$.mounted),o=z(i,$.forceMounted);return a||n||o?(0,Z.jsx)(er.Provider,{value:n,children:(0,Z.jsx)(ue,{ref:t,...r})}):null}),rr=Y.forwardRef(function(e,t){let{render:n,className:r,anchor:i,positionMethod:a=`absolute`,side:o=`bottom`,align:s=`center`,sideOffset:c=0,alignOffset:l=0,collisionBoundary:u=`clipping-ancestors`,collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,disableAnchorTracking:m=!1,collisionAvoidance:h=we,style:g,..._}=e,v=Q(),{filteredItems:y}=Tn(),x=wn(),S=tr(),C=z(v,$.modal),w=z(v,$.open),T=z(v,$.mounted),E=z(v,$.openMethod),D=z(v,$.positionerElement),k=z(v,$.triggerElement),ee=z(v,$.inputElement),A=z(v,$.inputGroupElement),j=z(v,$.inputInsidePopup),M=z(v,$.transitionStatus),te=y.length===0,N=O({anchor:i??(j?k:A??ee),floatingRootContext:x,positionMethod:a,mounted:T,side:o,sideOffset:c,align:s,alignOffset:l,arrowPadding:f,collisionBoundary:u,collisionPadding:d,sticky:p,disableAnchorTracking:m,keepMounted:S,collisionAvoidance:h,lazyFlip:!0});gt(w&&C,E===`touch`,D,k);let ne={open:w,side:N.side,align:N.align,anchorHidden:N.anchorHidden,empty:te};he(()=>{v.set(`popupSide`,N.side)},[v,N.side]);let P=b(e=>{v.set(`positionerElement`,e)}),re=ce(e,ne,{styles:N.positionerStyles,transitionStatus:M,props:_,refs:[t,P],hidden:!T,inert:!w});return(0,Z.jsxs)(Vn.Provider,{value:N,children:[T&&C&&(0,Z.jsx)(kt,{inert:Et(!w),cutout:A??ee??k}),re]})}),ir={...o,...M},ar=Y.forwardRef(function(e,t){let{render:n,className:r,style:i,initialFocus:a,finalFocus:o,...s}=e,c=Q(),l=Hn(),f=wn(),{filteredItems:p}=Tn(),m=z(c,$.mounted),h=z(c,$.open),g=z(c,$.openMethod),_=z(c,$.transitionStatus),v=z(c,$.inputInsidePopup),y=z(c,$.inputElement),b=z(c,$.modal),x=p.length===0;u({open:h,ref:c.state.popupRef,onComplete(){h&&c.state.onOpenChangeComplete(!0)}});let S=d(`div`,e,{state:{open:h,side:l.side,align:l.align,anchorHidden:l.anchorHidden,transitionStatus:_,empty:x},ref:[t,c.state.popupRef],props:[{role:v?`dialog`:`presentation`,tabIndex:-1,onFocus(e){let t=be(e.nativeEvent);g!==`touch`&&(se(c.state.listElement,t)||t===e.currentTarget)&&c.state.inputRef.current?.focus()}},De(_),s],stateAttributesMapping:ir}),C=a===void 0?v?e=>e===`touch`?c.state.popupRef.current:y:!1:a,w;w=o??(v?void 0:!1);let T=!v||b;return(0,Z.jsx)(It,{context:f,disabled:!m,modal:T,openInteractionType:g,initialFocus:C,returnFocus:w,getInsideElements:()=>[c.state.startDismissRef.current,c.state.endDismissRef.current],children:(0,Z.jsxs)(Y.Fragment,{children:[S,T&&(0,Z.jsx)(Un,{ref:c.state.endDismissRef})]})})}),or=Y.createContext(void 0);function sr(){let e=Y.useContext(or);if(!e)throw Error(I(19));return e}var cr=Y.createContext(!1);function lr(){return Y.useContext(cr)}var ur=v(x()),dr=Y.memo(Y.forwardRef(function(e,t){let{render:n,className:r,style:i,value:a=null,index:o,disabled:s=!1,nativeButton:c=!1,...l}=e,u=Y.useRef(!1),f=Y.useRef(null),p=et({index:o,textRef:f,indexGuessBehavior:Ye.GuessFromOrder}),m=Q(),h=lr(),{flatFilteredItems:g,hasItems:_}=Tn(),v=z(m,$.open),y=z(m,$.selectionMode),b=z(m,$.readOnly),x=z(m,$.virtualized),S=z(m,$.isItemEqualToValue),C=y!==`none`,T=o??(x?Ue(g,a,S):p.index),E=p.index!==-1,D=z(m,$.id),O=z(m,$.isActive,T),k=z(m,$.isSelected,a),ee=z(m,$.itemProps),A=Y.useRef(null),j=D!=null&&E?`${D}-${T}`:void 0,M=k&&C;he(()=>{if(!(E&&(x||o!=null)))return;let e=m.state.listRef.current;return e[T]=A.current,()=>{delete e[T]}},[E,x,T,o,m]),he(()=>{if(!E||_)return;let e=m.state.valuesRef.current;return e[T]=a,y!==`none`&&m.state.allValuesRef.current.push(a),()=>{delete e[T]}},[E,_,T,a,m,y]),he(()=>{if(!v){u.current=!1;return}if(!E||_)return;let e=m.state.selectedValue;St(a,Array.isArray(e)?e[e.length-1]:e,S)&&m.set(`selectedIndex`,T)},[E,_,v,m,T,a,S]);let{getButtonProps:te,buttonRef:N}=w({disabled:s,focusableWhenDisabled:!0,native:c,composite:!0}),ne={disabled:s,selected:M,highlighted:O};function P(e){function t(){m.state.handleSelection(e,a)}m.state.submitOnItemClick?(ur.flushSync(t),m.state.requestSubmit()):t()}let re={id:j,role:h?`gridcell`:`option`,"aria-selected":C?M:void 0,tabIndex:void 0,onPointerDownCapture(e){u.current=!0,e.preventDefault()},onMouseDown(e){e.preventDefault()},onClick(e){s||b||P(e.nativeEvent)},onMouseUp(e){let t=u.current;u.current=!1,!(s||b||e.button!==0||t||!O)&&P(e.nativeEvent)}},F=d(`div`,e,{ref:[N,t,p.ref,A],state:ne,props:[ee,re,l,te]}),ie=Y.useMemo(()=>({selected:M,textRef:f}),[M,f]);return(0,Z.jsx)(or.Provider,{value:ie,children:F})})),fr=Y.forwardRef(function(e,t){let{render:n,className:r,style:i,children:a,...o}=e,{filteredItems:s}=Tn(),c=Q(),l=$n(),u=s.length===0?a:null;return d(`div`,e,{ref:[t,c.state.emptyRef,l],props:[{children:u,role:`status`,"aria-live":`polite`,"aria-atomic":!0},o]})});function pr(e){let{multiple:t=!1,defaultValue:n,value:r,onValueChange:i,autoComplete:a,...o}=e;return(0,Z.jsx)(Fn,{...o,selectionMode:t?`multiple`:`single`,selectedValue:r,defaultSelectedValue:n,onSelectedValueChange:i,formAutoComplete:a})}var mr=Y.forwardRef(function(e,t){let n=e.keepMounted??!1,{selected:r}=sr();return n||r?(0,Z.jsx)(hr,{...e,ref:t}):null}),hr=Y.memo(Y.forwardRef((e,t)=>{let{render:n,className:r,style:i,keepMounted:a,...o}=e,{selected:s}=sr(),c=Y.useRef(null),{transitionStatus:l,setMounted:f}=ne(s),p=d(`span`,e,{ref:[t,c],state:{selected:s,transitionStatus:l},props:[{"aria-hidden":!0,children:`✔️`},o],stateAttributesMapping:M});return u({open:s,ref:c,onComplete(){s||f(!1)}}),p})),gr=pr;function _r({className:e,children:t,...n}){return(0,Z.jsxs)(Rn,{"data-slot":`combobox-trigger`,className:i(`[&_svg:not([class*='size-'])]:size-3.5`,e),...n,children:[t,(0,Z.jsx)(qe,{className:`text-muted-foreground size-3.5 pointer-events-none`})]})}function vr({className:e,...t}){return(0,Z.jsx)(Kn,{"data-slot":`combobox-clear`,render:(0,Z.jsx)(q,{variant:`ghost`,size:`icon-xs`}),className:i(e),...t,children:(0,Z.jsx)(ze,{className:`pointer-events-none`})})}function yr({className:e,children:t,disabled:n=!1,showTrigger:r=!0,showClear:a=!1,...o}){return(0,Z.jsxs)(Vt,{className:i(`w-auto`,e),children:[(0,Z.jsx)(Wn,{render:(0,Z.jsx)(Ht,{disabled:n}),...o}),(0,Z.jsxs)(Ut,{align:`inline-end`,children:[r&&(0,Z.jsx)(_r,{render:(0,Z.jsx)(q,{size:`icon-xs`,variant:`ghost`,"data-slot":`input-group-button`,className:`group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:n})}),a&&(0,Z.jsx)(vr,{disabled:n})]}),t]})}function br({className:e,side:t=`bottom`,sideOffset:n=6,align:r=`start`,alignOffset:a=0,anchor:o,...s}){return(0,Z.jsx)(nr,{children:(0,Z.jsx)(rr,{side:t,sideOffset:n,align:r,alignOffset:a,anchor:o,className:`isolate z-50`,children:(0,Z.jsx)(ar,{"data-slot":`combobox-content`,"data-chips":!!o,className:i(`bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 *:data-[slot=input-group]:bg-input/20 dark:bg-popover max-h-72 min-w-32 overflow-hidden rounded-lg shadow-md ring-1 duration-100 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-7 *:data-[slot=input-group]:border-none *:data-[slot=input-group]:shadow-none dark group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)`,e),...s})})})}function xr({className:e,...t}){return(0,Z.jsx)(Xn,{"data-slot":`combobox-list`,className:i(`no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0 overflow-y-auto overscroll-contain`,e),...t})}function Sr({className:e,children:t,...n}){return(0,Z.jsxs)(dr,{"data-slot":`combobox-item`,className:i(`data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground min-h-7 gap-2 rounded-md px-2 py-1 text-xs/relaxed [&_svg:not([class*='size-'])]:size-3.5 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0`,e),...n,children:[t,(0,Z.jsx)(mr,{render:(0,Z.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex items-center justify-center`}),children:(0,Z.jsx)(Le,{className:`pointer-events-none`})})]})}function Cr({className:e,...t}){return(0,Z.jsx)(fr,{"data-slot":`combobox-empty`,className:i(`text-muted-foreground hidden w-full justify-center py-2 text-center text-xs/relaxed group-data-empty/combobox-content:flex`,e),...t})}function wr({bundleId:e,bundles:t,onBundleChange:n}){let r=t.find(t=>t.bundleId===e)??null;return(0,Z.jsxs)(Be,{className:`w-full min-w-0 sm:max-w-md`,"data-disabled":!t.length,children:[(0,Z.jsx)(Ie,{htmlFor:`analytics-bundle-selector`,children:`Bundle to inspect`}),(0,Z.jsxs)(gr,{autoHighlight:!0,disabled:!t.length,filter:(e,t)=>{let n=t.trim().toLowerCase();return e.bundleId.toLowerCase().includes(n)||e.description.toLowerCase().includes(n)},isItemEqualToValue:(e,t)=>e.bundleId===t.bundleId,items:t,itemToStringLabel:e=>e.bundleId,onValueChange:e=>{e&&n(e.bundleId)},value:r,children:[(0,Z.jsx)(_r,{"aria-label":`Bundle to inspect`,id:`analytics-bundle-selector`,render:(0,Z.jsx)(A,{className:`h-auto min-h-12 w-full min-w-0 justify-between px-3 py-2 text-left`,size:`lg`,variant:`outline`}),children:r?(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col items-start gap-1`,children:[(0,Z.jsx)(`code`,{className:`max-w-full truncate text-xs/4`,children:r.bundleId}),(0,Z.jsx)(`span`,{className:`max-w-full truncate text-xs/4 text-muted-foreground`,children:r.description})]}):(0,Z.jsx)(`span`,{className:`truncate text-muted-foreground`,children:`No bundles available`})}),(0,Z.jsxs)(br,{className:`min-w-(--anchor-width)`,children:[(0,Z.jsx)(yr,{"aria-label":`Search bundles`,placeholder:`Search by bundle ID or description`,showClear:!0,showTrigger:!1}),(0,Z.jsx)(Cr,{children:`No bundles found.`}),(0,Z.jsx)(xr,{children:e=>(0,Z.jsx)(Sr,{className:`min-h-12 px-3 py-2`,value:e,children:(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1 pr-5`,children:[(0,Z.jsx)(`code`,{className:`max-w-72 truncate text-xs/4`,children:e.bundleId}),(0,Z.jsx)(`span`,{className:`truncate text-xs/4 text-muted-foreground`,children:e.description})]})},e.bundleId)})]})]})]})}function Tr({bundleSelector:e,configuredPercentage:t,latestBundleInstallations:n,reportingInstallations:r,state:i,window:a}){let o=r===0?0:n/r*100;return(0,Z.jsxs)(Wt,{className:`min-w-0 overflow-hidden shadow-sm`,children:[(0,Z.jsxs)(Kt,{className:`gap-4 space-y-0 lg:flex-row lg:items-start lg:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5`,children:[(0,Z.jsx)(Yt,{className:`text-sm font-medium`,children:(0,Z.jsx)(`h2`,{id:`bundle-detail-heading`,children:`Selected bundle activity`})}),(0,Z.jsx)(Jt,{children:`Select a bundle to inspect its latest presence, applies, and recoveries during this period.`})]}),e]}),(0,Z.jsx)(qt,{className:`pt-10`,children:i.status===`idle`?(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No active bundle is available.`}):i.status===`loading`?(0,Z.jsxs)(`div`,{"aria-label":`Loading update outcomes`,className:`flex flex-col gap-4`,children:[(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 lg:grid-cols-4`,children:[(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`})]}),(0,Z.jsx)(k,{className:`h-32 w-full`})]}):i.status===`error`?(0,Z.jsx)(Ge,{error:i.error,fallbackTitle:`Bundle movement unavailable`}):(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-5`,children:[(0,Z.jsxs)(`dl`,{className:`grid sm:grid-cols-2 lg:grid-cols-4 lg:divide-x lg:divide-border/70`,children:[(0,Z.jsxs)(`div`,{className:`border-b pb-4 sm:pr-4 lg:border-b-0`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Latest bundle share`}),(0,Z.jsxs)(`dd`,{className:`mt-1 text-2xl font-semibold tracking-tight tabular-nums`,children:[Math.round(o),`%`]}),(0,Z.jsxs)(`dd`,{className:`mt-1 text-xs text-muted-foreground tabular-nums`,children:[n.toLocaleString(),` of`,` `,r.toLocaleString(),` reporting installs`]})]}),(0,Z.jsxs)(`div`,{className:`border-b py-4 sm:pl-4 lg:border-b-0 lg:py-0 lg:pr-4`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Newly applied`}),(0,Z.jsx)(`dd`,{className:`mt-1 text-2xl font-semibold tracking-tight tabular-nums`,children:i.data.summary.installed.toLocaleString()}),(0,Z.jsx)(`dd`,{className:`mt-1 text-xs text-muted-foreground`,children:`Distinct installations`})]}),(0,Z.jsxs)(`div`,{className:`border-b py-4 sm:pr-4 lg:border-b-0 lg:py-0 lg:pl-4`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Recovered away`}),(0,Z.jsx)(`dd`,{className:`mt-1 text-2xl font-semibold tracking-tight tabular-nums`,children:i.data.summary.recovered.toLocaleString()}),(0,Z.jsx)(`dd`,{className:`mt-1 text-xs text-muted-foreground`,children:`Distinct installations`})]}),(0,Z.jsxs)(`div`,{className:`pt-4 sm:pl-4 lg:py-0`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Configured rollout`}),(0,Z.jsx)(`dd`,{className:`mt-1 text-2xl font-semibold tracking-tight tabular-nums`,children:t===null?`—`:`${t}%`}),(0,Z.jsx)(`dd`,{className:`mt-1 text-xs text-muted-foreground`,children:`Eligibility setting`})]})]}),(0,Z.jsx)(yt,{installed:i.data.series.installed,recovered:i.data.series.recovered,window:a})]})})]})}var Er=new Intl.DateTimeFormat(`en`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}),Dr={"24h":{label:`Daily active installations`,period:`last 24 hours`},"7d":{label:`Weekly active installations`,period:`last 7 days`},"30d":{label:`Monthly active installations`,period:`last 30 days`}};function Or({children:e,className:t,label:n}){return(0,Z.jsxs)(Wt,{"aria-label":n,className:i(`min-w-0`,t),children:[(0,Z.jsxs)(Kt,{children:[(0,Z.jsx)(k,{className:`h-4 w-32`}),(0,Z.jsx)(k,{className:`h-3 w-4/5`})]}),(0,Z.jsx)(qt,{children:e})]})}function kr(e){if(e.status===`loading`)return(0,Z.jsxs)(`div`,{"aria-label":`Loading reporting analytics`,className:`flex min-w-0 flex-col gap-8`,children:[(0,Z.jsxs)(Or,{label:`Loading installation activity`,children:[(0,Z.jsx)(k,{className:`h-10 w-24`}),(0,Z.jsx)(k,{className:`mt-5 h-64 w-full`}),(0,Z.jsxs)(`div`,{className:`mt-5 grid gap-4 border-t pt-5 sm:grid-cols-3`,children:[(0,Z.jsx)(k,{className:`h-10 w-full`}),(0,Z.jsx)(k,{className:`h-10 w-full`}),(0,Z.jsx)(k,{className:`h-10 w-full`})]})]}),(0,Z.jsx)(Or,{label:`Loading bundle detail`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Z.jsx)(k,{className:`h-10 w-full max-w-md`}),(0,Z.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 lg:grid-cols-4`,children:[(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`}),(0,Z.jsx)(k,{className:`h-14 w-full`})]}),(0,Z.jsx)(k,{className:`h-32 w-full`})]})})]});if(e.status===`error`)return(0,Z.jsx)(Ge,{error:e.error,fallbackTitle:`Reporting analytics unavailable`});let{active:t,bundleId:n,bundles:r,catalog:i,onBundleChange:a,outcomes:o}=e,s=Dr[t.window],c=o.status===`idle`?null:o.bundleId,l=t.bundles.find(({bundleId:e})=>e===c)?.installations??0,u=i.configuredRollouts.find(({bundleId:e})=>e===c)?.configuredPercentage??null;return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-8`,children:[(0,Z.jsx)(`section`,{"aria-label":`Installation activity`,children:(0,Z.jsxs)(Wt,{className:`min-w-0 overflow-hidden shadow-sm`,children:[(0,Z.jsxs)(Kt,{className:`pb-4`,children:[(0,Z.jsx)(Yt,{className:`text-sm font-medium`,children:(0,Z.jsx)(`h2`,{children:s.label})}),(0,Z.jsxs)(Jt,{children:[`Unique app installations that reported an update status in the`,` `,s.period,`.`]})]}),(0,Z.jsxs)(qt,{className:`flex flex-col gap-5`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:`Active installations`}),(0,Z.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-4xl font-semibold tracking-tight tabular-nums`,children:t.activeInstallations.toLocaleString()}),(0,Z.jsxs)(`span`,{className:`pb-1 text-xs text-muted-foreground`,children:[`unique in `,s.period]})]})]}),(0,Z.jsx)(`div`,{className:`border-t pt-5`,children:(0,Z.jsx)(yn,{series:t.series,window:t.window})})]}),(0,Z.jsx)(Gt,{className:`border-t bg-muted/15 p-0`,children:(0,Z.jsxs)(`dl`,{className:`grid w-full sm:grid-cols-3 sm:divide-x sm:divide-border/70`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1 px-5 py-4`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Reported bundles`}),(0,Z.jsx)(`dd`,{className:`text-lg font-semibold tabular-nums`,children:t.bundles.length.toLocaleString()})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1 border-t px-5 py-4 sm:border-t-0`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`Reporting window`}),(0,Z.jsx)(`dd`,{className:`text-sm font-medium`,children:s.period})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1 border-t px-5 py-4 sm:border-t-0`,children:[(0,Z.jsx)(`dt`,{className:`text-xs text-muted-foreground`,children:`As of`}),(0,Z.jsxs)(`dd`,{className:`text-xs font-medium tabular-nums`,children:[Er.format(new Date(t.asOfMs)),` UTC`]})]})]})})]})}),(0,Z.jsx)(`section`,{"aria-labelledby":`bundle-detail-heading`,children:(0,Z.jsx)(Tr,{bundleSelector:(0,Z.jsx)(wr,{bundleId:n,bundles:r,onBundleChange:a}),configuredPercentage:u,latestBundleInstallations:l,reportingInstallations:t.activeInstallations,state:o,window:t.window})})]})}function Ar(){let e=Ne(),t=Pe(),[n,r]=(0,Y.useState)(`30d`),[i,a]=(0,Y.useState)(``),o=Bt(e),s=zt(e,{window:n}),c=new Map(o.data?.configuredRollouts.map(e=>[e.bundleId,e])??[]),l=new Set([...s.data?.bundles.map(({bundleId:e})=>e)??[],...o.data?.configuredRollouts.map(({bundleId:e})=>e)??[]]),u=[...l].map(e=>{let t=c.get(e),n=t?.bundle.targetAppVersion??`all versions`;return{bundleId:e,description:t?`${t.bundle.platform===`ios`?`iOS`:`Android`} · ${t.bundle.channel} · ${n}`:`Metadata unavailable`}}),d=l.has(i)?i:u[0]?.bundleId??``,f=J({bundleId:d,window:n,limit:1,offset:0},e.status===`supported`&&d.length>0),p=d?f.isLoading?{status:`loading`,bundleId:d}:f.error?{status:`error`,bundleId:d,error:f.error}:f.data?{status:`success`,bundleId:d,data:f.data}:{status:`loading`,bundleId:d}:{status:`idle`},m=s.error??o.error;return(0,Z.jsxs)(`div`,{className:`flex h-svh min-h-0 flex-col`,children:[(0,Z.jsxs)(`header`,{className:`sticky top-0 z-10 flex shrink-0 flex-wrap items-center gap-x-3 gap-y-1 border-b bg-background px-3 py-3 sm:min-h-12 sm:flex-nowrap sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm`,children:[(0,Z.jsx)(ve,{className:`-ml-1`}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(Fe,{"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`}),(0,Z.jsx)(`h1`,{className:`text-sm font-medium`,children:`Analytics`})]}),(0,Z.jsx)(`p`,{className:`basis-full pl-9 text-xs text-muted-foreground sm:basis-auto sm:pl-0`,children:`Bundle adoption and movement over time.`})]}),(0,Z.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6`,children:(0,Z.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-col gap-6`,children:[e.status===`supported`&&e.mode===`bounded`?(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`This database scans up to`,` `,e.maxMatchingRows.toLocaleString(),` matching analytics records per query.`]}):null,(0,Z.jsx)(mn,{onInstallationSearch:e=>{t({to:`/installations`,search:{query:e,installId:void 0,searchOffset:0,historyOffset:0}})},onWindowChange:r,window:n}),s.isLoading||o.isLoading?(0,Z.jsx)(kr,{status:`loading`}):m?(0,Z.jsx)(kr,{status:`error`,error:m}):s.data&&o.data?(0,Z.jsx)(kr,{active:s.data,bundleId:d,bundles:u,catalog:o.data,onBundleChange:a,outcomes:p,status:`success`}):(0,Z.jsx)(kr,{status:`loading`})]})})]})}export{Ar as component};
@@ -0,0 +1 @@
1
+ import{Dr as e,t,tr as n,wr as r}from"./createServerFn-gM2-LFBy.js";var i=1024,a=class extends Error{name=`AnalyticsInputValidationError`;constructor(e){super(`Invalid analytics input: ${e}`),this.field=e}},o=e=>typeof e==`object`&&!!e&&!Array.isArray(e),s=e=>{if(!o(e))throw new a(`input`);return e},c=e=>{let t=e.window;if(t===`24h`||t===`7d`||t===`30d`)return t;throw new a(`window`)},l=e=>{if(e.userId===void 0)return;if(typeof e.userId!=`string`)throw new a(`userId`);let t=e.userId.trim();if(t.length!==0){if(t.length>i)throw new a(`userId`);return t}},u=e=>{let t=s(e),n=c(t),r=l(t);return r===void 0?{window:n}:{window:n,userId:r}},d=t({method:`GET`}).handler(r(`fc80930d0e0358e13c0de3c271902bdd0a83980829d158e4e2244bd41cfd77f7`)),f=t({method:`GET`}).handler(r(`78aaee61b7e088d695642fea56049c431373da7f1aad0cf8c6a5e966e8eafe01`)),p=t({method:`GET`}).handler(r(`18949edfef6eee282f0d97fa2a9ea158798c5fa6c528597182036af6dc7185a5`)),m={capabilities:[`analytics`,`capabilities`],overview:[`analytics`,`overview`],activeInstallations:e=>[`analytics`,`active-installations`,e.window,e.userId??null]},h=3e4,g=e=>{switch(e.status){case`pending`:return{status:`unresolved`};case`error`:return{status:`error`,error:e.error};case`success`:return e.data.capabilities.analytics?{status:`supported`,mode:`bounded`,maxMatchingRows:e.data.capabilities.maxMatchingRows}:{status:`unsupported`}}},_=e=>e.status===`supported`,v=()=>({queryKey:m.capabilities,queryFn:()=>d(),staleTime:1/0}),y=()=>n(v()),b=async t=>{if(!(await t.ensureQueryData(v())).capabilities.analytics)throw e({to:`/`,search:{},replace:!0})},x=e=>({queryKey:m.overview,queryFn:()=>f(),staleTime:h,refetchOnWindowFocus:!0,enabled:_(e)}),S=e=>n(x(e)),C=(e,t)=>{let n=u(t);return{queryKey:m.activeInstallations(n),queryFn:()=>p({data:n}),staleTime:h,refetchOnWindowFocus:!0,enabled:_(e)}},w=(e,t)=>n(C(e,t));export{y as a,w as i,g as n,S as o,_ as r,b as t};
@@ -0,0 +1 @@
1
+ import{Dn as e,Pr as t,Tn as n,ir as r,rr as i,t as a,tr as o,wn as ee,wr as s,zn as c}from"./createServerFn-gM2-LFBy.js";import{t as l}from"./useMutation-JsGVjQMY.js";import"./textarea-YJLTVAoq.js";t();var u=r();function d({className:t,...n}){return(0,u.jsx)(`div`,{"data-slot":`input-group`,className:e(`border-input bg-input/20 dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-7 rounded-md border transition-colors has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:ring-[2px] has-[[data-slot][aria-invalid=true]]:ring-[2px] has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto`,t),...n})}var f=c(`text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-1 py-2 text-xs/relaxed font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5 flex cursor-text items-center justify-center select-none`,{variants:{align:{"inline-start":`pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem] order-first`,"inline-end":`pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem] order-last`,"block-start":`px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start`,"block-end":`px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start`}},defaultVariants:{align:`inline-start`}});function p({className:t,align:n=`inline-start`,...r}){return(0,u.jsx)(`div`,{"data-slot":`input-group-addon`,"data-align":n,className:e(f({align:n}),t),...r})}var m=c(`gap-2 rounded-md text-xs/relaxed shadow-none flex items-center`,{variants:{size:{xs:`h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3`,sm:``,"icon-xs":`size-6 p-0 has-[>svg]:p-0`,"icon-sm":`size-8 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function h({className:t,type:r=`button`,variant:i=`ghost`,size:a=`xs`,...o}){return(0,u.jsx)(n,{type:r,"data-size":a,variant:i,className:e(m({size:a}),t),...o})}function g({className:t,...n}){return(0,u.jsx)(`span`,{className:e(`text-muted-foreground gap-2 text-xs/relaxed [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none`,t),...n})}function _({className:t,...n}){return(0,u.jsx)(ee,{"data-slot":`input-group-control`,className:e(`rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1`,t),...n})}var v=a({method:`GET`}).handler(s(`206547cb1526f961070a989818ca7b9e34f6b2b0e4ab851698c3807fe9fb5e0c`)),y=a({method:`GET`}).handler(s(`a6f23116eeaf76166d405e28a95213123025613c6603030894e519015bf48032`)),b=a({method:`POST`}).handler(s(`7ea0186f19f9f2bc2ca4b26e3c59636891cf046957f84287b6783f8d88bd8cb7`)),x=a({method:`POST`}).handler(s(`b46c95dba95a6a3e8fa5c9d100e3622fa5ae7af4f38e10fb1ed2fa48289a3a8f`)),S=a({method:`POST`}).handler(s(`d5b58722ce514e3b63a377f736b4823c2011782495442ae4870ed547e392c70b`)),C=a({method:`POST`}).handler(s(`956539a300d79a7efa191c1cc2d529d62fc4bfd940442548fdbc1404e0d53078`)),w=a({method:`GET`}).handler(s(`e8c24b7247936f045a145ffd5c177fd0e3df3b52769d67dfbd8d1de491d66396`)),T=a().handler(s(`51a34c05479a893c7d320bd4cd1604427289d667698c48b9f30a01aabf8a5e68`)),E=a().handler(s(`79ada05964de8f2123bfcd62b10097d59bf8fd689ef5c7161031e5871d8396c5`)),D=a({method:`POST`}).handler(s(`2b9b8d1f49f79a511589617d8d4bfc6094a3acf5264f33651b9569ba66d3f321`)),O=a({method:`POST`}).handler(s(`52756dde414919a906bfe83d1ab6d29910c63bcafdb47653d6f1df562d958920`));a().handler(s(`f8bdca3d0579adb812d6404f55d9261a89cdb025e920b1fcad82883646a5fe9e`)),a({method:`GET`}).handler(s(`00ccacb4a0212c83ec29f4d11719046ad91ea8291cfc557d514dbf00d3bd7f5f`));var k=a({method:`GET`}).handler(s(`1bd85c2a50e24785cb6abb023a247a9f048f37ddfa85cbb1c57e579563bad013`));a({method:`GET`}).handler(s(`d4320e02be8e5c6ae7ec70a17604c835fde4686756031277b09d96b7f3de5f14`));var A=a({method:`GET`}).handler(s(`4eaa296cec4c5d145557e4ae657ddd2d17a9fa253e33ee270e360957333bedbb`)),j=a({method:`GET`}).handler(s(`57cc4fac8359876a1d5c4b04615ba6d39bcc4b76768bb5395309ec350bd61a51`)),M=a({method:`GET`}).handler(s(`9a9d750535dcdd25b01cb1c4b9439dd1ef5b719f3f835b9aee7889191ef6ec81`)),N=a({method:`GET`}).handler(s(`4370f1bf70b91f1168d85379d3008449a1bedb915e9878ca4ef89d5f3a80fa7f`)),P=a({method:`GET`}).handler(s(`4ca367070b00f58179a572f0bb8196a4ccdd3881e9b1dbfe33deee0cb6e1f549`));a({method:`POST`}).handler(s(`16cc7c2f080ea5b73e0c6bba815b110dbd7727796036d248ba0d8ae819ddef08`)),a({method:`POST`}).handler(s(`3a27ff5679228b86a346b3fe42142e7a5bf0264f73173c0dbe5f07fb37c43cf7`)),a({method:`POST`}).handler(s(`61de3b69779c5ce2a5f5d3c27e2cfaca8fba8f14c8803559b9cd733c456494fa`));var F=3e4,I=[`bundles`],L=[`releases`],R={config:[`config`],channels:[`channels`],configLoaded:[`config-loaded`],bundles:{all:I,list:e=>[...I,e??{}]},releases:{all:L,list:e=>[...L,e??{}]},release:e=>[`release`,e],releaseCatalog:e=>[`release-catalog`,e],bundleChildren:{all:[`bundle-children`],list:e=>[`bundle-children`,e],counts:e=>[`bundle-children`,`counts`,...e]},bundle:e=>[`bundle`,e],bundleEventSummary:e=>[`bundle-event-summary`,e],bundleEventAnalytics:e=>[`bundle-event-analytics`,e],installations:{search:e=>[`installations`,`search`,e],history:e=>[`installations`,`history`,e]}};function z(){return o({queryKey:R.config,queryFn:()=>T(),staleTime:1/0})}function B(){return o({queryKey:R.channels,queryFn:()=>E(),staleTime:1/0})}function V(e){return o({queryKey:R.releases.list(e),queryFn:()=>v({data:e}),placeholderData:e=>e})}function H(e){return o({enabled:e.length>0,queryFn:()=>y({data:{releaseId:e}}),queryKey:R.release(e)})}function U(e){return o({enabled:e.length>0,queryFn:()=>w({data:{scopeKey:e}}),queryKey:R.releaseCatalog(e)})}function W(e){return o({queryKey:R.bundle(e),queryFn:()=>k({data:{bundleId:e}}),staleTime:1/0,enabled:!!e})}function G(e,t){return o({queryKey:R.bundleEventAnalytics(e),queryFn:()=>A({data:e}),staleTime:F,refetchOnWindowFocus:!0,enabled:t&&e.bundleId.length>0})}function K(e,t){return o({queryKey:R.installations.search(e),queryFn:()=>j({data:e}),staleTime:F,refetchOnWindowFocus:!0,enabled:t&&e.query.trim().length>0})}function q(e,t){return o({queryKey:R.installations.history(e),queryFn:()=>M({data:e}),staleTime:F,refetchOnWindowFocus:!0,enabled:t&&e.installId.length>0})}function J(e){return o({queryKey:R.bundleChildren.list(e),queryFn:()=>N({data:{baseBundleId:e}}),staleTime:1/0,enabled:!!e})}function Y(e){let t=[...e].sort((e,t)=>e.localeCompare(t));return o({queryKey:R.bundleChildren.counts(t),queryFn:()=>P({data:{bundleIds:t}}),staleTime:1/0,enabled:t.length>0})}function X(){let e=i();return l({mutationFn:e=>D({data:e}).then(e=>e.data),onSuccess:async()=>{await e.invalidateQueries({queryKey:R.channels})}})}function Z(){let e=i();return l({mutationFn:e=>O({data:e}).then(e=>e.data),onSettled:async()=>{await e.invalidateQueries({queryKey:R.channels})}})}function Q(){let e=i();return l({mutationFn:e=>b({data:e}),onSuccess:async(t,n)=>{await Promise.all([e.invalidateQueries({queryKey:R.releases.all}),e.invalidateQueries({queryKey:R.release(n.releaseId)}),e.invalidateQueries({queryKey:[`release-catalog`]}),e.invalidateQueries({queryKey:R.channels})])}})}function $(){return l({mutationFn:e=>x({data:e})})}function te(){let e=i();return l({mutationFn:e=>S({data:e}),onSuccess:async(t,n)=>{e.removeQueries({queryKey:R.release(n.releaseId)}),await Promise.all([e.invalidateQueries({queryKey:R.releases.all}),e.invalidateQueries({queryKey:[`release-catalog`]}),e.invalidateQueries({queryKey:R.channels})])}})}function ne(){let e=i();return l({mutationFn:e=>C({data:e}),onSuccess:async()=>{await Promise.all([e.invalidateQueries({queryKey:R.releases.all}),e.invalidateQueries({queryKey:[`release`]}),e.invalidateQueries({queryKey:[`release-catalog`]}),e.invalidateQueries({queryKey:R.channels})])}})}export{g as S,Q as _,B as a,h as b,Z as c,K as d,$ as f,V as g,H as h,W as i,te as l,U as m,J as n,z as o,ne as p,G as r,X as s,Y as t,q as u,d as v,_ as x,p as y};
@@ -0,0 +1 @@
1
+ import{Lr as e,Pr as t,Qn as n,Sn as r,Tn as i,Zn as a,ir as o,m as s,wn as c}from"./createServerFn-gM2-LFBy.js";import{a as l,c as u,i as d,n as ee,r as f,t as p}from"./field-Buq148-A.js";import{n as m,t as h}from"./refresh-cw-n8XYbPPj.js";import{a as g,i as _,o as v,r as y}from"./api-keys-api-BEDJdQg3.js";import{t as b}from"./loader-circle-DCYF-wJl.js";import{T as x,_ as S,a as te,c as ne,d as C,f as w,g as T,h as E,i as D,l as O,m as k,n as A,o as j,p as M,r as N,t as P,u as F}from"./dialog-BS60BRr2.js";import{n as I}from"./dist-DspNKfMj.js";import{a as L,i as R,l as re,n as z,o as B,r as V,t as H,u as U}from"./alert-C-1KvDW8.js";import{t as W}from"./badge-Bf0fZ-Gx.js";import{a as G,i as K,n as q,o as J,r as Y,t as X}from"./table-D8CLieHX.js";var Z=n(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),Q=e(t(),1),$=o(),ie=e=>new Date(e).toISOString().slice(0,10);function ae(){let[e,t]=(0,Q.useState)(!1),[n,r]=(0,Q.useState)(``),[a,o]=(0,Q.useState)(null),s=_(),h=n.trim(),g=h.length>64?`Name must be 64 characters or fewer.`:null,y=()=>{r(``),o(null),s.reset()},S=e=>{t(e),e||y()};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(i,{onClick:()=>t(!0),children:[(0,$.jsx)(x,{"data-icon":`inline-start`}),`Create API key`]}),(0,$.jsx)(P,{open:e,onOpenChange:S,children:(0,$.jsxs)(A,{showCloseButton:a===null,children:[(0,$.jsxs)(te,{children:[(0,$.jsx)(j,{children:a===null?`Create API key`:`Save your API key`}),(0,$.jsx)(N,{children:a===null?`Name the app or environment that will use this key.`:`This key is shown once. Store it securely before closing.`})]}),a===null?(0,$.jsxs)(`form`,{onSubmit:async e=>{if(e.preventDefault(),!(h.length===0||g!==null))try{o((await s.mutateAsync(h)).apiKey),I.success(`API key created`)}catch(e){I.error(e instanceof Error?e.message:`Unable to create API key`)}},children:[(0,$.jsx)(d,{children:(0,$.jsxs)(p,{"data-invalid":g!==null||void 0,children:[(0,$.jsx)(l,{htmlFor:`api-key-name`,children:`Name`}),(0,$.jsx)(c,{id:`api-key-name`,autoComplete:`off`,maxLength:65,onChange:e=>r(e.target.value),placeholder:`Production app`,value:n}),(0,$.jsx)(ee,{children:`Use a name you can identify before revoking the key.`}),(0,$.jsx)(f,{children:g})]})}),(0,$.jsx)(D,{className:`mt-4`,children:(0,$.jsxs)(i,{disabled:s.isPending||h.length===0||g!==null,type:`submit`,children:[s.isPending?(0,$.jsx)(b,{"data-icon":`inline-start`,className:`animate-spin`}):(0,$.jsx)(v,{"data-icon":`inline-start`}),`Create API key`]})})]}):(0,$.jsxs)(d,{children:[(0,$.jsxs)(p,{children:[(0,$.jsx)(l,{htmlFor:`created-api-key`,children:`API key`}),(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(c,{id:`created-api-key`,className:`font-mono`,readOnly:!0,value:a}),(0,$.jsxs)(i,{onClick:async()=>{if(a!==null)try{await navigator.clipboard.writeText(a),I.success(`API key copied`)}catch{I.error(`Unable to copy API key`)}},type:`button`,variant:`outline`,children:[(0,$.jsx)(m,{"data-icon":`inline-start`}),`Copy`]})]})]}),(0,$.jsx)(D,{children:(0,$.jsxs)(i,{onClick:()=>S(!1),children:[(0,$.jsx)(u,{"data-icon":`inline-start`}),`Done`]})})]})]})})]})}function oe({record:e}){let[t,n]=(0,Q.useState)(!1),r=g(),a=async t=>{t.preventDefault();try{await r.mutateAsync(e.id),n(!1),I.success(`API key revoked`)}catch(e){I.error(e instanceof Error?e.message:`Unable to revoke API key`)}};return(0,$.jsxs)(ne,{open:t,onOpenChange:e=>{r.isPending||n(e)},children:[(0,$.jsxs)(S,{render:(0,$.jsx)(i,{size:`sm`,variant:`ghost`}),children:[(0,$.jsx)(Z,{"data-icon":`inline-start`}),`Revoke`]}),(0,$.jsxs)(C,{children:[(0,$.jsxs)(k,{children:[(0,$.jsx)(E,{children:(0,$.jsx)(Z,{})}),(0,$.jsxs)(T,{children:[`Revoke `,e.name,`?`]}),(0,$.jsxs)(w,{children:[`Apps using `,e.prefix,`… will immediately lose OTA update and analytics access. This action cannot be undone.`]})]}),(0,$.jsxs)(M,{children:[(0,$.jsx)(F,{disabled:r.isPending,children:`Cancel`}),(0,$.jsx)(O,{disabled:r.isPending,onClick:e=>void a(e),variant:`destructive`,children:`Revoke API key`})]})]})]})}function se(){let e=y();return(0,$.jsxs)(L,{className:`overflow-hidden shadow-sm`,children:[(0,$.jsxs)(re,{className:`flex-row items-center justify-between space-y-0 border-b px-4 py-3`,children:[(0,$.jsx)(U,{className:`text-sm`,children:(0,$.jsx)(`h2`,{children:`API keys`})}),(0,$.jsx)(ae,{})]}),(0,$.jsx)(B,{className:`p-0`,children:e.isError?(0,$.jsx)(`div`,{className:`p-4`,children:(0,$.jsxs)(H,{variant:`destructive`,children:[(0,$.jsx)(a,{}),(0,$.jsx)(R,{children:`API keys couldn't be loaded`}),(0,$.jsx)(V,{children:`Check your connection and try again.`}),(0,$.jsx)(z,{children:(0,$.jsxs)(i,{onClick:()=>void e.refetch(),size:`xs`,variant:`outline`,children:[(0,$.jsx)(h,{"data-icon":`inline-start`}),`Retry`]})})]})}):(0,$.jsxs)(X,{"aria-label":`API keys`,className:`table-fixed`,children:[(0,$.jsx)(G,{children:(0,$.jsxs)(J,{children:[(0,$.jsx)(K,{children:`Key`}),(0,$.jsx)(K,{className:`w-32`,children:`Created`}),(0,$.jsx)(K,{className:`w-24 text-right`,children:(0,$.jsx)(`span`,{className:`sr-only`,children:`Actions`})})]})}),(0,$.jsx)(q,{children:e.isLoading?Array.from({length:3},(e,t)=>(0,$.jsxs)(J,{children:[(0,$.jsxs)(Y,{className:`space-y-2 py-3`,children:[t===0?(0,$.jsx)(`span`,{className:`sr-only`,children:`Loading API keys`}):null,(0,$.jsx)(r,{className:`h-3.5 w-32`}),(0,$.jsx)(r,{className:`h-3 w-20`})]}),(0,$.jsx)(Y,{children:(0,$.jsx)(r,{className:`h-3.5 w-20`})}),(0,$.jsx)(Y,{children:(0,$.jsx)(r,{className:`ml-auto h-6 w-16`})})]},t)):e.data?.length===0?(0,$.jsx)(J,{children:(0,$.jsx)(Y,{colSpan:3,className:`h-40 text-center text-muted-foreground`,children:(0,$.jsxs)(`div`,{className:`mx-auto flex max-w-xs flex-col items-center gap-2`,children:[(0,$.jsx)(v,{className:`size-5`}),(0,$.jsx)(`p`,{className:`font-medium text-foreground`,children:`No API keys`}),(0,$.jsx)(`p`,{children:`Create an API key to connect an app.`})]})})}):e.data?.map(e=>(0,$.jsxs)(J,{className:e.revoked_at_ms===null?void 0:`text-muted-foreground`,children:[(0,$.jsx)(Y,{className:`whitespace-normal py-3`,children:(0,$.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,$.jsx)(`p`,{className:`break-words font-medium text-foreground`,children:e.name}),(0,$.jsxs)(`p`,{className:`font-mono text-xs text-muted-foreground`,children:[e.prefix,`…`]})]})}),(0,$.jsx)(Y,{className:`text-xs text-muted-foreground`,children:(0,$.jsx)(`time`,{dateTime:new Date(e.created_at_ms).toISOString(),children:ie(e.created_at_ms)})}),(0,$.jsx)(Y,{className:`text-right`,children:e.revoked_at_ms===null?(0,$.jsx)(oe,{record:e}):(0,$.jsx)(W,{variant:`outline`,children:`Revoked`})})]},e.id))})]})})]})}function ce(){return(0,$.jsxs)(`div`,{className:`flex h-svh min-h-0 flex-col`,children:[(0,$.jsxs)(`header`,{className:`sticky top-0 z-10 flex shrink-0 flex-wrap items-center gap-x-3 gap-y-1 border-b bg-background px-3 py-3 sm:min-h-12 sm:flex-nowrap sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm`,children:[(0,$.jsx)(s,{className:`-ml-1`}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(v,{"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`}),(0,$.jsx)(`h1`,{className:`text-sm font-medium`,children:`API keys`})]}),(0,$.jsx)(`p`,{className:`basis-full pl-9 text-xs text-muted-foreground sm:basis-auto sm:pl-0`,children:`API keys can download OTA updates and submit analytics only.`})]}),(0,$.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6`,children:(0,$.jsx)(`div`,{className:`mx-auto w-full max-w-5xl`,children:(0,$.jsx)(se,{})})})]})}export{ce as component};
@@ -0,0 +1 @@
1
+ import{Dr as e,Qn as t,rr as n,t as r,tr as i,wr as a}from"./createServerFn-gM2-LFBy.js";import{t as o}from"./useMutation-JsGVjQMY.js";var s=t(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),c=r({method:`GET`}).handler(a(`29665ce3a33cde2eb2ee082694288db269438f62f3a4d0a005dec3256e0f15c1`)),l=r({method:`GET`}).handler(a(`2c7f3cdb9bd3cab2c026a48abdc84c362db0362924a08679052a325640aec56b`)),u=r({method:`POST`}).handler(a(`68a2d94ee016be64936401f5eba60ab08a47ff373e1cf9de48e4413336e6034b`)),d=r({method:`POST`}).handler(a(`a1cb80b19ca72a64fb631ca28ebb9b6941db245983de082d5dd3203ec2eef795`)),f={capability:[`api-keys`,`capability`],list:[`api-keys`,`list`]},p=()=>({queryKey:f.capability,queryFn:()=>c(),staleTime:1/0}),m=()=>i(p()),h=async t=>{if(!(await t.ensureQueryData(p())).apiKeys)throw e({to:`/`,search:{},replace:!0})},g=()=>i({queryKey:f.list,queryFn:()=>l()}),_=()=>{let e=n();return o({mutationFn:e=>u({data:{name:e}}),onSuccess:async()=>{await e.invalidateQueries({queryKey:f.list})}})},v=()=>{let e=n();return o({mutationFn:e=>d({data:{id:e}}),onSuccess:async()=>{await e.invalidateQueries({queryKey:f.list})}})};export{v as a,_ as i,m as n,s as o,g as r,h as t};
@@ -0,0 +1 @@
1
+ import{Dn as e,Vn as t,Xn as n,zn as r}from"./createServerFn-gM2-LFBy.js";var i=r(`inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80`,secondary:`border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80`,destructive:`border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80`,outline:`text-foreground`}},defaultVariants:{variant:`default`}});function a({className:r,variant:a=`default`,render:o,...s}){return t({defaultTagName:`span`,props:n({className:e(i({variant:a}),r)},s),render:o,state:{slot:`badge`,variant:a}})}export{a as t};
@@ -0,0 +1 @@
1
+ import{Qn as e}from"./createServerFn-gM2-LFBy.js";var t=e(`chart-no-axes-combined`,[[`path`,{d:`M12 16v5`,key:`zza2cw`}],[`path`,{d:`M16 14v7`,key:`1g90b9`}],[`path`,{d:`M20 10v11`,key:`1iqoj0`}],[`path`,{d:`m22 3-8.646 8.646a.5.5 0 0 1-.708 0L9.354 8.354a.5.5 0 0 0-.707 0L2 15`,key:`1fw8x9`}],[`path`,{d:`M4 18v3`,key:`1yp0dc`}],[`path`,{d:`M8 14v7`,key:`n3cwzv`}]]);export{t};