@hot-updater/console 0.36.6 → 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 +249 -46
  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
@@ -1,5 +1,5 @@
1
- import { r as __toESM } from "../_runtime.mjs";
2
- import { l as require_react_dom, u as require_react } from "./@floating-ui/react-dom+[...].mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { $ as require_react_dom, at as require_react } from "./@base-ui/react+[...].mjs";
3
3
  //#region ../../node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/sonner/dist/index.mjs
4
4
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
5
5
  var import_react_dom = /* @__PURE__ */ __toESM(require_react_dom(), 1);
@@ -305,6 +305,119 @@ function pendingThenable() {
305
305
  };
306
306
  return thenable;
307
307
  }
308
+ function tryResolveSync(promise) {
309
+ let data;
310
+ promise.then((result) => {
311
+ data = result;
312
+ return result;
313
+ }, noop)?.catch(noop);
314
+ if (data !== void 0) return { data };
315
+ }
316
+ //#endregion
317
+ //#region ../../node_modules/.pnpm/@tanstack+query-core@5.101.0/node_modules/@tanstack/query-core/build/modern/hydration.js
318
+ function defaultTransformerFn(data) {
319
+ return data;
320
+ }
321
+ function dehydrateMutation(mutation) {
322
+ return {
323
+ mutationKey: mutation.options.mutationKey,
324
+ state: mutation.state,
325
+ ...mutation.options.scope && { scope: mutation.options.scope },
326
+ ...mutation.meta && { meta: mutation.meta }
327
+ };
328
+ }
329
+ function dehydrateQuery(query, serializeData, shouldRedactErrors) {
330
+ const dehydratePromise = () => {
331
+ const promise = query.promise?.then(serializeData).catch((error) => {
332
+ if (!shouldRedactErrors(error)) return Promise.reject(error);
333
+ return Promise.reject(/* @__PURE__ */ new Error("redacted"));
334
+ });
335
+ promise?.catch(noop);
336
+ return promise;
337
+ };
338
+ return {
339
+ dehydratedAt: Date.now(),
340
+ state: {
341
+ ...query.state,
342
+ ...query.state.data !== void 0 && { data: serializeData(query.state.data) }
343
+ },
344
+ queryKey: query.queryKey,
345
+ queryHash: query.queryHash,
346
+ ...query.state.status === "pending" && { promise: dehydratePromise() },
347
+ ...query.meta && { meta: query.meta },
348
+ ...query.queryType && { queryType: query.queryType }
349
+ };
350
+ }
351
+ function defaultShouldDehydrateMutation(mutation) {
352
+ return mutation.state.isPaused;
353
+ }
354
+ function defaultShouldDehydrateQuery(query) {
355
+ return query.state.status === "success";
356
+ }
357
+ function defaultShouldRedactErrors(_) {
358
+ return true;
359
+ }
360
+ function dehydrate(client, options = {}) {
361
+ const filterMutation = options.shouldDehydrateMutation ?? client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? defaultShouldDehydrateMutation;
362
+ const mutations = client.getMutationCache().getAll().flatMap((mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : []);
363
+ const filterQuery = options.shouldDehydrateQuery ?? client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? defaultShouldDehydrateQuery;
364
+ const shouldRedactErrors = options.shouldRedactErrors ?? client.getDefaultOptions().dehydrate?.shouldRedactErrors ?? defaultShouldRedactErrors;
365
+ const serializeData = options.serializeData ?? client.getDefaultOptions().dehydrate?.serializeData ?? defaultTransformerFn;
366
+ return {
367
+ mutations,
368
+ queries: client.getQueryCache().getAll().flatMap((query) => filterQuery(query) ? [dehydrateQuery(query, serializeData, shouldRedactErrors)] : [])
369
+ };
370
+ }
371
+ function hydrate(client, dehydratedState, options) {
372
+ if (typeof dehydratedState !== "object" || dehydratedState === null) return;
373
+ const mutationCache = client.getMutationCache();
374
+ const queryCache = client.getQueryCache();
375
+ const deserializeData = options?.defaultOptions?.deserializeData ?? client.getDefaultOptions().hydrate?.deserializeData ?? defaultTransformerFn;
376
+ const mutations = dehydratedState.mutations || [];
377
+ const queries = dehydratedState.queries || [];
378
+ mutations.forEach(({ state, ...mutationOptions }) => {
379
+ mutationCache.build(client, {
380
+ ...client.getDefaultOptions().hydrate?.mutations,
381
+ ...options?.defaultOptions?.mutations,
382
+ ...mutationOptions
383
+ }, state);
384
+ });
385
+ queries.forEach(({ queryKey, state, queryHash, meta, promise, dehydratedAt, queryType }) => {
386
+ const syncData = promise ? tryResolveSync(promise) : void 0;
387
+ const rawData = state.data === void 0 ? syncData?.data : state.data;
388
+ const data = rawData === void 0 ? rawData : deserializeData(rawData);
389
+ let query = queryCache.get(queryHash);
390
+ const existingQueryIsPending = query?.state.status === "pending";
391
+ const existingQueryIsFetching = query?.state.fetchStatus === "fetching";
392
+ if (query) {
393
+ const hasNewerSyncData = syncData && dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;
394
+ if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {
395
+ const { fetchStatus: _ignored, ...serializedState } = state;
396
+ query.setState({
397
+ ...serializedState,
398
+ data,
399
+ ...state.status === "pending" && data !== void 0 && {
400
+ status: "success",
401
+ ...!existingQueryIsFetching && { fetchStatus: "idle" }
402
+ }
403
+ });
404
+ }
405
+ } else query = queryCache.build(client, {
406
+ ...client.getDefaultOptions().hydrate?.queries,
407
+ ...options?.defaultOptions?.queries,
408
+ queryKey,
409
+ queryHash,
410
+ meta,
411
+ _type: queryType
412
+ }, {
413
+ ...state,
414
+ data,
415
+ fetchStatus: "idle",
416
+ status: state.status === "pending" && data !== void 0 ? "success" : state.status
417
+ });
418
+ if (promise && !syncData && !existingQueryIsPending && !existingQueryIsFetching && (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) query.fetch(void 0, { initialPromise: Promise.resolve(promise).then(deserializeData) }).catch(noop);
419
+ });
420
+ }
308
421
  //#endregion
309
422
  //#region ../../node_modules/.pnpm/@tanstack+query-core@5.101.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js
310
423
  var defaultScheduler = systemSetTimeoutZero;
@@ -2096,4 +2209,4 @@ var QueryClient = class {
2096
2209
  }
2097
2210
  };
2098
2211
  //#endregion
2099
- export { environmentManager as a, notifyManager as i, MutationObserver as n, noop as o, QueryObserver as r, shouldThrowError as s, QueryClient as t };
2212
+ export { dehydrate as a, noop as c, notifyManager as i, shouldThrowError as l, MutationObserver as n, hydrate as o, QueryObserver as r, environmentManager as s, QueryClient as t };
@@ -1,7 +1,6 @@
1
- import { r as __toESM } from "../_runtime.mjs";
2
- import { u as require_react } from "./@floating-ui/react-dom+[...].mjs";
3
- import { P as require_jsx_runtime } from "./@radix-ui/react-alert-dialog+[...].mjs";
4
- import { a as environmentManager, i as notifyManager, n as MutationObserver, o as noop, r as QueryObserver, s as shouldThrowError } from "./tanstack__query-core.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { at as require_react, it as require_jsx_runtime } from "./@base-ui/react+[...].mjs";
3
+ import { c as noop, i as notifyManager, l as shouldThrowError, n as MutationObserver, r as QueryObserver, s as environmentManager } from "./tanstack__query-core.mjs";
5
4
  //#region ../../node_modules/.pnpm/@tanstack+react-query@5.101.0_react@19.2.6/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
6
5
  var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
7
6
  var import_jsx_runtime = require_jsx_runtime();
@@ -7,6 +7,15 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
10
+ var __exportAll = (all, no_symbols) => {
11
+ let target = {};
12
+ for (var name in all) __defProp(target, name, {
13
+ get: all[name],
14
+ enumerable: true
15
+ });
16
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
17
+ return target;
18
+ };
10
19
  var __copyProps = (to, from, except, desc) => {
11
20
  if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
12
21
  key = keys[i];
@@ -23,4 +32,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
32
  }) : target, mod));
24
33
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
25
34
  //#endregion
26
- export { __require as n, __toESM as r, __commonJSMin as t };
35
+ export { __toESM as i, __exportAll as n, __require as r, __commonJSMin as t };
@@ -0,0 +1,15 @@
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { at as require_react, it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/AnalyticsCapabilityContext-ui4DX8GO.js
4
+ var import_react = /* @__PURE__ */ __toESM(require_react());
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ var AnalyticsCapabilityContext = (0, import_react.createContext)({ status: "unresolved" });
7
+ function AnalyticsCapabilityProvider({ children, value }) {
8
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AnalyticsCapabilityContext.Provider, {
9
+ value,
10
+ children
11
+ });
12
+ }
13
+ var useAnalyticsCapability = () => (0, import_react.useContext)(AnalyticsCapabilityContext);
14
+ //#endregion
15
+ export { useAnalyticsCapability as n, AnalyticsCapabilityProvider as t };
@@ -0,0 +1,288 @@
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { at as require_react, it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { n as TriangleAlert } from "../_libs/lucide-react.mjs";
4
+ import { C as cn } from "./createSsrRpc-9P0S0lJ3.mjs";
5
+ import { i as AlertTitle, r as AlertDescription, t as Alert } from "./alert-Dim3MGY5.mjs";
6
+ import { a as CartesianGrid, c as ResponsiveContainer, i as Area, n as YAxis, o as Tooltip, r as XAxis, t as AreaChart } from "../_libs/recharts+[...].mjs";
7
+ //#region node_modules/.nitro/vite/services/ssr/assets/BundleActivityChart-BiB9ZORH.js
8
+ var import_react = /* @__PURE__ */ __toESM(require_react());
9
+ var import_jsx_runtime = require_jsx_runtime();
10
+ var THEMES = {
11
+ light: "",
12
+ dark: ".dark"
13
+ };
14
+ var INITIAL_DIMENSION = {
15
+ width: 320,
16
+ height: 200
17
+ };
18
+ var ChartContext = import_react.createContext(null);
19
+ function useChart() {
20
+ const context = import_react.useContext(ChartContext);
21
+ if (!context) throw new Error("useChart must be used within a <ChartContainer />");
22
+ return context;
23
+ }
24
+ function ChartContainer({ id, className, children, config, initialDimension = INITIAL_DIMENSION, ...props }) {
25
+ const uniqueId = import_react.useId();
26
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
27
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartContext.Provider, {
28
+ value: { config },
29
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
30
+ "data-slot": "chart",
31
+ "data-chart": chartId,
32
+ className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
33
+ ...props,
34
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartStyle, {
35
+ id: chartId,
36
+ config
37
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ResponsiveContainer, {
38
+ initialDimension,
39
+ children
40
+ })]
41
+ })
42
+ });
43
+ }
44
+ var ChartStyle = ({ id, config }) => {
45
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
46
+ if (!colorConfig.length) return null;
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { dangerouslySetInnerHTML: { __html: Object.entries(THEMES).map(([theme, prefix]) => `
48
+ ${prefix} [data-chart=${id}] {
49
+ ${colorConfig.map(([key, itemConfig]) => {
50
+ const color = itemConfig.theme?.[theme] ?? itemConfig.color;
51
+ return color ? ` --color-${key}: ${color};` : null;
52
+ }).join("\n")}
53
+ }
54
+ `).join("\n") } });
55
+ };
56
+ var ChartTooltip = Tooltip;
57
+ function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }) {
58
+ const { config } = useChart();
59
+ const tooltipLabel = import_react.useMemo(() => {
60
+ if (hideLabel || !payload?.length) return null;
61
+ const [item] = payload;
62
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`);
63
+ const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
64
+ if (labelFormatter) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
65
+ className: cn("font-medium", labelClassName),
66
+ children: labelFormatter(value, payload)
67
+ });
68
+ if (!value) return null;
69
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
70
+ className: cn("font-medium", labelClassName),
71
+ children: value
72
+ });
73
+ }, [
74
+ label,
75
+ labelFormatter,
76
+ payload,
77
+ hideLabel,
78
+ labelClassName,
79
+ config,
80
+ labelKey
81
+ ]);
82
+ if (!active || !payload?.length) return null;
83
+ const nestLabel = payload.length === 1 && indicator !== "dot";
84
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
85
+ className: cn("grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs/relaxed shadow-xl", className),
86
+ children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
87
+ className: "grid gap-1.5",
88
+ children: payload.filter((item) => item.type !== "none").map((item, index) => {
89
+ const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey ?? item.name ?? item.dataKey ?? "value"}`);
90
+ const indicatorColor = color ?? item.payload?.fill ?? item.color;
91
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
92
+ className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"),
93
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [itemConfig?.icon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
94
+ className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
95
+ "h-2.5 w-2.5": indicator === "dot",
96
+ "w-1": indicator === "line",
97
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
98
+ "my-0.5": nestLabel && indicator === "dashed"
99
+ }),
100
+ style: {
101
+ "--color-bg": indicatorColor,
102
+ "--color-border": indicatorColor
103
+ }
104
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
105
+ className: cn("flex flex-1 justify-between gap-2 leading-none", nestLabel ? "items-end" : "items-center"),
106
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
107
+ className: "grid gap-1.5",
108
+ children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
109
+ className: "text-muted-foreground",
110
+ children: itemConfig?.label ?? item.name
111
+ })]
112
+ }), item.value != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
113
+ className: "font-mono font-medium text-foreground tabular-nums",
114
+ children: typeof item.value === "number" ? item.value.toLocaleString() : String(item.value)
115
+ })]
116
+ })] })
117
+ }, index);
118
+ })
119
+ })]
120
+ });
121
+ }
122
+ function getPayloadConfigFromPayload(config, payload, key) {
123
+ if (typeof payload !== "object" || payload === null) return;
124
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
125
+ let configLabelKey = key;
126
+ if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
127
+ else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
128
+ return configLabelKey in config ? config[configLabelKey] : config[key];
129
+ }
130
+ var getAnalyticsErrorCopy = (error, fallbackTitle) => {
131
+ const match = /^Bundle event scan exceeded (\d+) rows\.$/.exec(error.message);
132
+ if (!match) return {
133
+ title: fallbackTitle,
134
+ description: error.message
135
+ };
136
+ return {
137
+ title: "Analytics report limit reached",
138
+ description: `This query matched more than ${Number(match[1]).toLocaleString()} reports. Narrow the query and try again.`
139
+ };
140
+ };
141
+ function AnalyticsErrorAlert({ error, fallbackTitle }) {
142
+ const copy = getAnalyticsErrorCopy(error, fallbackTitle);
143
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Alert, {
144
+ variant: "destructive",
145
+ children: [
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TriangleAlert, { "aria-hidden": "true" }),
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertTitle, { children: copy.title }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDescription, { children: copy.description })
149
+ ]
150
+ });
151
+ }
152
+ var chartConfig = {
153
+ installed: {
154
+ label: "Applied",
155
+ color: "var(--chart-2)"
156
+ },
157
+ recovered: {
158
+ label: "Recovered",
159
+ color: "var(--muted-foreground)"
160
+ }
161
+ };
162
+ var dateFormatter = new Intl.DateTimeFormat("en", {
163
+ day: "numeric",
164
+ month: "short",
165
+ timeZone: "UTC"
166
+ });
167
+ var hourFormatter = new Intl.DateTimeFormat("en", {
168
+ day: "numeric",
169
+ hour: "numeric",
170
+ month: "short",
171
+ timeZone: "UTC"
172
+ });
173
+ var windowLabels = {
174
+ "24h": "24 hours",
175
+ "7d": "7 days",
176
+ "30d": "30 days"
177
+ };
178
+ var mergeActivitySeries = (installed, recovered) => {
179
+ const installedByBucket = new Map(installed.map((point) => [point.bucketStartMs, point.value]));
180
+ const recoveredByBucket = new Map(recovered.map((point) => [point.bucketStartMs, point.value]));
181
+ return [...new Set([...installedByBucket.keys(), ...recoveredByBucket.keys()])].sort((left, right) => left - right).map((bucketStartMs) => ({
182
+ bucketStartMs,
183
+ installed: installedByBucket.get(bucketStartMs) ?? 0,
184
+ recovered: recoveredByBucket.get(bucketStartMs) ?? 0
185
+ }));
186
+ };
187
+ var formatBucket = (value, window) => (window === "24h" ? hourFormatter : dateFormatter).format(new Date(value));
188
+ function BundleActivityChart({ installed, recovered, window }) {
189
+ const captionId = (0, import_react.useId)();
190
+ const chartData = mergeActivitySeries(installed, recovered);
191
+ if (!chartData.some((point) => point.installed > 0 || point.recovered > 0)) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
192
+ className: "flex h-16 items-center justify-center border-t px-4 pt-3 text-center text-xs text-muted-foreground sm:h-20 sm:pt-4",
193
+ children: "No device activity in the last 30 days."
194
+ });
195
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
196
+ className: "border-t pt-3 sm:pt-4",
197
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartContainer, {
198
+ "aria-describedby": captionId,
199
+ "aria-label": `Bundle movement over ${windowLabels[window]}`,
200
+ className: "h-24 w-full aspect-auto sm:h-32",
201
+ config: chartConfig,
202
+ role: "img",
203
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AreaChart, {
204
+ accessibilityLayer: true,
205
+ data: chartData,
206
+ margin: {
207
+ left: -16,
208
+ right: 4,
209
+ top: 4
210
+ },
211
+ children: [
212
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CartesianGrid, { vertical: false }),
213
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(XAxis, {
214
+ axisLine: false,
215
+ dataKey: "bucketStartMs",
216
+ minTickGap: 28,
217
+ tickFormatter: (value) => formatBucket(value, window),
218
+ tickLine: false
219
+ }),
220
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(YAxis, {
221
+ allowDecimals: false,
222
+ axisLine: false,
223
+ tickLine: false,
224
+ width: 32
225
+ }),
226
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartTooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartTooltipContent, { labelFormatter: (_, payload) => {
227
+ const bucket = payload[0]?.payload.bucketStartMs;
228
+ return typeof bucket === "number" ? formatBucket(bucket, window) : "";
229
+ } }) }),
230
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Area, {
231
+ dataKey: "installed",
232
+ fill: "var(--color-installed)",
233
+ fillOpacity: .12,
234
+ isAnimationActive: false,
235
+ stroke: "var(--color-installed)",
236
+ strokeWidth: 2,
237
+ type: "monotone"
238
+ }),
239
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Area, {
240
+ dataKey: "recovered",
241
+ fill: "var(--color-recovered)",
242
+ fillOpacity: .04,
243
+ isAnimationActive: false,
244
+ stroke: "var(--color-recovered)",
245
+ strokeWidth: 1.5,
246
+ type: "monotone"
247
+ })
248
+ ]
249
+ })
250
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
251
+ className: "sr-only",
252
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", { children: [
253
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("caption", {
254
+ id: captionId,
255
+ children: [
256
+ "Distinct bundle movement in each bucket over ",
257
+ windowLabels[window],
258
+ ". Times are shown in UTC."
259
+ ]
260
+ }),
261
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
262
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
263
+ scope: "col",
264
+ children: "Date"
265
+ }),
266
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
267
+ scope: "col",
268
+ children: "Applied"
269
+ }),
270
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
271
+ scope: "col",
272
+ children: "Recovered"
273
+ })
274
+ ] }) }),
275
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: chartData.map((point) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
276
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
277
+ scope: "row",
278
+ children: formatBucket(point.bucketStartMs, window)
279
+ }),
280
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: point.installed }),
281
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: point.recovered })
282
+ ] }, point.bucketStartMs)) })
283
+ ] })
284
+ })]
285
+ });
286
+ }
287
+ //#endregion
288
+ export { ChartTooltipContent as a, ChartTooltip as i, BundleActivityChart as n, ChartContainer as r, AnalyticsErrorAlert as t };
@@ -0,0 +1,13 @@
1
+ import { it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { C as cn } from "./createSsrRpc-9P0S0lJ3.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/BundleIdDisplay-Czk6iR6p.js
4
+ var import_jsx_runtime = require_jsx_runtime();
5
+ function BundleIdDisplay({ bundleId, className }) {
6
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
7
+ translate: "no",
8
+ className: cn("break-all font-mono text-xs tabular-nums", className),
9
+ children: bundleId
10
+ });
11
+ }
12
+ //#endregion
13
+ export { BundleIdDisplay as t };
@@ -0,0 +1,86 @@
1
+ import "../_runtime.mjs";
2
+ import { at as require_react, it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
+ import { C as cn } from "./createSsrRpc-9P0S0lJ3.mjs";
5
+ require_react();
6
+ var import_jsx_runtime = require_jsx_runtime();
7
+ function Card({ className, ...props }) {
8
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
9
+ "data-slot": "card",
10
+ className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
11
+ ...props
12
+ });
13
+ }
14
+ function CardHeader({ className, ...props }) {
15
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
16
+ "data-slot": "card-header",
17
+ className: cn("flex flex-col space-y-1.5 p-6", className),
18
+ ...props
19
+ });
20
+ }
21
+ function CardTitle({ className, ...props }) {
22
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
23
+ "data-slot": "card-title",
24
+ className: cn("font-semibold leading-none tracking-tight", className),
25
+ ...props
26
+ });
27
+ }
28
+ function CardDescription({ className, ...props }) {
29
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
30
+ "data-slot": "card-description",
31
+ className: cn("text-sm text-muted-foreground", className),
32
+ ...props
33
+ });
34
+ }
35
+ function CardContent({ className, ...props }) {
36
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
37
+ "data-slot": "card-content",
38
+ className: cn("p-6 pt-0", className),
39
+ ...props
40
+ });
41
+ }
42
+ function CardFooter({ className, ...props }) {
43
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44
+ "data-slot": "card-footer",
45
+ className: cn("flex items-center p-6 pt-0", className),
46
+ ...props
47
+ });
48
+ }
49
+ var alertVariants = cva("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", {
50
+ variants: { variant: {
51
+ default: "bg-card text-card-foreground",
52
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
53
+ } },
54
+ defaultVariants: { variant: "default" }
55
+ });
56
+ function Alert({ className, variant, ...props }) {
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
58
+ "data-slot": "alert",
59
+ role: "alert",
60
+ className: cn(alertVariants({ variant }), className),
61
+ ...props
62
+ });
63
+ }
64
+ function AlertTitle({ className, ...props }) {
65
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
66
+ "data-slot": "alert-title",
67
+ className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
68
+ ...props
69
+ });
70
+ }
71
+ function AlertDescription({ className, ...props }) {
72
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
73
+ "data-slot": "alert-description",
74
+ className: cn("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", className),
75
+ ...props
76
+ });
77
+ }
78
+ function AlertAction({ className, ...props }) {
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
80
+ "data-slot": "alert-action",
81
+ className: cn("absolute top-1.5 right-2", className),
82
+ ...props
83
+ });
84
+ }
85
+ //#endregion
86
+ export { Card as a, CardFooter as c, AlertTitle as i, CardHeader as l, AlertAction as n, CardContent as o, AlertDescription as r, CardDescription as s, Alert as t, CardTitle as u };